
/* Copyright 2019-2020 Smart Chain Arena LLC. */

const fs = require('fs');

const args = process.argv.slice(2);

// begin from eztz cli example

const library = {
  bs58check: require('bs58check'),
  sodium: require('libsodium-wrappers-sumo'),
};

const prefix = {
  tz1: new Uint8Array([6, 161, 159]),
  tz2: new Uint8Array([6, 161, 161]),
  tz3: new Uint8Array([6, 161, 164]),
  KT: new Uint8Array([2,90,121]),

  edpk: new Uint8Array([13, 15, 37, 217]),
  edsk2: new Uint8Array([13, 15, 58, 7]),
  spsk: new Uint8Array([17, 162, 224, 201]),
  p2sk: new Uint8Array([16,81,238,189]),

  sppk: new Uint8Array([3, 254, 226, 86]),
  p2pk: new Uint8Array([3, 178, 139, 127]),

  edsk: new Uint8Array([43, 246, 78, 7]),
  edsig: new Uint8Array([9, 245, 205, 134, 18]),
  spsig1: new Uint8Array([13, 115, 101, 19, 63]),
  p2sig: new Uint8Array([54, 240, 44, 52]),
  sig: new Uint8Array([4, 130, 43]),

  Net: new Uint8Array([87, 82, 0]),
  nce: new Uint8Array([69, 220, 169]),
  b: new Uint8Array([1,52]),
  o: new Uint8Array([5, 116]),
  Lo: new Uint8Array([133, 233]),
  LLo: new Uint8Array([29, 159, 109]),
  P: new Uint8Array([2, 170]),
  Co: new Uint8Array([79, 179]),
  id: new Uint8Array([153, 103]),
};

const utility = {
  b58cencode: function (payload, prefix) {
    const n = new Uint8Array(prefix.length + payload.length);
    n.set(prefix);
    n.set(payload, prefix.length);
    return library.bs58check.encode(new Buffer(n, 'hex'));
  },
  b58cdecode: (enc, prefix) => library.bs58check.decode(enc).slice(prefix.length),
  buf2hex: function (buffer) {
    const byteArray = new Uint8Array(buffer), hexParts = [];
    for (let i = 0; i < byteArray.length; i++) {
      let hex = byteArray[i].toString(16);
      let paddedHex = ('00' + hex).slice(-2);
      hexParts.push(paddedHex);
    }
    return hexParts.join('');
  },
  hex2buf : function(hex){
    return new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
      return parseInt(h, 16)
    }));
  },
  mergebuf : function(b1,b2){
    var r = new Uint8Array(b1.length+b2.length);
    r.set(b1);
    r.set(b2, b1.length);
    return r;
  },
};

global.eztz = {
  prefix : prefix,
  utility : utility,
  library : library
};

// end from eztz cli example

// sudo npm install libsodium-wrappers xmlhttprequest

(async() => {
  global.smartpyContext = {};
  await library.sodium.ready;
  await library.bs58check.ready;
  global.sodium = library.sodium;
  global.smartpyContext.Keccak256 = require('js-sha3').keccak_256;
  global.smartpyContext.Bls12 = require('tezos-bls12-381');

// __INSERT_HERE__

//# 1 "smartpyc_js.bc.runtime.js"
// Generated by js_of_ocaml 3.6.0
(function(joo_global_object)
   {"use strict";
    function caml_int64_is_zero(x){return + x.isZero()}
    function caml_str_repeat(n,s)
     {if(n == 0)return "";
      if(s.repeat)return s.repeat(n);
      var r="",l=0;
      for(;;)
       {if(n & 1)r += s;
        n >>= 1;
        if(n == 0)return r;
        s += s;
        l++;
        if(l == 9)s.slice(0,1)}}
    var caml_int64_offset=Math.pow(2,- 24);
    function caml_raise_constant(tag){throw tag}
    var caml_global_data=[0];
    function caml_raise_zero_divide()
     {caml_raise_constant(caml_global_data.Division_by_zero)}
    function MlInt64(lo,mi,hi)
     {this.lo = lo & 0xffffff;this.mi = mi & 0xffffff;this.hi = hi & 0xffff}
    MlInt64.prototype.caml_custom = "_j";
    MlInt64.prototype.copy
    =
    function(){return new MlInt64(this.lo,this.mi,this.hi)};
    MlInt64.prototype.ucompare
    =
    function(x)
     {if(this.hi > x.hi)return 1;
      if(this.hi < x.hi)return - 1;
      if(this.mi > x.mi)return 1;
      if(this.mi < x.mi)return - 1;
      if(this.lo > x.lo)return 1;
      if(this.lo < x.lo)return - 1;
      return 0};
    MlInt64.prototype.compare
    =
    function(x)
     {var hi=this.hi << 16,xhi=x.hi << 16;
      if(hi > xhi)return 1;
      if(hi < xhi)return - 1;
      if(this.mi > x.mi)return 1;
      if(this.mi < x.mi)return - 1;
      if(this.lo > x.lo)return 1;
      if(this.lo < x.lo)return - 1;
      return 0};
    MlInt64.prototype.neg
    =
    function()
     {var lo=- this.lo,mi=- this.mi + (lo >> 24),hi=- this.hi + (mi >> 24);
      return new MlInt64(lo,mi,hi)};
    MlInt64.prototype.add
    =
    function(x)
     {var
       lo=this.lo + x.lo,
       mi=this.mi + x.mi + (lo >> 24),
       hi=this.hi + x.hi + (mi >> 24);
      return new MlInt64(lo,mi,hi)};
    MlInt64.prototype.sub
    =
    function(x)
     {var
       lo=this.lo - x.lo,
       mi=this.mi - x.mi + (lo >> 24),
       hi=this.hi - x.hi + (mi >> 24);
      return new MlInt64(lo,mi,hi)};
    MlInt64.prototype.mul
    =
    function(x)
     {var
       lo=this.lo * x.lo,
       mi=(lo * caml_int64_offset | 0) + this.mi * x.lo + this.lo * x.mi,
       hi=
        (mi * caml_int64_offset | 0)
        +
        this.hi
        *
        x.lo
        +
        this.mi
        *
        x.mi
        +
        this.lo
        *
        x.hi;
      return new MlInt64(lo,mi,hi)};
    MlInt64.prototype.isZero
    =
    function(){return (this.lo | this.mi | this.hi) == 0};
    MlInt64.prototype.isNeg = function(){return this.hi << 16 < 0};
    MlInt64.prototype.and
    =
    function(x)
     {return new MlInt64(this.lo & x.lo,this.mi & x.mi,this.hi & x.hi)};
    MlInt64.prototype.or
    =
    function(x)
     {return new MlInt64(this.lo | x.lo,this.mi | x.mi,this.hi | x.hi)};
    MlInt64.prototype.xor
    =
    function(x)
     {return new MlInt64(this.lo ^ x.lo,this.mi ^ x.mi,this.hi ^ x.hi)};
    MlInt64.prototype.shift_left
    =
    function(s)
     {s = s & 63;
      if(s == 0)return this;
      if(s < 24)
       return new
               MlInt64
               (this.lo << s,
                this.mi << s | this.lo >> 24 - s,
                this.hi << s | this.mi >> 24 - s);
      if(s < 48)
       return new
               MlInt64
               (0,this.lo << s - 24,this.mi << s - 24 | this.lo >> 48 - s);
      return new MlInt64(0,0,this.lo << s - 48)};
    MlInt64.prototype.shift_right_unsigned
    =
    function(s)
     {s = s & 63;
      if(s == 0)return this;
      if(s < 24)
       return new
               MlInt64
               (this.lo >> s | this.mi << 24 - s,
                this.mi >> s | this.hi << 24 - s,
                this.hi >> s);
      if(s < 48)
       return new
               MlInt64
               (this.mi >> s - 24 | this.hi << 48 - s,this.hi >> s - 24,0);
      return new MlInt64(this.hi >> s - 48,0,0)};
    MlInt64.prototype.shift_right
    =
    function(s)
     {s = s & 63;
      if(s == 0)return this;
      var h=this.hi << 16 >> 16;
      if(s < 24)
       return new
               MlInt64
               (this.lo >> s | this.mi << 24 - s,
                this.mi >> s | h << 24 - s,
                this.hi << 16 >> s >>> 16);
      var sign=this.hi << 16 >> 31;
      if(s < 48)
       return new
               MlInt64
               (this.mi >> s - 24 | this.hi << 48 - s,
                this.hi << 16 >> s - 24 >> 16,
                sign & 0xffff);
      return new MlInt64(this.hi << 16 >> s - 32,sign,sign)};
    MlInt64.prototype.lsl1
    =
    function()
     {this.hi = this.hi << 1 | this.mi >> 23;
      this.mi = (this.mi << 1 | this.lo >> 23) & 0xffffff;
      this.lo = this.lo << 1 & 0xffffff};
    MlInt64.prototype.lsr1
    =
    function()
     {this.lo = (this.lo >>> 1 | this.mi << 23) & 0xffffff;
      this.mi = (this.mi >>> 1 | this.hi << 23) & 0xffffff;
      this.hi = this.hi >>> 1};
    MlInt64.prototype.udivmod
    =
    function(x)
     {var
       offset=0,
       modulus=this.copy(),
       divisor=x.copy(),
       quotient=new MlInt64(0,0,0);
      while(modulus.ucompare(divisor) > 0){offset++;divisor.lsl1()}
      while(offset >= 0)
       {offset--;
        quotient.lsl1();
        if(modulus.ucompare(divisor) >= 0)
         {quotient.lo++;modulus = modulus.sub(divisor)}
        divisor.lsr1()}
      return {quotient:quotient,modulus:modulus}};
    MlInt64.prototype.div
    =
    function(y)
     {var x=this;
      if(y.isZero())caml_raise_zero_divide();
      var sign=x.hi ^ y.hi;
      if(x.hi & 0x8000)x = x.neg();
      if(y.hi & 0x8000)y = y.neg();
      var q=x.udivmod(y).quotient;
      if(sign & 0x8000)q = q.neg();
      return q};
    MlInt64.prototype.mod
    =
    function(y)
     {var x=this;
      if(y.isZero())caml_raise_zero_divide();
      var sign=x.hi;
      if(x.hi & 0x8000)x = x.neg();
      if(y.hi & 0x8000)y = y.neg();
      var r=x.udivmod(y).modulus;
      if(sign & 0x8000)r = r.neg();
      return r};
    MlInt64.prototype.toInt = function(){return this.lo | this.mi << 24};
    MlInt64.prototype.toFloat
    =
    function()
     {return (this.hi << 16)
             *
             Math.pow(2,32)
             +
             this.mi
             *
             Math.pow(2,24)
             +
             this.lo};
    MlInt64.prototype.toArray
    =
    function()
     {return [this.hi >> 8,
              this.hi & 0xff,
              this.mi >> 16,
              this.mi >> 8 & 0xff,
              this.mi & 0xff,
              this.lo >> 16,
              this.lo >> 8 & 0xff,
              this.lo & 0xff]};
    MlInt64.prototype.lo32
    =
    function(){return this.lo | (this.mi & 0xff) << 24};
    MlInt64.prototype.hi32
    =
    function(){return this.mi >>> 8 & 0xffff | this.hi << 16};
    function caml_int64_of_int32(x)
     {return new MlInt64(x & 0xffffff,x >> 24 & 0xffffff,x >> 31 & 0xffff)}
    function caml_int64_to_int32(x){return x.toInt()}
    function caml_int64_is_negative(x){return + x.isNeg()}
    function caml_int64_neg(x){return x.neg()}
    function caml_subarray_to_jsbytes(a,i,len)
     {var f=String.fromCharCode;
      if(i == 0 && len <= 4096 && len == a.length)return f.apply(null,a);
      var s="";
      for(;0 < len;i += 1024,len -= 1024)
       s += f.apply(null,a.slice(i,i + Math.min(len,1024)));
      return s}
    function caml_convert_string_to_bytes(s)
     {if(s.t == 2)
       s.c += caml_str_repeat(s.l - s.c.length,"\0");
      else
       s.c = caml_subarray_to_jsbytes(s.c,0,s.c.length);
      s.t = 0}
    function caml_jsbytes_of_string(s)
     {if((s.t & 6) != 0)caml_convert_string_to_bytes(s);return s.c}
    function caml_raise_with_arg(tag,arg){throw [0,tag,arg]}
    function jsoo_is_ascii(s)
     {if(s.length < 24)
       {for(var i=0;i < s.length;i++)if(s.charCodeAt(i) > 127)return false;
        return true}
      else
       return ! /[^\x00-\x7f]/.test(s)}
    function caml_utf16_of_utf8(s)
     {for(var b="",t="",c,c1,c2,v,i=0,l=s.length;i < l;i++)
       {c1 = s.charCodeAt(i);
        if(c1 < 0x80)
         {for(var j=i + 1;j < l && (c1 = s.charCodeAt(j)) < 0x80;j++);
          if(j - i > 512)
           {t.substr(0,1);b += t;t = "";b += s.slice(i,j)}
          else
           t += s.slice(i,j);
          if(j == l)break;
          i = j}
        v = 1;
        if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128)
         {c = c2 + (c1 << 6);
          if(c1 < 0xe0)
           {v = c - 0x3080;if(v < 0x80)v = 1}
          else
           {v = 2;
            if(++i < l && ((c2 = s.charCodeAt(i)) & - 64) == 128)
             {c = c2 + (c << 6);
              if(c1 < 0xf0)
               {v = c - 0xe2080;
                if(v < 0x800 || v >= 0xd7ff && v < 0xe000)v = 2}
              else
               {v = 3;
                if
                 (++i
                  <
                  l
                  &&
                  ((c2 = s.charCodeAt(i)) & - 64)
                  ==
                  128
                  &&
                  c1
                  <
                  0xf5)
                 {v = c2 - 0x3c82080 + (c << 6);
                  if(v < 0x10000 || v > 0x10ffff)v = 3}}}}}
        if(v < 4)
         {i -= v;t += "\ufffd"}
        else
         if(v > 0xffff)
          t += String.fromCharCode(0xd7c0 + (v >> 10),0xdc00 + (v & 0x3FF));
         else
          t += String.fromCharCode(v);
        if(t.length > 1024){t.substr(0,1);b += t;t = ""}}
      return b + t}
    function MlBytes(tag,contents,length)
     {this.t = tag;this.c = contents;this.l = length}
    MlBytes.prototype.toString
    =
    function()
     {switch(this.t)
       {case 9:return this.c;
        default:caml_convert_string_to_bytes(this);case 0:
         if(jsoo_is_ascii(this.c)){this.t = 9;return this.c}this.t = 8;
        case 8:return caml_utf16_of_utf8(this.c)
        }};
    MlBytes.prototype.slice
    =
    function()
     {var content=this.t == 4?this.c.slice():this.c;
      return new MlBytes(this.t,content,this.l)};
    function caml_bytes_of_jsbytes(s){return new MlBytes(0,s,s.length)}
    function caml_string_of_jsbytes(s){return caml_bytes_of_jsbytes(s)}
    function caml_raise_with_string(tag,msg)
     {caml_raise_with_arg(tag,caml_string_of_jsbytes(msg))}
    function caml_invalid_argument(msg)
     {caml_raise_with_string(caml_global_data.Invalid_argument,msg)}
    function caml_parse_format(fmt)
     {fmt = caml_jsbytes_of_string(fmt);
      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;
          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 caml_string_of_jsbytes(buffer)}
    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="",
       wbase=caml_int64_of_int32(f.base),
       cvtbl="0123456789abcdef";
      do
       {var p=x.udivmod(wbase);
        x = p.quotient;
        buffer = cvtbl.charAt(caml_int64_to_int32(p.modulus)) + 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_expm1_float(x)
     {var y=Math.exp(x),z=y - 1;
      return Math.abs(x) > 1?z:z == 0?x:x * z / Math.log(y)}
    function caml_jsstring_of_string(s){return s.toString()}
    if(joo_global_object.process && joo_global_object.process.cwd)
     var caml_current_dir=joo_global_object.process.cwd().replace(/\\/g,"/");
    else
     var caml_current_dir="/static";
    if(caml_current_dir.slice(- 1) !== "/")caml_current_dir += "/";
    function caml_make_path(name)
     {name = caml_jsstring_of_string(name);
      if(name.charCodeAt(0) != 47)name = caml_current_dir + name;
      var comp=name.split("/"),ncomp=[];
      for(var i=0;i < comp.length;i++)
       switch(comp[i])
        {case "..":if(ncomp.length > 1)ncomp.pop();break;
         case ".":break;
         case "":if(ncomp.length == 0)ncomp.push("");break;
         default:ncomp.push(comp[i]);break}
      ncomp.orig = name;
      return ncomp}
    function caml_is_ml_bytes(s){return s instanceof MlBytes}
    function caml_is_ml_string(s){return caml_is_ml_bytes(s)}
    function caml_bytes_of_array(a){return new MlBytes(4,a,a.length)}
    function caml_bytes_of_string(s){return s}
    function caml_utf8_of_utf16(s)
     {for(var b="",t=b,c,d,i=0,l=s.length;i < l;i++)
       {c = s.charCodeAt(i);
        if(c < 0x80)
         {for(var j=i + 1;j < l && (c = s.charCodeAt(j)) < 0x80;j++);
          if(j - i > 512)
           {t.substr(0,1);b += t;t = "";b += s.slice(i,j)}
          else
           t += s.slice(i,j);
          if(j == l)break;
          i = j}
        if(c < 0x800)
         {t += String.fromCharCode(0xc0 | c >> 6);
          t += String.fromCharCode(0x80 | c & 0x3f)}
        else
         if(c < 0xd800 || c >= 0xdfff)
          t
          +=
          String.fromCharCode
           (0xe0 | c >> 12,0x80 | c >> 6 & 0x3f,0x80 | c & 0x3f);
         else
          if
           (c
            >=
            0xdbff
            ||
            i
            +
            1
            ==
            l
            ||
            (d = s.charCodeAt(i + 1))
            <
            0xdc00
            ||
            d
            >
            0xdfff)
           t += "\xef\xbf\xbd";
          else
           {i++;
            c = (c << 10) + d - 0x35fdc00;
            t
            +=
            String.fromCharCode
             (0xf0 | c >> 18,
              0x80 | c >> 12 & 0x3f,
              0x80 | c >> 6 & 0x3f,
              0x80 | c & 0x3f)}
        if(t.length > 1024){t.substr(0,1);b += t;t = ""}}
      return b + t}
    function caml_bytes_of_utf16_jsstring(s)
     {var tag=9;
      if(! jsoo_is_ascii(s))tag = 8,s = caml_utf8_of_utf16(s);
      return new MlBytes(tag,s,s.length)}
    function caml_string_of_jsstring(s)
     {return caml_bytes_of_utf16_jsstring(s)}
    function caml_raise_sys_error(msg)
     {caml_raise_with_string(caml_global_data.Sys_error,msg)}
    function caml_raise_no_such_file(name)
     {name = caml_jsbytes_of_string(name);
      caml_raise_sys_error(name + ": No such file or directory")}
    function caml_bytes_bound_error()
     {caml_invalid_argument("index out of bounds")}
    function caml_bytes_unsafe_get(s,i)
     {switch(s.t & 6)
       {default:if(i >= s.c.length)return 0;case 0:return s.c.charCodeAt(i);
        case 4:return s.c[i]
        }}
    function caml_bytes_get(s,i)
     {if(i >>> 0 >= s.l)caml_bytes_bound_error();
      return caml_bytes_unsafe_get(s,i)}
    function caml_create_bytes(len)
     {if(len < 0)caml_invalid_argument("Bytes.create");
      return new MlBytes(len?2:9,"",len)}
    function caml_ml_bytes_length(s){return s.l}
    function caml_convert_bytes_to_array(s)
     {if(joo_global_object.Uint8Array)
       var a=new (joo_global_object.Uint8Array)(s.l);
      else
       var a=new Array(s.l);
      var b=s.c,l=b.length,i=0;
      for(;i < l;i++)a[i] = b.charCodeAt(i);
      for(l = s.l;i < l;i++)a[i] = 0;
      s.c = a;
      s.t = 4;
      return a}
    function caml_blit_bytes(s1,i1,s2,i2,len)
     {if(len == 0)return 0;
      if(i2 == 0 && (len >= s2.l || s2.t == 2 && len >= s2.c.length))
       {s2.c
        =
        s1.t == 4
         ?caml_subarray_to_jsbytes(s1.c,i1,len)
         :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len);
        s2.t = s2.c.length == s2.l?0:2}
      else
       if(s2.t == 2 && i2 == s2.c.length)
        {s2.c
         +=
         s1.t == 4
          ?caml_subarray_to_jsbytes(s1.c,i1,len)
          :i1 == 0 && s1.c.length == len?s1.c:s1.c.substr(i1,len);
         s2.t = s2.c.length == s2.l?0:2}
       else
        {if(s2.t != 4)caml_convert_bytes_to_array(s2);
         var c1=s1.c,c2=s2.c;
         if(s1.t == 4)
          if(i2 <= i1)
           for(var i=0;i < len;i++)c2[i2 + i] = c1[i1 + i];
          else
           for(var i=len - 1;i >= 0;i--)c2[i2 + i] = c1[i1 + i];
         else
          {var l=Math.min(len,c1.length - i1);
           for(var i=0;i < l;i++)c2[i2 + i] = c1.charCodeAt(i1 + i);
           for(;i < len;i++)c2[i2 + i] = 0}}
      return 0}
    function caml_blit_string(a,b,c,d,e)
     {caml_blit_bytes(caml_bytes_of_string(a),b,c,d,e);return 0}
    function MlFile(){}
    function MlFakeFile(content){this.data = content}
    MlFakeFile.prototype = new MlFile();
    MlFakeFile.prototype.truncate
    =
    function(len)
     {var old=this.data;
      this.data = caml_create_bytes(len | 0);
      caml_blit_bytes(old,0,this.data,0,len)};
    MlFakeFile.prototype.length
    =
    function(){return caml_ml_bytes_length(this.data)};
    MlFakeFile.prototype.write
    =
    function(offset,buf,pos,len)
     {var clen=this.length();
      if(offset + len >= clen)
       {var new_str=caml_create_bytes(offset + len),old_data=this.data;
        this.data = new_str;
        caml_blit_bytes(old_data,0,this.data,0,clen)}
      caml_blit_string(buf,pos,this.data,offset,len);
      return 0};
    MlFakeFile.prototype.read
    =
    function(offset,buf,pos,len)
     {var clen=this.length();
      caml_blit_bytes(this.data,offset,buf,pos,len);
      return 0};
    MlFakeFile.prototype.read_one
    =
    function(offset){return caml_bytes_get(this.data,offset)};
    MlFakeFile.prototype.close = function(){};
    MlFakeFile.prototype.constructor = MlFakeFile;
    function MlFakeDevice(root,f)
     {this.content = {};this.root = root;this.lookupFun = f}
    MlFakeDevice.prototype.nm = function(name){return this.root + name};
    MlFakeDevice.prototype.lookup
    =
    function(name)
     {if(! this.content[name] && this.lookupFun)
       {var
         res=
          this.lookupFun
           (caml_string_of_jsbytes(this.root),caml_string_of_jsbytes(name));
        if(res !== 0)
         this.content[name] = new MlFakeFile(caml_bytes_of_string(res[1]))}};
    MlFakeDevice.prototype.exists
    =
    function(name)
     {if(name == "")return 1;
      var name_slash=name + "/",r=new RegExp("^" + name_slash);
      for(var n in this.content)if(n.match(r))return 1;
      this.lookup(name);
      return this.content[name]?1:0};
    MlFakeDevice.prototype.readdir
    =
    function(name)
     {var
       name_slash=name == ""?"":name + "/",
       r=new RegExp("^" + name_slash + "([^/]*)"),
       seen={},
       a=[];
      for(var n in this.content)
       {var m=n.match(r);
        if(m && ! seen[m[1]]){seen[m[1]] = true;a.push(m[1])}}
      return a};
    MlFakeDevice.prototype.is_dir
    =
    function(name)
     {var
       name_slash=name == ""?"":name + "/",
       r=new RegExp("^" + name_slash + "([^/]*)"),
       a=[];
      for(var n in this.content){var m=n.match(r);if(m)return 1}
      return 0};
    MlFakeDevice.prototype.unlink
    =
    function(name)
     {var ok=this.content[name]?true:false;
      delete this.content[name];
      return ok};
    MlFakeDevice.prototype.open
    =
    function(name,f)
     {if(f.rdonly && f.wronly)
       caml_raise_sys_error
        (this.nm(name)
         +
         " : flags Open_rdonly and Open_wronly are not compatible");
      if(f.text && f.binary)
       caml_raise_sys_error
        (this.nm(name)
         +
         " : flags Open_text and Open_binary are not compatible");
      this.lookup(name);
      if(this.content[name])
       {if(this.is_dir(name))
         caml_raise_sys_error(this.nm(name) + " : is a directory");
        if(f.create && f.excl)
         caml_raise_sys_error(this.nm(name) + " : file already exists");
        var file=this.content[name];
        if(f.truncate)file.truncate();
        return file}
      else
       if(f.create)
        {this.content[name] = new MlFakeFile(caml_create_bytes(0));
         return this.content[name]}
       else
        caml_raise_no_such_file(this.nm(name))};
    MlFakeDevice.prototype.register
    =
    function(name,content)
     {if(this.content[name])
       caml_raise_sys_error(this.nm(name) + " : file already exists");
      if(caml_is_ml_bytes(content))
       this.content[name] = new MlFakeFile(content);
      if(caml_is_ml_string(content))
       this.content[name] = new MlFakeFile(caml_bytes_of_string(content));
      else
       if(content instanceof Array)
        this.content[name] = new MlFakeFile(caml_bytes_of_array(content));
       else
        if(typeof content === "string")
         this.content[name] = new MlFakeFile(caml_bytes_of_jsbytes(content));
        else
         if(content.toString)
          {var
            bytes=
             caml_bytes_of_string(caml_string_of_jsstring(content.toString()));
           this.content[name] = new MlFakeFile(bytes)}
         else
          caml_raise_sys_error
           (this.nm(name) + " : registering file with invalid content type")};
    MlFakeDevice.prototype.constructor = MlFakeDevice;
    function caml_ml_string_length(s){return caml_ml_bytes_length(s)}
    function caml_string_unsafe_get(s,i){return caml_bytes_unsafe_get(s,i)}
    function caml_array_of_string(s)
     {var l=caml_ml_string_length(s),a=new Array(l),i=0;
      for(;i < l;i++)a[i] = caml_string_unsafe_get(s,i);
      return a}
    function caml_array_of_bytes(s)
     {if(s.t != 4)caml_convert_bytes_to_array(s);return s.c}
    function caml_bytes_unsafe_set(s,i,c)
     {c &= 0xff;
      if(s.t != 4)
       {if(i == s.c.length)
         {s.c += String.fromCharCode(c);if(i + 1 == s.l)s.t = 0;return 0}
        caml_convert_bytes_to_array(s)}
      s.c[i] = c;
      return 0}
    function caml_bytes_set(s,i,c)
     {if(i >>> 0 >= s.l)caml_bytes_bound_error();
      return caml_bytes_unsafe_set(s,i,c)}
    function MlNodeFile(fd){this.fs = require("fs");this.fd = fd}
    MlNodeFile.prototype = new MlFile();
    MlNodeFile.prototype.truncate
    =
    function(len)
     {try
       {this.fs.ftruncateSync(this.fd,len | 0)}
      catch(err){caml_raise_sys_error(err.toString())}};
    MlNodeFile.prototype.length
    =
    function()
     {try
       {return this.fs.fstatSync(this.fd).size}
      catch(err){caml_raise_sys_error(err.toString())}};
    MlNodeFile.prototype.write
    =
    function(offset,buf,buf_offset,len)
     {var a=caml_array_of_string(buf);
      if(! (a instanceof joo_global_object.Uint8Array))
       a = new (joo_global_object.Uint8Array)(a);
      var buffer=joo_global_object.Buffer.from(a);
      try
       {this.fs.writeSync(this.fd,buffer,buf_offset,len,offset)}
      catch(err){caml_raise_sys_error(err.toString())}
      return 0};
    MlNodeFile.prototype.read
    =
    function(offset,buf,buf_offset,len)
     {var a=caml_array_of_bytes(buf);
      if(! (a instanceof joo_global_object.Uint8Array))
       a = new (joo_global_object.Uint8Array)(a);
      var buffer=joo_global_object.Buffer.from(a);
      try
       {this.fs.readSync(this.fd,buffer,buf_offset,len,offset)}
      catch(err){caml_raise_sys_error(err.toString())}
      for(var i=0;i < len;i++)
       caml_bytes_set(buf,buf_offset + i,buffer[buf_offset + i]);
      return 0};
    MlNodeFile.prototype.read_one
    =
    function(offset)
     {var
       a=new (joo_global_object.Uint8Array)(1),
       buffer=joo_global_object.Buffer.from(a);
      try
       {this.fs.readSync(this.fd,buffer,0,1,offset)}
      catch(err){caml_raise_sys_error(err.toString())}
      return buffer[0]};
    MlNodeFile.prototype.close
    =
    function()
     {try
       {this.fs.closeSync(this.fd)}
      catch(err){caml_raise_sys_error(err.toString())}};
    MlNodeFile.prototype.constructor = MlNodeFile;
    function MlNodeDevice(root){this.fs = require("fs");this.root = root}
    MlNodeDevice.prototype.nm = function(name){return this.root + name};
    MlNodeDevice.prototype.exists
    =
    function(name)
     {try
       {return this.fs.existsSync(this.nm(name))?1:0}
      catch(err){caml_raise_sys_error(err.toString())}};
    MlNodeDevice.prototype.readdir
    =
    function(name)
     {try
       {return this.fs.readdirSync(this.nm(name))}
      catch(err){caml_raise_sys_error(err.toString())}};
    MlNodeDevice.prototype.is_dir
    =
    function(name)
     {try
       {return this.fs.statSync(this.nm(name)).isDirectory()?1:0}
      catch(err){caml_raise_sys_error(err.toString())}};
    MlNodeDevice.prototype.unlink
    =
    function(name)
     {try
       {var b=this.fs.existsSync(this.nm(name))?1:0;
        this.fs.unlinkSync(this.nm(name))}
      catch(err){caml_raise_sys_error(err.toString())}
      return b};
    MlNodeDevice.prototype.open
    =
    function(name,f)
     {var consts=require("constants"),res=0;
      for(var key in f)
       switch(key)
        {case "rdonly":res |= consts.O_RDONLY;break;
         case "wronly":res |= consts.O_WRONLY;break;
         case "append":res |= consts.O_WRONLY | consts.O_APPEND;break;
         case "create":res |= consts.O_CREAT;break;
         case "truncate":res |= consts.O_TRUNC;break;
         case "excl":res |= consts.O_EXCL;break;
         case "binary":res |= consts.O_BINARY;break;
         case "text":res |= consts.O_TEXT;break;
         case "nonblock":res |= consts.O_NONBLOCK;break
         }
      try
       {var fd=this.fs.openSync(this.nm(name),res);return new MlNodeFile(fd)}
      catch(err){caml_raise_sys_error(err.toString())}};
    MlNodeDevice.prototype.rename
    =
    function(o,n)
     {try
       {this.fs.renameSync(this.nm(o),this.nm(n))}
      catch(err){caml_raise_sys_error(err.toString())}};
    MlNodeDevice.prototype.constructor = MlNodeDevice;
    var caml_root=caml_current_dir.match(/[^\/]*\//)[0];
    function fs_node_supported()
     {return typeof joo_global_object.process
             !==
             "undefined"
             &&
             typeof joo_global_object.process.versions
             !==
             "undefined"
             &&
             typeof joo_global_object.process.versions.node
             !==
             "undefined"
             &&
             joo_global_object.process.platform
             !==
             "browser"}
    var jsoo_mount_point=[];
    if(fs_node_supported())
     jsoo_mount_point.push
      ({path:caml_root,device:new MlNodeDevice(caml_root)});
    else
     jsoo_mount_point.push
      ({path:caml_root,device:new MlFakeDevice(caml_root)});
    jsoo_mount_point.push
     ({path:caml_root + "static/",
       device:new MlFakeDevice(caml_root + "static/")});
    function resolve_fs_device(name)
     {var
       path=caml_make_path(name),
       name=path.join("/"),
       name_slash=name + "/",
       res;
      for(var i=0;i < jsoo_mount_point.length;i++)
       {var m=jsoo_mount_point[i];
        if
         (name_slash.search(m.path)
          ==
          0
          &&
          (! res || res.path.length < m.path.length))
         res
         =
         {path:m.path,
          device:m.device,
          rest:name.substring(m.path.length,name.length)}}
      return res}
    function caml_sys_is_directory(name)
     {var root=resolve_fs_device(name),a=root.device.is_dir(root.rest);
      return a?1:0}
    function caml_raise_not_found()
     {caml_raise_constant(caml_global_data.Not_found)}
    function caml_sys_getenv(name)
     {var g=joo_global_object,n=caml_jsstring_of_string(name);
      if(g.process && g.process.env && g.process.env[n] != undefined)
       return caml_string_of_jsstring(g.process.env[n]);
      if
       (joo_global_object.jsoo_static_env
        &&
        joo_global_object.jsoo_static_env[n])
       return caml_string_of_jsstring(joo_global_object.jsoo_static_env[n]);
      caml_raise_not_found()}
    function shift_right_nat(nat1,ofs1,len1,nat2,ofs2,nbits)
     {if(nbits == 0){nat2.data[ofs2] = 0;return 0}
      var wrap=0;
      for(var i=len1 - 1;i >= 0;i--)
       {var a=nat1.data[ofs1 + i] >>> 0;
        nat1.data[ofs1 + i] = a >>> nbits | wrap;
        wrap = a << 32 - nbits}
      nat2.data[ofs2] = wrap;
      return 0}
    var caml_named_values={};
    function caml_named_value(nm){return caml_named_values[nm]}
    var caml_gr_state;
    function caml_gr_state_get()
     {if(caml_gr_state)return caml_gr_state;
      throw [0,
             caml_named_value("Graphics.Graphic_failure"),
             caml_string_of_jsbytes("Not initialized")]}
    function caml_gr_point_color(x,y)
     {var
       s=caml_gr_state_get(),
       im=s.context.getImageData(x,s.height - y,1,1),
       d=im.data;
      return (d[0] << 16) + (d[1] << 8) + d[2]}
    var MlObjectTable;
    if(typeof joo_global_object.WeakMap === "undefined")
     MlObjectTable
     =
     function()
       {function NaiveLookup(objs){this.objs = objs}
        NaiveLookup.prototype.get
        =
        function(v)
         {for(var i=0;i < this.objs.length;i++)if(this.objs[i] === v)return i};
        NaiveLookup.prototype.set = function(){};
        return function()
         {this.objs = [];this.lookup = new NaiveLookup(this.objs)}}
      ();
    else
     MlObjectTable
     =
     function()
      {this.objs = [];this.lookup = new (joo_global_object.WeakMap)()};
    MlObjectTable.prototype.store
    =
    function(v){this.lookup.set(v,this.objs.length);this.objs.push(v)};
    MlObjectTable.prototype.recall
    =
    function(v)
     {var i=this.lookup.get(v);
      return i === undefined?undefined:this.objs.length - i};
    function caml_failwith(msg)
     {caml_raise_with_string(caml_global_data.Failure,msg)}
    function caml_sys_rename(o,n)
     {var o_root=resolve_fs_device(o),n_root=resolve_fs_device(n);
      if(o_root.device != n_root.device)
       caml_failwith
        ("caml_sys_rename: cannot move file between two filesystem");
      if(! o_root.device.rename)
       caml_failwith("caml_sys_rename: no implemented");
      o_root.device.rename(o_root.rest,n_root.rest)}
    function caml_log10_float(x){return Math.LOG10E * Math.log(x)}
    var caml_runtime_warnings=0;
    function caml_ml_enable_runtime_warnings(bool)
     {caml_runtime_warnings = bool;return 0}
    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_ml_refill_input(chan)
     {var str=chan.refill(),str_len=caml_ml_string_length(str);
      if(str_len == 0)chan.refill = null;
      chan.file.write(chan.file.length(),str,0,str_len);
      return str_len}
    var caml_ml_channels=new Array();
    function caml_ml_may_refill_input(chanid)
     {var chan=caml_ml_channels[chanid];
      if(chan.refill == null)return;
      if(chan.file.length() != chan.offset)return;
      caml_ml_refill_input(chan)}
    function caml_array_bound_error()
     {caml_invalid_argument("index out of bounds")}
    function caml_ml_input_scan_line(chanid)
     {var chan=caml_ml_channels[chanid];
      caml_ml_may_refill_input(chanid);
      var p=chan.offset,len=chan.file.length();
      if(p >= len)return 0;
      while(true)
       {if(p >= len)return - (p - chan.offset);
        if(chan.file.read_one(p) == 10)return p - chan.offset + 1;
        p++}}
    function caml_gc_minor(){return 0}
    var
     bigInt=
      function(undefined)
        {"use strict";
         var
          BASE=1e7,
          LOG_BASE=7,
          MAX_INT=9007199254740992,
          MAX_INT_ARR=smallToArray(MAX_INT),
          DEFAULT_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyz",
          BigInt=joo_global_object.BigInt,
          supportsNativeBigInt=typeof BigInt === "function";
         function Integer(v,radix,alphabet,caseSensitive)
          {if(typeof v === "undefined")return Integer[0];
           if(typeof radix !== "undefined")
            return + radix === 10 && ! alphabet
                    ?parseValue(v)
                    :parseBase(v,radix,alphabet,caseSensitive);
           return parseValue(v)}
         function BigInteger(value,sign)
          {this.value = value;
           this.sign = sign;
           this.isSmall = false;
           this.caml_custom = "_z"}
         BigInteger.prototype = Object.create(Integer.prototype);
         function SmallInteger(value)
          {this.value = value;
           this.sign = value < 0;
           this.isSmall = true;
           this.caml_custom = "_z"}
         SmallInteger.prototype = Object.create(Integer.prototype);
         function NativeBigInt(value)
          {this.value = value;this.caml_custom = "_z"}
         NativeBigInt.prototype = Object.create(Integer.prototype);
         function isPrecise(n){return - MAX_INT < n && n < MAX_INT}
         function smallToArray(n)
          {if(n < 1e7)return [n];
           if(n < 1e14)return [n % 1e7,Math.floor(n / 1e7)];
           return [n % 1e7,Math.floor(n / 1e7) % 1e7,Math.floor(n / 1e14)]}
         function arrayToSmall(arr)
          {trim(arr);
           var length=arr.length;
           if(length < 4 && compareAbs(arr,MAX_INT_ARR) < 0)
            switch(length)
             {case 0:return 0;
              case 1:return arr[0];
              case 2:return arr[0] + arr[1] * BASE;
              default:return arr[0] + (arr[1] + arr[2] * BASE) * BASE}
           return arr}
         function trim(v){var i=v.length;while(v[--i] === 0);v.length = i + 1}
         function createArray(length)
          {var x=new Array(length),i=- 1;while(++i < length)x[i] = 0;return x}
         function truncate(n)
          {if(n > 0)return Math.floor(n);return Math.ceil(n)}
         function add(a,b)
          {var
            l_a=a.length,
            l_b=b.length,
            r=new Array(l_a),
            carry=0,
            base=BASE,
            sum,
            i;
           for(i = 0;i < l_b;i++)
            {sum = a[i] + b[i] + carry;
             carry = sum >= base?1:0;
             r[i] = sum - carry * base}
           while(i < l_a)
            {sum = a[i] + carry;
             carry = sum === base?1:0;
             r[i++] = sum - carry * base}
           if(carry > 0)r.push(carry);
           return r}
         function addAny(a,b)
          {if(a.length >= b.length)return add(a,b);return add(b,a)}
         function addSmall(a,carry)
          {var l=a.length,r=new Array(l),base=BASE,sum,i;
           for(i = 0;i < l;i++)
            {sum = a[i] - base + carry;
             carry = Math.floor(sum / base);
             r[i] = sum - carry * base;
             carry += 1}
           while(carry > 0)
            {r[i++] = carry % base;carry = Math.floor(carry / base)}
           return r}
         BigInteger.prototype.add
         =
         function(v)
          {var n=parseValue(v);
           if(this.sign !== n.sign)return this.subtract(n.negate());
           var a=this.value,b=n.value;
           if(n.isSmall)
            return new BigInteger(addSmall(a,Math.abs(b)),this.sign);
           return new BigInteger(addAny(a,b),this.sign)};
         BigInteger.prototype.plus = BigInteger.prototype.add;
         SmallInteger.prototype.add
         =
         function(v)
          {var n=parseValue(v),a=this.value;
           if(a < 0 !== n.sign)return this.subtract(n.negate());
           var b=n.value;
           if(n.isSmall)
            {if(isPrecise(a + b))return new SmallInteger(a + b);
             b = smallToArray(Math.abs(b))}
           return new BigInteger(addSmall(b,Math.abs(a)),a < 0)};
         SmallInteger.prototype.plus = SmallInteger.prototype.add;
         NativeBigInt.prototype.add
         =
         function(v)
          {return new NativeBigInt(this.value + parseValue(v).value)};
         NativeBigInt.prototype.plus = NativeBigInt.prototype.add;
         function subtract(a,b)
          {var
            a_l=a.length,
            b_l=b.length,
            r=new Array(a_l),
            borrow=0,
            base=BASE,
            i,
            difference;
           for(i = 0;i < b_l;i++)
            {difference = a[i] - borrow - b[i];
             if(difference < 0){difference += base;borrow = 1}else borrow = 0;
             r[i] = difference}
           for(i = b_l;i < a_l;i++)
            {difference = a[i] - borrow;
             if(difference < 0)
              difference += base;
             else
              {r[i++] = difference;break}
             r[i] = difference}
           for(;i < a_l;i++)r[i] = a[i];
           trim(r);
           return r}
         function subtractAny(a,b,sign)
          {var value;
           if(compareAbs(a,b) >= 0)
            value = subtract(a,b);
           else
            {value = subtract(b,a);sign = ! sign}
           value = arrayToSmall(value);
           if(typeof value === "number")
            {if(sign)value = - value;return new SmallInteger(value)}
           return new BigInteger(value,sign)}
         function subtractSmall(a,b,sign)
          {var l=a.length,r=new Array(l),carry=- b,base=BASE,i,difference;
           for(i = 0;i < l;i++)
            {difference = a[i] + carry;
             carry = Math.floor(difference / base);
             difference %= base;
             r[i] = difference < 0?difference + base:difference}
           r = arrayToSmall(r);
           if(typeof r === "number")
            {if(sign)r = - r;return new SmallInteger(r)}
           return new BigInteger(r,sign)}
         BigInteger.prototype.subtract
         =
         function(v)
          {var n=parseValue(v);
           if(this.sign !== n.sign)return this.add(n.negate());
           var a=this.value,b=n.value;
           if(n.isSmall)return subtractSmall(a,Math.abs(b),this.sign);
           return subtractAny(a,b,this.sign)};
         BigInteger.prototype.minus = BigInteger.prototype.subtract;
         SmallInteger.prototype.subtract
         =
         function(v)
          {var n=parseValue(v),a=this.value;
           if(a < 0 !== n.sign)return this.add(n.negate());
           var b=n.value;
           if(n.isSmall)return new SmallInteger(a - b);
           return subtractSmall(b,Math.abs(a),a >= 0)};
         SmallInteger.prototype.minus = SmallInteger.prototype.subtract;
         NativeBigInt.prototype.subtract
         =
         function(v)
          {return new NativeBigInt(this.value - parseValue(v).value)};
         NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;
         BigInteger.prototype.negate
         =
         function(){return new BigInteger(this.value,! this.sign)};
         SmallInteger.prototype.negate
         =
         function()
          {var sign=this.sign,small=new SmallInteger(- this.value);
           small.sign = ! sign;
           return small};
         NativeBigInt.prototype.negate
         =
         function(){return new NativeBigInt(- this.value)};
         BigInteger.prototype.abs
         =
         function(){return new BigInteger(this.value,false)};
         SmallInteger.prototype.abs
         =
         function(){return new SmallInteger(Math.abs(this.value))};
         NativeBigInt.prototype.abs
         =
         function()
          {return new NativeBigInt(this.value >= 0?this.value:- this.value)};
         function multiplyLong(a,b)
          {var
            a_l=a.length,
            b_l=b.length,
            l=a_l + b_l,
            r=createArray(l),
            base=BASE,
            product,
            carry,
            i,
            a_i,
            b_j;
           for(i = 0;i < a_l;++i)
            {a_i = a[i];
             for(var j=0;j < b_l;++j)
              {b_j = b[j];
               product = a_i * b_j + r[i + j];
               carry = Math.floor(product / base);
               r[i + j] = product - carry * base;
               r[i + j + 1] += carry}}
           trim(r);
           return r}
         function multiplySmall(a,b)
          {var l=a.length,r=new Array(l),base=BASE,carry=0,product,i;
           for(i = 0;i < l;i++)
            {product = a[i] * b + carry;
             carry = Math.floor(product / base);
             r[i] = product - carry * base}
           while(carry > 0)
            {r[i++] = carry % base;carry = Math.floor(carry / base)}
           return r}
         function shiftLeft(x,n)
          {var r=[];while(n-- > 0)r.push(0);return r.concat(x)}
         function multiplyKaratsuba(x,y)
          {var n=Math.max(x.length,y.length);
           if(n <= 30)return multiplyLong(x,y);
           n = Math.ceil(n / 2);
           var
            b=x.slice(n),
            a=x.slice(0,n),
            d=y.slice(n),
            c=y.slice(0,n),
            ac=multiplyKaratsuba(a,c),
            bd=multiplyKaratsuba(b,d),
            abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d)),
            product=
             addAny
              (addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)),
               shiftLeft(bd,2 * n));
           trim(product);
           return product}
         function useKaratsuba(l1,l2)
          {return - (0.012 * l1) - 0.012 * l2 + 0.000015 * l1 * l2 > 0}
         BigInteger.prototype.multiply
         =
         function(v)
          {var
            n=parseValue(v),
            a=this.value,
            b=n.value,
            sign=this.sign !== n.sign,
            abs;
           if(n.isSmall)
            {if(b === 0)return Integer[0];
             if(b === 1)return this;
             if(b === - 1)return this.negate();
             abs = Math.abs(b);
             if(abs < BASE)return new BigInteger(multiplySmall(a,abs),sign);
             b = smallToArray(abs)}
           if(useKaratsuba(a.length,b.length))
            return new BigInteger(multiplyKaratsuba(a,b),sign);
           return new BigInteger(multiplyLong(a,b),sign)};
         BigInteger.prototype.times = BigInteger.prototype.multiply;
         function multiplySmallAndArray(a,b,sign)
          {if(a < BASE)return new BigInteger(multiplySmall(b,a),sign);
           return new BigInteger(multiplyLong(b,smallToArray(a)),sign)}
         SmallInteger.prototype._multiplyBySmall
         =
         function(a)
          {if(isPrecise(a.value * this.value))
            return new SmallInteger(a.value * this.value);
           return multiplySmallAndArray
                   (Math.abs(a.value),
                    smallToArray(Math.abs(this.value)),
                    this.sign !== a.sign)};
         BigInteger.prototype._multiplyBySmall
         =
         function(a)
          {if(a.value === 0)return Integer[0];
           if(a.value === 1)return this;
           if(a.value === - 1)return this.negate();
           return multiplySmallAndArray
                   (Math.abs(a.value),this.value,this.sign !== a.sign)};
         SmallInteger.prototype.multiply
         =
         function(v){return parseValue(v)._multiplyBySmall(this)};
         SmallInteger.prototype.times = SmallInteger.prototype.multiply;
         NativeBigInt.prototype.multiply
         =
         function(v)
          {return new NativeBigInt(this.value * parseValue(v).value)};
         NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;
         function square(a)
          {var
            l=a.length,
            r=createArray(l + l),
            base=BASE,
            product,
            carry,
            i,
            a_i,
            a_j;
           for(i = 0;i < l;i++)
            {a_i = a[i];
             carry = 0 - a_i * a_i;
             for(var j=i;j < l;j++)
              {a_j = a[j];
               product = 2 * (a_i * a_j) + r[i + j] + carry;
               carry = Math.floor(product / base);
               r[i + j] = product - carry * base}
             r[i + l] = carry}
           trim(r);
           return r}
         BigInteger.prototype.square
         =
         function(){return new BigInteger(square(this.value),false)};
         SmallInteger.prototype.square
         =
         function()
          {var value=this.value * this.value;
           if(isPrecise(value))return new SmallInteger(value);
           return new
                   BigInteger
                   (square(smallToArray(Math.abs(this.value))),false)};
         NativeBigInt.prototype.square
         =
         function(v){return new NativeBigInt(this.value * this.value)};
         function divMod1(a,b)
          {var
            a_l=a.length,
            b_l=b.length,
            base=BASE,
            result=createArray(b.length),
            divisorMostSignificantDigit=b[b_l - 1],
            lambda=Math.ceil(base / (2 * divisorMostSignificantDigit)),
            remainder=multiplySmall(a,lambda),
            divisor=multiplySmall(b,lambda),
            quotientDigit,
            shift,
            carry,
            borrow,
            i,
            l,
            q;
           if(remainder.length <= a_l)remainder.push(0);
           divisor.push(0);
           divisorMostSignificantDigit = divisor[b_l - 1];
           for(shift = a_l - b_l;shift >= 0;shift--)
            {quotientDigit = base - 1;
             if(remainder[shift + b_l] !== divisorMostSignificantDigit)
              quotientDigit
              =
              Math.floor
               ((remainder[shift + b_l] * base + remainder[shift + b_l - 1])
                /
                divisorMostSignificantDigit);
             carry = 0;
             borrow = 0;
             l = divisor.length;
             for(i = 0;i < l;i++)
              {carry += quotientDigit * divisor[i];
               q = Math.floor(carry / base);
               borrow += remainder[shift + i] - (carry - q * base);
               carry = q;
               if(borrow < 0)
                {remainder[shift + i] = borrow + base;borrow = - 1}
               else
                {remainder[shift + i] = borrow;borrow = 0}}
             while(borrow !== 0)
              {quotientDigit -= 1;
               carry = 0;
               for(i = 0;i < l;i++)
                {carry += remainder[shift + i] - base + divisor[i];
                 if(carry < 0)
                  {remainder[shift + i] = carry + base;carry = 0}
                 else
                  {remainder[shift + i] = carry;carry = 1}}
               borrow += carry}
             result[shift] = quotientDigit}
           remainder = divModSmall(remainder,lambda)[0];
           return [arrayToSmall(result),arrayToSmall(remainder)]}
         function divMod2(a,b)
          {var
            a_l=a.length,
            b_l=b.length,
            result=[],
            part=[],
            base=BASE,
            guess,
            xlen,
            highx,
            highy,
            check;
           while(a_l)
            {part.unshift(a[--a_l]);
             trim(part);
             if(compareAbs(part,b) < 0){result.push(0);continue}
             xlen = part.length;
             highx = part[xlen - 1] * base + part[xlen - 2];
             highy = b[b_l - 1] * base + b[b_l - 2];
             if(xlen > b_l)highx = (highx + 1) * base;
             guess = Math.ceil(highx / highy);
             do
              {check = multiplySmall(b,guess);
               if(compareAbs(check,part) <= 0)break;
               guess--}
             while
              (guess);
             result.push(guess);
             part = subtract(part,check)}
           result.reverse();
           return [arrayToSmall(result),arrayToSmall(part)]}
         function divModSmall(value,lambda)
          {var
            length=value.length,
            quotient=createArray(length),
            base=BASE,
            i,
            q,
            remainder,
            divisor;
           remainder = 0;
           for(i = length - 1;i >= 0;--i)
            {divisor = remainder * base + value[i];
             q = truncate(divisor / lambda);
             remainder = divisor - q * lambda;
             quotient[i] = q | 0}
           return [quotient,remainder | 0]}
         function divModAny(self,v)
          {var value,n=parseValue(v);
           if(supportsNativeBigInt)
            return [new NativeBigInt(self.value / n.value),
                    new NativeBigInt(self.value % n.value)];
           var a=self.value,b=n.value,quotient;
           if(b === 0)throw new Error("Cannot divide by zero");
           if(self.isSmall)
            {if(n.isSmall)
              return [new SmallInteger(truncate(a / b)),
                      new SmallInteger(a % b)];
             return [Integer[0],self]}
           if(n.isSmall)
            {if(b === 1)return [self,Integer[0]];
             if(b == - 1)return [self.negate(),Integer[0]];
             var abs=Math.abs(b);
             if(abs < BASE)
              {value = divModSmall(a,abs);
               quotient = arrayToSmall(value[0]);
               var remainder=value[1];
               if(self.sign)remainder = - remainder;
               if(typeof quotient === "number")
                {if(self.sign !== n.sign)quotient = - quotient;
                 return [new SmallInteger(quotient),
                         new SmallInteger(remainder)]}
               return [new BigInteger(quotient,self.sign !== n.sign),
                       new SmallInteger(remainder)]}
             b = smallToArray(abs)}
           var comparison=compareAbs(a,b);
           if(comparison === - 1)return [Integer[0],self];
           if(comparison === 0)
            return [Integer[self.sign === n.sign?1:- 1],Integer[0]];
           if(a.length + b.length <= 200)
            value = divMod1(a,b);
           else
            value = divMod2(a,b);
           quotient = value[0];
           var qSign=self.sign !== n.sign,mod=value[1],mSign=self.sign;
           if(typeof quotient === "number")
            {if(qSign)quotient = - quotient;
             quotient = new SmallInteger(quotient)}
           else
            quotient = new BigInteger(quotient,qSign);
           if(typeof mod === "number")
            {if(mSign)mod = - mod;mod = new SmallInteger(mod)}
           else
            mod = new BigInteger(mod,mSign);
           return [quotient,mod]}
         BigInteger.prototype.divmod
         =
         function(v)
          {var result=divModAny(this,v);
           return {quotient:result[0],remainder:result[1]}};
         NativeBigInt.prototype.divmod
         =
         SmallInteger.prototype.divmod
         =
         BigInteger.prototype.divmod;
         BigInteger.prototype.divide
         =
         function(v){return divModAny(this,v)[0]};
         NativeBigInt.prototype.over
         =
         NativeBigInt.prototype.divide
         =
         function(v)
          {return new NativeBigInt(this.value / parseValue(v).value)};
         SmallInteger.prototype.over
         =
         SmallInteger.prototype.divide
         =
         BigInteger.prototype.over
         =
         BigInteger.prototype.divide;
         BigInteger.prototype.mod = function(v){return divModAny(this,v)[1]};
         NativeBigInt.prototype.mod
         =
         NativeBigInt.prototype.remainder
         =
         function(v)
          {return new NativeBigInt(this.value % parseValue(v).value)};
         SmallInteger.prototype.remainder
         =
         SmallInteger.prototype.mod
         =
         BigInteger.prototype.remainder
         =
         BigInteger.prototype.mod;
         BigInteger.prototype.pow
         =
         function(v)
          {var n=parseValue(v),a=this.value,b=n.value,value,x,y;
           if(b === 0)return Integer[1];
           if(a === 0)return Integer[0];
           if(a === 1)return Integer[1];
           if(a === - 1)return n.isEven()?Integer[1]:Integer[- 1];
           if(n.sign)return Integer[0];
           if(! n.isSmall)
            throw new Error("The exponent " + n.toString() + " is too large.");
           if(this.isSmall)
            if(isPrecise(value = Math.pow(a,b)))
             return new SmallInteger(truncate(value));
           x = this;
           y = Integer[1];
           while(true)
            {if(b & 1 === 1){y = y.times(x);--b}
             if(b === 0)break;
             b /= 2;
             x = x.square()}
           return y};
         SmallInteger.prototype.pow = BigInteger.prototype.pow;
         NativeBigInt.prototype.pow
         =
         function(v)
          {var
            n=parseValue(v),
            a=this.value,
            b=n.value,
            _0=BigInt(0),
            _1=BigInt(1),
            _2=BigInt(2);
           if(b === _0)return Integer[1];
           if(a === _0)return Integer[0];
           if(a === _1)return Integer[1];
           if(a === BigInt(- 1))return n.isEven()?Integer[1]:Integer[- 1];
           if(n.isNegative())return new NativeBigInt(_0);
           var x=this,y=Integer[1];
           while(true)
            {if((b & _1) === _1){y = y.times(x);--b}
             if(b === _0)break;
             b /= _2;
             x = x.square()}
           return y};
         BigInteger.prototype.modPow
         =
         function(exp,mod)
          {exp = parseValue(exp);
           mod = parseValue(mod);
           if(mod.isZero())
            throw new Error("Cannot take modPow with modulus 0");
           var r=Integer[1],base=this.mod(mod);
           if(exp.isNegative())
            {exp = exp.multiply(Integer[- 1]);base = base.modInv(mod)}
           while(exp.isPositive())
            {if(base.isZero())return Integer[0];
             if(exp.isOdd())r = r.multiply(base).mod(mod);
             exp = exp.divide(2);
             base = base.square().mod(mod)}
           return r};
         NativeBigInt.prototype.modPow
         =
         SmallInteger.prototype.modPow
         =
         BigInteger.prototype.modPow;
         function compareAbs(a,b)
          {if(a.length !== b.length)return a.length > b.length?1:- 1;
           for(var i=a.length - 1;i >= 0;i--)
            if(a[i] !== b[i])return a[i] > b[i]?1:- 1;
           return 0}
         BigInteger.prototype.compareAbs
         =
         function(v)
          {var n=parseValue(v),a=this.value,b=n.value;
           if(n.isSmall)return 1;
           return compareAbs(a,b)};
         SmallInteger.prototype.compareAbs
         =
         function(v)
          {var n=parseValue(v),a=Math.abs(this.value),b=n.value;
           if(n.isSmall){b = Math.abs(b);return a === b?0:a > b?1:- 1}
           return - 1};
         NativeBigInt.prototype.compareAbs
         =
         function(v)
          {var a=this.value,b=parseValue(v).value;
           a = a >= 0?a:- a;
           b = b >= 0?b:- b;
           return a === b?0:a > b?1:- 1};
         BigInteger.prototype.compare
         =
         function(v)
          {if(v === Infinity)return - 1;
           if(v === - Infinity)return 1;
           var n=parseValue(v),a=this.value,b=n.value;
           if(this.sign !== n.sign)return n.sign?1:- 1;
           if(n.isSmall)return this.sign?- 1:1;
           return compareAbs(a,b) * (this.sign?- 1:1)};
         BigInteger.prototype.compareTo = BigInteger.prototype.compare;
         SmallInteger.prototype.compare
         =
         function(v)
          {if(v === Infinity)return - 1;
           if(v === - Infinity)return 1;
           var n=parseValue(v),a=this.value,b=n.value;
           if(n.isSmall)return a == b?0:a > b?1:- 1;
           if(a < 0 !== n.sign)return a < 0?- 1:1;
           return a < 0?1:- 1};
         SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;
         NativeBigInt.prototype.compare
         =
         function(v)
          {if(v === Infinity)return - 1;
           if(v === - Infinity)return 1;
           var a=this.value,b=parseValue(v).value;
           return a === b?0:a > b?1:- 1};
         NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;
         BigInteger.prototype.equals
         =
         function(v){return this.compare(v) === 0};
         NativeBigInt.prototype.eq
         =
         NativeBigInt.prototype.equals
         =
         SmallInteger.prototype.eq
         =
         SmallInteger.prototype.equals
         =
         BigInteger.prototype.eq
         =
         BigInteger.prototype.equals;
         BigInteger.prototype.notEquals
         =
         function(v){return this.compare(v) !== 0};
         NativeBigInt.prototype.neq
         =
         NativeBigInt.prototype.notEquals
         =
         SmallInteger.prototype.neq
         =
         SmallInteger.prototype.notEquals
         =
         BigInteger.prototype.neq
         =
         BigInteger.prototype.notEquals;
         BigInteger.prototype.greater
         =
         function(v){return this.compare(v) > 0};
         NativeBigInt.prototype.gt
         =
         NativeBigInt.prototype.greater
         =
         SmallInteger.prototype.gt
         =
         SmallInteger.prototype.greater
         =
         BigInteger.prototype.gt
         =
         BigInteger.prototype.greater;
         BigInteger.prototype.lesser
         =
         function(v){return this.compare(v) < 0};
         NativeBigInt.prototype.lt
         =
         NativeBigInt.prototype.lesser
         =
         SmallInteger.prototype.lt
         =
         SmallInteger.prototype.lesser
         =
         BigInteger.prototype.lt
         =
         BigInteger.prototype.lesser;
         BigInteger.prototype.greaterOrEquals
         =
         function(v){return this.compare(v) >= 0};
         NativeBigInt.prototype.geq
         =
         NativeBigInt.prototype.greaterOrEquals
         =
         SmallInteger.prototype.geq
         =
         SmallInteger.prototype.greaterOrEquals
         =
         BigInteger.prototype.geq
         =
         BigInteger.prototype.greaterOrEquals;
         BigInteger.prototype.lesserOrEquals
         =
         function(v){return this.compare(v) <= 0};
         NativeBigInt.prototype.leq
         =
         NativeBigInt.prototype.lesserOrEquals
         =
         SmallInteger.prototype.leq
         =
         SmallInteger.prototype.lesserOrEquals
         =
         BigInteger.prototype.leq
         =
         BigInteger.prototype.lesserOrEquals;
         BigInteger.prototype.isEven
         =
         function(){return (this.value[0] & 1) === 0};
         SmallInteger.prototype.isEven
         =
         function(){return (this.value & 1) === 0};
         NativeBigInt.prototype.isEven
         =
         function(){return (this.value & BigInt(1)) === BigInt(0)};
         BigInteger.prototype.isOdd
         =
         function(){return (this.value[0] & 1) === 1};
         SmallInteger.prototype.isOdd
         =
         function(){return (this.value & 1) === 1};
         NativeBigInt.prototype.isOdd
         =
         function(){return (this.value & BigInt(1)) === BigInt(1)};
         BigInteger.prototype.isPositive = function(){return ! this.sign};
         SmallInteger.prototype.isPositive
         =
         function(){return this.value > 0};
         NativeBigInt.prototype.isPositive
         =
         SmallInteger.prototype.isPositive;
         BigInteger.prototype.isNegative = function(){return this.sign};
         SmallInteger.prototype.isNegative
         =
         function(){return this.value < 0};
         NativeBigInt.prototype.isNegative
         =
         SmallInteger.prototype.isNegative;
         BigInteger.prototype.isUnit = function(){return false};
         SmallInteger.prototype.isUnit
         =
         function(){return Math.abs(this.value) === 1};
         NativeBigInt.prototype.isUnit
         =
         function(){return this.abs().value === BigInt(1)};
         BigInteger.prototype.isZero = function(){return false};
         SmallInteger.prototype.isZero = function(){return this.value === 0};
         NativeBigInt.prototype.isZero
         =
         function(){return this.value === BigInt(0)};
         BigInteger.prototype.isDivisibleBy
         =
         function(v)
          {var n=parseValue(v);
           if(n.isZero())return false;
           if(n.isUnit())return true;
           if(n.compareAbs(2) === 0)return this.isEven();
           return this.mod(n).isZero()};
         NativeBigInt.prototype.isDivisibleBy
         =
         SmallInteger.prototype.isDivisibleBy
         =
         BigInteger.prototype.isDivisibleBy;
         function isBasicPrime(v)
          {var n=v.abs();
           if(n.isUnit())return false;
           if(n.equals(2) || n.equals(3) || n.equals(5))return true;
           if(n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5))
            return false;
           if(n.lesser(49))return true}
         function millerRabinTest(n,a)
          {var nPrev=n.prev(),b=nPrev,r=0,d,t,i,x;
           while(b.isEven())b = b.divide(2),r++;
           next:
           for(i = 0;i < a.length;i++)
            {if(n.lesser(a[i]))continue;
             x = bigInt(a[i]).modPow(b,n);
             if(x.isUnit() || x.equals(nPrev))continue;
             for(d = r - 1;d != 0;d--)
              {x = x.square().mod(n);
               if(x.isUnit())return false;
               if(x.equals(nPrev))continue next}
             return false}
           return true}
         BigInteger.prototype.isPrime
         =
         function(strict)
          {var isPrime=isBasicPrime(this);
           if(isPrime !== undefined)return isPrime;
           var n=this.abs(),bits=n.bitLength();
           if(bits <= 64)
            return millerRabinTest(n,[2,3,5,7,11,13,17,19,23,29,31,37]);
           var
            logN=Math.log(2) * bits.toJSNumber(),
            t=Math.ceil(strict === true?2 * Math.pow(logN,2):logN);
           for(var a=[],i=0;i < t;i++)a.push(bigInt(i + 2));
           return millerRabinTest(n,a)};
         NativeBigInt.prototype.isPrime
         =
         SmallInteger.prototype.isPrime
         =
         BigInteger.prototype.isPrime;
         BigInteger.prototype.isProbablePrime
         =
         function(iterations)
          {var isPrime=isBasicPrime(this);
           if(isPrime !== undefined)return isPrime;
           var n=this.abs(),t=iterations === undefined?5:iterations;
           for(var a=[],i=0;i < t;i++)
            a.push(bigInt.randBetween(2,n.minus(2)));
           return millerRabinTest(n,a)};
         NativeBigInt.prototype.isProbablePrime
         =
         SmallInteger.prototype.isProbablePrime
         =
         BigInteger.prototype.isProbablePrime;
         BigInteger.prototype.modInv
         =
         function(n)
          {var
            t=bigInt.zero,
            newT=bigInt.one,
            r=parseValue(n),
            newR=this.abs(),
            q,
            lastT,
            lastR;
           while(! newR.isZero())
            {q = r.divide(newR);
             lastT = t;
             lastR = r;
             t = newT;
             r = newR;
             newT = lastT.subtract(q.multiply(newT));
             newR = lastR.subtract(q.multiply(newR))}
           if(! r.isUnit())
            throw new
                   Error
                   (this.toString()
                    +
                    " and "
                    +
                    n.toString()
                    +
                    " are not co-prime");
           if(t.compare(0) === - 1)t = t.add(n);
           if(this.isNegative())return t.negate();
           return t};
         NativeBigInt.prototype.modInv
         =
         SmallInteger.prototype.modInv
         =
         BigInteger.prototype.modInv;
         BigInteger.prototype.next
         =
         function()
          {var value=this.value;
           if(this.sign)return subtractSmall(value,1,this.sign);
           return new BigInteger(addSmall(value,1),this.sign)};
         SmallInteger.prototype.next
         =
         function()
          {var value=this.value;
           if(value + 1 < MAX_INT)return new SmallInteger(value + 1);
           return new BigInteger(MAX_INT_ARR,false)};
         NativeBigInt.prototype.next
         =
         function(){return new NativeBigInt(this.value + BigInt(1))};
         BigInteger.prototype.prev
         =
         function()
          {var value=this.value;
           if(this.sign)return new BigInteger(addSmall(value,1),true);
           return subtractSmall(value,1,this.sign)};
         SmallInteger.prototype.prev
         =
         function()
          {var value=this.value;
           if(value - 1 > - MAX_INT)return new SmallInteger(value - 1);
           return new BigInteger(MAX_INT_ARR,true)};
         NativeBigInt.prototype.prev
         =
         function(){return new NativeBigInt(this.value - BigInt(1))};
         var powersOfTwo=[1];
         while(2 * powersOfTwo[powersOfTwo.length - 1] <= BASE)
          powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);
         var
          powers2Length=powersOfTwo.length,
          highestPower2=powersOfTwo[powers2Length - 1];
         function shift_isSmall(n){return Math.abs(n) <= BASE}
         BigInteger.prototype.shiftLeft
         =
         function(v)
          {var n=parseValue(v).toJSNumber();
           if(! shift_isSmall(n))
            throw new Error(String(n) + " is too large for shifting.");
           if(n < 0)return this.shiftRight(- n);
           var result=this;
           if(result.isZero())return result;
           while(n >= powers2Length)
            {result = result.multiply(highestPower2);n -= powers2Length - 1}
           return result.multiply(powersOfTwo[n])};
         NativeBigInt.prototype.shiftLeft
         =
         SmallInteger.prototype.shiftLeft
         =
         BigInteger.prototype.shiftLeft;
         BigInteger.prototype.shiftRight
         =
         function(v)
          {var remQuo,n=parseValue(v).toJSNumber();
           if(! shift_isSmall(n))
            throw new Error(String(n) + " is too large for shifting.");
           if(n < 0)return this.shiftLeft(- n);
           var result=this;
           while(n >= powers2Length)
            {if(result.isZero() || result.isNegative() && result.isUnit())
              return result;
             remQuo = divModAny(result,highestPower2);
             result = remQuo[1].isNegative()?remQuo[0].prev():remQuo[0];
             n -= powers2Length - 1}
           remQuo = divModAny(result,powersOfTwo[n]);
           return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]};
         NativeBigInt.prototype.shiftRight
         =
         SmallInteger.prototype.shiftRight
         =
         BigInteger.prototype.shiftRight;
         function bitwise(x,y,fn)
          {y = parseValue(y);
           var
            xSign=x.isNegative(),
            ySign=y.isNegative(),
            xRem=xSign?x.not():x,
            yRem=ySign?y.not():y,
            xDigit=0,
            yDigit=0,
            xDivMod=null,
            yDivMod=null,
            result=[];
           while(! xRem.isZero() || ! yRem.isZero())
            {xDivMod = divModAny(xRem,highestPower2);
             xDigit = xDivMod[1].toJSNumber();
             if(xSign)xDigit = highestPower2 - 1 - xDigit;
             yDivMod = divModAny(yRem,highestPower2);
             yDigit = yDivMod[1].toJSNumber();
             if(ySign)yDigit = highestPower2 - 1 - yDigit;
             xRem = xDivMod[0];
             yRem = yDivMod[0];
             result.push(fn(xDigit,yDigit))}
           var sum=fn(xSign?1:0,ySign?1:0) !== 0?bigInt(- 1):bigInt(0);
           for(var i=result.length - 1;i >= 0;i -= 1)
            sum = sum.multiply(highestPower2).add(bigInt(result[i]));
           return sum}
         BigInteger.prototype.not = function(){return this.negate().prev()};
         NativeBigInt.prototype.not
         =
         SmallInteger.prototype.not
         =
         BigInteger.prototype.not;
         BigInteger.prototype.and
         =
         function(n){return bitwise(this,n,function(a,b){return a & b})};
         NativeBigInt.prototype.and
         =
         SmallInteger.prototype.and
         =
         BigInteger.prototype.and;
         BigInteger.prototype.or
         =
         function(n){return bitwise(this,n,function(a,b){return a | b})};
         NativeBigInt.prototype.or
         =
         SmallInteger.prototype.or
         =
         BigInteger.prototype.or;
         BigInteger.prototype.xor
         =
         function(n){return bitwise(this,n,function(a,b){return a ^ b})};
         NativeBigInt.prototype.xor
         =
         SmallInteger.prototype.xor
         =
         BigInteger.prototype.xor;
         var
          LOBMASK_I=1 << 30,
          LOBMASK_BI=(BASE & - BASE) * (BASE & - BASE) | LOBMASK_I;
         function roughLOB(n)
          {var
            v=n.value,
            x=
             typeof v === "number"
              ?v | LOBMASK_I
              :typeof v === "bigint"
                ?v | BigInt(LOBMASK_I)
                :v[0] + v[1] * BASE | LOBMASK_BI;
           return x & - x}
         function integerLogarithm(value,base)
          {if(base.compareTo(value) <= 0)
            {var
              tmp=integerLogarithm(value,base.square(base)),
              p=tmp.p,
              e=tmp.e,
              t=p.multiply(base);
             return t.compareTo(value) <= 0?{p:t,e:e * 2 + 1}:{p:p,e:e * 2}}
           return {p:bigInt(1),e:0}}
         BigInteger.prototype.bitLength
         =
         function()
          {var n=this;
           if(n.compareTo(bigInt(0)) < 0)n = n.negate().subtract(bigInt(1));
           if(n.compareTo(bigInt(0)) === 0)return bigInt(0);
           return bigInt(integerLogarithm(n,bigInt(2)).e).add(bigInt(1))};
         NativeBigInt.prototype.bitLength
         =
         SmallInteger.prototype.bitLength
         =
         BigInteger.prototype.bitLength;
         function max(a,b)
          {a = parseValue(a);b = parseValue(b);return a.greater(b)?a:b}
         function min(a,b)
          {a = parseValue(a);b = parseValue(b);return a.lesser(b)?a:b}
         function gcd(a,b)
          {a = parseValue(a).abs();
           b = parseValue(b).abs();
           if(a.equals(b))return a;
           if(a.isZero())return b;
           if(b.isZero())return a;
           var c=Integer[1],d,t;
           while(a.isEven() && b.isEven())
            {d = min(roughLOB(a),roughLOB(b));
             a = a.divide(d);
             b = b.divide(d);
             c = c.multiply(d)}
           while(a.isEven())a = a.divide(roughLOB(a));
           do
            {while(b.isEven())b = b.divide(roughLOB(b));
             if(a.greater(b)){t = b;b = a;a = t}
             b = b.subtract(a)}
           while
            (! b.isZero());
           return c.isUnit()?a:a.multiply(c)}
         function lcm(a,b)
          {a = parseValue(a).abs();
           b = parseValue(b).abs();
           return a.divide(gcd(a,b)).multiply(b)}
         function randBetween(a,b)
          {a = parseValue(a);
           b = parseValue(b);
           var low=min(a,b),high=max(a,b),range=high.subtract(low).add(1);
           if(range.isSmall)return low.add(Math.floor(Math.random() * range));
           var digits=toBase(range,BASE).value,result=[],restricted=true;
           for(var i=0;i < digits.length;i++)
            {var
              top=restricted?digits[i]:BASE,
              digit=truncate(Math.random() * top);
             result.push(digit);
             if(digit < top)restricted = false}
           return low.add(Integer.fromArray(result,BASE,false))}
         function parseBase(text,base,alphabet,caseSensitive)
          {alphabet = alphabet || DEFAULT_ALPHABET;
           text = String(text);
           if(! caseSensitive)
            {text = text.toLowerCase();alphabet = alphabet.toLowerCase()}
           var length=text.length,i,absBase=Math.abs(base),alphabetValues={};
           for(i = 0;i < alphabet.length;i++)alphabetValues[alphabet[i]] = i;
           for(i = 0;i < length;i++)
            {var c=text[i];
             if(c === "-")continue;
             if(c in alphabetValues)
              if(alphabetValues[c] >= absBase)
               {if(c === "1" && absBase === 1)continue;
                throw new
                       Error
                       (c + " is not a valid digit in base " + base + ".")}}
           base = parseValue(base);
           var digits=[],isNegative=text[0] === "-";
           for(i = isNegative?1:0;i < text.length;i++)
            {var c=text[i];
             if(c in alphabetValues)
              digits.push(parseValue(alphabetValues[c]));
             else
              if(c === "<")
               {var start=i;
                do i++;while(text[i] !== ">" && i < text.length);
                digits.push(parseValue(text.slice(start + 1,i)))}
              else
               throw new Error(c + " is not a valid character")}
           return parseBaseFromArray(digits,base,isNegative)}
         function parseBaseFromArray(digits,base,isNegative)
          {var val=Integer[0],pow=Integer[1],i;
           for(i = digits.length - 1;i >= 0;i--)
            {val = val.add(digits[i].times(pow));pow = pow.times(base)}
           return isNegative?val.negate():val}
         function stringify(digit,alphabet)
          {alphabet = alphabet || DEFAULT_ALPHABET;
           if(digit < alphabet.length)return alphabet[digit];
           return "<" + digit + ">"}
         function toBase(n,base)
          {base = bigInt(base);
           if(base.isZero())
            {if(n.isZero())return {value:[0],isNegative:false};
             throw new Error("Cannot convert nonzero numbers to base 0.")}
           if(base.equals(- 1))
            {if(n.isZero())return {value:[0],isNegative:false};
             if(n.isNegative())
              return {value:
                      [].concat.apply
                       ([],
                        Array.apply(null,Array(- n.toJSNumber())).map
                         (Array.prototype.valueOf,[1,0])),
                      isNegative:false};
             var
              arr=
               Array.apply(null,Array(n.toJSNumber() - 1)).map
                (Array.prototype.valueOf,[0,1]);
             arr.unshift([1]);
             return {value:[].concat.apply([],arr),isNegative:false}}
           var neg=false;
           if(n.isNegative() && base.isPositive()){neg = true;n = n.abs()}
           if(base.isUnit())
            {if(n.isZero())return {value:[0],isNegative:false};
             return {value:
                     Array.apply(null,Array(n.toJSNumber())).map
                      (Number.prototype.valueOf,1),
                     isNegative:neg}}
           var out=[],left=n,divmod;
           while(left.isNegative() || left.compareAbs(base) >= 0)
            {divmod = left.divmod(base);
             left = divmod.quotient;
             var digit=divmod.remainder;
             if(digit.isNegative())
              {digit = base.minus(digit).abs();left = left.next()}
             out.push(digit.toJSNumber())}
           out.push(left.toJSNumber());
           return {value:out.reverse(),isNegative:neg}}
         function toBaseString(n,base,alphabet)
          {var arr=toBase(n,base);
           return (arr.isNegative?"-":"")
                  +
                  arr.value.map(function(x){return stringify(x,alphabet)}).join
                   ("")}
         BigInteger.prototype.toArray
         =
         function(radix){return toBase(this,radix)};
         SmallInteger.prototype.toArray
         =
         function(radix){return toBase(this,radix)};
         NativeBigInt.prototype.toArray
         =
         function(radix){return toBase(this,radix)};
         BigInteger.prototype.toString
         =
         function(radix,alphabet)
          {if(radix === undefined)radix = 10;
           if(radix !== 10)return toBaseString(this,radix,alphabet);
           var
            v=this.value,
            l=v.length,
            str=String(v[--l]),
            zeros="0000000",
            digit;
           while(--l >= 0)
            {digit = String(v[l]);str += zeros.slice(digit.length) + digit}
           var sign=this.sign?"-":"";
           return sign + str};
         SmallInteger.prototype.toString
         =
         function(radix,alphabet)
          {if(radix === undefined)radix = 10;
           if(radix != 10)return toBaseString(this,radix,alphabet);
           return String(this.value)};
         NativeBigInt.prototype.toString = SmallInteger.prototype.toString;
         NativeBigInt.prototype.toJSON
         =
         BigInteger.prototype.toJSON
         =
         SmallInteger.prototype.toJSON
         =
         function(){return this.toString()};
         BigInteger.prototype.valueOf
         =
         function(){return parseInt(this.toString(),10)};
         BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;
         SmallInteger.prototype.valueOf = function(){return this.value};
         SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;
         NativeBigInt.prototype.valueOf
         =
         NativeBigInt.prototype.toJSNumber
         =
         function(){return parseInt(this.toString(),10)};
         function parseStringValue(v)
          {if(isPrecise(+ v))
            {var x=+ v;
             if(x === truncate(x))
              return supportsNativeBigInt
                      ?new NativeBigInt(BigInt(x))
                      :new SmallInteger(x);
             throw new Error("Invalid integer: " + v)}
           var sign=v[0] === "-";
           if(sign)v = v.slice(1);
           var split=v.split(/e/i);
           if(split.length > 2)
            throw new Error("Invalid integer: " + split.join("e"));
           if(split.length === 2)
            {var exp=split[1];
             if(exp[0] === "+")exp = exp.slice(1);
             exp = + exp;
             if(exp !== truncate(exp) || ! isPrecise(exp))
              throw new
                     Error
                     ("Invalid integer: " + exp + " is not a valid exponent.");
             var text=split[0],decimalPlace=text.indexOf(".");
             if(decimalPlace >= 0)
              {exp -= text.length - decimalPlace - 1;
               text
               =
               text.slice(0,decimalPlace)
               +
               text.slice(decimalPlace + 1)}
             if(exp < 0)
              throw new
                     Error
                     ("Cannot include negative exponent part for integers");
             text += new Array(exp + 1).join("0");
             v = text}
           var isValid=/^([0-9][0-9]*)$/.test(v);
           if(! isValid)throw new Error("Invalid integer: " + v);
           if(supportsNativeBigInt)
            return new NativeBigInt(BigInt(sign?"-" + v:v));
           var r=[],max=v.length,l=LOG_BASE,min=max - l;
           while(max > 0)
            {r.push(+ v.slice(min,max));min -= l;if(min < 0)min = 0;max -= l}
           trim(r);
           return new BigInteger(r,sign)}
         function parseNumberValue(v)
          {if(supportsNativeBigInt)return new NativeBigInt(BigInt(v));
           if(isPrecise(v))
            {if(v !== truncate(v))throw new Error(v + " is not an integer.");
             return new SmallInteger(v)}
           return parseStringValue(v.toString())}
         function parseValue(v)
          {if(typeof v === "number")return parseNumberValue(v);
           if(typeof v === "string")return parseStringValue(v);
           if(typeof v === "bigint")return new NativeBigInt(v);
           return v}
         for(var i=0;i < 1000;i++)
          {Integer[i] = parseValue(i);if(i > 0)Integer[- i] = parseValue(- i)}
         Integer.one = Integer[1];
         Integer.zero = Integer[0];
         Integer.minusOne = Integer[- 1];
         Integer.max = max;
         Integer.min = min;
         Integer.gcd = gcd;
         Integer.lcm = lcm;
         Integer.isInstance
         =
         function(x)
          {return x instanceof BigInteger
                  ||
                  x instanceof SmallInteger
                  ||
                  x instanceof NativeBigInt};
         Integer.randBetween = randBetween;
         Integer.fromArray
         =
         function(digits,base,isNegative)
          {return parseBaseFromArray
                   (digits.map(parseValue),parseValue(base || 10),isNegative)};
         return Integer}
       ();
    function ml_z_normalize(x)
     {var y=x.toJSNumber() | 0;if(x.equals(bigInt(y)))return y;return x}
    function ml_z_pow(z1,i1)
     {i1 = bigInt(i1);
      if(i1.lt(bigInt(0)))
       caml_invalid_argument("Z.pow: exponent must be non-negative");
      return ml_z_normalize(bigInt(z1).pow(i1))}
    function ml_z_root(z,i)
     {var zero=bigInt(0),one=bigInt(1);
      z = bigInt(z);
      if(z.equals(zero) || z.equals(one))return ml_z_normalize(z);
      var start=zero,end=z,ans=null,two=bigInt(2);
      while(start.leq(end))
       {var mid=start.add(end).divide(two),po=mid.pow(i);
        if(po.equals(z))
         return ml_z_normalize(mid);
        else
         if(po.lt(z)){start = mid.next();ans = mid}else end = mid.prev()}
      return ml_z_normalize(ans)}
    function caml_int64_of_bytes(a)
     {return new
              MlInt64
              (a[7] << 0 | a[6] << 8 | a[5] << 16,
               a[4] << 0 | a[3] << 8 | a[2] << 16,
               a[1] << 0 | a[0] << 8)}
    function caml_ba_uint8_get64(ba,i0)
     {var ofs=ba.offset(i0);
      if(ofs + 7 >= ba.data.length)caml_array_bound_error();
      var
       b1=ba.get(ofs + 0),
       b2=ba.get(ofs + 1),
       b3=ba.get(ofs + 2),
       b4=ba.get(ofs + 3),
       b5=ba.get(ofs + 4),
       b6=ba.get(ofs + 5),
       b7=ba.get(ofs + 6),
       b8=ba.get(ofs + 7);
      return caml_int64_of_bytes([b8,b7,b6,b5,b4,b3,b2,b1])}
    function caml_int64_to_bytes(x){return x.toArray()}
    function caml_int64_marshal(writer,v,sizes)
     {var b=caml_int64_to_bytes(v);
      for(var i=0;i < 8;i++)writer.write(8,b[i]);
      sizes[0] = 8;
      sizes[1] = 8}
    function caml_ba_num_dims(ba){return ba.dims.length}
    function caml_return_exn_constant(tag){return tag}
    function caml_wrap_exception(e)
     {if(e instanceof Array)return e;
      if
       (joo_global_object.RangeError
        &&
        e instanceof joo_global_object.RangeError
        &&
        e.message
        &&
        e.message.match(/maximum call stack/i))
       return caml_return_exn_constant(caml_global_data.Stack_overflow);
      if
       (joo_global_object.InternalError
        &&
        e instanceof joo_global_object.InternalError
        &&
        e.message
        &&
        e.message.match(/too much recursion/i))
       return caml_return_exn_constant(caml_global_data.Stack_overflow);
      if(e instanceof joo_global_object.Error && caml_named_value("jsError"))
       return [0,caml_named_value("jsError"),e];
      return [0,caml_global_data.Failure,caml_string_of_jsstring(String(e))]}
    function caml_create_file(name,content)
     {var root=resolve_fs_device(name);
      if(! root.device.register)caml_failwith("cannot register file");
      root.device.register(root.rest,content);
      return 0}
    function caml_fs_init()
     {var tmp=joo_global_object.caml_fs_tmp;
      if(tmp)
       for(var i=0;i < tmp.length;i++)
        caml_create_file(tmp[i].name,tmp[i].content);
      joo_global_object.caml_create_file = caml_create_file;
      joo_global_object.caml_fs_tmp = [];
      return 0}
    function caml_mul(a,b){return Math.imul(a,b)}
    function caml_hash_mix_int(h,d)
     {d = caml_mul(d,0xcc9e2d51 | 0);
      d = d << 15 | d >>> 32 - 15;
      d = caml_mul(d,0x1b873593);
      h ^= d;
      h = h << 13 | h >>> 32 - 13;
      return (h + (h << 2) | 0) + (0xe6546b64 | 0) | 0}
    function caml_hash_mix_jsbytes(h,s)
     {var len=s.length,i,w;
      for(i = 0;i + 4 <= len;i += 4)
       {w
        =
        s.charCodeAt(i)
        |
        s.charCodeAt(i + 1)
        <<
        8
        |
        s.charCodeAt(i + 2)
        <<
        16
        |
        s.charCodeAt(i + 3)
        <<
        24;
        h = caml_hash_mix_int(h,w)}
      w = 0;
      switch(len & 3)
       {case 3:w = s.charCodeAt(i + 2) << 16;
        case 2:w |= s.charCodeAt(i + 1) << 8;
        case 1:w |= s.charCodeAt(i);h = caml_hash_mix_int(h,w)
        }
      h ^= len;
      return h}
    function caml_hash_mix_string(h,v)
     {return caml_hash_mix_jsbytes(h,caml_jsbytes_of_string(v))}
    var Base_internalhash_fold_string=caml_hash_mix_string;
    function caml_set_parser_trace(){return 0}
    function caml_list_of_js_array(a)
     {var l=0;
      for(var i=a.length - 1;i >= 0;i--){var e=a[i];l = [0,e,l]}
      return l}
    function unix_gettimeofday(){return new Date().getTime() / 1000}
    function num_digits_nat(nat,ofs,len)
     {for(var i=len - 1;i >= 0;i--)if(nat.data[ofs + i] != 0)return i + 1;
      return 1}
    function caml_hash_nat(x)
     {var len=num_digits_nat(x,0,x.data.length),h=0;
      for(var i=0;i < len;i++)h = caml_hash_mix_int(h,x.data[i]);
      return h}
    function caml_call_gen(f,args)
     {if(f.fun)return caml_call_gen(f.fun,args);
      if(typeof f !== "function")return f;
      var n=f.length | 0;
      if(n === 0)return f.apply(null,args);
      var argsLen=args.length | 0,d=n - argsLen | 0;
      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()
         {var
           extra_args=arguments.length == 0?1:arguments.length,
           nargs=new Array(args.length + extra_args);
          for(var i=0;i < args.length;i++)nargs[i] = args[i];
          for(var i=0;i < arguments.length;i++)
           nargs[args.length + i] = arguments[i];
          return caml_call_gen(f,nargs)}}
    function caml_js_wrap_callback_arguments(f)
     {return function()
       {var len=arguments.length,args=new Array(len);
        for(var i=0;i < len;i++)args[i] = arguments[i];
        return caml_call_gen(f,[args])}}
    function caml_sys_chdir(dir)
     {var root=resolve_fs_device(dir);
      if(root.device.exists(root.rest))
       {if(root.rest)
         caml_current_dir = root.path + root.rest + "/";
        else
         caml_current_dir = root.path;
        return 0}
      else
       caml_raise_no_such_file(dir)}
    function caml_gc_counters(){return [254,0,0,0]}
    function ml_z_div(z1,z2)
     {z2 = bigInt(z2);
      if(z2.equals(bigInt(0)))caml_raise_zero_divide();
      return ml_z_normalize(bigInt(z1).divide(bigInt(z2)))}
    function ml_z_sign(z1){return bigInt(z1).compare(bigInt.zero)}
    function ml_z_add(z1,z2)
     {return ml_z_normalize(bigInt(z1).add(bigInt(z2)))}
    function ml_z_cdiv(z1,z2)
     {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2);
      if(z1_pos * z2_pos > 0)
       if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0)))
        return ml_z_add(ml_z_div(z1,z2),bigInt(1));
      return ml_z_div(z1,z2)}
    function caml_gr_synchronize()
     {caml_failwith("caml_gr_synchronize not Implemented")}
    var log2_ok=Math.log2 && Math.log2(1.1235582092889474E+307) == 1020;
    function jsoo_floor_log2(x)
     {if(log2_ok)return Math.floor(Math.log2(x));
      var i=0;
      if(x == 0)return - Infinity;
      if(x >= 1)while(x >= 2){x /= 2;i++}else while(x < 1){x *= 2;i--}
      return i}
    function caml_int32_bits_of_float(x)
     {var float32a=new (joo_global_object.Float32Array)(1);
      float32a[0] = x;
      var int32a=new (joo_global_object.Int32Array)(float32a.buffer);
      return int32a[0] | 0}
    function caml_int64_create_lo_mi_hi(lo,mi,hi)
     {return new MlInt64(lo,mi,hi)}
    function caml_int64_bits_of_float(x)
     {if(! isFinite(x))
       {if(isNaN(x))return caml_int64_create_lo_mi_hi(1,0,0x7ff0);
        return x > 0
                ?caml_int64_create_lo_mi_hi(0,0,0x7ff0)
                :caml_int64_create_lo_mi_hi(0,0,0xfff0)}
      var sign=x == 0 && 1 / x == - Infinity?0x8000:x >= 0?0:0x8000;
      if(sign)x = - x;
      var exp=jsoo_floor_log2(x) + 1023;
      if(exp <= 0)
       {exp = 0;x /= Math.pow(2,- 1026)}
      else
       {x /= Math.pow(2,exp - 1027);
        if(x < 16){x *= 2;exp -= 1}
        if(exp == 0)x /= 2}
      var k=Math.pow(2,24),r3=x | 0;
      x = (x - r3) * k;
      var r2=x | 0;
      x = (x - r2) * k;
      var r1=x | 0;
      r3 = r3 & 0xf | sign | exp << 4;
      return caml_int64_create_lo_mi_hi(r1,r2,r3)}
    function caml_ba_serialize(writer,ba,sz)
     {writer.write(32,ba.dims.length);
      writer.write(32,ba.kind | ba.layout << 8);
      for(var i=0;i < ba.dims.length;i++)writer.write(32,ba.dims[i]);
      switch(ba.kind)
       {case 2:
        case 3:
        case 12:
         for(var i=0;i < ba.data.length;i++)writer.write(8,ba.data[i]);break;
        case 4:
        case 5:
         for(var i=0;i < ba.data.length;i++)writer.write(16,ba.data[i]);break;
        case 6:
         for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]);break;
        case 8:
        case 9:
         writer.write(8,0);
         for(var i=0;i < ba.data.length;i++)writer.write(32,ba.data[i]);
         break;
        case 7:
         for(var i=0;i < ba.data.length / 2;i++)
          {var b=caml_int64_to_bytes(ba.get(i));
           for(var j=0;j < 8;j++)writer.write(8,b[j])}
         break;
        case 1:
         for(var i=0;i < ba.data.length;i++)
          {var b=caml_int64_to_bytes(caml_int64_bits_of_float(ba.get(i)));
           for(var j=0;j < 8;j++)writer.write(8,b[j])}
         break;
        case 0:
         for(var i=0;i < ba.data.length;i++)
          {var b=caml_int32_bits_of_float(ba.get(i));writer.write(32,b)}
         break;
        case 10:
         for(var i=0;i < ba.data.length / 2;i++)
          {var j=ba.get(i);
           writer.write(32,caml_int32_bits_of_float(j[1]));
           writer.write(32,caml_int32_bits_of_float(j[2]))}
         break;
        case 11:
         for(var i=0;i < ba.data.length / 2;i++)
          {var
            complex=ba.get(i),
            b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[1]));
           for(var j=0;j < 8;j++)writer.write(8,b[j]);
           var b=caml_int64_to_bytes(caml_int64_bits_of_float(complex[2]));
           for(var j=0;j < 8;j++)writer.write(8,b[j])}
         break
        }
      sz[0] = (4 + ba.dims.length) * 4;
      sz[1] = (4 + ba.dims.length) * 8}
    function caml_ba_get_size_per_element(kind)
     {switch(kind){case 7:case 10:case 11:return 2;default:return 1}}
    function caml_ba_create_buffer(kind,size)
     {var g=joo_global_object,view;
      switch(kind)
       {case 0:view = g.Float32Array;break;
        case 1:view = g.Float64Array;break;
        case 2:view = g.Int8Array;break;
        case 3:view = g.Uint8Array;break;
        case 4:view = g.Int16Array;break;
        case 5:view = g.Uint16Array;break;
        case 6:view = g.Int32Array;break;
        case 7:view = g.Int32Array;break;
        case 8:view = g.Int32Array;break;
        case 9:view = g.Int32Array;break;
        case 10:view = g.Float32Array;break;
        case 11:view = g.Float64Array;break;
        case 12:view = g.Uint8Array;break
        }
      if(! view)caml_invalid_argument("Bigarray.create: unsupported kind");
      var data=new view(size * caml_ba_get_size_per_element(kind));
      return data}
    function caml_int32_float_of_bits(x)
     {var int32a=new (joo_global_object.Int32Array)(1);
      int32a[0] = x;
      var float32a=new (joo_global_object.Float32Array)(int32a.buffer);
      return float32a[0]}
    function caml_int64_float_of_bits(x)
     {var lo=x.lo,mi=x.mi,hi=x.hi,exp=(hi & 0x7fff) >> 4;
      if(exp == 2047)
       return (lo | mi | hi & 0xf) == 0?hi & 0x8000?- Infinity:Infinity:NaN;
      var k=Math.pow(2,- 24),res=(lo * k + mi) * k + (hi & 0xf);
      if(exp > 0)
       {res += 16;res *= Math.pow(2,exp - 1027)}
      else
       res *= Math.pow(2,- 1026);
      if(hi & 0x8000)res = - res;
      return res}
    function caml_ba_get_size(dims)
     {var n_dims=dims.length,size=1;
      for(var i=0;i < n_dims;i++)
       {if(dims[i] < 0)
         caml_invalid_argument("Bigarray.create: negative dimension");
        size = size * dims[i]}
      return size}
    function caml_int64_create_lo_hi(lo,hi)
     {return new
              MlInt64
              (lo & 0xffffff,
               lo >>> 24 & 0xff | (hi & 0xffff) << 8,
               hi >>> 16 & 0xffff)}
    function caml_int64_hi32(v){return v.hi32()}
    function caml_int64_lo32(v){return v.lo32()}
    function Ml_Bigarray(kind,layout,dims,buffer)
     {this.kind = kind;
      this.layout = layout;
      this.dims = dims;
      this.data = buffer}
    Ml_Bigarray.prototype.caml_custom = "_bigarray";
    Ml_Bigarray.prototype.offset
    =
    function(arg)
     {var ofs=0;
      if(typeof arg === "number")arg = [arg];
      if(! (arg instanceof Array))
       caml_invalid_argument("bigarray.js: invalid offset");
      if(this.dims.length != arg.length)
       caml_invalid_argument("Bigarray.get/set: bad number of dimensions");
      if(this.layout == 0)
       for(var i=0;i < this.dims.length;i++)
        {if(arg[i] < 0 || arg[i] >= this.dims[i])caml_array_bound_error();
         ofs = ofs * this.dims[i] + arg[i]}
      else
       for(var i=this.dims.length - 1;i >= 0;i--)
        {if(arg[i] < 1 || arg[i] > this.dims[i])caml_array_bound_error();
         ofs = ofs * this.dims[i] + (arg[i] - 1)}
      return ofs};
    Ml_Bigarray.prototype.get
    =
    function(ofs)
     {switch(this.kind)
       {case 7:
         var l=this.data[ofs * 2 + 0],h=this.data[ofs * 2 + 1];
         return caml_int64_create_lo_hi(l,h);
        case 10:
        case 11:
         var r=this.data[ofs * 2 + 0],i=this.data[ofs * 2 + 1];
         return [254,r,i];
        default:return this.data[ofs]}};
    Ml_Bigarray.prototype.set
    =
    function(ofs,v)
     {switch(this.kind)
       {case 7:
         this.data[ofs * 2 + 0] = caml_int64_lo32(v);
         this.data[ofs * 2 + 1] = caml_int64_hi32(v);
         break;
        case 10:
        case 11:
         this.data[ofs * 2 + 0] = v[1];this.data[ofs * 2 + 1] = v[2];break;
        default:this.data[ofs] = v;break}
      return 0};
    Ml_Bigarray.prototype.fill
    =
    function(v)
     {switch(this.kind)
       {case 7:
         var a=caml_int64_lo32(v),b=caml_int64_hi32(v);
         if(a == b)
          this.data.fill(a);
         else
          for(var i=0;i < this.data.length;i++)this.data[i] = i % 2 == 0?a:b;
         break;
        case 10:
        case 11:
         var im=v[1],re=v[2];
         if(im == re)
          this.data.fill(im);
         else
          for(var i=0;i < this.data.length;i++)
           this.data[i] = i % 2 == 0?im:re;
         break;
        default:this.data.fill(v);break}};
    Ml_Bigarray.prototype.compare
    =
    function(b,total)
     {if(this.layout != b.layout || this.kind != b.kind)
       {var k1=this.kind | this.layout << 8,k2=b.kind | b.layout << 8;
        return k2 - k1}
      if(this.dims.length != b.dims.length)
       return b.dims.length - this.dims.length;
      for(var i=0;i < this.dims.length;i++)
       if(this.dims[i] != b.dims[i])return this.dims[i] < b.dims[i]?- 1:1;
      switch(this.kind)
       {case 0:
        case 1:
        case 10:
        case 11:
         var x,y;
         for(var i=0;i < this.data.length;i++)
          {x = this.data[i];
           y = b.data[i];
           if(x < y)return - 1;
           if(x > y)return 1;
           if(x != y)
            {if(! total)return NaN;if(x == x)return 1;if(y == y)return - 1}}
         break;
        case 7:
         for(var i=0;i < this.data.length;i += 2)
          {if(this.data[i + 1] < b.data[i + 1])return - 1;
           if(this.data[i + 1] > b.data[i + 1])return 1;
           if(this.data[i] >>> 0 < b.data[i] >>> 0)return - 1;
           if(this.data[i] >>> 0 > b.data[i] >>> 0)return 1}
         break;
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 8:
        case 9:
        case 12:
         for(var i=0;i < this.data.length;i++)
          {if(this.data[i] < b.data[i])return - 1;
           if(this.data[i] > b.data[i])return 1}
         break
        }
      return 0};
    function Ml_Bigarray_c_1_1(kind,layout,dims,buffer)
     {this.kind = kind;
      this.layout = layout;
      this.dims = dims;
      this.data = buffer}
    Ml_Bigarray_c_1_1.prototype = new Ml_Bigarray();
    Ml_Bigarray_c_1_1.prototype.offset
    =
    function(arg)
     {if(typeof arg !== "number")
       if(arg instanceof Array && arg.length == 1)
        arg = arg[0];
       else
        caml_invalid_argument("Ml_Bigarray_c_1_1.offset");
      if(arg < 0 || arg >= this.dims[0])caml_array_bound_error();
      return arg};
    Ml_Bigarray_c_1_1.prototype.get = function(ofs){return this.data[ofs]};
    Ml_Bigarray_c_1_1.prototype.set
    =
    function(ofs,v){this.data[ofs] = v;return 0};
    Ml_Bigarray_c_1_1.prototype.fill
    =
    function(v){this.data.fill(v);return 0};
    function caml_ba_create_unsafe(kind,layout,dims,data)
     {var size_per_element=caml_ba_get_size_per_element(kind);
      if(caml_ba_get_size(dims) * size_per_element != data.length)
       caml_invalid_argument("length doesn't match dims");
      if(layout == 0 && dims.length == 1 && size_per_element == 1)
       return new Ml_Bigarray_c_1_1(kind,layout,dims,data);
      return new Ml_Bigarray(kind,layout,dims,data)}
    function caml_ba_deserialize(reader,sz)
     {var num_dims=reader.read32s();
      if(num_dims < 0 || num_dims > 16)
       caml_failwith("input_value: wrong number of bigarray dimensions");
      var tag=reader.read32s(),kind=tag & 0xff,layout=tag >> 8 & 1,dims=[];
      for(var i=0;i < num_dims;i++)dims.push(reader.read32u());
      var
       size=caml_ba_get_size(dims),
       data=caml_ba_create_buffer(kind,size),
       ba=caml_ba_create_unsafe(kind,layout,dims,data);
      switch(kind)
       {case 2:for(var i=0;i < size;i++)data[i] = reader.read8s();break;
        case 3:
        case 12:for(var i=0;i < size;i++)data[i] = reader.read8u();break;
        case 4:for(var i=0;i < size;i++)data[i] = reader.read16s();break;
        case 5:for(var i=0;i < size;i++)data[i] = reader.read16u();break;
        case 6:for(var i=0;i < size;i++)data[i] = reader.read32s();break;
        case 8:
        case 9:
         var sixty=reader.read8u();
         if(sixty)
          caml_failwith
           ("input_value: cannot read bigarray with 64-bit OCaml ints");
         for(var i=0;i < size;i++)data[i] = reader.read32s();
         break;
        case 7:
         var t=new Array(8);
         for(var i=0;i < size;i++)
          {for(var j=0;j < 8;j++)t[j] = reader.read8u();
           var int64=caml_int64_of_bytes(t);
           ba.set(i,int64)}
         break;
        case 1:
         var t=new Array(8);
         for(var i=0;i < size;i++)
          {for(var j=0;j < 8;j++)t[j] = reader.read8u();
           var f=caml_int64_float_of_bits(caml_int64_of_bytes(t));
           ba.set(i,f)}
         break;
        case 0:
         for(var i=0;i < size;i++)
          {var f=caml_int32_float_of_bits(reader.read32s());ba.set(i,f)}
         break;
        case 10:
         for(var i=0;i < size;i++)
          {var
            re=caml_int32_float_of_bits(reader.read32s()),
            im=caml_int32_float_of_bits(reader.read32s());
           ba.set(i,[254,re,im])}
         break;
        case 11:
         var t=new Array(8);
         for(var i=0;i < size;i++)
          {for(var j=0;j < 8;j++)t[j] = reader.read8u();
           var re=caml_int64_float_of_bits(caml_int64_of_bytes(t));
           for(var j=0;j < 8;j++)t[j] = reader.read8u();
           var im=caml_int64_float_of_bits(caml_int64_of_bytes(t));
           ba.set(i,[254,re,im])}
         break
        }
      sz[0] = (4 + num_dims) * 4;
      return caml_ba_create_unsafe(kind,layout,dims,data)}
    function caml_ba_compare(a,b,total){return a.compare(b,total)}
    function caml_hash_mix_int64(h,v)
     {h = caml_hash_mix_int(h,caml_int64_lo32(v));
      h = caml_hash_mix_int(h,caml_int64_hi32(v));
      return h}
    function caml_hash_mix_float(h,v0)
     {return caml_hash_mix_int64(h,caml_int64_bits_of_float(v0))}
    function caml_ba_hash(ba)
     {var num_elts=caml_ba_get_size(ba.dims),h=0;
      switch(ba.kind)
       {case 2:
        case 3:
        case 12:
         if(num_elts > 256)num_elts = 256;
         var w=0,i=0;
         for(i = 0;i + 4 <= ba.data.length;i += 4)
          {w
           =
           ba.data[i + 0]
           |
           ba.data[i + 1]
           <<
           8
           |
           ba.data[i + 2]
           <<
           16
           |
           ba.data[i + 3]
           <<
           24;
           h = caml_hash_mix_int(h,w)}
         w = 0;
         switch(num_elts & 3)
          {case 3:w = ba.data[i + 2] << 16;
           case 2:w |= ba.data[i + 1] << 8;
           case 1:w |= ba.data[i + 0];h = caml_hash_mix_int(h,w)
           }
         break;
        case 4:
        case 5:
         if(num_elts > 128)num_elts = 128;
         var w=0,i=0;
         for(i = 0;i + 2 <= ba.data.length;i += 2)
          {w = ba.data[i + 0] | ba.data[i + 1] << 16;
           h = caml_hash_mix_int(h,w)}
         if((num_elts & 1) != 0)h = caml_hash_mix_int(h,ba.data[i]);
         break;
        case 6:
         if(num_elts > 64)num_elts = 64;
         for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]);
         break;
        case 8:
        case 9:
         if(num_elts > 64)num_elts = 64;
         for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]);
         break;
        case 7:
         if(num_elts > 32)num_elts = 32;
         num_elts *= 2;
         for(var i=0;i < num_elts;i++)h = caml_hash_mix_int(h,ba.data[i]);
         break;
        case 10:num_elts *= 2;
        case 0:
         if(num_elts > 64)num_elts = 64;
         for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]);
         break;
        case 11:num_elts *= 2;
        case 1:
         if(num_elts > 32)num_elts = 32;
         for(var i=0;i < num_elts;i++)h = caml_hash_mix_float(h,ba.data[i]);
         break
        }
      return h}
    function caml_int32_unmarshal(reader,size)
     {size[0] = 4;return reader.read32s()}
    function caml_nativeint_unmarshal(reader,size)
     {switch(reader.read8u())
       {case 1:size[0] = 4;return reader.read32s();
        case 2:caml_failwith("input_value: native integer value too large");
        default:caml_failwith("input_value: ill-formed native integer")}}
    function caml_int64_unmarshal(reader,size)
     {var t=new Array(8);
      for(var j=0;j < 8;j++)t[j] = reader.read8u();
      size[0] = 8;
      return caml_int64_of_bytes(t)}
    function caml_int64_compare(x,y,total){return x.compare(y)}
    function caml_int64_hash(v){return v.lo32() ^ v.hi32()}
    var
     caml_custom_ops=
      {"_j":
       {deserialize:caml_int64_unmarshal,
        serialize:caml_int64_marshal,
        fixed_length:8,
        compare:caml_int64_compare,
        hash:caml_int64_hash},
       "_i":{deserialize:caml_int32_unmarshal,fixed_length:4},
       "_n":{deserialize:caml_nativeint_unmarshal,fixed_length:4},
       "_bigarray":
       {deserialize:caml_ba_deserialize,
        serialize:caml_ba_serialize,
        compare:caml_ba_compare,
        hash:caml_ba_hash}};
    function caml_compare_val_get_custom(a)
     {return caml_custom_ops[a.caml_custom]
             &&
             caml_custom_ops[a.caml_custom].compare}
    function caml_compare_val_number_custom(num,custom,swap,total)
     {var comp=caml_compare_val_get_custom(custom);
      if(comp)
       {var x=swap > 0?comp(custom,num,total):comp(num,custom,total);
        if(total && x != x)return swap;
        if(+ x != + x)return + x;
        if((x | 0) != 0)return x | 0}
      return swap}
    function caml_compare_val_tag(a)
     {if(typeof a === "number")
       return 1000;
      else
       if(caml_is_ml_bytes(a))
        return 252;
       else
        if(caml_is_ml_string(a))
         return 1252;
        else
         if(a instanceof Array && a[0] === a[0] >>> 0 && a[0] <= 255)
          {var tag=a[0] | 0;return tag == 254?0:tag}
         else
          if(a instanceof String)
           return 12520;
          else
           if(typeof a == "string")
            return 12520;
           else
            if(a instanceof Number)
             return 1000;
            else
             if(a && a.caml_custom)
              return 1255;
             else
              if(a && a.compare)
               return 1256;
              else
               if(typeof a == "function")
                return 1247;
               else
                if(typeof a == "symbol")return 1251;
      return 1001}
    function caml_int_compare(a,b)
     {if(a < b)return - 1;if(a == b)return 0;return 1}
    function caml_bytes_compare(s1,s2)
     {s1.t & 6 && caml_convert_string_to_bytes(s1);
      s2.t & 6 && caml_convert_string_to_bytes(s2);
      return s1.c < s2.c?- 1:s1.c > s2.c?1:0}
    function caml_string_compare(s1,s2){return caml_bytes_compare(s1,s2)}
    function caml_compare_val(a,b,total)
     {var stack=[];
      for(;;)
       {if(! (total && a === b))
         {var tag_a=caml_compare_val_tag(a);
          if(tag_a == 250){a = a[1];continue}
          var tag_b=caml_compare_val_tag(b);
          if(tag_b == 250){b = b[1];continue}
          if(tag_a !== tag_b)
           {if(tag_a == 1000)
             {if(tag_b == 1255)
               return caml_compare_val_number_custom(a,b,- 1,total);
              return - 1}
            if(tag_b == 1000)
             {if(tag_a == 1255)
               return caml_compare_val_number_custom(b,a,1,total);
              return 1}
            return tag_a < tag_b?- 1:1}
          switch(tag_a)
           {case 247:caml_invalid_argument("compare: functional value");break;
            case 248:
             var x=caml_int_compare(a[2],b[2]);if(x != 0)return x | 0;break;
            case 249:caml_invalid_argument("compare: functional value");break;
            case 250:
             caml_invalid_argument
              ("equal: got Forward_tag, should not happen");
             break;
            case 251:caml_invalid_argument("equal: abstract value");break;
            case 252:
             if(a !== b){var x=caml_bytes_compare(a,b);if(x != 0)return x | 0}
             break;
            case 253:
             caml_invalid_argument("equal: got Double_tag, should not happen");
             break;
            case 254:
             caml_invalid_argument
              ("equal: got Double_array_tag, should not happen");
             break;
            case 255:
             caml_invalid_argument("equal: got Custom_tag, should not happen");
             break;
            case 1247:
             caml_invalid_argument("compare: functional value");break;
            case 1255:
             var comp=caml_compare_val_get_custom(a);
             if(comp != caml_compare_val_get_custom(b))
              return a.caml_custom < b.caml_custom?- 1:1;
             if(! comp)caml_invalid_argument("compare: abstract value");
             var x=comp(a,b,total);
             if(x != x)return total?- 1:x;
             if(x !== (x | 0))return - 1;
             if(x != 0)return x | 0;
             break;
            case 1256:
             var x=a.compare(b,total);
             if(x != x)return total?- 1:x;
             if(x !== (x | 0))return - 1;
             if(x != 0)return x | 0;
             break;
            case 1000:
             a = + a;
             b = + b;
             if(a < b)return - 1;
             if(a > b)return 1;
             if(a != b)
              {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1}
             break;
            case 1001:
             if(a < b)return - 1;
             if(a > b)return 1;
             if(a != b)
              {if(! total)return NaN;if(a == a)return 1;if(b == b)return - 1}
             break;
            case 1251:if(a !== b){if(! total)return NaN;return 1}break;
            case 1252:
             var a=caml_jsbytes_of_string(a),b=caml_jsbytes_of_string(b);
             if(a !== b){if(a < b)return - 1;if(a > b)return 1}
             break;
            case 12520:
             var a=a.toString(),b=b.toString();
             if(a !== b){if(a < b)return - 1;if(a > b)return 1}
             break;
            case 246:
            case 254:
            default:
             if(a.length != b.length)return a.length < b.length?- 1:1;
             if(a.length > 1)stack.push(a,b,1);
             break}}
        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_greaterthan(x,y){return + (caml_compare_val(x,y,false) > 0)}
    function div_helper(a,b,c)
     {var
       x=a * 65536 + (b >>> 16),
       y=Math.floor(x / c) * 65536,
       z=x % c * 65536,
       w=z + (b & 0x0000FFFF);
      return [y + Math.floor(w / c),w % c]}
    function div_digit_nat(natq,ofsq,natr,ofsr,nat1,ofs1,len,nat2,ofs2)
     {var rem=nat1.data[ofs1 + len - 1] >>> 0;
      for(var i=len - 2;i >= 0;i--)
       {var x=div_helper(rem,nat1.data[ofs1 + i] >>> 0,nat2.data[ofs2] >>> 0);
        natq.data[ofsq + i] = x[0];
        rem = x[1]}
      natr.data[ofsr] = rem;
      return 0}
    function num_leading_zero_bits_in_digit(nat,ofs)
     {var a=nat.data[ofs],b=0;
      if(a & 0xFFFF0000){b += 16;a >>>= 16}
      if(a & 0xFF00){b += 8;a >>>= 8}
      if(a & 0xF0){b += 4;a >>>= 4}
      if(a & 12){b += 2;a >>>= 2}
      if(a & 2){b += 1;a >>>= 1}
      if(a & 1)b += 1;
      return 32 - b}
    function shift_left_nat(nat1,ofs1,len1,nat2,ofs2,nbits)
     {if(nbits == 0){nat2.data[ofs2] = 0;return 0}
      var wrap=0;
      for(var i=0;i < len1;i++)
       {var a=nat1.data[ofs1 + i] >>> 0;
        nat1.data[ofs1 + i] = a << nbits | wrap;
        wrap = a >>> 32 - nbits}
      nat2.data[ofs2] = wrap;
      return 0}
    function MlNat(x)
     {this.data = new (joo_global_object.Int32Array)(x);
      this.length = this.data.length + 2}
    MlNat.prototype.caml_custom = "_nat";
    function create_nat(size)
     {var arr=new MlNat(size);
      for(var i=0;i < size;i++)arr.data[i] = - 1;
      return arr}
    function set_to_zero_nat(nat,ofs,len)
     {for(var i=0;i < len;i++)nat.data[ofs + i] = 0;return 0}
    function incr_nat(nat,ofs,len,carry_in)
     {var carry=carry_in;
      for(var i=0;i < len;i++)
       {var x=(nat.data[ofs + i] >>> 0) + carry;
        nat.data[ofs + i] = x | 0;
        if(x == x >>> 0){carry = 0;break}else carry = 1}
      return carry}
    function add_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in)
     {var carry=carry_in;
      for(var i=0;i < len2;i++)
       {var
         x=
          (nat1.data[ofs1 + i] >>> 0) + (nat2.data[ofs2 + i] >>> 0) + carry;
        nat1.data[ofs1 + i] = x;
        if(x == x >>> 0)carry = 0;else carry = 1}
      return incr_nat(nat1,ofs1 + len2,len1 - len2,carry)}
    function nat_of_array(l){return new MlNat(l)}
    function mult_digit_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3)
     {var carry=0,a=nat3.data[ofs3] >>> 0;
      for(var i=0;i < len2;i++)
       {var
         x1=
          (nat1.data[ofs1 + i] >>> 0)
          +
          (nat2.data[ofs2 + i] >>> 0)
          *
          (a & 0x0000FFFF)
          +
          carry,
         x2=(nat2.data[ofs2 + i] >>> 0) * (a >>> 16);
        carry = Math.floor(x2 / 65536);
        var x3=x1 + x2 % 65536 * 65536;
        nat1.data[ofs1 + i] = x3;
        carry += Math.floor(x3 / 4294967296)}
      return len2 < len1 && carry
              ?add_nat
                (nat1,ofs1 + len2,len1 - len2,nat_of_array([carry]),0,1,0)
              :carry}
    function decr_nat(nat,ofs,len,carry_in)
     {var borrow=carry_in == 1?0:1;
      for(var i=0;i < len;i++)
       {var x=(nat.data[ofs + i] >>> 0) - borrow;
        nat.data[ofs + i] = x;
        if(x >= 0){borrow = 0;break}else borrow = 1}
      return borrow == 1?0:1}
    function sub_nat(nat1,ofs1,len1,nat2,ofs2,len2,carry_in)
     {var borrow=carry_in == 1?0:1;
      for(var i=0;i < len2;i++)
       {var
         x=
          (nat1.data[ofs1 + i] >>> 0) - (nat2.data[ofs2 + i] >>> 0) - borrow;
        nat1.data[ofs1 + i] = x;
        if(x >= 0)borrow = 0;else borrow = 1}
      return decr_nat(nat1,ofs1 + len2,len1 - len2,borrow == 1?0:1)}
    function compare_nat(nat1,ofs1,len1,nat2,ofs2,len2)
     {var a=num_digits_nat(nat1,ofs1,len1),b=num_digits_nat(nat2,ofs2,len2);
      if(a > b)return 1;
      if(a < b)return - 1;
      for(var i=len1 - 1;i >= 0;i--)
       {if(nat1.data[ofs1 + i] >>> 0 > nat2.data[ofs2 + i] >>> 0)return 1;
        if(nat1.data[ofs1 + i] >>> 0 < nat2.data[ofs2 + i] >>> 0)return - 1}
      return 0}
    function div_nat(nat1,ofs1,len1,nat2,ofs2,len2)
     {if(len2 == 1)
       {div_digit_nat(nat1,ofs1 + 1,nat1,ofs1,nat1,ofs1,len1,nat2,ofs2);
        return 0}
      var s=num_leading_zero_bits_in_digit(nat2,ofs2 + len2 - 1);
      shift_left_nat(nat2,ofs2,len2,nat_of_array([0]),0,s);
      shift_left_nat(nat1,ofs1,len1,nat_of_array([0]),0,s);
      var d=(nat2.data[ofs2 + len2 - 1] >>> 0) + 1,a=create_nat(len2 + 1);
      for(var i=len1 - 1;i >= len2;i--)
       {var
         quo=
          d == 4294967296
           ?nat1.data[ofs1 + i] >>> 0
           :div_helper
              (nat1.data[ofs1 + i] >>> 0,nat1.data[ofs1 + i - 1] >>> 0,d)
             [0];
        set_to_zero_nat(a,0,len2 + 1);
        mult_digit_nat(a,0,len2 + 1,nat2,ofs2,len2,nat_of_array([quo]),0);
        sub_nat(nat1,ofs1 + i - len2,len2 + 1,a,0,len2 + 1,1);
        while
         (nat1.data[ofs1 + i]
          !=
          0
          ||
          compare_nat(nat1,ofs1 + i - len2,len2,nat2,ofs2,len2)
          >=
          0)
         {quo = quo + 1;
          sub_nat(nat1,ofs1 + i - len2,len2 + 1,nat2,ofs2,len2,1)}
        nat1.data[ofs1 + i] = quo}
      shift_right_nat(nat1,ofs1,len2,nat_of_array([0]),0,s);
      shift_right_nat(nat2,ofs2,len2,nat_of_array([0]),0,s);
      return 0}
    function caml_ba_blit(src,dst)
     {if(dst.dims.length != src.dims.length)
       caml_invalid_argument("Bigarray.blit: dimension mismatch");
      for(var i=0;i < dst.dims.length;i++)
       if(dst.dims[i] != src.dims[i])
        caml_invalid_argument("Bigarray.blit: dimension mismatch");
      dst.data.set(src.data);
      return 0}
    function is_digit_int(nat,ofs){if(nat.data[ofs] >= 0)return 1;return 0}
    function caml_int64_div(x,y){return x.div(y)}
    function caml_js_html_entities(s)
     {var entity=/^&#?[0-9a-zA-Z]+;$/;
      if(s.match(entity))
       {var str,temp=document.createElement("p");
        temp.innerHTML = s;
        str = temp.textContent || temp.innerText;
        temp = null;
        return str}
      else
       caml_failwith("Invalid entity " + s)}
    function caml_string_unsafe_set(s,i,c)
     {return caml_bytes_unsafe_set(s,i,c)}
    function caml_int64_of_float(x)
     {if(x < 0)x = Math.ceil(x);
      return new
              MlInt64
              (x & 0xffffff,
               Math.floor(x * caml_int64_offset) & 0xffffff,
               Math.floor(x * caml_int64_offset * caml_int64_offset) & 0xffff)}
    function caml_ml_channel_size_64(chanid)
     {var chan=caml_ml_channels[chanid];
      return caml_int64_of_float(chan.file.length())}
    function caml_ba_set_2(ba,i0,i1,v){ba.set(ba.offset([i0,i1]),v);return 0}
    function ml_z_of_int64(i64)
     {var neg=false;
      if(caml_int64_compare(i64,[255,0,0,0]) < 0)
       {neg = true;i64 = caml_int64_neg(i64)}
      var
       x=
        bigInt(i64[1]).add(bigInt(i64[2]).shiftLeft(24)).add
         (bigInt(i64[3]).shiftLeft(48));
      if(neg)x = x.negate();
      return ml_z_normalize(x)}
    var
     caml_argv=
      function()
        {var g=joo_global_object,main="a.out",args=[];
         if(g.process && g.process.argv && g.process.argv.length > 1)
          {var argv=g.process.argv;main = argv[1];args = argv.slice(2)}
         var p=caml_string_of_jsstring(main),args2=[0,p];
         for(var i=0;i < args.length;i++)
          args2.push(caml_string_of_jsstring(args[i]));
         return args2}
       (),
     caml_executable_name=caml_argv[1];
    function caml_js_eval_string(s){return eval(caml_jsstring_of_string(s))}
    function caml_CamlinternalMod_init_mod(loc,shape)
     {function undef_module(_x)
       {caml_raise_with_arg(caml_global_data.Undefined_recursive_module,loc)}
      function loop(shape,struct,idx)
       {if(typeof shape === "number")
         switch(shape)
          {case 0:struct[idx] = {fun:undef_module};break;
           case 1:struct[idx] = [246,undef_module];break;
           default:struct[idx] = []}
        else
         switch(shape[0])
          {case 0:
            struct[idx] = [0];
            for(var i=1;i < shape[1].length;i++)
             loop(shape[1][i],struct[idx],i);
            break;
           default:struct[idx] = shape[1]}}
      var res=[];
      loop(shape,res,0);
      return res[0]}
    function serialize_nat(writer,nat,sz)
     {var len=nat.data.length;
      writer.write(32,len);
      for(var i=0;i < len;i++)writer.write(32,nat.data[i]);
      sz[0] = len * 4;
      sz[1] = len * 8}
    function caml_memprof_set(_control){return 0}
    function ml_z_neg(z1){return ml_z_normalize(bigInt(z1).negate())}
    function caml_sys_exit(code)
     {var g=joo_global_object;
      if(g.quit)g.quit(code);
      if(g.process && g.process.exit)g.process.exit(code);
      caml_invalid_argument("Function 'exit' not implemented")}
    function caml_js_from_array(a){return a.slice(1)}
    function caml_ba_reshape(ba,vind)
     {vind = caml_js_from_array(vind);
      var new_dim=[],num_dims=vind.length;
      if(num_dims < 0 || num_dims > 16)
       caml_invalid_argument("Bigarray.reshape: bad number of dimensions");
      var num_elts=1;
      for(var i=0;i < num_dims;i++)
       {new_dim[i] = vind[i];
        if(new_dim[i] < 0)
         caml_invalid_argument("Bigarray.reshape: negative dimension");
        num_elts = num_elts * new_dim[i]}
      var size=caml_ba_get_size(ba.dims);
      if(num_elts != size)
       caml_invalid_argument("Bigarray.reshape: size mismatch");
      return caml_ba_create_unsafe(ba.kind,ba.layout,new_dim,ba.data)}
    var caml_oo_last_id=0;
    function caml_set_oo_id(b){b[2] = caml_oo_last_id++;return b}
    function caml_gr_fill_rect(x,y,w,h)
     {var s=caml_gr_state_get();
      s.context.fillRect(x,s.height - y,w,- h);
      return 0}
    function caml_bigstring_blit_string_to_ba(str1,pos1,ba2,pos2,len)
     {if(12 != ba2.kind)
       caml_invalid_argument
        ("caml_bigstring_blit_string_to_ba: kind mismatch");
      if(len == 0)return 0;
      var ofs2=ba2.offset(pos2);
      if(pos1 + len > caml_ml_string_length(str1))caml_array_bound_error();
      if(ofs2 + len > ba2.data.length)caml_array_bound_error();
      var slice=caml_array_of_string(str1).slice(pos1,pos1 + len);
      ba2.data.set(slice,ofs2);
      return 0}
    function caml_gr_set_window_title(name)
     {var s=caml_gr_state_get();
      s.title = name;
      var jsname=caml_jsstring_of_string(name);
      if(s.set_title)s.set_title(jsname);
      return 0}
    function caml_get_global_data(){return caml_global_data}
    function caml_int64_shift_right_unsigned(x,s)
     {return x.shift_right_unsigned(s)}
    function caml_ba_uint8_get16(ba,i0)
     {var ofs=ba.offset(i0);
      if(ofs + 1 >= ba.data.length)caml_array_bound_error();
      var b1=ba.get(ofs),b2=ba.get(ofs + 1);
      return b1 | b2 << 8}
    function ml_z_of_int(i){return i | 0}
    function ml_z_of_int32(i32){return ml_z_of_int(i32)}
    function caml_compare(a,b){return caml_compare_val(a,b,true)}
    function caml_fresh_oo_id(){return caml_oo_last_id++}
    function caml_int64_to_float(x){return x.toFloat()}
    function caml_ba_get_1(ba,i0){return ba.get(ba.offset(i0))}
    function caml_bigstring_memcmp(s1,pos1,s2,pos2,len)
     {for(var i=0;i < len;i++)
       {var a=caml_ba_get_1(s1,pos1 + i),b=caml_ba_get_1(s2,pos2 + i);
        if(a < b)return - 1;
        if(a > b)return 1}
      return 0}
    function caml_new_string(s){return caml_string_of_jsbytes(s)}
    function caml_ba_uint8_get32(ba,i0)
     {var ofs=ba.offset(i0);
      if(ofs + 3 >= ba.data.length)caml_array_bound_error();
      var
       b1=ba.get(ofs + 0),
       b2=ba.get(ofs + 1),
       b3=ba.get(ofs + 2),
       b4=ba.get(ofs + 3);
      return b1 << 0 | b2 << 8 | b3 << 16 | b4 << 24}
    function caml_raw_backtrace_length(){return 0}
    function ml_z_shift_right(z1,amt)
     {return ml_z_normalize(bigInt(z1).shiftRight(amt))}
    function caml_obj_block(tag,size)
     {var o=new Array(size + 1);
      o[0] = tag;
      for(var i=1;i <= size;i++)o[i] = 0;
      return o}
    function caml_gr_clear_graph()
     {var s=caml_gr_state_get();
      s.canvas.width = s.width;
      s.canvas.height = s.height;
      return 0}
    function bigstring_to_array_buffer(bs){return bs.data.buffer}
    function lxor_digit_nat(nat1,ofs1,nat2,ofs2)
     {nat1.data[ofs1] ^= nat2.data[ofs2];return 0}
    function caml_final_release(){return 0}
    function caml_js_to_array(a)
     {var len=a.length,b=new Array(len + 1);
      b[0] = 0;
      for(var i=0;i < len;i++)b[i + 1] = a[i];
      return b}
    function ml_z_logor(z1,z2)
     {return ml_z_normalize(bigInt(z1).or(bigInt(z2)))}
    function caml_gr_plot(x,y)
     {var
       s=caml_gr_state_get(),
       im=s.context.createImageData(1,1),
       d=im.data,
       color=s.color;
      d[0] = color >> 16 & 0xff;
      d[1] = color >> 8 & 0xff,d[2] = color >> 0 & 0xff;
      d[3] = 0xFF;
      s.x = x;
      s.y = y;
      s.context.putImageData(im,x,s.height - y);
      return 0}
    function caml_bytes_set64(s,i,i64)
     {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error();
      var a=caml_int64_to_bytes(i64);
      for(var j=0;j < 8;j++)caml_bytes_unsafe_set(s,i + 7 - j,a[j]);
      return 0}
    function caml_bytes_set16(s,i,i16)
     {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error();
      var b2=0xFF & i16 >> 8,b1=0xFF & i16;
      caml_bytes_unsafe_set(s,i + 0,b1);
      caml_bytes_unsafe_set(s,i + 1,b2);
      return 0}
    function caml_string_set16(s,i,i16){return caml_bytes_set16(s,i,i16)}
    function caml_int64_bswap(x)
     {var y=caml_int64_to_bytes(x);
      return caml_int64_of_bytes([y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]])}
    function ml_z_fits_int(z1){return z1 == (z1 | 0)?1:0}
    function ml_z_fits_int32(z1){return ml_z_fits_int(z1)}
    function caml_fill_bytes(s,i,l,c)
     {if(l > 0)
       if(i == 0 && (l >= s.l || s.t == 2 && l >= s.c.length))
        if(c == 0)
         {s.c = "";s.t = 2}
        else
         {s.c = caml_str_repeat(l,String.fromCharCode(c));s.t = l == s.l?0:2}
       else
        {if(s.t != 4)caml_convert_bytes_to_array(s);
         for(l += i;i < l;i++)s.c[i] = c}
      return 0}
    var caml_fill_string=caml_fill_bytes;
    function caml_gc_major(){return 0}
    function ml_z_shift_left(z1,amt)
     {return ml_z_normalize(bigInt(z1).shiftLeft(amt))}
    function caml_lex_array(s)
     {s = caml_jsbytes_of_string(s);
      var l=s.length / 2,a=new Array(l);
      for(var i=0;i < l;i++)
       a[i]
       =
       (s.charCodeAt(2 * i) | s.charCodeAt(2 * i + 1) << 8)
       <<
       16
       >>
       16;
      return a}
    function caml_lex_engine(tbl,start_state,lexbuf)
     {var
       lex_buffer=2,
       lex_buffer_len=3,
       lex_start_pos=5,
       lex_curr_pos=6,
       lex_last_pos=7,
       lex_last_action=8,
       lex_eof_reached=9,
       lex_base=1,
       lex_backtrk=2,
       lex_default=3,
       lex_trans=4,
       lex_check=5;
      if(! tbl.lex_default)
       {tbl.lex_base = caml_lex_array(tbl[lex_base]);
        tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]);
        tbl.lex_check = caml_lex_array(tbl[lex_check]);
        tbl.lex_trans = caml_lex_array(tbl[lex_trans]);
        tbl.lex_default = caml_lex_array(tbl[lex_default])}
      var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]);
      if(state >= 0)
       {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos];
        lexbuf[lex_last_action] = - 1}
      else
       state = - state - 1;
      for(;;)
       {var base=tbl.lex_base[state];
        if(base < 0)return - base - 1;
        var backtrk=tbl.lex_backtrk[state];
        if(backtrk >= 0)
         {lexbuf[lex_last_pos] = lexbuf[lex_curr_pos];
          lexbuf[lex_last_action] = backtrk}
        if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len])
         if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256;
        else
         {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++}
        if(tbl.lex_check[base + c] == state)
         state = tbl.lex_trans[base + c];
        else
         state = tbl.lex_default[state];
        if(state < 0)
         {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos];
          if(lexbuf[lex_last_action] == - 1)
           caml_failwith("lexing: empty token");
          else
           return lexbuf[lex_last_action]}
        else
         if(c == 256)lexbuf[lex_eof_reached] = 0}}
    function caml_sys_file_exists(name)
     {var root=resolve_fs_device(name);return root.device.exists(root.rest)}
    function caml_convert_raw_backtrace_slot()
     {caml_failwith("caml_convert_raw_backtrace_slot")}
    function caml_array_sub(a,i,len)
     {var a2=new Array(len + 1);
      a2[0] = 0;
      for(var i2=1,i1=i + 1;i2 <= len;i2++,i1++)a2[i2] = a[i1];
      return a2}
    function caml_bytes_equal(s1,s2)
     {if(s1 === s2)return 1;
      s1.t & 6 && caml_convert_string_to_bytes(s1);
      s2.t & 6 && caml_convert_string_to_bytes(s2);
      return s1.c == s2.c?1:0}
    function caml_gr_size_x(){var s=caml_gr_state_get();return s.width}
    function Base_int_math_int32_clz(x)
     {var n=32,y;
      y = x >> 16;
      if(y != 0){n = n - 16;x = y}
      y = x >> 8;
      if(y != 0){n = n - 8;x = y}
      y = x >> 4;
      if(y != 0){n = n - 4;x = y}
      y = x >> 2;
      if(y != 0){n = n - 2;x = y}
      y = x >> 1;
      if(y != 0)return n - 2;
      return n - x}
    function caml_sys_const_ostype_cygwin(){return 0}
    function caml_cosh_float(x){return (Math.exp(x) + Math.exp(- x)) / 2}
    var caml_ephe_key_offset=3;
    function caml_weak_check(x,i)
     {return x[caml_ephe_key_offset + i]
              !==
              undefined
              &&
              x[caml_ephe_key_offset + i]
              !==
              0
              ?1
              :0}
    var caml_ephe_check_key=caml_weak_check;
    function caml_hash_mix_final(h)
     {h ^= h >>> 16;
      h = caml_mul(h,0x85ebca6b | 0);
      h ^= h >>> 13;
      h = caml_mul(h,0xc2b2ae35 | 0);
      h ^= h >>> 16;
      return h}
    function caml_gr_text_size(txt)
     {var
       s=caml_gr_state_get(),
       w=s.context.measureText(caml_jsstring_of_string(txt)).width;
      return [0,w,s.text_size]}
    function caml_lex_run_mem(s,i,mem,curr_pos)
     {for(;;)
       {var dst=s.charCodeAt(i);
        i++;
        if(dst == 0xff)return;
        var src=s.charCodeAt(i);
        i++;
        if(src == 0xff)
         mem[dst + 1] = curr_pos;
        else
         mem[dst + 1] = mem[src + 1]}}
    function caml_lex_run_tag(s,i,mem)
     {for(;;)
       {var dst=s.charCodeAt(i);
        i++;
        if(dst == 0xff)return;
        var src=s.charCodeAt(i);
        i++;
        if(src == 0xff)mem[dst + 1] = - 1;else mem[dst + 1] = mem[src + 1]}}
    function caml_new_lex_engine(tbl,start_state,lexbuf)
     {var
       lex_buffer=2,
       lex_buffer_len=3,
       lex_start_pos=5,
       lex_curr_pos=6,
       lex_last_pos=7,
       lex_last_action=8,
       lex_eof_reached=9,
       lex_mem=10,
       lex_base=1,
       lex_backtrk=2,
       lex_default=3,
       lex_trans=4,
       lex_check=5,
       lex_base_code=6,
       lex_backtrk_code=7,
       lex_default_code=8,
       lex_trans_code=9,
       lex_check_code=10,
       lex_code=11;
      if(! tbl.lex_default)
       {tbl.lex_base = caml_lex_array(tbl[lex_base]);
        tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]);
        tbl.lex_check = caml_lex_array(tbl[lex_check]);
        tbl.lex_trans = caml_lex_array(tbl[lex_trans]);
        tbl.lex_default = caml_lex_array(tbl[lex_default])}
      if(! tbl.lex_default_code)
       {tbl.lex_base_code = caml_lex_array(tbl[lex_base_code]);
        tbl.lex_backtrk_code = caml_lex_array(tbl[lex_backtrk_code]);
        tbl.lex_check_code = caml_lex_array(tbl[lex_check_code]);
        tbl.lex_trans_code = caml_lex_array(tbl[lex_trans_code]);
        tbl.lex_default_code = caml_lex_array(tbl[lex_default_code])}
      if(tbl.lex_code == null)
       tbl.lex_code = caml_jsbytes_of_string(tbl[lex_code]);
      var c,state=start_state,buffer=caml_array_of_bytes(lexbuf[lex_buffer]);
      if(state >= 0)
       {lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos];
        lexbuf[lex_last_action] = - 1}
      else
       state = - state - 1;
      for(;;)
       {var base=tbl.lex_base[state];
        if(base < 0)
         {var pc_off=tbl.lex_base_code[state];
          caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]);
          return - base - 1}
        var backtrk=tbl.lex_backtrk[state];
        if(backtrk >= 0)
         {var pc_off=tbl.lex_backtrk_code[state];
          caml_lex_run_tag(tbl.lex_code,pc_off,lexbuf[lex_mem]);
          lexbuf[lex_last_pos] = lexbuf[lex_curr_pos];
          lexbuf[lex_last_action] = backtrk}
        if(lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len])
         if(lexbuf[lex_eof_reached] == 0)return - state - 1;else c = 256;
        else
         {c = buffer[lexbuf[lex_curr_pos]];lexbuf[lex_curr_pos]++}
        var pstate=state;
        if(tbl.lex_check[base + c] == state)
         state = tbl.lex_trans[base + c];
        else
         state = tbl.lex_default[state];
        if(state < 0)
         {lexbuf[lex_curr_pos] = lexbuf[lex_last_pos];
          if(lexbuf[lex_last_action] == - 1)
           caml_failwith("lexing: empty token");
          else
           return lexbuf[lex_last_action]}
        else
         {var base_code=tbl.lex_base_code[pstate],pc_off;
          if(tbl.lex_check_code[base_code + c] == pstate)
           pc_off = tbl.lex_trans_code[base_code + c];
          else
           pc_off = tbl.lex_default_code[pstate];
          if(pc_off > 0)
           caml_lex_run_mem
            (tbl.lex_code,pc_off,lexbuf[lex_mem],lexbuf[lex_curr_pos]);
          if(c == 256)lexbuf[lex_eof_reached] = 0}}}
    function caml_ba_uint8_set64(ba,i0,v)
     {var ofs=ba.offset(i0);
      if(ofs + 7 >= ba.data.length)caml_array_bound_error();
      var v=caml_int64_to_bytes(v);
      for(var i=0;i < 8;i++)ba.set(ofs + i,v[7 - i]);
      return 0}
    function ml_z_popcount(z)
     {z = bigInt(z);
      var zero=bigInt(0),one=bigInt(1);
      if(z.lt(zero))caml_raise_constant(caml_named_value("ml_z_overflow"));
      var i;
      for(i = 0;! z.equals(zero);i++)z = z.and(z.prev());
      if(i != (i | 0))caml_raise_constant(caml_named_value("ml_z_overflow"));
      return i | 0}
    function caml_sys_executable_name(a){return caml_executable_name}
    function caml_lessequal(x,y){return + (caml_compare_val(x,y,false) <= 0)}
    function caml_ml_flush(chanid)
     {var chan=caml_ml_channels[chanid];
      if(! chan.opened)caml_raise_sys_error("Cannot flush a closed channel");
      if(! chan.buffer || chan.buffer == "")return 0;
      if
       (chan.fd
        &&
        caml_global_data.fds[chan.fd]
        &&
        caml_global_data.fds[chan.fd].output)
       {var output=caml_global_data.fds[chan.fd].output;
        switch(output.length)
         {case 2:output(chanid,chan.buffer);break;default:output(chan.buffer)}}
      chan.buffer = "";
      return 0}
    function caml_ml_seek_out_64(chanid,pos)
     {caml_ml_flush(chanid);
      caml_ml_channels[chanid].offset = caml_int64_to_float(pos);
      return 0}
    function compare_nat_real(nat1,nat2)
     {return compare_nat(nat1,0,nat1.data.length,nat2,0,nat2.data.length)}
    function caml_gc_set(_control){return 0}
    function caml_js_get(o,f){return o[f]}
    function caml_hash_mix_bytes_arr(h,s)
     {var len=s.length,i,w;
      for(i = 0;i + 4 <= len;i += 4)
       {w = s[i] | s[i + 1] << 8 | s[i + 2] << 16 | s[i + 3] << 24;
        h = caml_hash_mix_int(h,w)}
      w = 0;
      switch(len & 3)
       {case 3:w = s[i + 2] << 16;
        case 2:w |= s[i + 1] << 8;
        case 1:w |= s[i];h = caml_hash_mix_int(h,w)
        }
      h ^= len;
      return h}
    function caml_hash_mix_bytes(h,v)
     {switch(v.t & 6)
       {default:caml_convert_string_to_bytes(v);case 0:
         h = caml_hash_mix_jsbytes(h,v.c);break;
        case 2:h = caml_hash_mix_bytes_arr(h,v.c)
        }
      return h}
    function caml_hash(count,limit,seed,obj)
     {var queue,rd,wr,sz,num,h,v,i,len;
      sz = limit;
      if(sz < 0 || sz > 256)sz = 256;
      num = count;
      h = seed;
      queue = [obj];
      rd = 0;
      wr = 1;
      while(rd < wr && num > 0)
       {v = queue[rd++];
        if(v && v.caml_custom)
         {if
           (caml_custom_ops[v.caml_custom]
            &&
            caml_custom_ops[v.caml_custom].hash)
           {var hh=caml_custom_ops[v.caml_custom].hash(v);
            h = caml_hash_mix_int(h,hh);
            num--}}
        else
         if(v instanceof Array && v[0] === (v[0] | 0))
          switch(v[0])
           {case 248:h = caml_hash_mix_int(h,v[2]);num--;break;
            case 250:queue[--rd] = v[1];break;
            default:
             var tag=v.length - 1 << 10 | v[0];
             h = caml_hash_mix_int(h,tag);
             for(i = 1,len = v.length;i < len;i++)
              {if(wr >= sz)break;queue[wr++] = v[i]}
             break}
         else
          if(caml_is_ml_bytes(v))
           {h = caml_hash_mix_bytes(h,v);num--}
          else
           if(caml_is_ml_string(v))
            {h = caml_hash_mix_string(h,v);num--}
           else
            if(typeof v === "string")
             {h = caml_hash_mix_jsbytes(h,v);num--}
            else
             if(v === (v | 0))
              {h = caml_hash_mix_int(h,v + v + 1);num--}
             else
              if(v === + v){h = caml_hash_mix_float(h,v);num--}}
      h = caml_hash_mix_final(h);
      return h & 0x3FFFFFFF}
    function Base_hash_string(s){return caml_hash(1,1,0,s)}
    function caml_gc_compaction(){return 0}
    function caml_weak_get(x,i)
     {if(i < 0 || caml_ephe_key_offset + i >= x.length)
       caml_invalid_argument("Weak.get_key");
      return x[caml_ephe_key_offset + i] === undefined
              ?0
              :x[caml_ephe_key_offset + i]}
    var caml_ephe_get_key=caml_weak_get;
    function caml_string_of_array(a)
     {return caml_string_of_jsbytes(caml_subarray_to_jsbytes(a,0,a.length))}
    function caml_to_js_string(s){return caml_jsstring_of_string(s)}
    function jsoo_z_of_js_string_base(base,s)
     {if(base == 0)
       {base = 10;
        var p=0,sign=1;
        if(s[p] == "-"){sign = - 1;p++}else if(s[p] == "+")p++;
        if(s[p] == "0")
         {p++;
          if(s.length == p)
           return 0;
          else
           {var bc=s[p];
            if(bc == "o" || bc == "O")
             base = 8;
            else
             if(bc == "x" || bc == "X")
              base = 16;
             else
              if(bc == "b" || bc == "B")base = 2;
            if(base != 10){s = s.substring(p + 1);if(sign == - 1)s = "-" + s}}}}
      if(s[0] == "+")s = s.substring(1);
      s = s.replace(/^0+/,"");
      if(s == "-" || s == "")s = "0";
      function digit(code)
       {if(code >= 48 && code <= 57)return code - 48;
        if(code >= 97 && code <= 102)return code - 97 + 10;
        if(code >= 65 && code <= 70)return code - 65 + 10}
      var i=0;
      if(s[i] == "-")i++;
      for(;i < s.length;i++)
       {var c=digit(s.charCodeAt(i));
        if(c == undefined || c >= base)
         caml_invalid_argument("Z.of_substring_base: invalid digit")}
      return ml_z_normalize(bigInt(s,base))}
    function ml_z_of_substring_base(base,s,pos,len)
     {if(pos != 0 || len != caml_ml_string_length(s))
       {s = caml_array_of_string(s);
        if(s.length - pos < len)
         caml_invalid_argument
          ("Z.of_substring_base: invalid offset or length");
        s = caml_string_of_array(s.slice(pos,pos + len))}
      return jsoo_z_of_js_string_base(base,caml_to_js_string(s))}
    function caml_bigstring_blit_bytes_to_ba(str1,pos1,ba2,pos2,len)
     {if(12 != ba2.kind)
       caml_invalid_argument
        ("caml_bigstring_blit_string_to_ba: kind mismatch");
      if(len == 0)return 0;
      var ofs2=ba2.offset(pos2);
      if(pos1 + len > caml_ml_bytes_length(str1))caml_array_bound_error();
      if(ofs2 + len > ba2.data.length)caml_array_bound_error();
      var slice=caml_array_of_bytes(str1).slice(pos1,pos1 + len);
      ba2.data.set(slice,ofs2);
      return 0}
    function win_cleanup(){}
    function caml_sys_close(fd){delete caml_global_data.fds[fd];return 0}
    function caml_ml_close_channel(chanid)
     {var chan=caml_ml_channels[chanid];
      caml_ml_flush(chanid);
      chan.opened = false;
      chan.file.close();
      caml_sys_close(chan.fd);
      return 0}
    function caml_exn_with_js_backtrace(exn,force)
     {if(! exn.js_error || force || exn[0] == 248)
       exn.js_error
       =
       new (joo_global_object.Error)("Js exception containing backtrace");
      return exn}
    function Base_int_math_int_pow_stub(base,exponent)
     {var one=1,mul=[one,base,one,one],res=one;
      while(! exponent == 0)
       {mul[1] = mul[1] * mul[3] | 0;
        mul[2] = mul[1] * mul[1] | 0;
        mul[3] = mul[2] * mul[1] | 0;
        res = res * mul[exponent & 3] | 0;
        exponent = exponent >> 2}
      return res}
    function caml_sys_isatty(_chan){return 0}
    function is_digit_zero(nat,ofs){if(nat.data[ofs] == 0)return 1;return 0}
    function unix_inet_addr_of_string(){return 0}
    function caml_js_set(o,f,v){o[f] = v;return 0}
    function ml_z_gcdext_intern(z1,z2)
     {z1 = bigInt(z1);
      z2 = bigInt(z2);
      var
       gcd=bigInt.gcd(z1,z2),
       a=z1,
       b=z2,
       x=bigInt(0),
       lastx=bigInt(1),
       y=bigInt(1),
       lasty=bigInt(1),
       q,
       t,
       r;
      if(z1.equals(bigInt(0)))caml_raise_zero_divide();
      while(! b.equals(bigInt(0)))
       {q = a.divide(b);
        r = a.subtract(q.multiply(b));
        t = x;
        x = lastx.subtract(q.multiply(x));
        lastx = t;
        t = y;
        y = lasty.subtract(q.multiply(y));
        lasty = t;
        a = b;
        b = r}
      return a.lt(bigInt(0))
              ?[0,ml_z_normalize(a.negate()),ml_z_normalize(lastx.negate()),1]
              :[0,ml_z_normalize(a),ml_z_normalize(lastx),1]}
    function ml_z_testbit(z,pos)
     {z = bigInt(z);return z.shiftRight(pos).and(bigInt(1)).toJSNumber() | 0}
    function caml_array_get(array,index)
     {if(index < 0 || index >= array.length - 1)caml_array_bound_error();
      return array[index + 1]}
    function caml_spacetime_only_works_for_native_code()
     {caml_failwith("Spacetime profiling only works for native code")}
    function caml_int64_sub(x,y){return x.sub(y)}
    function caml_ml_seek_in_64(chanid,pos)
     {var chan=caml_ml_channels[chanid];
      if(chan.refill != null)caml_raise_sys_error("Illegal seek");
      chan.offset = caml_int64_to_float(pos);
      return 0}
    function caml_int64_shift_left(x,s){return x.shift_left(s)}
    function caml_notequal(x,y){return + (caml_compare_val(x,y,false) != 0)}
    function ml_z_abs(z1){return ml_z_normalize(bigInt(z1).abs())}
    function caml_sys_const_int_size(){return 32}
    function caml_js_wrap_meth_callback(f)
     {return function()
       {var len=arguments.length,args=new Array(len + 1);
        args[0] = this;
        for(var i=0;i < len;i++)args[i + 1] = arguments[i];
        return caml_call_gen(f,args)}}
    function caml_is_js(){return 1}
    var Base_internalhash_fold_float=caml_hash_mix_float;
    function caml_ba_dim(ba,i)
     {if(i < 0 || i >= ba.dims.length)caml_invalid_argument("Bigarray.dim");
      return ba.dims[i]}
    function caml_ba_dim_1(ba){return caml_ba_dim(ba,0)}
    function ml_z_sqrt(z1)
     {var z=bigInt(z1),zero=bigInt(0);
      if(z.lt(zero))
       caml_invalid_argument("Z.sqrt: square root of a negative number");
      return ml_z_root(z,2)}
    function unix_localtime(t)
     {var
       d=new Date(t * 1000),
       d_num=d.getTime(),
       januaryfirst=new Date(d.getFullYear(),0,1).getTime(),
       doy=Math.floor((d_num - januaryfirst) / 86400000),
       jan=new Date(d.getFullYear(),0,1),
       jul=new Date(d.getFullYear(),6,1),
       stdTimezoneOffset=
        Math.max(jan.getTimezoneOffset(),jul.getTimezoneOffset());
      return [0,
              d.getSeconds(),
              d.getMinutes(),
              d.getHours(),
              d.getDate(),
              d.getMonth(),
              d.getFullYear() - 1900,
              d.getDay(),
              doy,
              d.getTimezoneOffset() < stdTimezoneOffset | 0]}
    function caml_js_meth_call(o,f,args)
     {return o[caml_jsstring_of_string(f)].apply(o,caml_js_from_array(args))}
    function caml_weak_create(n)
     {if(n < 0)caml_invalid_argument("Weak.create");
      var x=[251,"caml_ephe_list_head"];
      x.length = caml_ephe_key_offset + n;
      return x}
    var caml_ephe_create=caml_weak_create;
    function caml_js_to_byte_string(s){return caml_string_of_jsbytes(s)}
    function ml_z_probab_prime(z,i){return bigInt(z).isProbablePrime(i)?1:0}
    function unix_mktime(tm)
     {var
       d=new Date(tm[6] + 1900,tm[5],tm[4],tm[3],tm[2],tm[1]).getTime(),
       t=Math.floor(d / 1000),
       tm2=unix_localtime(t);
      return [0,t,tm2]}
    function caml_trampoline(res)
     {var c=1;
      while(res && res.joo_tramp)
       {res = res.joo_tramp.apply(null,res.joo_args);c++}
      return res}
    function caml_bytes_get64(s,i)
     {if(i >>> 0 >= s.l - 7)caml_bytes_bound_error();
      var a=new Array(8);
      for(var j=0;j < 8;j++)a[7 - j] = caml_bytes_unsafe_get(s,i + j);
      return caml_int64_of_bytes(a)}
    function ml_z_rem(z1,z2)
     {z2 = bigInt(z2);
      if(z2.equals(bigInt(0)))caml_raise_zero_divide();
      return ml_z_normalize(bigInt(z1).mod(z2))}
    function caml_weak_set(x,i,v)
     {if(i < 0 || caml_ephe_key_offset + i >= x.length)
       caml_invalid_argument("Weak.set");
      x[caml_ephe_key_offset + i] = v;
      return 0}
    function caml_sys_remove(name)
     {var root=resolve_fs_device(name),ok=root.device.unlink(root.rest);
      if(ok == 0)caml_raise_no_such_file(name);
      return 0}
    function caml_string_bound_error()
     {caml_invalid_argument("index out of bounds")}
    function caml_string_get32(s,i)
     {if(i >>> 0 >= caml_ml_string_length(s) - 3)caml_string_bound_error();
      var
       b1=caml_string_unsafe_get(s,i),
       b2=caml_string_unsafe_get(s,i + 1),
       b3=caml_string_unsafe_get(s,i + 2),
       b4=caml_string_unsafe_get(s,i + 3);
      return b4 << 24 | b3 << 16 | b2 << 8 | b1}
    function caml_hypot_float(x,y)
     {var
       x=Math.abs(x),
       y=Math.abs(y),
       a=Math.max(x,y),
       b=Math.min(x,y) / (a?a:1);
      return a * Math.sqrt(1 + b * b)}
    function caml_js_call(f,o,args)
     {return f.apply(o,caml_js_from_array(args))}
    function caml_sys_const_max_wosize(){return 0x7FFFFFFF / 4 | 0}
    function caml_ephe_unset_key(x,i){return caml_weak_set(x,i,0)}
    function Base_am_testing(x){return 0}
    function ml_z_to_int(z1)
     {if(z1 == (z1 | 0))return z1 | 0;
      caml_raise_constant(caml_named_value("ml_z_overflow"))}
    function caml_bytes_lessthan(s1,s2)
     {s1.t & 6 && caml_convert_string_to_bytes(s1);
      s2.t & 6 && caml_convert_string_to_bytes(s2);
      return s1.c < s2.c?1:0}
    function caml_gr_fill_poly(ar)
     {var s=caml_gr_state_get();
      s.context.beginPath();
      s.context.moveTo(ar[1][1],s.height - ar[1][2]);
      for(var i=2;i < ar.length;i++)
       s.context.lineTo(ar[i][1],s.height - ar[i][2]);
      s.context.lineTo(ar[1][1],s.height - ar[1][2]);
      s.context.fill();
      return 0}
    function caml_gc_quick_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
    function caml_raise_end_of_file()
     {caml_raise_constant(caml_global_data.End_of_file)}
    function caml_ml_input_int(chanid)
     {var chan=caml_ml_channels[chanid],file=chan.file;
      while(chan.offset + 3 >= file.length())
       {var l=caml_ml_refill_input(chan);if(l == 0)caml_raise_end_of_file()}
      var
       o=chan.offset,
       r=
        file.read_one(o)
        <<
        24
        |
        file.read_one(o + 1)
        <<
        16
        |
        file.read_one(o + 2)
        <<
        8
        |
        file.read_one(o + 3);
      chan.offset += 4;
      return r}
    function caml_gr_display_mode()
     {caml_failwith("caml_gr_display_mode not Implemented")}
    function nth_digit_nat(nat,ofs){return nat.data[ofs]}
    function caml_array_blit(a1,i1,a2,i2,len)
     {if(i2 <= i1)
       for(var j=1;j <= len;j++)a2[i2 + j] = a1[i1 + j];
      else
       for(var j=len;j >= 1;j--)a2[i2 + j] = a1[i1 + j];
      return 0}
    function caml_float_of_string(s)
     {var res;
      s = caml_jsbytes_of_string(s);
      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;
      var m=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)p([+-]?[0-9]+)/i.exec(s);
      if(m)
       {var
         m3=m[3].replace(/0+$/,""),
         mantissa=parseInt(m[1] + m[2] + m3,16),
         exponent=(m[4] | 0) - 4 * m3.length;
        res = mantissa * Math.pow(2,exponent);
        return res}
      if(/^\+?inf(inity)?$/i.test(s))return Infinity;
      if(/^-inf(inity)?$/i.test(s))return - Infinity;
      caml_failwith("float_of_string")}
    function caml_sys_getcwd()
     {return caml_string_of_jsbytes(caml_current_dir)}
    function caml_sys_const_big_endian(){return 0}
    function caml_list_to_js_array(l)
     {var a=[];for(;l !== 0;l = l[2])a.push(l[1]);return a}
    var
     caml_legacy_custom_code=false,
     caml_output_val=
      function()
        {function Writer(){this.chunk = []}
         Writer.prototype
         =
         {chunk_idx:20,
          block_len:0,
          obj_counter:0,
          size_32:0,
          size_64:0,
          write:
          function(size,value)
           {for(var i=size - 8;i >= 0;i -= 8)
             this.chunk[this.chunk_idx++] = value >> i & 0xFF},
          write_at:
          function(pos,size,value)
           {var pos=pos;
            for(var i=size - 8;i >= 0;i -= 8)
             this.chunk[pos++] = value >> i & 0xFF},
          write_code:
          function(size,code,value)
           {this.chunk[this.chunk_idx++] = code;
            for(var i=size - 8;i >= 0;i -= 8)
             this.chunk[this.chunk_idx++] = value >> i & 0xFF},
          write_shared:
          function(offset)
           {if(offset < 1 << 8)
             this.write_code(8,0x04,offset);
            else
             if(offset < 1 << 16)
              this.write_code(16,0x05,offset);
             else
              this.write_code(32,0x06,offset)},
          pos:function(){return this.chunk_idx},
          finalize:
          function()
           {this.block_len = this.chunk_idx - 20;
            this.chunk_idx = 0;
            this.write(32,0x8495A6BE);
            this.write(32,this.block_len);
            this.write(32,this.obj_counter);
            this.write(32,this.size_32);
            this.write(32,this.size_64);
            return this.chunk}};
         return function(v,flags)
          {flags = caml_list_to_js_array(flags);
           var
            no_sharing=flags.indexOf(0) !== - 1,
            closures=flags.indexOf(1) !== - 1;
           if(closures)
            joo_global_object.console.warn
             ("in caml_output_val: flag Marshal.Closures is not supported.");
           var
            writer=new Writer(),
            stack=[],
            intern_obj_table=no_sharing?null:new MlObjectTable();
           function memo(v)
            {if(no_sharing)return false;
             var existing_offset=intern_obj_table.recall(v);
             if(existing_offset)
              {writer.write_shared(existing_offset);return true}
             else
              {intern_obj_table.store(v);return false}}
           function extern_rec(v)
            {if(v.caml_custom)
              {if(memo(v))return;
               var
                name=v.caml_custom,
                ops=caml_custom_ops[name],
                sz_32_64=[0,0];
               if(! ops.serialize)
                caml_invalid_argument("output_value: abstract value (Custom)");
               if(caml_legacy_custom_code)
                {writer.write(8,0x12);
                 for(var i=0;i < name.length;i++)
                  writer.write(8,name.charCodeAt(i));
                 writer.write(8,0);
                 ops.serialize(writer,v,sz_32_64)}
               else
                if(ops.fixed_length == undefined)
                 {writer.write(8,0x18);
                  for(var i=0;i < name.length;i++)
                   writer.write(8,name.charCodeAt(i));
                  writer.write(8,0);
                  var header_pos=writer.pos();
                  for(var i=0;i < 12;i++)writer.write(8,0);
                  ops.serialize(writer,v,sz_32_64);
                  writer.write_at(header_pos,32,sz_32_64[0]);
                  writer.write_at(header_pos + 4,32,0);
                  writer.write_at(header_pos + 8,32,sz_32_64[1])}
                else
                 {writer.write(8,0x19);
                  for(var i=0;i < name.length;i++)
                   writer.write(8,name.charCodeAt(i));
                  writer.write(8,0);
                  var old_pos=writer.pos();
                  ops.serialize(writer,v,sz_32_64);
                  if(ops.fixed_length != writer.pos() - old_pos)
                   caml_failwith
                    ("output_value: incorrect fixed sizes specified by " + name)}
               writer.size_32 += 2 + (sz_32_64[0] + 3 >> 2);
               writer.size_64 += 2 + (sz_32_64[1] + 7 >> 3)}
             else
              if(v instanceof Array && v[0] === (v[0] | 0))
               {if(v[0] == 251)
                 caml_failwith("output_value: abstract value (Abstract)");
                if(v.length > 1 && memo(v))return;
                if(v[0] < 16 && v.length - 1 < 8)
                 writer.write(8,0x80 + v[0] + (v.length - 1 << 4));
                else
                 writer.write_code(32,0x08,v.length - 1 << 10 | v[0]);
                writer.size_32 += v.length;
                writer.size_64 += v.length;
                if(v.length > 1)stack.push(v,1)}
              else
               if(caml_is_ml_bytes(v))
                {if(! caml_is_ml_bytes(caml_string_of_jsbytes("")))
                  caml_failwith
                   ("output_value: [Bytes.t] cannot safely be marshaled with [--enable use-js-string]");
                 if(memo(v))return;
                 var len=caml_ml_bytes_length(v);
                 if(len < 0x20)
                  writer.write(8,0x20 + len);
                 else
                  if(len < 0x100)
                   writer.write_code(8,0x09,len);
                  else
                   writer.write_code(32,0x0A,len);
                 for(var i=0;i < len;i++)
                  writer.write(8,caml_bytes_unsafe_get(v,i));
                 writer.size_32 += 1 + ((len + 4) / 4 | 0);
                 writer.size_64 += 1 + ((len + 8) / 8 | 0)}
               else
                if(caml_is_ml_string(v))
                 {var len=caml_ml_string_length(v);
                  if(len < 0x20)
                   writer.write(8,0x20 + len);
                  else
                   if(len < 0x100)
                    writer.write_code(8,0x09,len);
                   else
                    writer.write_code(32,0x0A,len);
                  for(var i=0;i < len;i++)
                   writer.write(8,caml_string_unsafe_get(v,i));
                  writer.size_32 += 1 + ((len + 4) / 4 | 0);
                  writer.size_64 += 1 + ((len + 8) / 8 | 0)}
                else
                 if(v != (v | 0))
                  {var type_of_v=typeof v;
                   caml_failwith
                    ("output_value: abstract value (" + type_of_v + ")")}
                 else
                  if(v >= 0 && v < 0x40)
                   writer.write(8,0X40 + v);
                  else
                   if(v >= - (1 << 7) && v < 1 << 7)
                    writer.write_code(8,0x00,v);
                   else
                    if(v >= - (1 << 15) && v < 1 << 15)
                     writer.write_code(16,0x01,v);
                    else
                     writer.write_code(32,0x02,v)}
           extern_rec(v);
           while(stack.length > 0)
            {var i=stack.pop(),v=stack.pop();
             if(i + 1 < v.length)stack.push(v,i + 1);
             extern_rec(v[i])}
           if(intern_obj_table)
            writer.obj_counter = intern_obj_table.objs.length;
           writer.finalize();
           return writer.chunk}}
       ();
    function caml_output_value_to_string(v,flags)
     {return caml_string_of_array(caml_output_val(v,flags))}
    function caml_raise_not_a_dir(name)
     {name = caml_jsbytes_of_string(name);
      caml_raise_sys_error(name + ": Not a directory")}
    function caml_sys_system_command(cmd)
     {var cmd=caml_jsstring_of_string(cmd);
      if
       (typeof require
        !=
        "undefined"
        &&
        require("child_process")
        &&
        require("child_process").execSync)
       try
        {require("child_process").execSync(cmd,{stdio:"inherit"});return 0}
       catch(e){return 1}
      else
       return 127}
    function unix_isatty(fileDescriptor)
     {if(fs_node_supported())
       {var tty=require("tty");return tty.isatty(fileDescriptor)}
      else
       return false}
    function caml_js_error_of_exception(exn)
     {if(exn.js_error)return exn.js_error;return null}
    function deserialize_nat(reader,sz)
     {var len=reader.read32s(),nat=new MlNat(len);
      for(var i=0;i < len;i++)nat.data[i] = reader.read32s();
      sz[0] = len * 4;
      return nat}
    function initialize_nat()
     {caml_custom_ops["_nat"]
      =
      {deserialize:deserialize_nat,serialize:serialize_nat,hash:caml_hash_nat}}
    function ml_z_succ(z1){return ml_z_normalize(bigInt(z1).next())}
    function caml_gr_open_subwindow(a,b,c,d)
     {caml_failwith("caml_gr_open_subwindow not Implemented")}
    function js_print_stdout(s)
     {var s=caml_utf16_of_utf8(s),g=joo_global_object;
      if(g.process && g.process.stdout && g.process.stdout.write)
       g.process.stdout.write(s);
      else
       {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1);
        var v=g.console;
        v && v.log && v.log(s)}}
    function caml_copysign_float(x,y)
     {if(y == 0)y = 1 / y;x = Math.abs(x);return y < 0?- x:x}
    function caml_gr_set_text_size(size)
     {var s=caml_gr_state_get();
      s.text_size = size;
      s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font);
      return 0}
    var
     caml_md5_bytes=
      function()
        {function add(x,y){return x + y | 0}
         function xx(q,a,b,x,s,t)
          {a = add(add(a,q),add(x,t));return add(a << s | a >>> 32 - s,b)}
         function ff(a,b,c,d,x,s,t){return xx(b & c | ~ b & d,a,b,x,s,t)}
         function gg(a,b,c,d,x,s,t){return xx(b & d | c & ~ d,a,b,x,s,t)}
         function hh(a,b,c,d,x,s,t){return xx(b ^ c ^ d,a,b,x,s,t)}
         function ii(a,b,c,d,x,s,t){return xx(c ^ (b | ~ d),a,b,x,s,t)}
         function md5(buffer,length)
          {var i=length;
           buffer[i >> 2] |= 0x80 << 8 * (i & 3);
           for(i = (i & ~ 0x3) + 8;(i & 0x3F) < 60;i += 4)
            buffer[(i >> 2) - 1] = 0;
           buffer[(i >> 2) - 1] = length << 3;
           buffer[i >> 2] = length >> 29 & 0x1FFFFFFF;
           var w=[0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476];
           for(i = 0;i < buffer.length;i += 16)
            {var a=w[0],b=w[1],c=w[2],d=w[3];
             a = ff(a,b,c,d,buffer[i + 0],7,0xD76AA478);
             d = ff(d,a,b,c,buffer[i + 1],12,0xE8C7B756);
             c = ff(c,d,a,b,buffer[i + 2],17,0x242070DB);
             b = ff(b,c,d,a,buffer[i + 3],22,0xC1BDCEEE);
             a = ff(a,b,c,d,buffer[i + 4],7,0xF57C0FAF);
             d = ff(d,a,b,c,buffer[i + 5],12,0x4787C62A);
             c = ff(c,d,a,b,buffer[i + 6],17,0xA8304613);
             b = ff(b,c,d,a,buffer[i + 7],22,0xFD469501);
             a = ff(a,b,c,d,buffer[i + 8],7,0x698098D8);
             d = ff(d,a,b,c,buffer[i + 9],12,0x8B44F7AF);
             c = ff(c,d,a,b,buffer[i + 10],17,0xFFFF5BB1);
             b = ff(b,c,d,a,buffer[i + 11],22,0x895CD7BE);
             a = ff(a,b,c,d,buffer[i + 12],7,0x6B901122);
             d = ff(d,a,b,c,buffer[i + 13],12,0xFD987193);
             c = ff(c,d,a,b,buffer[i + 14],17,0xA679438E);
             b = ff(b,c,d,a,buffer[i + 15],22,0x49B40821);
             a = gg(a,b,c,d,buffer[i + 1],5,0xF61E2562);
             d = gg(d,a,b,c,buffer[i + 6],9,0xC040B340);
             c = gg(c,d,a,b,buffer[i + 11],14,0x265E5A51);
             b = gg(b,c,d,a,buffer[i + 0],20,0xE9B6C7AA);
             a = gg(a,b,c,d,buffer[i + 5],5,0xD62F105D);
             d = gg(d,a,b,c,buffer[i + 10],9,0x02441453);
             c = gg(c,d,a,b,buffer[i + 15],14,0xD8A1E681);
             b = gg(b,c,d,a,buffer[i + 4],20,0xE7D3FBC8);
             a = gg(a,b,c,d,buffer[i + 9],5,0x21E1CDE6);
             d = gg(d,a,b,c,buffer[i + 14],9,0xC33707D6);
             c = gg(c,d,a,b,buffer[i + 3],14,0xF4D50D87);
             b = gg(b,c,d,a,buffer[i + 8],20,0x455A14ED);
             a = gg(a,b,c,d,buffer[i + 13],5,0xA9E3E905);
             d = gg(d,a,b,c,buffer[i + 2],9,0xFCEFA3F8);
             c = gg(c,d,a,b,buffer[i + 7],14,0x676F02D9);
             b = gg(b,c,d,a,buffer[i + 12],20,0x8D2A4C8A);
             a = hh(a,b,c,d,buffer[i + 5],4,0xFFFA3942);
             d = hh(d,a,b,c,buffer[i + 8],11,0x8771F681);
             c = hh(c,d,a,b,buffer[i + 11],16,0x6D9D6122);
             b = hh(b,c,d,a,buffer[i + 14],23,0xFDE5380C);
             a = hh(a,b,c,d,buffer[i + 1],4,0xA4BEEA44);
             d = hh(d,a,b,c,buffer[i + 4],11,0x4BDECFA9);
             c = hh(c,d,a,b,buffer[i + 7],16,0xF6BB4B60);
             b = hh(b,c,d,a,buffer[i + 10],23,0xBEBFBC70);
             a = hh(a,b,c,d,buffer[i + 13],4,0x289B7EC6);
             d = hh(d,a,b,c,buffer[i + 0],11,0xEAA127FA);
             c = hh(c,d,a,b,buffer[i + 3],16,0xD4EF3085);
             b = hh(b,c,d,a,buffer[i + 6],23,0x04881D05);
             a = hh(a,b,c,d,buffer[i + 9],4,0xD9D4D039);
             d = hh(d,a,b,c,buffer[i + 12],11,0xE6DB99E5);
             c = hh(c,d,a,b,buffer[i + 15],16,0x1FA27CF8);
             b = hh(b,c,d,a,buffer[i + 2],23,0xC4AC5665);
             a = ii(a,b,c,d,buffer[i + 0],6,0xF4292244);
             d = ii(d,a,b,c,buffer[i + 7],10,0x432AFF97);
             c = ii(c,d,a,b,buffer[i + 14],15,0xAB9423A7);
             b = ii(b,c,d,a,buffer[i + 5],21,0xFC93A039);
             a = ii(a,b,c,d,buffer[i + 12],6,0x655B59C3);
             d = ii(d,a,b,c,buffer[i + 3],10,0x8F0CCC92);
             c = ii(c,d,a,b,buffer[i + 10],15,0xFFEFF47D);
             b = ii(b,c,d,a,buffer[i + 1],21,0x85845DD1);
             a = ii(a,b,c,d,buffer[i + 8],6,0x6FA87E4F);
             d = ii(d,a,b,c,buffer[i + 15],10,0xFE2CE6E0);
             c = ii(c,d,a,b,buffer[i + 6],15,0xA3014314);
             b = ii(b,c,d,a,buffer[i + 13],21,0x4E0811A1);
             a = ii(a,b,c,d,buffer[i + 4],6,0xF7537E82);
             d = ii(d,a,b,c,buffer[i + 11],10,0xBD3AF235);
             c = ii(c,d,a,b,buffer[i + 2],15,0x2AD7D2BB);
             b = ii(b,c,d,a,buffer[i + 9],21,0xEB86D391);
             w[0] = add(a,w[0]);
             w[1] = add(b,w[1]);
             w[2] = add(c,w[2]);
             w[3] = add(d,w[3])}
           var t=new Array(16);
           for(var i=0;i < 4;i++)
            for(var j=0;j < 4;j++)t[i * 4 + j] = w[i] >> 8 * j & 0xFF;
           return t}
         return function(s,ofs,len)
          {var buf=[];
           switch(s.t & 6)
            {default:caml_convert_string_to_bytes(s);case 0:
              var b=s.c;
              for(var i=0;i < len;i += 4)
               {var j=i + ofs;
                buf[i >> 2]
                =
                b.charCodeAt(j)
                |
                b.charCodeAt(j + 1)
                <<
                8
                |
                b.charCodeAt(j + 2)
                <<
                16
                |
                b.charCodeAt(j + 3)
                <<
                24}
              for(;i < len;i++)
               buf[i >> 2] |= b.charCodeAt(i + ofs) << 8 * (i & 3);
              break;
             case 4:
              var a=s.c;
              for(var i=0;i < len;i += 4)
               {var j=i + ofs;
                buf[i >> 2]
                =
                a[j]
                |
                a[j + 1]
                <<
                8
                |
                a[j + 2]
                <<
                16
                |
                a[j + 3]
                <<
                24}
              for(;i < len;i++)buf[i >> 2] |= a[i + ofs] << 8 * (i & 3)
             }
           return caml_string_of_array(md5(buf,len))}}
       ();
    function caml_ba_set_generic(ba,i,v)
     {ba.set(ba.offset(caml_js_from_array(i)),v);return 0}
    function caml_ephe_set_key(x,i,v){return caml_weak_set(x,i,[0,v])}
    function caml_bytes_lessequal(s1,s2)
     {s1.t & 6 && caml_convert_string_to_bytes(s1);
      s2.t & 6 && caml_convert_string_to_bytes(s2);
      return s1.c <= s2.c?1:0}
    function caml_string_lessequal(s1,s2){return caml_bytes_lessequal(s1,s2)}
    function caml_string_greaterequal(s1,s2)
     {return caml_string_lessequal(s2,s1)}
    function caml_int64_add(x,y){return x.add(y)}
    function caml_nextafter_float(x,y)
     {if(isNaN(x) || isNaN(y))return NaN;
      if(x == y)return y;
      if(x == 0)return y < 0?- Math.pow(2,- 1074):Math.pow(2,- 1074);
      var bits=caml_int64_bits_of_float(x),one=caml_int64_of_int32(1);
      if(x < y == x > 0)
       bits = caml_int64_add(bits,one);
      else
       bits = caml_int64_sub(bits,one);
      return caml_int64_float_of_bits(bits)}
    function caml_gr_size_y(){var s=caml_gr_state_get();return s.height}
    function caml_ml_pos_in(chanid){return caml_ml_channels[chanid].offset}
    function caml_int64_and(x,y){return x.and(y)}
    function caml_int64_mul(x,y){return x.mul(y)}
    function Base_int_math_int64_pow_stub(base,exponent)
     {var one=[255,1,0,0],mul=[one,base,one,one],res=one;
      while(! caml_int64_is_zero(exponent))
       {mul[1] = caml_int64_mul(mul[1],mul[3]);
        mul[2] = caml_int64_mul(mul[1],mul[1]);
        mul[3] = caml_int64_mul(mul[2],mul[1]);
        res = caml_int64_mul(res,mul[exponent[1] & 3]);
        exponent = caml_int64_shift_right_unsigned(exponent,2)}
      return res}
    function caml_sys_const_word_size(){return 32}
    function caml_std_output(chanid,s)
     {var
       chan=caml_ml_channels[chanid],
       str=caml_string_of_jsbytes(s),
       slen=caml_ml_string_length(str);
      chan.file.write(chan.offset,str,0,slen);
      chan.offset += slen;
      return 0}
    function js_print_stderr(s)
     {var s=caml_utf16_of_utf8(s),g=joo_global_object;
      if(g.process && g.process.stdout && g.process.stdout.write)
       g.process.stderr.write(s);
      else
       {if(s.charCodeAt(s.length - 1) == 10)s = s.substr(0,s.length - 1);
        var v=g.console;
        v && v.error && v.error(s)}}
    function caml_sys_open_internal(idx,output,file,flags)
     {if(caml_global_data.fds === undefined)
       caml_global_data.fds = new Array();
      flags = flags?flags:{};
      var info={};
      info.file = file;
      info.offset = flags.append?file.length():0;
      info.flags = flags;
      info.output = output;
      caml_global_data.fds[idx] = info;
      if(! caml_global_data.fd_last_idx || idx > caml_global_data.fd_last_idx)
       caml_global_data.fd_last_idx = idx;
      return idx}
    function caml_sys_open(name,flags,_perms)
     {var f={};
      while(flags)
       {switch(flags[1])
         {case 0:f.rdonly = 1;break;
          case 1:f.wronly = 1;break;
          case 2:f.append = 1;break;
          case 3:f.create = 1;break;
          case 4:f.truncate = 1;break;
          case 5:f.excl = 1;break;
          case 6:f.binary = 1;break;
          case 7:f.text = 1;break;
          case 8:f.nonblock = 1;break
          }
        flags = flags[2]}
      if(f.rdonly && f.wronly)
       caml_raise_sys_error
        (caml_jsbytes_of_string(name)
         +
         " : flags Open_rdonly and Open_wronly are not compatible");
      if(f.text && f.binary)
       caml_raise_sys_error
        (caml_jsbytes_of_string(name)
         +
         " : flags Open_text and Open_binary are not compatible");
      var
       root=resolve_fs_device(name),
       file=root.device.open(root.rest,f),
       idx=caml_global_data.fd_last_idx?caml_global_data.fd_last_idx:0;
      return caml_sys_open_internal(idx + 1,caml_std_output,file,f)}
    caml_sys_open_internal
     (0,caml_std_output,new MlFakeFile(caml_create_bytes(0)));
    caml_sys_open_internal
     (1,js_print_stdout,new MlFakeFile(caml_create_bytes(0)));
    caml_sys_open_internal
     (2,js_print_stderr,new MlFakeFile(caml_create_bytes(0)));
    function ml_z_gcd(z1,z2)
     {return ml_z_normalize(bigInt.gcd(bigInt(z1),bigInt(z2)).abs())}
    function MlStringReader(s,i)
     {this.s = caml_jsbytes_of_string(s);this.i = i}
    MlStringReader.prototype
    =
    {read8u:function(){return this.s.charCodeAt(this.i++)},
     read8s:function(){return this.s.charCodeAt(this.i++) << 24 >> 24},
     read16u:
     function()
      {var s=this.s,i=this.i;
       this.i = i + 2;
       return s.charCodeAt(i) << 8 | s.charCodeAt(i + 1)},
     read16s:
     function()
      {var s=this.s,i=this.i;
       this.i = i + 2;
       return s.charCodeAt(i) << 24 >> 16 | s.charCodeAt(i + 1)},
     read32u:
     function()
      {var s=this.s,i=this.i;
       this.i = i + 4;
       return (s.charCodeAt(i)
               <<
               24
               |
               s.charCodeAt(i + 1)
               <<
               16
               |
               s.charCodeAt(i + 2)
               <<
               8
               |
               s.charCodeAt(i + 3))
              >>>
              0},
     read32s:
     function()
      {var s=this.s,i=this.i;
       this.i = i + 4;
       return s.charCodeAt(i)
              <<
              24
              |
              s.charCodeAt(i + 1)
              <<
              16
              |
              s.charCodeAt(i + 2)
              <<
              8
              |
              s.charCodeAt(i + 3)},
     readstr:
     function(len)
      {var i=this.i;
       this.i = i + len;
       return caml_string_of_jsbytes(this.s.substring(i,i + len))}};
    function caml_float_of_bytes(a)
     {return caml_int64_float_of_bits(caml_int64_of_bytes(a))}
    function caml_input_value_from_reader(reader,ofs)
     {var
       _magic=reader.read32u(),
       _block_len=reader.read32u(),
       num_objects=reader.read32u(),
       _size_32=reader.read32u(),
       _size_64=reader.read32u(),
       stack=[],
       intern_obj_table=num_objects > 0?[]:null,
       obj_counter=0;
      function intern_rec()
       {var code=reader.read8u();
        if(code >= 0x40)
         if(code >= 0x80)
          {var tag=code & 0xF,size=code >> 4 & 0x7,v=[tag];
           if(size == 0)return v;
           if(intern_obj_table)intern_obj_table[obj_counter++] = v;
           stack.push(v,size);
           return v}
         else
          return code & 0x3F;
        else
         if(code >= 0x20)
          {var len=code & 0x1F,v=reader.readstr(len);
           if(intern_obj_table)intern_obj_table[obj_counter++] = v;
           return v}
         else
          switch(code)
           {case 0x00:return reader.read8s();
            case 0x01:return reader.read16s();
            case 0x02:return reader.read32s();
            case 0x03:caml_failwith("input_value: integer too large");break;
            case 0x04:
             var offset=reader.read8u();
             return intern_obj_table[obj_counter - offset];
            case 0x05:
             var offset=reader.read16u();
             return intern_obj_table[obj_counter - offset];
            case 0x06:
             var offset=reader.read32u();
             return intern_obj_table[obj_counter - offset];
            case 0x08:
             var
              header=reader.read32u(),
              tag=header & 0xFF,
              size=header >> 10,
              v=[tag];
             if(size == 0)return v;
             if(intern_obj_table)intern_obj_table[obj_counter++] = v;
             stack.push(v,size);
             return v;
            case 0x13:
             caml_failwith("input_value: data block too large");break;
            case 0x09:
             var len=reader.read8u(),v=reader.readstr(len);
             if(intern_obj_table)intern_obj_table[obj_counter++] = v;
             return v;
            case 0x0A:
             var len=reader.read32u(),v=reader.readstr(len);
             if(intern_obj_table)intern_obj_table[obj_counter++] = v;
             return v;
            case 0x0C:
             var t=new Array(8);
             for(var i=0;i < 8;i++)t[7 - i] = reader.read8u();
             var v=caml_float_of_bytes(t);
             if(intern_obj_table)intern_obj_table[obj_counter++] = v;
             return v;
            case 0x0B:
             var t=new Array(8);
             for(var i=0;i < 8;i++)t[i] = reader.read8u();
             var v=caml_float_of_bytes(t);
             if(intern_obj_table)intern_obj_table[obj_counter++] = v;
             return v;
            case 0x0E:
             var len=reader.read8u(),v=new Array(len + 1);
             v[0] = 254;
             var t=new Array(8);
             if(intern_obj_table)intern_obj_table[obj_counter++] = v;
             for(var i=1;i <= len;i++)
              {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u();
               v[i] = caml_float_of_bytes(t)}
             return v;
            case 0x0D:
             var len=reader.read8u(),v=new Array(len + 1);
             v[0] = 254;
             var t=new Array(8);
             if(intern_obj_table)intern_obj_table[obj_counter++] = v;
             for(var i=1;i <= len;i++)
              {for(var j=0;j < 8;j++)t[j] = reader.read8u();
               v[i] = caml_float_of_bytes(t)}
             return v;
            case 0x07:
             var len=reader.read32u(),v=new Array(len + 1);
             v[0] = 254;
             if(intern_obj_table)intern_obj_table[obj_counter++] = v;
             var t=new Array(8);
             for(var i=1;i <= len;i++)
              {for(var j=0;j < 8;j++)t[7 - j] = reader.read8u();
               v[i] = caml_float_of_bytes(t)}
             return v;
            case 0x0F:
             var len=reader.read32u(),v=new Array(len + 1);
             v[0] = 254;
             var t=new Array(8);
             for(var i=1;i <= len;i++)
              {for(var j=0;j < 8;j++)t[j] = reader.read8u();
               v[i] = caml_float_of_bytes(t)}
             return v;
            case 0x10:
            case 0x11:caml_failwith("input_value: code pointer");break;
            case 0x12:
            case 0x18:
            case 0x19:
             var c,s="";
             while((c = reader.read8u()) != 0)s += String.fromCharCode(c);
             var ops=caml_custom_ops[s],expected_size;
             if(! ops)
              caml_failwith("input_value: unknown custom block identifier");
             switch(code)
              {case 0x12:break;
               case 0x19:
                if(! ops.fixed_length)
                 caml_failwith
                  ("input_value: expected a fixed-size custom block");
                expected_size = ops.fixed_length;
                break;
               case 0x18:
                expected_size = reader.read32u();
                reader.read32s();
                reader.read32s();
                break
               }
             var old_pos=reader.i,size=[0],v=ops.deserialize(reader,size);
             if(expected_size != undefined)
              if(expected_size != size[0])
               caml_failwith
                ("input_value: incorrect length of serialized custom block");
             if(intern_obj_table)intern_obj_table[obj_counter++] = v;
             return v;
            default:caml_failwith("input_value: ill-formed message")}}
      var res=intern_rec();
      while(stack.length > 0)
       {var size=stack.pop(),v=stack.pop(),d=v.length;
        if(d < size)stack.push(v,size);
        v[d] = intern_rec()}
      if(typeof ofs != "number")ofs[0] = reader.i;
      return res}
    function caml_string_of_bytes(s){return s}
    function caml_input_value_from_bytes(s,ofs)
     {var
       reader=
        new
         MlStringReader
         (caml_string_of_bytes(s),typeof ofs == "number"?ofs:ofs[0]);
      return caml_input_value_from_reader(reader,ofs)}
    function ml_z_hamdist(z1,z2)
     {if(bigInt(z1).isNegative() != bigInt(z2).isNegative())
       caml_raise_constant(caml_named_value("ml_z_overflow"));
      if
       ((z1 != (z1 | 0) || z2 != (z2 | 0))
        &&
        (bigInt(z1).isNegative() || bigInt(z2).isNegative()))
       caml_invalid_argument("Z.hamdist: negative arguments");
      return ml_z_popcount(bigInt(z1).xor(bigInt(z2)))}
    function ml_z_mul(z1,z2)
     {return ml_z_normalize(bigInt(z1).multiply(bigInt(z2)))}
    function caml_string_get(s,i)
     {if(i >>> 0 >= caml_ml_string_length(s))caml_string_bound_error();
      return caml_string_unsafe_get(s,i)}
    var
     re_match=
      function()
        {var
          re_word_letters=
           [0x00,
            0x00,
            0x00,
            0x00,
            0x00,
            0x00,
            0xFF,
            0x03,
            0xFE,
            0xFF,
            0xFF,
            0x87,
            0xFE,
            0xFF,
            0xFF,
            0x07,
            0x00,
            0x00,
            0x00,
            0x00,
            0x00,
            0x00,
            0x00,
            0x00,
            0xFF,
            0xFF,
            0x7F,
            0xFF,
            0xFF,
            0xFF,
            0x7F,
            0xFF],
          opcodes=
           {CHAR:0,
            CHARNORM:1,
            STRING:2,
            STRINGNORM:3,
            CHARCLASS:4,
            BOL:5,
            EOL:6,
            WORDBOUNDARY:7,
            BEGGROUP:8,
            ENDGROUP:9,
            REFGROUP:10,
            ACCEPT:11,
            SIMPLEOPT:12,
            SIMPLESTAR:13,
            SIMPLEPLUS:14,
            GOTO:15,
            PUSHBACK:16,
            SETMARK:17,
            CHECKPROGRESS:18};
         function is_word_letter(c)
          {return re_word_letters[c >> 3] >> (c & 7) & 1}
         function in_bitset(s,i)
          {return caml_string_get(s,i >> 3) >> (i & 7) & 1}
         function re_match_impl(re,s,pos,partial)
          {var
            prog=caml_js_from_array(re[1]),
            cpool=caml_js_from_array(re[2]),
            normtable=caml_jsbytes_of_string(re[3]),
            numgroups=re[4] | 0,
            numregisters=re[5] | 0,
            startchars=re[6] | 0,
            s=caml_array_of_string(s),
            pc=0,
            quit=false,
            stack=[],
            groups=new Array(numgroups),
            re_register=new Array(numregisters);
           for(var i=0;i < groups.length;i++)groups[i] = {start:- 1,end:- 1};
           groups[0].start = pos;
           function backtrack()
            {while(stack.length)
              {var item=stack.pop();
               if(item.undo)
                item.undo.obj[item.undo.prop] = item.undo.value;
               else
                if(item.pos){pc = item.pos.pc;pos = item.pos.txt;return}}
             quit = true}
           function push(item){stack.push(item)}
           function accept()
            {groups[0].end = pos;
             var result=new Array(1 + groups.length * 2);
             result[0] = 0;
             for(var i=0;i < groups.length;i++)
              {var g=groups[i];
               if(g.start < 0 || g.end < 0)g.start = g.end = - 1;
               result[2 * i + 1] = g.start;
               result[2 * i + 1 + 1] = g.end}
             return result}
           function prefix_match()
            {if(partial)return accept();else backtrack()}
           while(! quit)
            {var
              op=prog[pc] & 0xff,
              sarg=prog[pc] >> 8,
              uarg=sarg & 0xff,
              c=s[pos],
              group;
             pc++;
             switch(op)
              {case opcodes.CHAR:
                if(pos === s.length){prefix_match();break}
                if(c === uarg)pos++;else backtrack();
                break;
               case opcodes.CHARNORM:
                if(pos === s.length){prefix_match();break}
                if(normtable.charCodeAt(c) === uarg)pos++;else backtrack();
                break;
               case opcodes.STRING:
                for
                 (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0;
                  i
                  <
                  arg.length;
                  i++)
                 {if(pos === s.length){prefix_match();break}
                  if(c === arg.charCodeAt(i))
                   c = s[++pos];
                  else
                   {backtrack();break}}
                break;
               case opcodes.STRINGNORM:
                for
                 (var arg=caml_jsbytes_of_string(cpool[uarg]),i=0;
                  i
                  <
                  arg.length;
                  i++)
                 {if(pos === s.length){prefix_match();break}
                  if(normtable.charCodeAt(c) === arg.charCodeAt(i))
                   c = s[++pos];
                  else
                   {backtrack();break}}
                break;
               case opcodes.CHARCLASS:
                if(pos === s.length){prefix_match();break}
                if(in_bitset(cpool[uarg],c))pos++;else backtrack();
                break;
               case opcodes.BOL:
                if(pos > 0 && s[pos - 1] != 10)backtrack();break;
               case opcodes.EOL:
                if(pos < s.length && s[pos] != 10)backtrack();break;
               case opcodes.WORDBOUNDARY:
                if(pos == 0)
                 {if(pos === s.length){prefix_match();break}
                  if(is_word_letter(s[0]))break;
                  backtrack()}
                else
                 if(pos === s.length)
                  {if(is_word_letter(s[pos - 1]))break;backtrack()}
                 else
                  {if(is_word_letter(s[pos - 1]) != is_word_letter(s[pos]))
                    break;
                   backtrack()}
                break;
               case opcodes.BEGGROUP:
                group = groups[uarg];
                push({undo:{obj:group,prop:"start",value:group.start}});
                group.start = pos;
                break;
               case opcodes.ENDGROUP:
                group = groups[uarg];
                push({undo:{obj:group,prop:"end",value:group.end}});
                group.end = pos;
                break;
               case opcodes.REFGROUP:
                group = groups[uarg];
                if(group.start < 0 || group.end < 0){backtrack();break}
                for(var i=group.start;i < group.end;i++)
                 {if(pos === s.length){prefix_match();break}
                  if(s[i] != s[pos]){backtrack();break}
                  pos++}
                break;
               case opcodes.SIMPLEOPT:if(in_bitset(cpool[uarg],c))pos++;break;
               case opcodes.SIMPLESTAR:
                while(in_bitset(cpool[uarg],c))c = s[++pos];break;
               case opcodes.SIMPLEPLUS:
                if(pos === s.length){prefix_match();break}
                if(in_bitset(cpool[uarg],c))
                 do c = s[++pos];while(in_bitset(cpool[uarg],c));
                else
                 backtrack();
                break;
               case opcodes.ACCEPT:return accept();
               case opcodes.GOTO:pc = pc + sarg;break;
               case opcodes.PUSHBACK:push({pos:{pc:pc + sarg,txt:pos}});break;
               case opcodes.SETMARK:
                push
                 ({undo:{obj:re_register,prop:uarg,value:re_register[uarg]}});
                re_register[uarg] = pos;
                break;
               case opcodes.CHECKPROGRESS:
                if(re_register[uarg] === pos)backtrack();break;
               default:throw new Error("Invalid bytecode")}}
           return 0}
         return re_match_impl}
       ();
    function re_search_backward(re,s,pos)
     {if(pos < 0 || pos > caml_ml_string_length(s))
       caml_invalid_argument("Str.search_backward");
      while(pos >= 0){var res=re_match(re,s,pos,0);if(res)return res;pos--}
      return [0]}
    function ml_z_logand(z1,z2)
     {return ml_z_normalize(bigInt(z1).and(bigInt(z2)))}
    function caml_js_from_string(s){return caml_jsstring_of_string(s)}
    function caml_ba_sub(ba,ofs,len)
     {var changed_dim,mul=1;
      if(ba.layout == 0)
       {for(var i=1;i < ba.dims.length;i++)mul = mul * ba.dims[i];
        changed_dim = 0}
      else
       {for(var i=0;i < ba.dims.length - 1;i++)mul = mul * ba.dims[i];
        changed_dim = ba.dims.length - 1;
        ofs = ofs - 1}
      if(ofs < 0 || len < 0 || ofs + len > ba.dims[changed_dim])
       caml_invalid_argument("Bigarray.sub: bad sub-array");
      var new_dims=[];
      for(var i=0;i < ba.dims.length;i++)new_dims[i] = ba.dims[i];
      new_dims[changed_dim] = len;
      mul *= caml_ba_get_size_per_element(ba.kind);
      var new_data=ba.data.subarray(ofs * mul,(ofs + len) * mul);
      return caml_ba_create_unsafe(ba.kind,ba.layout,new_dims,new_data)}
    function caml_gc_full_major(){return 0}
    function caml_bytes_set32(s,i,i32)
     {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error();
      var
       b4=0xFF & i32 >> 24,
       b3=0xFF & i32 >> 16,
       b2=0xFF & i32 >> 8,
       b1=0xFF & i32;
      caml_bytes_unsafe_set(s,i + 0,b1);
      caml_bytes_unsafe_set(s,i + 1,b2);
      caml_bytes_unsafe_set(s,i + 2,b3);
      caml_bytes_unsafe_set(s,i + 3,b4);
      return 0}
    function caml_gr_sigio_signal(){return 0}
    function caml_ba_uint8_set32(ba,i0,v)
     {var ofs=ba.offset(i0);
      if(ofs + 3 >= ba.data.length)caml_array_bound_error();
      ba.set(ofs + 0,v & 0xff);
      ba.set(ofs + 1,v >>> 8 & 0xff);
      ba.set(ofs + 2,v >>> 16 & 0xff);
      ba.set(ofs + 3,v >>> 24 & 0xff);
      return 0}
    function ml_z_div_rem(z1,z2){return [0,ml_z_div(z1,z2),ml_z_rem(z1,z2)]}
    function caml_sys_const_ostype_unix(){return 1}
    function caml_signbit_float(x){if(x == 0)x = 1 / x;return x < 0?1:0}
    function caml_gr_current_x(){var s=caml_gr_state_get();return s.x}
    function caml_gr_set_line_width(w)
     {var s=caml_gr_state_get();
      s.line_width = w;
      s.context.lineWidth = w;
      return 0}
    function caml_gr_set_font(f)
     {var s=caml_gr_state_get();
      s.font = f;
      s.context.font = s.text_size + "px " + caml_jsstring_of_string(s.font);
      return 0}
    function caml_gr_set_color(color)
     {var s=caml_gr_state_get();
      function convert(number)
       {var str="" + number.toString(16);
        while(str.length < 2)str = "0" + str;
        return str}
      var r=color >> 16 & 0xff,g=color >> 8 & 0xff,b=color >> 0 & 0xff;
      s.color = color;
      var c_str="#" + convert(r) + convert(g) + convert(b);
      s.context.fillStyle = c_str;
      s.context.strokeStyle = c_str;
      return 0}
    function caml_gr_moveto(x,y)
     {var s=caml_gr_state_get();s.x = x;s.y = y;return 0}
    function caml_gr_resize_window(w,h)
     {var s=caml_gr_state_get();
      s.width = w;
      s.height = h;
      s.canvas.width = w;
      s.canvas.height = h;
      return 0}
    function caml_gr_state_init()
     {caml_gr_moveto(caml_gr_state.x,caml_gr_state.y);
      caml_gr_resize_window(caml_gr_state.width,caml_gr_state.height);
      caml_gr_set_line_width(caml_gr_state.line_width);
      caml_gr_set_text_size(caml_gr_state.text_size);
      caml_gr_set_font(caml_gr_state.font);
      caml_gr_set_color(caml_gr_state.color);
      caml_gr_set_window_title(caml_gr_state.title);
      caml_gr_state.context.textBaseline = "bottom"}
    function caml_ba_kind_of_typed_array(ta)
     {var g=joo_global_object,kind;
      if(ta instanceof g.Float32Array)
       kind = 0;
      else
       if(ta instanceof g.Float64Array)
        kind = 1;
       else
        if(ta instanceof g.Int8Array)
         kind = 2;
        else
         if(ta instanceof g.Uint8Array)
          kind = 3;
         else
          if(ta instanceof g.Int16Array)
           kind = 4;
          else
           if(ta instanceof g.Uint16Array)
            kind = 5;
           else
            if(ta instanceof g.Int32Array)
             kind = 6;
            else
             if(ta instanceof g.Uint32Array)
              kind = 6;
             else
              caml_invalid_argument
               ("caml_ba_kind_of_typed_array: unsupported kind");
      return kind}
    function caml_ba_from_typed_array(ta)
     {var kind=caml_ba_kind_of_typed_array(ta);
      return caml_ba_create_unsafe(kind,0,[ta.length],ta)}
    function caml_ml_seek_out(chanid,pos)
     {caml_ml_flush(chanid);caml_ml_channels[chanid].offset = pos;return 0}
    function caml_js_typeof(o){return typeof o}
    function caml_restore_raw_backtrace(exn,bt){return 0}
    function caml_gr_lineto(x,y)
     {var s=caml_gr_state_get();
      s.context.beginPath();
      s.context.moveTo(s.x,s.height - s.y);
      s.context.lineTo(x,s.height - y);
      s.context.stroke();
      s.x = x;
      s.y = y;
      return 0}
    function caml_js_wrap_meth_callback_unsafe(f)
     {return function()
       {var len=arguments.length,args=new Array(len + 1);
        args[0] = this;
        for(var i=0;i < len;i++)args[i + 1] = arguments[i];
        return f.apply(null,args)}}
    function caml_ba_dim_3(ba){return caml_ba_dim(ba,2)}
    var caml_ephe_data_offset=2;
    function caml_ephe_check_data(x)
     {return x[caml_ephe_data_offset] === undefined?0:1}
    function caml_bytes_get16(s,i)
     {if(i >>> 0 >= s.l - 1)caml_bytes_bound_error();
      var b1=caml_bytes_unsafe_get(s,i),b2=caml_bytes_unsafe_get(s,i + 1);
      return b2 << 8 | b1}
    function caml_obj_make_forward(b,v){b[0] = 250;b[1] = v;return 0}
    function caml_js_from_bool(x){return ! ! x}
    function caml_ml_set_channel_name(){return 0}
    function caml_gr_close_graph()
     {var s=caml_gr_state_get();
      s.canvas.width = 0;
      s.canvas.height = 0;
      return 0}
    var Base_internalhash_fold_int=caml_hash_mix_int;
    function caml_create_string(len)
     {if(len < 0)caml_invalid_argument("String.create");
      return new MlBytes(len?2:9,"",len)}
    function Base_int_math_nativeint_clz(x){return Base_int_math_int32_clz(x)}
    function caml_md5_string(s,ofs,len)
     {return caml_md5_bytes(caml_bytes_of_string(s),ofs,len)}
    function caml_md5_chan(chanid,len)
     {var chan=caml_ml_channels[chanid],chan_len=chan.file.length();
      if(len < 0)len = chan_len - chan.offset;
      if(chan.offset + len > chan_len)caml_raise_end_of_file();
      var buf=caml_create_bytes(len);
      chan.file.read(chan.offset,buf,0,len);
      return caml_md5_string(caml_string_of_bytes(buf),0,len)}
    function caml_obj_dup(x)
     {var l=x.length,a=new Array(l);
      for(var i=0;i < l;i++)a[i] = x[i];
      return a}
    function caml_weak_get_copy(x,i)
     {if(i < 0 || caml_ephe_key_offset + i >= x.length)
       caml_invalid_argument("Weak.get_copy");
      var y=caml_weak_get(x,i);
      if(y === 0)return y;
      var z=y[1];
      if(z instanceof Array)return [0,caml_obj_dup(z)];
      return y}
    function caml_ml_output_bytes(chanid,buffer,offset,len)
     {var chan=caml_ml_channels[chanid];
      if(! chan.opened)
       caml_raise_sys_error("Cannot output to a closed channel");
      var bytes;
      if(offset == 0 && caml_ml_bytes_length(buffer) == len)
       bytes = buffer;
      else
       {bytes = caml_create_bytes(len);
        caml_blit_bytes(buffer,offset,bytes,0,len)}
      var
       string=caml_string_of_bytes(bytes),
       jsstring=caml_jsbytes_of_string(string),
       id=jsstring.lastIndexOf("\n");
      if(id < 0)
       chan.buffer += jsstring;
      else
       {chan.buffer += jsstring.substr(0,id + 1);
        caml_ml_flush(chanid);
        chan.buffer += jsstring.substr(id + 1)}
      return 0}
    function caml_ml_output(chanid,buffer,offset,len)
     {return caml_ml_output_bytes
              (chanid,caml_bytes_of_string(buffer),offset,len)}
    function caml_ephe_get_data(x)
     {return x[caml_ephe_data_offset] === undefined
              ?0
              :[0,x[caml_ephe_data_offset]]}
    function caml_trampoline_return(f,args)
     {return {joo_tramp:f,joo_args:args}}
    function Base_int_math_int64_clz(x)
     {var n=64,y;
      y = caml_int64_shift_right_unsigned(x,32);
      if(! caml_int64_is_zero(y)){n = n - 32;x = y}
      y = caml_int64_shift_right_unsigned(x,16);
      if(! caml_int64_is_zero(y)){n = n - 16;x = y}
      y = caml_int64_shift_right_unsigned(x,8);
      if(! caml_int64_is_zero(y)){n = n - 8;x = y}
      y = caml_int64_shift_right_unsigned(x,4);
      if(! caml_int64_is_zero(y)){n = n - 4;x = y}
      y = caml_int64_shift_right_unsigned(x,2);
      if(! caml_int64_is_zero(y)){n = n - 2;x = y}
      y = caml_int64_shift_right_unsigned(x,1);
      if(! caml_int64_is_zero(y))return n - 2;
      return n - caml_int64_to_int32(x)}
    function caml_array_append(a1,a2)
     {var l1=a1.length,l2=a2.length,l=l1 + l2 - 1,a=new Array(l);
      a[0] = 0;
      var i=1,j=1;
      for(;i < l1;i++)a[i] = a1[i];
      for(;i < l;i++,j++)a[i] = a2[j];
      return a}
    function caml_ml_set_channel_refill(chanid,f)
     {caml_ml_channels[chanid].refill = f;return 0}
    function ml_z_nextprime(z1)
     {z1 = bigInt(z1);
      var one=bigInt(1),two=bigInt(2);
      if(z1.lt(one) || z1.equals(one))return 2;
      if(z1.and(one).equals(one))z1 = z1.add(two);else z1 = z1.add(one);
      while(true)
       if(z1.isProbablePrime(25))
        return ml_z_normalize(z1);
       else
        z1 = z1.add(two)}
    function caml_js_expr(s)
     {js_print_stderr("caml_js_expr: fallback to runtime evaluation\n");
      return eval(caml_jsstring_of_string(s))}
    function caml_js_to_string(s){return caml_string_of_jsstring(s)}
    function caml_ojs_iterate_properties(o,f)
     {var name;
      for(name in o)if(o.hasOwnProperty(name))f(caml_js_to_string(name))}
    function caml_ml_runtime_warnings_enabled(_unit)
     {return caml_runtime_warnings}
    function ml_z_sub(z1,z2)
     {return ml_z_normalize(bigInt(z1).subtract(bigInt(z2)))}
    function ml_z_fdiv(z1,z2)
     {var z1_pos=ml_z_sign(z1),z2_pos=ml_z_sign(z2);
      if(z1_pos * z2_pos < 0)
       if(! bigInt(z1).mod(bigInt(z2)).equals(bigInt(0)))
        return ml_z_sub(ml_z_div(z1,z2),bigInt(1));
      return ml_z_div(z1,z2)}
    function ml_z_to_bits(z1)
     {z1 = bigInt(z1).abs();
      var res="";
      while(! z1.equals(bigInt(0)))
       {res += String.fromCharCode(z1.mod(bigInt(256)));
        z1 = z1.divide(bigInt(256))}
      while(res.length % 4 != 0)res += String.fromCharCode(0);
      return caml_new_string(res)}
    function caml_output_value_to_bytes(v,flags)
     {return caml_bytes_of_array(caml_output_val(v,flags))}
    function caml_hash_univ_param(count,limit,obj)
     {var hash_accu=0;
      function hash_aux(obj)
       {limit--;
        if(count < 0 || limit < 0)return;
        if(obj instanceof Array && obj[0] === (obj[0] | 0))
         switch(obj[0])
          {case 248:count--;hash_accu = hash_accu * 65599 + obj[2] | 0;break;
           case 250:limit++;hash_aux(obj);break;
           default:
            count--;
            hash_accu = hash_accu * 19 + obj[0] | 0;
            for(var i=obj.length - 1;i > 0;i--)hash_aux(obj[i])}
        else
         if(caml_is_ml_bytes(obj))
          {count--;
           switch(obj.t & 6)
            {default:caml_convert_string_to_bytes(obj);case 0:
              for(var b=obj.c,l=caml_ml_bytes_length(obj),i=0;i < l;i++)
               hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0;
              break;
             case 2:
              for(var a=obj.c,l=caml_ml_bytes_length(obj),i=0;i < l;i++)
               hash_accu = hash_accu * 19 + a[i] | 0
             }}
         else
          if(caml_is_ml_string(obj))
           {var jsbytes=caml_jsbytes_of_string(obj);
            for(var b=jsbytes,l=jsbytes.length,i=0;i < l;i++)
             hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0}
          else
           if(typeof obj === "string")
            for(var b=obj,l=obj.length,i=0;i < l;i++)
             hash_accu = hash_accu * 19 + b.charCodeAt(i) | 0;
           else
            if(obj === (obj | 0))
             {count--;hash_accu = hash_accu * 65599 + obj | 0}
            else
             if(obj === + obj)
              {count--;
               var p=caml_int64_to_bytes(caml_int64_bits_of_float(obj));
               for(var i=7;i >= 0;i--)hash_accu = hash_accu * 19 + p[i] | 0}
             else
              if(obj && obj.caml_custom)
               if
                (caml_custom_ops[obj.caml_custom]
                 &&
                 caml_custom_ops[obj.caml_custom].hash)
                {var h=caml_custom_ops[obj.caml_custom].hash(obj) | 0;
                 hash_accu = hash_accu * 65599 + h | 0}}
      hash_aux(obj);
      return hash_accu & 0x3FFFFFFF}
    function caml_string_equal(s1,s2){return caml_bytes_equal(s1,s2)}
    function ml_z_divexact(z1,z2){return ml_z_div(z1,z2)}
    function caml_output_value_to_buffer(s,ofs,len,v,flags)
     {var t=caml_output_val(v,flags);
      if(t.length > len)caml_failwith("Marshal.to_buffer: buffer overflow");
      caml_blit_bytes(t,0,s,ofs,t.length);
      return 0}
    function re_replacement_text(repl,groups,orig)
     {var
       repl=caml_jsbytes_of_string(repl),
       len=repl.length,
       orig=caml_jsbytes_of_string(orig),
       res="",
       n=0,
       cur,
       start,
       end,
       c;
      while(n < len)
       {cur = repl.charAt(n++);
        if(cur != "\\")
         res += cur;
        else
         {if(n == len)
           caml_failwith("Str.replace: illegal backslash sequence");
          cur = repl.charAt(n++);
          switch(cur)
           {case "\\":res += cur;break;
            case "0":
            case "1":
            case "2":
            case "3":
            case "4":
            case "5":
            case "6":
            case "7":
            case "8":
            case "9":
             c = + cur;
             if(c * 2 >= groups.length - 1)
              caml_failwith("Str.replace: reference to unmatched group");
             start = caml_array_get(groups,c * 2);
             end = caml_array_get(groups,c * 2 + 1);
             if(start == - 1)
              caml_failwith("Str.replace: reference to unmatched group");
             res += orig.slice(start,end);
             break;
            default:res += "\\" + cur}}}
      return caml_string_of_jsbytes(res)}
    function caml_pure_js_expr(s)
     {js_print_stderr("caml_pure_js_expr: fallback to runtime evaluation\n");
      return eval(caml_jsstring_of_string(s))}
    function blit_nat(nat1,ofs1,nat2,ofs2,len)
     {for(var i=0;i < len;i++)nat1.data[ofs1 + i] = nat2.data[ofs2 + i];
      return 0}
    function caml_int64_ult(x,y){return x.ucompare(y) < 0}
    function caml_int64_xor(x,y){return x.xor(y)}
    function caml_bigstring_blit_ba_to_bytes(ba1,pos1,bytes2,pos2,len)
     {if(12 != ba1.kind)
       caml_invalid_argument
        ("caml_bigstring_blit_string_to_ba: kind mismatch");
      if(len == 0)return 0;
      var ofs1=ba1.offset(pos1);
      if(ofs1 + len > ba1.data.length)caml_array_bound_error();
      if(pos2 + len > caml_ml_bytes_length(bytes2))caml_array_bound_error();
      var slice=ba1.data.slice(ofs1,ofs1 + len);
      caml_blit_bytes(caml_bytes_of_array(slice),0,bytes2,pos2,len);
      return 0}
    function caml_register_named_value(nm,v)
     {caml_named_values[caml_jsbytes_of_string(nm)] = v;return 0}
    function caml_parse_sign_and_base(s)
     {var i=0,len=caml_ml_string_length(s),base=10,sign=1;
      if(len > 0)
       switch(caml_string_unsafe_get(s,i))
        {case 45:i++;sign = - 1;break;case 43:i++;sign = 1;break}
      if(i + 1 < len && caml_string_unsafe_get(s,i) == 48)
       switch(caml_string_unsafe_get(s,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;
         case 117:
         case 85: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_int64_of_string(s)
     {var
       r=caml_parse_sign_and_base(s),
       i=r[0],
       sign=r[1],
       base=r[2],
       base64=caml_int64_of_int32(base),
       threshold=
        new MlInt64(0xffffff,0xfffffff,0xffff).udivmod(base64).quotient,
       c=caml_string_unsafe_get(s,i),
       d=caml_parse_digit(c);
      if(d < 0 || d >= base)caml_failwith("int_of_string");
      var res=caml_int64_of_int32(d);
      for(;;)
       {i++;
        c = caml_string_unsafe_get(s,i);
        if(c == 95)continue;
        d = caml_parse_digit(c);
        if(d < 0 || d >= base)break;
        if(caml_int64_ult(threshold,res))caml_failwith("int_of_string");
        d = caml_int64_of_int32(d);
        res = caml_int64_add(caml_int64_mul(base64,res),d);
        if(caml_int64_ult(res,d))caml_failwith("int_of_string")}
      if(i != caml_ml_string_length(s))caml_failwith("int_of_string");
      if(base == 10 && caml_int64_ult(new MlInt64(0,0,0x8000),res))
       caml_failwith("int_of_string");
      if(sign < 0)res = caml_int64_neg(res);
      return res}
    var caml_blit_string_to_bigstring=caml_bigstring_blit_string_to_ba;
    function re_search_forward(re,s,pos)
     {if(pos < 0 || pos > caml_ml_string_length(s))
       caml_invalid_argument("Str.search_forward");
      while(pos <= caml_ml_string_length(s))
       {var res=re_match(re,s,pos,0);if(res)return res;pos++}
      return [0]}
    function caml_make_vect(len,init)
     {if(len < 0)caml_array_bound_error();
      var len=len + 1 | 0,b=new Array(len);
      b[0] = 0;
      for(var i=1;i < len;i++)b[i] = init;
      return b}
    function caml_ml_seek_in(chanid,pos)
     {var chan=caml_ml_channels[chanid];
      if(chan.refill != null)caml_raise_sys_error("Illegal seek");
      chan.offset = pos;
      return 0}
    function caml_sys_read_directory(name)
     {var
       root=resolve_fs_device(name),
       a=root.device.readdir(root.rest),
       l=new Array(a.length + 1);
      l[0] = 0;
      for(var i=0;i < a.length;i++)l[i + 1] = caml_string_of_jsbytes(a[i]);
      return l}
    function caml_ml_output_char(chanid,c)
     {var s=caml_string_of_jsbytes(String.fromCharCode(c));
      caml_ml_output(chanid,s,0,1);
      return 0}
    function caml_sys_const_ostype_win32(){return 0}
    function caml_obj_is_block(x){return + (x instanceof Array)}
    function caml_ml_input_char(chanid)
     {var chan=caml_ml_channels[chanid];
      caml_ml_may_refill_input(chanid);
      if(chan.offset >= chan.file.length())caml_raise_end_of_file();
      var res=chan.file.read_one(chan.offset);
      chan.offset++;
      return res}
    function caml_js_var(x)
     {var x=caml_jsstring_of_string(x);
      if(! x.match(/^[a-zA-Z_$][a-zA-Z_$0-9]*(\.[a-zA-Z_$][a-zA-Z_$0-9]*)*$/))
       js_print_stderr
        ('caml_js_var: "'
         +
         x
         +
         '" is not a valid JavaScript variable. continuing ..');
      return eval(x)}
    function caml_trunc_float(x){return Math.trunc(x)}
    function caml_zarith_marshal(writer,v,sz)
     {v = bigInt(v);
      var bits=v.toArray(Math.pow(2,32));
      writer.write(8,bits.isNegative?1:0);
      var block=bits.value.length,len=block * 4;
      writer.write(32,len);
      for(var i=block - 1;i >= 0;i--)
       {writer.write(8,bits.value[i] >>> 0 & 0xff);
        writer.write(8,bits.value[i] >>> 8 & 0xff);
        writer.write(8,bits.value[i] >>> 16 & 0xff);
        writer.write(8,bits.value[i] >>> 24 & 0xff)}
      sz[0] = 4 * (1 + ((len + 3) / 4 | 0));
      sz[1] = 8 * (1 + ((len + 7) / 8 | 0))}
    function caml_ephe_blit_data(src,dst)
     {dst[caml_ephe_data_offset] = src[caml_ephe_data_offset];return 0}
    var Base_internalhash_fold_int64=caml_hash_mix_int64;
    function caml_is_printable(c){return + (c > 31 && c < 127)}
    function caml_equal(x,y){return + (caml_compare_val(x,y,false) == 0)}
    function re_partial_match(re,s,pos)
     {if(pos < 0 || pos > caml_ml_string_length(s))
       caml_invalid_argument("Str.partial_match");
      var res=re_match(re,s,pos,1);
      return res?res:[0]}
    function caml_sys_random_seed()
     {var now=new Date().getTime(),x=now ^ 0xffffffff * Math.random();
      return [0,x]}
    function caml_final_register_called_without_value(){return 0}
    function caml_ba_get_2(ba,i0,i1){return ba.get(ba.offset([i0,i1]))}
    function win_handle_fd(x){return x}
    function caml_ba_uint8_set16(ba,i0,v)
     {var ofs=ba.offset(i0);
      if(ofs + 1 >= ba.data.length)caml_array_bound_error();
      ba.set(ofs + 0,v & 0xff);
      ba.set(ofs + 1,v >>> 8 & 0xff);
      return 0}
    function caml_js_delete(o,f){delete o[f];return 0}
    function caml_int_of_string(s)
     {var
       r=caml_parse_sign_and_base(s),
       i=r[0],
       sign=r[1],
       base=r[2],
       len=caml_ml_string_length(s),
       threshold=- 1 >>> 0,
       c=i < len?caml_string_unsafe_get(s,i):0,
       d=caml_parse_digit(c);
      if(d < 0 || d >= base)caml_failwith("int_of_string");
      var res=d;
      for(i++;i < len;i++)
       {c = caml_string_unsafe_get(s,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 != len)caml_failwith("int_of_string");
      res = sign * res;
      if(base == 10 && (res | 0) != res)caml_failwith("int_of_string");
      return res | 0}
    function caml_list_mount_point()
     {var prev=0;
      for(var i=0;i < jsoo_mount_point.length;i++)
       {var old=prev;
        prev = [0,caml_string_of_jsbytes(jsoo_mount_point[i].path),old]}
      return prev}
    var
     caml_marshal_constants=
      {PREFIX_SMALL_BLOCK:0x80,
       PREFIX_SMALL_INT:0x40,
       PREFIX_SMALL_STRING:0x20,
       CODE_INT8:0x00,
       CODE_INT16:0x01,
       CODE_INT32:0x02,
       CODE_INT64:0x03,
       CODE_SHARED8:0x04,
       CODE_SHARED16:0x05,
       CODE_SHARED32:0x06,
       CODE_BLOCK32:0x08,
       CODE_BLOCK64:0x13,
       CODE_STRING8:0x09,
       CODE_STRING32:0x0A,
       CODE_DOUBLE_BIG:0x0B,
       CODE_DOUBLE_LITTLE:0x0C,
       CODE_DOUBLE_ARRAY8_BIG:0x0D,
       CODE_DOUBLE_ARRAY8_LITTLE:0x0E,
       CODE_DOUBLE_ARRAY32_BIG:0x0F,
       CODE_DOUBLE_ARRAY32_LITTLE:0x07,
       CODE_CODEPOINTER:0x10,
       CODE_INFIXPOINTER:0x11,
       CODE_CUSTOM:0x12,
       CODE_CUSTOM_LEN:0x18,
       CODE_CUSTOM_FIXED:0x19};
    function caml_js_equals(x,y){return + (x == y)}
    function bigstring_to_typed_array(bs){return bs.data}
    function ml_z_fits_nativeint(z1){return ml_z_fits_int(z1)}
    function caml_gr_arc_aux(ctx,cx,cy,ry,rx,a1,a2)
     {while(a1 > a2)a2 += 360;
      a1 /= 180;
      a2 /= 180;
      var
       rot=0,
       xPos,
       yPos,
       xPos_prev,
       yPos_prev,
       space=2,
       num=(a2 - a1) * Math.PI * ((rx + ry) / 2) / space | 0,
       delta=(a2 - a1) * Math.PI / num,
       i=a1 * Math.PI;
      for(var j=0;j <= num;j++)
       {xPos
        =
        cx
        -
        rx
        *
        Math.sin(i)
        *
        Math.sin(rot * Math.PI)
        +
        ry
        *
        Math.cos(i)
        *
        Math.cos(rot * Math.PI);
        xPos = xPos.toFixed(2);
        yPos
        =
        cy
        +
        ry
        *
        Math.cos(i)
        *
        Math.sin(rot * Math.PI)
        +
        rx
        *
        Math.sin(i)
        *
        Math.cos(rot * Math.PI);
        yPos = yPos.toFixed(2);
        if(j == 0)
         ctx.moveTo(xPos,yPos);
        else
         if(xPos_prev != xPos || yPos_prev != yPos)ctx.lineTo(xPos,yPos);
        xPos_prev = xPos;
        yPos_prev = yPos;
        i -= delta}
      return 0}
    function caml_gr_fill_arc(x,y,rx,ry,a1,a2)
     {var s=caml_gr_state_get();
      s.context.beginPath();
      caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2);
      s.context.fill();
      return 0}
    function caml_ba_slice(ba,vind)
     {vind = caml_js_from_array(vind);
      var num_inds=vind.length,index=[],sub_dims=[],ofs;
      if(num_inds > ba.dims.length)
       caml_invalid_argument("Bigarray.slice: too many indices");
      if(ba.layout == 0)
       {for(var i=0;i < num_inds;i++)index[i] = vind[i];
        for(;i < ba.dims.length;i++)index[i] = 0;
        sub_dims = ba.dims.slice(num_inds)}
      else
       {for(var i=0;i < num_inds;i++)
         index[ba.dims.length - num_inds + i] = vind[i];
        for(var i=0;i < ba.dims.length - num_inds;i++)index[i] = 1;
        sub_dims = ba.dims.slice(0,ba.dims.length - num_inds)}
      ofs = ba.offset(index);
      var
       size=caml_ba_get_size(sub_dims),
       size_per_element=caml_ba_get_size_per_element(ba.kind),
       new_data=
        ba.data.subarray
         (ofs * size_per_element,(ofs + size) * size_per_element);
      return caml_ba_create_unsafe(ba.kind,ba.layout,sub_dims,new_data)}
    function ml_z_of_nativeint(z){return ml_z_of_int(z)}
    function caml_marshal_data_size(s,ofs)
     {function get32(s,i)
       {return caml_bytes_unsafe_get(s,i)
               <<
               24
               |
               caml_bytes_unsafe_get(s,i + 1)
               <<
               16
               |
               caml_bytes_unsafe_get(s,i + 2)
               <<
               8
               |
               caml_bytes_unsafe_get(s,i + 3)}
      if(get32(s,ofs) != (0x8495A6BE | 0))
       caml_failwith("Marshal.data_size: bad object");
      return get32(s,ofs + 4)}
    function caml_input_value(chanid)
     {var chan=caml_ml_channels[chanid],buf=caml_create_bytes(8);
      chan.file.read(chan.offset,buf,0,8);
      var len=caml_marshal_data_size(buf,0) + 20,buf=caml_create_bytes(len);
      chan.file.read(chan.offset,buf,0,len);
      var offset=[0],res=caml_input_value_from_bytes(buf,offset);
      chan.offset = chan.offset + offset[0];
      return res}
    function caml_ba_kind(ba){return ba.kind}
    function caml_js_fun_call(f,a)
     {switch(a.length)
       {case 1:return f();
        case 2:return f(a[1]);
        case 3:return f(a[1],a[2]);
        case 4:return f(a[1],a[2],a[3]);
        case 5:return f(a[1],a[2],a[3],a[4]);
        case 6:return f(a[1],a[2],a[3],a[4],a[5]);
        case 7:return f(a[1],a[2],a[3],a[4],a[5],a[6]);
        case 8:return f(a[1],a[2],a[3],a[4],a[5],a[6],a[7])
        }
      return f.apply(null,caml_js_from_array(a))}
    function ml_z_invert(a,n)
     {a = bigInt(a);
      n = bigInt(n);
      var
       x=ml_z_gcdext_intern(a,n),
       r=bigInt(x[2]),
       tmp=bigInt(a).multiply(r).mod(n);
      if(tmp.lt(bigInt(0)))tmp = tmp.add(n.abs());
      if(r.lt(bigInt(0)))r = r.add(n.abs());
      if(n.abs().equals(bigInt(1)))return 0;
      if(tmp.equals(bigInt(1)))return ml_z_normalize(r);
      caml_raise_zero_divide()}
    function ml_z_powm(z1,z2,z3)
     {var zero=bigInt(0),one=bigInt(1);
      z1 = bigInt(z1);
      z2 = bigInt(z2);
      z3 = bigInt(z3);
      if(z3.equals(zero) || z3.abs().equals(one))return 0;
      if(z2.equals(zero))return 1;
      if(z2.lt(0))
       {var inv=bigInt(ml_z_invert(z1,z3)),r=inv.modPow(z2.negate(),z3);
        if(r.lt(zero))r = r.add(z3.abs());
        return ml_z_normalize(r)}
      else
       {var r=bigInt(z1).modPow(z2,z3);
        if(r.lt(zero))r = r.add(z3.abs());
        return ml_z_normalize(r)}}
    function ml_z_powm_sec(z1,z2,z3)
     {z3 = bigInt(z3).abs();
      var one=bigInt(1);
      if(bigInt(z2).lt(one))
       caml_invalid_argument("Z.powm_sec: exponent must be positive");
      if(! bigInt(z3).and(one).equals(one))
       caml_invalid_argument("Z.powm_sec: modulus must be odd");
      return ml_z_powm(z1,z2,z3)}
    function caml_js_pure_expr(f){return f()}
    function compare_digits_nat(nat1,ofs1,nat2,ofs2)
     {if(nat1.data[ofs1] > nat2.data[ofs2])return 1;
      if(nat1.data[ofs1] < nat2.data[ofs2])return - 1;
      return 0}
    function caml_ml_input(chanid,s,i,l)
     {var chan=caml_ml_channels[chanid],l2=chan.file.length() - chan.offset;
      if(l2 == 0 && chan.refill != null)l2 = caml_ml_refill_input(chan);
      if(l2 < l)l = l2;
      chan.file.read(chan.offset,s,i,l);
      chan.offset += l;
      return l}
    function caml_gr_wait_event(_evl)
     {caml_failwith
       ("caml_gr_wait_event not Implemented: use Graphics_js instead")}
    function caml_gr_sigio_handler(){return 0}
    function caml_hash_mix_bigstring(h,bs)
     {return caml_hash_mix_bytes_arr(h,bs.data)}
    function caml_record_backtrace(){return 0}
    function unix_gmtime(t)
     {var
       d=new Date(t * 1000),
       d_num=d.getTime(),
       januaryfirst=new Date(Date.UTC(d.getUTCFullYear(),0,1)).getTime(),
       doy=Math.floor((d_num - januaryfirst) / 86400000);
      return [0,
              d.getUTCSeconds(),
              d.getUTCMinutes(),
              d.getUTCHours(),
              d.getUTCDate(),
              d.getUTCMonth(),
              d.getUTCFullYear() - 1900,
              d.getUTCDay(),
              doy,
              false | 0]}
    function caml_sys_get_config()
     {return [0,caml_string_of_jsbytes("Unix"),32,0]}
    function caml_sys_const_backend_type()
     {return [0,caml_string_of_jsbytes("js_of_ocaml")]}
    function unix_time(){return Math.floor(unix_gettimeofday())}
    function caml_ml_out_channels_list()
     {var l=0;
      for(var c=0;c < caml_ml_channels.length;c++)
       if
        (caml_ml_channels[c]
         &&
         caml_ml_channels[c].opened
         &&
         caml_ml_channels[c].out)
        l = [0,caml_ml_channels[c].fd,l];
      return l}
    function ml_z_hash(z1)
     {var a=bigInt(z1).toArray(Math.pow(2,32)),acc=0;
      for(var i=0;i < a.value.length;i++)
       acc = caml_hash_mix_int(acc,a.value[i]);
      if(a.value.length % 2 != 0)acc = caml_hash_mix_int(acc,0);
      if(a.isNegative)acc = acc + 1;
      return acc | 0}
    function bigstring_of_array_buffer(ab)
     {var ta=new (joo_global_object.Uint8Array)(ab);
      return caml_ba_create_unsafe(12,0,[ta.length],ta)}
    function caml_mod(x,y){if(y == 0)caml_raise_zero_divide();return x % y}
    function caml_ba_init(){return 0}
    function re_string_match(re,s,pos)
     {if(pos < 0 || pos > caml_ml_string_length(s))
       caml_invalid_argument("Str.string_match");
      var res=re_match(re,s,pos,0);
      return res?res:[0]}
    function BigStringReader(bs,i){this.s = bs;this.i = i}
    BigStringReader.prototype
    =
    {read8u:function(){return caml_ba_get_1(this.s,this.i++)},
     read8s:function(){return caml_ba_get_1(this.s,this.i++) << 24 >> 24},
     read16u:
     function()
      {var s=this.s,i=this.i;
       this.i = i + 2;
       return caml_ba_get_1(s,i) << 8 | caml_ba_get_1(s,i + 1)},
     read16s:
     function()
      {var s=this.s,i=this.i;
       this.i = i + 2;
       return caml_ba_get_1(s,i) << 24 >> 16 | caml_ba_get_1(s,i + 1)},
     read32u:
     function()
      {var s=this.s,i=this.i;
       this.i = i + 4;
       return (caml_ba_get_1(s,i)
               <<
               24
               |
               caml_ba_get_1(s,i + 1)
               <<
               16
               |
               caml_ba_get_1(s,i + 2)
               <<
               8
               |
               caml_ba_get_1(s,i + 3))
              >>>
              0},
     read32s:
     function()
      {var s=this.s,i=this.i;
       this.i = i + 4;
       return caml_ba_get_1(s,i)
              <<
              24
              |
              caml_ba_get_1(s,i + 1)
              <<
              16
              |
              caml_ba_get_1(s,i + 2)
              <<
              8
              |
              caml_ba_get_1(s,i + 3)},
     readstr:
     function(len)
      {var i=this.i,arr=new Array(len);
       for(var j=0;j < len;j++)arr[j] = caml_ba_get_1(this.s,i + j);
       this.i = i + len;
       return caml_string_of_array(arr)}};
    function caml_gr_dump_image(im)
     {var data=[0];
      for(var i=0;i < im.height;i++)
       {data[i + 1] = [0];
        for(var j=0;j < im.width;j++)
         {var
           o=i * (im.width * 4) + j * 4,
           r=im.data[o + 0],
           g=im.data[o + 1],
           b=im.data[o + 2];
          data[i + 1][j + 1] = (r << 16) + (g << 8) + b}}
      return data}
    function caml_ba_get_generic(ba,i)
     {var ofs=ba.offset(caml_js_from_array(i));return ba.get(ofs)}
    function caml_get_exception_backtrace(){return 0}
    function caml_format_float(fmt,x)
     {function toFixed(x,dp)
       {if(Math.abs(x) < 1.0)
         return x.toFixed(dp);
        else
         {var e=parseInt(x.toString().split("+")[1]);
          if(e > 20)
           {e -= 20;
            x /= Math.pow(10,e);
            x += new Array(e + 1).join("0");
            if(dp > 0)x = x + "." + new Array(dp + 1).join("0");
            return x}
          else
           return x.toFixed(dp)}}
      var s,f=caml_parse_format(fmt),prec=f.prec < 0?6:f.prec;
      if(x < 0 || x == 0 && 1 / x == - Infinity){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),i=s.length;
           if(s.charAt(i - 3) == "e")
            s = s.slice(0,i - 1) + "0" + s.slice(i - 1);
           break;
          case "f":s = toFixed(x,prec);break;
          case "g":
           prec = prec?prec:1;
           s = x.toExponential(prec - 1);
           var j=s.indexOf("e"),exp=+ s.slice(j + 1);
           if(exp < - 4 || x >= 1e21 || 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_mount_autoload(name,f)
     {var path=caml_make_path(name),name=path.join("/") + "/";
      jsoo_mount_point.push({path:name,device:new MlFakeDevice(name,f)});
      return 0}
    function Base_int_math_int_clz(x){return Base_int_math_int32_clz(x)}
    function ml_z_fits_int64(z1)
     {z1 = bigInt(z1);
      return z1.compare(bigInt("9223372036854775807"))
              <=
              0
              &&
              z1.compare(bigInt("-9223372036854775808"))
              >=
              0
              ?1
              :0}
    function ml_z_equal(z1,z2){return bigInt(z1).equals(bigInt(z2))}
    function caml_bigstring_blit_ba_to_ba(ba1,pos1,ba2,pos2,len)
     {if(12 != ba1.kind)
       caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch");
      if(12 != ba2.kind)
       caml_invalid_argument("caml_bigstring_blit_ba_to_ba: kind mismatch");
      if(len == 0)return 0;
      var ofs1=ba1.offset(pos1),ofs2=ba2.offset(pos2);
      if(ofs1 + len > ba1.data.length)caml_array_bound_error();
      if(ofs2 + len > ba2.data.length)caml_array_bound_error();
      var slice=ba1.data.subarray(ofs1,ofs1 + len);
      ba2.data.set(slice,pos2);
      return 0}
    var caml_blit_bigstring_to_bigstring=caml_bigstring_blit_ba_to_ba;
    function ml_z_sqrt_rem(z)
     {z = bigInt(z);
      var zero=bigInt(0);
      if(z.lt(zero))
       caml_invalid_argument("Z.sqrt_rem: square root of a negative number");
      var
       root=bigInt(ml_z_root(z,2)),
       mul=root.multiply(root),
       diff=z.subtract(mul);
      return [0,ml_z_normalize(root),ml_z_normalize(diff)]}
    function caml_string_lessthan(s1,s2){return caml_bytes_lessthan(s1,s2)}
    function caml_string_greaterthan(s1,s2)
     {return caml_string_lessthan(s2,s1)}
    function caml_div(x,y)
     {if(y == 0)caml_raise_zero_divide();return x / y | 0}
    function caml_ba_set_1(ba,i0,v){ba.set(ba.offset(i0),v);return 0}
    function caml_fill_bigstring(buf,buf_off,buf_len,v)
     {var i;
      for(i = 0;i < buf_len;i++)caml_ba_set_1(buf,buf_off + i,v);
      return 0}
    function caml_ephe_get_data_copy(x)
     {return x[caml_ephe_data_offset] === undefined
              ?0
              :[0,caml_obj_dup(x[caml_ephe_data_offset])]}
    function ml_z_perfect_square(z)
     {z = bigInt(z);
      if(z.lt(bigInt(0)))return 0;
      var root=bigInt(ml_z_root(z,2));
      return root.multiply(root).eq(z)?1:0}
    function caml_sys_get_argv(a){return [0,caml_argv[1],caml_argv]}
    function caml_js_to_bool(x){return + x}
    function caml_gr_create_image(x,y)
     {var s=caml_gr_state_get();return s.context.createImageData(x,y)}
    var caml_ephe_get_key_copy=caml_weak_get_copy;
    function caml_lessthan(x,y){return + (caml_compare_val(x,y,false) < 0)}
    function caml_raw_backtrace_next_slot(){return 0}
    function ml_z_to_nativeint(z1){return ml_z_to_int(z1)}
    function caml_register_global(n,v,name_opt)
     {if(name_opt && joo_global_object.toplevelReloc)
       n = joo_global_object.toplevelReloc(name_opt);
      caml_global_data[n + 1] = v;
      if(name_opt)caml_global_data[name_opt] = v}
    function mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat3,ofs3,len3)
     {var carry=0;
      for(var i=0;i < len3;i++)
       carry
       +=
       mult_digit_nat(nat1,ofs1 + i,len1 - i,nat2,ofs2,len2,nat3,ofs3 + i);
      return carry}
    function square_nat(nat1,ofs1,len1,nat2,ofs2,len2)
     {var carry=0;
      carry += add_nat(nat1,ofs1,len1,nat1,ofs1,len1,0);
      carry += mult_nat(nat1,ofs1,len1,nat2,ofs2,len2,nat2,ofs2,len2);
      return carry}
    function caml_js_from_float(x){return x}
    function caml_floatarray_create(len)
     {if(len < 0)caml_array_bound_error();
      var len=len + 1 | 0,b=new Array(len);
      b[0] = 254;
      for(var i=1;i < len;i++)b[i] = 0;
      return b}
    function caml_gc_stat(){return [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
    function caml_sys_modify_argv(arg){caml_argv = arg;return 0}
    var caml_method_cache=[];
    function caml_get_public_method(obj,tag,cacheid)
     {var meths=obj[1],ofs=caml_method_cache[cacheid];
      if(ofs === null)
       for(var i=caml_method_cache.length;i < cacheid;i++)
        caml_method_cache[i] = 0;
      else
       if(meths[ofs] === tag)return meths[ofs - 1];
      var li=3,hi=meths[1] * 2 + 1,mi;
      while(li < hi)
       {mi = li + hi >> 1 | 1;if(tag < meths[mi + 1])hi = mi - 2;else li = mi}
      caml_method_cache[cacheid] = li + 1;
      return tag == meths[li + 1]?meths[li]:0}
    function caml_js_get_console()
     {var
       c=joo_global_object.console?joo_global_object.console:{},
       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_ml_open_descriptor_in(fd)
     {var data=caml_global_data.fds[fd];
      if(data.flags.wronly)caml_raise_sys_error("fd " + fd + " is writeonly");
      var
       channel=
        {file:data.file,
         offset:data.offset,
         fd:fd,
         opened:true,
         out:false,
         refill:null};
      caml_ml_channels[channel.fd] = channel;
      return channel.fd}
    function bigstring_of_typed_array(ba)
     {var
       ta=
        new
         (joo_global_object.Uint8Array)
         (ba.buffer,ba.byteOffset,ba.length * ba.BYTES_PER_ELEMENT);
      return caml_ba_create_unsafe(12,0,[ta.length],ta)}
    function caml_round_float(x){return Math.round(x)}
    function ml_z_of_bits(z1)
     {var r=bigInt.zero,base1=bigInt(256),base=bigInt.one;
      for(var i=0;i < caml_ml_string_length(z1);i++)
       {var d=caml_string_unsafe_get(z1,i);
        r = bigInt(base).multiply(d).add(r);
        base = bigInt(base).multiply(base1)}
      return ml_z_normalize(r)}
    function caml_ojs_new_arr(c,a)
     {switch(a.length)
       {case 0:return new c();
        case 1:return new c(a[0]);
        case 2:return new c(a[0],a[1]);
        case 3:return new c(a[0],a[1],a[2]);
        case 4:return new c(a[0],a[1],a[2],a[3]);
        case 5:return new c(a[0],a[1],a[2],a[3],a[4]);
        case 6:return new c(a[0],a[1],a[2],a[3],a[4],a[5]);
        case 7:return new c(a[0],a[1],a[2],a[3],a[4],a[5],a[6])
        }
      function F(){return c.apply(this,a)}
      F.prototype = c.prototype;
      return new F()}
    function complement_nat(nat,ofs,len)
     {for(var i=0;i < len;i++)
       nat.data[ofs + i] = (- 1 >>> 0) - (nat.data[ofs + i] >>> 0)}
    function ml_z_logxor(z1,z2)
     {return ml_z_normalize(bigInt(z1).xor(bigInt(z2)))}
    var caml_js_regexps={amp:/&/g,lt:/</g,quot:/\"/g,all:/[&<\"]/};
    function caml_js_html_escape(s)
     {if(! caml_js_regexps.all.test(s))return s;
      return s.replace(caml_js_regexps.amp,"&amp;").replace
               (caml_js_regexps.lt,"&lt;").replace
              (caml_js_regexps.quot,"&quot;")}
    function caml_ba_dim_2(ba){return caml_ba_dim(ba,1)}
    function caml_js_wrap_meth_callback_arguments(f)
     {return function()
       {var len=arguments.length,args=new Array(len);
        for(var i=0;i < len;i++)args[i] = arguments[i];
        return caml_call_gen(f,[this,args])}}
    function caml_sinh_float(x){return (Math.exp(x) - Math.exp(- x)) / 2}
    function caml_ldexp_float(x,exp)
     {exp |= 0;
      if(exp > 1023)
       {exp -= 1023;
        x *= Math.pow(2,1023);
        if(exp > 1023){exp -= 1023;x *= Math.pow(2,1023)}}
      if(exp < - 1023){exp += 1023;x *= Math.pow(2,- 1023)}
      x *= Math.pow(2,exp);
      return x}
    function caml_gr_state_set(ctx)
     {caml_gr_state = ctx;caml_gr_state_init();return 0}
    function caml_zarith_unmarshal(reader,sz)
     {var negate;
      switch(reader.read8u())
       {case 1:negate = true;break;
        case 0:negate = false;break;
        default:caml_failwith("input_value: z (malformed input)")}
      var len=reader.read32u(),x=bigInt(0);
      for(var i=0;i < len / 4;i++)
       {var y=bigInt(reader.read8u());
        y = y.add(reader.read8u() << 8);
        y = y.add(reader.read8u() << 16);
        y = y.add(reader.read8u() << 24 >>> 0);
        x = y.shiftLeft(i * 32).add(x)}
      if(negate)x = x.negate();
      sz[0] = len + 4;
      return ml_z_normalize(x)}
    function ml_z_trailing_zeros(z)
     {z = bigInt(z).abs();
      var zero=bigInt(0),one=bigInt(1);
      if(z.equals(zero))return 0x7fffffff;
      var i=0;
      z = z.xor(z.prev()).shiftRight(1);
      for(i = 0;! z.equals(bigInt.zero);i++)z = z.shiftRight(1);
      return i}
    function caml_js_wrap_callback_strict(arity,f)
     {return function()
       {var n=arguments.length;
        if(n == arity && f.length == arity)return f.apply(null,arguments);
        var args=new Array(arity),len=Math.min(arguments.length,arity);
        for(var i=0;i < len;i++)args[i] = arguments[i];
        return caml_call_gen(f,args)}}
    function caml_get_current_callstack(){return [0]}
    function land_digit_nat(nat1,ofs1,nat2,ofs2)
     {nat1.data[ofs1] &= nat2.data[ofs2];return 0}
    function caml_int64_mod(x,y){return x.mod(y)}
    function caml_obj_set_tag(x,tag){x[0] = tag;return 0}
    function caml_create_file_extern(name,content)
     {if(joo_global_object.caml_create_file)
       joo_global_object.caml_create_file(name,content);
      else
       {if(! joo_global_object.caml_fs_tmp)joo_global_object.caml_fs_tmp = [];
        joo_global_object.caml_fs_tmp.push({name:name,content:content})}
      return 0}
    function caml_int32_bswap(x)
     {return (x & 0x000000FF)
             <<
             24
             |
             (x & 0x0000FF00)
             <<
             8
             |
             (x & 0x00FF0000)
             >>>
             8
             |
             (x & 0xFF000000)
             >>>
             24}
    function win_startup(){}
    function caml_ba_set_3(ba,i0,i1,i2,v)
     {ba.set(ba.offset([i0,i1,i2]),v);return 0}
    function caml_js_instanceof(o,c){return o instanceof c}
    var caml_blit_bigstring_to_string=caml_bigstring_blit_ba_to_bytes;
    function nth_digit_nat_native(nat,ofs){return nat.data[ofs]}
    function set_digit_nat_native(nat,ofs,digit)
     {nat.data[ofs] = digit;return 0}
    function caml_string_set64(s,i,i64){return caml_bytes_set64(s,i,i64)}
    function caml_gr_state_create(canvas,w,h)
     {var context=canvas.getContext("2d");
      return {context:context,
              canvas:canvas,
              x:0,
              y:0,
              width:w,
              height:h,
              line_width:1,
              font:caml_string_of_jsbytes("fixed"),
              text_size:26,
              color:0x000000,
              title:caml_string_of_jsbytes("")}}
    function caml_js_wrap_callback(f)
     {return function()
       {var len=arguments.length;
        if(len > 0)
         {var args=new Array(len);
          for(var i=0;i < len;i++)args[i] = arguments[i];
          return caml_call_gen(f,args)}
        else
         return caml_call_gen(f,[undefined])}}
    function caml_gr_draw_arc(x,y,rx,ry,a1,a2)
     {var s=caml_gr_state_get();
      s.context.beginPath();
      caml_gr_arc_aux(s.context,x,s.height - y,rx,ry,a1,a2);
      s.context.stroke();
      return 0}
    function caml_ba_map_file(vfd,kind,layout,shared,dims,pos)
     {caml_failwith("caml_ba_map_file not implemented")}
    function caml_ba_map_file_bytecode(argv,argn)
     {return caml_ba_map_file(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5])}
    function caml_ba_create_from(data1,data2,jstyp,kind,layout,dims)
     {if(data2 || caml_ba_get_size_per_element(kind) == 2)
       caml_invalid_argument
        ("caml_ba_create_from: use return caml_ba_create_unsafe");
      return caml_ba_create_unsafe(kind,layout,dims,data1)}
    function caml_tanh_float(x)
     {var y=Math.exp(x),z=Math.exp(- x);return (y - z) / (y + z)}
    function caml_gr_draw_str(str)
     {var s=caml_gr_state_get(),m=s.context.measureText(str),dx=m.width;
      s.context.fillText(str,s.x,s.height - s.y);
      s.x += dx | 0;
      return 0}
    function caml_gr_draw_string(str)
     {caml_gr_draw_str(caml_jsstring_of_string(str));return 0}
    function caml_gr_draw_char(c)
     {caml_gr_draw_str(String.fromCharCode(c));return 0}
    function caml_unmount(name)
     {var path=caml_make_path(name),name=path.join("/") + "/",idx=- 1;
      for(var i=0;i < jsoo_mount_point.length;i++)
       if(jsoo_mount_point[i].path == name)idx = i;
      if(idx > - 1)jsoo_mount_point.splice(idx,1);
      return 0}
    function caml_input_value_from_string(s,ofs)
     {var reader=new MlStringReader(s,typeof ofs == "number"?ofs:ofs[0]);
      return caml_input_value_from_reader(reader,ofs)}
    function caml_ml_pos_in_64(chanid)
     {return caml_int64_of_float(caml_ml_channels[chanid].offset)}
    function caml_gr_draw_image(im,x,y)
     {var s=caml_gr_state_get();
      if(! im.image)
       {var canvas=document.createElement("canvas");
        canvas.width = s.width;
        canvas.height = s.height;
        canvas.getContext("2d").putImageData(im,0,0);
        var image=new (joo_global_object.Image)();
        image.onload
        =
        function()
         {s.context.drawImage(image,x,s.height - im.height - y);
          im.image = image};
        image.src = canvas.toDataURL("image/png")}
      else
       s.context.drawImage(im.image,x,s.height - im.height - y);
      return 0}
    function caml_register_channel_for_spacetime(_channel){return 0}
    function caml_string_set(s,i,c)
     {if(i >>> 0 >= s.l)caml_string_bound_error();
      return caml_string_unsafe_set(s,i,c)}
    function caml_ml_pos_out(chanid)
     {caml_ml_flush(chanid);return caml_ml_channels[chanid].offset}
    function caml_spacetime_enabled(_unit){return 0}
    function caml_bytes_notequal(s1,s2){return 1 - caml_string_equal(s1,s2)}
    function caml_runtime_parameters(_unit){return caml_string_of_jsbytes("")}
    function caml_js_object(a)
     {var o={};
      for(var i=1;i < a.length;i++)
       {var p=a[i];o[caml_jsstring_of_string(p[1])] = p[2]}
      return o}
    function caml_ba_create(kind,layout,dims_ml)
     {var
       dims=caml_js_from_array(dims_ml),
       data=caml_ba_create_buffer(kind,caml_ba_get_size(dims));
      return caml_ba_create_unsafe(kind,layout,dims,data)}
    function caml_weak_blit(a1,i1,a2,i2,len)
     {caml_array_blit
       (a1,caml_ephe_key_offset + i1 - 1,a2,caml_ephe_key_offset + i2 - 1,len);
      return 0}
    function caml_gr_remember_mode()
     {caml_failwith("caml_gr_remember_mode not Implemented")}
    function Base_internalhash_get_hash_value(seed)
     {var h=caml_hash_mix_final(seed);return h & 0x3FFFFFFF}
    function caml_bswap16(x){return (x & 0x00FF) << 8 | (x & 0xFF00) >> 8}
    function caml_ml_set_binary_mode(chanid,mode)
     {var chan=caml_ml_channels[chanid],data=caml_global_data.fds[chan.fd];
      data.flags.text = ! mode;
      data.flags.binary = mode;
      return 0}
    function caml_final_register(){return 0}
    function caml_check_alignment_bigstring(buf,ofs,alignment){return true}
    function caml_gr_draw_rect(x,y,w,h)
     {var s=caml_gr_state_get();
      s.context.strokeRect(x,s.height - y,w,- h);
      return 0}
    function caml_string_get16(s,i)
     {if(i >>> 0 >= caml_ml_string_length(s) - 1)caml_string_bound_error();
      var b1=caml_string_unsafe_get(s,i),b2=caml_string_unsafe_get(s,i + 1);
      return b2 << 8 | b1}
    function caml_ephe_unset_data(x,data)
     {x[caml_ephe_data_offset] = undefined;return 0}
    function caml_output_value(chanid,v,flags)
     {var s=caml_output_value_to_string(v,flags);
      caml_ml_output(chanid,s,0,caml_ml_string_length(s));
      return 0}
    function caml_ba_get_3(ba,i0,i1,i2){return ba.get(ba.offset([i0,i1,i2]))}
    var caml_ephe_blit_key=caml_weak_blit;
    function ml_z_to_int32(z1){return ml_z_to_int(z1)}
    function Base_clear_caml_backtrace_pos(x){return 0}
    function caml_check_bound(array,index)
     {if(index >>> 0 >= array.length - 1)caml_array_bound_error();
      return array}
    function caml_compare_bigstring(buf1,buf1_off,buf2,buf2_off,len)
     {var i,r;
      for(i = 0;i < len;i++)
       {r
        =
        caml_int_compare
         (caml_ba_get_1(buf1,buf1_off + i),caml_ba_get_1(buf2,buf2_off + i));
        if(r != 0)return r}
      return 0}
    function ml_z_compare(z1,z2){return bigInt(z1).compare(bigInt(z2))}
    function caml_obj_tag(x)
     {if(x instanceof Array && x[0] == x[0] >>> 0)
       return x[0];
      else
       if(caml_is_ml_bytes(x))
        return 252;
       else
        if(caml_is_ml_string(x))
         return 252;
        else
         if(x instanceof Function || typeof x == "function")
          return 247;
         else
          if(x && x.caml_custom)return 255;else return 1000}
    function caml_ba_to_typed_array(ba){return ba.data}
    function caml_js_export_var()
     {return typeof module !== "undefined" && module && module.exports
              ?module.exports
              :joo_global_object}
    function caml_bytes_get32(s,i)
     {if(i >>> 0 >= s.l - 3)caml_bytes_bound_error();
      var
       b1=caml_bytes_unsafe_get(s,i),
       b2=caml_bytes_unsafe_get(s,i + 1),
       b3=caml_bytes_unsafe_get(s,i + 2),
       b4=caml_bytes_unsafe_get(s,i + 3);
      return b4 << 24 | b3 << 16 | b2 << 8 | b1}
    function caml_frexp_float(x)
     {if(x == 0 || ! isFinite(x))return [0,x,0];
      var neg=x < 0;
      if(neg)x = - x;
      var exp=Math.max(- 1023,jsoo_floor_log2(x) + 1);
      x *= Math.pow(2,- exp);
      while(x < 0.5){x *= 2;exp--}
      while(x >= 1){x *= 0.5;exp++}
      if(neg)x = - x;
      return [0,x,exp]}
    function caml_ojs_wrap_fun_arguments(f)
     {return function(){return caml_js_wrap_callback(f)(arguments)}}
    function ml_z_pred(z1){return ml_z_normalize(bigInt(z1).prev())}
    function caml_string_get64(s,i)
     {if(i >>> 0 >= caml_ml_string_length(s) - 7)caml_string_bound_error();
      var a=new Array(8);
      for(var j=0;j < 8;j++)a[7 - j] = caml_string_unsafe_get(s,i + j);
      return caml_int64_of_bytes(a)}
    function caml_ml_pos_out_64(chanid)
     {caml_ml_flush(chanid);
      return caml_int64_of_float(caml_ml_channels[chanid].offset)}
    function ml_z_extract(z1,pos,len)
     {z1 = bigInt(z1);
      return ml_z_normalize
              (z1.shiftRight(pos).and(bigInt(2).pow(len).subtract(1)))}
    function ml_z_of_float(f1)
     {if(f1 == Infinity || f1 == - Infinity || f1 != f1)
       caml_raise_constant(caml_named_value("ml_z_overflow"));
      return ml_z_normalize(bigInt(f1 < 0?Math.ceil(f1):Math.floor(f1)))}
    function ml_z_lognot(z1){return ml_z_normalize(bigInt(z1).not())}
    function caml_gr_close_subwindow(a)
     {caml_failwith("caml_gr_close_subwindow not Implemented")}
    function caml_set_static_env(k,v)
     {if(! joo_global_object.jsoo_static_env)
       joo_global_object.jsoo_static_env = {};
      joo_global_object.jsoo_static_env[k] = v;
      return 0}
    function caml_ba_change_layout(ba,layout)
     {if(ba.layout == layout)return ba;
      var new_dims=[];
      for(var i=0;i < ba.dims.length;i++)
       new_dims[i] = ba.dims[ba.dims.length - i - 1];
      return caml_ba_create_unsafe(ba.kind,layout,new_dims,ba.data)}
    function Base_hash_double(d){return caml_hash(1,1,0,d)}
    function caml_js_new(c,a)
     {switch(a.length)
       {case 1:return new c();
        case 2:return new c(a[1]);
        case 3:return new c(a[1],a[2]);
        case 4:return new c(a[1],a[2],a[3]);
        case 5:return new c(a[1],a[2],a[3],a[4]);
        case 6:return new c(a[1],a[2],a[3],a[4],a[5]);
        case 7:return new c(a[1],a[2],a[3],a[4],a[5],a[6]);
        case 8:return new c(a[1],a[2],a[3],a[4],a[5],a[6],a[7])
        }
      function F(){return c.apply(this,caml_js_from_array(a))}
      F.prototype = c.prototype;
      return new F()}
    function caml_gr_current_y(){var s=caml_gr_state_get();return s.y}
    function caml_format_int(fmt,i)
     {if(caml_jsbytes_of_string(fmt) == "%d")
       return caml_string_of_jsbytes("" + 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_obj_truncate(x,s)
     {if(s <= 0 || s + 1 > x.length)caml_invalid_argument("Obj.truncate");
      if(x.length != s + 1)x.length = s + 1;
      return 0}
    function is_digit_odd(nat,ofs){if(nat.data[ofs] & 1)return 1;return 0}
    function caml_runtime_variant(_unit){return caml_string_of_jsbytes("")}
    function caml_ml_open_descriptor_out(fd)
     {var data=caml_global_data.fds[fd];
      if(data.flags.rdonly)caml_raise_sys_error("fd " + fd + " is readonly");
      var
       channel=
        {file:data.file,
         offset:data.offset,
         fd:fd,
         opened:true,
         out:true,
         buffer:""};
      caml_ml_channels[channel.fd] = channel;
      return channel.fd}
    function caml_array_concat(l)
     {var a=[0];
      while(l !== 0)
       {var b=l[1];for(var i=1;i < b.length;i++)a.push(b[i]);l = l[2]}
      return a}
    function caml_gr_open_graph(info)
     {var g=joo_global_object,info=caml_jsstring_of_string(info);
      function get(name)
       {var res=info.match("(^|,) *" + name + " *= *([a-zA-Z0-9_]+) *(,|$)");
        if(res)return res[2]}
      var specs=[];
      if(! (info == ""))specs.push(info);
      var target=get("target");
      if(! target)target = "";
      var status=get("status");
      if(! status)specs.push("status=1");
      var w=get("width");
      w = w?parseInt(w):200;
      specs.push("width=" + w);
      var h=get("height");
      h = h?parseInt(h):200;
      specs.push("height=" + h);
      var win=g.open("about:blank",target,specs.join(","));
      if(! win)caml_failwith("Graphics.open_graph: cannot open the window");
      var doc=win.document,canvas=doc.createElement("canvas");
      canvas.width = w;
      canvas.height = h;
      var ctx=caml_gr_state_create(canvas,w,h);
      ctx.set_title = function(title){doc.title = title};
      caml_gr_state_set(ctx);
      var body=doc.body;
      body.style.margin = "0px";
      body.appendChild(canvas);
      return 0}
    function caml_ephe_set_data(x,data)
     {x[caml_ephe_data_offset] = data;return 0}
    function caml_make_float_vect(len)
     {if(len < 0)caml_array_bound_error();
      var len=len + 1 | 0,b=new Array(len);
      b[0] = 254;
      for(var i=1;i < len;i++)b[i] = 0;
      return b}
    function caml_greaterequal(x,y)
     {return + (caml_compare_val(x,y,false) >= 0)}
    function ml_z_numbits(z1)
     {z1 = bigInt(z1).abs();
      var n=0,upperBound=bigInt.one;
      while(upperBound.leq(z1)){n += 1;upperBound = upperBound.multiply(2)}
      return n}
    function caml_get_exception_raw_backtrace(){return [0]}
    function caml_log1p_float(x)
     {var y=1 + x,z=y - 1;return z == 0?x:x * Math.log(y) / z}
    function caml_int64_or(x,y){return x.or(y)}
    function caml_lazy_make_forward(v){return [250,v]}
    function lor_digit_nat(nat1,ofs1,nat2,ofs2)
     {nat1.data[ofs1] |= nat2.data[ofs2];return 0}
    function caml_gr_blit_image(im,x,y)
     {var
       s=caml_gr_state_get(),
       im2=
        s.context.getImageData(x,s.height - im.height - y,im.width,im.height);
      for(var i=0;i < im2.data.length;i += 4)
       {im.data[i] = im2.data[i];
        im.data[i + 1] = im2.data[i + 1];
        im.data[i + 2] = im2.data[i + 2];
        im.data[i + 3] = im2.data[i + 3]}
      return 0}
    function caml_gr_window_id(a)
     {caml_failwith("caml_gr_window_id not Implemented")}
    function caml_js_on_ie()
     {var
       ua=
        joo_global_object.navigator?joo_global_object.navigator.userAgent:"";
      return ua.indexOf("MSIE") != - 1 && ua.indexOf("Opera") != 0}
    function caml_int64_shift_right(x,s){return x.shift_right(s)}
    function caml_ba_layout(ba){return ba.layout}
    function caml_convert_raw_backtrace(){return [0]}
    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_bytes_greaterequal(s1,s2)
     {return caml_bytes_lessequal(s2,s1)}
    function ml_z_perfect_power(z)
     {z = bigInt(z);
      var zero=bigInt(0),one=bigInt(1);
      if(z.equals(zero) || z.equals(one) || z.equals(one.negate()))return 1;
      var log2z=ml_z_numbits(z.abs());
      for(var b=2;b <= log2z;b++)
       {if(z.lt(zero) && b % 2 == 0)continue;
        var zp=z.abs(),p=bigInt(ml_z_root(zp,b));
        if(z.lt(zero))p = p.negate();
        var r=bigInt(ml_z_pow(p,b));
        if(z.equals(r))return 1}
      return 0}
    function set_digit_nat(nat,ofs,digit){nat.data[ofs] = digit;return 0}
    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 caml_CamlinternalMod_update_mod(shape,real,x)
     {if(typeof shape === "number")
       switch(shape){case 0:case 1:case 2:default:caml_update_dummy(real,x)}
      else
       switch(shape[0])
        {case 0:
          for(var i=1;i < shape[1].length;i++)
           caml_CamlinternalMod_update_mod(shape[1][i],real[i],x[i]);
          break
         }
      return 0}
    function ml_z_init(unit)
     {caml_custom_ops["_z"]
      =
      {serialize:caml_zarith_marshal,
       deserialize:caml_zarith_unmarshal,
       hash:ml_z_hash};
      return 0}
    function caml_gr_doc_of_state(state)
     {if(state.canvas.ownerDocument)return state.canvas.ownerDocument}
    function caml_ml_output_int(chanid,i)
     {var
       arr=[i >> 24 & 0xFF,i >> 16 & 0xFF,i >> 8 & 0xFF,i & 0xFF],
       s=caml_string_of_array(arr);
      caml_ml_output(chanid,s,0,4);
      return 0}
    function caml_obj_with_tag(tag,x)
     {var l=x.length,a=new Array(l);
      a[0] = tag;
      for(var i=1;i < l;i++)a[i] = x[i];
      return a}
    var caml_initial_time=new Date().getTime() * 0.001;
    function caml_sys_time()
     {var now=new Date().getTime();return now * 0.001 - caml_initial_time}
    function caml_ml_channel_size(chanid)
     {var chan=caml_ml_channels[chanid];return chan.file.length()}
    function caml_raw_backtrace_slot()
     {caml_invalid_argument
       ("Printexc.get_raw_backtrace_slot: index out of bounds")}
    function caml_hexstring_of_float(x,prec,style)
     {if(! isFinite(x))
       {if(isNaN(x))return caml_string_of_jsstring("nan");
        return caml_string_of_jsstring(x > 0?"infinity":"-infinity")}
      var sign=x == 0 && 1 / x == - Infinity?1:x >= 0?0:1;
      if(sign)x = - x;
      var exp=0;
      if(x == 0)
       ;
      else
       if(x < 1)
        while(x < 1 && exp > - 1022){x *= 2;exp--}
       else
        while(x >= 2){x /= 2;exp++}
      var exp_sign=exp < 0?"":"+",sign_str="";
      if(sign)
       sign_str = "-";
      else
       switch(style)
        {case 43:sign_str = "+";break;
         case 32:sign_str = " ";break;
         default:break}
      if(prec >= 0 && prec < 13)
       {var cst=Math.pow(2,prec * 4);x = Math.round(x * cst) / cst}
      var x_str=x.toString(16);
      if(prec >= 0)
       {var idx=x_str.indexOf(".");
        if(idx < 0)
         x_str += "." + caml_str_repeat(prec,"0");
        else
         {var size=idx + 1 + prec;
          if(x_str.length < size)
           x_str += caml_str_repeat(size - x_str.length,"0");
          else
           x_str = x_str.substr(0,size)}}
      return caml_string_of_jsstring
              (sign_str + "0x" + x_str + "p" + exp_sign + exp.toString(10))}
    function caml_js_wrap_meth_callback_strict(arity,f)
     {return function()
       {var args=new Array(arity + 1),len=Math.min(arguments.length,arity);
        args[0] = this;
        for(var i=0;i < len;i++)args[i + 1] = arguments[i];
        return caml_call_gen(f,args)}}
    function ml_z_format(fmt,z1)
     {z1 = bigInt(z1);
      var
       fmt=fmt.toString(),
       base=10,
       cas=0,
       width=0,
       alt=0,
       dir=0,
       sign="",
       pad=" ",
       idx=0,
       prefix="";
      while(fmt[idx] == "%")idx++;
      for(;;idx++)
       if(fmt[idx] == "#")
        alt = 1;
       else
        if(fmt[idx] == "0")
         pad = "0";
        else
         if(fmt[idx] == "-")
          dir = 1;
         else
          if(fmt[idx] == " " || fmt[idx] == "+")sign = fmt[idx];else break;
      if(z1.lt(bigInt(0))){sign = "-";z1 = z1.negate()}
      for(;fmt[idx] >= "0" && fmt[idx] <= "9";idx++)
       width = 10 * width + + fmt[idx];
      switch(fmt[idx])
       {case "i":
        case "d":
        case "u":break;
        case "b":base = 2;if(alt)prefix = "0b";break;
        case "o":base = 8;if(alt)prefix = "0o";break;
        case "x":base = 16;if(alt)prefix = "0x";break;
        case "X":base = 16;if(alt)prefix = "0X";cas = 1;break;
        default:caml_failwith("Unsupported format '" + fmt + "'")}
      if(dir)pad = " ";
      var res=z1.toString(base);
      if(cas === 1)res = res.toUpperCase();
      var size=res.length;
      if(pad == " ")
       if(dir)
        {res = sign + prefix + res;for(;res.length < width;)res = res + pad}
       else
        {res = sign + prefix + res;for(;res.length < width;)res = pad + res}
      else
       {var pre=sign + prefix;
        for(;res.length + pre.length < width;)res = pad + res;
        res = pre + res}
      return caml_new_string(res)}
    function ml_z_size(z1)
     {return bigInt(z1).toArray(Math.pow(2,32)).value.length}
    function ml_z_to_int64(z1)
     {z1 = bigInt(z1);
      if(! ml_z_fits_int64(z1))
       caml_raise_constant(caml_named_value("ml_z_overflow"));
      var
       a=z1.and(bigInt(0xffffff)).toJSNumber() | 0,
       b=z1.shiftRight(24).and(bigInt(0xffffff)).toJSNumber() | 0,
       c=z1.shiftRight(48).and(bigInt(0xffff)).toJSNumber() | 0,
       x=[255,a,b,c];
      return x}
    function caml_backtrace_status(){return 0}
    function caml_install_signal_handler(){return 0}
    function caml_sys_argv(a){return caml_argv}
    function caml_ba_fill(ba,v){ba.fill(v);return 0}
    function caml_modf_float(x)
     {if(isFinite(x))
       {var neg=1 / x < 0;
        x = Math.abs(x);
        var i=Math.floor(x),f=x - i;
        if(neg){i = - i;f = - f}
        return [0,f,i]}
      if(isNaN(x))return [0,NaN,NaN];
      return [0,1 / x,x]}
    function caml_gc_get(){return [0,0,0,0,0,0,0,0,0]}
    function caml_float_compare(x,y)
     {if(x === y)return 0;
      if(x < y)return - 1;
      if(x > y)return 1;
      if(x === x)return 1;
      if(y === y)return - 1;
      return 0}
    function ml_z_shift_right_trunc(z1,z2)
     {return ml_z_div(bigInt(z1),bigInt(2).pow(z2))}
    function caml_string_set32(s,i,i32){return caml_bytes_set32(s,i,i32)}
    function caml_parse_engine(tables,env,cmd,arg)
     {var
       ERRCODE=256,
       loop=6,
       testshift=7,
       shift=8,
       shift_recover=9,
       reduce=10,
       READ_TOKEN=0,
       RAISE_PARSE_ERROR=1,
       GROW_STACKS_1=2,
       GROW_STACKS_2=3,
       COMPUTE_SEMANTIC_ACTION=4,
       CALL_ERROR_FUNCTION=5,
       env_s_stack=1,
       env_v_stack=2,
       env_symb_start_stack=3,
       env_symb_end_stack=4,
       env_stacksize=5,
       env_stackbase=6,
       env_curr_char=7,
       env_lval=8,
       env_symb_start=9,
       env_symb_end=10,
       env_asp=11,
       env_rule_len=12,
       env_rule_number=13,
       env_sp=14,
       env_state=15,
       env_errflag=16,
       tbl_transl_const=2,
       tbl_transl_block=3,
       tbl_lhs=4,
       tbl_len=5,
       tbl_defred=6,
       tbl_dgoto=7,
       tbl_sindex=8,
       tbl_rindex=9,
       tbl_gindex=10,
       tbl_tablesize=11,
       tbl_table=12,
       tbl_check=13;
      if(! tables.dgoto)
       {tables.defred = caml_lex_array(tables[tbl_defred]);
        tables.sindex = caml_lex_array(tables[tbl_sindex]);
        tables.check = caml_lex_array(tables[tbl_check]);
        tables.rindex = caml_lex_array(tables[tbl_rindex]);
        tables.table = caml_lex_array(tables[tbl_table]);
        tables.len = caml_lex_array(tables[tbl_len]);
        tables.lhs = caml_lex_array(tables[tbl_lhs]);
        tables.gindex = caml_lex_array(tables[tbl_gindex]);
        tables.dgoto = caml_lex_array(tables[tbl_dgoto])}
      var
       res=0,
       n,
       n1,
       n2,
       state1,
       sp=env[env_sp],
       state=env[env_state],
       errflag=env[env_errflag];
      exit:
      for(;;)
       switch(cmd)
        {case 0:state = 0;errflag = 0;
         case 6:
          n = tables.defred[state];
          if(n != 0){cmd = reduce;break}
          if(env[env_curr_char] >= 0){cmd = testshift;break}
          res = READ_TOKEN;
          break exit;
         case 1:
          if(arg instanceof Array)
           {env[env_curr_char] = tables[tbl_transl_block][arg[0] + 1];
            env[env_lval] = arg[1]}
          else
           {env[env_curr_char] = tables[tbl_transl_const][arg + 1];
            env[env_lval] = 0}
         case 7:
          n1 = tables.sindex[state];
          n2 = n1 + env[env_curr_char];
          if
           (n1
            !=
            0
            &&
            n2
            >=
            0
            &&
            n2
            <=
            tables[tbl_tablesize]
            &&
            tables.check[n2]
            ==
            env[env_curr_char])
           {cmd = shift;break}
          n1 = tables.rindex[state];
          n2 = n1 + env[env_curr_char];
          if
           (n1
            !=
            0
            &&
            n2
            >=
            0
            &&
            n2
            <=
            tables[tbl_tablesize]
            &&
            tables.check[n2]
            ==
            env[env_curr_char])
           {n = tables.table[n2];cmd = reduce;break}
          if(errflag <= 0){res = CALL_ERROR_FUNCTION;break exit}
         case 5:
          if(errflag < 3)
           {errflag = 3;
            for(;;)
             {state1 = env[env_s_stack][sp + 1];
              n1 = tables.sindex[state1];
              n2 = n1 + ERRCODE;
              if
               (n1
                !=
                0
                &&
                n2
                >=
                0
                &&
                n2
                <=
                tables[tbl_tablesize]
                &&
                tables.check[n2]
                ==
                ERRCODE)
               {cmd = shift_recover;break}
              else
               {if(sp <= env[env_stackbase])return RAISE_PARSE_ERROR;sp--}}}
          else
           {if(env[env_curr_char] == 0)return RAISE_PARSE_ERROR;
            env[env_curr_char] = - 1;
            cmd = loop;
            break}
         case 8:env[env_curr_char] = - 1;if(errflag > 0)errflag--;
         case 9:
          state = tables.table[n2];
          sp++;
          if(sp >= env[env_stacksize]){res = GROW_STACKS_1;break exit}
         case 2:
          env[env_s_stack][sp + 1] = state;
          env[env_v_stack][sp + 1] = env[env_lval];
          env[env_symb_start_stack][sp + 1] = env[env_symb_start];
          env[env_symb_end_stack][sp + 1] = env[env_symb_end];
          cmd = loop;
          break;
         case 10:
          var m=tables.len[n];
          env[env_asp] = sp;
          env[env_rule_number] = n;
          env[env_rule_len] = m;
          sp = sp - m + 1;
          m = tables.lhs[n];
          state1 = env[env_s_stack][sp];
          n1 = tables.gindex[m];
          n2 = n1 + state1;
          if
           (n1
            !=
            0
            &&
            n2
            >=
            0
            &&
            n2
            <=
            tables[tbl_tablesize]
            &&
            tables.check[n2]
            ==
            state1)
           state = tables.table[n2];
          else
           state = tables.dgoto[m];
          if(sp >= env[env_stacksize]){res = GROW_STACKS_2;break exit}
         case 3:res = COMPUTE_SEMANTIC_ACTION;break exit;
         case 4:
          env[env_s_stack][sp + 1] = state;
          env[env_v_stack][sp + 1] = arg;
          var asp=env[env_asp];
          env[env_symb_end_stack][sp + 1] = env[env_symb_end_stack][asp + 1];
          if(sp > asp)
           env[env_symb_start_stack][sp + 1]
           =
           env[env_symb_end_stack][asp + 1];
          cmd = loop;
          break;
         default:return RAISE_PARSE_ERROR}
      env[env_sp] = sp;
      env[env_state] = state;
      env[env_errflag] = errflag;
      return res}
    function caml_array_fill(array,ofs,len,v)
     {for(var i=0;i < len;i++)array[ofs + i + 1] = v;return 0}
    function ml_z_install_frametable(unit){return 0}
    function caml_string_notequal(s1,s2){return 1 - caml_string_equal(s1,s2)}
    function caml_bytes_greaterthan(s1,s2){return caml_bytes_lessthan(s2,s1)}
    function caml_gr_make_image(arr)
     {var
       s=caml_gr_state_get(),
       h=arr.length - 1,
       w=arr[1].length - 1,
       im=s.context.createImageData(w,h);
      for(var i=0;i < h;i++)
       for(var j=0;j < w;j++)
        {var c=arr[i + 1][j + 1],o=i * (w * 4) + j * 4;
         if(c == - 1)
          {im.data[o + 0] = 0;
           im.data[o + 1] = 0;
           im.data[o + 2] = 0;
           im.data[o + 3] = 0}
         else
          {im.data[o + 0] = c >> 16 & 0xff;
           im.data[o + 1] = c >> 8 & 0xff;
           im.data[o + 2] = c >> 0 & 0Xff;
           im.data[o + 3] = 0xff}}
      return im}
    function Base_int_math_int_popcount(v)
     {v = v - (v >>> 1 & 0x55555555);
      v = (v & 0x33333333) + (v >>> 2 & 0x33333333);
      return (v + (v >>> 4) & 0xF0F0F0F) * 0x1010101 >>> 24}
    function caml_ml_set_channel_output(chanid,f)
     {var chan=caml_ml_channels[chanid];
      caml_global_data.fds[chan.fd].output = f;
      return 0}
    function caml_read_file_content(name)
     {var root=resolve_fs_device(name);
      if(root.device.exists(root.rest))
       {var
         file=root.device.open(root.rest,{rdonly:1}),
         len=file.length(),
         buf=caml_create_bytes(len);
        file.read(0,buf,0,len);
        return caml_string_of_bytes(buf)}
      caml_raise_no_such_file(name)}
    function caml_js_to_float(x){return x}
    joo_global_object.jsoo_runtime
    =
    {caml_ojs_iterate_properties:caml_ojs_iterate_properties,
     caml_ojs_wrap_fun_arguments:caml_ojs_wrap_fun_arguments,
     caml_check_alignment_bigstring:caml_check_alignment_bigstring,
     caml_fill_bigstring:caml_fill_bigstring,
     caml_compare_bigstring:caml_compare_bigstring,
     caml_blit_string_to_bigstring:caml_blit_string_to_bigstring,
     caml_blit_bigstring_to_string:caml_blit_bigstring_to_string,
     caml_blit_bigstring_to_bigstring:caml_blit_bigstring_to_bigstring,
     Base_am_testing:Base_am_testing,
     Base_hash_double:Base_hash_double,
     Base_hash_string:Base_hash_string,
     Base_int_math_int64_pow_stub:Base_int_math_int64_pow_stub,
     Base_int_math_int_pow_stub:Base_int_math_int_pow_stub,
     Base_int_math_int64_clz:Base_int_math_int64_clz,
     Base_int_math_nativeint_clz:Base_int_math_nativeint_clz,
     Base_int_math_int_clz:Base_int_math_int_clz,
     Base_int_math_int32_clz:Base_int_math_int32_clz,
     Base_clear_caml_backtrace_pos:Base_clear_caml_backtrace_pos,
     Base_int_math_int_popcount:Base_int_math_int_popcount,
     Base_internalhash_get_hash_value:Base_internalhash_get_hash_value,
     Base_internalhash_fold_string:Base_internalhash_fold_string,
     Base_internalhash_fold_float:Base_internalhash_fold_float,
     Base_internalhash_fold_int:Base_internalhash_fold_int,
     Base_internalhash_fold_int64:Base_internalhash_fold_int64,
     caml_zarith_unmarshal:caml_zarith_unmarshal,
     caml_zarith_marshal:caml_zarith_marshal,
     ml_z_divexact:ml_z_divexact,
     ml_z_size:ml_z_size,
     ml_z_hamdist:ml_z_hamdist,
     ml_z_popcount:ml_z_popcount,
     ml_z_trailing_zeros:ml_z_trailing_zeros,
     ml_z_sqrt_rem:ml_z_sqrt_rem,
     ml_z_sqrt:ml_z_sqrt,
     ml_z_gcdext_intern:ml_z_gcdext_intern,
     ml_z_extract:ml_z_extract,
     ml_z_nextprime:ml_z_nextprime,
     ml_z_probab_prime:ml_z_probab_prime,
     ml_z_perfect_square:ml_z_perfect_square,
     ml_z_perfect_power:ml_z_perfect_power,
     ml_z_invert:ml_z_invert,
     ml_z_root:ml_z_root,
     ml_z_powm_sec:ml_z_powm_sec,
     ml_z_of_bits:ml_z_of_bits,
     ml_z_to_bits:ml_z_to_bits,
     ml_z_hash:ml_z_hash,
     ml_z_pow:ml_z_pow,
     ml_z_powm:ml_z_powm,
     ml_z_fits_nativeint:ml_z_fits_nativeint,
     ml_z_fits_int64:ml_z_fits_int64,
     ml_z_fits_int32:ml_z_fits_int32,
     ml_z_fits_int:ml_z_fits_int,
     ml_z_numbits:ml_z_numbits,
     ml_z_gcd:ml_z_gcd,
     ml_z_sign:ml_z_sign,
     ml_z_equal:ml_z_equal,
     ml_z_compare:ml_z_compare,
     ml_z_of_substring_base:ml_z_of_substring_base,
     jsoo_z_of_js_string_base:jsoo_z_of_js_string_base,
     ml_z_format:ml_z_format,
     ml_z_to_nativeint:ml_z_to_nativeint,
     ml_z_testbit:ml_z_testbit,
     ml_z_to_int64:ml_z_to_int64,
     ml_z_to_int32:ml_z_to_int32,
     ml_z_to_int:ml_z_to_int,
     ml_z_of_float:ml_z_of_float,
     ml_z_of_int64:ml_z_of_int64,
     ml_z_of_nativeint:ml_z_of_nativeint,
     ml_z_of_int32:ml_z_of_int32,
     ml_z_of_int:ml_z_of_int,
     ml_z_shift_right_trunc:ml_z_shift_right_trunc,
     ml_z_shift_right:ml_z_shift_right,
     ml_z_shift_left:ml_z_shift_left,
     ml_z_lognot:ml_z_lognot,
     ml_z_logxor:ml_z_logxor,
     ml_z_logor:ml_z_logor,
     ml_z_logand:ml_z_logand,
     ml_z_abs:ml_z_abs,
     ml_z_pred:ml_z_pred,
     ml_z_succ:ml_z_succ,
     ml_z_div_rem:ml_z_div_rem,
     ml_z_rem:ml_z_rem,
     ml_z_fdiv:ml_z_fdiv,
     ml_z_cdiv:ml_z_cdiv,
     ml_z_div:ml_z_div,
     ml_z_mul:ml_z_mul,
     ml_z_sub:ml_z_sub,
     ml_z_add:ml_z_add,
     ml_z_neg:ml_z_neg,
     ml_z_install_frametable:ml_z_install_frametable,
     ml_z_init:ml_z_init,
     ml_z_normalize:ml_z_normalize,
     bigInt:bigInt,
     caml_ephe_check_data:caml_ephe_check_data,
     caml_ephe_unset_data:caml_ephe_unset_data,
     caml_ephe_set_data:caml_ephe_set_data,
     caml_ephe_get_data_copy:caml_ephe_get_data_copy,
     caml_ephe_get_data:caml_ephe_get_data,
     caml_ephe_blit_data:caml_ephe_blit_data,
     caml_ephe_unset_key:caml_ephe_unset_key,
     caml_ephe_set_key:caml_ephe_set_key,
     caml_ephe_check_key:caml_ephe_check_key,
     caml_ephe_get_key_copy:caml_ephe_get_key_copy,
     caml_ephe_get_key:caml_ephe_get_key,
     caml_ephe_blit_key:caml_ephe_blit_key,
     caml_ephe_create:caml_ephe_create,
     caml_weak_blit:caml_weak_blit,
     caml_weak_check:caml_weak_check,
     caml_weak_get_copy:caml_weak_get_copy,
     caml_weak_get:caml_weak_get,
     caml_weak_set:caml_weak_set,
     caml_weak_create:caml_weak_create,
     caml_ephe_data_offset:caml_ephe_data_offset,
     caml_ephe_key_offset:caml_ephe_key_offset,
     unix_isatty:unix_isatty,
     win_handle_fd:win_handle_fd,
     win_cleanup:win_cleanup,
     win_startup:win_startup,
     unix_mktime:unix_mktime,
     unix_localtime:unix_localtime,
     unix_gmtime:unix_gmtime,
     unix_time:unix_time,
     unix_gettimeofday:unix_gettimeofday,
     re_replacement_text:re_replacement_text,
     re_partial_match:re_partial_match,
     re_string_match:re_string_match,
     re_search_backward:re_search_backward,
     re_search_forward:re_search_forward,
     re_match:re_match,
     caml_spacetime_only_works_for_native_code:
     caml_spacetime_only_works_for_native_code,
     caml_register_channel_for_spacetime:caml_register_channel_for_spacetime,
     caml_spacetime_enabled:caml_spacetime_enabled,
     caml_ml_runtime_warnings_enabled:caml_ml_runtime_warnings_enabled,
     caml_ml_enable_runtime_warnings:caml_ml_enable_runtime_warnings,
     caml_runtime_warnings:caml_runtime_warnings,
     unix_inet_addr_of_string:unix_inet_addr_of_string,
     caml_install_signal_handler:caml_install_signal_handler,
     caml_runtime_parameters:caml_runtime_parameters,
     caml_runtime_variant:caml_runtime_variant,
     caml_sys_isatty:caml_sys_isatty,
     caml_sys_get_config:caml_sys_get_config,
     caml_sys_const_backend_type:caml_sys_const_backend_type,
     caml_sys_const_ostype_cygwin:caml_sys_const_ostype_cygwin,
     caml_sys_const_ostype_win32:caml_sys_const_ostype_win32,
     caml_sys_const_ostype_unix:caml_sys_const_ostype_unix,
     caml_sys_const_max_wosize:caml_sys_const_max_wosize,
     caml_sys_const_int_size:caml_sys_const_int_size,
     caml_sys_const_word_size:caml_sys_const_word_size,
     caml_sys_const_big_endian:caml_sys_const_big_endian,
     caml_sys_random_seed:caml_sys_random_seed,
     caml_sys_time:caml_sys_time,
     caml_sys_system_command:caml_sys_system_command,
     caml_sys_executable_name:caml_sys_executable_name,
     caml_sys_modify_argv:caml_sys_modify_argv,
     caml_sys_argv:caml_sys_argv,
     caml_sys_get_argv:caml_sys_get_argv,
     caml_executable_name:caml_executable_name,
     caml_argv:caml_argv,
     caml_sys_getenv:caml_sys_getenv,
     caml_set_static_env:caml_set_static_env,
     caml_sys_exit:caml_sys_exit,
     caml_raise_sys_error:caml_raise_sys_error,
     caml_is_printable:caml_is_printable,
     caml_get_global_data:caml_get_global_data,
     caml_register_global:caml_register_global,
     caml_global_data:caml_global_data,
     caml_named_value:caml_named_value,
     caml_register_named_value:caml_register_named_value,
     caml_named_values:caml_named_values,
     caml_call_gen:caml_call_gen,
     caml_set_parser_trace:caml_set_parser_trace,
     caml_parse_engine:caml_parse_engine,
     caml_fresh_oo_id:caml_fresh_oo_id,
     caml_set_oo_id:caml_set_oo_id,
     caml_oo_last_id:caml_oo_last_id,
     caml_get_public_method:caml_get_public_method,
     caml_lazy_make_forward:caml_lazy_make_forward,
     caml_obj_make_forward:caml_obj_make_forward,
     caml_obj_truncate:caml_obj_truncate,
     caml_obj_dup:caml_obj_dup,
     caml_obj_with_tag:caml_obj_with_tag,
     caml_obj_block:caml_obj_block,
     caml_obj_set_tag:caml_obj_set_tag,
     caml_obj_tag:caml_obj_tag,
     caml_obj_is_block:caml_obj_is_block,
     caml_update_dummy:caml_update_dummy,
     deserialize_nat:deserialize_nat,
     serialize_nat:serialize_nat,
     lxor_digit_nat:lxor_digit_nat,
     lor_digit_nat:lor_digit_nat,
     land_digit_nat:land_digit_nat,
     compare_nat_real:compare_nat_real,
     compare_nat:compare_nat,
     compare_digits_nat:compare_digits_nat,
     shift_right_nat:shift_right_nat,
     div_nat:div_nat,
     div_digit_nat:div_digit_nat,
     div_helper:div_helper,
     shift_left_nat:shift_left_nat,
     square_nat:square_nat,
     mult_nat:mult_nat,
     mult_digit_nat:mult_digit_nat,
     sub_nat:sub_nat,
     decr_nat:decr_nat,
     complement_nat:complement_nat,
     add_nat:add_nat,
     incr_nat:incr_nat,
     is_digit_odd:is_digit_odd,
     is_digit_zero:is_digit_zero,
     is_digit_int:is_digit_int,
     num_leading_zero_bits_in_digit:num_leading_zero_bits_in_digit,
     num_digits_nat:num_digits_nat,
     nth_digit_nat_native:nth_digit_nat_native,
     set_digit_nat_native:set_digit_nat_native,
     nth_digit_nat:nth_digit_nat,
     set_digit_nat:set_digit_nat,
     blit_nat:blit_nat,
     set_to_zero_nat:set_to_zero_nat,
     create_nat:create_nat,
     nat_of_array:nat_of_array,
     caml_hash_nat:caml_hash_nat,
     MlNat:MlNat,
     initialize_nat:initialize_nat,
     caml_js_to_string:caml_js_to_string,
     caml_to_js_string:caml_to_js_string,
     caml_js_from_string:caml_js_from_string,
     caml_new_string:caml_new_string,
     caml_js_to_byte_string:caml_js_to_byte_string,
     caml_is_ml_string:caml_is_ml_string,
     caml_is_ml_bytes:caml_is_ml_bytes,
     caml_string_of_jsstring:caml_string_of_jsstring,
     caml_jsstring_of_string:caml_jsstring_of_string,
     caml_jsbytes_of_string:caml_jsbytes_of_string,
     caml_string_of_jsbytes:caml_string_of_jsbytes,
     caml_bytes_of_string:caml_bytes_of_string,
     caml_string_of_bytes:caml_string_of_bytes,
     caml_string_lessthan:caml_string_lessthan,
     caml_string_lessequal:caml_string_lessequal,
     caml_string_equal:caml_string_equal,
     caml_string_compare:caml_string_compare,
     caml_ml_string_length:caml_ml_string_length,
     caml_string_unsafe_set:caml_string_unsafe_set,
     caml_string_unsafe_get:caml_string_unsafe_get,
     caml_bytes_of_jsbytes:caml_bytes_of_jsbytes,
     caml_ml_bytes_length:caml_ml_bytes_length,
     caml_blit_string:caml_blit_string,
     caml_blit_bytes:caml_blit_bytes,
     caml_fill_string:caml_fill_string,
     caml_fill_bytes:caml_fill_bytes,
     caml_bytes_greaterthan:caml_bytes_greaterthan,
     caml_string_greaterthan:caml_string_greaterthan,
     caml_bytes_greaterequal:caml_bytes_greaterequal,
     caml_string_greaterequal:caml_string_greaterequal,
     caml_bytes_lessthan:caml_bytes_lessthan,
     caml_bytes_lessequal:caml_bytes_lessequal,
     caml_bytes_notequal:caml_bytes_notequal,
     caml_string_notequal:caml_string_notequal,
     caml_bytes_equal:caml_bytes_equal,
     caml_bytes_compare:caml_bytes_compare,
     caml_bytes_of_array:caml_bytes_of_array,
     caml_string_of_array:caml_string_of_array,
     caml_create_bytes:caml_create_bytes,
     caml_create_string:caml_create_string,
     caml_array_of_string:caml_array_of_string,
     caml_array_of_bytes:caml_array_of_bytes,
     caml_convert_bytes_to_array:caml_convert_bytes_to_array,
     caml_convert_string_to_bytes:caml_convert_string_to_bytes,
     MlBytes:MlBytes,
     caml_bytes_of_utf16_jsstring:caml_bytes_of_utf16_jsstring,
     caml_bytes_set:caml_bytes_set,
     caml_string_set64:caml_string_set64,
     caml_bytes_set64:caml_bytes_set64,
     caml_string_set32:caml_string_set32,
     caml_bytes_set32:caml_bytes_set32,
     caml_string_set16:caml_string_set16,
     caml_bytes_set16:caml_bytes_set16,
     caml_string_set:caml_string_set,
     caml_bytes_get:caml_bytes_get,
     caml_bytes_get64:caml_bytes_get64,
     caml_string_get64:caml_string_get64,
     caml_bytes_get32:caml_bytes_get32,
     caml_string_get32:caml_string_get32,
     caml_bytes_get16:caml_bytes_get16,
     caml_string_get16:caml_string_get16,
     caml_string_get:caml_string_get,
     caml_bytes_bound_error:caml_bytes_bound_error,
     caml_string_bound_error:caml_string_bound_error,
     caml_bytes_unsafe_set:caml_bytes_unsafe_set,
     caml_bytes_unsafe_get:caml_bytes_unsafe_get,
     jsoo_is_ascii:jsoo_is_ascii,
     caml_utf16_of_utf8:caml_utf16_of_utf8,
     caml_utf8_of_utf16:caml_utf8_of_utf16,
     caml_subarray_to_jsbytes:caml_subarray_to_jsbytes,
     caml_str_repeat:caml_str_repeat,
     caml_md5_bytes:caml_md5_bytes,
     caml_md5_string:caml_md5_string,
     caml_md5_chan:caml_md5_chan,
     caml_output_value_to_buffer:caml_output_value_to_buffer,
     caml_output_value_to_bytes:caml_output_value_to_bytes,
     caml_output_value_to_string:caml_output_value_to_string,
     caml_output_val:caml_output_val,
     caml_legacy_custom_code:caml_legacy_custom_code,
     MlObjectTable:MlObjectTable,
     caml_marshal_data_size:caml_marshal_data_size,
     caml_input_value_from_reader:caml_input_value_from_reader,
     caml_custom_ops:caml_custom_ops,
     caml_nativeint_unmarshal:caml_nativeint_unmarshal,
     caml_int32_unmarshal:caml_int32_unmarshal,
     caml_int64_marshal:caml_int64_marshal,
     caml_int64_unmarshal:caml_int64_unmarshal,
     caml_input_value_from_bytes:caml_input_value_from_bytes,
     caml_input_value_from_string:caml_input_value_from_string,
     caml_float_of_bytes:caml_float_of_bytes,
     BigStringReader:BigStringReader,
     MlStringReader:MlStringReader,
     caml_marshal_constants:caml_marshal_constants,
     caml_new_lex_engine:caml_new_lex_engine,
     caml_lex_engine:caml_lex_engine,
     caml_lex_array:caml_lex_array,
     caml_js_export_var:caml_js_export_var,
     caml_js_object:caml_js_object,
     caml_pure_js_expr:caml_pure_js_expr,
     caml_js_expr:caml_js_expr,
     caml_js_eval_string:caml_js_eval_string,
     caml_js_equals:caml_js_equals,
     caml_js_wrap_meth_callback_unsafe:caml_js_wrap_meth_callback_unsafe,
     caml_js_wrap_meth_callback_strict:caml_js_wrap_meth_callback_strict,
     caml_js_wrap_meth_callback_arguments:caml_js_wrap_meth_callback_arguments,
     caml_js_wrap_meth_callback:caml_js_wrap_meth_callback,
     caml_js_wrap_callback_strict:caml_js_wrap_callback_strict,
     caml_js_wrap_callback_arguments:caml_js_wrap_callback_arguments,
     caml_js_wrap_callback:caml_js_wrap_callback,
     caml_ojs_new_arr:caml_ojs_new_arr,
     caml_js_new:caml_js_new,
     caml_js_meth_call:caml_js_meth_call,
     caml_js_fun_call:caml_js_fun_call,
     caml_js_call:caml_js_call,
     caml_js_var:caml_js_var,
     caml_list_to_js_array:caml_list_to_js_array,
     caml_list_of_js_array:caml_list_of_js_array,
     caml_js_to_array:caml_js_to_array,
     caml_js_from_array:caml_js_from_array,
     caml_js_to_float:caml_js_to_float,
     caml_js_from_float:caml_js_from_float,
     caml_js_to_bool:caml_js_to_bool,
     caml_js_from_bool:caml_js_from_bool,
     caml_js_error_of_exception:caml_js_error_of_exception,
     caml_exn_with_js_backtrace:caml_exn_with_js_backtrace,
     caml_wrap_exception:caml_wrap_exception,
     caml_is_js:caml_is_js,
     js_print_stderr:js_print_stderr,
     js_print_stdout:js_print_stdout,
     caml_trampoline_return:caml_trampoline_return,
     caml_trampoline:caml_trampoline,
     caml_js_get_console:caml_js_get_console,
     caml_js_html_entities:caml_js_html_entities,
     caml_js_html_escape:caml_js_html_escape,
     caml_js_on_ie:caml_js_on_ie,
     caml_js_typeof:caml_js_typeof,
     caml_js_instanceof:caml_js_instanceof,
     caml_js_delete:caml_js_delete,
     caml_js_get:caml_js_get,
     caml_js_set:caml_js_set,
     caml_js_pure_expr:caml_js_pure_expr,
     caml_ml_output_int:caml_ml_output_int,
     caml_ml_pos_out_64:caml_ml_pos_out_64,
     caml_ml_pos_out:caml_ml_pos_out,
     caml_ml_seek_out_64:caml_ml_seek_out_64,
     caml_ml_seek_out:caml_ml_seek_out,
     caml_output_value:caml_output_value,
     caml_ml_output_char:caml_ml_output_char,
     caml_ml_output:caml_ml_output,
     caml_ml_output_bytes:caml_ml_output_bytes,
     caml_ml_flush:caml_ml_flush,
     caml_ml_input_scan_line:caml_ml_input_scan_line,
     caml_ml_pos_in_64:caml_ml_pos_in_64,
     caml_ml_pos_in:caml_ml_pos_in,
     caml_ml_seek_in_64:caml_ml_seek_in_64,
     caml_ml_seek_in:caml_ml_seek_in,
     caml_ml_input_int:caml_ml_input_int,
     caml_ml_input_char:caml_ml_input_char,
     caml_input_value:caml_input_value,
     caml_ml_input:caml_ml_input,
     caml_ml_may_refill_input:caml_ml_may_refill_input,
     caml_ml_refill_input:caml_ml_refill_input,
     caml_ml_set_channel_refill:caml_ml_set_channel_refill,
     caml_ml_set_channel_output:caml_ml_set_channel_output,
     caml_ml_channel_size_64:caml_ml_channel_size_64,
     caml_ml_channel_size:caml_ml_channel_size,
     caml_ml_close_channel:caml_ml_close_channel,
     caml_ml_set_binary_mode:caml_ml_set_binary_mode,
     caml_ml_open_descriptor_in:caml_ml_open_descriptor_in,
     caml_ml_open_descriptor_out:caml_ml_open_descriptor_out,
     caml_ml_out_channels_list:caml_ml_out_channels_list,
     caml_ml_channels:caml_ml_channels,
     caml_ml_set_channel_name:caml_ml_set_channel_name,
     caml_sys_open:caml_sys_open,
     caml_std_output:caml_std_output,
     caml_sys_close:caml_sys_close,
     caml_int64_bswap:caml_int64_bswap,
     caml_int32_bswap:caml_int32_bswap,
     caml_bswap16:caml_bswap16,
     caml_mod:caml_mod,
     caml_div:caml_div,
     caml_mul:caml_mul,
     caml_int_of_string:caml_int_of_string,
     caml_parse_digit:caml_parse_digit,
     caml_parse_sign_and_base:caml_parse_sign_and_base,
     caml_format_int:caml_format_int,
     caml_CamlinternalMod_update_mod:caml_CamlinternalMod_update_mod,
     caml_CamlinternalMod_init_mod:caml_CamlinternalMod_init_mod,
     caml_int64_hash:caml_int64_hash,
     caml_int64_to_bytes:caml_int64_to_bytes,
     caml_int64_of_bytes:caml_int64_of_bytes,
     caml_int64_hi32:caml_int64_hi32,
     caml_int64_lo32:caml_int64_lo32,
     caml_int64_create_lo_hi:caml_int64_create_lo_hi,
     caml_int64_create_lo_mi_hi:caml_int64_create_lo_mi_hi,
     caml_int64_of_string:caml_int64_of_string,
     caml_int64_format:caml_int64_format,
     caml_int64_of_float:caml_int64_of_float,
     caml_int64_to_float:caml_int64_to_float,
     caml_int64_to_int32:caml_int64_to_int32,
     caml_int64_of_int32:caml_int64_of_int32,
     caml_int64_mod:caml_int64_mod,
     caml_int64_div:caml_int64_div,
     caml_int64_shift_right:caml_int64_shift_right,
     caml_int64_shift_right_unsigned:caml_int64_shift_right_unsigned,
     caml_int64_shift_left:caml_int64_shift_left,
     caml_int64_xor:caml_int64_xor,
     caml_int64_or:caml_int64_or,
     caml_int64_and:caml_int64_and,
     caml_int64_is_negative:caml_int64_is_negative,
     caml_int64_is_zero:caml_int64_is_zero,
     caml_int64_mul:caml_int64_mul,
     caml_int64_sub:caml_int64_sub,
     caml_int64_add:caml_int64_add,
     caml_int64_neg:caml_int64_neg,
     caml_int64_compare:caml_int64_compare,
     caml_int64_ult:caml_int64_ult,
     MlInt64:MlInt64,
     caml_int64_offset:caml_int64_offset,
     caml_float_of_string:caml_float_of_string,
     caml_format_float:caml_format_float,
     caml_round_float:caml_round_float,
     caml_tanh_float:caml_tanh_float,
     caml_sinh_float:caml_sinh_float,
     caml_cosh_float:caml_cosh_float,
     caml_log10_float:caml_log10_float,
     caml_hypot_float:caml_hypot_float,
     caml_log1p_float:caml_log1p_float,
     caml_expm1_float:caml_expm1_float,
     caml_signbit_float:caml_signbit_float,
     caml_copysign_float:caml_copysign_float,
     caml_float_compare:caml_float_compare,
     caml_frexp_float:caml_frexp_float,
     caml_ldexp_float:caml_ldexp_float,
     caml_modf_float:caml_modf_float,
     caml_classify_float:caml_classify_float,
     caml_int32_float_of_bits:caml_int32_float_of_bits,
     caml_trunc_float:caml_trunc_float,
     caml_nextafter_float:caml_nextafter_float,
     caml_int64_float_of_bits:caml_int64_float_of_bits,
     caml_hexstring_of_float:caml_hexstring_of_float,
     caml_int32_bits_of_float:caml_int32_bits_of_float,
     caml_int64_bits_of_float:caml_int64_bits_of_float,
     jsoo_floor_log2:jsoo_floor_log2,
     caml_hash:caml_hash,
     caml_hash_mix_string:caml_hash_mix_string,
     caml_hash_mix_bytes:caml_hash_mix_bytes,
     caml_hash_mix_bytes_arr:caml_hash_mix_bytes_arr,
     caml_hash_mix_jsbytes:caml_hash_mix_jsbytes,
     caml_hash_mix_int64:caml_hash_mix_int64,
     caml_hash_mix_float:caml_hash_mix_float,
     caml_hash_mix_final:caml_hash_mix_final,
     caml_hash_mix_int:caml_hash_mix_int,
     caml_hash_univ_param:caml_hash_univ_param,
     caml_gr_close_subwindow:caml_gr_close_subwindow,
     caml_gr_open_subwindow:caml_gr_open_subwindow,
     caml_gr_window_id:caml_gr_window_id,
     caml_gr_display_mode:caml_gr_display_mode,
     caml_gr_remember_mode:caml_gr_remember_mode,
     caml_gr_synchronize:caml_gr_synchronize,
     caml_gr_wait_event:caml_gr_wait_event,
     caml_gr_sigio_signal:caml_gr_sigio_signal,
     caml_gr_sigio_handler:caml_gr_sigio_handler,
     caml_gr_blit_image:caml_gr_blit_image,
     caml_gr_create_image:caml_gr_create_image,
     caml_gr_draw_image:caml_gr_draw_image,
     caml_gr_dump_image:caml_gr_dump_image,
     caml_gr_make_image:caml_gr_make_image,
     caml_gr_text_size:caml_gr_text_size,
     caml_gr_set_text_size:caml_gr_set_text_size,
     caml_gr_set_font:caml_gr_set_font,
     caml_gr_draw_string:caml_gr_draw_string,
     caml_gr_draw_char:caml_gr_draw_char,
     caml_gr_draw_str:caml_gr_draw_str,
     caml_gr_fill_arc:caml_gr_fill_arc,
     caml_gr_fill_poly:caml_gr_fill_poly,
     caml_gr_fill_rect:caml_gr_fill_rect,
     caml_gr_set_line_width:caml_gr_set_line_width,
     caml_gr_draw_arc:caml_gr_draw_arc,
     caml_gr_arc_aux:caml_gr_arc_aux,
     caml_gr_draw_rect:caml_gr_draw_rect,
     caml_gr_lineto:caml_gr_lineto,
     caml_gr_current_y:caml_gr_current_y,
     caml_gr_current_x:caml_gr_current_x,
     caml_gr_moveto:caml_gr_moveto,
     caml_gr_point_color:caml_gr_point_color,
     caml_gr_plot:caml_gr_plot,
     caml_gr_set_color:caml_gr_set_color,
     caml_gr_size_y:caml_gr_size_y,
     caml_gr_size_x:caml_gr_size_x,
     caml_gr_clear_graph:caml_gr_clear_graph,
     caml_gr_resize_window:caml_gr_resize_window,
     caml_gr_set_window_title:caml_gr_set_window_title,
     caml_gr_close_graph:caml_gr_close_graph,
     caml_gr_doc_of_state:caml_gr_doc_of_state,
     caml_gr_state_create:caml_gr_state_create,
     caml_gr_state_init:caml_gr_state_init,
     caml_gr_open_graph:caml_gr_open_graph,
     caml_gr_state_set:caml_gr_state_set,
     caml_gr_state_get:caml_gr_state_get,
     caml_gr_state:caml_gr_state,
     caml_final_release:caml_final_release,
     caml_final_register_called_without_value:
     caml_final_register_called_without_value,
     caml_final_register:caml_final_register,
     caml_memprof_set:caml_memprof_set,
     caml_gc_get:caml_gc_get,
     caml_gc_set:caml_gc_set,
     caml_gc_stat:caml_gc_stat,
     caml_gc_quick_stat:caml_gc_quick_stat,
     caml_gc_counters:caml_gc_counters,
     caml_gc_compaction:caml_gc_compaction,
     caml_gc_full_major:caml_gc_full_major,
     caml_gc_major:caml_gc_major,
     caml_gc_minor:caml_gc_minor,
     MlNodeFile:MlNodeFile,
     MlNodeDevice:MlNodeDevice,
     fs_node_supported:fs_node_supported,
     MlFakeFile:MlFakeFile,
     MlFakeDevice:MlFakeDevice,
     caml_read_file_content:caml_read_file_content,
     caml_create_file:caml_create_file,
     caml_fs_init:caml_fs_init,
     caml_create_file_extern:caml_create_file_extern,
     caml_ba_map_file_bytecode:caml_ba_map_file_bytecode,
     caml_ba_map_file:caml_ba_map_file,
     caml_sys_rename:caml_sys_rename,
     caml_sys_is_directory:caml_sys_is_directory,
     caml_sys_remove:caml_sys_remove,
     caml_sys_read_directory:caml_sys_read_directory,
     caml_sys_file_exists:caml_sys_file_exists,
     caml_raise_not_a_dir:caml_raise_not_a_dir,
     caml_raise_no_such_file:caml_raise_no_such_file,
     caml_sys_chdir:caml_sys_chdir,
     caml_sys_getcwd:caml_sys_getcwd,
     caml_unmount:caml_unmount,
     caml_mount_autoload:caml_mount_autoload,
     resolve_fs_device:resolve_fs_device,
     caml_list_mount_point:caml_list_mount_point,
     jsoo_mount_point:jsoo_mount_point,
     caml_make_path:caml_make_path,
     MlFile:MlFile,
     caml_root:caml_root,
     caml_current_dir:caml_current_dir,
     caml_finish_formatting:caml_finish_formatting,
     caml_parse_format:caml_parse_format,
     caml_array_bound_error:caml_array_bound_error,
     caml_raise_not_found:caml_raise_not_found,
     caml_raise_zero_divide:caml_raise_zero_divide,
     caml_raise_end_of_file:caml_raise_end_of_file,
     caml_invalid_argument:caml_invalid_argument,
     caml_failwith:caml_failwith,
     caml_raise_with_string:caml_raise_with_string,
     caml_raise_with_arg:caml_raise_with_arg,
     caml_return_exn_constant:caml_return_exn_constant,
     caml_raise_constant:caml_raise_constant,
     caml_lessthan:caml_lessthan,
     caml_lessequal:caml_lessequal,
     caml_greaterthan:caml_greaterthan,
     caml_greaterequal:caml_greaterequal,
     caml_notequal:caml_notequal,
     caml_equal:caml_equal,
     caml_int_compare:caml_int_compare,
     caml_compare:caml_compare,
     caml_compare_val:caml_compare_val,
     caml_compare_val_number_custom:caml_compare_val_number_custom,
     caml_compare_val_get_custom:caml_compare_val_get_custom,
     caml_compare_val_tag:caml_compare_val_tag,
     caml_bigstring_blit_ba_to_bytes:caml_bigstring_blit_ba_to_bytes,
     caml_bigstring_blit_bytes_to_ba:caml_bigstring_blit_bytes_to_ba,
     caml_bigstring_blit_string_to_ba:caml_bigstring_blit_string_to_ba,
     caml_bigstring_blit_ba_to_ba:caml_bigstring_blit_ba_to_ba,
     caml_bigstring_memcmp:caml_bigstring_memcmp,
     bigstring_of_typed_array:bigstring_of_typed_array,
     bigstring_of_array_buffer:bigstring_of_array_buffer,
     bigstring_to_typed_array:bigstring_to_typed_array,
     bigstring_to_array_buffer:bigstring_to_array_buffer,
     caml_hash_mix_bigstring:caml_hash_mix_bigstring,
     caml_ba_from_typed_array:caml_ba_from_typed_array,
     caml_ba_kind_of_typed_array:caml_ba_kind_of_typed_array,
     caml_ba_to_typed_array:caml_ba_to_typed_array,
     caml_ba_hash:caml_ba_hash,
     caml_ba_create_from:caml_ba_create_from,
     caml_ba_deserialize:caml_ba_deserialize,
     caml_ba_serialize:caml_ba_serialize,
     caml_ba_reshape:caml_ba_reshape,
     caml_ba_slice:caml_ba_slice,
     caml_ba_sub:caml_ba_sub,
     caml_ba_blit:caml_ba_blit,
     caml_ba_fill:caml_ba_fill,
     caml_ba_set_3:caml_ba_set_3,
     caml_ba_set_2:caml_ba_set_2,
     caml_ba_set_1:caml_ba_set_1,
     caml_ba_uint8_set64:caml_ba_uint8_set64,
     caml_ba_uint8_set32:caml_ba_uint8_set32,
     caml_ba_uint8_set16:caml_ba_uint8_set16,
     caml_ba_set_generic:caml_ba_set_generic,
     caml_ba_get_3:caml_ba_get_3,
     caml_ba_get_2:caml_ba_get_2,
     caml_ba_get_1:caml_ba_get_1,
     caml_ba_uint8_get64:caml_ba_uint8_get64,
     caml_ba_uint8_get32:caml_ba_uint8_get32,
     caml_ba_uint8_get16:caml_ba_uint8_get16,
     caml_ba_get_generic:caml_ba_get_generic,
     caml_ba_dim_3:caml_ba_dim_3,
     caml_ba_dim_2:caml_ba_dim_2,
     caml_ba_dim_1:caml_ba_dim_1,
     caml_ba_dim:caml_ba_dim,
     caml_ba_num_dims:caml_ba_num_dims,
     caml_ba_layout:caml_ba_layout,
     caml_ba_kind:caml_ba_kind,
     caml_ba_change_layout:caml_ba_change_layout,
     caml_ba_create:caml_ba_create,
     caml_ba_create_unsafe:caml_ba_create_unsafe,
     caml_ba_compare:caml_ba_compare,
     Ml_Bigarray_c_1_1:Ml_Bigarray_c_1_1,
     Ml_Bigarray:Ml_Bigarray,
     caml_ba_create_buffer:caml_ba_create_buffer,
     caml_ba_get_size_per_element:caml_ba_get_size_per_element,
     caml_ba_get_size:caml_ba_get_size,
     caml_ba_init:caml_ba_init,
     caml_convert_raw_backtrace_slot:caml_convert_raw_backtrace_slot,
     caml_get_current_callstack:caml_get_current_callstack,
     caml_restore_raw_backtrace:caml_restore_raw_backtrace,
     caml_raw_backtrace_slot:caml_raw_backtrace_slot,
     caml_raw_backtrace_next_slot:caml_raw_backtrace_next_slot,
     caml_raw_backtrace_length:caml_raw_backtrace_length,
     caml_convert_raw_backtrace:caml_convert_raw_backtrace,
     caml_record_backtrace:caml_record_backtrace,
     caml_get_exception_raw_backtrace:caml_get_exception_raw_backtrace,
     caml_get_exception_backtrace:caml_get_exception_backtrace,
     caml_backtrace_status:caml_backtrace_status,
     caml_floatarray_create:caml_floatarray_create,
     caml_make_float_vect:caml_make_float_vect,
     caml_make_vect:caml_make_vect,
     caml_check_bound:caml_check_bound,
     caml_array_fill:caml_array_fill,
     caml_array_get:caml_array_get,
     caml_array_set:caml_array_set,
     caml_array_blit:caml_array_blit,
     caml_array_concat:caml_array_concat,
     caml_array_append:caml_array_append,
     caml_array_sub:caml_array_sub};
    caml_fs_init();
    caml_register_global
     (0,[248,caml_string_of_jsbytes("Out_of_memory"),0],"Out_of_memory");
    caml_register_global
     (1,[248,caml_string_of_jsbytes("Sys_error"),-1],"Sys_error");
    caml_register_global
     (2,[248,caml_string_of_jsbytes("Failure"),-2],"Failure");
    caml_register_global
     (3,
      [248,caml_string_of_jsbytes("Invalid_argument"),-3],
      "Invalid_argument");
    caml_register_global
     (4,[248,caml_string_of_jsbytes("End_of_file"),-4],"End_of_file");
    caml_register_global
     (5,
      [248,caml_string_of_jsbytes("Division_by_zero"),-5],
      "Division_by_zero");
    caml_register_global
     (6,[248,caml_string_of_jsbytes("Not_found"),-6],"Not_found");
    caml_register_global
     (7,[248,caml_string_of_jsbytes("Match_failure"),-7],"Match_failure");
    caml_register_global
     (8,[248,caml_string_of_jsbytes("Stack_overflow"),-8],"Stack_overflow");
    caml_register_global
     (9,[248,caml_string_of_jsbytes("Sys_blocked_io"),-9],"Sys_blocked_io");
    caml_register_global
     (10,[248,caml_string_of_jsbytes("Assert_failure"),-10],"Assert_failure");
    caml_register_global
     (11,
      [248,caml_string_of_jsbytes("Undefined_recursive_module"),-11],
      "Undefined_recursive_module");
    return}
  (function(){return this}()));

//# 1 "../../.js/stdlib/stdlib.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_array_concat=runtime.caml_array_concat,
     caml_array_get=runtime.caml_array_get,
     caml_array_set=runtime.caml_array_set,
     caml_array_sub=runtime.caml_array_sub,
     caml_ba_change_layout=runtime.caml_ba_change_layout,
     caml_ba_create=runtime.caml_ba_create,
     caml_ba_dim_1=runtime.caml_ba_dim_1,
     caml_ba_dim_2=runtime.caml_ba_dim_2,
     caml_ba_kind=runtime.caml_ba_kind,
     caml_ba_num_dims=runtime.caml_ba_num_dims,
     caml_ba_reshape=runtime.caml_ba_reshape,
     caml_ba_slice=runtime.caml_ba_slice,
     caml_blit_bytes=runtime.caml_blit_bytes,
     caml_blit_string=runtime.caml_blit_string,
     caml_bswap16=runtime.caml_bswap16,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_get16=runtime.caml_bytes_get16,
     caml_bytes_get32=runtime.caml_bytes_get32,
     caml_bytes_get64=runtime.caml_bytes_get64,
     caml_bytes_of_string=runtime.caml_bytes_of_string,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_bytes_set16=runtime.caml_bytes_set16,
     caml_bytes_set32=runtime.caml_bytes_set32,
     caml_bytes_set64=runtime.caml_bytes_set64,
     caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get,
     caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
     caml_check_bound=runtime.caml_check_bound,
     caml_compare=runtime.caml_compare,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_div=runtime.caml_div,
     caml_ephe_set_key=runtime.caml_ephe_set_key,
     caml_ephe_unset_key=runtime.caml_ephe_unset_key,
     caml_equal=runtime.caml_equal,
     caml_fill_bytes=runtime.caml_fill_bytes,
     caml_float_compare=runtime.caml_float_compare,
     caml_float_of_string=runtime.caml_float_of_string,
     caml_floatarray_create=runtime.caml_floatarray_create,
     caml_format_float=runtime.caml_format_float,
     caml_format_int=runtime.caml_format_int,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_get_exception_raw_backtra=runtime.caml_get_exception_raw_backtrace,
     caml_get_public_method=runtime.caml_get_public_method,
     caml_greaterequal=runtime.caml_greaterequal,
     caml_greaterthan=runtime.caml_greaterthan,
     caml_hash=runtime.caml_hash,
     caml_input_value=runtime.caml_input_value,
     caml_int32_bswap=runtime.caml_int32_bswap,
     caml_int64_add=runtime.caml_int64_add,
     caml_int64_bswap=runtime.caml_int64_bswap,
     caml_int64_compare=runtime.caml_int64_compare,
     caml_int64_float_of_bits=runtime.caml_int64_float_of_bits,
     caml_int64_format=runtime.caml_int64_format,
     caml_int64_mul=runtime.caml_int64_mul,
     caml_int64_of_int32=runtime.caml_int64_of_int32,
     caml_int64_of_string=runtime.caml_int64_of_string,
     caml_int64_or=runtime.caml_int64_or,
     caml_int64_shift_left=runtime.caml_int64_shift_left,
     caml_int64_sub=runtime.caml_int64_sub,
     caml_int_compare=runtime.caml_int_compare,
     caml_int_of_string=runtime.caml_int_of_string,
     caml_lessequal=runtime.caml_lessequal,
     caml_lessthan=runtime.caml_lessthan,
     caml_make_vect=runtime.caml_make_vect,
     caml_marshal_data_size=runtime.caml_marshal_data_size,
     caml_md5_string=runtime.caml_md5_string,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_channel_size=runtime.caml_ml_channel_size,
     caml_ml_channel_size_64=runtime.caml_ml_channel_size_64,
     caml_ml_close_channel=runtime.caml_ml_close_channel,
     caml_ml_flush=runtime.caml_ml_flush,
     caml_ml_input=runtime.caml_ml_input,
     caml_ml_input_char=runtime.caml_ml_input_char,
     caml_ml_open_descriptor_in=runtime.caml_ml_open_descriptor_in,
     caml_ml_open_descriptor_out=runtime.caml_ml_open_descriptor_out,
     caml_ml_output=runtime.caml_ml_output,
     caml_ml_output_bytes=runtime.caml_ml_output_bytes,
     caml_ml_output_char=runtime.caml_ml_output_char,
     caml_ml_set_binary_mode=runtime.caml_ml_set_binary_mode,
     caml_ml_set_channel_name=runtime.caml_ml_set_channel_name,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_mod=runtime.caml_mod,
     caml_mul=runtime.caml_mul,
     caml_nextafter_float=runtime.caml_nextafter_float,
     caml_notequal=runtime.caml_notequal,
     caml_obj_block=runtime.caml_obj_block,
     caml_obj_make_forward=runtime.caml_obj_make_forward,
     caml_obj_tag=runtime.caml_obj_tag,
     caml_output_value=runtime.caml_output_value,
     caml_register_global=runtime.caml_register_global,
     caml_register_named_value=runtime.caml_register_named_value,
     caml_restore_raw_backtrace=runtime.caml_restore_raw_backtrace,
     caml_set_oo_id=runtime.caml_set_oo_id,
     caml_signbit_float=runtime.caml_signbit_float,
     caml_spacetime_enabled=runtime.caml_spacetime_enabled,
     caml_spacetime_only_works_for_=
      runtime.caml_spacetime_only_works_for_native_code,
     caml_string_compare=runtime.caml_string_compare,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_bytes=runtime.caml_string_of_bytes,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_string_unsafe_get=runtime.caml_string_unsafe_get,
     caml_sys_argv=runtime.caml_sys_argv,
     caml_sys_getenv=runtime.caml_sys_getenv,
     caml_sys_open=runtime.caml_sys_open,
     caml_sys_random_seed=runtime.caml_sys_random_seed,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    var
     global_data=runtime.caml_get_global_data(),
     cst$0=caml_string_of_jsbytes("%,"),
     cst_really_input=caml_string_of_jsbytes("really_input"),
     cst_input=caml_string_of_jsbytes("input"),
     cst_output_substring=caml_string_of_jsbytes("output_substring"),
     cst_output=caml_string_of_jsbytes("output"),
     cst_12g=caml_string_of_jsbytes("%.12g"),
     cst=caml_string_of_jsbytes("."),
     cst_false$1=caml_string_of_jsbytes("false"),
     cst_true$1=caml_string_of_jsbytes("true"),
     cst_false$0=caml_string_of_jsbytes("false"),
     cst_true$0=caml_string_of_jsbytes("true"),
     cst_bool_of_string=caml_string_of_jsbytes("bool_of_string"),
     cst_true=caml_string_of_jsbytes("true"),
     cst_false=caml_string_of_jsbytes("false"),
     cst_char_of_int=caml_string_of_jsbytes("char_of_int"),
     cst_Stdlib_Exit=caml_string_of_jsbytes("Stdlib.Exit"),
     cst_Stdlib_Pervasives_Exit=
      caml_string_of_jsbytes("Stdlib.Pervasives.Exit"),
     cst_option_is_None=caml_string_of_jsbytes("option is None"),
     cst_result_is_Ok=caml_string_of_jsbytes("result is Ok _"),
     cst_result_is_Error=caml_string_of_jsbytes("result is Error _"),
     cst_true$2=caml_string_of_jsbytes("true"),
     cst_false$2=caml_string_of_jsbytes("false"),
     cst$1=caml_string_of_jsbytes("\\\\"),
     cst$2=caml_string_of_jsbytes("\\'"),
     cst_b=caml_string_of_jsbytes("\\b"),
     cst_t=caml_string_of_jsbytes("\\t"),
     cst_n=caml_string_of_jsbytes("\\n"),
     cst_r=caml_string_of_jsbytes("\\r"),
     cst_Char_chr=caml_string_of_jsbytes("Char.chr"),
     cst_is_not_a_latin1_character=
      caml_string_of_jsbytes(" is not a latin1 character"),
     cst_04X=caml_string_of_jsbytes("%04X"),
     cst_U=caml_string_of_jsbytes("U+"),
     cst_is_not_an_Unicode_scalar_v=
      caml_string_of_jsbytes(" is not an Unicode scalar value"),
     cst_X=caml_string_of_jsbytes("%X"),
     err_no_pred=caml_string_of_jsbytes("U+0000 has no predecessor"),
     err_no_succ=caml_string_of_jsbytes("U+10FFFF has no successor"),
     cst_Stdlib_Sys_Break=caml_string_of_jsbytes("Stdlib.Sys.Break"),
     ocaml_version=caml_string_of_jsbytes("4.10.2"),
     cst_List_map2=caml_string_of_jsbytes("List.map2"),
     cst_List_iter2=caml_string_of_jsbytes("List.iter2"),
     cst_List_fold_left2=caml_string_of_jsbytes("List.fold_left2"),
     cst_List_fold_right2=caml_string_of_jsbytes("List.fold_right2"),
     cst_List_for_all2=caml_string_of_jsbytes("List.for_all2"),
     cst_List_exists2=caml_string_of_jsbytes("List.exists2"),
     cst_List_combine=caml_string_of_jsbytes("List.combine"),
     cst_List_rev_map2=caml_string_of_jsbytes("List.rev_map2"),
     cst_List_init=caml_string_of_jsbytes("List.init"),
     cst_List_nth$0=caml_string_of_jsbytes("List.nth"),
     cst_nth=caml_string_of_jsbytes("nth"),
     cst_List_nth=caml_string_of_jsbytes("List.nth"),
     cst_tl=caml_string_of_jsbytes("tl"),
     cst_hd=caml_string_of_jsbytes("hd"),
     cst_Bytes_of_seq_cannot_grow_b=
      caml_string_of_jsbytes("Bytes.of_seq: cannot grow bytes"),
     cst_String_rcontains_from_Byte=
      caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"),
     cst_String_contains_from_Bytes=
      caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"),
     cst_String_rindex_from_opt_Byt=
      caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"),
     cst_String_rindex_from_Bytes_r=
      caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"),
     cst_String_index_from_opt_Byte=
      caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"),
     cst_String_index_from_Bytes_in=
      caml_string_of_jsbytes("String.index_from / Bytes.index_from"),
     cst_Bytes_concat=caml_string_of_jsbytes("Bytes.concat"),
     cst_String_blit_Bytes_blit_str=
      caml_string_of_jsbytes("String.blit / Bytes.blit_string"),
     cst_Bytes_blit=caml_string_of_jsbytes("Bytes.blit"),
     cst_String_fill_Bytes_fill=
      caml_string_of_jsbytes("String.fill / Bytes.fill"),
     cst_Bytes_extend=caml_string_of_jsbytes("Bytes.extend"),
     cst_String_sub_Bytes_sub=caml_string_of_jsbytes("String.sub / Bytes.sub"),
     cst_String_rcontains_from_Byte$0=
      caml_string_of_jsbytes("String.rcontains_from / Bytes.rcontains_from"),
     cst_String_contains_from_Bytes$0=
      caml_string_of_jsbytes("String.contains_from / Bytes.contains_from"),
     cst_String_rindex_from_opt_Byt$0=
      caml_string_of_jsbytes("String.rindex_from_opt / Bytes.rindex_from_opt"),
     cst_String_rindex_from_Bytes_r$0=
      caml_string_of_jsbytes("String.rindex_from / Bytes.rindex_from"),
     cst_String_index_from_opt_Byte$0=
      caml_string_of_jsbytes("String.index_from_opt / Bytes.index_from_opt"),
     cst_String_index_from_Bytes_in$0=
      caml_string_of_jsbytes("String.index_from / Bytes.index_from"),
     cst$4=caml_string_of_jsbytes(""),
     cst$3=caml_string_of_jsbytes(""),
     cst_String_concat=caml_string_of_jsbytes("String.concat"),
     cst$5=caml_string_of_jsbytes("()"),
     cst_Marshal_from_bytes=caml_string_of_jsbytes("Marshal.from_bytes"),
     cst_Marshal_from_bytes$0=caml_string_of_jsbytes("Marshal.from_bytes"),
     cst_Marshal_data_size=caml_string_of_jsbytes("Marshal.data_size"),
     cst_Marshal_to_buffer_substrin=
      caml_string_of_jsbytes("Marshal.to_buffer: substring out of bounds"),
     cst_Obj_Ephemeron_blit_key=
      caml_string_of_jsbytes("Obj.Ephemeron.blit_key"),
     cst_Obj_Ephemeron_check_key=
      caml_string_of_jsbytes("Obj.Ephemeron.check_key"),
     cst_Obj_Ephemeron_unset_key=
      caml_string_of_jsbytes("Obj.Ephemeron.unset_key"),
     cst_Obj_Ephemeron_set_key=caml_string_of_jsbytes("Obj.Ephemeron.set_key"),
     cst_Obj_Ephemeron_get_key_copy=
      caml_string_of_jsbytes("Obj.Ephemeron.get_key_copy"),
     cst_Obj_Ephemeron_get_key=caml_string_of_jsbytes("Obj.Ephemeron.get_key"),
     cst_Obj_Ephemeron_create=caml_string_of_jsbytes("Obj.Ephemeron.create"),
     cst_Obj_extension_constructor$0=
      caml_string_of_jsbytes("Obj.extension_constructor"),
     cst_Obj_extension_constructor=
      caml_string_of_jsbytes("Obj.extension_constructor"),
     cst_Array_map2_arrays_must_hav=
      caml_string_of_jsbytes("Array.map2: arrays must have the same length"),
     cst_Array_iter2_arrays_must_ha=
      caml_string_of_jsbytes("Array.iter2: arrays must have the same length"),
     cst_Array_blit=caml_string_of_jsbytes("Array.blit"),
     cst_Array_fill=caml_string_of_jsbytes("Array.fill"),
     cst_Array_sub=caml_string_of_jsbytes("Array.sub"),
     cst_Array_init=caml_string_of_jsbytes("Array.init"),
     cst_Stdlib_Array_Bottom=caml_string_of_jsbytes("Stdlib.Array.Bottom"),
     cst_Float_Array_map2_arrays_mu=
      caml_string_of_jsbytes
       ("Float.Array.map2: arrays must have the same length"),
     cst_Float_Array_iter2_arrays_m=
      caml_string_of_jsbytes
       ("Float.Array.iter2: arrays must have the same length"),
     cst_Float_array_blit=caml_string_of_jsbytes("Float.array.blit"),
     cst_Float_array_blit$0=caml_string_of_jsbytes("Float.array.blit"),
     cst_Float_Array_fill=caml_string_of_jsbytes("Float.Array.fill"),
     cst_Float_Array_sub=caml_string_of_jsbytes("Float.Array.sub"),
     cst_Float_Array_concat=caml_string_of_jsbytes("Float.Array.concat"),
     cst_Float_Array_init=caml_string_of_jsbytes("Float.Array.init"),
     cst_Stdlib_Float_Array_Bottom=
      caml_string_of_jsbytes("Stdlib.Float.Array.Bottom"),
     cst_d=caml_string_of_jsbytes("%d"),
     cst_d$0=caml_string_of_jsbytes("%d"),
     zero$2=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     one$2=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     minus_one$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535),
     min_int$2=runtime.caml_int64_create_lo_mi_hi(0,0,32768),
     max_int$2=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32767),
     cst_d$1=caml_string_of_jsbytes("%d"),
     cst_Lexing_lex_refill_cannot_g=
      caml_string_of_jsbytes("Lexing.lex_refill: cannot grow buffer"),
     dummy_pos=[0,caml_string_of_jsbytes(""),0,0,-1],
     zero_pos=[0,caml_string_of_jsbytes(""),1,0,0],
     cst_syntax_error=caml_string_of_jsbytes("syntax error"),
     cst_Stdlib_Parsing_YYexit=caml_string_of_jsbytes("Stdlib.Parsing.YYexit"),
     cst_Stdlib_Parsing_Parse_error=
      caml_string_of_jsbytes("Stdlib.Parsing.Parse_error"),
     cst_Set_remove_min_elt=caml_string_of_jsbytes("Set.remove_min_elt"),
     cst_Set_bal=caml_string_of_jsbytes("Set.bal"),
     cst_Set_bal$0=caml_string_of_jsbytes("Set.bal"),
     cst_Set_bal$1=caml_string_of_jsbytes("Set.bal"),
     cst_Set_bal$2=caml_string_of_jsbytes("Set.bal"),
     cst_Map_remove_min_elt=caml_string_of_jsbytes("Map.remove_min_elt"),
     cst_Map_bal=caml_string_of_jsbytes("Map.bal"),
     cst_Map_bal$0=caml_string_of_jsbytes("Map.bal"),
     cst_Map_bal$1=caml_string_of_jsbytes("Map.bal"),
     cst_Map_bal$2=caml_string_of_jsbytes("Map.bal"),
     cst_Stdlib_Stack_Empty=caml_string_of_jsbytes("Stdlib.Stack.Empty"),
     cst_Stdlib_Queue_Empty=caml_string_of_jsbytes("Stdlib.Queue.Empty"),
     cst_CamlinternalLazy_Undefined=
      caml_string_of_jsbytes("CamlinternalLazy.Undefined"),
     cst_count=caml_string_of_jsbytes("{count = "),
     cst_data=caml_string_of_jsbytes("; data = "),
     cst$6=caml_string_of_jsbytes("}"),
     cst_Sempty=caml_string_of_jsbytes("Sempty"),
     cst_Scons=caml_string_of_jsbytes("Scons ("),
     cst$7=caml_string_of_jsbytes(", "),
     cst$8=caml_string_of_jsbytes(")"),
     cst_Sapp=caml_string_of_jsbytes("Sapp ("),
     cst$9=caml_string_of_jsbytes(", "),
     cst$10=caml_string_of_jsbytes(")"),
     cst_Slazy=caml_string_of_jsbytes("Slazy"),
     cst_Sgen=caml_string_of_jsbytes("Sgen"),
     cst_Sbuffio=caml_string_of_jsbytes("Sbuffio"),
     cst_Stdlib_Stream_Failure=caml_string_of_jsbytes("Stdlib.Stream.Failure"),
     cst_Stdlib_Stream_Error=caml_string_of_jsbytes("Stdlib.Stream.Error"),
     cst_Buffer_truncate=caml_string_of_jsbytes("Buffer.truncate"),
     cst_Buffer_add_channel=caml_string_of_jsbytes("Buffer.add_channel"),
     cst_Buffer_add_substring_add_s=
      caml_string_of_jsbytes("Buffer.add_substring/add_subbytes"),
     cst_Buffer_add_cannot_grow_buf=
      caml_string_of_jsbytes("Buffer.add: cannot grow buffer"),
     cst_Buffer_nth=caml_string_of_jsbytes("Buffer.nth"),
     cst_Buffer_blit=caml_string_of_jsbytes("Buffer.blit"),
     cst_Buffer_sub=caml_string_of_jsbytes("Buffer.sub"),
     cst_c=caml_string_of_jsbytes("%c"),
     cst_s=caml_string_of_jsbytes("%s"),
     cst_i=caml_string_of_jsbytes("%i"),
     cst_li=caml_string_of_jsbytes("%li"),
     cst_ni=caml_string_of_jsbytes("%ni"),
     cst_Li=caml_string_of_jsbytes("%Li"),
     cst_f=caml_string_of_jsbytes("%f"),
     cst_B=caml_string_of_jsbytes("%B"),
     cst$21=caml_string_of_jsbytes("%{"),
     cst$22=caml_string_of_jsbytes("%}"),
     cst$23=caml_string_of_jsbytes("%("),
     cst$24=caml_string_of_jsbytes("%)"),
     cst_a=caml_string_of_jsbytes("%a"),
     cst_t$0=caml_string_of_jsbytes("%t"),
     cst$25=caml_string_of_jsbytes("%?"),
     cst_r$0=caml_string_of_jsbytes("%r"),
     cst_r$1=caml_string_of_jsbytes("%_r"),
     cst_u$0=caml_string_of_jsbytes("%u"),
     cst_Printf_bad_conversion=
      caml_string_of_jsbytes("Printf: bad conversion %["),
     cst_Printf_bad_conversion$0=
      caml_string_of_jsbytes("Printf: bad conversion %_"),
     cst$30=caml_string_of_jsbytes("@{"),
     cst$31=caml_string_of_jsbytes("@["),
     cst$32=caml_string_of_jsbytes("@{"),
     cst$33=caml_string_of_jsbytes("@["),
     cst$34=caml_string_of_jsbytes("@{"),
     cst$35=caml_string_of_jsbytes("@["),
     cst_0=caml_string_of_jsbytes("0"),
     cst_padding=caml_string_of_jsbytes("padding"),
     cst_precision=caml_string_of_jsbytes("precision"),
     cst$40=caml_string_of_jsbytes("'*'"),
     cst$38=caml_string_of_jsbytes("'-'"),
     cst_0$2=caml_string_of_jsbytes("'0'"),
     cst$39=caml_string_of_jsbytes("'*'"),
     cst_0$0=caml_string_of_jsbytes("0"),
     cst_0$1=caml_string_of_jsbytes("0"),
     cst_precision$0=caml_string_of_jsbytes("precision"),
     cst_precision$1=caml_string_of_jsbytes("precision"),
     cst$41=caml_string_of_jsbytes("'+'"),
     cst$42=caml_string_of_jsbytes("'#'"),
     cst$43=caml_string_of_jsbytes("' '"),
     cst_padding$0=caml_string_of_jsbytes("`padding'"),
     cst_precision$2=caml_string_of_jsbytes("`precision'"),
     cst$44=caml_string_of_jsbytes("'+'"),
     cst$45=caml_string_of_jsbytes("'_'"),
     sub_format=[0,0,caml_string_of_jsbytes("")],
     formatting_lit=[0,caml_string_of_jsbytes("@;"),1,0],
     cst_digit=caml_string_of_jsbytes("digit"),
     cst_character=caml_string_of_jsbytes("character ')'"),
     cst_character$0=caml_string_of_jsbytes("character '}'"),
     cst$49=caml_string_of_jsbytes("'#'"),
     cst$46=caml_string_of_jsbytes("'+'"),
     cst$47=caml_string_of_jsbytes("'+'"),
     cst$48=caml_string_of_jsbytes("' '"),
     cst$50=caml_string_of_jsbytes("'+'"),
     cst_non_zero_widths_are_unsupp=
      caml_string_of_jsbytes
       ("non-zero widths are unsupported for %c conversions"),
     cst_unexpected_end_of_format=
      caml_string_of_jsbytes("unexpected end of format"),
     cst$36=caml_string_of_jsbytes(""),
     cst$37=caml_string_of_jsbytes(""),
     cst_b$0=caml_string_of_jsbytes("b"),
     cst_h=caml_string_of_jsbytes("h"),
     cst_hov=caml_string_of_jsbytes("hov"),
     cst_hv=caml_string_of_jsbytes("hv"),
     cst_v=caml_string_of_jsbytes("v"),
     cst_nan=caml_string_of_jsbytes("nan"),
     cst_neg_infinity=caml_string_of_jsbytes("neg_infinity"),
     cst_infinity=caml_string_of_jsbytes("infinity"),
     cst$29=caml_string_of_jsbytes("."),
     cst_nd$0=caml_string_of_jsbytes("%+nd"),
     cst_nd$1=caml_string_of_jsbytes("% nd"),
     cst_ni$1=caml_string_of_jsbytes("%+ni"),
     cst_ni$2=caml_string_of_jsbytes("% ni"),
     cst_nx=caml_string_of_jsbytes("%nx"),
     cst_nx$0=caml_string_of_jsbytes("%#nx"),
     cst_nX=caml_string_of_jsbytes("%nX"),
     cst_nX$0=caml_string_of_jsbytes("%#nX"),
     cst_no=caml_string_of_jsbytes("%no"),
     cst_no$0=caml_string_of_jsbytes("%#no"),
     cst_nd=caml_string_of_jsbytes("%nd"),
     cst_ni$0=caml_string_of_jsbytes("%ni"),
     cst_nu=caml_string_of_jsbytes("%nu"),
     cst_ld$0=caml_string_of_jsbytes("%+ld"),
     cst_ld$1=caml_string_of_jsbytes("% ld"),
     cst_li$1=caml_string_of_jsbytes("%+li"),
     cst_li$2=caml_string_of_jsbytes("% li"),
     cst_lx=caml_string_of_jsbytes("%lx"),
     cst_lx$0=caml_string_of_jsbytes("%#lx"),
     cst_lX=caml_string_of_jsbytes("%lX"),
     cst_lX$0=caml_string_of_jsbytes("%#lX"),
     cst_lo=caml_string_of_jsbytes("%lo"),
     cst_lo$0=caml_string_of_jsbytes("%#lo"),
     cst_ld=caml_string_of_jsbytes("%ld"),
     cst_li$0=caml_string_of_jsbytes("%li"),
     cst_lu=caml_string_of_jsbytes("%lu"),
     cst_Ld$0=caml_string_of_jsbytes("%+Ld"),
     cst_Ld$1=caml_string_of_jsbytes("% Ld"),
     cst_Li$1=caml_string_of_jsbytes("%+Li"),
     cst_Li$2=caml_string_of_jsbytes("% Li"),
     cst_Lx=caml_string_of_jsbytes("%Lx"),
     cst_Lx$0=caml_string_of_jsbytes("%#Lx"),
     cst_LX=caml_string_of_jsbytes("%LX"),
     cst_LX$0=caml_string_of_jsbytes("%#LX"),
     cst_Lo=caml_string_of_jsbytes("%Lo"),
     cst_Lo$0=caml_string_of_jsbytes("%#Lo"),
     cst_Ld=caml_string_of_jsbytes("%Ld"),
     cst_Li$0=caml_string_of_jsbytes("%Li"),
     cst_Lu=caml_string_of_jsbytes("%Lu"),
     cst_d$3=caml_string_of_jsbytes("%+d"),
     cst_d$4=caml_string_of_jsbytes("% d"),
     cst_i$1=caml_string_of_jsbytes("%+i"),
     cst_i$2=caml_string_of_jsbytes("% i"),
     cst_x=caml_string_of_jsbytes("%x"),
     cst_x$0=caml_string_of_jsbytes("%#x"),
     cst_X$0=caml_string_of_jsbytes("%X"),
     cst_X$1=caml_string_of_jsbytes("%#X"),
     cst_o=caml_string_of_jsbytes("%o"),
     cst_o$0=caml_string_of_jsbytes("%#o"),
     cst_d$2=caml_string_of_jsbytes("%d"),
     cst_i$0=caml_string_of_jsbytes("%i"),
     cst_u=caml_string_of_jsbytes("%u"),
     cst$26=caml_string_of_jsbytes("%!"),
     cst$27=caml_string_of_jsbytes("@{"),
     cst$28=caml_string_of_jsbytes("@["),
     cst_0c=caml_string_of_jsbytes("0c"),
     cst$20=caml_string_of_jsbytes("%%"),
     cst$12=caml_string_of_jsbytes("@]"),
     cst$13=caml_string_of_jsbytes("@}"),
     cst$14=caml_string_of_jsbytes("@?"),
     cst$15=caml_string_of_jsbytes("@\n"),
     cst$16=caml_string_of_jsbytes("@."),
     cst$17=caml_string_of_jsbytes("@@"),
     cst$18=caml_string_of_jsbytes("@%"),
     cst$19=caml_string_of_jsbytes("@"),
     cst$11=caml_string_of_jsbytes(".*"),
     cst_CamlinternalFormat_Type_mi=
      caml_string_of_jsbytes("CamlinternalFormat.Type_mismatch"),
     cst$58=caml_string_of_jsbytes(""),
     cst$59=caml_string_of_jsbytes("\n"),
     cst_a_boolean=caml_string_of_jsbytes("a boolean"),
     cst_an_integer=caml_string_of_jsbytes("an integer"),
     cst_an_integer$0=caml_string_of_jsbytes("an integer"),
     cst_a_float=caml_string_of_jsbytes("a float"),
     cst_a_float$0=caml_string_of_jsbytes("a float"),
     cst$55=caml_string_of_jsbytes(""),
     cst$56=caml_string_of_jsbytes(" "),
     cst$57=caml_string_of_jsbytes(""),
     cst_one_of=caml_string_of_jsbytes("one of: "),
     cst_Arg_Expand_is_is_only_allo=
      caml_string_of_jsbytes
       ("Arg.Expand is is only allowed with Arg.parse_and_expand_argv_dynamic"),
     cst_no_argument=caml_string_of_jsbytes("no argument"),
     cst$54=caml_string_of_jsbytes("(?)"),
     cst_help$3=caml_string_of_jsbytes("--help"),
     cst_help$4=caml_string_of_jsbytes("-help"),
     cst_help$2=caml_string_of_jsbytes("-help"),
     cst_Display_this_list_of_optio=
      caml_string_of_jsbytes(" Display this list of options"),
     cst_help=caml_string_of_jsbytes("-help"),
     cst_help$1=caml_string_of_jsbytes("--help"),
     cst_Display_this_list_of_optio$0=
      caml_string_of_jsbytes(" Display this list of options"),
     cst_help$0=caml_string_of_jsbytes("--help"),
     cst$51=caml_string_of_jsbytes("}"),
     cst$52=caml_string_of_jsbytes("|"),
     cst$53=caml_string_of_jsbytes("{"),
     cst_none=caml_string_of_jsbytes("<none>"),
     cst_Stdlib_Arg_Bad=caml_string_of_jsbytes("Stdlib.Arg.Bad"),
     cst_Stdlib_Arg_Help=caml_string_of_jsbytes("Stdlib.Arg.Help"),
     cst_Stdlib_Arg_Stop=caml_string_of_jsbytes("Stdlib.Arg.Stop"),
     cst$61=caml_string_of_jsbytes(""),
     cst_Program_not_linked_with_g_=
      caml_string_of_jsbytes
       ("(Program not linked with -g, cannot print stack backtrace)\n"),
     cst_Raised_at=caml_string_of_jsbytes("Raised at"),
     cst_Re_raised_at=caml_string_of_jsbytes("Re-raised at"),
     cst_Raised_by_primitive_operat=
      caml_string_of_jsbytes("Raised by primitive operation at"),
     cst_Called_from=caml_string_of_jsbytes("Called from"),
     cst_inlined=caml_string_of_jsbytes(" (inlined)"),
     cst$64=caml_string_of_jsbytes(""),
     partial=[4,0,0,0,0],
     cst_Out_of_memory=caml_string_of_jsbytes("Out of memory"),
     cst_Stack_overflow=caml_string_of_jsbytes("Stack overflow"),
     cst_Pattern_matching_failed=
      caml_string_of_jsbytes("Pattern matching failed"),
     cst_Assertion_failed=caml_string_of_jsbytes("Assertion failed"),
     cst_Undefined_recursive_module=
      caml_string_of_jsbytes("Undefined recursive module"),
     cst$62=caml_string_of_jsbytes(""),
     cst$63=caml_string_of_jsbytes(""),
     cst$60=caml_string_of_jsbytes("_"),
     locfmt=
      [0,
       [11,
        caml_string_of_jsbytes('File "'),
        [2,
         0,
         [11,
          caml_string_of_jsbytes('", line '),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(", characters "),
            [4,
             0,
             0,
             0,
             [12,45,[4,0,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]]]]]]],
       caml_string_of_jsbytes('File "%s", line %d, characters %d-%d: %s')],
     cst_Stdlib_Fun_Finally_raised=
      caml_string_of_jsbytes("Stdlib.Fun.Finally_raised"),
     cst_Digest_from_hex$0=caml_string_of_jsbytes("Digest.from_hex"),
     cst_Digest_from_hex=caml_string_of_jsbytes("Digest.from_hex"),
     cst_Digest_to_hex=caml_string_of_jsbytes("Digest.to_hex"),
     cst_Digest_substring=caml_string_of_jsbytes("Digest.substring"),
     cst_Random_int64=caml_string_of_jsbytes("Random.int64"),
     cst_Random_int32=caml_string_of_jsbytes("Random.int32"),
     cst_Random_int=caml_string_of_jsbytes("Random.int"),
     cst_x$1=caml_string_of_jsbytes("x"),
     cst_OCAMLRUNPARAM=caml_string_of_jsbytes("OCAMLRUNPARAM"),
     cst_CAMLRUNPARAM=caml_string_of_jsbytes("CAMLRUNPARAM"),
     cst$65=caml_string_of_jsbytes(""),
     cst_Weak_Make_hash_bucket_cann=
      caml_string_of_jsbytes("Weak.Make: hash bucket cannot grow more"),
     cst_Weak_fill=caml_string_of_jsbytes("Weak.fill"),
     cst_Weak_blit=caml_string_of_jsbytes("Weak.blit"),
     cst_Weak_check=caml_string_of_jsbytes("Weak.check"),
     cst_Weak_get_copy=caml_string_of_jsbytes("Weak.get_copy"),
     cst_Weak_get=caml_string_of_jsbytes("Weak.get"),
     cst_Weak_set=caml_string_of_jsbytes("Weak.set"),
     cst_Weak_create=caml_string_of_jsbytes("Weak.create"),
     cst$83=caml_string_of_jsbytes(""),
     cst$84=caml_string_of_jsbytes(""),
     cst$82=caml_string_of_jsbytes("."),
     cst$79=caml_string_of_jsbytes(">"),
     cst$80=caml_string_of_jsbytes("<\/"),
     cst$81=caml_string_of_jsbytes(""),
     cst$76=caml_string_of_jsbytes(">"),
     cst$77=caml_string_of_jsbytes("<"),
     cst$78=caml_string_of_jsbytes(""),
     cst$75=caml_string_of_jsbytes("\n"),
     cst_Format_pp_set_geometry_max=
      caml_string_of_jsbytes("Format.pp_set_geometry: max_indent < 2"),
     cst_Format_pp_set_geometry_mar=
      caml_string_of_jsbytes("Format.pp_set_geometry: margin <= max_indent"),
     cst$71=caml_string_of_jsbytes(""),
     cst$72=caml_string_of_jsbytes(""),
     cst$73=caml_string_of_jsbytes(""),
     cst$74=caml_string_of_jsbytes(""),
     cst$67=caml_string_of_jsbytes(""),
     cst$68=caml_string_of_jsbytes(""),
     cst$69=caml_string_of_jsbytes(""),
     cst$70=caml_string_of_jsbytes(""),
     cst$66=caml_string_of_jsbytes(""),
     cst_Stdlib_Format_String_tag=
      caml_string_of_jsbytes("Stdlib.Format.String_tag"),
     cst_end_of_input_not_found=
      caml_string_of_jsbytes("end of input not found"),
     cst_scanf_bad_conversion_a=
      caml_string_of_jsbytes('scanf: bad conversion "%a"'),
     cst_scanf_bad_conversion_t=
      caml_string_of_jsbytes('scanf: bad conversion "%t"'),
     cst_scanf_missing_reader=caml_string_of_jsbytes("scanf: missing reader"),
     cst_scanf_bad_conversion_custo=
      caml_string_of_jsbytes('scanf: bad conversion "%?" (custom converter)'),
     cst_scanf_bad_conversion=
      caml_string_of_jsbytes('scanf: bad conversion "%*"'),
     cst_scanf_bad_conversion$0=
      caml_string_of_jsbytes('scanf: bad conversion "%*"'),
     cst_scanf_bad_conversion$1=
      caml_string_of_jsbytes('scanf: bad conversion "%-"'),
     cst_scanf_bad_conversion$2=
      caml_string_of_jsbytes('scanf: bad conversion "%*"'),
     cst$90=caml_string_of_jsbytes('"'),
     cst$91=caml_string_of_jsbytes('"'),
     cst$88=caml_string_of_jsbytes('"'),
     cst$89=caml_string_of_jsbytes('"'),
     cst$87=caml_string_of_jsbytes('"'),
     cst_in_format=caml_string_of_jsbytes(' in format "'),
     cst_an=caml_string_of_jsbytes("an"),
     cst_x$2=caml_string_of_jsbytes("x"),
     cst_nfinity=caml_string_of_jsbytes("nfinity"),
     cst_digits=caml_string_of_jsbytes("digits"),
     cst_decimal_digits=caml_string_of_jsbytes("decimal digits"),
     cst_0b=caml_string_of_jsbytes("0b"),
     cst_0o=caml_string_of_jsbytes("0o"),
     cst_0u=caml_string_of_jsbytes("0u"),
     cst_0x=caml_string_of_jsbytes("0x"),
     cst_false$3=caml_string_of_jsbytes("false"),
     cst_true$3=caml_string_of_jsbytes("true"),
     cst_not_a_valid_float_in_hexad=
      caml_string_of_jsbytes("not a valid float in hexadecimal notation"),
     cst_no_dot_or_exponent_part_fo=
      caml_string_of_jsbytes("no dot or exponent part found in float token"),
     cst$86=caml_string_of_jsbytes("-"),
     cst_unnamed_function=caml_string_of_jsbytes("unnamed function"),
     cst_unnamed_character_string=
      caml_string_of_jsbytes("unnamed character string"),
     cst_unnamed_Stdlib_input_chann=
      caml_string_of_jsbytes("unnamed Stdlib input channel"),
     cst$85=caml_string_of_jsbytes("-"),
     cst_Stdlib_Scanf_Scan_failure=
      caml_string_of_jsbytes("Stdlib.Scanf.Scan_failure"),
     cst_binary=caml_string_of_jsbytes("binary"),
     cst_octal=caml_string_of_jsbytes("octal"),
     cst_hexadecimal=caml_string_of_jsbytes("hexadecimal"),
     cst_a_Char=caml_string_of_jsbytes("a Char"),
     cst_a_String=caml_string_of_jsbytes("a String"),
     cst$92=caml_string_of_jsbytes(""),
     cst$93=caml_string_of_jsbytes(""),
     cst$94=caml_string_of_jsbytes(""),
     cst$95=caml_string_of_jsbytes(""),
     cst$96=caml_string_of_jsbytes(""),
     cst$98=caml_string_of_jsbytes(""),
     cst$97=caml_string_of_jsbytes(""),
     cst_Illegal_character=caml_string_of_jsbytes("Illegal character "),
     cst_Filename_chop_extension=
      caml_string_of_jsbytes("Filename.chop_extension"),
     cst$126=caml_string_of_jsbytes(""),
     cst_Filename_chop_suffix=caml_string_of_jsbytes("Filename.chop_suffix"),
     cst$125=caml_string_of_jsbytes(""),
     cst_2_1$0=caml_string_of_jsbytes(" 2>&1"),
     cst_2$0=caml_string_of_jsbytes(" 2>"),
     cst$124=caml_string_of_jsbytes(""),
     cst$116=caml_string_of_jsbytes(" >"),
     cst$123=caml_string_of_jsbytes(""),
     cst$117=caml_string_of_jsbytes(" <"),
     cst$122=caml_string_of_jsbytes(""),
     cst$118=caml_string_of_jsbytes(" "),
     cst$119=caml_string_of_jsbytes(" "),
     cst$120=caml_string_of_jsbytes('"'),
     cst$121=caml_string_of_jsbytes(""),
     cst_Filename_quote_command_bad=
      caml_string_of_jsbytes("Filename.quote_command: bad file name "),
     cst$114=caml_string_of_jsbytes('"'),
     cst$115=caml_string_of_jsbytes('"'),
     cst$112=caml_string_of_jsbytes("./"),
     cst$111=caml_string_of_jsbytes(".\\"),
     cst$110=caml_string_of_jsbytes("../"),
     cst$109=caml_string_of_jsbytes("..\\"),
     cst_2_1=caml_string_of_jsbytes(" 2>&1"),
     cst_2=caml_string_of_jsbytes(" 2>"),
     cst$108=caml_string_of_jsbytes(""),
     cst$103=caml_string_of_jsbytes(" >"),
     cst$107=caml_string_of_jsbytes(""),
     cst$104=caml_string_of_jsbytes(" <"),
     cst$106=caml_string_of_jsbytes(""),
     cst$105=caml_string_of_jsbytes(" "),
     cst$102=caml_string_of_jsbytes("./"),
     cst$101=caml_string_of_jsbytes("../"),
     cst$100=caml_string_of_jsbytes(""),
     cst$99=caml_string_of_jsbytes(""),
     null$0=caml_string_of_jsbytes("/dev/null"),
     current_dir_name=caml_string_of_jsbytes("."),
     parent_dir_name=caml_string_of_jsbytes(".."),
     dir_sep=caml_string_of_jsbytes("/"),
     cst_TMPDIR=caml_string_of_jsbytes("TMPDIR"),
     cst_tmp=caml_string_of_jsbytes("/tmp"),
     quotequote=caml_string_of_jsbytes("'\\''"),
     null$1=caml_string_of_jsbytes("NUL"),
     current_dir_name$0=caml_string_of_jsbytes("."),
     parent_dir_name$0=caml_string_of_jsbytes(".."),
     dir_sep$0=caml_string_of_jsbytes("\\"),
     cst_TEMP=caml_string_of_jsbytes("TEMP"),
     cst$113=caml_string_of_jsbytes("."),
     null$2=caml_string_of_jsbytes("/dev/null"),
     current_dir_name$1=caml_string_of_jsbytes("."),
     parent_dir_name$1=caml_string_of_jsbytes(".."),
     dir_sep$1=caml_string_of_jsbytes("/"),
     cst_Cygwin=caml_string_of_jsbytes("Cygwin"),
     cst_Win32=caml_string_of_jsbytes("Win32"),
     zero$4=[254,0.,0.],
     one$4=[254,1.,0.],
     i=[254,0.,1.],
     cst_Series_is_closed$0=caml_string_of_jsbytes("Series is closed"),
     cst_Series_is_closed=caml_string_of_jsbytes("Series is closed"),
     cst_Bigarray_array3_of_genarra=
      caml_string_of_jsbytes("Bigarray.array3_of_genarray"),
     cst_Bigarray_array2_of_genarra=
      caml_string_of_jsbytes("Bigarray.array2_of_genarray"),
     cst_Bigarray_array1_of_genarra=
      caml_string_of_jsbytes("Bigarray.array1_of_genarray"),
     cst_Bigarray_array0_of_genarra=
      caml_string_of_jsbytes("Bigarray.array0_of_genarray"),
     cst_Bigarray_Array3_of_array_n=
      caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"),
     cst_Bigarray_Array3_of_array_n$0=
      caml_string_of_jsbytes("Bigarray.Array3.of_array: non-cubic data"),
     cst_Bigarray_Array2_of_array_n=
      caml_string_of_jsbytes("Bigarray.Array2.of_array: non-rectangular data"),
     Invalid_argument=global_data.Invalid_argument,
     Failure=global_data.Failure,
     Match_failure=global_data.Match_failure,
     Assert_failure=global_data.Assert_failure,
     Not_found=global_data.Not_found,
     Out_of_memory=global_data.Out_of_memory,
     Stack_overflow=global_data.Stack_overflow,
     Sys_error=global_data.Sys_error,
     End_of_file=global_data.End_of_file,
     Division_by_zero=global_data.Division_by_zero,
     Sys_blocked_io=global_data.Sys_blocked_io,
     Undefined_recursive_module=global_data.Undefined_recursive_module,
     _l_=[0,0,[0,6,0]],
     _k_=[0,0,[0,7,0]],
     _j_=[0,1,[0,3,[0,4,[0,6,0]]]],
     _i_=[0,1,[0,3,[0,4,[0,7,0]]]],
     _g_=[0,1],
     _h_=[0,0],
     _a_=runtime.caml_int64_create_lo_mi_hi(0,0,32752),
     _b_=runtime.caml_int64_create_lo_mi_hi(0,0,65520),
     _c_=runtime.caml_int64_create_lo_mi_hi(1,0,32752),
     _d_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32751),
     _e_=runtime.caml_int64_create_lo_mi_hi(0,0,16),
     _f_=runtime.caml_int64_create_lo_mi_hi(0,0,15536),
     _o_=[0,0,0],
     _s_=[0,caml_string_of_jsbytes("array.ml"),238,4],
     _u_=[0,caml_string_of_jsbytes("float.ml"),381,6],
     _t_=[0,caml_string_of_jsbytes("float.ml"),208,14],
     _F_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535),
     _E_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _D_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _C_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _G_=[0,0,0,0],
     _H_=[0,0,0],
     _I_=[0,caml_string_of_jsbytes("set.ml"),547,18],
     _J_=[0,0,0,0],
     _K_=[0,caml_string_of_jsbytes("map.ml"),398,10],
     _L_=[0,0,0],
     _M_=[0,caml_string_of_jsbytes("stream.ml"),53,12],
     _N_=[0,0],
     _O_=[0,caml_string_of_jsbytes("stream.ml"),82,12],
     _Y_=[0,caml_string_of_jsbytes("buffer.ml"),282,9],
     _X_=[0,caml_string_of_jsbytes("buffer.ml"),263,2],
     _W_=[0,caml_string_of_jsbytes("buffer.ml"),195,19],
     _V_=[0,caml_string_of_jsbytes("buffer.ml"),213,8],
     _U_=[0,caml_string_of_jsbytes("buffer.ml"),174,19],
     _T_=[0,caml_string_of_jsbytes("buffer.ml"),192,8],
     _S_=[0,caml_string_of_jsbytes("buffer.ml"),138,19],
     _R_=[0,caml_string_of_jsbytes("buffer.ml"),171,8],
     _Q_=[0,caml_string_of_jsbytes("buffer.ml"),93,2],
     _P_=[0,caml_string_of_jsbytes("buffer.ml"),94,2],
     ___=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),850,23],
     _aj_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),814,21],
     _ab_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),815,21],
     _ak_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),818,21],
     _ac_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),819,21],
     _al_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),822,19],
     _ad_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),823,19],
     _am_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),826,22],
     _ae_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),827,22],
     _an_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),831,30],
     _af_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),832,30],
     _ah_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),836,26],
     _$_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),837,26],
     _ai_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),846,28],
     _aa_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),847,28],
     _ag_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),851,23],
     _ap_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1558,4],
     _aq_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1626,39],
     _ar_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1649,31],
     _as_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1650,31],
     _at_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),1830,8],
     _aX_=
      [0,
       [11,
        caml_string_of_jsbytes("bad input: format type mismatch between "),
        [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]],
       caml_string_of_jsbytes
        ("bad input: format type mismatch between %S and %S")],
     _aW_=
      [0,
       [11,
        caml_string_of_jsbytes("bad input: format type mismatch between "),
        [3,0,[11,caml_string_of_jsbytes(" and "),[3,0,0]]]],
       caml_string_of_jsbytes
        ("bad input: format type mismatch between %S and %S")],
     _az_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": at character number "),
          [4,0,0,0,[11,caml_string_of_jsbytes(", duplicate flag "),[1,0]]]]]],
       caml_string_of_jsbytes
        ("invalid format %S: at character number %d, duplicate flag %C")],
     _aA_=[0,1,0],
     _aB_=[0,0],
     _aC_=[1,0],
     _aD_=[1,1],
     _aF_=[1,1],
     _aE_=[1,1],
     _aJ_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": at character number "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(", flag "),
            [1,
             [11,
              caml_string_of_jsbytes(" is only allowed after the '"),
              [12,
               37,
               [11,
                caml_string_of_jsbytes("', before padding and precision"),
                0]]]]]]]]],
       caml_string_of_jsbytes
        ("invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision")],
     _aG_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": at character number "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(', invalid conversion "'),
            [12,37,[0,[12,34,0]]]]]]]],
       caml_string_of_jsbytes
        ('invalid format %S: at character number %d, invalid conversion "%%%c"')],
     _aH_=[0,0],
     _aI_=[0,0],
     _aK_=[0,[12,64,0]],
     _aL_=[0,caml_string_of_jsbytes("@ "),1,0],
     _aM_=[0,caml_string_of_jsbytes("@,"),0,0],
     _aN_=[2,60],
     _aO_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": '"),
          [12,
           37,
           [11,
            caml_string_of_jsbytes
             ("' alone is not accepted in character sets, use "),
            [12,
             37,
             [12,
              37,
              [11,
               caml_string_of_jsbytes(" instead at position "),
               [4,0,0,0,[12,46,0]]]]]]]]]],
       caml_string_of_jsbytes
        ("invalid format %S: '%%' alone is not accepted in character sets, use %%%% instead at position %d.")],
     _aP_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": integer "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(" is greater than the limit "),
            [4,0,0,0,0]]]]]],
       caml_string_of_jsbytes
        ("invalid format %S: integer %d is greater than the limit %d")],
     _aQ_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2837,11],
     _aR_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(': unclosed sub-format, expected "'),
          [12,
           37,
           [0,
            [11,caml_string_of_jsbytes('" at character number '),[4,0,0,0,0]]]]]]],
       caml_string_of_jsbytes
        ('invalid format %S: unclosed sub-format, expected "%%%c" at character number %d')],
     _aS_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2899,34],
     _aT_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2935,28],
     _aU_=[0,caml_string_of_jsbytes("camlinternalFormat.ml"),2957,11],
     _aV_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": at character number "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(", "),
            [2,
             0,
             [11,
              caml_string_of_jsbytes(" is incompatible with '"),
              [0,[11,caml_string_of_jsbytes("' in sub-format "),[3,0,0]]]]]]]]]],
       caml_string_of_jsbytes
        ("invalid format %S: at character number %d, %s is incompatible with '%c' in sub-format %S")],
     _ay_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": at character number "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(", "),
            [2,0,[11,caml_string_of_jsbytes(" expected, read "),[1,0]]]]]]]],
       caml_string_of_jsbytes
        ("invalid format %S: at character number %d, %s expected, read %C")],
     _ax_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": at character number "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(", '"),
            [0,[11,caml_string_of_jsbytes("' without "),[2,0,0]]]]]]]],
       caml_string_of_jsbytes
        ("invalid format %S: at character number %d, '%c' without %s")],
     _aw_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid format "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": at character number "),
          [4,0,0,0,[11,caml_string_of_jsbytes(", "),[2,0,0]]]]]],
       caml_string_of_jsbytes("invalid format %S: at character number %d, %s")],
     _av_=
      [0,
       [11,caml_string_of_jsbytes("invalid box description "),[3,0,0]],
       caml_string_of_jsbytes("invalid box description %S")],
     _au_=[0,0,4],
     _ao_=[0,103],
     _Z_=[0,0,0],
     _bh_=[0,[2,0,[0,0]],caml_string_of_jsbytes("%s%c")],
     _bb_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _bc_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _a$_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _ba_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _a9_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _a__=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _a3_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(": unknown option '"),
         [2,0,[11,caml_string_of_jsbytes("'.\n"),0]]]],
       caml_string_of_jsbytes("%s: unknown option '%s'.\n")],
     _a6_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(": wrong argument '"),
         [2,
          0,
          [11,
           caml_string_of_jsbytes("'; option '"),
           [2,
            0,
            [11,
             caml_string_of_jsbytes("' expects "),
             [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]]]]]],
       caml_string_of_jsbytes
        ("%s: wrong argument '%s'; option '%s' expects %s.\n")],
     _a7_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(": option '"),
         [2,0,[11,caml_string_of_jsbytes("' needs an argument.\n"),0]]]],
       caml_string_of_jsbytes("%s: option '%s' needs an argument.\n")],
     _a8_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(": "),
         [2,0,[11,caml_string_of_jsbytes(".\n"),0]]]],
       caml_string_of_jsbytes("%s: %s.\n")],
     _a4_=[0,caml_string_of_jsbytes("-help")],
     _a5_=[0,caml_string_of_jsbytes("--help")],
     _a2_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _a1_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
     _a0_=[0,caml_string_of_jsbytes("-help")],
     _aY_=
      [0,
       [11,caml_string_of_jsbytes("  "),[2,0,[12,32,[2,0,[12,10,0]]]]],
       caml_string_of_jsbytes("  %s %s\n")],
     _aZ_=
      [0,
       [11,caml_string_of_jsbytes("  "),[2,0,[12,32,[2,0,[2,0,[12,10,0]]]]]],
       caml_string_of_jsbytes("  %s %s%s\n")],
     _bm_=
      [0,
       [11,caml_string_of_jsbytes(", "),[2,0,[2,0,0]]],
       caml_string_of_jsbytes(", %s%s")],
     _bv_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
     _bt_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
     _bu_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("(Program not linked with -g, cannot print stack backtrace)\n"),
        0],
       caml_string_of_jsbytes
        ("(Program not linked with -g, cannot print stack backtrace)\n")],
     _br_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(' file "'),
         [2,
          0,
          [12,
           34,
           [2,
            0,
            [11,
             caml_string_of_jsbytes(", line "),
             [4,
              0,
              0,
              0,
              [11,
               caml_string_of_jsbytes(", characters "),
               [4,0,0,0,[12,45,partial]]]]]]]]]],
       caml_string_of_jsbytes('%s file "%s"%s, line %d, characters %d-%d')],
     _bs_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" unknown location"),0]],
       caml_string_of_jsbytes("%s unknown location")],
     _bq_=
      [0,
       [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]],
       caml_string_of_jsbytes("Uncaught exception: %s\n")],
     _bp_=
      [0,
       [11,caml_string_of_jsbytes("Uncaught exception: "),[2,0,[12,10,0]]],
       caml_string_of_jsbytes("Uncaught exception: %s\n")],
     _bn_=[0,[12,40,[2,0,[2,0,[12,41,0]]]],caml_string_of_jsbytes("(%s%s)")],
     _bo_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _bl_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _bk_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bD_=
      [0,
       [11,caml_string_of_jsbytes("minor_collections: "),[4,0,0,0,[12,10,0]]],
       caml_string_of_jsbytes("minor_collections: %d\n")],
     _bE_=
      [0,
       [11,caml_string_of_jsbytes("major_collections: "),[4,0,0,0,[12,10,0]]],
       caml_string_of_jsbytes("major_collections: %d\n")],
     _bF_=
      [0,
       [11,caml_string_of_jsbytes("compactions:       "),[4,0,0,0,[12,10,0]]],
       caml_string_of_jsbytes("compactions:       %d\n")],
     _bG_=[0,[12,10,0],caml_string_of_jsbytes("\n")],
     _bH_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")],
     _bI_=
      [0,
       [11,
        caml_string_of_jsbytes("minor_words:    "),
        [8,[0,0,0],[1,1],[0,0],[12,10,0]]],
       caml_string_of_jsbytes("minor_words:    %*.0f\n")],
     _bJ_=
      [0,
       [11,
        caml_string_of_jsbytes("promoted_words: "),
        [8,[0,0,0],[1,1],[0,0],[12,10,0]]],
       caml_string_of_jsbytes("promoted_words: %*.0f\n")],
     _bK_=
      [0,
       [11,
        caml_string_of_jsbytes("major_words:    "),
        [8,[0,0,0],[1,1],[0,0],[12,10,0]]],
       caml_string_of_jsbytes("major_words:    %*.0f\n")],
     _bL_=[0,[12,10,0],caml_string_of_jsbytes("\n")],
     _bM_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _bN_=
      [0,
       [11,caml_string_of_jsbytes("top_heap_words: "),[4,0,[1,1],0,[12,10,0]]],
       caml_string_of_jsbytes("top_heap_words: %*d\n")],
     _bO_=
      [0,
       [11,caml_string_of_jsbytes("heap_words:     "),[4,0,[1,1],0,[12,10,0]]],
       caml_string_of_jsbytes("heap_words:     %*d\n")],
     _bP_=
      [0,
       [11,caml_string_of_jsbytes("live_words:     "),[4,0,[1,1],0,[12,10,0]]],
       caml_string_of_jsbytes("live_words:     %*d\n")],
     _bQ_=
      [0,
       [11,caml_string_of_jsbytes("free_words:     "),[4,0,[1,1],0,[12,10,0]]],
       caml_string_of_jsbytes("free_words:     %*d\n")],
     _bR_=
      [0,
       [11,caml_string_of_jsbytes("largest_free:   "),[4,0,[1,1],0,[12,10,0]]],
       caml_string_of_jsbytes("largest_free:   %*d\n")],
     _bS_=
      [0,
       [11,caml_string_of_jsbytes("fragments:      "),[4,0,[1,1],0,[12,10,0]]],
       caml_string_of_jsbytes("fragments:      %*d\n")],
     _bT_=[0,[12,10,0],caml_string_of_jsbytes("\n")],
     _bU_=
      [0,
       [11,caml_string_of_jsbytes("live_blocks: "),[4,0,0,0,[12,10,0]]],
       caml_string_of_jsbytes("live_blocks: %d\n")],
     _bV_=
      [0,
       [11,caml_string_of_jsbytes("free_blocks: "),[4,0,0,0,[12,10,0]]],
       caml_string_of_jsbytes("free_blocks: %d\n")],
     _bW_=
      [0,
       [11,caml_string_of_jsbytes("heap_chunks: "),[4,0,0,0,[12,10,0]]],
       caml_string_of_jsbytes("heap_chunks: %d\n")],
     _bZ_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _b0_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _b1_=
      [0,
       987910699,
       495797812,
       364182224,
       414272206,
       318284740,
       990407751,
       383018966,
       270373319,
       840823159,
       24560019,
       536292337,
       512266505,
       189156120,
       730249596,
       143776328,
       51606627,
       140166561,
       366354223,
       1003410265,
       700563762,
       981890670,
       913149062,
       526082594,
       1021425055,
       784300257,
       667753350,
       630144451,
       949649812,
       48546892,
       415514493,
       258888527,
       511570777,
       89983870,
       283659902,
       308386020,
       242688715,
       482270760,
       865188196,
       1027664170,
       207196989,
       193777847,
       619708188,
       671350186,
       149669678,
       257044018,
       87658204,
       558145612,
       183450813,
       28133145,
       901332182,
       710253903,
       510646120,
       652377910,
       409934019,
       801085050],
     _b5_=[0,0],
     _b4_=[0,caml_string_of_jsbytes("hashtbl.ml"),102,23],
     _b8_=[3,0,3],
     _b7_=[0,caml_string_of_jsbytes("")],
     _b6_=[0,caml_string_of_jsbytes(""),0,caml_string_of_jsbytes("")],
     _cm_=[0,91],
     _cl_=[0,123],
     _cn_=[0,caml_string_of_jsbytes("scanf.ml"),1453,13],
     _co_=[0,[3,0,[10,0]],caml_string_of_jsbytes("%S%!")],
     _ck_=[0,37,caml_string_of_jsbytes("")],
     _cj_=
      [0,
       [11,
        caml_string_of_jsbytes("scanf: bad input at char number "),
        [4,3,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]],
       caml_string_of_jsbytes("scanf: bad input at char number %i: %s")],
     _ci_=
      [0,
       [11,
        caml_string_of_jsbytes("the character "),
        [1,[11,caml_string_of_jsbytes(" cannot start a boolean"),0]]],
       caml_string_of_jsbytes("the character %C cannot start a boolean")],
     _ch_=
      [0,
       [11,
        caml_string_of_jsbytes("bad character hexadecimal encoding \\"),
        [0,[0,0]]],
       caml_string_of_jsbytes("bad character hexadecimal encoding \\%c%c")],
     _cg_=
      [0,
       [11,
        caml_string_of_jsbytes("bad character decimal encoding \\"),
        [0,[0,[0,0]]]],
       caml_string_of_jsbytes("bad character decimal encoding \\%c%c%c")],
     _cf_=
      [0,
       [11,
        caml_string_of_jsbytes("character "),
        [1,
         [11,
          caml_string_of_jsbytes(" is not a valid "),
          [2,0,[11,caml_string_of_jsbytes(" digit"),0]]]]],
       caml_string_of_jsbytes("character %C is not a valid %s digit")],
     _ce_=
      [0,
       [11,
        caml_string_of_jsbytes("character "),
        [1,[11,caml_string_of_jsbytes(" is not a decimal digit"),0]]],
       caml_string_of_jsbytes("character %C is not a decimal digit")],
     _cd_=[0,caml_string_of_jsbytes("scanf.ml"),555,9],
     _cc_=
      [0,
       [11,caml_string_of_jsbytes("invalid boolean '"),[2,0,[12,39,0]]],
       caml_string_of_jsbytes("invalid boolean '%s'")],
     _cb_=
      [0,
       [11,
        caml_string_of_jsbytes("looking for "),
        [1,[11,caml_string_of_jsbytes(", found "),[1,0]]]],
       caml_string_of_jsbytes("looking for %C, found %C")],
     _ca_=
      [0,
       [11,
        caml_string_of_jsbytes("scanning of "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (" failed: premature end of file occurred before end of token"),
          0]]],
       caml_string_of_jsbytes
        ("scanning of %s failed: premature end of file occurred before end of token")],
     _b$_=
      [0,
       [11,
        caml_string_of_jsbytes("scanning of "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (" failed: the specified length was too short for token"),
          0]]],
       caml_string_of_jsbytes
        ("scanning of %s failed: the specified length was too short for token")],
     _b__=
      [0,
       [11,caml_string_of_jsbytes("illegal escape character "),[1,0]],
       caml_string_of_jsbytes("illegal escape character %C")],
     _cv_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),438,17],
     _cu_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),420,13],
     _ct_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),417,13],
     _cs_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),414,13],
     _cr_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),411,13],
     _cq_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),408,13],
     _cp_=[0,caml_string_of_jsbytes("camlinternalOO.ml"),281,50],
     _cy_=[0,0],
     _cx_=[0,0],
     _cw_=[0,0],
     _cD_=[0,7,0],
     _cC_=[0,1,[0,3,[0,5,0]]],
     _cB_=[0,[2,0,[4,6,[0,2,6],0,[2,0,0]]],caml_string_of_jsbytes("%s%06x%s")],
     _cA_=[0,caml_string_of_jsbytes('"'),0],
     _cE_=[254,0.,0.];
    function erase_rel(param)
     {if(typeof param === "number")
       return 0;
      else
       switch(param[0])
        {case 0:var rest=param[1];return [0,erase_rel(rest)];
         case 1:var rest$0=param[1];return [1,erase_rel(rest$0)];
         case 2:var rest$1=param[1];return [2,erase_rel(rest$1)];
         case 3:var rest$2=param[1];return [3,erase_rel(rest$2)];
         case 4:var rest$3=param[1];return [4,erase_rel(rest$3)];
         case 5:var rest$4=param[1];return [5,erase_rel(rest$4)];
         case 6:var rest$5=param[1];return [6,erase_rel(rest$5)];
         case 7:var rest$6=param[1];return [7,erase_rel(rest$6)];
         case 8:
          var rest$7=param[2],ty=param[1];return [8,ty,erase_rel(rest$7)];
         case 9:
          var rest$8=param[3],ty1=param[1];
          return [9,ty1,ty1,erase_rel(rest$8)];
         case 10:var rest$9=param[1];return [10,erase_rel(rest$9)];
         case 11:var rest$10=param[1];return [11,erase_rel(rest$10)];
         case 12:var rest$11=param[1];return [12,erase_rel(rest$11)];
         case 13:var rest$12=param[1];return [13,erase_rel(rest$12)];
         default:var rest$13=param[1];return [14,erase_rel(rest$13)]}}
    function concat_fmtty(fmtty1,fmtty2)
     {if(typeof fmtty1 === "number")
       return fmtty2;
      else
       switch(fmtty1[0])
        {case 0:var rest=fmtty1[1];return [0,concat_fmtty(rest,fmtty2)];
         case 1:var rest$0=fmtty1[1];return [1,concat_fmtty(rest$0,fmtty2)];
         case 2:var rest$1=fmtty1[1];return [2,concat_fmtty(rest$1,fmtty2)];
         case 3:var rest$2=fmtty1[1];return [3,concat_fmtty(rest$2,fmtty2)];
         case 4:var rest$3=fmtty1[1];return [4,concat_fmtty(rest$3,fmtty2)];
         case 5:var rest$4=fmtty1[1];return [5,concat_fmtty(rest$4,fmtty2)];
         case 6:var rest$5=fmtty1[1];return [6,concat_fmtty(rest$5,fmtty2)];
         case 7:var rest$6=fmtty1[1];return [7,concat_fmtty(rest$6,fmtty2)];
         case 8:
          var rest$7=fmtty1[2],ty=fmtty1[1];
          return [8,ty,concat_fmtty(rest$7,fmtty2)];
         case 9:
          var rest$8=fmtty1[3],ty2=fmtty1[2],ty1=fmtty1[1];
          return [9,ty1,ty2,concat_fmtty(rest$8,fmtty2)];
         case 10:var rest$9=fmtty1[1];return [10,concat_fmtty(rest$9,fmtty2)];
         case 11:
          var rest$10=fmtty1[1];return [11,concat_fmtty(rest$10,fmtty2)];
         case 12:
          var rest$11=fmtty1[1];return [12,concat_fmtty(rest$11,fmtty2)];
         case 13:
          var rest$12=fmtty1[1];return [13,concat_fmtty(rest$12,fmtty2)];
         default:
          var rest$13=fmtty1[1];return [14,concat_fmtty(rest$13,fmtty2)]}}
    function concat_fmt(fmt1,fmt2)
     {if(typeof fmt1 === "number")
       return fmt2;
      else
       switch(fmt1[0])
        {case 0:var rest=fmt1[1];return [0,concat_fmt(rest,fmt2)];
         case 1:var rest$0=fmt1[1];return [1,concat_fmt(rest$0,fmt2)];
         case 2:
          var rest$1=fmt1[2],pad=fmt1[1];
          return [2,pad,concat_fmt(rest$1,fmt2)];
         case 3:
          var rest$2=fmt1[2],pad$0=fmt1[1];
          return [3,pad$0,concat_fmt(rest$2,fmt2)];
         case 4:
          var rest$3=fmt1[4],prec=fmt1[3],pad$1=fmt1[2],iconv=fmt1[1];
          return [4,iconv,pad$1,prec,concat_fmt(rest$3,fmt2)];
         case 5:
          var rest$4=fmt1[4],prec$0=fmt1[3],pad$2=fmt1[2],iconv$0=fmt1[1];
          return [5,iconv$0,pad$2,prec$0,concat_fmt(rest$4,fmt2)];
         case 6:
          var rest$5=fmt1[4],prec$1=fmt1[3],pad$3=fmt1[2],iconv$1=fmt1[1];
          return [6,iconv$1,pad$3,prec$1,concat_fmt(rest$5,fmt2)];
         case 7:
          var rest$6=fmt1[4],prec$2=fmt1[3],pad$4=fmt1[2],iconv$2=fmt1[1];
          return [7,iconv$2,pad$4,prec$2,concat_fmt(rest$6,fmt2)];
         case 8:
          var rest$7=fmt1[4],prec$3=fmt1[3],pad$5=fmt1[2],fconv=fmt1[1];
          return [8,fconv,pad$5,prec$3,concat_fmt(rest$7,fmt2)];
         case 9:
          var rest$8=fmt1[2],pad$6=fmt1[1];
          return [9,pad$6,concat_fmt(rest$8,fmt2)];
         case 10:var rest$9=fmt1[1];return [10,concat_fmt(rest$9,fmt2)];
         case 11:
          var rest$10=fmt1[2],str=fmt1[1];
          return [11,str,concat_fmt(rest$10,fmt2)];
         case 12:
          var rest$11=fmt1[2],chr=fmt1[1];
          return [12,chr,concat_fmt(rest$11,fmt2)];
         case 13:
          var rest$12=fmt1[3],fmtty=fmt1[2],pad$7=fmt1[1];
          return [13,pad$7,fmtty,concat_fmt(rest$12,fmt2)];
         case 14:
          var rest$13=fmt1[3],fmtty$0=fmt1[2],pad$8=fmt1[1];
          return [14,pad$8,fmtty$0,concat_fmt(rest$13,fmt2)];
         case 15:var rest$14=fmt1[1];return [15,concat_fmt(rest$14,fmt2)];
         case 16:var rest$15=fmt1[1];return [16,concat_fmt(rest$15,fmt2)];
         case 17:
          var rest$16=fmt1[2],fmting_lit=fmt1[1];
          return [17,fmting_lit,concat_fmt(rest$16,fmt2)];
         case 18:
          var rest$17=fmt1[2],fmting_gen=fmt1[1];
          return [18,fmting_gen,concat_fmt(rest$17,fmt2)];
         case 19:var rest$18=fmt1[1];return [19,concat_fmt(rest$18,fmt2)];
         case 20:
          var rest$19=fmt1[3],char_set=fmt1[2],width_opt=fmt1[1];
          return [20,width_opt,char_set,concat_fmt(rest$19,fmt2)];
         case 21:
          var rest$20=fmt1[2],counter=fmt1[1];
          return [21,counter,concat_fmt(rest$20,fmt2)];
         case 22:var rest$21=fmt1[1];return [22,concat_fmt(rest$21,fmt2)];
         case 23:
          var rest$22=fmt1[2],ign=fmt1[1];
          return [23,ign,concat_fmt(rest$22,fmt2)];
         default:
          var rest$23=fmt1[3],f=fmt1[2],arity=fmt1[1];
          return [24,arity,f,concat_fmt(rest$23,fmt2)]}}
    var CamlinternalFormatBasics=[0,concat_fmtty,erase_rel,concat_fmt];
    caml_register_global
     (734,CamlinternalFormatBasics,"CamlinternalFormatBasics");
    function failwith(s){throw [0,Failure,s]}
    function invalid_arg(s){throw [0,Invalid_argument,s]}
    var Exit=[248,cst_Stdlib_Exit,caml_fresh_oo_id(0)];
    function min(x,y){return caml_lessequal(x,y)?x:y}
    function max(x,y){return caml_greaterequal(x,y)?x:y}
    function abs(x){return 0 <= x?x:- x | 0}
    function lnot(x){return x ^ -1}
    var
     infinity=caml_int64_float_of_bits(_a_),
     neg_infinity=caml_int64_float_of_bits(_b_),
     nan=caml_int64_float_of_bits(_c_),
     max_float=caml_int64_float_of_bits(_d_),
     min_float=caml_int64_float_of_bits(_e_),
     epsilon=caml_int64_float_of_bits(_f_),
     max_int=2147483647,
     min_int=-2147483648;
    function symbol(s1,s2)
     {var
       l1=caml_ml_string_length(s1),
       l2=caml_ml_string_length(s2),
       s=caml_create_bytes(l1 + l2 | 0);
      caml_blit_string(s1,0,s,0,l1);
      caml_blit_string(s2,0,s,l1,l2);
      return caml_string_of_bytes(s)}
    function char_of_int(n)
     {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_char_of_int)}
    function string_of_bool(b){return b?cst_true:cst_false}
    function bool_of_string(param)
     {return caml_string_notequal(param,cst_false$0)
              ?caml_string_notequal(param,cst_true$0)
                ?invalid_arg(cst_bool_of_string)
                :1
              :0}
    function bool_of_string_opt(param)
     {return caml_string_notequal(param,cst_false$1)
              ?caml_string_notequal(param,cst_true$1)?0:_g_
              :_h_}
    function string_of_int(n){return caml_string_of_jsbytes("" + n)}
    function int_of_string_opt(s)
     {try
       {var _As_=[0,caml_int_of_string(s)];return _As_}
      catch(_At_)
       {_At_ = caml_wrap_exception(_At_);
        if(_At_[1] === Failure)return 0;
        throw _At_}}
    function valid_float_lexem(s)
     {var l=caml_ml_string_length(s),i=0;
      for(;;)
       {if(l <= i)return symbol(s,cst);
        var match=caml_string_get(s,i),switch$0=0;
        if(48 <= match)
         {if(! (58 <= match))switch$0 = 1}
        else
         if(45 === match)switch$0 = 1;
        if(switch$0){var i$0=i + 1 | 0,i=i$0;continue}
        return s}}
    function to_string(f)
     {return valid_float_lexem(caml_format_float(cst_12g,f))}
    function of_string_opt(s)
     {try
       {var _Aq_=[0,caml_float_of_string(s)];return _Aq_}
      catch(_Ar_)
       {_Ar_ = caml_wrap_exception(_Ar_);
        if(_Ar_[1] === Failure)return 0;
        throw _Ar_}}
    function append(l1,l2)
     {if(l1){var tl=l1[2],hd=l1[1];return [0,hd,append(tl,l2)]}return l2}
    var
     stdin=caml_ml_open_descriptor_in(0),
     stdout=caml_ml_open_descriptor_out(1),
     stderr=caml_ml_open_descriptor_out(2);
    function open_out_gen(mode,perm,name)
     {var c=caml_ml_open_descriptor_out(caml_sys_open(name,mode,perm));
      caml_ml_set_channel_name(c,name);
      return c}
    function open_out(name){return open_out_gen(_i_,438,name)}
    function open_out_bin(name){return open_out_gen(_j_,438,name)}
    function flush_all(param)
     {function iter(param)
       {var param$0=param;
        for(;;)
         {if(param$0)
           {var l=param$0[2],a=param$0[1];
            try
             {caml_ml_flush(a)}
            catch(_Ap_)
             {_Ap_ = caml_wrap_exception(_Ap_);
              if(_Ap_[1] !== Sys_error)throw _Ap_;
              var _Ao_=_Ap_}
            var param$0=l;
            continue}
          return 0}}
      return iter(runtime.caml_ml_out_channels_list(0))}
    function output_bytes(oc,s)
     {return caml_ml_output_bytes(oc,s,0,caml_ml_bytes_length(s))}
    function output_string(oc,s)
     {return caml_ml_output(oc,s,0,caml_ml_string_length(s))}
    function output(oc,s,ofs,len)
     {if
       (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
       return caml_ml_output_bytes(oc,s,ofs,len);
      return invalid_arg(cst_output)}
    function output_substring(oc,s,ofs,len)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_string_length(s) - len | 0) < ofs))
       return caml_ml_output(oc,s,ofs,len);
      return invalid_arg(cst_output_substring)}
    function output_value(chan,v){return caml_output_value(chan,v,0)}
    function close_out(oc){caml_ml_flush(oc);return caml_ml_close_channel(oc)}
    function close_out_noerr(oc)
     {try {caml_ml_flush(oc)}catch(_An_){}
      try
       {var _Al_=caml_ml_close_channel(oc);return _Al_}
      catch(_Am_){return 0}}
    function open_in_gen(mode,perm,name)
     {var c=caml_ml_open_descriptor_in(caml_sys_open(name,mode,perm));
      caml_ml_set_channel_name(c,name);
      return c}
    function open_in(name){return open_in_gen(_k_,0,name)}
    function open_in_bin(name){return open_in_gen(_l_,0,name)}
    function input(ic,s,ofs,len)
     {if
       (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
       return caml_ml_input(ic,s,ofs,len);
      return invalid_arg(cst_input)}
    function unsafe_really_input(ic,s,ofs,len)
     {var ofs$0=ofs,len$0=len;
      for(;;)
       {if(0 < len$0)
         {var r=caml_ml_input(ic,s,ofs$0,len$0);
          if(0 === r)throw End_of_file;
          var len$1=len$0 - r | 0,ofs$1=ofs$0 + r | 0,ofs$0=ofs$1,len$0=len$1;
          continue}
        return 0}}
    function really_input(ic,s,ofs,len)
     {if
       (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
       return unsafe_really_input(ic,s,ofs,len);
      return invalid_arg(cst_really_input)}
    function really_input_string(ic,len)
     {var s=caml_create_bytes(len);
      really_input(ic,s,0,len);
      return caml_string_of_bytes(s)}
    function input_line(chan)
     {function build_result(buf,pos,param)
       {var pos$0=pos,param$0=param;
        for(;;)
         {if(param$0)
           {var tl=param$0[2],hd=param$0[1],len=caml_ml_bytes_length(hd);
            caml_blit_bytes(hd,0,buf,pos$0 - len | 0,len);
            var pos$1=pos$0 - len | 0,pos$0=pos$1,param$0=tl;
            continue}
          return buf}}
      var accu=0,len=0;
      for(;;)
       {var n=runtime.caml_ml_input_scan_line(chan);
        if(0 === n)
         {if(! accu)throw End_of_file;
          var _Ak_=build_result(caml_create_bytes(len),len,accu)}
        else
         {if(! (0 < n))
           {var beg=caml_create_bytes(- n | 0);
            caml_ml_input(chan,beg,0,- n | 0);
            var len$1=len - n | 0,accu$0=[0,beg,accu],accu=accu$0,len=len$1;
            continue}
          var res=caml_create_bytes(n - 1 | 0);
          caml_ml_input(chan,res,0,n - 1 | 0);
          caml_ml_input_char(chan);
          if(accu)
           var
            len$0=(len + n | 0) - 1 | 0,
            _Ak_=build_result(caml_create_bytes(len$0),len$0,[0,res,accu]);
          else
           var _Ak_=res}
        return caml_string_of_bytes(_Ak_)}}
    function close_in_noerr(ic)
     {try
       {var _Ai_=caml_ml_close_channel(ic);return _Ai_}
      catch(_Aj_){return 0}}
    function print_char(c){return caml_ml_output_char(stdout,c)}
    function print_string(s){return output_string(stdout,s)}
    function print_bytes(s){return output_bytes(stdout,s)}
    function print_int(i)
     {return output_string(stdout,caml_string_of_jsbytes("" + i))}
    function print_float(f){return output_string(stdout,to_string(f))}
    function print_endline(s)
     {output_string(stdout,s);
      caml_ml_output_char(stdout,10);
      return caml_ml_flush(stdout)}
    function print_newline(param)
     {caml_ml_output_char(stdout,10);return caml_ml_flush(stdout)}
    function prerr_char(c){return caml_ml_output_char(stderr,c)}
    function prerr_string(s){return output_string(stderr,s)}
    function prerr_bytes(s){return output_bytes(stderr,s)}
    function prerr_int(i)
     {return output_string(stderr,caml_string_of_jsbytes("" + i))}
    function prerr_float(f){return output_string(stderr,to_string(f))}
    function prerr_endline(s)
     {output_string(stderr,s);
      caml_ml_output_char(stderr,10);
      return caml_ml_flush(stderr)}
    function prerr_newline(param)
     {caml_ml_output_char(stderr,10);return caml_ml_flush(stderr)}
    function read_line(param){caml_ml_flush(stdout);return input_line(stdin)}
    function read_int(param){return caml_int_of_string(read_line(0))}
    function read_int_opt(param){return int_of_string_opt(read_line(0))}
    function read_float(param){return caml_float_of_string(read_line(0))}
    function read_float_opt(param){return of_string_opt(read_line(0))}
    function string_of_format(param){var str=param[2];return str}
    function symbol$0(param,_Ag_)
     {var
       str2=_Ag_[2],
       fmt2=_Ag_[1],
       str1=param[2],
       fmt1=param[1],
       _Ah_=symbol(str1,symbol(cst$0,str2));
      return [0,concat_fmt(fmt1,fmt2),_Ah_]}
    var exit_function=[0,flush_all];
    function at_exit(f)
     {var g=exit_function[1],f_already_ran=[0,0];
      exit_function[1]
      =
      function(param)
       {if(1 - f_already_ran[1]){f_already_ran[1] = 1;caml_call1(f,0)}
        return caml_call1(g,0)};
      return 0}
    function do_at_exit(param){return caml_call1(exit_function[1],0)}
    function exit(retcode)
     {do_at_exit(0);return runtime.caml_sys_exit(retcode)}
    var
     set_binary_mode_in=caml_ml_set_binary_mode,
     close_in=caml_ml_close_channel,
     in_channel_length=caml_ml_channel_size,
     pos_in=runtime.caml_ml_pos_in,
     seek_in=runtime.caml_ml_seek_in,
     input_value=caml_input_value,
     input_binary_int=runtime.caml_ml_input_int,
     input_byte=caml_ml_input_char,
     input_char=caml_ml_input_char,
     set_binary_mode_out=caml_ml_set_binary_mode,
     out_channel_length=caml_ml_channel_size,
     pos_out=runtime.caml_ml_pos_out,
     seek_out=runtime.caml_ml_seek_out,
     output_binary_int=runtime.caml_ml_output_int,
     output_byte=caml_ml_output_char,
     output_char=caml_ml_output_char,
     flush=caml_ml_flush,
     Stdlib=
      [0,
       invalid_arg,
       failwith,
       Exit,
       Match_failure,
       Assert_failure,
       Invalid_argument,
       Failure,
       Not_found,
       Out_of_memory,
       Stack_overflow,
       Sys_error,
       End_of_file,
       Division_by_zero,
       Sys_blocked_io,
       Undefined_recursive_module,
       min,
       max,
       abs,
       max_int,
       min_int,
       lnot,
       infinity,
       neg_infinity,
       nan,
       max_float,
       min_float,
       epsilon,
       symbol,
       char_of_int,
       string_of_bool,
       bool_of_string_opt,
       bool_of_string,
       string_of_int,
       int_of_string_opt,
       to_string,
       of_string_opt,
       append,
       stdin,
       stdout,
       stderr,
       print_char,
       print_string,
       print_bytes,
       print_int,
       print_float,
       print_endline,
       print_newline,
       prerr_char,
       prerr_string,
       prerr_bytes,
       prerr_int,
       prerr_float,
       prerr_endline,
       prerr_newline,
       read_line,
       read_int_opt,
       read_int,
       read_float_opt,
       read_float,
       open_out,
       open_out_bin,
       open_out_gen,
       flush,
       flush_all,
       output_char,
       output_string,
       output_bytes,
       output,
       output_substring,
       output_byte,
       output_binary_int,
       output_value,
       seek_out,
       pos_out,
       out_channel_length,
       close_out,
       close_out_noerr,
       set_binary_mode_out,
       open_in,
       open_in_bin,
       open_in_gen,
       input_char,
       input_line,
       input,
       really_input,
       really_input_string,
       input_byte,
       input_binary_int,
       input_value,
       seek_in,
       pos_in,
       in_channel_length,
       close_in,
       close_in_noerr,
       set_binary_mode_in,
       [0,
        runtime.caml_ml_seek_out_64,
        runtime.caml_ml_pos_out_64,
        caml_ml_channel_size_64,
        runtime.caml_ml_seek_in_64,
        runtime.caml_ml_pos_in_64,
        caml_ml_channel_size_64],
       string_of_format,
       symbol$0,
       exit,
       at_exit,
       valid_float_lexem,
       unsafe_really_input,
       do_at_exit];
    caml_register_global(747,Stdlib,"Stdlib");
    var
     Exit$0=[248,cst_Stdlib_Pervasives_Exit,caml_fresh_oo_id(0)],
     Stdlib_pervasives=
      [0,
       invalid_arg,
       failwith,
       Exit$0,
       min,
       max,
       abs,
       max_int,
       min_int,
       lnot,
       infinity,
       neg_infinity,
       nan,
       max_float,
       min_float,
       epsilon,
       symbol,
       char_of_int,
       string_of_bool,
       bool_of_string,
       bool_of_string_opt,
       string_of_int,
       int_of_string_opt,
       to_string,
       of_string_opt,
       append,
       stdin,
       stdout,
       stderr,
       print_char,
       print_string,
       print_bytes,
       print_int,
       print_float,
       print_endline,
       print_newline,
       prerr_char,
       prerr_string,
       prerr_bytes,
       prerr_int,
       prerr_float,
       prerr_endline,
       prerr_newline,
       read_line,
       read_int,
       read_int_opt,
       read_float,
       read_float_opt,
       open_out,
       open_out_bin,
       open_out_gen,
       flush,
       flush_all,
       output_char,
       output_string,
       output_bytes,
       output,
       output_substring,
       output_byte,
       output_binary_int,
       output_value,
       seek_out,
       pos_out,
       out_channel_length,
       close_out,
       close_out_noerr,
       set_binary_mode_out,
       open_in,
       open_in_bin,
       open_in_gen,
       input_char,
       input_line,
       input,
       really_input,
       really_input_string,
       input_byte,
       input_binary_int,
       input_value,
       seek_in,
       pos_in,
       in_channel_length,
       close_in,
       close_in_noerr,
       set_binary_mode_in,
       string_of_format,
       symbol$0,
       exit,
       at_exit,
       valid_float_lexem,
       do_at_exit];
    caml_register_global(748,Stdlib_pervasives,"Stdlib__pervasives");
    function empty(param){return 0}
    function return$0(x,param){return [0,x,empty]}
    function map(f,seq,param)
     {var match=caml_call1(seq,0);
      if(match)
       {var
         next=match[2],
         x=match[1],
         _Ae_=function(_Af_){return map(f,next,_Af_)};
        return [0,caml_call1(f,x),_Ae_]}
      return 0}
    function filter_map(f,seq,param)
     {var seq$0=seq;
      for(;;)
       {var match=caml_call1(seq$0,0);
        if(match)
         {var next=match[2],x=match[1],match$0=caml_call1(f,x);
          if(match$0)
           {var y=match$0[1];
            return [0,y,function(_Ad_){return filter_map(f,next,_Ad_)}]}
          var seq$0=next;
          continue}
        return 0}}
    function filter(f,seq,param)
     {var seq$0=seq;
      for(;;)
       {var match=caml_call1(seq$0,0);
        if(match)
         {var next=match[2],x=match[1];
          if(caml_call1(f,x))
           return [0,x,function(_Ac_){return filter(f,next,_Ac_)}];
          var seq$0=next;
          continue}
        return 0}}
    function flat_map$0(counter,f,seq,param)
     {var match=caml_call1(seq,0);
      if(match)
       {var next=match[2],x=match[1],_Ab_=caml_call1(f,x),_Aa_=0;
        if(counter < 50)
         {var counter$0=counter + 1 | 0;
          return flat_map_app$0(counter$0,f,_Ab_,next,_Aa_)}
        return caml_trampoline_return(flat_map_app$0,[0,f,_Ab_,next,_Aa_])}
      return 0}
    function flat_map_app$0(counter,f,seq,tail,param)
     {var match=caml_call1(seq,0);
      if(match)
       {var next=match[2],x=match[1];
        return [0,x,function(_z$_){return flat_map_app(f,next,tail,_z$_)}]}
      var _z__=0;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return flat_map$0(counter$0,f,tail,_z__)}
      return caml_trampoline_return(flat_map$0,[0,f,tail,_z__])}
    function flat_map(f,seq,param)
     {return caml_trampoline(flat_map$0(0,f,seq,param))}
    function flat_map_app(f,seq,tail,param)
     {return caml_trampoline(flat_map_app$0(0,f,seq,tail,param))}
    function fold_left(f,acc,seq)
     {var acc$0=acc,seq$0=seq;
      for(;;)
       {var match=caml_call1(seq$0,0);
        if(match)
         {var
           next=match[2],
           x=match[1],
           acc$1=caml_call2(f,acc$0,x),
           acc$0=acc$1,
           seq$0=next;
          continue}
        return acc$0}}
    function iter(f,seq)
     {var seq$0=seq;
      for(;;)
       {var match=caml_call1(seq$0,0);
        if(match)
         {var next=match[2],x=match[1];
          caml_call1(f,x);
          var seq$0=next;
          continue}
        return 0}}
    var
     Stdlib_seq=
      [0,empty,return$0,map,filter,filter_map,flat_map,fold_left,iter];
    caml_register_global(749,Stdlib_seq,"Stdlib__seq");
    var none=0;
    function some(v){return [0,v]}
    function value(o,default$0){if(o){var v=o[1];return v}return default$0}
    function get(param)
     {if(param){var v=param[1];return v}
      return invalid_arg(cst_option_is_None)}
    function bind(o,f){if(o){var v=o[1];return caml_call1(f,v)}return 0}
    function join(param){if(param){var o=param[1];return o}return 0}
    function map$0(f,o){if(o){var v=o[1];return [0,caml_call1(f,v)]}return 0}
    function fold(none,some,param)
     {if(param){var v=param[1];return caml_call1(some,v)}return none}
    function iter$0(f,param)
     {if(param){var v=param[1];return caml_call1(f,v)}return 0}
    function is_none(param){return param?0:1}
    function is_some(param){return param?1:0}
    function equal(eq,o0,o1)
     {if(o0)
       {if(o1){var v1=o1[1],v0=o0[1];return caml_call2(eq,v0,v1)}}
      else
       if(! o1)return 1;
      return 0}
    function compare(cmp,o0,o1)
     {if(o0)
       {var _z9_=o0[1];
        if(o1){var v1=o1[1];return caml_call2(cmp,_z9_,v1)}
        return 1}
      return o1?-1:0}
    function to_result(none,param)
     {if(param){var v=param[1];return [0,v]}return [1,none]}
    function to_list(param){if(param){var v=param[1];return [0,v,0]}return 0}
    function to_seq(param)
     {if(param){var v=param[1];return function(_z8_){return return$0(v,_z8_)}}
      return empty}
    var
     Stdlib_option=
      [0,
       none,
       some,
       value,
       get,
       bind,
       join,
       map$0,
       fold,
       iter$0,
       is_none,
       is_some,
       equal,
       compare,
       to_result,
       to_list,
       to_seq];
    caml_register_global(750,Stdlib_option,"Stdlib__option");
    function ok(v){return [0,v]}
    function error(e){return [1,e]}
    function value$0(r,default$0)
     {if(0 === r[0]){var v=r[1];return v}return default$0}
    function get_ok(param)
     {if(0 === param[0]){var v=param[1];return v}
      return invalid_arg(cst_result_is_Error)}
    function get_error(param)
     {if(0 === param[0])return invalid_arg(cst_result_is_Ok);
      var e=param[1];
      return e}
    function bind$0(r,f)
     {if(0 === r[0]){var v=r[1];return caml_call1(f,v)}return r}
    function join$0(e){if(0 === e[0]){var r=e[1];return r}return e}
    function map$1(f,e)
     {if(0 === e[0]){var v=e[1];return [0,caml_call1(f,v)]}return e}
    function map_error(f,v)
     {if(0 === v[0])return v;var e=v[1];return [1,caml_call1(f,e)]}
    function fold$0(ok,error,param)
     {if(0 === param[0]){var v=param[1];return caml_call1(ok,v)}
      var e=param[1];
      return caml_call1(error,e)}
    function iter$1(f,param)
     {if(0 === param[0]){var v=param[1];return caml_call1(f,v)}return 0}
    function iter_error(f,param)
     {if(0 === param[0])return 0;var e=param[1];return caml_call1(f,e)}
    function is_ok(param){return 0 === param[0]?1:0}
    function is_error(param){return 0 === param[0]?0:1}
    function equal$0(ok,error,r0,match)
     {if(0 === r0[0])
       {var _z6_=r0[1];
        if(0 === match[0]){var v1=match[1];return caml_call2(ok,_z6_,v1)}}
      else
       {var _z7_=r0[1];
        if(0 !== match[0]){var e1=match[1];return caml_call2(error,_z7_,e1)}}
      return 0}
    function compare$0(ok,error,r0,match)
     {if(0 === r0[0])
       {var _z4_=r0[1];
        if(0 === match[0]){var v1=match[1];return caml_call2(ok,_z4_,v1)}
        return -1}
      var _z5_=r0[1];
      if(0 === match[0])return 1;
      var e1=match[1];
      return caml_call2(error,_z5_,e1)}
    function to_option(param)
     {if(0 === param[0]){var v=param[1];return [0,v]}return 0}
    function to_list$0(param)
     {if(0 === param[0]){var v=param[1];return [0,v,0]}return 0}
    function to_seq$0(param)
     {if(0 === param[0])
       {var v=param[1];return function(_z3_){return return$0(v,_z3_)}}
      return empty}
    var
     Stdlib_result=
      [0,
       ok,
       error,
       value$0,
       get_ok,
       get_error,
       bind$0,
       join$0,
       map$1,
       map_error,
       fold$0,
       iter$1,
       iter_error,
       is_ok,
       is_error,
       equal$0,
       compare$0,
       to_option,
       to_list$0,
       to_seq$0];
    caml_register_global(751,Stdlib_result,"Stdlib__result");
    function equal$1(_z2_,_z1_){return _z2_ === _z1_?1:0}
    var compare$1=caml_int_compare;
    function to_int(param){return param?1:0}
    function to_float(param){return param?1.:0.}
    function to_string$0(param){return param?cst_true$2:cst_false$2}
    var
     Stdlib_bool=
      [0,
       function(_z0_){return 1 - _z0_},
       equal$1,
       compare$1,
       to_int,
       to_float,
       to_string$0];
    caml_register_global(752,Stdlib_bool,"Stdlib__bool");
    function chr(n)
     {if(0 <= n && ! (255 < n))return n;return invalid_arg(cst_Char_chr)}
    function escaped(c)
     {var switch$0=0;
      if(40 <= c)
       {if(92 === c)return cst$1;if(! (127 <= c))switch$0 = 1}
      else
       if(32 <= c)
        {if(39 <= c)return cst$2;switch$0 = 1}
       else
        if(! (14 <= c))
         switch(c)
          {case 8:return cst_b;
           case 9:return cst_t;
           case 10:return cst_n;
           case 13:return cst_r
           }
      if(switch$0)
       {var s$0=caml_create_bytes(1);
        caml_bytes_unsafe_set(s$0,0,c);
        return caml_string_of_bytes(s$0)}
      var s=caml_create_bytes(4);
      caml_bytes_unsafe_set(s,0,92);
      caml_bytes_unsafe_set(s,1,48 + (c / 100 | 0) | 0);
      caml_bytes_unsafe_set(s,2,48 + ((c / 10 | 0) % 10 | 0) | 0);
      caml_bytes_unsafe_set(s,3,48 + (c % 10 | 0) | 0);
      return caml_string_of_bytes(s)}
    function lowercase(c)
     {var switch$0=0;
      if(! (65 <= c) || 90 < c)switch$0 = 1;
      if(switch$0)
       {var switch$1=0;
        if(! (192 <= c) || 214 < c)switch$1 = 1;
        if(switch$1)
         {var switch$2=0;
          if(! (216 <= c) || 222 < c)switch$2 = 1;
          if(switch$2)return c}}
      return c + 32 | 0}
    function uppercase(c)
     {var switch$0=0;
      if(! (97 <= c) || 122 < c)switch$0 = 1;
      if(switch$0)
       {var switch$1=0;
        if(! (224 <= c) || 246 < c)switch$1 = 1;
        if(switch$1)
         {var switch$2=0;
          if(! (248 <= c) || 254 < c)switch$2 = 1;
          if(switch$2)return c}}
      return c - 32 | 0}
    function lowercase_ascii(c)
     {if(65 <= c && ! (90 < c))return c + 32 | 0;return c}
    function uppercase_ascii(c)
     {if(97 <= c && ! (122 < c))return c - 32 | 0;return c}
    function compare$2(c1,c2){return c1 - c2 | 0}
    function equal$2(c1,c2){return 0 === (c1 - c2 | 0)?1:0}
    var
     Stdlib_char=
      [0,
       chr,
       escaped,
       lowercase,
       uppercase,
       lowercase_ascii,
       uppercase_ascii,
       compare$2,
       equal$2];
    caml_register_global(753,Stdlib_char,"Stdlib__char");
    var
     min$0=0,
     max$0=1114111,
     lo_bound=55295,
     hi_bound=57344,
     bom=65279,
     rep=65533;
    function succ(u)
     {return u === 55295
              ?hi_bound
              :u === 1114111?invalid_arg(err_no_succ):u + 1 | 0}
    function pred(u)
     {return u === 57344?lo_bound:u === 0?invalid_arg(err_no_pred):u - 1 | 0}
    function is_valid(i)
     {var _zW_=0 <= i?1:0,_zX_=_zW_?i <= 55295?1:0:_zW_;
      if(_zX_)
       var _zY_=_zX_;
      else
       var _zZ_=57344 <= i?1:0,_zY_=_zZ_?i <= 1114111?1:0:_zZ_;
      return _zY_}
    function of_int(i)
     {return is_valid(i)
              ?i
              :invalid_arg
                (symbol
                  (caml_format_int(cst_X,i),cst_is_not_an_Unicode_scalar_v))}
    function is_char(u){return u < 256?1:0}
    function of_char(c){return c}
    function to_char(u)
     {return 255 < u
              ?invalid_arg
                (symbol
                  (cst_U,
                   symbol
                    (caml_format_int(cst_04X,u),cst_is_not_a_latin1_character)))
              :u}
    function unsafe_to_char(_zV_){return _zV_}
    function equal$3(_zU_,_zT_){return _zU_ === _zT_?1:0}
    var compare$3=caml_int_compare;
    function hash(_zS_){return _zS_}
    function _m_(_zR_){return _zR_}
    var
     Stdlib_uchar=
      [0,
       min$0,
       max$0,
       bom,
       rep,
       succ,
       pred,
       is_valid,
       of_int,
       function(_zQ_){return _zQ_},
       _m_,
       is_char,
       of_char,
       to_char,
       unsafe_to_char,
       equal$3,
       compare$3,
       hash];
    caml_register_global(754,Stdlib_uchar,"Stdlib__uchar");
    var
     executable_name=runtime.caml_sys_executable_name(0),
     match=runtime.caml_sys_get_config(0),
     os_type=match[1],
     match$0=runtime.caml_sys_const_backend_type(0),
     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,
     big_endian=0,
     match$1=32,
     int_size=32;
    function getenv_opt(s)
     {try
       {var _zO_=[0,caml_sys_getenv(s)];return _zO_}
      catch(_zP_)
       {_zP_ = caml_wrap_exception(_zP_);
        if(_zP_ === Not_found)return 0;
        throw _zP_}}
    var interactive=[0,0];
    function set_signal(sig_num,sig_beh){return 0}
    var
     Break=[248,cst_Stdlib_Sys_Break,caml_fresh_oo_id(0)],
     sigabrt=-1,
     sigalrm=-2,
     sigfpe=-3,
     sighup=-4,
     sigill=-5,
     sigint=-6,
     sigkill=-7,
     sigpipe=-8,
     sigquit=-9,
     sigsegv=-10,
     sigterm=-11,
     sigusr1=-12,
     sigusr2=-13,
     sigchld=-14,
     sigcont=-15,
     sigstop=-16,
     sigtstp=-17,
     sigttin=-18,
     sigttou=-19,
     sigvtalrm=-20,
     sigprof=-21,
     sigbus=-22,
     sigpoll=-23,
     sigsys=-24,
     sigtrap=-25,
     sigurg=-26,
     sigxcpu=-27,
     sigxfsz=-28;
    function catch_break(on){return on?0:0}
    function Make(_zN_,_zM_){return [0,1]}
    var
     Immediate64=[0,Make],
     Stdlib_sys=
      [0,
       executable_name,
       getenv_opt,
       interactive,
       os_type,
       match$0,
       unix,
       win32,
       cygwin,
       match$1,
       int_size,
       big_endian,
       max_string_length,
       max_array_length,
       max_floatarray_length,
       set_signal,
       sigabrt,
       sigalrm,
       sigfpe,
       sighup,
       sigill,
       sigint,
       sigkill,
       sigpipe,
       sigquit,
       sigsegv,
       sigterm,
       sigusr1,
       sigusr2,
       sigchld,
       sigcont,
       sigstop,
       sigtstp,
       sigttin,
       sigttou,
       sigvtalrm,
       sigprof,
       sigbus,
       sigpoll,
       sigsys,
       sigtrap,
       sigurg,
       sigxcpu,
       sigxfsz,
       Break,
       catch_break,
       ocaml_version,
       runtime.caml_ml_enable_runtime_warnings,
       runtime.caml_ml_runtime_warnings_enabled,
       Immediate64];
    caml_register_global(755,Stdlib_sys,"Stdlib__sys");
    function length(l)
     {var len=0,param=l;
      for(;;)
       {if(param)
         {var param$0=param[2],len$0=len + 1 | 0,len=len$0,param=param$0;
          continue}
        return len}}
    function cons(a,l){return [0,a,l]}
    function hd(param)
     {if(param){var a=param[1];return a}return failwith(cst_hd)}
    function tl(param)
     {if(param){var l=param[2];return l}return failwith(cst_tl)}
    function nth(l,n)
     {if(0 <= n)
       {var l$0=l,n$0=n;
        for(;;)
         {if(l$0)
           {var l$1=l$0[2],a=l$0[1];
            if(0 === n$0)return a;
            var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;
            continue}
          return failwith(cst_nth)}}
      return invalid_arg(cst_List_nth)}
    function nth_opt(l,n)
     {if(0 <= n)
       {var l$0=l,n$0=n;
        for(;;)
         {if(l$0)
           {var l$1=l$0[2],a=l$0[1];
            if(0 === n$0)return [0,a];
            var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;
            continue}
          return 0}}
      return invalid_arg(cst_List_nth$0)}
    function rev_append(l1,l2)
     {var l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {var l1$1=l1$0[2],a=l1$0[1],l2$1=[0,a,l2$0],l1$0=l1$1,l2$0=l2$1;
          continue}
        return l2$0}}
    function rev(l){return rev_append(l,0)}
    function init_aux(i,n,f)
     {if(n <= i)return 0;
      var r=caml_call1(f,i);
      return [0,r,init_aux(i + 1 | 0,n,f)]}
    var rev_init_threshold=typeof match$0 === "number"?10000:50;
    function init(len,f)
     {if(0 <= len)
       {if(rev_init_threshold < len)
         {var acc=0,i=0;
          for(;;)
           {if(len <= i)return rev(acc);
            var i$0=i + 1 | 0,acc$0=[0,caml_call1(f,i),acc],acc=acc$0,i=i$0;
            continue}}
        return init_aux(0,len,f)}
      return invalid_arg(cst_List_init)}
    function flatten(param)
     {if(param){var r=param[2],l=param[1];return append(l,flatten(r))}
      return 0}
    function map$2(f,param)
     {if(param)
       {var l=param[2],a=param[1],r=caml_call1(f,a);return [0,r,map$2(f,l)]}
      return 0}
    function _n_(i,f,param)
     {if(param)
       {var l=param[2],a=param[1],r=caml_call2(f,i,a);
        return [0,r,_n_(i + 1 | 0,f,l)]}
      return 0}
    function mapi(f,l){return _n_(0,f,l)}
    function rev_map(f,param)
     {var accu=0,param$0=param;
      for(;;)
       {if(param$0)
         {var
           l=param$0[2],
           a=param$0[1],
           accu$0=[0,caml_call1(f,a),accu],
           accu=accu$0,
           param$0=l;
          continue}
        return accu}}
    function iter$2(f,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],a=param$0[1];
          caml_call1(f,a);
          var param$0=l;
          continue}
        return 0}}
    function iteri(f,l$0)
     {var i=0,param=l$0;
      for(;;)
       {if(param)
         {var l=param[2],a=param[1];
          caml_call2(f,i,a);
          var i$0=i + 1 | 0,i=i$0,param=l;
          continue}
        return 0}}
    function fold_left$0(f,accu,l)
     {var accu$0=accu,l$0=l;
      for(;;)
       {if(l$0)
         {var
           l$1=l$0[2],
           a=l$0[1],
           accu$1=caml_call2(f,accu$0,a),
           accu$0=accu$1,
           l$0=l$1;
          continue}
        return accu$0}}
    function fold_right(f,l,accu)
     {if(l){var l$0=l[2],a=l[1];return caml_call2(f,a,fold_right(f,l$0,accu))}
      return accu}
    function map2(f,l1,l2)
     {if(l1)
       {if(l2)
         {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1],r=caml_call2(f,a1,a2);
          return [0,r,map2(f,l1$0,l2$0)]}}
      else
       if(! l2)return 0;
      return invalid_arg(cst_List_map2)}
    function rev_map2(f,l1,l2)
     {var accu=0,l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {if(l2$0)
           {var
             l2$1=l2$0[2],
             a2=l2$0[1],
             l1$1=l1$0[2],
             a1=l1$0[1],
             accu$0=[0,caml_call2(f,a1,a2),accu],
             accu=accu$0,
             l1$0=l1$1,
             l2$0=l2$1;
            continue}}
        else
         if(! l2$0)return accu;
        return invalid_arg(cst_List_rev_map2)}}
    function iter2(f,l1,l2)
     {var l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {if(l2$0)
           {var l2$1=l2$0[2],a2=l2$0[1],l1$1=l1$0[2],a1=l1$0[1];
            caml_call2(f,a1,a2);
            var l1$0=l1$1,l2$0=l2$1;
            continue}}
        else
         if(! l2$0)return 0;
        return invalid_arg(cst_List_iter2)}}
    function fold_left2(f,accu,l1,l2)
     {var accu$0=accu,l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {if(l2$0)
           {var
             l2$1=l2$0[2],
             a2=l2$0[1],
             l1$1=l1$0[2],
             a1=l1$0[1],
             accu$1=caml_call3(f,accu$0,a1,a2),
             accu$0=accu$1,
             l1$0=l1$1,
             l2$0=l2$1;
            continue}}
        else
         if(! l2$0)return accu$0;
        return invalid_arg(cst_List_fold_left2)}}
    function fold_right2(f,l1,l2,accu)
     {if(l1)
       {if(l2)
         {var l2$0=l2[2],a2=l2[1],l1$0=l1[2],a1=l1[1];
          return caml_call3(f,a1,a2,fold_right2(f,l1$0,l2$0,accu))}}
      else
       if(! l2)return accu;
      return invalid_arg(cst_List_fold_right2)}
    function for_all(p,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],a=param$0[1],_zL_=caml_call1(p,a);
          if(_zL_){var param$0=l;continue}
          return _zL_}
        return 1}}
    function exists(p,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],a=param$0[1],_zK_=caml_call1(p,a);
          if(_zK_)return _zK_;
          var param$0=l;
          continue}
        return 0}}
    function for_all2(p,l1,l2)
     {var l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {if(l2$0)
           {var
             l2$1=l2$0[2],
             a2=l2$0[1],
             l1$1=l1$0[2],
             a1=l1$0[1],
             _zJ_=caml_call2(p,a1,a2);
            if(_zJ_){var l1$0=l1$1,l2$0=l2$1;continue}
            return _zJ_}}
        else
         if(! l2$0)return 1;
        return invalid_arg(cst_List_for_all2)}}
    function exists2(p,l1,l2)
     {var l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {if(l2$0)
           {var
             l2$1=l2$0[2],
             a2=l2$0[1],
             l1$1=l1$0[2],
             a1=l1$0[1],
             _zI_=caml_call2(p,a1,a2);
            if(_zI_)return _zI_;
            var l1$0=l1$1,l2$0=l2$1;
            continue}}
        else
         if(! l2$0)return 0;
        return invalid_arg(cst_List_exists2)}}
    function mem(x,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],a=param$0[1],_zH_=0 === caml_compare(a,x)?1:0;
          if(_zH_)return _zH_;
          var param$0=l;
          continue}
        return 0}}
    function memq(x,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],a=param$0[1],_zG_=a === x?1:0;
          if(_zG_)return _zG_;
          var param$0=l;
          continue}
        return 0}}
    function assoc(x,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],match=param$0[1],b=match[2],a=match[1];
          if(0 === caml_compare(a,x))return b;
          var param$0=l;
          continue}
        throw Not_found}}
    function assoc_opt(x,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],match=param$0[1],b=match[2],a=match[1];
          if(0 === caml_compare(a,x))return [0,b];
          var param$0=l;
          continue}
        return 0}}
    function assq(x,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],match=param$0[1],b=match[2],a=match[1];
          if(a === x)return b;
          var param$0=l;
          continue}
        throw Not_found}}
    function assq_opt(x,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],match=param$0[1],b=match[2],a=match[1];
          if(a === x)return [0,b];
          var param$0=l;
          continue}
        return 0}}
    function mem_assoc(x,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var
           l=param$0[2],
           match=param$0[1],
           a=match[1],
           _zF_=0 === caml_compare(a,x)?1:0;
          if(_zF_)return _zF_;
          var param$0=l;
          continue}
        return 0}}
    function mem_assq(x,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],match=param$0[1],a=match[1],_zE_=a === x?1:0;
          if(_zE_)return _zE_;
          var param$0=l;
          continue}
        return 0}}
    function remove_assoc(x,param)
     {if(param)
       {var l=param[2],pair=param[1],a=pair[1];
        return 0 === caml_compare(a,x)?l:[0,pair,remove_assoc(x,l)]}
      return 0}
    function remove_assq(x,param)
     {if(param)
       {var l=param[2],pair=param[1],a=pair[1];
        return a === x?l:[0,pair,remove_assq(x,l)]}
      return 0}
    function find(p,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],x=param$0[1];
          if(caml_call1(p,x))return x;
          var param$0=l;
          continue}
        throw Not_found}}
    function find_opt(p,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],x=param$0[1];
          if(caml_call1(p,x))return [0,x];
          var param$0=l;
          continue}
        return 0}}
    function find_map(f,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],x=param$0[1],result=caml_call1(f,x);
          if(result)return result;
          var param$0=l;
          continue}
        return 0}}
    function find_all(p)
     {var accu=0;
      return function(param$0)
       {var accu$0=accu,param=param$0;
        for(;;)
         {if(param)
           {var l=param[2],x=param[1];
            if(caml_call1(p,x))
             {var accu$1=[0,x,accu$0],accu$0=accu$1,param=l;continue}
            var param=l;
            continue}
          return rev(accu$0)}}}
    function filter_map$0(f)
     {var accu=0;
      return function(param$0)
       {var accu$0=accu,param=param$0;
        for(;;)
         {if(param)
           {var l=param[2],x=param[1],match=caml_call1(f,x);
            if(match)
             {var v=match[1],accu$1=[0,v,accu$0],accu$0=accu$1,param=l;
              continue}
            var param=l;
            continue}
          return rev(accu$0)}}}
    function concat_map(f,param)
     {var acc=0,param$0=param;
      for(;;)
       {if(param$0)
         {var
           l=param$0[2],
           x=param$0[1],
           xs=caml_call1(f,x),
           acc$0=rev_append(xs,acc),
           acc=acc$0,
           param$0=l;
          continue}
        return rev(acc)}}
    function partition(p,param)
     {var yes=0,no=0,param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],x=param$0[1];
          if(caml_call1(p,x))
           {var yes$0=[0,x,yes],yes=yes$0,param$0=l;continue}
          var no$0=[0,x,no],no=no$0,param$0=l;
          continue}
        var _zD_=rev(no);
        return [0,rev(yes),_zD_]}}
    function split(param)
     {if(param)
       {var
         l=param[2],
         match=param[1],
         y=match[2],
         x=match[1],
         match$0=split(l),
         ry=match$0[2],
         rx=match$0[1];
        return [0,[0,x,rx],[0,y,ry]]}
      return _o_}
    function combine(l1,l2)
     {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)]}}
      else
       if(! l2)return 0;
      return invalid_arg(cst_List_combine)}
    function merge(cmp,l1,match)
     {if(l1)
       {if(match)
         {var t2=match[2],h2=match[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,match)]}
        return l1}
      return match}
    function fast_sort(cmp,l)
     {function sort(n,l)
       {if(2 === n)
         {if(l)
           {var _zz_=l[2];
            if(_zz_)
             {var
               tl=_zz_[2],
               x2=_zz_[1],
               x1=l[1],
               s=0 < caml_call2(cmp,x1,x2)?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]];
              return [0,s,tl]}}}
        else
         if(3 === n && l)
          {var _zB_=l[2];
           if(_zB_)
            {var _zC_=_zB_[2];
             if(_zC_)
              {var
                tl$1=_zC_[2],
                x3=_zC_[1],
                x2$0=_zB_[1],
                x1$0=l[1],
                s$0=
                 0 < caml_call2(cmp,x1$0,x2$0)
                  ?0 < caml_call2(cmp,x1$0,x3)
                    ?0 < 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)
                    ?0 < 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]}}}
        var
         n1=n >> 1,
         n2=n - n1 | 0,
         match=rev_sort(n1,l),
         l2$0=match[2],
         s1=match[1],
         match$0=rev_sort(n2,l2$0),
         tl$0=match$0[2],
         s2=match$0[1],
         l1=s1,
         l2=s2,
         accu=0;
        for(;;)
         {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],l1=t1,accu=accu$0;continue}
              var accu$1=[0,h2,accu],l2=t2,accu=accu$1;
              continue}
            var _zA_=rev_append(l1,accu)}
          else
           var _zA_=rev_append(l2,accu);
          return [0,_zA_,tl$0]}}
      function rev_sort(n,l)
       {if(2 === n)
         {if(l)
           {var _zv_=l[2];
            if(_zv_)
             {var
               tl=_zv_[2],
               x2=_zv_[1],
               x1=l[1],
               s=0 < caml_call2(cmp,x1,x2)?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]];
              return [0,s,tl]}}}
        else
         if(3 === n && l)
          {var _zx_=l[2];
           if(_zx_)
            {var _zy_=_zx_[2];
             if(_zy_)
              {var
                tl$1=_zy_[2],
                x3=_zy_[1],
                x2$0=_zx_[1],
                x1$0=l[1],
                s$0=
                 0 < caml_call2(cmp,x1$0,x2$0)
                  ?0 < caml_call2(cmp,x2$0,x3)
                    ?[0,x1$0,[0,x2$0,[0,x3,0]]]
                    :0 < 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)
                    ?[0,x2$0,[0,x1$0,[0,x3,0]]]
                    :0 < 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]}}}
        var
         n1=n >> 1,
         n2=n - n1 | 0,
         match=sort(n1,l),
         l2$0=match[2],
         s1=match[1],
         match$0=sort(n2,l2$0),
         tl$0=match$0[2],
         s2=match$0[1],
         l1=s1,
         l2=s2,
         accu=0;
        for(;;)
         {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],l2=t2,accu=accu$0;continue}
              var accu$1=[0,h1,accu],l1=t1,accu=accu$1;
              continue}
            var _zw_=rev_append(l1,accu)}
          else
           var _zw_=rev_append(l2,accu);
          return [0,_zw_,tl$0]}}
      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(l)
           {var _zm_=l[2];
            if(_zm_)
             {var
               tl=_zm_[2],
               x2=_zm_[1],
               x1=l[1],
               c$0=caml_call2(cmp,x1,x2),
               s=0 === c$0?[0,x1,0]:0 <= c$0?[0,x2,[0,x1,0]]:[0,x1,[0,x2,0]];
              return [0,s,tl]}}}
        else
         if(3 === n && l)
          {var _zo_=l[2];
           if(_zo_)
            {var _zp_=_zo_[2];
             if(_zp_)
              {var
                tl$1=_zp_[2],
                x3=_zp_[1],
                x2$0=_zo_[1],
                x1$0=l[1],
                c$1=caml_call2(cmp,x1$0,x2$0);
               if(0 === c$1)
                var
                 c$2=caml_call2(cmp,x2$0,x3),
                 _zq_=
                  0 === c$2
                   ?[0,x2$0,0]
                   :0 <= c$2?[0,x3,[0,x2$0,0]]:[0,x2$0,[0,x3,0]],
                 s$0=_zq_;
               else
                if(0 <= c$1)
                 {var c$3=caml_call2(cmp,x1$0,x3);
                  if(0 === c$3)
                   var _zr_=[0,x2$0,[0,x1$0,0]];
                  else
                   if(0 <= c$3)
                    var
                     c$4=caml_call2(cmp,x2$0,x3),
                     _zs_=
                      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]]],
                     _zr_=_zs_;
                   else
                    var _zr_=[0,x2$0,[0,x1$0,[0,x3,0]]];
                  var s$0=_zr_}
                else
                 {var c$5=caml_call2(cmp,x2$0,x3);
                  if(0 === c$5)
                   var _zt_=[0,x1$0,[0,x2$0,0]];
                  else
                   if(0 <= c$5)
                    var
                     c$6=caml_call2(cmp,x1$0,x3),
                     _zu_=
                      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]]],
                     _zt_=_zu_;
                   else
                    var _zt_=[0,x1$0,[0,x2$0,[0,x3,0]]];
                  var s$0=_zt_}
               return [0,s$0,tl$1]}}}
        var
         n1=n >> 1,
         n2=n - n1 | 0,
         match=rev_sort(n1,l),
         l2$0=match[2],
         s1=match[1],
         match$0=rev_sort(n2,l2$0),
         tl$0=match$0[2],
         s2=match$0[1],
         l1=s1,
         l2=s2,
         accu=0;
        for(;;)
         {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],l1=t1,l2=t2,accu=accu$0;continue}
              if(0 < c){var accu$1=[0,h1,accu],l1=t1,accu=accu$1;continue}
              var accu$2=[0,h2,accu],l2=t2,accu=accu$2;
              continue}
            var _zn_=rev_append(l1,accu)}
          else
           var _zn_=rev_append(l2,accu);
          return [0,_zn_,tl$0]}}
      function rev_sort(n,l)
       {if(2 === n)
         {if(l)
           {var _zd_=l[2];
            if(_zd_)
             {var
               tl=_zd_[2],
               x2=_zd_[1],
               x1=l[1],
               c$0=caml_call2(cmp,x1,x2),
               s=0 === c$0?[0,x1,0]:0 < c$0?[0,x1,[0,x2,0]]:[0,x2,[0,x1,0]];
              return [0,s,tl]}}}
        else
         if(3 === n && l)
          {var _zf_=l[2];
           if(_zf_)
            {var _zg_=_zf_[2];
             if(_zg_)
              {var
                tl$1=_zg_[2],
                x3=_zg_[1],
                x2$0=_zf_[1],
                x1$0=l[1],
                c$1=caml_call2(cmp,x1$0,x2$0);
               if(0 === c$1)
                var
                 c$2=caml_call2(cmp,x2$0,x3),
                 _zh_=
                  0 === c$2
                   ?[0,x2$0,0]
                   :0 < c$2?[0,x2$0,[0,x3,0]]:[0,x3,[0,x2$0,0]],
                 s$0=_zh_;
               else
                if(0 < c$1)
                 {var c$3=caml_call2(cmp,x2$0,x3);
                  if(0 === c$3)
                   var _zi_=[0,x1$0,[0,x2$0,0]];
                  else
                   if(0 < c$3)
                    var _zi_=[0,x1$0,[0,x2$0,[0,x3,0]]];
                   else
                    var
                     c$4=caml_call2(cmp,x1$0,x3),
                     _zj_=
                      0 === c$4
                       ?[0,x1$0,[0,x2$0,0]]
                       :0 < c$4
                         ?[0,x1$0,[0,x3,[0,x2$0,0]]]
                         :[0,x3,[0,x1$0,[0,x2$0,0]]],
                     _zi_=_zj_;
                  var s$0=_zi_}
                else
                 {var c$5=caml_call2(cmp,x1$0,x3);
                  if(0 === c$5)
                   var _zk_=[0,x2$0,[0,x1$0,0]];
                  else
                   if(0 < c$5)
                    var _zk_=[0,x2$0,[0,x1$0,[0,x3,0]]];
                   else
                    var
                     c$6=caml_call2(cmp,x2$0,x3),
                     _zl_=
                      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]]],
                     _zk_=_zl_;
                  var s$0=_zk_}
               return [0,s$0,tl$1]}}}
        var
         n1=n >> 1,
         n2=n - n1 | 0,
         match=sort(n1,l),
         l2$0=match[2],
         s1=match[1],
         match$0=sort(n2,l2$0),
         tl$0=match$0[2],
         s2=match$0[1],
         l1=s1,
         l2=s2,
         accu=0;
        for(;;)
         {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],l1=t1,l2=t2,accu=accu$0;continue}
              if(0 <= c){var accu$1=[0,h2,accu],l2=t2,accu=accu$1;continue}
              var accu$2=[0,h1,accu],l1=t1,accu=accu$2;
              continue}
            var _ze_=rev_append(l1,accu)}
          else
           var _ze_=rev_append(l2,accu);
          return [0,_ze_,tl$0]}}
      var len=length(l);
      return 2 <= len?sort(len,l)[1]:l}
    function compare_lengths(l1,l2)
     {var l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {if(l2$0){var l2$1=l2$0[2],l1$1=l1$0[2],l1$0=l1$1,l2$0=l2$1;continue}
          return 1}
        return l2$0?-1:0}}
    function compare_length_with(l,n)
     {var l$0=l,n$0=n;
      for(;;)
       {if(l$0)
         {var l$1=l$0[2];
          if(0 < n$0){var n$1=n$0 - 1 | 0,l$0=l$1,n$0=n$1;continue}
          return 1}
        return 0 === n$0?0:0 < n$0?-1:1}}
    function to_seq$1(l)
     {function aux(l,param)
       {if(l)
         {var tail=l[2],x=l[1];
          return [0,x,function(_zc_){return aux(tail,_zc_)}]}
        return 0}
      return function(_zb_){return aux(l,_zb_)}}
    function of_seq(seq)
     {function direct(depth,seq)
       {if(0 === depth)
         {var _za_=0;
          return rev(fold_left(function(acc,x){return [0,x,acc]},_za_,seq))}
        var match=caml_call1(seq,0);
        if(match)
         {var next=match[2],x=match[1];
          return [0,x,direct(depth - 1 | 0,next)]}
        return 0}
      return direct(500,seq)}
    var
     include=
      [0,
       length,
       compare_lengths,
       compare_length_with,
       cons,
       hd,
       tl,
       nth,
       nth_opt,
       rev,
       init,
       append,
       rev_append,
       flatten,
       flatten,
       iter$2,
       iteri,
       map$2,
       mapi,
       rev_map,
       filter_map$0,
       concat_map,
       fold_left$0,
       fold_right,
       iter2,
       map2,
       rev_map2,
       fold_left2,
       fold_right2,
       for_all,
       exists,
       for_all2,
       exists2,
       mem,
       memq,
       find,
       find_opt,
       find_map,
       find_all,
       find_all,
       partition,
       assoc,
       assoc_opt,
       assq,
       assq_opt,
       mem_assoc,
       mem_assq,
       remove_assoc,
       remove_assq,
       split,
       combine,
       fast_sort,
       fast_sort,
       fast_sort,
       sort_uniq,
       merge,
       to_seq$1,
       of_seq];
    caml_register_global(756,include,"Stdlib__list");
    function make(n,c)
     {var s=caml_create_bytes(n);caml_fill_bytes(s,0,n,c);return s}
    function init$0(n,f)
     {var s=caml_create_bytes(n),_y__=n - 1 | 0,_y9_=0;
      if(! (_y__ < 0))
       {var i=_y9_;
        for(;;)
         {caml_bytes_unsafe_set(s,i,caml_call1(f,i));
          var _y$_=i + 1 | 0;
          if(_y__ !== i){var i=_y$_;continue}
          break}}
      return s}
    var empty$0=caml_create_bytes(0);
    function copy(s)
     {var len=caml_ml_bytes_length(s),r=caml_create_bytes(len);
      caml_blit_bytes(s,0,r,0,len);
      return r}
    function to_string$1(b){return caml_string_of_bytes(copy(b))}
    function of_string(s){return copy(caml_bytes_of_string(s))}
    function sub(s,ofs,len)
     {if
       (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
       {var r=caml_create_bytes(len);caml_blit_bytes(s,ofs,r,0,len);return r}
      return invalid_arg(cst_String_sub_Bytes_sub)}
    function sub_string(b,ofs,len)
     {return caml_string_of_bytes(sub(b,ofs,len))}
    function symbol$1(a,b)
     {var c=a + b | 0,_y8_=b < 0?1:0,match=c < 0?1:0,switch$0=0;
      if(a < 0)
       {if(_y8_ && ! match)switch$0 = 1}
      else
       if(! _y8_ && match)switch$0 = 1;
      return switch$0?invalid_arg(cst_Bytes_extend):c}
    function extend(s,left,right)
     {var
       len=symbol$1(symbol$1(caml_ml_bytes_length(s),left),right),
       r=caml_create_bytes(len);
      if(0 <= left)
       var dstoff=left,srcoff=0;
      else
       var dstoff=0,srcoff=- left | 0;
      var cpylen=min(caml_ml_bytes_length(s) - srcoff | 0,len - dstoff | 0);
      if(0 < cpylen)caml_blit_bytes(s,srcoff,r,dstoff,cpylen);
      return r}
    function fill(s,ofs,len,c)
     {if
       (0 <= ofs && 0 <= len && ! ((caml_ml_bytes_length(s) - len | 0) < ofs))
       return caml_fill_bytes(s,ofs,len,c);
      return invalid_arg(cst_String_fill_Bytes_fill)}
    function blit(s1,ofs1,s2,ofs2,len)
     {if
       (0
        <=
        len
        &&
        0
        <=
        ofs1
        &&
        !
        ((caml_ml_bytes_length(s1) - len | 0) < ofs1)
        &&
        0
        <=
        ofs2
        &&
        !
        ((caml_ml_bytes_length(s2) - len | 0) < ofs2))
       return caml_blit_bytes(s1,ofs1,s2,ofs2,len);
      return invalid_arg(cst_Bytes_blit)}
    function blit$0(s1,ofs1,s2,ofs2,len)
     {if
       (0
        <=
        len
        &&
        0
        <=
        ofs1
        &&
        !
        ((caml_ml_string_length(s1) - len | 0) < ofs1)
        &&
        0
        <=
        ofs2
        &&
        !
        ((caml_ml_bytes_length(s2) - len | 0) < ofs2))
       return caml_blit_string(s1,ofs1,s2,ofs2,len);
      return invalid_arg(cst_String_blit_Bytes_blit_str)}
    function iter$3(f,a)
     {var _y6_=caml_ml_bytes_length(a) - 1 | 0,_y5_=0;
      if(! (_y6_ < 0))
       {var i=_y5_;
        for(;;)
         {caml_call1(f,caml_bytes_unsafe_get(a,i));
          var _y7_=i + 1 | 0;
          if(_y6_ !== i){var i=_y7_;continue}
          break}}
      return 0}
    function iteri$0(f,a)
     {var _y3_=caml_ml_bytes_length(a) - 1 | 0,_y2_=0;
      if(! (_y3_ < 0))
       {var i=_y2_;
        for(;;)
         {caml_call2(f,i,caml_bytes_unsafe_get(a,i));
          var _y4_=i + 1 | 0;
          if(_y3_ !== i){var i=_y4_;continue}
          break}}
      return 0}
    function concat(sep,l)
     {if(l)
       {var seplen=caml_ml_bytes_length(sep),acc=0,param=l,pos$1=0;
        for(;;)
         {if(param)
           {var _yZ_=param[1];
            if(param[2])
             {var
               tl=param[2],
               x=(caml_ml_bytes_length(_yZ_) + seplen | 0) + acc | 0,
               acc$0=acc <= x?x:invalid_arg(cst_Bytes_concat),
               acc=acc$0,
               param=tl;
              continue}
            var _y1_=caml_ml_bytes_length(_yZ_) + acc | 0}
          else
           var _y1_=acc;
          var dst=caml_create_bytes(_y1_),pos=pos$1,param$0=l;
          for(;;)
           {if(param$0)
             {var _y0_=param$0[1];
              if(param$0[2])
               {var tl$0=param$0[2];
                caml_blit_bytes(_y0_,0,dst,pos,caml_ml_bytes_length(_y0_));
                caml_blit_bytes
                 (sep,0,dst,pos + caml_ml_bytes_length(_y0_) | 0,seplen);
                var
                 pos$0=(pos + caml_ml_bytes_length(_y0_) | 0) + seplen | 0,
                 pos=pos$0,
                 param$0=tl$0;
                continue}
              caml_blit_bytes(_y0_,0,dst,pos,caml_ml_bytes_length(_y0_));
              return dst}
            return dst}}}
      return empty$0}
    function cat(s1,s2)
     {var
       l1=caml_ml_bytes_length(s1),
       l2=caml_ml_bytes_length(s2),
       r=caml_create_bytes(l1 + l2 | 0);
      caml_blit_bytes(s1,0,r,0,l1);
      caml_blit_bytes(s2,0,r,l1,l2);
      return r}
    function is_space(param)
     {var _yY_=param - 9 | 0,switch$0=0;
      if(4 < _yY_ >>> 0)
       {if(23 === _yY_)switch$0 = 1}
      else
       if(2 !== _yY_)switch$0 = 1;
      return switch$0?1:0}
    function trim(s)
     {var len=caml_ml_bytes_length(s),i=[0,0];
      for(;;)
       {if(i[1] < len && is_space(caml_bytes_unsafe_get(s,i[1])))
         {i[1]++;continue}
        var j=[0,len - 1 | 0];
        for(;;)
         {if(i[1] <= j[1] && is_space(caml_bytes_unsafe_get(s,j[1])))
           {j[1] += -1;continue}
          return i[1] <= j[1]?sub(s,i[1],(j[1] - i[1] | 0) + 1 | 0):empty$0}}}
    function escaped$0(s)
     {var n=[0,0],_yR_=caml_ml_bytes_length(s) - 1 | 0,_yQ_=0;
      if(! (_yR_ < 0))
       {var i$0=_yQ_;
        for(;;)
         {var match=caml_bytes_unsafe_get(s,i$0),switch$0=0;
          if(32 <= match)
           {var _yV_=match - 34 | 0,switch$1=0;
            if(58 < _yV_ >>> 0)
             {if(93 <= _yV_)switch$1 = 1}
            else
             if(56 < (_yV_ - 1 | 0) >>> 0){switch$0 = 1;switch$1 = 1}
            if(! switch$1){var _yW_=1;switch$0 = 2}}
          else
           if(11 <= match)
            {if(13 === match)switch$0 = 1}
           else
            if(8 <= match)switch$0 = 1;
          switch(switch$0){case 0:var _yW_=4;break;case 1:var _yW_=2;break}
          n[1] = n[1] + _yW_ | 0;
          var _yX_=i$0 + 1 | 0;
          if(_yR_ !== i$0){var i$0=_yX_;continue}
          break}}
      if(n[1] === caml_ml_bytes_length(s))return copy(s);
      var s$0=caml_create_bytes(n[1]);
      n[1] = 0;
      var _yT_=caml_ml_bytes_length(s) - 1 | 0,_yS_=0;
      if(! (_yT_ < 0))
       {var i=_yS_;
        for(;;)
         {var c=caml_bytes_unsafe_get(s,i),switch$2=0;
          if(35 <= c)
           if(92 === c)
            switch$2 = 2;
           else
            if(127 <= c)switch$2 = 1;else switch$2 = 3;
          else
           if(32 <= c)
            if(34 <= c)switch$2 = 2;else switch$2 = 3;
           else
            if(14 <= c)
             switch$2 = 1;
            else
             switch(c)
              {case 8:
                caml_bytes_unsafe_set(s$0,n[1],92);
                n[1]++;
                caml_bytes_unsafe_set(s$0,n[1],98);
                break;
               case 9:
                caml_bytes_unsafe_set(s$0,n[1],92);
                n[1]++;
                caml_bytes_unsafe_set(s$0,n[1],116);
                break;
               case 10:
                caml_bytes_unsafe_set(s$0,n[1],92);
                n[1]++;
                caml_bytes_unsafe_set(s$0,n[1],110);
                break;
               case 13:
                caml_bytes_unsafe_set(s$0,n[1],92);
                n[1]++;
                caml_bytes_unsafe_set(s$0,n[1],114);
                break;
               default:switch$2 = 1}
          switch(switch$2)
           {case 1:
             caml_bytes_unsafe_set(s$0,n[1],92);
             n[1]++;
             caml_bytes_unsafe_set(s$0,n[1],48 + (c / 100 | 0) | 0);
             n[1]++;
             caml_bytes_unsafe_set(s$0,n[1],48 + ((c / 10 | 0) % 10 | 0) | 0);
             n[1]++;
             caml_bytes_unsafe_set(s$0,n[1],48 + (c % 10 | 0) | 0);
             break;
            case 2:
             caml_bytes_unsafe_set(s$0,n[1],92);
             n[1]++;
             caml_bytes_unsafe_set(s$0,n[1],c);
             break;
            case 3:caml_bytes_unsafe_set(s$0,n[1],c);break
            }
          n[1]++;
          var _yU_=i + 1 | 0;
          if(_yT_ !== i){var i=_yU_;continue}
          break}}
      return s$0}
    function map$3(f,s)
     {var l=caml_ml_bytes_length(s);
      if(0 === l)return s;
      var r=caml_create_bytes(l),_yO_=l - 1 | 0,_yN_=0;
      if(! (_yO_ < 0))
       {var i=_yN_;
        for(;;)
         {caml_bytes_unsafe_set(r,i,caml_call1(f,caml_bytes_unsafe_get(s,i)));
          var _yP_=i + 1 | 0;
          if(_yO_ !== i){var i=_yP_;continue}
          break}}
      return r}
    function mapi$0(f,s)
     {var l=caml_ml_bytes_length(s);
      if(0 === l)return s;
      var r=caml_create_bytes(l),_yL_=l - 1 | 0,_yK_=0;
      if(! (_yL_ < 0))
       {var i=_yK_;
        for(;;)
         {caml_bytes_unsafe_set
           (r,i,caml_call2(f,i,caml_bytes_unsafe_get(s,i)));
          var _yM_=i + 1 | 0;
          if(_yL_ !== i){var i=_yM_;continue}
          break}}
      return r}
    function uppercase_ascii$0(s){return map$3(uppercase_ascii,s)}
    function lowercase_ascii$0(s){return map$3(lowercase_ascii,s)}
    function apply1(f,s)
     {if(0 === caml_ml_bytes_length(s))return s;
      var r=copy(s);
      caml_bytes_unsafe_set(r,0,caml_call1(f,caml_bytes_unsafe_get(s,0)));
      return r}
    function capitalize_ascii(s){return apply1(uppercase_ascii,s)}
    function uncapitalize_ascii(s){return apply1(lowercase_ascii,s)}
    function index_rec(s,lim,i,c)
     {var i$0=i;
      for(;;)
       {if(lim <= i$0)throw Not_found;
        if(caml_bytes_unsafe_get(s,i$0) === c)return i$0;
        var i$1=i$0 + 1 | 0,i$0=i$1;
        continue}}
    function index(s,c){return index_rec(s,caml_ml_bytes_length(s),0,c)}
    function index_rec_opt(s,lim,i,c)
     {var i$0=i;
      for(;;)
       {if(lim <= i$0)return 0;
        if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0];
        var i$1=i$0 + 1 | 0,i$0=i$1;
        continue}}
    function index_opt(s,c)
     {return index_rec_opt(s,caml_ml_bytes_length(s),0,c)}
    function index_from(s,i,c)
     {var l=caml_ml_bytes_length(s);
      if(0 <= i && ! (l < i))return index_rec(s,l,i,c);
      return invalid_arg(cst_String_index_from_Bytes_in)}
    function index_from_opt(s,i,c)
     {var l=caml_ml_bytes_length(s);
      if(0 <= i && ! (l < i))return index_rec_opt(s,l,i,c);
      return invalid_arg(cst_String_index_from_opt_Byte)}
    function rindex_rec(s,i,c)
     {var i$0=i;
      for(;;)
       {if(0 <= i$0)
         {if(caml_bytes_unsafe_get(s,i$0) === c)return i$0;
          var i$1=i$0 - 1 | 0,i$0=i$1;
          continue}
        throw Not_found}}
    function rindex(s,c)
     {return rindex_rec(s,caml_ml_bytes_length(s) - 1 | 0,c)}
    function rindex_from(s,i,c)
     {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i))return rindex_rec(s,i,c);
      return invalid_arg(cst_String_rindex_from_Bytes_r)}
    function rindex_rec_opt(s,i,c)
     {var i$0=i;
      for(;;)
       {if(0 <= i$0)
         {if(caml_bytes_unsafe_get(s,i$0) === c)return [0,i$0];
          var i$1=i$0 - 1 | 0,i$0=i$1;
          continue}
        return 0}}
    function rindex_opt(s,c)
     {return rindex_rec_opt(s,caml_ml_bytes_length(s) - 1 | 0,c)}
    function rindex_from_opt(s,i,c)
     {if(-1 <= i && ! (caml_ml_bytes_length(s) <= i))
       return rindex_rec_opt(s,i,c);
      return invalid_arg(cst_String_rindex_from_opt_Byt)}
    function contains_from(s,i,c)
     {var l=caml_ml_bytes_length(s);
      if(0 <= i && ! (l < i))
       try
        {index_rec(s,l,i,c);var _yI_=1;return _yI_}
       catch(_yJ_)
        {_yJ_ = caml_wrap_exception(_yJ_);
         if(_yJ_ === Not_found)return 0;
         throw _yJ_}
      return invalid_arg(cst_String_contains_from_Bytes)}
    function contains(s,c){return contains_from(s,0,c)}
    function rcontains_from(s,i,c)
     {if(0 <= i && ! (caml_ml_bytes_length(s) <= i))
       try
        {rindex_rec(s,i,c);var _yG_=1;return _yG_}
       catch(_yH_)
        {_yH_ = caml_wrap_exception(_yH_);
         if(_yH_ === Not_found)return 0;
         throw _yH_}
      return invalid_arg(cst_String_rcontains_from_Byte)}
    var compare$4=runtime.caml_bytes_compare;
    function uppercase$0(s){return map$3(uppercase,s)}
    function lowercase$0(s){return map$3(lowercase,s)}
    function capitalize(s){return apply1(uppercase,s)}
    function uncapitalize(s){return apply1(lowercase,s)}
    function to_seq$2(s)
     {function aux(i,param)
       {if(i === caml_ml_bytes_length(s))return 0;
        var x=caml_bytes_get(s,i),_yE_=i + 1 | 0;
        return [0,x,function(_yF_){return aux(_yE_,_yF_)}]}
      var _yC_=0;
      return function(_yD_){return aux(_yC_,_yD_)}}
    function to_seqi(s)
     {function aux(i,param)
       {if(i === caml_ml_bytes_length(s))return 0;
        var x=caml_bytes_get(s,i),_yA_=i + 1 | 0;
        return [0,[0,i,x],function(_yB_){return aux(_yA_,_yB_)}]}
      var _yy_=0;
      return function(_yz_){return aux(_yy_,_yz_)}}
    function of_seq$0(i)
     {var n=[0,0],buf=[0,make(256,0)];
      iter
       (function(c)
         {if(n[1] === caml_ml_bytes_length(buf[1]))
           {var
             new_len=
              min(2 * caml_ml_bytes_length(buf[1]) | 0,max_string_length);
            if(caml_ml_bytes_length(buf[1]) === new_len)
             failwith(cst_Bytes_of_seq_cannot_grow_b);
            var new_buf=make(new_len,0);
            blit(buf[1],0,new_buf,0,n[1]);
            buf[1] = new_buf}
          caml_bytes_set(buf[1],n[1],c);
          n[1]++;
          return 0},
        i);
      return sub(buf[1],0,n[1])}
    function get_int8(b,i){return caml_bytes_get(b,i) << 24 >> 24}
    function get_uint16_le(b,i){return caml_bytes_get16(b,i)}
    function get_uint16_be(b,i){return caml_bswap16(caml_bytes_get16(b,i))}
    function get_int16_ne(b,i){return caml_bytes_get16(b,i) << 16 >> 16}
    function get_int16_le(b,i){return caml_bytes_get16(b,i) << 16 >> 16}
    function get_int16_be(b,i){return get_uint16_be(b,i) << 16 >> 16}
    function get_int32_le(b,i){return caml_bytes_get32(b,i)}
    function get_int32_be(b,i){return caml_int32_bswap(caml_bytes_get32(b,i))}
    function get_int64_le(b,i){return caml_bytes_get64(b,i)}
    function get_int64_be(b,i){return caml_int64_bswap(caml_bytes_get64(b,i))}
    function set_int16_le(b,i,x){return caml_bytes_set16(b,i,x)}
    function set_int16_be(b,i,x){return caml_bytes_set16(b,i,caml_bswap16(x))}
    function set_int32_le(b,i,x){return caml_bytes_set32(b,i,x)}
    function set_int32_be(b,i,x)
     {return caml_bytes_set32(b,i,caml_int32_bswap(x))}
    function set_int64_le(b,i,x){return caml_bytes_set64(b,i,x)}
    function set_int64_be(b,i,x)
     {return caml_bytes_set64(b,i,caml_int64_bswap(x))}
    var
     set_uint8=caml_bytes_set,
     set_uint16_ne=caml_bytes_set16,
     set_int64_ne=caml_bytes_set64,
     set_int32_ne=caml_bytes_set32,
     set_int16_ne=caml_bytes_set16,
     set_int8=caml_bytes_set,
     get_int64_ne=caml_bytes_get64,
     get_int32_ne=caml_bytes_get32,
     get_uint16_ne=caml_bytes_get16,
     get_uint8=caml_bytes_get,
     unsafe_of_string=caml_bytes_of_string,
     unsafe_to_string=caml_string_of_bytes,
     equal$4=runtime.caml_bytes_equal,
     include$0=
      [0,
       make,
       init$0,
       empty$0,
       copy,
       of_string,
       to_string$1,
       sub,
       sub_string,
       extend,
       fill,
       blit,
       blit$0,
       concat,
       cat,
       iter$3,
       iteri$0,
       map$3,
       mapi$0,
       trim,
       escaped$0,
       index,
       index_opt,
       rindex,
       rindex_opt,
       index_from,
       index_from_opt,
       rindex_from,
       rindex_from_opt,
       contains,
       contains_from,
       rcontains_from,
       uppercase$0,
       lowercase$0,
       capitalize,
       uncapitalize,
       uppercase_ascii$0,
       lowercase_ascii$0,
       capitalize_ascii,
       uncapitalize_ascii,
       compare$4,
       equal$4,
       unsafe_to_string,
       unsafe_of_string,
       to_seq$2,
       to_seqi,
       of_seq$0,
       get_uint8,
       get_int8,
       get_uint16_ne,
       get_uint16_be,
       get_uint16_le,
       get_int16_ne,
       get_int16_be,
       get_int16_le,
       get_int32_ne,
       get_int32_be,
       get_int32_le,
       get_int64_ne,
       get_int64_be,
       get_int64_le,
       set_uint8,
       set_int8,
       set_uint16_ne,
       set_int16_be,
       set_int16_le,
       set_int16_ne,
       set_int16_be,
       set_int16_le,
       set_int32_ne,
       set_int32_be,
       set_int32_le,
       set_int64_ne,
       set_int64_be,
       set_int64_le];
    caml_register_global(757,include$0,"Stdlib__bytes");
    function make$0(n,c){return caml_string_of_bytes(make(n,c))}
    function init$1(n,f){return caml_string_of_bytes(init$0(n,f))}
    function copy$0(s)
     {return caml_string_of_bytes(copy(caml_bytes_of_string(s)))}
    function sub$0(s,ofs,len)
     {return caml_string_of_bytes(sub(caml_bytes_of_string(s),ofs,len))}
    function concat$0(sep,l)
     {if(l)
       {var seplen=caml_ml_string_length(sep),acc=0,param=l,pos$1=0;
        for(;;)
         {if(param)
           {var _yv_=param[1];
            if(param[2])
             {var
               tl=param[2],
               x=(caml_ml_string_length(_yv_) + seplen | 0) + acc | 0,
               acc$0=acc <= x?x:invalid_arg(cst_String_concat),
               acc=acc$0,
               param=tl;
              continue}
            var _yx_=caml_ml_string_length(_yv_) + acc | 0}
          else
           var _yx_=acc;
          var dst=caml_create_bytes(_yx_),pos=pos$1,param$0=l;
          for(;;)
           {if(param$0)
             {var _yw_=param$0[1];
              if(param$0[2])
               {var tl$0=param$0[2];
                caml_blit_string(_yw_,0,dst,pos,caml_ml_string_length(_yw_));
                caml_blit_string
                 (sep,0,dst,pos + caml_ml_string_length(_yw_) | 0,seplen);
                var
                 pos$0=(pos + caml_ml_string_length(_yw_) | 0) + seplen | 0,
                 pos=pos$0,
                 param$0=tl$0;
                continue}
              caml_blit_string(_yw_,0,dst,pos,caml_ml_string_length(_yw_))}
            return caml_string_of_bytes(dst)}}}
      return cst$3}
    function iter$4(f,s)
     {var _yt_=caml_ml_string_length(s) - 1 | 0,_ys_=0;
      if(! (_yt_ < 0))
       {var i=_ys_;
        for(;;)
         {caml_call1(f,caml_string_unsafe_get(s,i));
          var _yu_=i + 1 | 0;
          if(_yt_ !== i){var i=_yu_;continue}
          break}}
      return 0}
    function iteri$1(f,s)
     {var _yq_=caml_ml_string_length(s) - 1 | 0,_yp_=0;
      if(! (_yq_ < 0))
       {var i=_yp_;
        for(;;)
         {caml_call2(f,i,caml_string_unsafe_get(s,i));
          var _yr_=i + 1 | 0;
          if(_yq_ !== i){var i=_yr_;continue}
          break}}
      return 0}
    function map$4(f,s)
     {return caml_string_of_bytes(map$3(f,caml_bytes_of_string(s)))}
    function mapi$1(f,s)
     {return caml_string_of_bytes(mapi$0(f,caml_bytes_of_string(s)))}
    function is_space$0(param)
     {var _yo_=param - 9 | 0,switch$0=0;
      if(4 < _yo_ >>> 0)
       {if(23 === _yo_)switch$0 = 1}
      else
       if(2 !== _yo_)switch$0 = 1;
      return switch$0?1:0}
    function trim$0(s)
     {if(caml_string_equal(s,cst$4))return s;
      if
       (!
        is_space$0(caml_string_unsafe_get(s,0))
        &&
        !
        is_space$0(caml_string_unsafe_get(s,caml_ml_string_length(s) - 1 | 0)))
       return s;
      return caml_string_of_bytes(trim(caml_bytes_of_string(s)))}
    function escaped$1(s)
     {var n=caml_ml_string_length(s),i=0;
      for(;;)
       {if(n <= i)return s;
        var match=caml_string_unsafe_get(s,i),_yn_=match - 32 | 0,switch$0=0;
        if(59 < _yn_ >>> 0)
         {if(33 < (_yn_ - 61 | 0) >>> 0)switch$0 = 1}
        else
         if(2 === _yn_)switch$0 = 1;
        if(switch$0)
         return caml_string_of_bytes(escaped$0(caml_bytes_of_string(s)));
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    function index_rec$0(s,lim,i,c)
     {var i$0=i;
      for(;;)
       {if(lim <= i$0)throw Not_found;
        if(caml_string_unsafe_get(s,i$0) === c)return i$0;
        var i$1=i$0 + 1 | 0,i$0=i$1;
        continue}}
    function index$0(s,c){return index_rec$0(s,caml_ml_string_length(s),0,c)}
    function index_rec_opt$0(s,lim,i,c)
     {var i$0=i;
      for(;;)
       {if(lim <= i$0)return 0;
        if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0];
        var i$1=i$0 + 1 | 0,i$0=i$1;
        continue}}
    function index_opt$0(s,c)
     {return index_rec_opt$0(s,caml_ml_string_length(s),0,c)}
    function index_from$0(s,i,c)
     {var l=caml_ml_string_length(s);
      if(0 <= i && ! (l < i))return index_rec$0(s,l,i,c);
      return invalid_arg(cst_String_index_from_Bytes_in$0)}
    function index_from_opt$0(s,i,c)
     {var l=caml_ml_string_length(s);
      if(0 <= i && ! (l < i))return index_rec_opt$0(s,l,i,c);
      return invalid_arg(cst_String_index_from_opt_Byte$0)}
    function rindex_rec$0(s,i,c)
     {var i$0=i;
      for(;;)
       {if(0 <= i$0)
         {if(caml_string_unsafe_get(s,i$0) === c)return i$0;
          var i$1=i$0 - 1 | 0,i$0=i$1;
          continue}
        throw Not_found}}
    function rindex$0(s,c)
     {return rindex_rec$0(s,caml_ml_string_length(s) - 1 | 0,c)}
    function rindex_from$0(s,i,c)
     {if(-1 <= i && ! (caml_ml_string_length(s) <= i))
       return rindex_rec$0(s,i,c);
      return invalid_arg(cst_String_rindex_from_Bytes_r$0)}
    function rindex_rec_opt$0(s,i,c)
     {var i$0=i;
      for(;;)
       {if(0 <= i$0)
         {if(caml_string_unsafe_get(s,i$0) === c)return [0,i$0];
          var i$1=i$0 - 1 | 0,i$0=i$1;
          continue}
        return 0}}
    function rindex_opt$0(s,c)
     {return rindex_rec_opt$0(s,caml_ml_string_length(s) - 1 | 0,c)}
    function rindex_from_opt$0(s,i,c)
     {if(-1 <= i && ! (caml_ml_string_length(s) <= i))
       return rindex_rec_opt$0(s,i,c);
      return invalid_arg(cst_String_rindex_from_opt_Byt$0)}
    function contains_from$0(s,i,c)
     {var l=caml_ml_string_length(s);
      if(0 <= i && ! (l < i))
       try
        {index_rec$0(s,l,i,c);var _yl_=1;return _yl_}
       catch(_ym_)
        {_ym_ = caml_wrap_exception(_ym_);
         if(_ym_ === Not_found)return 0;
         throw _ym_}
      return invalid_arg(cst_String_contains_from_Bytes$0)}
    function contains$0(s,c){return contains_from$0(s,0,c)}
    function rcontains_from$0(s,i,c)
     {if(0 <= i && ! (caml_ml_string_length(s) <= i))
       try
        {rindex_rec$0(s,i,c);var _yj_=1;return _yj_}
       catch(_yk_)
        {_yk_ = caml_wrap_exception(_yk_);
         if(_yk_ === Not_found)return 0;
         throw _yk_}
      return invalid_arg(cst_String_rcontains_from_Byte$0)}
    function uppercase_ascii$1(s)
     {return caml_string_of_bytes(uppercase_ascii$0(caml_bytes_of_string(s)))}
    function lowercase_ascii$1(s)
     {return caml_string_of_bytes(lowercase_ascii$0(caml_bytes_of_string(s)))}
    function capitalize_ascii$0(s)
     {return caml_string_of_bytes(capitalize_ascii(caml_bytes_of_string(s)))}
    function uncapitalize_ascii$0(s)
     {return caml_string_of_bytes(uncapitalize_ascii(caml_bytes_of_string(s)))}
    var compare$5=caml_string_compare;
    function split_on_char(sep,s)
     {var
       r=[0,0],
       j=[0,caml_ml_string_length(s)],
       _yf_=caml_ml_string_length(s) - 1 | 0;
      if(! (_yf_ < 0))
       {var i=_yf_;
        for(;;)
         {if(caml_string_unsafe_get(s,i) === sep)
           {var _yh_=r[1];
            r[1] = [0,sub$0(s,i + 1 | 0,(j[1] - i | 0) - 1 | 0),_yh_];
            j[1] = i}
          var _yi_=i - 1 | 0;
          if(0 !== i){var i=_yi_;continue}
          break}}
      var _yg_=r[1];
      return [0,sub$0(s,0,j[1]),_yg_]}
    function uppercase$1(s)
     {return caml_string_of_bytes(uppercase$0(caml_bytes_of_string(s)))}
    function lowercase$1(s)
     {return caml_string_of_bytes(lowercase$0(caml_bytes_of_string(s)))}
    function capitalize$0(s)
     {return caml_string_of_bytes(capitalize(caml_bytes_of_string(s)))}
    function uncapitalize$0(s)
     {return caml_string_of_bytes(uncapitalize(caml_bytes_of_string(s)))}
    function to_seq$3(s){return to_seq$2(caml_bytes_of_string(s))}
    function to_seqi$0(s){return to_seqi(caml_bytes_of_string(s))}
    function of_seq$1(g){return caml_string_of_bytes(of_seq$0(g))}
    var
     equal$5=caml_string_equal,
     include$1=
      [0,
       make$0,
       init$1,
       copy$0,
       sub$0,
       fill,
       blit$0,
       concat$0,
       iter$4,
       iteri$1,
       map$4,
       mapi$1,
       trim$0,
       escaped$1,
       index$0,
       index_opt$0,
       rindex$0,
       rindex_opt$0,
       index_from$0,
       index_from_opt$0,
       rindex_from$0,
       rindex_from_opt$0,
       contains$0,
       contains_from$0,
       rcontains_from$0,
       uppercase$1,
       lowercase$1,
       capitalize$0,
       uncapitalize$0,
       uppercase_ascii$1,
       lowercase_ascii$1,
       capitalize_ascii$0,
       uncapitalize_ascii$0,
       compare$5,
       equal$5,
       split_on_char,
       to_seq$3,
       to_seqi$0,
       of_seq$1];
    caml_register_global(758,include$1,"Stdlib__string");
    function equal$6(param,_ye_){return 1}
    function compare$6(param,_yd_){return 0}
    function to_string$2(param){return cst$5}
    var Stdlib_unit=[0,equal$6,compare$6,to_string$2];
    caml_register_global(759,Stdlib_unit,"Stdlib__unit");
    function to_buffer(buff,ofs,len,v,flags)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_bytes_length(buff) - len | 0) < ofs))
       return runtime.caml_output_value_to_buffer(buff,ofs,len,v,flags);
      return invalid_arg(cst_Marshal_to_buffer_substrin)}
    var header_size=20;
    function data_size(buff,ofs)
     {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs))
       return caml_marshal_data_size(buff,ofs);
      return invalid_arg(cst_Marshal_data_size)}
    function total_size(buff,ofs){return 20 + data_size(buff,ofs) | 0}
    function from_bytes(buff,ofs)
     {if(0 <= ofs && ! ((caml_ml_bytes_length(buff) - 20 | 0) < ofs))
       {var len=caml_marshal_data_size(buff,ofs);
        return (caml_ml_bytes_length(buff) - (20 + len | 0) | 0) < ofs
                ?invalid_arg(cst_Marshal_from_bytes$0)
                :runtime.caml_input_value_from_bytes(buff,ofs)}
      return invalid_arg(cst_Marshal_from_bytes)}
    function from_string(buff,ofs)
     {return from_bytes(caml_bytes_of_string(buff),ofs)}
    var
     Stdlib_marshal=
      [0,
       caml_output_value,
       to_buffer,
       caml_input_value,
       from_bytes,
       from_string,
       header_size,
       data_size,
       total_size];
    caml_register_global(760,Stdlib_marshal,"Stdlib__marshal");
    function is_block(a){return 1 - (typeof a === "number"?1:0)}
    var double_field=caml_array_get,set_double_field=caml_array_set;
    function marshal(obj){return runtime.caml_output_value_to_bytes(obj,0)}
    function unmarshal(str,pos)
     {var _yc_=pos + total_size(str,pos) | 0;
      return [0,from_bytes(str,pos),_yc_]}
    var
     first_non_constant_constructor=0,
     last_non_constant_constructor_=245,
     lazy_tag=246,
     closure_tag=247,
     object_tag=248,
     infix_tag=249,
     forward_tag=250,
     no_scan_tag=251,
     abstract_tag=251,
     string_tag=252,
     double_tag=253,
     double_array_tag=254,
     custom_tag=255,
     int_tag=1000,
     out_of_heap_tag=1001,
     unaligned_tag=1002;
    function of_val(x)
     {var switch$0=0;
      if(is_block(x) && caml_obj_tag(x) !== 248 && 1 <= x.length - 1)
       {var slot=x[1];switch$0 = 1}
      if(! switch$0)var slot=x;
      var switch$1=0;
      if(is_block(slot) && caml_obj_tag(slot) === 248)
       {var name=slot[1];switch$1 = 1}
      if(! switch$1)var name=invalid_arg(cst_Obj_extension_constructor$0);
      return caml_obj_tag(name) === 252
              ?slot
              :invalid_arg(cst_Obj_extension_constructor)}
    function name(slot){return slot[1]}
    function id(slot){return slot[2]}
    var
     Extension_constructor=[0,of_val,name,id],
     extension_constructor=Extension_constructor[1],
     extension_name=Extension_constructor[2],
     extension_id=Extension_constructor[3],
     max_ephe_length=max_array_length - 2 | 0;
    function create(l)
     {var _ya_=0 <= l?1:0,_yb_=_ya_?l <= max_ephe_length?1:0:_ya_;
      if(1 - _yb_)invalid_arg(cst_Obj_Ephemeron_create);
      return runtime.caml_ephe_create(l)}
    function length$0(x){return x.length - 1 - 2 | 0}
    function raise_if_invalid_offset(e,o,msg)
     {var _x9_=0 <= o?1:0,_x__=_x9_?o < length$0(e)?1:0:_x9_,_x$_=1 - _x__;
      return _x$_?invalid_arg(msg):_x$_}
    function get_key(e,o)
     {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key);
      return runtime.caml_ephe_get_key(e,o)}
    function get_key_copy(e,o)
     {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_get_key_copy);
      return runtime.caml_ephe_get_key_copy(e,o)}
    function set_key(e,o,x)
     {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_set_key);
      return caml_ephe_set_key(e,o,x)}
    function unset_key(e,o)
     {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_unset_key);
      return caml_ephe_unset_key(e,o)}
    function check_key(e,o)
     {raise_if_invalid_offset(e,o,cst_Obj_Ephemeron_check_key);
      return runtime.caml_ephe_check_key(e,o)}
    function blit_key(e1,o1,e2,o2,l)
     {if
       (0
        <=
        l
        &&
        0
        <=
        o1
        &&
        !
        ((length$0(e1) - l | 0) < o1)
        &&
        0
        <=
        o2
        &&
        !
        ((length$0(e2) - l | 0) < o2))
       {var
         _x7_=0 !== l?1:0,
         _x8_=_x7_?runtime.caml_ephe_blit_key(e1,o1,e2,o2,l):_x7_;
        return _x8_}
      return invalid_arg(cst_Obj_Ephemeron_blit_key)}
    var
     _p_=runtime.caml_ephe_blit_data,
     _q_=runtime.caml_ephe_check_data,
     _r_=
      [0,
       create,
       length$0,
       get_key,
       get_key_copy,
       set_key,
       unset_key,
       check_key,
       blit_key,
       runtime.caml_ephe_get_data,
       runtime.caml_ephe_get_data_copy,
       runtime.caml_ephe_set_data,
       function(_x6_){return runtime.caml_ephe_unset_data(_x6_)},
       _q_,
       _p_,
       max_ephe_length],
     Stdlib_obj=
      [0,
       is_block,
       double_field,
       set_double_field,
       first_non_constant_constructor,
       last_non_constant_constructor_,
       lazy_tag,
       closure_tag,
       object_tag,
       infix_tag,
       forward_tag,
       no_scan_tag,
       abstract_tag,
       string_tag,
       double_tag,
       double_array_tag,
       custom_tag,
       custom_tag,
       int_tag,
       out_of_heap_tag,
       unaligned_tag,
       Extension_constructor,
       extension_constructor,
       extension_name,
       extension_id,
       marshal,
       unmarshal,
       _r_];
    caml_register_global(761,Stdlib_obj,"Stdlib__obj");
    var make_float=runtime.caml_make_float_vect,Floatarray=[0];
    function init$2(l,f)
     {if(0 === l)return [0];
      if(0 <= l)
       {var res=caml_make_vect(l,caml_call1(f,0)),_x4_=l - 1 | 0,_x3_=1;
        if(! (_x4_ < 1))
         {var i=_x3_;
          for(;;)
           {res[1 + i] = caml_call1(f,i);
            var _x5_=i + 1 | 0;
            if(_x4_ !== i){var i=_x5_;continue}
            break}}
        return res}
      return invalid_arg(cst_Array_init)}
    function create_matrix(sx,sy,init)
     {var res=caml_make_vect(sx,[0]),_x1_=sx - 1 | 0,_x0_=0;
      if(! (_x1_ < 0))
       {var x=_x0_;
        for(;;)
         {res[1 + x] = caml_make_vect(sy,init);
          var _x2_=x + 1 | 0;
          if(_x1_ !== x){var x=_x2_;continue}
          break}}
      return res}
    function copy$1(a)
     {var l=a.length - 1;return 0 === l?[0]:caml_array_sub(a,0,l)}
    function append$0(a1,a2)
     {var l1=a1.length - 1;
      return 0 === l1
              ?copy$1(a2)
              :0 === a2.length - 1
                ?caml_array_sub(a1,0,l1)
                :runtime.caml_array_append(a1,a2)}
    function sub$1(a,ofs,len)
     {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs))
       return caml_array_sub(a,ofs,len);
      return invalid_arg(cst_Array_sub)}
    function fill$0(a,ofs,len,v)
     {if(0 <= ofs && 0 <= len && ! ((a.length - 1 - len | 0) < ofs))
       return runtime.caml_array_fill(a,ofs,len,v);
      return invalid_arg(cst_Array_fill)}
    function blit$1(a1,ofs1,a2,ofs2,len)
     {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 invalid_arg(cst_Array_blit)}
    function iter$5(f,a)
     {var _xY_=a.length - 1 - 1 | 0,_xX_=0;
      if(! (_xY_ < 0))
       {var i=_xX_;
        for(;;)
         {caml_call1(f,a[1 + i]);
          var _xZ_=i + 1 | 0;
          if(_xY_ !== i){var i=_xZ_;continue}
          break}}
      return 0}
    function iter2$0(f,a,b)
     {if(a.length - 1 !== b.length - 1)
       return invalid_arg(cst_Array_iter2_arrays_must_ha);
      var _xV_=a.length - 1 - 1 | 0,_xU_=0;
      if(! (_xV_ < 0))
       {var i=_xU_;
        for(;;)
         {caml_call2(f,a[1 + i],b[1 + i]);
          var _xW_=i + 1 | 0;
          if(_xV_ !== i){var i=_xW_;continue}
          break}}
      return 0}
    function map$5(f,a)
     {var l=a.length - 1;
      if(0 === l)return [0];
      var r=caml_make_vect(l,caml_call1(f,a[1])),_xS_=l - 1 | 0,_xR_=1;
      if(! (_xS_ < 1))
       {var i=_xR_;
        for(;;)
         {r[1 + i] = caml_call1(f,a[1 + i]);
          var _xT_=i + 1 | 0;
          if(_xS_ !== i){var i=_xT_;continue}
          break}}
      return r}
    function map2$0(f,a,b)
     {var la=a.length - 1,lb=b.length - 1;
      if(la !== lb)return invalid_arg(cst_Array_map2_arrays_must_hav);
      if(0 === la)return [0];
      var r=caml_make_vect(la,caml_call2(f,a[1],b[1])),_xP_=la - 1 | 0,_xO_=1;
      if(! (_xP_ < 1))
       {var i=_xO_;
        for(;;)
         {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]);
          var _xQ_=i + 1 | 0;
          if(_xP_ !== i){var i=_xQ_;continue}
          break}}
      return r}
    function iteri$2(f,a)
     {var _xM_=a.length - 1 - 1 | 0,_xL_=0;
      if(! (_xM_ < 0))
       {var i=_xL_;
        for(;;)
         {caml_call2(f,i,a[1 + i]);
          var _xN_=i + 1 | 0;
          if(_xM_ !== i){var i=_xN_;continue}
          break}}
      return 0}
    function mapi$2(f,a)
     {var l=a.length - 1;
      if(0 === l)return [0];
      var r=caml_make_vect(l,caml_call2(f,0,a[1])),_xJ_=l - 1 | 0,_xI_=1;
      if(! (_xJ_ < 1))
       {var i=_xI_;
        for(;;)
         {r[1 + i] = caml_call2(f,i,a[1 + i]);
          var _xK_=i + 1 | 0;
          if(_xJ_ !== i){var i=_xK_;continue}
          break}}
      return r}
    function to_list$1(a)
     {var i$1=a.length - 1 - 1 | 0,i=i$1,res=0;
      for(;;)
       {if(0 <= i)
         {var res$0=[0,a[1 + i],res],i$0=i - 1 | 0,i=i$0,res=res$0;continue}
        return res}}
    function list_length(accu,param)
     {var accu$0=accu,param$0=param;
      for(;;)
       {if(param$0)
         {var
           param$1=param$0[2],
           accu$1=accu$0 + 1 | 0,
           accu$0=accu$1,
           param$0=param$1;
          continue}
        return accu$0}}
    function of_list(l)
     {if(l)
       {var
         tl=l[2],
         hd=l[1],
         a=caml_make_vect(list_length(0,l),hd),
         i=1,
         param=tl;
        for(;;)
         {if(param)
           {var tl$0=param[2],hd$0=param[1];
            a[1 + i] = hd$0;
            var i$0=i + 1 | 0,i=i$0,param=tl$0;
            continue}
          return a}}
      return [0]}
    function fold_left$1(f,x,a)
     {var r=[0,x],_xG_=a.length - 1 - 1 | 0,_xF_=0;
      if(! (_xG_ < 0))
       {var i=_xF_;
        for(;;)
         {r[1] = caml_call2(f,r[1],a[1 + i]);
          var _xH_=i + 1 | 0;
          if(_xG_ !== i){var i=_xH_;continue}
          break}}
      return r[1]}
    function fold_right$0(f,a,x)
     {var r=[0,x],_xD_=a.length - 1 - 1 | 0;
      if(! (_xD_ < 0))
       {var i=_xD_;
        for(;;)
         {r[1] = caml_call2(f,a[1 + i],r[1]);
          var _xE_=i - 1 | 0;
          if(0 !== i){var i=_xE_;continue}
          break}}
      return r[1]}
    function exists$0(p,a)
     {var n=a.length - 1,i=0;
      for(;;)
       {if(i === n)return 0;
        if(caml_call1(p,a[1 + i]))return 1;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    function for_all$0(p,a)
     {var n=a.length - 1,i=0;
      for(;;)
       {if(i === n)return 1;
        if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue}
        return 0}}
    function mem$0(x,a)
     {var n=a.length - 1,i=0;
      for(;;)
       {if(i === n)return 0;
        if(0 === caml_compare(a[1 + i],x))return 1;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    function memq$0(x,a)
     {var n=a.length - 1,i=0;
      for(;;)
       {if(i === n)return 0;
        if(x === a[1 + i])return 1;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    var Bottom=[248,cst_Stdlib_Array_Bottom,caml_fresh_oo_id(0)];
    function sort(cmp,a)
     {function maxson(l,i)
       {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31];
        if((i31 + 2 | 0) < l)
         {var _xw_=i31 + 1 | 0,_xx_=caml_check_bound(a,_xw_)[1 + _xw_];
          if(caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_xx_) < 0)
           x[1] = i31 + 1 | 0;
          var
           _xy_=i31 + 2 | 0,
           _xz_=caml_check_bound(a,_xy_)[1 + _xy_],
           _xA_=x[1];
          if(caml_call2(cmp,caml_check_bound(a,_xA_)[1 + _xA_],_xz_) < 0)
           x[1] = i31 + 2 | 0;
          return x[1]}
        if((i31 + 1 | 0) < l)
         {var _xB_=i31 + 1 | 0,_xC_=caml_check_bound(a,_xB_)[1 + _xB_];
          if(! (0 <= caml_call2(cmp,caml_check_bound(a,i31)[1 + i31],_xC_)))
           return i31 + 1 | 0}
        if(i31 < l)return i31;
        throw [0,Bottom,i]}
      function trickledown(l,i,e)
       {var i$0=i;
        for(;;)
         {var j=maxson(l,i$0);
          if(0 < caml_call2(cmp,caml_check_bound(a,j)[1 + j],e))
           {var _xv_=caml_check_bound(a,j)[1 + j];
            caml_check_bound(a,i$0)[1 + i$0] = _xv_;
            var i$0=j;
            continue}
          caml_check_bound(a,i$0)[1 + i$0] = e;
          return 0}}
      function trickle(l,i,e)
       {try
         {var _xu_=trickledown(l,i,e);return _xu_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Bottom)
           {var i$0=exn[2];caml_check_bound(a,i$0)[1 + i$0] = e;return 0}
          throw exn}}
      function bubbledown(l,i)
       {var i$0=i;
        for(;;)
         {var i$1=maxson(l,i$0),_xt_=caml_check_bound(a,i$1)[1 + i$1];
          caml_check_bound(a,i$0)[1 + i$0] = _xt_;
          var i$0=i$1;
          continue}}
      function bubble(l,i)
       {try
         {var _xs_=bubbledown(l,i);return _xs_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Bottom){var i$0=exn[2];return i$0}
          throw exn}}
      var l=a.length - 1,_xk_=((l + 1 | 0) / 3 | 0) - 1 | 0;
      if(! (_xk_ < 0))
       {var i$2=_xk_;
        for(;;)
         {trickle(l,i$2,caml_check_bound(a,i$2)[1 + i$2]);
          var _xr_=i$2 - 1 | 0;
          if(0 !== i$2){var i$2=_xr_;continue}
          break}}
      var _xl_=l - 1 | 0;
      if(! (_xl_ < 2))
       {var i$0=_xl_;
        a:
        for(;;)
         {var
           e$0=caml_check_bound(a,i$0)[1 + i$0],
           _xp_=caml_check_bound(a,0)[1];
          caml_check_bound(a,i$0)[1 + i$0] = _xp_;
          var i$1=bubble(i$0,0),i=i$1;
          for(;;)
           {var father=(i - 1 | 0) / 3 | 0;
            if(i === father)throw [0,Assert_failure,_s_];
            if
             (0 <= caml_call2(cmp,caml_check_bound(a,father)[1 + father],e$0))
             caml_check_bound(a,i)[1 + i] = e$0;
            else
             {var _xj_=caml_check_bound(a,father)[1 + father];
              caml_check_bound(a,i)[1 + i] = _xj_;
              if(0 < father){var i=father;continue}
              caml_check_bound(a,0)[1] = e$0}
            var _xq_=i$0 - 1 | 0;
            if(2 !== i$0){var i$0=_xq_;continue a}
            break}
          break}}
      var _xm_=1 < l?1:0;
      if(_xm_)
       {var e=caml_check_bound(a,1)[2],_xn_=caml_check_bound(a,0)[1];
        caml_check_bound(a,1)[2] = _xn_;
        caml_check_bound(a,0)[1] = e;
        var _xo_=0}
      else
       var _xo_=_xm_;
      return _xo_}
    function fast_sort$0(cmp,a)
     {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs)
       {var
         src1r=src1ofs + src1len | 0,
         src2r=src2ofs + src2len | 0,
         s2$1=caml_check_bound(src2,src2ofs)[1 + src2ofs],
         s1$1=caml_check_bound(a,src1ofs)[1 + src1ofs],
         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)[1 + d] = s2;
            var i2$0=i2 + 1 | 0;
            if(i2$0 < src2r)
             {var
               d$0=d + 1 | 0,
               s2$0=caml_check_bound(src2,i2$0)[1 + i2$0],
               i2=i2$0,
               s2=s2$0,
               d=d$0;
              continue}
            return blit$1(a,i1,dst,d + 1 | 0,src1r - i1 | 0)}
          caml_check_bound(dst,d)[1 + d] = s1;
          var i1$0=i1 + 1 | 0;
          if(i1$0 < src1r)
           {var
             d$1=d + 1 | 0,
             s1$0=caml_check_bound(a,i1$0)[1 + i1$0],
             i1=i1$0,
             s1=s1$0,
             d=d$1;
            continue}
          return blit$1(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}}
      function isortto(srcofs,dst,dstofs,len)
       {var _xb_=len - 1 | 0,_xa_=0;
        if(! (_xb_ < 0))
         {var i=_xa_;
          a:
          for(;;)
           {var
             _xc_=srcofs + i | 0,
             e=caml_check_bound(a,_xc_)[1 + _xc_],
             j=[0,(dstofs + i | 0) - 1 | 0];
            for(;;)
             {if(dstofs <= j[1])
               {var _xd_=j[1];
                if(0 < caml_call2(cmp,caml_check_bound(dst,_xd_)[1 + _xd_],e))
                 {var
                   _xe_=j[1],
                   _xf_=caml_check_bound(dst,_xe_)[1 + _xe_],
                   _xg_=j[1] + 1 | 0;
                  caml_check_bound(dst,_xg_)[1 + _xg_] = _xf_;
                  j[1] += -1;
                  continue}}
              var _xh_=j[1] + 1 | 0;
              caml_check_bound(dst,_xh_)[1 + _xh_] = e;
              var _xi_=i + 1 | 0;
              if(_xb_ !== i){var i=_xi_;continue a}
              break}
            break}}
        return 0}
      function sortto(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,
       t=caml_make_vect(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)}
    function to_seq$4(a)
     {function aux(i,param)
       {if(i < a.length - 1)
         {var x=a[1 + i],_w__=i + 1 | 0;
          return [0,x,function(_w$_){return aux(_w__,_w$_)}]}
        return 0}
      var _w8_=0;
      return function(_w9_){return aux(_w8_,_w9_)}}
    function to_seqi$1(a)
     {function aux(i,param)
       {if(i < a.length - 1)
         {var x=a[1 + i],_w6_=i + 1 | 0;
          return [0,[0,i,x],function(_w7_){return aux(_w6_,_w7_)}]}
        return 0}
      var _w4_=0;
      return function(_w5_){return aux(_w4_,_w5_)}}
    function of_seq$2(i$2)
     {var _w3_=0,l=fold_left(function(acc,x){return [0,x,acc]},_w3_,i$2);
      if(l)
       {var
         tl=l[2],
         hd=l[1],
         len=list_length(0,l),
         a=caml_make_vect(len,hd),
         i$1=len - 2 | 0,
         i=i$1,
         param=tl;
        for(;;)
         {if(param)
           {var tl$0=param[2],hd$0=param[1];
            a[1 + i] = hd$0;
            var i$0=i - 1 | 0,i=i$0,param=tl$0;
            continue}
          return a}}
      return [0]}
    var
     concat$1=caml_array_concat,
     include$2=
      [0,
       make_float,
       init$2,
       create_matrix,
       create_matrix,
       append$0,
       concat$1,
       sub$1,
       copy$1,
       fill$0,
       blit$1,
       to_list$1,
       of_list,
       iter$5,
       iteri$2,
       map$5,
       mapi$2,
       fold_left$1,
       fold_right$0,
       iter2$0,
       map2$0,
       for_all$0,
       exists$0,
       mem$0,
       memq$0,
       sort,
       fast_sort$0,
       fast_sort$0,
       to_seq$4,
       to_seqi$1,
       of_seq$2,
       Floatarray];
    caml_register_global(762,include$2,"Stdlib__array");
    var zero=0.,one=1.,minus_one=-1.;
    function is_finite(x){return x - x == 0.?1:0}
    function is_infinite(x){return 1. / x == 0.?1:0}
    function is_nan(x){return x != x?1:0}
    var pi=3.14159265358979312;
    function is_integer(x)
     {var _w2_=x == runtime.caml_trunc_float(x)?1:0;
      return _w2_?is_finite(x):_w2_}
    function succ$0(x){return caml_nextafter_float(x,infinity)}
    function pred$0(x){return caml_nextafter_float(x,neg_infinity)}
    function equal$7(x,y){return 0 === caml_float_compare(x,y)?1:0}
    function min$1(x,y)
     {if(! (x < y))
       {var switch$0=0;
        if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
        if(switch$0)return x != x?x:y}
      return y != y?y:x}
    function max$1(x,y)
     {if(! (x < y))
       {var switch$0=0;
        if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
        if(switch$0)return y != y?y:x}
      return x != x?x:y}
    function min_max(x,y)
     {if(x == x && y == y)
       {if(! (x < y))
         {var switch$0=0;
          if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
          if(switch$0)return [0,y,x]}
        return [0,x,y]}
      return [0,nan,nan]}
    function min_num(x,y)
     {if(! (x < y))
       {var switch$0=0;
        if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
        if(switch$0)return y != y?x:y}
      return x != x?y:x}
    function max_num(x,y)
     {if(! (x < y))
       {var switch$0=0;
        if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
        if(switch$0)return x != x?y:x}
      return y != y?x:y}
    function min_max_num(x,y)
     {if(x != x)return [0,y,y];
      if(y != y)return [0,x,x];
      if(! (x < y))
       {var switch$0=0;
        if(caml_signbit_float(y) || ! caml_signbit_float(x))switch$0 = 1;
        if(switch$0)return [0,y,x]}
      return [0,x,y]}
    function hash$0(x){return caml_hash(10,100,0,x)}
    function unsafe_fill(a,ofs,len,v)
     {var _w0_=(ofs + len | 0) - 1 | 0;
      if(! (_w0_ < ofs))
       {var i=ofs;
        for(;;)
         {a[1 + i] = v;
          var _w1_=i + 1 | 0;
          if(_w0_ !== i){var i=_w1_;continue}
          break}}
      return 0}
    function unsafe_blit(src,sofs,dst,dofs,len)
     {var _wY_=len - 1 | 0,_wX_=0;
      if(! (_wY_ < 0))
       {var i=_wX_;
        for(;;)
         {dst[1 + (dofs + i | 0)] = src[1 + (sofs + i | 0)];
          var _wZ_=i + 1 | 0;
          if(_wY_ !== i){var i=_wZ_;continue}
          break}}
      return 0}
    function check(a,ofs,len,msg)
     {var _wT_=ofs < 0?1:0;
      if(_wT_)
       var _wU_=_wT_;
      else
       {var _wV_=len < 0?1:0;
        if(_wV_)
         var _wU_=_wV_;
        else
         var
          _wW_=(ofs + len | 0) < 0?1:0,
          _wU_=_wW_ || (a.length - 1 < (ofs + len | 0)?1:0)}
      return _wU_?invalid_arg(msg):_wU_}
    function make$1(n,v)
     {var result=caml_floatarray_create(n);
      unsafe_fill(result,0,n,v);
      return result}
    function init$3(l,f)
     {if(0 <= l)
       {var res=caml_floatarray_create(l),_wR_=l - 1 | 0,_wQ_=0;
        if(! (_wR_ < 0))
         {var i=_wQ_;
          for(;;)
           {res[1 + i] = caml_call1(f,i);
            var _wS_=i + 1 | 0;
            if(_wR_ !== i){var i=_wS_;continue}
            break}}
        return res}
      return invalid_arg(cst_Float_Array_init)}
    function append$1(a1,a2)
     {var
       l1=a1.length - 1,
       l2=a2.length - 1,
       result=caml_floatarray_create(l1 + l2 | 0);
      unsafe_blit(a1,0,result,0,l1);
      unsafe_blit(a2,0,result,l1,l2);
      return result}
    function concat$2(l)
     {var acc=0,param=l;
      for(;;)
       {if(param)
         {var
           tl=param[2],
           hd=param[1],
           x=hd.length - 1 + acc | 0,
           acc$0=acc <= x?x:invalid_arg(cst_Float_Array_concat),
           acc=acc$0,
           param=tl;
          continue}
        var result=caml_floatarray_create(acc),l$0=l,i=0;
        for(;;)
         {if(l$0)
           {var tl$0=l$0[2],hd$0=l$0[1],hlen=hd$0.length - 1;
            unsafe_blit(hd$0,0,result,i,hlen);
            var i$0=i + hlen | 0,l$0=tl$0,i=i$0;
            continue}
          if(i === acc)return result;
          throw [0,Assert_failure,_t_]}}}
    function sub$2(a,ofs,len)
     {check(a,ofs,len,cst_Float_Array_sub);
      var result=caml_floatarray_create(len);
      unsafe_blit(a,ofs,result,0,len);
      return result}
    function copy$2(a)
     {var l=a.length - 1,result=caml_floatarray_create(l);
      unsafe_blit(a,0,result,0,l);
      return result}
    function fill$1(a,ofs,len,v)
     {check(a,ofs,len,cst_Float_Array_fill);return unsafe_fill(a,ofs,len,v)}
    function blit$2(src,sofs,dst,dofs,len)
     {check(src,sofs,len,cst_Float_array_blit);
      check(dst,dofs,len,cst_Float_array_blit$0);
      return unsafe_blit(src,sofs,dst,dofs,len)}
    function to_list$2(a)
     {return init(a.length - 1,function(_wP_){return a[1 + _wP_]})}
    function of_list$0(l)
     {var result=caml_floatarray_create(length(l)),i=0,l$0=l;
      for(;;)
       {if(l$0)
         {var t=l$0[2],h=l$0[1];
          result[1 + i] = h;
          var i$0=i + 1 | 0,i=i$0,l$0=t;
          continue}
        return result}}
    function iter$6(f,a)
     {var _wN_=a.length - 1 - 1 | 0,_wM_=0;
      if(! (_wN_ < 0))
       {var i=_wM_;
        for(;;)
         {caml_call1(f,a[1 + i]);
          var _wO_=i + 1 | 0;
          if(_wN_ !== i){var i=_wO_;continue}
          break}}
      return 0}
    function iter2$1(f,a,b)
     {if(a.length - 1 !== b.length - 1)
       return invalid_arg(cst_Float_Array_iter2_arrays_m);
      var _wK_=a.length - 1 - 1 | 0,_wJ_=0;
      if(! (_wK_ < 0))
       {var i=_wJ_;
        for(;;)
         {caml_call2(f,a[1 + i],b[1 + i]);
          var _wL_=i + 1 | 0;
          if(_wK_ !== i){var i=_wL_;continue}
          break}}
      return 0}
    function map$6(f,a)
     {var l=a.length - 1,r=caml_floatarray_create(l),_wH_=l - 1 | 0,_wG_=0;
      if(! (_wH_ < 0))
       {var i=_wG_;
        for(;;)
         {r[1 + i] = caml_call1(f,a[1 + i]);
          var _wI_=i + 1 | 0;
          if(_wH_ !== i){var i=_wI_;continue}
          break}}
      return r}
    function map2$1(f,a,b)
     {var la=a.length - 1,lb=b.length - 1;
      if(la !== lb)return invalid_arg(cst_Float_Array_map2_arrays_mu);
      var r=caml_floatarray_create(la),_wE_=la - 1 | 0,_wD_=0;
      if(! (_wE_ < 0))
       {var i=_wD_;
        for(;;)
         {r[1 + i] = caml_call2(f,a[1 + i],b[1 + i]);
          var _wF_=i + 1 | 0;
          if(_wE_ !== i){var i=_wF_;continue}
          break}}
      return r}
    function iteri$3(f,a)
     {var _wB_=a.length - 1 - 1 | 0,_wA_=0;
      if(! (_wB_ < 0))
       {var i=_wA_;
        for(;;)
         {caml_call2(f,i,a[1 + i]);
          var _wC_=i + 1 | 0;
          if(_wB_ !== i){var i=_wC_;continue}
          break}}
      return 0}
    function mapi$3(f,a)
     {var l=a.length - 1,r=caml_floatarray_create(l),_wy_=l - 1 | 0,_wx_=0;
      if(! (_wy_ < 0))
       {var i=_wx_;
        for(;;)
         {r[1 + i] = caml_call2(f,i,a[1 + i]);
          var _wz_=i + 1 | 0;
          if(_wy_ !== i){var i=_wz_;continue}
          break}}
      return r}
    function fold_left$2(f,x,a)
     {var r=[0,x],_wv_=a.length - 1 - 1 | 0,_wu_=0;
      if(! (_wv_ < 0))
       {var i=_wu_;
        for(;;)
         {r[1] = caml_call2(f,r[1],a[1 + i]);
          var _ww_=i + 1 | 0;
          if(_wv_ !== i){var i=_ww_;continue}
          break}}
      return r[1]}
    function fold_right$1(f,a,x)
     {var r=[0,x],_ws_=a.length - 1 - 1 | 0;
      if(! (_ws_ < 0))
       {var i=_ws_;
        for(;;)
         {r[1] = caml_call2(f,a[1 + i],r[1]);
          var _wt_=i - 1 | 0;
          if(0 !== i){var i=_wt_;continue}
          break}}
      return r[1]}
    function exists$1(p,a)
     {var n=a.length - 1,i=0;
      for(;;)
       {if(i === n)return 0;
        if(caml_call1(p,a[1 + i]))return 1;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    function for_all$1(p,a)
     {var n=a.length - 1,i=0;
      for(;;)
       {if(i === n)return 1;
        if(caml_call1(p,a[1 + i])){var i$0=i + 1 | 0,i=i$0;continue}
        return 0}}
    function mem$1(x,a)
     {var n=a.length - 1,i=0;
      for(;;)
       {if(i === n)return 0;
        if(0 === caml_float_compare(a[1 + i],x))return 1;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    function mem_ieee(x,a)
     {var n=a.length - 1,i=0;
      for(;;)
       {if(i === n)return 0;
        if(x == a[1 + i])return 1;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    var Bottom$0=[248,cst_Stdlib_Float_Array_Bottom,caml_fresh_oo_id(0)];
    function sort$0(cmp,a)
     {function maxson(l,i)
       {var i31=((i + i | 0) + i | 0) + 1 | 0,x=[0,i31];
        if((i31 + 2 | 0) < l)
         {if
           (caml_call2
             (cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0))
            <
            0)
           x[1] = i31 + 1 | 0;
          if
           (caml_call2
             (cmp,caml_array_get(a,x[1]),caml_array_get(a,i31 + 2 | 0))
            <
            0)
           x[1] = i31 + 2 | 0;
          return x[1]}
        if
         ((i31 + 1 | 0)
          <
          l
          &&
          !
          (0
           <=
           caml_call2(cmp,caml_array_get(a,i31),caml_array_get(a,i31 + 1 | 0))))
         return i31 + 1 | 0;
        if(i31 < l)return i31;
        throw [0,Bottom$0,i]}
      function trickledown(l,i,e)
       {var i$0=i;
        for(;;)
         {var j=maxson(l,i$0);
          if(0 < caml_call2(cmp,caml_array_get(a,j),e))
           {caml_array_set(a,i$0,caml_array_get(a,j));var i$0=j;continue}
          return caml_array_set(a,i$0,e)}}
      function trickle(l,i,e)
       {try
         {var _wr_=trickledown(l,i,e);return _wr_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Bottom$0)
           {var i$0=exn[2];return caml_array_set(a,i$0,e)}
          throw exn}}
      function bubbledown(l,i)
       {var i$0=i;
        for(;;)
         {var i$1=maxson(l,i$0);
          caml_array_set(a,i$0,caml_array_get(a,i$1));
          var i$0=i$1;
          continue}}
      function bubble(l,i)
       {try
         {var _wq_=bubbledown(l,i);return _wq_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Bottom$0){var i$0=exn[2];return i$0}
          throw exn}}
      var l=a.length - 1,_wk_=((l + 1 | 0) / 3 | 0) - 1 | 0;
      if(! (_wk_ < 0))
       {var i$2=_wk_;
        for(;;)
         {trickle(l,i$2,caml_array_get(a,i$2));
          var _wp_=i$2 - 1 | 0;
          if(0 !== i$2){var i$2=_wp_;continue}
          break}}
      var _wl_=l - 1 | 0;
      if(! (_wl_ < 2))
       {var i$0=_wl_;
        a:
        for(;;)
         {var e$0=caml_array_get(a,i$0);
          caml_array_set(a,i$0,caml_array_get(a,0));
          var i$1=bubble(i$0,0),i=i$1;
          for(;;)
           {var father=(i - 1 | 0) / 3 | 0;
            if(i === father)throw [0,Assert_failure,_u_];
            if(0 <= caml_call2(cmp,caml_array_get(a,father),e$0))
             caml_array_set(a,i,e$0);
            else
             {caml_array_set(a,i,caml_array_get(a,father));
              if(0 < father){var i=father;continue}
              caml_array_set(a,0,e$0)}
            var _wo_=i$0 - 1 | 0;
            if(2 !== i$0){var i$0=_wo_;continue a}
            break}
          break}}
      var _wm_=1 < l?1:0;
      if(_wm_)
       {var e=caml_array_get(a,1);
        caml_array_set(a,1,caml_array_get(a,0));
        var _wn_=caml_array_set(a,0,e)}
      else
       var _wn_=_wm_;
      return _wn_}
    function stable_sort(cmp,a)
     {function merge(src1ofs,src1len,src2,src2ofs,src2len,dst,dstofs)
       {var
         src1r=src1ofs + src1len | 0,
         src2r=src2ofs + src2len | 0,
         s2$1=caml_array_get(src2,src2ofs),
         s1$1=caml_array_get(a,src1ofs),
         i1=src1ofs,
         s1=s1$1,
         i2=src2ofs,
         s2=s2$1,
         d=dstofs;
        for(;;)
         {if(0 < caml_call2(cmp,s1,s2))
           {caml_array_set(dst,d,s2);
            var i2$0=i2 + 1 | 0;
            if(i2$0 < src2r)
             {var
               d$0=d + 1 | 0,
               s2$0=caml_array_get(src2,i2$0),
               i2=i2$0,
               s2=s2$0,
               d=d$0;
              continue}
            return blit$2(a,i1,dst,d + 1 | 0,src1r - i1 | 0)}
          caml_array_set(dst,d,s1);
          var i1$0=i1 + 1 | 0;
          if(i1$0 < src1r)
           {var
             d$1=d + 1 | 0,
             s1$0=caml_array_get(a,i1$0),
             i1=i1$0,
             s1=s1$0,
             d=d$1;
            continue}
          return blit$2(src2,i2,dst,d + 1 | 0,src2r - i2 | 0)}}
      function isortto(srcofs,dst,dstofs,len)
       {var _wi_=len - 1 | 0,_wh_=0;
        if(! (_wi_ < 0))
         {var i=_wh_;
          a:
          for(;;)
           {var
             e=caml_array_get(a,srcofs + i | 0),
             j=[0,(dstofs + i | 0) - 1 | 0];
            for(;;)
             {if
               (dstofs
                <=
                j[1]
                &&
                0
                <
                caml_call2(cmp,caml_array_get(dst,j[1]),e))
               {caml_array_set(dst,j[1] + 1 | 0,caml_array_get(dst,j[1]));
                j[1] += -1;
                continue}
              caml_array_set(dst,j[1] + 1 | 0,e);
              var _wj_=i + 1 | 0;
              if(_wi_ !== i){var i=_wj_;continue a}
              break}
            break}}
        return 0}
      function sortto(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,t=caml_floatarray_create(l2);
      sortto(l1,t,0,l2);
      sortto(0,a,l2,l1);
      return merge(l2,l1,t,0,l2,a,0)}
    function to_seq$5(a)
     {function aux(i,param)
       {if(i < a.length - 1)
         {var x=a[1 + i],_wf_=i + 1 | 0;
          return [0,x,function(_wg_){return aux(_wf_,_wg_)}]}
        return 0}
      var _wd_=0;
      return function(_we_){return aux(_wd_,_we_)}}
    function to_seqi$2(a)
     {function aux(i,param)
       {if(i < a.length - 1)
         {var x=a[1 + i],_wb_=i + 1 | 0;
          return [0,[0,i,x],function(_wc_){return aux(_wb_,_wc_)}]}
        return 0}
      var _v$_=0;
      return function(_wa_){return aux(_v$_,_wa_)}}
    function of_seq$3(i$2)
     {var
       _v__=0,
       param$0=fold_left(function(acc,x){return [0,x,acc]},_v__,i$2),
       len=length(param$0),
       a=caml_floatarray_create(len),
       i$1=len - 1 | 0,
       i=i$1,
       param=param$0;
      for(;;)
       {if(param)
         {var tl=param[2],hd=param[1];
          a[1 + i] = hd;
          var i$0=i - 1 | 0,i=i$0,param=tl;
          continue}
        return a}}
    function map_to_array(f,a)
     {var l=a.length - 1;
      if(0 === l)return [0];
      var r=caml_make_vect(l,caml_call1(f,a[1])),_v8_=l - 1 | 0,_v7_=1;
      if(! (_v8_ < 1))
       {var i=_v7_;
        for(;;)
         {r[1 + i] = caml_call1(f,a[1 + i]);
          var _v9_=i + 1 | 0;
          if(_v8_ !== i){var i=_v9_;continue}
          break}}
      return r}
    function map_from_array(f,a)
     {var l=a.length - 1,r=caml_floatarray_create(l),_v5_=l - 1 | 0,_v4_=0;
      if(! (_v5_ < 0))
       {var i=_v4_;
        for(;;)
         {r[1 + i] = caml_call1(f,a[1 + i]);
          var _v6_=i + 1 | 0;
          if(_v5_ !== i){var i=_v6_;continue}
          break}}
      return r}
    var
     _v_=caml_floatarray_create,
     _w_=caml_array_set,
     _x_=caml_array_get,
     _y_=
      [0,
       function(_v3_){return _v3_.length - 1},
       _x_,
       _w_,
       make$1,
       _v_,
       init$3,
       append$1,
       concat$2,
       sub$2,
       copy$2,
       fill$1,
       blit$2,
       to_list$2,
       of_list$0,
       iter$6,
       iteri$3,
       map$6,
       mapi$3,
       fold_left$2,
       fold_right$1,
       iter2$1,
       map2$1,
       for_all$1,
       exists$1,
       mem$1,
       mem_ieee,
       sort$0,
       stable_sort,
       stable_sort,
       to_seq$5,
       to_seqi$2,
       of_seq$3,
       map_to_array,
       map_from_array],
     _z_=caml_floatarray_create,
     _A_=caml_array_set,
     _B_=caml_array_get,
     Stdlib_float=
      [0,
       zero,
       one,
       minus_one,
       succ$0,
       pred$0,
       infinity,
       neg_infinity,
       nan,
       pi,
       max_float,
       min_float,
       epsilon,
       is_finite,
       is_infinite,
       is_nan,
       is_integer,
       of_string_opt,
       to_string,
       caml_float_compare,
       equal$7,
       min$1,
       max$1,
       min_max,
       min_num,
       max_num,
       min_max_num,
       hash$0,
       [0,
        function(_v2_){return _v2_.length - 1},
        _B_,
        _A_,
        make$1,
        _z_,
        init$3,
        append$1,
        concat$2,
        sub$2,
        copy$2,
        fill$1,
        blit$2,
        to_list$2,
        of_list$0,
        iter$6,
        iteri$3,
        map$6,
        mapi$3,
        fold_left$2,
        fold_right$1,
        iter2$1,
        map2$1,
        for_all$1,
        exists$1,
        mem$1,
        mem_ieee,
        sort$0,
        stable_sort,
        stable_sort,
        to_seq$5,
        to_seqi$2,
        of_seq$3,
        map_to_array,
        map_from_array],
       _y_];
    caml_register_global(763,Stdlib_float,"Stdlib__float");
    var zero$0=0,one$0=1,minus_one$0=-1;
    function abs$0(x){return 0 <= x?x:- x | 0}
    var max_int$0=2147483647,min_int$0=-2147483648;
    function lognot(x){return x ^ -1}
    function equal$8(_v1_,_v0_){return _v1_ === _v0_?1:0}
    var compare$7=caml_int_compare;
    function to_string$3(x){return caml_string_of_jsbytes("" + x)}
    var
     Stdlib_int=
      [0,
       zero$0,
       one$0,
       minus_one$0,
       abs$0,
       max_int$0,
       min_int$0,
       lognot,
       equal$8,
       compare$7,
       to_string$3];
    caml_register_global(764,Stdlib_int,"Stdlib__int");
    var zero$1=0,one$1=1,minus_one$1=-1;
    function succ$1(n){return n + 1 | 0}
    function pred$1(n){return n - 1 | 0}
    function abs$1(n){return caml_greaterequal(n,0)?n:- n | 0}
    var min_int$1=-2147483648,max_int$1=2147483647;
    function lognot$0(n){return n ^ -1}
    function unsigned_to_int(n)
     {if
       (!
        (0 < caml_int_compare(0,n))
        &&
        !
        (0 < caml_int_compare(n,2147483647)))
       return [0,n];
      return 0}
    function to_string$4(n){return caml_format_int(cst_d,n)}
    function of_string_opt$0(s)
     {try
       {var _vY_=[0,caml_int_of_string(s)];return _vY_}
      catch(_vZ_)
       {_vZ_ = caml_wrap_exception(_vZ_);
        if(_vZ_[1] === Failure)return 0;
        throw _vZ_}}
    var compare$8=caml_int_compare;
    function equal$9(x,y){return 0 === caml_int_compare(x,y)?1:0}
    function unsigned_compare(n,m)
     {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)}
    function unsigned_div(n,d)
     {if(caml_lessthan(d,0))return 0 <= unsigned_compare(n,d)?one$1:zero$1;
      var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0;
      return 0 <= unsigned_compare(r,d)?q + 1 | 0:q}
    function unsigned_rem(n,d){return n - caml_mul(unsigned_div(n,d),d) | 0}
    var
     Stdlib_int32=
      [0,
       zero$1,
       one$1,
       minus_one$1,
       unsigned_div,
       unsigned_rem,
       succ$1,
       pred$1,
       abs$1,
       max_int$1,
       min_int$1,
       lognot$0,
       unsigned_to_int,
       of_string_opt$0,
       to_string$4,
       compare$8,
       unsigned_compare,
       equal$9];
    caml_register_global(765,Stdlib_int32,"Stdlib__int32");
    function succ$2(n){return caml_int64_add(n,_C_)}
    function pred$2(n){return caml_int64_sub(n,_D_)}
    function abs$2(n)
     {return caml_greaterequal(n,_E_)?n:runtime.caml_int64_neg(n)}
    function lognot$1(n){return runtime.caml_int64_xor(n,_F_)}
    var max_int$3=caml_int64_of_int32(2147483647);
    function unsigned_to_int$0(n)
     {if
       (!
        (0 < caml_int64_compare(zero$2,n))
        &&
        !
        (0 < caml_int64_compare(n,max_int$3)))
       return [0,runtime.caml_int64_to_int32(n)];
      return 0}
    function to_string$5(n){return caml_int64_format(cst_d$0,n)}
    function of_string_opt$1(s)
     {try
       {var _vW_=[0,caml_int64_of_string(s)];return _vW_}
      catch(_vX_)
       {_vX_ = caml_wrap_exception(_vX_);
        if(_vX_[1] === Failure)return 0;
        throw _vX_}}
    function compare$9(x,y){return caml_int64_compare(x,y)}
    function equal$10(x,y){return 0 === caml_int64_compare(x,y)?1:0}
    function unsigned_compare$0(n,m)
     {return caml_int64_compare
              (caml_int64_sub(n,min_int$2),caml_int64_sub(m,min_int$2))}
    function unsigned_div$0(n,d)
     {if(caml_lessthan(d,zero$2))
       return 0 <= unsigned_compare$0(n,d)?one$2:zero$2;
      var
       q=
        caml_int64_shift_left
         (runtime.caml_int64_div
           (runtime.caml_int64_shift_right_unsigned(n,1),d),
          1),
       r=caml_int64_sub(n,caml_int64_mul(q,d));
      return 0 <= unsigned_compare$0(r,d)?succ$2(q):q}
    function unsigned_rem$0(n,d)
     {return caml_int64_sub(n,caml_int64_mul(unsigned_div$0(n,d),d))}
    var
     Stdlib_int64=
      [0,
       zero$2,
       one$2,
       minus_one$2,
       unsigned_div$0,
       unsigned_rem$0,
       succ$2,
       pred$2,
       abs$2,
       max_int$2,
       min_int$2,
       lognot$1,
       unsigned_to_int$0,
       of_string_opt$1,
       to_string$5,
       compare$9,
       unsigned_compare$0,
       equal$10];
    caml_register_global(766,Stdlib_int64,"Stdlib__int64");
    var zero$3=0,one$3=1,minus_one$3=-1;
    function succ$3(n){return n + 1 | 0}
    function pred$3(n){return n - 1 | 0}
    function abs$3(n){return caml_greaterequal(n,0)?n:- n | 0}
    var min_int$3=-2147483648,max_int$4=2147483647;
    function lognot$2(n){return n ^ -1}
    function unsigned_to_int$1(n)
     {if
       (!
        (0 < caml_int_compare(0,n))
        &&
        !
        (0 < caml_int_compare(n,2147483647)))
       return [0,n];
      return 0}
    function to_string$6(n){return caml_format_int(cst_d$1,n)}
    function of_string_opt$2(s)
     {try
       {var _vU_=[0,caml_int_of_string(s)];return _vU_}
      catch(_vV_)
       {_vV_ = caml_wrap_exception(_vV_);
        if(_vV_[1] === Failure)return 0;
        throw _vV_}}
    var compare$10=caml_int_compare;
    function equal$11(x,y){return 0 === caml_int_compare(x,y)?1:0}
    function unsigned_compare$1(n,m)
     {return caml_int_compare(n + 2147483648 | 0,m + 2147483648 | 0)}
    function unsigned_div$1(n,d)
     {if(caml_lessthan(d,0))return 0 <= unsigned_compare$1(n,d)?one$3:zero$3;
      var q=caml_div(n >>> 1 | 0,d) << 1,r=n - caml_mul(q,d) | 0;
      return 0 <= unsigned_compare$1(r,d)?q + 1 | 0:q}
    function unsigned_rem$1(n,d)
     {return n - caml_mul(unsigned_div$1(n,d),d) | 0}
    var
     Stdlib_nativeint=
      [0,
       zero$3,
       one$3,
       minus_one$3,
       unsigned_div$1,
       unsigned_rem$1,
       succ$3,
       pred$3,
       abs$3,
       match$1,
       max_int$4,
       min_int$3,
       lognot$2,
       unsigned_to_int$1,
       of_string_opt$2,
       to_string$6,
       compare$10,
       unsigned_compare$1,
       equal$11];
    caml_register_global(767,Stdlib_nativeint,"Stdlib__nativeint");
    function engine(tbl,state,buf)
     {var
       result=runtime.caml_lex_engine(tbl,state,buf),
       _vR_=0 <= result?1:0,
       _vS_=_vR_?buf[12] !== dummy_pos?1:0:_vR_;
      if(_vS_)
       {buf[11] = buf[12];
        var _vT_=buf[12];
        buf[12] = [0,_vT_[1],_vT_[2],_vT_[3],buf[4] + buf[6] | 0]}
      return result}
    function new_engine(tbl,state,buf)
     {var
       result=runtime.caml_new_lex_engine(tbl,state,buf),
       _vO_=0 <= result?1:0,
       _vP_=_vO_?buf[12] !== dummy_pos?1:0:_vO_;
      if(_vP_)
       {buf[11] = buf[12];
        var _vQ_=buf[12];
        buf[12] = [0,_vQ_[1],_vQ_[2],_vQ_[3],buf[4] + buf[6] | 0]}
      return result}
    function from_function(opt,f)
     {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1;
      var
       _vA_=with_positions?zero_pos:dummy_pos,
       _vB_=with_positions?zero_pos:dummy_pos,
       aux_buffer=caml_create_bytes(512),
       _vC_=[0],
       _vD_=0,
       _vE_=0,
       _vF_=0,
       _vG_=0,
       _vH_=0,
       _vI_=0,
       _vJ_=0,
       _vK_=caml_create_bytes(1024);
      return [0,
              function(lexbuf)
               {var
                 read=
                  caml_call2(f,aux_buffer,caml_ml_bytes_length(aux_buffer)),
                 n=0 < read?read:(lexbuf[9] = 1,0);
                if(caml_ml_bytes_length(lexbuf[2]) < (lexbuf[3] + n | 0))
                 {if
                   (((lexbuf[3] - lexbuf[5] | 0) + n | 0)
                    <=
                    caml_ml_bytes_length(lexbuf[2]))
                   blit
                    (lexbuf[2],lexbuf[5],lexbuf[2],0,lexbuf[3] - lexbuf[5] | 0);
                  else
                   {var
                     newlen=
                      min
                       (2 * caml_ml_bytes_length(lexbuf[2]) | 0,max_string_length);
                    if(newlen < ((lexbuf[3] - lexbuf[5] | 0) + n | 0))
                     failwith(cst_Lexing_lex_refill_cannot_g);
                    var newbuf=caml_create_bytes(newlen);
                    blit(lexbuf[2],lexbuf[5],newbuf,0,lexbuf[3] - lexbuf[5] | 0);
                    lexbuf[2] = newbuf}
                  var s=lexbuf[5];
                  lexbuf[4] = lexbuf[4] + s | 0;
                  lexbuf[6] = lexbuf[6] - s | 0;
                  lexbuf[5] = 0;
                  lexbuf[7] = lexbuf[7] - s | 0;
                  lexbuf[3] = lexbuf[3] - s | 0;
                  var t=lexbuf[10],_vM_=t.length - 1 - 1 | 0,_vL_=0;
                  if(! (_vM_ < 0))
                   {var i=_vL_;
                    for(;;)
                     {var v=caml_check_bound(t,i)[1 + i];
                      if(0 <= v)caml_check_bound(t,i)[1 + i] = v - s | 0;
                      var _vN_=i + 1 | 0;
                      if(_vM_ !== i){var i=_vN_;continue}
                      break}}}
                blit(aux_buffer,0,lexbuf[2],lexbuf[3],n);
                lexbuf[3] = lexbuf[3] + n | 0;
                return 0},
              _vK_,
              _vJ_,
              _vI_,
              _vH_,
              _vG_,
              _vF_,
              _vE_,
              _vD_,
              _vC_,
              _vB_,
              _vA_]}
    function from_channel(with_positions,ic)
     {return from_function
              (with_positions,function(buf,n){return input(ic,buf,0,n)})}
    function from_string$0(opt,s)
     {if(opt)var sth=opt[1],with_positions=sth;else var with_positions=1;
      var
       _vp_=with_positions?zero_pos:dummy_pos,
       _vq_=with_positions?zero_pos:dummy_pos,
       _vr_=[0],
       _vs_=1,
       _vt_=0,
       _vu_=0,
       _vv_=0,
       _vw_=0,
       _vx_=0,
       _vy_=caml_ml_string_length(s),
       _vz_=of_string(s);
      return [0,
              function(lexbuf){lexbuf[9] = 1;return 0},
              _vz_,
              _vy_,
              _vx_,
              _vw_,
              _vv_,
              _vu_,
              _vt_,
              _vs_,
              _vr_,
              _vq_,
              _vp_]}
    function with_positions(lexbuf){return lexbuf[12] !== dummy_pos?1:0}
    function lexeme(lexbuf)
     {var len=lexbuf[6] - lexbuf[5] | 0;
      return sub_string(lexbuf[2],lexbuf[5],len)}
    function sub_lexeme(lexbuf,i1,i2)
     {var len=i2 - i1 | 0;return sub_string(lexbuf[2],i1,len)}
    function sub_lexeme_opt(lexbuf,i1,i2)
     {if(0 <= i1){var len=i2 - i1 | 0;return [0,sub_string(lexbuf[2],i1,len)]}
      return 0}
    function sub_lexeme_char(lexbuf,i){return caml_bytes_get(lexbuf[2],i)}
    function sub_lexeme_char_opt(lexbuf,i)
     {return 0 <= i?[0,caml_bytes_get(lexbuf[2],i)]:0}
    function lexeme_char(lexbuf,i)
     {return caml_bytes_get(lexbuf[2],lexbuf[5] + i | 0)}
    function lexeme_start(lexbuf){return lexbuf[11][4]}
    function lexeme_end(lexbuf){return lexbuf[12][4]}
    function lexeme_start_p(lexbuf){return lexbuf[11]}
    function lexeme_end_p(lexbuf){return lexbuf[12]}
    function new_line(lexbuf)
     {var
       lcp=lexbuf[12],
       _vn_=lcp !== dummy_pos?1:0,
       _vo_=_vn_?(lexbuf[12] = [0,lcp[1],lcp[2] + 1 | 0,lcp[4],lcp[4]],0):_vn_;
      return _vo_}
    function flush_input(lb)
     {lb[6] = 0;
      lb[4] = 0;
      var lcp=lb[12];
      if(lcp !== dummy_pos)
       lb[12] = [0,lcp[1],zero_pos[2],zero_pos[3],zero_pos[4]];
      lb[3] = 0;
      return 0}
    var
     Stdlib_lexing=
      [0,
       dummy_pos,
       from_channel,
       from_string$0,
       from_function,
       with_positions,
       lexeme,
       lexeme_char,
       lexeme_start,
       lexeme_end,
       lexeme_start_p,
       lexeme_end_p,
       new_line,
       flush_input,
       sub_lexeme,
       sub_lexeme_opt,
       sub_lexeme_char,
       sub_lexeme_char_opt,
       engine,
       new_engine];
    caml_register_global(768,Stdlib_lexing,"Stdlib__lexing");
    var
     YYexit=[248,cst_Stdlib_Parsing_YYexit,caml_fresh_oo_id(0)],
     Parse_error=[248,cst_Stdlib_Parsing_Parse_error,caml_fresh_oo_id(0)],
     env=
      [0,
       caml_make_vect(100,0),
       caml_make_vect(100,0),
       caml_make_vect(100,dummy_pos),
       caml_make_vect(100,dummy_pos),
       100,
       0,
       0,
       0,
       dummy_pos,
       dummy_pos,
       0,
       0,
       0,
       0,
       0,
       0];
    function grow_stacks(param)
     {var
       oldsize=env[5],
       newsize=oldsize * 2 | 0,
       new_s=caml_make_vect(newsize,0),
       new_v=caml_make_vect(newsize,0),
       new_start=caml_make_vect(newsize,dummy_pos),
       new_end=caml_make_vect(newsize,dummy_pos);
      blit$1(env[1],0,new_s,0,oldsize);
      env[1] = new_s;
      blit$1(env[2],0,new_v,0,oldsize);
      env[2] = new_v;
      blit$1(env[3],0,new_start,0,oldsize);
      env[3] = new_start;
      blit$1(env[4],0,new_end,0,oldsize);
      env[4] = new_end;
      env[5] = newsize;
      return 0}
    function clear_parser(param)
     {fill$0(env[2],0,env[5],0);env[8] = 0;return 0}
    var current_lookahead_fun=[0,function(param){return 0}];
    function yyparse(tables,start,lexer,lexbuf)
     {var
       init_asp=env[11],
       init_sp=env[14],
       init_stackbase=env[6],
       init_state=env[15],
       init_curr_char=env[7],
       init_lval=env[8],
       init_errflag=env[16];
      env[6] = env[14] + 1 | 0;
      env[7] = start;
      env[10] = lexbuf[12];
      try
       {var cmd=0,arg=0;
        for(;;)
         {var match=runtime.caml_parse_engine(tables,env,cmd,arg);
          switch(match)
           {case 0:
             var arg$0=caml_call1(lexer,lexbuf);
             env[9] = lexbuf[11];
             env[10] = lexbuf[12];
             var cmd=1,arg=arg$0;
             continue;
            case 1:throw Parse_error;
            case 2:grow_stacks(0);var cmd=2,arg=0;continue;
            case 3:grow_stacks(0);var cmd=3,arg=0;continue;
            case 4:
             try
              {var
                _vh_=env[13],
                _vi_=
                 caml_call1(caml_check_bound(tables[1],_vh_)[1 + _vh_],env),
                _vj_=4,
                arg$1=_vi_,
                cmd$0=_vj_}
             catch(_vm_)
              {_vm_ = caml_wrap_exception(_vm_);
               if(_vm_ !== Parse_error)throw _vm_;
               var arg$1=0,cmd$0=5,_vk_=_vm_}
             var cmd=cmd$0,arg=arg$1;
             continue;
            default:
             caml_call1(tables[14],cst_syntax_error);var cmd=5,arg=0;continue}}}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        var curr_char=env[7];
        env[11] = init_asp;
        env[14] = init_sp;
        env[6] = init_stackbase;
        env[15] = init_state;
        env[7] = init_curr_char;
        env[8] = init_lval;
        env[16] = init_errflag;
        if(exn[1] === YYexit){var v=exn[2];return v}
        current_lookahead_fun[1]
        =
        function(tok)
         {if(is_block(tok))
           {var _vl_=caml_obj_tag(tok);
            return caml_check_bound(tables[3],_vl_)[1 + _vl_] === curr_char
                    ?1
                    :0}
          return caml_check_bound(tables[2],tok)[1 + tok] === curr_char?1:0};
        throw exn}}
    function peek_val(env,n)
     {var _vg_=env[11] - n | 0;return caml_check_bound(env[2],_vg_)[1 + _vg_]}
    function symbol_start_pos(param)
     {var i=env[12];
      for(;;)
       {if(0 < i)
         {var
           _vd_=(env[11] - i | 0) + 1 | 0,
           st=caml_check_bound(env[3],_vd_)[1 + _vd_],
           _ve_=(env[11] - i | 0) + 1 | 0,
           en=caml_check_bound(env[4],_ve_)[1 + _ve_];
          if(caml_notequal(st,en))return st;
          var i$0=i - 1 | 0,i=i$0;
          continue}
        var _vf_=env[11];
        return caml_check_bound(env[4],_vf_)[1 + _vf_]}}
    function symbol_end_pos(param)
     {var _vc_=env[11];return caml_check_bound(env[4],_vc_)[1 + _vc_]}
    function rhs_start_pos(n)
     {var _vb_=env[11] - (env[12] - n | 0) | 0;
      return caml_check_bound(env[3],_vb_)[1 + _vb_]}
    function rhs_end_pos(n)
     {var _va_=env[11] - (env[12] - n | 0) | 0;
      return caml_check_bound(env[4],_va_)[1 + _va_]}
    function symbol_start(param){return symbol_start_pos(0)[4]}
    function symbol_end(param){return symbol_end_pos(0)[4]}
    function rhs_start(n){return rhs_start_pos(n)[4]}
    function rhs_end(n){return rhs_end_pos(n)[4]}
    function is_current_lookahead(tok)
     {return caml_call1(current_lookahead_fun[1],tok)}
    function parse_error(param){return 0}
    var
     Stdlib_parsing=
      [0,
       symbol_start,
       symbol_end,
       rhs_start,
       rhs_end,
       symbol_start_pos,
       symbol_end_pos,
       rhs_start_pos,
       rhs_end_pos,
       clear_parser,
       Parse_error,
       function(_u$_){return runtime.caml_set_parser_trace(_u$_)},
       YYexit,
       yyparse,
       peek_val,
       is_current_lookahead,
       parse_error];
    caml_register_global(769,Stdlib_parsing,"Stdlib__parsing");
    var
     Stdlib_set=
      [0,
       function(Ord)
        {function height(param){if(param){var h=param[4];return h}return 0}
         function create(l,v,r)
          {if(l)var h=l[4],hl=h;else var hl=0;
           if(r)var h$0=r[4],hr=h$0;else var hr=0;
           var _u__=hr <= hl?hl + 1 | 0:hr + 1 | 0;
           return [0,l,v,r,_u__]}
         function bal(l,v,r)
          {if(l)var h=l[4],hl=h;else var hl=0;
           if(r)var h$0=r[4],hr=h$0;else var hr=0;
           if((hr + 2 | 0) < hl)
            {if(l)
              {var lr=l[3],lv=l[2],ll=l[1],_u5_=height(lr);
               if(_u5_ <= height(ll))return create(ll,lv,create(lr,v,r));
               if(lr)
                {var lrr=lr[3],lrv=lr[2],lrl=lr[1],_u6_=create(lrr,v,r);
                 return create(create(ll,lv,lrl),lrv,_u6_)}
               return invalid_arg(cst_Set_bal)}
             return invalid_arg(cst_Set_bal$0)}
           if((hl + 2 | 0) < hr)
            {if(r)
              {var rr=r[3],rv=r[2],rl=r[1],_u7_=height(rl);
               if(_u7_ <= height(rr))return create(create(l,v,rl),rv,rr);
               if(rl)
                {var rlr=rl[3],rlv=rl[2],rll=rl[1],_u8_=create(rlr,rv,rr);
                 return create(create(l,v,rll),rlv,_u8_)}
               return invalid_arg(cst_Set_bal$1)}
             return invalid_arg(cst_Set_bal$2)}
           var _u9_=hr <= hl?hl + 1 | 0:hr + 1 | 0;
           return [0,l,v,r,_u9_]}
         function add(x,t)
          {if(t)
            {var 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?t:bal(l,v,rr)}
             var ll=add(x,l);
             return l === ll?t:bal(ll,v,r)}
           return [0,0,x,0,1]}
         function singleton(x){return [0,0,x,0,1]}
         function add_min_element(x,param)
          {if(param)
            {var r=param[3],v=param[2],l=param[1];
             return bal(add_min_element(x,l),v,r)}
           return singleton(x)}
         function add_max_element(x,param)
          {if(param)
            {var r=param[3],v=param[2],l=param[1];
             return bal(l,v,add_max_element(x,r))}
           return singleton(x)}
         function join(l,v,r)
          {if(l)
            {if(r)
              {var
                rh=r[4],
                rr=r[3],
                rv=r[2],
                rl=r[1],
                lh=l[4],
                lr=l[3],
                lv=l[2],
                ll=l[1];
               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)}
             return add_max_element(v,l)}
           return add_min_element(v,r)}
         function min_elt(param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var _u4_=param$0[1];
               if(_u4_){var param$0=_u4_;continue}
               var v=param$0[2];
               return v}
             throw Not_found}}
         function min_elt_opt(param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var _u3_=param$0[1];
               if(_u3_){var param$0=_u3_;continue}
               var v=param$0[2];
               return [0,v]}
             return 0}}
         function max_elt(param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue}
               var v=param$0[2];
               return v}
             throw Not_found}}
         function max_elt_opt(param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {if(param$0[3]){var param$1=param$0[3],param$0=param$1;continue}
               var v=param$0[2];
               return [0,v]}
             return 0}}
         function remove_min_elt(param)
          {if(param)
            {var _u2_=param[1];
             if(_u2_)
              {var r=param[3],v=param[2];return bal(remove_min_elt(_u2_),v,r)}
             var r$0=param[3];
             return r$0}
           return invalid_arg(cst_Set_remove_min_elt)}
         function concat(t,match)
          {if(t)
            {if(match)
              {var _u1_=remove_min_elt(match);
               return join(t,min_elt(match),_u1_)}
             return t}
           return match}
         function split(x,param)
          {if(param)
            {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v);
             if(0 === c)return [0,l,1,r];
             if(0 <= c)
              {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1];
               return [0,join(l,v,lr),pres,rr]}
             var
              match$0=split(x,l),
              rl=match$0[3],
              pres$0=match$0[2],
              ll=match$0[1];
             return [0,ll,pres$0,join(rl,v,r)]}
           return _G_}
         var empty=0;
         function is_empty(param){return param?0:1}
         function mem(x,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[3],
                v=param$0[2],
                l=param$0[1],
                c=caml_call2(Ord[1],x,v),
                _u0_=0 === c?1:0;
               if(_u0_)return _u0_;
               var param$1=0 <= c?r:l,param$0=param$1;
               continue}
             return 0}}
         function remove(x,t)
          {if(t)
            {var r=t[3],v=t[2],l=t[1],c=caml_call2(Ord[1],x,v);
             if(0 === c)
              {if(l)
                {if(r)
                  {var _uZ_=remove_min_elt(r);return bal(l,min_elt(r),_uZ_)}
                 return l}
               return r}
             if(0 <= c){var rr=remove(x,r);return r === rr?t:bal(l,v,rr)}
             var ll=remove(x,l);
             return l === ll?t:bal(ll,v,r)}
           return 0}
         function union(t1,match)
          {if(t1)
            {if(match)
              {var
                h2=match[4],
                r2=match[3],
                v2=match[2],
                l2=match[1],
                h1=t1[4],
                r1=t1[3],
                v1=t1[2],
                l1=t1[1];
               if(h2 <= h1)
                {if(1 === h2)return add(v2,t1);
                 var
                  match$0=split(v1,match),
                  r2$0=match$0[3],
                  l2$0=match$0[1],
                  _uX_=union(r1,r2$0);
                 return join(union(l1,l2$0),v1,_uX_)}
               if(1 === h1)return add(v1,match);
               var
                match$1=split(v2,t1),
                r1$0=match$1[3],
                l1$0=match$1[1],
                _uY_=union(r1$0,r2);
               return join(union(l1$0,l2),v2,_uY_)}
             return t1}
           return match}
         function inter(s1,match)
          {if(s1)
            {if(match)
              {var
                r1=s1[3],
                v1=s1[2],
                l1=s1[1],
                _uT_=split(v1,match),
                _uU_=_uT_[1];
               if(_uT_[2])
                {var r2=_uT_[3],_uV_=inter(r1,r2);
                 return join(inter(l1,_uU_),v1,_uV_)}
               var r2$0=_uT_[3],_uW_=inter(r1,r2$0);
               return concat(inter(l1,_uU_),_uW_)}
             return 0}
           return 0}
         function split_bis(x,param)
          {if(param)
            {var r=param[3],v=param[2],l=param[1],c=caml_call2(Ord[1],x,v);
             if(0 === c)return 0;
             if(0 <= c)
              {var match=split_bis(x,r);
               if(match)
                {var rr=match[2],lr=match[1];return [0,join(l,v,lr),rr]}
               return 0}
             var match$0=split_bis(x,l);
             if(match$0)
              {var rl=match$0[2],ll=match$0[1];
               return [0,
                       ll,
                       function(param){return join(caml_call1(rl,0),v,r)}]}
             return 0}
           return [0,0,function(param){return 0}]}
         function disjoint(s1,s2)
          {var s1$0=s1,s2$0=s2;
           for(;;)
            {if(s1$0 && s2$0)
              {var r1=s1$0[3],v1=s1$0[2],l1=s1$0[1];
               if(s1$0 === s2$0)return 0;
               var match=split_bis(v1,s2$0);
               if(match)
                {var r2=match[2],l2=match[1],_uS_=disjoint(l1,l2);
                 if(_uS_)
                  {var s2$1=caml_call1(r2,0),s1$0=r1,s2$0=s2$1;continue}
                 return _uS_}
               return 0}
             return 1}}
         function diff(t1,match)
          {if(t1)
            {if(match)
              {var
                r1=t1[3],
                v1=t1[2],
                l1=t1[1],
                _uO_=split(v1,match),
                _uP_=_uO_[1];
               if(_uO_[2])
                {var r2=_uO_[3],_uQ_=diff(r1,r2);
                 return concat(diff(l1,_uP_),_uQ_)}
               var r2$0=_uO_[3],_uR_=diff(r1,r2$0);
               return join(diff(l1,_uP_),v1,_uR_)}
             return t1}
           return 0}
         function cons_enum(s,e)
          {var s$0=s,e$0=e;
           for(;;)
            {if(s$0)
              {var
                r=s$0[3],
                v=s$0[2],
                s$1=s$0[1],
                e$1=[0,v,r,e$0],
                s$0=s$1,
                e$0=e$1;
               continue}
             return e$0}}
         function compare(s1,s2)
          {var e2$2=cons_enum(s2,0),e1$2=cons_enum(s1,0),e1=e1$2,e2=e2$2;
           for(;;)
            {if(e1)
              {if(e2)
                {var
                  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)
                  {var
                    e2$1=cons_enum(r2,e2$0),
                    e1$1=cons_enum(r1,e1$0),
                    e1=e1$1,
                    e2=e2$1;
                   continue}
                 return c}
               return 1}
             return e2?-1:0}}
         function equal(s1,s2){return 0 === compare(s1,s2)?1:0}
         function subset(s1,s2)
          {var s1$0=s1,s2$0=s2;
           for(;;)
            {if(s1$0)
              {if(s2$0)
                {var
                  r2=s2$0[3],
                  v2=s2$0[2],
                  l2=s2$0[1],
                  r1=s1$0[3],
                  v1=s1$0[2],
                  l1=s1$0[1],
                  c=caml_call2(Ord[1],v1,v2);
                 if(0 === c)
                  {var _uL_=subset(l1,l2);
                   if(_uL_){var s1$0=r1,s2$0=r2;continue}
                   return _uL_}
                 if(0 <= c)
                  {var _uM_=subset([0,0,v1,r1,0],r2);
                   if(_uM_){var s1$0=l1;continue}
                   return _uM_}
                 var _uN_=subset([0,l1,v1,0,0],l2);
                 if(_uN_){var s1$0=r1;continue}
                 return _uN_}
               return 0}
             return 1}}
         function iter(f,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var r=param$0[3],v=param$0[2],l=param$0[1];
               iter(f,l);
               caml_call1(f,v);
               var param$0=r;
               continue}
             return 0}}
         function fold(f,s,accu)
          {var s$0=s,accu$0=accu;
           for(;;)
            {if(s$0)
              {var
                r=s$0[3],
                v=s$0[2],
                l=s$0[1],
                accu$1=caml_call2(f,v,fold(f,l,accu$0)),
                s$0=r,
                accu$0=accu$1;
               continue}
             return accu$0}}
         function for_all(p,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[3],
                v=param$0[2],
                l=param$0[1],
                _uI_=caml_call1(p,v);
               if(_uI_)
                {var _uJ_=for_all(p,l);
                 if(_uJ_){var param$0=r;continue}
                 var _uK_=_uJ_}
               else
                var _uK_=_uI_;
               return _uK_}
             return 1}}
         function exists(p,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[3],
                v=param$0[2],
                l=param$0[1],
                _uF_=caml_call1(p,v);
               if(_uF_)
                var _uG_=_uF_;
               else
                {var _uH_=exists(p,l);
                 if(! _uH_){var param$0=r;continue}
                 var _uG_=_uH_}
               return _uG_}
             return 0}}
         function filter(p,t)
          {if(t)
            {var
              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){if(l === l$0 && r === r$0)return t;return join(l$0,v,r$0)}
             return concat(l$0,r$0)}
           return 0}
         function partition(p,param)
          {if(param)
            {var
              r=param[3],
              v=param[2],
              l=param[1],
              match=partition(p,l),
              lf=match[2],
              lt=match[1],
              pv=caml_call1(p,v),
              match$0=partition(p,r),
              rf=match$0[2],
              rt=match$0[1];
             if(pv){var _uD_=concat(lf,rf);return [0,join(lt,v,rt),_uD_]}
             var _uE_=join(lf,v,rf);
             return [0,concat(lt,rt),_uE_]}
           return _H_}
         function cardinal(param)
          {if(param)
            {var r=param[3],l=param[1],_uC_=cardinal(r);
             return (cardinal(l) + 1 | 0) + _uC_ | 0}
           return 0}
         function elements_aux(accu,param)
          {var accu$0=accu,param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[3],
                v=param$0[2],
                l=param$0[1],
                accu$1=[0,v,elements_aux(accu$0,r)],
                accu$0=accu$1,
                param$0=l;
               continue}
             return accu$0}}
         function elements(s){return elements_aux(0,s)}
         function find(x,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[3],
                v=param$0[2],
                l=param$0[1],
                c=caml_call2(Ord[1],x,v);
               if(0 === c)return v;
               var param$1=0 <= c?r:l,param$0=param$1;
               continue}
             throw Not_found}}
         function find_first(f,param$0)
          {var param$1=param$0;
           for(;;)
            {if(param$1)
              {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1];
               if(caml_call1(f,v$0))
                {var v0=v$0,param=l$0;
                 for(;;)
                  {if(param)
                    {var r=param[3],v=param[2],l=param[1];
                     if(caml_call1(f,v)){var v0=v,param=l;continue}
                     var param=r;
                     continue}
                   return v0}}
               var param$1=r$0;
               continue}
             throw Not_found}}
         function find_first_opt(f,param$0)
          {var param$1=param$0;
           for(;;)
            {if(param$1)
              {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1];
               if(caml_call1(f,v$0))
                {var v0=v$0,param=l$0;
                 for(;;)
                  {if(param)
                    {var r=param[3],v=param[2],l=param[1];
                     if(caml_call1(f,v)){var v0=v,param=l;continue}
                     var param=r;
                     continue}
                   return [0,v0]}}
               var param$1=r$0;
               continue}
             return 0}}
         function find_last(f,param$0)
          {var param$1=param$0;
           for(;;)
            {if(param$1)
              {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1];
               if(caml_call1(f,v$0))
                {var v0=v$0,param=r$0;
                 for(;;)
                  {if(param)
                    {var r=param[3],v=param[2],l=param[1];
                     if(caml_call1(f,v)){var v0=v,param=r;continue}
                     var param=l;
                     continue}
                   return v0}}
               var param$1=l$0;
               continue}
             throw Not_found}}
         function find_last_opt(f,param$0)
          {var param$1=param$0;
           for(;;)
            {if(param$1)
              {var r$0=param$1[3],v$0=param$1[2],l$0=param$1[1];
               if(caml_call1(f,v$0))
                {var v0=v$0,param=r$0;
                 for(;;)
                  {if(param)
                    {var r=param[3],v=param[2],l=param[1];
                     if(caml_call1(f,v)){var v0=v,param=r;continue}
                     var param=l;
                     continue}
                   return [0,v0]}}
               var param$1=l$0;
               continue}
             return 0}}
         function find_opt(x,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[3],
                v=param$0[2],
                l=param$0[1],
                c=caml_call2(Ord[1],x,v);
               if(0 === c)return [0,v];
               var param$1=0 <= c?r:l,param$0=param$1;
               continue}
             return 0}}
         function map(f,t)
          {if(t)
            {var
              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;
             var switch$0=0;
             if(0 !== l$0)
              {var _uB_=max_elt(l$0);
               if(0 <= caml_call2(Ord[1],_uB_,v$0))switch$0 = 1}
             if(! switch$0)
              {var switch$1=0;
               if(0 !== r$0)
                {var _uA_=min_elt(r$0);
                 if(0 <= caml_call2(Ord[1],v$0,_uA_))switch$1 = 1}
               if(! switch$1)return join(l$0,v$0,r$0)}
             return union(l$0,add(v$0,r$0))}
           return 0}
         function of_list(l)
          {if(l)
            {var _up_=l[2],_uq_=l[1];
             if(_up_)
              {var _ur_=_up_[2],_us_=_up_[1];
               if(_ur_)
                {var _ut_=_ur_[2],_uu_=_ur_[1];
                 if(_ut_)
                  {var _uv_=_ut_[2],_uw_=_ut_[1];
                   if(_uv_)
                    {if(_uv_[2])
                      {var
                        l$0=sort_uniq(Ord[1],l),
                        sub=
                         function(n,l)
                          {if(! (3 < n >>> 0))
                            switch(n)
                             {case 0:return [0,0,l];
                              case 1:
                               if(l){var l$3=l[2],x0=l[1];return [0,[0,0,x0,0,1],l$3]}
                               break;
                              case 2:
                               if(l)
                                {var _ux_=l[2];
                                 if(_ux_)
                                  {var l$4=_ux_[2],x1=_ux_[1],x0$0=l[1];
                                   return [0,[0,[0,0,x0$0,0,1],x1,0,2],l$4]}}
                               break;
                              default:
                               if(l)
                                {var _uy_=l[2];
                                 if(_uy_)
                                  {var _uz_=_uy_[2];
                                   if(_uz_)
                                    {var l$5=_uz_[2],x2=_uz_[1],x1$0=_uy_[1],x0$1=l[1];
                                     return [0,[0,[0,0,x0$1,0,1],x1$0,[0,0,x2,0,1],2],l$5]}}}}
                           var nl=n / 2 | 0,match=sub(nl,l),l$0=match[2],left=match[1];
                           if(l$0)
                            {var
                              l$1=l$0[2],
                              mid=l$0[1],
                              match$0=sub((n - nl | 0) - 1 | 0,l$1),
                              l$2=match$0[2],
                              right=match$0[1];
                             return [0,create(left,mid,right),l$2]}
                           throw [0,Assert_failure,_I_]};
                       return sub(length(l$0),l$0)[1]}
                     var x4=_uv_[1];
                     return add(x4,add(_uw_,add(_uu_,add(_us_,singleton(_uq_)))))}
                   return add(_uw_,add(_uu_,add(_us_,singleton(_uq_))))}
                 return add(_uu_,add(_us_,singleton(_uq_)))}
               return add(_us_,singleton(_uq_))}
             return singleton(_uq_)}
           return empty}
         function add_seq(i,m)
          {return fold_left(function(s,x){return add(x,s)},m,i)}
         function of_seq(i){return add_seq(i,empty)}
         function seq_of_enum(c,param)
          {if(c)
            {var rest=c[3],t=c[2],x=c[1],_un_=cons_enum(t,rest);
             return [0,x,function(_uo_){return seq_of_enum(_un_,_uo_)}]}
           return 0}
         function to_seq(c)
          {var _ul_=cons_enum(c,0);
           return function(_um_){return seq_of_enum(_ul_,_um_)}}
         function to_seq_from(low,s)
          {var s$0=s,c=0;
           for(;;)
            {if(s$0)
              {var r=s$0[3],v=s$0[2],l=s$0[1],n=caml_call2(Ord[1],v,low);
               if(0 !== n)
                {if(0 <= n){var c$0=[0,v,r,c],s$0=l,c=c$0;continue}
                 var s$0=r;
                 continue}
               var _uj_=[0,v,r,c]}
             else
              var _uj_=c;
             return function(_uk_){return seq_of_enum(_uj_,_uk_)}}}
         return [0,
                 empty,
                 is_empty,
                 mem,
                 add,
                 singleton,
                 remove,
                 union,
                 inter,
                 disjoint,
                 diff,
                 compare,
                 equal,
                 subset,
                 iter,
                 map,
                 fold,
                 for_all,
                 exists,
                 filter,
                 partition,
                 cardinal,
                 elements,
                 min_elt,
                 min_elt_opt,
                 max_elt,
                 max_elt_opt,
                 min_elt,
                 min_elt_opt,
                 split,
                 find,
                 find_opt,
                 find_first,
                 find_first_opt,
                 find_last,
                 find_last_opt,
                 of_list,
                 to_seq_from,
                 to_seq,
                 add_seq,
                 of_seq]}];
    caml_register_global(770,Stdlib_set,"Stdlib__set");
    var
     Stdlib_map=
      [0,
       function(Ord)
        {function height(param){if(param){var h=param[5];return h}return 0}
         function create(l,x,d,r)
          {var hl=height(l),hr=height(r),_ui_=hr <= hl?hl + 1 | 0:hr + 1 | 0;
           return [0,l,x,d,r,_ui_]}
         function singleton(x,d){return [0,0,x,d,0,1]}
         function bal(l,x,d,r)
          {if(l)var h=l[5],hl=h;else var hl=0;
           if(r)var h$0=r[5],hr=h$0;else var hr=0;
           if((hr + 2 | 0) < hl)
            {if(l)
              {var lr=l[4],ld=l[3],lv=l[2],ll=l[1],_ud_=height(lr);
               if(_ud_ <= height(ll))return create(ll,lv,ld,create(lr,x,d,r));
               if(lr)
                {var
                  lrr=lr[4],
                  lrd=lr[3],
                  lrv=lr[2],
                  lrl=lr[1],
                  _ue_=create(lrr,x,d,r);
                 return create(create(ll,lv,ld,lrl),lrv,lrd,_ue_)}
               return invalid_arg(cst_Map_bal)}
             return invalid_arg(cst_Map_bal$0)}
           if((hl + 2 | 0) < hr)
            {if(r)
              {var rr=r[4],rd=r[3],rv=r[2],rl=r[1],_uf_=height(rl);
               if(_uf_ <= height(rr))return create(create(l,x,d,rl),rv,rd,rr);
               if(rl)
                {var
                  rlr=rl[4],
                  rld=rl[3],
                  rlv=rl[2],
                  rll=rl[1],
                  _ug_=create(rlr,rv,rd,rr);
                 return create(create(l,x,d,rll),rlv,rld,_ug_)}
               return invalid_arg(cst_Map_bal$1)}
             return invalid_arg(cst_Map_bal$2)}
           var _uh_=hr <= hl?hl + 1 | 0:hr + 1 | 0;
           return [0,l,x,d,r,_uh_]}
         var empty=0;
         function is_empty(param){return param?0:1}
         function add(x,data,m)
          {if(m)
            {var 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?m:bal(l,v,d,rr)}
             var ll=add(x,data,l);
             return l === ll?m:bal(ll,v,d,r)}
           return [0,0,x,data,0,1]}
         function find(x,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[4],
                d=param$0[3],
                v=param$0[2],
                l=param$0[1],
                c=caml_call2(Ord[1],x,v);
               if(0 === c)return d;
               var param$1=0 <= c?r:l,param$0=param$1;
               continue}
             throw Not_found}}
         function find_first(f,param$0)
          {var param$1=param$0;
           for(;;)
            {if(param$1)
              {var
                r$0=param$1[4],
                d$0=param$1[3],
                v$0=param$1[2],
                l$0=param$1[1];
               if(caml_call1(f,v$0))
                {var v0=v$0,d0=d$0,param=l$0;
                 for(;;)
                  {if(param)
                    {var r=param[4],d=param[3],v=param[2],l=param[1];
                     if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue}
                     var param=r;
                     continue}
                   return [0,v0,d0]}}
               var param$1=r$0;
               continue}
             throw Not_found}}
         function find_first_opt(f,param$0)
          {var param$1=param$0;
           for(;;)
            {if(param$1)
              {var
                r$0=param$1[4],
                d$0=param$1[3],
                v$0=param$1[2],
                l$0=param$1[1];
               if(caml_call1(f,v$0))
                {var v0=v$0,d0=d$0,param=l$0;
                 for(;;)
                  {if(param)
                    {var r=param[4],d=param[3],v=param[2],l=param[1];
                     if(caml_call1(f,v)){var v0=v,d0=d,param=l;continue}
                     var param=r;
                     continue}
                   return [0,[0,v0,d0]]}}
               var param$1=r$0;
               continue}
             return 0}}
         function find_last(f,param$0)
          {var param$1=param$0;
           for(;;)
            {if(param$1)
              {var
                r$0=param$1[4],
                d$0=param$1[3],
                v$0=param$1[2],
                l$0=param$1[1];
               if(caml_call1(f,v$0))
                {var v0=v$0,d0=d$0,param=r$0;
                 for(;;)
                  {if(param)
                    {var r=param[4],d=param[3],v=param[2],l=param[1];
                     if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue}
                     var param=l;
                     continue}
                   return [0,v0,d0]}}
               var param$1=l$0;
               continue}
             throw Not_found}}
         function find_last_opt(f,param$0)
          {var param$1=param$0;
           for(;;)
            {if(param$1)
              {var
                r$0=param$1[4],
                d$0=param$1[3],
                v$0=param$1[2],
                l$0=param$1[1];
               if(caml_call1(f,v$0))
                {var v0=v$0,d0=d$0,param=r$0;
                 for(;;)
                  {if(param)
                    {var r=param[4],d=param[3],v=param[2],l=param[1];
                     if(caml_call1(f,v)){var v0=v,d0=d,param=r;continue}
                     var param=l;
                     continue}
                   return [0,[0,v0,d0]]}}
               var param$1=l$0;
               continue}
             return 0}}
         function find_opt(x,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[4],
                d=param$0[3],
                v=param$0[2],
                l=param$0[1],
                c=caml_call2(Ord[1],x,v);
               if(0 === c)return [0,d];
               var param$1=0 <= c?r:l,param$0=param$1;
               continue}
             return 0}}
         function mem(x,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[4],
                v=param$0[2],
                l=param$0[1],
                c=caml_call2(Ord[1],x,v),
                _uc_=0 === c?1:0;
               if(_uc_)return _uc_;
               var param$1=0 <= c?r:l,param$0=param$1;
               continue}
             return 0}}
         function min_binding(param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var _ub_=param$0[1];
               if(_ub_){var param$0=_ub_;continue}
               var d=param$0[3],v=param$0[2];
               return [0,v,d]}
             throw Not_found}}
         function min_binding_opt(param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var _ua_=param$0[1];
               if(_ua_){var param$0=_ua_;continue}
               var d=param$0[3],v=param$0[2];
               return [0,[0,v,d]]}
             return 0}}
         function max_binding(param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue}
               var d=param$0[3],v=param$0[2];
               return [0,v,d]}
             throw Not_found}}
         function max_binding_opt(param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {if(param$0[4]){var param$1=param$0[4],param$0=param$1;continue}
               var d=param$0[3],v=param$0[2];
               return [0,[0,v,d]]}
             return 0}}
         function remove_min_binding(param)
          {if(param)
            {var _t$_=param[1];
             if(_t$_)
              {var r=param[4],d=param[3],v=param[2];
               return bal(remove_min_binding(_t$_),v,d,r)}
             var r$0=param[4];
             return r$0}
           return invalid_arg(cst_Map_remove_min_elt)}
         function _tO_(t,match)
          {if(t)
            {if(match)
              {var match$0=min_binding(match),d=match$0[2],x=match$0[1];
               return bal(t,x,d,remove_min_binding(match))}
             return t}
           return match}
         function remove(x,m)
          {if(m)
            {var r=m[4],d=m[3],v=m[2],l=m[1],c=caml_call2(Ord[1],x,v);
             if(0 === c)return _tO_(l,r);
             if(0 <= c){var rr=remove(x,r);return r === rr?m:bal(l,v,d,rr)}
             var ll=remove(x,l);
             return l === ll?m:bal(ll,v,d,r)}
           return 0}
         function update(x,f,m)
          {if(m)
            {var 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)
              {var match=caml_call1(f,[0,d]);
               if(match)
                {var data=match[1];return d === data?m:[0,l,x,data,r,h]}
               return _tO_(l,r)}
             if(0 <= c){var rr=update(x,f,r);return r === rr?m:bal(l,v,d,rr)}
             var ll=update(x,f,l);
             return l === ll?m:bal(ll,v,d,r)}
           var match$0=caml_call1(f,0);
           if(match$0){var data$0=match$0[1];return [0,0,x,data$0,0,1]}
           return 0}
         function iter(f,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var r=param$0[4],d=param$0[3],v=param$0[2],l=param$0[1];
               iter(f,l);
               caml_call2(f,v,d);
               var param$0=r;
               continue}
             return 0}}
         function map(f,param)
          {if(param)
            {var
              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]}
           return 0}
         function mapi(f,param)
          {if(param)
            {var
              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]}
           return 0}
         function fold(f,m,accu)
          {var m$0=m,accu$0=accu;
           for(;;)
            {if(m$0)
              {var
                r=m$0[4],
                d=m$0[3],
                v=m$0[2],
                l=m$0[1],
                accu$1=caml_call3(f,v,d,fold(f,l,accu$0)),
                m$0=r,
                accu$0=accu$1;
               continue}
             return accu$0}}
         function for_all(p,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[4],
                d=param$0[3],
                v=param$0[2],
                l=param$0[1],
                _t8_=caml_call2(p,v,d);
               if(_t8_)
                {var _t9_=for_all(p,l);
                 if(_t9_){var param$0=r;continue}
                 var _t__=_t9_}
               else
                var _t__=_t8_;
               return _t__}
             return 1}}
         function exists(p,param)
          {var param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[4],
                d=param$0[3],
                v=param$0[2],
                l=param$0[1],
                _t5_=caml_call2(p,v,d);
               if(_t5_)
                var _t6_=_t5_;
               else
                {var _t7_=exists(p,l);
                 if(! _t7_){var param$0=r;continue}
                 var _t6_=_t7_}
               return _t6_}
             return 0}}
         function add_min_binding(k,x,param)
          {if(param)
            {var r=param[4],d=param[3],v=param[2],l=param[1];
             return bal(add_min_binding(k,x,l),v,d,r)}
           return singleton(k,x)}
         function add_max_binding(k,x,param)
          {if(param)
            {var r=param[4],d=param[3],v=param[2],l=param[1];
             return bal(l,v,d,add_max_binding(k,x,r))}
           return singleton(k,x)}
         function join(l,v,d,r)
          {if(l)
            {if(r)
              {var
                rh=r[5],
                rr=r[4],
                rd=r[3],
                rv=r[2],
                rl=r[1],
                lh=l[5],
                lr=l[4],
                ld=l[3],
                lv=l[2],
                ll=l[1];
               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)}
             return add_max_binding(v,d,l)}
           return add_min_binding(v,d,r)}
         function concat(t,match)
          {if(t)
            {if(match)
              {var match$0=min_binding(match),d=match$0[2],x=match$0[1];
               return join(t,x,d,remove_min_binding(match))}
             return t}
           return match}
         function concat_or_join(t1,v,d,t2)
          {if(d){var d$0=d[1];return join(t1,v,d$0,t2)}return concat(t1,t2)}
         function split(x,param)
          {if(param)
            {var
              r=param[4],
              d=param[3],
              v=param[2],
              l=param[1],
              c=caml_call2(Ord[1],x,v);
             if(0 === c)return [0,l,[0,d],r];
             if(0 <= c)
              {var match=split(x,r),rr=match[3],pres=match[2],lr=match[1];
               return [0,join(l,v,d,lr),pres,rr]}
             var
              match$0=split(x,l),
              rl=match$0[3],
              pres$0=match$0[2],
              ll=match$0[1];
             return [0,ll,pres$0,join(rl,v,d,r)]}
           return _J_}
         function merge(f,s1,s2)
          {if(s1)
            {var h1=s1[5],r1=s1[4],d1=s1[3],v1=s1[2],l1=s1[1];
             if(height(s2) <= h1)
              {var
                match=split(v1,s2),
                r2=match[3],
                d2=match[2],
                l2=match[1],
                _t1_=merge(f,r1,r2),
                _t2_=caml_call3(f,v1,[0,d1],d2);
               return concat_or_join(merge(f,l1,l2),v1,_t2_,_t1_)}}
           else
            if(! s2)return 0;
           if(s2)
            {var
              r2$0=s2[4],
              d2$0=s2[3],
              v2=s2[2],
              l2$0=s2[1],
              match$0=split(v2,s1),
              r1$0=match$0[3],
              d1$0=match$0[2],
              l1$0=match$0[1],
              _t3_=merge(f,r1$0,r2$0),
              _t4_=caml_call3(f,v2,d1$0,[0,d2$0]);
             return concat_or_join(merge(f,l1$0,l2$0),v2,_t4_,_t3_)}
           throw [0,Assert_failure,_K_]}
         function union(f,s1,s2)
          {if(s1)
            {if(s2)
              {var
                h2=s2[5],
                r2=s2[4],
                d2=s2[3],
                v2=s2[2],
                l2=s2[1],
                h1=s1[5],
                r1=s1[4],
                d1=s1[3],
                v1=s1[2],
                l1=s1[1];
               if(h2 <= h1)
                {var
                  match=split(v1,s2),
                  r2$0=match[3],
                  d2$0=match[2],
                  l2$0=match[1],
                  l=union(f,l1,l2$0),
                  r=union(f,r1,r2$0);
                 if(d2$0)
                  {var d2$1=d2$0[1];
                   return concat_or_join(l,v1,caml_call3(f,v1,d1,d2$1),r)}
                 return join(l,v1,d1,r)}
               var
                match$0=split(v2,s1),
                r1$0=match$0[3],
                d1$0=match$0[2],
                l1$0=match$0[1],
                l$0=union(f,l1$0,l2),
                r$0=union(f,r1$0,r2);
               if(d1$0)
                {var d1$1=d1$0[1];
                 return concat_or_join(l$0,v2,caml_call3(f,v2,d1$1,d2),r$0)}
               return join(l$0,v2,d2,r$0)}
             var s=s1}
           else
            var s=s2;
           return s}
         function filter(p,m)
          {if(m)
            {var
              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)
              {if(l === l$0 && r === r$0)return m;return join(l$0,v,d,r$0)}
             return concat(l$0,r$0)}
           return 0}
         function partition(p,param)
          {if(param)
            {var
              r=param[4],
              d=param[3],
              v=param[2],
              l=param[1],
              match=partition(p,l),
              lf=match[2],
              lt=match[1],
              pvd=caml_call2(p,v,d),
              match$0=partition(p,r),
              rf=match$0[2],
              rt=match$0[1];
             if(pvd){var _tZ_=concat(lf,rf);return [0,join(lt,v,d,rt),_tZ_]}
             var _t0_=join(lf,v,d,rf);
             return [0,concat(lt,rt),_t0_]}
           return _L_}
         function cons_enum(m,e)
          {var m$0=m,e$0=e;
           for(;;)
            {if(m$0)
              {var
                r=m$0[4],
                d=m$0[3],
                v=m$0[2],
                m$1=m$0[1],
                e$1=[0,v,d,r,e$0],
                m$0=m$1,
                e$0=e$1;
               continue}
             return e$0}}
         function compare(cmp,m1,m2)
          {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2;
           for(;;)
            {if(e1)
              {if(e2)
                {var
                  e2$0=e2[4],
                  r2=e2[3],
                  d2=e2[2],
                  v2=e2[1],
                  e1$0=e1[4],
                  r1=e1[3],
                  d1=e1[2],
                  v1=e1[1],
                  c=caml_call2(Ord[1],v1,v2);
                 if(0 === c)
                  {var c$0=caml_call2(cmp,d1,d2);
                   if(0 === c$0)
                    {var
                      e2$1=cons_enum(r2,e2$0),
                      e1$1=cons_enum(r1,e1$0),
                      e1=e1$1,
                      e2=e2$1;
                     continue}
                   return c$0}
                 return c}
               return 1}
             return e2?-1:0}}
         function equal(cmp,m1,m2)
          {var e2$2=cons_enum(m2,0),e1$2=cons_enum(m1,0),e1=e1$2,e2=e2$2;
           for(;;)
            {if(e1)
              {if(e2)
                {var
                  e2$0=e2[4],
                  r2=e2[3],
                  d2=e2[2],
                  v2=e2[1],
                  e1$0=e1[4],
                  r1=e1[3],
                  d1=e1[2],
                  v1=e1[1],
                  _tW_=0 === caml_call2(Ord[1],v1,v2)?1:0;
                 if(_tW_)
                  {var _tX_=caml_call2(cmp,d1,d2);
                   if(_tX_)
                    {var
                      e2$1=cons_enum(r2,e2$0),
                      e1$1=cons_enum(r1,e1$0),
                      e1=e1$1,
                      e2=e2$1;
                     continue}
                   var _tY_=_tX_}
                 else
                  var _tY_=_tW_;
                 return _tY_}
               return 0}
             return e2?0:1}}
         function cardinal(param)
          {if(param)
            {var r=param[4],l=param[1],_tV_=cardinal(r);
             return (cardinal(l) + 1 | 0) + _tV_ | 0}
           return 0}
         function bindings_aux(accu,param)
          {var accu$0=accu,param$0=param;
           for(;;)
            {if(param$0)
              {var
                r=param$0[4],
                d=param$0[3],
                v=param$0[2],
                l=param$0[1],
                accu$1=[0,[0,v,d],bindings_aux(accu$0,r)],
                accu$0=accu$1,
                param$0=l;
               continue}
             return accu$0}}
         function bindings(s){return bindings_aux(0,s)}
         function add_seq(i,m)
          {return fold_left
                   (function(m,param)
                     {var v=param[2],k=param[1];return add(k,v,m)},
                    m,
                    i)}
         function of_seq(i){return add_seq(i,empty)}
         function seq_of_enum(c,param)
          {if(c)
            {var rest=c[4],t=c[3],v=c[2],k=c[1],_tT_=cons_enum(t,rest);
             return [0,[0,k,v],function(_tU_){return seq_of_enum(_tT_,_tU_)}]}
           return 0}
         function to_seq(m)
          {var _tR_=cons_enum(m,0);
           return function(_tS_){return seq_of_enum(_tR_,_tS_)}}
         function to_seq_from(low,m)
          {var m$0=m,c=0;
           for(;;)
            {if(m$0)
              {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)
                {if(0 <= n){var c$0=[0,v,d,r,c],m$0=l,c=c$0;continue}
                 var m$0=r;
                 continue}
               var _tP_=[0,v,d,r,c]}
             else
              var _tP_=c;
             return function(_tQ_){return seq_of_enum(_tP_,_tQ_)}}}
         return [0,
                 empty,
                 is_empty,
                 mem,
                 add,
                 update,
                 singleton,
                 remove,
                 merge,
                 union,
                 compare,
                 equal,
                 iter,
                 fold,
                 for_all,
                 exists,
                 filter,
                 partition,
                 cardinal,
                 bindings,
                 min_binding,
                 min_binding_opt,
                 max_binding,
                 max_binding_opt,
                 min_binding,
                 min_binding_opt,
                 split,
                 find,
                 find_opt,
                 find_first,
                 find_first_opt,
                 find_last,
                 find_last_opt,
                 map,
                 mapi,
                 to_seq,
                 to_seq_from,
                 add_seq,
                 of_seq]}];
    caml_register_global(771,Stdlib_map,"Stdlib__map");
    var Empty=[248,cst_Stdlib_Stack_Empty,caml_fresh_oo_id(0)];
    function create$0(param){return [0,0,0]}
    function clear(s){s[1] = 0;s[2] = 0;return 0}
    function copy$3(s){return [0,s[1],s[2]]}
    function push(x,s){s[1] = [0,x,s[1]];s[2] = s[2] + 1 | 0;return 0}
    function pop(s)
     {var _tN_=s[1];
      if(_tN_)
       {var tl=_tN_[2],hd=_tN_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return hd}
      throw Empty}
    function pop_opt(s)
     {var _tM_=s[1];
      if(_tM_)
       {var tl=_tM_[2],hd=_tM_[1];s[1] = tl;s[2] = s[2] - 1 | 0;return [0,hd]}
      return 0}
    function top(s)
     {var _tL_=s[1];if(_tL_){var hd=_tL_[1];return hd}throw Empty}
    function top_opt(s)
     {var _tK_=s[1];if(_tK_){var hd=_tK_[1];return [0,hd]}return 0}
    function is_empty(s){return 0 === s[1]?1:0}
    function length$1(s){return s[2]}
    function iter$7(f,s){return iter$2(f,s[1])}
    function fold$1(f,acc,s){return fold_left$0(f,acc,s[1])}
    function to_seq$6(s){return to_seq$1(s[1])}
    function add_seq(q,i){return iter(function(x){return push(x,q)},i)}
    function of_seq$4(g){var s=create$0(0);add_seq(s,g);return s}
    var
     Stdlib_stack=
      [0,
       Empty,
       create$0,
       push,
       pop,
       pop_opt,
       top,
       top_opt,
       clear,
       copy$3,
       is_empty,
       length$1,
       iter$7,
       fold$1,
       to_seq$6,
       add_seq,
       of_seq$4];
    caml_register_global(772,Stdlib_stack,"Stdlib__stack");
    var Empty$0=[248,cst_Stdlib_Queue_Empty,caml_fresh_oo_id(0)];
    function create$1(param){return [0,0,0,0]}
    function clear$0(q){q[1] = 0;q[2] = 0;q[3] = 0;return 0}
    function add(x,q)
     {var cell=[0,x,0],_tJ_=q[3];
      return _tJ_
              ?(q[1] = q[1] + 1 | 0,_tJ_[2] = cell,q[3] = cell,0)
              :(q[1] = 1,q[2] = cell,q[3] = cell,0)}
    function peek(q)
     {var _tI_=q[2];if(_tI_){var content=_tI_[1];return content}throw Empty$0}
    function peek_opt(q)
     {var _tH_=q[2];if(_tH_){var content=_tH_[1];return [0,content]}return 0}
    function take(q)
     {var _tF_=q[2];
      if(_tF_)
       {var _tG_=_tF_[1];
        if(_tF_[2])
         {var next=_tF_[2];q[1] = q[1] - 1 | 0;q[2] = next;return _tG_}
        clear$0(q);
        return _tG_}
      throw Empty$0}
    function take_opt(q)
     {var _tD_=q[2];
      if(_tD_)
       {var _tE_=_tD_[1];
        if(_tD_[2])
         {var next=_tD_[2];q[1] = q[1] - 1 | 0;q[2] = next;return [0,_tE_]}
        clear$0(q);
        return [0,_tE_]}
      return 0}
    function copy$4(q)
     {var q_res=[0,q[1],0,0],prev=0,cell=q[2];
      for(;;)
       {if(cell)
         {var content=cell[1],next=cell[2],res=[0,content,0];
          if(prev)prev[2] = res;else q_res[2] = res;
          var prev=res,cell=next;
          continue}
        q_res[3] = prev;
        return q_res}}
    function is_empty$0(q){return 0 === q[1]?1:0}
    function length$2(q){return q[1]}
    function iter$8(f,q)
     {var cell=q[2];
      for(;;)
       {if(cell)
         {var content=cell[1],next=cell[2];
          caml_call1(f,content);
          var cell=next;
          continue}
        return 0}}
    function fold$2(f,accu$1,q)
     {var accu=accu$1,cell=q[2];
      for(;;)
       {if(cell)
         {var
           content=cell[1],
           next=cell[2],
           accu$0=caml_call2(f,accu,content),
           accu=accu$0,
           cell=next;
          continue}
        return accu}}
    function transfer(q1,q2)
     {var _tB_=0 < q1[1]?1:0;
      if(_tB_)
       {var _tC_=q2[3];
        return _tC_
                ?(q2[1]
                  =
                  q2[1]
                  +
                  q1[1]
                  |
                  0,
                  _tC_[2]
                  =
                  q1[2],
                  q2[3]
                  =
                  q1[3],
                  clear$0(q1))
                :(q2[1] = q1[1],q2[2] = q1[2],q2[3] = q1[3],clear$0(q1))}
      return _tB_}
    function to_seq$7(q)
     {function aux(c,param)
       {if(c)
         {var x=c[1],next=c[2];
          return [0,x,function(_tA_){return aux(next,_tA_)}]}
        return 0}
      var _ty_=q[2];
      return function(_tz_){return aux(_ty_,_tz_)}}
    function add_seq$0(q,i){return iter(function(x){return add(x,q)},i)}
    function of_seq$5(g){var q=create$1(0);add_seq$0(q,g);return q}
    var
     Stdlib_queue=
      [0,
       Empty$0,
       create$1,
       add,
       add,
       take,
       take_opt,
       take,
       peek,
       peek_opt,
       peek,
       clear$0,
       copy$4,
       is_empty$0,
       length$2,
       iter$8,
       fold$2,
       transfer,
       to_seq$7,
       add_seq$0,
       of_seq$5];
    caml_register_global(773,Stdlib_queue,"Stdlib__queue");
    var Undefined=[248,cst_CamlinternalLazy_Undefined,caml_fresh_oo_id(0)];
    function raise_undefined(param){throw Undefined}
    function force_lazy_block(blk)
     {var closure=blk[1];
      blk[1] = raise_undefined;
      try
       {var result=caml_call1(closure,0);
        caml_obj_make_forward(blk,result);
        return result}
      catch(e)
       {e = caml_wrap_exception(e);blk[1] = function(param){throw e};throw e}}
    function force_val_lazy_block(blk)
     {var closure=blk[1];
      blk[1] = raise_undefined;
      var result=caml_call1(closure,0);
      caml_obj_make_forward(blk,result);
      return result}
    function force(lzv)
     {var t=caml_obj_tag(lzv);
      return t === 250?lzv[1]:t !== 246?lzv:force_lazy_block(lzv)}
    function force_val(lzv)
     {var t=caml_obj_tag(lzv);
      return t === 250?lzv[1]:t !== 246?lzv:force_val_lazy_block(lzv)}
    var
     CamlinternalLazy=
      [0,Undefined,force_lazy_block,force_val_lazy_block,force,force_val];
    caml_register_global(774,CamlinternalLazy,"CamlinternalLazy");
    function from_fun(f){var x=caml_obj_block(246,1);x[1] = f;return x}
    function from_val(v)
     {var t=caml_obj_tag(v);
      if(t !== 250 && t !== 246 && t !== 253)return v;
      return runtime.caml_lazy_make_forward(v)}
    function is_val(l){return caml_obj_tag(l) !== 246?1:0}
    var
     Stdlib_lazy=
      [0,
       Undefined,
       force_val,
       from_fun,
       from_val,
       is_val,
       from_fun,
       from_val,
       is_val];
    caml_register_global(775,Stdlib_lazy,"Stdlib__lazy");
    var
     Failure$0=[248,cst_Stdlib_Stream_Failure,caml_fresh_oo_id(0)],
     Error=[248,cst_Stdlib_Stream_Error,caml_fresh_oo_id(0)];
    function count(param)
     {if(param){var match=param[1],count=match[1];return count}return 0}
    function data(param)
     {if(param){var match=param[1],data=match[2];return data}return 0}
    function fill_buff(b)
     {b[3] = input(b[1],b[2],0,caml_ml_bytes_length(b[2]));b[4] = 0;return 0}
    function get_data(count,d)
     {var d$0=d;
      for(;;)
       {if(typeof d$0 !== "number")
         switch(d$0[0])
          {case 1:
            var d2=d$0[2],d1=d$0[1],match=get_data(count,d1);
            if(typeof match === "number")
             {var d$0=d2;continue}
            else
             {if(0 === match[0])
               {var d11=match[2],a=match[1];return [0,a,[1,d11,d2]]}
              throw [0,Assert_failure,_M_]}
           case 2:
            var
             f=d$0[1],
             _tu_=caml_obj_tag(f),
             d$1=250 === _tu_?f[1]:246 === _tu_?force_lazy_block(f):f,
             d$0=d$1;
            continue;
           case 3:
            var _tv_=d$0[1],_tw_=_tv_[1];
            if(_tw_)
             {var _tx_=_tw_[1];
              if(_tx_){var a$0=_tx_[1];_tv_[1] = 0;return [0,a$0,d$0]}
              return 0}
            var match$0=caml_call1(_tv_[2],count);
            if(match$0){var a$1=match$0[1];return [0,a$1,d$0]}
            _tv_[1] = _N_;
            return 0;
           case 4:
            var b=d$0[1];
            if(b[3] <= b[4])fill_buff(b);
            if(0 === b[3])return 0;
            var r=caml_bytes_unsafe_get(b[2],b[4]);
            b[4] = b[4] + 1 | 0;
            return [0,r,d$0]
           }
        return d$0}}
    function peek_data(s)
     {for(;;)
       {var _tp_=s[2];
        if(typeof _tp_ === "number")
         return 0;
        else
         switch(_tp_[0])
          {case 0:var a=_tp_[1];return [0,a];
           case 1:
            var d=get_data(s[1],s[2]);
            if(typeof d === "number")
             return 0;
            else
             {if(0 === d[0]){var a$0=d[1];s[2] = d;return [0,a$0]}
              throw [0,Assert_failure,_O_]}
           case 2:
            var
             f=_tp_[1],
             _tq_=caml_obj_tag(f),
             _tr_=250 === _tq_?f[1]:246 === _tq_?force_lazy_block(f):f;
            s[2] = _tr_;
            continue;
           case 3:
            var _ts_=_tp_[1],_tt_=_ts_[1];
            if(_tt_){var a$1=_tt_[1];return a$1}
            var x=caml_call1(_ts_[2],s[1]);
            _ts_[1] = [0,x];
            return x;
           default:
            var b=_tp_[1];
            if(b[3] <= b[4])fill_buff(b);
            return 0 === b[3]
                    ?(s[2] = 0,0)
                    :[0,caml_bytes_unsafe_get(b[2],b[4])]}}}
    function peek$0(param)
     {if(param){var s=param[1];return peek_data(s)}return 0}
    function junk_data(s)
     {for(;;)
       {var _tn_=s[2];
        if(typeof _tn_ !== "number")
         switch(_tn_[0])
          {case 0:var d=_tn_[2];s[1] = s[1] + 1 | 0;s[2] = d;return 0;
           case 3:
            var _to_=_tn_[1];
            if(_to_[1]){s[1] = s[1] + 1 | 0;_to_[1] = 0;return 0}
            break;
           case 4:
            var b=_tn_[1];
            if(b[3] <= b[4])fill_buff(b);
            return 0 === b[3]
                    ?(s[2] = 0,0)
                    :(s[1] = s[1] + 1 | 0,b[4] = b[4] + 1 | 0,0)
           }
        var match=peek_data(s);
        if(match)continue;
        return 0}}
    function junk(param)
     {if(param){var data=param[1];return junk_data(data)}return 0}
    function nget_data(n,s)
     {if(0 < n)
       {var match=peek_data(s);
        if(match)
         {var a=match[1];
          junk_data(s);
          var
           match$0=nget_data(n - 1 | 0,s),
           k=match$0[3],
           d=match$0[2],
           al=match$0[1];
          return [0,[0,a,al],[0,a,d],k + 1 | 0]}
        return [0,0,s[2],0]}
      return [0,0,s[2],0]}
    function npeek(n,param)
     {if(param)
       {var
         d$0=param[1],
         match=nget_data(n,d$0),
         len=match[3],
         d=match[2],
         al=match[1];
        d$0[1] = d$0[1] - len | 0;
        d$0[2] = d;
        return al}
      return 0}
    function next(s)
     {var match=peek$0(s);
      if(match){var a=match[1];junk(s);return a}
      throw Failure$0}
    function empty$1(s){var match=peek$0(s);if(match)throw Failure$0;return 0}
    function iter$9(f,strm)
     {for(;;)
       {var match=peek$0(strm);
        if(match){var a=match[1];junk(strm);caml_call1(f,a);continue}
        return 0}}
    function from(f){return [0,[0,0,[3,[0,0,f]]]]}
    function of_list$1(l)
     {var _tm_=0;
      return [0,[0,0,fold_right(function(x,l){return [0,x,l]},l,_tm_)]]}
    function of_string$0(s)
     {var count=[0,0];
      return from
              (function(param)
                {var c=count[1];
                 return c < caml_ml_string_length(s)
                         ?(count[1]++,[0,caml_string_get(s,c)])
                         :0})}
    function of_bytes(s)
     {var count=[0,0];
      return from
              (function(param)
                {var c=count[1];
                 return c < caml_ml_bytes_length(s)
                         ?(count[1]++,[0,caml_bytes_get(s,c)])
                         :0})}
    function of_channel(ic)
     {return [0,[0,0,[4,[0,ic,caml_create_bytes(4096),0,0]]]]}
    function iapp(i,s){var _tl_=data(s);return [0,[0,0,[1,data(i),_tl_]]]}
    function icons(i,s){return [0,[0,0,[0,i,data(s)]]]}
    function ising(i){return [0,[0,0,[0,i,0]]]}
    function lapp(f,s)
     {return [0,
              [0,
               0,
               [2,
                [246,
                 function(_tj_)
                  {var _tk_=data(s);return [1,data(caml_call1(f,0)),_tk_]}]]]]}
    function lcons(f,s)
     {return [0,
              [0,
               0,
               [2,
                [246,
                 function(_th_)
                  {var _ti_=data(s);return [0,caml_call1(f,0),_ti_]}]]]]}
    function lsing(f)
     {return [0,[0,0,[2,[246,function(_tg_){return [0,caml_call1(f,0),0]}]]]]}
    var sempty=0;
    function slazy(f)
     {return [0,[0,0,[2,[246,function(_tf_){return data(caml_call1(f,0))}]]]]}
    function dump(f,s)
     {print_string(cst_count);
      print_int(count(s));
      print_string(cst_data);
      dump_data(f,data(s));
      print_string(cst$6);
      return print_newline(0)}
    function dump_data(f,param)
     {if(typeof param === "number")
       return print_string(cst_Sempty);
      else
       switch(param[0])
        {case 0:
          var d=param[2],a=param[1];
          print_string(cst_Scons);
          caml_call1(f,a);
          print_string(cst$7);
          dump_data(f,d);
          return print_string(cst$8);
         case 1:
          var d2=param[2],d1=param[1];
          print_string(cst_Sapp);
          dump_data(f,d1);
          print_string(cst$9);
          dump_data(f,d2);
          return print_string(cst$10);
         case 2:return print_string(cst_Slazy);
         case 3:return print_string(cst_Sgen);
         default:return print_string(cst_Sbuffio)}}
    var
     Stdlib_stream=
      [0,
       Failure$0,
       Error,
       from,
       of_list$1,
       of_string$0,
       of_bytes,
       of_channel,
       iter$9,
       next,
       empty$1,
       peek$0,
       junk,
       count,
       npeek,
       iapp,
       icons,
       ising,
       lapp,
       lcons,
       lsing,
       sempty,
       slazy,
       dump];
    caml_register_global(776,Stdlib_stream,"Stdlib__stream");
    function create$2(n)
     {var
       n$0=1 <= n?n:1,
       n$1=max_string_length < n$0?max_string_length:n$0,
       s=caml_create_bytes(n$1);
      return [0,s,0,n$1,s]}
    function contents(b){return sub_string(b[1],0,b[2])}
    function to_bytes(b){return sub(b[1],0,b[2])}
    function sub$3(b,ofs,len)
     {if(0 <= ofs && 0 <= len && ! ((b[2] - len | 0) < ofs))
       return sub_string(b[1],ofs,len);
      return invalid_arg(cst_Buffer_sub)}
    function blit$3(src,srcoff,dst,dstoff,len)
     {if
       (0
        <=
        len
        &&
        0
        <=
        srcoff
        &&
        !
        ((src[2] - len | 0) < srcoff)
        &&
        0
        <=
        dstoff
        &&
        !
        ((caml_ml_bytes_length(dst) - len | 0) < dstoff))
       return caml_blit_bytes(src[1],srcoff,dst,dstoff,len);
      return invalid_arg(cst_Buffer_blit)}
    function nth$0(b,ofs)
     {if(0 <= ofs && ! (b[2] <= ofs))return caml_bytes_unsafe_get(b[1],ofs);
      return invalid_arg(cst_Buffer_nth)}
    function length$3(b){return b[2]}
    function clear$1(b){b[2] = 0;return 0}
    function reset(b)
     {b[2] = 0;b[1] = b[4];b[3] = caml_ml_bytes_length(b[1]);return 0}
    function resize(b,more)
     {var old_pos=b[2],old_len=b[3],new_len=[0,old_len];
      for(;;)
       {if(new_len[1] < (old_pos + more | 0))
         {new_len[1] = 2 * new_len[1] | 0;continue}
        if(max_string_length < new_len[1])
         if((old_pos + more | 0) <= max_string_length)
          new_len[1] = max_string_length;
         else
          failwith(cst_Buffer_add_cannot_grow_buf);
        var new_buffer=caml_create_bytes(new_len[1]);
        blit(b[1],0,new_buffer,0,b[2]);
        b[1] = new_buffer;
        b[3] = new_len[1];
        if((b[2] + more | 0) <= b[3])
         {if((old_pos + more | 0) <= b[3])return 0;
          throw [0,Assert_failure,_P_]}
        throw [0,Assert_failure,_Q_]}}
    function add_char(b,c)
     {var pos=b[2];
      if(b[3] <= pos)resize(b,1);
      caml_bytes_unsafe_set(b[1],pos,c);
      b[2] = pos + 1 | 0;
      return 0}
    function add_utf_8_uchar(b,u)
     {if(0 <= u)
       {if(127 < u)
         {if(2047 < u)
           {if(65535 < u)
             {if(1114111 < u)throw [0,Assert_failure,_R_];
              var pos=b[2];
              if(b[3] < (pos + 4 | 0))resize(b,4);
              caml_bytes_unsafe_set(b[1],pos,240 | u >>> 18 | 0);
              caml_bytes_unsafe_set
               (b[1],pos + 1 | 0,128 | (u >>> 12 | 0) & 63);
              caml_bytes_unsafe_set(b[1],pos + 2 | 0,128 | (u >>> 6 | 0) & 63);
              caml_bytes_unsafe_set(b[1],pos + 3 | 0,128 | u & 63);
              b[2] = pos + 4 | 0;
              return 0}
            var pos$0=b[2];
            if(b[3] < (pos$0 + 3 | 0))resize(b,3);
            caml_bytes_unsafe_set(b[1],pos$0,224 | u >>> 12 | 0);
            caml_bytes_unsafe_set(b[1],pos$0 + 1 | 0,128 | (u >>> 6 | 0) & 63);
            caml_bytes_unsafe_set(b[1],pos$0 + 2 | 0,128 | u & 63);
            b[2] = pos$0 + 3 | 0;
            return 0}
          var pos$1=b[2];
          if(b[3] < (pos$1 + 2 | 0))resize(b,2);
          caml_bytes_unsafe_set(b[1],pos$1,192 | u >>> 6 | 0);
          caml_bytes_unsafe_set(b[1],pos$1 + 1 | 0,128 | u & 63);
          b[2] = pos$1 + 2 | 0;
          return 0}
        return add_char(b,u)}
      throw [0,Assert_failure,_S_]}
    function add_utf_16be_uchar(b,u)
     {if(0 <= u)
       {if(65535 < u)
         {if(1114111 < u)throw [0,Assert_failure,_T_];
          var
           u$0=u - 65536 | 0,
           hi=55296 | u$0 >>> 10 | 0,
           lo=56320 | u$0 & 1023,
           pos=b[2];
          if(b[3] < (pos + 4 | 0))resize(b,4);
          caml_bytes_unsafe_set(b[1],pos,hi >>> 8 | 0);
          caml_bytes_unsafe_set(b[1],pos + 1 | 0,hi & 255);
          caml_bytes_unsafe_set(b[1],pos + 2 | 0,lo >>> 8 | 0);
          caml_bytes_unsafe_set(b[1],pos + 3 | 0,lo & 255);
          b[2] = pos + 4 | 0;
          return 0}
        var pos$0=b[2];
        if(b[3] < (pos$0 + 2 | 0))resize(b,2);
        caml_bytes_unsafe_set(b[1],pos$0,u >>> 8 | 0);
        caml_bytes_unsafe_set(b[1],pos$0 + 1 | 0,u & 255);
        b[2] = pos$0 + 2 | 0;
        return 0}
      throw [0,Assert_failure,_U_]}
    function add_utf_16le_uchar(b,u)
     {if(0 <= u)
       {if(65535 < u)
         {if(1114111 < u)throw [0,Assert_failure,_V_];
          var
           u$0=u - 65536 | 0,
           hi=55296 | u$0 >>> 10 | 0,
           lo=56320 | u$0 & 1023,
           pos=b[2];
          if(b[3] < (pos + 4 | 0))resize(b,4);
          caml_bytes_unsafe_set(b[1],pos,hi & 255);
          caml_bytes_unsafe_set(b[1],pos + 1 | 0,hi >>> 8 | 0);
          caml_bytes_unsafe_set(b[1],pos + 2 | 0,lo & 255);
          caml_bytes_unsafe_set(b[1],pos + 3 | 0,lo >>> 8 | 0);
          b[2] = pos + 4 | 0;
          return 0}
        var pos$0=b[2];
        if(b[3] < (pos$0 + 2 | 0))resize(b,2);
        caml_bytes_unsafe_set(b[1],pos$0,u & 255);
        caml_bytes_unsafe_set(b[1],pos$0 + 1 | 0,u >>> 8 | 0);
        b[2] = pos$0 + 2 | 0;
        return 0}
      throw [0,Assert_failure,_W_]}
    function add_substring(b,s,offset,len)
     {var _tc_=offset < 0?1:0;
      if(_tc_)
       var _td_=_tc_;
      else
       var
        _te_=len < 0?1:0,
        _td_=_te_ || ((caml_ml_string_length(s) - len | 0) < offset?1:0);
      if(_td_)invalid_arg(cst_Buffer_add_substring_add_s);
      var new_position=b[2] + len | 0;
      if(b[3] < new_position)resize(b,len);
      caml_blit_string(s,offset,b[1],b[2],len);
      b[2] = new_position;
      return 0}
    function add_subbytes(b,s,offset,len)
     {return add_substring(b,caml_string_of_bytes(s),offset,len)}
    function add_string(b,s)
     {var len=caml_ml_string_length(s),new_position=b[2] + len | 0;
      if(b[3] < new_position)resize(b,len);
      caml_blit_string(s,0,b[1],b[2],len);
      b[2] = new_position;
      return 0}
    function add_bytes(b,s){return add_string(b,caml_string_of_bytes(s))}
    function add_buffer(b,bs){return add_subbytes(b,bs[1],0,bs[2])}
    function add_channel(b,ic,len)
     {var _ta_=len < 0?1:0,_tb_=_ta_ || (max_string_length < len?1:0);
      if(_tb_)invalid_arg(cst_Buffer_add_channel);
      if(b[3] < (b[2] + len | 0))resize(b,len);
      var already_read=0,ofs=b[2],to_read=len,_s$_=b[1];
      for(;;)
       {if(0 !== to_read)
         {var r=input(ic,_s$_,ofs,to_read);
          if(0 !== r)
           {var
             already_read$0=already_read + r | 0,
             ofs$0=ofs + r | 0,
             to_read$0=to_read - r | 0,
             already_read=already_read$0,
             ofs=ofs$0,
             to_read=to_read$0;
            continue}}
        if((b[2] + already_read | 0) <= b[3])
         {b[2] = b[2] + already_read | 0;
          if(already_read < len)throw End_of_file;
          return 0}
        throw [0,Assert_failure,_X_]}}
    function output_buffer(oc,b){return output(oc,b[1],0,b[2])}
    function add_substitute(b,f,s)
     {var lim$1=caml_ml_string_length(s),previous=32,i$7=0;
      for(;;)
       {if(i$7 < lim$1)
         {var current=caml_string_get(s,i$7);
          if(36 === current)
           {if(92 === previous)
             {add_char(b,current);
              var i$8=i$7 + 1 | 0,previous=32,i$7=i$8;
              continue}
            var start=i$7 + 1 | 0;
            if(lim$1 <= start)throw Not_found;
            var opening=caml_string_get(s,start),switch$0=0;
            if(40 !== opening && 123 !== opening)
             {var i$6=start + 1 | 0,lim$0=caml_ml_string_length(s),i$3=i$6;
              for(;;)
               {if(lim$0 <= i$3)
                 var stop=lim$0;
                else
                 {var match=caml_string_get(s,i$3),switch$1=0;
                  if(91 <= match)
                   {if(97 <= match)
                     {if(! (123 <= match))switch$1 = 1}
                    else
                     if(95 === match)switch$1 = 1}
                  else
                   if(58 <= match)
                    {if(65 <= match)switch$1 = 1}
                   else
                    if(48 <= match)switch$1 = 1;
                  if(switch$1){var i$4=i$3 + 1 | 0,i$3=i$4;continue}
                  var stop=i$3}
                var match$0=[0,sub$0(s,start,stop - start | 0),stop];
                switch$0 = 1;
                break}}
            if(! switch$0)
             {var i$5=start + 1 | 0,k$2=0;
              if(40 === opening)
               var _s9_=41;
              else
               {if(123 !== opening)throw [0,Assert_failure,_Y_];var _s9_=125}
              var lim=caml_ml_string_length(s),k=k$2,i=i$5;
              for(;;)
               {if(lim <= i)throw Not_found;
                if(caml_string_get(s,i) === opening)
                 {var i$0=i + 1 | 0,k$0=k + 1 | 0,k=k$0,i=i$0;continue}
                if(caml_string_get(s,i) !== _s9_)
                 {var i$2=i + 1 | 0,i=i$2;continue}
                if(0 !== k)
                 {var i$1=i + 1 | 0,k$1=k - 1 | 0,k=k$1,i=i$1;continue}
                var
                 match$0=
                  [0,sub$0(s,i$5,(i - start | 0) - 1 | 0),i + 1 | 0];
                break}}
            var next_i=match$0[2],ident=match$0[1];
            add_string(b,caml_call1(f,ident));
            var previous=32,i$7=next_i;
            continue}
          if(92 === previous)
           {add_char(b,92);
            add_char(b,current);
            var i$9=i$7 + 1 | 0,previous=32,i$7=i$9;
            continue}
          if(92 === current)
           {var i$10=i$7 + 1 | 0,previous=current,i$7=i$10;continue}
          add_char(b,current);
          var i$11=i$7 + 1 | 0,previous=current,i$7=i$11;
          continue}
        var _s__=92 === previous?1:0;
        return _s__?add_char(b,previous):_s__}}
    function truncate(b,len)
     {if(0 <= len && ! (b[2] < len)){b[2] = len;return 0}
      return invalid_arg(cst_Buffer_truncate)}
    function to_seq$8(b)
     {function aux(i,param)
       {if(b[2] <= i)return 0;
        var x=caml_bytes_unsafe_get(b[1],i),_s7_=i + 1 | 0;
        return [0,x,function(_s8_){return aux(_s7_,_s8_)}]}
      var _s5_=0;
      return function(_s6_){return aux(_s5_,_s6_)}}
    function to_seqi$3(b)
     {function aux(i,param)
       {if(b[2] <= i)return 0;
        var x=caml_bytes_unsafe_get(b[1],i),_s3_=i + 1 | 0;
        return [0,[0,i,x],function(_s4_){return aux(_s3_,_s4_)}]}
      var _s1_=0;
      return function(_s2_){return aux(_s1_,_s2_)}}
    function add_seq$1(b,seq)
     {return iter(function(_s0_){return add_char(b,_s0_)},seq)}
    function of_seq$6(i){var b=create$2(32);add_seq$1(b,i);return b}
    function add_int8(b,x)
     {var new_position=b[2] + 1 | 0;
      if(b[3] < new_position)resize(b,1);
      caml_bytes_unsafe_set(b[1],b[2],x);
      b[2] = new_position;
      return 0}
    function add_int16_ne(b,x)
     {var new_position=b[2] + 2 | 0;
      if(b[3] < new_position)resize(b,2);
      caml_bytes_set16(b[1],b[2],x);
      b[2] = new_position;
      return 0}
    function add_int32_ne(b,x)
     {var new_position=b[2] + 4 | 0;
      if(b[3] < new_position)resize(b,4);
      caml_bytes_set32(b[1],b[2],x);
      b[2] = new_position;
      return 0}
    function add_int64_ne(b,x)
     {var new_position=b[2] + 8 | 0;
      if(b[3] < new_position)resize(b,8);
      caml_bytes_set64(b[1],b[2],x);
      b[2] = new_position;
      return 0}
    function add_int16_le(b,x){return add_int16_ne(b,x)}
    function add_int16_be(b,x)
     {var x$0=caml_bswap16(x);return add_int16_ne(b,x$0)}
    function add_int32_le(b,x){return add_int32_ne(b,x)}
    function add_int32_be(b,x)
     {var x$0=caml_int32_bswap(x);return add_int32_ne(b,x$0)}
    function add_int64_le(b,x){return add_int64_ne(b,x)}
    function add_int64_be(b,x)
     {var x$0=caml_int64_bswap(x);return add_int64_ne(b,x$0)}
    var
     Stdlib_buffer=
      [0,
       create$2,
       contents,
       to_bytes,
       sub$3,
       blit$3,
       nth$0,
       length$3,
       clear$1,
       reset,
       add_char,
       add_utf_8_uchar,
       add_utf_16le_uchar,
       add_utf_16be_uchar,
       add_string,
       add_bytes,
       add_substring,
       add_subbytes,
       add_substitute,
       add_buffer,
       add_channel,
       output_buffer,
       truncate,
       to_seq$8,
       to_seqi$3,
       add_seq$1,
       of_seq$6,
       add_int8,
       add_int8,
       add_int16_ne,
       add_int16_be,
       add_int16_le,
       add_int16_ne,
       add_int16_be,
       add_int16_le,
       add_int32_ne,
       add_int32_be,
       add_int32_le,
       add_int64_ne,
       add_int64_be,
       add_int64_le];
    caml_register_global(777,Stdlib_buffer,"Stdlib__buffer");
    function create_char_set(param){return make(32,0)}
    function add_in_char_set(char_set,c)
     {var str_ind=c >>> 3 | 0,mask=1 << (c & 7);
      return caml_bytes_set
              (char_set,
               str_ind,
               char_of_int(caml_bytes_get(char_set,str_ind) | mask))}
    function freeze_char_set(char_set){return to_string$1(char_set)}
    function rev_char_set(char_set)
     {var char_set$0=create_char_set(0),i=0;
      for(;;)
       {caml_bytes_set
         (char_set$0,i,char_of_int(caml_string_get(char_set,i) ^ 255));
        var _sZ_=i + 1 | 0;
        if(31 !== i){var i=_sZ_;continue}
        return caml_string_of_bytes(char_set$0)}}
    function is_in_char_set(char_set,c)
     {var str_ind=c >>> 3 | 0,mask=1 << (c & 7);
      return 0 !== (caml_string_get(char_set,str_ind) & mask)?1:0}
    function pad_of_pad_opt(pad_opt)
     {if(pad_opt){var width=pad_opt[1];return [0,1,width]}return 0}
    function param_format_of_ignored_format(ign,fmt)
     {if(typeof ign === "number")
       switch(ign)
        {case 0:return [0,[0,fmt]];
         case 1:return [0,[1,fmt]];
         case 2:return [0,[19,fmt]];
         default:return [0,[22,fmt]]}
      else
       switch(ign[0])
        {case 0:var pad_opt=ign[1];return [0,[2,pad_of_pad_opt(pad_opt),fmt]];
         case 1:
          var pad_opt$0=ign[1];return [0,[3,pad_of_pad_opt(pad_opt$0),fmt]];
         case 2:
          var pad_opt$1=ign[2],iconv=ign[1];
          return [0,[4,iconv,pad_of_pad_opt(pad_opt$1),0,fmt]];
         case 3:
          var pad_opt$2=ign[2],iconv$0=ign[1];
          return [0,[5,iconv$0,pad_of_pad_opt(pad_opt$2),0,fmt]];
         case 4:
          var pad_opt$3=ign[2],iconv$1=ign[1];
          return [0,[6,iconv$1,pad_of_pad_opt(pad_opt$3),0,fmt]];
         case 5:
          var pad_opt$4=ign[2],iconv$2=ign[1];
          return [0,[7,iconv$2,pad_of_pad_opt(pad_opt$4),0,fmt]];
         case 6:
          var prec_opt=ign[2],pad_opt$5=ign[1];
          if(prec_opt)var ndec=prec_opt[1],_sY_=[0,ndec];else var _sY_=0;
          return [0,[8,_Z_,pad_of_pad_opt(pad_opt$5),_sY_,fmt]];
         case 7:
          var pad_opt$6=ign[1];return [0,[9,pad_of_pad_opt(pad_opt$6),fmt]];
         case 8:
          var fmtty=ign[2],pad_opt$7=ign[1];
          return [0,[13,pad_opt$7,fmtty,fmt]];
         case 9:
          var fmtty$0=ign[2],pad_opt$8=ign[1];
          return [0,[14,pad_opt$8,fmtty$0,fmt]];
         case 10:
          var char_set=ign[2],width_opt=ign[1];
          return [0,[20,width_opt,char_set,fmt]];
         default:var counter=ign[1];return [0,[21,counter,fmt]]}}
    function default_float_precision(fconv){return 5 === fconv[2]?12:-6}
    function buffer_create(init_size)
     {return [0,0,caml_create_bytes(init_size)]}
    function buffer_check_size(buf,overhead)
     {var
       len=caml_ml_bytes_length(buf[2]),
       min_len=buf[1] + overhead | 0,
       _sW_=len < min_len?1:0;
      if(_sW_)
       {var
         new_len=max(len * 2 | 0,min_len),
         new_str=caml_create_bytes(new_len);
        blit(buf[2],0,new_str,0,len);
        buf[2] = new_str;
        var _sX_=0}
      else
       var _sX_=_sW_;
      return _sX_}
    function buffer_add_char(buf,c)
     {buffer_check_size(buf,1);
      caml_bytes_set(buf[2],buf[1],c);
      buf[1] = buf[1] + 1 | 0;
      return 0}
    function buffer_add_string(buf,s)
     {var str_len=caml_ml_string_length(s);
      buffer_check_size(buf,str_len);
      blit$0(s,0,buf[2],buf[1],str_len);
      buf[1] = buf[1] + str_len | 0;
      return 0}
    function buffer_contents(buf){return sub_string(buf[2],0,buf[1])}
    function char_of_iconv(iconv)
     {switch(iconv)
       {case 6:
        case 7:return 120;
        case 8:
        case 9:return 88;
        case 10:
        case 11:return 111;
        case 12:
        case 15:return 117;
        case 0:
        case 1:
        case 2:
        case 13:return 100;
        default:return 105}}
    function char_of_fconv(opt,fconv)
     {if(opt)var sth=opt[1],cF=sth;else var cF=70;
      switch(fconv[2])
       {case 0:return 102;
        case 1:return 101;
        case 2:return 69;
        case 3:return 103;
        case 4:return 71;
        case 5:return cF;
        case 6:return 104;
        case 7:return 72;
        default:return 70}}
    function bprint_padty(buf,padty)
     {switch(padty)
       {case 0:return buffer_add_char(buf,45);
        case 1:return 0;
        default:return buffer_add_char(buf,48)}}
    function bprint_ignored_flag(buf,ign_flag)
     {return ign_flag?buffer_add_char(buf,95):ign_flag}
    function bprint_pad_opt(buf,pad_opt)
     {if(pad_opt)
       {var width=pad_opt[1];
        return buffer_add_string(buf,caml_string_of_jsbytes("" + width))}
      return 0}
    function bprint_padding(buf,pad)
     {if(typeof pad === "number")
       return 0;
      else
       {if(0 === pad[0])
         {var n=pad[2],padty=pad[1];
          bprint_padty(buf,padty);
          return buffer_add_string(buf,caml_string_of_jsbytes("" + n))}
        var padty$0=pad[1];
        bprint_padty(buf,padty$0);
        return buffer_add_char(buf,42)}}
    function bprint_precision(buf,prec)
     {if(typeof prec === "number")return prec?buffer_add_string(buf,cst$11):0;
      var n=prec[1];
      buffer_add_char(buf,46);
      return buffer_add_string(buf,caml_string_of_jsbytes("" + n))}
    function bprint_iconv_flag(buf,iconv)
     {switch(iconv)
       {case 1:
        case 4:return buffer_add_char(buf,43);
        case 2:
        case 5:return buffer_add_char(buf,32);
        case 7:
        case 9:
        case 11:
        case 13:
        case 14:
        case 15:return buffer_add_char(buf,35);
        default:return 0}}
    function bprint_altint_fmt(buf,ign_flag,iconv,pad,prec,c)
     {buffer_add_char(buf,37);
      bprint_ignored_flag(buf,ign_flag);
      bprint_iconv_flag(buf,iconv);
      bprint_padding(buf,pad);
      bprint_precision(buf,prec);
      buffer_add_char(buf,c);
      return buffer_add_char(buf,char_of_iconv(iconv))}
    function bprint_fconv_flag(buf,fconv)
     {switch(fconv[1])
       {case 0:break;
        case 1:buffer_add_char(buf,43);break;
        default:buffer_add_char(buf,32)}
      return 8 <= fconv[2]?buffer_add_char(buf,35):0}
    function string_of_formatting_lit(formatting_lit)
     {if(typeof formatting_lit === "number")
       switch(formatting_lit)
        {case 0:return cst$12;
         case 1:return cst$13;
         case 2:return cst$14;
         case 3:return cst$15;
         case 4:return cst$16;
         case 5:return cst$17;
         default:return cst$18}
      else
       switch(formatting_lit[0])
        {case 0:var str=formatting_lit[1];return str;
         case 1:var str$0=formatting_lit[1];return str$0;
         default:var c=formatting_lit[1];return symbol(cst$19,make$0(1,c))}}
    function bprint_char_literal(buf,chr)
     {return 37 === chr?buffer_add_string(buf,cst$20):buffer_add_char(buf,chr)}
    function bprint_string_literal(buf,str)
     {var _sU_=caml_ml_string_length(str) - 1 | 0,_sT_=0;
      if(! (_sU_ < 0))
       {var i=_sT_;
        for(;;)
         {bprint_char_literal(buf,caml_string_get(str,i));
          var _sV_=i + 1 | 0;
          if(_sU_ !== i){var i=_sV_;continue}
          break}}
      return 0}
    function bprint_fmtty(buf,fmtty)
     {var fmtty$0=fmtty;
      for(;;)
       if(typeof fmtty$0 === "number")
        return 0;
       else
        switch(fmtty$0[0])
         {case 0:
           var rest=fmtty$0[1];
           buffer_add_string(buf,cst_c);
           var fmtty$0=rest;
           continue;
          case 1:
           var rest$0=fmtty$0[1];
           buffer_add_string(buf,cst_s);
           var fmtty$0=rest$0;
           continue;
          case 2:
           var rest$1=fmtty$0[1];
           buffer_add_string(buf,cst_i);
           var fmtty$0=rest$1;
           continue;
          case 3:
           var rest$2=fmtty$0[1];
           buffer_add_string(buf,cst_li);
           var fmtty$0=rest$2;
           continue;
          case 4:
           var rest$3=fmtty$0[1];
           buffer_add_string(buf,cst_ni);
           var fmtty$0=rest$3;
           continue;
          case 5:
           var rest$4=fmtty$0[1];
           buffer_add_string(buf,cst_Li);
           var fmtty$0=rest$4;
           continue;
          case 6:
           var rest$5=fmtty$0[1];
           buffer_add_string(buf,cst_f);
           var fmtty$0=rest$5;
           continue;
          case 7:
           var rest$6=fmtty$0[1];
           buffer_add_string(buf,cst_B);
           var fmtty$0=rest$6;
           continue;
          case 8:
           var rest$7=fmtty$0[2],sub_fmtty=fmtty$0[1];
           buffer_add_string(buf,cst$21);
           bprint_fmtty(buf,sub_fmtty);
           buffer_add_string(buf,cst$22);
           var fmtty$0=rest$7;
           continue;
          case 9:
           var rest$8=fmtty$0[3],sub_fmtty$0=fmtty$0[1];
           buffer_add_string(buf,cst$23);
           bprint_fmtty(buf,sub_fmtty$0);
           buffer_add_string(buf,cst$24);
           var fmtty$0=rest$8;
           continue;
          case 10:
           var rest$9=fmtty$0[1];
           buffer_add_string(buf,cst_a);
           var fmtty$0=rest$9;
           continue;
          case 11:
           var rest$10=fmtty$0[1];
           buffer_add_string(buf,cst_t$0);
           var fmtty$0=rest$10;
           continue;
          case 12:
           var rest$11=fmtty$0[1];
           buffer_add_string(buf,cst$25);
           var fmtty$0=rest$11;
           continue;
          case 13:
           var rest$12=fmtty$0[1];
           buffer_add_string(buf,cst_r$0);
           var fmtty$0=rest$12;
           continue;
          default:
           var rest$13=fmtty$0[1];
           buffer_add_string(buf,cst_r$1);
           var fmtty$0=rest$13;
           continue}}
    function int_of_custom_arity(param)
     {if(param){var x=param[1];return 1 + int_of_custom_arity(x) | 0}return 0}
    function string_of_fmt(fmt$1)
     {var buf=buffer_create(16),fmt=fmt$1,ign_flag=0;
      a:
      for(;;)
       if(typeof fmt === "number")
        return buffer_contents(buf);
       else
        switch(fmt[0])
         {case 0:
           var rest=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           buffer_add_char(buf,99);
           var fmt=rest,ign_flag=0;
           continue;
          case 1:
           var rest$0=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           buffer_add_char(buf,67);
           var fmt=rest$0,ign_flag=0;
           continue;
          case 2:
           var rest$1=fmt[2],pad=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           bprint_padding(buf,pad);
           buffer_add_char(buf,115);
           var fmt=rest$1,ign_flag=0;
           continue;
          case 3:
           var rest$2=fmt[2],pad$0=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           bprint_padding(buf,pad$0);
           buffer_add_char(buf,83);
           var fmt=rest$2,ign_flag=0;
           continue;
          case 4:
           var rest$3=fmt[4],prec=fmt[3],pad$1=fmt[2],iconv=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           bprint_iconv_flag(buf,iconv);
           bprint_padding(buf,pad$1);
           bprint_precision(buf,prec);
           buffer_add_char(buf,char_of_iconv(iconv));
           var fmt=rest$3,ign_flag=0;
           continue;
          case 5:
           var rest$4=fmt[4],prec$0=fmt[3],pad$2=fmt[2],iconv$0=fmt[1];
           bprint_altint_fmt(buf,ign_flag,iconv$0,pad$2,prec$0,108);
           var fmt=rest$4,ign_flag=0;
           continue;
          case 6:
           var rest$5=fmt[4],prec$1=fmt[3],pad$3=fmt[2],iconv$1=fmt[1];
           bprint_altint_fmt(buf,ign_flag,iconv$1,pad$3,prec$1,110);
           var fmt=rest$5,ign_flag=0;
           continue;
          case 7:
           var rest$6=fmt[4],prec$2=fmt[3],pad$4=fmt[2],iconv$2=fmt[1];
           bprint_altint_fmt(buf,ign_flag,iconv$2,pad$4,prec$2,76);
           var fmt=rest$6,ign_flag=0;
           continue;
          case 8:
           var rest$7=fmt[4],prec$3=fmt[3],pad$5=fmt[2],fconv=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           bprint_fconv_flag(buf,fconv);
           bprint_padding(buf,pad$5);
           bprint_precision(buf,prec$3);
           buffer_add_char(buf,char_of_fconv(0,fconv));
           var fmt=rest$7,ign_flag=0;
           continue;
          case 9:
           var rest$8=fmt[2],pad$6=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           bprint_padding(buf,pad$6);
           buffer_add_char(buf,66);
           var fmt=rest$8,ign_flag=0;
           continue;
          case 10:
           var rest$9=fmt[1];
           buffer_add_string(buf,cst$26);
           var fmt=rest$9;
           continue;
          case 11:
           var rest$10=fmt[2],str=fmt[1];
           bprint_string_literal(buf,str);
           var fmt=rest$10;
           continue;
          case 12:
           var rest$11=fmt[2],chr$0=fmt[1];
           bprint_char_literal(buf,chr$0);
           var fmt=rest$11;
           continue;
          case 13:
           var rest$12=fmt[3],fmtty=fmt[2],pad_opt=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           bprint_pad_opt(buf,pad_opt);
           buffer_add_char(buf,123);
           bprint_fmtty(buf,fmtty);
           buffer_add_char(buf,37);
           buffer_add_char(buf,125);
           var fmt=rest$12,ign_flag=0;
           continue;
          case 14:
           var rest$13=fmt[3],fmtty$0=fmt[2],pad_opt$0=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           bprint_pad_opt(buf,pad_opt$0);
           buffer_add_char(buf,40);
           bprint_fmtty(buf,fmtty$0);
           buffer_add_char(buf,37);
           buffer_add_char(buf,41);
           var fmt=rest$13,ign_flag=0;
           continue;
          case 15:
           var rest$14=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           buffer_add_char(buf,97);
           var fmt=rest$14,ign_flag=0;
           continue;
          case 16:
           var rest$15=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           buffer_add_char(buf,116);
           var fmt=rest$15,ign_flag=0;
           continue;
          case 17:
           var rest$16=fmt[2],fmting_lit=fmt[1];
           bprint_string_literal(buf,string_of_formatting_lit(fmting_lit));
           var fmt=rest$16;
           continue;
          case 18:
           var rest$17=fmt[2],fmting_gen=fmt[1];
           if(0 === fmting_gen[0])
            {var match$1=fmting_gen[1],str$0=match$1[2];
             buffer_add_string(buf,cst$27);
             buffer_add_string(buf,str$0)}
           else
            {var match$2=fmting_gen[1],str$1=match$2[2];
             buffer_add_string(buf,cst$28);
             buffer_add_string(buf,str$1)}
           var fmt=rest$17;
           continue;
          case 19:
           var rest$18=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           buffer_add_char(buf,114);
           var fmt=rest$18,ign_flag=0;
           continue;
          case 20:
           var rest$19=fmt[3],char_set=fmt[2],width_opt=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           bprint_pad_opt(buf,width_opt);
           var
            print_char=
             function(buf,i)
              {var c=char_of_int(i);
               return 37 === c
                       ?(buffer_add_char(buf,37),buffer_add_char(buf,37))
                       :64 === c
                         ?(buffer_add_char(buf,37),buffer_add_char(buf,64))
                         :buffer_add_char(buf,c)};
           buffer_add_char(buf,91);
           var
            _sJ_=
             is_in_char_set(char_set,0)
              ?(buffer_add_char(buf,94),rev_char_set(char_set))
              :char_set,
            is_alone$0=
             function(_sO_)
              {function is_alone(c)
                {var
                  after=chr(c + 1 | 0),
                  before=chr(c - 1 | 0),
                  _sP_=is_in_char_set(_sO_,c);
                 if(_sP_)
                  var
                   _sQ_=is_in_char_set(_sO_,before),
                   _sR_=_sQ_?is_in_char_set(_sO_,after):_sQ_,
                   _sS_=1 - _sR_;
                 else
                  var _sS_=_sP_;
                 return _sS_}
               return is_alone},
            is_alone=is_alone$0(_sJ_);
           if(is_alone(93))buffer_add_char(buf,93);
           var i=1;
           b:
           for(;;)
            {if(i < 256)
              {if(! is_in_char_set(_sJ_,char_of_int(i)))
                {var i$0=i + 1 | 0,i=i$0;continue}
               var match=char_of_int(i),switcher=match - 45 | 0,switch$0=0;
               if(48 < switcher >>> 0)
                if(210 <= switcher)print_char(buf,255);else switch$0 = 1;
               else
                {var switcher$0=switcher - 1 | 0;
                 if(46 < switcher$0 >>> 0){var i$2=i + 1 | 0,i=i$2;continue}
                 switch$0 = 1}
               if(switch$0)
                {var i$1=i + 1 | 0;
                 if(! is_in_char_set(_sJ_,char_of_int(i$1)))
                  {print_char(buf,i$1 - 1 | 0);
                   var i$6=i$1 + 1 | 0,i=i$6;
                   continue}
                 var
                  match$0=char_of_int(i$1),
                  switcher$1=match$0 - 45 | 0,
                  switch$1=0;
                 if(48 < switcher$1 >>> 0)
                  if(210 <= switcher$1)
                   {print_char(buf,254);print_char(buf,255)}
                  else
                   switch$1 = 1;
                 else
                  {var switcher$2=switcher$1 - 1 | 0;
                   if(46 < switcher$2 >>> 0)
                    {if(! is_in_char_set(_sJ_,char_of_int(i$1 + 1 | 0)))
                      {print_char(buf,i$1 - 1 | 0);
                       var i$5=i$1 + 1 | 0,i=i$5;
                       continue}
                     switch$1 = 1}
                   else
                    switch$1 = 1}
                 if(switch$1)
                  {if(! is_in_char_set(_sJ_,char_of_int(i$1 + 1 | 0)))
                    {print_char(buf,i$1 - 1 | 0);
                     print_char(buf,i$1);
                     var i$4=i$1 + 2 | 0,i=i$4;
                     continue}
                   var j=i$1 + 2 | 0,i$3=i$1 - 1 | 0,j$0=j;
                   for(;;)
                    {if(256 !== j$0 && is_in_char_set(_sJ_,char_of_int(j$0)))
                      {var j$1=j$0 + 1 | 0,j$0=j$1;continue}
                     print_char(buf,i$3);
                     print_char(buf,45);
                     print_char(buf,j$0 - 1 | 0);
                     if(j$0 < 256){var i$7=j$0 + 1 | 0,i=i$7;continue b}
                     break}}}}
             if(is_alone(45))buffer_add_char(buf,45);
             buffer_add_char(buf,93);
             var fmt=rest$19,ign_flag=0;
             continue a}
          case 21:
           var rest$20=fmt[2],counter=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           switch(counter)
            {case 0:var _sK_=108;break;
             case 1:var _sK_=110;break;
             default:var _sK_=78}
           buffer_add_char(buf,_sK_);
           var fmt=rest$20,ign_flag=0;
           continue;
          case 22:
           var rest$21=fmt[1];
           buffer_add_char(buf,37);
           bprint_ignored_flag(buf,ign_flag);
           bprint_string_literal(buf,cst_0c);
           var fmt=rest$21,ign_flag=0;
           continue;
          case 23:
           var
            rest$22=fmt[2],
            ign=fmt[1],
            match$3=param_format_of_ignored_format(ign,rest$22),
            fmt$0=match$3[1],
            fmt=fmt$0,
            ign_flag=1;
           continue;
          default:
           var
            rest$23=fmt[3],
            arity=fmt[1],
            _sM_=int_of_custom_arity(arity),
            _sL_=1;
           if(! (_sM_ < 1))
            {var i$8=_sL_;
             for(;;)
              {buffer_add_char(buf,37);
               bprint_ignored_flag(buf,ign_flag);
               buffer_add_char(buf,63);
               var _sN_=i$8 + 1 | 0;
               if(_sM_ !== i$8){var i$8=_sN_;continue}
               break}}
           var fmt=rest$23,ign_flag=0;
           continue}}
    function symm(param)
     {if(typeof param === "number")
       return 0;
      else
       switch(param[0])
        {case 0:var rest=param[1];return [0,symm(rest)];
         case 1:var rest$0=param[1];return [1,symm(rest$0)];
         case 2:var rest$1=param[1];return [2,symm(rest$1)];
         case 3:var rest$2=param[1];return [3,symm(rest$2)];
         case 4:var rest$3=param[1];return [4,symm(rest$3)];
         case 5:var rest$4=param[1];return [5,symm(rest$4)];
         case 6:var rest$5=param[1];return [6,symm(rest$5)];
         case 7:var rest$6=param[1];return [7,symm(rest$6)];
         case 8:var rest$7=param[2],ty=param[1];return [8,ty,symm(rest$7)];
         case 9:
          var rest$8=param[3],ty2=param[2],ty1=param[1];
          return [9,ty2,ty1,symm(rest$8)];
         case 10:var rest$9=param[1];return [10,symm(rest$9)];
         case 11:var rest$10=param[1];return [11,symm(rest$10)];
         case 12:var rest$11=param[1];return [12,symm(rest$11)];
         case 13:var rest$12=param[1];return [13,symm(rest$12)];
         default:var rest$13=param[1];return [14,symm(rest$13)]}}
    function fmtty_rel_det(param)
     {if(typeof param === "number")
       {var
         _sl_=function(param){return 0},
         _sm_=function(param){return 0},
         _sn_=function(param){return 0};
        return [0,function(param){return 0},_sn_,_sm_,_sl_]}
      else
       switch(param[0])
        {case 0:
          var
           rest=param[1],
           match=fmtty_rel_det(rest),
           de=match[4],
           ed=match[3],
           af=match[2],
           fa=match[1],
           _so_=function(param){caml_call1(af,0);return 0};
          return [0,function(param){caml_call1(fa,0);return 0},_so_,ed,de];
         case 1:
          var
           rest$0=param[1],
           match$0=fmtty_rel_det(rest$0),
           de$0=match$0[4],
           ed$0=match$0[3],
           af$0=match$0[2],
           fa$0=match$0[1],
           _sp_=function(param){caml_call1(af$0,0);return 0};
          return [0,
                  function(param){caml_call1(fa$0,0);return 0},
                  _sp_,
                  ed$0,
                  de$0];
         case 2:
          var
           rest$1=param[1],
           match$1=fmtty_rel_det(rest$1),
           de$1=match$1[4],
           ed$1=match$1[3],
           af$1=match$1[2],
           fa$1=match$1[1],
           _sq_=function(param){caml_call1(af$1,0);return 0};
          return [0,
                  function(param){caml_call1(fa$1,0);return 0},
                  _sq_,
                  ed$1,
                  de$1];
         case 3:
          var
           rest$2=param[1],
           match$2=fmtty_rel_det(rest$2),
           de$2=match$2[4],
           ed$2=match$2[3],
           af$2=match$2[2],
           fa$2=match$2[1],
           _sr_=function(param){caml_call1(af$2,0);return 0};
          return [0,
                  function(param){caml_call1(fa$2,0);return 0},
                  _sr_,
                  ed$2,
                  de$2];
         case 4:
          var
           rest$3=param[1],
           match$3=fmtty_rel_det(rest$3),
           de$3=match$3[4],
           ed$3=match$3[3],
           af$3=match$3[2],
           fa$3=match$3[1],
           _ss_=function(param){caml_call1(af$3,0);return 0};
          return [0,
                  function(param){caml_call1(fa$3,0);return 0},
                  _ss_,
                  ed$3,
                  de$3];
         case 5:
          var
           rest$4=param[1],
           match$4=fmtty_rel_det(rest$4),
           de$4=match$4[4],
           ed$4=match$4[3],
           af$4=match$4[2],
           fa$4=match$4[1],
           _st_=function(param){caml_call1(af$4,0);return 0};
          return [0,
                  function(param){caml_call1(fa$4,0);return 0},
                  _st_,
                  ed$4,
                  de$4];
         case 6:
          var
           rest$5=param[1],
           match$5=fmtty_rel_det(rest$5),
           de$5=match$5[4],
           ed$5=match$5[3],
           af$5=match$5[2],
           fa$5=match$5[1],
           _su_=function(param){caml_call1(af$5,0);return 0};
          return [0,
                  function(param){caml_call1(fa$5,0);return 0},
                  _su_,
                  ed$5,
                  de$5];
         case 7:
          var
           rest$6=param[1],
           match$6=fmtty_rel_det(rest$6),
           de$6=match$6[4],
           ed$6=match$6[3],
           af$6=match$6[2],
           fa$6=match$6[1],
           _sv_=function(param){caml_call1(af$6,0);return 0};
          return [0,
                  function(param){caml_call1(fa$6,0);return 0},
                  _sv_,
                  ed$6,
                  de$6];
         case 8:
          var
           rest$7=param[2],
           match$7=fmtty_rel_det(rest$7),
           de$7=match$7[4],
           ed$7=match$7[3],
           af$7=match$7[2],
           fa$7=match$7[1],
           _sw_=function(param){caml_call1(af$7,0);return 0};
          return [0,
                  function(param){caml_call1(fa$7,0);return 0},
                  _sw_,
                  ed$7,
                  de$7];
         case 9:
          var
           rest$8=param[3],
           ty2=param[2],
           ty1=param[1],
           match$8=fmtty_rel_det(rest$8),
           de$8=match$8[4],
           ed$8=match$8[3],
           af$8=match$8[2],
           fa$8=match$8[1],
           ty=trans(symm(ty1),ty2),
           match$9=fmtty_rel_det(ty),
           jd=match$9[4],
           dj=match$9[3],
           ga=match$9[2],
           ag=match$9[1],
           _sx_=function(param){caml_call1(jd,0);caml_call1(de$8,0);return 0},
           _sy_=function(param){caml_call1(ed$8,0);caml_call1(dj,0);return 0},
           _sz_=function(param){caml_call1(ga,0);caml_call1(af$8,0);return 0};
          return [0,
                  function(param)
                   {caml_call1(fa$8,0);caml_call1(ag,0);return 0},
                  _sz_,
                  _sy_,
                  _sx_];
         case 10:
          var
           rest$9=param[1],
           match$10=fmtty_rel_det(rest$9),
           de$9=match$10[4],
           ed$9=match$10[3],
           af$9=match$10[2],
           fa$9=match$10[1],
           _sA_=function(param){caml_call1(af$9,0);return 0};
          return [0,
                  function(param){caml_call1(fa$9,0);return 0},
                  _sA_,
                  ed$9,
                  de$9];
         case 11:
          var
           rest$10=param[1],
           match$11=fmtty_rel_det(rest$10),
           de$10=match$11[4],
           ed$10=match$11[3],
           af$10=match$11[2],
           fa$10=match$11[1],
           _sB_=function(param){caml_call1(af$10,0);return 0};
          return [0,
                  function(param){caml_call1(fa$10,0);return 0},
                  _sB_,
                  ed$10,
                  de$10];
         case 12:
          var
           rest$11=param[1],
           match$12=fmtty_rel_det(rest$11),
           de$11=match$12[4],
           ed$11=match$12[3],
           af$11=match$12[2],
           fa$11=match$12[1],
           _sC_=function(param){caml_call1(af$11,0);return 0};
          return [0,
                  function(param){caml_call1(fa$11,0);return 0},
                  _sC_,
                  ed$11,
                  de$11];
         case 13:
          var
           rest$12=param[1],
           match$13=fmtty_rel_det(rest$12),
           de$12=match$13[4],
           ed$12=match$13[3],
           af$12=match$13[2],
           fa$12=match$13[1],
           _sD_=function(param){caml_call1(de$12,0);return 0},
           _sE_=function(param){caml_call1(ed$12,0);return 0},
           _sF_=function(param){caml_call1(af$12,0);return 0};
          return [0,
                  function(param){caml_call1(fa$12,0);return 0},
                  _sF_,
                  _sE_,
                  _sD_];
         default:
          var
           rest$13=param[1],
           match$14=fmtty_rel_det(rest$13),
           de$13=match$14[4],
           ed$13=match$14[3],
           af$13=match$14[2],
           fa$13=match$14[1],
           _sG_=function(param){caml_call1(de$13,0);return 0},
           _sH_=function(param){caml_call1(ed$13,0);return 0},
           _sI_=function(param){caml_call1(af$13,0);return 0};
          return [0,
                  function(param){caml_call1(fa$13,0);return 0},
                  _sI_,
                  _sH_,
                  _sG_]}}
    function trans(ty1,match)
     {var switch$0=0;
      if(typeof ty1 === "number")
       if(typeof match === "number")
        return 0;
       else
        switch(match[0])
         {case 10:break;
          case 11:switch$0 = 1;break;
          case 12:switch$0 = 2;break;
          case 13:switch$0 = 3;break;
          case 14:switch$0 = 4;break;
          case 8:switch$0 = 5;break;
          case 9:switch$0 = 6;break;
          default:throw [0,Assert_failure,___]}
      else
       switch(ty1[0])
        {case 0:
          var switch$1=0,_r4_=ty1[1];
          if(typeof match !== "number")
           switch(match[0])
            {case 0:var rest2=match[1];return [0,trans(_r4_,rest2)];
             case 8:switch$0 = 5;switch$1 = 1;break;
             case 9:switch$0 = 6;switch$1 = 1;break;
             case 10:switch$1 = 1;break;
             case 11:switch$0 = 1;switch$1 = 1;break;
             case 12:switch$0 = 2;switch$1 = 1;break;
             case 13:switch$0 = 3;switch$1 = 1;break;
             case 14:switch$0 = 4;switch$1 = 1;break
             }
          if(! switch$1)switch$0 = 7;
          break;
         case 1:
          var switch$2=0,_r5_=ty1[1];
          if(typeof match !== "number")
           switch(match[0])
            {case 1:var rest2$0=match[1];return [1,trans(_r5_,rest2$0)];
             case 8:switch$0 = 5;switch$2 = 1;break;
             case 9:switch$0 = 6;switch$2 = 1;break;
             case 10:switch$2 = 1;break;
             case 11:switch$0 = 1;switch$2 = 1;break;
             case 12:switch$0 = 2;switch$2 = 1;break;
             case 13:switch$0 = 3;switch$2 = 1;break;
             case 14:switch$0 = 4;switch$2 = 1;break
             }
          if(! switch$2)switch$0 = 7;
          break;
         case 2:
          var switch$3=0,_r6_=ty1[1];
          if(typeof match === "number")
           switch$3 = 1;
          else
           switch(match[0])
            {case 2:var rest2$1=match[1];return [2,trans(_r6_,rest2$1)];
             case 8:switch$0 = 5;break;
             case 9:switch$0 = 6;break;
             case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:switch$0 = 3;break;
             case 14:switch$0 = 4;break;
             default:switch$3 = 1}
          if(switch$3)switch$0 = 7;
          break;
         case 3:
          var switch$4=0,_r7_=ty1[1];
          if(typeof match === "number")
           switch$4 = 1;
          else
           switch(match[0])
            {case 3:var rest2$2=match[1];return [3,trans(_r7_,rest2$2)];
             case 8:switch$0 = 5;break;
             case 9:switch$0 = 6;break;
             case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:switch$0 = 3;break;
             case 14:switch$0 = 4;break;
             default:switch$4 = 1}
          if(switch$4)switch$0 = 7;
          break;
         case 4:
          var switch$5=0,_r8_=ty1[1];
          if(typeof match === "number")
           switch$5 = 1;
          else
           switch(match[0])
            {case 4:var rest2$3=match[1];return [4,trans(_r8_,rest2$3)];
             case 8:switch$0 = 5;break;
             case 9:switch$0 = 6;break;
             case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:switch$0 = 3;break;
             case 14:switch$0 = 4;break;
             default:switch$5 = 1}
          if(switch$5)switch$0 = 7;
          break;
         case 5:
          var switch$6=0,_r9_=ty1[1];
          if(typeof match === "number")
           switch$6 = 1;
          else
           switch(match[0])
            {case 5:var rest2$4=match[1];return [5,trans(_r9_,rest2$4)];
             case 8:switch$0 = 5;break;
             case 9:switch$0 = 6;break;
             case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:switch$0 = 3;break;
             case 14:switch$0 = 4;break;
             default:switch$6 = 1}
          if(switch$6)switch$0 = 7;
          break;
         case 6:
          var switch$7=0,_r__=ty1[1];
          if(typeof match === "number")
           switch$7 = 1;
          else
           switch(match[0])
            {case 6:var rest2$5=match[1];return [6,trans(_r__,rest2$5)];
             case 8:switch$0 = 5;break;
             case 9:switch$0 = 6;break;
             case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:switch$0 = 3;break;
             case 14:switch$0 = 4;break;
             default:switch$7 = 1}
          if(switch$7)switch$0 = 7;
          break;
         case 7:
          var switch$8=0,_r$_=ty1[1];
          if(typeof match === "number")
           switch$8 = 1;
          else
           switch(match[0])
            {case 7:var rest2$6=match[1];return [7,trans(_r$_,rest2$6)];
             case 8:switch$0 = 5;break;
             case 9:switch$0 = 6;break;
             case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:switch$0 = 3;break;
             case 14:switch$0 = 4;break;
             default:switch$8 = 1}
          if(switch$8)switch$0 = 7;
          break;
         case 8:
          var switch$9=0,_sa_=ty1[2],_sb_=ty1[1];
          if(typeof match === "number")
           switch$9 = 1;
          else
           switch(match[0])
            {case 8:
              var rest2$7=match[2],ty2=match[1],_sc_=trans(_sa_,rest2$7);
              return [8,trans(_sb_,ty2),_sc_];
             case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:switch$0 = 3;break;
             case 14:switch$0 = 4;break;
             default:switch$9 = 1}
          if(switch$9)throw [0,Assert_failure,_ah_];
          break;
         case 9:
          var switch$10=0,_sd_=ty1[3],_se_=ty1[2],_sf_=ty1[1];
          if(typeof match === "number")
           switch$10 = 1;
          else
           switch(match[0])
            {case 8:switch$0 = 5;break;
             case 9:
              var
               rest2$8=match[3],
               ty22=match[2],
               ty21=match[1],
               ty=trans(symm(_se_),ty21),
               match$0=fmtty_rel_det(ty),
               f4=match$0[4],
               f2=match$0[2];
              caml_call1(f2,0);
              caml_call1(f4,0);
              return [9,_sf_,ty22,trans(_sd_,rest2$8)];
             case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:switch$0 = 3;break;
             case 14:switch$0 = 4;break;
             default:switch$10 = 1}
          if(switch$10)throw [0,Assert_failure,_ai_];
          break;
         case 10:
          var _sg_=ty1[1];
          if(typeof match !== "number" && 10 === match[0])
           {var rest2$9=match[1];return [10,trans(_sg_,rest2$9)]}
          throw [0,Assert_failure,_aj_];
         case 11:
          var switch$11=0,_sh_=ty1[1];
          if(typeof match === "number")
           switch$11 = 1;
          else
           switch(match[0])
            {case 10:break;
             case 11:var rest2$10=match[1];return [11,trans(_sh_,rest2$10)];
             default:switch$11 = 1}
          if(switch$11)throw [0,Assert_failure,_ak_];
          break;
         case 12:
          var switch$12=0,_si_=ty1[1];
          if(typeof match === "number")
           switch$12 = 1;
          else
           switch(match[0])
            {case 10:break;
             case 11:switch$0 = 1;break;
             case 12:var rest2$11=match[1];return [12,trans(_si_,rest2$11)];
             default:switch$12 = 1}
          if(switch$12)throw [0,Assert_failure,_al_];
          break;
         case 13:
          var switch$13=0,_sj_=ty1[1];
          if(typeof match === "number")
           switch$13 = 1;
          else
           switch(match[0])
            {case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:var rest2$12=match[1];return [13,trans(_sj_,rest2$12)];
             default:switch$13 = 1}
          if(switch$13)throw [0,Assert_failure,_am_];
          break;
         default:
          var switch$14=0,_sk_=ty1[1];
          if(typeof match === "number")
           switch$14 = 1;
          else
           switch(match[0])
            {case 10:break;
             case 11:switch$0 = 1;break;
             case 12:switch$0 = 2;break;
             case 13:switch$0 = 3;break;
             case 14:var rest2$13=match[1];return [14,trans(_sk_,rest2$13)];
             default:switch$14 = 1}
          if(switch$14)throw [0,Assert_failure,_an_]}
      switch(switch$0)
       {case 0:throw [0,Assert_failure,_ab_];
        case 1:throw [0,Assert_failure,_ac_];
        case 2:throw [0,Assert_failure,_ad_];
        case 3:throw [0,Assert_failure,_ae_];
        case 4:throw [0,Assert_failure,_af_];
        case 5:throw [0,Assert_failure,_$_];
        case 6:throw [0,Assert_failure,_aa_];
        default:throw [0,Assert_failure,_ag_]}}
    function fmtty_of_padding_fmtty(pad,fmtty)
     {return typeof pad === "number"?fmtty:0 === pad[0]?fmtty:[2,fmtty]}
    function fmtty_of_custom(arity,fmtty)
     {if(arity)
       {var arity$0=arity[1];return [12,fmtty_of_custom(arity$0,fmtty)]}
      return fmtty}
    function fmtty_of_fmt(fmtty)
     {var fmtty$0=fmtty;
      for(;;)
       if(typeof fmtty$0 === "number")
        return 0;
       else
        switch(fmtty$0[0])
         {case 0:var rest=fmtty$0[1];return [0,fmtty_of_fmt(rest)];
          case 1:var rest$0=fmtty$0[1];return [0,fmtty_of_fmt(rest$0)];
          case 2:
           var rest$1=fmtty$0[2],pad=fmtty$0[1];
           return fmtty_of_padding_fmtty(pad,[1,fmtty_of_fmt(rest$1)]);
          case 3:
           var rest$2=fmtty$0[2],pad$0=fmtty$0[1];
           return fmtty_of_padding_fmtty(pad$0,[1,fmtty_of_fmt(rest$2)]);
          case 4:
           var
            rest$3=fmtty$0[4],
            prec=fmtty$0[3],
            pad$1=fmtty$0[2],
            ty_rest=fmtty_of_fmt(rest$3),
            prec_ty=fmtty_of_precision_fmtty(prec,[2,ty_rest]);
           return fmtty_of_padding_fmtty(pad$1,prec_ty);
          case 5:
           var
            rest$4=fmtty$0[4],
            prec$0=fmtty$0[3],
            pad$2=fmtty$0[2],
            ty_rest$0=fmtty_of_fmt(rest$4),
            prec_ty$0=fmtty_of_precision_fmtty(prec$0,[3,ty_rest$0]);
           return fmtty_of_padding_fmtty(pad$2,prec_ty$0);
          case 6:
           var
            rest$5=fmtty$0[4],
            prec$1=fmtty$0[3],
            pad$3=fmtty$0[2],
            ty_rest$1=fmtty_of_fmt(rest$5),
            prec_ty$1=fmtty_of_precision_fmtty(prec$1,[4,ty_rest$1]);
           return fmtty_of_padding_fmtty(pad$3,prec_ty$1);
          case 7:
           var
            rest$6=fmtty$0[4],
            prec$2=fmtty$0[3],
            pad$4=fmtty$0[2],
            ty_rest$2=fmtty_of_fmt(rest$6),
            prec_ty$2=fmtty_of_precision_fmtty(prec$2,[5,ty_rest$2]);
           return fmtty_of_padding_fmtty(pad$4,prec_ty$2);
          case 8:
           var
            rest$7=fmtty$0[4],
            prec$3=fmtty$0[3],
            pad$5=fmtty$0[2],
            ty_rest$3=fmtty_of_fmt(rest$7),
            prec_ty$3=fmtty_of_precision_fmtty(prec$3,[6,ty_rest$3]);
           return fmtty_of_padding_fmtty(pad$5,prec_ty$3);
          case 9:
           var rest$8=fmtty$0[2],pad$6=fmtty$0[1];
           return fmtty_of_padding_fmtty(pad$6,[7,fmtty_of_fmt(rest$8)]);
          case 10:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue;
          case 11:var fmtty$2=fmtty$0[2],fmtty$0=fmtty$2;continue;
          case 12:var fmtty$3=fmtty$0[2],fmtty$0=fmtty$3;continue;
          case 13:
           var rest$9=fmtty$0[3],ty=fmtty$0[2];
           return [8,ty,fmtty_of_fmt(rest$9)];
          case 14:
           var rest$10=fmtty$0[3],ty$0=fmtty$0[2];
           return [9,ty$0,ty$0,fmtty_of_fmt(rest$10)];
          case 15:var rest$11=fmtty$0[1];return [10,fmtty_of_fmt(rest$11)];
          case 16:var rest$12=fmtty$0[1];return [11,fmtty_of_fmt(rest$12)];
          case 17:var fmtty$4=fmtty$0[2],fmtty$0=fmtty$4;continue;
          case 18:
           var
            rest$13=fmtty$0[2],
            fmting_gen=fmtty$0[1],
            _r2_=fmtty_of_fmt(rest$13);
           if(0 === fmting_gen[0])
            var match=fmting_gen[1],fmt=match[1],_r3_=fmtty_of_fmt(fmt);
           else
            var
             match$0=fmting_gen[1],
             fmt$0=match$0[1],
             _r3_=fmtty_of_fmt(fmt$0);
           return concat_fmtty(_r3_,_r2_);
          case 19:var rest$14=fmtty$0[1];return [13,fmtty_of_fmt(rest$14)];
          case 20:var rest$15=fmtty$0[3];return [1,fmtty_of_fmt(rest$15)];
          case 21:var rest$16=fmtty$0[2];return [2,fmtty_of_fmt(rest$16)];
          case 22:var rest$17=fmtty$0[1];return [0,fmtty_of_fmt(rest$17)];
          case 23:
           var rest$18=fmtty$0[2],ign=fmtty$0[1];
           if(typeof ign === "number")
            switch(ign)
             {case 0:var fmtty$0=rest$18;continue;
              case 1:var fmtty$0=rest$18;continue;
              case 2:return [14,fmtty_of_fmt(rest$18)];
              default:var fmtty$0=rest$18;continue}
           else
            switch(ign[0])
             {case 0:var fmtty$0=rest$18;continue;
              case 1:var fmtty$0=rest$18;continue;
              case 2:var fmtty$0=rest$18;continue;
              case 3:var fmtty$0=rest$18;continue;
              case 4:var fmtty$0=rest$18;continue;
              case 5:var fmtty$0=rest$18;continue;
              case 6:var fmtty$0=rest$18;continue;
              case 7:var fmtty$0=rest$18;continue;
              case 8:var fmtty$0=rest$18;continue;
              case 9:
               var fmtty$5=ign[2];
               return concat_fmtty(fmtty$5,fmtty_of_fmt(rest$18));
              case 10:var fmtty$0=rest$18;continue;
              default:var fmtty$0=rest$18;continue}
          default:
           var rest$19=fmtty$0[3],arity=fmtty$0[1];
           return fmtty_of_custom(arity,fmtty_of_fmt(rest$19))}}
    function fmtty_of_precision_fmtty(prec,fmtty)
     {return typeof prec === "number"?prec?[2,fmtty]:fmtty:fmtty}
    var
     Type_mismatch=
      [248,cst_CamlinternalFormat_Type_mi,caml_fresh_oo_id(0)];
    function type_padding(pad,match)
     {if(typeof pad === "number")
       return [0,0,match];
      else
       {if(0 === pad[0])
         {var w=pad[2],padty=pad[1];return [0,[0,padty,w],match]}
        if(typeof match !== "number" && 2 === match[0])
         {var rest=match[1],padty$0=pad[1];return [0,[1,padty$0],rest]}
        throw Type_mismatch}}
    function type_padprec(pad,prec,fmtty)
     {var match=type_padding(pad,fmtty);
      if(typeof prec === "number")
       {if(prec)
         {var _r1_=match[2];
          if(typeof _r1_ !== "number" && 2 === _r1_[0])
           {var rest=_r1_[1],pad$0=match[1];return [0,pad$0,1,rest]}
          throw Type_mismatch}
        var rest$0=match[2],pad$1=match[1];
        return [0,pad$1,0,rest$0]}
      var rest$1=match[2],pad$2=match[1],p=prec[1];
      return [0,pad$2,[0,p],rest$1]}
    function type_format(fmt,fmtty)
     {var _r0_=type_format_gen(fmt,fmtty);
      if(typeof _r0_[2] === "number"){var fmt$0=_r0_[1];return fmt$0}
      throw Type_mismatch}
    function type_ignored_param_one(ign,fmt,fmtty)
     {var match=type_format_gen(fmt,fmtty),fmtty$0=match[2],fmt$0=match[1];
      return [0,[23,ign,fmt$0],fmtty$0]}
    function type_format_gen(fmt,fmtty)
     {if(typeof fmt === "number")
       return [0,0,fmtty];
      else
       switch(fmt[0])
        {case 0:
          if(typeof fmtty !== "number" && 0 === fmtty[0])
           {var
             fmtty_rest=fmtty[1],
             fmt_rest=fmt[1],
             match=type_format_gen(fmt_rest,fmtty_rest),
             fmtty$0=match[2],
             fmt$0=match[1];
            return [0,[0,fmt$0],fmtty$0]}
          break;
         case 1:
          if(typeof fmtty !== "number" && 0 === fmtty[0])
           {var
             fmtty_rest$0=fmtty[1],
             fmt_rest$0=fmt[1],
             match$0=type_format_gen(fmt_rest$0,fmtty_rest$0),
             fmtty$1=match$0[2],
             fmt$1=match$0[1];
            return [0,[1,fmt$1],fmtty$1]}
          break;
         case 2:
          var
           fmt_rest$1=fmt[2],
           pad=fmt[1],
           match$1=type_padding(pad,fmtty),
           _rJ_=match$1[2],
           _rI_=match$1[1];
          if(typeof _rJ_ !== "number" && 1 === _rJ_[0])
           {var
             fmtty_rest$1=_rJ_[1],
             match$2=type_format_gen(fmt_rest$1,fmtty_rest$1),
             fmtty$2=match$2[2],
             fmt$2=match$2[1];
            return [0,[2,_rI_,fmt$2],fmtty$2]}
          throw Type_mismatch;
         case 3:
          var
           fmt_rest$2=fmt[2],
           pad$0=fmt[1],
           match$3=type_padding(pad$0,fmtty),
           _rL_=match$3[2],
           _rK_=match$3[1];
          if(typeof _rL_ !== "number" && 1 === _rL_[0])
           {var
             fmtty_rest$2=_rL_[1],
             match$4=type_format_gen(fmt_rest$2,fmtty_rest$2),
             fmtty$3=match$4[2],
             fmt$3=match$4[1];
            return [0,[3,_rK_,fmt$3],fmtty$3]}
          throw Type_mismatch;
         case 4:
          var
           fmt_rest$3=fmt[4],
           prec=fmt[3],
           pad$1=fmt[2],
           iconv=fmt[1],
           match$5=type_padprec(pad$1,prec,fmtty),
           _rN_=match$5[3],
           _rM_=match$5[1];
          if(typeof _rN_ !== "number" && 2 === _rN_[0])
           {var
             fmtty_rest$3=_rN_[1],
             prec$0=match$5[2],
             match$6=type_format_gen(fmt_rest$3,fmtty_rest$3),
             fmtty$4=match$6[2],
             fmt$4=match$6[1];
            return [0,[4,iconv,_rM_,prec$0,fmt$4],fmtty$4]}
          throw Type_mismatch;
         case 5:
          var
           fmt_rest$4=fmt[4],
           prec$1=fmt[3],
           pad$2=fmt[2],
           iconv$0=fmt[1],
           match$7=type_padprec(pad$2,prec$1,fmtty),
           _rP_=match$7[3],
           _rO_=match$7[1];
          if(typeof _rP_ !== "number" && 3 === _rP_[0])
           {var
             fmtty_rest$4=_rP_[1],
             prec$2=match$7[2],
             match$8=type_format_gen(fmt_rest$4,fmtty_rest$4),
             fmtty$5=match$8[2],
             fmt$5=match$8[1];
            return [0,[5,iconv$0,_rO_,prec$2,fmt$5],fmtty$5]}
          throw Type_mismatch;
         case 6:
          var
           fmt_rest$5=fmt[4],
           prec$3=fmt[3],
           pad$3=fmt[2],
           iconv$1=fmt[1],
           match$9=type_padprec(pad$3,prec$3,fmtty),
           _rR_=match$9[3],
           _rQ_=match$9[1];
          if(typeof _rR_ !== "number" && 4 === _rR_[0])
           {var
             fmtty_rest$5=_rR_[1],
             prec$4=match$9[2],
             match$10=type_format_gen(fmt_rest$5,fmtty_rest$5),
             fmtty$6=match$10[2],
             fmt$6=match$10[1];
            return [0,[6,iconv$1,_rQ_,prec$4,fmt$6],fmtty$6]}
          throw Type_mismatch;
         case 7:
          var
           fmt_rest$6=fmt[4],
           prec$5=fmt[3],
           pad$4=fmt[2],
           iconv$2=fmt[1],
           match$11=type_padprec(pad$4,prec$5,fmtty),
           _rT_=match$11[3],
           _rS_=match$11[1];
          if(typeof _rT_ !== "number" && 5 === _rT_[0])
           {var
             fmtty_rest$6=_rT_[1],
             prec$6=match$11[2],
             match$12=type_format_gen(fmt_rest$6,fmtty_rest$6),
             fmtty$7=match$12[2],
             fmt$7=match$12[1];
            return [0,[7,iconv$2,_rS_,prec$6,fmt$7],fmtty$7]}
          throw Type_mismatch;
         case 8:
          var
           fmt_rest$7=fmt[4],
           prec$7=fmt[3],
           pad$5=fmt[2],
           fconv=fmt[1],
           match$13=type_padprec(pad$5,prec$7,fmtty),
           _rV_=match$13[3],
           _rU_=match$13[1];
          if(typeof _rV_ !== "number" && 6 === _rV_[0])
           {var
             fmtty_rest$7=_rV_[1],
             prec$8=match$13[2],
             match$14=type_format_gen(fmt_rest$7,fmtty_rest$7),
             fmtty$8=match$14[2],
             fmt$8=match$14[1];
            return [0,[8,fconv,_rU_,prec$8,fmt$8],fmtty$8]}
          throw Type_mismatch;
         case 9:
          var
           fmt_rest$8=fmt[2],
           pad$6=fmt[1],
           match$15=type_padding(pad$6,fmtty),
           _rX_=match$15[2],
           _rW_=match$15[1];
          if(typeof _rX_ !== "number" && 7 === _rX_[0])
           {var
             fmtty_rest$8=_rX_[1],
             match$16=type_format_gen(fmt_rest$8,fmtty_rest$8),
             fmtty$9=match$16[2],
             fmt$9=match$16[1];
            return [0,[9,_rW_,fmt$9],fmtty$9]}
          throw Type_mismatch;
         case 10:
          var
           fmt_rest$9=fmt[1],
           match$17=type_format_gen(fmt_rest$9,fmtty),
           fmtty$10=match$17[2],
           fmt$10=match$17[1];
          return [0,[10,fmt$10],fmtty$10];
         case 11:
          var
           fmt_rest$10=fmt[2],
           str=fmt[1],
           match$18=type_format_gen(fmt_rest$10,fmtty),
           fmtty$11=match$18[2],
           fmt$11=match$18[1];
          return [0,[11,str,fmt$11],fmtty$11];
         case 12:
          var
           fmt_rest$11=fmt[2],
           chr=fmt[1],
           match$19=type_format_gen(fmt_rest$11,fmtty),
           fmtty$12=match$19[2],
           fmt$12=match$19[1];
          return [0,[12,chr,fmt$12],fmtty$12];
         case 13:
          if(typeof fmtty !== "number" && 8 === fmtty[0])
           {var
             fmtty_rest$9=fmtty[2],
             sub_fmtty=fmtty[1],
             fmt_rest$12=fmt[3],
             sub_fmtty$0=fmt[2],
             pad_opt=fmt[1];
            if(caml_notequal([0,sub_fmtty$0],[0,sub_fmtty]))
             throw Type_mismatch;
            var
             match$20=type_format_gen(fmt_rest$12,fmtty_rest$9),
             fmtty$13=match$20[2],
             fmt$13=match$20[1];
            return [0,[13,pad_opt,sub_fmtty,fmt$13],fmtty$13]}
          break;
         case 14:
          if(typeof fmtty !== "number" && 9 === fmtty[0])
           {var
             fmtty_rest$10=fmtty[3],
             sub_fmtty1=fmtty[1],
             fmt_rest$13=fmt[3],
             sub_fmtty$1=fmt[2],
             pad_opt$0=fmt[1],
             _rY_=[0,erase_rel(sub_fmtty1)];
            if(caml_notequal([0,erase_rel(sub_fmtty$1)],_rY_))
             throw Type_mismatch;
            var
             match$21=type_format_gen(fmt_rest$13,erase_rel(fmtty_rest$10)),
             fmtty$14=match$21[2],
             fmt$14=match$21[1];
            return [0,[14,pad_opt$0,sub_fmtty1,fmt$14],fmtty$14]}
          break;
         case 15:
          if(typeof fmtty !== "number" && 10 === fmtty[0])
           {var
             fmtty_rest$11=fmtty[1],
             fmt_rest$14=fmt[1],
             match$22=type_format_gen(fmt_rest$14,fmtty_rest$11),
             fmtty$15=match$22[2],
             fmt$15=match$22[1];
            return [0,[15,fmt$15],fmtty$15]}
          break;
         case 16:
          if(typeof fmtty !== "number" && 11 === fmtty[0])
           {var
             fmtty_rest$12=fmtty[1],
             fmt_rest$15=fmt[1],
             match$23=type_format_gen(fmt_rest$15,fmtty_rest$12),
             fmtty$16=match$23[2],
             fmt$16=match$23[1];
            return [0,[16,fmt$16],fmtty$16]}
          break;
         case 17:
          var
           fmt_rest$16=fmt[2],
           formatting_lit=fmt[1],
           match$24=type_format_gen(fmt_rest$16,fmtty),
           fmtty$17=match$24[2],
           fmt$17=match$24[1];
          return [0,[17,formatting_lit,fmt$17],fmtty$17];
         case 18:
          var fmt_rest$17=fmt[2],formatting_gen=fmt[1];
          if(0 === formatting_gen[0])
           {var
             match$28=formatting_gen[1],
             str$0=match$28[2],
             fmt1=match$28[1],
             match$29=type_format_gen(fmt1,fmtty),
             fmtty2=match$29[2],
             fmt2=match$29[1],
             match$30=type_format_gen(fmt_rest$17,fmtty2),
             fmtty3=match$30[2],
             fmt3=match$30[1];
            return [0,[18,[0,[0,fmt2,str$0]],fmt3],fmtty3]}
          var
           match$31=formatting_gen[1],
           str$1=match$31[2],
           fmt1$0=match$31[1],
           match$32=type_format_gen(fmt1$0,fmtty),
           fmtty2$0=match$32[2],
           fmt2$0=match$32[1],
           match$33=type_format_gen(fmt_rest$17,fmtty2$0),
           fmtty3$0=match$33[2],
           fmt3$0=match$33[1];
          return [0,[18,[1,[0,fmt2$0,str$1]],fmt3$0],fmtty3$0];
         case 19:
          if(typeof fmtty !== "number" && 13 === fmtty[0])
           {var
             fmtty_rest$13=fmtty[1],
             fmt_rest$18=fmt[1],
             match$25=type_format_gen(fmt_rest$18,fmtty_rest$13),
             fmtty$18=match$25[2],
             fmt$18=match$25[1];
            return [0,[19,fmt$18],fmtty$18]}
          break;
         case 20:
          if(typeof fmtty !== "number" && 1 === fmtty[0])
           {var
             fmtty_rest$14=fmtty[1],
             fmt_rest$19=fmt[3],
             char_set=fmt[2],
             width_opt=fmt[1],
             match$26=type_format_gen(fmt_rest$19,fmtty_rest$14),
             fmtty$19=match$26[2],
             fmt$19=match$26[1];
            return [0,[20,width_opt,char_set,fmt$19],fmtty$19]}
          break;
         case 21:
          if(typeof fmtty !== "number" && 2 === fmtty[0])
           {var
             fmtty_rest$15=fmtty[1],
             fmt_rest$20=fmt[2],
             counter=fmt[1],
             match$27=type_format_gen(fmt_rest$20,fmtty_rest$15),
             fmtty$20=match$27[2],
             fmt$20=match$27[1];
            return [0,[21,counter,fmt$20],fmtty$20]}
          break;
         case 23:
          var rest=fmt[2],ign=fmt[1];
          if(typeof ign === "number")
           switch(ign)
            {case 0:return type_ignored_param_one(ign,rest,fmtty);
             case 1:return type_ignored_param_one(ign,rest,fmtty);
             case 2:
              if(typeof fmtty !== "number" && 14 === fmtty[0])
               {var
                 fmtty_rest$16=fmtty[1],
                 match$34=type_format_gen(rest,fmtty_rest$16),
                 fmtty$21=match$34[2],
                 fmt$21=match$34[1];
                return [0,[23,2,fmt$21],fmtty$21]}
              throw Type_mismatch;
             default:return type_ignored_param_one(ign,rest,fmtty)}
          else
           switch(ign[0])
            {case 0:return type_ignored_param_one(ign,rest,fmtty);
             case 1:return type_ignored_param_one(ign,rest,fmtty);
             case 2:return type_ignored_param_one(ign,rest,fmtty);
             case 3:return type_ignored_param_one(ign,rest,fmtty);
             case 4:return type_ignored_param_one(ign,rest,fmtty);
             case 5:return type_ignored_param_one(ign,rest,fmtty);
             case 6:return type_ignored_param_one(ign,rest,fmtty);
             case 7:return type_ignored_param_one(ign,rest,fmtty);
             case 8:
              var sub_fmtty$2=ign[2],pad_opt$1=ign[1];
              return type_ignored_param_one
                      ([8,pad_opt$1,sub_fmtty$2],rest,fmtty);
             case 9:
              var
               sub_fmtty$3=ign[2],
               pad_opt$2=ign[1],
               _rZ_=type_ignored_format_substituti(sub_fmtty$3,rest,fmtty),
               match$35=_rZ_[2],
               fmtty$22=match$35[2],
               fmt$22=match$35[1],
               sub_fmtty$4=_rZ_[1];
              return [0,[23,[9,pad_opt$2,sub_fmtty$4],fmt$22],fmtty$22];
             case 10:return type_ignored_param_one(ign,rest,fmtty);
             default:return type_ignored_param_one(ign,rest,fmtty)}
         }
      throw Type_mismatch}
    function type_ignored_format_substituti(sub_fmtty,fmt,match)
     {if(typeof sub_fmtty === "number")
       return [0,0,type_format_gen(fmt,match)];
      else
       switch(sub_fmtty[0])
        {case 0:
          if(typeof match !== "number" && 0 === match[0])
           {var
             fmtty_rest=match[1],
             sub_fmtty_rest=sub_fmtty[1],
             match$0=
              type_ignored_format_substituti(sub_fmtty_rest,fmt,fmtty_rest),
             fmt$0=match$0[2],
             sub_fmtty_rest$0=match$0[1];
            return [0,[0,sub_fmtty_rest$0],fmt$0]}
          break;
         case 1:
          if(typeof match !== "number" && 1 === match[0])
           {var
             fmtty_rest$0=match[1],
             sub_fmtty_rest$1=sub_fmtty[1],
             match$1=
              type_ignored_format_substituti
               (sub_fmtty_rest$1,fmt,fmtty_rest$0),
             fmt$1=match$1[2],
             sub_fmtty_rest$2=match$1[1];
            return [0,[1,sub_fmtty_rest$2],fmt$1]}
          break;
         case 2:
          if(typeof match !== "number" && 2 === match[0])
           {var
             fmtty_rest$1=match[1],
             sub_fmtty_rest$3=sub_fmtty[1],
             match$2=
              type_ignored_format_substituti
               (sub_fmtty_rest$3,fmt,fmtty_rest$1),
             fmt$2=match$2[2],
             sub_fmtty_rest$4=match$2[1];
            return [0,[2,sub_fmtty_rest$4],fmt$2]}
          break;
         case 3:
          if(typeof match !== "number" && 3 === match[0])
           {var
             fmtty_rest$2=match[1],
             sub_fmtty_rest$5=sub_fmtty[1],
             match$3=
              type_ignored_format_substituti
               (sub_fmtty_rest$5,fmt,fmtty_rest$2),
             fmt$3=match$3[2],
             sub_fmtty_rest$6=match$3[1];
            return [0,[3,sub_fmtty_rest$6],fmt$3]}
          break;
         case 4:
          if(typeof match !== "number" && 4 === match[0])
           {var
             fmtty_rest$3=match[1],
             sub_fmtty_rest$7=sub_fmtty[1],
             match$4=
              type_ignored_format_substituti
               (sub_fmtty_rest$7,fmt,fmtty_rest$3),
             fmt$4=match$4[2],
             sub_fmtty_rest$8=match$4[1];
            return [0,[4,sub_fmtty_rest$8],fmt$4]}
          break;
         case 5:
          if(typeof match !== "number" && 5 === match[0])
           {var
             fmtty_rest$4=match[1],
             sub_fmtty_rest$9=sub_fmtty[1],
             match$5=
              type_ignored_format_substituti
               (sub_fmtty_rest$9,fmt,fmtty_rest$4),
             fmt$5=match$5[2],
             sub_fmtty_rest$10=match$5[1];
            return [0,[5,sub_fmtty_rest$10],fmt$5]}
          break;
         case 6:
          if(typeof match !== "number" && 6 === match[0])
           {var
             fmtty_rest$5=match[1],
             sub_fmtty_rest$11=sub_fmtty[1],
             match$6=
              type_ignored_format_substituti
               (sub_fmtty_rest$11,fmt,fmtty_rest$5),
             fmt$6=match$6[2],
             sub_fmtty_rest$12=match$6[1];
            return [0,[6,sub_fmtty_rest$12],fmt$6]}
          break;
         case 7:
          if(typeof match !== "number" && 7 === match[0])
           {var
             fmtty_rest$6=match[1],
             sub_fmtty_rest$13=sub_fmtty[1],
             match$7=
              type_ignored_format_substituti
               (sub_fmtty_rest$13,fmt,fmtty_rest$6),
             fmt$7=match$7[2],
             sub_fmtty_rest$14=match$7[1];
            return [0,[7,sub_fmtty_rest$14],fmt$7]}
          break;
         case 8:
          if(typeof match !== "number" && 8 === match[0])
           {var
             fmtty_rest$7=match[2],
             sub2_fmtty=match[1],
             sub_fmtty_rest$15=sub_fmtty[2],
             sub2_fmtty$0=sub_fmtty[1];
            if(caml_notequal([0,sub2_fmtty$0],[0,sub2_fmtty]))
             throw Type_mismatch;
            var
             match$8=
              type_ignored_format_substituti
               (sub_fmtty_rest$15,fmt,fmtty_rest$7),
             fmt$8=match$8[2],
             sub_fmtty_rest$16=match$8[1];
            return [0,[8,sub2_fmtty,sub_fmtty_rest$16],fmt$8]}
          break;
         case 9:
          if(typeof match !== "number" && 9 === match[0])
           {var
             fmtty_rest$8=match[3],
             sub2_fmtty$1=match[2],
             sub1_fmtty=match[1],
             sub_fmtty_rest$17=sub_fmtty[3],
             sub2_fmtty$2=sub_fmtty[2],
             sub1_fmtty$0=sub_fmtty[1],
             _rG_=[0,erase_rel(sub1_fmtty)];
            if(caml_notequal([0,erase_rel(sub1_fmtty$0)],_rG_))
             throw Type_mismatch;
            var _rH_=[0,erase_rel(sub2_fmtty$1)];
            if(caml_notequal([0,erase_rel(sub2_fmtty$2)],_rH_))
             throw Type_mismatch;
            var
             sub_fmtty$0=trans(symm(sub1_fmtty),sub2_fmtty$1),
             match$9=fmtty_rel_det(sub_fmtty$0),
             f4=match$9[4],
             f2=match$9[2];
            caml_call1(f2,0);
            caml_call1(f4,0);
            var
             match$10=
              type_ignored_format_substituti
               (erase_rel(sub_fmtty_rest$17),fmt,fmtty_rest$8),
             fmt$9=match$10[2],
             sub_fmtty_rest$18=match$10[1];
            return [0,
                    [9,sub1_fmtty,sub2_fmtty$1,symm(sub_fmtty_rest$18)],
                    fmt$9]}
          break;
         case 10:
          if(typeof match !== "number" && 10 === match[0])
           {var
             fmtty_rest$9=match[1],
             sub_fmtty_rest$19=sub_fmtty[1],
             match$11=
              type_ignored_format_substituti
               (sub_fmtty_rest$19,fmt,fmtty_rest$9),
             fmt$10=match$11[2],
             sub_fmtty_rest$20=match$11[1];
            return [0,[10,sub_fmtty_rest$20],fmt$10]}
          break;
         case 11:
          if(typeof match !== "number" && 11 === match[0])
           {var
             fmtty_rest$10=match[1],
             sub_fmtty_rest$21=sub_fmtty[1],
             match$12=
              type_ignored_format_substituti
               (sub_fmtty_rest$21,fmt,fmtty_rest$10),
             fmt$11=match$12[2],
             sub_fmtty_rest$22=match$12[1];
            return [0,[11,sub_fmtty_rest$22],fmt$11]}
          break;
         case 13:
          if(typeof match !== "number" && 13 === match[0])
           {var
             fmtty_rest$11=match[1],
             sub_fmtty_rest$23=sub_fmtty[1],
             match$13=
              type_ignored_format_substituti
               (sub_fmtty_rest$23,fmt,fmtty_rest$11),
             fmt$12=match$13[2],
             sub_fmtty_rest$24=match$13[1];
            return [0,[13,sub_fmtty_rest$24],fmt$12]}
          break;
         case 14:
          if(typeof match !== "number" && 14 === match[0])
           {var
             fmtty_rest$12=match[1],
             sub_fmtty_rest$25=sub_fmtty[1],
             match$14=
              type_ignored_format_substituti
               (sub_fmtty_rest$25,fmt,fmtty_rest$12),
             fmt$13=match$14[2],
             sub_fmtty_rest$26=match$14[1];
            return [0,[14,sub_fmtty_rest$26],fmt$13]}
          break
         }
      throw Type_mismatch}
    function recast(fmt,fmtty){return type_format(fmt,erase_rel(symm(fmtty)))}
    function fix_padding(padty,width,str)
     {var
       len=caml_ml_string_length(str),
       padty$0=0 <= width?padty:0,
       width$0=abs(width);
      if(width$0 <= len)return str;
      var _rF_=2 === padty$0?48:32,res=make(width$0,_rF_);
      switch(padty$0)
       {case 0:blit$0(str,0,res,0,len);break;
        case 1:blit$0(str,0,res,width$0 - len | 0,len);break;
        default:
         var switch$0=0;
         if(0 < len)
          {var switch$1=0;
           if
            (43
             !==
             caml_string_get(str,0)
             &&
             45
             !==
             caml_string_get(str,0)
             &&
             32
             !==
             caml_string_get(str,0))
            {switch$0 = 1;switch$1 = 1}
           if(! switch$1)
            {caml_bytes_set(res,0,caml_string_get(str,0));
             blit$0(str,1,res,(width$0 - len | 0) + 1 | 0,len - 1 | 0)}}
         else
          switch$0 = 1;
         if(switch$0)
          {var switch$2=0;
           if(1 < len && 48 === caml_string_get(str,0))
            {var switch$3=0;
             if
              (120
               !==
               caml_string_get(str,1)
               &&
               88
               !==
               caml_string_get(str,1))
              {switch$2 = 1;switch$3 = 1}
             if(! switch$3)
              {caml_bytes_set(res,1,caml_string_get(str,1));
               blit$0(str,2,res,(width$0 - len | 0) + 2 | 0,len - 2 | 0)}}
           else
            switch$2 = 1;
           if(switch$2)blit$0(str,0,res,width$0 - len | 0,len)}}
      return caml_string_of_bytes(res)}
    function fix_int_precision(prec,str)
     {var
       prec$0=abs(prec),
       len=caml_ml_string_length(str),
       c=caml_string_get(str,0),
       switch$0=0;
      if(58 <= c)
       {if(71 <= c)
         {if(! (5 < (c - 97 | 0) >>> 0))switch$0 = 1}
        else
         if(65 <= c)switch$0 = 1}
      else
       {var switch$1=0;
        if(32 !== c)
         if(43 <= c)
          {var switcher=c - 43 | 0;
           switch(switcher)
            {case 5:
              if(len < (prec$0 + 2 | 0) && 1 < len)
               {var switch$2=0;
                if
                 (120
                  ===
                  caml_string_get(str,1)
                  ||
                  88
                  ===
                  caml_string_get(str,1))
                 switch$2 = 1;
                if(switch$2)
                 {var res$1=make(prec$0 + 2 | 0,48);
                  caml_bytes_set(res$1,1,caml_string_get(str,1));
                  blit$0(str,2,res$1,(prec$0 - len | 0) + 4 | 0,len - 2 | 0);
                  return caml_string_of_bytes(res$1)}}
              switch$0 = 1;
              switch$1 = 1;
              break;
             case 0:
             case 2:break;
             case 1:
             case 3:
             case 4:switch$1 = 1;break;
             default:switch$0 = 1;switch$1 = 1}}
         else
          switch$1 = 1;
        if(! switch$1 && len < (prec$0 + 1 | 0))
         {var res$0=make(prec$0 + 1 | 0,48);
          caml_bytes_set(res$0,0,c);
          blit$0(str,1,res$0,(prec$0 - len | 0) + 2 | 0,len - 1 | 0);
          return caml_string_of_bytes(res$0)}}
      if(switch$0 && len < prec$0)
       {var res=make(prec$0,48);
        blit$0(str,0,res,prec$0 - len | 0,len);
        return caml_string_of_bytes(res)}
      return str}
    function string_to_caml_string(str)
     {var
       str$0=escaped$1(str),
       l=caml_ml_string_length(str$0),
       res=make(l + 2 | 0,34);
      caml_blit_string(str$0,0,res,1,l);
      return caml_string_of_bytes(res)}
    function format_of_fconv(fconv,prec)
     {var
       prec$0=abs(prec),
       symb=char_of_fconv(_ao_,fconv),
       buf=buffer_create(16);
      buffer_add_char(buf,37);
      bprint_fconv_flag(buf,fconv);
      buffer_add_char(buf,46);
      buffer_add_string(buf,caml_string_of_jsbytes("" + prec$0));
      buffer_add_char(buf,symb);
      return buffer_contents(buf)}
    function transform_int_alt(iconv,s)
     {if(13 <= iconv)
       {var n=[0,0],_rA_=caml_ml_string_length(s) - 1 | 0,_rz_=0;
        if(! (_rA_ < 0))
         {var i$0=_rz_;
          for(;;)
           {var match=caml_string_unsafe_get(s,i$0),switcher$0=match - 48 | 0;
            if(! (9 < switcher$0 >>> 0))n[1]++;
            var _rE_=i$0 + 1 | 0;
            if(_rA_ !== i$0){var i$0=_rE_;continue}
            break}}
        var
         digits=n[1],
         buf=
          caml_create_bytes
           (caml_ml_string_length(s) + ((digits - 1 | 0) / 3 | 0) | 0),
         pos=[0,0],
         put=function(c){caml_bytes_set(buf,pos[1],c);pos[1]++;return 0},
         left=[0,((digits - 1 | 0) % 3 | 0) + 1 | 0],
         _rC_=caml_ml_string_length(s) - 1 | 0,
         _rB_=0;
        if(! (_rC_ < 0))
         {var i=_rB_;
          for(;;)
           {var c=caml_string_unsafe_get(s,i),switcher=c - 48 | 0;
            if(9 < switcher >>> 0)
             put(c);
            else
             {if(0 === left[1]){put(95);left[1] = 3}left[1] += -1;put(c)}
            var _rD_=i + 1 | 0;
            if(_rC_ !== i){var i=_rD_;continue}
            break}}
        return caml_string_of_bytes(buf)}
      return s}
    function convert_int(iconv,n)
     {switch(iconv)
       {case 1:var _ry_=cst_d$3;break;
        case 2:var _ry_=cst_d$4;break;
        case 4:var _ry_=cst_i$1;break;
        case 5:var _ry_=cst_i$2;break;
        case 6:var _ry_=cst_x;break;
        case 7:var _ry_=cst_x$0;break;
        case 8:var _ry_=cst_X$0;break;
        case 9:var _ry_=cst_X$1;break;
        case 10:var _ry_=cst_o;break;
        case 11:var _ry_=cst_o$0;break;
        case 0:
        case 13:var _ry_=cst_d$2;break;
        case 3:
        case 14:var _ry_=cst_i$0;break;
        default:var _ry_=cst_u}
      return transform_int_alt(iconv,caml_format_int(_ry_,n))}
    function convert_int32(iconv,n)
     {switch(iconv)
       {case 1:var _rx_=cst_ld$0;break;
        case 2:var _rx_=cst_ld$1;break;
        case 4:var _rx_=cst_li$1;break;
        case 5:var _rx_=cst_li$2;break;
        case 6:var _rx_=cst_lx;break;
        case 7:var _rx_=cst_lx$0;break;
        case 8:var _rx_=cst_lX;break;
        case 9:var _rx_=cst_lX$0;break;
        case 10:var _rx_=cst_lo;break;
        case 11:var _rx_=cst_lo$0;break;
        case 0:
        case 13:var _rx_=cst_ld;break;
        case 3:
        case 14:var _rx_=cst_li$0;break;
        default:var _rx_=cst_lu}
      return transform_int_alt(iconv,caml_format_int(_rx_,n))}
    function convert_nativeint(iconv,n)
     {switch(iconv)
       {case 1:var _rw_=cst_nd$0;break;
        case 2:var _rw_=cst_nd$1;break;
        case 4:var _rw_=cst_ni$1;break;
        case 5:var _rw_=cst_ni$2;break;
        case 6:var _rw_=cst_nx;break;
        case 7:var _rw_=cst_nx$0;break;
        case 8:var _rw_=cst_nX;break;
        case 9:var _rw_=cst_nX$0;break;
        case 10:var _rw_=cst_no;break;
        case 11:var _rw_=cst_no$0;break;
        case 0:
        case 13:var _rw_=cst_nd;break;
        case 3:
        case 14:var _rw_=cst_ni$0;break;
        default:var _rw_=cst_nu}
      return transform_int_alt(iconv,caml_format_int(_rw_,n))}
    function convert_int64(iconv,n)
     {switch(iconv)
       {case 1:var _rv_=cst_Ld$0;break;
        case 2:var _rv_=cst_Ld$1;break;
        case 4:var _rv_=cst_Li$1;break;
        case 5:var _rv_=cst_Li$2;break;
        case 6:var _rv_=cst_Lx;break;
        case 7:var _rv_=cst_Lx$0;break;
        case 8:var _rv_=cst_LX;break;
        case 9:var _rv_=cst_LX$0;break;
        case 10:var _rv_=cst_Lo;break;
        case 11:var _rv_=cst_Lo$0;break;
        case 0:
        case 13:var _rv_=cst_Ld;break;
        case 3:
        case 14:var _rv_=cst_Li$0;break;
        default:var _rv_=cst_Lu}
      return transform_int_alt(iconv,caml_int64_format(_rv_,n))}
    function convert_float(fconv,prec,x)
     {function hex(param)
       {switch(fconv[1])
         {case 0:var sign=45;break;
          case 1:var sign=43;break;
          default:var sign=32}
        return runtime.caml_hexstring_of_float(x,prec,sign)}
      function caml_special_val(str)
       {var match=runtime.caml_classify_float(x);
        return 3 === match
                ?x < 0.?cst_neg_infinity:cst_infinity
                :4 <= match?cst_nan:str}
      switch(fconv[2])
       {case 5:
         var
          str=caml_format_float(format_of_fconv(fconv,prec),x),
          len=caml_ml_string_length(str),
          i=0;
         for(;;)
          {if(i === len)
            var _rt_=0;
           else
            {var match=caml_string_get(str,i),_rs_=match - 46 | 0,switch$0=0;
             if(23 < _rs_ >>> 0)
              {if(55 === _rs_)switch$0 = 1}
             else
              if(21 < (_rs_ - 1 | 0) >>> 0)switch$0 = 1;
             if(! switch$0){var i$0=i + 1 | 0,i=i$0;continue}
             var _rt_=1}
           var _ru_=_rt_?str:symbol(str,cst$29);
           return caml_special_val(_ru_)}
        case 6:return hex(0);
        case 7:return uppercase_ascii$1(hex(0));
        case 8:return caml_special_val(hex(0));
        default:return caml_format_float(format_of_fconv(fconv,prec),x)}}
    function string_of_fmtty(fmtty)
     {var buf=buffer_create(16);
      bprint_fmtty(buf,fmtty);
      return buffer_contents(buf)}
    function make_int_padding_precision(k,acc,fmt,pad,match,trans,iconv)
     {if(typeof pad === "number")
       {if(typeof match === "number")
         return match
                 ?function(p,x)
                   {var str=fix_int_precision(p,caml_call2(trans,iconv,x));
                    return make_printf(k,[4,acc,str],fmt)}
                 :function(x)
                   {var str=caml_call2(trans,iconv,x);
                    return make_printf(k,[4,acc,str],fmt)};
        var p=match[1];
        return function(x)
         {var str=fix_int_precision(p,caml_call2(trans,iconv,x));
          return make_printf(k,[4,acc,str],fmt)}}
      else
       {if(0 === pad[0])
         {var _rp_=pad[2],_rq_=pad[1];
          if(typeof match === "number")
           return match
                   ?function(p,x)
                     {var
                       str=
                        fix_padding
                         (_rq_,_rp_,fix_int_precision(p,caml_call2(trans,iconv,x)));
                      return make_printf(k,[4,acc,str],fmt)}
                   :function(x)
                     {var str=fix_padding(_rq_,_rp_,caml_call2(trans,iconv,x));
                      return make_printf(k,[4,acc,str],fmt)};
          var p$0=match[1];
          return function(x)
           {var
             str=
              fix_padding
               (_rq_,_rp_,fix_int_precision(p$0,caml_call2(trans,iconv,x)));
            return make_printf(k,[4,acc,str],fmt)}}
        var _rr_=pad[1];
        if(typeof match === "number")
         return match
                 ?function(w,p,x)
                   {var
                     str=
                      fix_padding
                       (_rr_,w,fix_int_precision(p,caml_call2(trans,iconv,x)));
                    return make_printf(k,[4,acc,str],fmt)}
                 :function(w,x)
                   {var str=fix_padding(_rr_,w,caml_call2(trans,iconv,x));
                    return make_printf(k,[4,acc,str],fmt)};
        var p$1=match[1];
        return function(w,x)
         {var
           str=
            fix_padding
             (_rr_,w,fix_int_precision(p$1,caml_call2(trans,iconv,x)));
          return make_printf(k,[4,acc,str],fmt)}}}
    function make_padding(k,acc,fmt,pad,trans)
     {if(typeof pad === "number")
       return function(x)
        {var new_acc=[4,acc,caml_call1(trans,x)];
         return make_printf(k,new_acc,fmt)};
      else
       {if(0 === pad[0])
         {var width=pad[2],padty=pad[1];
          return function(x)
           {var new_acc=[4,acc,fix_padding(padty,width,caml_call1(trans,x))];
            return make_printf(k,new_acc,fmt)}}
        var padty$0=pad[1];
        return function(w,x)
         {var new_acc=[4,acc,fix_padding(padty$0,w,caml_call1(trans,x))];
          return make_printf(k,new_acc,fmt)}}}
    function make_printf$0(counter,k,acc,fmt)
     {var k$0=k,acc$0=acc,fmt$0=fmt;
      for(;;)
       if(typeof fmt$0 === "number")
        return caml_call1(k$0,acc$0);
       else
        switch(fmt$0[0])
         {case 0:
           var rest=fmt$0[1];
           return function(c)
            {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest)};
          case 1:
           var rest$0=fmt$0[1];
           return function(c)
            {var
              str=escaped(c),
              l=caml_ml_string_length(str),
              res=make(l + 2 | 0,39);
             caml_blit_string(str,0,res,1,l);
             var new_acc=[4,acc$0,caml_string_of_bytes(res)];
             return make_printf(k$0,new_acc,rest$0)};
          case 2:
           var rest$1=fmt$0[2],pad=fmt$0[1];
           return make_padding(k$0,acc$0,rest$1,pad,function(str){return str});
          case 3:
           var rest$2=fmt$0[2],pad$0=fmt$0[1];
           return make_padding(k$0,acc$0,rest$2,pad$0,string_to_caml_string);
          case 4:
           var rest$3=fmt$0[4],prec=fmt$0[3],pad$1=fmt$0[2],iconv=fmt$0[1];
           return make_int_padding_precision
                   (k$0,acc$0,rest$3,pad$1,prec,convert_int,iconv);
          case 5:
           var
            rest$4=fmt$0[4],
            prec$0=fmt$0[3],
            pad$2=fmt$0[2],
            iconv$0=fmt$0[1];
           return make_int_padding_precision
                   (k$0,acc$0,rest$4,pad$2,prec$0,convert_int32,iconv$0);
          case 6:
           var
            rest$5=fmt$0[4],
            prec$1=fmt$0[3],
            pad$3=fmt$0[2],
            iconv$1=fmt$0[1];
           return make_int_padding_precision
                   (k$0,acc$0,rest$5,pad$3,prec$1,convert_nativeint,iconv$1);
          case 7:
           var
            rest$6=fmt$0[4],
            prec$2=fmt$0[3],
            pad$4=fmt$0[2],
            iconv$2=fmt$0[1];
           return make_int_padding_precision
                   (k$0,acc$0,rest$6,pad$4,prec$2,convert_int64,iconv$2);
          case 8:
           var rest$7=fmt$0[4],prec$3=fmt$0[3],pad$5=fmt$0[2],fconv=fmt$0[1];
           if(typeof pad$5 === "number")
            {if(typeof prec$3 === "number")
              return prec$3
                      ?function(p,x)
                        {var str=convert_float(fconv,p,x);
                         return make_printf(k$0,[4,acc$0,str],rest$7)}
                      :function(x)
                        {var
                          str=
                           convert_float(fconv,default_float_precision(fconv),x);
                         return make_printf(k$0,[4,acc$0,str],rest$7)};
             var p=prec$3[1];
             return function(x)
              {var str=convert_float(fconv,p,x);
               return make_printf(k$0,[4,acc$0,str],rest$7)}}
           else
            {if(0 === pad$5[0])
              {var _rm_=pad$5[2],_rn_=pad$5[1];
               if(typeof prec$3 === "number")
                return prec$3
                        ?function(p,x)
                          {var str=fix_padding(_rn_,_rm_,convert_float(fconv,p,x));
                           return make_printf(k$0,[4,acc$0,str],rest$7)}
                        :function(x)
                          {var
                            str=convert_float(fconv,default_float_precision(fconv),x),
                            str$0=fix_padding(_rn_,_rm_,str);
                           return make_printf(k$0,[4,acc$0,str$0],rest$7)};
               var p$0=prec$3[1];
               return function(x)
                {var str=fix_padding(_rn_,_rm_,convert_float(fconv,p$0,x));
                 return make_printf(k$0,[4,acc$0,str],rest$7)}}
             var _ro_=pad$5[1];
             if(typeof prec$3 === "number")
              return prec$3
                      ?function(w,p,x)
                        {var str=fix_padding(_ro_,w,convert_float(fconv,p,x));
                         return make_printf(k$0,[4,acc$0,str],rest$7)}
                      :function(w,x)
                        {var
                          str=convert_float(fconv,default_float_precision(fconv),x),
                          str$0=fix_padding(_ro_,w,str);
                         return make_printf(k$0,[4,acc$0,str$0],rest$7)};
             var p$1=prec$3[1];
             return function(w,x)
              {var str=fix_padding(_ro_,w,convert_float(fconv,p$1,x));
               return make_printf(k$0,[4,acc$0,str],rest$7)}}
          case 9:
           var rest$8=fmt$0[2],pad$6=fmt$0[1];
           return make_padding(k$0,acc$0,rest$8,pad$6,string_of_bool);
          case 10:
           var fmt$1=fmt$0[1],acc$1=[7,acc$0],acc$0=acc$1,fmt$0=fmt$1;
           continue;
          case 11:
           var
            fmt$2=fmt$0[2],
            str=fmt$0[1],
            acc$2=[2,acc$0,str],
            acc$0=acc$2,
            fmt$0=fmt$2;
           continue;
          case 12:
           var
            fmt$3=fmt$0[2],
            chr=fmt$0[1],
            acc$3=[3,acc$0,chr],
            acc$0=acc$3,
            fmt$0=fmt$3;
           continue;
          case 13:
           var
            rest$9=fmt$0[3],
            sub_fmtty=fmt$0[2],
            ty=string_of_fmtty(sub_fmtty);
           return function(str){return make_printf(k$0,[4,acc$0,ty],rest$9)};
          case 14:
           var rest$10=fmt$0[3],fmtty=fmt$0[2];
           return function(param)
            {var fmt=param[1];
             return make_printf
                     (k$0,acc$0,concat_fmt(recast(fmt,fmtty),rest$10))};
          case 15:
           var rest$11=fmt$0[1];
           return function(f,x)
            {return make_printf
                     (k$0,
                      [6,acc$0,function(o){return caml_call2(f,o,x)}],
                      rest$11)};
          case 16:
           var rest$12=fmt$0[1];
           return function(f){return make_printf(k$0,[6,acc$0,f],rest$12)};
          case 17:
           var
            fmt$4=fmt$0[2],
            fmting_lit=fmt$0[1],
            acc$4=[0,acc$0,fmting_lit],
            acc$0=acc$4,
            fmt$0=fmt$4;
           continue;
          case 18:
           var _rk_=fmt$0[1];
           if(0 === _rk_[0])
            {var
              rest$13=fmt$0[2],
              match=_rk_[1],
              fmt$5=match[1],
              k$3=
               function(acc,k,rest)
                {function k$0(kacc)
                  {return make_printf(k,[1,acc,[0,kacc]],rest)}
                 return k$0},
              k$1=k$3(acc$0,k$0,rest$13),
              k$0=k$1,
              acc$0=0,
              fmt$0=fmt$5;
             continue}
           var
            rest$14=fmt$0[2],
            match$0=_rk_[1],
            fmt$6=match$0[1],
            k$4=
             function(acc,k,rest)
              {function k$0(kacc){return make_printf(k,[1,acc,[1,kacc]],rest)}
               return k$0},
            k$2=k$4(acc$0,k$0,rest$14),
            k$0=k$2,
            acc$0=0,
            fmt$0=fmt$6;
           continue;
          case 19:throw [0,Assert_failure,_ap_];
          case 20:
           var rest$15=fmt$0[3],new_acc=[8,acc$0,cst_Printf_bad_conversion];
           return function(param){return make_printf(k$0,new_acc,rest$15)};
          case 21:
           var rest$16=fmt$0[2];
           return function(n)
            {var new_acc=[4,acc$0,caml_format_int(cst_u$0,n)];
             return make_printf(k$0,new_acc,rest$16)};
          case 22:
           var rest$17=fmt$0[1];
           return function(c)
            {var new_acc=[5,acc$0,c];return make_printf(k$0,new_acc,rest$17)};
          case 23:
           var rest$18=fmt$0[2],ign=fmt$0[1];
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return make_ignored_param$0(counter$1,k$0,acc$0,ign,rest$18)}
           return caml_trampoline_return
                   (make_ignored_param$0,[0,k$0,acc$0,ign,rest$18]);
          default:
           var
            rest$19=fmt$0[3],
            f=fmt$0[2],
            arity=fmt$0[1],
            _rl_=caml_call1(f,0);
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return make_custom$0(counter$0,k$0,acc$0,rest$19,arity,_rl_)}
           return caml_trampoline_return
                   (make_custom$0,[0,k$0,acc$0,rest$19,arity,_rl_])}}
    function make_ignored_param$0(counter,k,acc,ign,fmt)
     {if(typeof ign === "number")
       switch(ign)
        {case 0:
          if(counter < 50)
           {var counter$0=counter + 1 | 0;
            return make_invalid_arg(counter$0,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 1:
          if(counter < 50)
           {var counter$1=counter + 1 | 0;
            return make_invalid_arg(counter$1,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 2:throw [0,Assert_failure,_aq_];
         default:
          if(counter < 50)
           {var counter$2=counter + 1 | 0;
            return make_invalid_arg(counter$2,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}
      else
       switch(ign[0])
        {case 0:
          if(counter < 50)
           {var counter$3=counter + 1 | 0;
            return make_invalid_arg(counter$3,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 1:
          if(counter < 50)
           {var counter$4=counter + 1 | 0;
            return make_invalid_arg(counter$4,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 2:
          if(counter < 50)
           {var counter$5=counter + 1 | 0;
            return make_invalid_arg(counter$5,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 3:
          if(counter < 50)
           {var counter$6=counter + 1 | 0;
            return make_invalid_arg(counter$6,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 4:
          if(counter < 50)
           {var counter$7=counter + 1 | 0;
            return make_invalid_arg(counter$7,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 5:
          if(counter < 50)
           {var counter$8=counter + 1 | 0;
            return make_invalid_arg(counter$8,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 6:
          if(counter < 50)
           {var counter$9=counter + 1 | 0;
            return make_invalid_arg(counter$9,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 7:
          if(counter < 50)
           {var counter$10=counter + 1 | 0;
            return make_invalid_arg(counter$10,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 8:
          if(counter < 50)
           {var counter$11=counter + 1 | 0;
            return make_invalid_arg(counter$11,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         case 9:
          var fmtty=ign[2];
          if(counter < 50)
           {var counter$14=counter + 1 | 0;
            return make_from_fmtty$0(counter$14,k,acc,fmtty,fmt)}
          return caml_trampoline_return(make_from_fmtty$0,[0,k,acc,fmtty,fmt]);
         case 10:
          if(counter < 50)
           {var counter$12=counter + 1 | 0;
            return make_invalid_arg(counter$12,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt]);
         default:
          if(counter < 50)
           {var counter$13=counter + 1 | 0;
            return make_invalid_arg(counter$13,k,acc,fmt)}
          return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}}
    function make_from_fmtty$0(counter,k,acc,fmtty,fmt)
     {if(typeof fmtty === "number")
       {if(counter < 50)
         {var counter$0=counter + 1 | 0;
          return make_invalid_arg(counter$0,k,acc,fmt)}
        return caml_trampoline_return(make_invalid_arg,[0,k,acc,fmt])}
      else
       switch(fmtty[0])
        {case 0:
          var rest=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest,fmt)};
         case 1:
          var rest$0=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest$0,fmt)};
         case 2:
          var rest$1=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest$1,fmt)};
         case 3:
          var rest$2=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest$2,fmt)};
         case 4:
          var rest$3=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest$3,fmt)};
         case 5:
          var rest$4=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest$4,fmt)};
         case 6:
          var rest$5=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest$5,fmt)};
         case 7:
          var rest$6=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest$6,fmt)};
         case 8:
          var rest$7=fmtty[2];
          return function(param){return make_from_fmtty(k,acc,rest$7,fmt)};
         case 9:
          var
           rest$8=fmtty[3],
           ty2=fmtty[2],
           ty1=fmtty[1],
           ty=trans(symm(ty1),ty2);
          return function(param)
           {return make_from_fmtty(k,acc,concat_fmtty(ty,rest$8),fmt)};
         case 10:
          var rest$9=fmtty[1];
          return function(param,_rj_)
           {return make_from_fmtty(k,acc,rest$9,fmt)};
         case 11:
          var rest$10=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest$10,fmt)};
         case 12:
          var rest$11=fmtty[1];
          return function(param){return make_from_fmtty(k,acc,rest$11,fmt)};
         case 13:throw [0,Assert_failure,_ar_];
         default:throw [0,Assert_failure,_as_]}}
    function make_invalid_arg(counter,k,acc,fmt)
     {var _ri_=[8,acc,cst_Printf_bad_conversion$0];
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return make_printf$0(counter$0,k,_ri_,fmt)}
      return caml_trampoline_return(make_printf$0,[0,k,_ri_,fmt])}
    function make_custom$0(counter,k,acc,rest,arity,f)
     {if(arity)
       {var arity$0=arity[1];
        return function(x)
         {return make_custom(k,acc,rest,arity$0,caml_call1(f,x))}}
      var _rh_=[4,acc,f];
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return make_printf$0(counter$0,k,_rh_,rest)}
      return caml_trampoline_return(make_printf$0,[0,k,_rh_,rest])}
    function make_printf(k,acc,fmt)
     {return caml_trampoline(make_printf$0(0,k,acc,fmt))}
    function make_ignored_param(k,acc,ign,fmt)
     {return caml_trampoline(make_ignored_param$0(0,k,acc,ign,fmt))}
    function make_from_fmtty(k,acc,fmtty,fmt)
     {return caml_trampoline(make_from_fmtty$0(0,k,acc,fmtty,fmt))}
    function make_custom(k,acc,rest,arity,f)
     {return caml_trampoline(make_custom$0(0,k,acc,rest,arity,f))}
    function fn_of_padding_precision(k,o,fmt,pad,prec)
     {if(typeof pad === "number")
       {if(typeof prec === "number")
         {if(prec)
           {var _qP_=make_iprintf(k,o,fmt),_qQ_=function(_q7_){return _qP_};
            return function(_q6_){return _qQ_}}
          var _qR_=make_iprintf(k,o,fmt);
          return function(_q5_){return _qR_}}
        var _qS_=make_iprintf(k,o,fmt);
        return function(_q4_){return _qS_}}
      else
       {if(0 === pad[0])
         {if(typeof prec === "number")
           {if(prec)
             {var _qT_=make_iprintf(k,o,fmt),_qU_=function(_rg_){return _qT_};
              return function(_rf_){return _qU_}}
            var _qV_=make_iprintf(k,o,fmt);
            return function(_re_){return _qV_}}
          var _qW_=make_iprintf(k,o,fmt);
          return function(_rd_){return _qW_}}
        if(typeof prec === "number")
         {if(prec)
           {var
             _qX_=make_iprintf(k,o,fmt),
             _qY_=function(_rc_){return _qX_},
             _qZ_=function(_rb_){return _qY_};
            return function(_ra_){return _qZ_}}
          var _q0_=make_iprintf(k,o,fmt),_q1_=function(_q$_){return _q0_};
          return function(_q__){return _q1_}}
        var _q2_=make_iprintf(k,o,fmt),_q3_=function(_q9_){return _q2_};
        return function(_q8_){return _q3_}}}
    function make_iprintf$0(counter,k,o,fmt)
     {var k$0=k,fmt$0=fmt;
      for(;;)
       if(typeof fmt$0 === "number")
        return caml_call1(k$0,o);
       else
        switch(fmt$0[0])
         {case 0:
           var rest=fmt$0[1],_p6_=make_iprintf(k$0,o,rest);
           return function(_qO_){return _p6_};
          case 1:
           var rest$0=fmt$0[1],_p7_=make_iprintf(k$0,o,rest$0);
           return function(_qN_){return _p7_};
          case 2:
           var _p8_=fmt$0[1];
           if(typeof _p8_ === "number")
            {var rest$1=fmt$0[2],_p9_=make_iprintf(k$0,o,rest$1);
             return function(_qJ_){return _p9_}}
           else
            {if(0 === _p8_[0])
              {var rest$2=fmt$0[2],_p__=make_iprintf(k$0,o,rest$2);
               return function(_qM_){return _p__}}
             var
              rest$3=fmt$0[2],
              _p$_=make_iprintf(k$0,o,rest$3),
              _qa_=function(_qL_){return _p$_};
             return function(_qK_){return _qa_}}
          case 3:
           var _qb_=fmt$0[1];
           if(typeof _qb_ === "number")
            {var rest$4=fmt$0[2],_qc_=make_iprintf(k$0,o,rest$4);
             return function(_qF_){return _qc_}}
           else
            {if(0 === _qb_[0])
              {var rest$5=fmt$0[2],_qd_=make_iprintf(k$0,o,rest$5);
               return function(_qI_){return _qd_}}
             var
              rest$6=fmt$0[2],
              _qe_=make_iprintf(k$0,o,rest$6),
              _qf_=function(_qH_){return _qe_};
             return function(_qG_){return _qf_}}
          case 4:
           var rest$7=fmt$0[4],prec=fmt$0[3],pad=fmt$0[2];
           return fn_of_padding_precision(k$0,o,rest$7,pad,prec);
          case 5:
           var rest$8=fmt$0[4],prec$0=fmt$0[3],pad$0=fmt$0[2];
           return fn_of_padding_precision(k$0,o,rest$8,pad$0,prec$0);
          case 6:
           var rest$9=fmt$0[4],prec$1=fmt$0[3],pad$1=fmt$0[2];
           return fn_of_padding_precision(k$0,o,rest$9,pad$1,prec$1);
          case 7:
           var rest$10=fmt$0[4],prec$2=fmt$0[3],pad$2=fmt$0[2];
           return fn_of_padding_precision(k$0,o,rest$10,pad$2,prec$2);
          case 8:
           var rest$11=fmt$0[4],prec$3=fmt$0[3],pad$3=fmt$0[2];
           return fn_of_padding_precision(k$0,o,rest$11,pad$3,prec$3);
          case 9:
           var _qg_=fmt$0[1];
           if(typeof _qg_ === "number")
            {var rest$12=fmt$0[2],_qh_=make_iprintf(k$0,o,rest$12);
             return function(_qB_){return _qh_}}
           else
            {if(0 === _qg_[0])
              {var rest$13=fmt$0[2],_qi_=make_iprintf(k$0,o,rest$13);
               return function(_qE_){return _qi_}}
             var
              rest$14=fmt$0[2],
              _qj_=make_iprintf(k$0,o,rest$14),
              _qk_=function(_qD_){return _qj_};
             return function(_qC_){return _qk_}}
          case 10:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue;
          case 11:var fmt$2=fmt$0[2],fmt$0=fmt$2;continue;
          case 12:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue;
          case 13:
           var rest$15=fmt$0[3],_ql_=make_iprintf(k$0,o,rest$15);
           return function(_qA_){return _ql_};
          case 14:
           var rest$16=fmt$0[3],fmtty=fmt$0[2];
           return function(param)
            {var fmt=param[1];
             return make_iprintf(k$0,o,concat_fmt(recast(fmt,fmtty),rest$16))};
          case 15:
           var
            rest$17=fmt$0[1],
            _qm_=make_iprintf(k$0,o,rest$17),
            _qn_=function(_qz_){return _qm_};
           return function(_qy_){return _qn_};
          case 16:
           var rest$18=fmt$0[1],_qo_=make_iprintf(k$0,o,rest$18);
           return function(_qx_){return _qo_};
          case 17:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue;
          case 18:
           var _qp_=fmt$0[1];
           if(0 === _qp_[0])
            {var
              rest$19=fmt$0[2],
              match=_qp_[1],
              fmt$5=match[1],
              k$3=
               function(k,rest)
                {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0},
              k$1=k$3(k$0,rest$19),
              k$0=k$1,
              fmt$0=fmt$5;
             continue}
           var
            rest$20=fmt$0[2],
            match$0=_qp_[1],
            fmt$6=match$0[1],
            k$4=
             function(k,rest)
              {function k$0(koc){return make_iprintf(k,koc,rest)}return k$0},
            k$2=k$4(k$0,rest$20),
            k$0=k$2,
            fmt$0=fmt$6;
           continue;
          case 19:throw [0,Assert_failure,_at_];
          case 20:
           var rest$21=fmt$0[3],_qq_=make_iprintf(k$0,o,rest$21);
           return function(_qw_){return _qq_};
          case 21:
           var rest$22=fmt$0[2],_qr_=make_iprintf(k$0,o,rest$22);
           return function(_qv_){return _qr_};
          case 22:
           var rest$23=fmt$0[1],_qs_=make_iprintf(k$0,o,rest$23);
           return function(_qu_){return _qs_};
          case 23:
           var rest$24=fmt$0[2],ign=fmt$0[1],_qt_=0;
           return make_ignored_param
                   (function(param){return caml_call1(k$0,o)},_qt_,ign,rest$24);
          default:
           var rest$25=fmt$0[3],arity=fmt$0[1];
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return fn_of_custom_arity$0(counter$0,k$0,o,rest$25,arity)}
           return caml_trampoline_return
                   (fn_of_custom_arity$0,[0,k$0,o,rest$25,arity])}}
    function fn_of_custom_arity$0(counter,k,o,fmt,param)
     {if(param)
       {var arity=param[1],_p4_=fn_of_custom_arity(k,o,fmt,arity);
        return function(_p5_){return _p4_}}
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return make_iprintf$0(counter$0,k,o,fmt)}
      return caml_trampoline_return(make_iprintf$0,[0,k,o,fmt])}
    function make_iprintf(k,o,fmt)
     {return caml_trampoline(make_iprintf$0(0,k,o,fmt))}
    function fn_of_custom_arity(k,o,fmt,param)
     {return caml_trampoline(fn_of_custom_arity$0(0,k,o,fmt,param))}
    function output_acc(o,acc)
     {var acc$0=acc;
      for(;;)
       if(typeof acc$0 === "number")
        return 0;
       else
        switch(acc$0[0])
         {case 0:
           var
            fmting_lit=acc$0[2],
            p=acc$0[1],
            s=string_of_formatting_lit(fmting_lit);
           output_acc(o,p);
           return output_string(o,s);
          case 1:
           var _p2_=acc$0[2],_p3_=acc$0[1];
           if(0 === _p2_[0])
            {var acc$1=_p2_[1];
             output_acc(o,_p3_);
             output_string(o,cst$30);
             var acc$0=acc$1;
             continue}
           var acc$2=_p2_[1];
           output_acc(o,_p3_);
           output_string(o,cst$31);
           var acc$0=acc$2;
           continue;
          case 6:
           var f=acc$0[2],p$2=acc$0[1];
           output_acc(o,p$2);
           return caml_call1(f,o);
          case 7:var p$3=acc$0[1];output_acc(o,p$3);return caml_ml_flush(o);
          case 8:
           var msg=acc$0[2],p$4=acc$0[1];
           output_acc(o,p$4);
           return invalid_arg(msg);
          case 2:
          case 4:
           var s$0=acc$0[2],p$0=acc$0[1];
           output_acc(o,p$0);
           return output_string(o,s$0);
          default:
           var c=acc$0[2],p$1=acc$0[1];
           output_acc(o,p$1);
           return caml_ml_output_char(o,c)}}
    function bufput_acc(b,acc)
     {var acc$0=acc;
      for(;;)
       if(typeof acc$0 === "number")
        return 0;
       else
        switch(acc$0[0])
         {case 0:
           var
            fmting_lit=acc$0[2],
            p=acc$0[1],
            s=string_of_formatting_lit(fmting_lit);
           bufput_acc(b,p);
           return add_string(b,s);
          case 1:
           var _p0_=acc$0[2],_p1_=acc$0[1];
           if(0 === _p0_[0])
            {var acc$1=_p0_[1];
             bufput_acc(b,_p1_);
             add_string(b,cst$32);
             var acc$0=acc$1;
             continue}
           var acc$2=_p0_[1];
           bufput_acc(b,_p1_);
           add_string(b,cst$33);
           var acc$0=acc$2;
           continue;
          case 6:
           var f=acc$0[2],p$2=acc$0[1];
           bufput_acc(b,p$2);
           return caml_call1(f,b);
          case 7:var acc$3=acc$0[1],acc$0=acc$3;continue;
          case 8:
           var msg=acc$0[2],p$3=acc$0[1];
           bufput_acc(b,p$3);
           return invalid_arg(msg);
          case 2:
          case 4:
           var s$0=acc$0[2],p$0=acc$0[1];
           bufput_acc(b,p$0);
           return add_string(b,s$0);
          default:
           var c=acc$0[2],p$1=acc$0[1];bufput_acc(b,p$1);return add_char(b,c)}}
    function strput_acc(b,acc)
     {var acc$0=acc;
      for(;;)
       if(typeof acc$0 === "number")
        return 0;
       else
        switch(acc$0[0])
         {case 0:
           var
            fmting_lit=acc$0[2],
            p=acc$0[1],
            s=string_of_formatting_lit(fmting_lit);
           strput_acc(b,p);
           return add_string(b,s);
          case 1:
           var _pY_=acc$0[2],_pZ_=acc$0[1];
           if(0 === _pY_[0])
            {var acc$1=_pY_[1];
             strput_acc(b,_pZ_);
             add_string(b,cst$34);
             var acc$0=acc$1;
             continue}
           var acc$2=_pY_[1];
           strput_acc(b,_pZ_);
           add_string(b,cst$35);
           var acc$0=acc$2;
           continue;
          case 6:
           var f=acc$0[2],p$2=acc$0[1];
           strput_acc(b,p$2);
           return add_string(b,caml_call1(f,0));
          case 7:var acc$3=acc$0[1],acc$0=acc$3;continue;
          case 8:
           var msg=acc$0[2],p$3=acc$0[1];
           strput_acc(b,p$3);
           return invalid_arg(msg);
          case 2:
          case 4:
           var s$0=acc$0[2],p$0=acc$0[1];
           strput_acc(b,p$0);
           return add_string(b,s$0);
          default:
           var c=acc$0[2],p$1=acc$0[1];strput_acc(b,p$1);return add_char(b,c)}}
    function failwith_message(param)
     {var fmt=param[1],buf=create$2(256);
      function k(acc){strput_acc(buf,acc);return failwith(contents(buf))}
      return make_printf(k,0,fmt)}
    function open_box_of_string(str)
     {if(caml_string_equal(str,cst$36))return _au_;
      var len=caml_ml_string_length(str);
      function invalid_box(param)
       {return caml_call1(failwith_message(_av_),str)}
      function parse_spaces(i)
       {var i$0=i;
        for(;;)
         {if(i$0 === len)return i$0;
          var match=caml_string_get(str,i$0);
          if(9 !== match && 32 !== match)return i$0;
          var i$1=i$0 + 1 | 0,i$0=i$1;
          continue}}
      function parse_lword(i,j)
       {var j$0=j;
        for(;;)
         {if(j$0 === len)return j$0;
          var match=caml_string_get(str,j$0),switcher=match - 97 | 0;
          if(25 < switcher >>> 0)return j$0;
          var j$1=j$0 + 1 | 0,j$0=j$1;
          continue}}
      function parse_int(i,j)
       {var j$0=j;
        for(;;)
         {if(j$0 === len)return j$0;
          var match=caml_string_get(str,j$0),switch$0=0;
          if(48 <= match)
           {if(! (58 <= match))switch$0 = 1}
          else
           if(45 === match)switch$0 = 1;
          if(switch$0){var j$1=j$0 + 1 | 0,j$0=j$1;continue}
          return j$0}}
      var
       wstart=parse_spaces(0),
       wend=parse_lword(wstart,wstart),
       box_name=sub$0(str,wstart,wend - wstart | 0),
       nstart=parse_spaces(wend),
       nend=parse_int(nstart,nstart);
      if(nstart === nend)
       var indent=0;
      else
       try
        {var
          _pW_=caml_int_of_string(sub$0(str,nstart,nend - nstart | 0)),
          indent=_pW_}
       catch(_pX_)
        {_pX_ = caml_wrap_exception(_pX_);
         if(_pX_[1] !== Failure)throw _pX_;
         var indent=invalid_box(0)}
      var exp_end=parse_spaces(nend);
      if(exp_end !== len)invalid_box(0);
      var switch$0=0;
      if
       (caml_string_notequal(box_name,cst$37)
        &&
        caml_string_notequal(box_name,cst_b$0))
       var
        box_type=
         caml_string_notequal(box_name,cst_h)
          ?caml_string_notequal(box_name,cst_hov)
            ?caml_string_notequal(box_name,cst_hv)
              ?caml_string_notequal(box_name,cst_v)?invalid_box(0):1
              :2
            :3
          :0;
      else
       switch$0 = 1;
      if(switch$0)var box_type=4;
      return [0,indent,box_type]}
    function make_padding_fmt_ebb(pad,fmt)
     {if(typeof pad === "number")
       return [0,0,fmt];
      else
       {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],fmt]}
        var s$0=pad[1];
        return [0,[1,s$0],fmt]}}
    function make_padprec_fmt_ebb(pad,prec,fmt)
     {if(typeof prec === "number")
       var match=prec?[0,1,fmt]:[0,0,fmt];
      else
       var p=prec[1],match=[0,[0,p],fmt];
      var prec$0=match[1];
      if(typeof pad === "number")
       return [0,0,prec$0,fmt];
      else
       {if(0 === pad[0]){var w=pad[2],s=pad[1];return [0,[0,s,w],prec$0,fmt]}
        var s$0=pad[1];
        return [0,[1,s$0],prec$0,fmt]}}
    function fmt_ebb_of_string(legacy_behavior,str)
     {if(legacy_behavior)
       var flag=legacy_behavior[1],legacy_behavior$0=flag;
      else
       var legacy_behavior$0=1;
      function invalid_format_message(str_ind,msg)
       {return caml_call3(failwith_message(_aw_),str,str_ind,msg)}
      function unexpected_end_of_format(end_ind)
       {return invalid_format_message(end_ind,cst_unexpected_end_of_format)}
      function invalid_format_without(str_ind,c,s)
       {return caml_call4(failwith_message(_ax_),str,str_ind,c,s)}
      function expected_character(str_ind,expected,read)
       {return caml_call4(failwith_message(_ay_),str,str_ind,expected,read)}
      function add_literal(lit_start,str_ind,fmt)
       {var size=str_ind - lit_start | 0;
        return 0 === size
                ?[0,fmt]
                :1 === size
                  ?[0,[12,caml_string_get(str,lit_start),fmt]]
                  :[0,[11,sub$0(str,lit_start,size),fmt]]}
      function parse(lit_start,end_ind)
       {var str_ind=lit_start;
        for(;;)
         {if(str_ind === end_ind)return add_literal(lit_start,str_ind,0);
          var match=caml_string_get(str,str_ind);
          if(37 === match)
           {var str_ind$2=str_ind + 1 | 0;
            if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind);
            var
             match$1=caml_string_get(str,str_ind$2),
             _pV_=
              95 === match$1
               ?parse_flags(str_ind,str_ind$2 + 1 | 0,end_ind,1)
               :parse_flags(str_ind,str_ind$2,end_ind,0),
             fmt_rest=_pV_[1];
            return add_literal(lit_start,str_ind,fmt_rest)}
          if(64 === match)
           {var str_ind$0=str_ind + 1 | 0;
            if(str_ind$0 === end_ind)
             var match$0=_aK_;
            else
             {var c=caml_string_get(str,str_ind$0),switch$0=0;
              if(65 <= c)
               if(94 <= c)
                {var switcher=c - 123 | 0;
                 if(2 < switcher >>> 0)
                  switch$0 = 1;
                 else
                  switch(switcher)
                   {case 0:
                     var match$0=parse_tag(1,str_ind$0 + 1 | 0,end_ind);break;
                    case 1:switch$0 = 1;break;
                    default:
                     var
                      match$3=parse(str_ind$0 + 1 | 0,end_ind),
                      fmt_rest$2=match$3[1],
                      match$0=[0,[17,1,fmt_rest$2]]}}
               else
                if(91 <= c)
                 {var switcher$0=c - 91 | 0;
                  switch(switcher$0)
                   {case 0:
                     var match$0=parse_tag(0,str_ind$0 + 1 | 0,end_ind);break;
                    case 1:switch$0 = 1;break;
                    default:
                     var
                      match$4=parse(str_ind$0 + 1 | 0,end_ind),
                      fmt_rest$3=match$4[1],
                      match$0=[0,[17,0,fmt_rest$3]]}}
                else
                 switch$0 = 1;
              else
               if(10 === c)
                var
                 match$5=parse(str_ind$0 + 1 | 0,end_ind),
                 fmt_rest$4=match$5[1],
                 match$0=[0,[17,3,fmt_rest$4]];
               else
                if(32 <= c)
                 {var switcher$1=c - 32 | 0;
                  switch(switcher$1)
                   {case 0:
                     var
                      match$6=parse(str_ind$0 + 1 | 0,end_ind),
                      fmt_rest$5=match$6[1],
                      match$0=[0,[17,_aL_,fmt_rest$5]];
                     break;
                    case 5:
                     var switch$1=0;
                     if
                      ((str_ind$0 + 1 | 0)
                       <
                       end_ind
                       &&
                       37
                       ===
                       caml_string_get(str,str_ind$0 + 1 | 0))
                      {var
                        match$7=parse(str_ind$0 + 2 | 0,end_ind),
                        fmt_rest$6=match$7[1],
                        match$0=[0,[17,6,fmt_rest$6]];
                       switch$1 = 1}
                     if(! switch$1)
                      var
                       match$8=parse(str_ind$0,end_ind),
                       fmt_rest$7=match$8[1],
                       match$0=[0,[12,64,fmt_rest$7]];
                     break;
                    case 12:
                     var
                      match$9=parse(str_ind$0 + 1 | 0,end_ind),
                      fmt_rest$8=match$9[1],
                      match$0=[0,[17,_aM_,fmt_rest$8]];
                     break;
                    case 14:
                     var
                      match$10=parse(str_ind$0 + 1 | 0,end_ind),
                      fmt_rest$9=match$10[1],
                      match$0=[0,[17,4,fmt_rest$9]];
                     break;
                    case 27:
                     var match$0=parse_good_break(str_ind$0 + 1 | 0,end_ind);
                     break;
                    case 28:
                     var match$0=parse_magic_size(str_ind$0 + 1 | 0,end_ind);
                     break;
                    case 31:
                     var
                      match$11=parse(str_ind$0 + 1 | 0,end_ind),
                      fmt_rest$10=match$11[1],
                      match$0=[0,[17,2,fmt_rest$10]];
                     break;
                    case 32:
                     var
                      match$12=parse(str_ind$0 + 1 | 0,end_ind),
                      fmt_rest$11=match$12[1],
                      match$0=[0,[17,5,fmt_rest$11]];
                     break;
                    default:switch$0 = 1}}
                else
                 switch$0 = 1;
              if(switch$0)
               var
                match$2=parse(str_ind$0 + 1 | 0,end_ind),
                fmt_rest$1=match$2[1],
                match$0=[0,[17,[2,c],fmt_rest$1]]}
            var fmt_rest$0=match$0[1];
            return add_literal(lit_start,str_ind,fmt_rest$0)}
          var str_ind$1=str_ind + 1 | 0,str_ind=str_ind$1;
          continue}}
      function parse_conversion
       (pct_ind,str_ind,end_ind,plus,hash,space,ign,pad,prec,padprec,symb)
       {var
         plus_used=[0,0],
         hash_used=[0,0],
         space_used=[0,0],
         ign_used=[0,0],
         pad_used=[0,0],
         prec_used=[0,0];
        function get_plus(param){plus_used[1] = 1;return plus}
        function get_hash(param){hash_used[1] = 1;return hash}
        function get_space(param){space_used[1] = 1;return space}
        function get_ign(param){ign_used[1] = 1;return ign}
        function get_pad(param){pad_used[1] = 1;return pad}
        function get_prec(param){prec_used[1] = 1;return prec}
        function get_padprec(param){pad_used[1] = 1;return padprec}
        function get_int_pad(param)
         {var pad=get_pad(0),match=get_prec(0);
          if(typeof match === "number" && ! match)return pad;
          if(typeof pad === "number")
           return 0;
          else
           {if(0 === pad[0])
             {if(2 <= pad[1])
               {var n=pad[2];
                return legacy_behavior$0
                        ?[0,1,n]
                        :incompatible_flag(pct_ind,str_ind,48,cst_precision$0)}
              return pad}
            return 2 <= pad[1]
                    ?legacy_behavior$0
                      ?_aE_
                      :incompatible_flag(pct_ind,str_ind,48,cst_precision$1)
                    :pad}}
        function check_no_0(symb,pad)
         {if(typeof pad === "number")
           return pad;
          else
           {if(0 === pad[0])
             {if(2 <= pad[1])
               {var width=pad[2];
                return legacy_behavior$0
                        ?[0,1,width]
                        :incompatible_flag(pct_ind,str_ind,symb,cst_0$0)}
              return pad}
            return 2 <= pad[1]
                    ?legacy_behavior$0
                      ?_aF_
                      :incompatible_flag(pct_ind,str_ind,symb,cst_0$1)
                    :pad}}
        function opt_of_pad(c,pad)
         {if(typeof pad === "number")
           return 0;
          else
           {if(0 === pad[0])
             switch(pad[1])
              {case 0:
                var width=pad[2];
                return legacy_behavior$0
                        ?[0,width]
                        :incompatible_flag(pct_ind,str_ind,c,cst$38);
               case 1:var width$0=pad[2];return [0,width$0];
               default:
                var width$1=pad[2];
                return legacy_behavior$0
                        ?[0,width$1]
                        :incompatible_flag(pct_ind,str_ind,c,cst_0$2)}
            return incompatible_flag(pct_ind,str_ind,c,cst$39)}}
        function get_pad_opt(c){return opt_of_pad(c,get_pad(0))}
        function get_padprec_opt(c){return opt_of_pad(c,get_padprec(0))}
        var switch$0=0;
        if(124 <= symb)
         switch$0 = 1;
        else
         switch(symb)
          {case 33:
            var
             match$6=parse(str_ind,end_ind),
             fmt_rest$5=match$6[1],
             fmt_result=[0,[10,fmt_rest$5]];
            break;
           case 40:
            var
             sub_end=search_subformat_end(str_ind,end_ind,41),
             match$8=parse(sub_end + 2 | 0,end_ind),
             fmt_rest$7=match$8[1],
             match$9=parse(str_ind,sub_end),
             sub_fmt=match$9[1],
             sub_fmtty=fmtty_of_fmt(sub_fmt);
            if(get_ign(0))
             var
              ignored$2=[9,get_pad_opt(95),sub_fmtty],
              _ps_=[0,[23,ignored$2,fmt_rest$7]];
            else
             var _ps_=[0,[14,get_pad_opt(40),sub_fmtty,fmt_rest$7]];
            var fmt_result=_ps_;
            break;
           case 44:var fmt_result=parse(str_ind,end_ind);break;
           case 67:
            var
             match$12=parse(str_ind,end_ind),
             fmt_rest$10=match$12[1],
             _pu_=get_ign(0)?[0,[23,1,fmt_rest$10]]:[0,[1,fmt_rest$10]],
             fmt_result=_pu_;
            break;
           case 78:
            var
             match$16=parse(str_ind,end_ind),
             fmt_rest$14=match$16[1],
             counter$0=2;
            if(get_ign(0))
             var ignored$6=[11,counter$0],_pA_=[0,[23,ignored$6,fmt_rest$14]];
            else
             var _pA_=[0,[21,counter$0,fmt_rest$14]];
            var fmt_result=_pA_;
            break;
           case 83:
            var
             pad$6=check_no_0(symb,get_padprec(0)),
             match$17=parse(str_ind,end_ind),
             fmt_rest$15=match$17[1];
            if(get_ign(0))
             var
              ignored$7=[1,get_padprec_opt(95)],
              _pB_=[0,[23,ignored$7,fmt_rest$15]];
            else
             var
              match$18=make_padding_fmt_ebb(pad$6,fmt_rest$15),
              fmt_rest$16=match$18[2],
              pad$7=match$18[1],
              _pB_=[0,[3,pad$7,fmt_rest$16]];
            var fmt_result=_pB_;
            break;
           case 91:
            if(str_ind === end_ind)unexpected_end_of_format(end_ind);
            var
             char_set=create_char_set(0),
             add_char=function(c){return add_in_char_set(char_set,c)},
             add_range=
              function(c$0,c)
               {if(! (c < c$0))
                 {var i=c$0;
                  for(;;)
                   {add_in_char_set(char_set,char_of_int(i));
                    var _pU_=i + 1 | 0;
                    if(c !== i){var i=_pU_;continue}
                    break}}
                return 0},
             fail_single_percent=
              function(str_ind)
               {return caml_call2(failwith_message(_aO_),str,str_ind)},
             parse_char_set_content=
              function(counter,str_ind,end_ind)
               {var str_ind$0=str_ind;
                for(;;)
                 {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
                  var c=caml_string_get(str,str_ind$0);
                  if(45 === c)
                   {add_char(45);
                    var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;
                    continue}
                  if(93 === c)return str_ind$0 + 1 | 0;
                  var _pT_=str_ind$0 + 1 | 0;
                  if(counter < 50)
                   {var counter$0=counter + 1 | 0;
                    return parse_char_set_after_char$0(counter$0,_pT_,end_ind,c)}
                  return caml_trampoline_return
                          (parse_char_set_after_char$0,[0,_pT_,end_ind,c])}},
             parse_char_set_after_char$0=
              function(counter,str_ind,end_ind,c)
               {var str_ind$0=str_ind,c$0=c;
                for(;;)
                 {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
                  var c$1=caml_string_get(str,str_ind$0),switch$0=0;
                  if(46 <= c$1)
                   {if(64 === c$1)
                     switch$0 = 1;
                    else
                     if(93 === c$1){add_char(c$0);return str_ind$0 + 1 | 0}}
                  else
                   if(37 === c$1)
                    switch$0 = 1;
                   else
                    if(45 <= c$1)
                     {var str_ind$2=str_ind$0 + 1 | 0;
                      if(str_ind$2 === end_ind)unexpected_end_of_format(end_ind);
                      var c$2=caml_string_get(str,str_ind$2);
                      if(37 === c$2)
                       {if((str_ind$2 + 1 | 0) === end_ind)
                         unexpected_end_of_format(end_ind);
                        var c$3=caml_string_get(str,str_ind$2 + 1 | 0);
                        if(37 !== c$3 && 64 !== c$3)
                         return fail_single_percent(str_ind$2);
                        add_range(c$0,c$3);
                        var _pR_=str_ind$2 + 2 | 0;
                        if(counter < 50)
                         {var counter$2=counter + 1 | 0;
                          return parse_char_set_content(counter$2,_pR_,end_ind)}
                        return caml_trampoline_return
                                (parse_char_set_content,[0,_pR_,end_ind])}
                      if(93 === c$2)
                       {add_char(c$0);add_char(45);return str_ind$2 + 1 | 0}
                      add_range(c$0,c$2);
                      var _pS_=str_ind$2 + 1 | 0;
                      if(counter < 50)
                       {var counter$1=counter + 1 | 0;
                        return parse_char_set_content(counter$1,_pS_,end_ind)}
                      return caml_trampoline_return
                              (parse_char_set_content,[0,_pS_,end_ind])}
                  if(switch$0 && 37 === c$0)
                   {add_char(c$1);
                    var _pQ_=str_ind$0 + 1 | 0;
                    if(counter < 50)
                     {var counter$0=counter + 1 | 0;
                      return parse_char_set_content(counter$0,_pQ_,end_ind)}
                    return caml_trampoline_return
                            (parse_char_set_content,[0,_pQ_,end_ind])}
                  if(37 === c$0)fail_single_percent(str_ind$0);
                  add_char(c$0);
                  var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,c$0=c$1;
                  continue}},
             parse_char_set_after_char=
              function(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)unexpected_end_of_format(end_ind);
            var match$31=caml_string_get(str,str_ind);
            if(94 === match$31)
             var str_ind$0=str_ind + 1 | 0,reverse=1,str_ind$1=str_ind$0;
            else
             var reverse=0,str_ind$1=str_ind;
            if(str_ind$1 === end_ind)unexpected_end_of_format(end_ind);
            var
             c=caml_string_get(str,str_ind$1),
             next_ind=parse_char_set_after_char(str_ind$1 + 1 | 0,end_ind,c),
             char_set$0=freeze_char_set(char_set),
             char_set$1=reverse?rev_char_set(char_set$0):char_set$0,
             match$21=parse(next_ind,end_ind),
             fmt_rest$19=match$21[1];
            if(get_ign(0))
             var
              ignored$9=[10,get_pad_opt(95),char_set$1],
              _pG_=[0,[23,ignored$9,fmt_rest$19]];
            else
             var _pG_=[0,[20,get_pad_opt(91),char_set$1,fmt_rest$19]];
            var fmt_result=_pG_;
            break;
           case 97:
            var
             match$22=parse(str_ind,end_ind),
             fmt_rest$20=match$22[1],
             fmt_result=[0,[15,fmt_rest$20]];
            break;
           case 99:
            var
             char_format=
              function(fmt_rest)
               {return get_ign(0)?[0,[23,0,fmt_rest]]:[0,[0,fmt_rest]]},
             match$23=parse(str_ind,end_ind),
             fmt_rest$21=match$23[1],
             match$24=get_pad_opt(99);
            if(match$24)
             {if(0 === match$24[1])
               var
                _pH_=get_ign(0)?[0,[23,3,fmt_rest$21]]:[0,[22,fmt_rest$21]],
                _pI_=_pH_;
              else
               var
                _pI_=
                 legacy_behavior$0
                  ?char_format(fmt_rest$21)
                  :invalid_format_message
                    (str_ind,cst_non_zero_widths_are_unsupp);
              var _pJ_=_pI_}
            else
             var _pJ_=char_format(fmt_rest$21);
            var fmt_result=_pJ_;
            break;
           case 114:
            var
             match$25=parse(str_ind,end_ind),
             fmt_rest$22=match$25[1],
             _pK_=get_ign(0)?[0,[23,2,fmt_rest$22]]:[0,[19,fmt_rest$22]],
             fmt_result=_pK_;
            break;
           case 115:
            var
             pad$9=check_no_0(symb,get_padprec(0)),
             match$26=parse(str_ind,end_ind),
             fmt_rest$23=match$26[1];
            if(get_ign(0))
             var
              ignored$10=[0,get_padprec_opt(95)],
              _pL_=[0,[23,ignored$10,fmt_rest$23]];
            else
             var
              match$27=make_padding_fmt_ebb(pad$9,fmt_rest$23),
              fmt_rest$24=match$27[2],
              pad$10=match$27[1],
              _pL_=[0,[2,pad$10,fmt_rest$24]];
            var fmt_result=_pL_;
            break;
           case 116:
            var
             match$28=parse(str_ind,end_ind),
             fmt_rest$25=match$28[1],
             fmt_result=[0,[16,fmt_rest$25]];
            break;
           case 123:
            var
             sub_end$0=search_subformat_end(str_ind,end_ind,125),
             match$29=parse(str_ind,sub_end$0),
             sub_fmt$0=match$29[1],
             match$30=parse(sub_end$0 + 2 | 0,end_ind),
             fmt_rest$26=match$30[1],
             sub_fmtty$0=fmtty_of_fmt(sub_fmt$0);
            if(get_ign(0))
             var
              ignored$11=[8,get_pad_opt(95),sub_fmtty$0],
              _pM_=[0,[23,ignored$11,fmt_rest$26]];
            else
             var _pM_=[0,[13,get_pad_opt(123),sub_fmtty$0,fmt_rest$26]];
            var fmt_result=_pM_;
            break;
           case 66:
           case 98:
            var
             pad$3=check_no_0(symb,get_padprec(0)),
             match$10=parse(str_ind,end_ind),
             fmt_rest$8=match$10[1];
            if(get_ign(0))
             var
              ignored$3=[7,get_padprec_opt(95)],
              _pt_=[0,[23,ignored$3,fmt_rest$8]];
            else
             var
              match$11=make_padding_fmt_ebb(pad$3,fmt_rest$8),
              fmt_rest$9=match$11[2],
              pad$4=match$11[1],
              _pt_=[0,[9,pad$4,fmt_rest$9]];
            var fmt_result=_pt_;
            break;
           case 37:
           case 64:
            var
             match$7=parse(str_ind,end_ind),
             fmt_rest$6=match$7[1],
             fmt_result=[0,[12,symb,fmt_rest$6]];
            break;
           case 76:
           case 108:
           case 110:
            var switch$1=0;
            if(str_ind !== end_ind)
             {var
               symb$0=caml_string_get(str,str_ind),
               _pN_=symb$0 - 88 | 0,
               switch$2=0;
              if(! (32 < _pN_ >>> 0))
               switch(_pN_)
                {case 0:
                 case 12:
                 case 17:
                 case 23:
                 case 29:
                 case 32:var _pz_=1;switch$2 = 1;break
                 }
              if(! switch$2)var _pz_=0;
              if(_pz_){switch$0 = 1;switch$1 = 1}}
            if(! switch$1)
             {var
               match$15=parse(str_ind,end_ind),
               fmt_rest$13=match$15[1],
               switch$3=0;
              if(108 <= symb)
               {if(! (111 <= symb))
                 {var switcher$0=symb - 108 | 0;
                  switch(switcher$0)
                   {case 0:var counter=0;switch$3 = 1;break;
                    case 1:break;
                    default:var counter=1;switch$3 = 1}}}
              else
               if(76 === symb){var counter=2;switch$3 = 1}
              if(! switch$3)throw [0,Assert_failure,_aS_];
              if(get_ign(0))
               var ignored$5=[11,counter],_py_=[0,[23,ignored$5,fmt_rest$13]];
              else
               var _py_=[0,[21,counter,fmt_rest$13]];
              var fmt_result=_py_}
            break;
           case 32:
           case 35:
           case 43:
           case 45:
           case 95:
            var
             fmt_result=
              caml_call3(failwith_message(_aJ_),str,pct_ind,symb);
            break;
           case 88:
           case 100:
           case 105:
           case 111:
           case 117:
           case 120:
            var
             _pC_=get_space(0),
             _pD_=get_hash(0),
             iconv$2=
              compute_int_conv(pct_ind,str_ind,get_plus(0),_pD_,_pC_,symb),
             match$19=parse(str_ind,end_ind),
             fmt_rest$17=match$19[1];
            if(get_ign(0))
             var
              ignored$8=[2,iconv$2,get_pad_opt(95)],
              _pE_=[0,[23,ignored$8,fmt_rest$17]];
            else
             var
              _pF_=get_prec(0),
              match$20=make_padprec_fmt_ebb(get_int_pad(0),_pF_,fmt_rest$17),
              fmt_rest$18=match$20[3],
              prec$4=match$20[2],
              pad$8=match$20[1],
              _pE_=[0,[4,iconv$2,pad$8,prec$4,fmt_rest$18]];
            var fmt_result=_pE_;
            break;
           case 69:
           case 70:
           case 71:
           case 72:
           case 101:
           case 102:
           case 103:
           case 104:
            var
             space$1=get_space(0),
             hash$1=get_hash(0),
             plus$2=get_plus(0),
             flag=
              plus$2
               ?space$1
                 ?legacy_behavior$0
                   ?1
                   :incompatible_flag(pct_ind,str_ind,32,cst$50)
                 :1
               :space$1?2:0,
             switch$4=0;
            if(73 <= symb)
             {var switcher$1=symb - 101 | 0;
              if(3 < switcher$1 >>> 0)
               switch$4 = 1;
              else
               {switch(switcher$1)
                 {case 0:var _pO_=1;break;
                  case 1:var _pO_=0;break;
                  case 2:var _pO_=3;break;
                  default:var _pO_=6}
                var kind=_pO_}}
            else
             if(69 <= symb)
              {var switcher$2=symb - 69 | 0,switch$5=0;
               switch(switcher$2)
                {case 0:var _pP_=2;break;
                 case 1:switch$4 = 1;switch$5 = 1;break;
                 case 2:var _pP_=4;break;
                 default:var _pP_=7}
               if(! switch$5)var kind=_pP_}
             else
              switch$4 = 1;
            if(switch$4)
             {var switch$6=0;
              if(hash$1)
               if(70 === symb)var kind=8;else switch$6 = 1;
              else
               if(70 === symb)var kind=5;else switch$6 = 1;
              if(switch$6)throw [0,Assert_failure,_aU_]}
            var
             fconv=[0,flag,kind],
             match$13=parse(str_ind,end_ind),
             fmt_rest$11=match$13[1];
            if(get_ign(0))
             {var match=get_prec(0);
              if(typeof match === "number")
               var _pv_=match?incompatible_flag(pct_ind,str_ind,95,cst$40):0;
              else
               var ndec=match[1],_pv_=[0,ndec];
              var
               ignored$4=[6,get_pad_opt(95),_pv_],
               _pw_=[0,[23,ignored$4,fmt_rest$11]]}
            else
             var
              _px_=get_prec(0),
              match$14=make_padprec_fmt_ebb(get_pad(0),_px_,fmt_rest$11),
              fmt_rest$12=match$14[3],
              prec$3=match$14[2],
              pad$5=match$14[1],
              _pw_=[0,[8,fconv,pad$5,prec$3,fmt_rest$12]];
            var fmt_result=_pw_;
            break;
           default:switch$0 = 1}
        if(switch$0)
         {var switch$7=0;
          if(108 <= symb)
           if(111 <= symb)
            switch$7 = 1;
           else
            {var switcher=symb - 108 | 0,switch$8=0;
             switch(switcher)
              {case 0:
                var
                 _pc_=caml_string_get(str,str_ind),
                 _pd_=get_space(0),
                 _pe_=get_hash(0),
                 iconv=
                  compute_int_conv
                   (pct_ind,str_ind + 1 | 0,get_plus(0),_pe_,_pd_,_pc_),
                 match$0=parse(str_ind + 1 | 0,end_ind),
                 fmt_rest=match$0[1];
                if(get_ign(0))
                 var
                  ignored=[3,iconv,get_pad_opt(95)],
                  _pf_=[0,[23,ignored,fmt_rest]];
                else
                 var
                  _ph_=get_prec(0),
                  match$1=make_padprec_fmt_ebb(get_int_pad(0),_ph_,fmt_rest),
                  fmt_rest$0=match$1[3],
                  prec$0=match$1[2],
                  pad$0=match$1[1],
                  _pf_=[0,[5,iconv,pad$0,prec$0,fmt_rest$0]];
                var _pg_=_pf_;
                break;
               case 1:switch$7 = 1;switch$8 = 1;break;
               default:
                var
                 _pi_=caml_string_get(str,str_ind),
                 _pj_=get_space(0),
                 _pk_=get_hash(0),
                 iconv$0=
                  compute_int_conv
                   (pct_ind,str_ind + 1 | 0,get_plus(0),_pk_,_pj_,_pi_),
                 match$2=parse(str_ind + 1 | 0,end_ind),
                 fmt_rest$1=match$2[1];
                if(get_ign(0))
                 var
                  ignored$0=[4,iconv$0,get_pad_opt(95)],
                  _pl_=[0,[23,ignored$0,fmt_rest$1]];
                else
                 var
                  _pm_=get_prec(0),
                  match$3=make_padprec_fmt_ebb(get_int_pad(0),_pm_,fmt_rest$1),
                  fmt_rest$2=match$3[3],
                  prec$1=match$3[2],
                  pad$1=match$3[1],
                  _pl_=[0,[6,iconv$0,pad$1,prec$1,fmt_rest$2]];
                var _pg_=_pl_}
             if(! switch$8)var fmt_result=_pg_}
          else
           if(76 === symb)
            {var
              _pn_=caml_string_get(str,str_ind),
              _po_=get_space(0),
              _pp_=get_hash(0),
              iconv$1=
               compute_int_conv
                (pct_ind,str_ind + 1 | 0,get_plus(0),_pp_,_po_,_pn_),
              match$4=parse(str_ind + 1 | 0,end_ind),
              fmt_rest$3=match$4[1];
             if(get_ign(0))
              var
               ignored$1=[5,iconv$1,get_pad_opt(95)],
               _pq_=[0,[23,ignored$1,fmt_rest$3]];
             else
              var
               _pr_=get_prec(0),
               match$5=make_padprec_fmt_ebb(get_int_pad(0),_pr_,fmt_rest$3),
               fmt_rest$4=match$5[3],
               prec$2=match$5[2],
               pad$2=match$5[1],
               _pq_=[0,[7,iconv$1,pad$2,prec$2,fmt_rest$4]];
             var fmt_result=_pq_}
           else
            switch$7 = 1;
          if(switch$7)
           var
            fmt_result=
             caml_call3(failwith_message(_aG_),str,str_ind - 1 | 0,symb)}
        if(1 - legacy_behavior$0)
         {var _o5_=1 - plus_used[1],plus$0=_o5_?plus:_o5_;
          if(plus$0)incompatible_flag(pct_ind,str_ind,symb,cst$41);
          var _o6_=1 - hash_used[1],hash$0=_o6_?hash:_o6_;
          if(hash$0)incompatible_flag(pct_ind,str_ind,symb,cst$42);
          var _o7_=1 - space_used[1],space$0=_o7_?space:_o7_;
          if(space$0)incompatible_flag(pct_ind,str_ind,symb,cst$43);
          var _o8_=1 - pad_used[1],_o9_=_o8_?caml_notequal([0,pad],_aH_):_o8_;
          if(_o9_)incompatible_flag(pct_ind,str_ind,symb,cst_padding$0);
          var
           _o__=1 - prec_used[1],
           _o$_=_o__?caml_notequal([0,prec],_aI_):_o__;
          if(_o$_)
           {var _pa_=ign?95:symb;
            incompatible_flag(pct_ind,str_ind,_pa_,cst_precision$2)}
          var plus$1=ign?plus:ign;
          if(plus$1)incompatible_flag(pct_ind,str_ind,95,cst$44)}
        var _pb_=1 - ign_used[1],ign$0=_pb_?ign:_pb_;
        if(ign$0)
         {var switch$9=0;
          if(38 <= symb)
           {if(44 !== symb && 64 !== symb)switch$9 = 1}
          else
           if(33 !== symb && ! (37 <= symb))switch$9 = 1;
          var switch$10=0;
          if(switch$9 || ! legacy_behavior$0)switch$10 = 1;
          if(switch$10)incompatible_flag(pct_ind,str_ind,symb,cst$45)}
        return fmt_result}
      function parse_after_precision
       (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad,match)
       {if(str_ind === end_ind)unexpected_end_of_format(end_ind);
        function parse_conv(padprec)
         {return parse_conversion
                  (pct_ind,
                   str_ind + 1 | 0,
                   end_ind,
                   plus,
                   hash,
                   space,
                   ign,
                   pad,
                   match,
                   padprec,
                   caml_string_get(str,str_ind))}
        if(typeof pad === "number")
         {if(typeof match === "number" && ! match)return parse_conv(0);
          if(minus)
           {if(typeof match === "number")return parse_conv(_aC_);
            var n=match[1];
            return parse_conv([0,0,n])}
          if(typeof match === "number")return parse_conv(_aD_);
          var n$0=match[1];
          return parse_conv([0,1,n$0])}
        return parse_conv(pad)}
      function parse_after_padding
       (pct_ind,str_ind,end_ind,minus,plus,hash,space,ign,pad)
       {if(str_ind === end_ind)unexpected_end_of_format(end_ind);
        var symb=caml_string_get(str,str_ind);
        if(46 === symb)
         {var str_ind$0=str_ind + 1 | 0;
          if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
          var
           parse_literal=
            function(minus,str_ind)
             {var
               match=parse_positive(str_ind,end_ind,0),
               prec=match[2],
               new_ind=match[1];
              return parse_after_precision
                      (pct_ind,
                       new_ind,
                       end_ind,
                       minus,
                       plus,
                       hash,
                       space,
                       ign,
                       pad,
                       [0,prec])},
           symb$0=caml_string_get(str,str_ind$0);
          if(48 <= symb$0)
           {if(! (58 <= symb$0))return parse_literal(minus,str_ind$0)}
          else
           if(42 <= symb$0)
            {var switcher=symb$0 - 42 | 0;
             switch(switcher)
              {case 0:
                return parse_after_precision
                        (pct_ind,
                         str_ind$0 + 1 | 0,
                         end_ind,
                         minus,
                         plus,
                         hash,
                         space,
                         ign,
                         pad,
                         1);
               case 1:
               case 3:
                if(legacy_behavior$0)
                 {var
                   _o4_=str_ind$0 + 1 | 0,
                   minus$0=minus || (45 === symb$0?1:0);
                  return parse_literal(minus$0,_o4_)}
                break
               }}
          return legacy_behavior$0
                  ?parse_after_precision
                    (pct_ind,
                     str_ind$0,
                     end_ind,
                     minus,
                     plus,
                     hash,
                     space,
                     ign,
                     pad,
                     _aB_)
                  :invalid_format_without(str_ind$0 - 1 | 0,46,cst_precision)}
        return parse_conversion
                (pct_ind,
                 str_ind + 1 | 0,
                 end_ind,
                 plus,
                 hash,
                 space,
                 ign,
                 pad,
                 0,
                 pad,
                 symb)}
      function parse_flags(pct_ind,str_ind,end_ind,ign)
       {var zero=[0,0],minus=[0,0],plus=[0,0],space=[0,0],hash=[0,0];
        function set_flag(str_ind,flag)
         {var _o1_=flag[1],_o2_=_o1_?1 - legacy_behavior$0:_o1_;
          if(_o2_)
           {var _o3_=caml_string_get(str,str_ind);
            caml_call3(failwith_message(_az_),str,str_ind,_o3_)}
          flag[1] = 1;
          return 0}
        var str_ind$0=str_ind;
        for(;;)
         {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
          var match=caml_string_get(str,str_ind$0),switcher=match - 32 | 0;
          if(! (16 < switcher >>> 0))
           switch(switcher)
            {case 0:
              set_flag(str_ind$0,space);
              var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;
              continue;
             case 3:
              set_flag(str_ind$0,hash);
              var str_ind$2=str_ind$0 + 1 | 0,str_ind$0=str_ind$2;
              continue;
             case 11:
              set_flag(str_ind$0,plus);
              var str_ind$3=str_ind$0 + 1 | 0,str_ind$0=str_ind$3;
              continue;
             case 13:
              set_flag(str_ind$0,minus);
              var str_ind$4=str_ind$0 + 1 | 0,str_ind$0=str_ind$4;
              continue;
             case 16:
              set_flag(str_ind$0,zero);
              var str_ind$5=str_ind$0 + 1 | 0,str_ind$0=str_ind$5;
              continue
             }
          var
           _oW_=space[1],
           _oX_=hash[1],
           _oY_=plus[1],
           _oZ_=minus[1],
           _o0_=zero[1];
          if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
          var
           padty=
            _o0_
             ?_oZ_
               ?legacy_behavior$0
                 ?0
                 :incompatible_flag(pct_ind,str_ind$0,45,cst_0)
               :2
             :_oZ_?0:1,
           match$0=caml_string_get(str,str_ind$0);
          if(48 <= match$0)
           {if(! (58 <= match$0))
             {var
               match$1=parse_positive(str_ind$0,end_ind,0),
               width=match$1[2],
               new_ind=match$1[1];
              return parse_after_padding
                      (pct_ind,
                       new_ind,
                       end_ind,
                       _oZ_,
                       _oY_,
                       _oX_,
                       _oW_,
                       ign,
                       [0,padty,width])}}
          else
           if(42 === match$0)
            return parse_after_padding
                    (pct_ind,
                     str_ind$0 + 1 | 0,
                     end_ind,
                     _oZ_,
                     _oY_,
                     _oX_,
                     _oW_,
                     ign,
                     [1,padty]);
          switch(padty)
           {case 0:
             if(1 - legacy_behavior$0)
              invalid_format_without(str_ind$0 - 1 | 0,45,cst_padding);
             return parse_after_padding
                     (pct_ind,str_ind$0,end_ind,_oZ_,_oY_,_oX_,_oW_,ign,0);
            case 1:
             return parse_after_padding
                     (pct_ind,str_ind$0,end_ind,_oZ_,_oY_,_oX_,_oW_,ign,0);
            default:
             return parse_after_padding
                     (pct_ind,str_ind$0,end_ind,_oZ_,_oY_,_oX_,_oW_,ign,_aA_)}}}
      function parse_tag(is_open_tag,str_ind,end_ind)
       {try
         {if(str_ind === end_ind)throw Not_found;
          var match$0=caml_string_get(str,str_ind);
          if(60 === match$0)
           {var ind=index_from$0(str,str_ind + 1 | 0,62);
            if(end_ind <= ind)throw Not_found;
            var
             sub_str=sub$0(str,str_ind,(ind - str_ind | 0) + 1 | 0),
             match$1=parse(ind + 1 | 0,end_ind),
             fmt_rest$0=match$1[1],
             match$2=parse(str_ind,ind + 1 | 0),
             sub_fmt=match$2[1],
             sub_format$0=[0,sub_fmt,sub_str],
             formatting$0=is_open_tag?[0,sub_format$0]:[1,sub_format$0],
             _oU_=[0,[18,formatting$0,fmt_rest$0]];
            return _oU_}
          throw Not_found}
        catch(_oV_)
         {_oV_ = caml_wrap_exception(_oV_);
          if(_oV_ === Not_found)
           {var
             match=parse(str_ind,end_ind),
             fmt_rest=match[1],
             formatting=is_open_tag?[0,sub_format]:[1,sub_format];
            return [0,[18,formatting,fmt_rest]]}
          throw _oV_}}
      function parse_good_break(str_ind,end_ind)
       {try
         {var
           _oN_=str_ind === end_ind?1:0,
           _oO_=_oN_ || (60 !== caml_string_get(str,str_ind)?1:0);
          if(_oO_)throw Not_found;
          var
           str_ind_1=parse_spaces(str_ind + 1 | 0,end_ind),
           match$0=caml_string_get(str,str_ind_1),
           switch$0=0;
          if(48 <= match$0)
           {if(! (58 <= match$0))switch$0 = 1}
          else
           if(45 === match$0)switch$0 = 1;
          if(! switch$0)throw Not_found;
          var
           match$1=parse_integer(str_ind_1,end_ind),
           width=match$1[2],
           str_ind_2=match$1[1],
           str_ind_3=parse_spaces(str_ind_2,end_ind),
           match$2=caml_string_get(str,str_ind_3),
           switcher=match$2 - 45 | 0,
           switch$1=0;
          if(12 < switcher >>> 0)
           if(17 === switcher)
            var
             s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0),
             _oP_=[0,s,width,0],
             _oQ_=str_ind_3 + 1 | 0,
             formatting_lit$0=_oP_,
             next_ind=_oQ_;
           else
            switch$1 = 1;
          else
           {var switcher$0=switcher - 1 | 0;
            if(1 < switcher$0 >>> 0)
             {var
               match$3=parse_integer(str_ind_3,end_ind),
               offset=match$3[2],
               str_ind_4=match$3[1],
               str_ind_5=parse_spaces(str_ind_4,end_ind);
              if(62 !== caml_string_get(str,str_ind_5))throw Not_found;
              var
               s$0=
                sub$0(str,str_ind - 2 | 0,(str_ind_5 - str_ind | 0) + 3 | 0),
               _oR_=[0,s$0,width,offset],
               _oS_=str_ind_5 + 1 | 0,
               formatting_lit$0=_oR_,
               next_ind=_oS_}
            else
             switch$1 = 1}
          if(switch$1)throw Not_found}
        catch(_oT_)
         {_oT_ = caml_wrap_exception(_oT_);
          if(_oT_ !== Not_found && _oT_[1] !== Failure)throw _oT_;
          var formatting_lit$0=formatting_lit,next_ind=str_ind}
        var match=parse(next_ind,end_ind),fmt_rest=match[1];
        return [0,[17,formatting_lit$0,fmt_rest]]}
      function parse_magic_size(str_ind,end_ind)
       {try
         {var
           str_ind_1=parse_spaces(str_ind,end_ind),
           match$2=caml_string_get(str,str_ind_1),
           switch$0=0;
          if(48 <= match$2)
           {if(! (58 <= match$2))switch$0 = 1}
          else
           if(45 === match$2)switch$0 = 1;
          if(switch$0)
           {var
             match$3=parse_integer(str_ind_1,end_ind),
             size=match$3[2],
             str_ind_2=match$3[1],
             str_ind_3=parse_spaces(str_ind_2,end_ind);
            if(62 !== caml_string_get(str,str_ind_3))throw Not_found;
            var
             s=sub$0(str,str_ind - 2 | 0,(str_ind_3 - str_ind | 0) + 3 | 0),
             _oL_=[0,[0,str_ind_3 + 1 | 0,[1,s,size]]]}
          else
           var _oL_=0;
          var _oK_=_oL_}
        catch(_oM_)
         {_oM_ = caml_wrap_exception(_oM_);
          if(_oM_ !== Not_found && _oM_[1] !== Failure)throw _oM_;
          var _oK_=0}
        if(_oK_)
         {var
           match=_oK_[1],
           formatting_lit=match[2],
           next_ind=match[1],
           match$0=parse(next_ind,end_ind),
           fmt_rest=match$0[1];
          return [0,[17,formatting_lit,fmt_rest]]}
        var match$1=parse(str_ind,end_ind),fmt_rest$0=match$1[1];
        return [0,[17,_aN_,fmt_rest$0]]}
      function parse_spaces(str_ind,end_ind)
       {var str_ind$0=str_ind;
        for(;;)
         {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
          if(32 === caml_string_get(str,str_ind$0))
           {var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1;continue}
          return str_ind$0}}
      function parse_positive(str_ind,end_ind,acc)
       {var str_ind$0=str_ind,acc$0=acc;
        for(;;)
         {if(str_ind$0 === end_ind)unexpected_end_of_format(end_ind);
          var c=caml_string_get(str,str_ind$0),switcher=c - 48 | 0;
          if(9 < switcher >>> 0)return [0,str_ind$0,acc$0];
          var acc$1=(acc$0 * 10 | 0) + (c - 48 | 0) | 0;
          if(max_string_length < acc$1)
           return caml_call3
                   (failwith_message(_aP_),str,acc$1,max_string_length);
          var str_ind$1=str_ind$0 + 1 | 0,str_ind$0=str_ind$1,acc$0=acc$1;
          continue}}
      function parse_integer(str_ind,end_ind)
       {if(str_ind === end_ind)unexpected_end_of_format(end_ind);
        var match=caml_string_get(str,str_ind);
        if(48 <= match)
         {if(! (58 <= match))return parse_positive(str_ind,end_ind,0)}
        else
         if(45 === match)
          {if((str_ind + 1 | 0) === end_ind)unexpected_end_of_format(end_ind);
           var c=caml_string_get(str,str_ind + 1 | 0),switcher=c - 48 | 0;
           if(9 < switcher >>> 0)
            return expected_character(str_ind + 1 | 0,cst_digit,c);
           var
            match$0=parse_positive(str_ind + 1 | 0,end_ind,0),
            n=match$0[2],
            next_ind=match$0[1];
           return [0,next_ind,- n | 0]}
        throw [0,Assert_failure,_aQ_]}
      function search_subformat_end(str_ind,end_ind,c)
       {var str_ind$0=str_ind;
        for(;;)
         {if(str_ind$0 === end_ind)
           caml_call3(failwith_message(_aR_),str,c,end_ind);
          var match=caml_string_get(str,str_ind$0);
          if(37 === match)
           {if((str_ind$0 + 1 | 0) === end_ind)
             unexpected_end_of_format(end_ind);
            if(caml_string_get(str,str_ind$0 + 1 | 0) === c)return str_ind$0;
            var match$0=caml_string_get(str,str_ind$0 + 1 | 0);
            if(95 <= match$0)
             {if(123 <= match$0)
               {if(! (126 <= match$0))
                 {var switcher=match$0 - 123 | 0;
                  switch(switcher)
                   {case 0:
                     var
                      sub_end=search_subformat_end(str_ind$0 + 2 | 0,end_ind,125),
                      str_ind$2=sub_end + 2 | 0,
                      str_ind$0=str_ind$2;
                     continue;
                    case 1:break;
                    default:
                     return expected_character
                             (str_ind$0 + 1 | 0,cst_character,125)}}}
              else
               if(! (96 <= match$0))
                {if((str_ind$0 + 2 | 0) === end_ind)
                  unexpected_end_of_format(end_ind);
                 var match$1=caml_string_get(str,str_ind$0 + 2 | 0);
                 if(40 === match$1)
                  {var
                    sub_end$0=search_subformat_end(str_ind$0 + 3 | 0,end_ind,41),
                    str_ind$3=sub_end$0 + 2 | 0,
                    str_ind$0=str_ind$3;
                   continue}
                 if(123 === match$1)
                  {var
                    sub_end$1=
                     search_subformat_end(str_ind$0 + 3 | 0,end_ind,125),
                    str_ind$4=sub_end$1 + 2 | 0,
                    str_ind$0=str_ind$4;
                   continue}
                 var str_ind$5=str_ind$0 + 3 | 0,str_ind$0=str_ind$5;
                 continue}}
            else
             {if(40 === match$0)
               {var
                 sub_end$2=search_subformat_end(str_ind$0 + 2 | 0,end_ind,41),
                 str_ind$6=sub_end$2 + 2 | 0,
                 str_ind$0=str_ind$6;
                continue}
              if(41 === match$0)
               return expected_character(str_ind$0 + 1 | 0,cst_character$0,41)}
            var str_ind$1=str_ind$0 + 2 | 0,str_ind$0=str_ind$1;
            continue}
          var str_ind$7=str_ind$0 + 1 | 0,str_ind$0=str_ind$7;
          continue}}
      function incompatible_flag(pct_ind,str_ind,symb,option)
       {var subfmt=sub$0(str,pct_ind,str_ind - pct_ind | 0);
        return caml_call5
                (failwith_message(_aV_),str,pct_ind,option,symb,subfmt)}
      function compute_int_conv(pct_ind,str_ind,plus,hash,space,symb)
       {var plus$0=plus,hash$0=hash,space$0=space;
        for(;;)
         {var switch$0=0;
          if(plus$0)
           {if(hash$0)
             switch$0 = 1;
            else
             if(! space$0){if(100 === symb)return 1;if(105 === symb)return 4}}
          else
           if(hash$0)
            if(space$0)
             switch$0 = 1;
            else
             {var switcher$0=symb - 88 | 0;
              if(32 < switcher$0 >>> 0)
               switch$0 = 1;
              else
               switch(switcher$0)
                {case 0:return 9;
                 case 12:return 13;
                 case 17:return 14;
                 case 23:return 11;
                 case 29:return 15;
                 case 32:return 7;
                 default:switch$0 = 1}}
           else
            if(space$0)
             {if(100 === symb)return 2;if(105 === symb)return 5}
            else
             {var switcher$1=symb - 88 | 0;
              if(! (32 < switcher$1 >>> 0))
               switch(switcher$1)
                {case 0:return 8;
                 case 12:return 0;
                 case 17:return 3;
                 case 23:return 10;
                 case 29:return 12;
                 case 32:return 6
                 }}
          if(switch$0)
           {var switcher=symb - 88 | 0;
            if(! (32 < switcher >>> 0))
             switch(switcher)
              {case 0:if(legacy_behavior$0)return 9;break;
               case 23:if(legacy_behavior$0)return 11;break;
               case 32:if(legacy_behavior$0)return 7;break;
               case 12:
               case 17:
               case 29:
                if(legacy_behavior$0){var hash$0=0;continue}
                return incompatible_flag(pct_ind,str_ind,symb,cst$49)
               }}
          if(plus$0)
           {if(space$0)
             {if(legacy_behavior$0){var space$0=0;continue}
              return incompatible_flag(pct_ind,str_ind,32,cst$46)}
            if(legacy_behavior$0){var plus$0=0;continue}
            return incompatible_flag(pct_ind,str_ind,symb,cst$47)}
          if(space$0)
           {if(legacy_behavior$0){var space$0=0;continue}
            return incompatible_flag(pct_ind,str_ind,symb,cst$48)}
          throw [0,Assert_failure,_aT_]}}
      return parse(0,caml_ml_string_length(str))}
    function format_of_string_fmtty(str,fmtty)
     {var match=fmt_ebb_of_string(0,str),fmt=match[1];
      try
       {var _oI_=[0,type_format(fmt,fmtty),str];return _oI_}
      catch(_oJ_)
       {_oJ_ = caml_wrap_exception(_oJ_);
        if(_oJ_ === Type_mismatch)
         {var _oH_=string_of_fmtty(fmtty);
          return caml_call2(failwith_message(_aW_),str,_oH_)}
        throw _oJ_}}
    function format_of_string_format(str,param)
     {var
       str$0=param[2],
       fmt=param[1],
       match=fmt_ebb_of_string(0,str),
       fmt$0=match[1];
      try
       {var _oF_=[0,type_format(fmt$0,fmtty_of_fmt(fmt)),str];return _oF_}
      catch(_oG_)
       {_oG_ = caml_wrap_exception(_oG_);
        if(_oG_ === Type_mismatch)
         return caml_call2(failwith_message(_aX_),str,str$0);
        throw _oG_}}
    var
     CamlinternalFormat=
      [0,
       is_in_char_set,
       rev_char_set,
       create_char_set,
       add_in_char_set,
       freeze_char_set,
       param_format_of_ignored_format,
       make_printf,
       make_iprintf,
       output_acc,
       bufput_acc,
       strput_acc,
       type_format,
       fmt_ebb_of_string,
       format_of_string_fmtty,
       format_of_string_format,
       char_of_iconv,
       string_of_formatting_lit,
       string_of_fmtty,
       string_of_fmt,
       open_box_of_string,
       symm,
       trans,
       recast];
    caml_register_global(778,CamlinternalFormat,"CamlinternalFormat");
    function kfprintf(k,o,param)
     {var fmt=param[1],_oE_=0;
      return make_printf
              (function(acc){output_acc(o,acc);return caml_call1(k,o)},
               _oE_,
               fmt)}
    function kbprintf(k,b,param)
     {var fmt=param[1],_oD_=0;
      return make_printf
              (function(acc){bufput_acc(b,acc);return caml_call1(k,b)},
               _oD_,
               fmt)}
    function ikfprintf(k,oc,param)
     {var fmt=param[1];return make_iprintf(k,oc,fmt)}
    function fprintf(oc,fmt){return kfprintf(function(_oC_){return 0},oc,fmt)}
    function bprintf(b,fmt){return kbprintf(function(_oB_){return 0},b,fmt)}
    function ifprintf(oc,fmt)
     {return ikfprintf(function(_oA_){return 0},oc,fmt)}
    function printf(fmt){return fprintf(stdout,fmt)}
    function eprintf(fmt){return fprintf(stderr,fmt)}
    function ksprintf(k,param)
     {var fmt=param[1];
      function k$0(acc)
       {var buf=create$2(64);
        strput_acc(buf,acc);
        return caml_call1(k,contents(buf))}
      return make_printf(k$0,0,fmt)}
    function sprintf(fmt){return ksprintf(function(s){return s},fmt)}
    var
     Stdlib_printf=
      [0,
       fprintf,
       printf,
       eprintf,
       sprintf,
       bprintf,
       ifprintf,
       kfprintf,
       ikfprintf,
       ksprintf,
       kbprintf,
       ksprintf];
    caml_register_global(779,Stdlib_printf,"Stdlib__printf");
    var
     Bad=[248,cst_Stdlib_Arg_Bad,caml_fresh_oo_id(0)],
     Help=[248,cst_Stdlib_Arg_Help,caml_fresh_oo_id(0)],
     Stop=[248,cst_Stdlib_Arg_Stop,caml_fresh_oo_id(0)];
    function assoc3(x,l)
     {var l$0=l;
      for(;;)
       {if(l$0)
         {var match=l$0[1],y2=match[2],y1=match[1];
          if(caml_equal(y1,x))return y2;
          var l$1=l$0[2],l$0=l$1;
          continue}
        throw Not_found}}
    function split$0(s)
     {var
       i=index$0(s,61),
       len=caml_ml_string_length(s),
       _oz_=sub$0(s,i + 1 | 0,len - (i + 1 | 0) | 0);
      return [0,sub$0(s,0,i),_oz_]}
    function make_symlist(prefix,sep,suffix,l)
     {if(l)
       {var t=l[2],h=l[1],_oy_=symbol(prefix,h);
        return symbol
                (fold_left$0
                  (function(x,y){return symbol(x,symbol(sep,y))},_oy_,t),
                 suffix)}
      return cst_none}
    function help_action(param){throw [0,Stop,_a0_]}
    function add_help(speclist)
     {try
       {assoc3(cst_help$2,speclist);var _ov_=0,_ot_=_ov_}
      catch(_ox_)
       {_ox_ = caml_wrap_exception(_ox_);
        if(_ox_ !== Not_found)throw _ox_;
        var
         _ot_=
          [0,[0,cst_help,[0,help_action],cst_Display_this_list_of_optio],0]}
      try
       {assoc3(cst_help$1,speclist);var _ou_=0,add2=_ou_}
      catch(_ow_)
       {_ow_ = caml_wrap_exception(_ow_);
        if(_ow_ !== Not_found)throw _ow_;
        var
         add2=
          [0,
           [0,cst_help$0,[0,help_action],cst_Display_this_list_of_optio$0],
           0]}
      return append(speclist,append(_ot_,add2))}
    function usage_b(buf,speclist,errmsg)
     {caml_call1(bprintf(buf,_a1_),errmsg);
      var _oq_=add_help(speclist);
      return iter$2
              (function(param)
                {var
                  doc=param[3],
                  spec=param[2],
                  key=param[1],
                  _or_=0 < caml_ml_string_length(doc)?1:0;
                 if(_or_)
                  {if(11 === spec[0])
                    {var l=spec[1],_os_=make_symlist(cst$53,cst$52,cst$51,l);
                     return caml_call3(bprintf(buf,_aZ_),key,_os_,doc)}
                   return caml_call2(bprintf(buf,_aY_),key,doc)}
                 return _or_},
               _oq_)}
    function usage_string(speclist,errmsg)
     {var b=create$2(200);usage_b(b,speclist,errmsg);return contents(b)}
    function usage(speclist,errmsg)
     {var _op_=usage_string(speclist,errmsg);
      return caml_call1(eprintf(_a2_),_op_)}
    var current=[0,0];
    function bool_of_string_opt$0(x)
     {try
       {var _on_=[0,bool_of_string(x)];return _on_}
      catch(_oo_)
       {_oo_ = caml_wrap_exception(_oo_);
        if(_oo_[1] === Invalid_argument)return 0;
        throw _oo_}}
    function int_of_string_opt$0(x)
     {try
       {var _ol_=[0,caml_int_of_string(x)];return _ol_}
      catch(_om_)
       {_om_ = caml_wrap_exception(_om_);
        if(_om_[1] === Failure)return 0;
        throw _om_}}
    function float_of_string_opt(x)
     {try
       {var _oj_=[0,caml_float_of_string(x)];return _oj_}
      catch(_ok_)
       {_ok_ = caml_wrap_exception(_ok_);
        if(_ok_[1] === Failure)return 0;
        throw _ok_}}
    function parse_and_expand_argv_dynamic_
     (allow_expand,current,argv,speclist,anonfun,errmsg)
     {var initpos=current[1];
      function convert_error(error)
       {var
         b=create$2(200),
         progname=
          initpos < argv[1].length - 1
           ?caml_check_bound(argv[1],initpos)[1 + initpos]
           :cst$54;
        switch(error[0])
         {case 0:
           var _oi_=error[1];
           if
            (caml_string_notequal(_oi_,cst_help$3)
             &&
             caml_string_notequal(_oi_,cst_help$4))
            caml_call2(bprintf(b,_a3_),progname,_oi_);
           break;
          case 1:
           var expected=error[3],arg=error[2],opt=error[1];
           caml_call4(bprintf(b,_a6_),progname,arg,opt,expected);
           break;
          case 2:var s=error[1];caml_call2(bprintf(b,_a7_),progname,s);break;
          default:var s$0=error[1];caml_call2(bprintf(b,_a8_),progname,s$0)}
        usage_b(b,speclist[1],errmsg);
        if(! caml_equal(error,_a4_) && ! caml_equal(error,_a5_))
         return [0,Bad,contents(b)];
        return [0,Help,contents(b)]}
      current[1]++;
      for(;;)
       {if(current[1] < argv[1].length - 1)
         {try
           {var
             _n$_=current[1],
             s=caml_check_bound(argv[1],_n$_)[1 + _n$_],
             switch$0=0;
            if(1 <= caml_ml_string_length(s) && 45 === caml_string_get(s,0))
             {try
               {var
                 follow$1=0,
                 _ob_=assoc3(s,speclist[1]),
                 follow$0=follow$1,
                 action=_ob_}
              catch(_og_)
               {_og_ = caml_wrap_exception(_og_);
                if(_og_ !== Not_found)throw _og_;
                try
                 {var
                   match=split$0(s),
                   arg=match[2],
                   keyword=match[1],
                   follow=[0,arg],
                   _oa_=assoc3(keyword,speclist[1])}
                catch(_oh_)
                 {_oh_ = caml_wrap_exception(_oh_);
                  if(_oh_ === Not_found)throw [0,Stop,[0,s]];
                  throw _oh_;
                  var _oc_=_oh_}
                var follow$0=follow,action=_oa_,_od_=_og_}
              var
               no_arg$0=
                function(s,follow)
                 {function no_arg(param)
                   {if(follow)
                     {var arg=follow[1];throw [0,Stop,[1,s,arg,cst_no_argument]]}
                    return 0}
                  return no_arg},
               no_arg=no_arg$0(s,follow$0),
               get_arg$0=
                function(s,follow)
                 {function get_arg(param)
                   {if(follow){var arg=follow[1];return arg}
                    if((current[1] + 1 | 0) < argv[1].length - 1)
                     {var _of_=current[1] + 1 | 0;
                      return caml_check_bound(argv[1],_of_)[1 + _of_]}
                    throw [0,Stop,[2,s]]}
                  return get_arg},
               get_arg=get_arg$0(s,follow$0),
               consume_arg$0=
                function(follow)
                 {function consume_arg(param)
                   {return follow?0:(current[1]++,0)}
                  return consume_arg},
               consume_arg=consume_arg$0(follow$0),
               treat_action$0=
                function(s,no_arg,get_arg,consume_arg)
                 {function treat_action(param)
                   {switch(param[0])
                     {case 0:var f=param[1];no_arg(0);return caml_call1(f,0);
                      case 1:
                       var
                        f$0=param[1],
                        arg=get_arg(0),
                        match=bool_of_string_opt$0(arg);
                       if(match)
                        {var s$0=match[1];caml_call1(f$0,s$0);return consume_arg(0)}
                       throw [0,Stop,[1,s,arg,cst_a_boolean]];
                      case 2:var r=param[1];no_arg(0);r[1] = 1;return 0;
                      case 3:var r$0=param[1];no_arg(0);r$0[1] = 0;return 0;
                      case 4:
                       var f$1=param[1],arg$0=get_arg(0);
                       caml_call1(f$1,arg$0);
                       return consume_arg(0);
                      case 5:
                       var r$1=param[1];r$1[1] = get_arg(0);return consume_arg(0);
                      case 6:
                       var
                        f$2=param[1],
                        arg$1=get_arg(0),
                        match$0=int_of_string_opt$0(arg$1);
                       if(match$0)
                        {var x=match$0[1];caml_call1(f$2,x);return consume_arg(0)}
                       throw [0,Stop,[1,s,arg$1,cst_an_integer]];
                      case 7:
                       var
                        r$2=param[1],
                        arg$2=get_arg(0),
                        match$1=int_of_string_opt$0(arg$2);
                       if(match$1)
                        {var x$0=match$1[1];r$2[1] = x$0;return consume_arg(0)}
                       throw [0,Stop,[1,s,arg$2,cst_an_integer$0]];
                      case 8:
                       var
                        f$3=param[1],
                        arg$3=get_arg(0),
                        match$2=float_of_string_opt(arg$3);
                       if(match$2)
                        {var x$1=match$2[1];
                         caml_call1(f$3,x$1);
                         return consume_arg(0)}
                       throw [0,Stop,[1,s,arg$3,cst_a_float]];
                      case 9:
                       var
                        r$3=param[1],
                        arg$4=get_arg(0),
                        match$3=float_of_string_opt(arg$4);
                       if(match$3)
                        {var x$2=match$3[1];r$3[1] = x$2;return consume_arg(0)}
                       throw [0,Stop,[1,s,arg$4,cst_a_float$0]];
                      case 10:
                       var specs=param[1];
                       no_arg(0);
                       return iter$2(treat_action,specs);
                      case 11:
                       var f$4=param[2],symb=param[1],arg$5=get_arg(0);
                       if(mem(arg$5,symb))
                        {caml_call1(f$4,arg$5);return consume_arg(0)}
                       throw [0,
                              Stop,
                              [1,
                               s,
                               arg$5,
                               symbol(cst_one_of,make_symlist(cst$57,cst$56,cst$55,symb))]];
                      case 12:
                       var f$5=param[1];
                       no_arg(0);
                       for(;;)
                        {if(current[1] < (argv[1].length - 1 - 1 | 0))
                          {var _oe_=current[1] + 1 | 0;
                           caml_call1(f$5,caml_check_bound(argv[1],_oe_)[1 + _oe_]);
                           consume_arg(0);
                           continue}
                         return 0}
                      default:
                       var f$6=param[1];
                       if(1 - allow_expand)
                        throw [0,Invalid_argument,cst_Arg_Expand_is_is_only_allo];
                       var arg$6=get_arg(0),newarg=caml_call1(f$6,arg$6);
                       consume_arg(0);
                       var
                        before=sub$1(argv[1],0,current[1] + 1 | 0),
                        after=
                         sub$1
                          (argv[1],
                           current[1] + 1 | 0,
                           (argv[1].length - 1 - current[1] | 0) - 1 | 0);
                       argv[1]
                       =
                       caml_array_concat([0,before,[0,newarg,[0,after,0]]]);
                       return 0}}
                  return treat_action},
               treat_action=treat_action$0(s,no_arg,get_arg,consume_arg);
              treat_action(action);
              switch$0 = 1}
            if(! switch$0)caml_call1(anonfun,s)}
          catch(exn$0)
           {exn$0 = caml_wrap_exception(exn$0);
            if(exn$0[1] === Bad){var m=exn$0[2];throw convert_error([3,m])}
            if(exn$0[1] === Stop){var e=exn$0[2];throw convert_error(e)}
            throw exn$0;
            var exn=exn$0}
          current[1]++;
          continue}
        return 0}}
    function parse_and_expand_argv_dynamic
     (current,argv,speclist,anonfun,errmsg)
     {return parse_and_expand_argv_dynamic_
              (1,current,argv,speclist,anonfun,errmsg)}
    function parse_argv_dynamic(opt,argv,speclist,anonfun,errmsg)
     {if(opt)var sth=opt[1],current$0=sth;else var current$0=current;
      return parse_and_expand_argv_dynamic_
              (0,current$0,[0,argv],speclist,anonfun,errmsg)}
    function parse_argv(opt,argv,speclist,anonfun,errmsg)
     {if(opt)var sth=opt[1],current$0=sth;else var current$0=current;
      return parse_argv_dynamic
              ([0,current$0],argv,[0,speclist],anonfun,errmsg)}
    function parse(l,f,msg)
     {try
       {var _n__=parse_argv(0,caml_sys_argv(0),l,f,msg);return _n__}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Bad)
         {var msg$0=exn[2];caml_call1(eprintf(_a9_),msg$0);return exit(2)}
        if(exn[1] === Help)
         {var msg$1=exn[2];caml_call1(printf(_a__),msg$1);return exit(0)}
        throw exn}}
    function parse_dynamic(l,f,msg)
     {try
       {var _n9_=parse_argv_dynamic(0,caml_sys_argv(0),l,f,msg);return _n9_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Bad)
         {var msg$0=exn[2];caml_call1(eprintf(_a$_),msg$0);return exit(2)}
        if(exn[1] === Help)
         {var msg$1=exn[2];caml_call1(printf(_ba_),msg$1);return exit(0)}
        throw exn}}
    function parse_expand(l,f,msg)
     {try
       {var
         argv=[0,caml_sys_argv(0)],
         spec=[0,l],
         current$0=[0,current[1]],
         _n8_=parse_and_expand_argv_dynamic(current$0,argv,spec,f,msg);
        return _n8_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Bad)
         {var msg$0=exn[2];caml_call1(eprintf(_bb_),msg$0);return exit(2)}
        if(exn[1] === Help)
         {var msg$1=exn[2];caml_call1(printf(_bc_),msg$1);return exit(0)}
        throw exn}}
    function second_word(s)
     {var len=caml_ml_string_length(s);
      function loop(n)
       {var n$0=n;
        for(;;)
         {if(len <= n$0)return len;
          if(32 === caml_string_get(s,n$0))
           {var n$1=n$0 + 1 | 0,n$0=n$1;continue}
          return n$0}}
      try
       {var n$0=index$0(s,9)}
      catch(_n6_)
       {_n6_ = caml_wrap_exception(_n6_);
        if(_n6_ === Not_found)
         {try
           {var n=index$0(s,32)}
          catch(_n7_)
           {_n7_ = caml_wrap_exception(_n7_);
            if(_n7_ === Not_found)return len;
            throw _n7_}
          return loop(n + 1 | 0)}
        throw _n6_}
      return loop(n$0 + 1 | 0)}
    function max_arg_len(cur,param)
     {var doc=param[3],spec=param[2],kwd=param[1];
      return 11 === spec[0]
              ?max(cur,caml_ml_string_length(kwd))
              :max(cur,caml_ml_string_length(kwd) + second_word(doc) | 0)}
    function replace_leading_tab(s)
     {var seen=[0,0];
      return map$4
              (function(c)
                {if(9 === c && ! seen[1]){seen[1] = 1;return 32}return c},
               s)}
    function align(opt,speclist)
     {if(opt)var sth=opt[1],limit=sth;else var limit=max_int;
      var
       completed=add_help(speclist),
       len=fold_left$0(max_arg_len,0,completed),
       len$0=min(len,limit);
      return map$2
              (function(ksd)
                {var _n4_=ksd[1],_n5_=ksd[2];
                 if(caml_string_notequal(ksd[3],cst$58))
                  {if(11 === _n5_[0])
                    {var
                      msg$0=ksd[3],
                      cutcol$0=second_word(msg$0),
                      spaces$0=make$0(max(0,len$0 - cutcol$0 | 0) + 3 | 0,32);
                     return [0,
                             _n4_,
                             _n5_,
                             symbol(cst$59,symbol(spaces$0,replace_leading_tab(msg$0)))]}
                   var
                    msg=ksd[3],
                    spec=ksd[2],
                    cutcol=second_word(msg),
                    kwd_len=caml_ml_string_length(_n4_),
                    diff=(len$0 - kwd_len | 0) - cutcol | 0;
                   if(0 < diff)
                    {var
                      spaces=make$0(diff,32),
                      prefix=sub$0(replace_leading_tab(msg),0,cutcol),
                      suffix=
                       sub$0(msg,cutcol,caml_ml_string_length(msg) - cutcol | 0);
                     return [0,_n4_,spec,symbol(prefix,symbol(spaces,suffix))]}
                   return [0,_n4_,spec,replace_leading_tab(msg)]}
                 return ksd},
               completed)}
    function read_aux(trim,sep,file)
     {var ic=open_in_bin(file),buf=create$2(200),words=[0,0];
      function stash(param)
       {var s=contents(buf);
        if(trim)
         {var len=caml_ml_string_length(s),switch$0=0;
          if(0 < len && 13 === caml_string_get(s,len - 1 | 0))
           {var _n3_=sub$0(s,0,len - 1 | 0);switch$0 = 1}
          if(! switch$0)var _n3_=s;
          var word=_n3_}
        else
         var word=s;
        words[1] = [0,word,words[1]];
        return clear$1(buf)}
      try
       {for(;;)
         {var c=caml_ml_input_char(ic);
          if(c === sep)stash(0);else add_char(buf,c);
          continue}}
      catch(_n2_)
       {_n2_ = caml_wrap_exception(_n2_);
        if(_n2_ === End_of_file)
         {if(0 < buf[2])stash(0);
          caml_ml_close_channel(ic);
          return of_list(rev(words[1]))}
        throw _n2_}}
    var _bd_=10,_be_=1;
    function read_arg(_n1_){return read_aux(_be_,_bd_,_n1_)}
    var _bf_=0,_bg_=0;
    function read_arg0(_n0_){return read_aux(_bg_,_bf_,_n0_)}
    function write_aux(sep,file,args)
     {var oc=open_out_bin(file);
      iter$5(function(s){return caml_call2(fprintf(oc,_bh_),s,sep)},args);
      return close_out(oc)}
    var _bi_=10;
    function write_arg(_nY_,_nZ_){return write_aux(_bi_,_nY_,_nZ_)}
    var _bj_=0;
    function write_arg0(_nW_,_nX_){return write_aux(_bj_,_nW_,_nX_)}
    var
     Stdlib_arg=
      [0,
       parse,
       parse_dynamic,
       parse_argv,
       parse_argv_dynamic,
       parse_and_expand_argv_dynamic,
       parse_expand,
       Help,
       Bad,
       usage,
       usage_string,
       align,
       current,
       read_arg,
       read_arg0,
       write_arg,
       write_arg0];
    caml_register_global(780,Stdlib_arg,"Stdlib__arg");
    var printers=[0,0];
    function field(x,i)
     {var f=x[1 + i];
      return is_block(f)
              ?caml_obj_tag(f) === 252
                ?caml_call1(sprintf(_bk_),f)
                :caml_obj_tag(f) === 253?to_string(f):cst$60
              :caml_call1(sprintf(_bl_),f)}
    function other_fields(x,i)
     {if(x.length - 1 <= i)return cst$61;
      var _nU_=other_fields(x,i + 1 | 0),_nV_=field(x,i);
      return caml_call2(sprintf(_bm_),_nV_,_nU_)}
    function use_printers(x)
     {function conv(param)
       {var param$0=param;
        for(;;)
         {if(param$0)
           {var tl=param$0[2],hd=param$0[1];
            try
             {var switch$0=0,val=caml_call1(hd,x);switch$0 = 1}
            catch(_nT_){}
            if(switch$0 && val){var s=val[1];return [0,s]}
            var param$0=tl;
            continue}
          return 0}}
      return conv(printers[1])}
    function to_string_default(x)
     {if(x === Out_of_memory)return cst_Out_of_memory;
      if(x === Stack_overflow)return cst_Stack_overflow;
      if(x[1] === Match_failure)
       {var match$0=x[2],char$0=match$0[3],line=match$0[2],file=match$0[1];
        return caml_call5
                (sprintf(locfmt),
                 file,
                 line,
                 char$0,
                 char$0 + 5 | 0,
                 cst_Pattern_matching_failed)}
      if(x[1] === Assert_failure)
       {var
         match$1=x[2],
         char$1=match$1[3],
         line$0=match$1[2],
         file$0=match$1[1];
        return caml_call5
                (sprintf(locfmt),
                 file$0,
                 line$0,
                 char$1,
                 char$1 + 6 | 0,
                 cst_Assertion_failed)}
      if(x[1] === Undefined_recursive_module)
       {var
         match$2=x[2],
         char$2=match$2[3],
         line$1=match$2[2],
         file$1=match$2[1];
        return caml_call5
                (sprintf(locfmt),
                 file$1,
                 line$1,
                 char$2,
                 char$2 + 6 | 0,
                 cst_Undefined_recursive_module)}
      if(0 === caml_obj_tag(x))
       {var constructor=x[1][1],match=x.length - 1;
        if(2 < match >>> 0)
         var
          _nP_=other_fields(x,2),
          _nQ_=field(x,1),
          _nS_=caml_call2(sprintf(_bn_),_nQ_,_nP_);
        else
         switch(match)
          {case 0:var _nS_=cst$62;break;
           case 1:var _nS_=cst$63;break;
           default:var _nR_=field(x,1),_nS_=caml_call1(sprintf(_bo_),_nR_)}
        return symbol(constructor,_nS_)}
      return x[1]}
    function to_string$7(e)
     {var match=use_printers(e);
      if(match){var s=match[1];return s}
      return to_string_default(e)}
    function print(fct,arg)
     {try
       {var _nO_=caml_call1(fct,arg);return _nO_}
      catch(x)
       {x = caml_wrap_exception(x);
        var _nN_=to_string$7(x);
        caml_call1(eprintf(_bp_),_nN_);
        caml_ml_flush(stderr);
        throw x}}
    function catch$0(fct,arg)
     {try
       {var _nM_=caml_call1(fct,arg);return _nM_}
      catch(x)
       {x = caml_wrap_exception(x);
        caml_ml_flush(stdout);
        var _nL_=to_string$7(x);
        caml_call1(eprintf(_bq_),_nL_);
        return exit(2)}}
    function convert_raw_backtrace(bt)
     {return [0,runtime.caml_convert_raw_backtrace(bt)]}
    function format_backtrace_slot(pos,slot)
     {function info(is_raise)
       {return is_raise
                ?0 === pos?cst_Raised_at:cst_Re_raised_at
                :0 === pos?cst_Raised_by_primitive_operat:cst_Called_from}
      if(0 === slot[0])
       {var
         _nE_=slot[5],
         _nF_=slot[4],
         _nG_=slot[3],
         _nH_=slot[6]?cst_inlined:cst$64,
         _nI_=slot[2],
         _nJ_=info(slot[1]);
        return [0,caml_call6(sprintf(_br_),_nJ_,_nI_,_nH_,_nG_,_nF_,_nE_)]}
      if(slot[1])return 0;
      var _nK_=info(0);
      return [0,caml_call1(sprintf(_bs_),_nK_)]}
    function print_raw_backtrace(outchan,raw_backtrace)
     {var backtrace=convert_raw_backtrace(raw_backtrace);
      if(backtrace)
       {var a=backtrace[1],_nC_=a.length - 1 - 1 | 0,_nB_=0;
        if(! (_nC_ < 0))
         {var i=_nB_;
          for(;;)
           {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]);
            if(match){var str=match[1];caml_call1(fprintf(outchan,_bt_),str)}
            var _nD_=i + 1 | 0;
            if(_nC_ !== i){var i=_nD_;continue}
            break}}
        return 0}
      return fprintf(outchan,_bu_)}
    function print_backtrace(outchan)
     {return print_raw_backtrace(outchan,caml_get_exception_raw_backtra(0))}
    function raw_backtrace_to_string(raw_backtrace)
     {var backtrace=convert_raw_backtrace(raw_backtrace);
      if(backtrace)
       {var a=backtrace[1],b=create$2(1024),_nz_=a.length - 1 - 1 | 0,_ny_=0;
        if(! (_nz_ < 0))
         {var i=_ny_;
          for(;;)
           {var match=format_backtrace_slot(i,caml_check_bound(a,i)[1 + i]);
            if(match){var str=match[1];caml_call1(bprintf(b,_bv_),str)}
            var _nA_=i + 1 | 0;
            if(_nz_ !== i){var i=_nA_;continue}
            break}}
        return contents(b)}
      return cst_Program_not_linked_with_g_}
    function backtrace_slot_is_raise(param)
     {return 0 === param[0]?param[1]:param[1]}
    function backtrace_slot_is_inline(param){return 0 === param[0]?param[6]:0}
    function backtrace_slot_location(param)
     {return 0 === param[0]?[0,[0,param[2],param[3],param[4],param[5]]]:0}
    function backtrace_slots(raw_backtrace)
     {var match=convert_raw_backtrace(raw_backtrace);
      if(match)
       {var backtrace=match[1],i$1=backtrace.length - 1 - 1 | 0,i=i$1;
        for(;;)
         {if(-1 === i)
           var _nx_=0;
          else
           {var
             param=caml_check_bound(backtrace,i)[1 + i],
             _nw_=0 === param[0]?1:0;
            if(! _nw_){var i$0=i - 1 | 0,i=i$0;continue}
            var _nx_=_nw_}
          return _nx_?[0,backtrace]:0}}
      return 0}
    function get_backtrace(param)
     {return raw_backtrace_to_string(caml_get_exception_raw_backtra(0))}
    function register_printer(fn){printers[1] = [0,fn,printers[1]];return 0}
    function exn_slot(x){return 0 === caml_obj_tag(x)?x[1]:x}
    function exn_slot_id(x){var slot=exn_slot(x);return slot[2]}
    function exn_slot_name(x){var slot=exn_slot(x);return slot[1]}
    var uncaught_exception_handler=[0,0];
    function set_uncaught_exception_handler(fn)
     {uncaught_exception_handler[1] = [0,fn];return 0}
    function _bw_(_nv_){return runtime.caml_raw_backtrace_next_slot(_nv_)}
    function _bx_(_nu_){return runtime.caml_convert_raw_backtrace_slot(_nu_)}
    function _by_(_nt_,_ns_)
     {return runtime.caml_raw_backtrace_slot(_nt_,_ns_)}
    function _bz_(_nr_){return runtime.caml_raw_backtrace_length(_nr_)}
    var
     _bA_=
      [0,
       backtrace_slot_is_raise,
       backtrace_slot_is_inline,
       backtrace_slot_location,
       format_backtrace_slot];
    function _bB_(_nq_){return caml_get_exception_raw_backtra(_nq_)}
    function _bC_(_np_){return runtime.caml_backtrace_status(_np_)}
    var
     Stdlib_printexc=
      [0,
       to_string$7,
       to_string_default,
       print,
       catch$0,
       print_backtrace,
       get_backtrace,
       function(_no_){return runtime.caml_record_backtrace(_no_)},
       _bC_,
       register_printer,
       use_printers,
       _bB_,
       print_raw_backtrace,
       raw_backtrace_to_string,
       set_uncaught_exception_handler,
       backtrace_slots,
       _bA_,
       _bz_,
       _by_,
       _bx_,
       _bw_,
       exn_slot_id,
       exn_slot_name];
    caml_register_global(781,Stdlib_printexc,"Stdlib__printexc");
    function const$0(c,param){return c}
    function flip(f,x,y){return caml_call2(f,y,x)}
    function negate(p,v){return 1 - caml_call1(p,v)}
    var
     Finally_raised=
      [248,cst_Stdlib_Fun_Finally_raised,caml_fresh_oo_id(0)];
    function protect(finally$0,work)
     {function finally_no_exn(param)
       {try
         {var _nn_=caml_call1(finally$0,0);return _nn_}
        catch(e)
         {e = caml_wrap_exception(e);
          var bt=caml_get_exception_raw_backtra(0),exn=[0,Finally_raised,e];
          caml_restore_raw_backtrace(exn,bt);
          throw exn}}
      try
       {var result=caml_call1(work,0)}
      catch(work_exn)
       {work_exn = caml_wrap_exception(work_exn);
        var work_bt=caml_get_exception_raw_backtra(0);
        finally_no_exn(0);
        caml_restore_raw_backtrace(work_exn,work_bt);
        throw work_exn}
      finally_no_exn(0);
      return result}
    var Stdlib_fun=[0,const$0,flip,negate,protect,Finally_raised];
    caml_register_global(782,Stdlib_fun,"Stdlib__fun");
    function print_stat(c)
     {var st=runtime.caml_gc_stat(0),_m8_=st[4];
      caml_call1(fprintf(c,_bD_),_m8_);
      var _m9_=st[5];
      caml_call1(fprintf(c,_bE_),_m9_);
      var _m__=st[14];
      caml_call1(fprintf(c,_bF_),_m__);
      fprintf(c,_bG_);
      var
       _m$_=st[1],
       l1=caml_ml_string_length(caml_call1(sprintf(_bH_),_m$_)),
       _na_=st[1];
      caml_call2(fprintf(c,_bI_),l1,_na_);
      var _nb_=st[2];
      caml_call2(fprintf(c,_bJ_),l1,_nb_);
      var _nc_=st[3];
      caml_call2(fprintf(c,_bK_),l1,_nc_);
      fprintf(c,_bL_);
      var
       _nd_=st[15],
       l2=caml_ml_string_length(caml_call1(sprintf(_bM_),_nd_)),
       _ne_=st[15];
      caml_call2(fprintf(c,_bN_),l2,_ne_);
      var _nf_=st[6];
      caml_call2(fprintf(c,_bO_),l2,_nf_);
      var _ng_=st[8];
      caml_call2(fprintf(c,_bP_),l2,_ng_);
      var _nh_=st[10];
      caml_call2(fprintf(c,_bQ_),l2,_nh_);
      var _ni_=st[12];
      caml_call2(fprintf(c,_bR_),l2,_ni_);
      var _nj_=st[13];
      caml_call2(fprintf(c,_bS_),l2,_nj_);
      fprintf(c,_bT_);
      var _nk_=st[9];
      caml_call1(fprintf(c,_bU_),_nk_);
      var _nl_=st[11];
      caml_call1(fprintf(c,_bV_),_nl_);
      var _nm_=st[7];
      return caml_call1(fprintf(c,_bW_),_nm_)}
    function allocated_bytes(param)
     {var
       match=runtime.caml_gc_counters(0),
       ma=match[3],
       pro=match[2],
       mi=match[1];
      return (mi + ma - pro) * 4}
    function create_alarm(f){return [0,1]}
    function delete_alarm(a){a[1] = 0;return 0}
    function _bX_(_m7_){return runtime.caml_final_release(_m7_)}
    function _bY_(_m6_,_m5_)
     {return runtime.caml_final_register_called_without_value(_m6_,_m5_)}
    var
     Stdlib_gc=
      [0,
       print_stat,
       allocated_bytes,
       function(_m4_,_m3_){return runtime.caml_final_register(_m4_,_m3_)},
       _bY_,
       _bX_,
       create_alarm,
       delete_alarm];
    caml_register_global(783,Stdlib_gc,"Stdlib__gc");
    function string(str)
     {return caml_md5_string(str,0,caml_ml_string_length(str))}
    function bytes(b){return string(caml_string_of_bytes(b))}
    function substring(str,ofs,len)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_string_length(str) - len | 0) < ofs))
       return caml_md5_string(str,ofs,len);
      return invalid_arg(cst_Digest_substring)}
    function subbytes(b,ofs,len)
     {return substring(caml_string_of_bytes(b),ofs,len)}
    function file(filename)
     {var ic=open_in_bin(filename);
      try
       {var d=runtime.caml_md5_chan(ic,-1)}
      catch(e){e = caml_wrap_exception(e);caml_ml_close_channel(ic);throw e}
      caml_ml_close_channel(ic);
      return d}
    function output$0(chan,digest){return output_string(chan,digest)}
    function input$0(chan){return really_input_string(chan,16)}
    function char_hex(n){var _m2_=10 <= n?87:48;return n + _m2_ | 0}
    function to_hex(d)
     {if(16 !== caml_ml_string_length(d))invalid_arg(cst_Digest_to_hex);
      var result=caml_create_bytes(32),i=0;
      for(;;)
       {var x=caml_string_get(d,i);
        caml_bytes_unsafe_set(result,i * 2 | 0,char_hex(x >>> 4 | 0));
        caml_bytes_unsafe_set(result,(i * 2 | 0) + 1 | 0,char_hex(x & 15));
        var _m1_=i + 1 | 0;
        if(15 !== i){var i=_m1_;continue}
        return caml_string_of_bytes(result)}}
    function from_hex(s)
     {if(32 !== caml_ml_string_length(s))invalid_arg(cst_Digest_from_hex);
      function digit(c)
       {if(65 <= c)
         {if(97 <= c)
           {if(! (103 <= c))return (c - 97 | 0) + 10 | 0}
          else
           if(! (71 <= c))return (c - 65 | 0) + 10 | 0}
        else
         {var switcher=c - 48 | 0;if(! (9 < switcher >>> 0))return c - 48 | 0}
        throw [0,Invalid_argument,cst_Digest_from_hex$0]}
      var result=caml_create_bytes(16),i=0;
      for(;;)
       {var i$0=2 * i | 0,_mZ_=digit(caml_string_get(s,i$0 + 1 | 0));
        caml_bytes_set
         (result,i,chr((digit(caml_string_get(s,i$0)) << 4) + _mZ_ | 0));
        var _m0_=i + 1 | 0;
        if(15 !== i){var i=_m0_;continue}
        return caml_string_of_bytes(result)}}
    var
     Stdlib_digest=
      [0,
       compare$5,
       equal$5,
       string,
       bytes,
       substring,
       subbytes,
       file,
       output$0,
       input$0,
       to_hex,
       from_hex];
    caml_register_global(784,Stdlib_digest,"Stdlib__digest");
    function new_state(param){return [0,caml_make_vect(55,0),0]}
    function assign(st1,st2)
     {blit$1(st2[1],0,st1[1],0,55);st1[2] = st2[2];return 0}
    function full_init(s,seed)
     {var seed$0=0 === seed.length - 1?[0,0]:seed,l=seed$0.length - 1,i$0=0;
      for(;;)
       {caml_check_bound(s[1],i$0)[1 + i$0] = i$0;
        var _mY_=i$0 + 1 | 0;
        if(54 !== i$0){var i$0=_mY_;continue}
        var accu=[0,cst_x$1],_mU_=54 + max(55,l) | 0,_mT_=0;
        if(! (_mU_ < 0))
         {var i=_mT_;
          for(;;)
           {var
             j=i % 55 | 0,
             k=caml_mod(i,l),
             x=caml_check_bound(seed$0,k)[1 + k];
            accu[1] = string(symbol(accu[1],caml_string_of_jsbytes("" + x)));
            var
             _mV_=accu[1],
             _mP_=caml_string_get(_mV_,3) << 24,
             _mQ_=caml_string_get(_mV_,2) << 16,
             _mR_=caml_string_get(_mV_,1) << 8,
             _mS_=((caml_string_get(_mV_,0) + _mR_ | 0) + _mQ_ | 0) + _mP_ | 0,
             _mW_=(caml_check_bound(s[1],j)[1 + j] ^ _mS_) & 1073741823;
            caml_check_bound(s[1],j)[1 + j] = _mW_;
            var _mX_=i + 1 | 0;
            if(_mU_ !== i){var i=_mX_;continue}
            break}}
        s[2] = 0;
        return 0}}
    function make$2(seed)
     {var result=new_state(0);full_init(result,seed);return result}
    function make_self_init(param){return make$2(caml_sys_random_seed(0))}
    function copy$5(s){var result=new_state(0);assign(result,s);return result}
    function bits(s)
     {s[2] = (s[2] + 1 | 0) % 55 | 0;
      var
       _mM_=s[2],
       curval=caml_check_bound(s[1],_mM_)[1 + _mM_],
       _mN_=(s[2] + 24 | 0) % 55 | 0,
       newval=
        caml_check_bound(s[1],_mN_)[1 + _mN_]
        +
        (curval ^ (curval >>> 25 | 0) & 31)
        |
        0,
       newval30=newval & 1073741823,
       _mO_=s[2];
      caml_check_bound(s[1],_mO_)[1 + _mO_] = newval30;
      return newval30}
    function int$0(s,bound)
     {if(! (1073741823 < bound) && 0 < bound)
       for(;;)
        {var r=bits(s),v=caml_mod(r,bound);
         if(((1073741823 - bound | 0) + 1 | 0) < (r - v | 0))continue;
         return v}
      return invalid_arg(cst_Random_int)}
    function int32(s,bound)
     {if(caml_lessequal(bound,0))return invalid_arg(cst_Random_int32);
      for(;;)
       {var b1=bits(s),b2=(bits(s) & 1) << 30,r=b1 | b2,v=caml_mod(r,bound);
        if(caml_greaterthan(r - v | 0,(2147483647 - bound | 0) + 1 | 0))
         continue;
        return v}}
    function int64(s,bound)
     {if(caml_lessequal(bound,_b0_))return invalid_arg(cst_Random_int64);
      for(;;)
       {var
         b1=caml_int64_of_int32(bits(s)),
         b2=caml_int64_shift_left(caml_int64_of_int32(bits(s)),30),
         b3=caml_int64_shift_left(caml_int64_of_int32(bits(s) & 7),60),
         r=caml_int64_or(b1,caml_int64_or(b2,b3)),
         v=runtime.caml_int64_mod(r,bound);
        if
         (caml_greaterthan
           (caml_int64_sub(r,v),
            caml_int64_add(caml_int64_sub(max_int$2,bound),_bZ_)))
         continue;
        return v}}
    function nativeint(s,bound){return int32(s,bound)}
    function float$0(s,bound)
     {var r1=bits(s),r2=bits(s);
      return (r1 / 1073741824. + r2) / 1073741824. * bound}
    function bool(s){return 0 === (bits(s) & 1)?1:0}
    var default$0=[0,_b1_.slice(),0];
    function bits$0(param){return bits(default$0)}
    function int$1(bound){return int$0(default$0,bound)}
    function int32$0(bound){return int32(default$0,bound)}
    function nativeint$0(bound){return nativeint(default$0,bound)}
    function int64$0(bound){return int64(default$0,bound)}
    function float$1(scale){return float$0(default$0,scale)}
    function bool$0(param){return bool(default$0)}
    function full_init$0(seed){return full_init(default$0,seed)}
    function init$4(seed){return full_init(default$0,[0,seed])}
    function self_init(param){return full_init$0(caml_sys_random_seed(0))}
    function get_state(param){return copy$5(default$0)}
    function set_state(s){return assign(default$0,s)}
    var
     _b2_=
      [0,
       make$2,
       make_self_init,
       copy$5,
       bits,
       int$0,
       int32,
       nativeint,
       int64,
       float$0,
       bool],
     Stdlib_random=
      [0,
       init$4,
       full_init$0,
       self_init,
       bits$0,
       int$1,
       int32$0,
       nativeint$0,
       int64$0,
       float$1,
       bool$0,
       _b2_,
       get_state,
       set_state];
    caml_register_global(785,Stdlib_random,"Stdlib__random");
    function ongoing_traversal(h)
     {var _mK_=h.length - 1 < 4?1:0,_mL_=_mK_ || (h[4] < 0?1:0);return _mL_}
    function flip_ongoing_traversal(h){h[4] = - h[4] | 0;return 0}
    try
     {var _cI_=caml_sys_getenv(cst_OCAMLRUNPARAM),params=_cI_}
    catch(_mI_)
     {_mI_ = caml_wrap_exception(_mI_);
      if(_mI_ !== Not_found)throw _mI_;
      try
       {var _cH_=caml_sys_getenv(cst_CAMLRUNPARAM),_b3_=_cH_}
      catch(_mJ_)
       {_mJ_ = caml_wrap_exception(_mJ_);
        if(_mJ_ !== Not_found)throw _mJ_;
        var _b3_=cst$65}
      var params=_b3_}
    var
     randomized_default=contains$0(params,82),
     randomized=[0,randomized_default];
    function randomize(param){randomized[1] = 1;return 0}
    function is_randomized(param){return randomized[1]}
    var prng=[246,function(_mH_){return caml_call1(_b2_[2],0)}];
    function create$3(opt,initial_size)
     {if(opt)var sth=opt[1],random=sth;else var random=randomized[1];
      var x=16;
      for(;;)
       {if(! (initial_size <= x) && ! (max_array_length < (x * 2 | 0)))
         {var x$0=x * 2 | 0,x=x$0;continue}
        if(random)
         var
          _mF_=caml_obj_tag(prng),
          _mG_=250 === _mF_?prng[1]:246 === _mF_?force_lazy_block(prng):prng,
          seed=caml_call1(_b2_[4],_mG_);
        else
         var seed=0;
        return [0,0,caml_make_vect(x,0),seed,x]}}
    function clear$2(h)
     {var _mE_=0 < h[1]?1:0;
      return _mE_?(h[1] = 0,fill$0(h[2],0,h[2].length - 1,0)):_mE_}
    function reset$0(h)
     {var len=h[2].length - 1;
      if(4 <= h.length - 1 && len !== abs(h[4]))
       {h[1] = 0;h[2] = caml_make_vect(abs(h[4]),0);return 0}
      return clear$2(h)}
    function copy_bucketlist(param)
     {if(param)
       {var
         key=param[1],
         data=param[2],
         next=param[3],
         prec$0=[0,key,data,next],
         prec=prec$0,
         param$0=next;
        for(;;)
         {if(param$0)
           {var
             key$0=param$0[1],
             data$0=param$0[2],
             next$0=param$0[3],
             r=[0,key$0,data$0,next$0];
            if(prec){prec[3] = r;var prec=r,param$0=next$0;continue}
            throw [0,Assert_failure,_b4_]}
          return prec$0}}
      return 0}
    function copy$6(init)
     {var _mB_=init[4],_mC_=init[3],_mD_=map$5(copy_bucketlist,init[2]);
      return [0,init[1],_mD_,_mC_,_mB_]}
    function length$4(h){return h[1]}
    function resize$0(indexfun,h)
     {var
       odata=h[2],
       osize=odata.length - 1,
       nsize=osize * 2 | 0,
       _ms_=nsize < max_array_length?1:0;
      if(_ms_)
       {var
         ndata=caml_make_vect(nsize,0),
         ndata_tail=caml_make_vect(nsize,0),
         inplace=1 - ongoing_traversal(h);
        h[2] = ndata;
        var _mu_=osize - 1 | 0,_mt_=0;
        if(! (_mu_ < 0))
         {var i$0=_mt_;
          a:
          for(;;)
           {var cell$1=caml_check_bound(odata,i$0)[1 + i$0],cell=cell$1;
            for(;;)
             {if(cell)
               {var
                 key=cell[1],
                 data=cell[2],
                 next=cell[3],
                 cell$0=inplace?cell:[0,key,data,0],
                 nidx=caml_call2(indexfun,h,key),
                 match=caml_check_bound(ndata_tail,nidx)[1 + nidx];
                if(match)
                 match[3] = cell$0;
                else
                 caml_check_bound(ndata,nidx)[1 + nidx] = cell$0;
                caml_check_bound(ndata_tail,nidx)[1 + nidx] = cell$0;
                var cell=next;
                continue}
              var _mA_=i$0 + 1 | 0;
              if(_mu_ !== i$0){var i$0=_mA_;continue a}
              break}
            break}}
        if(inplace)
         {var _mw_=nsize - 1 | 0,_mv_=0;
          if(! (_mw_ < 0))
           {var i=_mv_;
            for(;;)
             {var match$0=caml_check_bound(ndata_tail,i)[1 + i];
              if(match$0)match$0[3] = 0;
              var _mz_=i + 1 | 0;
              if(_mw_ !== i){var i=_mz_;continue}
              break}}
          var _mx_=0}
        else
         var _mx_=inplace;
        var _my_=_mx_}
      else
       var _my_=_ms_;
      return _my_}
    function iter$10(f,h)
     {function do_bucket(param)
       {var param$0=param;
        for(;;)
         {if(param$0)
           {var key=param$0[1],data=param$0[2],next=param$0[3];
            caml_call2(f,key,data);
            var param$0=next;
            continue}
          return 0}}
      var old_trav=ongoing_traversal(h);
      if(1 - old_trav)flip_ongoing_traversal(h);
      try
       {var d=h[2],_mo_=d.length - 1 - 1 | 0,_mn_=0;
        if(! (_mo_ < 0))
         {var i=_mn_;
          for(;;)
           {do_bucket(caml_check_bound(d,i)[1 + i]);
            var _mr_=i + 1 | 0;
            if(_mo_ !== i){var i=_mr_;continue}
            break}}
        var _mp_=1 - old_trav,_mq_=_mp_?flip_ongoing_traversal(h):_mp_;
        return _mq_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(old_trav)throw exn;
        flip_ongoing_traversal(h);
        throw exn}}
    function filter_map_inplace_bucket(f,h,i,prec,slot)
     {var prec$0=prec,slot$0=slot;
      for(;;)
       {if(slot$0)
         {var
           key=slot$0[1],
           data=slot$0[2],
           next=slot$0[3],
           match=caml_call2(f,key,data);
          if(match)
           {var data$0=match[1];
            if(prec$0)
             prec$0[3] = slot$0;
            else
             caml_check_bound(h[2],i)[1 + i] = slot$0;
            slot$0[2] = data$0;
            var prec$0=slot$0,slot$0=next;
            continue}
          h[1] = h[1] - 1 | 0;
          var slot$0=next;
          continue}
        return prec$0
                ?(prec$0[3] = 0,0)
                :(caml_check_bound(h[2],i)[1 + i] = 0,0)}}
    function filter_map_inplace(f,h)
     {var d=h[2],old_trav=ongoing_traversal(h);
      if(1 - old_trav)flip_ongoing_traversal(h);
      try
       {var _mk_=d.length - 1 - 1 | 0,_mj_=0;
        if(! (_mk_ < 0))
         {var i=_mj_;
          for(;;)
           {filter_map_inplace_bucket(f,h,i,0,caml_check_bound(h[2],i)[1 + i]);
            var _mm_=i + 1 | 0;
            if(_mk_ !== i){var i=_mm_;continue}
            break}}
        var _ml_=0;
        return _ml_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(old_trav)throw exn;
        flip_ongoing_traversal(h);
        throw exn}}
    function fold$3(f,h,init)
     {function do_bucket(b,accu)
       {var b$0=b,accu$0=accu;
        for(;;)
         {if(b$0)
           {var
             key=b$0[1],
             data=b$0[2],
             next=b$0[3],
             accu$1=caml_call3(f,key,data,accu$0),
             b$0=next,
             accu$0=accu$1;
            continue}
          return accu$0}}
      var old_trav=ongoing_traversal(h);
      if(1 - old_trav)flip_ongoing_traversal(h);
      try
       {var d=h[2],accu=[0,init],_mf_=d.length - 1 - 1 | 0,_me_=0;
        if(! (_mf_ < 0))
         {var i=_me_;
          for(;;)
           {var _mh_=accu[1];
            accu[1] = do_bucket(caml_check_bound(d,i)[1 + i],_mh_);
            var _mi_=i + 1 | 0;
            if(_mf_ !== i){var i=_mi_;continue}
            break}}
        if(1 - old_trav)flip_ongoing_traversal(h);
        var _mg_=accu[1];
        return _mg_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(old_trav)throw exn;
        flip_ongoing_traversal(h);
        throw exn}}
    function bucket_length(accu,param)
     {var accu$0=accu,param$0=param;
      for(;;)
       {if(param$0)
         {var
           param$1=param$0[3],
           accu$1=accu$0 + 1 | 0,
           accu$0=accu$1,
           param$0=param$1;
          continue}
        return accu$0}}
    function stats(h)
     {var
       _mb_=h[2],
       _mc_=0,
       mbl=
        fold_left$1(function(m,b){return max(m,bucket_length(0,b))},_mc_,_mb_),
       histo=caml_make_vect(mbl + 1 | 0,0),
       _md_=h[2];
      iter$5
       (function(b)
         {var l=bucket_length(0,b);
          histo[1 + l] = caml_check_bound(histo,l)[1 + l] + 1 | 0;
          return 0},
        _md_);
      return [0,h[1],h[2].length - 1,mbl,histo]}
    function to_seq$9(tbl)
     {var tbl_data=tbl[2];
      function aux(i,buck,param)
       {var i$0=i,buck$0=buck;
        for(;;)
         {if(buck$0)
           {var key=buck$0[1],data=buck$0[2],next=buck$0[3];
            return [0,[0,key,data],function(_ma_){return aux(i$0,next,_ma_)}]}
          if(i$0 === tbl_data.length - 1)return 0;
          var
           buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0],
           i$1=i$0 + 1 | 0,
           i$0=i$1,
           buck$0=buck$1;
          continue}}
      var _l9_=0,_l__=0;
      return function(_l$_){return aux(_l__,_l9_,_l$_)}}
    function to_seq_keys(m)
     {var _l5_=to_seq$9(m);
      function _l6_(_l8_){return _l8_[1]}
      return function(_l7_){return map(_l6_,_l5_,_l7_)}}
    function to_seq_values(m)
     {var _l1_=to_seq$9(m);
      function _l2_(_l4_){return _l4_[2]}
      return function(_l3_){return map(_l2_,_l1_,_l3_)}}
    function MakeSeeded(H)
     {function key_index(h,key)
       {var _l0_=h[2].length - 1 - 1 | 0;
        return caml_call2(H[2],h[3],key) & _l0_}
      function add(h,key,data)
       {var
         i=key_index(h,key),
         bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]];
        caml_check_bound(h[2],i)[1 + i] = bucket;
        h[1] = h[1] + 1 | 0;
        var _lZ_=h[2].length - 1 << 1 < h[1]?1:0;
        return _lZ_?resize$0(key_index,h):_lZ_}
      function remove(h,key)
       {var
         i=key_index(h,key),
         c$0=caml_check_bound(h[2],i)[1 + i],
         prec=0,
         c=c$0;
        for(;;)
         {if(c)
           {var k=c[1],next=c[3];
            if(caml_call2(H[1],k,key))
             {h[1] = h[1] - 1 | 0;
              return prec
                      ?(prec[3] = next,0)
                      :(caml_check_bound(h[2],i)[1 + i] = next,0)}
            var prec=c,c=next;
            continue}
          return 0}}
      function find(h,key)
       {var _lY_=key_index(h,key),match=caml_check_bound(h[2],_lY_)[1 + _lY_];
        if(match)
         {var k1=match[1],d1=match[2],next1=match[3];
          if(caml_call2(H[1],key,k1))return d1;
          if(next1)
           {var k2=next1[1],d2=next1[2],next2=next1[3];
            if(caml_call2(H[1],key,k2))return d2;
            if(next2)
             {var k3=next2[1],d3=next2[2],next3=next2[3];
              if(caml_call2(H[1],key,k3))return d3;
              var param=next3;
              for(;;)
               {if(param)
                 {var k=param[1],data=param[2],next=param[3];
                  if(caml_call2(H[1],key,k))return data;
                  var param=next;
                  continue}
                throw Not_found}}
            throw Not_found}
          throw Not_found}
        throw Not_found}
      function find_opt(h,key)
       {var _lX_=key_index(h,key),match=caml_check_bound(h[2],_lX_)[1 + _lX_];
        if(match)
         {var k1=match[1],d1=match[2],next1=match[3];
          if(caml_call2(H[1],key,k1))return [0,d1];
          if(next1)
           {var k2=next1[1],d2=next1[2],next2=next1[3];
            if(caml_call2(H[1],key,k2))return [0,d2];
            if(next2)
             {var k3=next2[1],d3=next2[2],next3=next2[3];
              if(caml_call2(H[1],key,k3))return [0,d3];
              var param=next3;
              for(;;)
               {if(param)
                 {var k=param[1],data=param[2],next=param[3];
                  if(caml_call2(H[1],key,k))return [0,data];
                  var param=next;
                  continue}
                return 0}}
            return 0}
          return 0}
        return 0}
      function find_all(h,key)
       {function find_in_bucket(param)
         {var param$0=param;
          for(;;)
           {if(param$0)
             {var k=param$0[1],d=param$0[2],next=param$0[3];
              if(caml_call2(H[1],k,key))return [0,d,find_in_bucket(next)];
              var param$0=next;
              continue}
            return 0}}
        var _lW_=key_index(h,key);
        return find_in_bucket(caml_check_bound(h[2],_lW_)[1 + _lW_])}
      function replace(h,key,data)
       {var
         i=key_index(h,key),
         param$0=caml_check_bound(h[2],i)[1 + i],
         param=param$0;
        for(;;)
         {if(param)
           {var k=param[1],next=param[3];
            if(! caml_call2(H[1],k,key)){var param=next;continue}
            param[1] = key;
            param[2] = data;
            var _lT_=0}
          else
           var _lT_=1;
          if(_lT_)
           {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0];
            h[1] = h[1] + 1 | 0;
            var _lU_=h[2].length - 1 << 1 < h[1]?1:0;
            if(_lU_)return resize$0(key_index,h);
            var _lV_=_lU_}
          else
           var _lV_=_lT_;
          return _lV_}}
      function mem(h,key)
       {var
         _lS_=key_index(h,key),
         param$0=caml_check_bound(h[2],_lS_)[1 + _lS_],
         param=param$0;
        for(;;)
         {if(param)
           {var k=param[1],next=param[3],_lR_=caml_call2(H[1],k,key);
            if(_lR_)return _lR_;
            var param=next;
            continue}
          return 0}}
      function add_seq(tbl,i)
       {return iter
                (function(param)
                  {var v=param[2],k=param[1];return add(tbl,k,v)},
                 i)}
      function replace_seq(tbl,i)
       {return iter
                (function(param)
                  {var v=param[2],k=param[1];return replace(tbl,k,v)},
                 i)}
      function of_seq(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl}
      return [0,
              create$3,
              clear$2,
              reset$0,
              copy$6,
              add,
              remove,
              find,
              find_opt,
              find_all,
              replace,
              mem,
              iter$10,
              filter_map_inplace,
              fold$3,
              length$4,
              stats,
              to_seq$9,
              to_seq_keys,
              to_seq_values,
              add_seq,
              replace_seq,
              of_seq]}
    function Make$0(H)
     {var equal=H[1];
      function hash(seed,x){return caml_call1(H[2],x)}
      var
       include=MakeSeeded([0,equal,hash]),
       clear=include[2],
       reset=include[3],
       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],
       _lQ_=include[1];
      function create(sz){return caml_call2(_lQ_,_b5_,sz)}
      function of_seq(i)
       {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl}
      return [0,
              create,
              clear,
              reset,
              copy,
              add,
              remove,
              find,
              find_opt,
              find_all,
              replace,
              mem,
              iter,
              filter_map_inplace,
              fold,
              length,
              stats,
              to_seq,
              to_seq_keys,
              to_seq_values,
              add_seq,
              replace_seq,
              of_seq]}
    function hash$1(x){return caml_hash(10,100,0,x)}
    function hash_param(n1,n2,x){return caml_hash(n1,n2,0,x)}
    function seeded_hash(seed,x){return caml_hash(10,100,seed,x)}
    function key_index(h,key)
     {return 3 <= h.length - 1
              ?caml_hash(10,100,h[3],key) & (h[2].length - 1 - 1 | 0)
              :caml_mod
                (runtime.caml_hash_univ_param(10,100,key),h[2].length - 1)}
    function add$0(h,key,data)
     {var
       i=key_index(h,key),
       bucket=[0,key,data,caml_check_bound(h[2],i)[1 + i]];
      caml_check_bound(h[2],i)[1 + i] = bucket;
      h[1] = h[1] + 1 | 0;
      var _lP_=h[2].length - 1 << 1 < h[1]?1:0;
      return _lP_?resize$0(key_index,h):_lP_}
    function remove(h,key)
     {var i=key_index(h,key),c$0=caml_check_bound(h[2],i)[1 + i],prec=0,c=c$0;
      for(;;)
       {if(c)
         {var k=c[1],next=c[3];
          if(0 === caml_compare(k,key))
           {h[1] = h[1] - 1 | 0;
            return prec
                    ?(prec[3] = next,0)
                    :(caml_check_bound(h[2],i)[1 + i] = next,0)}
          var prec=c,c=next;
          continue}
        return 0}}
    function find$0(h,key)
     {var _lO_=key_index(h,key),match=caml_check_bound(h[2],_lO_)[1 + _lO_];
      if(match)
       {var k1=match[1],d1=match[2],next1=match[3];
        if(0 === caml_compare(key,k1))return d1;
        if(next1)
         {var k2=next1[1],d2=next1[2],next2=next1[3];
          if(0 === caml_compare(key,k2))return d2;
          if(next2)
           {var k3=next2[1],d3=next2[2],next3=next2[3];
            if(0 === caml_compare(key,k3))return d3;
            var param=next3;
            for(;;)
             {if(param)
               {var k=param[1],data=param[2],next=param[3];
                if(0 === caml_compare(key,k))return data;
                var param=next;
                continue}
              throw Not_found}}
          throw Not_found}
        throw Not_found}
      throw Not_found}
    function find_opt$0(h,key)
     {var _lN_=key_index(h,key),match=caml_check_bound(h[2],_lN_)[1 + _lN_];
      if(match)
       {var k1=match[1],d1=match[2],next1=match[3];
        if(0 === caml_compare(key,k1))return [0,d1];
        if(next1)
         {var k2=next1[1],d2=next1[2],next2=next1[3];
          if(0 === caml_compare(key,k2))return [0,d2];
          if(next2)
           {var k3=next2[1],d3=next2[2],next3=next2[3];
            if(0 === caml_compare(key,k3))return [0,d3];
            var param=next3;
            for(;;)
             {if(param)
               {var k=param[1],data=param[2],next=param[3];
                if(0 === caml_compare(key,k))return [0,data];
                var param=next;
                continue}
              return 0}}
          return 0}
        return 0}
      return 0}
    function find_all$0(h,key)
     {function find_in_bucket(param)
       {var param$0=param;
        for(;;)
         {if(param$0)
           {var k=param$0[1],data=param$0[2],next=param$0[3];
            if(0 === caml_compare(k,key))return [0,data,find_in_bucket(next)];
            var param$0=next;
            continue}
          return 0}}
      var _lM_=key_index(h,key);
      return find_in_bucket(caml_check_bound(h[2],_lM_)[1 + _lM_])}
    function replace(h,key,data)
     {var
       i=key_index(h,key),
       param$0=caml_check_bound(h[2],i)[1 + i],
       param=param$0;
      for(;;)
       {if(param)
         {var k=param[1],next=param[3];
          if(0 !== caml_compare(k,key)){var param=next;continue}
          param[1] = key;
          param[2] = data;
          var _lJ_=0}
        else
         var _lJ_=1;
        if(_lJ_)
         {caml_check_bound(h[2],i)[1 + i] = [0,key,data,param$0];
          h[1] = h[1] + 1 | 0;
          var _lK_=h[2].length - 1 << 1 < h[1]?1:0;
          if(_lK_)return resize$0(key_index,h);
          var _lL_=_lK_}
        else
         var _lL_=_lJ_;
        return _lL_}}
    function mem$2(h,key)
     {var
       _lI_=key_index(h,key),
       param$0=caml_check_bound(h[2],_lI_)[1 + _lI_],
       param=param$0;
      for(;;)
       {if(param)
         {var k=param[1],next=param[3],_lH_=0 === caml_compare(k,key)?1:0;
          if(_lH_)return _lH_;
          var param=next;
          continue}
        return 0}}
    function add_seq$2(tbl,i)
     {return iter
              (function(param)
                {var v=param[2],k=param[1];return add$0(tbl,k,v)},
               i)}
    function replace_seq(tbl,i)
     {return iter
              (function(param)
                {var v=param[2],k=param[1];return replace(tbl,k,v)},
               i)}
    function of_seq$7(i){var tbl=create$3(0,16);replace_seq(tbl,i);return tbl}
    var
     Stdlib_hashtbl=
      [0,
       create$3,
       clear$2,
       reset$0,
       copy$6,
       add$0,
       find$0,
       find_opt$0,
       find_all$0,
       mem$2,
       remove,
       replace,
       iter$10,
       filter_map_inplace,
       fold$3,
       length$4,
       randomize,
       is_randomized,
       stats,
       to_seq$9,
       to_seq_keys,
       to_seq_values,
       add_seq$2,
       replace_seq,
       of_seq$7,
       Make$0,
       MakeSeeded,
       hash$1,
       seeded_hash,
       hash_param,
       caml_hash];
    caml_register_global(786,Stdlib_hashtbl,"Stdlib__hashtbl");
    function weak_create(l)
     {var _lF_=0 <= l?1:0,_lG_=_lF_?l <= _r_[15]?1:0:_lF_;
      if(1 - _lG_)invalid_arg(cst_Weak_create);
      return runtime.caml_weak_create(l)}
    function length$5(x){return x.length - 1 - 2 | 0}
    function raise_if_invalid_offset$0(e,o,msg)
     {var _lC_=0 <= o?1:0,_lD_=_lC_?o < length$5(e)?1:0:_lC_,_lE_=1 - _lD_;
      return _lE_?invalid_arg(msg):_lE_}
    function set(e,o,x)
     {raise_if_invalid_offset$0(e,o,cst_Weak_set);
      if(x){var x$0=x[1];return caml_ephe_set_key(e,o,x$0)}
      return caml_ephe_unset_key(e,o)}
    function get$0(e,o)
     {raise_if_invalid_offset$0(e,o,cst_Weak_get);
      return runtime.caml_weak_get(e,o)}
    function get_copy(e,o)
     {raise_if_invalid_offset$0(e,o,cst_Weak_get_copy);
      return runtime.caml_weak_get_copy(e,o)}
    function check$0(e,o)
     {raise_if_invalid_offset$0(e,o,cst_Weak_check);
      return runtime.caml_weak_check(e,o)}
    function blit$4(e1,o1,e2,o2,l)
     {if
       (0
        <=
        l
        &&
        0
        <=
        o1
        &&
        !
        ((length$5(e1) - l | 0) < o1)
        &&
        0
        <=
        o2
        &&
        !
        ((length$5(e2) - l | 0) < o2))
       {var
         _lA_=0 !== l?1:0,
         _lB_=_lA_?runtime.caml_weak_blit(e1,o1,e2,o2,l):_lA_;
        return _lB_}
      return invalid_arg(cst_Weak_blit)}
    function fill$2(ar,ofs,len,x)
     {if(0 <= ofs && 0 <= len && ! ((length$5(ar) - len | 0) < ofs))
       {var _ly_=(ofs + len | 0) - 1 | 0;
        if(! (_ly_ < ofs))
         {var i=ofs;
          for(;;)
           {set(ar,i,x);
            var _lz_=i + 1 | 0;
            if(_ly_ !== i){var i=_lz_;continue}
            break}}
        return 0}
      throw [0,Invalid_argument,cst_Weak_fill]}
    function Make$1(H)
     {var emptybucket=weak_create(0);
      function get_index(t,h){return caml_mod(h & 2147483647,t[1].length - 1)}
      var limit=7;
      function create(sz)
       {var
         sz$0=7 <= sz?sz:7,
         sz$1=max_array_length < sz$0?max_array_length:sz$0;
        return [0,
                caml_make_vect(sz$1,emptybucket),
                caml_make_vect(sz$1,[0]),
                limit,
                0,
                0]}
      function clear(t)
       {var _lw_=t[1].length - 1 - 1 | 0,_lv_=0;
        if(! (_lw_ < 0))
         {var i=_lv_;
          for(;;)
           {caml_check_bound(t[1],i)[1 + i] = emptybucket;
            caml_check_bound(t[2],i)[1 + i] = [0];
            var _lx_=i + 1 | 0;
            if(_lw_ !== i){var i=_lx_;continue}
            break}}
        t[3] = limit;
        t[4] = 0;
        return 0}
      function fold(f,t,init)
       {var _lu_=t[1],i=0;
        return fold_right$0
                (function(b,accu$1)
                  {var i$0=i,accu=accu$1;
                   for(;;)
                    {if(length$5(b) <= i$0)return accu;
                     var match=get$0(b,i$0);
                     if(match)
                      {var
                        v=match[1],
                        accu$0=caml_call2(f,v,accu),
                        i$1=i$0 + 1 | 0,
                        i$0=i$1,
                        accu=accu$0;
                       continue}
                     var i$2=i$0 + 1 | 0,i$0=i$2;
                     continue}},
                 _lu_,
                 init)}
      function iter(f,t)
       {var _lt_=t[1],i=0;
        return iter$5
                (function(b)
                  {var i$0=i;
                   for(;;)
                    {if(length$5(b) <= i$0)return 0;
                     var match=get$0(b,i$0);
                     if(match)
                      {var v=match[1];
                       caml_call1(f,v);
                       var i$1=i$0 + 1 | 0,i$0=i$1;
                       continue}
                     var i$2=i$0 + 1 | 0,i$0=i$2;
                     continue}},
                 _lt_)}
      function count_bucket(i,b,accu)
       {var i$0=i,accu$0=accu;
        for(;;)
         {if(length$5(b) <= i$0)return accu$0;
          var
           _ls_=check$0(b,i$0)?1:0,
           accu$1=accu$0 + _ls_ | 0,
           i$1=i$0 + 1 | 0,
           i$0=i$1,
           accu$0=accu$1;
          continue}}
      function count(t)
       {var _ln_=0,_lo_=t[1],_lp_=0;
        return fold_right$0
                (function(_lq_,_lr_){return count_bucket(_lp_,_lq_,_lr_)},
                 _lo_,
                 _ln_)}
      function add_aux(t,setter,d,h,index)
       {var
         bucket$0=caml_check_bound(t[1],index)[1 + index],
         hashes=caml_check_bound(t[2],index)[1 + index],
         sz=length$5(bucket$0),
         i$3=0;
        for(;;)
         {if(sz <= i$3)
           {var
             newsz=
              min(((3 * sz | 0) / 2 | 0) + 3 | 0,max_array_length - 2 | 0);
            if(newsz <= sz)failwith(cst_Weak_Make_hash_bucket_cann);
            var
             newbucket$0=weak_create(newsz),
             newhashes=caml_make_vect(newsz,0);
            blit$4(bucket$0,0,newbucket$0,0,sz);
            blit$1(hashes,0,newhashes,0,sz);
            caml_call3(setter,newbucket$0,sz,d);
            caml_check_bound(newhashes,sz)[1 + sz] = h;
            caml_check_bound(t[1],index)[1 + index] = newbucket$0;
            caml_check_bound(t[2],index)[1 + index] = newhashes;
            var _lj_=sz <= t[3]?1:0,_lk_=_lj_?t[3] < newsz?1:0:_lj_;
            if(_lk_)
             {t[4] = t[4] + 1 | 0;
              var i$4=0;
              for(;;)
               {var
                 _k$_=t[5],
                 bucket=caml_check_bound(t[1],_k$_)[1 + _k$_],
                 _la_=t[5],
                 hbucket=caml_check_bound(t[2],_la_)[1 + _la_],
                 n=length$5(bucket),
                 prev_len=(((n - 3 | 0) * 2 | 0) + 2 | 0) / 3 | 0,
                 live=count_bucket(0,bucket,0);
                if(live <= prev_len)
                 {var j$2=length$5(bucket) - 1 | 0,i$0=0,j=j$2;
                  for(;;)
                   {if(prev_len <= j)
                     {if(check$0(bucket,i$0))
                       {var i$1=i$0 + 1 | 0,i$0=i$1;continue}
                      if(check$0(bucket,j))
                       {blit$4(bucket,j,bucket,i$0,1);
                        var _lb_=caml_check_bound(hbucket,j)[1 + j];
                        caml_check_bound(hbucket,i$0)[1 + i$0] = _lb_;
                        var j$0=j - 1 | 0,i$2=i$0 + 1 | 0,i$0=i$2,j=j$0;
                        continue}
                      var j$1=j - 1 | 0,j=j$1;
                      continue}
                    if(0 === prev_len)
                     {var _lc_=t[5];
                      caml_check_bound(t[1],_lc_)[1 + _lc_] = emptybucket;
                      var _ld_=t[5];
                      caml_check_bound(t[2],_ld_)[1 + _ld_] = [0]}
                    else
                     {var newbucket=weak_create(prev_len);
                      blit$4(bucket,0,newbucket,0,prev_len);
                      var _lg_=t[5];
                      caml_check_bound(t[1],_lg_)[1 + _lg_] = newbucket;
                      var _lh_=sub$1(hbucket,0,prev_len),_li_=t[5];
                      caml_check_bound(t[2],_li_)[1 + _li_] = _lh_}
                    var _le_=t[3] < n?1:0,_lf_=_le_?prev_len <= t[3]?1:0:_le_;
                    if(_lf_)t[4] = t[4] - 1 | 0;
                    break}}
                t[5] = caml_mod(t[5] + 1 | 0,t[1].length - 1);
                var _lm_=i$4 + 1 | 0;
                if(2 !== i$4){var i$4=_lm_;continue}
                break}}
            var _ll_=((t[1].length - 1) / 2 | 0) < t[4]?1:0;
            if(_ll_)
             {var
               n$0=t[1].length - 1,
               newlen=min(((3 * n$0 | 0) / 2 | 0) + 3 | 0,max_array_length);
              if(n$0 < newlen)
               {var newt=create(newlen),_k__=t[1],i=0;
                iteri$2
                 (function(j,ob)
                   {var i$0=i;
                    for(;;)
                     {if(length$5(ob) <= i$0)return 0;
                      var match=check$0(ob,i$0);
                      if(match)
                       {var
                         oh=caml_check_bound(t[2],j)[1 + j],
                         setter$0=
                          function(i)
                           {function setter(nb,ni,param){return blit$4(ob,i,nb,ni,1)}
                            return setter},
                         setter=setter$0(i$0),
                         h=caml_check_bound(oh,i$0)[1 + i$0];
                        add_aux(newt,setter,0,h,get_index(newt,h));
                        var i$1=i$0 + 1 | 0,i$0=i$1;
                        continue}
                      var i$2=i$0 + 1 | 0,i$0=i$2;
                      continue}},
                  _k__);
                t[1] = newt[1];
                t[2] = newt[2];
                t[3] = newt[3];
                t[4] = newt[4];
                t[5] = caml_mod(t[5],newt[1].length - 1);
                return 0}
              t[3] = max_int;
              t[4] = 0;
              return 0}
            return _ll_}
          if(check$0(bucket$0,i$3)){var i$5=i$3 + 1 | 0,i$3=i$5;continue}
          caml_call3(setter,bucket$0,i$3,d);
          caml_check_bound(hashes,i$3)[1 + i$3] = h;
          return 0}}
      function add(t,d)
       {var h=caml_call1(H[2],d);return add_aux(t,set,[0,d],h,get_index(t,h))}
      function find_or(t,d,ifnotfound)
       {var
         h=caml_call1(H[2],d),
         index=get_index(t,h),
         bucket=caml_check_bound(t[1],index)[1 + index],
         hashes=caml_check_bound(t[2],index)[1 + index],
         sz=length$5(bucket),
         i=0;
        for(;;)
         {if(sz <= i)return caml_call2(ifnotfound,h,index);
          if(h === caml_check_bound(hashes,i)[1 + i])
           {var match=get_copy(bucket,i);
            if(match)
             {var v=match[1];
              if(caml_call2(H[1],v,d))
               {var match$0=get$0(bucket,i);
                if(match$0){var v$0=match$0[1];return v$0}
                var i$0=i + 1 | 0,i=i$0;
                continue}}
            var i$1=i + 1 | 0,i=i$1;
            continue}
          var i$2=i + 1 | 0,i=i$2;
          continue}}
      function merge(t,d)
       {return find_or
                (t,d,function(h,index){add_aux(t,set,[0,d],h,index);return d})}
      function find(t,d)
       {return find_or(t,d,function(h,index){throw Not_found})}
      function find_opt(t,d)
       {var
         h=caml_call1(H[2],d),
         index=get_index(t,h),
         bucket=caml_check_bound(t[1],index)[1 + index],
         hashes=caml_check_bound(t[2],index)[1 + index],
         sz=length$5(bucket),
         i=0;
        for(;;)
         {if(sz <= i)return 0;
          if(h === caml_check_bound(hashes,i)[1 + i])
           {var match=get_copy(bucket,i);
            if(match)
             {var v=match[1];
              if(caml_call2(H[1],v,d))
               {var v$0=get$0(bucket,i);
                if(v$0)return v$0;
                var i$0=i + 1 | 0,i=i$0;
                continue}}
            var i$1=i + 1 | 0,i=i$1;
            continue}
          var i$2=i + 1 | 0,i=i$2;
          continue}}
      function find_shadow(t,d,iffound,ifnotfound)
       {var
         h=caml_call1(H[2],d),
         index=get_index(t,h),
         bucket=caml_check_bound(t[1],index)[1 + index],
         hashes=caml_check_bound(t[2],index)[1 + index],
         sz=length$5(bucket),
         i=0;
        for(;;)
         {if(sz <= i)return ifnotfound;
          if(h === caml_check_bound(hashes,i)[1 + i])
           {var match=get_copy(bucket,i);
            if(match)
             {var v=match[1];
              if(caml_call2(H[1],v,d))return caml_call2(iffound,bucket,i)}
            var i$0=i + 1 | 0,i=i$0;
            continue}
          var i$1=i + 1 | 0,i=i$1;
          continue}}
      function remove(t,d)
       {var _k9_=0;
        return find_shadow(t,d,function(w,i){return set(w,i,0)},_k9_)}
      function mem(t,d)
       {var _k8_=0;return find_shadow(t,d,function(w,i){return 1},_k8_)}
      function find_all(t,d)
       {var
         h=caml_call1(H[2],d),
         index=get_index(t,h),
         bucket=caml_check_bound(t[1],index)[1 + index],
         hashes=caml_check_bound(t[2],index)[1 + index],
         sz=length$5(bucket),
         i=0,
         accu=0;
        for(;;)
         {if(sz <= i)return accu;
          if(h === caml_check_bound(hashes,i)[1 + i])
           {var match=get_copy(bucket,i);
            if(match)
             {var v=match[1];
              if(caml_call2(H[1],v,d))
               {var match$0=get$0(bucket,i);
                if(match$0)
                 {var
                   v$0=match$0[1],
                   accu$0=[0,v$0,accu],
                   i$0=i + 1 | 0,
                   i=i$0,
                   accu=accu$0;
                  continue}
                var i$1=i + 1 | 0,i=i$1;
                continue}}
            var i$2=i + 1 | 0,i=i$2;
            continue}
          var i$3=i + 1 | 0,i=i$3;
          continue}}
      function stats(t)
       {var len=t[1].length - 1,lens=map$5(length$5,t[1]);
        sort(caml_int_compare,lens);
        var
         _k0_=0,
         totlen=
          fold_left$1(function(_k7_,_k6_){return _k7_ + _k6_ | 0},_k0_,lens),
         _k1_=len - 1 | 0,
         _k3_=len / 2 | 0,
         _k2_=caml_check_bound(lens,_k1_)[1 + _k1_],
         _k4_=caml_check_bound(lens,_k3_)[1 + _k3_],
         _k5_=caml_check_bound(lens,0)[1];
        return [0,len,count(t),totlen,_k5_,_k4_,_k2_]}
      return [0,
              create,
              clear,
              merge,
              add,
              remove,
              find,
              find_opt,
              find_all,
              mem,
              iter,
              fold,
              count,
              stats]}
    var
     Stdlib_weak=
      [0,weak_create,length$5,set,get$0,get_copy,check$0,fill$2,blit$4,Make$1];
    caml_register_global(787,Stdlib_weak,"Stdlib__weak");
    function id$0(x){return x}
    var
     String_tag=[248,cst_Stdlib_Format_String_tag,caml_fresh_oo_id(0)],
     size=0,
     unknown=-1;
    function pp_enqueue(state,token)
     {state[13] = state[13] + token[3] | 0;return add(token,state[28])}
    var pp_infinity=1000000010;
    function pp_output_string(state,s)
     {return caml_call3(state[17],s,0,caml_ml_string_length(s))}
    function pp_output_newline(state){return caml_call1(state[19],0)}
    function format_pp_text(state,size,text)
     {state[9] = state[9] - size | 0;
      pp_output_string(state,text);
      state[11] = 0;
      return 0}
    function format_string(state,s)
     {var _kZ_=caml_string_notequal(s,cst$66);
      return _kZ_?format_pp_text(state,caml_ml_string_length(s),s):_kZ_}
    function break_new_line(state,param,width)
     {var after=param[3],offset=param[2],before=param[1];
      format_string(state,before);
      pp_output_newline(state);
      state[11] = 1;
      var
       indent=(state[6] - width | 0) + offset | 0,
       real_indent=min(state[8],indent);
      state[10] = real_indent;
      state[9] = state[6] - state[10] | 0;
      caml_call1(state[21],state[10]);
      return format_string(state,after)}
    function break_line(state,width){return break_new_line(state,_b6_,width)}
    function break_same_line(state,param)
     {var after=param[3],width=param[2],before=param[1];
      format_string(state,before);
      state[9] = state[9] - width | 0;
      caml_call1(state[20],width);
      return format_string(state,after)}
    function advance_left(state)
     {for(;;)
       {var match$12=peek_opt(state[28]);
        if(match$12)
         {var
           match$13=match$12[1],
           size$0=match$13[1],
           length$0=match$13[3],
           token=match$13[2],
           pending_count=state[13] - state[12] | 0,
           _kX_=0 <= size$0?1:0,
           _kY_=_kX_ || (state[9] <= pending_count?1:0);
          if(_kY_)
           {take(state[28]);
            var size$1=0 <= size$0?size$0:pp_infinity;
            if(typeof token === "number")
             switch(token)
              {case 0:
                var match$3=top_opt(state[3]);
                if(match$3)
                 {var
                   match$4=match$3[1],
                   tabs=match$4[1],
                   add_tab=
                    function(n,ls)
                     {if(ls)
                       {var l=ls[2],x=ls[1];
                        return caml_lessthan(n,x)?[0,n,ls]:[0,x,add_tab(n,l)]}
                      return [0,n,0]};
                  tabs[1] = add_tab(state[6] - state[9] | 0,tabs[1])}
                break;
               case 1:pop_opt(state[2]);break;
               case 2:pop_opt(state[3]);break;
               case 3:
                var match$5=top_opt(state[2]);
                if(match$5)
                 {var match$6=match$5[1],width$0=match$6[2];
                  break_line(state,width$0)}
                else
                 pp_output_newline(state);
                break;
               case 4:
                if(state[10] !== (state[6] - state[9] | 0))
                 {var match$1=take_opt(state[28]);
                  if(match$1)
                   {var match$2=match$1[1],size=match$2[1],length=match$2[3];
                    state[12] = state[12] - length | 0;
                    state[9] = state[9] + size | 0}}
                break;
               default:
                var match$7=pop_opt(state[5]);
                if(match$7)
                 {var
                   tag_name=match$7[1],
                   marker=caml_call1(state[25],tag_name);
                  pp_output_string(state,marker)}}
            else
             switch(token[0])
              {case 0:var s=token[1];format_pp_text(state,size$1,s);break;
               case 1:
                var
                 breaks=token[2],
                 fits=token[1],
                 off=breaks[2],
                 before=breaks[1],
                 match$8=top_opt(state[2]);
                if(match$8)
                 {var
                   match$9=match$8[1],
                   width$1=match$9[2],
                   box_type$0=match$9[1];
                  switch(box_type$0)
                   {case 0:break_same_line(state,fits);break;
                    case 1:break_new_line(state,breaks,width$1);break;
                    case 2:break_new_line(state,breaks,width$1);break;
                    case 3:
                     if(state[9] < (size$1 + caml_ml_string_length(before) | 0))
                      break_new_line(state,breaks,width$1);
                     else
                      break_same_line(state,fits);
                     break;
                    case 4:
                     if(state[11])
                      break_same_line(state,fits);
                     else
                      if(state[9] < (size$1 + caml_ml_string_length(before) | 0))
                       break_new_line(state,breaks,width$1);
                      else
                       if(((state[6] - width$1 | 0) + off | 0) < state[10])
                        break_new_line(state,breaks,width$1);
                       else
                        break_same_line(state,fits);
                     break;
                    default:break_same_line(state,fits)}}
                break;
               case 2:
                var
                 off$0=token[2],
                 n=token[1],
                 insertion_point=state[6] - state[9] | 0,
                 match$10=top_opt(state[3]);
                if(match$10)
                 {var match$11=match$10[1],tabs$0=match$11[1],_kV_=tabs$0[1];
                  if(_kV_)
                   {var first=_kV_[1],param=tabs$0[1];
                    for(;;)
                     {if(param)
                       {var tail=param[2],head=param[1];
                        if(! (insertion_point <= head)){var param=tail;continue}
                        var _kW_=head}
                      else
                       var _kW_=first;
                      var tab=_kW_;
                      break}}
                  else
                   var tab=insertion_point;
                  var offset=tab - insertion_point | 0;
                  if(0 <= offset)
                   break_same_line(state,[0,cst$68,offset + n | 0,cst$67]);
                  else
                   break_new_line
                    (state,[0,cst$70,tab + off$0 | 0,cst$69],state[6])}
                break;
               case 3:
                var
                 ty=token[2],
                 off$1=token[1],
                 insertion_point$0=state[6] - state[9] | 0;
                if(state[8] < insertion_point$0)
                 {var match=top_opt(state[2]);
                  if(match)
                   {var match$0=match[1],width=match$0[2],box_type=match$0[1];
                    if(state[9] < width)
                     {var switcher=box_type - 1 | 0;
                      if(! (3 < switcher >>> 0))break_line(state,width)}}
                  else
                   pp_output_newline(state)}
                var
                 width$2=state[9] - off$1 | 0,
                 box_type$1=1 === ty?1:state[9] < size$1?ty:5;
                push([0,box_type$1,width$2],state[2]);
                break;
               case 4:var tbox=token[1];push(tbox,state[3]);break;
               default:
                var
                 tag_name$0=token[1],
                 marker$0=caml_call1(state[24],tag_name$0);
                pp_output_string(state,marker$0);
                push(tag_name$0,state[5])}
            state[12] = length$0 + state[12] | 0;
            continue}
          return _kY_}
        return 0}}
    function enqueue_advance(state,tok)
     {pp_enqueue(state,tok);return advance_left(state)}
    function enqueue_string_as(state,size,s)
     {return enqueue_advance(state,[0,size,[0,s],size])}
    function initialize_scan_stack(stack)
     {clear(stack);
      var queue_elem=[0,unknown,_b7_,0];
      return push([0,-1,queue_elem],stack)}
    function set_size(state,ty)
     {var match=top_opt(state[1]);
      if(match)
       {var
         match$0=match[1],
         queue_elem=match$0[2],
         left_total=match$0[1],
         _kS_=queue_elem[1];
        if(left_total < state[12])return initialize_scan_stack(state[1]);
        var _kT_=queue_elem[2];
        if(typeof _kT_ !== "number")
         switch(_kT_[0])
          {case 3:
            var _kU_=1 - ty;
            return _kU_
                    ?(queue_elem[1] = state[13] + _kS_ | 0,pop_opt(state[1]),0)
                    :_kU_;
           case 1:
           case 2:
            return ty
                    ?(queue_elem[1] = state[13] + _kS_ | 0,pop_opt(state[1]),0)
                    :ty
           }
        return 0}
      return 0}
    function scan_push(state,b,token)
     {pp_enqueue(state,token);
      if(b)set_size(state,1);
      var elem=[0,state[13],token];
      return push(elem,state[1])}
    function pp_open_box_gen(state,indent,br_ty)
     {state[14] = state[14] + 1 | 0;
      if(state[14] < state[15])
       {var size=- state[13] | 0,elem=[0,size,[3,indent,br_ty],0];
        return scan_push(state,0,elem)}
      var _kQ_=state[14] === state[15]?1:0;
      if(_kQ_)
       {var _kR_=state[16];
        return enqueue_string_as(state,caml_ml_string_length(_kR_),_kR_)}
      return _kQ_}
    function pp_close_box(state,param)
     {var _kO_=1 < state[14]?1:0;
      if(_kO_)
       {if(state[14] < state[15])
         {pp_enqueue(state,[0,size,1,0]);set_size(state,1);set_size(state,0)}
        state[14] = state[14] - 1 | 0;
        var _kP_=0}
      else
       var _kP_=_kO_;
      return _kP_}
    function pp_open_stag(state,tag_name)
     {if(state[22]){push(tag_name,state[4]);caml_call1(state[26],tag_name)}
      var _kN_=state[23];
      if(_kN_)
       {var token=[5,tag_name];return pp_enqueue(state,[0,size,token,0])}
      return _kN_}
    function pp_close_stag(state,param)
     {if(state[23])pp_enqueue(state,[0,size,5,0]);
      var _kL_=state[22];
      if(_kL_)
       {var match=pop_opt(state[4]);
        if(match){var tag_name=match[1];return caml_call1(state[27],tag_name)}
        var _kM_=0}
      else
       var _kM_=_kL_;
      return _kM_}
    function pp_open_tag(state,s){return pp_open_stag(state,[0,String_tag,s])}
    function pp_close_tag(state,param){return pp_close_stag(state,0)}
    function pp_set_print_tags(state,b){state[22] = b;return 0}
    function pp_set_mark_tags(state,b){state[23] = b;return 0}
    function pp_get_print_tags(state,param){return state[22]}
    function pp_get_mark_tags(state,param){return state[23]}
    function pp_set_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,state[24],state[25],state[26],state[27]]}
    function pp_set_formatter_stag_function(state,param)
     {var pct=param[4],pot=param[3],mct=param[2],mot=param[1];
      state[24] = mot;
      state[25] = mct;
      state[26] = pot;
      state[27] = pct;
      return 0}
    function pp_rinit(state)
     {state[12] = 1;
      state[13] = 1;
      clear$0(state[28]);
      initialize_scan_stack(state[1]);
      clear(state[2]);
      clear(state[3]);
      clear(state[4]);
      clear(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,b)
     {var _kK_=state[4];
      iter$7(function(param){return pp_close_tag(state,0)},_kK_);
      for(;;)
       {if(1 < state[14]){pp_close_box(state,0);continue}
        state[13] = pp_infinity;
        advance_left(state);
        if(b)pp_output_newline(state);
        return pp_rinit(state)}}
    function pp_print_as_size(state,size,s)
     {var _kJ_=state[14] < state[15]?1:0;
      return _kJ_?enqueue_string_as(state,size,s):_kJ_}
    function pp_print_as(state,isize,s)
     {return pp_print_as_size(state,isize,s)}
    function pp_print_string(state,s)
     {return pp_print_as(state,caml_ml_string_length(s),s)}
    function pp_print_int(state,i)
     {return pp_print_string(state,caml_string_of_jsbytes("" + i))}
    function pp_print_float(state,f)
     {return pp_print_string(state,to_string(f))}
    function pp_print_bool(state,b)
     {return pp_print_string(state,string_of_bool(b))}
    function pp_print_char(state,c){return pp_print_as(state,1,make$0(1,c))}
    function pp_open_hbox(state,param){return pp_open_box_gen(state,0,0)}
    function pp_open_vbox(state,indent)
     {return pp_open_box_gen(state,indent,1)}
    function pp_open_hvbox(state,indent)
     {return pp_open_box_gen(state,indent,2)}
    function pp_open_hovbox(state,indent)
     {return pp_open_box_gen(state,indent,3)}
    function pp_open_box(state,indent){return pp_open_box_gen(state,indent,4)}
    function pp_print_newline(state,param)
     {pp_flush_queue(state,1);return caml_call1(state[18],0)}
    function pp_print_flush(state,param)
     {pp_flush_queue(state,0);return caml_call1(state[18],0)}
    function pp_force_newline(state,param)
     {var _kI_=state[14] < state[15]?1:0;
      return _kI_?enqueue_advance(state,[0,size,3,0]):_kI_}
    function pp_print_if_newline(state,param)
     {var _kH_=state[14] < state[15]?1:0;
      return _kH_?enqueue_advance(state,[0,size,4,0]):_kH_}
    function pp_print_custom_break(state,fits,breaks)
     {var
       after=fits[3],
       width=fits[2],
       before=fits[1],
       _kG_=state[14] < state[15]?1:0;
      if(_kG_)
       {var
         size=- state[13] | 0,
         token=[1,fits,breaks],
         length=
          (caml_ml_string_length(before) + width | 0)
          +
          caml_ml_string_length(after)
          |
          0,
         elem=[0,size,token,length];
        return scan_push(state,1,elem)}
      return _kG_}
    function pp_print_break(state,width,offset)
     {return pp_print_custom_break
              (state,[0,cst$74,width,cst$73],[0,cst$72,offset,cst$71])}
    function pp_print_space(state,param){return pp_print_break(state,1,0)}
    function pp_print_cut(state,param){return pp_print_break(state,0,0)}
    function pp_open_tbox(state,param)
     {state[14] = state[14] + 1 | 0;
      var _kF_=state[14] < state[15]?1:0;
      if(_kF_)
       {var elem=[0,size,[4,[0,[0,0]]],0];return enqueue_advance(state,elem)}
      return _kF_}
    function pp_close_tbox(state,param)
     {var _kC_=1 < state[14]?1:0;
      if(_kC_)
       {var _kD_=state[14] < state[15]?1:0;
        if(_kD_)
         {var elem=[0,size,2,0];
          enqueue_advance(state,elem);
          state[14] = state[14] - 1 | 0;
          var _kE_=0}
        else
         var _kE_=_kD_}
      else
       var _kE_=_kC_;
      return _kE_}
    function pp_print_tbreak(state,width,offset)
     {var _kB_=state[14] < state[15]?1:0;
      if(_kB_)
       {var size=- state[13] | 0,elem=[0,size,[2,width,offset],width];
        return scan_push(state,1,elem)}
      return _kB_}
    function pp_print_tab(state,param){return pp_print_tbreak(state,0,0)}
    function pp_set_tab(state,param)
     {var _kA_=state[14] < state[15]?1:0;
      if(_kA_){var elem=[0,size,0,0];return enqueue_advance(state,elem)}
      return _kA_}
    function pp_set_max_boxes(state,n)
     {var _ky_=1 < n?1:0,_kz_=_ky_?(state[15] = n,0):_ky_;return _kz_}
    function pp_get_max_boxes(state,param){return state[15]}
    function pp_over_max_boxes(state,param)
     {return state[14] === state[15]?1:0}
    function pp_set_ellipsis_text(state,s){state[16] = s;return 0}
    function pp_get_ellipsis_text(state,param){return state[16]}
    function pp_limit(n){return n < 1000000010?n:1000000009}
    function pp_set_max_indent(state,n$0)
     {var _kx_=1 < n$0?1:0;
      if(_kx_)
       {var n$1=state[6] - n$0 | 0,_kw_=1 <= n$1?1:0;
        if(_kw_)
         {var n=pp_limit(n$1);
          state[7] = n;
          state[8] = state[6] - state[7] | 0;
          return pp_rinit(state)}
        return _kw_}
      return _kx_}
    function pp_get_max_indent(state,param){return state[8]}
    function pp_set_margin(state,n)
     {var _kv_=1 <= n?1:0;
      if(_kv_)
       {var n$0=pp_limit(n);
        state[6] = n$0;
        var
         new_max_indent=
          state[8] <= state[6]
           ?state[8]
           :max(max(state[6] - state[7] | 0,state[6] / 2 | 0),1);
        return pp_set_max_indent(state,new_max_indent)}
      return _kv_}
    function check_geometry(geometry)
     {var
       _kt_=1 < geometry[1]?1:0,
       _ku_=_kt_?geometry[1] < geometry[2]?1:0:_kt_;
      return _ku_}
    function pp_get_margin(state,param){return state[6]}
    function pp_set_geometry(state,max_indent,margin)
     {if(2 <= max_indent)
       {if(margin <= max_indent)
         throw [0,Invalid_argument,cst_Format_pp_set_geometry_mar];
        pp_set_margin(state,margin);
        return pp_set_max_indent(state,max_indent)}
      throw [0,Invalid_argument,cst_Format_pp_set_geometry_max]}
    function pp_safe_set_geometry(state,max_indent,margin)
     {return check_geometry([0,max_indent,margin])
              ?pp_set_geometry(state,max_indent,margin)
              :0}
    function pp_get_geometry(state,param){return [0,state[8],state[6]]}
    function pp_set_formatter_out_functions(state,param)
     {var j=param[5],i=param[4],h=param[3],g=param[2],f=param[1];
      state[17] = f;
      state[18] = g;
      state[19] = h;
      state[20] = i;
      state[21] = j;
      return 0}
    function pp_get_formatter_out_functions(state,param)
     {return [0,state[17],state[18],state[19],state[20],state[21]]}
    function pp_set_formatter_output_functi(state,f,g)
     {state[17] = f;state[18] = g;return 0}
    function pp_get_formatter_output_functi(state,param)
     {return [0,state[17],state[18]]}
    function display_newline(state,param)
     {return caml_call3(state[17],cst$75,0,1)}
    var blank_line=make$0(80,32);
    function display_indent(state,n)
     {var n$0=n;
      for(;;)
       {var _ks_=0 < n$0?1:0;
        if(_ks_)
         {if(80 < n$0)
           {caml_call3(state[17],blank_line,0,80);
            var n$1=n$0 - 80 | 0,n$0=n$1;
            continue}
          return caml_call3(state[17],blank_line,0,n$0)}
        return _ks_}}
    function pp_set_formatter_out_channel(state,oc)
     {state[17]
      =
      function(_kp_,_kq_,_kr_){return output_substring(oc,_kp_,_kq_,_kr_)};
      state[18] = function(param){return caml_ml_flush(oc)};
      state[19] = function(_ko_){return display_newline(state,_ko_)};
      state[20] = function(_kn_){return display_indent(state,_kn_)};
      state[21] = function(_km_){return display_indent(state,_km_)};
      return 0}
    function default_pp_mark_open_tag(param)
     {if(param[1] === String_tag)
       {var s=param[2];return symbol(cst$77,symbol(s,cst$76))}
      return cst$78}
    function default_pp_mark_close_tag(param)
     {if(param[1] === String_tag)
       {var s=param[2];return symbol(cst$80,symbol(s,cst$79))}
      return cst$81}
    function default_pp_print_open_tag(_kl_){return 0}
    function default_pp_print_close_tag(_kk_){return 0}
    function pp_make_formatter(f,g,h,i,j)
     {var pp_queue=create$1(0),sys_tok=[0,unknown,_b8_,0];
      add(sys_tok,pp_queue);
      var scan_stack=create$0(0);
      initialize_scan_stack(scan_stack);
      push([0,1,sys_tok],scan_stack);
      var _kh_=create$0(0),_ki_=create$0(0),_kj_=create$0(0);
      return [0,
              scan_stack,
              create$0(0),
              _kj_,
              _ki_,
              _kh_,
              78,
              10,
              68,
              78,
              0,
              1,
              1,
              1,
              1,
              max_int,
              cst$82,
              f,
              g,
              h,
              i,
              j,
              0,
              0,
              default_pp_mark_open_tag,
              default_pp_mark_close_tag,
              default_pp_print_open_tag,
              default_pp_print_close_tag,
              pp_queue]}
    function formatter_of_out_functions(out_funs)
     {return pp_make_formatter
              (out_funs[1],out_funs[2],out_funs[3],out_funs[4],out_funs[5])}
    function make_formatter(output,flush)
     {function _j$_(_kg_){return 0}
      function _ka_(_kf_){return 0}
      var
       ppf=
        pp_make_formatter(output,flush,function(_ke_){return 0},_ka_,_j$_);
      ppf[19] = function(_kd_){return display_newline(ppf,_kd_)};
      ppf[20] = function(_kc_){return display_indent(ppf,_kc_)};
      ppf[21] = function(_kb_){return display_indent(ppf,_kb_)};
      return ppf}
    function formatter_of_out_channel(oc)
     {function _j7_(param){return caml_ml_flush(oc)}
      return make_formatter
              (function(_j8_,_j9_,_j__)
                {return output_substring(oc,_j8_,_j9_,_j__)},
               _j7_)}
    function formatter_of_buffer(b)
     {function _j2_(_j6_){return 0}
      return make_formatter
              (function(_j3_,_j4_,_j5_)
                {return add_substring(b,_j3_,_j4_,_j5_)},
               _j2_)}
    var pp_buffer_size=512;
    function pp_make_buffer(param){return create$2(pp_buffer_size)}
    var
     stdbuf=pp_make_buffer(0),
     std_formatter=formatter_of_out_channel(stdout),
     err_formatter=formatter_of_out_channel(stderr),
     str_formatter=formatter_of_buffer(stdbuf);
    function flush_buffer_formatter(buf,ppf)
     {pp_flush_queue(ppf,0);var s=contents(buf);reset(buf);return s}
    function flush_str_formatter(param)
     {return flush_buffer_formatter(stdbuf,str_formatter)}
    function make_symbolic_output_buffer(param){return [0,0]}
    function clear_symbolic_output_buffer(sob){sob[1] = 0;return 0}
    function get_symbolic_output_buffer(sob){return rev(sob[1])}
    function flush_symbolic_output_buffer(sob)
     {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]];return 0}
    function formatter_of_symbolic_output_b(sob)
     {function f(s,i,n){return add_symbolic_output_item(sob,[0,sub$0(s,i,n)])}
      function g(_j1_){return add_symbolic_output_item(sob,0)}
      function h(_j0_){return add_symbolic_output_item(sob,1)}
      function i(n){return add_symbolic_output_item(sob,[1,n])}
      function j(n){return add_symbolic_output_item(sob,[2,n])}
      return pp_make_formatter(f,g,h,i,j)}
    function open_hbox(_jZ_){return pp_open_hbox(std_formatter,_jZ_)}
    function open_vbox(_jY_){return pp_open_vbox(std_formatter,_jY_)}
    function open_hvbox(_jX_){return pp_open_hvbox(std_formatter,_jX_)}
    function open_hovbox(_jW_){return pp_open_hovbox(std_formatter,_jW_)}
    function open_box(_jV_){return pp_open_box(std_formatter,_jV_)}
    function close_box(_jU_){return pp_close_box(std_formatter,_jU_)}
    function open_tag(_jT_){return pp_open_tag(std_formatter,_jT_)}
    function close_tag(_jS_){return pp_close_tag(std_formatter,_jS_)}
    function open_stag(_jR_){return pp_open_stag(std_formatter,_jR_)}
    function close_stag(_jQ_){return pp_close_stag(std_formatter,_jQ_)}
    function print_as(_jO_,_jP_){return pp_print_as(std_formatter,_jO_,_jP_)}
    function print_string$0(_jN_){return pp_print_string(std_formatter,_jN_)}
    function print_int$0(_jM_){return pp_print_int(std_formatter,_jM_)}
    function print_float$0(_jL_){return pp_print_float(std_formatter,_jL_)}
    function print_char$0(_jK_){return pp_print_char(std_formatter,_jK_)}
    function print_bool(_jJ_){return pp_print_bool(std_formatter,_jJ_)}
    function print_break(_jH_,_jI_)
     {return pp_print_break(std_formatter,_jH_,_jI_)}
    function print_cut(_jG_){return pp_print_cut(std_formatter,_jG_)}
    function print_space(_jF_){return pp_print_space(std_formatter,_jF_)}
    function force_newline(_jE_){return pp_force_newline(std_formatter,_jE_)}
    function print_flush(_jD_){return pp_print_flush(std_formatter,_jD_)}
    function print_newline$0(_jC_)
     {return pp_print_newline(std_formatter,_jC_)}
    function print_if_newline(_jB_)
     {return pp_print_if_newline(std_formatter,_jB_)}
    function open_tbox(_jA_){return pp_open_tbox(std_formatter,_jA_)}
    function close_tbox(_jz_){return pp_close_tbox(std_formatter,_jz_)}
    function print_tbreak(_jx_,_jy_)
     {return pp_print_tbreak(std_formatter,_jx_,_jy_)}
    function set_tab(_jw_){return pp_set_tab(std_formatter,_jw_)}
    function print_tab(_jv_){return pp_print_tab(std_formatter,_jv_)}
    function set_margin(_ju_){return pp_set_margin(std_formatter,_ju_)}
    function get_margin(_jt_){return std_formatter[6]}
    function set_max_indent(_js_)
     {return pp_set_max_indent(std_formatter,_js_)}
    function get_max_indent(_jr_){return std_formatter[8]}
    function set_geometry(_jp_,_jq_)
     {return pp_set_geometry(std_formatter,_jp_,_jq_)}
    function safe_set_geometry(_jn_,_jo_)
     {return pp_safe_set_geometry(std_formatter,_jn_,_jo_)}
    function get_geometry(_jm_){return pp_get_geometry(std_formatter,_jm_)}
    function set_max_boxes(_jl_){return pp_set_max_boxes(std_formatter,_jl_)}
    function get_max_boxes(_jk_){return std_formatter[15]}
    function over_max_boxes(_jj_)
     {return pp_over_max_boxes(std_formatter,_jj_)}
    function set_ellipsis_text(_ji_)
     {return pp_set_ellipsis_text(std_formatter,_ji_)}
    function get_ellipsis_text(_jh_){return std_formatter[16]}
    function set_formatter_out_channel(_jg_)
     {return pp_set_formatter_out_channel(std_formatter,_jg_)}
    function set_formatter_out_functions(_jf_)
     {return pp_set_formatter_out_functions(std_formatter,_jf_)}
    function get_formatter_out_functions(_je_)
     {return pp_get_formatter_out_functions(std_formatter,_je_)}
    function set_formatter_output_functions(_jc_,_jd_)
     {return pp_set_formatter_output_functi(std_formatter,_jc_,_jd_)}
    function get_formatter_output_functions(_jb_)
     {return pp_get_formatter_output_functi(std_formatter,_jb_)}
    function set_formatter_stag_functions(_ja_)
     {return pp_set_formatter_stag_function(std_formatter,_ja_)}
    function get_formatter_stag_functions(_i$_)
     {return pp_get_formatter_stag_function(std_formatter,_i$_)}
    function set_print_tags(_i__)
     {return pp_set_print_tags(std_formatter,_i__)}
    function get_print_tags(_i9_){return std_formatter[22]}
    function set_mark_tags(_i8_){return pp_set_mark_tags(std_formatter,_i8_)}
    function get_mark_tags(_i7_){return std_formatter[23]}
    function set_tags(_i6_){return pp_set_tags(std_formatter,_i6_)}
    function pp_print_list(opt,pp_v,ppf,param)
     {var opt$0=opt,param$0=param;
      for(;;)
       {if(opt$0)var sth=opt$0[1],pp_sep=sth;else var pp_sep=pp_print_cut;
        if(param$0)
         {var _i5_=param$0[1];
          if(param$0[2])
           {var vs=param$0[2];
            caml_call2(pp_v,ppf,_i5_);
            caml_call2(pp_sep,ppf,0);
            var opt$1=[0,pp_sep],opt$0=opt$1,param$0=vs;
            continue}
          return caml_call2(pp_v,ppf,_i5_)}
        return 0}}
    function pp_print_text(ppf,s)
     {var len=caml_ml_string_length(s),left=[0,0],right=[0,0];
      function flush(param)
       {pp_print_string(ppf,sub$0(s,left[1],right[1] - left[1] | 0));
        right[1]++;
        left[1] = right[1];
        return 0}
      for(;;)
       {if(right[1] !== len)
         {var match=caml_string_get(s,right[1]);
          if(10 === match)
           {flush(0);pp_force_newline(ppf,0)}
          else
           if(32 === match){flush(0);pp_print_space(ppf,0)}else right[1]++;
          continue}
        var _i4_=left[1] !== len?1:0;
        return _i4_?flush(0):_i4_}}
    function pp_print_option(opt,pp_v,ppf,param)
     {if(opt)
       var sth=opt[1],none=sth;
      else
       var none=function(param,_i3_){return 0};
      if(param){var v=param[1];return caml_call2(pp_v,ppf,v)}
      return caml_call2(none,ppf,0)}
    function pp_print_result(ok,error,ppf,param)
     {if(0 === param[0]){var v=param[1];return caml_call2(ok,ppf,v)}
      var e=param[1];
      return caml_call2(error,ppf,e)}
    function compute_tag(output,tag_acc)
     {var buf=create$2(16),ppf=formatter_of_buffer(buf);
      caml_call2(output,ppf,tag_acc);
      pp_print_flush(ppf,0);
      var len=buf[2];
      return 2 <= len?sub$3(buf,1,len - 2 | 0):contents(buf)}
    function output_formatting_lit(ppf,fmting_lit)
     {if(typeof fmting_lit === "number")
       switch(fmting_lit)
        {case 0:return pp_close_box(ppf,0);
         case 1:return pp_close_tag(ppf,0);
         case 2:return pp_print_flush(ppf,0);
         case 3:return pp_force_newline(ppf,0);
         case 4:return pp_print_newline(ppf,0);
         case 5:return pp_print_char(ppf,64);
         default:return pp_print_char(ppf,37)}
      else
       switch(fmting_lit[0])
        {case 0:
          var offset=fmting_lit[3],width=fmting_lit[2];
          return pp_print_break(ppf,width,offset);
         case 1:return 0;
         default:
          var c=fmting_lit[1];
          pp_print_char(ppf,64);
          return pp_print_char(ppf,c)}}
    function output_acc$0(ppf,acc)
     {var switch$0=0;
      if(typeof acc === "number")
       return 0;
      else
       switch(acc[0])
        {case 0:
          var f=acc[2],p=acc[1];
          output_acc$0(ppf,p);
          return output_formatting_lit(ppf,f);
         case 1:
          var _iT_=acc[2],_iU_=acc[1];
          if(0 === _iT_[0])
           {var acc$0=_iT_[1];
            output_acc$0(ppf,_iU_);
            return pp_open_stag
                    (ppf,[0,String_tag,compute_tag(output_acc$0,acc$0)])}
          var acc$1=_iT_[1];
          output_acc$0(ppf,_iU_);
          var
           match=open_box_of_string(compute_tag(output_acc$0,acc$1)),
           bty=match[2],
           indent=match[1];
          return pp_open_box_gen(ppf,indent,bty);
         case 2:
          var _iV_=acc[1],switch$1=0;
          if(typeof _iV_ !== "number" && 0 === _iV_[0])
           {var _iW_=_iV_[2],switch$2=0;
            if(typeof _iW_ !== "number" && 1 === _iW_[0])
             {var s$0=acc[2],size=_iW_[2],p$1=_iV_[1];
              switch$1 = 1;
              switch$2 = 1}}
          if(! switch$1){var s=acc[2],p$0=_iV_;switch$0 = 2}
          break;
         case 3:
          var _iX_=acc[1],switch$3=0;
          if(typeof _iX_ !== "number" && 0 === _iX_[0])
           {var _iY_=_iX_[2],switch$4=0;
            if(typeof _iY_ !== "number" && 1 === _iY_[0])
             {var c$0=acc[2],size$0=_iY_[2],p$3=_iX_[1];
              switch$0 = 1;
              switch$3 = 1;
              switch$4 = 1}}
          if(! switch$3){var c=acc[2],p$2=_iX_;switch$0 = 3}
          break;
         case 4:
          var _iZ_=acc[1],switch$5=0;
          if(typeof _iZ_ !== "number" && 0 === _iZ_[0])
           {var _i0_=_iZ_[2],switch$6=0;
            if(typeof _i0_ !== "number" && 1 === _i0_[0])
             {var s$0=acc[2],size=_i0_[2],p$1=_iZ_[1];
              switch$5 = 1;
              switch$6 = 1}}
          if(! switch$5){var s=acc[2],p$0=_iZ_;switch$0 = 2}
          break;
         case 5:
          var _i1_=acc[1],switch$7=0;
          if(typeof _i1_ === "number" || ! (0 === _i1_[0]))
           switch$7 = 1;
          else
           {var _i2_=_i1_[2],switch$8=0;
            if(typeof _i2_ !== "number" && 1 === _i2_[0])
             {var c$0=acc[2],size$0=_i2_[2],p$3=_i1_[1];
              switch$0 = 1;
              switch$8 = 1}
            if(! switch$8)switch$7 = 1}
          if(switch$7){var c=acc[2],p$2=_i1_;switch$0 = 3}
          break;
         case 6:
          var f$0=acc[2],p$4=acc[1];
          output_acc$0(ppf,p$4);
          return caml_call1(f$0,ppf);
         case 7:
          var p$5=acc[1];output_acc$0(ppf,p$5);return pp_print_flush(ppf,0);
         default:
          var msg=acc[2],p$6=acc[1];
          output_acc$0(ppf,p$6);
          return invalid_arg(msg)}
      switch(switch$0)
       {case 0:output_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0);
        case 1:
         output_acc$0(ppf,p$3);
         return pp_print_as_size(ppf,size$0,make$0(1,c$0));
        case 2:output_acc$0(ppf,p$0);return pp_print_string(ppf,s);
        default:output_acc$0(ppf,p$2);return pp_print_char(ppf,c)}}
    function strput_acc$0(ppf,acc)
     {var switch$0=0;
      if(typeof acc === "number")
       return 0;
      else
       switch(acc[0])
        {case 0:
          var f=acc[2],p=acc[1];
          strput_acc$0(ppf,p);
          return output_formatting_lit(ppf,f);
         case 1:
          var _iH_=acc[2],_iI_=acc[1];
          if(0 === _iH_[0])
           {var acc$0=_iH_[1];
            strput_acc$0(ppf,_iI_);
            return pp_open_stag
                    (ppf,[0,String_tag,compute_tag(strput_acc$0,acc$0)])}
          var acc$1=_iH_[1];
          strput_acc$0(ppf,_iI_);
          var
           match=open_box_of_string(compute_tag(strput_acc$0,acc$1)),
           bty=match[2],
           indent=match[1];
          return pp_open_box_gen(ppf,indent,bty);
         case 2:
          var _iJ_=acc[1],switch$1=0;
          if(typeof _iJ_ !== "number" && 0 === _iJ_[0])
           {var _iK_=_iJ_[2],switch$2=0;
            if(typeof _iK_ !== "number" && 1 === _iK_[0])
             {var s$0=acc[2],size=_iK_[2],p$1=_iJ_[1];
              switch$1 = 1;
              switch$2 = 1}}
          if(! switch$1){var s=acc[2],p$0=_iJ_;switch$0 = 2}
          break;
         case 3:
          var _iL_=acc[1],switch$3=0;
          if(typeof _iL_ !== "number" && 0 === _iL_[0])
           {var _iM_=_iL_[2],switch$4=0;
            if(typeof _iM_ !== "number" && 1 === _iM_[0])
             {var c$0=acc[2],size$0=_iM_[2],p$3=_iL_[1];
              switch$0 = 1;
              switch$3 = 1;
              switch$4 = 1}}
          if(! switch$3){var c=acc[2],p$2=_iL_;switch$0 = 3}
          break;
         case 4:
          var _iN_=acc[1],switch$5=0;
          if(typeof _iN_ !== "number" && 0 === _iN_[0])
           {var _iO_=_iN_[2],switch$6=0;
            if(typeof _iO_ !== "number" && 1 === _iO_[0])
             {var s$0=acc[2],size=_iO_[2],p$1=_iN_[1];
              switch$5 = 1;
              switch$6 = 1}}
          if(! switch$5){var s=acc[2],p$0=_iN_;switch$0 = 2}
          break;
         case 5:
          var _iP_=acc[1],switch$7=0;
          if(typeof _iP_ === "number" || ! (0 === _iP_[0]))
           switch$7 = 1;
          else
           {var _iQ_=_iP_[2],switch$8=0;
            if(typeof _iQ_ !== "number" && 1 === _iQ_[0])
             {var c$0=acc[2],size$0=_iQ_[2],p$3=_iP_[1];
              switch$0 = 1;
              switch$8 = 1}
            if(! switch$8)switch$7 = 1}
          if(switch$7){var c=acc[2],p$2=_iP_;switch$0 = 3}
          break;
         case 6:
          var _iR_=acc[1];
          if(typeof _iR_ !== "number" && 0 === _iR_[0])
           {var _iS_=_iR_[2];
            if(typeof _iS_ !== "number" && 1 === _iS_[0])
             {var f$1=acc[2],size$1=_iS_[2],p$4=_iR_[1];
              strput_acc$0(ppf,p$4);
              return pp_print_as_size(ppf,size$1,caml_call1(f$1,0))}}
          var f$0=acc[2];
          strput_acc$0(ppf,_iR_);
          return pp_print_string(ppf,caml_call1(f$0,0));
         case 7:
          var p$5=acc[1];strput_acc$0(ppf,p$5);return pp_print_flush(ppf,0);
         default:
          var msg=acc[2],p$6=acc[1];
          strput_acc$0(ppf,p$6);
          return invalid_arg(msg)}
      switch(switch$0)
       {case 0:strput_acc$0(ppf,p$1);return pp_print_as_size(ppf,size,s$0);
        case 1:
         strput_acc$0(ppf,p$3);
         return pp_print_as_size(ppf,size$0,make$0(1,c$0));
        case 2:strput_acc$0(ppf,p$0);return pp_print_string(ppf,s);
        default:strput_acc$0(ppf,p$2);return pp_print_char(ppf,c)}}
    function kfprintf$0(k,ppf,param)
     {var fmt=param[1],_iG_=0;
      return make_printf
              (function(acc){output_acc$0(ppf,acc);return caml_call1(k,ppf)},
               _iG_,
               fmt)}
    function ikfprintf$0(k,ppf,param)
     {var fmt=param[1];return make_iprintf(k,ppf,fmt)}
    function ifprintf$0(ppf,param)
     {var fmt=param[1],_iE_=0;
      return make_iprintf(function(_iF_){return 0},_iE_,fmt)}
    function fprintf$0(ppf)
     {function _iB_(_iD_){return 0}
      return function(_iC_){return kfprintf$0(_iB_,ppf,_iC_)}}
    function printf$0(fmt){return caml_call1(fprintf$0(std_formatter),fmt)}
    function eprintf$0(fmt){return caml_call1(fprintf$0(err_formatter),fmt)}
    function kdprintf(k,param)
     {var fmt=param[1],_iA_=0;
      return make_printf
              (function(acc)
                {return caml_call1
                         (k,function(ppf){return output_acc$0(ppf,acc)})},
               _iA_,
               fmt)}
    function dprintf(fmt){return kdprintf(function(i){return i},fmt)}
    function kprintf(k,param)
     {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b);
      function k$0(acc)
       {strput_acc$0(ppf,acc);
        return caml_call1(k,flush_buffer_formatter(b,ppf))}
      return make_printf(k$0,0,fmt)}
    function sprintf$0(fmt){return kprintf(id$0,fmt)}
    function kasprintf(k,param)
     {var fmt=param[1],b=pp_make_buffer(0),ppf=formatter_of_buffer(b);
      function k$0(acc)
       {output_acc$0(ppf,acc);
        return caml_call1(k,flush_buffer_formatter(b,ppf))}
      return make_printf(k$0,0,fmt)}
    function asprintf(fmt){return kasprintf(id$0,fmt)}
    function flush_standard_formatters(param)
     {pp_print_flush(std_formatter,0);return pp_print_flush(err_formatter,0)}
    at_exit(flush_standard_formatters);
    function pp_set_all_formatter_output_fu(state,f,g,h,i)
     {pp_set_formatter_output_functi(state,f,g);
      state[19] = h;
      state[20] = i;
      return 0}
    function pp_get_all_formatter_output_fu(state,param)
     {return [0,state[17],state[18],state[19],state[20]]}
    function set_all_formatter_output_funct(_iw_,_ix_,_iy_,_iz_)
     {return pp_set_all_formatter_output_fu(std_formatter,_iw_,_ix_,_iy_,_iz_)}
    function get_all_formatter_output_funct(_iv_)
     {return pp_get_all_formatter_output_fu(std_formatter,_iv_)}
    function bprintf$0(b,param)
     {var fmt=param[1],ppf=formatter_of_buffer(b);
      function k(acc){output_acc$0(ppf,acc);return pp_flush_queue(ppf,0)}
      return make_printf(k,0,fmt)}
    function pp_set_formatter_tag_functions(state,param)
     {var pct=param[4],pot=param[3],mct=param[2],mot=param[1];
      function stringify(f,e,param)
       {if(param[1] === String_tag){var s=param[2];return caml_call1(f,s)}
        return e}
      state[24] = function(_iu_){return stringify(mot,cst$83,_iu_)};
      state[25] = function(_it_){return stringify(mct,cst$84,_it_)};
      var _ip_=0;
      state[26] = function(_is_){return stringify(pot,_ip_,_is_)};
      var _iq_=0;
      state[27] = function(_ir_){return stringify(pct,_iq_,_ir_)};
      return 0}
    function pp_get_formatter_tag_functions(fmt,param)
     {var funs=pp_get_formatter_stag_function(fmt,0);
      function mark_open_tag(s){return caml_call1(funs[1],[0,String_tag,s])}
      function mark_close_tag(s){return caml_call1(funs[2],[0,String_tag,s])}
      function print_open_tag(s){return caml_call1(funs[3],[0,String_tag,s])}
      function print_close_tag(s){return caml_call1(funs[4],[0,String_tag,s])}
      return [0,mark_open_tag,mark_close_tag,print_open_tag,print_close_tag]}
    function set_formatter_tag_functions(_io_)
     {return pp_set_formatter_tag_functions(std_formatter,_io_)}
    function get_formatter_tag_functions(_in_)
     {return pp_get_formatter_tag_functions(std_formatter,_in_)}
    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$0,
       pp_print_as,
       print_as,
       pp_print_int,
       print_int$0,
       pp_print_float,
       print_float$0,
       pp_print_char,
       print_char$0,
       pp_print_bool,
       print_bool,
       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$0,
       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_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,
       pp_set_formatter_stag_function,
       set_formatter_stag_functions,
       pp_get_formatter_stag_function,
       get_formatter_stag_functions,
       formatter_of_out_channel,
       std_formatter,
       err_formatter,
       formatter_of_buffer,
       stdbuf,
       str_formatter,
       flush_str_formatter,
       make_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_list,
       pp_print_text,
       pp_print_option,
       pp_print_result,
       fprintf$0,
       printf$0,
       eprintf$0,
       sprintf$0,
       asprintf,
       dprintf,
       ifprintf$0,
       kfprintf$0,
       kdprintf,
       ikfprintf$0,
       kprintf,
       kasprintf,
       bprintf$0,
       kprintf,
       set_all_formatter_output_funct,
       get_all_formatter_output_funct,
       pp_set_all_formatter_output_fu,
       pp_get_all_formatter_output_fu,
       pp_open_tag,
       open_tag,
       pp_close_tag,
       close_tag,
       pp_set_formatter_tag_functions,
       set_formatter_tag_functions,
       pp_get_formatter_tag_functions,
       get_formatter_tag_functions];
    caml_register_global(788,Stdlib_format,"Stdlib__format");
    var null_char=0;
    function next_char(ib)
     {try
       {var c=caml_call1(ib[7],0);
        ib[2] = c;
        ib[3] = 1;
        ib[4] = ib[4] + 1 | 0;
        if(10 === c)ib[5] = ib[5] + 1 | 0;
        return c}
      catch(_im_)
       {_im_ = caml_wrap_exception(_im_);
        if(_im_ === End_of_file)
         {ib[2] = null_char;ib[3] = 0;ib[1] = 1;return null_char}
        throw _im_}}
    function peek_char(ib){return ib[3]?ib[2]:next_char(ib)}
    function checked_peek_char(ib)
     {var c=peek_char(ib);if(ib[1])throw End_of_file;return c}
    function end_of_input(ib){peek_char(ib);return ib[1]}
    function beginning_of_input(ib){return 0 === ib[4]?1:0}
    function name_of_input(ib)
     {var _il_=ib[9];
      if(typeof _il_ === "number")
       return 0 === _il_?cst_unnamed_function:cst_unnamed_character_string;
      else
       {if(0 === _il_[0])return cst_unnamed_Stdlib_input_chann;
        var fname=_il_[1];
        return fname}}
    function char_count(ib){return ib[3]?ib[4] - 1 | 0:ib[4]}
    function reset_token(ib){return reset(ib[8])}
    function invalidate_current_char(ib){ib[3] = 0;return 0}
    function token_string(ib)
     {var token_buffer=ib[8],tok=contents(token_buffer);
      clear$1(token_buffer);
      ib[6] = ib[6] + 1 | 0;
      return tok}
    function skip_char(width,ib){invalidate_current_char(ib);return width}
    function ignore_char(width,ib){return skip_char(width - 1 | 0,ib)}
    function store_char(width,ib,c)
     {add_char(ib[8],c);return ignore_char(width,ib)}
    var default_token_buffer_size=1024;
    function create$4(iname,next)
     {return [0,
              0,
              null_char,
              0,
              0,
              0,
              0,
              next,
              create$2(default_token_buffer_size),
              iname]}
    function from_string$1(s)
     {var i=[0,0],len=caml_ml_string_length(s);
      function next(param)
       {if(len <= i[1])throw End_of_file;
        var c=caml_string_get(s,i[1]);
        i[1]++;
        return c}
      return create$4(1,next)}
    var _b9_=0;
    function from_function$0(_ik_){return create$4(_b9_,_ik_)}
    var len=1024;
    function scan_close_at_end(ic)
     {caml_ml_close_channel(ic);throw End_of_file}
    function scan_raise_at_end(ic){throw End_of_file}
    function from_ic(scan_close_ic,iname,ic)
     {var buf=caml_create_bytes(1024),i=[0,0],lim=[0,0],eof=[0,0];
      function next(param)
       {if(i[1] < lim[1]){var c=caml_bytes_get(buf,i[1]);i[1]++;return c}
        if(eof[1])throw End_of_file;
        lim[1] = input(ic,buf,0,len);
        return 0 === lim[1]
                ?(eof[1] = 1,caml_call1(scan_close_ic,ic))
                :(i[1] = 1,caml_bytes_get(buf,0))}
      return create$4(iname,next)}
    var stdib=from_ic(scan_raise_at_end,[1,cst$85,stdin],stdin);
    function open_in_file(open_in,fname)
     {if(caml_string_notequal(fname,cst$86))
       {var ic=caml_call1(open_in,fname);
        return from_ic(scan_close_at_end,[1,fname,ic],ic)}
      return stdib}
    function from_file(_ij_){return open_in_file(open_in,_ij_)}
    function from_file_bin(_ii_){return open_in_file(open_in_bin,_ii_)}
    function from_channel$0(ic){return from_ic(scan_raise_at_end,[0,ic],ic)}
    function close_in$0(ib)
     {var _ih_=ib[9];
      if(typeof _ih_ === "number")
       return 0;
      else
       {if(0 === _ih_[0]){var ic=_ih_[1];return caml_ml_close_channel(ic)}
        var ic$0=_ih_[2];
        return caml_ml_close_channel(ic$0)}}
    var memo=[0,0];
    function memo_from_ic(scan_close_ic,ic)
     {try
       {var _if_=assq(ic,memo[1]);return _if_}
      catch(_ig_)
       {_ig_ = caml_wrap_exception(_ig_);
        if(_ig_ === Not_found)
         {var ib=from_ic(scan_close_ic,[0,ic],ic);
          memo[1] = [0,[0,ic,ib],memo[1]];
          return ib}
        throw _ig_}}
    function memo_from_channel(_ie_)
     {return memo_from_ic(scan_raise_at_end,_ie_)}
    var Scan_failure=[248,cst_Stdlib_Scanf_Scan_failure,caml_fresh_oo_id(0)];
    function bad_input(s){throw [0,Scan_failure,s]}
    function bad_input_escape(c)
     {return bad_input(caml_call1(sprintf(_b__),c))}
    function bad_token_length(message)
     {return bad_input(caml_call1(sprintf(_b$_),message))}
    function bad_float(param)
     {return bad_input(cst_no_dot_or_exponent_part_fo)}
    function bad_hex_float(param)
     {return bad_input(cst_not_a_valid_float_in_hexad)}
    function character_mismatch(c,ci)
     {return bad_input(caml_call2(sprintf(_cb_),c,ci))}
    function check_this_char(ib,c)
     {var ci=checked_peek_char(ib);
      return ci === c?invalidate_current_char(ib):character_mismatch(c,ci)}
    function check_char(ib,c$0)
     {if(10 === c$0)
       {var ci=checked_peek_char(ib);
        return 10 === ci
                ?invalidate_current_char(ib)
                :13 === ci
                  ?(invalidate_current_char(ib),check_this_char(ib,10))
                  :character_mismatch(10,ci)}
      if(32 === c$0)
       for(;;)
        {var c=peek_char(ib),_ic_=1 - ib[1];
         if(_ic_)
          {var _id_=c - 9 | 0,switch$0=0;
           if(4 < _id_ >>> 0)
            {if(23 === _id_)switch$0 = 1}
           else
            if(1 < (_id_ - 2 | 0) >>> 0)switch$0 = 1;
           if(switch$0){invalidate_current_char(ib);continue}
           return 0}
         return _ic_}
      return check_this_char(ib,c$0)}
    function token_char(ib){return caml_string_get(token_string(ib),0)}
    function token_bool(ib)
     {var s=token_string(ib);
      return caml_string_notequal(s,cst_false$3)
              ?caml_string_notequal(s,cst_true$3)
                ?bad_input(caml_call1(sprintf(_cc_),s))
                :1
              :0}
    function integer_conversion_of_char(param)
     {var switcher=param - 88 | 0;
      if(! (32 < switcher >>> 0))
       switch(switcher)
        {case 10:return 0;
         case 12:return 1;
         case 17:return 2;
         case 23:return 3;
         case 29:return 4;
         case 0:
         case 32:return 5
         }
      throw [0,Assert_failure,_cd_]}
    function token_int_literal(conv,ib)
     {switch(conv)
       {case 0:var tok=symbol(cst_0b,token_string(ib));break;
        case 3:var tok=symbol(cst_0o,token_string(ib));break;
        case 4:var tok=symbol(cst_0u,token_string(ib));break;
        case 5:var tok=symbol(cst_0x,token_string(ib));break;
        default:var tok=token_string(ib)}
      var l=caml_ml_string_length(tok);
      if(0 !== l && 43 === caml_string_get(tok,0))
       return sub$0(tok,1,l - 1 | 0);
      return tok}
    function token_float(ib){return caml_float_of_string(token_string(ib))}
    function scan_decimal_digit_star(width,ib)
     {var width$0=width;
      for(;;)
       {if(0 === width$0)return width$0;
        var c=peek_char(ib);
        if(ib[1])return width$0;
        if(58 <= c)
         {if(95 === c)
           {var width$1=ignore_char(width$0,ib),width$0=width$1;continue}}
        else
         if(48 <= c)
          {var width$2=store_char(width$0,ib,c),width$0=width$2;continue}
        return width$0}}
    function scan_unsigned_decimal_int(width,ib)
     {if(0 === width)return bad_token_length(cst_decimal_digits);
      var c=checked_peek_char(ib),switcher=c - 48 | 0;
      if(9 < switcher >>> 0)return bad_input(caml_call1(sprintf(_ce_),c));
      var width$0=store_char(width,ib,c);
      return scan_decimal_digit_star(width$0,ib)}
    function scan_digit_plus(basis,digitp,width$2,ib)
     {if(0 === width$2)return bad_token_length(cst_digits);
      var c$0=checked_peek_char(ib);
      if(caml_call1(digitp,c$0))
       {var width$3=store_char(width$2,ib,c$0),width=width$3;
        for(;;)
         {if(0 === width)return width;
          var c=peek_char(ib);
          if(ib[1])return width;
          if(caml_call1(digitp,c))
           {var width$0=store_char(width,ib,c),width=width$0;continue}
          if(95 === c)
           {var width$1=ignore_char(width,ib),width=width$1;continue}
          return width}}
      return bad_input(caml_call2(sprintf(_cf_),c$0,basis))}
    function is_binary_digit(param)
     {var switcher=param - 48 | 0;return 1 < switcher >>> 0?0:1}
    function scan_binary_int(_ia_,_ib_)
     {return scan_digit_plus(cst_binary,is_binary_digit,_ia_,_ib_)}
    function is_octal_digit(param)
     {var switcher=param - 48 | 0;return 7 < switcher >>> 0?0:1}
    function scan_octal_int(_h__,_h$_)
     {return scan_digit_plus(cst_octal,is_octal_digit,_h__,_h$_)}
    function is_hexa_digit(param)
     {var _h9_=param - 48 | 0,switch$0=0;
      if(22 < _h9_ >>> 0)
       {if(! (5 < (_h9_ - 49 | 0) >>> 0))switch$0 = 1}
      else
       if(6 < (_h9_ - 10 | 0) >>> 0)switch$0 = 1;
      return switch$0?1:0}
    function scan_hexadecimal_int(_h7_,_h8_)
     {return scan_digit_plus(cst_hexadecimal,is_hexa_digit,_h7_,_h8_)}
    function scan_sign(width,ib)
     {var c=checked_peek_char(ib),switcher=c - 43 | 0;
      if(! (2 < switcher >>> 0))
       switch(switcher)
        {case 0:return store_char(width,ib,c);
         case 1:break;
         default:return store_char(width,ib,c)}
      return width}
    function scan_optionally_signed_decimal(width,ib)
     {var width$0=scan_sign(width,ib);
      return scan_unsigned_decimal_int(width$0,ib)}
    function scan_int_conversion(conv,width$1,ib)
     {switch(conv)
       {case 0:return scan_binary_int(width$1,ib);
        case 1:return scan_optionally_signed_decimal(width$1,ib);
        case 2:
         var width$0=scan_sign(width$1,ib),c=checked_peek_char(ib);
         if(48 === c)
          {var width=store_char(width$0,ib,c);
           if(0 === width)return width;
           var c$0=peek_char(ib);
           if(ib[1])return width;
           var switch$0=0;
           if(99 <= c$0)
            {if(111 === c$0)
              return scan_octal_int(store_char(width,ib,c$0),ib);
             if(120 === c$0)switch$0 = 1}
           else
            if(88 === c$0)
             switch$0 = 1;
            else
             if(98 <= c$0)return scan_binary_int(store_char(width,ib,c$0),ib);
           return switch$0
                   ?scan_hexadecimal_int(store_char(width,ib,c$0),ib)
                   :scan_decimal_digit_star(width,ib)}
         return scan_unsigned_decimal_int(width$0,ib);
        case 3:return scan_octal_int(width$1,ib);
        case 4:return scan_unsigned_decimal_int(width$1,ib);
        default:return scan_hexadecimal_int(width$1,ib)}}
    function scan_fractional_part(width,ib)
     {if(0 === width)return width;
      var c=peek_char(ib);
      if(ib[1])return width;
      var switcher=c - 48 | 0;
      return 9 < switcher >>> 0
              ?width
              :scan_decimal_digit_star(store_char(width,ib,c),ib)}
    function scan_exponent_part(width,ib)
     {if(0 === width)return width;
      var c=peek_char(ib);
      if(ib[1])return width;
      if(69 !== c && 101 !== c)return width;
      return scan_optionally_signed_decimal(store_char(width,ib,c),ib)}
    function scan_float(width$1,precision,ib)
     {var
       width=scan_sign(width$1,ib),
       width$0=scan_decimal_digit_star(width,ib);
      if(0 === width$0)return [0,width$0,precision];
      var c=peek_char(ib);
      if(ib[1])return [0,width$0,precision];
      if(46 === c)
       {var
         width$2=store_char(width$0,ib,c),
         precision$0=min(width$2,precision),
         width$3=
          width$2
          -
          (precision$0 - scan_fractional_part(precision$0,ib) | 0)
          |
          0;
        return [0,scan_exponent_part(width$3,ib),precision$0]}
      return [0,scan_exponent_part(width$0,ib),precision]}
    function check_case_insensitive_string(width,ib,error,str)
     {function lowercase(c)
       {var switcher=c - 65 | 0;
        return 25 < switcher >>> 0?c:char_of_int((c - 65 | 0) + 97 | 0)}
      var
       len=caml_ml_string_length(str),
       width$0=[0,width],
       _h4_=len - 1 | 0,
       _h3_=0;
      if(! (_h4_ < 0))
       {var i=_h3_;
        for(;;)
         {var c=peek_char(ib),_h5_=lowercase(caml_string_get(str,i));
          if(lowercase(c) !== _h5_)caml_call1(error,0);
          if(0 === width$0[1])caml_call1(error,0);
          width$0[1] = store_char(width$0[1],ib,c);
          var _h6_=i + 1 | 0;
          if(_h4_ !== i){var i=_h6_;continue}
          break}}
      return width$0[1]}
    function scan_hex_float(width,precision,ib)
     {var _hQ_=0 === width?1:0,_hR_=_hQ_ || end_of_input(ib);
      if(_hR_)bad_hex_float(0);
      var
       width$0=scan_sign(width,ib),
       _hS_=0 === width$0?1:0,
       _hT_=_hS_ || end_of_input(ib);
      if(_hT_)bad_hex_float(0);
      var c=peek_char(ib),switch$0=0;
      if(78 <= c)
       {var switcher=c - 79 | 0;
        if(30 < switcher >>> 0)
         {if(! (32 <= switcher))
           {var
             width$1=store_char(width$0,ib,c),
             _hU_=0 === width$1?1:0,
             _hV_=_hU_ || end_of_input(ib);
            if(_hV_)bad_hex_float(0);
            return check_case_insensitive_string
                    (width$1,ib,bad_hex_float,cst_an)}}
        else
         if(26 === switcher)switch$0 = 1}
      else
       {if(48 === c)
         {var
           width$3=store_char(width$0,ib,c),
           _hY_=0 === width$3?1:0,
           _hZ_=_hY_ || end_of_input(ib);
          if(_hZ_)bad_hex_float(0);
          var
           width$4=
            check_case_insensitive_string(width$3,ib,bad_hex_float,cst_x$2);
          if(0 !== width$4 && ! end_of_input(ib))
           {var match=peek_char(ib),_h0_=match - 46 | 0,switch$1=0;
            if(34 < _h0_ >>> 0)
             {if(66 === _h0_)switch$1 = 1}
            else
             if(32 < (_h0_ - 1 | 0) >>> 0)switch$1 = 1;
            var width$5=switch$1?width$4:scan_hexadecimal_int(width$4,ib);
            if(0 !== width$5 && ! end_of_input(ib))
             {var c$0=peek_char(ib);
              if(46 === c$0)
               {var width$6=store_char(width$5,ib,c$0),switch$2=0;
                if(0 !== width$6 && ! end_of_input(ib))
                 {var match$0=peek_char(ib),switch$3=0;
                  if(80 !== match$0 && 112 !== match$0)
                   {var
                     precision$0=min(width$6,precision),
                     width$10=
                      width$6
                      -
                      (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0)
                      |
                      0;
                    switch$3 = 1}
                  if(! switch$3)var width$10=width$6;
                  var width$7=width$10;
                  switch$2 = 1}
                if(! switch$2)var width$7=width$6;
                var width$8=width$7}
              else
               var width$8=width$5;
              if(0 !== width$8 && ! end_of_input(ib))
               {var c$1=peek_char(ib);
                if(80 !== c$1 && 112 !== c$1)return width$8;
                var
                 width$9=store_char(width$8,ib,c$1),
                 _h1_=0 === width$9?1:0,
                 _h2_=_h1_ || end_of_input(ib);
                if(_h2_)bad_hex_float(0);
                return scan_optionally_signed_decimal(width$9,ib)}
              return width$8}
            return width$5}
          return width$4}
        if(73 === c)switch$0 = 1}
      if(switch$0)
       {var
         width$2=store_char(width$0,ib,c),
         _hW_=0 === width$2?1:0,
         _hX_=_hW_ || end_of_input(ib);
        if(_hX_)bad_hex_float(0);
        return check_case_insensitive_string
                (width$2,ib,bad_hex_float,cst_nfinity)}
      return bad_hex_float(0)}
    function scan_caml_float_rest(width,precision,ib)
     {var _hM_=0 === width?1:0,_hN_=_hM_ || end_of_input(ib);
      if(_hN_)bad_float(0);
      var
       width$0=scan_decimal_digit_star(width,ib),
       _hO_=0 === width$0?1:0,
       _hP_=_hO_ || end_of_input(ib);
      if(_hP_)bad_float(0);
      var c=peek_char(ib),switcher=c - 69 | 0;
      if(32 < switcher >>> 0)
       {if(-23 === switcher)
         {var
           width$1=store_char(width$0,ib,c),
           precision$0=min(width$1,precision),
           width_precision=scan_fractional_part(precision$0,ib),
           frac_width=precision$0 - width_precision | 0,
           width$2=width$1 - frac_width | 0;
          return scan_exponent_part(width$2,ib)}}
      else
       {var switcher$0=switcher - 1 | 0;
        if(30 < switcher$0 >>> 0)return scan_exponent_part(width$0,ib)}
      return bad_float(0)}
    function scan_caml_float(width,precision,ib)
     {var _hy_=0 === width?1:0,_hz_=_hy_ || end_of_input(ib);
      if(_hz_)bad_float(0);
      var
       width$0=scan_sign(width,ib),
       _hA_=0 === width$0?1:0,
       _hB_=_hA_ || end_of_input(ib);
      if(_hB_)bad_float(0);
      var c=peek_char(ib);
      if(49 <= c)
       {if(! (58 <= c))
         {var
           width$1=store_char(width$0,ib,c),
           _hC_=0 === width$1?1:0,
           _hD_=_hC_ || end_of_input(ib);
          if(_hD_)bad_float(0);
          return scan_caml_float_rest(width$1,precision,ib)}}
      else
       if(48 <= c)
        {var
          width$2=store_char(width$0,ib,c),
          _hE_=0 === width$2?1:0,
          _hF_=_hE_ || end_of_input(ib);
         if(_hF_)bad_float(0);
         var c$0=peek_char(ib);
         if(88 !== c$0 && 120 !== c$0)
          return scan_caml_float_rest(width$2,precision,ib);
         var
          width$3=store_char(width$2,ib,c$0),
          _hG_=0 === width$3?1:0,
          _hH_=_hG_ || end_of_input(ib);
         if(_hH_)bad_float(0);
         var
          width$4=scan_hexadecimal_int(width$3,ib),
          _hI_=0 === width$4?1:0,
          _hJ_=_hI_ || end_of_input(ib);
         if(_hJ_)bad_float(0);
         var c$1=peek_char(ib),switcher=c$1 - 80 | 0,switch$0=0;
         if(32 < switcher >>> 0)
          if(-34 === switcher)
           {var width$5=store_char(width$4,ib,c$1),switch$1=0;
            if(0 !== width$5 && ! end_of_input(ib))
             {var match=peek_char(ib),switch$2=0;
              if(80 !== match && 112 !== match)
               {var
                 precision$0=min(width$5,precision),
                 width$10=
                  width$5
                  -
                  (precision$0 - scan_hexadecimal_int(precision$0,ib) | 0)
                  |
                  0;
                switch$2 = 1}
              if(! switch$2)var width$10=width$5;
              var width$6=width$10;
              switch$1 = 1}
            if(! switch$1)var width$6=width$5;
            var width$7=width$6}
          else
           switch$0 = 1;
         else
          {var switcher$0=switcher - 1 | 0;
           if(30 < switcher$0 >>> 0)var width$7=width$4;else switch$0 = 1}
         var width$8=switch$0?bad_float(0):width$7;
         if(0 !== width$8 && ! end_of_input(ib))
          {var c$2=peek_char(ib);
           if(80 !== c$2 && 112 !== c$2)return width$8;
           var
            width$9=store_char(width$8,ib,c$2),
            _hK_=0 === width$9?1:0,
            _hL_=_hK_ || end_of_input(ib);
           if(_hL_)bad_hex_float(0);
           return scan_optionally_signed_decimal(width$9,ib)}
         return width$8}
      return bad_float(0)}
    function scan_string(stp,width,ib)
     {var width$0=width;
      for(;;)
       {if(0 === width$0)return width$0;
        var c=peek_char(ib);
        if(ib[1])return width$0;
        if(stp)
         {var c$0=stp[1];
          if(c === c$0)return skip_char(width$0,ib);
          var width$1=store_char(width$0,ib,c),width$0=width$1;
          continue}
        var _hx_=c - 9 | 0,switch$0=0;
        if(4 < _hx_ >>> 0)
         {if(23 === _hx_)switch$0 = 1}
        else
         if(1 < (_hx_ - 2 | 0) >>> 0)switch$0 = 1;
        if(switch$0)return width$0;
        var width$2=store_char(width$0,ib,c),width$0=width$2;
        continue}}
    function scan_char(width,ib)
     {return store_char(width,ib,checked_peek_char(ib))}
    function hexadecimal_value_of_char(d)
     {return 97 <= d?d - 87 | 0:65 <= d?d - 55 | 0:d - 48 | 0}
    function check_next_char(message,width,ib)
     {if(0 === width)return bad_token_length(message);
      var c=peek_char(ib);
      return ib[1]?bad_input(caml_call1(sprintf(_ca_),message)):c}
    function check_next_char_for_char(_hv_,_hw_)
     {return check_next_char(cst_a_Char,_hv_,_hw_)}
    function check_next_char_for_string(_ht_,_hu_)
     {return check_next_char(cst_a_String,_ht_,_hu_)}
    function scan_backslash_char(width,ib)
     {var c0=check_next_char_for_char(width,ib),switch$0=0;
      if(40 <= c0)
       {if(58 <= c0)
         {var switcher$0=c0 - 92 | 0;
          if(! (28 < switcher$0 >>> 0))
           switch(switcher$0)
            {case 28:
              var
               get_digit=
                function(param)
                 {var c=next_char(ib),_hs_=c - 48 | 0,switch$0=0;
                  if(22 < _hs_ >>> 0)
                   {if(! (5 < (_hs_ - 49 | 0) >>> 0))switch$0 = 1}
                  else
                   if(6 < (_hs_ - 10 | 0) >>> 0)switch$0 = 1;
                  return switch$0?c:bad_input_escape(c)},
               c1=get_digit(0),
               c2=get_digit(0),
               _ho_=hexadecimal_value_of_char(c2),
               c$0=(16 * hexadecimal_value_of_char(c1) | 0) + _ho_ | 0,
               switch$1=0;
              if(0 <= c$0 && ! (255 < c$0))
               {var _hq_=char_of_int(c$0);switch$1 = 1}
              if(! switch$1)
               var _hq_=bad_input(caml_call2(sprintf(_ch_),c1,c2));
              return store_char(width - 2 | 0,ib,_hq_);
             case 0:
             case 6:
             case 18:
             case 22:
             case 24:switch$0 = 1;break
             }}
        else
         if(48 <= c0)
          {var
            get_digit$0=
             function(param)
              {var c=next_char(ib),switcher=c - 48 | 0;
               return 9 < switcher >>> 0?bad_input_escape(c):c},
            c1$0=get_digit$0(0),
            c2$0=get_digit$0(0),
            c=
             ((100 * (c0 - 48 | 0) | 0) + (10 * (c1$0 - 48 | 0) | 0) | 0)
             +
             (c2$0 - 48 | 0)
             |
             0,
            switch$2=0;
           if(0 <= c && ! (255 < c)){var _hr_=char_of_int(c);switch$2 = 1}
           if(! switch$2)
            var _hr_=bad_input(caml_call3(sprintf(_cg_),c0,c1$0,c2$0));
           return store_char(width - 2 | 0,ib,_hr_)}}
      else
       if(34 === c0 || 39 <= c0)switch$0 = 1;
      if(switch$0)
       {var switch$3=0;
        if(110 <= c0)
         if(117 <= c0)
          switch$3 = 1;
         else
          {var switcher=c0 - 110 | 0;
           switch(switcher)
            {case 0:var _hp_=10;break;
             case 4:var _hp_=13;break;
             case 6:var _hp_=9;break;
             default:switch$3 = 1}}
        else
         if(98 === c0)var _hp_=8;else switch$3 = 1;
        if(switch$3)var _hp_=c0;
        return store_char(width,ib,_hp_)}
      return bad_input_escape(c0)}
    function scan_caml_char(width,ib)
     {function find_stop(width)
       {var c=check_next_char_for_char(width,ib);
        return 39 === c?ignore_char(width,ib):character_mismatch(39,c)}
      var c=checked_peek_char(ib);
      if(39 === c)
       {var
         width$0=ignore_char(width,ib),
         c$0=check_next_char_for_char(width$0,ib);
        return 92 === c$0
                ?find_stop(scan_backslash_char(ignore_char(width$0,ib),ib))
                :find_stop(store_char(width$0,ib,c$0))}
      return character_mismatch(39,c)}
    function scan_caml_string(width,ib)
     {function find_stop$0(counter,width)
       {var width$0=width;
        for(;;)
         {var c=check_next_char_for_string(width$0,ib);
          if(34 === c)return ignore_char(width$0,ib);
          if(92 === c)
           {var
             width$1=ignore_char(width$0,ib),
             match=check_next_char_for_string(width$1,ib);
            if(10 === match)
             {var _hm_=ignore_char(width$1,ib);
              if(counter < 50)
               {var counter$0=counter + 1 | 0;
                return skip_spaces(counter$0,_hm_)}
              return caml_trampoline_return(skip_spaces,[0,_hm_])}
            if(13 === match)
             {var
               width$3=ignore_char(width$1,ib),
               match$0=check_next_char_for_string(width$3,ib);
              if(10 === match$0)
               {var _hn_=ignore_char(width$3,ib);
                if(counter < 50)
                 {var counter$1=counter + 1 | 0;
                  return skip_spaces(counter$1,_hn_)}
                return caml_trampoline_return(skip_spaces,[0,_hn_])}
              var width$5=store_char(width$3,ib,13),width$0=width$5;
              continue}
            var width$4=scan_backslash_char(width$1,ib),width$0=width$4;
            continue}
          var width$2=store_char(width$0,ib,c),width$0=width$2;
          continue}}
      function skip_spaces(counter,width)
       {var width$0=width;
        for(;;)
         {var match=check_next_char_for_string(width$0,ib);
          if(32 === match)
           {var width$1=ignore_char(width$0,ib),width$0=width$1;continue}
          if(counter < 50)
           {var counter$0=counter + 1 | 0;
            return find_stop$0(counter$0,width$0)}
          return caml_trampoline_return(find_stop$0,[0,width$0])}}
      function find_stop(width){return caml_trampoline(find_stop$0(0,width))}
      var c=checked_peek_char(ib);
      return 34 === c
              ?find_stop(ignore_char(width,ib))
              :character_mismatch(34,c)}
    function scan_chars_in_char_set(char_set,scan_indic,width,ib)
     {function scan_chars(i,stp)
       {var i$0=i;
        for(;;)
         {var c=peek_char(ib),_hi_=0 < i$0?1:0;
          if(_hi_)
           {var _hj_=1 - ib[1];
            if(_hj_)
             var _hk_=is_in_char_set(char_set,c),_hl_=_hk_?c !== stp?1:0:_hk_;
            else
             var _hl_=_hj_}
          else
           var _hl_=_hi_;
          if(_hl_)
           {store_char(max_int,ib,c);var i$1=i$0 - 1 | 0,i$0=i$1;continue}
          return _hl_}}
      if(scan_indic)
       {var c=scan_indic[1];
        scan_chars(width,c);
        var _hh_=1 - ib[1];
        if(_hh_)
         {var ci=peek_char(ib);
          return c === ci?invalidate_current_char(ib):character_mismatch(c,ci)}
        return _hh_}
      return scan_chars(width,-1)}
    function scanf_bad_input(ib,x)
     {if(x[1] === Scan_failure)
       var s=x[2];
      else
       {if(x[1] !== Failure)throw x;var s=x[2]}
      var i=char_count(ib);
      return bad_input(caml_call2(sprintf(_cj_),i,s))}
    function get_counter(ib,counter)
     {switch(counter)
       {case 0:return ib[5];case 1:return char_count(ib);default:return ib[6]}}
    function width_of_pad_opt(pad_opt)
     {if(pad_opt){var width=pad_opt[1];return width}return max_int}
    function stopper_of_formatting_lit(fmting)
     {if(6 === fmting)return _ck_;
      var
       str=string_of_formatting_lit(fmting),
       stp=caml_string_get(str,1),
       sub_str=sub$0(str,2,caml_ml_string_length(str) - 2 | 0);
      return [0,stp,sub_str]}
    function take_format_readers$0(counter,k,fmt)
     {var fmt$0=fmt;
      for(;;)
       if(typeof fmt$0 === "number")
        return caml_call1(k,0);
       else
        switch(fmt$0[0])
         {case 0:var fmt$1=fmt$0[1],fmt$0=fmt$1;continue;
          case 1:var fmt$2=fmt$0[1],fmt$0=fmt$2;continue;
          case 2:var fmt$3=fmt$0[2],fmt$0=fmt$3;continue;
          case 3:var fmt$4=fmt$0[2],fmt$0=fmt$4;continue;
          case 4:var fmt$5=fmt$0[4],fmt$0=fmt$5;continue;
          case 5:var fmt$6=fmt$0[4],fmt$0=fmt$6;continue;
          case 6:var fmt$7=fmt$0[4],fmt$0=fmt$7;continue;
          case 7:var fmt$8=fmt$0[4],fmt$0=fmt$8;continue;
          case 8:var fmt$9=fmt$0[4],fmt$0=fmt$9;continue;
          case 9:var fmt$10=fmt$0[2],fmt$0=fmt$10;continue;
          case 10:var fmt$11=fmt$0[1],fmt$0=fmt$11;continue;
          case 11:var fmt$12=fmt$0[2],fmt$0=fmt$12;continue;
          case 12:var fmt$13=fmt$0[2],fmt$0=fmt$13;continue;
          case 13:var fmt$14=fmt$0[3],fmt$0=fmt$14;continue;
          case 14:
           var rest=fmt$0[3],fmtty=fmt$0[2],_hf_=erase_rel(symm(fmtty));
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return take_fmtty_format_readers$0(counter$0,k,_hf_,rest)}
           return caml_trampoline_return
                   (take_fmtty_format_readers$0,[0,k,_hf_,rest]);
          case 15:var fmt$15=fmt$0[1],fmt$0=fmt$15;continue;
          case 16:var fmt$16=fmt$0[1],fmt$0=fmt$16;continue;
          case 17:var fmt$17=fmt$0[2],fmt$0=fmt$17;continue;
          case 18:
           var _hg_=fmt$0[1];
           if(0 === _hg_[0])
            {var
              rest$0=fmt$0[2],
              match=_hg_[1],
              fmt$18=match[1],
              fmt$19=concat_fmt(fmt$18,rest$0),
              fmt$0=fmt$19;
             continue}
           var
            rest$1=fmt$0[2],
            match$0=_hg_[1],
            fmt$20=match$0[1],
            fmt$21=concat_fmt(fmt$20,rest$1),
            fmt$0=fmt$21;
           continue;
          case 19:
           var fmt_rest=fmt$0[1];
           return function(reader)
            {function new_k(readers_rest)
              {return caml_call1(k,[0,reader,readers_rest])}
             return take_format_readers(new_k,fmt_rest)};
          case 20:var fmt$22=fmt$0[3],fmt$0=fmt$22;continue;
          case 21:var fmt$23=fmt$0[2],fmt$0=fmt$23;continue;
          case 22:var fmt$24=fmt$0[1],fmt$0=fmt$24;continue;
          case 23:
           var rest$2=fmt$0[2],ign=fmt$0[1];
           if(typeof ign === "number")
            switch(ign)
             {case 0:var fmt$0=rest$2;continue;
              case 1:var fmt$0=rest$2;continue;
              case 2:
               return function(reader)
                {function new_k(readers_rest)
                  {return caml_call1(k,[0,reader,readers_rest])}
                 return take_format_readers(new_k,rest$2)};
              default:var fmt$0=rest$2;continue}
           else
            switch(ign[0])
             {case 0:var fmt$0=rest$2;continue;
              case 1:var fmt$0=rest$2;continue;
              case 2:var fmt$0=rest$2;continue;
              case 3:var fmt$0=rest$2;continue;
              case 4:var fmt$0=rest$2;continue;
              case 5:var fmt$0=rest$2;continue;
              case 6:var fmt$0=rest$2;continue;
              case 7:var fmt$0=rest$2;continue;
              case 8:var fmt$0=rest$2;continue;
              case 9:
               var fmtty$0=ign[2];
               if(counter < 50)
                {var counter$1=counter + 1 | 0;
                 return take_fmtty_format_readers$0
                         (counter$1,k,fmtty$0,rest$2)}
               return caml_trampoline_return
                       (take_fmtty_format_readers$0,[0,k,fmtty$0,rest$2]);
              case 10:var fmt$0=rest$2;continue;
              default:var fmt$0=rest$2;continue}
          default:var fmt$25=fmt$0[3],fmt$0=fmt$25;continue}}
    function take_fmtty_format_readers$0(counter,k,fmtty,fmt)
     {var fmtty$0=fmtty;
      for(;;)
       if(typeof fmtty$0 === "number")
        {if(counter < 50)
          {var counter$0=counter + 1 | 0;
           return take_format_readers$0(counter$0,k,fmt)}
         return caml_trampoline_return(take_format_readers$0,[0,k,fmt])}
       else
        switch(fmtty$0[0])
         {case 0:var fmtty$1=fmtty$0[1],fmtty$0=fmtty$1;continue;
          case 1:var fmtty$2=fmtty$0[1],fmtty$0=fmtty$2;continue;
          case 2:var fmtty$3=fmtty$0[1],fmtty$0=fmtty$3;continue;
          case 3:var fmtty$4=fmtty$0[1],fmtty$0=fmtty$4;continue;
          case 4:var fmtty$5=fmtty$0[1],fmtty$0=fmtty$5;continue;
          case 5:var fmtty$6=fmtty$0[1],fmtty$0=fmtty$6;continue;
          case 6:var fmtty$7=fmtty$0[1],fmtty$0=fmtty$7;continue;
          case 7:var fmtty$8=fmtty$0[1],fmtty$0=fmtty$8;continue;
          case 8:var fmtty$9=fmtty$0[2],fmtty$0=fmtty$9;continue;
          case 9:
           var
            rest=fmtty$0[3],
            ty2=fmtty$0[2],
            ty1=fmtty$0[1],
            ty=trans(symm(ty1),ty2),
            fmtty$10=concat_fmtty(ty,rest),
            fmtty$0=fmtty$10;
           continue;
          case 10:var fmtty$11=fmtty$0[1],fmtty$0=fmtty$11;continue;
          case 11:var fmtty$12=fmtty$0[1],fmtty$0=fmtty$12;continue;
          case 12:var fmtty$13=fmtty$0[1],fmtty$0=fmtty$13;continue;
          case 13:
           var fmt_rest=fmtty$0[1];
           return function(reader)
            {function new_k(readers_rest)
              {return caml_call1(k,[0,reader,readers_rest])}
             return take_fmtty_format_readers(new_k,fmt_rest,fmt)};
          default:
           var fmt_rest$0=fmtty$0[1];
           return function(reader)
            {function new_k(readers_rest)
              {return caml_call1(k,[0,reader,readers_rest])}
             return take_fmtty_format_readers(new_k,fmt_rest$0,fmt)}}}
    function take_format_readers(k,fmt)
     {return caml_trampoline(take_format_readers$0(0,k,fmt))}
    function take_fmtty_format_readers(k,fmtty,fmt)
     {return caml_trampoline(take_fmtty_format_readers$0(0,k,fmtty,fmt))}
    function pad_prec_scanf(ib,fmt,readers,pad,prec,scan,token)
     {if(typeof pad === "number")
       {if(typeof prec === "number")
         {if(prec)return invalid_arg(cst_scanf_bad_conversion);
          caml_call3(scan,max_int,max_int,ib);
          var x=caml_call1(token,ib);
          return [0,x,make_scanf(ib,fmt,readers)]}
        var p=prec[1];
        caml_call3(scan,max_int,p,ib);
        var x$0=caml_call1(token,ib);
        return [0,x$0,make_scanf(ib,fmt,readers)]}
      else
       {if(0 === pad[0])
         {if(pad[1])
           {var _he_=pad[2];
            if(typeof prec === "number")
             {if(prec)return invalid_arg(cst_scanf_bad_conversion$0);
              caml_call3(scan,_he_,max_int,ib);
              var x$1=caml_call1(token,ib);
              return [0,x$1,make_scanf(ib,fmt,readers)]}
            var p$0=prec[1];
            caml_call3(scan,_he_,p$0,ib);
            var x$2=caml_call1(token,ib);
            return [0,x$2,make_scanf(ib,fmt,readers)]}
          return invalid_arg(cst_scanf_bad_conversion$1)}
        return invalid_arg(cst_scanf_bad_conversion$2)}}
    function make_scanf(ib,fmt,readers)
     {var fmt$0=fmt;
      for(;;)
       if(typeof fmt$0 === "number")
        return 0;
       else
        switch(fmt$0[0])
         {case 0:
           var rest=fmt$0[1];
           scan_char(0,ib);
           var c=token_char(ib);
           return [0,c,make_scanf(ib,rest,readers)];
          case 1:
           var rest$0=fmt$0[1];
           scan_caml_char(0,ib);
           var c$0=token_char(ib);
           return [0,c$0,make_scanf(ib,rest$0,readers)];
          case 2:
           var _g3_=fmt$0[1],_g4_=fmt$0[2];
           if(typeof _g4_ !== "number")
            switch(_g4_[0])
             {case 17:
               var
                rest$2=_g4_[2],
                fmting_lit=_g4_[1],
                match=stopper_of_formatting_lit(fmting_lit),
                str=match[2],
                stp=match[1],
                scan$0=
                 function(width,param,ib)
                  {return scan_string([0,stp],width,ib)},
                str_rest=[11,str,rest$2];
               return pad_prec_scanf
                       (ib,str_rest,readers,_g3_,0,scan$0,token_string);
              case 18:
               var _g5_=_g4_[1];
               if(0 === _g5_[0])
                {var
                  rest$3=_g4_[2],
                  match$0=_g5_[1],
                  fmt$1=match$0[1],
                  scan$1=
                   function(width,param,ib){return scan_string(_cl_,width,ib)};
                 return pad_prec_scanf
                         (ib,
                          concat_fmt(fmt$1,rest$3),
                          readers,
                          _g3_,
                          0,
                          scan$1,
                          token_string)}
               var
                rest$4=_g4_[2],
                match$1=_g5_[1],
                fmt$2=match$1[1],
                scan$2=
                 function(width,param,ib){return scan_string(_cm_,width,ib)};
               return pad_prec_scanf
                       (ib,
                        concat_fmt(fmt$2,rest$4),
                        readers,
                        _g3_,
                        0,
                        scan$2,
                        token_string)
              }
           var
            rest$1=fmt$0[2],
            scan=function(width,param,ib){return scan_string(0,width,ib)};
           return pad_prec_scanf(ib,rest$1,readers,_g3_,0,scan,token_string);
          case 3:
           var
            rest$5=fmt$0[2],
            pad=fmt$0[1],
            scan$3=function(width,param,ib){return scan_caml_string(width,ib)};
           return pad_prec_scanf(ib,rest$5,readers,pad,0,scan$3,token_string);
          case 4:
           var
            rest$6=fmt$0[4],
            prec=fmt$0[3],
            pad$0=fmt$0[2],
            iconv=fmt$0[1],
            conv=integer_conversion_of_char(char_of_iconv(iconv)),
            scan$4=
             function(width,param,ib)
              {return scan_int_conversion(conv,width,ib)};
           return pad_prec_scanf
                   (ib,
                    rest$6,
                    readers,
                    pad$0,
                    prec,
                    scan$4,
                    function(ib)
                     {return caml_int_of_string(token_int_literal(conv,ib))});
          case 5:
           var
            rest$7=fmt$0[4],
            prec$0=fmt$0[3],
            pad$1=fmt$0[2],
            iconv$0=fmt$0[1],
            conv$0=integer_conversion_of_char(char_of_iconv(iconv$0)),
            scan$5=
             function(width,param,ib)
              {return scan_int_conversion(conv$0,width,ib)};
           return pad_prec_scanf
                   (ib,
                    rest$7,
                    readers,
                    pad$1,
                    prec$0,
                    scan$5,
                    function(ib)
                     {return caml_int_of_string(token_int_literal(conv$0,ib))});
          case 6:
           var
            rest$8=fmt$0[4],
            prec$1=fmt$0[3],
            pad$2=fmt$0[2],
            iconv$1=fmt$0[1],
            conv$1=integer_conversion_of_char(char_of_iconv(iconv$1)),
            scan$6=
             function(width,param,ib)
              {return scan_int_conversion(conv$1,width,ib)};
           return pad_prec_scanf
                   (ib,
                    rest$8,
                    readers,
                    pad$2,
                    prec$1,
                    scan$6,
                    function(ib)
                     {return caml_int_of_string(token_int_literal(conv$1,ib))});
          case 7:
           var
            rest$9=fmt$0[4],
            prec$2=fmt$0[3],
            pad$3=fmt$0[2],
            iconv$2=fmt$0[1],
            conv$2=integer_conversion_of_char(char_of_iconv(iconv$2)),
            scan$7=
             function(width,param,ib)
              {return scan_int_conversion(conv$2,width,ib)};
           return pad_prec_scanf
                   (ib,
                    rest$9,
                    readers,
                    pad$3,
                    prec$2,
                    scan$7,
                    function(ib)
                     {return caml_int64_of_string(token_int_literal(conv$2,ib))});
          case 8:
           switch(fmt$0[1][2])
            {case 5:
             case 8:
              var rest$11=fmt$0[4],prec$4=fmt$0[3],pad$5=fmt$0[2];
              return pad_prec_scanf
                      (ib,
                       rest$11,
                       readers,
                       pad$5,
                       prec$4,
                       scan_caml_float,
                       token_float);
             case 6:
             case 7:
              var rest$12=fmt$0[4],prec$5=fmt$0[3],pad$6=fmt$0[2];
              return pad_prec_scanf
                      (ib,rest$12,readers,pad$6,prec$5,scan_hex_float,token_float);
             default:
              var rest$10=fmt$0[4],prec$3=fmt$0[3],pad$4=fmt$0[2];
              return pad_prec_scanf
                      (ib,rest$10,readers,pad$4,prec$3,scan_float,token_float)}
          case 9:
           var
            rest$13=fmt$0[2],
            pad$7=fmt$0[1],
            scan$8=
             function(param,_hd_,ib)
              {var
                c=checked_peek_char(ib),
                m=
                 102 === c
                  ?5
                  :116 === c?4:bad_input(caml_call1(sprintf(_ci_),c));
               return scan_string(0,m,ib)};
           return pad_prec_scanf(ib,rest$13,readers,pad$7,0,scan$8,token_bool);
          case 10:
           var rest$14=fmt$0[1];
           if(end_of_input(ib)){var fmt$0=rest$14;continue}
           return bad_input(cst_end_of_input_not_found);
          case 11:
           var rest$15=fmt$0[2],str$0=fmt$0[1];
           iter$4(function(_hc_){return check_char(ib,_hc_)},str$0);
           var fmt$0=rest$15;
           continue;
          case 12:
           var rest$16=fmt$0[2],chr=fmt$0[1];
           check_char(ib,chr);
           var fmt$0=rest$16;
           continue;
          case 13:
           var rest$17=fmt$0[3],fmtty=fmt$0[2],pad_opt=fmt$0[1];
           scan_caml_string(width_of_pad_opt(pad_opt),ib);
           var s=token_string(ib);
           try
            {var _g6_=format_of_string_fmtty(s,fmtty),fmt$3=_g6_}
           catch(exn)
            {exn = caml_wrap_exception(exn);
             if(exn[1] !== Failure)throw exn;
             var msg=exn[2],fmt$3=bad_input(msg)}
           return [0,fmt$3,make_scanf(ib,rest$17,readers)];
          case 14:
           var rest$18=fmt$0[3],fmtty$0=fmt$0[2],pad_opt$0=fmt$0[1];
           scan_caml_string(width_of_pad_opt(pad_opt$0),ib);
           var s$0=token_string(ib);
           try
            {var
              match$2=fmt_ebb_of_string(0,s$0),
              fmt$6=match$2[1],
              match$3=fmt_ebb_of_string(0,s$0),
              fmt$7=match$3[1],
              fmt$8=type_format(fmt$7,erase_rel(symm(fmtty$0))),
              _g8_=type_format(fmt$6,erase_rel(fmtty$0)),
              fmt$5=fmt$8,
              fmt$4=_g8_}
           catch(exn)
            {exn = caml_wrap_exception(exn);
             if(exn[1] !== Failure)throw exn;
             var
              msg$0=exn[2],
              _g7_=bad_input(msg$0),
              fmt$5=_g7_[2],
              fmt$4=_g7_[1]}
           return [0,
                   [0,fmt$4,s$0],
                   make_scanf(ib,concat_fmt(fmt$5,rest$18),readers)];
          case 15:return invalid_arg(cst_scanf_bad_conversion_a);
          case 16:return invalid_arg(cst_scanf_bad_conversion_t);
          case 17:
           var
            rest$19=fmt$0[2],
            formatting_lit=fmt$0[1],
            _g9_=string_of_formatting_lit(formatting_lit);
           iter$4(function(_hb_){return check_char(ib,_hb_)},_g9_);
           var fmt$0=rest$19;
           continue;
          case 18:
           var _g__=fmt$0[1];
           if(0 === _g__[0])
            {var rest$20=fmt$0[2],match$4=_g__[1],fmt$9=match$4[1];
             check_char(ib,64);
             check_char(ib,123);
             var fmt$10=concat_fmt(fmt$9,rest$20),fmt$0=fmt$10;
             continue}
           var rest$21=fmt$0[2],match$5=_g__[1],fmt$11=match$5[1];
           check_char(ib,64);
           check_char(ib,91);
           var fmt$12=concat_fmt(fmt$11,rest$21),fmt$0=fmt$12;
           continue;
          case 19:
           var fmt_rest=fmt$0[1];
           if(readers)
            {var
              readers_rest=readers[2],
              reader=readers[1],
              x=caml_call1(reader,ib);
             return [0,x,make_scanf(ib,fmt_rest,readers_rest)]}
           return invalid_arg(cst_scanf_missing_reader);
          case 20:
           var _g$_=fmt$0[1],_ha_=fmt$0[3];
           if(typeof _ha_ !== "number" && 17 === _ha_[0])
            {var
              rest$23=_ha_[2],
              fmting_lit$0=_ha_[1],
              char_set$0=fmt$0[2],
              match$6=stopper_of_formatting_lit(fmting_lit$0),
              str$1=match$6[2],
              stp$0=match$6[1],
              width$0=width_of_pad_opt(_g$_);
             scan_chars_in_char_set(char_set$0,[0,stp$0],width$0,ib);
             var s$2=token_string(ib),str_rest$0=[11,str$1,rest$23];
             return [0,s$2,make_scanf(ib,str_rest$0,readers)]}
           var
            rest$22=fmt$0[3],
            char_set=fmt$0[2],
            width=width_of_pad_opt(_g$_);
           scan_chars_in_char_set(char_set,0,width,ib);
           var s$1=token_string(ib);
           return [0,s$1,make_scanf(ib,rest$22,readers)];
          case 21:
           var
            rest$24=fmt$0[2],
            counter=fmt$0[1],
            count=get_counter(ib,counter);
           return [0,count,make_scanf(ib,rest$24,readers)];
          case 22:
           var rest$25=fmt$0[1],c$1=checked_peek_char(ib);
           return [0,c$1,make_scanf(ib,rest$25,readers)];
          case 23:
           var
            rest$26=fmt$0[2],
            ign=fmt$0[1],
            match$7=param_format_of_ignored_format(ign,rest$26),
            fmt$13=match$7[1],
            match$8=make_scanf(ib,fmt$13,readers);
           if(match$8){var arg_rest=match$8[2];return arg_rest}
           throw [0,Assert_failure,_cn_];
          default:return invalid_arg(cst_scanf_bad_conversion_custo)}}
    function kscanf(ib,ef,param)
     {var str=param[2],fmt=param[1];
      function apply(f,args)
       {var f$0=f,args$0=args;
        for(;;)
         {if(args$0)
           {var
             r=args$0[2],
             x=args$0[1],
             f$1=caml_call1(f$0,x),
             f$0=f$1,
             args$0=r;
            continue}
          return f$0}}
      function k(readers,f)
       {reset_token(ib);
        try
         {var _g2_=[0,make_scanf(ib,fmt,readers)],_g1_=_g2_}
        catch(exc)
         {exc = caml_wrap_exception(exc);
          var switch$0=0;
          if
           (exc[1]
            !==
            Scan_failure
            &&
            exc[1]
            !==
            Failure
            &&
            exc
            !==
            End_of_file)
           {if(exc[1] !== Invalid_argument)throw exc;
            var
             msg=exc[2],
             _g0_=
              invalid_arg
               (symbol
                 (msg,symbol(cst_in_format,symbol(escaped$1(str),cst$87))));
            switch$0 = 1}
          if(! switch$0)var _g0_=[1,exc];
          var _g1_=_g0_}
        if(0 === _g1_[0]){var args=_g1_[1];return apply(f,args)}
        var exc=_g1_[1];
        return caml_call2(ef,ib,exc)}
      return take_format_readers(k,fmt)}
    function bscanf(ib,fmt){return kscanf(ib,scanf_bad_input,fmt)}
    function ksscanf(s,ef,fmt){return kscanf(from_string$1(s),ef,fmt)}
    function sscanf(s,fmt)
     {return kscanf(from_string$1(s),scanf_bad_input,fmt)}
    function scanf(fmt){return kscanf(stdib,scanf_bad_input,fmt)}
    function bscanf_format(ib,format,f)
     {scan_caml_string(max_int,ib);
      var str=token_string(ib);
      try
       {var _gZ_=format_of_string_format(str,format),fmt=_gZ_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] !== Failure)throw exn;
        var msg=exn[2],fmt=bad_input(msg)}
      return caml_call1(f,fmt)}
    function sscanf_format(s,format,f)
     {return bscanf_format(from_string$1(s),format,f)}
    function format_from_string(s,fmt)
     {function _gY_(x){return x}
      return sscanf_format
              (symbol(cst$89,symbol(escaped$1(s),cst$88)),fmt,_gY_)}
    function unescaped(s)
     {function _gX_(x){return x}
      return caml_call1(sscanf(symbol(cst$91,symbol(s,cst$90)),_co_),_gX_)}
    function kfscanf(ic,ef,fmt){return kscanf(memo_from_channel(ic),ef,fmt)}
    function fscanf(ic,fmt)
     {return kscanf(memo_from_channel(ic),scanf_bad_input,fmt)}
    var
     Stdlib_scanf=
      [0,
       [0,
        stdib,
        from_file,
        from_file_bin,
        close_in$0,
        from_file,
        from_file_bin,
        from_string$1,
        from_function$0,
        from_channel$0,
        end_of_input,
        beginning_of_input,
        name_of_input,
        stdib],
       Scan_failure,
       bscanf,
       sscanf,
       scanf,
       kscanf,
       ksscanf,
       bscanf_format,
       sscanf_format,
       format_from_string,
       unescaped,
       fscanf,
       kfscanf];
    caml_register_global(789,Stdlib_scanf,"Stdlib__scanf");
    var register=caml_register_named_value;
    function register_exception(name,exn)
     {var slot=caml_obj_tag(exn) === 248?exn:exn[1];
      return caml_register_named_value(name,slot)}
    var Stdlib_callback=[0,register,register_exception];
    caml_register_global(790,Stdlib_callback,"Stdlib__callback");
    function copy$7(o){var o$0=o.slice();return caml_set_oo_id(o$0)}
    var params$0=[0,1,1,1,3,16],initial_object_size=2,dummy_item=0;
    function public_method_label(s)
     {var accu=[0,0],_gU_=caml_ml_string_length(s) - 1 | 0,_gT_=0;
      if(! (_gU_ < 0))
       {var i=_gT_;
        for(;;)
         {var _gV_=caml_string_get(s,i);
          accu[1] = (223 * accu[1] | 0) + _gV_ | 0;
          var _gW_=i + 1 | 0;
          if(_gU_ !== i){var i=_gW_;continue}
          break}}
      accu[1] = accu[1] & 2147483647;
      var tag=1073741823 < accu[1]?accu[1] + 2147483648 | 0:accu[1];
      return tag}
    var
     compare$11=caml_string_compare,
     Vars=caml_call1(Stdlib_map[1],[0,compare$11]),
     compare$12=caml_string_compare,
     Meths=caml_call1(Stdlib_map[1],[0,compare$12]),
     compare$13=caml_int_compare,
     Labs=caml_call1(Stdlib_map[1],[0,compare$13]),
     dummy_table=[0,0,[0,dummy_item],Meths[1],Labs[1],0,0,Vars[1],0],
     table_count=[0,0],
     dummy_met=caml_obj_block(0,0);
    function fit_size(n){return 2 < n?fit_size((n + 1 | 0) / 2 | 0) * 2 | 0:n}
    function new_table(pub_labels)
     {table_count[1]++;
      var
       len=pub_labels.length - 1,
       methods=caml_make_vect((len * 2 | 0) + 2 | 0,dummy_met);
      caml_check_bound(methods,0)[1] = len;
      var _gN_=((fit_size(len) * 32 | 0) / 8 | 0) - 1 | 0;
      caml_check_bound(methods,1)[2] = _gN_;
      var _gP_=len - 1 | 0,_gO_=0;
      if(! (_gP_ < 0))
       {var i=_gO_;
        for(;;)
         {var
           _gR_=(i * 2 | 0) + 3 | 0,
           _gQ_=caml_check_bound(pub_labels,i)[1 + i];
          caml_check_bound(methods,_gR_)[1 + _gR_] = _gQ_;
          var _gS_=i + 1 | 0;
          if(_gP_ !== i){var i=_gS_;continue}
          break}}
      return [0,initial_object_size,methods,Meths[1],Labs[1],0,0,Vars[1],0]}
    function resize$1(array,new_size)
     {var old_size=array[2].length - 1,_gL_=old_size < new_size?1:0;
      if(_gL_)
       {var new_buck=caml_make_vect(new_size,dummy_met);
        blit$1(array[2],0,new_buck,0,old_size);
        array[2] = new_buck;
        var _gM_=0}
      else
       var _gM_=_gL_;
      return _gM_}
    var method_count=[0,0],inst_var_count=[0,0];
    function new_method(table)
     {var index=table[2].length - 1;
      resize$1(table,index + 1 | 0);
      return index}
    function get_method_label(table,name)
     {try
       {var _gJ_=caml_call2(Meths[27],name,table[3]);return _gJ_}
      catch(_gK_)
       {_gK_ = caml_wrap_exception(_gK_);
        if(_gK_ === Not_found)
         {var label=new_method(table);
          table[3] = caml_call3(Meths[4],name,label,table[3]);
          table[4] = caml_call3(Labs[4],label,1,table[4]);
          return label}
        throw _gK_}}
    function get_method_labels(table,names)
     {return map$5(function(_gI_){return get_method_label(table,_gI_)},names)}
    function set_method(table,label,element)
     {method_count[1]++;
      return caml_call2(Labs[27],label,table[4])
              ?(resize$1(table,label + 1 | 0),
                caml_check_bound(table[2],label)[1 + label]
                =
                element,
                0)
              :(table[6] = [0,[0,label,element],table[6]],0)}
    function get_method(table,label)
     {try
       {var _gG_=assoc(label,table[6]);return _gG_}
      catch(_gH_)
       {_gH_ = caml_wrap_exception(_gH_);
        if(_gH_ === Not_found)
         return caml_check_bound(table[2],label)[1 + label];
        throw _gH_}}
    function to_list$3(arr){return 0 === arr?0:to_list$1(arr)}
    function narrow(table,vars,virt_meths,concr_meths)
     {var
       vars$0=to_list$3(vars),
       virt_meths$0=to_list$3(virt_meths),
       concr_meths$0=to_list$3(concr_meths),
       virt_meth_labs=
        map$2
         (function(_gF_){return get_method_label(table,_gF_)},virt_meths$0),
       concr_meth_labs=
        map$2
         (function(_gE_){return get_method_label(table,_gE_)},concr_meths$0);
      table[5]
      =
      [0,
       [0,table[3],table[4],table[6],table[7],virt_meth_labs,vars$0],
       table[5]];
      var _gv_=Vars[1],_gw_=table[7];
      function _gx_(lab,info,tvars)
       {return mem(lab,vars$0)?caml_call3(Vars[4],lab,info,tvars):tvars}
      table[7] = caml_call3(Vars[13],_gx_,_gw_,_gv_);
      var by_name=[0,Meths[1]],by_label=[0,Labs[1]];
      iter2
       (function(met,label)
         {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]);
          var _gA_=by_label[1];
          try
           {var _gC_=caml_call2(Labs[27],label,table[4]),_gB_=_gC_}
          catch(_gD_)
           {_gD_ = caml_wrap_exception(_gD_);
            if(_gD_ !== Not_found)throw _gD_;
            var _gB_=1}
          by_label[1] = caml_call3(Labs[4],label,_gB_,_gA_);
          return 0},
        concr_meths$0,
        concr_meth_labs);
      iter2
       (function(met,label)
         {by_name[1] = caml_call3(Meths[4],met,label,by_name[1]);
          by_label[1] = caml_call3(Labs[4],label,0,by_label[1]);
          return 0},
        virt_meths$0,
        virt_meth_labs);
      table[3] = by_name[1];
      table[4] = by_label[1];
      var _gy_=0,_gz_=table[6];
      table[6]
      =
      fold_right
       (function(met,hm)
         {var lab=met[1];return mem(lab,virt_meth_labs)?hm:[0,met,hm]},
        _gz_,
        _gy_);
      return 0}
    function widen(table)
     {var
       match=hd(table[5]),
       vars=match[6],
       virt_meths=match[5],
       saved_vars=match[4],
       saved_hidden_meths=match[3],
       by_label=match[2],
       by_name=match[1];
      table[5] = tl(table[5]);
      table[7]
      =
      fold_left$0
       (function(s,v)
         {var _gu_=caml_call2(Vars[27],v,table[7]);
          return caml_call3(Vars[4],v,_gu_,s)},
        saved_vars,
        vars);
      table[3] = by_name;
      table[4] = by_label;
      var _gt_=table[6];
      table[6]
      =
      fold_right
       (function(met,hm)
         {var lab=met[1];return mem(lab,virt_meths)?hm:[0,met,hm]},
        _gt_,
        saved_hidden_meths);
      return 0}
    function new_slot(table)
     {var index=table[1];table[1] = index + 1 | 0;return index}
    function new_variable(table,name)
     {try
       {var _gr_=caml_call2(Vars[27],name,table[7]);return _gr_}
      catch(_gs_)
       {_gs_ = caml_wrap_exception(_gs_);
        if(_gs_ === Not_found)
         {var index=new_slot(table);
          if(caml_string_notequal(name,cst$92))
           table[7] = caml_call3(Vars[4],name,index,table[7]);
          return index}
        throw _gs_}}
    function to_array(arr){return caml_equal(arr,0)?[0]:arr}
    function new_methods_variables(table,meths,vals)
     {var
       meths$0=to_array(meths),
       nmeths=meths$0.length - 1,
       nvals=vals.length - 1,
       res=caml_make_vect(nmeths + nvals | 0,0),
       _gj_=nmeths - 1 | 0,
       _gi_=0;
      if(! (_gj_ < 0))
       {var i$0=_gi_;
        for(;;)
         {var
           _gp_=
            get_method_label(table,caml_check_bound(meths$0,i$0)[1 + i$0]);
          caml_check_bound(res,i$0)[1 + i$0] = _gp_;
          var _gq_=i$0 + 1 | 0;
          if(_gj_ !== i$0){var i$0=_gq_;continue}
          break}}
      var _gl_=nvals - 1 | 0,_gk_=0;
      if(! (_gl_ < 0))
       {var i=_gk_;
        for(;;)
         {var
           _gn_=i + nmeths | 0,
           _gm_=new_variable(table,caml_check_bound(vals,i)[1 + i]);
          caml_check_bound(res,_gn_)[1 + _gn_] = _gm_;
          var _go_=i + 1 | 0;
          if(_gl_ !== i){var i=_go_;continue}
          break}}
      return res}
    function get_variable(table,name)
     {try
       {var _gg_=caml_call2(Vars[27],name,table[7]);return _gg_}
      catch(_gh_)
       {_gh_ = caml_wrap_exception(_gh_);
        if(_gh_ === Not_found)throw [0,Assert_failure,_cp_];
        throw _gh_}}
    function get_variables(table,names)
     {return map$5(function(_gf_){return get_variable(table,_gf_)},names)}
    function add_initializer(table,f){table[8] = [0,f,table[8]];return 0}
    function create_table(public_methods)
     {if(0 === public_methods)return new_table([0]);
      var
       tags=map$5(public_method_label,public_methods),
       table=new_table(tags);
      iteri$2
       (function(i,met)
         {var lab=(i * 2 | 0) + 2 | 0;
          table[3] = caml_call3(Meths[4],met,lab,table[3]);
          table[4] = caml_call3(Labs[4],lab,1,table[4]);
          return 0},
        public_methods);
      return table}
    function init_class(table)
     {inst_var_count[1] = (inst_var_count[1] + table[1] | 0) - 1 | 0;
      table[8] = rev(table[8]);
      return resize$1
              (table,
               3 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0)}
    function inherits(cla,vals,virt_meths,concr_meths,param,top)
     {var env=param[4],super$0=param[2];
      narrow(cla,vals,virt_meths,concr_meths);
      var init=top?caml_call2(super$0,cla,env):caml_call1(super$0,cla);
      widen(cla);
      var
       _ga_=0,
       _gb_=to_array(concr_meths),
       _gc_=
        [0,
         map$5
          (function(nm){return get_method(cla,get_method_label(cla,nm))},_gb_),
         _ga_],
       _gd_=to_array(vals);
      return caml_array_concat
              ([0,
                [0,init],
                [0,
                 map$5(function(_ge_){return get_variable(cla,_ge_)},_gd_),
                 _gc_]])}
    function make_class(pub_meths,class_init)
     {var table=create_table(pub_meths),env_init=caml_call1(class_init,table);
      init_class(table);
      return [0,caml_call1(env_init,0),class_init,env_init,0]}
    function make_class_store(pub_meths,class_init,init_table)
     {var table=create_table(pub_meths),env_init=caml_call1(class_init,table);
      init_class(table);
      init_table[2] = class_init;
      init_table[1] = env_init;
      return 0}
    function dummy_class(loc)
     {function undef(param){throw [0,Undefined_recursive_module,loc]}
      return [0,undef,undef,undef,0]}
    function create_object(table)
     {var obj=caml_obj_block(248,table[1]);
      obj[1] = table[2];
      return caml_set_oo_id(obj)}
    function create_object_opt(obj_0,table)
     {if(obj_0)return obj_0;
      var obj=caml_obj_block(248,table[1]);
      obj[1] = table[2];
      return caml_set_oo_id(obj)}
    function iter_f(obj,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],f=param$0[1];
          caml_call1(f,obj);
          var param$0=l;
          continue}
        return 0}}
    function run_initializers(obj,table)
     {var inits=table[8],_f$_=0 !== inits?1:0;
      return _f$_?iter_f(obj,inits):_f$_}
    function run_initializers_opt(obj_0,obj,table)
     {if(obj_0)return obj;
      var inits=table[8];
      if(0 !== inits)iter_f(obj,inits);
      return obj}
    function create_object_and_run_initiali(obj_0,table)
     {if(obj_0)return obj_0;
      var obj=create_object(table);
      run_initializers(obj,table);
      return obj}
    function get_data$0(param)
     {if(param)return param[2];throw [0,Assert_failure,_ct_]}
    function build_path(n,keys,tables)
     {var res=[0,0,0,0],r=[0,res],_f7_=0;
      if(! (n < 0))
       {var i=_f7_;
        for(;;)
         {var _f9_=r[1];
          r[1] = [0,caml_check_bound(keys,i)[1 + i],_f9_,0];
          var _f__=i + 1 | 0;
          if(n !== i){var i=_f__;continue}
          break}}
      var _f8_=r[1];
      if(tables){tables[2] = _f8_;return res}
      throw [0,Assert_failure,_cq_]}
    function lookup_tables(root,keys)
     {var tables$2=get_data$0(root);
      if(tables$2)
       {var i$1=keys.length - 1 - 1 | 0,i=i$1,tables=tables$2;
        a:
        for(;;)
         {if(0 <= i)
           {var key=caml_check_bound(keys,i)[1 + i],tables$0=tables;
            for(;;)
             {if(tables$0)
               {if(tables$0[1] === key)
                 {var tables$1=get_data$0(tables$0);
                  if(tables$1)
                   {var i$0=i - 1 | 0,i=i$0,tables=tables$1;continue a}
                  throw [0,Assert_failure,_cv_]}
                if(tables$0)
                 {var _f6_=tables$0[3];
                  if(_f6_){var tables$0=_f6_;continue}
                  var v=[0,key,0,0];
                  if(tables$0)
                   {tables$0[3] = v;return build_path(i - 1 | 0,keys,v)}
                  throw [0,Assert_failure,_cr_]}
                throw [0,Assert_failure,_cu_]}
              throw [0,Assert_failure,_cs_]}}
          return tables}}
      return build_path(keys.length - 1 - 1 | 0,keys,root)}
    function new_cache(table)
     {var n=new_method(table),switch$0=0;
      if
       (0
        !==
        (n % 2 | 0)
        &&
        !
        ((2 + ((caml_check_bound(table[2],1)[2] * 16 | 0) / 32 | 0) | 0) < n))
       {var n$0=new_method(table);switch$0 = 1}
      if(! switch$0)var n$0=n;
      caml_check_bound(table[2],n$0)[1 + n$0] = 0;
      return n$0}
    function set_methods(table,methods)
     {var len=methods.length - 1,i=[0,0];
      for(;;)
       {if(i[1] < len)
         {var
           _f0_=i[1],
           label=caml_check_bound(methods,_f0_)[1 + _f0_],
           next=
            function(param)
             {i[1]++;
              var _f5_=i[1];
              return caml_check_bound(methods,_f5_)[1 + _f5_]},
           clo=next(0);
          if(typeof clo === "number")
           switch(clo)
            {case 0:
              var
               x=next(0),
               clo$0=function(x){return function(obj){return x}}(x);
              break;
             case 1:
              var
               n=next(0),
               clo$0=function(n){return function(obj){return obj[1 + n]}}(n);
              break;
             case 2:
              var
               e=next(0),
               n$0=next(0),
               clo$0=
                function(e,n){return function(obj){return obj[1 + e][1 + n]}}
                 (e,n$0);
              break;
             case 3:
              var
               n$1=next(0),
               clo$0=
                function(n)
                  {return function(obj){return caml_call1(obj[1][1 + n],obj)}}
                 (n$1);
              break;
             case 4:
              var
               n$2=next(0),
               clo$0=
                function(n){return function(obj,x){obj[1 + n] = x;return 0}}
                 (n$2);
              break;
             case 5:
              var
               f=next(0),
               x$0=next(0),
               clo$0=
                function(f,x){return function(obj){return caml_call1(f,x)}}
                 (f,x$0);
              break;
             case 6:
              var
               f$0=next(0),
               n$3=next(0),
               clo$0=
                function(f,n)
                  {return function(obj){return caml_call1(f,obj[1 + n])}}
                 (f$0,n$3);
              break;
             case 7:
              var
               f$1=next(0),
               e$0=next(0),
               n$4=next(0),
               clo$0=
                function(f,e,n)
                  {return function(obj)
                    {return caml_call1(f,obj[1 + e][1 + n])}}
                 (f$1,e$0,n$4);
              break;
             case 8:
              var
               f$2=next(0),
               n$5=next(0),
               clo$0=
                function(f,n)
                  {return function(obj)
                    {return caml_call1(f,caml_call1(obj[1][1 + n],obj))}}
                 (f$2,n$5);
              break;
             case 9:
              var
               f$3=next(0),
               x$1=next(0),
               y=next(0),
               clo$0=
                function(f,x,y)
                  {return function(obj){return caml_call2(f,x,y)}}
                 (f$3,x$1,y);
              break;
             case 10:
              var
               f$4=next(0),
               x$2=next(0),
               n$6=next(0),
               clo$0=
                function(f,x,n)
                  {return function(obj){return caml_call2(f,x,obj[1 + n])}}
                 (f$4,x$2,n$6);
              break;
             case 11:
              var
               f$5=next(0),
               x$3=next(0),
               e$1=next(0),
               n$7=next(0),
               clo$0=
                function(f,x,e,n)
                  {return function(obj)
                    {return caml_call2(f,x,obj[1 + e][1 + n])}}
                 (f$5,x$3,e$1,n$7);
              break;
             case 12:
              var
               f$6=next(0),
               x$4=next(0),
               n$8=next(0),
               clo$0=
                function(f,x,n)
                  {return function(obj)
                    {return caml_call2(f,x,caml_call1(obj[1][1 + n],obj))}}
                 (f$6,x$4,n$8);
              break;
             case 13:
              var
               f$7=next(0),
               n$9=next(0),
               x$5=next(0),
               clo$0=
                function(f,n,x)
                  {return function(obj){return caml_call2(f,obj[1 + n],x)}}
                 (f$7,n$9,x$5);
              break;
             case 14:
              var
               f$8=next(0),
               e$2=next(0),
               n$10=next(0),
               x$6=next(0),
               clo$0=
                function(f,e,n,x)
                  {return function(obj)
                    {return caml_call2(f,obj[1 + e][1 + n],x)}}
                 (f$8,e$2,n$10,x$6);
              break;
             case 15:
              var
               f$9=next(0),
               n$11=next(0),
               x$7=next(0),
               clo$0=
                function(f,n,x)
                  {return function(obj)
                    {return caml_call2(f,caml_call1(obj[1][1 + n],obj),x)}}
                 (f$9,n$11,x$7);
              break;
             case 16:
              var
               n$12=next(0),
               x$8=next(0),
               clo$0=
                function(n,x)
                  {return function(obj)
                    {return caml_call2(obj[1][1 + n],obj,x)}}
                 (n$12,x$8);
              break;
             case 17:
              var
               n$13=next(0),
               m=next(0),
               clo$0=
                function(n,m)
                  {return function(obj)
                    {return caml_call2(obj[1][1 + n],obj,obj[1 + m])}}
                 (n$13,m);
              break;
             case 18:
              var
               n$14=next(0),
               e$3=next(0),
               m$0=next(0),
               clo$0=
                function(n,e,m)
                  {return function(obj)
                    {return caml_call2(obj[1][1 + n],obj,obj[1 + e][1 + m])}}
                 (n$14,e$3,m$0);
              break;
             case 19:
              var
               n$15=next(0),
               m$1=next(0),
               clo$0=
                function(n,m)
                  {return function(obj)
                    {var _f3_=caml_call1(obj[1][1 + m],obj);
                     return caml_call2(obj[1][1 + n],obj,_f3_)}}
                 (n$15,m$1);
              break;
             case 20:
              var
               m$2=next(0),
               x$9=next(0),
               c=new_cache(table),
               clo$0=
                function(m,x,c)
                  {return function(obj)
                    {return caml_call2(caml_get_public_method(x,m,0),x,c)}}
                 (m$2,x$9,c);
              break;
             case 21:
              var
               m$3=next(0),
               n$16=next(0),
               c$0=new_cache(table),
               clo$0=
                function(m,n,c)
                  {return function(obj)
                    {var _f2_=obj[1 + n];
                     return caml_call2(caml_get_public_method(_f2_,m,0),_f2_,c)}}
                 (m$3,n$16,c$0);
              break;
             case 22:
              var
               m$4=next(0),
               e$4=next(0),
               n$17=next(0),
               c$1=new_cache(table),
               clo$0=
                function(m,e,n,c)
                  {return function(obj)
                    {var _f1_=obj[1 + e][1 + n];
                     return caml_call2(caml_get_public_method(_f1_,m,0),_f1_,c)}}
                 (m$4,e$4,n$17,c$1);
              break;
             default:
              var
               m$5=next(0),
               n$18=next(0),
               c$2=new_cache(table),
               clo$0=
                function(m,n,c)
                  {return function(obj)
                    {var _f4_=caml_call1(obj[1][1 + n],obj);
                     return caml_call2(caml_get_public_method(_f4_,m,0),_f4_,c)}}
                 (m$5,n$18,c$2)}
          else
           var clo$0=clo;
          set_method(table,label,clo$0);
          i[1]++;
          continue}
        return 0}}
    function stats$0(param)
     {return [0,table_count[1],method_count[1],inst_var_count[1]]}
    var
     CamlinternalOO=
      [0,
       public_method_label,
       new_method,
       new_variable,
       new_methods_variables,
       get_variable,
       get_variables,
       get_method_label,
       get_method_labels,
       get_method,
       set_method,
       set_methods,
       narrow,
       widen,
       add_initializer,
       dummy_table,
       create_table,
       init_class,
       inherits,
       make_class,
       make_class_store,
       dummy_class,
       copy$7,
       create_object,
       create_object_opt,
       run_initializers,
       run_initializers_opt,
       create_object_and_run_initiali,
       lookup_tables,
       params$0,
       stats$0];
    caml_register_global(791,CamlinternalOO,"CamlinternalOO");
    var Stdlib_oo=[0,copy$7,public_method_label,public_method_label];
    caml_register_global(792,Stdlib_oo,"Stdlib__oo");
    var
     update_mod=runtime.caml_CamlinternalMod_update_mod,
     init_mod=runtime.caml_CamlinternalMod_init_mod,
     CamlinternalMod=[0,init_mod,update_mod];
    caml_register_global(793,CamlinternalMod,"CamlinternalMod");
    var
     initial_buffer=caml_create_bytes(32),
     buffer=[0,initial_buffer],
     bufpos=[0,0];
    function reset_buffer(param)
     {buffer[1] = initial_buffer;bufpos[1] = 0;return 0}
    function store(c)
     {if(caml_ml_bytes_length(buffer[1]) <= bufpos[1])
       {var newbuffer=caml_create_bytes(2 * bufpos[1] | 0);
        blit(buffer[1],0,newbuffer,0,bufpos[1]);
        buffer[1] = newbuffer}
      caml_bytes_set(buffer[1],bufpos[1],c);
      bufpos[1]++;
      return 0}
    function get_string(param)
     {var s=sub_string(buffer[1],0,bufpos[1]);
      buffer[1] = initial_buffer;
      return s}
    function make_lexer(keywords)
     {var kwd_table=caml_call2(Stdlib_hashtbl[1],0,17);
      iter$2
       (function(s){return caml_call3(Stdlib_hashtbl[5],kwd_table,s,[0,s])},
        keywords);
      function ident_or_keyword(id)
       {try
         {var _fY_=caml_call2(Stdlib_hashtbl[6],kwd_table,id);return _fY_}
        catch(_fZ_)
         {_fZ_ = caml_wrap_exception(_fZ_);
          if(_fZ_ === Not_found)return [1,id];
          throw _fZ_}}
      function keyword_or_error(c)
       {var s=make$0(1,c);
        try
         {var _fW_=caml_call2(Stdlib_hashtbl[6],kwd_table,s);return _fW_}
        catch(_fX_)
         {_fX_ = caml_wrap_exception(_fX_);
          if(_fX_ === Not_found)
           throw [0,Error,symbol(cst_Illegal_character,s)];
          throw _fX_}}
      function end_exponent_part(strm)
       {for(;;)
         {var match=peek$0(strm);
          if(match)
           {var _fV_=match[1],switcher=_fV_ - 48 | 0;
            if(! (9 < switcher >>> 0)){junk(strm);store(_fV_);continue}}
          return [0,[3,caml_float_of_string(get_string(0))]]}}
      function exponent_part(strm)
       {var match=peek$0(strm);
        if(match)
         {var _fU_=match[1],switch$0=0;
          if(43 !== _fU_ && 45 !== _fU_)switch$0 = 1;
          if(! switch$0)
           {junk(strm);store(_fU_);return end_exponent_part(strm)}}
        return end_exponent_part(strm)}
      function number(s)
       {for(;;)
         {var match=peek$0(s);
          if(match)
           {var _fR_=match[1];
            if(58 <= _fR_)
             {var switch$0=0;
              if(69 === _fR_ || 101 === _fR_)switch$0 = 1;
              if(switch$0){junk(s);store(69);return exponent_part(s)}}
            else
             {if(46 === _fR_)
               {junk(s);
                store(46);
                for(;;)
                 {var match$0=peek$0(s);
                  if(match$0)
                   {var _fS_=match$0[1],_fT_=_fS_ - 69 | 0;
                    if(32 < _fT_ >>> 0)
                     {var switcher=_fT_ + 21 | 0;
                      if(! (9 < switcher >>> 0)){junk(s);store(_fS_);continue}}
                    else
                     {var switcher$0=_fT_ - 1 | 0;
                      if(30 < switcher$0 >>> 0)
                       {junk(s);store(69);return exponent_part(s)}}}
                  return [0,[3,caml_float_of_string(get_string(0))]]}}
              if(48 <= _fR_){junk(s);store(_fR_);continue}}}
          return [0,[2,caml_int_of_string(get_string(0))]]}}
      function ident2(strm)
       {for(;;)
         {var match=peek$0(strm);
          if(match)
           {var _fP_=match[1],switch$0=0;
            if(94 <= _fP_)
             {var _fQ_=_fP_ - 95 | 0;
              if(30 < _fQ_ >>> 0)
               {if(! (32 <= _fQ_))switch$0 = 1}
              else
               if(29 === _fQ_)switch$0 = 1}
            else
             if(65 <= _fP_)
              {if(92 === _fP_)switch$0 = 1}
             else
              if(33 <= _fP_)
               switch(_fP_ - 33 | 0)
                {case 0:
                 case 2:
                 case 3:
                 case 4:
                 case 5:
                 case 9:
                 case 10:
                 case 12:
                 case 14:
                 case 25:
                 case 27:
                 case 28:
                 case 29:
                 case 30:
                 case 31:switch$0 = 1;break
                 }
            if(switch$0){junk(strm);store(_fP_);continue}}
          return [0,ident_or_keyword(get_string(0))]}}
      function neg_number(s)
       {var match=peek$0(s);
        if(match)
         {var _fO_=match[1],switcher=_fO_ - 48 | 0;
          if(! (9 < switcher >>> 0))
           {junk(s);reset_buffer(0);store(45);store(_fO_);return number(s)}}
        reset_buffer(0);
        store(45);
        return ident2(s)}
      function ident(strm)
       {for(;;)
         {var match=peek$0(strm);
          if(match)
           {var _fM_=match[1],switch$0=0;
            if(91 <= _fM_)
             {var _fN_=_fM_ - 95 | 0;
              if(27 < _fN_ >>> 0)
               {if(97 <= _fN_)switch$0 = 1}
              else
               if(1 !== _fN_)switch$0 = 1}
            else
             if(48 <= _fM_)
              {if(6 < (_fM_ - 58 | 0) >>> 0)switch$0 = 1}
             else
              if(39 === _fM_)switch$0 = 1;
            if(switch$0){junk(strm);store(_fM_);continue}}
          return [0,ident_or_keyword(get_string(0))]}}
      function next_token$0(counter,strm)
       {for(;;)
         {var match=peek$0(strm);
          if(match)
           {var _fC_=match[1],switch$0=0;
            if(124 <= _fC_)
             {if(127 <= _fC_)
               {if(192 <= _fC_)switch$0 = 1}
              else
               if(125 !== _fC_)switch$0 = 2}
            else
             {var _fD_=_fC_ - 65 | 0;
              if(57 < _fD_ >>> 0)
               {if(! (58 <= _fD_))
                 {var switcher=_fD_ + 65 | 0;
                  switch(switcher)
                   {case 34:
                     junk(strm);
                     reset_buffer(0);
                     for(;;)
                      {var match$1=peek$0(strm);
                       if(match$1)
                        {var _fF_=match$1[1];
                         if(34 === _fF_){junk(strm);return [0,[4,get_string(0)]]}
                         if(92 === _fF_)
                          {junk(strm);
                           try
                            {var c$0=escape(strm)}
                           catch(_fL_)
                            {_fL_ = caml_wrap_exception(_fL_);
                             if(_fL_ === Failure$0)throw [0,Error,cst$95];
                             throw _fL_;
                             var _fI_=_fL_}
                           store(c$0);
                           continue}
                         junk(strm);
                         store(_fF_);
                         continue}
                       throw Failure$0}
                    case 39:
                     junk(strm);
                     try
                      {var match$2=peek$0(strm);
                       if(! match$2)throw Failure$0;
                       var _fG_=match$2[1];
                       if(92 === _fG_)
                        {junk(strm);
                         try
                          {var _fH_=escape(strm)}
                         catch(_fK_)
                          {_fK_ = caml_wrap_exception(_fK_);
                           if(_fK_ === Failure$0)throw [0,Error,cst$96];
                           throw _fK_}
                         var c=_fH_}
                       else
                        {junk(strm);var c=_fG_}}
                     catch(_fJ_)
                      {_fJ_ = caml_wrap_exception(_fJ_);
                       if(_fJ_ === Failure$0)throw [0,Error,cst$93];
                       throw _fJ_}
                     var match$0=peek$0(strm);
                     if(match$0 && 39 === match$0[1])
                      {junk(strm);return [0,[5,c]]}
                     throw [0,Error,cst$94];
                    case 40:
                     junk(strm);
                     if(counter < 50)
                      {var counter$0=counter + 1 | 0;
                       return maybe_comment(counter$0,strm)}
                     return caml_trampoline_return(maybe_comment,[0,strm]);
                    case 45:junk(strm);return neg_number(strm);
                    case 9:
                    case 10:
                    case 12:
                    case 13:
                    case 26:
                    case 32:junk(strm);continue;
                    case 48:
                    case 49:
                    case 50:
                    case 51:
                    case 52:
                    case 53:
                    case 54:
                    case 55:
                    case 56:
                    case 57:
                     junk(strm);reset_buffer(0);store(_fC_);return number(strm);
                    case 33:
                    case 35:
                    case 36:
                    case 37:
                    case 38:
                    case 42:
                    case 43:
                    case 47:
                    case 58:
                    case 60:
                    case 61:
                    case 62:
                    case 63:
                    case 64:switch$0 = 2;break
                    }}}
              else
               {var _fE_=_fD_ - 26 | 0;
                if(5 < _fE_ >>> 0)
                 switch$0 = 1;
                else
                 switch(_fE_)
                  {case 4:switch$0 = 1;break;case 1:case 3:switch$0 = 2;break}}}
            switch(switch$0)
             {case 0:junk(strm);return [0,keyword_or_error(_fC_)];
              case 1:
               junk(strm);reset_buffer(0);store(_fC_);return ident(strm);
              default:
               junk(strm);reset_buffer(0);store(_fC_);return ident2(strm)}}
          return 0}}
      function maybe_comment(counter,strm)
       {var match=peek$0(strm);
        if(match && 42 === match[1])
         {junk(strm);
          comment(strm);
          if(counter < 50)
           {var counter$0=counter + 1 | 0;return next_token$0(counter$0,strm)}
          return caml_trampoline_return(next_token$0,[0,strm])}
        return [0,keyword_or_error(40)]}
      function next_token(strm){return caml_trampoline(next_token$0(0,strm))}
      function escape(strm)
       {var match=peek$0(strm);
        if(match)
         {var _fz_=match[1];
          if(58 <= _fz_)
           {var switcher=_fz_ - 110 | 0;
            if(! (6 < switcher >>> 0))
             switch(switcher)
              {case 0:junk(strm);return 10;
               case 4:junk(strm);return 13;
               case 6:junk(strm);return 9
               }}
          else
           if(48 <= _fz_)
            {junk(strm);
             var match$0=peek$0(strm);
             if(match$0)
              {var _fA_=match$0[1],switcher$0=_fA_ - 48 | 0;
               if(! (9 < switcher$0 >>> 0))
                {junk(strm);
                 var match$1=peek$0(strm);
                 if(match$1)
                  {var _fB_=match$1[1],switcher$1=_fB_ - 48 | 0;
                   if(! (9 < switcher$1 >>> 0))
                    {junk(strm);
                     return chr
                             ((((_fz_ - 48 | 0) * 100 | 0)
                               +
                               ((_fA_ - 48 | 0) * 10 | 0)
                               |
                               0)
                              +
                              (_fB_ - 48 | 0)
                              |
                              0)}}
                 throw [0,Error,cst$98]}}
             throw [0,Error,cst$97]}
          junk(strm);
          return _fz_}
        throw Failure$0}
      function comment(strm)
       {a:
        for(;;)
         {var match=peek$0(strm);
          if(match)
           {var switcher=match[1] - 40 | 0;
            if(! (2 < switcher >>> 0))
             switch(switcher)
              {case 0:
                junk(strm);
                var match$0=peek$0(strm);
                if(match$0)
                 {if(42 === match$0[1]){junk(strm);comment(strm);continue}
                  junk(strm);
                  continue}
                throw Failure$0;
               case 1:break;
               default:
                junk(strm);
                for(;;)
                 {var match$1=peek$0(strm);
                  if(match$1)
                   {var _fy_=match$1[1];
                    if(41 === _fy_){junk(strm);return 0}
                    if(42 === _fy_){junk(strm);continue}
                    junk(strm);
                    continue a}
                  throw Failure$0}}
            junk(strm);
            continue}
          throw Failure$0}}
      return function(input)
       {return from(function(count){return next_token(input)})}}
    var Stdlib_genlex=[0,make_lexer];
    caml_register_global(794,Stdlib_genlex,"Stdlib__genlex");
    function MakeSeeded$0(H)
     {var prng=[246,function(_fx_){return caml_call1(_b2_[2],0)}];
      function create(opt,initial_size)
       {if(opt)
         var sth=opt[1],random=sth;
        else
         var random=caml_call1(Stdlib_hashtbl[17],0);
        var x=16;
        for(;;)
         {if(! (initial_size <= x) && ! (max_array_length < (x * 2 | 0)))
           {var x$0=x * 2 | 0,x=x$0;continue}
          if(random)
           var
            _fv_=caml_obj_tag(prng),
            _fw_=250 === _fv_?prng[1]:246 === _fv_?force_lazy_block(prng):prng,
            seed=caml_call1(_b2_[4],_fw_);
          else
           var seed=0;
          return [0,0,caml_make_vect(x,0),seed,x]}}
      function clear(h)
       {h[1] = 0;
        var len=h[2].length - 1,_ft_=len - 1 | 0,_fs_=0;
        if(! (_ft_ < 0))
         {var i=_fs_;
          for(;;)
           {caml_check_bound(h[2],i)[1 + i] = 0;
            var _fu_=i + 1 | 0;
            if(_ft_ !== i){var i=_fu_;continue}
            break}}
        return 0}
      function reset(h)
       {var len=h[2].length - 1;
        return len === h[4]
                ?clear(h)
                :(h[1] = 0,h[2] = caml_make_vect(h[4],0),0)}
      function copy(init)
       {var _fp_=init[4],_fq_=init[3],_fr_=copy$1(init[2]);
        return [0,init[1],_fr_,_fq_,_fp_]}
      function key_index(h,hkey){return hkey & (h[2].length - 1 - 1 | 0)}
      function clean(h)
       {function do_bucket(param)
         {var param$0=param;
          for(;;)
           {if(param$0)
             {var hkey=param$0[1],rest=param$0[3],c=param$0[2];
              if(caml_call1(H[7],c))
               {var rest$0=param$0[3],c$0=param$0[2];
                return [0,hkey,c$0,do_bucket(rest$0)]}
              h[1] = h[1] - 1 | 0;
              var param$0=rest;
              continue}
            return 0}}
        var d=h[2],_fm_=d.length - 1 - 1 | 0,_fl_=0;
        if(! (_fm_ < 0))
         {var i=_fl_;
          for(;;)
           {var _fn_=do_bucket(caml_check_bound(d,i)[1 + i]);
            caml_check_bound(d,i)[1 + i] = _fn_;
            var _fo_=i + 1 | 0;
            if(_fm_ !== i){var i=_fo_;continue}
            break}}
        return 0}
      function resize(h)
       {var odata=h[2],osize=odata.length - 1,nsize=osize * 2 | 0;
        clean(h);
        var
         _ff_=nsize < max_array_length?1:0,
         _fg_=_ff_?(osize >>> 1 | 0) <= h[1]?1:0:_ff_;
        if(_fg_)
         {var ndata=caml_make_vect(nsize,0);
          h[2] = ndata;
          var
           insert_bucket=
            function(param)
             {if(param)
               {var rest=param[3],data=param[2],hkey=param[1];
                insert_bucket(rest);
                var nidx=key_index(h,hkey);
                ndata[1 + nidx]
                =
                [0,hkey,data,caml_check_bound(ndata,nidx)[1 + nidx]];
                return 0}
              return 0},
           _fi_=osize - 1 | 0,
           _fh_=0;
          if(! (_fi_ < 0))
           {var i=_fh_;
            for(;;)
             {insert_bucket(caml_check_bound(odata,i)[1 + i]);
              var _fk_=i + 1 | 0;
              if(_fi_ !== i){var i=_fk_;continue}
              break}}
          var _fj_=0}
        else
         var _fj_=_fg_;
        return _fj_}
      function add(h,key,info)
       {var
         hkey=caml_call2(H[2],h[3],key),
         i=key_index(h,hkey),
         container=caml_call2(H[1],key,info),
         bucket=[0,hkey,container,caml_check_bound(h[2],i)[1 + i]];
        caml_check_bound(h[2],i)[1 + i] = bucket;
        h[1] = h[1] + 1 | 0;
        var _fe_=h[2].length - 1 << 1 < h[1]?1:0;
        return _fe_?resize(h):_fe_}
      function remove(h,key)
       {var hkey=caml_call2(H[2],h[3],key);
        function remove_bucket(param)
         {var param$0=param;
          for(;;)
           {if(param$0)
             {var hk=param$0[1],next=param$0[3],c=param$0[2];
              if(hkey === hk)
               {var match=caml_call2(H[3],c,key);
                switch(match)
                 {case 0:h[1] = h[1] - 1 | 0;return next;
                  case 1:return [0,hk,c,remove_bucket(next)];
                  default:h[1] = h[1] - 1 | 0;var param$0=next;continue}}
              var next$0=param$0[3],c$0=param$0[2];
              return [0,hk,c$0,remove_bucket(next$0)]}
            return 0}}
        var
         i=key_index(h,hkey),
         _fd_=remove_bucket(caml_check_bound(h[2],i)[1 + i]);
        caml_check_bound(h[2],i)[1 + i] = _fd_;
        return 0}
      function find(h,key)
       {var
         hkey=caml_call2(H[2],h[3],key),
         _fc_=key_index(h,hkey),
         param$1=caml_check_bound(h[2],_fc_)[1 + _fc_],
         param=param$1;
        for(;;)
         {if(param)
           {var hk=param[1],rest=param[3],c=param[2];
            if(hkey === hk)
             {var match=caml_call2(H[3],c,key);
              switch(match)
               {case 0:
                 var match$0=caml_call1(H[4],c);
                 if(match$0){var d=match$0[1];return d}
                 var param=rest;
                 continue;
                case 1:var param=rest;continue;
                default:var param=rest;continue}}
            var param$0=param[3],param=param$0;
            continue}
          throw Not_found}}
      function find_opt(h,key)
       {var
         hkey=caml_call2(H[2],h[3],key),
         _fb_=key_index(h,hkey),
         param$1=caml_check_bound(h[2],_fb_)[1 + _fb_],
         param=param$1;
        for(;;)
         {if(param)
           {var hk=param[1],rest=param[3],c=param[2];
            if(hkey === hk)
             {var match=caml_call2(H[3],c,key);
              switch(match)
               {case 0:
                 var d=caml_call1(H[4],c);
                 if(d)return d;
                 var param=rest;
                 continue;
                case 1:var param=rest;continue;
                default:var param=rest;continue}}
            var param$0=param[3],param=param$0;
            continue}
          return 0}}
      function find_all(h,key)
       {var hkey=caml_call2(H[2],h[3],key);
        function find_in_bucket(param)
         {var param$0=param;
          for(;;)
           {if(param$0)
             {var hk=param$0[1],rest=param$0[3],c=param$0[2];
              if(hkey === hk)
               {var match=caml_call2(H[3],c,key);
                switch(match)
                 {case 0:
                   var match$0=caml_call1(H[4],c);
                   if(match$0)
                    {var d=match$0[1];return [0,d,find_in_bucket(rest)]}
                   var param$0=rest;
                   continue;
                  case 1:var param$0=rest;continue;
                  default:var param$0=rest;continue}}
              var param$1=param$0[3],param$0=param$1;
              continue}
            return 0}}
        var _fa_=key_index(h,hkey);
        return find_in_bucket(caml_check_bound(h[2],_fa_)[1 + _fa_])}
      function replace(h,key,info)
       {var hkey=caml_call2(H[2],h[3],key);
        function replace_bucket(param)
         {var param$0=param;
          for(;;)
           {if(param$0)
             {var hk=param$0[1],next=param$0[3],c=param$0[2];
              if(hkey === hk)
               {var match=caml_call2(H[3],c,key);
                if(match){var param$0=next;continue}
                return caml_call3(H[6],c,key,info)}
              var param$1=param$0[3],param$0=param$1;
              continue}
            throw Not_found}}
        var i=key_index(h,hkey),l=caml_check_bound(h[2],i)[1 + i];
        try
         {var _e__=replace_bucket(l);return _e__}
        catch(_e$_)
         {_e$_ = caml_wrap_exception(_e$_);
          if(_e$_ === Not_found)
           {var container=caml_call2(H[1],key,info);
            caml_check_bound(h[2],i)[1 + i] = [0,hkey,container,l];
            h[1] = h[1] + 1 | 0;
            var _e9_=h[2].length - 1 << 1 < h[1]?1:0;
            return _e9_?resize(h):_e9_}
          throw _e$_}}
      function mem(h,key)
       {var
         hkey=caml_call2(H[2],h[3],key),
         _e8_=key_index(h,hkey),
         param$1=caml_check_bound(h[2],_e8_)[1 + _e8_],
         param=param$1;
        for(;;)
         {if(param)
           {var hk=param[1],rest=param[3],c=param[2];
            if(hk === hkey)
             {var match=caml_call2(H[3],c,key);
              if(match){var param=rest;continue}
              return 1}
            var param$0=param[3],param=param$0;
            continue}
          return 0}}
      function iter$0(f,h)
       {var d$0=h[2],_e6_=d$0.length - 1 - 1 | 0,_e5_=0;
        if(! (_e6_ < 0))
         {var i=_e5_;
          a:
          for(;;)
           {var param$0=caml_check_bound(d$0,i)[1 + i],param=param$0;
            for(;;)
             {if(param)
               {var
                 rest=param[3],
                 c=param[2],
                 match=caml_call1(H[5],c),
                 match$0=caml_call1(H[4],c),
                 switch$0=0;
                if(match && match$0)
                 {var d=match$0[1],k=match[1];caml_call2(f,k,d);switch$0 = 1}
                var param=rest;
                continue}
              var _e7_=i + 1 | 0;
              if(_e6_ !== i){var i=_e7_;continue a}
              break}
            break}}
        return 0}
      function fold(f,h,init)
       {var d$0=h[2],accu$1=[0,init],_e2_=d$0.length - 1 - 1 | 0,_e1_=0;
        if(! (_e2_ < 0))
         {var i=_e1_;
          a:
          for(;;)
           {var
             _e3_=accu$1[1],
             b$0=caml_check_bound(d$0,i)[1 + i],
             b=b$0,
             accu=_e3_;
            for(;;)
             {if(b)
               {var
                 rest=b[3],
                 c=b[2],
                 match=caml_call1(H[5],c),
                 match$0=caml_call1(H[4],c),
                 switch$0=0;
                if(match && match$0)
                 {var d=match$0[1],k=match[1],accu$0=caml_call3(f,k,d,accu);
                  switch$0 = 1}
                if(! switch$0)var accu$0=accu;
                var b=rest,accu=accu$0;
                continue}
              accu$1[1] = accu;
              var _e4_=i + 1 | 0;
              if(_e2_ !== i){var i=_e4_;continue a}
              break}
            break}}
        return accu$1[1]}
      function filter_map_inplace(f,h)
       {function do_bucket(param)
         {var param$0=param;
          for(;;)
           {if(param$0)
             {var
               rest=param$0[3],
               c=param$0[2],
               hk=param$0[1],
               match=caml_call1(H[5],c),
               match$0=caml_call1(H[4],c);
              if(match && match$0)
               {var d=match$0[1],k=match[1],match$1=caml_call2(f,k,d);
                if(match$1)
                 {var new_d=match$1[1];
                  caml_call3(H[6],c,k,new_d);
                  return [0,hk,c,do_bucket(rest)]}
                var param$0=rest;
                continue}
              var param$0=rest;
              continue}
            return 0}}
        var d=h[2],_eY_=d.length - 1 - 1 | 0,_eX_=0;
        if(! (_eY_ < 0))
         {var i=_eX_;
          for(;;)
           {var _eZ_=do_bucket(caml_check_bound(d,i)[1 + i]);
            caml_check_bound(d,i)[1 + i] = _eZ_;
            var _e0_=i + 1 | 0;
            if(_eY_ !== i){var i=_e0_;continue}
            break}}
        return 0}
      function length(h){return h[1]}
      function bucket_length(accu,param)
       {var accu$0=accu,param$0=param;
        for(;;)
         {if(param$0)
           {var
             param$1=param$0[3],
             accu$1=accu$0 + 1 | 0,
             accu$0=accu$1,
             param$0=param$1;
            continue}
          return accu$0}}
      function stats(h)
       {var
         _eU_=h[2],
         _eV_=0,
         mbl=
          fold_left$1
           (function(m,b){return max(m,bucket_length(0,b))},_eV_,_eU_),
         histo=caml_make_vect(mbl + 1 | 0,0),
         _eW_=h[2];
        iter$5
         (function(b)
           {var l=bucket_length(0,b);
            histo[1 + l] = caml_check_bound(histo,l)[1 + l] + 1 | 0;
            return 0},
          _eW_);
        return [0,h[1],h[2].length - 1,mbl,histo]}
      function bucket_length_alive(accu,param)
       {var accu$0=accu,param$0=param;
        for(;;)
         {if(param$0)
           {var rest=param$0[3],c=param$0[2];
            if(caml_call1(H[7],c))
             {var accu$1=accu$0 + 1 | 0,accu$0=accu$1,param$0=rest;continue}
            var param$1=param$0[3],param$0=param$1;
            continue}
          return accu$0}}
      function stats_alive(h)
       {var
         size=[0,0],
         _eR_=h[2],
         _eS_=0,
         mbl=
          fold_left$1
           (function(m,b){return max(m,bucket_length_alive(0,b))},_eS_,_eR_),
         histo=caml_make_vect(mbl + 1 | 0,0),
         _eT_=h[2];
        iter$5
         (function(b)
           {var l=bucket_length_alive(0,b);
            size[1] = size[1] + l | 0;
            histo[1 + l] = caml_check_bound(histo,l)[1 + l] + 1 | 0;
            return 0},
          _eT_);
        return [0,size[1],h[2].length - 1,mbl,histo]}
      function to_seq(tbl)
       {var tbl_data=tbl[2];
        function aux(i,buck,param)
         {var i$0=i,buck$0=buck;
          for(;;)
           {if(buck$0)
             {var
               next=buck$0[3],
               c=buck$0[2],
               match=caml_call1(H[5],c),
               match$0=caml_call1(H[4],c);
              if(match && match$0)
               {var data=match$0[1],key=match[1];
                return [0,
                        [0,key,data],
                        function(_eQ_){return aux(i$0,next,_eQ_)}]}
              var buck$0=next;
              continue}
            if(i$0 === tbl_data.length - 1)return 0;
            var
             buck$1=caml_check_bound(tbl_data,i$0)[1 + i$0],
             i$1=i$0 + 1 | 0,
             i$0=i$1,
             buck$0=buck$1;
            continue}}
        var _eN_=0,_eO_=0;
        return function(_eP_){return aux(_eO_,_eN_,_eP_)}}
      function to_seq_keys(m)
       {var _eJ_=to_seq(m);
        function _eK_(_eM_){return _eM_[1]}
        return function(_eL_){return map(_eK_,_eJ_,_eL_)}}
      function to_seq_values(m)
       {var _eF_=to_seq(m);
        function _eG_(_eI_){return _eI_[2]}
        return function(_eH_){return map(_eG_,_eF_,_eH_)}}
      function add_seq(tbl,i)
       {return iter
                (function(param)
                  {var v=param[2],k=param[1];return add(tbl,k,v)},
                 i)}
      function replace_seq(tbl,i)
       {return iter
                (function(param)
                  {var v=param[2],k=param[1];return replace(tbl,k,v)},
                 i)}
      function of_seq(i){var tbl=create(0,16);replace_seq(tbl,i);return tbl}
      return [0,
              create,
              clear,
              reset,
              copy,
              add,
              remove,
              find,
              find_opt,
              find_all,
              replace,
              mem,
              iter$0,
              filter_map_inplace,
              fold,
              length,
              stats,
              to_seq,
              to_seq_keys,
              to_seq_values,
              add_seq,
              replace_seq,
              of_seq,
              clean,
              stats_alive]}
    function create$5(param){return caml_call1(_r_[1],1)}
    function get_key$0(t){return caml_call2(_r_[3],t,0)}
    function get_key_copy$0(t){return caml_call2(_r_[4],t,0)}
    function set_key$0(t,k){return caml_call3(_r_[5],t,0,k)}
    function unset_key$0(t){return caml_call2(_r_[6],t,0)}
    function check_key$0(t){return caml_call2(_r_[7],t,0)}
    function blit_key$0(t1,t2){return caml_call5(_r_[8],t1,0,t2,0,1)}
    function get_data$1(t){return caml_call1(_r_[9],t)}
    function get_data_copy(t){return caml_call1(_r_[10],t)}
    function set_data(t,d){return caml_call2(_r_[11],t,d)}
    function unset_data(t){return caml_call1(_r_[12],t)}
    function check_data(t){return caml_call1(_r_[13],t)}
    function blit_data(t1,t2){return caml_call2(_r_[14],t1,t2)}
    function MakeSeeded$1(H)
     {function create(k,d)
       {var c=create$5(0);set_data(c,d);set_key$0(c,k);return c}
      var hash=H[2];
      function equal(c,k)
       {var match=get_key$0(c);
        if(match){var k$0=match[1];return caml_call2(H[1],k,k$0)?0:1}
        return 2}
      function set_key_data(c,k,d)
       {unset_data(c);set_key$0(c,k);return set_data(c,d)}
      return MakeSeeded$0
              ([0,
                create,
                hash,
                equal,
                get_data$1,
                get_key$0,
                set_key_data,
                check_key$0])}
    function Make$2(H)
     {var equal=H[1];
      function hash(seed,x){return caml_call1(H[2],x)}
      var
       include=MakeSeeded$1([0,equal,hash]),
       clear=include[2],
       reset=include[3],
       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],
       clean=include[23],
       stats_alive=include[24],
       _eE_=include[1];
      function create(sz){return caml_call2(_eE_,_cw_,sz)}
      function of_seq(i)
       {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl}
      return [0,
              create,
              clear,
              reset,
              copy,
              add,
              remove,
              find,
              find_opt,
              find_all,
              replace,
              mem,
              iter,
              filter_map_inplace,
              fold,
              length,
              stats,
              to_seq,
              to_seq_keys,
              to_seq_values,
              add_seq,
              replace_seq,
              of_seq,
              clean,
              stats_alive]}
    function create$6(param){return caml_call1(_r_[1],2)}
    function get_key1(t){return caml_call2(_r_[3],t,0)}
    function get_key1_copy(t){return caml_call2(_r_[4],t,0)}
    function set_key1(t,k){return caml_call3(_r_[5],t,0,k)}
    function unset_key1(t){return caml_call2(_r_[6],t,0)}
    function check_key1(t){return caml_call2(_r_[7],t,0)}
    function get_key2(t){return caml_call2(_r_[3],t,1)}
    function get_key2_copy(t){return caml_call2(_r_[4],t,1)}
    function set_key2(t,k){return caml_call3(_r_[5],t,1,k)}
    function unset_key2(t){return caml_call2(_r_[6],t,1)}
    function check_key2(t){return caml_call2(_r_[7],t,1)}
    function blit_key1(t1,t2){return caml_call5(_r_[8],t1,0,t2,0,1)}
    function blit_key2(t1,t2){return caml_call5(_r_[8],t1,1,t2,1,1)}
    function blit_key12(t1,t2){return caml_call5(_r_[8],t1,0,t2,0,2)}
    function get_data$2(t){return caml_call1(_r_[9],t)}
    function get_data_copy$0(t){return caml_call1(_r_[10],t)}
    function set_data$0(t,d){return caml_call2(_r_[11],t,d)}
    function unset_data$0(t){return caml_call1(_r_[12],t)}
    function check_data$0(t){return caml_call1(_r_[13],t)}
    function blit_data$0(t1,t2){return caml_call2(_r_[14],t1,t2)}
    function MakeSeeded$2(H1,H2)
     {function create(param,d)
       {var k2=param[2],k1=param[1],c=create$6(0);
        set_data$0(c,d);
        set_key1(c,k1);
        set_key2(c,k2);
        return c}
      function hash(seed,param)
       {var
         k2=param[2],
         k1=param[1],
         _eD_=caml_call2(H2[2],seed,k2) * 65599 | 0;
        return caml_call2(H1[2],seed,k1) + _eD_ | 0}
      function equal(c,param)
       {var k2=param[2],k1=param[1],match=get_key1(c),match$0=get_key2(c);
        if(match && match$0)
         {var k2$0=match$0[1],k1$0=match[1];
          if(caml_call2(H1[1],k1,k1$0) && caml_call2(H2[1],k2,k2$0))return 0;
          return 1}
        return 2}
      function get_key(c)
       {var match=get_key1(c),match$0=get_key2(c);
        if(match && match$0)
         {var k2=match$0[1],k1=match[1];return [0,[0,k1,k2]]}
        return 0}
      function set_key_data(c,param,d)
       {var k2=param[2],k1=param[1];
        unset_data$0(c);
        set_key1(c,k1);
        set_key2(c,k2);
        return set_data$0(c,d)}
      function check_key(c)
       {var _eC_=check_key1(c);return _eC_?check_key2(c):_eC_}
      return MakeSeeded$0
              ([0,create,hash,equal,get_data$2,get_key,set_key_data,check_key])}
    function Make$3(H1,H2)
     {var equal=H2[1];
      function hash(seed,x){return caml_call1(H2[2],x)}
      var equal$0=H1[1],_eA_=[0,equal,hash];
      function hash$0(seed,x){return caml_call1(H1[2],x)}
      var
       include=MakeSeeded$2([0,equal$0,hash$0],_eA_),
       clear=include[2],
       reset=include[3],
       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],
       clean=include[23],
       stats_alive=include[24],
       _eB_=include[1];
      function create(sz){return caml_call2(_eB_,_cx_,sz)}
      function of_seq(i)
       {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl}
      return [0,
              create,
              clear,
              reset,
              copy,
              add,
              remove,
              find,
              find_opt,
              find_all,
              replace,
              mem,
              iter,
              filter_map_inplace,
              fold,
              length,
              stats,
              to_seq,
              to_seq_keys,
              to_seq_values,
              add_seq,
              replace_seq,
              of_seq,
              clean,
              stats_alive]}
    function create$7(n){return caml_call1(_r_[1],n)}
    function length$6(k){return caml_call1(_r_[2],k)}
    function get_key$1(t,n){return caml_call2(_r_[3],t,n)}
    function get_key_copy$1(t,n){return caml_call2(_r_[4],t,n)}
    function set_key$1(t,n,k){return caml_call3(_r_[5],t,n,k)}
    function unset_key$1(t,n){return caml_call2(_r_[6],t,n)}
    function check_key$1(t,n){return caml_call2(_r_[7],t,n)}
    function blit_key$1(t1,o1,t2,o2,l)
     {return caml_call5(_r_[8],t1,o1,t2,o2,l)}
    function get_data$3(t){return caml_call1(_r_[9],t)}
    function get_data_copy$1(t){return caml_call1(_r_[10],t)}
    function set_data$1(t,d){return caml_call2(_r_[11],t,d)}
    function unset_data$1(t){return caml_call1(_r_[12],t)}
    function check_data$1(t){return caml_call1(_r_[13],t)}
    function blit_data$1(t1,t2){return caml_call2(_r_[14],t1,t2)}
    function MakeSeeded$3(H)
     {function create(k,d)
       {var c=create$7(k.length - 1);
        set_data$1(c,d);
        var _ey_=k.length - 1 - 1 | 0,_ex_=0;
        if(! (_ey_ < 0))
         {var i=_ex_;
          for(;;)
           {set_key$1(c,i,caml_check_bound(k,i)[1 + i]);
            var _ez_=i + 1 | 0;
            if(_ey_ !== i){var i=_ez_;continue}
            break}}
        return c}
      function hash(seed,k)
       {var h=[0,0],_et_=k.length - 1 - 1 | 0,_es_=0;
        if(! (_et_ < 0))
         {var i=_es_;
          for(;;)
           {var _eu_=h[1],_ev_=caml_check_bound(k,i)[1 + i];
            h[1] = (caml_call2(H[2],seed,_ev_) * 65599 | 0) + _eu_ | 0;
            var _ew_=i + 1 | 0;
            if(_et_ !== i){var i=_ew_;continue}
            break}}
        return h[1]}
      function equal(c,k)
       {var len=k.length - 1,len$0=length$6(c);
        if(len !== len$0)return 1;
        var i$1=len - 1 | 0,i=i$1;
        for(;;)
         {if(0 <= i)
           {var match=get_key$1(c,i);
            if(match)
             {var ki=match[1],_er_=caml_check_bound(k,i)[1 + i];
              if(caml_call2(H[1],_er_,ki)){var i$0=i - 1 | 0,i=i$0;continue}
              return 1}
            return 2}
          return 0}}
      function get_key(c)
       {var len=length$6(c);
        if(0 === len)return [0,[0]];
        var match=get_key$1(c,0);
        if(match)
         {var k0=match[1],a=caml_make_vect(len,k0),i$1=len - 1 | 0,i=i$1;
          for(;;)
           {if(1 <= i)
             {var match$0=get_key$1(c,i);
              if(match$0)
               {var ki=match$0[1];
                caml_check_bound(a,i)[1 + i] = ki;
                var i$0=i - 1 | 0,i=i$0;
                continue}
              return 0}
            return [0,a]}}
        return 0}
      function set_key_data(c,k,d)
       {unset_data$1(c);
        var _ep_=k.length - 1 - 1 | 0,_eo_=0;
        if(! (_ep_ < 0))
         {var i=_eo_;
          for(;;)
           {set_key$1(c,i,caml_check_bound(k,i)[1 + i]);
            var _eq_=i + 1 | 0;
            if(_ep_ !== i){var i=_eq_;continue}
            break}}
        return set_data$1(c,d)}
      function check_key(c)
       {var i$1=length$6(c) - 1 | 0,i=i$1;
        for(;;)
         {var _el_=i < 0?1:0;
          if(_el_)
           var _em_=_el_;
          else
           {var _en_=check_key$1(c,i);
            if(_en_){var i$0=i - 1 | 0,i=i$0;continue}
            var _em_=_en_}
          return _em_}}
      return MakeSeeded$0
              ([0,create,hash,equal,get_data$3,get_key,set_key_data,check_key])}
    function Make$4(H)
     {var equal=H[1];
      function hash(seed,x){return caml_call1(H[2],x)}
      var
       include=MakeSeeded$3([0,equal,hash]),
       clear=include[2],
       reset=include[3],
       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],
       clean=include[23],
       stats_alive=include[24],
       _ek_=include[1];
      function create(sz){return caml_call2(_ek_,_cy_,sz)}
      function of_seq(i)
       {var tbl=create(16);caml_call2(replace_seq,tbl,i);return tbl}
      return [0,
              create,
              clear,
              reset,
              copy,
              add,
              remove,
              find,
              find_opt,
              find_all,
              replace,
              mem,
              iter,
              filter_map_inplace,
              fold,
              length,
              stats,
              to_seq,
              to_seq_keys,
              to_seq_values,
              add_seq,
              replace_seq,
              of_seq,
              clean,
              stats_alive]}
    var
     Stdlib_ephemeron=
      [0,
       [0,
        create$5,
        get_key$0,
        get_key_copy$0,
        set_key$0,
        unset_key$0,
        check_key$0,
        blit_key$0,
        get_data$1,
        get_data_copy,
        set_data,
        unset_data,
        check_data,
        blit_data,
        Make$2,
        MakeSeeded$1],
       [0,
        create$6,
        get_key1,
        get_key1_copy,
        set_key1,
        unset_key1,
        check_key1,
        get_key2,
        get_key2_copy,
        set_key2,
        unset_key2,
        check_key2,
        blit_key1,
        blit_key2,
        blit_key12,
        get_data$2,
        get_data_copy$0,
        set_data$0,
        unset_data$0,
        check_data$0,
        blit_data$0,
        Make$3,
        MakeSeeded$2],
       [0,
        create$7,
        get_key$1,
        get_key_copy$1,
        set_key$1,
        unset_key$1,
        check_key$1,
        blit_key$1,
        get_data$3,
        get_data_copy$1,
        set_data$1,
        unset_data$1,
        check_data$1,
        blit_data$1,
        Make$4,
        MakeSeeded$3],
       [0,
        function(_ej_)
         {return MakeSeeded$0
                  ([0,_ej_[3],_ej_[1],_ej_[2],_ej_[5],_ej_[4],_ej_[6],_ej_[7]])}]];
    caml_register_global(795,Stdlib_ephemeron,"Stdlib__ephemeron");
    function generic_basename(is_dir_sep,current_dir_name,name)
     {if(caml_string_equal(name,cst$99))return current_dir_name;
      var n$3=caml_ml_string_length(name) - 1 | 0,n=n$3;
      for(;;)
       {if(0 <= n)
         {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue}
          var p=n + 1 | 0,n$1=n;
          for(;;)
           {if(0 <= n$1)
             {if(caml_call2(is_dir_sep,name,n$1))
               return sub$0(name,n$1 + 1 | 0,(p - n$1 | 0) - 1 | 0);
              var n$2=n$1 - 1 | 0,n$1=n$2;
              continue}
            return sub$0(name,0,p)}}
        return sub$0(name,0,1)}}
    function generic_dirname(is_dir_sep,current_dir_name,name)
     {if(caml_string_equal(name,cst$100))return current_dir_name;
      var n$5=caml_ml_string_length(name) - 1 | 0,n=n$5;
      for(;;)
       {if(0 <= n)
         {if(caml_call2(is_dir_sep,name,n)){var n$0=n - 1 | 0,n=n$0;continue}
          var n$1=n;
          for(;;)
           {if(0 <= n$1)
             {if(caml_call2(is_dir_sep,name,n$1))
               {var n$3=n$1;
                for(;;)
                 {if(0 <= n$3)
                   {if(caml_call2(is_dir_sep,name,n$3))
                     {var n$4=n$3 - 1 | 0,n$3=n$4;continue}
                    return sub$0(name,0,n$3 + 1 | 0)}
                  return sub$0(name,0,1)}}
              var n$2=n$1 - 1 | 0,n$1=n$2;
              continue}
            return current_dir_name}}
        return sub$0(name,0,1)}}
    function is_dir_sep(s,i){return 47 === caml_string_get(s,i)?1:0}
    function is_relative(n)
     {var
       _eh_=caml_ml_string_length(n) < 1?1:0,
       _ei_=_eh_ || (47 !== caml_string_get(n,0)?1:0);
      return _ei_}
    function is_implicit(n)
     {var _ec_=is_relative(n);
      if(_ec_)
       {var
         _ed_=caml_ml_string_length(n) < 2?1:0,
         _ee_=_ed_ || caml_string_notequal(sub$0(n,0,2),cst$102);
        if(_ee_)
         var
          _ef_=caml_ml_string_length(n) < 3?1:0,
          _eg_=_ef_ || caml_string_notequal(sub$0(n,0,3),cst$101);
        else
         var _eg_=_ee_}
      else
       var _eg_=_ec_;
      return _eg_}
    function check_suffix(name,suff)
     {var
       _ea_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0,
       _eb_=
        _ea_
         ?caml_string_equal
           (sub$0
             (name,
              caml_ml_string_length(name) - caml_ml_string_length(suff) | 0,
              caml_ml_string_length(suff)),
            suff)
         :_ea_;
      return _eb_}
    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)
       {var r=sub$0(filename,len_f - len_s | 0,len_s);
        return caml_string_equal(r,suffix)
                ?[0,sub$0(filename,0,len_f - len_s | 0)]
                :0}
      return 0}
    try
     {var _cG_=caml_sys_getenv(cst_TMPDIR),_cz_=_cG_}
    catch(_d$_)
     {_d$_ = caml_wrap_exception(_d$_);
      if(_d$_ !== Not_found)throw _d$_;
      var _cz_=cst_tmp}
    function quote(s)
     {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0);
      add_char(b,39);
      var _d9_=l - 1 | 0,_d8_=0;
      if(! (_d9_ < 0))
       {var i=_d8_;
        for(;;)
         {if(39 === caml_string_get(s,i))
           add_string(b,quotequote);
          else
           add_char(b,caml_string_get(s,i));
          var _d__=i + 1 | 0;
          if(_d9_ !== i){var i=_d__;continue}
          break}}
      add_char(b,39);
      return contents(b)}
    function quote_command(cmd,stdin,stdout,stderr,args)
     {if(stderr)
       var
        f=stderr[1],
        _d2_=caml_equal(stderr,stdout)?cst_2_1:symbol(cst_2,quote(f)),
        _d3_=_d2_;
      else
       var _d3_=cst$108;
      if(stdout)
       var f$0=stdout[1],_d4_=symbol(cst$103,quote(f$0));
      else
       var _d4_=cst$107;
      var _d5_=symbol(_d4_,_d3_);
      if(stdin)
       var f$1=stdin[1],_d6_=symbol(cst$104,quote(f$1));
      else
       var _d6_=cst$106;
      var _d7_=symbol(_d6_,_d5_);
      return symbol(concat$0(cst$105,map$2(quote,[0,cmd,args])),_d7_)}
    function basename(_d1_)
     {return generic_basename(is_dir_sep,current_dir_name,_d1_)}
    function dirname(_d0_)
     {return generic_dirname(is_dir_sep,current_dir_name,_d0_)}
    var
     Unix=
      [0,
       null$0,
       current_dir_name,
       parent_dir_name,
       dir_sep,
       is_dir_sep,
       is_relative,
       is_implicit,
       check_suffix,
       chop_suffix_opt,
       _cz_,
       quote,
       quote_command,
       basename,
       dirname];
    function is_dir_sep$0(s,i)
     {var c=caml_string_get(s,i),_dX_=47 === c?1:0;
      if(_dX_)
       var _dY_=_dX_;
      else
       var _dZ_=92 === c?1:0,_dY_=_dZ_ || (58 === c?1:0);
      return _dY_}
    function is_relative$0(n)
     {var
       _dR_=caml_ml_string_length(n) < 1?1:0,
       _dS_=_dR_ || (47 !== caml_string_get(n,0)?1:0);
      if(_dS_)
       {var
         _dT_=caml_ml_string_length(n) < 1?1:0,
         _dU_=_dT_ || (92 !== caml_string_get(n,0)?1:0);
        if(_dU_)
         var
          _dV_=caml_ml_string_length(n) < 2?1:0,
          _dW_=_dV_ || (58 !== caml_string_get(n,1)?1:0);
        else
         var _dW_=_dU_}
      else
       var _dW_=_dS_;
      return _dW_}
    function is_implicit$0(n)
     {var _dI_=is_relative$0(n);
      if(_dI_)
       {var
         _dJ_=caml_ml_string_length(n) < 2?1:0,
         _dK_=_dJ_ || caml_string_notequal(sub$0(n,0,2),cst$112);
        if(_dK_)
         {var
           _dL_=caml_ml_string_length(n) < 2?1:0,
           _dM_=_dL_ || caml_string_notequal(sub$0(n,0,2),cst$111);
          if(_dM_)
           {var
             _dN_=caml_ml_string_length(n) < 3?1:0,
             _dO_=_dN_ || caml_string_notequal(sub$0(n,0,3),cst$110);
            if(_dO_)
             var
              _dP_=caml_ml_string_length(n) < 3?1:0,
              _dQ_=_dP_ || caml_string_notequal(sub$0(n,0,3),cst$109);
            else
             var _dQ_=_dO_}
          else
           var _dQ_=_dM_}
        else
         var _dQ_=_dK_}
      else
       var _dQ_=_dI_;
      return _dQ_}
    function check_suffix$0(name,suff)
     {var _dF_=caml_ml_string_length(suff) <= caml_ml_string_length(name)?1:0;
      if(_dF_)
       var
        s=
         sub$0
          (name,
           caml_ml_string_length(name) - caml_ml_string_length(suff) | 0,
           caml_ml_string_length(suff)),
        _dG_=lowercase_ascii$1(suff),
        _dH_=caml_string_equal(lowercase_ascii$1(s),_dG_);
      else
       var _dH_=_dF_;
      return _dH_}
    function chop_suffix_opt$0(suffix,filename)
     {var
       len_s=caml_ml_string_length(suffix),
       len_f=caml_ml_string_length(filename);
      if(len_s <= len_f)
       {var
         r=sub$0(filename,len_f - len_s | 0,len_s),
         _dE_=lowercase_ascii$1(suffix);
        return caml_string_equal(lowercase_ascii$1(r),_dE_)
                ?[0,sub$0(filename,0,len_f - len_s | 0)]
                :0}
      return 0}
    try
     {var _cF_=caml_sys_getenv(cst_TEMP),temp_dir_name=_cF_}
    catch(_dD_)
     {_dD_ = caml_wrap_exception(_dD_);
      if(_dD_ !== Not_found)throw _dD_;
      var temp_dir_name=cst$113}
    function quote$0(s)
     {var l=caml_ml_string_length(s),b=create$2(l + 20 | 0);
      add_char(b,34);
      function add_bs(n)
       {var _dB_=1;
        if(! (n < 1))
         {var j=_dB_;
          for(;;)
           {add_char(b,92);
            var _dC_=j + 1 | 0;
            if(n !== j){var j=_dC_;continue}
            break}}
        return 0}
      function loop$0(counter,i)
       {var i$0=i;
        for(;;)
         {if(i$0 === l)return add_char(b,34);
          var c=caml_string_get(s,i$0);
          if(34 === c)
           {var _dz_=0;
            if(counter < 50)
             {var counter$1=counter + 1 | 0;
              return loop_bs(counter$1,_dz_,i$0)}
            return caml_trampoline_return(loop_bs,[0,_dz_,i$0])}
          if(92 === c)
           {var _dA_=0;
            if(counter < 50)
             {var counter$0=counter + 1 | 0;
              return loop_bs(counter$0,_dA_,i$0)}
            return caml_trampoline_return(loop_bs,[0,_dA_,i$0])}
          add_char(b,c);
          var i$1=i$0 + 1 | 0,i$0=i$1;
          continue}}
      function loop_bs(counter,n,i)
       {var n$0=n,i$0=i;
        for(;;)
         {if(i$0 === l){add_char(b,34);return add_bs(n$0)}
          var match=caml_string_get(s,i$0);
          if(34 === match)
           {add_bs((2 * n$0 | 0) + 1 | 0);
            add_char(b,34);
            var _dy_=i$0 + 1 | 0;
            if(counter < 50)
             {var counter$1=counter + 1 | 0;return loop$0(counter$1,_dy_)}
            return caml_trampoline_return(loop$0,[0,_dy_])}
          if(92 === match)
           {var i$1=i$0 + 1 | 0,n$1=n$0 + 1 | 0,n$0=n$1,i$0=i$1;continue}
          add_bs(n$0);
          if(counter < 50)
           {var counter$0=counter + 1 | 0;return loop$0(counter$0,i$0)}
          return caml_trampoline_return(loop$0,[0,i$0])}}
      function loop(i){return caml_trampoline(loop$0(0,i))}
      loop(0);
      return contents(b)}
    function quote_cmd_filename(f)
     {if(! contains$0(f,34) && ! contains$0(f,37))
       return contains$0(f,32)?symbol(cst$115,symbol(f,cst$114)):f;
      return failwith(symbol(cst_Filename_quote_command_bad,f))}
    function quote_command$0(cmd,stdin,stdout,stderr,args)
     {if(stderr)
       var
        f=stderr[1],
        _dp_=
         caml_equal(stderr,stdout)
          ?cst_2_1$0
          :symbol(cst_2$0,quote_cmd_filename(f)),
        _dq_=_dp_;
      else
       var _dq_=cst$124;
      var _dr_=[0,_dq_,_cA_];
      if(stdout)
       var f$0=stdout[1],_ds_=symbol(cst$116,quote_cmd_filename(f$0));
      else
       var _ds_=cst$123;
      var _dt_=[0,_ds_,_dr_];
      if(stdin)
       var f$1=stdin[1],_du_=symbol(cst$117,quote_cmd_filename(f$1));
      else
       var _du_=cst$122;
      var
       s=concat$0(cst$118,map$2(quote$0,args)),
       b=create$2(caml_ml_string_length(s) + 20 | 0),
       _dv_=[0,_du_,_dt_];
      iter$4
       (function(c)
         {var switch$0=0;
          if(62 <= c)
           {var _dx_=c - 63 | 0;
            if(60 < _dx_ >>> 0)
             {if(! (62 <= _dx_))switch$0 = 1}
            else
             if(31 === _dx_)switch$0 = 1}
          else
           if(42 <= c)
            {if(60 === c)switch$0 = 1}
           else
            if(33 <= c)
             switch(c - 33 | 0)
              {case 2:case 3:case 6:break;default:switch$0 = 1}
          return switch$0?(add_char(b,94),add_char(b,c)):add_char(b,c)},
        s);
      var _dw_=[0,cst$119,[0,contents(b),_dv_]];
      return concat$0(cst$121,[0,cst$120,[0,quote_cmd_filename(cmd),_dw_]])}
    function drive_and_path(s)
     {var _dl_=2 <= caml_ml_string_length(s)?1:0;
      if(_dl_)
       {var param=caml_string_get(s,0),switch$0=0;
        if(91 <= param)
         {if(! (25 < (param - 97 | 0) >>> 0))switch$0 = 1}
        else
         if(65 <= param)switch$0 = 1;
        var _dm_=switch$0?1:0,_dn_=_dm_?58 === caml_string_get(s,1)?1:0:_dm_}
      else
       var _dn_=_dl_;
      if(_dn_)
       {var _do_=sub$0(s,2,caml_ml_string_length(s) - 2 | 0);
        return [0,sub$0(s,0,2),_do_]}
      return [0,cst$125,s]}
    function dirname$0(s)
     {var
       match=drive_and_path(s),
       path=match[2],
       drive=match[1],
       dir=generic_dirname(is_dir_sep$0,current_dir_name$0,path);
      return symbol(drive,dir)}
    function basename$0(s)
     {var match=drive_and_path(s),path=match[2];
      return generic_basename(is_dir_sep$0,current_dir_name$0,path)}
    var
     Win32=
      [0,
       null$1,
       current_dir_name$0,
       parent_dir_name$0,
       dir_sep$0,
       is_dir_sep$0,
       is_relative$0,
       is_implicit$0,
       check_suffix$0,
       chop_suffix_opt$0,
       temp_dir_name,
       quote$0,
       quote_command$0,
       basename$0,
       dirname$0];
    function basename$1(_dk_)
     {return generic_basename(is_dir_sep$0,current_dir_name$1,_dk_)}
    function dirname$1(_dj_)
     {return generic_dirname(is_dir_sep$0,current_dir_name$1,_dj_)}
    var
     Cygwin=
      [0,
       null$2,
       current_dir_name$1,
       parent_dir_name$1,
       dir_sep$1,
       is_dir_sep$0,
       is_relative$0,
       is_implicit$0,
       check_suffix$0,
       chop_suffix_opt$0,
       _cz_,
       quote,
       quote_command,
       basename$1,
       dirname$1],
     Sysdeps=
      caml_string_notequal(os_type,cst_Cygwin)
       ?caml_string_notequal(os_type,cst_Win32)?Unix:Win32
       :Cygwin,
     null$3=Sysdeps[1],
     current_dir_name$2=Sysdeps[2],
     parent_dir_name$2=Sysdeps[3],
     dir_sep$2=Sysdeps[4],
     is_dir_sep$1=Sysdeps[5],
     is_relative$1=Sysdeps[6],
     is_implicit$1=Sysdeps[7],
     check_suffix$1=Sysdeps[8],
     chop_suffix_opt$1=Sysdeps[9],
     temp_dir_name$0=Sysdeps[10],
     quote$1=Sysdeps[11],
     quote_command$1=Sysdeps[12],
     basename$2=Sysdeps[13],
     dirname$2=Sysdeps[14];
    function concat$3(dirname,filename)
     {var l=caml_ml_string_length(dirname);
      if(0 !== l && ! is_dir_sep$1(dirname,l - 1 | 0))
       return symbol(dirname,symbol(dir_sep$2,filename));
      return symbol(dirname,filename)}
    function chop_suffix(name,suff)
     {var n=caml_ml_string_length(name) - caml_ml_string_length(suff) | 0;
      return 0 <= n?sub$0(name,0,n):invalid_arg(cst_Filename_chop_suffix)}
    function extension_len(name)
     {var i$4=caml_ml_string_length(name) - 1 | 0,i$1=i$4;
      for(;;)
       {if(0 <= i$1 && ! is_dir_sep$1(name,i$1))
         {if(46 === caml_string_get(name,i$1))
           {var i$2=i$1 - 1 | 0,i=i$2;
            for(;;)
             {if(0 <= i && ! is_dir_sep$1(name,i))
               {if(46 === caml_string_get(name,i))
                 {var i$0=i - 1 | 0,i=i$0;continue}
                return caml_ml_string_length(name) - i$1 | 0}
              return 0}}
          var i$3=i$1 - 1 | 0,i$1=i$3;
          continue}
        return 0}}
    function extension(name)
     {var l=extension_len(name);
      return 0 === l?cst$126:sub$0(name,caml_ml_string_length(name) - l | 0,l)}
    function chop_extension(name)
     {var l=extension_len(name);
      return 0 === l
              ?invalid_arg(cst_Filename_chop_extension)
              :sub$0(name,0,caml_ml_string_length(name) - l | 0)}
    function remove_extension(name)
     {var l=extension_len(name);
      return 0 === l?name:sub$0(name,0,caml_ml_string_length(name) - l | 0)}
    var prng$0=[246,function(_di_){return caml_call1(_b2_[2],0)}];
    function temp_file_name(temp_dir,prefix,suffix)
     {var
       _dg_=caml_obj_tag(prng$0),
       _dh_=
        250 === _dg_?prng$0[1]:246 === _dg_?force_lazy_block(prng$0):prng$0,
       rnd=caml_call1(_b2_[4],_dh_) & 16777215;
      return concat$3(temp_dir,caml_call3(sprintf(_cB_),prefix,rnd,suffix))}
    var current_temp_dir_name=[0,temp_dir_name$0];
    function set_temp_dir_name(s){current_temp_dir_name[1] = s;return 0}
    function get_temp_dir_name(param){return current_temp_dir_name[1]}
    function temp_file(opt,prefix,suffix)
     {if(opt)
       var sth=opt[1],temp_dir=sth;
      else
       var temp_dir=current_temp_dir_name[1];
      function try_name(counter)
       {var counter$0=counter;
        for(;;)
         {var name=temp_file_name(temp_dir,prefix,suffix);
          try
           {runtime.caml_sys_close(caml_sys_open(name,_cC_,384));return name}
          catch(e)
           {e = caml_wrap_exception(e);
            if(e[1] === Sys_error)
             {if(1000 <= counter$0)throw e;
              var counter$1=counter$0 + 1 | 0,counter$0=counter$1;
              continue}
            throw e}}}
      return try_name(0)}
    function open_temp_file(opt,_de_,_dd_,prefix,suffix)
     {if(opt)var sth=opt[1],mode=sth;else var mode=_cD_;
      if(_de_)var sth$0=_de_[1],perms=sth$0;else var perms=384;
      if(_dd_)
       var sth$1=_dd_[1],temp_dir=sth$1;
      else
       var temp_dir=current_temp_dir_name[1];
      function try_name(counter)
       {var counter$0=counter;
        for(;;)
         {var name=temp_file_name(temp_dir,prefix,suffix);
          try
           {var _df_=[0,name,open_out_gen([0,1,[0,3,[0,5,mode]]],perms,name)];
            return _df_}
          catch(e)
           {e = caml_wrap_exception(e);
            if(e[1] === Sys_error)
             {if(1000 <= counter$0)throw e;
              var counter$1=counter$0 + 1 | 0,counter$0=counter$1;
              continue}
            throw e}}}
      return try_name(0)}
    var
     Stdlib_filename=
      [0,
       current_dir_name$2,
       parent_dir_name$2,
       dir_sep$2,
       concat$3,
       is_relative$1,
       is_implicit$1,
       check_suffix$1,
       chop_suffix,
       chop_suffix_opt$1,
       extension,
       remove_extension,
       chop_extension,
       basename$2,
       dirname$2,
       null$3,
       temp_file,
       open_temp_file,
       get_temp_dir_name,
       set_temp_dir_name,
       temp_dir_name$0,
       quote$1,
       quote_command$1];
    caml_register_global(796,Stdlib_filename,"Stdlib__filename");
    function add$1(x,y){return [254,x[1] + y[1],x[2] + y[2]]}
    function sub$4(x,y){return [254,x[1] - y[1],x[2] - y[2]]}
    function neg(x){return [254,- x[1],- x[2]]}
    function conj(x){return [254,x[1],- x[2]]}
    function mul(x,y)
     {return [254,x[1] * y[1] - x[2] * y[2],x[1] * y[2] + x[2] * y[1]]}
    function div(x,y)
     {if(Math.abs(y[2]) <= Math.abs(y[1]))
       {var r=y[2] / y[1],d=y[1] + r * y[2];
        return [254,(x[1] + r * x[2]) / d,(x[2] - r * x[1]) / d]}
      var r$0=y[1] / y[2],d$0=y[2] + r$0 * y[1];
      return [254,(r$0 * x[1] + x[2]) / d$0,(r$0 * x[2] - x[1]) / d$0]}
    function inv(x){return div(one$4,x)}
    function norm2(x){return x[1] * x[1] + x[2] * x[2]}
    function norm(x)
     {var r=Math.abs(x[1]),i=Math.abs(x[2]);
      if(r == 0.)return i;
      if(i == 0.)return r;
      if(i <= r){var q=i / r;return r * Math.sqrt(1. + q * q)}
      var q$0=r / i;
      return i * Math.sqrt(1. + q$0 * q$0)}
    function arg(x){return Math.atan2(x[2],x[1])}
    function polar(n,a){return [254,Math.cos(a) * n,Math.sin(a) * n]}
    function sqrt(x)
     {if(x[1] == 0. && x[2] == 0.)return _cE_;
      var r=Math.abs(x[1]),i=Math.abs(x[2]);
      if(i <= r)
       var
        q=i / r,
        w=Math.sqrt(r) * Math.sqrt(0.5 * (1. + Math.sqrt(1. + q * q)));
      else
       var
        q$0=r / i,
        w=Math.sqrt(i) * Math.sqrt(0.5 * (q$0 + Math.sqrt(1. + q$0 * q$0)));
      if(0. <= x[1])return [254,w,0.5 * x[2] / w];
      var w$0=0. <= x[2]?w:- w;
      return [254,0.5 * i / w,w$0]}
    function exp(x)
     {var e=Math.exp(x[1]);return [254,e * Math.cos(x[2]),e * Math.sin(x[2])]}
    function log(x)
     {var _dc_=Math.atan2(x[2],x[1]);return [254,Math.log(norm(x)),_dc_]}
    function pow(x,y){return exp(mul(y,log(x)))}
    var
     Stdlib_complex=
      [0,
       zero$4,
       one$4,
       i,
       neg,
       conj,
       add$1,
       sub$4,
       mul,
       inv,
       div,
       sqrt,
       norm2,
       norm,
       arg,
       polar,
       exp,
       log,
       pow];
    caml_register_global(797,Stdlib_complex,"Stdlib__complex");
    var
     Stdlib_arrayLabels=
      [0,
       init$2,
       create_matrix,
       create_matrix,
       append$0,
       concat$1,
       sub$1,
       copy$1,
       fill$0,
       blit$1,
       to_list$1,
       of_list,
       iter$5,
       map$5,
       iteri$2,
       mapi$2,
       fold_left$1,
       fold_right$0,
       iter2$0,
       map2$0,
       exists$0,
       for_all$0,
       mem$0,
       memq$0,
       make_float,
       sort,
       fast_sort$0,
       fast_sort$0,
       to_seq$4,
       to_seqi$1,
       of_seq$2,
       Floatarray];
    caml_register_global(798,Stdlib_arrayLabels,"Stdlib__arrayLabels");
    var
     Stdlib_listLabels=
      [0,
       length,
       hd,
       compare_lengths,
       compare_length_with,
       cons,
       tl,
       nth,
       nth_opt,
       rev,
       init,
       append,
       rev_append,
       flatten,
       flatten,
       iter$2,
       iteri,
       map$2,
       mapi,
       rev_map,
       filter_map$0,
       concat_map,
       fold_left$0,
       fold_right,
       iter2,
       map2,
       rev_map2,
       fold_left2,
       fold_right2,
       for_all,
       exists,
       for_all2,
       exists2,
       mem,
       memq,
       find,
       find_opt,
       find_map,
       find_all,
       find_all,
       partition,
       assoc,
       assoc_opt,
       assq,
       assq_opt,
       mem_assoc,
       mem_assq,
       remove_assoc,
       remove_assq,
       split,
       combine,
       fast_sort,
       fast_sort,
       fast_sort,
       sort_uniq,
       merge,
       to_seq$1,
       of_seq];
    caml_register_global(799,Stdlib_listLabels,"Stdlib__listLabels");
    var
     Stdlib_bytesLabels=
      [0,
       make,
       init$0,
       empty$0,
       copy,
       of_string,
       to_string$1,
       sub,
       sub_string,
       extend,
       fill,
       blit,
       blit$0,
       concat,
       cat,
       iter$3,
       iteri$0,
       map$3,
       mapi$0,
       trim,
       escaped$0,
       index,
       index_opt,
       rindex,
       rindex_opt,
       index_from,
       index_from_opt,
       rindex_from,
       rindex_from_opt,
       contains,
       contains_from,
       rcontains_from,
       uppercase$0,
       lowercase$0,
       capitalize,
       uncapitalize,
       uppercase_ascii$0,
       lowercase_ascii$0,
       capitalize_ascii,
       uncapitalize_ascii,
       compare$4,
       equal$4,
       to_seq$2,
       to_seqi,
       of_seq$0,
       get_uint8,
       get_int8,
       get_uint16_ne,
       get_uint16_be,
       get_uint16_le,
       get_int16_ne,
       get_int16_be,
       get_int16_le,
       get_int32_ne,
       get_int32_be,
       get_int32_le,
       get_int64_ne,
       get_int64_be,
       get_int64_le,
       set_uint8,
       set_int8,
       set_uint16_ne,
       set_int16_be,
       set_int16_le,
       set_int16_ne,
       set_int16_be,
       set_int16_le,
       set_int32_ne,
       set_int32_be,
       set_int32_le,
       set_int64_ne,
       set_int64_be,
       set_int64_le,
       unsafe_to_string,
       unsafe_of_string];
    caml_register_global(800,Stdlib_bytesLabels,"Stdlib__bytesLabels");
    var
     Stdlib_stringLabels=
      [0,
       make$0,
       init$1,
       copy$0,
       sub$0,
       fill,
       blit$0,
       concat$0,
       iter$4,
       iteri$1,
       map$4,
       mapi$1,
       trim$0,
       escaped$1,
       index$0,
       index_opt$0,
       rindex$0,
       rindex_opt$0,
       index_from$0,
       index_from_opt$0,
       rindex_from$0,
       rindex_from_opt$0,
       contains$0,
       contains_from$0,
       rcontains_from$0,
       uppercase$1,
       lowercase$1,
       capitalize$0,
       uncapitalize$0,
       uppercase_ascii$1,
       lowercase_ascii$1,
       capitalize_ascii$0,
       uncapitalize_ascii$0,
       compare$5,
       equal$5,
       split_on_char,
       to_seq$3,
       to_seqi$0,
       of_seq$1];
    caml_register_global(801,Stdlib_stringLabels,"Stdlib__stringLabels");
    var Stdlib_moreLabels=[0,Stdlib_hashtbl,Stdlib_map,Stdlib_set];
    caml_register_global(802,Stdlib_moreLabels,"Stdlib__moreLabels");
    var Stdlib_stdLabels=[0];
    caml_register_global(803,Stdlib_stdLabels,"Stdlib__stdLabels");
    var enabled=caml_spacetime_enabled(0);
    function if_spacetime_enabled(f){return enabled?caml_call1(f,0):0}
    function create$8(path)
     {if(caml_spacetime_enabled(0))
       {var channel=open_out(path),t=[0,channel,0];
        caml_spacetime_only_works_for_(t[1]);
        return t}
      return [0,stdout,1]}
    function save_event(time,t,event_name)
     {return if_spacetime_enabled
              (function(param)
                {return caml_spacetime_only_works_for_(time,t[1],event_name)})}
    function save_and_close(time,t)
     {return if_spacetime_enabled
              (function(param)
                {if(t[2])failwith(cst_Series_is_closed);
                 caml_spacetime_only_works_for_(time,t[1]);
                 close_out(t[1]);
                 t[2] = 1;
                 return 0})}
    var Series=[0,create$8,save_event,save_and_close];
    function take$0(time,param)
     {var channel=param[1],closed=param[2];
      return if_spacetime_enabled
              (function(param)
                {if(closed)failwith(cst_Series_is_closed$0);
                 runtime.caml_gc_minor(0);
                 return caml_spacetime_only_works_for_(time,channel)})}
    var Snapshot=[0,take$0];
    function save_event_for_automatic_snaps(event_name)
     {return if_spacetime_enabled
              (function(param)
                {return caml_spacetime_only_works_for_(event_name)})}
    var
     Stdlib_spacetime=
      [0,enabled,Series,Snapshot,save_event_for_automatic_snaps];
    caml_register_global(804,Stdlib_spacetime,"Stdlib__spacetime");
    var
     float32=0,
     float64=1,
     int8_signed=2,
     int8_unsigned=3,
     int16_signed=4,
     int16_unsigned=5,
     int32$1=6,
     int64$1=7,
     int$2=8,
     nativeint$1=9,
     complex32=10,
     complex64=11,
     char$0=12;
    function kind_size_in_bytes(param)
     {switch(param)
       {case 0:return 4;
        case 1:return 8;
        case 2:return 1;
        case 3:return 1;
        case 4:return 2;
        case 5:return 2;
        case 6:return 4;
        case 7:return 8;
        case 8:return 4;
        case 9:return 4;
        case 10:return 8;
        case 11:return 16;
        default:return 1}}
    var c_layout=0,fortran_layout=1;
    function dims(a)
     {var n=caml_ba_num_dims(a),d=caml_make_vect(n,0),_c$_=n - 1 | 0,_c__=0;
      if(! (_c$_ < 0))
       {var i=_c__;
        for(;;)
         {var _da_=runtime.caml_ba_dim(a,i);
          caml_check_bound(d,i)[1 + i] = _da_;
          var _db_=i + 1 | 0;
          if(_c$_ !== i){var i=_db_;continue}
          break}}
      return d}
    function size_in_bytes(arr)
     {var _c9_=fold_left$1(caml_mul,1,dims(arr));
      return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_c9_)}
    var Genarray=[0,dims,size_in_bytes];
    function create$9(kind,layout){return caml_ba_create(kind,layout,[0])}
    function get$1(arr){return runtime.caml_ba_get_generic(arr,[0])}
    function set$0(arr)
     {var _c7_=[0];
      return function(_c8_){return runtime.caml_ba_set_generic(arr,_c7_,_c8_)}}
    function size_in_bytes$0(arr)
     {return kind_size_in_bytes(caml_ba_kind(arr))}
    function of_value(kind,layout,v)
     {var a=create$9(kind,layout);caml_call1(set$0(a),v);return a}
    function create$10(kind,layout,dim)
     {return caml_ba_create(kind,layout,[0,dim])}
    function size_in_bytes$1(arr)
     {var _c6_=caml_ba_dim_1(arr);
      return caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_c6_)}
    function slice(a,n)
     {var match=runtime.caml_ba_layout(a);
      return match?caml_ba_slice(a,[0,n]):caml_ba_slice(a,[0,n])}
    function of_array(kind,layout,data)
     {var
       ba=create$10(kind,layout,data.length - 1),
       ofs=layout?1:0,
       _c4_=data.length - 1 - 1 | 0,
       _c3_=0;
      if(! (_c4_ < 0))
       {var i=_c3_;
        for(;;)
         {runtime.caml_ba_set_1
           (ba,i + ofs | 0,caml_check_bound(data,i)[1 + i]);
          var _c5_=i + 1 | 0;
          if(_c4_ !== i){var i=_c5_;continue}
          break}}
      return ba}
    function create$11(kind,layout,dim1,dim2)
     {return caml_ba_create(kind,layout,[0,dim1,dim2])}
    function size_in_bytes$2(arr)
     {var _c1_=caml_ba_dim_2(arr),_c2_=caml_ba_dim_1(arr);
      return caml_mul
              (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_c2_),_c1_)}
    function slice_left(a,n){return caml_ba_slice(a,[0,n])}
    function slice_right(a,n){return caml_ba_slice(a,[0,n])}
    function of_array$0(kind,layout,data)
     {var
       dim1=data.length - 1,
       dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1,
       ba=create$11(kind,layout,dim1,dim2),
       ofs=layout?1:0,
       _cW_=dim1 - 1 | 0,
       _cV_=0;
      if(! (_cW_ < 0))
       {var i=_cV_;
        for(;;)
         {var row=caml_check_bound(data,i)[1 + i];
          if(row.length - 1 !== dim2)
           invalid_arg(cst_Bigarray_Array2_of_array_n);
          var _cY_=dim2 - 1 | 0,_cX_=0;
          if(! (_cY_ < 0))
           {var j=_cX_;
            for(;;)
             {runtime.caml_ba_set_2
               (ba,i + ofs | 0,j + ofs | 0,caml_check_bound(row,j)[1 + j]);
              var _c0_=j + 1 | 0;
              if(_cY_ !== j){var j=_c0_;continue}
              break}}
          var _cZ_=i + 1 | 0;
          if(_cW_ !== i){var i=_cZ_;continue}
          break}}
      return ba}
    function create$12(kind,layout,dim1,dim2,dim3)
     {return caml_ba_create(kind,layout,[0,dim1,dim2,dim3])}
    function size_in_bytes$3(arr)
     {var
       _cS_=runtime.caml_ba_dim_3(arr),
       _cT_=caml_ba_dim_2(arr),
       _cU_=caml_ba_dim_1(arr);
      return caml_mul
              (caml_mul
                (caml_mul(kind_size_in_bytes(caml_ba_kind(arr)),_cU_),_cT_),
               _cS_)}
    function slice_left_1(a,n,m){return caml_ba_slice(a,[0,n,m])}
    function slice_right_1(a,n,m){return caml_ba_slice(a,[0,n,m])}
    function slice_left_2(a,n){return caml_ba_slice(a,[0,n])}
    function slice_right_2(a,n){return caml_ba_slice(a,[0,n])}
    function of_array$1(kind,layout,data)
     {var
       dim1=data.length - 1,
       dim2=0 === dim1?0:caml_check_bound(data,0)[1].length - 1,
       dim3=
        0 === dim2
         ?0
         :caml_check_bound(caml_check_bound(data,0)[1],0)[1].length - 1,
       ba=create$12(kind,layout,dim1,dim2,dim3),
       ofs=layout?1:0,
       _cK_=dim1 - 1 | 0,
       _cJ_=0;
      if(! (_cK_ < 0))
       {var i=_cJ_;
        for(;;)
         {var row=caml_check_bound(data,i)[1 + i];
          if(row.length - 1 !== dim2)
           invalid_arg(cst_Bigarray_Array3_of_array_n);
          var _cM_=dim2 - 1 | 0,_cL_=0;
          if(! (_cM_ < 0))
           {var j=_cL_;
            for(;;)
             {var col=caml_check_bound(row,j)[1 + j];
              if(col.length - 1 !== dim3)
               invalid_arg(cst_Bigarray_Array3_of_array_n$0);
              var _cP_=dim3 - 1 | 0,_cO_=0;
              if(! (_cP_ < 0))
               {var k=_cO_;
                for(;;)
                 {runtime.caml_ba_set_3
                   (ba,
                    i + ofs | 0,
                    j + ofs | 0,
                    k + ofs | 0,
                    caml_check_bound(col,k)[1 + k]);
                  var _cR_=k + 1 | 0;
                  if(_cP_ !== k){var k=_cR_;continue}
                  break}}
              var _cQ_=j + 1 | 0;
              if(_cM_ !== j){var j=_cQ_;continue}
              break}}
          var _cN_=i + 1 | 0;
          if(_cK_ !== i){var i=_cN_;continue}
          break}}
      return ba}
    function array0_of_genarray(a)
     {return 0 === caml_ba_num_dims(a)
              ?a
              :invalid_arg(cst_Bigarray_array0_of_genarra)}
    function array1_of_genarray(a)
     {return 1 === caml_ba_num_dims(a)
              ?a
              :invalid_arg(cst_Bigarray_array1_of_genarra)}
    function array2_of_genarray(a)
     {return 2 === caml_ba_num_dims(a)
              ?a
              :invalid_arg(cst_Bigarray_array2_of_genarra)}
    function array3_of_genarray(a)
     {return 3 === caml_ba_num_dims(a)
              ?a
              :invalid_arg(cst_Bigarray_array3_of_genarra)}
    function reshape_0(a){return caml_ba_reshape(a,[0])}
    function reshape_1(a,dim1){return caml_ba_reshape(a,[0,dim1])}
    function reshape_2(a,dim1,dim2){return caml_ba_reshape(a,[0,dim1,dim2])}
    function reshape_3(a,dim1,dim2,dim3)
     {return caml_ba_reshape(a,[0,dim1,dim2,dim3])}
    var
     Stdlib_bigarray=
      [0,
       float32,
       float64,
       complex32,
       complex64,
       int8_signed,
       int8_unsigned,
       int16_signed,
       int16_unsigned,
       int$2,
       int32$1,
       int64$1,
       nativeint$1,
       char$0,
       kind_size_in_bytes,
       c_layout,
       fortran_layout,
       Genarray,
       [0,create$9,caml_ba_change_layout,size_in_bytes$0,get$1,set$0,of_value],
       [0,create$10,caml_ba_change_layout,size_in_bytes$1,slice,of_array],
       [0,
        create$11,
        caml_ba_change_layout,
        size_in_bytes$2,
        slice_left,
        slice_right,
        of_array$0],
       [0,
        create$12,
        caml_ba_change_layout,
        size_in_bytes$3,
        slice_left_1,
        slice_right_1,
        slice_left_2,
        slice_right_2,
        of_array$1],
       array0_of_genarray,
       array1_of_genarray,
       array2_of_genarray,
       array3_of_genarray,
       caml_ba_reshape,
       reshape_0,
       reshape_1,
       reshape_2,
       reshape_3];
    caml_register_global(805,Stdlib_bigarray,"Stdlib__bigarray");
    return}
  (function(){return this}()));


//# 1 "../../.js/zarith_stubs_js/zarith_stubs_js.cma.js"
(function(joo_global_object)
   {"use strict";
    var runtime=joo_global_object.jsoo_runtime,Zarith_stubs_js=[0];
    runtime.caml_register_global(0,Zarith_stubs_js,"Zarith_stubs_js");
    return}
  (function(){return this}()));


//# 1 "../../.js/js_of_ocaml/js_of_ocaml.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_float_of_string=runtime.caml_float_of_string,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_int_of_string=runtime.caml_int_of_string,
     caml_js_from_array=runtime.caml_js_from_array,
     caml_js_get=runtime.caml_js_get,
     caml_js_html_escape=runtime.caml_js_html_escape,
     caml_js_set=runtime.caml_js_set,
     caml_js_wrap_callback=runtime.caml_js_wrap_callback,
     caml_js_wrap_meth_callback=runtime.caml_js_wrap_meth_callback,
     caml_jsbytes_of_string=runtime.caml_jsbytes_of_string,
     caml_jsstring_of_string=runtime.caml_jsstring_of_string,
     caml_list_of_js_array=runtime.caml_list_of_js_array,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_compare=runtime.caml_string_compare,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_array=runtime.caml_string_of_array,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_string_of_jsstring=runtime.caml_string_of_jsstring,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_parseFloat=caml_string_of_jsbytes("parseFloat"),
     cst_parseInt=caml_string_of_jsbytes("parseInt"),
     cst_Js_of_ocaml_Js_Error=caml_string_of_jsbytes("Js_of_ocaml__Js.Error"),
     cst_jsError=caml_string_of_jsbytes("jsError"),
     cst_can_t_retrieve_file_name_n=
      caml_string_of_jsbytes("can't retrieve file name: not implemented"),
     cst_endings=caml_string_of_jsbytes("endings"),
     cst_type=caml_string_of_jsbytes("type"),
     cst_loadstart=caml_string_of_jsbytes("loadstart"),
     cst_progress=caml_string_of_jsbytes("progress"),
     cst_abort=caml_string_of_jsbytes("abort"),
     cst_error=caml_string_of_jsbytes("error"),
     cst_load=caml_string_of_jsbytes("load"),
     cst_loadend=caml_string_of_jsbytes("loadend"),
     cst_a$1=caml_string_of_jsbytes("a"),
     cst_area$1=caml_string_of_jsbytes("area"),
     cst_audio$1=caml_string_of_jsbytes("audio"),
     cst_base$1=caml_string_of_jsbytes("base"),
     cst_blockquote$1=caml_string_of_jsbytes("blockquote"),
     cst_body$1=caml_string_of_jsbytes("body"),
     cst_br$1=caml_string_of_jsbytes("br"),
     cst_button$1=caml_string_of_jsbytes("button"),
     cst_canvas$1=caml_string_of_jsbytes("canvas"),
     cst_caption$1=caml_string_of_jsbytes("caption"),
     cst_col$1=caml_string_of_jsbytes("col"),
     cst_colgroup$1=caml_string_of_jsbytes("colgroup"),
     cst_del$1=caml_string_of_jsbytes("del"),
     cst_div$1=caml_string_of_jsbytes("div"),
     cst_dl$1=caml_string_of_jsbytes("dl"),
     cst_embed$1=caml_string_of_jsbytes("embed"),
     cst_fieldset$1=caml_string_of_jsbytes("fieldset"),
     cst_form$1=caml_string_of_jsbytes("form"),
     cst_frame$1=caml_string_of_jsbytes("frame"),
     cst_frameset$1=caml_string_of_jsbytes("frameset"),
     cst_h1$1=caml_string_of_jsbytes("h1"),
     cst_h2$1=caml_string_of_jsbytes("h2"),
     cst_h3$1=caml_string_of_jsbytes("h3"),
     cst_h4$1=caml_string_of_jsbytes("h4"),
     cst_h5$1=caml_string_of_jsbytes("h5"),
     cst_h6$1=caml_string_of_jsbytes("h6"),
     cst_head$1=caml_string_of_jsbytes("head"),
     cst_hr$1=caml_string_of_jsbytes("hr"),
     cst_html$1=caml_string_of_jsbytes("html"),
     cst_iframe$1=caml_string_of_jsbytes("iframe"),
     cst_img$1=caml_string_of_jsbytes("img"),
     cst_input$2=caml_string_of_jsbytes("input"),
     cst_ins$1=caml_string_of_jsbytes("ins"),
     cst_label$1=caml_string_of_jsbytes("label"),
     cst_legend$1=caml_string_of_jsbytes("legend"),
     cst_li$1=caml_string_of_jsbytes("li"),
     cst_link$1=caml_string_of_jsbytes("link"),
     cst_map$1=caml_string_of_jsbytes("map"),
     cst_meta$1=caml_string_of_jsbytes("meta"),
     cst_object$1=caml_string_of_jsbytes("object"),
     cst_ol$1=caml_string_of_jsbytes("ol"),
     cst_optgroup$1=caml_string_of_jsbytes("optgroup"),
     cst_option$1=caml_string_of_jsbytes("option"),
     cst_p$1=caml_string_of_jsbytes("p"),
     cst_param$1=caml_string_of_jsbytes("param"),
     cst_pre$1=caml_string_of_jsbytes("pre"),
     cst_q$1=caml_string_of_jsbytes("q"),
     cst_script$1=caml_string_of_jsbytes("script"),
     cst_select$2=caml_string_of_jsbytes("select"),
     cst_style$1=caml_string_of_jsbytes("style"),
     cst_table$1=caml_string_of_jsbytes("table"),
     cst_tbody$1=caml_string_of_jsbytes("tbody"),
     cst_td$1=caml_string_of_jsbytes("td"),
     cst_textarea$1=caml_string_of_jsbytes("textarea"),
     cst_tfoot$1=caml_string_of_jsbytes("tfoot"),
     cst_th$1=caml_string_of_jsbytes("th"),
     cst_thead$1=caml_string_of_jsbytes("thead"),
     cst_title$1=caml_string_of_jsbytes("title"),
     cst_tr$1=caml_string_of_jsbytes("tr"),
     cst_ul$1=caml_string_of_jsbytes("ul"),
     cst_video$1=caml_string_of_jsbytes("video"),
     cst_KeyH=caml_string_of_jsbytes("KeyH"),
     cst_Digit6=caml_string_of_jsbytes("Digit6"),
     cst_BrowserRefresh=caml_string_of_jsbytes("BrowserRefresh"),
     cst_Backslash=caml_string_of_jsbytes("Backslash"),
     cst_AltLeft=caml_string_of_jsbytes("AltLeft"),
     cst_AltRight=caml_string_of_jsbytes("AltRight"),
     cst_ArrowDown=caml_string_of_jsbytes("ArrowDown"),
     cst_ArrowLeft=caml_string_of_jsbytes("ArrowLeft"),
     cst_ArrowRight=caml_string_of_jsbytes("ArrowRight"),
     cst_ArrowUp=caml_string_of_jsbytes("ArrowUp"),
     cst_Backquote=caml_string_of_jsbytes("Backquote"),
     cst_Backspace=caml_string_of_jsbytes("Backspace"),
     cst_BracketLeft=caml_string_of_jsbytes("BracketLeft"),
     cst_BracketRight=caml_string_of_jsbytes("BracketRight"),
     cst_BrowserBack=caml_string_of_jsbytes("BrowserBack"),
     cst_BrowserFavorites=caml_string_of_jsbytes("BrowserFavorites"),
     cst_BrowserForward=caml_string_of_jsbytes("BrowserForward"),
     cst_BrowserHome=caml_string_of_jsbytes("BrowserHome"),
     cst_Delete=caml_string_of_jsbytes("Delete"),
     cst_BrowserSearch=caml_string_of_jsbytes("BrowserSearch"),
     cst_BrowserStop=caml_string_of_jsbytes("BrowserStop"),
     cst_CapsLock=caml_string_of_jsbytes("CapsLock"),
     cst_Comma=caml_string_of_jsbytes("Comma"),
     cst_ContextMenu=caml_string_of_jsbytes("ContextMenu"),
     cst_ControlLeft=caml_string_of_jsbytes("ControlLeft"),
     cst_ControlRight=caml_string_of_jsbytes("ControlRight"),
     cst_Digit0=caml_string_of_jsbytes("Digit0"),
     cst_Digit1=caml_string_of_jsbytes("Digit1"),
     cst_Digit2=caml_string_of_jsbytes("Digit2"),
     cst_Digit3=caml_string_of_jsbytes("Digit3"),
     cst_Digit4=caml_string_of_jsbytes("Digit4"),
     cst_Digit5=caml_string_of_jsbytes("Digit5"),
     cst_F6=caml_string_of_jsbytes("F6"),
     cst_F1=caml_string_of_jsbytes("F1"),
     cst_Digit7=caml_string_of_jsbytes("Digit7"),
     cst_Digit8=caml_string_of_jsbytes("Digit8"),
     cst_Digit9=caml_string_of_jsbytes("Digit9"),
     cst_End=caml_string_of_jsbytes("End"),
     cst_Enter=caml_string_of_jsbytes("Enter"),
     cst_Equal=caml_string_of_jsbytes("Equal"),
     cst_Escape=caml_string_of_jsbytes("Escape"),
     cst_F10=caml_string_of_jsbytes("F10"),
     cst_F11=caml_string_of_jsbytes("F11"),
     cst_F12=caml_string_of_jsbytes("F12"),
     cst_F2=caml_string_of_jsbytes("F2"),
     cst_F3=caml_string_of_jsbytes("F3"),
     cst_F4=caml_string_of_jsbytes("F4"),
     cst_F5=caml_string_of_jsbytes("F5"),
     cst_KeyA=caml_string_of_jsbytes("KeyA"),
     cst_F7=caml_string_of_jsbytes("F7"),
     cst_F8=caml_string_of_jsbytes("F8"),
     cst_F9=caml_string_of_jsbytes("F9"),
     cst_Home=caml_string_of_jsbytes("Home"),
     cst_Insert=caml_string_of_jsbytes("Insert"),
     cst_IntlBackslash=caml_string_of_jsbytes("IntlBackslash"),
     cst_IntlYen=caml_string_of_jsbytes("IntlYen"),
     cst_KeyB=caml_string_of_jsbytes("KeyB"),
     cst_KeyC=caml_string_of_jsbytes("KeyC"),
     cst_KeyD=caml_string_of_jsbytes("KeyD"),
     cst_KeyE=caml_string_of_jsbytes("KeyE"),
     cst_KeyF=caml_string_of_jsbytes("KeyF"),
     cst_KeyG=caml_string_of_jsbytes("KeyG"),
     cst_Numpad4=caml_string_of_jsbytes("Numpad4"),
     cst_KeyX=caml_string_of_jsbytes("KeyX"),
     cst_KeyP=caml_string_of_jsbytes("KeyP"),
     cst_KeyI=caml_string_of_jsbytes("KeyI"),
     cst_KeyJ=caml_string_of_jsbytes("KeyJ"),
     cst_KeyK=caml_string_of_jsbytes("KeyK"),
     cst_KeyL=caml_string_of_jsbytes("KeyL"),
     cst_KeyM=caml_string_of_jsbytes("KeyM"),
     cst_KeyN=caml_string_of_jsbytes("KeyN"),
     cst_KeyO=caml_string_of_jsbytes("KeyO"),
     cst_KeyQ=caml_string_of_jsbytes("KeyQ"),
     cst_KeyR=caml_string_of_jsbytes("KeyR"),
     cst_KeyS=caml_string_of_jsbytes("KeyS"),
     cst_KeyT=caml_string_of_jsbytes("KeyT"),
     cst_KeyU=caml_string_of_jsbytes("KeyU"),
     cst_KeyV=caml_string_of_jsbytes("KeyV"),
     cst_KeyW=caml_string_of_jsbytes("KeyW"),
     cst_MetaRight=caml_string_of_jsbytes("MetaRight"),
     cst_KeyY=caml_string_of_jsbytes("KeyY"),
     cst_KeyZ=caml_string_of_jsbytes("KeyZ"),
     cst_MediaPlayPause=caml_string_of_jsbytes("MediaPlayPause"),
     cst_MediaStop=caml_string_of_jsbytes("MediaStop"),
     cst_MediaTrackNext=caml_string_of_jsbytes("MediaTrackNext"),
     cst_MediaTrackPrevious=caml_string_of_jsbytes("MediaTrackPrevious"),
     cst_MetaLeft=caml_string_of_jsbytes("MetaLeft"),
     cst_Minus=caml_string_of_jsbytes("Minus"),
     cst_NumLock=caml_string_of_jsbytes("NumLock"),
     cst_Numpad0=caml_string_of_jsbytes("Numpad0"),
     cst_Numpad1=caml_string_of_jsbytes("Numpad1"),
     cst_Numpad2=caml_string_of_jsbytes("Numpad2"),
     cst_Numpad3=caml_string_of_jsbytes("Numpad3"),
     cst_PageUp=caml_string_of_jsbytes("PageUp"),
     cst_NumpadDivide=caml_string_of_jsbytes("NumpadDivide"),
     cst_Numpad5=caml_string_of_jsbytes("Numpad5"),
     cst_Numpad6=caml_string_of_jsbytes("Numpad6"),
     cst_Numpad7=caml_string_of_jsbytes("Numpad7"),
     cst_Numpad8=caml_string_of_jsbytes("Numpad8"),
     cst_Numpad9=caml_string_of_jsbytes("Numpad9"),
     cst_NumpadAdd=caml_string_of_jsbytes("NumpadAdd"),
     cst_NumpadDecimal=caml_string_of_jsbytes("NumpadDecimal"),
     cst_NumpadEnter=caml_string_of_jsbytes("NumpadEnter"),
     cst_NumpadEqual=caml_string_of_jsbytes("NumpadEqual"),
     cst_NumpadMultiply=caml_string_of_jsbytes("NumpadMultiply"),
     cst_NumpadSubtract=caml_string_of_jsbytes("NumpadSubtract"),
     cst_OSLeft=caml_string_of_jsbytes("OSLeft"),
     cst_OSRight=caml_string_of_jsbytes("OSRight"),
     cst_PageDown=caml_string_of_jsbytes("PageDown"),
     cst_ShiftRight=caml_string_of_jsbytes("ShiftRight"),
     cst_Pause=caml_string_of_jsbytes("Pause"),
     cst_Period=caml_string_of_jsbytes("Period"),
     cst_PrintScreen=caml_string_of_jsbytes("PrintScreen"),
     cst_Quote=caml_string_of_jsbytes("Quote"),
     cst_ScrollLock=caml_string_of_jsbytes("ScrollLock"),
     cst_Semicolon=caml_string_of_jsbytes("Semicolon"),
     cst_ShiftLeft=caml_string_of_jsbytes("ShiftLeft"),
     cst_Slash=caml_string_of_jsbytes("Slash"),
     cst_Space=caml_string_of_jsbytes("Space"),
     cst_Tab=caml_string_of_jsbytes("Tab"),
     cst_VolumeDown=caml_string_of_jsbytes("VolumeDown"),
     cst_VolumeMute=caml_string_of_jsbytes("VolumeMute"),
     cst_VolumeUp=caml_string_of_jsbytes("VolumeUp"),
     cst_mouseout$0=caml_string_of_jsbytes("mouseout"),
     cst_mouseover$0=caml_string_of_jsbytes("mouseover"),
     cst_video$0=caml_string_of_jsbytes("video"),
     cst_audio$0=caml_string_of_jsbytes("audio"),
     cst_ul$0=caml_string_of_jsbytes("ul"),
     cst_tr$0=caml_string_of_jsbytes("tr"),
     cst_title$0=caml_string_of_jsbytes("title"),
     cst_thead$0=caml_string_of_jsbytes("thead"),
     cst_th$0=caml_string_of_jsbytes("th"),
     cst_tfoot$0=caml_string_of_jsbytes("tfoot"),
     cst_textarea$0=caml_string_of_jsbytes("textarea"),
     cst_td$0=caml_string_of_jsbytes("td"),
     cst_tbody$0=caml_string_of_jsbytes("tbody"),
     cst_table$0=caml_string_of_jsbytes("table"),
     cst_style$0=caml_string_of_jsbytes("style"),
     cst_select$1=caml_string_of_jsbytes("select"),
     cst_script$0=caml_string_of_jsbytes("script"),
     cst_q$0=caml_string_of_jsbytes("q"),
     cst_pre$0=caml_string_of_jsbytes("pre"),
     cst_param$0=caml_string_of_jsbytes("param"),
     cst_p$0=caml_string_of_jsbytes("p"),
     cst_option$0=caml_string_of_jsbytes("option"),
     cst_optgroup$0=caml_string_of_jsbytes("optgroup"),
     cst_ol$0=caml_string_of_jsbytes("ol"),
     cst_object$0=caml_string_of_jsbytes("object"),
     cst_meta$0=caml_string_of_jsbytes("meta"),
     cst_map$0=caml_string_of_jsbytes("map"),
     cst_link$0=caml_string_of_jsbytes("link"),
     cst_li$0=caml_string_of_jsbytes("li"),
     cst_legend$0=caml_string_of_jsbytes("legend"),
     cst_label$0=caml_string_of_jsbytes("label"),
     cst_ins$0=caml_string_of_jsbytes("ins"),
     cst_input$1=caml_string_of_jsbytes("input"),
     cst_img$0=caml_string_of_jsbytes("img"),
     cst_iframe$0=caml_string_of_jsbytes("iframe"),
     cst_html$0=caml_string_of_jsbytes("html"),
     cst_hr$0=caml_string_of_jsbytes("hr"),
     cst_head$0=caml_string_of_jsbytes("head"),
     cst_h6$0=caml_string_of_jsbytes("h6"),
     cst_h5$0=caml_string_of_jsbytes("h5"),
     cst_h4$0=caml_string_of_jsbytes("h4"),
     cst_h3$0=caml_string_of_jsbytes("h3"),
     cst_h2$0=caml_string_of_jsbytes("h2"),
     cst_h1$0=caml_string_of_jsbytes("h1"),
     cst_frame$0=caml_string_of_jsbytes("frame"),
     cst_frameset$0=caml_string_of_jsbytes("frameset"),
     cst_form$0=caml_string_of_jsbytes("form"),
     cst_embed$0=caml_string_of_jsbytes("embed"),
     cst_fieldset$0=caml_string_of_jsbytes("fieldset"),
     cst_dl$0=caml_string_of_jsbytes("dl"),
     cst_div$0=caml_string_of_jsbytes("div"),
     cst_del$0=caml_string_of_jsbytes("del"),
     cst_colgroup$0=caml_string_of_jsbytes("colgroup"),
     cst_col$0=caml_string_of_jsbytes("col"),
     cst_caption$0=caml_string_of_jsbytes("caption"),
     cst_canvas$0=caml_string_of_jsbytes("canvas"),
     cst_button$0=caml_string_of_jsbytes("button"),
     cst_br$0=caml_string_of_jsbytes("br"),
     cst_body$0=caml_string_of_jsbytes("body"),
     cst_blockquote$0=caml_string_of_jsbytes("blockquote"),
     cst_base$0=caml_string_of_jsbytes("base"),
     cst_area$0=caml_string_of_jsbytes("area"),
     cst_a$0=caml_string_of_jsbytes("a"),
     cst_canvas=caml_string_of_jsbytes("canvas"),
     cst_video=caml_string_of_jsbytes("video"),
     cst_audio=caml_string_of_jsbytes("audio"),
     cst_iframe=caml_string_of_jsbytes("iframe"),
     cst_frame=caml_string_of_jsbytes("frame"),
     cst_frameset=caml_string_of_jsbytes("frameset"),
     cst_address=caml_string_of_jsbytes("address"),
     cst_noscript=caml_string_of_jsbytes("noscript"),
     cst_dt=caml_string_of_jsbytes("dt"),
     cst_dd=caml_string_of_jsbytes("dd"),
     cst_abbr=caml_string_of_jsbytes("abbr"),
     cst_var=caml_string_of_jsbytes("var"),
     cst_kbd=caml_string_of_jsbytes("kbd"),
     cst_samp=caml_string_of_jsbytes("samp"),
     cst_code=caml_string_of_jsbytes("code"),
     cst_dfn=caml_string_of_jsbytes("dfn"),
     cst_cite=caml_string_of_jsbytes("cite"),
     cst_strong=caml_string_of_jsbytes("strong"),
     cst_em=caml_string_of_jsbytes("em"),
     cst_small=caml_string_of_jsbytes("small"),
     cst_big=caml_string_of_jsbytes("big"),
     cst_b=caml_string_of_jsbytes("b"),
     cst_i=caml_string_of_jsbytes("i"),
     cst_tt=caml_string_of_jsbytes("tt"),
     cst_span=caml_string_of_jsbytes("span"),
     cst_sup=caml_string_of_jsbytes("sup"),
     cst_sub=caml_string_of_jsbytes("sub"),
     cst_td=caml_string_of_jsbytes("td"),
     cst_th=caml_string_of_jsbytes("th"),
     cst_tr=caml_string_of_jsbytes("tr"),
     cst_tbody=caml_string_of_jsbytes("tbody"),
     cst_tfoot=caml_string_of_jsbytes("tfoot"),
     cst_thead=caml_string_of_jsbytes("thead"),
     cst_colgroup=caml_string_of_jsbytes("colgroup"),
     cst_col=caml_string_of_jsbytes("col"),
     cst_caption=caml_string_of_jsbytes("caption"),
     cst_table=caml_string_of_jsbytes("table"),
     cst_script=caml_string_of_jsbytes("script"),
     cst_area=caml_string_of_jsbytes("area"),
     cst_map=caml_string_of_jsbytes("map"),
     cst_param=caml_string_of_jsbytes("param"),
     cst_object=caml_string_of_jsbytes("object"),
     cst_img=caml_string_of_jsbytes("img"),
     cst_a=caml_string_of_jsbytes("a"),
     cst_del=caml_string_of_jsbytes("del"),
     cst_ins=caml_string_of_jsbytes("ins"),
     cst_hr=caml_string_of_jsbytes("hr"),
     cst_br=caml_string_of_jsbytes("br"),
     cst_pre=caml_string_of_jsbytes("pre"),
     cst_blockquote=caml_string_of_jsbytes("blockquote"),
     cst_q=caml_string_of_jsbytes("q"),
     cst_h6=caml_string_of_jsbytes("h6"),
     cst_h5=caml_string_of_jsbytes("h5"),
     cst_h4=caml_string_of_jsbytes("h4"),
     cst_h3=caml_string_of_jsbytes("h3"),
     cst_h2=caml_string_of_jsbytes("h2"),
     cst_h1=caml_string_of_jsbytes("h1"),
     cst_p=caml_string_of_jsbytes("p"),
     cst_embed=caml_string_of_jsbytes("embed"),
     cst_div=caml_string_of_jsbytes("div"),
     cst_li=caml_string_of_jsbytes("li"),
     cst_dl=caml_string_of_jsbytes("dl"),
     cst_ol=caml_string_of_jsbytes("ol"),
     cst_ul=caml_string_of_jsbytes("ul"),
     cst_legend=caml_string_of_jsbytes("legend"),
     cst_fieldset=caml_string_of_jsbytes("fieldset"),
     cst_label=caml_string_of_jsbytes("label"),
     cst_button=caml_string_of_jsbytes("button"),
     cst_textarea=caml_string_of_jsbytes("textarea"),
     cst_input$0=caml_string_of_jsbytes("input"),
     cst_select$0=caml_string_of_jsbytes("select"),
     cst_option=caml_string_of_jsbytes("option"),
     cst_optgroup=caml_string_of_jsbytes("optgroup"),
     cst_form=caml_string_of_jsbytes("form"),
     cst_body=caml_string_of_jsbytes("body"),
     cst_style=caml_string_of_jsbytes("style"),
     cst_base=caml_string_of_jsbytes("base"),
     cst_meta=caml_string_of_jsbytes("meta"),
     cst_title=caml_string_of_jsbytes("title"),
     cst_link=caml_string_of_jsbytes("link"),
     cst_head=caml_string_of_jsbytes("head"),
     cst_html=caml_string_of_jsbytes("html"),
     cst_click=caml_string_of_jsbytes("click"),
     cst_dblclick=caml_string_of_jsbytes("dblclick"),
     cst_mousedown=caml_string_of_jsbytes("mousedown"),
     cst_mouseup=caml_string_of_jsbytes("mouseup"),
     cst_mouseover=caml_string_of_jsbytes("mouseover"),
     cst_mousemove=caml_string_of_jsbytes("mousemove"),
     cst_mouseout=caml_string_of_jsbytes("mouseout"),
     cst_keypress=caml_string_of_jsbytes("keypress"),
     cst_keydown=caml_string_of_jsbytes("keydown"),
     cst_keyup=caml_string_of_jsbytes("keyup"),
     cst_mousewheel=caml_string_of_jsbytes("mousewheel"),
     cst_DOMMouseScroll=caml_string_of_jsbytes("DOMMouseScroll"),
     cst_touchstart=caml_string_of_jsbytes("touchstart"),
     cst_touchmove=caml_string_of_jsbytes("touchmove"),
     cst_touchend=caml_string_of_jsbytes("touchend"),
     cst_touchcancel=caml_string_of_jsbytes("touchcancel"),
     cst_dragstart=caml_string_of_jsbytes("dragstart"),
     cst_dragend=caml_string_of_jsbytes("dragend"),
     cst_dragenter=caml_string_of_jsbytes("dragenter"),
     cst_dragover=caml_string_of_jsbytes("dragover"),
     cst_dragleave=caml_string_of_jsbytes("dragleave"),
     cst_drag=caml_string_of_jsbytes("drag"),
     cst_drop=caml_string_of_jsbytes("drop"),
     cst_hashchange=caml_string_of_jsbytes("hashchange"),
     cst_change=caml_string_of_jsbytes("change"),
     cst_input=caml_string_of_jsbytes("input"),
     cst_timeupdate=caml_string_of_jsbytes("timeupdate"),
     cst_submit=caml_string_of_jsbytes("submit"),
     cst_scroll=caml_string_of_jsbytes("scroll"),
     cst_focus=caml_string_of_jsbytes("focus"),
     cst_blur=caml_string_of_jsbytes("blur"),
     cst_load$0=caml_string_of_jsbytes("load"),
     cst_unload=caml_string_of_jsbytes("unload"),
     cst_beforeunload=caml_string_of_jsbytes("beforeunload"),
     cst_resize=caml_string_of_jsbytes("resize"),
     cst_orientationchange=caml_string_of_jsbytes("orientationchange"),
     cst_popstate=caml_string_of_jsbytes("popstate"),
     cst_error$0=caml_string_of_jsbytes("error"),
     cst_abort$0=caml_string_of_jsbytes("abort"),
     cst_select=caml_string_of_jsbytes("select"),
     cst_online=caml_string_of_jsbytes("online"),
     cst_offline=caml_string_of_jsbytes("offline"),
     cst_checking=caml_string_of_jsbytes("checking"),
     cst_noupdate=caml_string_of_jsbytes("noupdate"),
     cst_downloading=caml_string_of_jsbytes("downloading"),
     cst_progress$0=caml_string_of_jsbytes("progress"),
     cst_updateready=caml_string_of_jsbytes("updateready"),
     cst_cached=caml_string_of_jsbytes("cached"),
     cst_obsolete=caml_string_of_jsbytes("obsolete"),
     cst_DOMContentLoaded=caml_string_of_jsbytes("DOMContentLoaded"),
     cst_animationstart=caml_string_of_jsbytes("animationstart"),
     cst_animationend=caml_string_of_jsbytes("animationend"),
     cst_animationiteration=caml_string_of_jsbytes("animationiteration"),
     cst_animationcancel=caml_string_of_jsbytes("animationcancel"),
     cst_canplay=caml_string_of_jsbytes("canplay"),
     cst_canplaythrough=caml_string_of_jsbytes("canplaythrough"),
     cst_durationchange=caml_string_of_jsbytes("durationchange"),
     cst_emptied=caml_string_of_jsbytes("emptied"),
     cst_ended=caml_string_of_jsbytes("ended"),
     cst_gotpointercapture=caml_string_of_jsbytes("gotpointercapture"),
     cst_loadeddata=caml_string_of_jsbytes("loadeddata"),
     cst_loadedmetadata=caml_string_of_jsbytes("loadedmetadata"),
     cst_loadstart$0=caml_string_of_jsbytes("loadstart"),
     cst_lostpointercapture=caml_string_of_jsbytes("lostpointercapture"),
     cst_pause=caml_string_of_jsbytes("pause"),
     cst_play=caml_string_of_jsbytes("play"),
     cst_playing=caml_string_of_jsbytes("playing"),
     cst_pointerenter=caml_string_of_jsbytes("pointerenter"),
     cst_pointercancel=caml_string_of_jsbytes("pointercancel"),
     cst_pointerdown=caml_string_of_jsbytes("pointerdown"),
     cst_pointerleave=caml_string_of_jsbytes("pointerleave"),
     cst_pointermove=caml_string_of_jsbytes("pointermove"),
     cst_pointerout=caml_string_of_jsbytes("pointerout"),
     cst_pointerover=caml_string_of_jsbytes("pointerover"),
     cst_pointerup=caml_string_of_jsbytes("pointerup"),
     cst_ratechange=caml_string_of_jsbytes("ratechange"),
     cst_seeked=caml_string_of_jsbytes("seeked"),
     cst_seeking=caml_string_of_jsbytes("seeking"),
     cst_stalled=caml_string_of_jsbytes("stalled"),
     cst_suspend=caml_string_of_jsbytes("suspend"),
     cst_volumechange=caml_string_of_jsbytes("volumechange"),
     cst_waiting=caml_string_of_jsbytes("waiting"),
     cst_Js_of_ocaml_Dom_html_Canva=
      caml_string_of_jsbytes("Js_of_ocaml__Dom_html.Canvas_not_available"),
     cst_checkbox=caml_string_of_jsbytes("checkbox"),
     cst_file=caml_string_of_jsbytes("file"),
     cst_password=caml_string_of_jsbytes("password"),
     cst_radio=caml_string_of_jsbytes("radio"),
     cst_reset=caml_string_of_jsbytes("reset"),
     cst_submit$0=caml_string_of_jsbytes("submit"),
     cst_text=caml_string_of_jsbytes("text"),
     cst_readystatechange=caml_string_of_jsbytes("readystatechange"),
     cst_loadstart$1=caml_string_of_jsbytes("loadstart"),
     cst_progress$1=caml_string_of_jsbytes("progress"),
     cst_abort$1=caml_string_of_jsbytes("abort"),
     cst_error$1=caml_string_of_jsbytes("error"),
     cst_load$1=caml_string_of_jsbytes("load"),
     cst_timeout=caml_string_of_jsbytes("timeout"),
     cst_loadend$0=caml_string_of_jsbytes("loadend"),
     cst_Worker_onmessage_is_undefi$0=
      caml_string_of_jsbytes("Worker.onmessage is undefined"),
     cst_Worker_onmessage_is_undefi=
      caml_string_of_jsbytes("Worker.onmessage is undefined"),
     cst_Worker_import_scripts_is_u=
      caml_string_of_jsbytes("Worker.import_scripts is undefined"),
     cst_webglcontextlost=caml_string_of_jsbytes("webglcontextlost"),
     cst_webglcontextrestored=caml_string_of_jsbytes("webglcontextrestored"),
     cst_webglcontextcreationerror=
      caml_string_of_jsbytes("webglcontextcreationerror"),
     cst_g=caml_string_of_jsbytes("g"),
     cst=caml_string_of_jsbytes("[\\][()\\\\|+*.?{}^$]"),
     cst$37=caml_string_of_jsbytes(""),
     cst$13=caml_string_of_jsbytes(""),
     cst$21=caml_string_of_jsbytes(""),
     cst$14=caml_string_of_jsbytes("#"),
     cst$15=caml_string_of_jsbytes("?"),
     cst$20=caml_string_of_jsbytes(""),
     cst$16=caml_string_of_jsbytes("/"),
     cst$17=caml_string_of_jsbytes("/"),
     cst$19=caml_string_of_jsbytes(":"),
     cst$18=caml_string_of_jsbytes(""),
     cst_http$1=caml_string_of_jsbytes("http://"),
     cst$22=caml_string_of_jsbytes(""),
     cst$30=caml_string_of_jsbytes(""),
     cst$23=caml_string_of_jsbytes("#"),
     cst$24=caml_string_of_jsbytes("?"),
     cst$29=caml_string_of_jsbytes(""),
     cst$25=caml_string_of_jsbytes("/"),
     cst$26=caml_string_of_jsbytes("/"),
     cst$28=caml_string_of_jsbytes(":"),
     cst$27=caml_string_of_jsbytes(""),
     cst_https$1=caml_string_of_jsbytes("https://"),
     cst$31=caml_string_of_jsbytes(""),
     cst$36=caml_string_of_jsbytes(""),
     cst$32=caml_string_of_jsbytes("#"),
     cst$33=caml_string_of_jsbytes("?"),
     cst$35=caml_string_of_jsbytes(""),
     cst$34=caml_string_of_jsbytes("/"),
     cst_file$2=caml_string_of_jsbytes("file://"),
     cst$12=caml_string_of_jsbytes(""),
     cst$11=caml_string_of_jsbytes(""),
     cst$10=caml_string_of_jsbytes(""),
     cst$9=caml_string_of_jsbytes(""),
     cst$8=caml_string_of_jsbytes(""),
     cst$7=caml_string_of_jsbytes(""),
     cst$6=caml_string_of_jsbytes(""),
     cst$4=caml_string_of_jsbytes("="),
     cst$5=caml_string_of_jsbytes("&"),
     cst$2=caml_string_of_jsbytes(""),
     cst$3=caml_string_of_jsbytes(""),
     cst_file$0=caml_string_of_jsbytes("file"),
     cst_file$1=caml_string_of_jsbytes("file:"),
     cst_http=caml_string_of_jsbytes("http"),
     cst_http$0=caml_string_of_jsbytes("http:"),
     cst_https=caml_string_of_jsbytes("https"),
     cst_https$0=caml_string_of_jsbytes("https:"),
     cst$1=caml_string_of_jsbytes(" "),
     cst_2B=caml_string_of_jsbytes("%2B"),
     cst_Js_of_ocaml_Url_Local_exn=
      caml_string_of_jsbytes("Js_of_ocaml__Url.Local_exn"),
     cst$0=caml_string_of_jsbytes("+"),
     cst_Js_of_ocaml_Url_Not_an_htt=
      caml_string_of_jsbytes("Js_of_ocaml__Url.Not_an_http_protocol"),
     cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0=
      caml_string_of_jsbytes
       ("^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\[[0-9a-zA-Z.-]+\\]|\\[[0-9A-Fa-f:.]+\\])?(:([0-9]+))?(/([^\\?#]*)(\\?([^#]*))?(#(.*))?)?$"),
     cst_Ff_Ii_Ll_Ee=
      caml_string_of_jsbytes
       ("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#]*))?(#(.*))?$"),
     s=caml_string_of_jsbytes("3.6.0"),
     git_version=caml_string_of_jsbytes(""),
     cst$38=caml_string_of_jsbytes(""),
     cst$41=caml_string_of_jsbytes("+"),
     cst_Jstable_keys=caml_string_of_jsbytes("Jstable.keys"),
     dummy_string=caml_string_of_jsbytes(""),
     dummy_int64=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     cst_is_not_a_valid_length$0=
      caml_string_of_jsbytes(" is not a valid length"),
     cst_d_d_deg_grad_rad_turns=
      caml_string_of_jsbytes("^(\\d*(?:\\.\\d*))(deg|grad|rad|turns)$"),
     cst_length_conversion_error$0=
      caml_string_of_jsbytes("length conversion error: "),
     cst_deg$0=caml_string_of_jsbytes("deg"),
     cst_grad$0=caml_string_of_jsbytes("grad"),
     cst_rad$0=caml_string_of_jsbytes("rad"),
     cst_turns$0=caml_string_of_jsbytes("turns"),
     cst_deg=caml_string_of_jsbytes("deg"),
     cst_grad=caml_string_of_jsbytes("grad"),
     cst_rad=caml_string_of_jsbytes("rad"),
     cst_turns=caml_string_of_jsbytes("turns"),
     cst_is_not_a_valid_length=
      caml_string_of_jsbytes(" is not a valid length"),
     cst_0$0=caml_string_of_jsbytes("0"),
     cst_d_d_s_S=caml_string_of_jsbytes("^(\\d*(?:\\.\\d*)?)\\s*(\\S*)$"),
     cst_length_conversion_error=
      caml_string_of_jsbytes("length conversion error: "),
     cst_pc$0=caml_string_of_jsbytes("pc"),
     cst_ch$0=caml_string_of_jsbytes("ch"),
     cst_cm$0=caml_string_of_jsbytes("cm"),
     cst_em$1=caml_string_of_jsbytes("em"),
     cst_ex$0=caml_string_of_jsbytes("ex"),
     cst_gd$0=caml_string_of_jsbytes("gd"),
     cst_in$0=caml_string_of_jsbytes("in"),
     cst_mm$0=caml_string_of_jsbytes("mm"),
     cst_pt$0=caml_string_of_jsbytes("pt"),
     cst_px$0=caml_string_of_jsbytes("px"),
     cst_rem$0=caml_string_of_jsbytes("rem"),
     cst_vh$0=caml_string_of_jsbytes("vh"),
     cst_vm$0=caml_string_of_jsbytes("vm"),
     cst_vw$0=caml_string_of_jsbytes("vw"),
     cst_0=caml_string_of_jsbytes("0"),
     cst_em$0=caml_string_of_jsbytes("em"),
     cst_ex=caml_string_of_jsbytes("ex"),
     cst_px=caml_string_of_jsbytes("px"),
     cst_gd=caml_string_of_jsbytes("gd"),
     cst_rem=caml_string_of_jsbytes("rem"),
     cst_vw=caml_string_of_jsbytes("vw"),
     cst_vh=caml_string_of_jsbytes("vh"),
     cst_vm=caml_string_of_jsbytes("vm"),
     cst_ch=caml_string_of_jsbytes("ch"),
     cst_mm=caml_string_of_jsbytes("mm"),
     cst_cm=caml_string_of_jsbytes("cm"),
     cst_in=caml_string_of_jsbytes("in"),
     cst_pt=caml_string_of_jsbytes("pt"),
     cst_pc=caml_string_of_jsbytes("pc"),
     cst$40=caml_string_of_jsbytes("): "),
     cst_color_conversion_error$0=
      caml_string_of_jsbytes("color conversion error ("),
     cst$39=caml_string_of_jsbytes("): "),
     cst_color_conversion_error=
      caml_string_of_jsbytes("color conversion error ("),
     cst_is_not_a_valid_color$0=
      caml_string_of_jsbytes(" is not a valid color"),
     cst_rgba_d_d_d_d_d=
      caml_string_of_jsbytes
       ("(rgba?)\\((?:(\\d*),(\\d*),(\\d*)(?:,(\\d*(?:\\.\\d*)?))?)\\)"),
     cst_rgba_d_d_d_d_d$0=
      caml_string_of_jsbytes
       ("(rgba?)\\((?:(\\d*)%,(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"),
     cst_hsla_d_d_d_d_d=
      caml_string_of_jsbytes
       ("(hsla?)\\((?:(\\d*),(\\d*)%,(\\d*)%(?:,(\\d*(?:\\.\\d*)?))?)\\)"),
     cst_rgb=caml_string_of_jsbytes("rgb"),
     cst_rgba=caml_string_of_jsbytes("rgba"),
     cst_rgb$0=caml_string_of_jsbytes("rgb"),
     cst_rgba$0=caml_string_of_jsbytes("rgba"),
     cst_hsl=caml_string_of_jsbytes("hsl"),
     cst_hsla=caml_string_of_jsbytes("hsla"),
     cst_rgb_s_d_s_d_s_d=
      caml_string_of_jsbytes("^rgb\\(\\s*\\d*,\\s*\\d*,\\s*\\d*\\)$"),
     cst_rgb_s_d_s_d_s_d$0=
      caml_string_of_jsbytes("^rgb\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%\\)$"),
     cst_rgba_s_d_s_d_s_d_d_d=
      caml_string_of_jsbytes
       ("^rgba\\(\\s*\\d*,\\s*\\d*,\\s*\\d*,\\d*\\.?\\d*\\)$"),
     cst_rgba_s_d_s_d_s_d_d_d$0=
      caml_string_of_jsbytes
       ("^rgba\\(\\s*\\d*%,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"),
     cst_hsl_s_d_s_d_s_d=
      caml_string_of_jsbytes("^hsl\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%\\)$"),
     cst_hsla_s_d_s_d_s_d_d_d=
      caml_string_of_jsbytes
       ("^hsla\\(\\s*\\d*,\\s*\\d*%,\\s*\\d*%,\\d*\\.?\\d*\\)$"),
     cst_is_not_a_valid_color=caml_string_of_jsbytes(" is not a valid color"),
     cst_is_out_of_valid_range=
      caml_string_of_jsbytes(" is out of valid range"),
     partial=[8,[0,0,0],0,0,[12,41,0]],
     partial$0=[12,41,0],
     partial$1=[0,0,0],
     cst_lightgrey$0=caml_string_of_jsbytes("lightgrey"),
     cst_darkslategray$0=caml_string_of_jsbytes("darkslategray"),
     cst_cornsilk$0=caml_string_of_jsbytes("cornsilk"),
     cst_blue$0=caml_string_of_jsbytes("blue"),
     cst_aliceblue$0=caml_string_of_jsbytes("aliceblue"),
     cst_antiquewhite$0=caml_string_of_jsbytes("antiquewhite"),
     cst_aqua$0=caml_string_of_jsbytes("aqua"),
     cst_aquamarine$0=caml_string_of_jsbytes("aquamarine"),
     cst_azure$0=caml_string_of_jsbytes("azure"),
     cst_beige$0=caml_string_of_jsbytes("beige"),
     cst_bisque$0=caml_string_of_jsbytes("bisque"),
     cst_black$0=caml_string_of_jsbytes("black"),
     cst_blanchedalmond$0=caml_string_of_jsbytes("blanchedalmond"),
     cst_blueviolet$0=caml_string_of_jsbytes("blueviolet"),
     cst_brown$0=caml_string_of_jsbytes("brown"),
     cst_burlywood$0=caml_string_of_jsbytes("burlywood"),
     cst_cadetblue$0=caml_string_of_jsbytes("cadetblue"),
     cst_chartreuse$0=caml_string_of_jsbytes("chartreuse"),
     cst_chocolate$0=caml_string_of_jsbytes("chocolate"),
     cst_coral$0=caml_string_of_jsbytes("coral"),
     cst_cornflowerblue$0=caml_string_of_jsbytes("cornflowerblue"),
     cst_darkkhaki$0=caml_string_of_jsbytes("darkkhaki"),
     cst_crimson$0=caml_string_of_jsbytes("crimson"),
     cst_cyan$0=caml_string_of_jsbytes("cyan"),
     cst_darkblue$0=caml_string_of_jsbytes("darkblue"),
     cst_darkcyan$0=caml_string_of_jsbytes("darkcyan"),
     cst_darkgoldenrod$0=caml_string_of_jsbytes("darkgoldenrod"),
     cst_darkgray$0=caml_string_of_jsbytes("darkgray"),
     cst_darkgreen$0=caml_string_of_jsbytes("darkgreen"),
     cst_darkgrey$0=caml_string_of_jsbytes("darkgrey"),
     cst_darkmagenta$0=caml_string_of_jsbytes("darkmagenta"),
     cst_darkolivegreen$0=caml_string_of_jsbytes("darkolivegreen"),
     cst_darkorange$0=caml_string_of_jsbytes("darkorange"),
     cst_darkorchid$0=caml_string_of_jsbytes("darkorchid"),
     cst_darkred$0=caml_string_of_jsbytes("darkred"),
     cst_darksalmon$0=caml_string_of_jsbytes("darksalmon"),
     cst_darkseagreen$0=caml_string_of_jsbytes("darkseagreen"),
     cst_darkslateblue$0=caml_string_of_jsbytes("darkslateblue"),
     cst_greenyellow$0=caml_string_of_jsbytes("greenyellow"),
     cst_floralwhite$0=caml_string_of_jsbytes("floralwhite"),
     cst_darkslategrey$0=caml_string_of_jsbytes("darkslategrey"),
     cst_darkturquoise$0=caml_string_of_jsbytes("darkturquoise"),
     cst_darkviolet$0=caml_string_of_jsbytes("darkviolet"),
     cst_deeppink$0=caml_string_of_jsbytes("deeppink"),
     cst_deepskyblue$0=caml_string_of_jsbytes("deepskyblue"),
     cst_dimgray$0=caml_string_of_jsbytes("dimgray"),
     cst_dimgrey$0=caml_string_of_jsbytes("dimgrey"),
     cst_dodgerblue$0=caml_string_of_jsbytes("dodgerblue"),
     cst_firebrick$0=caml_string_of_jsbytes("firebrick"),
     cst_forestgreen$0=caml_string_of_jsbytes("forestgreen"),
     cst_fuchsia$0=caml_string_of_jsbytes("fuchsia"),
     cst_gainsboro$0=caml_string_of_jsbytes("gainsboro"),
     cst_ghostwhite$0=caml_string_of_jsbytes("ghostwhite"),
     cst_gold$0=caml_string_of_jsbytes("gold"),
     cst_goldenrod$0=caml_string_of_jsbytes("goldenrod"),
     cst_gray$0=caml_string_of_jsbytes("gray"),
     cst_green$0=caml_string_of_jsbytes("green"),
     cst_lavenderblush$0=caml_string_of_jsbytes("lavenderblush"),
     cst_grey$0=caml_string_of_jsbytes("grey"),
     cst_honeydew$0=caml_string_of_jsbytes("honeydew"),
     cst_hotpink$0=caml_string_of_jsbytes("hotpink"),
     cst_indianred$0=caml_string_of_jsbytes("indianred"),
     cst_indigo$0=caml_string_of_jsbytes("indigo"),
     cst_ivory$0=caml_string_of_jsbytes("ivory"),
     cst_khaki$0=caml_string_of_jsbytes("khaki"),
     cst_lavender$0=caml_string_of_jsbytes("lavender"),
     cst_lawngreen$0=caml_string_of_jsbytes("lawngreen"),
     cst_lemonchiffon$0=caml_string_of_jsbytes("lemonchiffon"),
     cst_lightblue$0=caml_string_of_jsbytes("lightblue"),
     cst_lightcoral$0=caml_string_of_jsbytes("lightcoral"),
     cst_lightcyan$0=caml_string_of_jsbytes("lightcyan"),
     cst_lightgoldenrodyellow$0=caml_string_of_jsbytes("lightgoldenrodyellow"),
     cst_lightgray$0=caml_string_of_jsbytes("lightgray"),
     cst_lightgreen$0=caml_string_of_jsbytes("lightgreen"),
     cst_paleturquoise$0=caml_string_of_jsbytes("paleturquoise"),
     cst_mediumslateblue$0=caml_string_of_jsbytes("mediumslateblue"),
     cst_limegreen$0=caml_string_of_jsbytes("limegreen"),
     cst_lightpink$0=caml_string_of_jsbytes("lightpink"),
     cst_lightsalmon$0=caml_string_of_jsbytes("lightsalmon"),
     cst_lightseagreen$0=caml_string_of_jsbytes("lightseagreen"),
     cst_lightskyblue$0=caml_string_of_jsbytes("lightskyblue"),
     cst_lightslategray$0=caml_string_of_jsbytes("lightslategray"),
     cst_lightslategrey$0=caml_string_of_jsbytes("lightslategrey"),
     cst_lightsteelblue$0=caml_string_of_jsbytes("lightsteelblue"),
     cst_lightyellow$0=caml_string_of_jsbytes("lightyellow"),
     cst_lime$0=caml_string_of_jsbytes("lime"),
     cst_linen$0=caml_string_of_jsbytes("linen"),
     cst_magenta$0=caml_string_of_jsbytes("magenta"),
     cst_maroon$0=caml_string_of_jsbytes("maroon"),
     cst_mediumaquamarine$0=caml_string_of_jsbytes("mediumaquamarine"),
     cst_mediumblue$0=caml_string_of_jsbytes("mediumblue"),
     cst_mediumorchid$0=caml_string_of_jsbytes("mediumorchid"),
     cst_mediumpurple$0=caml_string_of_jsbytes("mediumpurple"),
     cst_mediumseagreen$0=caml_string_of_jsbytes("mediumseagreen"),
     cst_navy$0=caml_string_of_jsbytes("navy"),
     cst_mediumspringgreen$0=caml_string_of_jsbytes("mediumspringgreen"),
     cst_mediumturquoise$0=caml_string_of_jsbytes("mediumturquoise"),
     cst_mediumvioletred$0=caml_string_of_jsbytes("mediumvioletred"),
     cst_midnightblue$0=caml_string_of_jsbytes("midnightblue"),
     cst_mintcream$0=caml_string_of_jsbytes("mintcream"),
     cst_mistyrose$0=caml_string_of_jsbytes("mistyrose"),
     cst_moccasin$0=caml_string_of_jsbytes("moccasin"),
     cst_navajowhite$0=caml_string_of_jsbytes("navajowhite"),
     cst_oldlace$0=caml_string_of_jsbytes("oldlace"),
     cst_olive$0=caml_string_of_jsbytes("olive"),
     cst_olivedrab$0=caml_string_of_jsbytes("olivedrab"),
     cst_orange$0=caml_string_of_jsbytes("orange"),
     cst_orangered$0=caml_string_of_jsbytes("orangered"),
     cst_orchid$0=caml_string_of_jsbytes("orchid"),
     cst_palegoldenrod$0=caml_string_of_jsbytes("palegoldenrod"),
     cst_palegreen$0=caml_string_of_jsbytes("palegreen"),
     cst_skyblue$0=caml_string_of_jsbytes("skyblue"),
     cst_rosybrown$0=caml_string_of_jsbytes("rosybrown"),
     cst_palevioletred$0=caml_string_of_jsbytes("palevioletred"),
     cst_papayawhip$0=caml_string_of_jsbytes("papayawhip"),
     cst_peachpuff$0=caml_string_of_jsbytes("peachpuff"),
     cst_peru$0=caml_string_of_jsbytes("peru"),
     cst_pink$0=caml_string_of_jsbytes("pink"),
     cst_plum$0=caml_string_of_jsbytes("plum"),
     cst_powderblue$0=caml_string_of_jsbytes("powderblue"),
     cst_purple$0=caml_string_of_jsbytes("purple"),
     cst_red$0=caml_string_of_jsbytes("red"),
     cst_royalblue$0=caml_string_of_jsbytes("royalblue"),
     cst_saddlebrown$0=caml_string_of_jsbytes("saddlebrown"),
     cst_salmon$0=caml_string_of_jsbytes("salmon"),
     cst_sandybrown$0=caml_string_of_jsbytes("sandybrown"),
     cst_seagreen$0=caml_string_of_jsbytes("seagreen"),
     cst_seashell$0=caml_string_of_jsbytes("seashell"),
     cst_sienna$0=caml_string_of_jsbytes("sienna"),
     cst_silver$0=caml_string_of_jsbytes("silver"),
     cst_thistle$0=caml_string_of_jsbytes("thistle"),
     cst_slateblue$0=caml_string_of_jsbytes("slateblue"),
     cst_slategray$0=caml_string_of_jsbytes("slategray"),
     cst_slategrey$0=caml_string_of_jsbytes("slategrey"),
     cst_snow$0=caml_string_of_jsbytes("snow"),
     cst_springgreen$0=caml_string_of_jsbytes("springgreen"),
     cst_steelblue$0=caml_string_of_jsbytes("steelblue"),
     cst_tan$0=caml_string_of_jsbytes("tan"),
     cst_teal$0=caml_string_of_jsbytes("teal"),
     cst_tomato$0=caml_string_of_jsbytes("tomato"),
     cst_turquoise$0=caml_string_of_jsbytes("turquoise"),
     cst_violet$0=caml_string_of_jsbytes("violet"),
     cst_wheat$0=caml_string_of_jsbytes("wheat"),
     cst_white$0=caml_string_of_jsbytes("white"),
     cst_whitesmoke$0=caml_string_of_jsbytes("whitesmoke"),
     cst_yellow$0=caml_string_of_jsbytes("yellow"),
     cst_yellowgreen$0=caml_string_of_jsbytes("yellowgreen"),
     cst_is_not_a_valid_color_name=
      caml_string_of_jsbytes(" is not a valid color name"),
     cst_aliceblue=caml_string_of_jsbytes("aliceblue"),
     cst_antiquewhite=caml_string_of_jsbytes("antiquewhite"),
     cst_aqua=caml_string_of_jsbytes("aqua"),
     cst_aquamarine=caml_string_of_jsbytes("aquamarine"),
     cst_azure=caml_string_of_jsbytes("azure"),
     cst_beige=caml_string_of_jsbytes("beige"),
     cst_bisque=caml_string_of_jsbytes("bisque"),
     cst_black=caml_string_of_jsbytes("black"),
     cst_blanchedalmond=caml_string_of_jsbytes("blanchedalmond"),
     cst_blue=caml_string_of_jsbytes("blue"),
     cst_blueviolet=caml_string_of_jsbytes("blueviolet"),
     cst_brown=caml_string_of_jsbytes("brown"),
     cst_burlywood=caml_string_of_jsbytes("burlywood"),
     cst_cadetblue=caml_string_of_jsbytes("cadetblue"),
     cst_chartreuse=caml_string_of_jsbytes("chartreuse"),
     cst_chocolate=caml_string_of_jsbytes("chocolate"),
     cst_coral=caml_string_of_jsbytes("coral"),
     cst_cornflowerblue=caml_string_of_jsbytes("cornflowerblue"),
     cst_cornsilk=caml_string_of_jsbytes("cornsilk"),
     cst_crimson=caml_string_of_jsbytes("crimson"),
     cst_cyan=caml_string_of_jsbytes("cyan"),
     cst_darkblue=caml_string_of_jsbytes("darkblue"),
     cst_darkcyan=caml_string_of_jsbytes("darkcyan"),
     cst_darkgoldenrod=caml_string_of_jsbytes("darkgoldenrod"),
     cst_darkgray=caml_string_of_jsbytes("darkgray"),
     cst_darkgreen=caml_string_of_jsbytes("darkgreen"),
     cst_darkgrey=caml_string_of_jsbytes("darkgrey"),
     cst_darkkhaki=caml_string_of_jsbytes("darkkhaki"),
     cst_darkmagenta=caml_string_of_jsbytes("darkmagenta"),
     cst_darkolivegreen=caml_string_of_jsbytes("darkolivegreen"),
     cst_darkorange=caml_string_of_jsbytes("darkorange"),
     cst_darkorchid=caml_string_of_jsbytes("darkorchid"),
     cst_darkred=caml_string_of_jsbytes("darkred"),
     cst_darksalmon=caml_string_of_jsbytes("darksalmon"),
     cst_darkseagreen=caml_string_of_jsbytes("darkseagreen"),
     cst_darkslateblue=caml_string_of_jsbytes("darkslateblue"),
     cst_darkslategray=caml_string_of_jsbytes("darkslategray"),
     cst_darkslategrey=caml_string_of_jsbytes("darkslategrey"),
     cst_darkturquoise=caml_string_of_jsbytes("darkturquoise"),
     cst_darkviolet=caml_string_of_jsbytes("darkviolet"),
     cst_deeppink=caml_string_of_jsbytes("deeppink"),
     cst_deepskyblue=caml_string_of_jsbytes("deepskyblue"),
     cst_dimgray=caml_string_of_jsbytes("dimgray"),
     cst_dimgrey=caml_string_of_jsbytes("dimgrey"),
     cst_dodgerblue=caml_string_of_jsbytes("dodgerblue"),
     cst_firebrick=caml_string_of_jsbytes("firebrick"),
     cst_floralwhite=caml_string_of_jsbytes("floralwhite"),
     cst_forestgreen=caml_string_of_jsbytes("forestgreen"),
     cst_fuchsia=caml_string_of_jsbytes("fuchsia"),
     cst_gainsboro=caml_string_of_jsbytes("gainsboro"),
     cst_ghostwhite=caml_string_of_jsbytes("ghostwhite"),
     cst_gold=caml_string_of_jsbytes("gold"),
     cst_goldenrod=caml_string_of_jsbytes("goldenrod"),
     cst_gray=caml_string_of_jsbytes("gray"),
     cst_grey=caml_string_of_jsbytes("grey"),
     cst_green=caml_string_of_jsbytes("green"),
     cst_greenyellow=caml_string_of_jsbytes("greenyellow"),
     cst_honeydew=caml_string_of_jsbytes("honeydew"),
     cst_hotpink=caml_string_of_jsbytes("hotpink"),
     cst_indianred=caml_string_of_jsbytes("indianred"),
     cst_indigo=caml_string_of_jsbytes("indigo"),
     cst_ivory=caml_string_of_jsbytes("ivory"),
     cst_khaki=caml_string_of_jsbytes("khaki"),
     cst_lavender=caml_string_of_jsbytes("lavender"),
     cst_lavenderblush=caml_string_of_jsbytes("lavenderblush"),
     cst_lawngreen=caml_string_of_jsbytes("lawngreen"),
     cst_lemonchiffon=caml_string_of_jsbytes("lemonchiffon"),
     cst_lightblue=caml_string_of_jsbytes("lightblue"),
     cst_lightcoral=caml_string_of_jsbytes("lightcoral"),
     cst_lightcyan=caml_string_of_jsbytes("lightcyan"),
     cst_lightgoldenrodyellow=caml_string_of_jsbytes("lightgoldenrodyellow"),
     cst_lightgray=caml_string_of_jsbytes("lightgray"),
     cst_lightgreen=caml_string_of_jsbytes("lightgreen"),
     cst_lightgrey=caml_string_of_jsbytes("lightgrey"),
     cst_lightpink=caml_string_of_jsbytes("lightpink"),
     cst_lightsalmon=caml_string_of_jsbytes("lightsalmon"),
     cst_lightseagreen=caml_string_of_jsbytes("lightseagreen"),
     cst_lightskyblue=caml_string_of_jsbytes("lightskyblue"),
     cst_lightslategray=caml_string_of_jsbytes("lightslategray"),
     cst_lightslategrey=caml_string_of_jsbytes("lightslategrey"),
     cst_lightsteelblue=caml_string_of_jsbytes("lightsteelblue"),
     cst_lightyellow=caml_string_of_jsbytes("lightyellow"),
     cst_lime=caml_string_of_jsbytes("lime"),
     cst_limegreen=caml_string_of_jsbytes("limegreen"),
     cst_linen=caml_string_of_jsbytes("linen"),
     cst_magenta=caml_string_of_jsbytes("magenta"),
     cst_maroon=caml_string_of_jsbytes("maroon"),
     cst_mediumaquamarine=caml_string_of_jsbytes("mediumaquamarine"),
     cst_mediumblue=caml_string_of_jsbytes("mediumblue"),
     cst_mediumorchid=caml_string_of_jsbytes("mediumorchid"),
     cst_mediumpurple=caml_string_of_jsbytes("mediumpurple"),
     cst_mediumseagreen=caml_string_of_jsbytes("mediumseagreen"),
     cst_mediumslateblue=caml_string_of_jsbytes("mediumslateblue"),
     cst_mediumspringgreen=caml_string_of_jsbytes("mediumspringgreen"),
     cst_mediumturquoise=caml_string_of_jsbytes("mediumturquoise"),
     cst_mediumvioletred=caml_string_of_jsbytes("mediumvioletred"),
     cst_midnightblue=caml_string_of_jsbytes("midnightblue"),
     cst_mintcream=caml_string_of_jsbytes("mintcream"),
     cst_mistyrose=caml_string_of_jsbytes("mistyrose"),
     cst_moccasin=caml_string_of_jsbytes("moccasin"),
     cst_navajowhite=caml_string_of_jsbytes("navajowhite"),
     cst_navy=caml_string_of_jsbytes("navy"),
     cst_oldlace=caml_string_of_jsbytes("oldlace"),
     cst_olive=caml_string_of_jsbytes("olive"),
     cst_olivedrab=caml_string_of_jsbytes("olivedrab"),
     cst_orange=caml_string_of_jsbytes("orange"),
     cst_orangered=caml_string_of_jsbytes("orangered"),
     cst_orchid=caml_string_of_jsbytes("orchid"),
     cst_palegoldenrod=caml_string_of_jsbytes("palegoldenrod"),
     cst_palegreen=caml_string_of_jsbytes("palegreen"),
     cst_paleturquoise=caml_string_of_jsbytes("paleturquoise"),
     cst_palevioletred=caml_string_of_jsbytes("palevioletred"),
     cst_papayawhip=caml_string_of_jsbytes("papayawhip"),
     cst_peachpuff=caml_string_of_jsbytes("peachpuff"),
     cst_peru=caml_string_of_jsbytes("peru"),
     cst_pink=caml_string_of_jsbytes("pink"),
     cst_plum=caml_string_of_jsbytes("plum"),
     cst_powderblue=caml_string_of_jsbytes("powderblue"),
     cst_purple=caml_string_of_jsbytes("purple"),
     cst_red=caml_string_of_jsbytes("red"),
     cst_rosybrown=caml_string_of_jsbytes("rosybrown"),
     cst_royalblue=caml_string_of_jsbytes("royalblue"),
     cst_saddlebrown=caml_string_of_jsbytes("saddlebrown"),
     cst_salmon=caml_string_of_jsbytes("salmon"),
     cst_sandybrown=caml_string_of_jsbytes("sandybrown"),
     cst_seagreen=caml_string_of_jsbytes("seagreen"),
     cst_seashell=caml_string_of_jsbytes("seashell"),
     cst_sienna=caml_string_of_jsbytes("sienna"),
     cst_silver=caml_string_of_jsbytes("silver"),
     cst_skyblue=caml_string_of_jsbytes("skyblue"),
     cst_slateblue=caml_string_of_jsbytes("slateblue"),
     cst_slategray=caml_string_of_jsbytes("slategray"),
     cst_slategrey=caml_string_of_jsbytes("slategrey"),
     cst_snow=caml_string_of_jsbytes("snow"),
     cst_springgreen=caml_string_of_jsbytes("springgreen"),
     cst_steelblue=caml_string_of_jsbytes("steelblue"),
     cst_tan=caml_string_of_jsbytes("tan"),
     cst_teal=caml_string_of_jsbytes("teal"),
     cst_thistle=caml_string_of_jsbytes("thistle"),
     cst_tomato=caml_string_of_jsbytes("tomato"),
     cst_turquoise=caml_string_of_jsbytes("turquoise"),
     cst_violet=caml_string_of_jsbytes("violet"),
     cst_wheat=caml_string_of_jsbytes("wheat"),
     cst_white=caml_string_of_jsbytes("white"),
     cst_whitesmoke=caml_string_of_jsbytes("whitesmoke"),
     cst_yellow=caml_string_of_jsbytes("yellow"),
     cst_yellowgreen=caml_string_of_jsbytes("yellowgreen"),
     cst_vkern$0=caml_string_of_jsbytes("vkern"),
     cst_view$0=caml_string_of_jsbytes("view"),
     cst_use$0=caml_string_of_jsbytes("use"),
     cst_tspan$0=caml_string_of_jsbytes("tspan"),
     cst_tref$0=caml_string_of_jsbytes("tref"),
     cst_title$3=caml_string_of_jsbytes("title"),
     cst_textpath$0=caml_string_of_jsbytes("textpath"),
     cst_text$1=caml_string_of_jsbytes("text"),
     cst_symbol$0=caml_string_of_jsbytes("symbol"),
     cst_switch$0=caml_string_of_jsbytes("switch"),
     cst_svg$0=caml_string_of_jsbytes("svg"),
     cst_style$3=caml_string_of_jsbytes("style"),
     cst_stop$0=caml_string_of_jsbytes("stop"),
     cst_set$0=caml_string_of_jsbytes("set"),
     cst_script$3=caml_string_of_jsbytes("script"),
     cst_rect$0=caml_string_of_jsbytes("rect"),
     cst_radialgradient$0=caml_string_of_jsbytes("radialgradient"),
     cst_polyline$0=caml_string_of_jsbytes("polyline"),
     cst_polygon$0=caml_string_of_jsbytes("polygon"),
     cst_pattern$0=caml_string_of_jsbytes("pattern"),
     cst_path$0=caml_string_of_jsbytes("path"),
     cst_mpath$0=caml_string_of_jsbytes("mpath"),
     cst_missing_glyph$0=caml_string_of_jsbytes("missing-glyph"),
     cst_metadata$0=caml_string_of_jsbytes("metadata"),
     cst_mask$0=caml_string_of_jsbytes("mask"),
     cst_lineargradient$0=caml_string_of_jsbytes("lineargradient"),
     cst_line$0=caml_string_of_jsbytes("line"),
     cst_image$0=caml_string_of_jsbytes("image"),
     cst_hkern$0=caml_string_of_jsbytes("hkern"),
     cst_glyphref$0=caml_string_of_jsbytes("glyphref"),
     cst_glyph$0=caml_string_of_jsbytes("glyph"),
     cst_g$1=caml_string_of_jsbytes("g"),
     cst_foreignobject=caml_string_of_jsbytes("foreignobject"),
     cst_font_face_uri$0=caml_string_of_jsbytes("font-face-uri"),
     cst_font_face_src$0=caml_string_of_jsbytes("font-face-src"),
     cst_font_face_name$0=caml_string_of_jsbytes("font-face-name"),
     cst_font_face_format$0=caml_string_of_jsbytes("font-face-format"),
     cst_font_face$0=caml_string_of_jsbytes("font-face"),
     cst_font$0=caml_string_of_jsbytes("font"),
     cst_filter$0=caml_string_of_jsbytes("filter"),
     cst_ellipse$0=caml_string_of_jsbytes("ellipse"),
     cst_desc$0=caml_string_of_jsbytes("desc"),
     cst_defs$0=caml_string_of_jsbytes("defs"),
     cst_cursor$0=caml_string_of_jsbytes("cursor"),
     cst_clippath$0=caml_string_of_jsbytes("clippath"),
     cst_circle$0=caml_string_of_jsbytes("circle"),
     cst_animatetransform$0=caml_string_of_jsbytes("animatetransform"),
     cst_animatemotion$0=caml_string_of_jsbytes("animatemotion"),
     cst_animatecolor$0=caml_string_of_jsbytes("animatecolor"),
     cst_animate$0=caml_string_of_jsbytes("animate"),
     cst_altglyphitem$0=caml_string_of_jsbytes("altglyphitem"),
     cst_altglyphdef$0=caml_string_of_jsbytes("altglyphdef"),
     cst_altglyph$0=caml_string_of_jsbytes("altglyph"),
     cst_a$3=caml_string_of_jsbytes("a"),
     cst_vkern=caml_string_of_jsbytes("vkern"),
     cst_view=caml_string_of_jsbytes("view"),
     cst_use=caml_string_of_jsbytes("use"),
     cst_tspan=caml_string_of_jsbytes("tspan"),
     cst_tref=caml_string_of_jsbytes("tref"),
     cst_title$2=caml_string_of_jsbytes("title"),
     cst_textpath=caml_string_of_jsbytes("textpath"),
     cst_text$0=caml_string_of_jsbytes("text"),
     cst_symbol=caml_string_of_jsbytes("symbol"),
     cst_switch=caml_string_of_jsbytes("switch"),
     cst_svg=caml_string_of_jsbytes("svg"),
     cst_style$2=caml_string_of_jsbytes("style"),
     cst_stop=caml_string_of_jsbytes("stop"),
     cst_set=caml_string_of_jsbytes("set"),
     cst_script$2=caml_string_of_jsbytes("script"),
     cst_rect=caml_string_of_jsbytes("rect"),
     cst_radialgradient=caml_string_of_jsbytes("radialgradient"),
     cst_polyline=caml_string_of_jsbytes("polyline"),
     cst_polygon=caml_string_of_jsbytes("polygon"),
     cst_pattern=caml_string_of_jsbytes("pattern"),
     cst_path=caml_string_of_jsbytes("path"),
     cst_mpath=caml_string_of_jsbytes("mpath"),
     cst_missing_glyph=caml_string_of_jsbytes("missing-glyph"),
     cst_metadata=caml_string_of_jsbytes("metadata"),
     cst_mask=caml_string_of_jsbytes("mask"),
     cst_lineargradient=caml_string_of_jsbytes("lineargradient"),
     cst_line=caml_string_of_jsbytes("line"),
     cst_image=caml_string_of_jsbytes("image"),
     cst_hkern=caml_string_of_jsbytes("hkern"),
     cst_glyphref=caml_string_of_jsbytes("glyphref"),
     cst_glyph=caml_string_of_jsbytes("glyph"),
     cst_g$0=caml_string_of_jsbytes("g"),
     cst_foreignObject=caml_string_of_jsbytes("foreignObject"),
     cst_font_face_uri=caml_string_of_jsbytes("font-face-uri"),
     cst_font_face_src=caml_string_of_jsbytes("font-face-src"),
     cst_font_face_name=caml_string_of_jsbytes("font-face-name"),
     cst_font_face_format=caml_string_of_jsbytes("font-face-format"),
     cst_font_face=caml_string_of_jsbytes("font-face"),
     cst_font=caml_string_of_jsbytes("font"),
     cst_filter=caml_string_of_jsbytes("filter"),
     cst_ellipse=caml_string_of_jsbytes("ellipse"),
     cst_desc=caml_string_of_jsbytes("desc"),
     cst_defs=caml_string_of_jsbytes("defs"),
     cst_cursor=caml_string_of_jsbytes("cursor"),
     cst_clippath=caml_string_of_jsbytes("clippath"),
     cst_circle=caml_string_of_jsbytes("circle"),
     cst_animatetransform=caml_string_of_jsbytes("animatetransform"),
     cst_animatemotion=caml_string_of_jsbytes("animatemotion"),
     cst_animatecolor=caml_string_of_jsbytes("animatecolor"),
     cst_animate=caml_string_of_jsbytes("animate"),
     cst_altglyphitem=caml_string_of_jsbytes("altglyphitem"),
     cst_altglyphdef=caml_string_of_jsbytes("altglyphdef"),
     cst_altglyph=caml_string_of_jsbytes("altglyph"),
     cst_a$2=caml_string_of_jsbytes("a"),
     cst_Js_of_ocaml_Dom_svg_SVGErr=
      caml_string_of_jsbytes("Js_of_ocaml__Dom_svg.SVGError"),
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib=global_data.Stdlib,
     Stdlib_callback=global_data.Stdlib__callback,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Assert_failure=global_data.Assert_failure,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_uchar=global_data.Stdlib__uchar,
     Stdlib_printf=global_data.Stdlib__printf,
     Js_of_ocaml=[0];
    caml_register_global(1634,Js_of_ocaml,"Js_of_ocaml__");
    var
     Poly=[0],
     _d_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom.ml"),351,67],
     _e_=[0,caml_string_of_jsbytes("transparent")],
     _f_=[0,caml_string_of_jsbytes("native")],
     _j_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2792,58],
     _i_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/dom_html.ml"),2791,61],
     _h_=
      [0,
       [11,
        caml_string_of_jsbytes("getElementById_exn: "),
        [3,0,[11,caml_string_of_jsbytes(" not found"),0]]],
       caml_string_of_jsbytes("getElementById_exn: %S not found")],
     _l_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/form.ml"),177,13],
     _k_=[0,1],
     _m_=
      [0,caml_string_of_jsbytes("lib/js_of_ocaml/xmlHttpRequest.ml"),129,75],
     _n_=[0,caml_string_of_jsbytes("lib/js_of_ocaml/regexp.ml"),34,64],
     _o_=[0,caml_string_of_jsbytes(""),0],
     _ci_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _cj_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _ck_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _cl_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _b6_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _b7_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _b8_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _b9_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _b__=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _b$_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _ca_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _cb_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _cc_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _cd_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _ce_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _cf_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _cg_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _ch_=[0,[8,[0,0,0],0,0,[2,0,0]],caml_string_of_jsbytes("%f%s")],
     _b5_=
      caml_list_of_js_array
       ([caml_string_of_jsbytes("aliceblue"),
         caml_string_of_jsbytes("antiquewhite"),
         caml_string_of_jsbytes("aqua"),
         caml_string_of_jsbytes("aquamarine"),
         caml_string_of_jsbytes("azure"),
         caml_string_of_jsbytes("beige"),
         caml_string_of_jsbytes("bisque"),
         caml_string_of_jsbytes("black"),
         caml_string_of_jsbytes("blanchedalmond"),
         caml_string_of_jsbytes("blue"),
         caml_string_of_jsbytes("blueviolet"),
         caml_string_of_jsbytes("brown"),
         caml_string_of_jsbytes("burlywood"),
         caml_string_of_jsbytes("cadetblue"),
         caml_string_of_jsbytes("chartreuse"),
         caml_string_of_jsbytes("chocolate"),
         caml_string_of_jsbytes("coral"),
         caml_string_of_jsbytes("cornflowerblue"),
         caml_string_of_jsbytes("cornsilk"),
         caml_string_of_jsbytes("crimson"),
         caml_string_of_jsbytes("cyan"),
         caml_string_of_jsbytes("darkblue"),
         caml_string_of_jsbytes("darkcyan"),
         caml_string_of_jsbytes("darkgoldenrod"),
         caml_string_of_jsbytes("darkgray"),
         caml_string_of_jsbytes("darkgreen"),
         caml_string_of_jsbytes("darkgrey"),
         caml_string_of_jsbytes("darkkhaki"),
         caml_string_of_jsbytes("darkmagenta"),
         caml_string_of_jsbytes("darkolivegreen"),
         caml_string_of_jsbytes("darkorange"),
         caml_string_of_jsbytes("darkorchid"),
         caml_string_of_jsbytes("darkred"),
         caml_string_of_jsbytes("darksalmon"),
         caml_string_of_jsbytes("darkseagreen"),
         caml_string_of_jsbytes("darkslateblue"),
         caml_string_of_jsbytes("darkslategray"),
         caml_string_of_jsbytes("darkslategrey"),
         caml_string_of_jsbytes("darkturquoise"),
         caml_string_of_jsbytes("darkviolet"),
         caml_string_of_jsbytes("deeppink"),
         caml_string_of_jsbytes("deepskyblue"),
         caml_string_of_jsbytes("dimgray"),
         caml_string_of_jsbytes("dimgrey"),
         caml_string_of_jsbytes("dodgerblue"),
         caml_string_of_jsbytes("firebrick"),
         caml_string_of_jsbytes("floralwhite"),
         caml_string_of_jsbytes("forestgreen"),
         caml_string_of_jsbytes("fuchsia"),
         caml_string_of_jsbytes("gainsboro"),
         caml_string_of_jsbytes("ghostwhite"),
         caml_string_of_jsbytes("gold"),
         caml_string_of_jsbytes("goldenrod"),
         caml_string_of_jsbytes("gray"),
         caml_string_of_jsbytes("green"),
         caml_string_of_jsbytes("greenyellow"),
         caml_string_of_jsbytes("grey"),
         caml_string_of_jsbytes("honeydew"),
         caml_string_of_jsbytes("hotpink"),
         caml_string_of_jsbytes("indianred"),
         caml_string_of_jsbytes("indigo"),
         caml_string_of_jsbytes("ivory"),
         caml_string_of_jsbytes("khaki"),
         caml_string_of_jsbytes("lavender"),
         caml_string_of_jsbytes("lavenderblush"),
         caml_string_of_jsbytes("lawngreen"),
         caml_string_of_jsbytes("lemonchiffon"),
         caml_string_of_jsbytes("lightblue"),
         caml_string_of_jsbytes("lightcoral"),
         caml_string_of_jsbytes("lightcyan"),
         caml_string_of_jsbytes("lightgoldenrodyellow"),
         caml_string_of_jsbytes("lightgray"),
         caml_string_of_jsbytes("lightgreen"),
         caml_string_of_jsbytes("lightgrey"),
         caml_string_of_jsbytes("lightpink"),
         caml_string_of_jsbytes("lightsalmon"),
         caml_string_of_jsbytes("lightseagreen"),
         caml_string_of_jsbytes("lightskyblue"),
         caml_string_of_jsbytes("lightslategray"),
         caml_string_of_jsbytes("lightslategrey"),
         caml_string_of_jsbytes("lightsteelblue"),
         caml_string_of_jsbytes("lightyellow"),
         caml_string_of_jsbytes("lime"),
         caml_string_of_jsbytes("limegreen"),
         caml_string_of_jsbytes("linen"),
         caml_string_of_jsbytes("magenta"),
         caml_string_of_jsbytes("maroon"),
         caml_string_of_jsbytes("mediumaquamarine"),
         caml_string_of_jsbytes("mediumblue"),
         caml_string_of_jsbytes("mediumorchid"),
         caml_string_of_jsbytes("mediumpurple"),
         caml_string_of_jsbytes("mediumseagreen"),
         caml_string_of_jsbytes("mediumslateblue"),
         caml_string_of_jsbytes("mediumspringgreen"),
         caml_string_of_jsbytes("mediumturquoise"),
         caml_string_of_jsbytes("mediumvioletred"),
         caml_string_of_jsbytes("midnightblue"),
         caml_string_of_jsbytes("mintcream"),
         caml_string_of_jsbytes("mistyrose"),
         caml_string_of_jsbytes("moccasin"),
         caml_string_of_jsbytes("navajowhite"),
         caml_string_of_jsbytes("navy"),
         caml_string_of_jsbytes("oldlace"),
         caml_string_of_jsbytes("olive"),
         caml_string_of_jsbytes("olivedrab"),
         caml_string_of_jsbytes("orange"),
         caml_string_of_jsbytes("orangered"),
         caml_string_of_jsbytes("orchid"),
         caml_string_of_jsbytes("palegoldenrod"),
         caml_string_of_jsbytes("palegreen"),
         caml_string_of_jsbytes("paleturquoise"),
         caml_string_of_jsbytes("palevioletred"),
         caml_string_of_jsbytes("papayawhip"),
         caml_string_of_jsbytes("peachpuff"),
         caml_string_of_jsbytes("peru"),
         caml_string_of_jsbytes("pink"),
         caml_string_of_jsbytes("plum"),
         caml_string_of_jsbytes("powderblue"),
         caml_string_of_jsbytes("purple"),
         caml_string_of_jsbytes("red"),
         caml_string_of_jsbytes("rosybrown"),
         caml_string_of_jsbytes("royalblue"),
         caml_string_of_jsbytes("saddlebrown"),
         caml_string_of_jsbytes("salmon"),
         caml_string_of_jsbytes("sandybrown"),
         caml_string_of_jsbytes("seagreen"),
         caml_string_of_jsbytes("seashell"),
         caml_string_of_jsbytes("sienna"),
         caml_string_of_jsbytes("silver"),
         caml_string_of_jsbytes("skyblue"),
         caml_string_of_jsbytes("slateblue"),
         caml_string_of_jsbytes("slategray"),
         caml_string_of_jsbytes("slategrey"),
         caml_string_of_jsbytes("snow"),
         caml_string_of_jsbytes("springgreen"),
         caml_string_of_jsbytes("steelblue"),
         caml_string_of_jsbytes("tan"),
         caml_string_of_jsbytes("teal"),
         caml_string_of_jsbytes("thistle"),
         caml_string_of_jsbytes("tomato"),
         caml_string_of_jsbytes("turquoise"),
         caml_string_of_jsbytes("violet"),
         caml_string_of_jsbytes("wheat"),
         caml_string_of_jsbytes("white"),
         caml_string_of_jsbytes("whitesmoke"),
         caml_string_of_jsbytes("yellow"),
         caml_string_of_jsbytes("yellowgreen")]),
     _b4_=
      [0,
       [12,35,[4,8,[0,2,2],0,[4,8,[0,2,2],0,[4,8,[0,2,2],0,0]]]],
       caml_string_of_jsbytes("#%02X%02X%02X")],
     _bY_=
      [0,
       [11,
        caml_string_of_jsbytes("rgb("),
        [4,0,0,0,[12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("rgb(%d,%d,%d)")],
     _bZ_=
      [0,
       [11,
        caml_string_of_jsbytes("rgb("),
        [4,
         0,
         0,
         0,
         [12,37,[12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]]],
       caml_string_of_jsbytes("rgb(%d%%,%d%%,%d%%)")],
     _b0_=
      [0,
       [11,
        caml_string_of_jsbytes("rgba("),
        [4,
         0,
         0,
         0,
         [12,44,[4,0,0,0,[12,44,[4,0,0,0,[12,44,[8,[0,0,0],0,0,[12,41,0]]]]]]]]],
       caml_string_of_jsbytes("rgba(%d,%d,%d,%f)")],
     _b1_=
      [0,
       [11,
        caml_string_of_jsbytes("rgba("),
        [4,
         0,
         0,
         0,
         [12,
          37,
          [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,44,partial]]]]]]]]]],
       caml_string_of_jsbytes("rgba(%d%%,%d%%,%d%%,%f)")],
     _b2_=
      [0,
       [11,
        caml_string_of_jsbytes("hsl("),
        [4,
         0,
         0,
         0,
         [12,44,[4,0,0,0,[12,37,[12,44,[4,0,0,0,[12,37,[12,41,0]]]]]]]]],
       caml_string_of_jsbytes("hsl(%d,%d%%,%d%%)")],
     _b3_=
      [0,
       [11,
        caml_string_of_jsbytes("hsla("),
        [4,
         0,
         0,
         0,
         [12,
          44,
          [4,
           0,
           0,
           0,
           [12,
            37,
            [12,44,[4,0,0,0,[12,37,[12,44,[8,partial$1,0,0,partial$0]]]]]]]]]],
       caml_string_of_jsbytes("hsla(%d,%d%%,%d%%,%f)")],
     _v_=[0,240,248,255],
     _w_=[0,250,235,215],
     _x_=[0,0,255,255],
     _y_=[0,127,255,212],
     _z_=[0,240,255,255],
     _A_=[0,245,245,220],
     _B_=[0,255,228,196],
     _C_=[0,0,0,0],
     _D_=[0,255,235,205],
     _E_=[0,0,0,255],
     _F_=[0,138,43,226],
     _G_=[0,165,42,42],
     _H_=[0,222,184,135],
     _I_=[0,95,158,160],
     _J_=[0,127,255,0],
     _K_=[0,210,105,30],
     _L_=[0,255,127,80],
     _M_=[0,100,149,237],
     _N_=[0,255,248,220],
     _O_=[0,220,20,60],
     _P_=[0,0,255,255],
     _Q_=[0,0,0,139],
     _R_=[0,0,139,139],
     _S_=[0,184,134,11],
     _T_=[0,169,169,169],
     _U_=[0,0,100,0],
     _V_=[0,169,169,169],
     _W_=[0,189,183,107],
     _X_=[0,139,0,139],
     _Y_=[0,85,107,47],
     _Z_=[0,255,140,0],
     ___=[0,153,50,204],
     _$_=[0,139,0,0],
     _aa_=[0,233,150,122],
     _ab_=[0,143,188,143],
     _ac_=[0,72,61,139],
     _ad_=[0,47,79,79],
     _ae_=[0,47,79,79],
     _af_=[0,0,206,209],
     _ag_=[0,148,0,211],
     _ah_=[0,255,20,147],
     _ai_=[0,0,191,255],
     _aj_=[0,105,105,105],
     _ak_=[0,105,105,105],
     _al_=[0,30,144,255],
     _am_=[0,178,34,34],
     _an_=[0,255,250,240],
     _ao_=[0,34,139,34],
     _ap_=[0,255,0,255],
     _aq_=[0,220,220,220],
     _ar_=[0,248,248,255],
     _as_=[0,255,215,0],
     _at_=[0,218,165,32],
     _au_=[0,128,128,128],
     _av_=[0,128,128,128],
     _aw_=[0,0,128,0],
     _ax_=[0,173,255,47],
     _ay_=[0,240,255,240],
     _az_=[0,255,105,180],
     _aA_=[0,205,92,92],
     _aB_=[0,75,0,130],
     _aC_=[0,255,255,240],
     _aD_=[0,240,230,140],
     _aE_=[0,230,230,250],
     _aF_=[0,255,240,245],
     _aG_=[0,124,252,0],
     _aH_=[0,255,250,205],
     _aI_=[0,173,216,230],
     _aJ_=[0,240,128,128],
     _aK_=[0,224,255,255],
     _aL_=[0,250,250,210],
     _aM_=[0,211,211,211],
     _aN_=[0,144,238,144],
     _aO_=[0,211,211,211],
     _aP_=[0,255,182,193],
     _aQ_=[0,255,160,122],
     _aR_=[0,32,178,170],
     _aS_=[0,135,206,250],
     _aT_=[0,119,136,153],
     _aU_=[0,119,136,153],
     _aV_=[0,176,196,222],
     _aW_=[0,255,255,224],
     _aX_=[0,0,255,0],
     _aY_=[0,50,205,50],
     _aZ_=[0,250,240,230],
     _a0_=[0,255,0,255],
     _a1_=[0,128,0,0],
     _a2_=[0,102,205,170],
     _a3_=[0,0,0,205],
     _a4_=[0,186,85,211],
     _a5_=[0,147,112,219],
     _a6_=[0,60,179,113],
     _a7_=[0,123,104,238],
     _a8_=[0,0,250,154],
     _a9_=[0,72,209,204],
     _a__=[0,199,21,133],
     _a$_=[0,25,25,112],
     _ba_=[0,245,255,250],
     _bb_=[0,255,228,225],
     _bc_=[0,255,228,181],
     _bd_=[0,255,222,173],
     _be_=[0,0,0,128],
     _bf_=[0,253,245,230],
     _bg_=[0,128,128,0],
     _bh_=[0,107,142,35],
     _bi_=[0,255,165,0],
     _bj_=[0,255,69,0],
     _bk_=[0,218,112,214],
     _bl_=[0,238,232,170],
     _bm_=[0,152,251,152],
     _bn_=[0,175,238,238],
     _bo_=[0,219,112,147],
     _bp_=[0,255,239,213],
     _bq_=[0,255,218,185],
     _br_=[0,205,133,63],
     _bs_=[0,255,192,203],
     _bt_=[0,221,160,221],
     _bu_=[0,176,224,230],
     _bv_=[0,128,0,128],
     _bw_=[0,255,0,0],
     _bx_=[0,188,143,143],
     _by_=[0,65,105,225],
     _bz_=[0,139,69,19],
     _bA_=[0,250,128,114],
     _bB_=[0,244,164,96],
     _bC_=[0,46,139,87],
     _bD_=[0,255,245,238],
     _bE_=[0,160,82,45],
     _bF_=[0,192,192,192],
     _bG_=[0,135,206,235],
     _bH_=[0,106,90,205],
     _bI_=[0,112,128,144],
     _bJ_=[0,112,128,144],
     _bK_=[0,255,250,250],
     _bL_=[0,0,255,127],
     _bM_=[0,70,130,180],
     _bN_=[0,210,180,140],
     _bO_=[0,0,128,128],
     _bP_=[0,216,191,216],
     _bQ_=[0,255,99,71],
     _bR_=[0,64,224,208],
     _bS_=[0,238,130,238],
     _bT_=[0,245,222,179],
     _bU_=[0,255,255,255],
     _bV_=[0,245,245,245],
     _bW_=[0,255,255,0],
     _bX_=[0,154,205,50];
    function symbol(x,y){return x < y?1:0}
    function symbol$0(x,y){return x <= y?1:0}
    function symbol$1(x,y){return x !== y?1:0}
    function symbol$2(x,y){return x === y?1:0}
    function symbol$3(x,y){return y < x?1:0}
    function symbol$4(x,y){return y <= x?1:0}
    var compare=runtime.caml_int_compare;
    function equal(x,y){return x === y?1:0}
    function max(x,y){return y <= x?x:y}
    function min(x,y){return x <= y?x:y}
    var
     Int_replace_polymorphic_compar=
      [0,
       symbol,
       symbol$0,
       symbol$1,
       symbol$2,
       symbol$3,
       symbol$4,
       compare,
       equal,
       max,
       min],
     make=Stdlib_string[1],
     init=Stdlib_string[2],
     copy=Stdlib_string[3],
     sub=Stdlib_string[4],
     fill=Stdlib_string[5],
     blit=Stdlib_string[6],
     concat=Stdlib_string[7],
     iter=Stdlib_string[8],
     iteri=Stdlib_string[9],
     map=Stdlib_string[10],
     mapi=Stdlib_string[11],
     trim=Stdlib_string[12],
     escaped=Stdlib_string[13],
     index=Stdlib_string[14],
     index_opt=Stdlib_string[15],
     rindex=Stdlib_string[16],
     rindex_opt=Stdlib_string[17],
     index_from=Stdlib_string[18],
     index_from_opt=Stdlib_string[19],
     rindex_from=Stdlib_string[20],
     rindex_from_opt=Stdlib_string[21],
     contains=Stdlib_string[22],
     contains_from=Stdlib_string[23],
     rcontains_from=Stdlib_string[24],
     uppercase=Stdlib_string[25],
     lowercase=Stdlib_string[26],
     capitalize=Stdlib_string[27],
     uncapitalize=Stdlib_string[28],
     uppercase_ascii=Stdlib_string[29],
     lowercase_ascii=Stdlib_string[30],
     capitalize_ascii=Stdlib_string[31],
     uncapitalize_ascii=Stdlib_string[32],
     compare$0=Stdlib_string[33],
     split_on_char=Stdlib_string[35],
     to_seq=Stdlib_string[36],
     to_seqi=Stdlib_string[37],
     of_seq=Stdlib_string[38],
     equal$0=runtime.caml_string_equal,
     String=
      [0,
       make,
       init,
       copy,
       sub,
       fill,
       blit,
       concat,
       iter,
       iteri,
       map,
       mapi,
       trim,
       escaped,
       index,
       index_opt,
       rindex,
       rindex_opt,
       index_from,
       index_from_opt,
       rindex_from,
       rindex_from_opt,
       contains,
       contains_from,
       rcontains_from,
       uppercase,
       lowercase,
       capitalize,
       uncapitalize,
       uppercase_ascii,
       lowercase_ascii,
       capitalize_ascii,
       uncapitalize_ascii,
       compare$0,
       split_on_char,
       to_seq,
       to_seqi,
       of_seq,
       equal$0],
     chr=Stdlib_char[1],
     escaped$0=Stdlib_char[2],
     lowercase$0=Stdlib_char[3],
     uppercase$0=Stdlib_char[4],
     lowercase_ascii$0=Stdlib_char[5],
     uppercase_ascii$0=Stdlib_char[6],
     compare$1=Stdlib_char[7];
    function equal$1(x,y){return x === y?1:0}
    var
     Char=
      [0,
       chr,
       escaped$0,
       lowercase$0,
       uppercase$0,
       lowercase_ascii$0,
       uppercase_ascii$0,
       compare$1,
       equal$1],
     symbol$5=Int_replace_polymorphic_compar[1],
     symbol$6=Int_replace_polymorphic_compar[2],
     symbol$7=Int_replace_polymorphic_compar[3],
     symbol$8=Int_replace_polymorphic_compar[4],
     symbol$9=Int_replace_polymorphic_compar[5],
     symbol$10=Int_replace_polymorphic_compar[6],
     compare$2=Int_replace_polymorphic_compar[7],
     equal$2=Int_replace_polymorphic_compar[8],
     max$0=Int_replace_polymorphic_compar[9],
     min$0=Int_replace_polymorphic_compar[10],
     Js_of_ocaml_Import=
      [0,
       Poly,
       Int_replace_polymorphic_compar,
       String,
       Char,
       symbol$5,
       symbol$6,
       symbol$7,
       symbol$8,
       symbol$9,
       symbol$10,
       compare$2,
       equal$2,
       max$0,
       min$0];
    caml_register_global(1637,Js_of_ocaml_Import,"Js_of_ocaml__Import");
    var
     global=joo_global_object,
     Unsafe=[0,global],
     no_handler=null,
     t37=undefined;
    function return$0(_gO_){return _gO_}
    function map$0(x,f){return x == no_handler?no_handler:caml_call1(f,x)}
    function bind(x,f){return x == no_handler?no_handler:caml_call1(f,x)}
    function test(x){return 1 - (x == no_handler?1:0)}
    function iter$0(x,f)
     {var _gN_=1 - (x == no_handler?1:0);return _gN_?caml_call1(f,x):_gN_}
    function case$0(x,f,g)
     {return x == no_handler?caml_call1(f,0):caml_call1(g,x)}
    function get(x,f){return x == no_handler?caml_call1(f,0):x}
    function option(x){if(x){var x$0=x[1];return x$0}return no_handler}
    function to_option(x)
     {function _gM_(x){return [0,x]}
      return case$0(x,function(param){return 0},_gM_)}
    var
     Opt=
      [0,
       no_handler,
       return$0,
       map$0,
       bind,
       test,
       iter$0,
       case$0,
       get,
       option,
       to_option];
    function return$1(_gL_){return _gL_}
    function map$1(x,f){return x === t37?t37:caml_call1(f,x)}
    function bind$0(x,f){return x === t37?t37:caml_call1(f,x)}
    function test$0(x){return x !== t37?1:0}
    function iter$1(x,f)
     {var _gK_=x !== t37?1:0;return _gK_?caml_call1(f,x):_gK_}
    function case$1(x,f,g){return x === t37?caml_call1(f,0):caml_call1(g,x)}
    function get$0(x,f){return x === t37?caml_call1(f,0):x}
    function option$0(x){if(x){var x$0=x[1];return x$0}return t37}
    function to_option$0(x)
     {function _gJ_(x){return [0,x]}
      return case$1(x,function(param){return 0},_gJ_)}
    var
     Optdef=
      [0,
       t37,
       return$1,
       map$1,
       bind$0,
       test$0,
       iter$1,
       case$1,
       get$0,
       option$0,
       to_option$0];
    function coerce(x,f,g)
     {function _gH_(param){return caml_call1(g,x)}
      var _gI_=caml_call1(f,x);
      return caml_call2(Opt[8],_gI_,_gH_)}
    function coerce_opt(x,f,g)
     {function _gF_(param){return caml_call1(g,x)}
      var _gG_=caml_call2(Opt[4],x,f);
      return caml_call2(Opt[8],_gG_,_gF_)}
    var
     true$0=true,
     false$0=false,
     string_constr=Unsafe[1].String,
     regExp_withFlags=Unsafe[1].RegExp,
     object_constructor=Unsafe[1].Object;
    function object_keys(o){return object_constructor.keys(o)}
    var
     array_length=Unsafe[1].Array,
     array_get=caml_js_get,
     array_set=caml_js_set;
    function array_map(f,a)
     {return a.map
              (caml_js_wrap_callback
                (function(x,idx,param){return caml_call1(f,x)}))}
    function array_mapi(f,a)
     {return a.map
              (caml_js_wrap_callback
                (function(x,idx,param){return caml_call2(f,idx,x)}))}
    function str_array(_gE_){return _gE_}
    function match_result(_gD_){return _gD_}
    var
     date_ms=Unsafe[1].Date,
     math=Unsafe[1].Math,
     Error=[248,cst_Js_of_ocaml_Js_Error,caml_fresh_oo_id(0)],
     error_constr=Unsafe[1].Error;
    caml_call2(Stdlib_callback[2],cst_jsError,[0,Error,{}]);
    function raise_js_error(exn){throw exn}
    var JSON=Unsafe[1].JSON;
    function decodeURI(s){return Unsafe[1].decodeURI(s)}
    function decodeURIComponent(s){return Unsafe[1].decodeURIComponent(s)}
    function encodeURI(s){return Unsafe[1].encodeURI(s)}
    function encodeURIComponent(s){return Unsafe[1].encodeURIComponent(s)}
    function escape(s){return Unsafe[1].escape(s)}
    function unescape(s){return Unsafe[1].unescape(s)}
    function isNaN(i){return Unsafe[1].isNaN(i) | 0}
    function parseInt(s)
     {var s$0=Unsafe[1].parseInt(s);
      return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseInt):s$0}
    function parseFloat(s)
     {var s$0=Unsafe[1].parseFloat(s);
      return isNaN(s$0)?caml_call1(Stdlib[2],cst_parseFloat):s$0}
    function _a_(param)
     {if(param[1] === Error)
       {var e=param[2];return [0,caml_string_of_jsstring(e.toString())]}
      return 0}
    caml_call1(Stdlib_printexc[9],_a_);
    function _b_(e)
     {return e instanceof array_length
              ?0
              :[0,caml_string_of_jsstring(e.toString())]}
    caml_call1(Stdlib_printexc[9],_b_);
    function string_of_error(e){return caml_string_of_jsstring(e.toString())}
    function export_js(field,x)
     {return runtime.caml_js_export_var(0)[field] = x}
    function export$0(field,x)
     {return export_js(caml_jsstring_of_string(field),x)}
    function export_all(obj)
     {var keys=object_keys(obj);
      return keys.forEach
              (caml_js_wrap_callback
                (function(key,param,_gC_){return export_js(key,obj[key])}))}
    function _c_(_gB_){return _gB_}
    var
     Js_of_ocaml_Js=
      [0,
       no_handler,
       function(_gA_){return _gA_},
       t37,
       _c_,
       Opt,
       Optdef,
       true$0,
       false$0,
       string_constr,
       regExp_withFlags,
       regExp_withFlags,
       regExp_withFlags,
       object_keys,
       array_length,
       array_length,
       array_get,
       array_set,
       array_map,
       array_mapi,
       str_array,
       match_result,
       date_ms,
       date_ms,
       date_ms,
       date_ms,
       date_ms,
       date_ms,
       date_ms,
       date_ms,
       date_ms,
       math,
       error_constr,
       string_of_error,
       raise_js_error,
       Error,
       JSON,
       decodeURI,
       decodeURIComponent,
       encodeURI,
       encodeURIComponent,
       escape,
       unescape,
       isNaN,
       parseInt,
       parseFloat,
       coerce,
       coerce_opt,
       export$0,
       export_all,
       Unsafe];
    caml_register_global(1641,Js_of_ocaml_Js,"Js_of_ocaml__Js");
    function list_of_nodeList(nodeList)
     {var length=nodeList.length,acc=0,i=0;
      for(;;)
       {if(caml_call2(symbol$5,i,length))
         {var _gz_=nodeList.item(i),match=caml_call1(Opt[10],_gz_);
          if(match)
           {var e=match[1],i$0=i + 1 | 0,acc$0=[0,e,acc],acc=acc$0,i=i$0;
            continue}
          var i$1=i + 1 | 0,i=i$1;
          continue}
        return caml_call1(Stdlib_list[9],acc)}}
    var
     disconnected=1,
     preceding=2,
     following=4,
     contains$0=8,
     contained_by=16,
     implementation_specific=32;
    function has(t,mask){return caml_call2(symbol$8,t & mask,mask)}
    function add(x,y){return x | y}
    var
     DocumentPosition=
      [0,
       disconnected,
       preceding,
       following,
       contains$0,
       contained_by,
       implementation_specific,
       has,
       add,
       add];
    function appendChild(p,n){p.appendChild(n);return 0}
    function removeChild(p,n){p.removeChild(n);return 0}
    function replaceChild(p,n,o){p.replaceChild(n,o);return 0}
    function insertBefore(p,n,o){p.insertBefore(n,o);return 0}
    function nodeType(e)
     {var match=e.nodeType;
      if(match)
       {var switcher=match - 1 | 0;
        switch(switcher)
         {case 0:return [0,e];case 1:return [1,e];case 2:case 3:return [2,e]}}
      return [3,e]}
    function cast(e,t){return e.nodeType === t?e:no_handler}
    function element(e){return cast(e,1)}
    function text(e)
     {if(3 !== e.nodeType && 4 !== e.nodeType)return no_handler;return e}
    function attr(e){return cast(e,2)}
    function handler(f)
     {return function(e)
       {if(caml_call1(Opt[5],e))
         {var res=caml_call1(f,e);
          if(1 - (res | 0))e.preventDefault();
          return res}
        var e$0=event,res$0=caml_call1(f,e$0);
        if(1 - (res$0 | 0))e$0.returnValue = res$0;
        return res$0}}
    function full_handler(f)
     {return runtime.caml_js_wrap_meth_callback_unsafe
              (function(this$0,e)
                {if(caml_call1(Opt[5],e))
                  {var res=caml_call2(f,this$0,e);
                   if(1 - (res | 0))e.preventDefault();
                   return res}
                 var e$0=event,res$0=caml_call2(f,this$0,e$0);
                 if(1 - (res$0 | 0))e$0.returnValue = res$0;
                 return res$0})}
    function invoke_handler(f,this$0,event){return f.call(this$0,event)}
    function eventTarget(e)
     {function _gw_(param)
       {function _gy_(param){throw Stdlib[8]}
        return caml_call2(Opt[8],e.srcElement,_gy_)}
      var target=caml_call2(Opt[8],e.target,_gw_);
      if(target instanceof Unsafe[1].Node)
       {if(3 === target.nodeType)
         {var _gx_=function(param){throw [0,Assert_failure,_d_]};
          return caml_call2(Opt[8],target.parentNode,_gx_)}
        return target}
      return target}
    var make$0=caml_jsstring_of_string,Event=[0,make$0];
    function addEventListenerWithOptions(e,typ,capture,once,passive,h)
     {if(e.addEventListener === t37)
       {var
         ev="on".concat(typ),
         callback=
          function(e)
           {var _gt_=[0,h,e,[0]];
            return function(_gu_,_gv_)
             {return runtime.caml_js_call(_gt_,_gu_,_gv_)}};
        e.attachEvent(ev,callback);
        return function(param){return e.detachEvent(ev,callback)}}
      var opts={};
      function iter(t,f){if(t){var b=t[1];return caml_call1(f,b)}return 0}
      iter(capture,function(b){return opts.capture = b});
      iter(once,function(b){return opts.once = b});
      iter(passive,function(b){return opts.passive = b});
      e.addEventListener(typ,h,opts);
      return function(param){return e.removeEventListener(typ,h,opts)}}
    function addEventListener(e,typ,h,capt)
     {return addEventListenerWithOptions(e,typ,[0,capt],0,0,h)}
    function removeEventListener(id){return caml_call1(id,0)}
    function preventDefault(ev)
     {return caml_call1(Optdef[5],ev.preventDefault)
              ?ev.preventDefault()
              :ev.returnValue = ! ! 0}
    function createCustomEvent(bubbles,cancelable,detail,typ)
     {function opt_iter(f,param)
       {if(param){var x=param[1];return caml_call1(f,x)}return 0}
      var opts={};
      opt_iter(function(x){return opts.bubbles = ! ! x},bubbles);
      opt_iter(function(x){return opts.cancelable = ! ! x},cancelable);
      opt_iter(function(x){return opts.detail = x},detail);
      var constr=Unsafe[1].CustomEvent;
      return new constr(typ,opts)}
    var
     Js_of_ocaml_Dom=
      [0,
       DocumentPosition,
       insertBefore,
       replaceChild,
       removeChild,
       appendChild,
       list_of_nodeList,
       nodeType,
       [0,element,text,attr],
       no_handler,
       handler,
       full_handler,
       invoke_handler,
       eventTarget,
       Event,
       addEventListenerWithOptions,
       addEventListener,
       removeEventListener,
       preventDefault,
       createCustomEvent];
    caml_register_global(1644,Js_of_ocaml_Dom,"Js_of_ocaml__Dom");
    var
     arrayBuffer=Unsafe[1].ArrayBuffer,
     int8Array_inBuffer=Unsafe[1].Int8Array,
     uint8Array_fromBuffer=Unsafe[1].Uint8Array,
     int16Array_inBuffer=Unsafe[1].Int16Array,
     uint16Array_inBuffer=Unsafe[1].Uint16Array,
     int32Array_inBuffer=Unsafe[1].Int32Array,
     uint32Array_inBuffer=Unsafe[1].Uint32Array,
     float32Array_inBuffer=Unsafe[1].Float32Array,
     float64Array_inBuffer=Unsafe[1].Float64Array,
     set=caml_js_set,
     get$1=caml_js_get,
     unsafe_get=caml_js_get,
     dataView=Unsafe[1].DataView;
    function of_arrayBuffer(ab)
     {var uint8=new uint8Array_fromBuffer(ab);
      return caml_string_of_array(uint8)}
    var
     Js_of_ocaml_Typed_array=
      [0,
       arrayBuffer,
       runtime.caml_ba_kind_of_typed_array,
       runtime.caml_ba_to_typed_array,
       runtime.caml_ba_from_typed_array,
       int8Array_inBuffer,
       int8Array_inBuffer,
       int8Array_inBuffer,
       int8Array_inBuffer,
       int8Array_inBuffer,
       uint8Array_fromBuffer,
       uint8Array_fromBuffer,
       uint8Array_fromBuffer,
       uint8Array_fromBuffer,
       uint8Array_fromBuffer,
       int16Array_inBuffer,
       int16Array_inBuffer,
       int16Array_inBuffer,
       int16Array_inBuffer,
       int16Array_inBuffer,
       uint16Array_inBuffer,
       uint16Array_inBuffer,
       uint16Array_inBuffer,
       uint16Array_inBuffer,
       uint16Array_inBuffer,
       int32Array_inBuffer,
       int32Array_inBuffer,
       int32Array_inBuffer,
       int32Array_inBuffer,
       int32Array_inBuffer,
       uint32Array_inBuffer,
       uint32Array_inBuffer,
       uint32Array_inBuffer,
       uint32Array_inBuffer,
       uint32Array_inBuffer,
       float32Array_inBuffer,
       float32Array_inBuffer,
       float32Array_inBuffer,
       float32Array_inBuffer,
       float32Array_inBuffer,
       float64Array_inBuffer,
       float64Array_inBuffer,
       float64Array_inBuffer,
       float64Array_inBuffer,
       float64Array_inBuffer,
       set,
       get$1,
       unsafe_get,
       dataView,
       dataView,
       [0,
        runtime.bigstring_to_array_buffer,
        runtime.bigstring_to_typed_array,
        runtime.bigstring_of_array_buffer,
        runtime.bigstring_of_typed_array],
       [0,of_arrayBuffer,caml_string_of_array]];
    caml_register_global
     (1645,Js_of_ocaml_Typed_array,"Js_of_ocaml__Typed_array");
    var blob_constr=Unsafe[1].Blob;
    function filter_map(f,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var q=param$0[2],v=param$0[1],match=caml_call1(f,v);
          if(match){var v$0=match[1];return [0,v$0,filter_map(f,q)]}
          var param$0=q;
          continue}
        return 0}}
    function blob_raw(contentType,endings,a)
     {var _gp_=0;
      if(endings)
       var _gq_=116179762 <= endings[1]?_e_:_f_,_gr_=_gq_;
      else
       var _gr_=0;
      var
       _gs_=[0,[0,cst_type,contentType],[0,[0,cst_endings,_gr_],_gp_]],
       options=
        filter_map
         (function(param)
           {var v=param[2],name=param[1];
            if(v)
             {var v$0=v[1];return [0,[0,name,caml_jsstring_of_string(v$0)]]}
            return 0},
          _gs_),
       options$0=
        options
         ?runtime.caml_js_object(caml_call1(Stdlib_array[12],options))
         :t37;
      return new blob_constr(caml_js_from_array(a),options$0)}
    function blob_from_string(contentType,endings,s)
     {return blob_raw(contentType,endings,[0,caml_jsstring_of_string(s)])}
    function blob_from_any(contentType,endings,l)
     {function _gn_(param)
       {var _go_=param[1];
        if(155580615 === _go_){var s=param[2];return s}
        if(486041214 <= _go_)
         {if(1037850489 <= _go_){var a=param[2];return a}
          var a$0=param[2];
          return a$0}
        if(288368849 <= _go_)
         {var s$0=param[2];return caml_jsstring_of_string(s$0)}
        var b=param[2];
        return b}
      var l$0=caml_call2(Stdlib_list[17],_gn_,l);
      return blob_raw(contentType,endings,caml_call1(Stdlib_array[12],l$0))}
    function filename(file)
     {var match=caml_call1(Optdef[10],file.name);
      if(match){var name=match[1];return name}
      var match$0=caml_call1(Optdef[10],file.fileName);
      if(match$0){var name$0=match$0[1];return name$0}
      return caml_call1(Stdlib[2],cst_can_t_retrieve_file_name_n)}
    var doc_constr=Unsafe[1].Document;
    function document(e){return e instanceof doc_constr?e:no_handler}
    function blob(e){return e instanceof blob_constr?e:no_handler}
    function string(e){return typeof e === "string"?e:no_handler}
    function arrayBuffer$0(e){return e instanceof arrayBuffer?e:no_handler}
    var
     loadstart=caml_call1(Event[1],cst_loadstart),
     progress=caml_call1(Event[1],cst_progress),
     abort=caml_call1(Event[1],cst_abort),
     error=caml_call1(Event[1],cst_error),
     load=caml_call1(Event[1],cst_load),
     loadend=caml_call1(Event[1],cst_loadend),
     ReaderEvent=[0,loadstart,progress,abort,error,load,loadend],
     fileReader=Unsafe[1].FileReader,
     Js_of_ocaml_File=
      [0,
       blob_from_string,
       blob_from_any,
       [0,document,blob,function(_gm_){return _gm_},string,arrayBuffer$0],
       ReaderEvent,
       filename,
       fileReader,
       addEventListener];
    caml_register_global(1647,Js_of_ocaml_File,"Js_of_ocaml__File");
    var
     onIE=runtime.caml_js_on_ie(0) | 0,
     click=caml_call1(Event[1],cst_click),
     dblclick=caml_call1(Event[1],cst_dblclick),
     mousedown=caml_call1(Event[1],cst_mousedown),
     mouseup=caml_call1(Event[1],cst_mouseup),
     mouseover=caml_call1(Event[1],cst_mouseover),
     mousemove=caml_call1(Event[1],cst_mousemove),
     mouseout=caml_call1(Event[1],cst_mouseout),
     keypress=caml_call1(Event[1],cst_keypress),
     keydown=caml_call1(Event[1],cst_keydown),
     keyup=caml_call1(Event[1],cst_keyup),
     mousewheel=caml_call1(Event[1],cst_mousewheel),
     DOMMouseScroll=caml_call1(Event[1],cst_DOMMouseScroll),
     touchstart=caml_call1(Event[1],cst_touchstart),
     touchmove=caml_call1(Event[1],cst_touchmove),
     touchend=caml_call1(Event[1],cst_touchend),
     touchcancel=caml_call1(Event[1],cst_touchcancel),
     dragstart=caml_call1(Event[1],cst_dragstart),
     dragend=caml_call1(Event[1],cst_dragend),
     dragenter=caml_call1(Event[1],cst_dragenter),
     dragover=caml_call1(Event[1],cst_dragover),
     dragleave=caml_call1(Event[1],cst_dragleave),
     drag=caml_call1(Event[1],cst_drag),
     drop=caml_call1(Event[1],cst_drop),
     hashchange=caml_call1(Event[1],cst_hashchange),
     change=caml_call1(Event[1],cst_change),
     input=caml_call1(Event[1],cst_input),
     timeupdate=caml_call1(Event[1],cst_timeupdate),
     submit=caml_call1(Event[1],cst_submit),
     scroll=caml_call1(Event[1],cst_scroll),
     focus=caml_call1(Event[1],cst_focus),
     blur=caml_call1(Event[1],cst_blur),
     load$0=caml_call1(Event[1],cst_load$0),
     unload=caml_call1(Event[1],cst_unload),
     beforeunload=caml_call1(Event[1],cst_beforeunload),
     resize=caml_call1(Event[1],cst_resize),
     orientationchange=caml_call1(Event[1],cst_orientationchange),
     popstate=caml_call1(Event[1],cst_popstate),
     error$0=caml_call1(Event[1],cst_error$0),
     abort$0=caml_call1(Event[1],cst_abort$0),
     select=caml_call1(Event[1],cst_select),
     online=caml_call1(Event[1],cst_online),
     offline=caml_call1(Event[1],cst_offline),
     checking=caml_call1(Event[1],cst_checking),
     noupdate=caml_call1(Event[1],cst_noupdate),
     downloading=caml_call1(Event[1],cst_downloading),
     progress$0=caml_call1(Event[1],cst_progress$0),
     updateready=caml_call1(Event[1],cst_updateready),
     cached=caml_call1(Event[1],cst_cached),
     obsolete=caml_call1(Event[1],cst_obsolete),
     domContentLoaded=caml_call1(Event[1],cst_DOMContentLoaded),
     animationstart=caml_call1(Event[1],cst_animationstart),
     animationend=caml_call1(Event[1],cst_animationend),
     animationiteration=caml_call1(Event[1],cst_animationiteration),
     animationcancel=caml_call1(Event[1],cst_animationcancel),
     canplay=caml_call1(Event[1],cst_canplay),
     canplaythrough=caml_call1(Event[1],cst_canplaythrough),
     durationchange=caml_call1(Event[1],cst_durationchange),
     emptied=caml_call1(Event[1],cst_emptied),
     ended=caml_call1(Event[1],cst_ended),
     gotpointercapture=caml_call1(Event[1],cst_gotpointercapture),
     loadeddata=caml_call1(Event[1],cst_loadeddata),
     loadedmetadata=caml_call1(Event[1],cst_loadedmetadata),
     loadstart$0=caml_call1(Event[1],cst_loadstart$0),
     lostpointercapture=caml_call1(Event[1],cst_lostpointercapture),
     pause=caml_call1(Event[1],cst_pause),
     play=caml_call1(Event[1],cst_play),
     playing=caml_call1(Event[1],cst_playing),
     pointerenter=caml_call1(Event[1],cst_pointerenter),
     pointercancel=caml_call1(Event[1],cst_pointercancel),
     pointerdown=caml_call1(Event[1],cst_pointerdown),
     pointerleave=caml_call1(Event[1],cst_pointerleave),
     pointermove=caml_call1(Event[1],cst_pointermove),
     pointerout=caml_call1(Event[1],cst_pointerout),
     pointerover=caml_call1(Event[1],cst_pointerover),
     pointerup=caml_call1(Event[1],cst_pointerup),
     ratechange=caml_call1(Event[1],cst_ratechange),
     seeked=caml_call1(Event[1],cst_seeked),
     seeking=caml_call1(Event[1],cst_seeking),
     stalled=caml_call1(Event[1],cst_stalled),
     suspend=caml_call1(Event[1],cst_suspend),
     volumechange=caml_call1(Event[1],cst_volumechange),
     waiting=caml_call1(Event[1],cst_waiting),
     make$1=Event[1],
     Event$0=
      [0,
       click,
       dblclick,
       mousedown,
       mouseup,
       mouseover,
       mousemove,
       mouseout,
       keypress,
       keydown,
       keyup,
       mousewheel,
       DOMMouseScroll,
       touchstart,
       touchmove,
       touchend,
       touchcancel,
       dragstart,
       dragend,
       dragenter,
       dragover,
       dragleave,
       drag,
       drop,
       hashchange,
       change,
       input,
       timeupdate,
       submit,
       scroll,
       focus,
       blur,
       load$0,
       unload,
       beforeunload,
       resize,
       orientationchange,
       popstate,
       error$0,
       abort$0,
       select,
       online,
       offline,
       checking,
       noupdate,
       downloading,
       progress$0,
       updateready,
       cached,
       obsolete,
       domContentLoaded,
       animationstart,
       animationend,
       animationiteration,
       animationcancel,
       canplay,
       canplaythrough,
       durationchange,
       emptied,
       ended,
       gotpointercapture,
       loadeddata,
       loadedmetadata,
       loadstart$0,
       lostpointercapture,
       pause,
       play,
       playing,
       pointerenter,
       pointercancel,
       pointerdown,
       pointerleave,
       pointermove,
       pointerout,
       pointerover,
       pointerup,
       ratechange,
       seeked,
       seeking,
       stalled,
       suspend,
       volumechange,
       waiting,
       make$1],
     d="2d";
    function location_origin(loc)
     {function _gk_(o){return o}
      function _gl_(param)
       {var protocol=loc.protocol,hostname=loc.hostname,port=loc.port;
        if
         (caml_call2(symbol$8,protocol.length,0)
          &&
          caml_call2(symbol$8,hostname.length,0))
         return "";
        var origin=protocol.concat("//",hostname);
        return caml_call2(symbol$9,port.length,0)
                ?origin.concat(":",loc.port)
                :origin}
      return caml_call3(Optdef[7],loc.origin,_gl_,_gk_)}
    var _g_=Unsafe[1],document$0=_g_.document;
    function getElementById(id)
     {function _gh_(pnode){return pnode}
      function _gi_(param){throw Stdlib[8]}
      var _gj_=document$0.getElementById(caml_jsstring_of_string(id));
      return caml_call3(Opt[7],_gj_,_gi_,_gh_)}
    function getElementById_exn(id)
     {function _gd_(pnode){return pnode}
      function _ge_(param)
       {var _gg_=caml_call2(Stdlib_printf[4],_h_,id);
        return caml_call1(Stdlib[2],_gg_)}
      var _gf_=document$0.getElementById(caml_jsstring_of_string(id));
      return caml_call3(Opt[7],_gf_,_ge_,_gd_)}
    function getElementById_opt(id)
     {var _gc_=document$0.getElementById(caml_jsstring_of_string(id));
      return caml_call1(Opt[10],_gc_)}
    function getElementById_coerce(id,coerce)
     {function _f__(e)
       {var _gb_=caml_call1(coerce,e);return caml_call1(Opt[10],_gb_)}
      function _f$_(param){return 0}
      var _ga_=document$0.getElementById(caml_jsstring_of_string(id));
      return caml_call3(Opt[7],_ga_,_f$_,_f__)}
    function opt_iter(x,f){if(x){var v=x[1];return caml_call1(f,v)}return 0}
    function createElement(doc,name)
     {return doc.createElement(caml_jsstring_of_string(name))}
    function unsafeCreateElement(doc,name){return createElement(doc,name)}
    var createElementSyntax=[0,785140586];
    function unsafeCreateElementEx(type,name,doc,elt)
     {for(;;)
       {if(0 === type && 0 === name)return createElement(doc,elt);
        var _f4_=createElementSyntax[1];
        if(785140586 === _f4_)
         {try
           {var
             el=document$0.createElement('<input name="x">'),
             _f7_=el.tagName.toLowerCase() === "input"?1:0,
             _f8_=_f7_?el.name === "x"?1:0:_f7_,
             _f5_=_f8_}
          catch(_f9_){var _f5_=0}
          var _f6_=_f5_?982028505:-1003883683;
          createElementSyntax[1] = _f6_;
          continue}
        if(982028505 <= _f4_)
         {var a=new array_length();
          a.push("<",caml_jsstring_of_string(elt));
          opt_iter
           (type,
            function(t){a.push(' type="',caml_js_html_escape(t),'"');return 0});
          opt_iter
           (name,
            function(n){a.push(' name="',caml_js_html_escape(n),'"');return 0});
          a.push(">");
          return doc.createElement(a.join(""))}
        var res=createElement(doc,elt);
        opt_iter(type,function(t){return res.type = t});
        opt_iter(name,function(n){return res.name = n});
        return res}}
    function createHtml(doc){return unsafeCreateElement(doc,cst_html)}
    function createHead(doc){return unsafeCreateElement(doc,cst_head)}
    function createLink(doc){return unsafeCreateElement(doc,cst_link)}
    function createTitle(doc){return unsafeCreateElement(doc,cst_title)}
    function createMeta(doc){return unsafeCreateElement(doc,cst_meta)}
    function createBase(doc){return unsafeCreateElement(doc,cst_base)}
    function createStyle(doc){return unsafeCreateElement(doc,cst_style)}
    function createBody(doc){return unsafeCreateElement(doc,cst_body)}
    function createForm(doc){return unsafeCreateElement(doc,cst_form)}
    function createOptgroup(doc){return unsafeCreateElement(doc,cst_optgroup)}
    function createOption(doc){return unsafeCreateElement(doc,cst_option)}
    function createSelect(type,name,doc)
     {return unsafeCreateElementEx(type,name,doc,cst_select$0)}
    function createInput(type,name,doc)
     {return unsafeCreateElementEx(type,name,doc,cst_input$0)}
    function createTextarea(type,name,doc)
     {return unsafeCreateElementEx(type,name,doc,cst_textarea)}
    function createButton(type,name,doc)
     {return unsafeCreateElementEx(type,name,doc,cst_button)}
    function createLabel(doc){return unsafeCreateElement(doc,cst_label)}
    function createFieldset(doc){return unsafeCreateElement(doc,cst_fieldset)}
    function createLegend(doc){return unsafeCreateElement(doc,cst_legend)}
    function createUl(doc){return unsafeCreateElement(doc,cst_ul)}
    function createOl(doc){return unsafeCreateElement(doc,cst_ol)}
    function createDl(doc){return unsafeCreateElement(doc,cst_dl)}
    function createLi(doc){return unsafeCreateElement(doc,cst_li)}
    function createDiv(doc){return unsafeCreateElement(doc,cst_div)}
    function createEmbed(doc){return unsafeCreateElement(doc,cst_embed)}
    function createP(doc){return unsafeCreateElement(doc,cst_p)}
    function createH1(doc){return unsafeCreateElement(doc,cst_h1)}
    function createH2(doc){return unsafeCreateElement(doc,cst_h2)}
    function createH3(doc){return unsafeCreateElement(doc,cst_h3)}
    function createH4(doc){return unsafeCreateElement(doc,cst_h4)}
    function createH5(doc){return unsafeCreateElement(doc,cst_h5)}
    function createH6(doc){return unsafeCreateElement(doc,cst_h6)}
    function createQ(doc){return unsafeCreateElement(doc,cst_q)}
    function createBlockquote(doc)
     {return unsafeCreateElement(doc,cst_blockquote)}
    function createPre(doc){return unsafeCreateElement(doc,cst_pre)}
    function createBr(doc){return unsafeCreateElement(doc,cst_br)}
    function createHr(doc){return unsafeCreateElement(doc,cst_hr)}
    function createIns(doc){return unsafeCreateElement(doc,cst_ins)}
    function createDel(doc){return unsafeCreateElement(doc,cst_del)}
    function createA(doc){return unsafeCreateElement(doc,cst_a)}
    function createImg(doc){return unsafeCreateElement(doc,cst_img)}
    function createObject(doc){return unsafeCreateElement(doc,cst_object)}
    function createParam(doc){return unsafeCreateElement(doc,cst_param)}
    function createMap(doc){return unsafeCreateElement(doc,cst_map)}
    function createArea(doc){return unsafeCreateElement(doc,cst_area)}
    function createScript(doc){return unsafeCreateElement(doc,cst_script)}
    function createTable(doc){return unsafeCreateElement(doc,cst_table)}
    function createCaption(doc){return unsafeCreateElement(doc,cst_caption)}
    function createCol(doc){return unsafeCreateElement(doc,cst_col)}
    function createColgroup(doc){return unsafeCreateElement(doc,cst_colgroup)}
    function createThead(doc){return unsafeCreateElement(doc,cst_thead)}
    function createTfoot(doc){return unsafeCreateElement(doc,cst_tfoot)}
    function createTbody(doc){return unsafeCreateElement(doc,cst_tbody)}
    function createTr(doc){return unsafeCreateElement(doc,cst_tr)}
    function createTh(doc){return unsafeCreateElement(doc,cst_th)}
    function createTd(doc){return unsafeCreateElement(doc,cst_td)}
    function createSub(doc){return createElement(doc,cst_sub)}
    function createSup(doc){return createElement(doc,cst_sup)}
    function createSpan(doc){return createElement(doc,cst_span)}
    function createTt(doc){return createElement(doc,cst_tt)}
    function createI(doc){return createElement(doc,cst_i)}
    function createB(doc){return createElement(doc,cst_b)}
    function createBig(doc){return createElement(doc,cst_big)}
    function createSmall(doc){return createElement(doc,cst_small)}
    function createEm(doc){return createElement(doc,cst_em)}
    function createStrong(doc){return createElement(doc,cst_strong)}
    function createCite(doc){return createElement(doc,cst_cite)}
    function createDfn(doc){return createElement(doc,cst_dfn)}
    function createCode(doc){return createElement(doc,cst_code)}
    function createSamp(doc){return createElement(doc,cst_samp)}
    function createKbd(doc){return createElement(doc,cst_kbd)}
    function createVar(doc){return createElement(doc,cst_var)}
    function createAbbr(doc){return createElement(doc,cst_abbr)}
    function createDd(doc){return createElement(doc,cst_dd)}
    function createDt(doc){return createElement(doc,cst_dt)}
    function createNoscript(doc){return createElement(doc,cst_noscript)}
    function createAddress(doc){return createElement(doc,cst_address)}
    function createFrameset(doc){return unsafeCreateElement(doc,cst_frameset)}
    function createFrame(doc){return unsafeCreateElement(doc,cst_frame)}
    function createIframe(doc){return unsafeCreateElement(doc,cst_iframe)}
    function createAudio(doc){return unsafeCreateElement(doc,cst_audio)}
    function createVideo(doc){return unsafeCreateElement(doc,cst_video)}
    var
     Canvas_not_available=
      [248,cst_Js_of_ocaml_Dom_html_Canva,caml_fresh_oo_id(0)];
    function createCanvas(doc)
     {var c=unsafeCreateElement(doc,cst_canvas);
      if(1 - caml_call1(Opt[5],c.getContext))throw Canvas_not_available;
      return c}
    var
     html_element=Unsafe[1].HTMLElement,
     element$0=
      html_element === t37
       ?function(e){return e.innerHTML === t37?no_handler:e}
       :function(e){return e instanceof html_element?e:no_handler};
    function unsafeCoerce(tag,e)
     {var _f3_=caml_jsstring_of_string(tag);
      return e.tagName.toLowerCase() === _f3_?e:no_handler}
    function a(e){return unsafeCoerce(cst_a$0,e)}
    function area(e){return unsafeCoerce(cst_area$0,e)}
    function base(e){return unsafeCoerce(cst_base$0,e)}
    function blockquote(e){return unsafeCoerce(cst_blockquote$0,e)}
    function body(e){return unsafeCoerce(cst_body$0,e)}
    function br(e){return unsafeCoerce(cst_br$0,e)}
    function button(e){return unsafeCoerce(cst_button$0,e)}
    function canvas(e){return unsafeCoerce(cst_canvas$0,e)}
    function caption(e){return unsafeCoerce(cst_caption$0,e)}
    function col(e){return unsafeCoerce(cst_col$0,e)}
    function colgroup(e){return unsafeCoerce(cst_colgroup$0,e)}
    function del(e){return unsafeCoerce(cst_del$0,e)}
    function div(e){return unsafeCoerce(cst_div$0,e)}
    function dl(e){return unsafeCoerce(cst_dl$0,e)}
    function fieldset(e){return unsafeCoerce(cst_fieldset$0,e)}
    function embed(e){return unsafeCoerce(cst_embed$0,e)}
    function form(e){return unsafeCoerce(cst_form$0,e)}
    function frameset(e){return unsafeCoerce(cst_frameset$0,e)}
    function frame(e){return unsafeCoerce(cst_frame$0,e)}
    function h1(e){return unsafeCoerce(cst_h1$0,e)}
    function h2(e){return unsafeCoerce(cst_h2$0,e)}
    function h3(e){return unsafeCoerce(cst_h3$0,e)}
    function h4(e){return unsafeCoerce(cst_h4$0,e)}
    function h5(e){return unsafeCoerce(cst_h5$0,e)}
    function h6(e){return unsafeCoerce(cst_h6$0,e)}
    function head(e){return unsafeCoerce(cst_head$0,e)}
    function hr(e){return unsafeCoerce(cst_hr$0,e)}
    function html(e){return unsafeCoerce(cst_html$0,e)}
    function iframe(e){return unsafeCoerce(cst_iframe$0,e)}
    function img(e){return unsafeCoerce(cst_img$0,e)}
    function input$0(e){return unsafeCoerce(cst_input$1,e)}
    function ins(e){return unsafeCoerce(cst_ins$0,e)}
    function label(e){return unsafeCoerce(cst_label$0,e)}
    function legend(e){return unsafeCoerce(cst_legend$0,e)}
    function li(e){return unsafeCoerce(cst_li$0,e)}
    function link(e){return unsafeCoerce(cst_link$0,e)}
    function map$2(e){return unsafeCoerce(cst_map$0,e)}
    function meta(e){return unsafeCoerce(cst_meta$0,e)}
    function object(e){return unsafeCoerce(cst_object$0,e)}
    function ol(e){return unsafeCoerce(cst_ol$0,e)}
    function optgroup(e){return unsafeCoerce(cst_optgroup$0,e)}
    function option$1(e){return unsafeCoerce(cst_option$0,e)}
    function p(e){return unsafeCoerce(cst_p$0,e)}
    function param(e){return unsafeCoerce(cst_param$0,e)}
    function pre(e){return unsafeCoerce(cst_pre$0,e)}
    function q(e){return unsafeCoerce(cst_q$0,e)}
    function script(e){return unsafeCoerce(cst_script$0,e)}
    function select$0(e){return unsafeCoerce(cst_select$1,e)}
    function style(e){return unsafeCoerce(cst_style$0,e)}
    function table(e){return unsafeCoerce(cst_table$0,e)}
    function tbody(e){return unsafeCoerce(cst_tbody$0,e)}
    function td(e){return unsafeCoerce(cst_td$0,e)}
    function textarea(e){return unsafeCoerce(cst_textarea$0,e)}
    function tfoot(e){return unsafeCoerce(cst_tfoot$0,e)}
    function th(e){return unsafeCoerce(cst_th$0,e)}
    function thead(e){return unsafeCoerce(cst_thead$0,e)}
    function title(e){return unsafeCoerce(cst_title$0,e)}
    function tr(e){return unsafeCoerce(cst_tr$0,e)}
    function ul(e){return unsafeCoerce(cst_ul$0,e)}
    function audio(e){return unsafeCoerce(cst_audio$0,e)}
    function video(e){return unsafeCoerce(cst_video$0,e)}
    function unsafeCoerceEvent(constr,ev)
     {if(constr !== t37 && ev instanceof constr)return ev;return no_handler}
    function mouseEvent(ev){return unsafeCoerceEvent(Unsafe[1].MouseEvent,ev)}
    function keyboardEvent(ev)
     {return unsafeCoerceEvent(Unsafe[1].KeyboardEvent,ev)}
    function wheelEvent(ev){return unsafeCoerceEvent(Unsafe[1].WheelEvent,ev)}
    function mouseScrollEvent(ev)
     {return unsafeCoerceEvent(Unsafe[1].MouseScrollEvent,ev)}
    function popStateEvent(ev)
     {return unsafeCoerceEvent(Unsafe[1].PopStateEvent,ev)}
    function eventRelatedTarget(e)
     {function _f0_(param)
       {var match=caml_string_of_jsstring(e.type);
        if(caml_string_notequal(match,cst_mouseout$0))
         {if(caml_string_notequal(match,cst_mouseover$0))return no_handler;
          var _f1_=function(param){throw [0,Assert_failure,_i_]};
          return caml_call2(Optdef[8],e.fromElement,_f1_)}
        function _f2_(param){throw [0,Assert_failure,_j_]}
        return caml_call2(Optdef[8],e.toElement,_f2_)}
      return caml_call2(Optdef[8],e.relatedTarget,_f0_)}
    function eventAbsolutePosition(e)
     {var body=document$0.body,html=document$0.documentElement;
      return [0,
              (e.clientX + body.scrollLeft | 0) + html.scrollLeft | 0,
              (e.clientY + body.scrollTop | 0) + html.scrollTop | 0]}
    function eventAbsolutePosition$0(e)
     {function _fW_(x)
       {function _fY_(y){return [0,x,y]}
        function _fZ_(param){return eventAbsolutePosition(e)}
        return caml_call3(Optdef[7],e.pageY,_fZ_,_fY_)}
      function _fX_(param){return eventAbsolutePosition(e)}
      return caml_call3(Optdef[7],e.pageX,_fX_,_fW_)}
    function elementClientPosition(e)
     {var
       r=e.getBoundingClientRect(),
       body=document$0.body,
       html=document$0.documentElement;
      return [0,
              ((r.left | 0) - body.clientLeft | 0) - html.clientLeft | 0,
              ((r.top | 0) - body.clientTop | 0) - html.clientTop | 0]}
    function getDocumentScroll(param)
     {var body=document$0.body,html=document$0.documentElement;
      return [0,
              body.scrollLeft + html.scrollLeft | 0,
              body.scrollTop + html.scrollTop | 0]}
    function buttonPressed(ev)
     {function _fU_(x){return x}
      function _fV_(param)
       {var match=ev.button,switcher=match - 1 | 0;
        if(! (3 < switcher >>> 0))
         switch(switcher)
          {case 0:return 1;case 1:return 3;case 2:break;default:return 2}
        return 0}
      return caml_call3(Optdef[7],ev.which,_fV_,_fU_)}
    function addMousewheelEventListenerWith(e,capture,once,passive,h)
     {var d=createDiv(document$0);
      d.setAttribute("onmousewheel","return;");
      if(typeof d.onmousewheel === "function")
       {var
         _fQ_=
          handler
           (function(e)
             {function _fS_(param){return 0}
              var
               dx=
                (- caml_call2(Optdef[8],e.wheelDeltaX,_fS_) | 0) / 40 | 0;
              function _fT_(param){return e.wheelDelta}
              var
               dy=
                (- caml_call2(Optdef[8],e.wheelDeltaY,_fT_) | 0) / 40 | 0;
              return caml_call3(h,e,dx,dy)});
        return addEventListenerWithOptions
                (e,Event$0[11],capture,once,passive,_fQ_)}
      var
       _fR_=
        handler
         (function(e)
           {var d=e.detail;
            return e.axis === e.HORIZONTAL
                    ?caml_call3(h,e,d,0)
                    :caml_call3(h,e,0,d)});
      return addEventListenerWithOptions
              (e,Event$0[12],capture,once,passive,_fR_)}
    function addMousewheelEventListener(e,h,capt)
     {return addMousewheelEventListenerWith(e,[0,capt],0,0,h)}
    function f(v)
     {var
       match=caml_string_of_jsstring(v),
       switch$0=caml_string_compare(match,cst_KeyH);
      if(0 <= switch$0)
       {if(! (0 < switch$0))return 8;
        var switch$1=caml_string_compare(match,cst_Numpad4);
        if(0 <= switch$1)
         {if(! (0 < switch$1))return 72;
          var switch$2=caml_string_compare(match,cst_PageUp);
          if(0 <= switch$2)
           {if(! (0 < switch$2))return 98;
            var switch$3=caml_string_compare(match,cst_ShiftRight);
            if(0 <= switch$3)
             {if(! (0 < switch$3))return 91;
              if(! caml_string_notequal(match,cst_Slash))return 55;
              if(! caml_string_notequal(match,cst_Space))return 41;
              if(! caml_string_notequal(match,cst_Tab))return 39;
              if(! caml_string_notequal(match,cst_VolumeDown))return 103;
              if(! caml_string_notequal(match,cst_VolumeMute))return 102;
              if(! caml_string_notequal(match,cst_VolumeUp))return 104}
            else
             {if(! caml_string_notequal(match,cst_Pause))return 123;
              if(! caml_string_notequal(match,cst_Period))return 54;
              if(! caml_string_notequal(match,cst_PrintScreen))return 120;
              if(! caml_string_notequal(match,cst_Quote))return 50;
              if(! caml_string_notequal(match,cst_ScrollLock))return 119;
              if(! caml_string_notequal(match,cst_Semicolon))return 49;
              if(! caml_string_notequal(match,cst_ShiftLeft))return 90}}
          else
           {var switch$4=caml_string_compare(match,cst_NumpadDivide);
            if(0 <= switch$4)
             {if(! (0 < switch$4))return 84;
              if(! caml_string_notequal(match,cst_NumpadEnter))return 83;
              if(! caml_string_notequal(match,cst_NumpadEqual))return 82;
              if(! caml_string_notequal(match,cst_NumpadMultiply))return 78;
              if(! caml_string_notequal(match,cst_NumpadSubtract))return 79;
              if(! caml_string_notequal(match,cst_OSLeft))return 117;
              if(! caml_string_notequal(match,cst_OSRight))return 118;
              if(! caml_string_notequal(match,cst_PageDown))return 99}
            else
             {if(! caml_string_notequal(match,cst_Numpad5))return 73;
              if(! caml_string_notequal(match,cst_Numpad6))return 74;
              if(! caml_string_notequal(match,cst_Numpad7))return 75;
              if(! caml_string_notequal(match,cst_Numpad8))return 76;
              if(! caml_string_notequal(match,cst_Numpad9))return 77;
              if(! caml_string_notequal(match,cst_NumpadAdd))return 80;
              if(! caml_string_notequal(match,cst_NumpadDecimal))return 81}}}
        else
         {var switch$5=caml_string_compare(match,cst_KeyX);
          if(0 <= switch$5)
           {if(! (0 < switch$5))return 24;
            var switch$6=caml_string_compare(match,cst_MetaRight);
            if(0 <= switch$6)
             {if(! (0 < switch$6))return 89;
              if(! caml_string_notequal(match,cst_Minus))return 37;
              if(! caml_string_notequal(match,cst_NumLock))return 85;
              if(! caml_string_notequal(match,cst_Numpad0))return 68;
              if(! caml_string_notequal(match,cst_Numpad1))return 69;
              if(! caml_string_notequal(match,cst_Numpad2))return 70;
              if(! caml_string_notequal(match,cst_Numpad3))return 71}
            else
             {if(! caml_string_notequal(match,cst_KeyY))return 25;
              if(! caml_string_notequal(match,cst_KeyZ))return 26;
              if(! caml_string_notequal(match,cst_MediaPlayPause))return 107;
              if(! caml_string_notequal(match,cst_MediaStop))return 108;
              if(! caml_string_notequal(match,cst_MediaTrackNext))return 106;
              if(! caml_string_notequal(match,cst_MediaTrackPrevious))
               return 105;
              if(! caml_string_notequal(match,cst_MetaLeft))return 88}}
          else
           {var switch$7=caml_string_compare(match,cst_KeyP);
            if(0 <= switch$7)
             {if(! (0 < switch$7))return 16;
              if(! caml_string_notequal(match,cst_KeyQ))return 17;
              if(! caml_string_notequal(match,cst_KeyR))return 18;
              if(! caml_string_notequal(match,cst_KeyS))return 19;
              if(! caml_string_notequal(match,cst_KeyT))return 20;
              if(! caml_string_notequal(match,cst_KeyU))return 21;
              if(! caml_string_notequal(match,cst_KeyV))return 22;
              if(! caml_string_notequal(match,cst_KeyW))return 23}
            else
             {if(! caml_string_notequal(match,cst_KeyI))return 9;
              if(! caml_string_notequal(match,cst_KeyJ))return 10;
              if(! caml_string_notequal(match,cst_KeyK))return 11;
              if(! caml_string_notequal(match,cst_KeyL))return 12;
              if(! caml_string_notequal(match,cst_KeyM))return 13;
              if(! caml_string_notequal(match,cst_KeyN))return 14;
              if(! caml_string_notequal(match,cst_KeyO))return 15}}}}
      else
       {var switch$8=caml_string_compare(match,cst_Digit6);
        if(0 <= switch$8)
         {if(! (0 < switch$8))return 33;
          var switch$9=caml_string_compare(match,cst_F6);
          if(0 <= switch$9)
           {if(! (0 < switch$9))return 61;
            var switch$10=caml_string_compare(match,cst_KeyA);
            if(0 <= switch$10)
             {if(! (0 < switch$10))return 1;
              if(! caml_string_notequal(match,cst_KeyB))return 2;
              if(! caml_string_notequal(match,cst_KeyC))return 3;
              if(! caml_string_notequal(match,cst_KeyD))return 4;
              if(! caml_string_notequal(match,cst_KeyE))return 5;
              if(! caml_string_notequal(match,cst_KeyF))return 6;
              if(! caml_string_notequal(match,cst_KeyG))return 7}
            else
             {if(! caml_string_notequal(match,cst_F7))return 62;
              if(! caml_string_notequal(match,cst_F8))return 63;
              if(! caml_string_notequal(match,cst_F9))return 64;
              if(! caml_string_notequal(match,cst_Home))return 100;
              if(! caml_string_notequal(match,cst_Insert))return 44;
              if(! caml_string_notequal(match,cst_IntlBackslash))return 121;
              if(! caml_string_notequal(match,cst_IntlYen))return 122}}
          else
           {var switch$11=caml_string_compare(match,cst_F1);
            if(0 <= switch$11)
             {if(! (0 < switch$11))return 56;
              if(! caml_string_notequal(match,cst_F10))return 65;
              if(! caml_string_notequal(match,cst_F11))return 66;
              if(! caml_string_notequal(match,cst_F12))return 67;
              if(! caml_string_notequal(match,cst_F2))return 57;
              if(! caml_string_notequal(match,cst_F3))return 58;
              if(! caml_string_notequal(match,cst_F4))return 59;
              if(! caml_string_notequal(match,cst_F5))return 60}
            else
             {if(! caml_string_notequal(match,cst_Digit7))return 34;
              if(! caml_string_notequal(match,cst_Digit8))return 35;
              if(! caml_string_notequal(match,cst_Digit9))return 36;
              if(! caml_string_notequal(match,cst_End))return 101;
              if(! caml_string_notequal(match,cst_Enter))return 40;
              if(! caml_string_notequal(match,cst_Equal))return 38;
              if(! caml_string_notequal(match,cst_Escape))return 42}}}
        else
         {var switch$12=caml_string_compare(match,cst_BrowserRefresh);
          if(0 <= switch$12)
           {if(! (0 < switch$12))return 113;
            var switch$13=caml_string_compare(match,cst_Delete);
            if(0 <= switch$13)
             {if(! (0 < switch$13))return 45;
              if(! caml_string_notequal(match,cst_Digit0))return 27;
              if(! caml_string_notequal(match,cst_Digit1))return 28;
              if(! caml_string_notequal(match,cst_Digit2))return 29;
              if(! caml_string_notequal(match,cst_Digit3))return 30;
              if(! caml_string_notequal(match,cst_Digit4))return 31;
              if(! caml_string_notequal(match,cst_Digit5))return 32}
            else
             {if(! caml_string_notequal(match,cst_BrowserSearch))return 110;
              if(! caml_string_notequal(match,cst_BrowserStop))return 114;
              if(! caml_string_notequal(match,cst_CapsLock))return 46;
              if(! caml_string_notequal(match,cst_Comma))return 53;
              if(! caml_string_notequal(match,cst_ContextMenu))return 109;
              if(! caml_string_notequal(match,cst_ControlLeft))return 86;
              if(! caml_string_notequal(match,cst_ControlRight))return 87}}
          else
           {var switch$14=caml_string_compare(match,cst_Backslash);
            if(0 <= switch$14)
             {if(! (0 < switch$14))return 52;
              if(! caml_string_notequal(match,cst_Backspace))return 43;
              if(! caml_string_notequal(match,cst_BracketLeft))return 47;
              if(! caml_string_notequal(match,cst_BracketRight))return 48;
              if(! caml_string_notequal(match,cst_BrowserBack))return 116;
              if(! caml_string_notequal(match,cst_BrowserFavorites))
               return 112;
              if(! caml_string_notequal(match,cst_BrowserForward))return 115;
              if(! caml_string_notequal(match,cst_BrowserHome))return 111}
            else
             {if(! caml_string_notequal(match,cst_AltLeft))return 92;
              if(! caml_string_notequal(match,cst_AltRight))return 93;
              if(! caml_string_notequal(match,cst_ArrowDown))return 97;
              if(! caml_string_notequal(match,cst_ArrowLeft))return 94;
              if(! caml_string_notequal(match,cst_ArrowRight))return 95;
              if(! caml_string_notequal(match,cst_ArrowUp))return 96;
              if(! caml_string_notequal(match,cst_Backquote))return 51}}}}
      return 0}
    function try_key_code_left(param)
     {if(19 <= param)
       {if(91 === param)return 88}
      else
       if(16 <= param)
        {var switcher=param - 16 | 0;
         switch(switcher){case 0:return 90;case 1:return 86;default:return 92}}
      return 0}
    function try_key_code_right(param)
     {if(19 <= param)
       {if(91 === param)return 89}
      else
       if(16 <= param)
        {var switcher=param - 16 | 0;
         switch(switcher){case 0:return 91;case 1:return 87;default:return 93}}
      return 0}
    function try_key_code_numpad(param)
     {if(47 <= param)
       {var switcher=param - 96 | 0;
        if(! (15 < switcher >>> 0))
         switch(switcher)
          {case 0:return 68;
           case 1:return 69;
           case 2:return 70;
           case 3:return 71;
           case 4:return 72;
           case 5:return 73;
           case 6:return 74;
           case 7:return 75;
           case 8:return 76;
           case 9:return 77;
           case 10:return 78;
           case 11:return 80;
           case 12:break;
           case 13:return 79;
           case 14:return 81;
           default:return 84}}
      else
       if(12 <= param)
        {var switcher$0=param - 12 | 0;
         switch(switcher$0)
          {case 0:return 73;
           case 1:return 83;
           case 21:return 77;
           case 22:return 71;
           case 23:return 69;
           case 24:return 75;
           case 25:return 72;
           case 26:return 76;
           case 27:return 74;
           case 28:return 70;
           case 33:return 68;
           case 34:return 81
           }}
      return 0}
    function try_key_code_normal(param)
     {var switcher=param - 8 | 0;
      if(! (214 < switcher >>> 0))
       {var _fP_=switcher;
        if(67 <= _fP_)
         switch(_fP_)
          {case 67:return 11;
           case 68:return 12;
           case 69:return 13;
           case 70:return 14;
           case 71:return 15;
           case 72:return 16;
           case 73:return 17;
           case 74:return 18;
           case 75:return 19;
           case 76:return 20;
           case 77:return 21;
           case 78:return 22;
           case 79:return 23;
           case 80:return 24;
           case 81:return 25;
           case 82:return 26;
           case 85:return 109;
           case 104:return 56;
           case 105:return 57;
           case 106:return 58;
           case 107:return 59;
           case 108:return 60;
           case 109:return 61;
           case 110:return 62;
           case 111:return 63;
           case 112:return 64;
           case 113:return 65;
           case 114:return 66;
           case 115:return 67;
           case 137:return 119;
           case 178:return 49;
           case 179:return 38;
           case 180:return 53;
           case 181:return 37;
           case 182:return 54;
           case 183:return 55;
           case 184:return 51;
           case 211:return 47;
           case 212:return 52;
           case 213:return 48;
           case 214:return 50
           }
        else
         switch(_fP_)
          {case 0:return 43;
           case 1:return 39;
           case 5:return 40;
           case 11:return 123;
           case 12:return 46;
           case 19:return 42;
           case 24:return 41;
           case 25:return 98;
           case 26:return 99;
           case 27:return 101;
           case 28:return 100;
           case 29:return 94;
           case 30:return 96;
           case 31:return 95;
           case 32:return 97;
           case 34:return 120;
           case 37:return 44;
           case 38:return 45;
           case 40:return 27;
           case 41:return 28;
           case 42:return 29;
           case 43:return 30;
           case 44:return 31;
           case 45:return 32;
           case 46:return 33;
           case 47:return 34;
           case 48:return 35;
           case 49:return 36;
           case 57:return 1;
           case 58:return 2;
           case 59:return 3;
           case 60:return 4;
           case 61:return 5;
           case 62:return 6;
           case 63:return 7;
           case 64:return 8;
           case 65:return 9;
           case 66:return 10
           }}
      return 0}
    function make_unidentified(param){return 0}
    function run_next(value,f,v){return v?v:caml_call1(f,value)}
    function symbol$11(x,f){return caml_call1(f,x)}
    function of_event(evt)
     {var _fI_=evt.keyCode;
      function _fJ_(_fO_){return run_next(_fI_,try_key_code_normal,_fO_)}
      var match=evt.location,switcher=match - 1 | 0;
      if(2 < switcher >>> 0)
       var _fK_=make_unidentified;
      else
       switch(switcher)
        {case 0:
          var
           _fF_=evt.keyCode,
           _fK_=function(_fM_){return run_next(_fF_,try_key_code_left,_fM_)};
          break;
         case 1:
          var
           _fG_=evt.keyCode,
           _fK_=function(_fL_){return run_next(_fG_,try_key_code_right,_fL_)};
          break;
         default:
          var
           _fH_=evt.keyCode,
           _fK_=function(_fN_){return run_next(_fH_,try_key_code_numpad,_fN_)}}
      var value=evt.code;
      return symbol$11
              (symbol$11
                (symbol$11
                  (0,
                   function(v)
                    {return v?v:caml_call3(Optdef[7],value,make_unidentified,f)}),
                 _fK_),
               _fJ_)}
    function char_of_int(value)
     {if(caml_call2(symbol$5,0,value))
       try
        {var _fD_=[0,caml_call1(Stdlib_uchar[8],value)];return _fD_}
       catch(_fE_){return 0}
      return 0}
    function empty_string(param){return ""}
    function none(param){return 0}
    function of_event$0(evt)
     {var key=caml_call2(Optdef[8],evt.key,empty_string),match=key.length;
      return 0 === match
              ?caml_call3(Optdef[7],evt.charCode,none,char_of_int)
              :1 === match?char_of_int(key.charCodeAt(0) | 0):0}
    function element$1(_fC_){return _fC_}
    function tagged(e)
     {var tag=caml_string_of_jsbytes(e.tagName.toLowerCase());
      if(caml_call2(symbol$8,caml_ml_string_length(tag),0))return [61,e];
      var match=runtime.caml_string_unsafe_get(tag,0),switcher=match - 97 | 0;
      if(! (21 < switcher >>> 0))
       switch(switcher)
        {case 0:
          return caml_string_notequal(tag,cst_a$1)
                  ?caml_string_notequal(tag,cst_area$1)
                    ?caml_string_notequal(tag,cst_audio$1)?[61,e]:[2,e]
                    :[1,e]
                  :[0,e];
         case 1:
          return caml_string_notequal(tag,cst_base$1)
                  ?caml_string_notequal(tag,cst_blockquote$1)
                    ?caml_string_notequal(tag,cst_body$1)
                      ?caml_string_notequal(tag,cst_br$1)
                        ?caml_string_notequal(tag,cst_button$1)?[61,e]:[7,e]
                        :[6,e]
                      :[5,e]
                    :[4,e]
                  :[3,e];
         case 2:
          return caml_string_notequal(tag,cst_canvas$1)
                  ?caml_string_notequal(tag,cst_caption$1)
                    ?caml_string_notequal(tag,cst_col$1)
                      ?caml_string_notequal(tag,cst_colgroup$1)?[61,e]:[11,e]
                      :[10,e]
                    :[9,e]
                  :[8,e];
         case 3:
          return caml_string_notequal(tag,cst_del$1)
                  ?caml_string_notequal(tag,cst_div$1)
                    ?caml_string_notequal(tag,cst_dl$1)?[61,e]:[14,e]
                    :[13,e]
                  :[12,e];
         case 4:return caml_string_notequal(tag,cst_embed$1)?[61,e]:[15,e];
         case 5:
          return caml_string_notequal(tag,cst_fieldset$1)
                  ?caml_string_notequal(tag,cst_form$1)
                    ?caml_string_notequal(tag,cst_frame$1)
                      ?caml_string_notequal(tag,cst_frameset$1)?[61,e]:[18,e]
                      :[19,e]
                    :[17,e]
                  :[16,e];
         case 7:
          return caml_string_notequal(tag,cst_h1$1)
                  ?caml_string_notequal(tag,cst_h2$1)
                    ?caml_string_notequal(tag,cst_h3$1)
                      ?caml_string_notequal(tag,cst_h4$1)
                        ?caml_string_notequal(tag,cst_h5$1)
                          ?caml_string_notequal(tag,cst_h6$1)
                            ?caml_string_notequal(tag,cst_head$1)
                              ?caml_string_notequal(tag,cst_hr$1)
                                ?caml_string_notequal(tag,cst_html$1)?[61,e]:[28,e]
                                :[27,e]
                              :[26,e]
                            :[25,e]
                          :[24,e]
                        :[23,e]
                      :[22,e]
                    :[21,e]
                  :[20,e];
         case 8:
          return caml_string_notequal(tag,cst_iframe$1)
                  ?caml_string_notequal(tag,cst_img$1)
                    ?caml_string_notequal(tag,cst_input$2)
                      ?caml_string_notequal(tag,cst_ins$1)?[61,e]:[32,e]
                      :[31,e]
                    :[30,e]
                  :[29,e];
         case 11:
          return caml_string_notequal(tag,cst_label$1)
                  ?caml_string_notequal(tag,cst_legend$1)
                    ?caml_string_notequal(tag,cst_li$1)
                      ?caml_string_notequal(tag,cst_link$1)?[61,e]:[36,e]
                      :[35,e]
                    :[34,e]
                  :[33,e];
         case 12:
          return caml_string_notequal(tag,cst_map$1)
                  ?caml_string_notequal(tag,cst_meta$1)?[61,e]:[38,e]
                  :[37,e];
         case 14:
          return caml_string_notequal(tag,cst_object$1)
                  ?caml_string_notequal(tag,cst_ol$1)
                    ?caml_string_notequal(tag,cst_optgroup$1)
                      ?caml_string_notequal(tag,cst_option$1)?[61,e]:[42,e]
                      :[41,e]
                    :[40,e]
                  :[39,e];
         case 15:
          return caml_string_notequal(tag,cst_p$1)
                  ?caml_string_notequal(tag,cst_param$1)
                    ?caml_string_notequal(tag,cst_pre$1)?[61,e]:[45,e]
                    :[44,e]
                  :[43,e];
         case 16:return caml_string_notequal(tag,cst_q$1)?[61,e]:[46,e];
         case 18:
          return caml_string_notequal(tag,cst_script$1)
                  ?caml_string_notequal(tag,cst_select$2)
                    ?caml_string_notequal(tag,cst_style$1)?[61,e]:[49,e]
                    :[48,e]
                  :[47,e];
         case 19:
          return caml_string_notequal(tag,cst_table$1)
                  ?caml_string_notequal(tag,cst_tbody$1)
                    ?caml_string_notequal(tag,cst_td$1)
                      ?caml_string_notequal(tag,cst_textarea$1)
                        ?caml_string_notequal(tag,cst_tfoot$1)
                          ?caml_string_notequal(tag,cst_th$1)
                            ?caml_string_notequal(tag,cst_thead$1)
                              ?caml_string_notequal(tag,cst_title$1)
                                ?caml_string_notequal(tag,cst_tr$1)?[61,e]:[58,e]
                                :[57,e]
                              :[56,e]
                            :[55,e]
                          :[54,e]
                        :[53,e]
                      :[52,e]
                    :[51,e]
                  :[50,e];
         case 20:return caml_string_notequal(tag,cst_ul$1)?[61,e]:[59,e];
         case 21:return caml_string_notequal(tag,cst_video$1)?[61,e]:[60,e]
         }
      return [61,e]}
    function opt_tagged(e)
     {function _fA_(e){return [0,tagged(e)]}
      function _fB_(param){return 0}
      return caml_call3(Opt[7],e,_fB_,_fA_)}
    function taggedEvent(ev)
     {function _fl_(ev){return [0,ev]}
      function _fm_(param)
       {function _fo_(ev){return [1,ev]}
        function _fp_(param)
         {function _fr_(ev){return [2,ev]}
          function _fs_(param)
           {function _fu_(ev){return [3,ev]}
            function _fv_(param)
             {function _fx_(ev){return [4,ev]}
              function _fy_(param){return [5,ev]}
              var _fz_=popStateEvent(ev);
              return caml_call3(Opt[7],_fz_,_fy_,_fx_)}
            var _fw_=mouseScrollEvent(ev);
            return caml_call3(Opt[7],_fw_,_fv_,_fu_)}
          var _ft_=wheelEvent(ev);
          return caml_call3(Opt[7],_ft_,_fs_,_fr_)}
        var _fq_=keyboardEvent(ev);
        return caml_call3(Opt[7],_fq_,_fp_,_fo_)}
      var _fn_=mouseEvent(ev);
      return caml_call3(Opt[7],_fn_,_fm_,_fl_)}
    function opt_taggedEvent(ev)
     {function _fj_(ev){return [0,taggedEvent(ev)]}
      function _fk_(param){return 0}
      return caml_call3(Opt[7],ev,_fk_,_fj_)}
    function stopPropagation(ev)
     {function _fh_(param){return ev.stopPropagation()}
      function _fi_(param){return ev.cancelBubble = true$0}
      return caml_call3(Optdef[7],ev.stopPropagation,_fi_,_fh_)}
    var
     requestAnimationFrame=
      runtime.caml_js_pure_expr
       (function(param)
         {var
           l=
            [0,
             _g_.requestAnimationFrame,
             [0,
              _g_.mozRequestAnimationFrame,
              [0,
               _g_.webkitRequestAnimationFrame,
               [0,
                _g_.oRequestAnimationFrame,
                [0,_g_.msRequestAnimationFrame,0]]]]];
          try
           {var
             _fe_=function(c){return caml_call1(Optdef[5],c)},
             req=caml_call2(Stdlib_list[35],_fe_,l),
             _ff_=function(callback){return req(callback)};
            return _ff_}
          catch(_fg_)
           {_fg_ = caml_wrap_exception(_fg_);
            if(_fg_ === Stdlib[8])
             {var
               now=function(param){return new date_ms().getTime()},
               last=[0,now(0)];
              return function(callback)
               {var
                 t=now(0),
                 dt=last[1] + 16.6666666666666679 - t,
                 dt$0=dt < 0.?0.:dt;
                last[1] = t;
                _g_.setTimeout(callback,dt$0);
                return 0}}
            throw _fg_}});
    function hasPushState(param)
     {return caml_call1(Optdef[5],_g_.history.pushState)}
    function hasPlaceholder(param)
     {var i=createInput(0,0,document$0);
      return caml_call1(Optdef[5],i.placeholder)}
    function hasRequired(param)
     {var i=createInput(0,0,document$0);
      return caml_call1(Optdef[5],i.required)}
    var overflow_limit=2147483000.;
    function setTimeout(callback,d)
     {var id=[0,0];
      function loop(step,param)
       {if(2147483000. < step)
         var remain=step - 2147483000.,step$0=overflow_limit;
        else
         var remain=0.,step$0=step;
        var cb=remain == 0.?callback:function(_fd_){return loop(remain,_fd_)};
        id[1] = [0,_g_.setTimeout(caml_js_wrap_callback(cb),step$0)];
        return 0}
      loop(d,0);
      return id}
    function clearTimeout(id)
     {var _fc_=id[1];
      if(_fc_){var x=_fc_[1];id[1] = 0;return _g_.clearTimeout(x)}
      return 0}
    function js_array_of_collection(c){return [].slice.call(c)}
    var
     Js_of_ocaml_Dom_html=
      [0,
       d,
       document$0,
       getElementById_opt,
       getElementById_exn,
       getElementById_coerce,
       getElementById,
       location_origin,
       _g_,
       no_handler,
       handler,
       full_handler,
       invoke_handler,
       eventTarget,
       eventRelatedTarget,
       Event$0,
       addEventListenerWithOptions,
       addEventListener,
       removeEventListener,
       addMousewheelEventListenerWith,
       addMousewheelEventListener,
       createCustomEvent,
       buttonPressed,
       eventAbsolutePosition$0,
       elementClientPosition,
       getDocumentScroll,
       [0,of_event,try_key_code_normal],
       [0,of_event$0],
       createHtml,
       createHead,
       createLink,
       createTitle,
       createMeta,
       createBase,
       createStyle,
       createBody,
       createForm,
       createOptgroup,
       createOption,
       createSelect,
       createInput,
       createTextarea,
       createButton,
       createLabel,
       createFieldset,
       createLegend,
       createUl,
       createOl,
       createDl,
       createLi,
       createDiv,
       createEmbed,
       createP,
       createH1,
       createH2,
       createH3,
       createH4,
       createH5,
       createH6,
       createQ,
       createBlockquote,
       createPre,
       createBr,
       createHr,
       createIns,
       createDel,
       createA,
       createImg,
       createObject,
       createParam,
       createMap,
       createArea,
       createScript,
       createTable,
       createCaption,
       createCol,
       createColgroup,
       createThead,
       createTfoot,
       createTbody,
       createTr,
       createTh,
       createTd,
       createSub,
       createSup,
       createSpan,
       createTt,
       createI,
       createB,
       createBig,
       createSmall,
       createEm,
       createStrong,
       createCite,
       createDfn,
       createCode,
       createSamp,
       createKbd,
       createVar,
       createAbbr,
       createDd,
       createDt,
       createNoscript,
       createAddress,
       createFrameset,
       createFrame,
       createIframe,
       createAudio,
       createVideo,
       Canvas_not_available,
       createCanvas,
       element$1,
       tagged,
       opt_tagged,
       taggedEvent,
       opt_taggedEvent,
       stopPropagation,
       [0,
        element$0,
        a,
        area,
        audio,
        base,
        blockquote,
        body,
        br,
        button,
        canvas,
        caption,
        col,
        colgroup,
        del,
        div,
        embed,
        dl,
        fieldset,
        form,
        frameset,
        frame,
        h1,
        h2,
        h3,
        h4,
        h5,
        h6,
        head,
        hr,
        html,
        iframe,
        img,
        input$0,
        ins,
        label,
        legend,
        li,
        link,
        map$2,
        meta,
        object,
        ol,
        optgroup,
        option$1,
        p,
        param,
        pre,
        q,
        script,
        select$0,
        style,
        table,
        tbody,
        td,
        textarea,
        tfoot,
        th,
        thead,
        title,
        tr,
        ul,
        video,
        mouseEvent,
        keyboardEvent,
        wheelEvent,
        mouseScrollEvent,
        popStateEvent],
       setTimeout,
       clearTimeout,
       js_array_of_collection,
       requestAnimationFrame,
       runtime.caml_js_html_entities,
       onIE,
       hasPushState,
       hasPlaceholder,
       hasRequired];
    caml_register_global(1650,Js_of_ocaml_Dom_html,"Js_of_ocaml__Dom_html");
    var formData=Unsafe[1].FormData,formData_form=Unsafe[1].FormData;
    function filter_map$0(f,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var q=param$0[2],v=param$0[1],match=caml_call1(f,v);
          if(match){var v$0=match[1];return [0,v$0,filter_map$0(f,q)]}
          var param$0=q;
          continue}
        return 0}}
    function have_content(elt)
     {var
       _fa_=caml_call2(symbol$9,elt.name.length,0),
       _fb_=_fa_?1 - (elt.disabled | 0):_fa_;
      return _fb_}
    function form_elements(get,form)
     {var length=form.elements.length;
      function _e0_(i)
       {var _e$_=form.elements.item(i);return caml_call1(Opt[10],_e$_)}
      var
       _e1_=caml_call2(Stdlib_array[2],length,_e0_),
       elements=caml_call1(Stdlib_array[11],_e1_);
      function _e2_(param)
       {if(param)
         {var v=param[1],match$3=tagged(v);
          switch(match$3[0])
           {case 31:
             var v$0=match$3[1];
             if(get)var sth=get[1],get$0=sth;else var get$0=0;
             if(have_content(v$0))
              {var
                name$1=caml_string_of_jsstring(v$0.name),
                value=v$0.value,
                match=caml_string_of_jsbytes(v$0.type.toLowerCase());
               if(caml_string_notequal(match,cst_checkbox))
                {if(! caml_string_notequal(match,cst_file))
                  {if(get$0)return [0,[0,name$1,[0,-976970511,value]],0];
                   var match$0=caml_call1(Optdef[10],v$0.files);
                   if(match$0)
                    {var list=match$0[1];
                     if(caml_call2(symbol$8,list.length,0))
                      return [0,[0,name$1,[0,-976970511,""]],0];
                     var match$1=caml_call1(Optdef[10],v$0.multiple);
                     if(match$1 && match$1[1])
                      {var
                        _e6_=function(i){return list.item(i)},
                        _e7_=caml_call2(Stdlib_array[2],list.length,_e6_),
                        _e8_=caml_call1(Stdlib_array[11],_e7_);
                       return filter_map$0
                               (function(f)
                                 {var match=caml_call1(Opt[10],f);
                                  if(match)
                                   {var file=match[1];return [0,[0,name$1,[0,781515420,file]]]}
                                  return 0},
                                _e8_)}
                     var _e9_=list.item(0),match$2=caml_call1(Opt[10],_e9_);
                     if(match$2)
                      {var file=match$2[1];
                       return [0,[0,name$1,[0,781515420,file]],0]}
                     return 0}
                   return 0}
                 var switch$0=0;
                 if(caml_string_notequal(match,cst_password))
                  {if(caml_string_notequal(match,cst_radio))
                    {var switch$1=0;
                     if
                      (caml_string_notequal(match,cst_reset)
                       &&
                       caml_string_notequal(match,cst_submit$0))
                      {if(caml_string_notequal(match,cst_text))
                        return [0,[0,name$1,[0,-976970511,value]],0];
                       switch$0 = 1;
                       switch$1 = 1}
                     if(! switch$1)return 0}}
                 else
                  switch$0 = 1;
                 if(switch$0)return [0,[0,name$1,[0,-976970511,value]],0]}
               return v$0.checked | 0?[0,[0,name$1,[0,-976970511,value]],0]:0}
             return 0;
            case 48:
             var v$1=match$3[1];
             if(have_content(v$1))
              {var name$0=caml_string_of_jsstring(v$1.name);
               if(v$1.multiple | 0)
                {var
                  _e4_=
                   function(i)
                    {var _e__=v$1.options.item(i);
                     return caml_call1(Opt[10],_e__)},
                  options=caml_call2(Stdlib_array[2],v$1.options.length,_e4_),
                  _e5_=caml_call1(Stdlib_array[11],options);
                 return filter_map$0
                         (function(param)
                           {if(param)
                             {var e=param[1];
                              return e.selected | 0
                                      ?[0,[0,name$0,[0,-976970511,e.value]]]
                                      :0}
                            return 0},
                          _e5_)}
               return [0,[0,name$0,[0,-976970511,v$1.value]],0]}
             return 0;
            case 53:
             var v$2=match$3[1];
             if(have_content(v$2))
              {var name=caml_string_of_jsstring(v$2.name);
               return [0,[0,name,[0,-976970511,v$2.value]],0]}
             return 0;
            default:return 0}}
        return 0}
      var
       _e3_=caml_call2(Stdlib_list[17],_e2_,elements),
       contents=caml_call1(Stdlib_list[14],_e3_);
      return contents}
    function append(form_contents,form_elt)
     {if(891486873 <= form_contents[1])
       {var list=form_contents[2];list[1] = [0,form_elt,list[1]];return 0}
      var f=form_contents[2],_eY_=form_elt[2],_eZ_=form_elt[1];
      if(781515420 <= _eY_[1])
       {var file=_eY_[2];return f.append(caml_jsstring_of_string(_eZ_),file)}
      var s=_eY_[2];
      return f.append(caml_jsstring_of_string(_eZ_),s)}
    function empty_form_contents(param)
     {var match=caml_call1(Optdef[10],formData);
      if(match){var constr=match[1];return [0,808620462,new constr()]}
      return [0,891486873,[0,0]]}
    function post_form_contents(form)
     {var contents=empty_form_contents(0),_eV_=form_elements(0,form);
      function _eW_(_eX_){return append(contents,_eX_)}
      caml_call2(Stdlib_list[15],_eW_,_eV_);
      return contents}
    function get_form_contents(form)
     {var _eS_=form_elements(_k_,form);
      function _eT_(param)
       {var _eU_=param[2];
        if(typeof _eU_ !== "number" && -976970511 === _eU_[1])
         {var s=_eU_[2],name=param[1];
          return [0,name,caml_string_of_jsstring(s)]}
        throw [0,Assert_failure,_l_]}
      return caml_call2(Stdlib_list[17],_eT_,_eS_)}
    var
     Js_of_ocaml_Form=
      [0,
       formData,
       formData_form,
       append,
       post_form_contents,
       get_form_contents,
       empty_form_contents,
       form_elements];
    caml_register_global(1651,Js_of_ocaml_Form,"Js_of_ocaml__Form");
    var
     readystatechange=caml_call1(Event[1],cst_readystatechange),
     loadstart$1=caml_call1(Event[1],cst_loadstart$1),
     progress$1=caml_call1(Event[1],cst_progress$1),
     abort$1=caml_call1(Event[1],cst_abort$1),
     error$1=caml_call1(Event[1],cst_error$1),
     load$1=caml_call1(Event[1],cst_load$1),
     timeout=caml_call1(Event[1],cst_timeout),
     loadend$0=caml_call1(Event[1],cst_loadend$0),
     Event$1=
      [0,
       readystatechange,
       loadstart$1,
       progress$1,
       abort$1,
       error$1,
       load$1,
       timeout,
       loadend$0];
    function create(param)
     {var
       xmlHttpRequest=Unsafe[1].XMLHttpRequest,
       activeXObject=Unsafe[1].activeXObject;
      try
       {var _eN_=new xmlHttpRequest();return _eN_}
      catch(_eO_)
       {try
         {var _eM_=new activeXObject("Msxml2.XMLHTTP");return _eM_}
        catch(_eP_)
         {try
           {var _eL_=new activeXObject("Msxml3.XMLHTTP");return _eL_}
          catch(_eQ_)
           {try
             {var _eK_=new activeXObject("Microsoft.XMLHTTP");return _eK_}
            catch(_eR_){throw [0,Assert_failure,_m_]}}}}}
    var Js_of_ocaml_XmlHttpRequest=[0,create,Event$1];
    caml_register_global
     (1652,Js_of_ocaml_XmlHttpRequest,"Js_of_ocaml__XmlHttpRequest");
    var worker=Unsafe[1].Worker;
    function create$0(script)
     {return new worker(caml_jsstring_of_string(script))}
    function import_scripts(scripts)
     {if(Unsafe[1].importScripts === t37)
       caml_call1(Stdlib[1],cst_Worker_import_scripts_is_u);
      var
       _eI_=caml_call1(Stdlib_array[12],scripts),
       _eJ_=caml_call2(Stdlib_array[15],caml_jsstring_of_string,_eI_);
      return runtime.caml_js_fun_call(Unsafe[1].importScripts,_eJ_)}
    function set_onmessage(handler)
     {if(Unsafe[1].onmessage === t37)
       caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi);
      function js_handler(ev){return caml_call1(handler,ev.data)}
      return Unsafe[1].onmessage = caml_js_wrap_callback(js_handler)}
    function post_message(msg)
     {if(Unsafe[1].postMessage === t37)
       caml_call1(Stdlib[1],cst_Worker_onmessage_is_undefi$0);
      return Unsafe[1].postMessage(msg)}
    var
     Js_of_ocaml_Worker=
      [0,create$0,import_scripts,set_onmessage,post_message];
    caml_register_global(1653,Js_of_ocaml_Worker,"Js_of_ocaml__Worker");
    var webSocket=Unsafe[1].WebSocket;
    function is_supported(param){return caml_call1(Optdef[5],webSocket)}
    var Js_of_ocaml_WebSockets=[0,webSocket,webSocket,webSocket,is_supported];
    caml_register_global
     (1654,Js_of_ocaml_WebSockets,"Js_of_ocaml__WebSockets");
    var
     defaultContextAttributes=
      {"alpha":true$0,
       "depth":true$0,
       "stencil":false$0,
       "antialias":true$0,
       "premultipliedAlpha":false$0,
       "preserveDrawingBuffer":false$0,
       "preferLowPowerToHighPerformance":false$0,
       "failIfMajorPerformanceCaveat":false$0},
     webglcontextlost=caml_call1(Event$0[83],cst_webglcontextlost),
     webglcontextrestored=caml_call1(Event$0[83],cst_webglcontextrestored),
     webglcontextcreationerror=
      caml_call1(Event$0[83],cst_webglcontextcreationerror),
     Event$2=
      [0,webglcontextlost,webglcontextrestored,webglcontextcreationerror];
    function getContext(c)
     {var ctx=c.getContext("webgl");
      return caml_call1(Opt[5],ctx)?ctx:c.getContext("experimental-webgl")}
    function getContextWithAttributes(c,attribs)
     {var ctx=c.getContext("webgl",attribs);
      return caml_call1(Opt[5],ctx)
              ?ctx
              :c.getContext("experimental-webgl",attribs)}
    var
     Js_of_ocaml_WebGL=
      [0,defaultContextAttributes,Event$2,getContext,getContextWithAttributes];
    caml_register_global(1655,Js_of_ocaml_WebGL,"Js_of_ocaml__WebGL");
    function regexp(s)
     {return new regExp_withFlags(caml_jsbytes_of_string(s),"g")}
    function regexp_case_fold(s)
     {return new regExp_withFlags(caml_jsbytes_of_string(s),"gi")}
    function regexp_with_flag(s,f)
     {return new
              regExp_withFlags
              (caml_jsbytes_of_string(s),
               caml_jsstring_of_string(caml_call2(Stdlib[28],cst_g,f)))}
    function blunt_str_array_get(a,i)
     {function _eH_(param){throw [0,Assert_failure,_n_]}
      return caml_string_of_jsbytes(caml_call2(Optdef[8],a[i],_eH_))}
    function string_match(r,s,i)
     {r.lastIndex = i;
      var
       _eF_=r.exec(caml_jsbytes_of_string(s)),
       _eG_=caml_call2(Opt[3],_eF_,match_result);
      return caml_call1(Opt[10],_eG_)}
    function search_forward(r,s,i)
     {r.lastIndex = i;
      function _eC_(res){return [0,res.index,res]}
      var
       _eD_=r.exec(caml_jsbytes_of_string(s)),
       _eE_=caml_call2(Opt[3],_eD_,_eC_);
      return caml_call1(Opt[10],_eE_)}
    function matched_string(r){return blunt_str_array_get(r,0)}
    function matched_group(r,i)
     {var _eB_=caml_call2(Optdef[3],r[i],caml_string_of_jsbytes);
      return caml_call1(Optdef[10],_eB_)}
    var quote_repl_re=new regExp_withFlags("[$]","g");
    function quote_repl(s)
     {return caml_jsbytes_of_string(s).replace(quote_repl_re,"$$$$")}
    function global_replace(r,s,s_by)
     {r.lastIndex = 0;
      return caml_string_of_jsbytes
              (caml_jsbytes_of_string(s).replace(r,quote_repl(s_by)))}
    function replace_first(r,s,s_by)
     {var
       match=r.ignoreCase | 0,
       match$0=r.multiline | 0,
       flags=match?match$0?"mi":"i":match$0?"m":"",
       r$0=new regExp_withFlags(r.source,flags);
      return caml_string_of_jsbytes
              (caml_jsbytes_of_string(s).replace(r$0,quote_repl(s_by)))}
    function list_of_js_array(a)
     {var idx$1=a.length - 1 | 0,accu=0,idx=idx$1;
      for(;;)
       {if(caml_call2(symbol$5,idx,0))return accu;
        var
         idx$0=idx - 1 | 0,
         accu$0=[0,blunt_str_array_get(a,idx),accu],
         accu=accu$0,
         idx=idx$0;
        continue}}
    function split(r,s)
     {r.lastIndex = 0;
      return list_of_js_array(caml_jsbytes_of_string(s).split(r))}
    function bounded_split(r,s,i)
     {r.lastIndex = 0;
      return list_of_js_array(caml_jsbytes_of_string(s).split(r,i))}
    var quote_re=regexp(cst);
    function quote(s)
     {return caml_string_of_jsbytes
              (caml_jsbytes_of_string(s).replace(quote_re,"\\$&"))}
    function regexp_string(s){return regexp(quote(s))}
    function regexp_string_case_fold(s){return regexp_case_fold(quote(s))}
    var
     Js_of_ocaml_Regexp=
      [0,
       regexp,
       regexp_case_fold,
       regexp_with_flag,
       quote,
       regexp_string,
       regexp_string_case_fold,
       string_match,
       search_forward,
       search_forward,
       matched_string,
       matched_group,
       global_replace,
       replace_first,
       split,
       bounded_split];
    caml_register_global(1656,Js_of_ocaml_Regexp,"Js_of_ocaml__Regexp");
    var Local_exn=[248,cst_Js_of_ocaml_Url_Local_exn,caml_fresh_oo_id(0)];
    function interrupt(param){throw Local_exn}
    var
     plus_re=regexp_string(cst$0),
     plus_re_js_string=new regExp_withFlags("\\+","g");
    function urldecode_js_string_string(s)
     {plus_re_js_string.lastIndex = 0;
      return caml_string_of_jsbytes
              (unescape(s.replace(plus_re_js_string," ")))}
    function urldecode(s)
     {return caml_string_of_jsbytes
              (unescape
                (caml_jsbytes_of_string(global_replace(plus_re,s,cst$1))))}
    function urlencode(opt,s)
     {if(opt)var sth=opt[1],with_plus=sth;else var with_plus=1;
      if(with_plus)
       {var s$0=caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s)));
        return global_replace(plus_re,s$0,cst_2B)}
      return caml_string_of_jsbytes(escape(caml_jsbytes_of_string(s)))}
    var
     Not_an_http_protocol=
      [248,cst_Js_of_ocaml_Url_Not_an_htt,caml_fresh_oo_id(0)],
     default_http_port=80,
     default_https_port=443;
    function path_of_path_string(s)
     {var l=caml_ml_string_length(s);
      function aux(i)
       {try
         {var _ez_=caml_call3(String[18],s,i,47),j=_ez_}
        catch(_eA_)
         {_eA_ = caml_wrap_exception(_eA_);
          if(_eA_ !== Stdlib[8])throw _eA_;
          var j=l}
        var word=caml_call3(String[4],s,i,j - i | 0);
        return caml_call2(symbol$10,j,l)?[0,word,0]:[0,word,aux(j + 1 | 0)]}
      var a=aux(0);
      if(a && ! caml_string_notequal(a[1],cst$2))
       {var _ey_=a[2];
        if(! _ey_)return 0;
        if(! caml_string_notequal(_ey_[1],cst$3) && ! _ey_[2])return _o_}
      return a}
    function encode_arguments(l)
     {function _et_(param)
       {var
         v=param[2],
         n=param[1],
         _ev_=urlencode(0,v),
         _ew_=caml_call2(Stdlib[28],cst$4,_ev_),
         _ex_=urlencode(0,n);
        return caml_call2(Stdlib[28],_ex_,_ew_)}
      var _eu_=caml_call2(Stdlib_list[17],_et_,l);
      return caml_call2(String[7],cst$5,_eu_)}
    function decode_arguments_js_string(s)
     {var
       arr=s.split(caml_jsstring_of_string(caml_call2(String[1],1,38))),
       len=arr.length;
      function aux(acc,idx)
       {var idx$0=idx;
        for(;;)
         {if(caml_call2(symbol$5,idx$0,0))return acc;
          try
           {var
             _el_=idx$0 - 1 | 0,
             _em_=
              function(s)
               {function _er_(param)
                 {var
                   y=param[2],
                   x=param[1],
                   _es_=urldecode_js_string_string(y);
                  return [0,urldecode_js_string_string(x),_es_]}
                var
                 index=
                  s.indexOf
                   (caml_jsstring_of_string(caml_call2(String[1],1,61)));
                if(caml_call2(symbol$5,index,0))
                 var _eq_=t37;
                else
                 var
                  _ep_=s.slice(index + 1 | 0),
                  _eq_=[0,s.slice(0,index),_ep_];
                return caml_call3(Optdef[7],_eq_,interrupt,_er_)},
             _en_=
              aux
               ([0,caml_call3(Optdef[7],arr[idx$0],interrupt,_em_),acc],_el_);
            return _en_}
          catch(_eo_)
           {_eo_ = caml_wrap_exception(_eo_);
            if(_eo_ === Local_exn)
             {var idx$1=idx$0 - 1 | 0,idx$0=idx$1;continue}
            throw _eo_}}}
      return aux(0,len - 1 | 0)}
    function decode_arguments(s)
     {return decode_arguments_js_string(caml_jsbytes_of_string(s))}
    var
     url_re=
      new
       regExp_withFlags
       (caml_jsbytes_of_string(cst_Hh_Tt_Tt_Pp_Ss_0_9a_zA_Z_0)),
     file_re=new regExp_withFlags(caml_jsbytes_of_string(cst_Ff_Ii_Ll_Ee));
    function url_of_js_string(s)
     {function _d4_(res)
       {var
         prot_string=caml_call2(Optdef[8],res[1],interrupt),
         match=caml_string_of_jsbytes(prot_string.toLowerCase());
        if
         (caml_string_notequal(match,cst_file$0)
          &&
          caml_string_notequal(match,cst_file$1))
         {var switch$0=0;
          if
           (caml_string_notequal(match,cst_http)
            &&
            caml_string_notequal(match,cst_http$0))
           {var switch$1=0;
            if
             (caml_string_notequal(match,cst_https)
              &&
              caml_string_notequal(match,cst_https$0))
             switch$1 = 1;
            if(! switch$1){var ssl=1;switch$0 = 2}}
          else
           switch$0 = 1;
          var switch$2=0;
          switch(switch$0)
           {case 1:var ssl=0;switch$2 = 1;break;
            case 0:break;
            default:switch$2 = 1}
          if(switch$2)
           {var
             _ec_=function(param){return caml_jsbytes_of_string(cst$7)},
             path_str=
              urldecode_js_string_string(caml_call2(Optdef[8],res[6],_ec_)),
             _ed_=function(param){return caml_jsbytes_of_string(cst$8)},
             _ee_=
              urldecode_js_string_string(caml_call2(Optdef[8],res[10],_ed_)),
             _ef_=function(param){return caml_jsbytes_of_string(cst$9)},
             _eg_=
              decode_arguments_js_string(caml_call2(Optdef[8],res[8],_ef_)),
             _eh_=path_of_path_string(path_str),
             _ei_=function(param){return caml_jsbytes_of_string(cst$10)},
             s=caml_string_of_jsbytes(caml_call2(Optdef[8],res[4],_ei_)),
             _ej_=
              caml_string_notequal(s,cst$6)?caml_int_of_string(s):ssl?443:80,
             url=
              [0,
               urldecode_js_string_string
                (caml_call2(Optdef[8],res[2],interrupt)),
               _ej_,
               _eh_,
               path_str,
               _eg_,
               _ee_],
             _ek_=ssl?[1,url]:[0,url];
            return [0,_ek_]}}
        throw Not_an_http_protocol}
      function _d5_(param)
       {function _d7_(res)
         {var
           path_str=
            urldecode_js_string_string(caml_call2(Optdef[8],res[2],interrupt));
          function _d__(param){return caml_jsbytes_of_string(cst$11)}
          var _d$_=caml_string_of_jsbytes(caml_call2(Optdef[8],res[6],_d__));
          function _ea_(param){return caml_jsbytes_of_string(cst$12)}
          var
           _eb_=
            decode_arguments_js_string(caml_call2(Optdef[8],res[4],_ea_));
          return [0,[2,[0,path_of_path_string(path_str),path_str,_eb_,_d$_]]]}
        function _d8_(param){return 0}
        var _d9_=file_re.exec(s);
        return caml_call3(Opt[7],_d9_,_d8_,_d7_)}
      var _d6_=url_re.exec(s);
      return caml_call3(Opt[7],_d6_,_d5_,_d4_)}
    function url_of_string(s)
     {return url_of_js_string(caml_jsbytes_of_string(s))}
    function string_of_url(param)
     {switch(param[0])
       {case 0:
         var
          match=param[1],
          frag=match[6],
          args=match[5],
          path=match[3],
          port=match[2],
          host=match[1];
         if(caml_string_notequal(frag,cst$13))
          var _dr_=urlencode(0,frag),_ds_=caml_call2(Stdlib[28],cst$14,_dr_);
         else
          var _ds_=cst$21;
         if(args)
          var
           _dt_=encode_arguments(args),
           _du_=caml_call2(Stdlib[28],cst$15,_dt_);
         else
          var _du_=cst$20;
         var
          _dv_=caml_call2(Stdlib[28],_du_,_ds_),
          _dw_=function(x){return urlencode(0,x)},
          _dx_=caml_call2(Stdlib_list[17],_dw_,path),
          _dy_=caml_call2(String[7],cst$16,_dx_),
          _dz_=caml_call2(Stdlib[28],_dy_,_dv_),
          _dA_=caml_call2(Stdlib[28],cst$17,_dz_);
         if(80 === port)
          var _dB_=cst$18;
         else
          var
           _dF_=caml_call1(Stdlib[33],port),
           _dB_=caml_call2(Stdlib[28],cst$19,_dF_);
         var
          _dC_=caml_call2(Stdlib[28],_dB_,_dA_),
          _dD_=urlencode(0,host),
          _dE_=caml_call2(Stdlib[28],_dD_,_dC_);
         return caml_call2(Stdlib[28],cst_http$1,_dE_);
        case 1:
         var
          match$0=param[1],
          frag$0=match$0[6],
          args$0=match$0[5],
          path$0=match$0[3],
          port$0=match$0[2],
          host$0=match$0[1];
         if(caml_string_notequal(frag$0,cst$22))
          var
           _dG_=urlencode(0,frag$0),
           _dH_=caml_call2(Stdlib[28],cst$23,_dG_);
         else
          var _dH_=cst$30;
         if(args$0)
          var
           _dI_=encode_arguments(args$0),
           _dJ_=caml_call2(Stdlib[28],cst$24,_dI_);
         else
          var _dJ_=cst$29;
         var
          _dK_=caml_call2(Stdlib[28],_dJ_,_dH_),
          _dL_=function(x){return urlencode(0,x)},
          _dM_=caml_call2(Stdlib_list[17],_dL_,path$0),
          _dN_=caml_call2(String[7],cst$25,_dM_),
          _dO_=caml_call2(Stdlib[28],_dN_,_dK_),
          _dP_=caml_call2(Stdlib[28],cst$26,_dO_);
         if(443 === port$0)
          var _dQ_=cst$27;
         else
          var
           _dU_=caml_call1(Stdlib[33],port$0),
           _dQ_=caml_call2(Stdlib[28],cst$28,_dU_);
         var
          _dR_=caml_call2(Stdlib[28],_dQ_,_dP_),
          _dS_=urlencode(0,host$0),
          _dT_=caml_call2(Stdlib[28],_dS_,_dR_);
         return caml_call2(Stdlib[28],cst_https$1,_dT_);
        default:
         var
          match$1=param[1],
          frag$1=match$1[4],
          args$1=match$1[3],
          path$1=match$1[1];
         if(caml_string_notequal(frag$1,cst$31))
          var
           _dV_=urlencode(0,frag$1),
           _dW_=caml_call2(Stdlib[28],cst$32,_dV_);
         else
          var _dW_=cst$36;
         if(args$1)
          var
           _dX_=encode_arguments(args$1),
           _dY_=caml_call2(Stdlib[28],cst$33,_dX_);
         else
          var _dY_=cst$35;
         var
          _dZ_=caml_call2(Stdlib[28],_dY_,_dW_),
          _d0_=function(x){return urlencode(0,x)},
          _d1_=caml_call2(Stdlib_list[17],_d0_,path$1),
          _d2_=caml_call2(String[7],cst$34,_d1_),
          _d3_=caml_call2(Stdlib[28],_d2_,_dZ_);
         return caml_call2(Stdlib[28],cst_file$2,_d3_)}}
    var _p_=caml_call1(Optdef[2],_g_.location);
    if(caml_call1(Optdef[5],_p_))
     var _q_=_g_.location;
    else
     var
      t40=function(param,_dq_){return 0},
      t39=function(param,_dp_){return 0},
      t38=function(param){return 0},
      _q_=
       {"href":"",
        "protocol":"",
        "host":"",
        "hostname":"",
        "port":"",
        "pathname":"",
        "search":"",
        "hash":"",
        "origin":t37,
        "reload":caml_js_wrap_meth_callback(t38),
        "replace":caml_js_wrap_meth_callback(t39),
        "assign":caml_js_wrap_meth_callback(t40)};
    var
     host=urldecode_js_string_string(_q_.hostname),
     protocol=urldecode_js_string_string(_q_.protocol),
     _r_=0,
     port=
      function(param)
        {try
          {var _dn_=[0,caml_int_of_string(caml_string_of_jsbytes(_q_.port))];
           return _dn_}
         catch(_do_)
          {_do_ = caml_wrap_exception(_do_);
           if(_do_[1] === Stdlib[7])return 0;
           throw _do_}}
       (_r_),
     path_string=urldecode_js_string_string(_q_.pathname),
     path=path_of_path_string(path_string),
     _s_=_q_.search.charAt(0) === "?"?_q_.search.slice(1):_q_.search,
     arguments$0=decode_arguments_js_string(_s_);
    function get_fragment(param)
     {function _dj_(res){return caml_string_of_jsstring(res[1])}
      function _dk_(param){return cst$37}
      var _dl_=new regExp_withFlags("#(.*)"),_dm_=_q_.href.match(_dl_);
      return caml_call3(Opt[7],_dm_,_dk_,_dj_)}
    function set_fragment(s)
     {return _q_.hash = caml_jsbytes_of_string(urlencode(0,s))}
    function get$2(param){return url_of_js_string(_q_.href)}
    function set$0(u)
     {return _q_.href = caml_jsbytes_of_string(string_of_url(u))}
    var
     as_string=urldecode_js_string_string(_q_.href),
     Js_of_ocaml_Url=
      [0,
       urldecode,
       urlencode,
       default_http_port,
       default_https_port,
       path_of_path_string,
       encode_arguments,
       decode_arguments,
       url_of_string,
       string_of_url,
       [0,
        host,
        port,
        protocol,
        path_string,
        path,
        arguments$0,
        get_fragment,
        set_fragment,
        get$2,
        set$0,
        as_string]];
    caml_register_global(1658,Js_of_ocaml_Url,"Js_of_ocaml__Url");
    var Js_of_ocaml_Lib_version=[0,s,git_version];
    caml_register_global
     (1659,Js_of_ocaml_Lib_version,"Js_of_ocaml__Lib_version");
    function update_file(name,content)
     {var oc=caml_call1(Stdlib[60],name);
      caml_call2(Stdlib[66],oc,content);
      return caml_call1(Stdlib[76],oc)}
    function set_channel_flusher(out_channel,f)
     {var
       f$0=
        caml_js_wrap_callback
         (function(s){return caml_call1(f,caml_string_of_jsbytes(s))});
      return runtime.caml_ml_set_channel_output(out_channel,f$0)}
    function set_channel_filler(in_channel,f)
     {var f$0=caml_js_wrap_callback(f);
      return runtime.caml_ml_set_channel_refill(in_channel,f$0)}
    function mount(path,f)
     {return runtime.caml_mount_autoload
              (path,
               caml_js_wrap_callback
                (function(prefix,path){return caml_call2(f,prefix,path)}))}
    var unmount=runtime.caml_unmount;
    if(caml_call2(String[38],git_version,cst$38))
     var js_of_ocaml_version=s;
    else
     var
      _cm_=caml_call2(Stdlib[28],cst$41,git_version),
      js_of_ocaml_version=caml_call2(Stdlib[28],s,_cm_);
    var
     _t_=runtime.caml_create_file,
     _u_=runtime.caml_read_file_content,
     Js_of_ocaml_Sys_js=
      [0,
       set_channel_flusher,
       set_channel_filler,
       function(_di_){return runtime.caml_list_mount_point(_di_)},
       unmount,
       mount,
       _u_,
       _t_,
       update_file,
       js_of_ocaml_version];
    caml_register_global(1660,Js_of_ocaml_Sys_js,"Js_of_ocaml__Sys_js");
    function empty_resize_observer_options(param){return {}}
    var resizeObserver=Unsafe[1].ResizeObserver;
    function is_supported$0(param)
     {return caml_call1(Optdef[5],resizeObserver)}
    function observe(node,f,box,param)
     {var obs=new resizeObserver(caml_js_wrap_callback(f));
      if(box)
       {var box$0=box[1],opts={};opts.box = box$0;obs.observe(node,opts)}
      else
       obs.observe(node);
      return obs}
    var
     Js_of_ocaml_ResizeObserver=
      [0,empty_resize_observer_options,resizeObserver,is_supported$0,observe];
    caml_register_global
     (1661,Js_of_ocaml_ResizeObserver,"Js_of_ocaml__ResizeObserver");
    function empty_mutation_observer_init(param){return {}}
    var mutationObserver=Unsafe[1].MutationObserver;
    function is_supported$1(param)
     {return caml_call1(Optdef[5],mutationObserver)}
    function observe$0
     (node,
      f,
      child_list,
      attributes,
      character_data,
      subtree,
      attribute_old_value,
      character_data_old_value,
      attribute_filter,
      param)
     {function opt_iter(x,f)
       {if(x){var x$0=x[1];return caml_call1(f,x$0)}return 0}
      var obs=new mutationObserver(caml_js_wrap_callback(f)),cfg={};
      opt_iter(child_list,function(v){return cfg.childList = v});
      opt_iter(attributes,function(v){return cfg.attributes = v});
      opt_iter(character_data,function(v){return cfg.characterData = v});
      opt_iter(subtree,function(v){return cfg.subtree = v});
      opt_iter
       (attribute_old_value,function(v){return cfg.attributeOldValue = v});
      opt_iter
       (character_data_old_value,
        function(v){return cfg.characterDataOldValue = v});
      opt_iter
       (attribute_filter,
        function(l)
         {return cfg.attributeFilter
                 =
                 caml_js_from_array(caml_call1(Stdlib_array[12],l))});
      obs.observe(node,cfg);
      return obs}
    var
     Js_of_ocaml_MutationObserver=
      [0,
       empty_mutation_observer_init,
       mutationObserver,
       is_supported$1,
       observe$0];
    caml_register_global
     (1662,Js_of_ocaml_MutationObserver,"Js_of_ocaml__MutationObserver");
    var obj=Unsafe[1].Object;
    function create$1(param){return new obj()}
    function add$0(t,k,v){return t[k.concat("_")] = v}
    function remove(t,k){return delete t[k.concat("_")]}
    function find(t,k){return t[k.concat("_")]}
    function keys(t)
     {var
       key_array=Unsafe[1].Object.keys(t),
       res=[0,0],
       _de_=key_array.length - 1 | 0,
       _dd_=0;
      if(! (_de_ < 0))
       {var i=_dd_;
        for(;;)
         {var
           _df_=function(param){return caml_call1(Stdlib[2],cst_Jstable_keys)},
           key=caml_call2(Optdef[8],key_array[i],_df_),
           _dg_=res[1];
          res[1] = [0,key.substring(0,key.length - 1 | 0),_dg_];
          var _dh_=i + 1 | 0;
          if(_de_ !== i){var i=_dh_;continue}
          break}}
      return caml_call1(Stdlib_list[9],res[1])}
    var Js_of_ocaml_Jstable=[0,create$1,add$0,remove,find,keys];
    caml_register_global(1663,Js_of_ocaml_Jstable,"Js_of_ocaml__Jstable");
    var json=Unsafe[1].JSON;
    function reviver(this$0,key,value)
     {if(typeof value == typeof "foo")return caml_string_of_jsbytes(value);
      if
       (value instanceof array_length
        &&
        4
        ===
        value.length
        &&
        255
        ===
        value[0])
       return runtime.caml_int64_create_lo_mi_hi(value[1],value[2],value[3]);
      return value}
    var input_reviver=caml_js_wrap_meth_callback(reviver);
    function unsafe_input(s){return json.parse(s,input_reviver)}
    var
     mlString_constr=dummy_string.constructor,
     mlInt64_constr=dummy_int64.constructor;
    function output_reviver(key,value)
     {return value instanceof mlString_constr
              ?caml_jsbytes_of_string(value)
              :value instanceof mlInt64_constr
                ?caml_js_from_array([0,255,value.lo,value.mi,value.hi])
                :value}
    function output(obj){return json.stringify(obj,output_reviver)}
    var Js_of_ocaml_Json=[0,output,unsafe_input];
    caml_register_global(1664,Js_of_ocaml_Json,"Js_of_ocaml__Json");
    function string_of_name(param)
     {var _dc_=param;
      if(74 <= _dc_)
       {if(111 <= _dc_)
         switch(_dc_)
          {case 111:return cst_palevioletred;
           case 112:return cst_papayawhip;
           case 113:return cst_peachpuff;
           case 114:return cst_peru;
           case 115:return cst_pink;
           case 116:return cst_plum;
           case 117:return cst_powderblue;
           case 118:return cst_purple;
           case 119:return cst_red;
           case 120:return cst_rosybrown;
           case 121:return cst_royalblue;
           case 122:return cst_saddlebrown;
           case 123:return cst_salmon;
           case 124:return cst_sandybrown;
           case 125:return cst_seagreen;
           case 126:return cst_seashell;
           case 127:return cst_sienna;
           case 128:return cst_silver;
           case 129:return cst_skyblue;
           case 130:return cst_slateblue;
           case 131:return cst_slategray;
           case 132:return cst_slategrey;
           case 133:return cst_snow;
           case 134:return cst_springgreen;
           case 135:return cst_steelblue;
           case 136:return cst_tan;
           case 137:return cst_teal;
           case 138:return cst_thistle;
           case 139:return cst_tomato;
           case 140:return cst_turquoise;
           case 141:return cst_violet;
           case 142:return cst_wheat;
           case 143:return cst_white;
           case 144:return cst_whitesmoke;
           case 145:return cst_yellow;
           default:return cst_yellowgreen}
        switch(_dc_)
         {case 74:return cst_lightpink;
          case 75:return cst_lightsalmon;
          case 76:return cst_lightseagreen;
          case 77:return cst_lightskyblue;
          case 78:return cst_lightslategray;
          case 79:return cst_lightslategrey;
          case 80:return cst_lightsteelblue;
          case 81:return cst_lightyellow;
          case 82:return cst_lime;
          case 83:return cst_limegreen;
          case 84:return cst_linen;
          case 85:return cst_magenta;
          case 86:return cst_maroon;
          case 87:return cst_mediumaquamarine;
          case 88:return cst_mediumblue;
          case 89:return cst_mediumorchid;
          case 90:return cst_mediumpurple;
          case 91:return cst_mediumseagreen;
          case 92:return cst_mediumslateblue;
          case 93:return cst_mediumspringgreen;
          case 94:return cst_mediumturquoise;
          case 95:return cst_mediumvioletred;
          case 96:return cst_midnightblue;
          case 97:return cst_mintcream;
          case 98:return cst_mistyrose;
          case 99:return cst_moccasin;
          case 100:return cst_navajowhite;
          case 101:return cst_navy;
          case 102:return cst_oldlace;
          case 103:return cst_olive;
          case 104:return cst_olivedrab;
          case 105:return cst_orange;
          case 106:return cst_orangered;
          case 107:return cst_orchid;
          case 108:return cst_palegoldenrod;
          case 109:return cst_palegreen;
          default:return cst_paleturquoise}}
      if(37 <= _dc_)
       switch(_dc_)
        {case 37:return cst_darkslategrey;
         case 38:return cst_darkturquoise;
         case 39:return cst_darkviolet;
         case 40:return cst_deeppink;
         case 41:return cst_deepskyblue;
         case 42:return cst_dimgray;
         case 43:return cst_dimgrey;
         case 44:return cst_dodgerblue;
         case 45:return cst_firebrick;
         case 46:return cst_floralwhite;
         case 47:return cst_forestgreen;
         case 48:return cst_fuchsia;
         case 49:return cst_gainsboro;
         case 50:return cst_ghostwhite;
         case 51:return cst_gold;
         case 52:return cst_goldenrod;
         case 53:return cst_gray;
         case 54:return cst_grey;
         case 55:return cst_green;
         case 56:return cst_greenyellow;
         case 57:return cst_honeydew;
         case 58:return cst_hotpink;
         case 59:return cst_indianred;
         case 60:return cst_indigo;
         case 61:return cst_ivory;
         case 62:return cst_khaki;
         case 63:return cst_lavender;
         case 64:return cst_lavenderblush;
         case 65:return cst_lawngreen;
         case 66:return cst_lemonchiffon;
         case 67:return cst_lightblue;
         case 68:return cst_lightcoral;
         case 69:return cst_lightcyan;
         case 70:return cst_lightgoldenrodyellow;
         case 71:return cst_lightgray;
         case 72:return cst_lightgreen;
         default:return cst_lightgrey}
      switch(_dc_)
       {case 0:return cst_aliceblue;
        case 1:return cst_antiquewhite;
        case 2:return cst_aqua;
        case 3:return cst_aquamarine;
        case 4:return cst_azure;
        case 5:return cst_beige;
        case 6:return cst_bisque;
        case 7:return cst_black;
        case 8:return cst_blanchedalmond;
        case 9:return cst_blue;
        case 10:return cst_blueviolet;
        case 11:return cst_brown;
        case 12:return cst_burlywood;
        case 13:return cst_cadetblue;
        case 14:return cst_chartreuse;
        case 15:return cst_chocolate;
        case 16:return cst_coral;
        case 17:return cst_cornflowerblue;
        case 18:return cst_cornsilk;
        case 19:return cst_crimson;
        case 20:return cst_cyan;
        case 21:return cst_darkblue;
        case 22:return cst_darkcyan;
        case 23:return cst_darkgoldenrod;
        case 24:return cst_darkgray;
        case 25:return cst_darkgreen;
        case 26:return cst_darkgrey;
        case 27:return cst_darkkhaki;
        case 28:return cst_darkmagenta;
        case 29:return cst_darkolivegreen;
        case 30:return cst_darkorange;
        case 31:return cst_darkorchid;
        case 32:return cst_darkred;
        case 33:return cst_darksalmon;
        case 34:return cst_darkseagreen;
        case 35:return cst_darkslateblue;
        default:return cst_darkslategray}}
    function name_of_string(s)
     {var switch$0=caml_string_compare(s,cst_lightgrey$0);
      if(0 <= switch$0)
       {if(! (0 < switch$0))return 73;
        var switch$1=caml_string_compare(s,cst_paleturquoise$0);
        if(0 <= switch$1)
         {if(! (0 < switch$1))return 110;
          var switch$2=caml_string_compare(s,cst_skyblue$0);
          if(0 <= switch$2)
           {if(! (0 < switch$2))return 129;
            var switch$3=caml_string_compare(s,cst_thistle$0);
            if(0 <= switch$3)
             {if(! (0 < switch$3))return 138;
              if(! caml_string_notequal(s,cst_tomato$0))return 139;
              if(! caml_string_notequal(s,cst_turquoise$0))return 140;
              if(! caml_string_notequal(s,cst_violet$0))return 141;
              if(! caml_string_notequal(s,cst_wheat$0))return 142;
              if(! caml_string_notequal(s,cst_white$0))return 143;
              if(! caml_string_notequal(s,cst_whitesmoke$0))return 144;
              if(! caml_string_notequal(s,cst_yellow$0))return 145;
              if(! caml_string_notequal(s,cst_yellowgreen$0))return 146}
            else
             {if(! caml_string_notequal(s,cst_slateblue$0))return 130;
              if(! caml_string_notequal(s,cst_slategray$0))return 131;
              if(! caml_string_notequal(s,cst_slategrey$0))return 132;
              if(! caml_string_notequal(s,cst_snow$0))return 133;
              if(! caml_string_notequal(s,cst_springgreen$0))return 134;
              if(! caml_string_notequal(s,cst_steelblue$0))return 135;
              if(! caml_string_notequal(s,cst_tan$0))return 136;
              if(! caml_string_notequal(s,cst_teal$0))return 137}}
          else
           {var switch$4=caml_string_compare(s,cst_rosybrown$0);
            if(0 <= switch$4)
             {if(! (0 < switch$4))return 120;
              if(! caml_string_notequal(s,cst_royalblue$0))return 121;
              if(! caml_string_notequal(s,cst_saddlebrown$0))return 122;
              if(! caml_string_notequal(s,cst_salmon$0))return 123;
              if(! caml_string_notequal(s,cst_sandybrown$0))return 124;
              if(! caml_string_notequal(s,cst_seagreen$0))return 125;
              if(! caml_string_notequal(s,cst_seashell$0))return 126;
              if(! caml_string_notequal(s,cst_sienna$0))return 127;
              if(! caml_string_notequal(s,cst_silver$0))return 128}
            else
             {if(! caml_string_notequal(s,cst_palevioletred$0))return 111;
              if(! caml_string_notequal(s,cst_papayawhip$0))return 112;
              if(! caml_string_notequal(s,cst_peachpuff$0))return 113;
              if(! caml_string_notequal(s,cst_peru$0))return 114;
              if(! caml_string_notequal(s,cst_pink$0))return 115;
              if(! caml_string_notequal(s,cst_plum$0))return 116;
              if(! caml_string_notequal(s,cst_powderblue$0))return 117;
              if(! caml_string_notequal(s,cst_purple$0))return 118;
              if(! caml_string_notequal(s,cst_red$0))return 119}}}
        else
         {var switch$5=caml_string_compare(s,cst_mediumslateblue$0);
          if(0 <= switch$5)
           {if(! (0 < switch$5))return 92;
            var switch$6=caml_string_compare(s,cst_navy$0);
            if(0 <= switch$6)
             {if(! (0 < switch$6))return 101;
              if(! caml_string_notequal(s,cst_oldlace$0))return 102;
              if(! caml_string_notequal(s,cst_olive$0))return 103;
              if(! caml_string_notequal(s,cst_olivedrab$0))return 104;
              if(! caml_string_notequal(s,cst_orange$0))return 105;
              if(! caml_string_notequal(s,cst_orangered$0))return 106;
              if(! caml_string_notequal(s,cst_orchid$0))return 107;
              if(! caml_string_notequal(s,cst_palegoldenrod$0))return 108;
              if(! caml_string_notequal(s,cst_palegreen$0))return 109}
            else
             {if(! caml_string_notequal(s,cst_mediumspringgreen$0))return 93;
              if(! caml_string_notequal(s,cst_mediumturquoise$0))return 94;
              if(! caml_string_notequal(s,cst_mediumvioletred$0))return 95;
              if(! caml_string_notequal(s,cst_midnightblue$0))return 96;
              if(! caml_string_notequal(s,cst_mintcream$0))return 97;
              if(! caml_string_notequal(s,cst_mistyrose$0))return 98;
              if(! caml_string_notequal(s,cst_moccasin$0))return 99;
              if(! caml_string_notequal(s,cst_navajowhite$0))return 100}}
          else
           {var switch$7=caml_string_compare(s,cst_limegreen$0);
            if(0 <= switch$7)
             {if(! (0 < switch$7))return 83;
              if(! caml_string_notequal(s,cst_linen$0))return 84;
              if(! caml_string_notequal(s,cst_magenta$0))return 85;
              if(! caml_string_notequal(s,cst_maroon$0))return 86;
              if(! caml_string_notequal(s,cst_mediumaquamarine$0))return 87;
              if(! caml_string_notequal(s,cst_mediumblue$0))return 88;
              if(! caml_string_notequal(s,cst_mediumorchid$0))return 89;
              if(! caml_string_notequal(s,cst_mediumpurple$0))return 90;
              if(! caml_string_notequal(s,cst_mediumseagreen$0))return 91}
            else
             {if(! caml_string_notequal(s,cst_lightpink$0))return 74;
              if(! caml_string_notequal(s,cst_lightsalmon$0))return 75;
              if(! caml_string_notequal(s,cst_lightseagreen$0))return 76;
              if(! caml_string_notequal(s,cst_lightskyblue$0))return 77;
              if(! caml_string_notequal(s,cst_lightslategray$0))return 78;
              if(! caml_string_notequal(s,cst_lightslategrey$0))return 79;
              if(! caml_string_notequal(s,cst_lightsteelblue$0))return 80;
              if(! caml_string_notequal(s,cst_lightyellow$0))return 81;
              if(! caml_string_notequal(s,cst_lime$0))return 82}}}}
      else
       {var switch$8=caml_string_compare(s,cst_darkslategray$0);
        if(0 <= switch$8)
         {if(! (0 < switch$8))return 36;
          var switch$9=caml_string_compare(s,cst_greenyellow$0);
          if(0 <= switch$9)
           {if(! (0 < switch$9))return 56;
            var switch$10=caml_string_compare(s,cst_lavenderblush$0);
            if(0 <= switch$10)
             {if(! (0 < switch$10))return 64;
              if(! caml_string_notequal(s,cst_lawngreen$0))return 65;
              if(! caml_string_notequal(s,cst_lemonchiffon$0))return 66;
              if(! caml_string_notequal(s,cst_lightblue$0))return 67;
              if(! caml_string_notequal(s,cst_lightcoral$0))return 68;
              if(! caml_string_notequal(s,cst_lightcyan$0))return 69;
              if(! caml_string_notequal(s,cst_lightgoldenrodyellow$0))
               return 70;
              if(! caml_string_notequal(s,cst_lightgray$0))return 71;
              if(! caml_string_notequal(s,cst_lightgreen$0))return 72}
            else
             {if(! caml_string_notequal(s,cst_grey$0))return 54;
              if(! caml_string_notequal(s,cst_honeydew$0))return 57;
              if(! caml_string_notequal(s,cst_hotpink$0))return 58;
              if(! caml_string_notequal(s,cst_indianred$0))return 59;
              if(! caml_string_notequal(s,cst_indigo$0))return 60;
              if(! caml_string_notequal(s,cst_ivory$0))return 61;
              if(! caml_string_notequal(s,cst_khaki$0))return 62;
              if(! caml_string_notequal(s,cst_lavender$0))return 63}}
          else
           {var switch$11=caml_string_compare(s,cst_floralwhite$0);
            if(0 <= switch$11)
             {if(! (0 < switch$11))return 46;
              if(! caml_string_notequal(s,cst_forestgreen$0))return 47;
              if(! caml_string_notequal(s,cst_fuchsia$0))return 48;
              if(! caml_string_notequal(s,cst_gainsboro$0))return 49;
              if(! caml_string_notequal(s,cst_ghostwhite$0))return 50;
              if(! caml_string_notequal(s,cst_gold$0))return 51;
              if(! caml_string_notequal(s,cst_goldenrod$0))return 52;
              if(! caml_string_notequal(s,cst_gray$0))return 53;
              if(! caml_string_notequal(s,cst_green$0))return 55}
            else
             {if(! caml_string_notequal(s,cst_darkslategrey$0))return 37;
              if(! caml_string_notequal(s,cst_darkturquoise$0))return 38;
              if(! caml_string_notequal(s,cst_darkviolet$0))return 39;
              if(! caml_string_notequal(s,cst_deeppink$0))return 40;
              if(! caml_string_notequal(s,cst_deepskyblue$0))return 41;
              if(! caml_string_notequal(s,cst_dimgray$0))return 42;
              if(! caml_string_notequal(s,cst_dimgrey$0))return 43;
              if(! caml_string_notequal(s,cst_dodgerblue$0))return 44;
              if(! caml_string_notequal(s,cst_firebrick$0))return 45}}}
        else
         {var switch$12=caml_string_compare(s,cst_cornsilk$0);
          if(0 <= switch$12)
           {if(! (0 < switch$12))return 18;
            var switch$13=caml_string_compare(s,cst_darkkhaki$0);
            if(0 <= switch$13)
             {if(! (0 < switch$13))return 27;
              if(! caml_string_notequal(s,cst_darkmagenta$0))return 28;
              if(! caml_string_notequal(s,cst_darkolivegreen$0))return 29;
              if(! caml_string_notequal(s,cst_darkorange$0))return 30;
              if(! caml_string_notequal(s,cst_darkorchid$0))return 31;
              if(! caml_string_notequal(s,cst_darkred$0))return 32;
              if(! caml_string_notequal(s,cst_darksalmon$0))return 33;
              if(! caml_string_notequal(s,cst_darkseagreen$0))return 34;
              if(! caml_string_notequal(s,cst_darkslateblue$0))return 35}
            else
             {if(! caml_string_notequal(s,cst_crimson$0))return 19;
              if(! caml_string_notequal(s,cst_cyan$0))return 20;
              if(! caml_string_notequal(s,cst_darkblue$0))return 21;
              if(! caml_string_notequal(s,cst_darkcyan$0))return 22;
              if(! caml_string_notequal(s,cst_darkgoldenrod$0))return 23;
              if(! caml_string_notequal(s,cst_darkgray$0))return 24;
              if(! caml_string_notequal(s,cst_darkgreen$0))return 25;
              if(! caml_string_notequal(s,cst_darkgrey$0))return 26}}
          else
           {var switch$14=caml_string_compare(s,cst_blue$0);
            if(0 <= switch$14)
             {if(! (0 < switch$14))return 9;
              if(! caml_string_notequal(s,cst_blueviolet$0))return 10;
              if(! caml_string_notequal(s,cst_brown$0))return 11;
              if(! caml_string_notequal(s,cst_burlywood$0))return 12;
              if(! caml_string_notequal(s,cst_cadetblue$0))return 13;
              if(! caml_string_notequal(s,cst_chartreuse$0))return 14;
              if(! caml_string_notequal(s,cst_chocolate$0))return 15;
              if(! caml_string_notequal(s,cst_coral$0))return 16;
              if(! caml_string_notequal(s,cst_cornflowerblue$0))return 17}
            else
             {if(! caml_string_notequal(s,cst_aliceblue$0))return 0;
              if(! caml_string_notequal(s,cst_antiquewhite$0))return 1;
              if(! caml_string_notequal(s,cst_aqua$0))return 2;
              if(! caml_string_notequal(s,cst_aquamarine$0))return 3;
              if(! caml_string_notequal(s,cst_azure$0))return 4;
              if(! caml_string_notequal(s,cst_beige$0))return 5;
              if(! caml_string_notequal(s,cst_bisque$0))return 6;
              if(! caml_string_notequal(s,cst_black$0))return 7;
              if(! caml_string_notequal(s,cst_blanchedalmond$0))return 8}}}}
      var _db_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color_name);
      throw [0,Stdlib[6],_db_]}
    function rgb_of_name(param)
     {var _da_=param;
      if(74 <= _da_)
       {if(111 <= _da_)
         switch(_da_)
          {case 111:return _bo_;
           case 112:return _bp_;
           case 113:return _bq_;
           case 114:return _br_;
           case 115:return _bs_;
           case 116:return _bt_;
           case 117:return _bu_;
           case 118:return _bv_;
           case 119:return _bw_;
           case 120:return _bx_;
           case 121:return _by_;
           case 122:return _bz_;
           case 123:return _bA_;
           case 124:return _bB_;
           case 125:return _bC_;
           case 126:return _bD_;
           case 127:return _bE_;
           case 128:return _bF_;
           case 129:return _bG_;
           case 130:return _bH_;
           case 131:return _bI_;
           case 132:return _bJ_;
           case 133:return _bK_;
           case 134:return _bL_;
           case 135:return _bM_;
           case 136:return _bN_;
           case 137:return _bO_;
           case 138:return _bP_;
           case 139:return _bQ_;
           case 140:return _bR_;
           case 141:return _bS_;
           case 142:return _bT_;
           case 143:return _bU_;
           case 144:return _bV_;
           case 145:return _bW_;
           default:return _bX_}
        switch(_da_)
         {case 74:return _aP_;
          case 75:return _aQ_;
          case 76:return _aR_;
          case 77:return _aS_;
          case 78:return _aT_;
          case 79:return _aU_;
          case 80:return _aV_;
          case 81:return _aW_;
          case 82:return _aX_;
          case 83:return _aY_;
          case 84:return _aZ_;
          case 85:return _a0_;
          case 86:return _a1_;
          case 87:return _a2_;
          case 88:return _a3_;
          case 89:return _a4_;
          case 90:return _a5_;
          case 91:return _a6_;
          case 92:return _a7_;
          case 93:return _a8_;
          case 94:return _a9_;
          case 95:return _a__;
          case 96:return _a$_;
          case 97:return _ba_;
          case 98:return _bb_;
          case 99:return _bc_;
          case 100:return _bd_;
          case 101:return _be_;
          case 102:return _bf_;
          case 103:return _bg_;
          case 104:return _bh_;
          case 105:return _bi_;
          case 106:return _bj_;
          case 107:return _bk_;
          case 108:return _bl_;
          case 109:return _bm_;
          default:return _bn_}}
      if(37 <= _da_)
       switch(_da_)
        {case 37:return _ae_;
         case 38:return _af_;
         case 39:return _ag_;
         case 40:return _ah_;
         case 41:return _ai_;
         case 42:return _aj_;
         case 43:return _ak_;
         case 44:return _al_;
         case 45:return _am_;
         case 46:return _an_;
         case 47:return _ao_;
         case 48:return _ap_;
         case 49:return _aq_;
         case 50:return _ar_;
         case 51:return _as_;
         case 52:return _at_;
         case 53:return _au_;
         case 54:return _av_;
         case 55:return _aw_;
         case 56:return _ax_;
         case 57:return _ay_;
         case 58:return _az_;
         case 59:return _aA_;
         case 60:return _aB_;
         case 61:return _aC_;
         case 62:return _aD_;
         case 63:return _aE_;
         case 64:return _aF_;
         case 65:return _aG_;
         case 66:return _aH_;
         case 67:return _aI_;
         case 68:return _aJ_;
         case 69:return _aK_;
         case 70:return _aL_;
         case 71:return _aM_;
         case 72:return _aN_;
         default:return _aO_}
      switch(_da_)
       {case 0:return _v_;
        case 1:return _w_;
        case 2:return _x_;
        case 3:return _y_;
        case 4:return _z_;
        case 5:return _A_;
        case 6:return _B_;
        case 7:return _C_;
        case 8:return _D_;
        case 9:return _E_;
        case 10:return _F_;
        case 11:return _G_;
        case 12:return _H_;
        case 13:return _I_;
        case 14:return _J_;
        case 15:return _K_;
        case 16:return _L_;
        case 17:return _M_;
        case 18:return _N_;
        case 19:return _O_;
        case 20:return _P_;
        case 21:return _Q_;
        case 22:return _R_;
        case 23:return _S_;
        case 24:return _T_;
        case 25:return _U_;
        case 26:return _V_;
        case 27:return _W_;
        case 28:return _X_;
        case 29:return _Y_;
        case 30:return _Z_;
        case 31:return ___;
        case 32:return _$_;
        case 33:return _aa_;
        case 34:return _ab_;
        case 35:return _ac_;
        default:return _ad_}}
    function rgb(a,r,g,b)
     {if(a){var a$0=a[1];return [3,[0,r,g,b,a$0]]}return [1,[0,r,g,b]]}
    function hsl(a,h,s,l)
     {if(a){var a$0=a[1];return [6,[0,h,s,l,a$0]]}return [5,[0,h,s,l]]}
    function string_of_t(param)
     {switch(param[0])
       {case 0:var n=param[1];return string_of_name(n);
        case 1:
         var match=param[1],b=match[3],g=match[2],r=match[1];
         return caml_call4(Stdlib_printf[4],_bY_,r,g,b);
        case 2:
         var match$0=param[1],b$0=match$0[3],g$0=match$0[2],r$0=match$0[1];
         return caml_call4(Stdlib_printf[4],_bZ_,r$0,g$0,b$0);
        case 3:
         var
          match$1=param[1],
          a=match$1[4],
          b$1=match$1[3],
          g$1=match$1[2],
          r$1=match$1[1];
         return caml_call5(Stdlib_printf[4],_b0_,r$1,g$1,b$1,a);
        case 4:
         var
          match$2=param[1],
          a$0=match$2[4],
          b$2=match$2[3],
          g$2=match$2[2],
          r$2=match$2[1];
         return caml_call5(Stdlib_printf[4],_b1_,r$2,g$2,b$2,a$0);
        case 5:
         var match$3=param[1],l=match$3[3],s=match$3[2],h=match$3[1];
         return caml_call4(Stdlib_printf[4],_b2_,h,s,l);
        default:
         var
          match$4=param[1],
          a$1=match$4[4],
          l$0=match$4[3],
          s$0=match$4[2],
          h$0=match$4[1];
         return caml_call5(Stdlib_printf[4],_b3_,h$0,s$0,l$0,a$1)}}
    function hex_of_rgb(param)
     {var blue=param[3],green=param[2],red=param[1];
      function in_range(i)
       {var
         _c8_=caml_call2(symbol$5,i,0),
         _c9_=_c8_ || caml_call2(symbol$9,i,255);
        if(_c9_)
         {var
           _c__=caml_call1(Stdlib[33],i),
           _c$_=caml_call2(Stdlib[28],_c__,cst_is_out_of_valid_range);
          throw [0,Stdlib[6],_c$_]}
        return _c9_}
      in_range(red);
      in_range(green);
      in_range(blue);
      return caml_call4(Stdlib_printf[4],_b4_,red,green,blue)}
    function js_t_of_js_string(s)
     {var
       rgb_re=
        new regExp_withFlags(caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d)),
       rgb_pct_re=
        new regExp_withFlags(caml_jsbytes_of_string(cst_rgb_s_d_s_d_s_d$0)),
       rgba_re=
        new regExp_withFlags(caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d)),
       rgba_pct_re=
        new
         regExp_withFlags
         (caml_jsbytes_of_string(cst_rgba_s_d_s_d_s_d_d_d$0)),
       hsl_re=
        new regExp_withFlags(caml_jsbytes_of_string(cst_hsl_s_d_s_d_s_d)),
       hsla_re=
        new regExp_withFlags(caml_jsbytes_of_string(cst_hsla_s_d_s_d_s_d_d_d));
      if
       (!
        (rgb_re.test(s) | 0)
        &&
        !
        (rgba_re.test(s) | 0)
        &&
        !
        (rgb_pct_re.test(s) | 0)
        &&
        !
        (rgba_pct_re.test(s) | 0)
        &&
        !
        (hsl_re.test(s) | 0)
        &&
        !
        (hsla_re.test(s) | 0))
       {var _c5_=caml_string_of_jsstring(s);
        if(caml_call2(Stdlib_list[33],_c5_,_b5_))return s;
        var
         _c6_=caml_string_of_jsstring(s),
         _c7_=caml_call2(Stdlib[28],_c6_,cst_is_not_a_valid_color);
        throw [0,Stdlib[6],_c7_]}
      return s}
    function js(c)
     {if(0 === c[0])
       {var n=c[1];return caml_jsstring_of_string(string_of_name(n))}
      return caml_jsstring_of_string(string_of_t(c))}
    function ml(c)
     {var s=caml_string_of_jsstring(c);
      try
       {var _cS_=[0,name_of_string(s)];return _cS_}
      catch(_cT_)
       {_cT_ = caml_wrap_exception(_cT_);
        if(_cT_[1] === Stdlib[6])
         {var
           fail=
            function(param)
             {var _c4_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_color$0);
              throw [0,Stdlib[6],_c4_]},
           re_rgb=regexp(cst_rgba_d_d_d_d_d),
           re_rgb_pct=regexp(cst_rgba_d_d_d_d_d$0),
           re_hsl=regexp(cst_hsla_d_d_d_d_d),
           i_of_s_o=
            function(param)
             {if(param)
               {var i=param[1];
                try
                 {var _c2_=caml_int_of_string(i);return _c2_}
                catch(_c3_)
                 {_c3_ = caml_wrap_exception(_c3_);
                  if(_c3_[1] === Stdlib[6])
                   var s=_c3_[2];
                  else
                   {if(_c3_[1] !== Stdlib[7])throw _c3_;var s=_c3_[2]}
                  var
                   _cZ_=caml_call2(Stdlib[28],cst$39,s),
                   _c0_=caml_call2(Stdlib[28],i,_cZ_),
                   _c1_=caml_call2(Stdlib[28],cst_color_conversion_error,_c0_);
                  throw [0,Stdlib[6],_c1_]}}
              return fail(0)},
           f_of_s=
            function(f)
             {try
               {var _cX_=caml_float_of_string(f);return _cX_}
              catch(_cY_)
               {_cY_ = caml_wrap_exception(_cY_);
                if(_cY_[1] === Stdlib[6])
                 var s=_cY_[2];
                else
                 {if(_cY_[1] !== Stdlib[7])throw _cY_;var s=_cY_[2]}
                var
                 _cU_=caml_call2(Stdlib[28],cst$40,s),
                 _cV_=caml_call2(Stdlib[28],f,_cU_),
                 _cW_=caml_call2(Stdlib[28],cst_color_conversion_error$0,_cV_);
                throw [0,Stdlib[6],_cW_]}},
           match=string_match(re_rgb,s,0);
          if(match)
           {var
             r=match[1],
             red=matched_group(r,2),
             green=matched_group(r,3),
             blue=matched_group(r,4),
             alpha=matched_group(r,5),
             match$0=matched_group(r,1);
            if(match$0)
             {var _cA_=match$0[1];
              if(! caml_string_notequal(_cA_,cst_rgb))
               {if(alpha)return fail(0);
                var _cE_=i_of_s_o(blue),_cF_=i_of_s_o(green);
                return [1,[0,i_of_s_o(red),_cF_,_cE_]]}
              if(! caml_string_notequal(_cA_,cst_rgba))
               {if(alpha)
                 {var
                   a=alpha[1],
                   _cB_=f_of_s(a),
                   _cC_=i_of_s_o(blue),
                   _cD_=i_of_s_o(green);
                  return [3,[0,i_of_s_o(red),_cD_,_cC_,_cB_]]}
                return fail(0)}}
            return fail(0)}
          var match$1=string_match(re_rgb_pct,s,0);
          if(match$1)
           {var
             r$0=match$1[1],
             red$0=matched_group(r$0,2),
             green$0=matched_group(r$0,3),
             blue$0=matched_group(r$0,4),
             alpha$0=matched_group(r$0,5),
             match$2=matched_group(r$0,1);
            if(match$2)
             {var _cG_=match$2[1];
              if(! caml_string_notequal(_cG_,cst_rgb$0))
               {if(alpha$0)return fail(0);
                var _cK_=i_of_s_o(blue$0),_cL_=i_of_s_o(green$0);
                return [2,[0,i_of_s_o(red$0),_cL_,_cK_]]}
              if(! caml_string_notequal(_cG_,cst_rgba$0))
               {if(alpha$0)
                 {var
                   a$0=alpha$0[1],
                   _cH_=f_of_s(a$0),
                   _cI_=i_of_s_o(blue$0),
                   _cJ_=i_of_s_o(green$0);
                  return [4,[0,i_of_s_o(red$0),_cJ_,_cI_,_cH_]]}
                return fail(0)}}
            return fail(0)}
          var match$3=string_match(re_hsl,s,0);
          if(match$3)
           {var
             r$1=match$3[1],
             red$1=matched_group(r$1,2),
             green$1=matched_group(r$1,3),
             blue$1=matched_group(r$1,4),
             alpha$1=matched_group(r$1,5),
             match$4=matched_group(r$1,1);
            if(match$4)
             {var _cM_=match$4[1];
              if(! caml_string_notequal(_cM_,cst_hsl))
               {if(alpha$1)return fail(0);
                var _cQ_=i_of_s_o(blue$1),_cR_=i_of_s_o(green$1);
                return [5,[0,i_of_s_o(red$1),_cR_,_cQ_]]}
              if(! caml_string_notequal(_cM_,cst_hsla))
               {if(alpha$1)
                 {var
                   a$1=alpha$1[1],
                   _cN_=f_of_s(a$1),
                   _cO_=i_of_s_o(blue$1),
                   _cP_=i_of_s_o(green$1);
                  return [6,[0,i_of_s_o(red$1),_cP_,_cO_,_cN_]]}
                return fail(0)}}
            return fail(0)}
          return fail(0)}
        throw _cT_}}
    function string_of_t$0(param)
     {if(typeof param === "number")
       return cst_0;
      else
       switch(param[0])
        {case 0:
          var f=param[1];return caml_call3(Stdlib_printf[4],_b6_,f,cst_em$0);
         case 1:
          var f$0=param[1];
          return caml_call3(Stdlib_printf[4],_b7_,f$0,cst_ex);
         case 2:
          var f$1=param[1];
          return caml_call3(Stdlib_printf[4],_b8_,f$1,cst_px);
         case 3:
          var f$2=param[1];
          return caml_call3(Stdlib_printf[4],_b9_,f$2,cst_gd);
         case 4:
          var f$3=param[1];
          return caml_call3(Stdlib_printf[4],_b__,f$3,cst_rem);
         case 5:
          var f$4=param[1];
          return caml_call3(Stdlib_printf[4],_b$_,f$4,cst_vw);
         case 6:
          var f$5=param[1];
          return caml_call3(Stdlib_printf[4],_ca_,f$5,cst_vh);
         case 7:
          var f$6=param[1];
          return caml_call3(Stdlib_printf[4],_cb_,f$6,cst_vm);
         case 8:
          var f$7=param[1];
          return caml_call3(Stdlib_printf[4],_cc_,f$7,cst_ch);
         case 9:
          var f$8=param[1];
          return caml_call3(Stdlib_printf[4],_cd_,f$8,cst_mm);
         case 10:
          var f$9=param[1];
          return caml_call3(Stdlib_printf[4],_ce_,f$9,cst_cm);
         case 11:
          var f$10=param[1];
          return caml_call3(Stdlib_printf[4],_cf_,f$10,cst_in);
         case 12:
          var f$11=param[1];
          return caml_call3(Stdlib_printf[4],_cg_,f$11,cst_pt);
         default:
          var f$12=param[1];
          return caml_call3(Stdlib_printf[4],_ch_,f$12,cst_pc)}}
    function js$0(t){return caml_jsstring_of_string(string_of_t$0(t))}
    function ml$0(t)
     {var s=caml_string_of_jsstring(t);
      if(caml_call2(String[38],s,cst_0$0))return 0;
      function fail(param)
       {var _cz_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length);
        throw [0,Stdlib[6],_cz_]}
      var re=regexp(cst_d_d_s_S),match=string_match(re,s,0);
      if(match)
       {var r=match[1],match$0=matched_group(r,1);
        if(match$0)
         {var f=match$0[1];
          try
           {var _cx_=caml_float_of_string(f)}
          catch(exn)
           {exn = caml_wrap_exception(exn);
            if(exn[1] === Stdlib[6])
             {var
               s$0=exn[2],
               _cw_=caml_call2(Stdlib[28],cst_length_conversion_error,s$0);
              throw [0,Stdlib[6],_cw_]}
            throw exn}
          var f$0=_cx_}
        else
         var f$0=fail(0);
        var match$1=matched_group(r,2);
        if(match$1)
         {var _cy_=match$1[1],switch$0=caml_string_compare(_cy_,cst_pc$0);
          if(0 <= switch$0)
           {if(! (0 < switch$0))return [13,f$0];
            if(! caml_string_notequal(_cy_,cst_pt$0))return [12,f$0];
            if(! caml_string_notequal(_cy_,cst_px$0))return [2,f$0];
            if(! caml_string_notequal(_cy_,cst_rem$0))return [4,f$0];
            if(! caml_string_notequal(_cy_,cst_vh$0))return [6,f$0];
            if(! caml_string_notequal(_cy_,cst_vm$0))return [7,f$0];
            if(! caml_string_notequal(_cy_,cst_vw$0))return [5,f$0]}
          else
           {if(! caml_string_notequal(_cy_,cst_ch$0))return [8,f$0];
            if(! caml_string_notequal(_cy_,cst_cm$0))return [10,f$0];
            if(! caml_string_notequal(_cy_,cst_em$1))return [0,f$0];
            if(! caml_string_notequal(_cy_,cst_ex$0))return [1,f$0];
            if(! caml_string_notequal(_cy_,cst_gd$0))return [3,f$0];
            if(! caml_string_notequal(_cy_,cst_in$0))return [11,f$0];
            if(! caml_string_notequal(_cy_,cst_mm$0))return [9,f$0]}
          return fail(0)}
        return fail(0)}
      return fail(0)}
    var Length=[0,string_of_t$0,js$0,ml$0];
    function string_of_t$1(param)
     {switch(param[0])
       {case 0:
         var f=param[1];return caml_call3(Stdlib_printf[4],_ci_,f,cst_deg);
        case 1:
         var f$0=param[1];
         return caml_call3(Stdlib_printf[4],_cj_,f$0,cst_grad);
        case 2:
         var f$1=param[1];
         return caml_call3(Stdlib_printf[4],_ck_,f$1,cst_rad);
        default:
         var f$2=param[1];
         return caml_call3(Stdlib_printf[4],_cl_,f$2,cst_turns)}}
    function js$1(t){return caml_jsstring_of_string(string_of_t$1(t))}
    function ml$1(j)
     {var s=caml_string_of_jsstring(j),re=regexp(cst_d_d_deg_grad_rad_turns);
      function fail(param)
       {var _cv_=caml_call2(Stdlib[28],s,cst_is_not_a_valid_length$0);
        throw [0,Stdlib[6],_cv_]}
      var match=string_match(re,s,0);
      if(match)
       {var r=match[1],match$0=matched_group(r,1);
        if(match$0)
         {var f=match$0[1];
          try
           {var _ct_=caml_float_of_string(f)}
          catch(exn)
           {exn = caml_wrap_exception(exn);
            if(exn[1] === Stdlib[6])
             {var
               s$0=exn[2],
               _cs_=caml_call2(Stdlib[28],cst_length_conversion_error$0,s$0);
              throw [0,Stdlib[6],_cs_]}
            throw exn}
          var f$0=_ct_}
        else
         var f$0=fail(0);
        var match$1=matched_group(r,2);
        if(match$1)
         {var _cu_=match$1[1];
          if(! caml_string_notequal(_cu_,cst_deg$0))return [0,f$0];
          if(! caml_string_notequal(_cu_,cst_grad$0))return [1,f$0];
          if(! caml_string_notequal(_cu_,cst_rad$0))return [2,f$0];
          if(! caml_string_notequal(_cu_,cst_turns$0))return [3,f$0]}
        return fail(0)}
      return fail(0)}
    var
     Angle=[0,string_of_t$1,js$1,ml$1],
     Js_of_ocaml_CSS=
      [0,
       [0,
        string_of_name,
        rgb_of_name,
        hex_of_rgb,
        rgb,
        hsl,
        string_of_t,
        js,
        ml,
        js_t_of_js_string],
       Length,
       Angle];
    caml_register_global(1665,Js_of_ocaml_CSS,"Js_of_ocaml__CSS");
    function listen(opt,target,typ,cb)
     {if(opt)var sth=opt[1],capture=sth;else var capture=0;
      var _cr_=! ! capture;
      return addEventListener
              (target,
               typ,
               full_handler(function(n,e){return ! ! caml_call2(cb,n,e)}),
               _cr_)}
    var Js_of_ocaml_Dom_events=[0,Event$0,listen,removeEventListener];
    caml_register_global
     (1666,Js_of_ocaml_Dom_events,"Js_of_ocaml__Dom_events");
    var
     xmlns="http://www.w3.org/2000/svg",
     SVGError=[248,cst_Js_of_ocaml_Dom_svg_SVGErr,caml_fresh_oo_id(0)];
    function createElement$0(doc,name)
     {return doc.createElementNS
              ("http://www.w3.org/2000/svg",caml_jsstring_of_string(name))}
    function unsafeCreateElement$0(doc,name){return createElement$0(doc,name)}
    function createA$0(doc){return unsafeCreateElement$0(doc,cst_a$2)}
    function createAltGlyph(doc)
     {return unsafeCreateElement$0(doc,cst_altglyph)}
    function createAltGlyphDef(doc)
     {return unsafeCreateElement$0(doc,cst_altglyphdef)}
    function createAltGlyphItem(doc)
     {return unsafeCreateElement$0(doc,cst_altglyphitem)}
    function createAnimate(doc){return unsafeCreateElement$0(doc,cst_animate)}
    function createAnimateColor(doc)
     {return unsafeCreateElement$0(doc,cst_animatecolor)}
    function createAnimateMotion(doc)
     {return unsafeCreateElement$0(doc,cst_animatemotion)}
    function createAnimateTransform(doc)
     {return unsafeCreateElement$0(doc,cst_animatetransform)}
    function createCircle(doc){return unsafeCreateElement$0(doc,cst_circle)}
    function createClipPath(doc)
     {return unsafeCreateElement$0(doc,cst_clippath)}
    function createCursor(doc){return unsafeCreateElement$0(doc,cst_cursor)}
    function createDefs(doc){return unsafeCreateElement$0(doc,cst_defs)}
    function createDesc(doc){return unsafeCreateElement$0(doc,cst_desc)}
    function createEllipse(doc){return unsafeCreateElement$0(doc,cst_ellipse)}
    function createFilter(doc){return unsafeCreateElement$0(doc,cst_filter)}
    function createFont(doc){return unsafeCreateElement$0(doc,cst_font)}
    function createFontFace(doc)
     {return unsafeCreateElement$0(doc,cst_font_face)}
    function createFontFaceFormat(doc)
     {return unsafeCreateElement$0(doc,cst_font_face_format)}
    function createFontFaceName(doc)
     {return unsafeCreateElement$0(doc,cst_font_face_name)}
    function createFontFaceSrc(doc)
     {return unsafeCreateElement$0(doc,cst_font_face_src)}
    function createFontFaceUri(doc)
     {return unsafeCreateElement$0(doc,cst_font_face_uri)}
    function createForeignObject(doc)
     {return unsafeCreateElement$0(doc,cst_foreignObject)}
    function createG(doc){return unsafeCreateElement$0(doc,cst_g$0)}
    function createGlyph(doc){return unsafeCreateElement$0(doc,cst_glyph)}
    function createGlyphRef(doc)
     {return unsafeCreateElement$0(doc,cst_glyphref)}
    function createhkern(doc){return unsafeCreateElement$0(doc,cst_hkern)}
    function createImage(doc){return unsafeCreateElement$0(doc,cst_image)}
    function createLineElement(doc)
     {return unsafeCreateElement$0(doc,cst_line)}
    function createLinearElement(doc)
     {return unsafeCreateElement$0(doc,cst_lineargradient)}
    function createMask(doc){return unsafeCreateElement$0(doc,cst_mask)}
    function createMetaData(doc)
     {return unsafeCreateElement$0(doc,cst_metadata)}
    function createMissingGlyph(doc)
     {return unsafeCreateElement$0(doc,cst_missing_glyph)}
    function createMPath(doc){return unsafeCreateElement$0(doc,cst_mpath)}
    function createPath(doc){return unsafeCreateElement$0(doc,cst_path)}
    function createPattern(doc){return unsafeCreateElement$0(doc,cst_pattern)}
    function createPolygon(doc){return unsafeCreateElement$0(doc,cst_polygon)}
    function createPolyline(doc)
     {return unsafeCreateElement$0(doc,cst_polyline)}
    function createRadialgradient(doc)
     {return unsafeCreateElement$0(doc,cst_radialgradient)}
    function createRect(doc){return unsafeCreateElement$0(doc,cst_rect)}
    function createScript$0(doc)
     {return unsafeCreateElement$0(doc,cst_script$2)}
    function createSet(doc){return unsafeCreateElement$0(doc,cst_set)}
    function createStop(doc){return unsafeCreateElement$0(doc,cst_stop)}
    function createStyle$0(doc){return unsafeCreateElement$0(doc,cst_style$2)}
    function createSvg(doc){return unsafeCreateElement$0(doc,cst_svg)}
    function createSwitch(doc){return unsafeCreateElement$0(doc,cst_switch)}
    function createSymbol(doc){return unsafeCreateElement$0(doc,cst_symbol)}
    function createTextElement(doc)
     {return unsafeCreateElement$0(doc,cst_text$0)}
    function createTextpath(doc)
     {return unsafeCreateElement$0(doc,cst_textpath)}
    function createTitle$0(doc){return unsafeCreateElement$0(doc,cst_title$2)}
    function createTref(doc){return unsafeCreateElement$0(doc,cst_tref)}
    function createTspan(doc){return unsafeCreateElement$0(doc,cst_tspan)}
    function createUse(doc){return unsafeCreateElement$0(doc,cst_use)}
    function createView(doc){return unsafeCreateElement$0(doc,cst_view)}
    function createvkern(doc){return unsafeCreateElement$0(doc,cst_vkern)}
    var svg_element=Unsafe[1].SVGElement,document$1=Unsafe[1].document;
    function getElementById$0(id)
     {function _co_(e){if(e instanceof svg_element)return e;throw Stdlib[8]}
      function _cp_(param){throw Stdlib[8]}
      var _cq_=Unsafe[1].document.getElementById(caml_jsstring_of_string(id));
      return caml_call3(Opt[7],_cq_,_cp_,_co_)}
    function element$2(e){return e instanceof svg_element?e:no_handler}
    function unsafeCoerce$0(e,tag)
     {var _cn_=caml_jsstring_of_string(tag);
      return e.tagName.toLowerCase() === _cn_?e:no_handler}
    function a$0(e){return unsafeCoerce$0(e,cst_a$3)}
    function altGlyph(e){return unsafeCoerce$0(e,cst_altglyph$0)}
    function altGlyphDef(e){return unsafeCoerce$0(e,cst_altglyphdef$0)}
    function altGlyphItem(e){return unsafeCoerce$0(e,cst_altglyphitem$0)}
    function animate(e){return unsafeCoerce$0(e,cst_animate$0)}
    function animateColor(e){return unsafeCoerce$0(e,cst_animatecolor$0)}
    function animateMotion(e){return unsafeCoerce$0(e,cst_animatemotion$0)}
    function animateTransform(e)
     {return unsafeCoerce$0(e,cst_animatetransform$0)}
    function circle(e){return unsafeCoerce$0(e,cst_circle$0)}
    function clipPath(e){return unsafeCoerce$0(e,cst_clippath$0)}
    function cursor(e){return unsafeCoerce$0(e,cst_cursor$0)}
    function defs(e){return unsafeCoerce$0(e,cst_defs$0)}
    function desc(e){return unsafeCoerce$0(e,cst_desc$0)}
    function ellipse(e){return unsafeCoerce$0(e,cst_ellipse$0)}
    function filter(e){return unsafeCoerce$0(e,cst_filter$0)}
    function font(e){return unsafeCoerce$0(e,cst_font$0)}
    function fontFace(e){return unsafeCoerce$0(e,cst_font_face$0)}
    function fontFaceFormat(e)
     {return unsafeCoerce$0(e,cst_font_face_format$0)}
    function fontFaceName(e){return unsafeCoerce$0(e,cst_font_face_name$0)}
    function fontFaceSrc(e){return unsafeCoerce$0(e,cst_font_face_src$0)}
    function fontFaceUri(e){return unsafeCoerce$0(e,cst_font_face_uri$0)}
    function foreignObject(e){return unsafeCoerce$0(e,cst_foreignobject)}
    function g(e){return unsafeCoerce$0(e,cst_g$1)}
    function glyph(e){return unsafeCoerce$0(e,cst_glyph$0)}
    function glyphRef(e){return unsafeCoerce$0(e,cst_glyphref$0)}
    function hkern(e){return unsafeCoerce$0(e,cst_hkern$0)}
    function image(e){return unsafeCoerce$0(e,cst_image$0)}
    function lineElement(e){return unsafeCoerce$0(e,cst_line$0)}
    function linearElement(e){return unsafeCoerce$0(e,cst_lineargradient$0)}
    function mask(e){return unsafeCoerce$0(e,cst_mask$0)}
    function metaData(e){return unsafeCoerce$0(e,cst_metadata$0)}
    function missingGlyph(e){return unsafeCoerce$0(e,cst_missing_glyph$0)}
    function mPath(e){return unsafeCoerce$0(e,cst_mpath$0)}
    function path$0(e){return unsafeCoerce$0(e,cst_path$0)}
    function pattern(e){return unsafeCoerce$0(e,cst_pattern$0)}
    function polygon(e){return unsafeCoerce$0(e,cst_polygon$0)}
    function polyline(e){return unsafeCoerce$0(e,cst_polyline$0)}
    function radialgradient(e){return unsafeCoerce$0(e,cst_radialgradient$0)}
    function rect(e){return unsafeCoerce$0(e,cst_rect$0)}
    function script$0(e){return unsafeCoerce$0(e,cst_script$3)}
    function set$1(e){return unsafeCoerce$0(e,cst_set$0)}
    function stop(e){return unsafeCoerce$0(e,cst_stop$0)}
    function style$0(e){return unsafeCoerce$0(e,cst_style$3)}
    function svg(e){return unsafeCoerce$0(e,cst_svg$0)}
    function switch$0(e){return unsafeCoerce$0(e,cst_switch$0)}
    function symbol$12(e){return unsafeCoerce$0(e,cst_symbol$0)}
    function textElement(e){return unsafeCoerce$0(e,cst_text$1)}
    function textpath(e){return unsafeCoerce$0(e,cst_textpath$0)}
    function title$0(e){return unsafeCoerce$0(e,cst_title$3)}
    function tref(e){return unsafeCoerce$0(e,cst_tref$0)}
    function tspan(e){return unsafeCoerce$0(e,cst_tspan$0)}
    function use(e){return unsafeCoerce$0(e,cst_use$0)}
    function view(e){return unsafeCoerce$0(e,cst_view$0)}
    function vkern(e){return unsafeCoerce$0(e,cst_vkern$0)}
    var
     Js_of_ocaml_Dom_svg=
      [0,
       xmlns,
       SVGError,
       createElement$0,
       createA$0,
       createAltGlyph,
       createAltGlyphDef,
       createAltGlyphItem,
       createAnimate,
       createAnimateColor,
       createAnimateMotion,
       createAnimateTransform,
       createCircle,
       createClipPath,
       createCursor,
       createDefs,
       createDesc,
       createEllipse,
       createFilter,
       createFont,
       createFontFace,
       createFontFaceFormat,
       createFontFaceName,
       createFontFaceSrc,
       createFontFaceUri,
       createForeignObject,
       createG,
       createGlyph,
       createGlyphRef,
       createhkern,
       createImage,
       createLineElement,
       createLinearElement,
       createMask,
       createMetaData,
       createMissingGlyph,
       createMPath,
       createPath,
       createPattern,
       createPolygon,
       createPolyline,
       createRadialgradient,
       createRect,
       createScript$0,
       createSet,
       createStop,
       createStyle$0,
       createSvg,
       createSwitch,
       createSymbol,
       createTextElement,
       createTextpath,
       createTitle$0,
       createTref,
       createTspan,
       createUse,
       createView,
       createvkern,
       svg_element,
       document$1,
       getElementById$0,
       [0,
        element$2,
        a$0,
        altGlyph,
        altGlyphDef,
        altGlyphItem,
        animate,
        animateColor,
        animateMotion,
        animateTransform,
        circle,
        clipPath,
        cursor,
        defs,
        desc,
        ellipse,
        filter,
        font,
        fontFace,
        fontFaceFormat,
        fontFaceName,
        fontFaceSrc,
        fontFaceUri,
        foreignObject,
        g,
        glyph,
        glyphRef,
        hkern,
        image,
        lineElement,
        linearElement,
        mask,
        metaData,
        missingGlyph,
        mPath,
        path$0,
        pattern,
        polygon,
        polyline,
        radialgradient,
        rect,
        script$0,
        set$1,
        stop,
        style$0,
        svg,
        switch$0,
        symbol$12,
        textElement,
        textpath,
        title$0,
        tref,
        tspan,
        use,
        view,
        vkern]];
    caml_register_global(1667,Js_of_ocaml_Dom_svg,"Js_of_ocaml__Dom_svg");
    function withCredentials(b)
     {var init={};init.withCredentials = ! ! b;return init}
    var
     eventSource=Unsafe[1].EventSource,
     eventSource_options=Unsafe[1].EventSource,
     Js_of_ocaml_EventSource=
      [0,withCredentials,eventSource,eventSource_options,addEventListener];
    caml_register_global
     (1668,Js_of_ocaml_EventSource,"Js_of_ocaml__EventSource");
    var
     console=runtime.caml_js_get_console(0),
     Js_of_ocaml_Firebug=[0,console];
    caml_register_global(1669,Js_of_ocaml_Firebug,"Js_of_ocaml__Firebug");
    function empty_position_options(param){return {}}
    var
     x=Unsafe[1].navigator,
     geolocation=caml_call1(Optdef[5],x)?x.geolocation:x;
    function is_supported$2(param){return caml_call1(Optdef[5],geolocation)}
    var
     Js_of_ocaml_Geolocation=
      [0,empty_position_options,geolocation,is_supported$2];
    caml_register_global
     (1670,Js_of_ocaml_Geolocation,"Js_of_ocaml__Geolocation");
    function object_options(param){return {"localeMatcher":"best fit"}}
    function options(param)
     {return {"localeMatcher":"best fit",
              "usage":"sort",
              "sensitivity":"variant",
              "ignorePunctuation":false$0,
              "numeric":false$0,
              "caseFirst":"false"}}
    var Collator=[0,object_options,options];
    function options$0(param)
     {return {"localeMatcher":"best fit",
              "timeZone":t37,
              "hour12":t37,
              "hourCycle":t37,
              "formatMatcher":"best fit",
              "weekday":t37,
              "era":t37,
              "year":t37,
              "month":t37,
              "day":t37,
              "hour":t37,
              "minute":t37,
              "second":t37,
              "timeZoneName":t37}}
    var DateTimeFormat=[0,object_options,options$0];
    function options$1(param)
     {return {"localeMatcher":"best fit",
              "style":"decimal",
              "currency":t37,
              "currencyDisplay":t37,
              "useGrouping":true$0,
              "minimumIntegerDigits":t37,
              "minimumFractionDigits":t37,
              "maximumFractionDigits":t37,
              "minimumSignificantDigits":t37,
              "maximumSignificantDigits":t37}}
    var NumberFormat=[0,object_options,options$1];
    function options$2(param)
     {return {"localeMatcher":"best fit","type":"cardinal"}}
    var
     PluralRules=[0,object_options,options$2],
     intl=Unsafe[1].Intl,
     collator_constr=Unsafe[1].Intl.Collator,
     dateTimeFormat_constr=Unsafe[1].Intl.DateTimeFormat,
     numberFormat_constr=Unsafe[1].Intl.NumberFormat,
     pluralRules_constr=Unsafe[1].Intl.PluralRules;
    function is_supported$3(param){return caml_call1(Optdef[5],intl)}
    var
     Js_of_ocaml_Intl=
      [0,
       Collator,
       DateTimeFormat,
       NumberFormat,
       PluralRules,
       intl,
       collator_constr,
       dateTimeFormat_constr,
       numberFormat_constr,
       pluralRules_constr,
       is_supported$3];
    caml_register_global(1671,Js_of_ocaml_Intl,"Js_of_ocaml__Intl");
    var Js_of_ocaml$0=[0];
    caml_register_global(1672,Js_of_ocaml$0,"Js_of_ocaml");
    return}
  (function(){return this}()));


//# 1 "../../.js/base.base_internalhash_types/base_internalhash_types.cma.js"
(function(joo_global_object)
   {"use strict";
    var runtime=joo_global_object.jsoo_runtime,Base_internalhash_types=[0];
    runtime.caml_register_global
     (0,Base_internalhash_types,"Base_internalhash_types");
    return}
  (function(){return this}()));


//# 1 "../../.js/base.caml/caml.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     global_data=runtime.caml_get_global_data(),
     Stdlib=global_data.Stdlib,
     invalid_arg=Stdlib[1],
     failwith=Stdlib[2],
     Exit=Stdlib[3],
     Match_failure=Stdlib[4],
     Assert_failure=Stdlib[5],
     Invalid_argument=Stdlib[6],
     Failure=Stdlib[7],
     Not_found=Stdlib[8],
     Out_of_memory=Stdlib[9],
     Stack_overflow=Stdlib[10],
     Sys_error=Stdlib[11],
     End_of_file=Stdlib[12],
     Division_by_zero=Stdlib[13],
     Sys_blocked_io=Stdlib[14],
     Undefined_recursive_module=Stdlib[15],
     min=Stdlib[16],
     max=Stdlib[17],
     abs=Stdlib[18],
     max_int=Stdlib[19],
     min_int=Stdlib[20],
     lnot=Stdlib[21],
     infinity=Stdlib[22],
     neg_infinity=Stdlib[23],
     nan=Stdlib[24],
     max_float=Stdlib[25],
     min_float=Stdlib[26],
     epsilon_float=Stdlib[27],
     symbol=Stdlib[28],
     char_of_int=Stdlib[29],
     string_of_bool=Stdlib[30],
     bool_of_string_opt=Stdlib[31],
     bool_of_string=Stdlib[32],
     string_of_int=Stdlib[33],
     int_of_string_opt=Stdlib[34],
     string_of_float=Stdlib[35],
     float_of_string_opt=Stdlib[36],
     symbol$0=Stdlib[37],
     stdin=Stdlib[38],
     stdout=Stdlib[39],
     stderr=Stdlib[40],
     print_char=Stdlib[41],
     print_string=Stdlib[42],
     print_bytes=Stdlib[43],
     print_int=Stdlib[44],
     print_float=Stdlib[45],
     print_endline=Stdlib[46],
     print_newline=Stdlib[47],
     prerr_char=Stdlib[48],
     prerr_string=Stdlib[49],
     prerr_bytes=Stdlib[50],
     prerr_int=Stdlib[51],
     prerr_float=Stdlib[52],
     prerr_endline=Stdlib[53],
     prerr_newline=Stdlib[54],
     read_line=Stdlib[55],
     read_int_opt=Stdlib[56],
     read_int=Stdlib[57],
     read_float_opt=Stdlib[58],
     read_float=Stdlib[59],
     open_out=Stdlib[60],
     open_out_bin=Stdlib[61],
     open_out_gen=Stdlib[62],
     flush=Stdlib[63],
     flush_all=Stdlib[64],
     output_char=Stdlib[65],
     output_string=Stdlib[66],
     output_bytes=Stdlib[67],
     output=Stdlib[68],
     output_substring=Stdlib[69],
     output_byte=Stdlib[70],
     output_binary_int=Stdlib[71],
     output_value=Stdlib[72],
     seek_out=Stdlib[73],
     pos_out=Stdlib[74],
     out_channel_length=Stdlib[75],
     close_out=Stdlib[76],
     close_out_noerr=Stdlib[77],
     set_binary_mode_out=Stdlib[78],
     open_in=Stdlib[79],
     open_in_bin=Stdlib[80],
     open_in_gen=Stdlib[81],
     input_char=Stdlib[82],
     input_line=Stdlib[83],
     input=Stdlib[84],
     really_input=Stdlib[85],
     really_input_string=Stdlib[86],
     input_byte=Stdlib[87],
     input_binary_int=Stdlib[88],
     input_value=Stdlib[89],
     seek_in=Stdlib[90],
     pos_in=Stdlib[91],
     in_channel_length=Stdlib[92],
     close_in=Stdlib[93],
     close_in_noerr=Stdlib[94],
     set_binary_mode_in=Stdlib[95],
     LargeFile=Stdlib[96],
     string_of_format=Stdlib[97],
     symbol$1=Stdlib[98],
     exit=Stdlib[99],
     at_exit=Stdlib[100],
     valid_float_lexem=Stdlib[101],
     unsafe_really_input=Stdlib[102],
     do_at_exit=Stdlib[103],
     Caml=
      [0,
       invalid_arg,
       failwith,
       Exit,
       Match_failure,
       Assert_failure,
       Invalid_argument,
       Failure,
       Out_of_memory,
       Stack_overflow,
       Sys_error,
       End_of_file,
       Division_by_zero,
       Sys_blocked_io,
       Undefined_recursive_module,
       min,
       max,
       abs,
       max_int,
       min_int,
       lnot,
       infinity,
       neg_infinity,
       nan,
       max_float,
       min_float,
       epsilon_float,
       symbol,
       char_of_int,
       string_of_bool,
       bool_of_string_opt,
       bool_of_string,
       string_of_int,
       int_of_string_opt,
       string_of_float,
       float_of_string_opt,
       symbol$0,
       stdin,
       stdout,
       stderr,
       print_char,
       print_string,
       print_bytes,
       print_int,
       print_float,
       print_endline,
       print_newline,
       prerr_char,
       prerr_string,
       prerr_bytes,
       prerr_int,
       prerr_float,
       prerr_endline,
       prerr_newline,
       read_line,
       read_int_opt,
       read_int,
       read_float_opt,
       read_float,
       open_out,
       open_out_bin,
       open_out_gen,
       flush,
       flush_all,
       output_char,
       output_string,
       output_bytes,
       output,
       output_substring,
       output_byte,
       output_binary_int,
       output_value,
       seek_out,
       pos_out,
       out_channel_length,
       close_out,
       close_out_noerr,
       set_binary_mode_out,
       open_in,
       open_in_bin,
       open_in_gen,
       input_char,
       input_line,
       input,
       really_input,
       really_input_string,
       input_byte,
       input_binary_int,
       input_value,
       seek_in,
       pos_in,
       in_channel_length,
       close_in,
       close_in_noerr,
       set_binary_mode_in,
       LargeFile,
       string_of_format,
       symbol$1,
       exit,
       at_exit,
       valid_float_lexem,
       unsafe_really_input,
       do_at_exit,
       Not_found];
    runtime.caml_register_global(1,Caml,"Caml");
    return}
  (function(){return this}()));


//# 1 "../../.js/sexplib0/sexplib0.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
     caml_check_bound=runtime.caml_check_bound,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_float_of_string=runtime.caml_float_of_string,
     caml_format_float=runtime.caml_format_float,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_int_of_string=runtime.caml_int_of_string,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_string_unsafe_get=runtime.caml_string_unsafe_get,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst$11=caml_string_of_jsbytes(""),
     cst$2=caml_string_of_jsbytes("("),
     cst$3=caml_string_of_jsbytes("()"),
     cst$4=caml_string_of_jsbytes(")"),
     cst$5=caml_string_of_jsbytes(" "),
     cst$6=caml_string_of_jsbytes("("),
     cst$7=caml_string_of_jsbytes("()"),
     cst$8=caml_string_of_jsbytes(")"),
     cst$10=caml_string_of_jsbytes("()"),
     cst$9=caml_string_of_jsbytes("()"),
     cst=caml_string_of_jsbytes("\\"),
     cst_n=caml_string_of_jsbytes("\\n"),
     cst$0=caml_string_of_jsbytes(' "'),
     cst$1=caml_string_of_jsbytes('"'),
     cst_Sexplib0_Sexp_Not_found_s=
      caml_string_of_jsbytes("Sexplib0.Sexp.Not_found_s"),
     cst_Sexplib0_Sexp_Of_sexp_erro=
      caml_string_of_jsbytes("Sexplib0.Sexp.Of_sexp_error"),
     cst_Assert_failure=caml_string_of_jsbytes("Assert_failure"),
     cst_Match_failure=caml_string_of_jsbytes("Match_failure"),
     cst_fun_of_sexp_cannot_convert=
      caml_string_of_jsbytes("fun_of_sexp: cannot convert function values"),
     cst_opaque_of_sexp_cannot_conv=
      caml_string_of_jsbytes("opaque_of_sexp: cannot convert opaque values"),
     cst_hashtbl_of_sexp_tuple_list=
      caml_string_of_jsbytes("hashtbl_of_sexp: tuple list needed"),
     cst_hashtbl_of_sexp_list_neede=
      caml_string_of_jsbytes("hashtbl_of_sexp: list needed"),
     cst_array_of_sexp_list_needed=
      caml_string_of_jsbytes("array_of_sexp: list needed"),
     cst_list_of_sexp_list_needed=
      caml_string_of_jsbytes("list_of_sexp: list needed"),
     cst_triple_of_sexp_list_needed=
      caml_string_of_jsbytes("triple_of_sexp: list needed"),
     cst_triple_of_sexp_list_must_c=
      caml_string_of_jsbytes
       ("triple_of_sexp: list must contain exactly three elements only"),
     cst_pair_of_sexp_list_needed=
      caml_string_of_jsbytes("pair_of_sexp: list needed"),
     cst_pair_of_sexp_list_must_con=
      caml_string_of_jsbytes
       ("pair_of_sexp: list must contain exactly two elements only"),
     cst_None=caml_string_of_jsbytes("None"),
     cst_none=caml_string_of_jsbytes("none"),
     cst_option_of_sexp_only_none_c=
      caml_string_of_jsbytes("option_of_sexp: only none can be atom"),
     cst_Some=caml_string_of_jsbytes("Some"),
     cst_some=caml_string_of_jsbytes("some"),
     cst_option_of_sexp_list_must_r=
      caml_string_of_jsbytes
       ("option_of_sexp: list must represent optional value"),
     cst_None$0=caml_string_of_jsbytes("None"),
     cst_none$0=caml_string_of_jsbytes("none"),
     cst_option_of_sexp_only_none_c$0=
      caml_string_of_jsbytes("option_of_sexp: only none can be atom"),
     cst_Some$0=caml_string_of_jsbytes("Some"),
     cst_some$0=caml_string_of_jsbytes("some"),
     cst_option_of_sexp_list_must_b=
      caml_string_of_jsbytes("option_of_sexp: list must be (some el)"),
     cst_nativeint_of_sexp=caml_string_of_jsbytes("nativeint_of_sexp: "),
     cst_nativeint_of_sexp_atom_nee=
      caml_string_of_jsbytes("nativeint_of_sexp: atom needed"),
     cst_int64_of_sexp=caml_string_of_jsbytes("int64_of_sexp: "),
     cst_int64_of_sexp_atom_needed=
      caml_string_of_jsbytes("int64_of_sexp: atom needed"),
     cst_int32_of_sexp=caml_string_of_jsbytes("int32_of_sexp: "),
     cst_int32_of_sexp_atom_needed=
      caml_string_of_jsbytes("int32_of_sexp: atom needed"),
     cst_float_of_sexp=caml_string_of_jsbytes("float_of_sexp: "),
     cst_float_of_sexp_atom_needed=
      caml_string_of_jsbytes("float_of_sexp: atom needed"),
     cst_int_of_sexp=caml_string_of_jsbytes("int_of_sexp: "),
     cst_int_of_sexp_atom_needed=
      caml_string_of_jsbytes("int_of_sexp: atom needed"),
     cst_char_of_sexp_atom_string_m=
      caml_string_of_jsbytes
       ("char_of_sexp: atom string must contain one character only"),
     cst_char_of_sexp_atom_needed=
      caml_string_of_jsbytes("char_of_sexp: atom needed"),
     cst_bytes_of_sexp_atom_needed=
      caml_string_of_jsbytes("bytes_of_sexp: atom needed"),
     cst_string_of_sexp_atom_needed=
      caml_string_of_jsbytes("string_of_sexp: atom needed"),
     cst_False=caml_string_of_jsbytes("False"),
     cst_True=caml_string_of_jsbytes("True"),
     cst_false=caml_string_of_jsbytes("false"),
     cst_true=caml_string_of_jsbytes("true"),
     cst_bool_of_sexp_unknown_strin=
      caml_string_of_jsbytes("bool_of_sexp: unknown string"),
     cst_bool_of_sexp_atom_needed=
      caml_string_of_jsbytes("bool_of_sexp: atom needed"),
     cst_unit_of_sexp_empty_list_ne=
      caml_string_of_jsbytes("unit_of_sexp: empty list needed"),
     cst_15G=caml_string_of_jsbytes("%.15G"),
     cst_17G=caml_string_of_jsbytes("%.17G"),
     cst$13=caml_string_of_jsbytes(" "),
     cst_of_sexp_trying_to_convert_$0=
      caml_string_of_jsbytes("_of_sexp: trying to convert an empty type"),
     cst_of_sexp_trying_to_convert_=
      caml_string_of_jsbytes("_of_sexp: trying to convert a silly type"),
     cst_of_sexp_the_empty_list_is_$0=
      caml_string_of_jsbytes
       ("_of_sexp: the empty list is an invalid polymorphic variant"),
     cst_of_sexp_a_nested_list_is_a$0=
      caml_string_of_jsbytes
       ("_of_sexp: a nested list is an invalid polymorphic variant"),
     cst_of_sexp_polymorphic_varian$0=
      caml_string_of_jsbytes
       ("_of_sexp: polymorphic variant tag takes an argument"),
     cst_of_sexp_polymorphic_varian=
      caml_string_of_jsbytes
       ("_of_sexp: polymorphic variant does not take arguments"),
     cst_of_sexp_no_matching_varian=
      caml_string_of_jsbytes("_of_sexp: no matching variant found"),
     cst_of_sexp_cannot_convert_val=
      caml_string_of_jsbytes
       ("_of_sexp: cannot convert values of types resulting from polymorphic record fields"),
     cst_of_sexp_list_instead_of_at=
      caml_string_of_jsbytes
       ("_of_sexp: list instead of atom for record expected"),
     cst_extra_fields=caml_string_of_jsbytes("extra fields"),
     cst_duplicate_fields=caml_string_of_jsbytes("duplicate fields"),
     cst$12=caml_string_of_jsbytes(" "),
     cst_of_sexp_record_conversion_=
      caml_string_of_jsbytes
       ("_of_sexp: record conversion: only pairs expected, their first element must be an atom"),
     cst_of_sexp_unexpected_sum_tag=
      caml_string_of_jsbytes("_of_sexp: unexpected sum tag"),
     cst_of_sexp_the_empty_list_is_=
      caml_string_of_jsbytes("_of_sexp: the empty list is an invalid sum"),
     cst_of_sexp_a_nested_list_is_a=
      caml_string_of_jsbytes("_of_sexp: a nested list is an invalid sum"),
     cst_of_sexp_sum_tag_must_be_a_=
      caml_string_of_jsbytes("_of_sexp: sum tag must be a structured value"),
     cst_of_sexp_sum_tag_does_not_t=
      caml_string_of_jsbytes("_of_sexp: sum tag does not take arguments"),
     cst_Sexplib0_Sexp_conv_error_N=
      caml_string_of_jsbytes("Sexplib0.Sexp_conv_error.No_variant_match"),
     Stdlib_stringLabels=global_data.Stdlib__stringLabels,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_listLabels=global_data.Stdlib__listLabels,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib=global_data.Stdlib,
     Stdlib_bytesLabels=global_data.Stdlib__bytesLabels,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Assert_failure=global_data.Assert_failure,
     Stdlib_arg=global_data.Stdlib__arg,
     Stdlib_lazy=global_data.Stdlib__lazy,
     Stdlib_parsing=global_data.Stdlib__parsing,
     Stdlib_queue=global_data.Stdlib__queue,
     Stdlib_scanf=global_data.Stdlib__scanf,
     Stdlib_stack=global_data.Stdlib__stack,
     Stdlib_stream=global_data.Stdlib__stream,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_moreLabels=global_data.Stdlib__moreLabels,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Stdlib_ephemeron=global_data.Stdlib__ephemeron,
     Stdlib_gc=global_data.Stdlib__gc,
     CamlinternalLazy=global_data.CamlinternalLazy,
     Stdlib_nativeint=global_data.Stdlib__nativeint,
     Stdlib_int64=global_data.Stdlib__int64,
     Stdlib_int32=global_data.Stdlib__int32,
     Stdlib_obj=global_data.Stdlib__obj,
     Sexplib0=[0];
    caml_register_global(137,Sexplib0,"Sexplib0");
    var
     _b_=[0,[15,[17,2,0]],caml_string_of_jsbytes("%a@?")],
     _a_=[0,0,0],
     _aJ_=[0,0],
     _aG_=[0,caml_string_of_jsbytes("sexp_conv.ml"),354,17],
     _aC_=[0,caml_string_of_jsbytes("Exit")],
     _aD_=[0,caml_string_of_jsbytes("sexp_conv.ml"),359,17],
     _ay_=[0,caml_string_of_jsbytes("End_of_file")],
     _az_=[0,caml_string_of_jsbytes("sexp_conv.ml"),364,17],
     _au_=[0,caml_string_of_jsbytes("Failure")],
     _av_=[0,caml_string_of_jsbytes("sexp_conv.ml"),369,17],
     _aq_=[0,caml_string_of_jsbytes("Not_found")],
     _ar_=[0,caml_string_of_jsbytes("sexp_conv.ml"),374,17],
     _am_=[0,caml_string_of_jsbytes("Invalid_argument")],
     _an_=[0,caml_string_of_jsbytes("sexp_conv.ml"),379,17],
     _aj_=[0,caml_string_of_jsbytes("sexp_conv.ml"),384,17],
     _af_=[0,caml_string_of_jsbytes("Not_found_s")],
     _ag_=[0,caml_string_of_jsbytes("sexp_conv.ml"),389,17],
     _ac_=[0,caml_string_of_jsbytes("Sys_error")],
     _ad_=[0,caml_string_of_jsbytes("sexp_conv.ml"),394,17],
     ___=[0,caml_string_of_jsbytes("Arg.Help")],
     _$_=[0,caml_string_of_jsbytes("sexp_conv.ml"),399,17],
     _W_=[0,caml_string_of_jsbytes("Arg.Bad")],
     _X_=[0,caml_string_of_jsbytes("sexp_conv.ml"),404,17],
     _S_=[0,caml_string_of_jsbytes("Lazy.Undefined")],
     _T_=[0,caml_string_of_jsbytes("sexp_conv.ml"),409,17],
     _O_=[0,caml_string_of_jsbytes("Parsing.Parse_error")],
     _P_=[0,caml_string_of_jsbytes("sexp_conv.ml"),414,17],
     _K_=[0,caml_string_of_jsbytes("Queue.Empty")],
     _L_=[0,caml_string_of_jsbytes("sexp_conv.ml"),419,17],
     _G_=[0,caml_string_of_jsbytes("Scanf.Scan_failure")],
     _H_=[0,caml_string_of_jsbytes("sexp_conv.ml"),424,17],
     _C_=[0,caml_string_of_jsbytes("Stack.Empty")],
     _D_=[0,caml_string_of_jsbytes("sexp_conv.ml"),429,17],
     _y_=[0,caml_string_of_jsbytes("Stream.Failure")],
     _z_=[0,caml_string_of_jsbytes("sexp_conv.ml"),434,17],
     _u_=[0,caml_string_of_jsbytes("Stream.Error")],
     _v_=[0,caml_string_of_jsbytes("sexp_conv.ml"),439,17],
     _q_=[0,caml_string_of_jsbytes("Sys.Break")],
     _r_=[0,caml_string_of_jsbytes("sexp_conv.ml"),444,17],
     _m_=[0,caml_string_of_jsbytes("Sexplib.Conv.Of_sexp_error")],
     _n_=[0,caml_string_of_jsbytes("sexp_conv.ml"),450,17],
     _k_=
      [0,
       [2,0,[12,32,[2,0,[12,58,[4,0,0,0,[12,58,[4,0,0,0,0]]]]]]],
       caml_string_of_jsbytes("%s %s:%d:%d")],
     _j_=[0,2],
     _h_=[0,caml_string_of_jsbytes("<fun>")],
     _g_=[0,caml_string_of_jsbytes("<opaque>")],
     _d_=[0,caml_string_of_jsbytes("some")],
     _e_=[1,0],
     _f_=[0,caml_string_of_jsbytes("none")],
     _c_=[1,0],
     _aO_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("_of_sexp: polymorphic variant tag "),
         [3,
          0,
          [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]],
       caml_string_of_jsbytes
        ("%s_of_sexp: polymorphic variant tag %S has incorrect number of arguments")],
     _aN_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes
          ("_of_sexp: the following record elements were undefined: "),
         [2,0,0]]],
       caml_string_of_jsbytes
        ("%s_of_sexp: the following record elements were undefined: %s")],
     _aM_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("_of_sexp: "),
         [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]],
       caml_string_of_jsbytes("%s_of_sexp: %s: %s")],
     _aL_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("_of_sexp: sum tag "),
         [3,
          0,
          [11,caml_string_of_jsbytes(" has incorrect number of arguments"),0]]]],
       caml_string_of_jsbytes
        ("%s_of_sexp: sum tag %S has incorrect number of arguments")],
     _aK_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("_of_sexp: tuple of size "),
         [4,0,0,0,[11,caml_string_of_jsbytes(" expected"),0]]]],
       caml_string_of_jsbytes("%s_of_sexp: tuple of size %d expected")];
    function sexp_of_t(t){return t}
    function t_of_sexp(t){return t}
    function compare(a$0,match)
     {if(a$0 === match)return 0;
      if(0 === a$0[0])
       {var _cc_=a$0[1];
        if(0 === match[0])
         {var b$0=match[1];
          return caml_call2(Stdlib_stringLabels[33],_cc_,b$0)}
        return -1}
      var _cd_=a$0[1];
      if(0 === match[0])return 1;
      var b$1=match[1],a=_cd_,b=b$1;
      for(;;)
       {if(a)
         {if(b)
           {var ys=b[2],y=b[1],xs=a[2],x=a[1],res=compare(x,y);
            if(0 === res){var a=xs,b=ys;continue}
            return res}
          return 1}
        return b?-1:0}}
    function equal(a,b){return 0 === compare(a,b)?1:0}
    var
     Not_found_s=[248,cst_Sexplib0_Sexp_Not_found_s,caml_fresh_oo_id(0)],
     Of_sexp_error=[248,cst_Sexplib0_Sexp_Of_sexp_erro,caml_fresh_oo_id(0)],
     default_indent=[0,1];
    function must_escape(str)
     {var len=caml_ml_string_length(str),_b4_=0 === len?1:0;
      if(_b4_)return _b4_;
      var ix$3=len - 1 | 0,ix=ix$3;
      for(;;)
       {var match=caml_string_get(str,ix),switch$0=0;
        if(92 <= match)
         {var switcher=match - 93 | 0;
          if(33 < switcher >>> 0)
           if(0 <= switcher)switch$0 = 2;else switch$0 = 1;
          else
           if(31 === switcher)
            {var _b5_=0 < ix?1:0;
             if(_b5_)
              {var
                ix$0=ix - 1 | 0,
                _b6_=caml_string_get(str,ix$0),
                _b7_=caml_call2(Stdlib_char[8],_b6_,35);
               if(! _b7_){var ix=ix$0;continue}
               var _b8_=_b7_}
             else
              var _b8_=_b5_;
             return _b8_}}
        else
         if(42 <= match)
          {if(59 === match)switch$0 = 1}
         else
          if(33 <= match)
           {var switcher$0=match - 33 | 0;
            switch(switcher$0)
             {case 2:
               var _b__=0 < ix?1:0;
               if(_b__)
                {var
                  ix$2=ix - 1 | 0,
                  _b$_=caml_string_get(str,ix$2),
                  _ca_=caml_call2(Stdlib_char[8],_b$_,124);
                 if(! _ca_){var ix=ix$2;continue}
                 var _cb_=_ca_}
               else
                var _cb_=_b__;
               return _cb_;
              case 1:
              case 7:
              case 8:switch$0 = 1;break
              }}
          else
           switch$0 = 2;
        switch(switch$0)
         {case 0:
           var _b9_=0 < ix?1:0;
           if(_b9_){var ix$1=ix - 1 | 0,ix=ix$1;continue}
           return _b9_;
          case 1:return 1;
          default:return 1}}}
    function escaped(s)
     {var n=[0,0],_bU_=caml_ml_string_length(s) - 1 | 0,_bT_=0;
      if(! (_bU_ < 0))
       {var i$0=_bT_;
        for(;;)
         {var match=caml_string_unsafe_get(s,i$0),switch$0=0;
          if(32 <= match)
           {var _b1_=match - 34 | 0,switch$1=0;
            if(58 < _b1_ >>> 0)
             {if(93 <= _b1_)switch$1 = 1}
            else
             if(56 < (_b1_ - 1 | 0) >>> 0){switch$0 = 1;switch$1 = 1}
            if(! switch$1){var _b2_=1;switch$0 = 2}}
          else
           if(11 <= match)
            {if(13 === match)switch$0 = 1}
           else
            if(8 <= match)switch$0 = 1;
          switch(switch$0){case 0:var _b2_=4;break;case 1:var _b2_=2;break}
          n[1] = n[1] + _b2_ | 0;
          var _b3_=i$0 + 1 | 0;
          if(_bU_ !== i$0){var i$0=_b3_;continue}
          break}}
      if(n[1] === caml_ml_string_length(s))return s;
      var s$0=caml_create_bytes(n[1]);
      n[1] = 0;
      var _bW_=caml_ml_string_length(s) - 1 | 0,_bV_=0;
      if(! (_bW_ < 0))
       {var i=_bV_;
        for(;;)
         {var c=caml_string_unsafe_get(s,i),switch$2=0;
          if(35 <= c)
           if(92 === c)
            switch$2 = 2;
           else
            if(127 <= c)switch$2 = 1;else switch$2 = 3;
          else
           if(32 <= c)
            if(34 <= c)switch$2 = 2;else switch$2 = 3;
           else
            if(14 <= c)
             switch$2 = 1;
            else
             switch(c)
              {case 8:
                caml_bytes_unsafe_set(s$0,n[1],92);
                n[1]++;
                caml_bytes_unsafe_set(s$0,n[1],98);
                break;
               case 9:
                caml_bytes_unsafe_set(s$0,n[1],92);
                n[1]++;
                caml_bytes_unsafe_set(s$0,n[1],116);
                break;
               case 10:
                caml_bytes_unsafe_set(s$0,n[1],92);
                n[1]++;
                caml_bytes_unsafe_set(s$0,n[1],110);
                break;
               case 13:
                caml_bytes_unsafe_set(s$0,n[1],92);
                n[1]++;
                caml_bytes_unsafe_set(s$0,n[1],114);
                break;
               default:switch$2 = 1}
          switch(switch$2)
           {case 1:
             caml_bytes_unsafe_set(s$0,n[1],92);
             n[1]++;
             var _bY_=caml_call1(Stdlib_char[1],48 + (c / 100 | 0) | 0);
             caml_bytes_unsafe_set(s$0,n[1],_bY_);
             n[1]++;
             var
              _bZ_=
               caml_call1(Stdlib_char[1],48 + ((c / 10 | 0) % 10 | 0) | 0);
             caml_bytes_unsafe_set(s$0,n[1],_bZ_);
             n[1]++;
             var _b0_=caml_call1(Stdlib_char[1],48 + (c % 10 | 0) | 0);
             caml_bytes_unsafe_set(s$0,n[1],_b0_);
             break;
            case 2:
             caml_bytes_unsafe_set(s$0,n[1],92);
             n[1]++;
             caml_bytes_unsafe_set(s$0,n[1],c);
             break;
            case 3:caml_bytes_unsafe_set(s$0,n[1],c);break
            }
          n[1]++;
          var _bX_=i + 1 | 0;
          if(_bW_ !== i){var i=_bX_;continue}
          break}}
      return caml_call1(Stdlib_bytesLabels[73],s$0)}
    function esc_str(str)
     {var
       src=escaped(str),
       len=caml_ml_string_length(src),
       dst=caml_create_bytes(len + 2 | 0);
      caml_call5(Stdlib_bytes[12],src,0,dst,1,len);
      caml_bytes_unsafe_set(dst,0,34);
      caml_bytes_unsafe_set(dst,len + 1 | 0,34);
      return caml_call1(Stdlib_bytesLabels[73],dst)}
    function index_of_newline(str,start)
     {try
       {var _bR_=[0,caml_call3(Stdlib_stringLabels[18],str,start,10)];
        return _bR_}
      catch(_bS_)
       {_bS_ = caml_wrap_exception(_bS_);
        if(_bS_ === Stdlib[8])return 0;
        throw _bS_}}
    function mach_maybe_esc_str(str){return must_escape(str)?esc_str(str):str}
    function pp_hum_indent(indent,ppf,param)
     {if(0 === param[0])
       {var str=param[1];
        if(must_escape(str))
         {var match=index_of_newline(str,0);
          if(match)
           var
            index=match[1],
            _bN_=(index + 1 | 0) === caml_ml_string_length(str)?1:0;
          else
           var _bN_=1;
          if(_bN_)
           {var _bO_=esc_str(str);
            return caml_call2(Stdlib_format[13],ppf,_bO_)}
          caml_call2(Stdlib_format[1],ppf,0);
          caml_call2(Stdlib_format[13],ppf,cst$0);
          var index$0=0;
          for(;;)
           {var end_pos_opt=index_of_newline(str,index$0);
            if(end_pos_opt)
             var end_pos=end_pos_opt[1],end_pos$0=end_pos;
            else
             var end_pos$0=caml_ml_string_length(str);
            var
             next_line=
              caml_call3
               (Stdlib_stringLabels[4],str,index$0,end_pos$0 - index$0 | 0),
             _bP_=escaped(next_line);
            caml_call2(Stdlib_format[13],ppf,_bP_);
            if(end_pos_opt)
             {var newline_index=end_pos_opt[1];
              caml_call2(Stdlib_format[13],ppf,cst);
              caml_call2(Stdlib_format[32],ppf,0);
              caml_call2(Stdlib_format[13],ppf,cst_n);
              var index$1=newline_index + 1 | 0,index$0=index$1;
              continue}
            caml_call2(Stdlib_format[13],ppf,cst$1);
            return caml_call2(Stdlib_format[3],ppf,0)}}
        return caml_call2(Stdlib_format[13],ppf,str)}
      var _bQ_=param[1];
      if(_bQ_)
       {var t=_bQ_[2],h=_bQ_[1];
        caml_call2(Stdlib_format[1],ppf,indent);
        caml_call2(Stdlib_format[13],ppf,cst$2);
        pp_hum_indent(indent,ppf,h);
        var param$0=t;
        for(;;)
         {if(param$0)
           {var t$0=param$0[2],h$0=param$0[1];
            caml_call2(Stdlib_format[25],ppf,0);
            pp_hum_indent(indent,ppf,h$0);
            var param$0=t$0;
            continue}
          caml_call2(Stdlib_format[13],ppf,cst$4);
          return caml_call2(Stdlib_format[3],ppf,0)}}
      return caml_call2(Stdlib_format[13],ppf,cst$3)}
    function pp_mach_internal(may_need_space,ppf,param)
     {if(0 === param[0])
       {var
         str=param[1],
         str$0=mach_maybe_esc_str(str),
         new_may_need_space=str$0 === str?1:0,
         new_may_need_space$0=may_need_space?new_may_need_space:may_need_space;
        if(new_may_need_space$0)caml_call2(Stdlib_format[13],ppf,cst$5);
        caml_call2(Stdlib_format[13],ppf,str$0);
        return new_may_need_space}
      var _bM_=param[1];
      if(_bM_)
       {var t=_bM_[2],h=_bM_[1];
        caml_call2(Stdlib_format[13],ppf,cst$6);
        var
         may_need_space$0=pp_mach_internal(0,ppf,h),
         may_need_space$1=may_need_space$0,
         param$0=t;
        for(;;)
         {if(param$0)
           {var
             t$0=param$0[2],
             h$0=param$0[1],
             may_need_space$2=pp_mach_internal(may_need_space$1,ppf,h$0),
             may_need_space$1=may_need_space$2,
             param$0=t$0;
            continue}
          caml_call2(Stdlib_format[13],ppf,cst$8);
          return 0}}
      caml_call2(Stdlib_format[13],ppf,cst$7);
      return 0}
    function pp_hum(ppf,sexp)
     {return pp_hum_indent(default_indent[1],ppf,sexp)}
    function pp(ppf,sexp){pp_mach_internal(0,ppf,sexp);return 0}
    function size_loop(acc,param)
     {var _bK_=acc[2],_bL_=acc[1];
      if(0 === param[0])
       {var str=param[1];
        return [0,_bL_ + 1 | 0,_bK_ + caml_ml_string_length(str) | 0]}
      var lst=param[1];
      return caml_call3(Stdlib_listLabels[22],size_loop,acc,lst)}
    function size(sexp){return size_loop(_a_,sexp)}
    function to_buffer_hum(buf,opt,sexp)
     {if(opt)var sth=opt[1],indent=sth;else var indent=default_indent[1];
      var ppf=caml_call1(Stdlib_format[107],buf);
      function _bH_(_bI_,_bJ_){return pp_hum_indent(indent,_bI_,_bJ_)}
      return caml_call4(Stdlib_format[123],ppf,_b_,_bH_,sexp)}
    function to_buffer_mach(buf,sexp)
     {function loop(may_need_space,param)
       {if(0 === param[0])
         {var
           str=param[1],
           str$0=mach_maybe_esc_str(str),
           new_may_need_space=str$0 === str?1:0,
           new_may_need_space$0=
            may_need_space?new_may_need_space:may_need_space;
          if(new_may_need_space$0)caml_call2(Stdlib_buffer[10],buf,32);
          caml_call2(Stdlib_buffer[14],buf,str$0);
          return new_may_need_space}
        var _bG_=param[1];
        if(_bG_)
         {var t=_bG_[2],h=_bG_[1];
          caml_call2(Stdlib_buffer[10],buf,40);
          var
           may_need_space$0=loop(0,h),
           may_need_space$1=may_need_space$0,
           param$0=t;
          for(;;)
           {if(param$0)
             {var
               t$0=param$0[2],
               h$0=param$0[1],
               may_need_space$2=loop(may_need_space$1,h$0),
               may_need_space$1=may_need_space$2,
               param$0=t$0;
              continue}
            caml_call2(Stdlib_buffer[10],buf,41);
            return 0}}
        caml_call2(Stdlib_buffer[14],buf,cst$9);
        return 0}
      loop(0,sexp);
      return 0}
    function to_buffer_gen(buf,add_char,add_string,sexp)
     {function loop(may_need_space,param)
       {if(0 === param[0])
         {var
           str=param[1],
           str$0=mach_maybe_esc_str(str),
           new_may_need_space=str$0 === str?1:0,
           new_may_need_space$0=
            may_need_space?new_may_need_space:may_need_space;
          if(new_may_need_space$0)caml_call2(add_char,buf,32);
          caml_call2(add_string,buf,str$0);
          return new_may_need_space}
        var _bF_=param[1];
        if(_bF_)
         {var t=_bF_[2],h=_bF_[1];
          caml_call2(add_char,buf,40);
          var
           may_need_space$0=loop(0,h),
           may_need_space$1=may_need_space$0,
           param$0=t;
          for(;;)
           {if(param$0)
             {var
               t$0=param$0[2],
               h$0=param$0[1],
               may_need_space$2=loop(may_need_space$1,h$0),
               may_need_space$1=may_need_space$2,
               param$0=t$0;
              continue}
            caml_call2(add_char,buf,41);
            return 0}}
        caml_call2(add_string,buf,cst$10);
        return 0}
      loop(0,sexp);
      return 0}
    function buffer(param){return caml_call1(Stdlib_buffer[1],1024)}
    function to_string_hum(indent,sexp)
     {if(0 === sexp[0])
       {var str=sexp[1],match=index_of_newline(str,0),_bE_=match?0:1;
        if(_bE_)return mach_maybe_esc_str(str)}
      var buf=buffer(0);
      to_buffer_hum(buf,indent,sexp);
      return caml_call1(Stdlib_buffer[2],buf)}
    function to_string(sexp)
     {if(0 === sexp[0]){var str=sexp[1];return mach_maybe_esc_str(str)}
      var buf=buffer(0);
      to_buffer_mach(buf,sexp);
      return caml_call1(Stdlib_buffer[2],buf)}
    var of_float_style=[0,1009018843],of_int_style=[0,1009018843];
    function message(name,fields)
     {function conv_fields(param)
       {if(param)
         {var rest=param[2],match=param[1],fsexp=match[2],fname=match[1];
          return caml_string_notequal(fname,cst$11)
                  ?[0,[1,[0,[0,fname],[0,fsexp,0]]],conv_fields(rest)]
                  :[0,fsexp,conv_fields(rest)]}
        return 0}
      return [1,[0,[0,name],conv_fields(fields)]]}
    var
     Sexplib0_Sexp=
      [0,
       t_of_sexp,
       sexp_of_t,
       equal,
       compare,
       Not_found_s,
       Of_sexp_error,
       message,
       default_indent,
       pp_hum,
       pp_hum_indent,
       pp,
       pp,
       to_string_hum,
       to_string,
       to_string,
       of_float_style,
       of_int_style,
       [0,
        size,
        buffer,
        to_buffer_mach,
        to_buffer_hum,
        to_buffer_mach,
        to_buffer_gen,
        mach_maybe_esc_str,
        must_escape,
        esc_str]];
    caml_register_global(146,Sexplib0_Sexp,"Sexplib0__Sexp");
    var Sexplib0_Sexpable=[0];
    caml_register_global(147,Sexplib0_Sexpable,"Sexplib0__Sexpable");
    var
     default_string_of_float=
      [0,
       function(x)
        {var y=caml_format_float(cst_15G,x);
         return caml_float_of_string(y) == x?y:caml_format_float(cst_17G,x)}],
     read_old_option_format=[0,1],
     write_old_option_format=[0,1];
    function list_map(f,l)
     {var _bD_=caml_call2(Stdlib_listLabels[19],f,l);
      return caml_call1(Stdlib_listLabels[9],_bD_)}
    function sexp_of_unit(param){return _c_}
    function sexp_of_bool(b){return [0,caml_call1(Stdlib[30],b)]}
    function sexp_of_string(str){return [0,str]}
    function sexp_of_bytes(bytes)
     {return [0,caml_call1(Stdlib_bytesLabels[6],bytes)]}
    function sexp_of_char(c)
     {return [0,caml_call2(Stdlib_stringLabels[1],1,c)]}
    function sexp_of_int(n){return [0,caml_call1(Stdlib[33],n)]}
    function sexp_of_float(n)
     {return [0,caml_call1(default_string_of_float[1],n)]}
    function sexp_of_int32(n){return [0,caml_call1(Stdlib_int32[14],n)]}
    function sexp_of_int64(n){return [0,caml_call1(Stdlib_int64[14],n)]}
    function sexp_of_nativeint(n)
     {return [0,caml_call1(Stdlib_nativeint[15],n)]}
    function sexp_of_ref(sexp_of_a,rf){return caml_call1(sexp_of_a,rf[1])}
    function sexp_of_lazy_t(sexp_of_a,lv)
     {var
       _bB_=runtime.caml_obj_tag(lv),
       _bC_=
        250 === _bB_?lv[1]:246 === _bB_?caml_call1(CamlinternalLazy[2],lv):lv;
      return caml_call1(sexp_of_a,_bC_)}
    function sexp_of_option(sexp_of_a,param)
     {if(param)
       {var x=param[1];
        return write_old_option_format[1]
                ?[1,[0,caml_call1(sexp_of_a,x),0]]
                :[1,[0,_d_,[0,caml_call1(sexp_of_a,x),0]]]}
      return write_old_option_format[1]?_e_:_f_}
    function sexp_of_pair(sexp_of_a,sexp_of_b,param)
     {var b=param[2],a=param[1],_bA_=[0,caml_call1(sexp_of_b,b),0];
      return [1,[0,caml_call1(sexp_of_a,a),_bA_]]}
    function sexp_of_triple(sexp_of_a,sexp_of_b,sexp_of_c,param)
     {var
       c=param[3],
       b=param[2],
       a=param[1],
       _by_=[0,caml_call1(sexp_of_c,c),0],
       _bz_=[0,caml_call1(sexp_of_b,b),_by_];
      return [1,[0,caml_call1(sexp_of_a,a),_bz_]]}
    function sexp_of_list(sexp_of_a,lst)
     {var _bx_=caml_call2(Stdlib_listLabels[19],sexp_of_a,lst);
      return [1,caml_call1(Stdlib_listLabels[9],_bx_)]}
    function sexp_of_array(sexp_of_a,ar)
     {var lst_ref=[0,0],_bu_=ar.length - 1 - 1 | 0;
      if(! (_bu_ < 0))
       {var i=_bu_;
        for(;;)
         {var _bv_=lst_ref[1];
          lst_ref[1]
          =
          [0,caml_call1(sexp_of_a,caml_check_bound(ar,i)[1 + i]),_bv_];
          var _bw_=i - 1 | 0;
          if(0 !== i){var i=_bw_;continue}
          break}}
      return [1,lst_ref[1]]}
    function sexp_of_hashtbl(sexp_of_key,sexp_of_val,htbl)
     {function coll(k,v,acc)
       {var _bt_=[0,caml_call1(sexp_of_val,v),0];
        return [0,[1,[0,caml_call1(sexp_of_key,k),_bt_]],acc]}
      return [1,caml_call3(Stdlib_moreLabels[1][14],coll,htbl,0)]}
    function sexp_of_opaque(param){return _g_}
    function sexp_of_fun(param){return _h_}
    var
     compare$0=runtime.caml_compare,
     Int=[0,compare$0],
     Exn_ids=caml_call1(Stdlib_moreLabels[2][1],Int),
     id=Stdlib_obj[24],
     of_val=Stdlib_obj[22],
     exn_id_map=[0,Exn_ids[1]];
    function clean_up_handler(slot)
     {for(;;)
       {var
         id$0=caml_call1(id,slot),
         old_exn_id_map=exn_id_map[1],
         new_exn_id_map=caml_call2(Exn_ids[7],id$0,old_exn_id_map);
        if(exn_id_map[1] !== old_exn_id_map)continue;
        exn_id_map[1] = new_exn_id_map;
        return 0}}
    function add(opt,extension_constructor,sexp_of_exn)
     {if(opt)var sth=opt[1],finalise=sth;else var finalise=1;
      var id$0=caml_call1(id,extension_constructor);
      function loop(param)
       {for(;;)
         {var
           old_exn_id_map=exn_id_map[1],
           ephe=caml_call1(Stdlib_ephemeron[1][1],0);
          caml_call2(Stdlib_ephemeron[1][10],ephe,sexp_of_exn);
          caml_call2(Stdlib_ephemeron[1][4],ephe,extension_constructor);
          var new_exn_id_map=caml_call3(Exn_ids[4],id$0,ephe,old_exn_id_map);
          if(exn_id_map[1] !== old_exn_id_map)continue;
          exn_id_map[1] = new_exn_id_map;
          if(finalise)
           try
            {var
              _br_=
               caml_call2(Stdlib_gc[3],clean_up_handler,extension_constructor);
             return _br_}
           catch(_bs_)
            {_bs_ = caml_wrap_exception(_bs_);
             if(_bs_[1] === Stdlib[6])return 0;
             throw _bs_}
          return finalise}}
      return loop(0)}
    function add_auto(finalise,exn,sexp_of_exn)
     {return add(finalise,caml_call1(of_val,exn),sexp_of_exn)}
    function find_auto(exn)
     {var id$0=caml_call1(id,caml_call1(of_val,exn));
      try
       {var ephe=caml_call2(Exn_ids[27],id$0,exn_id_map[1])}
      catch(_bq_)
       {_bq_ = caml_wrap_exception(_bq_);
        if(_bq_ === Stdlib[8])return 0;
        throw _bq_}
      var match=caml_call1(Stdlib_ephemeron[1][8],ephe);
      if(match)
       {var sexp_of_exn=match[1];return [0,caml_call1(sexp_of_exn,exn)]}
      return 0}
    function size$0(param)
     {var _bn_=0,_bo_=exn_id_map[1];
      function _bp_(param,ephe,acc)
       {var match=caml_call1(Stdlib_ephemeron[1][8],ephe);
        return match?acc + 1 | 0:acc}
      return caml_call3(Exn_ids[13],_bp_,_bo_,_bn_)}
    var For_unit_tests_only=[0,size$0];
    function sexp_of_exn_opt(exn){return find_auto(exn)}
    function sexp_of_exn(exn)
     {var match=sexp_of_exn_opt(exn);
      if(match){var sexp=match[1];return sexp}
      return [1,[0,[0,caml_call1(Stdlib_printexc[1],exn)],0]]}
    function exn_to_string(e){return to_string_hum(0,sexp_of_exn(e))}
    function _i_(exn)
     {var match=sexp_of_exn_opt(exn);
      if(match){var sexp=match[1];return [0,to_string_hum(_j_,sexp)]}
      return 0}
    caml_call1(Stdlib_printexc[9],_i_);
    var record_check_extra_fields=[0,1];
    function of_sexp_error_exn(exc,sexp){throw [0,Of_sexp_error,exc,sexp]}
    function of_sexp_error(what,sexp)
     {throw [0,Of_sexp_error,[0,Stdlib[7],what],sexp]}
    function unit_of_sexp(sexp)
     {if(1 === sexp[0] && ! sexp[1])return 0;
      return of_sexp_error(cst_unit_of_sexp_empty_list_ne,sexp)}
    function bool_of_sexp(sexp)
     {if(0 === sexp[0])
       {var _bm_=sexp[1];
        if(caml_string_notequal(_bm_,cst_False))
         {var switch$0=0;
          if(caml_string_notequal(_bm_,cst_True))
           if(caml_string_notequal(_bm_,cst_false))
            {if(caml_string_notequal(_bm_,cst_true))
              return of_sexp_error(cst_bool_of_sexp_unknown_strin,sexp)}
           else
            switch$0 = 1;
          if(! switch$0)return 1}
        return 0}
      return of_sexp_error(cst_bool_of_sexp_atom_needed,sexp)}
    function string_of_sexp(sexp)
     {if(0 === sexp[0]){var str=sexp[1];return str}
      return of_sexp_error(cst_string_of_sexp_atom_needed,sexp)}
    function bytes_of_sexp(sexp)
     {if(0 === sexp[0])
       {var str=sexp[1];return caml_call1(Stdlib_bytesLabels[5],str)}
      return of_sexp_error(cst_bytes_of_sexp_atom_needed,sexp)}
    function char_of_sexp(sexp)
     {if(0 === sexp[0])
       {var str=sexp[1];
        if(1 !== caml_ml_string_length(str))
         of_sexp_error(cst_char_of_sexp_atom_string_m,sexp);
        return caml_string_get(str,0)}
      return of_sexp_error(cst_char_of_sexp_atom_needed,sexp)}
    function int_of_sexp(sexp)
     {if(0 === sexp[0])
       {var str=sexp[1];
        try
         {var _bl_=caml_int_of_string(str);return _bl_}
        catch(exc)
         {exc = caml_wrap_exception(exc);
          var _bk_=exn_to_string(exc);
          return of_sexp_error
                  (caml_call2(Stdlib[28],cst_int_of_sexp,_bk_),sexp)}}
      return of_sexp_error(cst_int_of_sexp_atom_needed,sexp)}
    function float_of_sexp(sexp)
     {if(0 === sexp[0])
       {var str=sexp[1];
        try
         {var _bj_=caml_float_of_string(str);return _bj_}
        catch(exc)
         {exc = caml_wrap_exception(exc);
          var _bi_=exn_to_string(exc);
          return of_sexp_error
                  (caml_call2(Stdlib[28],cst_float_of_sexp,_bi_),sexp)}}
      return of_sexp_error(cst_float_of_sexp_atom_needed,sexp)}
    function int32_of_sexp(sexp)
     {if(0 === sexp[0])
       {var str=sexp[1];
        try
         {var _bh_=caml_int_of_string(str);return _bh_}
        catch(exc)
         {exc = caml_wrap_exception(exc);
          var _bg_=exn_to_string(exc);
          return of_sexp_error
                  (caml_call2(Stdlib[28],cst_int32_of_sexp,_bg_),sexp)}}
      return of_sexp_error(cst_int32_of_sexp_atom_needed,sexp)}
    function int64_of_sexp(sexp)
     {if(0 === sexp[0])
       {var str=sexp[1];
        try
         {var _bf_=runtime.caml_int64_of_string(str);return _bf_}
        catch(exc)
         {exc = caml_wrap_exception(exc);
          var _be_=exn_to_string(exc);
          return of_sexp_error
                  (caml_call2(Stdlib[28],cst_int64_of_sexp,_be_),sexp)}}
      return of_sexp_error(cst_int64_of_sexp_atom_needed,sexp)}
    function nativeint_of_sexp(sexp)
     {if(0 === sexp[0])
       {var str=sexp[1];
        try
         {var _bd_=caml_int_of_string(str);return _bd_}
        catch(exc)
         {exc = caml_wrap_exception(exc);
          var _bc_=exn_to_string(exc);
          return of_sexp_error
                  (caml_call2(Stdlib[28],cst_nativeint_of_sexp,_bc_),sexp)}}
      return of_sexp_error(cst_nativeint_of_sexp_atom_nee,sexp)}
    function ref_of_sexp(a_of_sexp,sexp)
     {return [0,caml_call1(a_of_sexp,sexp)]}
    function lazy_t_of_sexp(a_of_sexp,sexp)
     {var _bb_=caml_call1(a_of_sexp,sexp);
      return caml_call1(Stdlib_lazy[4],_bb_)}
    function option_of_sexp(a_of_sexp,sexp)
     {if(read_old_option_format[1])
       {if(0 === sexp[0])
         {var _a3_=sexp[1];
          if
           (caml_string_notequal(_a3_,cst_None)
            &&
            caml_string_notequal(_a3_,cst_none))
           return of_sexp_error(cst_option_of_sexp_only_none_c,sexp)}
        else
         {var _a4_=sexp[1];
          if(_a4_)
           {var _a5_=_a4_[1];
            if(_a4_[2])
             {var switch$0=0;
              if(0 === _a5_[0])
               {var _a6_=_a5_[1],switch$1=0;
                if
                 (caml_string_notequal(_a6_,cst_Some)
                  &&
                  caml_string_notequal(_a6_,cst_some))
                 switch$1 = 1;
                if(! switch$1)
                 {var _a7_=_a4_[2];if(! _a7_[2]){var el=_a7_[1];switch$0 = 1}}}
              if(! switch$0)
               return of_sexp_error(cst_option_of_sexp_list_must_r,sexp)}
            else
             var el=_a5_;
            return [0,caml_call1(a_of_sexp,el)]}}
        return 0}
      if(0 === sexp[0])
       {var _a8_=sexp[1];
        if
         (caml_string_notequal(_a8_,cst_None$0)
          &&
          caml_string_notequal(_a8_,cst_none$0))
         return of_sexp_error(cst_option_of_sexp_only_none_c$0,sexp);
        return 0}
      var _a9_=sexp[1];
      if(_a9_)
       {var _a__=_a9_[1];
        if(0 === _a__[0])
         {var _a$_=_a__[1],switch$2=0;
          if
           (!
            caml_string_notequal(_a$_,cst_Some$0)
            ||
            !
            caml_string_notequal(_a$_,cst_some$0))
           switch$2 = 1;
          if(switch$2)
           {var _ba_=_a9_[2];
            if(_ba_ && ! _ba_[2])
             {var el$0=_ba_[1];return [0,caml_call1(a_of_sexp,el$0)]}}}}
      return of_sexp_error(cst_option_of_sexp_list_must_b,sexp)}
    function pair_of_sexp(a_of_sexp,b_of_sexp,sexp)
     {if(0 === sexp[0])
       return of_sexp_error(cst_pair_of_sexp_list_needed,sexp);
      var _a1_=sexp[1];
      if(_a1_)
       {var _a2_=_a1_[2];
        if(_a2_ && ! _a2_[2])
         {var
           b_sexp=_a2_[1],
           a_sexp=_a1_[1],
           a=caml_call1(a_of_sexp,a_sexp),
           b=caml_call1(b_of_sexp,b_sexp);
          return [0,a,b]}}
      return of_sexp_error(cst_pair_of_sexp_list_must_con,sexp)}
    function triple_of_sexp(a_of_sexp,b_of_sexp,c_of_sexp,sexp)
     {if(0 === sexp[0])
       return of_sexp_error(cst_triple_of_sexp_list_needed,sexp);
      var _aY_=sexp[1];
      if(_aY_)
       {var _aZ_=_aY_[2];
        if(_aZ_)
         {var _a0_=_aZ_[2];
          if(_a0_ && ! _a0_[2])
           {var
             c_sexp=_a0_[1],
             b_sexp=_aZ_[1],
             a_sexp=_aY_[1],
             a=caml_call1(a_of_sexp,a_sexp),
             b=caml_call1(b_of_sexp,b_sexp),
             c=caml_call1(c_of_sexp,c_sexp);
            return [0,a,b,c]}}}
      return of_sexp_error(cst_triple_of_sexp_list_must_c,sexp)}
    function list_of_sexp(a_of_sexp,sexp)
     {if(0 === sexp[0])
       return of_sexp_error(cst_list_of_sexp_list_needed,sexp);
      var lst=sexp[1],rev_lst=caml_call2(Stdlib_listLabels[19],a_of_sexp,lst);
      return caml_call1(Stdlib_listLabels[9],rev_lst)}
    function array_of_sexp(a_of_sexp,sexp)
     {if(0 === sexp[0])
       return of_sexp_error(cst_array_of_sexp_list_needed,sexp);
      var _aW_=sexp[1];
      if(_aW_)
       {var
         t=_aW_[2],
         h=_aW_[1],
         len=caml_call1(Stdlib_listLabels[1],t) + 1 | 0,
         res=runtime.caml_make_vect(len,caml_call1(a_of_sexp,h)),
         i=1,
         param=t;
        for(;;)
         {if(param)
           {var t$0=param[2],h$0=param[1],_aX_=caml_call1(a_of_sexp,h$0);
            caml_check_bound(res,i)[1 + i] = _aX_;
            var i$0=i + 1 | 0,i=i$0,param=t$0;
            continue}
          return res}}
      return [0]}
    function hashtbl_of_sexp(key_of_sexp,val_of_sexp,sexp)
     {if(0 === sexp[0])
       return of_sexp_error(cst_hashtbl_of_sexp_list_neede,sexp);
      var lst=sexp[1],htbl=caml_call2(Stdlib_moreLabels[1][1],0,0);
      function act(param)
       {if(1 === param[0])
         {var _aS_=param[1];
          if(_aS_)
           {var _aT_=_aS_[2];
            if(_aT_ && ! _aT_[2])
             {var
               v_sexp=_aT_[1],
               k_sexp=_aS_[1],
               _aU_=caml_call1(val_of_sexp,v_sexp),
               _aV_=caml_call1(key_of_sexp,k_sexp);
              return caml_call3(Stdlib_moreLabels[1][5],htbl,_aV_,_aU_)}}}
        return of_sexp_error(cst_hashtbl_of_sexp_tuple_list,sexp)}
      caml_call2(Stdlib_listLabels[15],act,lst);
      return htbl}
    function opaque_of_sexp(sexp)
     {return of_sexp_error(cst_opaque_of_sexp_cannot_conv,sexp)}
    function fun_of_sexp(sexp)
     {return of_sexp_error(cst_fun_of_sexp_cannot_convert,sexp)}
    function get_flc_error(name,param)
     {var chr=param[3],line=param[2],file=param[1];
      return [0,caml_call5(Stdlib_printf[4],_k_,name,file,line,chr)]}
    var
     _l_=0,
     _o_=
      [0,
       [0,
        Of_sexp_error,
        function(param)
         {if(param[1] === Of_sexp_error)
           {var sexp=param[3],exc=param[2];
            return [1,[0,_m_,[0,sexp_of_exn(exc),[0,sexp,0]]]]}
          throw [0,Assert_failure,_n_]}],
       _l_];
    function _p_(param)
     {if(param === Stdlib_sys[44])return _q_;throw [0,Assert_failure,_r_]}
    var _s_=[0,[0,Stdlib_sys[44],_p_],_o_];
    function _t_(param)
     {if(param[1] === Stdlib_stream[2])
       {var arg=param[2];return [1,[0,_u_,[0,[0,arg],0]]]}
      throw [0,Assert_failure,_v_]}
    var _w_=[0,[0,Stdlib_stream[2],_t_],_s_];
    function _x_(param)
     {if(param === Stdlib_stream[1])return _y_;throw [0,Assert_failure,_z_]}
    var _A_=[0,[0,Stdlib_stream[1],_x_],_w_];
    function _B_(param)
     {if(param === Stdlib_stack[1])return _C_;throw [0,Assert_failure,_D_]}
    var _E_=[0,[0,Stdlib_stack[1],_B_],_A_];
    function _F_(param)
     {if(param[1] === Stdlib_scanf[2])
       {var arg=param[2];return [1,[0,_G_,[0,[0,arg],0]]]}
      throw [0,Assert_failure,_H_]}
    var _I_=[0,[0,Stdlib_scanf[2],_F_],_E_];
    function _J_(param)
     {if(param === Stdlib_queue[1])return _K_;throw [0,Assert_failure,_L_]}
    var _M_=[0,[0,Stdlib_queue[1],_J_],_I_];
    function _N_(param)
     {if(param === Stdlib_parsing[10])return _O_;throw [0,Assert_failure,_P_]}
    var _Q_=[0,[0,Stdlib_parsing[10],_N_],_M_];
    function _R_(param)
     {if(param === Stdlib_lazy[1])return _S_;throw [0,Assert_failure,_T_]}
    var _U_=[0,[0,Stdlib_lazy[1],_R_],_Q_];
    function _V_(param)
     {if(param[1] === Stdlib_arg[8])
       {var arg=param[2];return [1,[0,_W_,[0,[0,arg],0]]]}
      throw [0,Assert_failure,_X_]}
    var _Y_=[0,[0,Stdlib_arg[8],_V_],_U_];
    function _Z_(param)
     {if(param[1] === Stdlib_arg[7])
       {var arg=param[2];return [1,[0,___,[0,[0,arg],0]]]}
      throw [0,Assert_failure,_$_]}
    var _aa_=[0,[0,Stdlib_arg[7],_Z_],_Y_];
    function _ab_(param)
     {if(param[1] === Stdlib[11])
       {var arg=param[2];return [1,[0,_ac_,[0,[0,arg],0]]]}
      throw [0,Assert_failure,_ad_]}
    var
     _ae_=[0,[0,Stdlib[11],_ab_],_aa_],
     _ah_=
      [0,
       [0,
        Not_found_s,
        function(param)
         {if(param[1] === Not_found_s)
           {var arg=param[2];return [1,[0,_af_,[0,arg,0]]]}
          throw [0,Assert_failure,_ag_]}],
       _ae_];
    function _ai_(param)
     {if(param[1] === Stdlib[4])
       {var arg=param[2];return get_flc_error(cst_Match_failure,arg)}
      throw [0,Assert_failure,_aj_]}
    var _ak_=[0,[0,Stdlib[4],_ai_],_ah_];
    function _al_(param)
     {if(param[1] === Stdlib[6])
       {var arg=param[2];return [1,[0,_am_,[0,[0,arg],0]]]}
      throw [0,Assert_failure,_an_]}
    var _ao_=[0,[0,Stdlib[6],_al_],_ak_];
    function _ap_(param)
     {if(param === Stdlib[8])return _aq_;throw [0,Assert_failure,_ar_]}
    var _as_=[0,[0,Stdlib[8],_ap_],_ao_];
    function _at_(param)
     {if(param[1] === Stdlib[7])
       {var arg=param[2];return [1,[0,_au_,[0,[0,arg],0]]]}
      throw [0,Assert_failure,_av_]}
    var _aw_=[0,[0,Stdlib[7],_at_],_as_];
    function _ax_(param)
     {if(param === Stdlib[12])return _ay_;throw [0,Assert_failure,_az_]}
    var _aA_=[0,[0,Stdlib[12],_ax_],_aw_];
    function _aB_(param)
     {if(param === Stdlib[3])return _aC_;throw [0,Assert_failure,_aD_]}
    var _aE_=[0,[0,Stdlib[3],_aB_],_aA_];
    function _aF_(param)
     {if(param[1] === Stdlib[5])
       {var arg=param[2];return get_flc_error(cst_Assert_failure,arg)}
      throw [0,Assert_failure,_aG_]}
    var _aH_=[0,[0,Stdlib[5],_aF_],_aE_];
    function _aI_(param)
     {var handler=param[2],extension_constructor=param[1];
      return add(_aJ_,extension_constructor,handler)}
    caml_call2(Stdlib_listLabels[15],_aI_,_aH_);
    var
     Sexplib0_Sexp_conv=
      [0,
       default_string_of_float,
       write_old_option_format,
       read_old_option_format,
       list_map,
       sexp_of_unit,
       sexp_of_bool,
       sexp_of_string,
       sexp_of_bytes,
       sexp_of_char,
       sexp_of_int,
       sexp_of_float,
       sexp_of_int32,
       sexp_of_int64,
       sexp_of_nativeint,
       sexp_of_ref,
       sexp_of_lazy_t,
       sexp_of_option,
       sexp_of_pair,
       sexp_of_triple,
       sexp_of_list,
       sexp_of_array,
       sexp_of_hashtbl,
       sexp_of_opaque,
       sexp_of_fun,
       Of_sexp_error,
       record_check_extra_fields,
       of_sexp_error,
       of_sexp_error_exn,
       unit_of_sexp,
       bool_of_sexp,
       string_of_sexp,
       bytes_of_sexp,
       char_of_sexp,
       int_of_sexp,
       float_of_sexp,
       int32_of_sexp,
       int64_of_sexp,
       nativeint_of_sexp,
       ref_of_sexp,
       lazy_t_of_sexp,
       option_of_sexp,
       pair_of_sexp,
       triple_of_sexp,
       list_of_sexp,
       array_of_sexp,
       hashtbl_of_sexp,
       opaque_of_sexp,
       fun_of_sexp,
       sexp_of_exn,
       sexp_of_exn_opt,
       [0,add_auto,add,For_unit_tests_only]];
    caml_register_global(167,Sexplib0_Sexp_conv,"Sexplib0__Sexp_conv");
    function tuple_of_size_n_expected(loc,n,sexp)
     {return of_sexp_error(caml_call3(Stdlib_printf[4],_aK_,loc,n),sexp)}
    function stag_no_args(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_sum_tag_does_not_t),sexp)}
    function stag_incorrect_n_args(loc,tag,sexp)
     {var msg=caml_call3(Stdlib_printf[4],_aL_,loc,tag);
      return of_sexp_error(msg,sexp)}
    function stag_takes_args(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_sum_tag_must_be_a_),sexp)}
    function nested_list_invalid_sum(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_a_nested_list_is_a),sexp)}
    function empty_list_invalid_sum(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_the_empty_list_is_),sexp)}
    function unexpected_stag(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_unexpected_sum_tag),sexp)}
    function record_only_pairs_expected(loc,sexp)
     {var msg=caml_call2(Stdlib[28],loc,cst_of_sexp_record_conversion_);
      return of_sexp_error(msg,sexp)}
    function record_superfluous_fields(what,loc,rev_fld_names,sexp)
     {var
       _aR_=caml_call1(Stdlib_listLabels[9],rev_fld_names),
       fld_names_str=caml_call2(Stdlib_stringLabels[7],cst$12,_aR_),
       msg=caml_call4(Stdlib_printf[4],_aM_,loc,what,fld_names_str);
      return of_sexp_error(msg,sexp)}
    function record_duplicate_fields(loc,rev_fld_names,sexp)
     {return record_superfluous_fields
              (cst_duplicate_fields,loc,rev_fld_names,sexp)}
    function record_extra_fields(loc,rev_fld_names,sexp)
     {return record_superfluous_fields
              (cst_extra_fields,loc,rev_fld_names,sexp)}
    function record_get_undefined_loop(fields,param)
     {var fields$0=fields,param$0=param;
      for(;;)
       {if(param$0)
         {var _aP_=param$0[1];
          if(_aP_[1])
           {var
             param$1=param$0[2],
             field=_aP_[2],
             fields$1=[0,field,fields$0],
             fields$0=fields$1,
             param$0=param$1;
            continue}
          var param$2=param$0[2],param$0=param$2;
          continue}
        var _aQ_=caml_call1(Stdlib_listLabels[9],fields$0);
        return caml_call2(Stdlib_stringLabels[7],cst$13,_aQ_)}}
    function record_undefined_elements(loc,sexp,lst)
     {var
       undefined$0=record_get_undefined_loop(0,lst),
       msg=caml_call3(Stdlib_printf[4],_aN_,loc,undefined$0);
      return of_sexp_error(msg,sexp)}
    function record_list_instead_atom(loc,sexp)
     {var msg=caml_call2(Stdlib[28],loc,cst_of_sexp_list_instead_of_at);
      return of_sexp_error(msg,sexp)}
    function record_poly_field_value(loc,sexp)
     {var msg=caml_call2(Stdlib[28],loc,cst_of_sexp_cannot_convert_val);
      return of_sexp_error(msg,sexp)}
    var
     No_variant_match=
      [248,cst_Sexplib0_Sexp_conv_error_N,caml_fresh_oo_id(0)];
    function no_variant_match(param){throw No_variant_match}
    function no_matching_variant_found(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_no_matching_varian),sexp)}
    function ptag_no_args(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_polymorphic_varian),sexp)}
    function ptag_incorrect_n_args(loc,cnstr,sexp)
     {var msg=caml_call3(Stdlib_printf[4],_aO_,loc,cnstr);
      return of_sexp_error(msg,sexp)}
    function ptag_takes_args(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_polymorphic_varian$0),
               sexp)}
    function nested_list_invalid_poly_var(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_a_nested_list_is_a$0),
               sexp)}
    function empty_list_invalid_poly_var(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_the_empty_list_is_$0),
               sexp)}
    function silly_type(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_trying_to_convert_),sexp)}
    function empty_type(loc,sexp)
     {return of_sexp_error
              (caml_call2(Stdlib[28],loc,cst_of_sexp_trying_to_convert_$0),
               sexp)}
    var
     Sexplib0_Sexp_conv_error=
      [0,
       Of_sexp_error,
       tuple_of_size_n_expected,
       stag_no_args,
       stag_incorrect_n_args,
       stag_takes_args,
       nested_list_invalid_sum,
       empty_list_invalid_sum,
       unexpected_stag,
       record_only_pairs_expected,
       record_superfluous_fields,
       record_duplicate_fields,
       record_extra_fields,
       record_get_undefined_loop,
       record_undefined_elements,
       record_list_instead_atom,
       record_poly_field_value,
       No_variant_match,
       no_variant_match,
       no_matching_variant_found,
       ptag_no_args,
       ptag_incorrect_n_args,
       ptag_takes_args,
       nested_list_invalid_poly_var,
       empty_list_invalid_poly_var,
       silly_type,
       empty_type];
    caml_register_global
     (168,Sexplib0_Sexp_conv_error,"Sexplib0__Sexp_conv_error");
    return}
  (function(){return this}()));


//# 1 "../../.js/base.shadow_stdlib/shadow_stdlib.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     global_data=runtime.caml_get_global_data(),
     Caml=global_data.Caml,
     invalid_arg=Caml[1],
     failwith=Caml[2],
     Exit=Caml[3],
     min=Caml[15],
     max=Caml[16],
     abs=Caml[17],
     max_int=Caml[18],
     min_int=Caml[19],
     lnot=Caml[20],
     infinity=Caml[21],
     neg_infinity=Caml[22],
     nan=Caml[23],
     max_float=Caml[24],
     min_float=Caml[25],
     epsilon_float=Caml[26],
     symbol=Caml[27],
     char_of_int=Caml[28],
     string_of_bool=Caml[29],
     bool_of_string_opt=Caml[30],
     bool_of_string=Caml[31],
     string_of_int=Caml[32],
     int_of_string_opt=Caml[33],
     string_of_float=Caml[34],
     float_of_string_opt=Caml[35],
     symbol$0=Caml[36],
     stdin=Caml[37],
     stdout=Caml[38],
     stderr=Caml[39],
     print_char=Caml[40],
     print_string=Caml[41],
     print_bytes=Caml[42],
     print_int=Caml[43],
     print_float=Caml[44],
     print_endline=Caml[45],
     print_newline=Caml[46],
     prerr_char=Caml[47],
     prerr_string=Caml[48],
     prerr_bytes=Caml[49],
     prerr_int=Caml[50],
     prerr_float=Caml[51],
     prerr_endline=Caml[52],
     prerr_newline=Caml[53],
     read_line=Caml[54],
     read_int_opt=Caml[55],
     read_int=Caml[56],
     read_float_opt=Caml[57],
     read_float=Caml[58],
     open_out=Caml[59],
     open_out_bin=Caml[60],
     open_out_gen=Caml[61],
     flush=Caml[62],
     flush_all=Caml[63],
     output_char=Caml[64],
     output_string=Caml[65],
     output_bytes=Caml[66],
     output=Caml[67],
     output_substring=Caml[68],
     output_byte=Caml[69],
     output_binary_int=Caml[70],
     output_value=Caml[71],
     seek_out=Caml[72],
     pos_out=Caml[73],
     out_channel_length=Caml[74],
     close_out=Caml[75],
     close_out_noerr=Caml[76],
     set_binary_mode_out=Caml[77],
     open_in=Caml[78],
     open_in_bin=Caml[79],
     open_in_gen=Caml[80],
     input_char=Caml[81],
     input_line=Caml[82],
     input=Caml[83],
     really_input=Caml[84],
     really_input_string=Caml[85],
     input_byte=Caml[86],
     input_binary_int=Caml[87],
     input_value=Caml[88],
     seek_in=Caml[89],
     pos_in=Caml[90],
     in_channel_length=Caml[91],
     close_in=Caml[92],
     close_in_noerr=Caml[93],
     set_binary_mode_in=Caml[94],
     string_of_format=Caml[96],
     symbol$1=Caml[97],
     exit=Caml[98],
     at_exit=Caml[99],
     valid_float_lexem=Caml[100],
     unsafe_really_input=Caml[101],
     do_at_exit=Caml[102],
     Not_found=Caml[103],
     Shadow_stdlib=
      [0,
       invalid_arg,
       failwith,
       Exit,
       min,
       max,
       abs,
       max_int,
       min_int,
       lnot,
       infinity,
       neg_infinity,
       nan,
       max_float,
       min_float,
       epsilon_float,
       symbol,
       char_of_int,
       string_of_bool,
       bool_of_string_opt,
       bool_of_string,
       string_of_int,
       int_of_string_opt,
       string_of_float,
       float_of_string_opt,
       symbol$0,
       stdin,
       stdout,
       stderr,
       print_char,
       print_string,
       print_bytes,
       print_int,
       print_float,
       print_endline,
       print_newline,
       prerr_char,
       prerr_string,
       prerr_bytes,
       prerr_int,
       prerr_float,
       prerr_endline,
       prerr_newline,
       read_line,
       read_int_opt,
       read_int,
       read_float_opt,
       read_float,
       open_out,
       open_out_bin,
       open_out_gen,
       flush,
       flush_all,
       output_char,
       output_string,
       output_bytes,
       output,
       output_substring,
       output_byte,
       output_binary_int,
       output_value,
       seek_out,
       pos_out,
       out_channel_length,
       close_out,
       close_out_noerr,
       set_binary_mode_out,
       open_in,
       open_in_bin,
       open_in_gen,
       input_char,
       input_line,
       input,
       really_input,
       really_input_string,
       input_byte,
       input_binary_int,
       input_value,
       seek_in,
       pos_in,
       in_channel_length,
       close_in,
       close_in_noerr,
       set_binary_mode_in,
       string_of_format,
       symbol$1,
       exit,
       at_exit,
       valid_float_lexem,
       unsafe_really_input,
       do_at_exit,
       Not_found];
    runtime.caml_register_global(1,Shadow_stdlib,"Shadow_stdlib");
    return}
  (function(){return this}()));


//# 1 "../../.js/base/base.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_blit_string=runtime.caml_blit_string,
     caml_bytes_equal=runtime.caml_bytes_equal,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_greaterequal=runtime.caml_bytes_greaterequal,
     caml_bytes_lessequal=runtime.caml_bytes_lessequal,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get,
     caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
     caml_check_bound=runtime.caml_check_bound,
     caml_classify_float=runtime.caml_classify_float,
     caml_compare=runtime.caml_compare,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_div=runtime.caml_div,
     caml_equal=runtime.caml_equal,
     caml_float_compare=runtime.caml_float_compare,
     caml_float_of_string=runtime.caml_float_of_string,
     caml_format_float=runtime.caml_format_float,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_greaterequal=runtime.caml_greaterequal,
     caml_greaterthan=runtime.caml_greaterthan,
     caml_int64_add=runtime.caml_int64_add,
     caml_int64_and=runtime.caml_int64_and,
     caml_int64_bits_of_float=runtime.caml_int64_bits_of_float,
     caml_int64_compare=runtime.caml_int64_compare,
     caml_int64_div=runtime.caml_int64_div,
     caml_int64_float_of_bits=runtime.caml_int64_float_of_bits,
     caml_int64_mod=runtime.caml_int64_mod,
     caml_int64_mul=runtime.caml_int64_mul,
     caml_int64_neg=runtime.caml_int64_neg,
     caml_int64_of_float=runtime.caml_int64_of_float,
     caml_int64_of_int32=runtime.caml_int64_of_int32,
     caml_int64_of_string=runtime.caml_int64_of_string,
     caml_int64_or=runtime.caml_int64_or,
     caml_int64_shift_left=runtime.caml_int64_shift_left,
     caml_int64_shift_right=runtime.caml_int64_shift_right,
     caml_int64_shift_right_unsigne=runtime.caml_int64_shift_right_unsigned,
     caml_int64_sub=runtime.caml_int64_sub,
     caml_int64_to_float=runtime.caml_int64_to_float,
     caml_int64_to_int32=runtime.caml_int64_to_int32,
     caml_int64_xor=runtime.caml_int64_xor,
     caml_int_compare=runtime.caml_int_compare,
     caml_int_of_string=runtime.caml_int_of_string,
     caml_lessequal=runtime.caml_lessequal,
     caml_lessthan=runtime.caml_lessthan,
     caml_log10_float=runtime.caml_log10_float,
     caml_make_vect=runtime.caml_make_vect,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_mod=runtime.caml_mod,
     caml_mul=runtime.caml_mul,
     caml_notequal=runtime.caml_notequal,
     caml_obj_tag=runtime.caml_obj_tag,
     caml_obj_truncate=runtime.caml_obj_truncate,
     caml_register_global=runtime.caml_register_global,
     caml_string_compare=runtime.caml_string_compare,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_greaterequal=runtime.caml_string_greaterequal,
     caml_string_lessequal=runtime.caml_string_lessequal,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_string_unsafe_get=runtime.caml_string_unsafe_get,
     caml_sys_argv=runtime.caml_sys_argv,
     caml_sys_getenv=runtime.caml_sys_getenv,
     caml_update_dummy=runtime.caml_update_dummy,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    var
     global_data=runtime.caml_get_global_data(),
     description=caml_string_of_jsbytes("internalhash"),
     cst_Sexpable_Of_stringable_t_o=
      caml_string_of_jsbytes
       ("Sexpable.Of_stringable.t_of_sexp expected an atom, but got a list"),
     cst_unknown_word_size=caml_string_of_jsbytes("unknown word size"),
     cst_pp=caml_string_of_jsbytes(".pp"),
     cst_Base_Exn_Finally=caml_string_of_jsbytes("Base__Exn.Finally"),
     cst_Base_Exn_Reraised=caml_string_of_jsbytes("Base__Exn.Reraised"),
     cst_Base_Exn_Sexp=caml_string_of_jsbytes("Base__Exn.Sexp"),
     module_name=caml_string_of_jsbytes("Base.Exn"),
     cst_use_of_return_from_a_with_=
      caml_string_of_jsbytes
       ("use of [return] from a [with_return] that already returned"),
     cst_Return=caml_string_of_jsbytes("Return"),
     cst_Error=caml_string_of_jsbytes("Error"),
     cst_Ok=caml_string_of_jsbytes("Ok"),
     cst_error=caml_string_of_jsbytes("error"),
     cst_ok=caml_string_of_jsbytes("ok"),
     cst_Error$0=caml_string_of_jsbytes("Error"),
     cst_Ok$0=caml_string_of_jsbytes("Ok"),
     cst_error$0=caml_string_of_jsbytes("error"),
     cst_ok$0=caml_string_of_jsbytes("ok"),
     tp_loc=caml_string_of_jsbytes("src/result.ml.t"),
     ok_unit=[0,0],
     cst_unforced_lazy=caml_string_of_jsbytes("<unforced lazy>"),
     cst_float=caml_string_of_jsbytes("float"),
     cst_int64=caml_string_of_jsbytes("int64"),
     cst_nativeint=caml_string_of_jsbytes("nativeint"),
     cst_int32=caml_string_of_jsbytes("int32"),
     cst_int=caml_string_of_jsbytes("int"),
     cst_initializing_Random_with_a=
      caml_string_of_jsbytes
       ("initializing Random with a nondeterministic seed is forbidden in inline tests"),
     cst_Equal=caml_string_of_jsbytes("Equal"),
     cst_Greater=caml_string_of_jsbytes("Greater"),
     cst_Less=caml_string_of_jsbytes("Less"),
     cst_equal=caml_string_of_jsbytes("equal"),
     cst_greater=caml_string_of_jsbytes("greater"),
     cst_less=caml_string_of_jsbytes("less"),
     cst_Equal$0=caml_string_of_jsbytes("Equal"),
     cst_Greater$0=caml_string_of_jsbytes("Greater"),
     cst_Less$0=caml_string_of_jsbytes("Less"),
     cst_equal$0=caml_string_of_jsbytes("equal"),
     cst_greater$0=caml_string_of_jsbytes("greater"),
     cst_less$0=caml_string_of_jsbytes("less"),
     all$3=[0,0,[0,1,[0,2,0]]],
     tp_loc$0=caml_string_of_jsbytes("src/ordering.ml.t"),
     cst_List_last=caml_string_of_jsbytes("List.last"),
     cst_List_random_element_exn_em=
      caml_string_of_jsbytes("List.random_element_exn: empty list"),
     cst_List_drop_last_exn_empty_l=
      caml_string_of_jsbytes("List.drop_last_exn: empty list"),
     cst_List_sub=caml_string_of_jsbytes("List.sub"),
     cst_List_reduce_balanced_exn=
      caml_string_of_jsbytes("List.reduce_balanced_exn"),
     cst_List_reduce_exn=caml_string_of_jsbytes("List.reduce_exn"),
     cst_zip_exn=caml_string_of_jsbytes("zip_exn"),
     cst_map3_exn=caml_string_of_jsbytes("map3_exn"),
     cst_rev_map3_exn=caml_string_of_jsbytes("rev_map3_exn"),
     cst_map2_exn=caml_string_of_jsbytes("map2_exn"),
     cst_exists2_exn=caml_string_of_jsbytes("exists2_exn"),
     cst_for_all2_exn=caml_string_of_jsbytes("for_all2_exn"),
     cst_fold2_exn=caml_string_of_jsbytes("fold2_exn"),
     cst_rev_map2_exn=caml_string_of_jsbytes("rev_map2_exn"),
     cst_iter2_exn=caml_string_of_jsbytes("iter2_exn"),
     cst_List_range_stride_must_be_=
      caml_string_of_jsbytes("List.range: stride must be non-zero"),
     cst_List_range_stride_function$0=
      caml_string_of_jsbytes
       ("List.range': stride function cannot change direction"),
     cst_List_range_stride_function=
      caml_string_of_jsbytes
       ("List.range': stride function cannot return the same value"),
     tp_loc$1=caml_string_of_jsbytes("src/list.ml.Assoc.t"),
     cst_Base_List_Transpose_got_li=
      caml_string_of_jsbytes
       ("Base__List.Transpose_got_lists_of_different_lengths"),
     cst$0=caml_string_of_jsbytes(""),
     cst=caml_string_of_jsbytes(""),
     cst$1=caml_string_of_jsbytes(":"),
     cst$2=caml_string_of_jsbytes(":"),
     cst_pos_bol=caml_string_of_jsbytes("pos_bol"),
     cst_pos_cnum=caml_string_of_jsbytes("pos_cnum"),
     cst_pos_fname=caml_string_of_jsbytes("pos_fname"),
     cst_pos_lnum=caml_string_of_jsbytes("pos_lnum"),
     cst_pos_cnum$0=caml_string_of_jsbytes("pos_cnum"),
     cst_pos_bol$0=caml_string_of_jsbytes("pos_bol"),
     cst_pos_lnum$0=caml_string_of_jsbytes("pos_lnum"),
     cst_pos_fname$0=caml_string_of_jsbytes("pos_fname"),
     tp_loc$2=caml_string_of_jsbytes("src/source_code_position0.ml.T.t"),
     cst$8=caml_string_of_jsbytes(""),
     cst$7=caml_string_of_jsbytes("; "),
     cst_could_not_construct_info=
      caml_string_of_jsbytes("could not construct info: "),
     cst$3=caml_string_of_jsbytes(": "),
     cst$4=caml_string_of_jsbytes(": "),
     cst$5=caml_string_of_jsbytes(": "),
     cst$6=caml_string_of_jsbytes(": "),
     cst_Backtrace=caml_string_of_jsbytes("\nBacktrace:\n"),
     cst_Base_Info_Exn=caml_string_of_jsbytes("Base__Info.Exn"),
     module_name$0=caml_string_of_jsbytes("Base.Info"),
     module_name$1=caml_string_of_jsbytes("Base.Error"),
     cst_exn$0=caml_string_of_jsbytes("exn"),
     cst_field=caml_string_of_jsbytes("field"),
     cst_problem_with_field=caml_string_of_jsbytes("problem with field"),
     cst$9=caml_string_of_jsbytes(""),
     cst_exn=caml_string_of_jsbytes("exn"),
     cst$10=caml_string_of_jsbytes(""),
     cst_invariant_failed=caml_string_of_jsbytes("invariant failed"),
     cst_Maybe_bound_compare_to_int=
      caml_string_of_jsbytes
       ("Maybe_bound.compare_to_interval_exn: lower bound > upper bound"),
     cst_Above_upper_bound=caml_string_of_jsbytes("Above_upper_bound"),
     cst_Below_lower_bound=caml_string_of_jsbytes("Below_lower_bound"),
     cst_In_range=caml_string_of_jsbytes("In_range"),
     cst_above_upper_bound=caml_string_of_jsbytes("above_upper_bound"),
     cst_below_lower_bound=caml_string_of_jsbytes("below_lower_bound"),
     cst_in_range=caml_string_of_jsbytes("in_range"),
     cst_Above_upper_bound$0=caml_string_of_jsbytes("Above_upper_bound"),
     cst_Below_lower_bound$0=caml_string_of_jsbytes("Below_lower_bound"),
     cst_In_range$0=caml_string_of_jsbytes("In_range"),
     cst_above_upper_bound$0=caml_string_of_jsbytes("above_upper_bound"),
     cst_below_lower_bound$0=caml_string_of_jsbytes("below_lower_bound"),
     cst_in_range$0=caml_string_of_jsbytes("in_range"),
     cst_Excl=caml_string_of_jsbytes("Excl"),
     cst_Incl=caml_string_of_jsbytes("Incl"),
     cst_Unbounded=caml_string_of_jsbytes("Unbounded"),
     cst_excl=caml_string_of_jsbytes("excl"),
     cst_incl=caml_string_of_jsbytes("incl"),
     cst_unbounded=caml_string_of_jsbytes("unbounded"),
     cst_Excl$0=caml_string_of_jsbytes("Excl"),
     cst_Incl$0=caml_string_of_jsbytes("Incl"),
     cst_Unbounded$0=caml_string_of_jsbytes("Unbounded"),
     cst_excl$0=caml_string_of_jsbytes("excl"),
     cst_incl$0=caml_string_of_jsbytes("incl"),
     cst_unbounded$0=caml_string_of_jsbytes("unbounded"),
     tp_loc$3=caml_string_of_jsbytes("src/maybe_bound.ml.t"),
     tp_loc$4=caml_string_of_jsbytes("src/maybe_bound.ml.interval_comparison"),
     cst_unimplemented=caml_string_of_jsbytes("unimplemented"),
     cst_snd=caml_string_of_jsbytes("snd"),
     cst_fst=caml_string_of_jsbytes("fst"),
     cst_validation_errors=caml_string_of_jsbytes("validation errors"),
     cst$11=caml_string_of_jsbytes(""),
     cst_Exception_raised_during_va=
      caml_string_of_jsbytes("Exception raised during validation"),
     cst_Neg=caml_string_of_jsbytes("Neg"),
     cst_Pos=caml_string_of_jsbytes("Pos"),
     cst_Zero=caml_string_of_jsbytes("Zero"),
     cst_neg=caml_string_of_jsbytes("neg"),
     cst_pos=caml_string_of_jsbytes("pos"),
     cst_zero=caml_string_of_jsbytes("zero"),
     cst_Neg$0=caml_string_of_jsbytes("Neg"),
     cst_Pos$0=caml_string_of_jsbytes("Pos"),
     cst_Zero$0=caml_string_of_jsbytes("Zero"),
     cst_neg$0=caml_string_of_jsbytes("neg"),
     cst_pos$0=caml_string_of_jsbytes("pos"),
     cst_zero$0=caml_string_of_jsbytes("zero"),
     tp_loc$5=caml_string_of_jsbytes("src/sign0.ml.t"),
     all$8=[0,0,[0,1,[0,2,0]]],
     module_name$2=caml_string_of_jsbytes("Base.Sign"),
     cst_max$0=caml_string_of_jsbytes("max"),
     cst_min$0=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$0=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     cst_max=caml_string_of_jsbytes("max"),
     cst_min=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     cst$13=caml_string_of_jsbytes("()"),
     cst$12=caml_string_of_jsbytes("()"),
     cst_Base_Unit_of_string_expect=
      caml_string_of_jsbytes("Base.Unit.of_string: () expected"),
     all$9=[0,0,0],
     module_name$3=caml_string_of_jsbytes("Base.Unit"),
     cst_some=caml_string_of_jsbytes("some"),
     cst_none=caml_string_of_jsbytes("none"),
     cst$14=caml_string_of_jsbytes(""),
     cst_Option_value_exn=caml_string_of_jsbytes("Option.value_exn"),
     cst_Option_value_exn_None=caml_string_of_jsbytes("Option.value_exn None"),
     cst_First=caml_string_of_jsbytes("First"),
     cst_Second=caml_string_of_jsbytes("Second"),
     cst_first=caml_string_of_jsbytes("first"),
     cst_second=caml_string_of_jsbytes("second"),
     cst_First$0=caml_string_of_jsbytes("First"),
     cst_Second$0=caml_string_of_jsbytes("Second"),
     cst_first$0=caml_string_of_jsbytes("first"),
     cst_second$0=caml_string_of_jsbytes("second"),
     tp_loc$6=caml_string_of_jsbytes("src/either.ml.t"),
     cst_Sequence_cycle_list_exn=
      caml_string_of_jsbytes("Sequence.cycle_list_exn"),
     cst_Sequence_drop=caml_string_of_jsbytes("Sequence.drop"),
     cst_Sequence_take=caml_string_of_jsbytes("Sequence.take"),
     cst_Sequence_sub=caml_string_of_jsbytes("Sequence.sub"),
     cst_Sequence_reduce_exn=caml_string_of_jsbytes("Sequence.reduce_exn"),
     cst_Sequence_find_exn=caml_string_of_jsbytes("Sequence.find_exn"),
     cst_Sequence_chunks_exn=caml_string_of_jsbytes("Sequence.chunks_exn"),
     cst_Sequence_tl_exn=caml_string_of_jsbytes("Sequence.tl_exn"),
     cst_hd_exn=caml_string_of_jsbytes("hd_exn"),
     cst_Both=caml_string_of_jsbytes("Both"),
     cst_Left=caml_string_of_jsbytes("Left"),
     cst_Right=caml_string_of_jsbytes("Right"),
     cst_both=caml_string_of_jsbytes("both"),
     cst_left=caml_string_of_jsbytes("left"),
     cst_right=caml_string_of_jsbytes("right"),
     cst_Both$0=caml_string_of_jsbytes("Both"),
     cst_Left$0=caml_string_of_jsbytes("Left"),
     cst_Right$0=caml_string_of_jsbytes("Right"),
     cst_both$0=caml_string_of_jsbytes("both"),
     cst_left$0=caml_string_of_jsbytes("left"),
     cst_right$0=caml_string_of_jsbytes("right"),
     cst_Sequence_nth=caml_string_of_jsbytes("Sequence.nth"),
     cst_Sequence_nth$0=caml_string_of_jsbytes("Sequence.nth"),
     tp_loc$7=
      caml_string_of_jsbytes
       ("src/sequence.ml.Merge_with_duplicates_element.t"),
     cst_len=caml_string_of_jsbytes("len"),
     cst_Array_unsafe_truncate_got_=
      caml_string_of_jsbytes("Array.unsafe_truncate got invalid len"),
     cst_Array_transpose_exn=caml_string_of_jsbytes("Array.transpose_exn"),
     cst_Array_zip_exn=caml_string_of_jsbytes("Array.zip_exn"),
     cst_Array_random_element_exn_e=
      caml_string_of_jsbytes("Array.random_element_exn: empty array"),
     cst_Array_reduce_exn=caml_string_of_jsbytes("Array.reduce_exn"),
     cst_Array_for_all2_exn=caml_string_of_jsbytes("Array.for_all2_exn"),
     cst_Array_exists2_exn=caml_string_of_jsbytes("Array.exists2_exn"),
     cst_Array_fold2_exn=caml_string_of_jsbytes("Array.fold2_exn"),
     cst_Array_map2_exn=caml_string_of_jsbytes("Array.map2_exn"),
     cst_Array_iter2_exn=caml_string_of_jsbytes("Array.iter2_exn"),
     cst_Obj_array_t_of_length=
      caml_string_of_jsbytes("<Obj_array.t of length "),
     cst_Array_map2_exn$0=caml_string_of_jsbytes("Array.map2_exn"),
     cst_Uniform_array_init=caml_string_of_jsbytes("Uniform_array.init"),
     cst_Uchar_t_of_sexp_atom_of_th=
      caml_string_of_jsbytes
       ("Uchar.t_of_sexp: atom of the form U+XXXX needed"),
     cst_Uchar_t_of_sexp_atom_neede=
      caml_string_of_jsbytes("Uchar.t_of_sexp: atom needed"),
     module_name$4=caml_string_of_jsbytes("Base.Uchar"),
     module_name$5=caml_string_of_jsbytes("Base.Char"),
     cst_max$1=caml_string_of_jsbytes("max"),
     cst_min$1=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$1=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     cst$22=caml_string_of_jsbytes(""),
     cst$21=caml_string_of_jsbytes(""),
     cst$20=caml_string_of_jsbytes(""),
     cst_char$0=caml_string_of_jsbytes("char"),
     cst_pos$2=caml_string_of_jsbytes("pos"),
     cst_escape_char$0=caml_string_of_jsbytes("escape_char"),
     cst_str$0=caml_string_of_jsbytes("str"),
     cst_rindex_from_exn_not_found=
      caml_string_of_jsbytes("rindex_from_exn: not found"),
     cst_rindex_from=caml_string_of_jsbytes("rindex_from"),
     cst_char=caml_string_of_jsbytes("char"),
     cst_pos$1=caml_string_of_jsbytes("pos"),
     cst_escape_char=caml_string_of_jsbytes("escape_char"),
     cst_str=caml_string_of_jsbytes("str"),
     cst_index_from_exn_not_found=
      caml_string_of_jsbytes("index_from_exn: not found"),
     cst_index_from=caml_string_of_jsbytes("index_from"),
     cst_is_char_literal=caml_string_of_jsbytes("is_char_literal"),
     cst_is_char_escaped=caml_string_of_jsbytes("is_char_escaped"),
     cst_is_char_escaping=caml_string_of_jsbytes("is_char_escaping"),
     cst_escapeworthy_map=caml_string_of_jsbytes("escapeworthy_map"),
     cst_c_to=caml_string_of_jsbytes("c_to"),
     cst_c_from=caml_string_of_jsbytes("c_from"),
     cst_escapeworthy_map_not_one_t=
      caml_string_of_jsbytes("escapeworthy_map not one-to-one"),
     cst_tr_multi_replacement_is_em=
      caml_string_of_jsbytes("tr_multi replacement is empty string"),
     cst$19=caml_string_of_jsbytes(""),
     cst$18=caml_string_of_jsbytes(""),
     cst$17=caml_string_of_jsbytes(""),
     cst_suffix=caml_string_of_jsbytes("suffix"),
     cst_prefix=caml_string_of_jsbytes("prefix"),
     cst$16=caml_string_of_jsbytes(""),
     cst_drop_suffix=caml_string_of_jsbytes("drop_suffix"),
     cst$15=caml_string_of_jsbytes(""),
     cst_drop_prefix=caml_string_of_jsbytes("drop_prefix"),
     cst_expecting_nonnegative_argu=
      caml_string_of_jsbytes(" expecting nonnegative argument"),
     cst_substring=caml_string_of_jsbytes("substring"),
     cst_Substring_not_found=caml_string_of_jsbytes("Substring not found"),
     cst_String_rindex_from_exn=
      caml_string_of_jsbytes("String.rindex_from_exn"),
     cst_String_index_from_exn=caml_string_of_jsbytes("String.index_from_exn"),
     cst_max$2=caml_string_of_jsbytes("max"),
     cst_min$2=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$2=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     cst_tr_multi_replacement_is_th=
      caml_string_of_jsbytes("tr_multi: replacement is the empty string"),
     module_name$6=caml_string_of_jsbytes("Base.Bytes"),
     ocaml_lex_tables=
      [0,
       caml_string_of_jsbytes("\0\0\0\0\x01\0\x01\0\x02\0\x1b\0R\0i\0"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\x01\0"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
       caml_string_of_jsbytes
        ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\x01\0\x03\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\0\0\0\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\0\0\0\0\0\0\x06\0\x04\0\0\0\0\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\0\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\x04\0\x05\0\0\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\0\0\0\0\0\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\0\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\x02\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\xff\xff\xff\xff\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\x01\0\x03\0\xff\xff\xff\xff\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\xff\xff\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x03\0\x05\0\xff\xff\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\xff\xff\xff\xff\xff\xff\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes("")],
     cst_0x=caml_string_of_jsbytes("-0x"),
     cst_0x$0=caml_string_of_jsbytes("0x"),
     cst_int63=caml_string_of_jsbytes("int63"),
     cst_int64$3=caml_string_of_jsbytes("int64"),
     cst_nativeint$2=caml_string_of_jsbytes("nativeint"),
     cst_int64$2=caml_string_of_jsbytes("int64"),
     cst_int32$3=caml_string_of_jsbytes("int32"),
     cst_nativeint$1=caml_string_of_jsbytes("nativeint"),
     cst_int32$2=caml_string_of_jsbytes("int32"),
     cst_int64$1=caml_string_of_jsbytes("int64"),
     cst_int$3=caml_string_of_jsbytes("int"),
     cst_nativeint$0=caml_string_of_jsbytes("nativeint"),
     cst_int$2=caml_string_of_jsbytes("int"),
     cst_int64$0=caml_string_of_jsbytes("int64"),
     cst_int$1=caml_string_of_jsbytes("int"),
     cst_int32$1=caml_string_of_jsbytes("int32"),
     cst_int32$0=caml_string_of_jsbytes("int32"),
     cst_int$0=caml_string_of_jsbytes("int"),
     overflow_bound_max_int63_on_in=
      runtime.caml_int64_create_lo_mi_hi(16777215,16777215,16383),
     overflow_bound_max_int64_value=
      runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32767),
     m1=runtime.caml_int64_create_lo_mi_hi(5592405,5592405,21845),
     m2=runtime.caml_int64_create_lo_mi_hi(3355443,3355443,13107),
     m4=runtime.caml_int64_create_lo_mi_hi(986895,986895,3855),
     h01=runtime.caml_int64_create_lo_mi_hi(65793,65793,257),
     mask=runtime.caml_int64_create_lo_mi_hi(16777215,255,0),
     cst$24=caml_string_of_jsbytes(""),
     cst_Int_ceil_log2_got_invalid_=
      caml_string_of_jsbytes("[Int.ceil_log2] got invalid input"),
     cst$23=caml_string_of_jsbytes(""),
     cst_Int_floor_log2_got_invalid=
      caml_string_of_jsbytes("[Int.floor_log2] got invalid input"),
     cst_max$3=caml_string_of_jsbytes("max"),
     cst_min$3=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$3=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     module_name$7=caml_string_of_jsbytes("Base.Int.Hex"),
     module_name$8=caml_string_of_jsbytes("Base.Int"),
     cst$25=caml_string_of_jsbytes(""),
     cst_Type_equal_Id_same_witness=
      caml_string_of_jsbytes
       ("Type_equal.Id.same_witness_exn got different ids"),
     cst_Key=caml_string_of_jsbytes("Key"),
     some_t=[0,0],
     cst_Option_array_get_some_exn_=
      caml_string_of_jsbytes
       ("Option_array.get_some_exn: the element is [None]"),
     cst_stack=caml_string_of_jsbytes("stack"),
     cst_exn$1=caml_string_of_jsbytes("exn"),
     cst_Stack_invariant_failed=
      caml_string_of_jsbytes("Stack.invariant failed"),
     cst_Stack_pop_of_empty_stack=
      caml_string_of_jsbytes("Stack.pop of empty stack"),
     cst_Stack_top_of_empty_stack=
      caml_string_of_jsbytes("Stack.top of empty stack"),
     cst_Base_Sign_or_nan_to_sign_e=
      caml_string_of_jsbytes("Base.Sign_or_nan.to_sign_exn: Nan"),
     cst_Nan=caml_string_of_jsbytes("Nan"),
     cst_Neg$1=caml_string_of_jsbytes("Neg"),
     cst_Pos$1=caml_string_of_jsbytes("Pos"),
     cst_Zero$1=caml_string_of_jsbytes("Zero"),
     cst_nan=caml_string_of_jsbytes("nan"),
     cst_neg$1=caml_string_of_jsbytes("neg"),
     cst_pos$3=caml_string_of_jsbytes("pos"),
     cst_zero$1=caml_string_of_jsbytes("zero"),
     cst_Nan$0=caml_string_of_jsbytes("Nan"),
     cst_Neg$2=caml_string_of_jsbytes("Neg"),
     cst_Pos$2=caml_string_of_jsbytes("Pos"),
     cst_Zero$2=caml_string_of_jsbytes("Zero"),
     cst_nan$0=caml_string_of_jsbytes("nan"),
     cst_neg$2=caml_string_of_jsbytes("neg"),
     cst_pos$4=caml_string_of_jsbytes("pos"),
     cst_zero$2=caml_string_of_jsbytes("zero"),
     tp_loc$8=caml_string_of_jsbytes("src/sign_or_nan.ml.T.t"),
     all$14=[0,0,[0,1,[0,2,[0,3,0]]]],
     module_name$9=caml_string_of_jsbytes("Base.Sign_or_nan"),
     cst_Left$1=caml_string_of_jsbytes("Left"),
     cst_Right$1=caml_string_of_jsbytes("Right"),
     cst_Unequal=caml_string_of_jsbytes("Unequal"),
     cst_Left$2=caml_string_of_jsbytes("Left"),
     cst_Right$2=caml_string_of_jsbytes("Right"),
     cst_Unequal$0=caml_string_of_jsbytes("Unequal"),
     tp_loc$9=
      caml_string_of_jsbytes("src/map_intf.ml.Symmetric_diff_element.t"),
     all$15=[0,0,[0,1,0]],
     all$16=[0,0,[0,1,0]],
     cst_Set_remove_min_elt=caml_string_of_jsbytes("Set.remove_min_elt"),
     cst_invalid_elements=caml_string_of_jsbytes("invalid_elements"),
     cst_is_not_a_subset_of=caml_string_of_jsbytes(" is not a subset of "),
     cst_Set_t_of_sexp_duplicate_el=
      caml_string_of_jsbytes("Set.t_of_sexp: duplicate element in set"),
     cst_Set_t_of_sexp_list_needed=
      caml_string_of_jsbytes("Set.t_of_sexp: list needed"),
     cst_Set_find_exn_failed_to_fin=
      caml_string_of_jsbytes("Set.find_exn failed to find a matching element"),
     cst_of_sorted_array_duplicated=
      caml_string_of_jsbytes("of_sorted_array: duplicated elements"),
     cst_of_sorted_array_elements_a=
      caml_string_of_jsbytes("of_sorted_array: elements are not ordered"),
     cst_of_sorted_array_duplicated$0=
      caml_string_of_jsbytes("of_sorted_array: duplicated elements"),
     cst_Base_Set_Tree0_Same=caml_string_of_jsbytes("Base__Set.Tree0.Same"),
     cst_Base_Set_Tree0_Set_min_elt=
      caml_string_of_jsbytes("Base__Set.Tree0.Set_min_elt_exn_of_empty_set"),
     cst_Base_Set_Tree0_Set_max_elt=
      caml_string_of_jsbytes("Base__Set.Tree0.Set_max_elt_exn_of_empty_set"),
     cst_length$1=caml_string_of_jsbytes("length"),
     cst_Queue_init_negative_length=
      caml_string_of_jsbytes("Queue.init: negative length"),
     cst_length$0=caml_string_of_jsbytes("length"),
     cst_Queue_blit_transfer_negati=
      caml_string_of_jsbytes("Queue.blit_transfer: negative length"),
     cst_capacity=caml_string_of_jsbytes("capacity"),
     cst_cannot_have_queue_with_neg=
      caml_string_of_jsbytes("cannot have queue with negative capacity"),
     cst$26=caml_string_of_jsbytes(""),
     cst_mutation_of_queue_during_i=
      caml_string_of_jsbytes("mutation of queue during iteration"),
     cst_length=caml_string_of_jsbytes("length"),
     cst_index=caml_string_of_jsbytes("index"),
     cst_Queue_index_out_of_bounds=
      caml_string_of_jsbytes("Queue index out of bounds"),
     cst_max$4=caml_string_of_jsbytes("max"),
     cst_min$4=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$4=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     cst$28=caml_string_of_jsbytes(""),
     cst_Nativeint_ceil_log2_got_in=
      caml_string_of_jsbytes("[Nativeint.ceil_log2] got invalid input"),
     cst$27=caml_string_of_jsbytes(""),
     cst_Nativeint_floor_log2_got_i=
      caml_string_of_jsbytes("[Nativeint.floor_log2] got invalid input"),
     module_name$10=caml_string_of_jsbytes("Base.Nativeint.Hex"),
     module_name$11=caml_string_of_jsbytes("Base.Nativeint"),
     cst_Map_remove_min_elt=caml_string_of_jsbytes("Map.remove_min_elt"),
     cst_Map_t_of_sexp_direct_dupli=
      caml_string_of_jsbytes("Map.t_of_sexp_direct: duplicate key"),
     cst_exn_duplicate_key=caml_string_of_jsbytes("_exn: duplicate key"),
     cst_Map_of$0=caml_string_of_jsbytes("Map.of_"),
     cst_or_error_duplicate_key=
      caml_string_of_jsbytes("_or_error: duplicate key"),
     cst_Map_of=caml_string_of_jsbytes("Map.of_"),
     cst_of_increasing_sequence_non=
      caml_string_of_jsbytes("of_increasing_sequence: non-increasing key"),
     cst_Map_singleton_to_tree_exn_=
      caml_string_of_jsbytes("Map.singleton_to_tree_exn: not a singleton"),
     cst_key=caml_string_of_jsbytes("key"),
     cst_Map_add_exn_got_key_alread=
      caml_string_of_jsbytes("[Map.add_exn] got key already present"),
     cst_Map_bal=caml_string_of_jsbytes("Map.bal"),
     cst_Map_bal$0=caml_string_of_jsbytes("Map.bal"),
     cst_Map_bal$1=caml_string_of_jsbytes("Map.bal"),
     cst_Map_bal$2=caml_string_of_jsbytes("Map.bal"),
     cst_of_sorted_array_duplicated$1=
      caml_string_of_jsbytes("of_sorted_array: duplicated elements"),
     cst_of_sorted_array_elements_a$0=
      caml_string_of_jsbytes("of_sorted_array: elements are not ordered"),
     cst_of_sorted_array_duplicated$2=
      caml_string_of_jsbytes("of_sorted_array: duplicated elements"),
     cst_Base_Map_Duplicate=caml_string_of_jsbytes("Base__Map.Duplicate"),
     empty$5=[0,0],
     cst_Base_Map_Tree0_Map_min_elt=
      caml_string_of_jsbytes("Base__Map.Tree0.Map_min_elt_exn_of_empty_map"),
     cst_Base_Map_Tree0_Map_max_elt=
      caml_string_of_jsbytes("Base__Map.Tree0.Map_max_elt_exn_of_empty_map"),
     cst_Base_Map_Tree0_Change_no_o=
      caml_string_of_jsbytes("Base__Map.Tree0.Change_no_op"),
     name$2=caml_string_of_jsbytes("alist"),
     name$3=caml_string_of_jsbytes("sequence"),
     cst$30=caml_string_of_jsbytes(""),
     cst_Int64_ceil_log2_got_invali=
      caml_string_of_jsbytes("[Int64.ceil_log2] got invalid input"),
     cst$29=caml_string_of_jsbytes(""),
     cst_Int64_floor_log2_got_inval=
      caml_string_of_jsbytes("[Int64.floor_log2] got invalid input"),
     cst_max$5=caml_string_of_jsbytes("max"),
     cst_min$5=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$5=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     module_name$12=caml_string_of_jsbytes("Base.Int64.Hex"),
     module_name$13=caml_string_of_jsbytes("Base.Int64"),
     cst_0x$1=caml_string_of_jsbytes("0x"),
     cst_max$6=caml_string_of_jsbytes("max"),
     cst_min$6=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$6=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     mask$0=runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
     module_name$14=caml_string_of_jsbytes("Base.Int63.Hex"),
     module_name$15=caml_string_of_jsbytes("Base.Int63"),
     cst_max$7=caml_string_of_jsbytes("max"),
     cst_min$7=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$7=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     cst_false=caml_string_of_jsbytes("false"),
     cst_true=caml_string_of_jsbytes("true"),
     all$18=[0,0,[0,1,0]],
     module_name$16=caml_string_of_jsbytes("Base.Bool"),
     cst$32=caml_string_of_jsbytes(""),
     cst_Int32_ceil_log2_got_invali=
      caml_string_of_jsbytes("[Int32.ceil_log2] got invalid input"),
     cst$31=caml_string_of_jsbytes(""),
     cst_Int32_floor_log2_got_inval=
      caml_string_of_jsbytes("[Int32.floor_log2] got invalid input"),
     cst_max$8=caml_string_of_jsbytes("max"),
     cst_min$8=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$8=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     module_name$17=caml_string_of_jsbytes("Base.Int32.Hex"),
     module_name$18=caml_string_of_jsbytes("Base.Int32"),
     cst$33=caml_string_of_jsbytes(""),
     cst_Int_floor_log2_got_invalid$0=
      caml_string_of_jsbytes("[Int.floor_log2] got invalid input"),
     cst_neg_overflow=caml_string_of_jsbytes("neg overflow"),
     cst_abs_overflow=caml_string_of_jsbytes("abs overflow"),
     cst_diff=caml_string_of_jsbytes("diff"),
     cst_u$0=caml_string_of_jsbytes("u"),
     cst_t$0=caml_string_of_jsbytes("t"),
     cst_overflow$0=caml_string_of_jsbytes("( - ) overflow"),
     cst_sum=caml_string_of_jsbytes("sum"),
     cst_u=caml_string_of_jsbytes("u"),
     cst_t=caml_string_of_jsbytes("t"),
     cst_overflow=caml_string_of_jsbytes("( + ) overflow"),
     cst_Avltree_choose_exn_of_empt=
      caml_string_of_jsbytes("[Avltree.choose_exn] of empty hashtbl"),
     cst_Hashtbl_merge_different_ha=
      caml_string_of_jsbytes("Hashtbl.merge: different 'hashable' values"),
     cst_keys=caml_string_of_jsbytes("keys"),
     cst_Hashtbl_create_with_key_du=
      caml_string_of_jsbytes("Hashtbl.create_with_key: duplicate keys"),
     cst_Hashtbl_t_of_sexp_duplicat=
      caml_string_of_jsbytes("Hashtbl.t_of_sexp: duplicate key"),
     cst_Hashtbl_of_alist_exn_dupli=
      caml_string_of_jsbytes("Hashtbl.of_alist_exn: duplicate key"),
     cst_Hashtbl_choose_exn_of_empt=
      caml_string_of_jsbytes("[Hashtbl.choose_exn] of empty hashtbl"),
     cst_Hashtbl_add_exn_got_key_al=
      caml_string_of_jsbytes("Hashtbl.add_exn got key already present"),
     cst_Hashtbl_mutation_not_allow=
      caml_string_of_jsbytes("Hashtbl: mutation not allowed during iteration"),
     cst_Hash_set_t_of_sexp_got_a_d=
      caml_string_of_jsbytes("Hash_set.t_of_sexp got a duplicate element"),
     cst_Hash_set_t_of_sexp_require=
      caml_string_of_jsbytes("Hash_set.t_of_sexp requires a list"),
     cst_element_not_in_set=caml_string_of_jsbytes("element not in set"),
     cst_element_already_exists=
      caml_string_of_jsbytes("element already exists"),
     cst$39=caml_string_of_jsbytes(""),
     cst_Float_sign_exn_of_NAN=caml_string_of_jsbytes("Float.sign_exn of NAN"),
     cst_max$9=caml_string_of_jsbytes("max"),
     cst_min$9=caml_string_of_jsbytes("min"),
     cst_clamp_requires_min_max$9=
      caml_string_of_jsbytes("clamp requires [min <= max]"),
     cst_Float_round_significant_in=
      caml_string_of_jsbytes
       ("Float.round_significant: invalid argument significant_digits:"),
     cst_t$1=caml_string_of_jsbytes("t"),
     cst_g=caml_string_of_jsbytes("g"),
     cst_m=caml_string_of_jsbytes("m"),
     cst_k=caml_string_of_jsbytes("k"),
     cst_1f=caml_string_of_jsbytes("%.1f"),
     cst_0=caml_string_of_jsbytes(".0"),
     cst$38=caml_string_of_jsbytes(""),
     cst$37=caml_string_of_jsbytes("-"),
     cst_inf$1=caml_string_of_jsbytes("-inf  "),
     cst_inf$2=caml_string_of_jsbytes("inf  "),
     cst_nan$4=caml_string_of_jsbytes("nan  "),
     cst_sexp=caml_string_of_jsbytes("sexp"),
     cst_sexp_of_float_produced_str=
      caml_string_of_jsbytes("[sexp_of_float] produced strange sexp"),
     cst_inf=caml_string_of_jsbytes("inf"),
     cst_inf$0=caml_string_of_jsbytes("-inf"),
     cst_nan$3=caml_string_of_jsbytes("nan"),
     cst$35=caml_string_of_jsbytes(""),
     cst$36=caml_string_of_jsbytes("."),
     cst_infinite=caml_string_of_jsbytes("infinite"),
     cst_Infinite=caml_string_of_jsbytes("Infinite"),
     cst_Nan$1=caml_string_of_jsbytes("Nan"),
     cst_Normal=caml_string_of_jsbytes("Normal"),
     cst_Subnormal=caml_string_of_jsbytes("Subnormal"),
     cst_Zero$3=caml_string_of_jsbytes("Zero"),
     cst_nan$1=caml_string_of_jsbytes("nan"),
     cst_normal=caml_string_of_jsbytes("normal"),
     cst_subnormal=caml_string_of_jsbytes("subnormal"),
     cst_zero$3=caml_string_of_jsbytes("zero"),
     cst_infinite$0=caml_string_of_jsbytes("infinite"),
     cst_Infinite$0=caml_string_of_jsbytes("Infinite"),
     cst_Nan$2=caml_string_of_jsbytes("Nan"),
     cst_Normal$0=caml_string_of_jsbytes("Normal"),
     cst_Subnormal$0=caml_string_of_jsbytes("Subnormal"),
     cst_Zero$4=caml_string_of_jsbytes("Zero"),
     cst_nan$2=caml_string_of_jsbytes("nan"),
     cst_normal$0=caml_string_of_jsbytes("normal"),
     cst_subnormal$0=caml_string_of_jsbytes("subnormal"),
     cst_zero$4=caml_string_of_jsbytes("zero"),
     cst_15g=caml_string_of_jsbytes("%.15g"),
     cst_17g=caml_string_of_jsbytes("%.17g"),
     cst$34=caml_string_of_jsbytes("."),
     all$19=[0,0,[0,1,[0,2,[0,3,[0,4,0]]]]],
     tp_loc$10=caml_string_of_jsbytes("src/float.ml.Class.t"),
     module_name$19=caml_string_of_jsbytes("Base.Float"),
     cst_b=caml_string_of_jsbytes("b"),
     cst_OCAMLRUNPARAM=caml_string_of_jsbytes("OCAMLRUNPARAM"),
     elided_message=caml_string_of_jsbytes("<backtrace elided in test>"),
     Caml=global_data.Caml,
     Stdlib_uchar=global_data.Stdlib__uchar,
     include$0=global_data.Shadow_stdlib,
     Stdlib_pervasives=global_data.Stdlib__pervasives,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_arrayLabels=global_data.Stdlib__arrayLabels,
     Stdlib=global_data.Stdlib,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib_listLabels=global_data.Stdlib__listLabels,
     CamlinternalLazy=global_data.CamlinternalLazy,
     Sexplib0_Sexp=global_data.Sexplib0__Sexp,
     Sexplib0_Sexp_conv=global_data.Sexplib0__Sexp_conv,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Assert_failure=global_data.Assert_failure,
     Sexplib0_Sexp_conv_error=global_data.Sexplib0__Sexp_conv_error,
     Stdlib_lazy=global_data.Stdlib__lazy,
     Stdlib_int64=global_data.Stdlib__int64,
     Stdlib_nativeint=global_data.Stdlib__nativeint,
     Stdlib_int32=global_data.Stdlib__int32,
     Stdlib_random=global_data.Stdlib__random,
     Stdlib_stringLabels=global_data.Stdlib__stringLabels,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_bytesLabels=global_data.Stdlib__bytesLabels,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_obj=global_data.Stdlib__obj,
     Stdlib_scanf=global_data.Stdlib__scanf,
     Stdlib_lexing=global_data.Stdlib__lexing,
     Stdlib_queue=global_data.Stdlib__queue,
     Stdlib_moreLabels=global_data.Stdlib__moreLabels,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Base=[0];
    caml_register_global(934,Base,"Base__");
    var
     _a_=
      [0,
       [11,
        caml_string_of_jsbytes("Sys.getenv_exn: environment variable "),
        [2,0,[11,caml_string_of_jsbytes(" is not set"),0]]],
       caml_string_of_jsbytes
        ("Sys.getenv_exn: environment variable %s is not set")],
     _e_=
      [0,
       [11,
        caml_string_of_jsbytes("Char.of_int_exn got integer out of range: "),
        [4,0,0,0,0]],
       caml_string_of_jsbytes("Char.of_int_exn got integer out of range: %d")],
     _p_=
      [0,
       [11,
        caml_string_of_jsbytes("Equal called on the type "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", which is abstract in an implementation."),
          0]]],
       caml_string_of_jsbytes
        ("Equal called on the type %s, which is abstract in an implementation.")],
     _o_=
      [0,
       [11,
        caml_string_of_jsbytes("Compare called on the type "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", which is abstract in an implementation."),
          0]]],
       caml_string_of_jsbytes
        ("Compare called on the type %s, which is abstract in an implementation.")],
     _r_=[0,caml_string_of_jsbytes("W64")],
     _s_=[0,caml_string_of_jsbytes("W32")],
     _t_=[0,caml_string_of_jsbytes("Base.Sexp.pp_hum"),0],
     _H_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Exn.handle_uncaught could not print; exiting anyway\n"),
        [10,0]],
       caml_string_of_jsbytes
        ("Exn.handle_uncaught could not print; exiting anyway\n%!")],
     _G_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Uncaught exception:"),
         [17,
          3,
          [17,
           3,
           [18,
            [1,[0,0,caml_string_of_jsbytes("")]],
            [15,[17,0,[17,0,[17,3,[17,4,0]]]]]]]]]],
       caml_string_of_jsbytes("@[<2>Uncaught exception:@\n@\n@[%a@]@]@\n@.")],
     _F_=[0,2],
     _E_=[0,caml_string_of_jsbytes("src/exn.ml"),46,6],
     _B_=[0,caml_string_of_jsbytes("src/exn.ml.Reraised")],
     _C_=[0,caml_string_of_jsbytes("src/exn.ml"),30,13],
     _y_=[0,caml_string_of_jsbytes("src/exn.ml.Finally")],
     _z_=[0,caml_string_of_jsbytes("src/exn.ml"),18,13],
     _K_=[0,0],
     _I_=[0,caml_string_of_jsbytes("Ok")],
     _J_=[0,caml_string_of_jsbytes("Error")],
     _Q_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _P_=
      [0,
       [11,
        caml_string_of_jsbytes("Random."),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": crossed bounds ["),
          [2,0,[11,caml_string_of_jsbytes(" > "),[2,0,[12,93,0]]]]]]],
       caml_string_of_jsbytes("Random.%s: crossed bounds [%s > %s]")],
     _S_=[0,caml_string_of_jsbytes("Less")],
     _T_=[0,caml_string_of_jsbytes("Equal")],
     _U_=[0,caml_string_of_jsbytes("Greater")],
     _aj_=
      [0,
       caml_string_of_jsbytes
        ("src/list.ml.Transpose_got_lists_of_different_lengths")],
     _ak_=[0,caml_string_of_jsbytes("src/list.ml"),1105,13],
     _ah_=[0,4152137,0],
     _ag_=
      [0,
       [11,
        caml_string_of_jsbytes("List.chunks_of: Expected length > 0, got "),
        [4,0,0,0,0]],
       caml_string_of_jsbytes("List.chunks_of: Expected length > 0, got %d")],
     _ae_=[0,caml_string_of_jsbytes("src/list.ml"),770,4],
     _ad_=
      [0,
       [11,caml_string_of_jsbytes("List.init "),[4,0,0,0,0]],
       caml_string_of_jsbytes("List.init %d")],
     _ac_=[0,caml_string_of_jsbytes("src/list.ml"),561,14],
     _ab_=[0,caml_string_of_jsbytes("src/list.ml"),422,11],
     _Z_=
      [0,
       [11,
        caml_string_of_jsbytes("length mismatch in "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(" <> "),
            [4,
             0,
             0,
             0,
             [11,
              caml_string_of_jsbytes(" || "),
              [4,0,0,0,[11,caml_string_of_jsbytes(" <> "),[4,0,0,0,0]]]]]]]]]],
       caml_string_of_jsbytes("length mismatch in %s: %d <> %d || %d <> %d")],
     _Y_=
      [0,
       [11,
        caml_string_of_jsbytes("length mismatch in "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": "),
          [4,0,0,0,[11,caml_string_of_jsbytes(" <> "),[4,0,0,0,[12,32,0]]]]]]],
       caml_string_of_jsbytes("length mismatch in %s: %d <> %d ")],
     _X_=
      [0,
       [11,
        caml_string_of_jsbytes("List.nth_exn "),
        [4,
         0,
         0,
         0,
         [11,caml_string_of_jsbytes(" called on list of length "),[4,0,0,0,0]]]],
       caml_string_of_jsbytes("List.nth_exn %d called on list of length %d")],
     _V_=[0,caml_string_of_jsbytes("Ok")],
     _W_=[0,caml_string_of_jsbytes("Unequal_lengths")],
     ___=[0,caml_string_of_jsbytes("List.find_map_exn: not found")],
     _$_=[0,caml_string_of_jsbytes("List.find_exn: not found")],
     _aa_=[0,caml_string_of_jsbytes("List.find_mapi_exn: not found")],
     _af_=[0,caml_string_of_jsbytes("List.Assoc.find_exn: not found")],
     _ao_=[0,caml_string_of_jsbytes("_")],
     _aq_=[0,caml_string_of_jsbytes("pos_cnum")],
     _ar_=[0,caml_string_of_jsbytes("pos_bol")],
     _as_=[0,caml_string_of_jsbytes("pos_lnum")],
     _at_=[0,caml_string_of_jsbytes("pos_fname")],
     _aF_=[0,caml_string_of_jsbytes("src/info.ml"),198,6],
     _au_=[0,caml_string_of_jsbytes("Could_not_construct")],
     _av_=[0,caml_string_of_jsbytes("String")],
     _aw_=[0,caml_string_of_jsbytes("Exn")],
     _ax_=[0,caml_string_of_jsbytes("Sexp")],
     _ay_=[0,caml_string_of_jsbytes("Tag_sexp")],
     _az_=[0,caml_string_of_jsbytes("Tag_t")],
     _aA_=[0,caml_string_of_jsbytes("Tag_arg")],
     _aB_=[0,caml_string_of_jsbytes("Of_list")],
     _aC_=[0,caml_string_of_jsbytes("With_backtrace")],
     _aD_=
      [0,
       [11,
        caml_string_of_jsbytes("and "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" more info"),0]]],
       caml_string_of_jsbytes("and %d more info")],
     _aK_=[0,caml_string_of_jsbytes("Below_lower_bound")],
     _aL_=[0,caml_string_of_jsbytes("In_range")],
     _aM_=[0,caml_string_of_jsbytes("Above_upper_bound")],
     _aH_=[0,caml_string_of_jsbytes("Unbounded")],
     _aI_=[0,caml_string_of_jsbytes("Incl")],
     _aJ_=[0,caml_string_of_jsbytes("Excl")],
     _aG_=[0,0,0],
     _aO_=[0,caml_string_of_jsbytes("src/or_error.ml"),122,22],
     _aN_=[0,3553398],
     _aR_=[0,caml_string_of_jsbytes("src/validate.ml"),151,20],
     _aS_=
      [0,
       [11,
        caml_string_of_jsbytes("value "),
        [2,0,[11,caml_string_of_jsbytes(" < bound "),[2,0,0]]]],
       caml_string_of_jsbytes("value %s < bound %s")],
     _aT_=
      [0,
       [11,
        caml_string_of_jsbytes("value "),
        [2,0,[11,caml_string_of_jsbytes(" <= bound "),[2,0,0]]]],
       caml_string_of_jsbytes("value %s <= bound %s")],
     _aU_=[0,caml_string_of_jsbytes("src/validate.ml"),156,20],
     _aV_=
      [0,
       [11,
        caml_string_of_jsbytes("value "),
        [2,0,[11,caml_string_of_jsbytes(" > bound "),[2,0,0]]]],
       caml_string_of_jsbytes("value %s > bound %s")],
     _aW_=
      [0,
       [11,
        caml_string_of_jsbytes("value "),
        [2,0,[11,caml_string_of_jsbytes(" >= bound "),[2,0,0]]]],
       caml_string_of_jsbytes("value %s >= bound %s")],
     _aQ_=[0,0],
     _aP_=[0,caml_string_of_jsbytes(".")],
     _aX_=[0,caml_string_of_jsbytes("Neg")],
     _aY_=[0,caml_string_of_jsbytes("Zero")],
     _aZ_=[0,caml_string_of_jsbytes("Pos")],
     _a1_=[0,caml_string_of_jsbytes("src/comparable.ml"),183,4],
     _a0_=[0,caml_string_of_jsbytes("src/comparable.ml"),103,4],
     _a6_=
      [0,
       [11,caml_string_of_jsbytes("Negative position: "),[4,0,0,0,0]],
       caml_string_of_jsbytes("Negative position: %d")],
     _a7_=
      [0,
       [11,caml_string_of_jsbytes("Negative length: "),[4,0,0,0,0]],
       caml_string_of_jsbytes("Negative length: %d")],
     _a8_=
      [0,
       [11,
        caml_string_of_jsbytes("pos + len past end: "),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" + "),
          [4,0,0,0,[11,caml_string_of_jsbytes(" > "),[4,0,0,0,0]]]]]],
       caml_string_of_jsbytes("pos + len past end: %d + %d > %d")],
     _bc_=[0,caml_string_of_jsbytes("First")],
     _bd_=[0,caml_string_of_jsbytes("Second")],
     _bn_=[0,0],
     _bk_=[0,caml_string_of_jsbytes("Left")],
     _bl_=[0,caml_string_of_jsbytes("Right")],
     _bm_=[0,caml_string_of_jsbytes("Both")],
     _bj_=[0,caml_string_of_jsbytes("src/sequence.ml"),254,14],
     _bi_=[0,0,0],
     _be_=[0,caml_string_of_jsbytes("Done")],
     _bf_=[0,caml_string_of_jsbytes("Skip")],
     _bg_=[0,caml_string_of_jsbytes("Yield")],
     _bt_=[0,caml_string_of_jsbytes("src/array.ml"),764,8],
     _bo_=[0,caml_string_of_jsbytes("src/array.ml"),376,14],
     _bp_=[0,caml_string_of_jsbytes("Array.findi_exn: not found")],
     _bq_=[0,caml_string_of_jsbytes("Array.find_exn: not found")],
     _br_=[0,caml_string_of_jsbytes("Array.find_map_exn: not found")],
     _bs_=[0,caml_string_of_jsbytes("Array.find_mapi_exn: not found")],
     _bw_=[0,caml_string_of_jsbytes(">"),0],
     _bx_=[0,caml_string_of_jsbytes("")],
     _bv_=[0,caml_string_of_jsbytes("src/obj_array.ml"),11,18],
     _bz_=[0,caml_string_of_jsbytes("src/uniform_array.ml"),137,8],
     _by_=[0,caml_string_of_jsbytes("src/uniform_array.ml"),71,18],
     _bG_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Uchar.to_char_exn got a non latin-1 character: U+"),
        [4,8,[0,2,4],0,0]],
       caml_string_of_jsbytes
        ("Uchar.to_char_exn got a non latin-1 character: U+%04X")],
     _bF_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Uchar.of_int_exn got a invalid Unicode scalar value: "),
        [4,8,[0,2,4],0,0]],
       caml_string_of_jsbytes
        ("Uchar.of_int_exn got a invalid Unicode scalar value: %04X")],
     _bE_=
      [0,
       [11,caml_string_of_jsbytes("Uchar.pred_exn: "),[2,0,0]],
       caml_string_of_jsbytes("Uchar.pred_exn: %s")],
     _bD_=
      [0,
       [11,caml_string_of_jsbytes("Uchar.succ_exn: "),[2,0,0]],
       caml_string_of_jsbytes("Uchar.succ_exn: %s")],
     _bB_=
      [0,
       [11,caml_string_of_jsbytes("U+"),[4,8,0,0,0]],
       caml_string_of_jsbytes("U+%X")],
     _bA_=
      [0,
       [11,caml_string_of_jsbytes("U+"),[4,8,[0,2,4],0,0]],
       caml_string_of_jsbytes("U+%04X")],
     _bL_=[0,caml_string_of_jsbytes("src/float0.ml"),161,4],
     _bM_=[0,caml_string_of_jsbytes("src/float0.ml"),165,4],
     _bJ_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535),
     _bK_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _bI_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _bH_=[0,runtime.caml_int64_create_lo_mi_hi(0,0,0)],
     _b2_=
      [0,
       [11,
        caml_string_of_jsbytes("Char.get_digit_exn "),
        [1,[11,caml_string_of_jsbytes(": not a digit"),0]]],
       caml_string_of_jsbytes("Char.get_digit_exn %C: not a digit")],
     _bN_=
      [0,
       [11,caml_string_of_jsbytes("Char.of_string: "),[3,0,0]],
       caml_string_of_jsbytes("Char.of_string: %S")],
     _ce_=[0,caml_string_of_jsbytes("src/string.ml"),1326,2],
     _cd_=[0,caml_string_of_jsbytes("src/string.ml"),1312,19],
     _cc_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(": out of bounds"),0]],
       caml_string_of_jsbytes("%s: out of bounds")],
     _cb_=
      [0,
       [11,
        caml_string_of_jsbytes("String.chop_suffix_exn "),
        [3,0,[12,32,[3,0,0]]]],
       caml_string_of_jsbytes("String.chop_suffix_exn %S %S")],
     _ca_=
      [0,
       [11,
        caml_string_of_jsbytes("String.chop_prefix_exn "),
        [3,0,[12,32,[3,0,0]]]],
       caml_string_of_jsbytes("String.chop_prefix_exn %S %S")],
     _b$_=[0,caml_string_of_jsbytes("src/string.ml"),655,17],
     _b8_=
      [0,
       [11,caml_string_of_jsbytes("String.init "),[4,0,0,0,0]],
       caml_string_of_jsbytes("String.init %d")],
     _b3_=
      [0,
       [11,
        caml_string_of_jsbytes("String.is_substring_at: invalid index "),
        [4,
         0,
         0,
         0,
         [11,caml_string_of_jsbytes(" for string of length "),[4,0,0,0,0]]]],
       caml_string_of_jsbytes
        ("String.is_substring_at: invalid index %d for string of length %d")],
     _b4_=[0,caml_string_of_jsbytes("String.index_exn: not found")],
     _b5_=[0,caml_string_of_jsbytes("String.index_from_exn: not found")],
     _b6_=[0,caml_string_of_jsbytes("String.rindex_exn: not found")],
     _b7_=[0,caml_string_of_jsbytes("String.rindex_from_exn: not found")],
     _b9_=[0,caml_string_of_jsbytes("String.lsplit2_exn: not found")],
     _b__=[0,caml_string_of_jsbytes("String.rsplit2_exn: not found")],
     _ci_=[0,caml_string_of_jsbytes("src/bytes.ml"),124,2],
     _ch_=
      [0,
       [11,caml_string_of_jsbytes("Bytes.init "),[4,0,0,0,0]],
       caml_string_of_jsbytes("Bytes.init %d")],
     _cf_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cy_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".of_string: invalid input "),[3,0,0]]],
       caml_string_of_jsbytes("%s.of_string: invalid input %S")],
     _cj_=
      [0,
       [11,
        caml_string_of_jsbytes("conversion from "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" to "),
          [2,
           0,
           [11,
            caml_string_of_jsbytes(" failed: "),
            [2,0,[11,caml_string_of_jsbytes(" is out of range"),0]]]]]]],
       caml_string_of_jsbytes
        ("conversion from %s to %s failed: %s is out of range")],
     _ii_=[0,caml_string_of_jsbytes("src/int_conversions.ml"),18,9],
     _ih_=[0,caml_string_of_jsbytes("src/int_conversions.ml"),78,9],
     _ig_=[0,caml_string_of_jsbytes("src/int_conversions.ml"),101,9],
     _if_=[0,caml_string_of_jsbytes("src/int_conversions.ml"),127,9],
     _ie_=[0,caml_string_of_jsbytes("src/int_conversions.ml"),153,9],
     _id_=[0,caml_string_of_jsbytes("src/int_conversions.ml"),181,9],
     _cB_=
      [0,
       2147483647,
       2147483647,
       46340,
       1290,
       215,
       73,
       35,
       21,
       14,
       10,
       8,
       7,
       5,
       5,
       4,
       4,
       3,
       3,
       3,
       3,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1],
     _ib_=[0,caml_string_of_jsbytes("src/pow_overflow_bounds.ml"),218,9],
     _cC_=runtime.caml_int64_create_lo_mi_hi(16777215,127,0),
     _cD_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,16383),
     _cE_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,16383),
     _ic_=
      [0,
       1073741823,
       1073741823,
       32767,
       1023,
       181,
       63,
       31,
       19,
       13,
       10,
       7,
       6,
       5,
       4,
       4,
       3,
       3,
       3,
       3,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1],
     _cF_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(16777215,16777215,16383),
       runtime.caml_int64_create_lo_mi_hi(16777215,16777215,16383),
       runtime.caml_int64_create_lo_mi_hi(16777215,127,0),
       runtime.caml_int64_create_lo_mi_hi(1664510,0,0),
       runtime.caml_int64_create_lo_mi_hi(46340,0,0),
       runtime.caml_int64_create_lo_mi_hi(5404,0,0),
       runtime.caml_int64_create_lo_mi_hi(1290,0,0),
       runtime.caml_int64_create_lo_mi_hi(463,0,0),
       runtime.caml_int64_create_lo_mi_hi(215,0,0),
       runtime.caml_int64_create_lo_mi_hi(118,0,0),
       runtime.caml_int64_create_lo_mi_hi(73,0,0),
       runtime.caml_int64_create_lo_mi_hi(49,0,0),
       runtime.caml_int64_create_lo_mi_hi(35,0,0),
       runtime.caml_int64_create_lo_mi_hi(27,0,0),
       runtime.caml_int64_create_lo_mi_hi(21,0,0),
       runtime.caml_int64_create_lo_mi_hi(17,0,0),
       runtime.caml_int64_create_lo_mi_hi(14,0,0),
       runtime.caml_int64_create_lo_mi_hi(12,0,0),
       runtime.caml_int64_create_lo_mi_hi(10,0,0),
       runtime.caml_int64_create_lo_mi_hi(9,0,0),
       runtime.caml_int64_create_lo_mi_hi(8,0,0),
       runtime.caml_int64_create_lo_mi_hi(7,0,0),
       runtime.caml_int64_create_lo_mi_hi(7,0,0),
       runtime.caml_int64_create_lo_mi_hi(6,0,0),
       runtime.caml_int64_create_lo_mi_hi(5,0,0),
       runtime.caml_int64_create_lo_mi_hi(5,0,0),
       runtime.caml_int64_create_lo_mi_hi(5,0,0),
       runtime.caml_int64_create_lo_mi_hi(4,0,0),
       runtime.caml_int64_create_lo_mi_hi(4,0,0),
       runtime.caml_int64_create_lo_mi_hi(4,0,0),
       runtime.caml_int64_create_lo_mi_hi(4,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(1,0,0),
       runtime.caml_int64_create_lo_mi_hi(1,0,0)],
     _cG_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32767),
       runtime.caml_int64_create_lo_mi_hi(16777215,16777215,32767),
       runtime.caml_int64_create_lo_mi_hi(324403,181,0),
       runtime.caml_int64_create_lo_mi_hi(2097151,0,0),
       runtime.caml_int64_create_lo_mi_hi(55108,0,0),
       runtime.caml_int64_create_lo_mi_hi(6208,0,0),
       runtime.caml_int64_create_lo_mi_hi(1448,0,0),
       runtime.caml_int64_create_lo_mi_hi(511,0,0),
       runtime.caml_int64_create_lo_mi_hi(234,0,0),
       runtime.caml_int64_create_lo_mi_hi(127,0,0),
       runtime.caml_int64_create_lo_mi_hi(78,0,0),
       runtime.caml_int64_create_lo_mi_hi(52,0,0),
       runtime.caml_int64_create_lo_mi_hi(38,0,0),
       runtime.caml_int64_create_lo_mi_hi(28,0,0),
       runtime.caml_int64_create_lo_mi_hi(22,0,0),
       runtime.caml_int64_create_lo_mi_hi(18,0,0),
       runtime.caml_int64_create_lo_mi_hi(15,0,0),
       runtime.caml_int64_create_lo_mi_hi(13,0,0),
       runtime.caml_int64_create_lo_mi_hi(11,0,0),
       runtime.caml_int64_create_lo_mi_hi(9,0,0),
       runtime.caml_int64_create_lo_mi_hi(8,0,0),
       runtime.caml_int64_create_lo_mi_hi(7,0,0),
       runtime.caml_int64_create_lo_mi_hi(7,0,0),
       runtime.caml_int64_create_lo_mi_hi(6,0,0),
       runtime.caml_int64_create_lo_mi_hi(6,0,0),
       runtime.caml_int64_create_lo_mi_hi(5,0,0),
       runtime.caml_int64_create_lo_mi_hi(5,0,0),
       runtime.caml_int64_create_lo_mi_hi(5,0,0),
       runtime.caml_int64_create_lo_mi_hi(4,0,0),
       runtime.caml_int64_create_lo_mi_hi(4,0,0),
       runtime.caml_int64_create_lo_mi_hi(4,0,0),
       runtime.caml_int64_create_lo_mi_hi(4,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(3,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(2,0,0),
       runtime.caml_int64_create_lo_mi_hi(1,0,0)],
     _cH_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(1,0,32768),
       runtime.caml_int64_create_lo_mi_hi(1,0,32768),
       runtime.caml_int64_create_lo_mi_hi(16452813,16777034,65535),
       runtime.caml_int64_create_lo_mi_hi(14680065,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16722108,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16771008,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16775768,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16776705,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16776982,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777089,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777138,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777164,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777178,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777188,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777194,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777198,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777201,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777203,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777205,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777207,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777208,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777209,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777209,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777210,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777210,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777211,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777211,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777211,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777212,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777212,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777212,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777212,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777213,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777213,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777213,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777213,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777213,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777213,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777213,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777213,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777214,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535)],
     _cU_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" /"),
         [12,
          37,
          [12,
           32,
           [2,
            0,
            [11,
             caml_string_of_jsbytes
              (" in core_int.ml: divisor should be positive"),
             0]]]]]],
       caml_string_of_jsbytes
        ("%s /%% %s in core_int.ml: divisor should be positive")],
     _cT_=
      [0,
       [2,
        0,
        [12,
         32,
         [12,
          37,
          [12,
           32,
           [2,
            0,
            [11,
             caml_string_of_jsbytes
              (" in core_int.ml: modulus should be positive"),
             0]]]]]],
       caml_string_of_jsbytes
        ("%s %% %s in core_int.ml: modulus should be positive")],
     _cQ_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _cR_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _cS_=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     _cK_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _cL_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _cP_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535),
     _cM_=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     _cN_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _cO_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _cJ_=
      [0,
       [11,caml_string_of_jsbytes("integer overflow in pow"),0],
       caml_string_of_jsbytes("integer overflow in pow")],
     _cI_=
      [0,
       [11,caml_string_of_jsbytes("exponent can not be negative"),0],
       caml_string_of_jsbytes("exponent can not be negative")],
     _ia_=[0,caml_string_of_jsbytes("src/popcount.ml"),45,9],
     _c6_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" /"),
         [12,
          37,
          [12,
           32,
           [2,
            0,
            [11,
             caml_string_of_jsbytes
              (" in core_int.ml: divisor should be positive"),
             0]]]]]],
       caml_string_of_jsbytes
        ("%s /%% %s in core_int.ml: divisor should be positive")],
     _c5_=
      [0,
       [2,
        0,
        [12,
         32,
         [12,
          37,
          [12,
           32,
           [2,
            0,
            [11,
             caml_string_of_jsbytes
              (" in core_int.ml: modulus should be positive"),
             0]]]]]],
       caml_string_of_jsbytes
        ("%s %% %s in core_int.ml: modulus should be positive")],
     _c4_=
      [0,
       [11,caml_string_of_jsbytes("argument must be strictly positive"),0],
       caml_string_of_jsbytes("argument must be strictly positive")],
     _c3_=[0,caml_string_of_jsbytes("src/int.ml"),95,2],
     _c2_=[0,[4,6,0,0,0],caml_string_of_jsbytes("%x")],
     _c1_=[0,[4,6,0,0,0],caml_string_of_jsbytes("%x")],
     _cZ_=
      [0,
       [11,
        caml_string_of_jsbytes("Int.of_float: argument ("),
        [8,
         [0,0,0],
         0,
         0,
         [11,caml_string_of_jsbytes(") is out of range or NaN"),0]]],
       caml_string_of_jsbytes
        ("Int.of_float: argument (%f) is out of range or NaN")],
     _cY_=
      [0,
       [11,caml_string_of_jsbytes("Int.of_string: "),[3,0,0]],
       caml_string_of_jsbytes("Int.of_string: %S")],
     _c__=[0,caml_string_of_jsbytes("witness")],
     _c$_=[0,caml_string_of_jsbytes("name")],
     _c9_=[0,caml_string_of_jsbytes("type_witness")],
     _c8_=[0,0,0],
     _c7_=[0,caml_string_of_jsbytes("T")],
     _dr_=[0,caml_string_of_jsbytes("src/stack.ml"),109,14],
     _dd_=[0,caml_string_of_jsbytes("src/stack.ml"),41,4],
     _dc_=[0,caml_string_of_jsbytes("src/stack.ml"),48,6],
     _da_=[0,caml_string_of_jsbytes("elts")],
     _db_=[0,caml_string_of_jsbytes("length")],
     _ds_=[0,caml_string_of_jsbytes("Neg")],
     _dt_=[0,caml_string_of_jsbytes("Zero")],
     _du_=[0,caml_string_of_jsbytes("Pos")],
     _dv_=[0,caml_string_of_jsbytes("Nan")],
     _dE_=[0,caml_string_of_jsbytes("Unfinished")],
     _dF_=[0,caml_string_of_jsbytes("Finished")],
     _dC_=[0,caml_string_of_jsbytes("Stop")],
     _dD_=[0,caml_string_of_jsbytes("Continue")],
     _dA_=[0,caml_string_of_jsbytes("Unequal")],
     _dB_=[0,caml_string_of_jsbytes("Right")],
     _dz_=[0,caml_string_of_jsbytes("Left")],
     _dx_=[0,caml_string_of_jsbytes("Duplicate")],
     _dy_=[0,caml_string_of_jsbytes("Ok")],
     _dY_=[0,caml_string_of_jsbytes("_")],
     _dX_=[0,0],
     _dW_=[0,caml_string_of_jsbytes("src/set.ml"),1016,8],
     _dU_=[0,0,0],
     _dT_=[0,0,0,0],
     _dR_=
      [0,
       caml_string_of_jsbytes("src/set.ml.Tree0.Set_max_elt_exn_of_empty_set")],
     _dS_=[0,caml_string_of_jsbytes("src/set.ml"),308,15],
     _dO_=
      [0,
       caml_string_of_jsbytes("src/set.ml.Tree0.Set_min_elt_exn_of_empty_set")],
     _dP_=[0,caml_string_of_jsbytes("src/set.ml"),298,15],
     _dG_=[0,caml_string_of_jsbytes("src/set.ml"),201,17],
     _dH_=[0,caml_string_of_jsbytes("src/set.ml"),202,18],
     _dI_=[0,caml_string_of_jsbytes("src/set.ml"),208,21],
     _dJ_=[0,caml_string_of_jsbytes("src/set.ml"),210,12],
     _dK_=[0,caml_string_of_jsbytes("src/set.ml"),216,17],
     _dL_=[0,caml_string_of_jsbytes("src/set.ml"),223,21],
     _dM_=[0,caml_string_of_jsbytes("src/set.ml"),225,12],
     _dV_=[0,caml_string_of_jsbytes("Set.choose_exn: empty set")],
     _ec_=[0,caml_string_of_jsbytes("src/queue.ml"),444,2],
     _eb_=[0,caml_string_of_jsbytes("src/queue.ml"),193,2],
     _ea_=[0,caml_string_of_jsbytes("src/queue.ml"),152,2],
     _d$_=[0,caml_string_of_jsbytes("src/queue.ml"),153,2],
     _d__=[0,caml_string_of_jsbytes("src/queue.ml"),155,2],
     _d9_=[0,caml_string_of_jsbytes("src/queue.ml"),156,2],
     _d8_=[0,caml_string_of_jsbytes("src/queue.ml"),157,2],
     _d7_=[0,caml_string_of_jsbytes("src/queue.ml"),158,2],
     _d6_=[0,caml_string_of_jsbytes("src/queue.ml"),159,2],
     _d5_=[0,caml_string_of_jsbytes("src/queue.ml"),165,9],
     _d4_=[0,caml_string_of_jsbytes("_")],
     _dZ_=[0,caml_string_of_jsbytes("elts")],
     _d0_=[0,caml_string_of_jsbytes("length")],
     _d1_=[0,caml_string_of_jsbytes("mask")],
     _d2_=[0,caml_string_of_jsbytes("front")],
     _d3_=[0,caml_string_of_jsbytes("num_mutations")],
     _ej_=[0,caml_string_of_jsbytes("src/nativeint.ml"),180,2],
     _ei_=
      [0,
       [11,caml_string_of_jsbytes("argument must be strictly positive"),0],
       caml_string_of_jsbytes("argument must be strictly positive")],
     _eh_=
      [0,
       [11,
        caml_string_of_jsbytes("Nativeint.of_float: argument ("),
        [8,
         [0,0,0],
         0,
         0,
         [11,caml_string_of_jsbytes(") is out of range or NaN"),0]]],
       caml_string_of_jsbytes
        ("Nativeint.of_float: argument (%f) is out of range or NaN")],
     _ef_=[0,[6,6,0,0,0],caml_string_of_jsbytes("%nx")],
     _ee_=[0,[6,6,0,0,0],caml_string_of_jsbytes("%nx")],
     _eG_=[0,caml_string_of_jsbytes("_")],
     _eq_=[0,0,0,0],
     _eE_=[0,0],
     _eF_=[0,caml_string_of_jsbytes("src/map.ml"),1568,6],
     _eD_=[0,[0,0,0],[0,0,0]],
     _eC_=[0,0,0],
     _eB_=[0,0,0],
     _eA_=[0,0,0],
     _ez_=[0,0,0],
     _ey_=[0,0,0],
     _ew_=
      [0,
       caml_string_of_jsbytes("src/map.ml.Tree0.Map_max_elt_exn_of_empty_map")],
     _ex_=[0,caml_string_of_jsbytes("src/map.ml"),560,15],
     _et_=
      [0,
       caml_string_of_jsbytes("src/map.ml.Tree0.Map_min_elt_exn_of_empty_map")],
     _eu_=[0,caml_string_of_jsbytes("src/map.ml"),550,15],
     _er_=[0,caml_string_of_jsbytes("Map.find_exn: not found")],
     _ep_=[1,0],
     _en_=[0,caml_string_of_jsbytes("src/map.ml"),187,18],
     _eo_=[0,caml_string_of_jsbytes("src/map.ml"),202,18],
     _el_=[0,caml_string_of_jsbytes("src/map.ml.Duplicate")],
     _em_=[0,caml_string_of_jsbytes("src/map.ml"),58,13],
     _eM_=[0,[7,6,0,0,0],caml_string_of_jsbytes("%Lx")],
     _eL_=[0,[7,6,0,0,0],caml_string_of_jsbytes("%Lx")],
     _eK_=
      [0,
       [11,caml_string_of_jsbytes("argument must be strictly positive"),0],
       caml_string_of_jsbytes("argument must be strictly positive")],
     _eJ_=[0,caml_string_of_jsbytes("src/int64.ml"),77,2],
     _eI_=
      [0,
       [11,
        caml_string_of_jsbytes("Int64.of_float: argument ("),
        [8,
         [0,0,0],
         0,
         0,
         [11,caml_string_of_jsbytes(") is out of range or NaN"),0]]],
       caml_string_of_jsbytes
        ("Int64.of_float: argument (%f) is out of range or NaN")],
     _e0_=[0,[7,6,0,0,0],caml_string_of_jsbytes("%Lx")],
     _eZ_=[0,caml_string_of_jsbytes("src/int63_emul.ml"),287,2],
     _eX_=
      [0,
       [11,
        caml_string_of_jsbytes("Int63.of_float: argument ("),
        [8,
         [0,0,0],
         0,
         0,
         [11,caml_string_of_jsbytes(") is out of range or NaN"),0]]],
       caml_string_of_jsbytes
        ("Int63.of_float: argument (%f) is out of range or NaN")],
     _eW_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _eU_=[0,1,4003188],
     _eV_=[0,1,3901488],
     _eT_=
      [0,
       [11,caml_string_of_jsbytes("Int63.of_string: invalid input "),[3,0,0]],
       caml_string_of_jsbytes("Int63.of_string: invalid input %S")],
     _eQ_=runtime.caml_int64_create_lo_mi_hi(2,0,0),
     _eP_=runtime.caml_int64_create_lo_mi_hi(2,0,0),
     _eO_=runtime.caml_int64_create_lo_mi_hi(2,0,0),
     _eN_=runtime.caml_int64_create_lo_mi_hi(2,0,0),
     _eR_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _e3_=[0,caml_string_of_jsbytes("src/bool.ml"),47,2],
     _e2_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Bool.of_string: expected true or false but got "),
        [2,0,0]],
       caml_string_of_jsbytes
        ("Bool.of_string: expected true or false but got %s")],
     _e9_=[0,[5,6,0,0,0],caml_string_of_jsbytes("%lx")],
     _e8_=[0,[5,6,0,0,0],caml_string_of_jsbytes("%lx")],
     _e7_=
      [0,
       [11,caml_string_of_jsbytes("argument must be strictly positive"),0],
       caml_string_of_jsbytes("argument must be strictly positive")],
     _e6_=[0,caml_string_of_jsbytes("src/int32.ml"),90,4],
     _e5_=
      [0,
       [11,
        caml_string_of_jsbytes("Int32.of_float: argument ("),
        [8,
         [0,0,0],
         0,
         0,
         [11,caml_string_of_jsbytes(") is out of range or NaN"),0]]],
       caml_string_of_jsbytes
        ("Int32.of_float: argument (%f) is out of range or NaN")],
     _h$_=[0,caml_string_of_jsbytes("src/int63.ml"),134,9],
     _fc_=[0,caml_string_of_jsbytes("_")],
     _fo_=[0,caml_string_of_jsbytes("src/avltree.ml"),399,15],
     _fp_=[0,caml_string_of_jsbytes("src/avltree.ml"),418,18],
     _fn_=[0,caml_string_of_jsbytes("src/avltree.ml"),205,9],
     _fm_=[0,caml_string_of_jsbytes("src/avltree.ml"),193,9],
     _fj_=[0,caml_string_of_jsbytes("src/avltree.ml"),129,30],
     _fi_=[0,caml_string_of_jsbytes("src/avltree.ml"),110,26],
     _fl_=[0,caml_string_of_jsbytes("src/avltree.ml"),163,30],
     _fk_=[0,caml_string_of_jsbytes("src/avltree.ml"),145,26],
     _fh_=[0,caml_string_of_jsbytes("src/avltree.ml"),87,22],
     _fg_=[0,caml_string_of_jsbytes("src/avltree.ml"),66,6],
     _ff_=[0,caml_string_of_jsbytes("src/avltree.ml"),67,6],
     _fe_=[0,caml_string_of_jsbytes("src/avltree.ml"),56,6],
     _fd_=[0,caml_string_of_jsbytes("src/avltree.ml"),50,6],
     _fs_=[0,caml_string_of_jsbytes("src/hashtbl.ml"),545,4],
     _fr_=[0,caml_string_of_jsbytes("Hashtbl.find_exn: not found")],
     _fq_=[0,caml_string_of_jsbytes("src/hashtbl.ml"),290,2],
     _fx_=[0,0],
     _fw_=[0,0],
     _fv_=[0,0],
     _gb_=[0,caml_string_of_jsbytes("value is infinite")],
     _ga_=[0,caml_string_of_jsbytes("value is NaN")],
     _f$_=[0,[8,[0,0,4],0,[0,8],0],caml_string_of_jsbytes("%.8G")],
     _f9_=
      [0,
       [11,
        caml_string_of_jsbytes("exponent "),
        [4,
         0,
         0,
         0,
         [11,caml_string_of_jsbytes(" out of range [0, "),[4,0,0,0,[12,93,0]]]]],
       caml_string_of_jsbytes("exponent %d out of range [0, %d]")],
     _f__=
      [0,
       [11,
        caml_string_of_jsbytes("mantissa "),
        [2,
         0,
         [11,caml_string_of_jsbytes(" out of range [0, "),[2,0,[12,93,0]]]]],
       caml_string_of_jsbytes("mantissa %s out of range [0, %s]")],
     _f8_=[0,caml_string_of_jsbytes("src/float.ml"),834,2],
     _f7_=[0,[8,[0,0,3],0,1,0],caml_string_of_jsbytes("%.*g")],
     _f6_=[0,caml_string_of_jsbytes("p")],
     _f3_=[0,caml_string_of_jsbytes("src/float.ml"),672,8],
     _f2_=[0,caml_string_of_jsbytes("src/float.ml"),675,8],
     _f1_=[0,caml_string_of_jsbytes("src/float.ml"),682,8],
     _f0_=[0,caml_string_of_jsbytes("src/float.ml"),683,8],
     _fY_=
      [0,[2,0,[4,0,0,0,[2,0,[12,32,0]]]],caml_string_of_jsbytes("%s%d%s ")],
     _fZ_=
      [0,[2,0,[4,0,0,0,[2,0,[4,0,0,0,0]]]],caml_string_of_jsbytes("%s%d%s%d")],
     _fX_=[0,caml_string_of_jsbytes("src/float.ml"),659,8],
     _f4_=[0,[2,0,[8,[0,0,1],0,[0,1],0]],caml_string_of_jsbytes("%s%.1e")],
     _f5_=[0,[2,0,[8,[0,0,1],0,[0,1],0]],caml_string_of_jsbytes("%s%.1e")],
     _fV_=
      [0,
       [11,
        caml_string_of_jsbytes("to_string_hum: invalid argument ~decimals="),
        [4,0,0,0,0]],
       caml_string_of_jsbytes("to_string_hum: invalid argument ~decimals=%d")],
     _fW_=[0,[8,[0,0,0],0,1,0],caml_string_of_jsbytes("%.*f")],
     _fQ_=[0,caml_string_of_jsbytes("Infinite")],
     _fR_=[0,caml_string_of_jsbytes("Nan")],
     _fS_=[0,caml_string_of_jsbytes("Normal")],
     _fT_=[0,caml_string_of_jsbytes("Subnormal")],
     _fU_=[0,caml_string_of_jsbytes("Zero")],
     _fO_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Float.int63_round_nearest_portable_alloc_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too large"),0]]],
       caml_string_of_jsbytes
        ("Float.int63_round_nearest_portable_alloc_exn: argument (%f) is too large")],
     _fP_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Float.int63_round_nearest_portable_alloc_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too small or NaN"),0]]],
       caml_string_of_jsbytes
        ("Float.int63_round_nearest_portable_alloc_exn: argument (%f) is too small or NaN")],
     _fM_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.int63_round_down_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too large"),0]]],
       caml_string_of_jsbytes
        ("Float.int63_round_down_exn: argument (%f) is too large")],
     _fN_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.int63_round_down_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too small or NaN"),0]]],
       caml_string_of_jsbytes
        ("Float.int63_round_down_exn: argument (%f) is too small or NaN")],
     _fK_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.int63_round_up_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too large"),0]]],
       caml_string_of_jsbytes
        ("Float.int63_round_up_exn: argument (%f) is too large")],
     _fL_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.int63_round_up_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too small or NaN"),0]]],
       caml_string_of_jsbytes
        ("Float.int63_round_up_exn: argument (%f) is too small or NaN")],
     _fI_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.iround_nearest_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too large"),0]]],
       caml_string_of_jsbytes
        ("Float.iround_nearest_exn: argument (%f) is too large")],
     _fJ_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.iround_nearest_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too small or NaN"),0]]],
       caml_string_of_jsbytes
        ("Float.iround_nearest_exn: argument (%f) is too small or NaN")],
     _fG_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.iround_nearest_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too large"),0]]],
       caml_string_of_jsbytes
        ("Float.iround_nearest_exn: argument (%f) is too large")],
     _fH_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.iround_nearest_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too small"),0]]],
       caml_string_of_jsbytes
        ("Float.iround_nearest_exn: argument (%f) is too small")],
     _fF_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.iround_towards_zero_exn: argument ("),
        [8,
         [0,0,0],
         0,
         0,
         [11,caml_string_of_jsbytes(") is out of range or NaN"),0]]],
       caml_string_of_jsbytes
        ("Float.iround_towards_zero_exn: argument (%f) is out of range or NaN")],
     _fD_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.iround_down_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too large"),0]]],
       caml_string_of_jsbytes
        ("Float.iround_down_exn: argument (%f) is too large")],
     _fE_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.iround_down_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too small or NaN"),0]]],
       caml_string_of_jsbytes
        ("Float.iround_down_exn: argument (%f) is too small or NaN")],
     _fB_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.iround_up_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too large"),0]]],
       caml_string_of_jsbytes
        ("Float.iround_up_exn: argument (%f) is too large")],
     _fC_=
      [0,
       [11,
        caml_string_of_jsbytes("Float.iround_up_exn: argument ("),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") is too small or NaN"),0]]],
       caml_string_of_jsbytes
        ("Float.iround_up_exn: argument (%f) is too small or NaN")],
     _fA_=
      [0,
       [11,caml_string_of_jsbytes("Float.of_string "),[2,0,0]],
       caml_string_of_jsbytes("Float.of_string %s")];
    function descending(x,y){return caml_compare(y,x)}
    var
     max=Caml[16],
     min=Caml[15],
     ascending=caml_compare,
     include=[0,ascending,descending,min,max];
    caml_register_global(936,include,"Base__Poly0");
    var
     Exit=include$0[3],
     max_int=include$0[7],
     min_int=include$0[8],
     infinity=include$0[10],
     neg_infinity=include$0[11],
     nan=include$0[12],
     max_float=include$0[13],
     min_float=include$0[14],
     epsilon_float=include$0[15],
     char_of_int=include$0[17],
     string_of_bool=include$0[18],
     bool_of_string_opt=include$0[19],
     bool_of_string=include$0[20],
     string_of_int=include$0[21],
     int_of_string_opt=include$0[22],
     string_of_float=include$0[23],
     float_of_string_opt=include$0[24],
     stdin=include$0[26],
     stdout=include$0[27],
     stderr=include$0[28],
     print_char=include$0[29],
     print_string=include$0[30],
     print_bytes=include$0[31],
     print_int=include$0[32],
     print_float=include$0[33],
     print_endline=include$0[34],
     print_newline=include$0[35],
     prerr_char=include$0[36],
     prerr_string=include$0[37],
     prerr_bytes=include$0[38],
     prerr_int=include$0[39],
     prerr_float=include$0[40],
     prerr_endline=include$0[41],
     prerr_newline=include$0[42],
     read_line=include$0[43],
     read_int_opt=include$0[44],
     read_int=include$0[45],
     read_float_opt=include$0[46],
     read_float=include$0[47],
     open_out=include$0[48],
     open_out_bin=include$0[49],
     open_out_gen=include$0[50],
     flush=include$0[51],
     flush_all=include$0[52],
     output_char=include$0[53],
     output_string=include$0[54],
     output_bytes=include$0[55],
     output=include$0[56],
     output_substring=include$0[57],
     output_byte=include$0[58],
     output_binary_int=include$0[59],
     output_value=include$0[60],
     seek_out=include$0[61],
     pos_out=include$0[62],
     out_channel_length=include$0[63],
     close_out=include$0[64],
     close_out_noerr=include$0[65],
     set_binary_mode_out=include$0[66],
     open_in=include$0[67],
     open_in_bin=include$0[68],
     open_in_gen=include$0[69],
     input_char=include$0[70],
     input_line=include$0[71],
     input=include$0[72],
     really_input=include$0[73],
     really_input_string=include$0[74],
     input_byte=include$0[75],
     input_binary_int=include$0[76],
     input_value=include$0[77],
     seek_in=include$0[78],
     pos_in=include$0[79],
     in_channel_length=include$0[80],
     close_in=include$0[81],
     close_in_noerr=include$0[82],
     set_binary_mode_in=include$0[83],
     string_of_format=include$0[84],
     symbol=include$0[85],
     exit=include$0[86],
     at_exit=include$0[87],
     valid_float_lexem=include$0[88],
     unsafe_really_input=include$0[89],
     do_at_exit=include$0[90],
     Not_found=include$0[91],
     invalid_arg=Stdlib_pervasives[1],
     failwith=Stdlib_pervasives[2],
     Exit$0=Stdlib_pervasives[3],
     min$0=Stdlib_pervasives[4],
     max$0=Stdlib_pervasives[5],
     abs=Stdlib_pervasives[6],
     max_int$0=Stdlib_pervasives[7],
     min_int$0=Stdlib_pervasives[8],
     lnot=Stdlib_pervasives[9],
     infinity$0=Stdlib_pervasives[10],
     neg_infinity$0=Stdlib_pervasives[11],
     nan$0=Stdlib_pervasives[12],
     max_float$0=Stdlib_pervasives[13],
     min_float$0=Stdlib_pervasives[14],
     epsilon_float$0=Stdlib_pervasives[15],
     symbol$0=Stdlib_pervasives[16],
     char_of_int$0=Stdlib_pervasives[17],
     string_of_bool$0=Stdlib_pervasives[18],
     bool_of_string$0=Stdlib_pervasives[19],
     bool_of_string_opt$0=Stdlib_pervasives[20],
     string_of_int$0=Stdlib_pervasives[21],
     int_of_string_opt$0=Stdlib_pervasives[22],
     string_of_float$0=Stdlib_pervasives[23],
     float_of_string_opt$0=Stdlib_pervasives[24],
     symbol$1=Stdlib_pervasives[25],
     stdin$0=Stdlib_pervasives[26],
     stdout$0=Stdlib_pervasives[27],
     stderr$0=Stdlib_pervasives[28],
     print_char$0=Stdlib_pervasives[29],
     print_string$0=Stdlib_pervasives[30],
     print_bytes$0=Stdlib_pervasives[31],
     print_int$0=Stdlib_pervasives[32],
     print_float$0=Stdlib_pervasives[33],
     print_endline$0=Stdlib_pervasives[34],
     print_newline$0=Stdlib_pervasives[35],
     prerr_char$0=Stdlib_pervasives[36],
     prerr_string$0=Stdlib_pervasives[37],
     prerr_bytes$0=Stdlib_pervasives[38],
     prerr_int$0=Stdlib_pervasives[39],
     prerr_float$0=Stdlib_pervasives[40],
     prerr_endline$0=Stdlib_pervasives[41],
     prerr_newline$0=Stdlib_pervasives[42],
     read_line$0=Stdlib_pervasives[43],
     read_int$0=Stdlib_pervasives[44],
     read_int_opt$0=Stdlib_pervasives[45],
     read_float$0=Stdlib_pervasives[46],
     read_float_opt$0=Stdlib_pervasives[47],
     open_out$0=Stdlib_pervasives[48],
     open_out_bin$0=Stdlib_pervasives[49],
     open_out_gen$0=Stdlib_pervasives[50],
     flush$0=Stdlib_pervasives[51],
     flush_all$0=Stdlib_pervasives[52],
     output_char$0=Stdlib_pervasives[53],
     output_string$0=Stdlib_pervasives[54],
     output_bytes$0=Stdlib_pervasives[55],
     output$0=Stdlib_pervasives[56],
     output_substring$0=Stdlib_pervasives[57],
     output_byte$0=Stdlib_pervasives[58],
     output_binary_int$0=Stdlib_pervasives[59],
     output_value$0=Stdlib_pervasives[60],
     seek_out$0=Stdlib_pervasives[61],
     pos_out$0=Stdlib_pervasives[62],
     out_channel_length$0=Stdlib_pervasives[63],
     close_out$0=Stdlib_pervasives[64],
     close_out_noerr$0=Stdlib_pervasives[65],
     set_binary_mode_out$0=Stdlib_pervasives[66],
     open_in$0=Stdlib_pervasives[67],
     open_in_bin$0=Stdlib_pervasives[68],
     open_in_gen$0=Stdlib_pervasives[69],
     input_char$0=Stdlib_pervasives[70],
     input_line$0=Stdlib_pervasives[71],
     input$0=Stdlib_pervasives[72],
     really_input$0=Stdlib_pervasives[73],
     really_input_string$0=Stdlib_pervasives[74],
     input_byte$0=Stdlib_pervasives[75],
     input_binary_int$0=Stdlib_pervasives[76],
     input_value$0=Stdlib_pervasives[77],
     seek_in$0=Stdlib_pervasives[78],
     pos_in$0=Stdlib_pervasives[79],
     in_channel_length$0=Stdlib_pervasives[80],
     close_in$0=Stdlib_pervasives[81],
     close_in_noerr$0=Stdlib_pervasives[82],
     set_binary_mode_in$0=Stdlib_pervasives[83],
     string_of_format$0=Stdlib_pervasives[84],
     symbol$2=Stdlib_pervasives[85],
     exit$0=Stdlib_pervasives[86],
     at_exit$0=Stdlib_pervasives[87],
     valid_float_lexem$0=Stdlib_pervasives[88],
     do_at_exit$0=Stdlib_pervasives[89],
     Not_found$0=Caml[103],
     Caml$0=
      [0,
       invalid_arg,
       failwith,
       Exit$0,
       min$0,
       max$0,
       abs,
       max_int$0,
       min_int$0,
       lnot,
       infinity$0,
       neg_infinity$0,
       nan$0,
       max_float$0,
       min_float$0,
       epsilon_float$0,
       symbol$0,
       char_of_int$0,
       string_of_bool$0,
       bool_of_string$0,
       bool_of_string_opt$0,
       string_of_int$0,
       int_of_string_opt$0,
       string_of_float$0,
       float_of_string_opt$0,
       symbol$1,
       stdin$0,
       stdout$0,
       stderr$0,
       print_char$0,
       print_string$0,
       print_bytes$0,
       print_int$0,
       print_float$0,
       print_endline$0,
       print_newline$0,
       prerr_char$0,
       prerr_string$0,
       prerr_bytes$0,
       prerr_int$0,
       prerr_float$0,
       prerr_endline$0,
       prerr_newline$0,
       read_line$0,
       read_int$0,
       read_int_opt$0,
       read_float$0,
       read_float_opt$0,
       open_out$0,
       open_out_bin$0,
       open_out_gen$0,
       flush$0,
       flush_all$0,
       output_char$0,
       output_string$0,
       output_bytes$0,
       output$0,
       output_substring$0,
       output_byte$0,
       output_binary_int$0,
       output_value$0,
       seek_out$0,
       pos_out$0,
       out_channel_length$0,
       close_out$0,
       close_out_noerr$0,
       set_binary_mode_out$0,
       open_in$0,
       open_in_bin$0,
       open_in_gen$0,
       input_char$0,
       input_line$0,
       input$0,
       really_input$0,
       really_input_string$0,
       input_byte$0,
       input_binary_int$0,
       input_value$0,
       seek_in$0,
       pos_in$0,
       in_channel_length$0,
       close_in$0,
       close_in_noerr$0,
       set_binary_mode_in$0,
       string_of_format$0,
       symbol$2,
       exit$0,
       at_exit$0,
       valid_float_lexem$0,
       do_at_exit$0,
       Not_found$0];
    function bool_to_int(x){return x}
    function symbol$3(_Gr_,_Gq_){return _Gr_ !== _Gq_?1:0}
    var symbol$4=caml_mul;
    function symbol$5(_Gp_,_Go_){return Math.pow(_Gp_,_Go_)}
    function scale(_Gn_,_Gm_){return _Gn_ * _Gm_}
    function symbol$6(_Gl_,_Gk_){return _Gl_ + _Gk_ | 0}
    function add(_Gj_,_Gi_){return _Gj_ + _Gi_}
    function symbol$7(_Gh_,_Gg_){return _Gh_ - _Gg_ | 0}
    function sub(_Gf_,_Ge_){return _Gf_ - _Ge_}
    var symbol$8=caml_div;
    function symbol$9(_Gd_,_Gc_){return _Gd_ / _Gc_}
    function symbol$10(x,y){return x < y?1:0}
    function symbol$11(x,y){return x <= y?1:0}
    function symbol$12(x,y){return x !== y?1:0}
    function symbol$13(x,y){return x === y?1:0}
    function symbol$14(x,y){return y < x?1:0}
    function symbol$15(x,y){return y <= x?1:0}
    function compare(x,y){return (y < x?1:0) - (x < y?1:0) | 0}
    function ascending$0(x,y){return compare(x,y)}
    function descending$0(x,y){return compare(y,x)}
    function equal(x,y){return x === y?1:0}
    function max$1(x,y){return y <= x?x:y}
    function min$1(x,y){return x <= y?x:y}
    var
     include$1=
      [0,
       symbol$10,
       symbol$11,
       symbol$12,
       symbol$13,
       symbol$14,
       symbol$15,
       compare,
       ascending$0,
       descending$0,
       equal,
       max$1,
       min$1],
     symbol$16=include$1[1],
     symbol$17=include$1[2],
     symbol$18=include$1[3],
     symbol$19=include$1[4],
     symbol$20=include$1[5],
     symbol$21=include$1[6],
     compare$0=include$1[7],
     ascending$1=include$1[8],
     descending$1=include$1[9],
     equal$0=include$1[10],
     max$2=include$1[11],
     min$2=include$1[12],
     symbol$22=caml_lessthan,
     symbol$23=caml_lessequal,
     symbol$24=caml_notequal,
     symbol$25=caml_equal,
     symbol$26=caml_greaterthan,
     symbol$27=caml_greaterequal,
     ascending$2=caml_compare;
    function descending$2(x,y){return caml_compare(y,x)}
    var compare$1=caml_int_compare,equal$1=caml_equal;
    function max$3(x,y){return caml_greaterequal(x,y)?x:y}
    function min$3(x,y){return caml_lessequal(x,y)?x:y}
    var
     Int32_replace_polymorphic_comp=
      [0,
       symbol$22,
       symbol$23,
       symbol$24,
       symbol$25,
       symbol$26,
       symbol$27,
       ascending$2,
       descending$2,
       compare$1,
       equal$1,
       max$3,
       min$3],
     symbol$28=caml_lessthan,
     symbol$29=caml_lessequal,
     symbol$30=caml_notequal,
     symbol$31=caml_equal,
     symbol$32=caml_greaterthan,
     symbol$33=caml_greaterequal,
     ascending$3=caml_compare;
    function descending$3(x,y){return caml_compare(y,x)}
    function compare$2(x,y){return caml_int64_compare(x,y)}
    var equal$2=caml_equal;
    function max$4(x,y){return caml_greaterequal(x,y)?x:y}
    function min$4(x,y){return caml_lessequal(x,y)?x:y}
    var
     include$2=
      [0,
       symbol$28,
       symbol$29,
       symbol$30,
       symbol$31,
       symbol$32,
       symbol$33,
       ascending$3,
       descending$3,
       compare$2,
       equal$2,
       max$4,
       min$4],
     symbol$34=caml_lessthan,
     symbol$35=caml_lessequal,
     symbol$36=caml_notequal,
     symbol$37=caml_equal,
     symbol$38=caml_greaterthan,
     symbol$39=caml_greaterequal,
     ascending$4=caml_compare;
    function descending$4(x,y){return caml_compare(y,x)}
    var compare$3=caml_int_compare,equal$3=caml_equal;
    function max$5(x,y){return caml_greaterequal(x,y)?x:y}
    function min$5(x,y){return caml_lessequal(x,y)?x:y}
    var
     include$3=
      [0,
       symbol$34,
       symbol$35,
       symbol$36,
       symbol$37,
       symbol$38,
       symbol$39,
       ascending$4,
       descending$4,
       compare$3,
       equal$3,
       max$5,
       min$5];
    function symbol$40(x,y){return x < y?1:0}
    function symbol$41(x,y){return x <= y?1:0}
    function symbol$42(x,y){return x !== y?1:0}
    function symbol$43(x,y){return x === y?1:0}
    function symbol$44(x,y){return y < x?1:0}
    function symbol$45(x,y){return y <= x?1:0}
    var ascending$5=caml_compare;
    function descending$5(x,y){return caml_compare(y,x)}
    var compare$4=caml_int_compare;
    function equal$4(x,y){return x === y?1:0}
    function max$6(x,y){return y <= x?x:y}
    function min$6(x,y){return x <= y?x:y}
    var
     include$4=
      [0,
       symbol$40,
       symbol$41,
       symbol$42,
       symbol$43,
       symbol$44,
       symbol$45,
       ascending$5,
       descending$5,
       compare$4,
       equal$4,
       max$6,
       min$6];
    function symbol$46(x,y){return x < y?1:0}
    function symbol$47(x,y){return x <= y?1:0}
    function symbol$48(x,y){return x !== y?1:0}
    function symbol$49(x,y){return x === y?1:0}
    function symbol$50(x,y){return y < x?1:0}
    function symbol$51(x,y){return y <= x?1:0}
    var ascending$6=caml_compare;
    function descending$6(x,y){return caml_compare(y,x)}
    var compare$5=caml_int_compare;
    function equal$5(x,y){return x === y?1:0}
    function max$7(x,y){return y <= x?x:y}
    function min$7(x,y){return x <= y?x:y}
    var
     include$5=
      [0,
       symbol$46,
       symbol$47,
       symbol$48,
       symbol$49,
       symbol$50,
       symbol$51,
       ascending$6,
       descending$6,
       compare$5,
       equal$5,
       max$7,
       min$7];
    function i(x){return caml_call1(Stdlib_uchar[10],x)}
    function symbol$52(x,y)
     {var _Ga_=i(y),_Gb_=i(x);return caml_call2(include$1[1],_Gb_,_Ga_)}
    function symbol$53(x,y)
     {var _F__=i(y),_F$_=i(x);return caml_call2(include$1[2],_F$_,_F__)}
    function symbol$54(x,y)
     {var _F8_=i(y),_F9_=i(x);return caml_call2(include$1[3],_F9_,_F8_)}
    function symbol$55(x,y)
     {var _F6_=i(y),_F7_=i(x);return caml_call2(include$1[4],_F7_,_F6_)}
    function symbol$56(x,y)
     {var _F4_=i(y),_F5_=i(x);return caml_call2(include$1[5],_F5_,_F4_)}
    function symbol$57(x,y)
     {var _F2_=i(y),_F3_=i(x);return caml_call2(include$1[6],_F3_,_F2_)}
    function ascending$7(x,y)
     {var _F0_=i(y),_F1_=i(x);return caml_call2(include$1[8],_F1_,_F0_)}
    function descending$7(x,y)
     {var _FY_=i(y),_FZ_=i(x);return caml_call2(include$1[9],_FZ_,_FY_)}
    function compare$6(x,y)
     {var _FW_=i(y),_FX_=i(x);return caml_call2(include$1[7],_FX_,_FW_)}
    function equal$6(x,y)
     {var _FU_=i(y),_FV_=i(x);return caml_call2(include$1[10],_FV_,_FU_)}
    function max$8(x,y){return symbol$57(x,y)?x:y}
    function min$8(x,y){return symbol$53(x,y)?x:y}
    var
     include$6=
      [0,
       i,
       symbol$52,
       symbol$53,
       symbol$54,
       symbol$55,
       symbol$56,
       symbol$57,
       ascending$7,
       descending$7,
       compare$6,
       equal$6,
       max$8,
       min$8];
    function symbol$58(x,y){return x < y?1:0}
    function symbol$59(x,y){return x <= y?1:0}
    function symbol$60(x,y){return x != y?1:0}
    function symbol$61(x,y){return x == y?1:0}
    function symbol$62(x,y){return y < x?1:0}
    function symbol$63(x,y){return y <= x?1:0}
    var ascending$8=caml_compare;
    function descending$8(x,y){return caml_compare(y,x)}
    var compare$7=caml_float_compare;
    function equal$7(x,y){return x == y?1:0}
    function max$9(x,y){return y <= x?x:y}
    function min$9(x,y){return x <= y?x:y}
    var
     include$7=
      [0,
       symbol$58,
       symbol$59,
       symbol$60,
       symbol$61,
       symbol$62,
       symbol$63,
       ascending$8,
       descending$8,
       compare$7,
       equal$7,
       max$9,
       min$9],
     symbol$64=runtime.caml_string_lessthan,
     symbol$65=caml_string_lessequal,
     symbol$66=caml_string_notequal,
     symbol$67=caml_string_equal,
     symbol$68=runtime.caml_string_greaterthan,
     symbol$69=caml_string_greaterequal,
     ascending$9=caml_compare;
    function descending$9(x,y){return caml_compare(y,x)}
    var compare$8=caml_string_compare,equal$8=caml_string_equal;
    function max$10(x,y){return caml_string_greaterequal(x,y)?x:y}
    function min$10(x,y){return caml_string_lessequal(x,y)?x:y}
    var
     include$8=
      [0,
       symbol$64,
       symbol$65,
       symbol$66,
       symbol$67,
       symbol$68,
       symbol$69,
       ascending$9,
       descending$9,
       compare$8,
       equal$8,
       max$10,
       min$10],
     symbol$70=runtime.caml_bytes_lessthan,
     symbol$71=caml_bytes_lessequal,
     symbol$72=runtime.caml_bytes_notequal,
     symbol$73=caml_bytes_equal,
     symbol$74=runtime.caml_bytes_greaterthan,
     symbol$75=caml_bytes_greaterequal,
     ascending$10=caml_compare;
    function descending$10(x,y){return caml_compare(y,x)}
    var compare$9=runtime.caml_bytes_compare,equal$9=caml_bytes_equal;
    function max$11(x,y){return caml_bytes_greaterequal(x,y)?x:y}
    function min$11(x,y){return caml_bytes_lessequal(x,y)?x:y}
    var
     include$9=
      [0,
       symbol$70,
       symbol$71,
       symbol$72,
       symbol$73,
       symbol$74,
       symbol$75,
       ascending$10,
       descending$10,
       compare$9,
       equal$9,
       max$11,
       min$11],
     symbol$76=Caml$0[25],
     symbol$77=Caml$0[16];
    function neg(_FT_){return - _FT_ | 0}
    function neg$0(_FS_){return - _FS_}
    function asr(_FR_,_FQ_){return _FR_ >> _FQ_}
    function land(_FP_,_FO_){return _FP_ & _FO_}
    var lnot$0=Caml$0[9];
    function lor(_FN_,_FM_){return _FN_ | _FM_}
    function lsl(_FL_,_FK_){return _FL_ << _FK_}
    function lsr(_FJ_,_FI_){return _FJ_ >>> _FI_ | 0}
    function lxor(_FH_,_FG_){return _FH_ ^ _FG_}
    var mod=caml_mod,abs$0=Caml$0[6],failwith$0=Caml$0[2];
    function get_key(_FF_){return _FF_[1]}
    var invalid_arg$0=Caml$0[1];
    function get_data(_FE_){return _FE_[2]}
    function phys_equal(_FD_,_FC_){return _FD_ === _FC_?1:0}
    function decr(_FB_){_FB_[1] += -1;return 0}
    function incr(_FA_){_FA_[1]++;return 0}
    var
     float_of_string=caml_float_of_string,
     am_testing=runtime.Base_am_testing(0),
     Base_Import0=
      [0,
       Exit,
       max_int,
       min_int,
       infinity,
       neg_infinity,
       nan,
       max_float,
       min_float,
       epsilon_float,
       char_of_int,
       string_of_bool,
       bool_of_string_opt,
       bool_of_string,
       string_of_int,
       int_of_string_opt,
       string_of_float,
       float_of_string_opt,
       stdin,
       stdout,
       stderr,
       print_char,
       print_string,
       print_bytes,
       print_int,
       print_float,
       print_endline,
       print_newline,
       prerr_char,
       prerr_string,
       prerr_bytes,
       prerr_int,
       prerr_float,
       prerr_endline,
       prerr_newline,
       read_line,
       read_int_opt,
       read_int,
       read_float_opt,
       read_float,
       open_out,
       open_out_bin,
       open_out_gen,
       flush,
       flush_all,
       output_char,
       output_string,
       output_bytes,
       output,
       output_substring,
       output_byte,
       output_binary_int,
       output_value,
       seek_out,
       pos_out,
       out_channel_length,
       close_out,
       close_out_noerr,
       set_binary_mode_out,
       open_in,
       open_in_bin,
       open_in_gen,
       input_char,
       input_line,
       input,
       really_input,
       really_input_string,
       input_byte,
       input_binary_int,
       input_value,
       seek_in,
       pos_in,
       in_channel_length,
       close_in,
       close_in_noerr,
       set_binary_mode_in,
       string_of_format,
       symbol,
       exit,
       at_exit,
       valid_float_lexem,
       unsafe_really_input,
       do_at_exit,
       Not_found,
       Caml$0,
       bool_to_int,
       symbol$3,
       symbol$4,
       symbol$5,
       scale,
       symbol$6,
       add,
       symbol$7,
       sub,
       symbol$8,
       symbol$9,
       include$1,
       symbol$16,
       symbol$17,
       symbol$18,
       symbol$19,
       symbol$20,
       symbol$21,
       compare$0,
       ascending$1,
       descending$1,
       equal$0,
       max$2,
       min$2,
       Int32_replace_polymorphic_comp,
       include$2,
       include$3,
       include$4,
       include$5,
       include$6,
       include$7,
       include$8,
       include$9,
       symbol$76,
       symbol$77,
       neg,
       neg$0,
       asr,
       land,
       lnot$0,
       lor,
       lsl,
       lsr,
       lxor,
       mod,
       abs$0,
       failwith$0,
       get_key,
       invalid_arg$0,
       get_data,
       phys_equal,
       decr,
       incr,
       float_of_string,
       am_testing];
    caml_register_global(940,Base_Import0,"Base__Import0");
    var
     sprintf=Stdlib_printf[4],
     bprintf=Stdlib_printf[5],
     ifprintf=Stdlib_printf[6],
     ksprintf=Stdlib_printf[9],
     kbprintf=Stdlib_printf[10];
    function failwithf(fmt)
     {return caml_call2
              (ksprintf,
               function(s,param){return caml_call1(failwith$0,s)},
               fmt)}
    function invalid_argf(fmt)
     {return caml_call2
              (ksprintf,
               function(s,param){return caml_call1(invalid_arg$0,s)},
               fmt)}
    var
     Base_Printf=
      [0,ifprintf,sprintf,bprintf,ksprintf,kbprintf,failwithf,invalid_argf];
    caml_register_global(942,Base_Printf,"Base__Printf");
    var
     backend_type=Stdlib_sys[5],
     interactive=Stdlib_sys[3],
     os_type=Stdlib_sys[4],
     unix=Stdlib_sys[6],
     win32=Stdlib_sys[7],
     cygwin=Stdlib_sys[8],
     word_size_in_bits=Stdlib_sys[9],
     num_bits=Stdlib_sys[10],
     big_endian=Stdlib_sys[11],
     max_length=Stdlib_sys[12],
     max_length$0=Stdlib_sys[13],
     runtime_variant=runtime.caml_runtime_variant,
     runtime_parameters=runtime.caml_runtime_parameters,
     argv=caml_sys_argv(0);
    function get_argv(param){return caml_sys_argv(0)}
    var
     ocaml_version=Stdlib_sys[46],
     enable_runtime_warnings=Stdlib_sys[47],
     runtime_warnings_enabled=Stdlib_sys[48];
    function getenv_exn(var$0)
     {try
       {var _Fy_=caml_sys_getenv(var$0);return _Fy_}
      catch(_Fz_)
       {_Fz_ = caml_wrap_exception(_Fz_);
        if(_Fz_ === Caml$0[90])return caml_call2(failwithf(_a_),var$0,0);
        throw _Fz_}}
    function getenv(var$0)
     {try
       {var x=caml_sys_getenv(var$0)}
      catch(_Fx_)
       {_Fx_ = caml_wrap_exception(_Fx_);
        if(_Fx_ === Caml$0[90])return 0;
        throw _Fx_}
      return [0,x]}
    var
     Break=Stdlib_sys[44],
     include$10=
      [0,
       backend_type,
       interactive,
       os_type,
       unix,
       win32,
       cygwin,
       word_size_in_bits,
       num_bits,
       big_endian,
       max_length,
       max_length$0,
       runtime_variant,
       runtime_parameters,
       argv,
       get_argv,
       ocaml_version,
       enable_runtime_warnings,
       runtime_warnings_enabled,
       getenv_exn,
       getenv,
       Break];
    caml_register_global(944,include$10,"Base__Sys0");
    var Array=[0];
    function create(len,x){return caml_make_vect(len,x)}
    var
     append=Stdlib_arrayLabels[4],
     blit=Stdlib_arrayLabels[9],
     concat=Stdlib_arrayLabels[5],
     copy=Stdlib_arrayLabels[7],
     fill=Stdlib_arrayLabels[8],
     init=Stdlib_arrayLabels[1],
     make_matrix=Stdlib_arrayLabels[2],
     of_list=Stdlib_arrayLabels[11],
     sub$0=Stdlib_arrayLabels[6],
     to_list=Stdlib_arrayLabels[10];
    function fold(t,init,f)
     {return caml_call3(Stdlib_arrayLabels[16],f,init,t)}
    function fold_right(t,f,init)
     {return caml_call3(Stdlib_arrayLabels[17],f,t,init)}
    function iter(t,f){return caml_call2(Stdlib_arrayLabels[12],f,t)}
    function iteri(t,f){return caml_call2(Stdlib_arrayLabels[14],f,t)}
    function map(t,f){return caml_call2(Stdlib_arrayLabels[13],f,t)}
    function mapi(t,f){return caml_call2(Stdlib_arrayLabels[15],f,t)}
    function stable_sort(t,compare)
     {return caml_call2(Stdlib_arrayLabels[26],compare,t)}
    function swap(t,i,j)
     {var tmp=caml_check_bound(t,i)[1 + i],_Fw_=caml_check_bound(t,j)[1 + j];
      caml_check_bound(t,i)[1 + i] = _Fw_;
      caml_check_bound(t,j)[1 + j] = tmp;
      return 0}
    var
     include$11=
      [0,
       invalid_argf,
       Array,
       max_length$0,
       create,
       append,
       blit,
       concat,
       copy,
       fill,
       init,
       make_matrix,
       of_list,
       sub$0,
       to_list,
       fold,
       fold_right,
       iter,
       iteri,
       map,
       mapi,
       stable_sort,
       swap];
    caml_register_global(947,include$11,"Base__Array0");
    var _b_=Stdlib_char[2],_c_=Stdlib_char[5];
    function to_int(_Fv_){return _Fv_}
    function unsafe_of_int(_Fu_){return _Fu_}
    var _d_=Stdlib_char[6];
    function int_is_ok(i)
     {var _Ft_=caml_call2(symbol$17,0,i);
      return _Ft_?caml_call2(symbol$17,i,255):_Ft_}
    var min_value=0,max_value=255;
    function of_int(i){return int_is_ok(i)?[0,i]:0}
    function of_int_exn(i)
     {return int_is_ok(i)?i:caml_call2(failwithf(_e_),i,0)}
    function equal$10(t1,t2){return t1 === t2?1:0}
    var
     include$12=
      [0,
       failwithf,
       _b_,
       _c_,
       to_int,
       unsafe_of_int,
       _d_,
       int_is_ok,
       min_value,
       max_value,
       of_int,
       of_int_exn,
       equal$10];
    caml_register_global(949,include$12,"Base__Char0");
    var Base_Hash_intf=[0];
    caml_register_global(950,Base_Hash_intf,"Base__Hash_intf");
    var to_string=Caml[32],of_string=caml_int_of_string;
    function to_float(_Fs_){return _Fs_}
    function of_float(_Fr_){return _Fr_ | 0}
    var max_value$0=Caml[18],min_value$0=Caml[19];
    function succ(_Fq_){return _Fq_ + 1 | 0}
    var
     include$13=
      [0,to_string,of_string,to_float,of_float,max_value$0,min_value$0,succ];
    caml_register_global(951,include$13,"Base__Int0");
    var
     hd_exn=Stdlib_listLabels[2],
     length=Stdlib_listLabels[1],
     rev_append=Stdlib_listLabels[12],
     tl_exn=Stdlib_listLabels[6],
     unzip=Stdlib_listLabels[49];
    function exists(t,f){return caml_call2(Stdlib_listLabels[30],f,t)}
    function exists2_ok(l1,l2,f)
     {return caml_call3(Stdlib_listLabels[32],f,l1,l2)}
    function fold$0(t,init,f)
     {return caml_call3(Stdlib_listLabels[22],f,init,t)}
    function fold2_ok(l1,l2,init,f)
     {return caml_call4(Stdlib_listLabels[27],f,init,l1,l2)}
    function for_all(t,f){return caml_call2(Stdlib_listLabels[29],f,t)}
    function for_all2_ok(l1,l2,f)
     {return caml_call3(Stdlib_listLabels[31],f,l1,l2)}
    function iter$0(t,f){return caml_call2(Stdlib_listLabels[15],f,t)}
    function iter2_ok(l1,l2,f)
     {return caml_call3(Stdlib_listLabels[24],f,l1,l2)}
    function nontail_map(t,f){return caml_call2(Stdlib_listLabels[17],f,t)}
    function nontail_mapi(t,f){return caml_call2(Stdlib_listLabels[18],f,t)}
    function partition(t,f){return caml_call2(Stdlib_listLabels[40],f,t)}
    function rev_map(t,f){return caml_call2(Stdlib_listLabels[19],f,t)}
    function rev_map2_ok(l1,l2,f)
     {return caml_call3(Stdlib_listLabels[26],f,l1,l2)}
    function func(l,compare)
     {return caml_call2(Stdlib_listLabels[51],compare,l)}
    function stable_sort$0(l,compare)
     {return caml_call2(Stdlib_listLabels[52],compare,l)}
    function rev(res)
     {if(res)
       {var _Fp_=res[2];
        if(_Fp_)
         {var rest=_Fp_[2],y=_Fp_[1],x=res[1];
          return caml_call2(rev_append,rest,[0,y,[0,x,0]])}}
      return res}
    var
     include$14=
      [0,
       hd_exn,
       length,
       rev_append,
       tl_exn,
       unzip,
       exists,
       exists2_ok,
       fold$0,
       fold2_ok,
       for_all,
       for_all2_ok,
       iter$0,
       iter2_ok,
       nontail_map,
       nontail_mapi,
       partition,
       rev_map,
       rev_map2_ok,
       func,
       stable_sort$0,
       rev];
    caml_register_global(953,include$14,"Base__List0");
    function Folding(Hash)
     {function hash_fold_unit(s,param){return s}
      var _EU_=Hash[2],_EV_=Hash[3],_EW_=Hash[4],_EX_=Hash[5];
      function as_int(f,s,x){return caml_call2(_EU_,s,caml_call1(f,x))}
      function _EY_(_Fo_){return _Fo_}
      function hash_fold_int32(_Fm_,_Fn_){return as_int(_EY_,_Fm_,_Fn_)}
      function hash_fold_char(_Fk_,_Fl_){return as_int(to_int,_Fk_,_Fl_)}
      function _EZ_(param){return param?1:0}
      function hash_fold_bool(_Fi_,_Fj_){return as_int(_EZ_,_Fi_,_Fj_)}
      function hash_fold_nativeint(s,x)
       {return caml_call2(_EV_,s,caml_int64_of_int32(x))}
      function hash_fold_option(hash_fold_elem,s,param)
       {if(param)
         {var x=param[1];
          return caml_call2(hash_fold_elem,caml_call2(_EU_,s,1),x)}
        return caml_call2(_EU_,s,0)}
      function hash_fold_list(hash_fold_elem,s$1,list$0)
       {var
         s$2=caml_call2(_EU_,s$1,caml_call1(length,list$0)),
         s=s$2,
         list=list$0;
        for(;;)
         {if(list)
           {var
             xs=list[2],
             x=list[1],
             s$0=caml_call2(hash_fold_elem,s,x),
             s=s$0,
             list=xs;
            continue}
          return s}}
      function hash_fold_lazy_t(hash_fold_elem,s,x)
       {var
         _Fg_=caml_obj_tag(x),
         _Fh_=
          250 === _Fg_?x[1]:246 === _Fg_?caml_call1(CamlinternalLazy[2],x):x;
        return caml_call2(hash_fold_elem,s,_Fh_)}
      function hash_fold_ref_frozen(hash_fold_elem,s,x)
       {return caml_call2(hash_fold_elem,s,x[1])}
      function hash_fold_array_frozen(hash_fold_elem,s$1,array)
       {var s$2=caml_call2(_EU_,s$1,array.length - 1),s=s$2,i=0;
        for(;;)
         {if(caml_call2(symbol$19,i,array.length - 1))return s;
          var
           e=array[1 + i],
           i$0=i + 1 | 0,
           s$0=caml_call2(hash_fold_elem,s,e),
           s=s$0,
           i=i$0;
          continue}}
      function hash_nativeint(x)
       {var
         _Fe_=caml_call1(Hash[6],0),
         _Ff_=hash_fold_nativeint(caml_call2(Hash[7],0,_Fe_),x);
        return caml_call1(Hash[8],_Ff_)}
      function hash_int64(x)
       {var
         _Fc_=caml_call1(Hash[6],0),
         _Fd_=caml_call2(_EV_,caml_call2(Hash[7],0,_Fc_),x);
        return caml_call1(Hash[8],_Fd_)}
      function hash_int32(x)
       {var
         _Fa_=caml_call1(Hash[6],0),
         _Fb_=hash_fold_int32(caml_call2(Hash[7],0,_Fa_),x);
        return caml_call1(Hash[8],_Fb_)}
      function hash_char(x)
       {var
         _E__=caml_call1(Hash[6],0),
         _E$_=hash_fold_char(caml_call2(Hash[7],0,_E__),x);
        return caml_call1(Hash[8],_E$_)}
      function hash_int(x)
       {var
         _E8_=caml_call1(Hash[6],0),
         _E9_=caml_call2(_EU_,caml_call2(Hash[7],0,_E8_),x);
        return caml_call1(Hash[8],_E9_)}
      function hash_bool(x)
       {var
         _E6_=caml_call1(Hash[6],0),
         _E7_=hash_fold_bool(caml_call2(Hash[7],0,_E6_),x);
        return caml_call1(Hash[8],_E7_)}
      function hash_string(x)
       {var
         _E4_=caml_call1(Hash[6],0),
         _E5_=caml_call2(_EX_,caml_call2(Hash[7],0,_E4_),x);
        return caml_call1(Hash[8],_E5_)}
      function hash_float(x)
       {var
         _E2_=caml_call1(Hash[6],0),
         _E3_=caml_call2(_EW_,caml_call2(Hash[7],0,_E2_),x);
        return caml_call1(Hash[8],_E3_)}
      function hash_unit(x)
       {var _E0_=caml_call1(Hash[6],0),_E1_=caml_call2(Hash[7],0,_E0_);
        return caml_call1(Hash[8],_E1_)}
      return [0,
              hash_fold_nativeint,
              _EV_,
              hash_fold_int32,
              hash_fold_char,
              _EU_,
              hash_fold_bool,
              _EX_,
              _EW_,
              hash_fold_unit,
              hash_fold_option,
              hash_fold_list,
              hash_fold_lazy_t,
              hash_fold_ref_frozen,
              hash_fold_array_frozen,
              hash_nativeint,
              hash_int64,
              hash_int32,
              hash_char,
              hash_int,
              hash_bool,
              hash_string,
              hash_float,
              hash_unit]}
    function F(Hash)
     {var
       description=Hash[1],
       fold_int=Hash[2],
       fold_int64=Hash[3],
       fold_float=Hash[4],
       fold_string=Hash[5],
       alloc=Hash[6],
       reset=Hash[7],
       get_hash_value=Hash[8],
       For_tests=Hash[9];
      function create(seed,param)
       {return caml_call2(reset,seed,caml_call1(alloc,0))}
      function of_fold(hash_fold_t,t)
       {return caml_call1
                (get_hash_value,caml_call2(hash_fold_t,create(0,0),t))}
      var Builtin=Folding(Hash);
      function run(seed,folder,x)
       {var
         _ES_=caml_call1(Hash[6],0),
         _ET_=caml_call2(folder,caml_call2(Hash[7],seed,_ES_),x);
        return caml_call1(Hash[8],_ET_)}
      return [0,
              description,
              fold_int,
              fold_int64,
              fold_float,
              fold_string,
              alloc,
              reset,
              get_hash_value,
              For_tests,
              create,
              of_fold,
              Builtin,
              run]}
    function alloc(param){return 0}
    function reset(opt,t)
     {if(opt)var sth=opt[1],seed=sth;else var seed=0;return seed}
    function compare_state(a,b){return caml_call2(compare$0,a,b)}
    function state_to_string(state){return caml_call1(to_string,state)}
    var For_tests=[0,compare_state,state_to_string];
    function create$0(seed,param){return reset(seed,0)}
    function run(seed,folder,x)
     {return runtime.Base_internalhash_get_hash_value
              (caml_call2(folder,reset(seed,0),x))}
    function of_fold(hash_fold_t,t)
     {return runtime.Base_internalhash_get_hash_value
              (caml_call2(hash_fold_t,create$0(0,0),t))}
    function _f_(_ER_){return runtime.Base_internalhash_get_hash_value(_ER_)}
    function _g_(_EQ_,_EP_)
     {return runtime.Base_internalhash_fold_string(_EQ_,_EP_)}
    function _h_(_EO_,_EN_)
     {return runtime.Base_internalhash_fold_float(_EO_,_EN_)}
    function _i_(_EM_,_EL_)
     {return runtime.Base_internalhash_fold_int64(_EM_,_EL_)}
    var
     Folding$0=
      Folding
       ([0,
         description,
         function(_EK_,_EJ_)
          {return runtime.Base_internalhash_fold_int(_EK_,_EJ_)},
         _i_,
         _h_,
         _g_,
         alloc,
         reset,
         _f_,
         For_tests]),
     hash_fold_array_frozen=Folding$0[14],
     hash_fold_ref_frozen=Folding$0[13],
     hash_fold_lazy_t=Folding$0[12],
     hash_fold_list=Folding$0[11],
     hash_fold_option=Folding$0[10],
     hash_fold_unit=Folding$0[9],
     hash_fold_float=Folding$0[8],
     hash_fold_string=Folding$0[7],
     hash_fold_bool=Folding$0[6],
     hash_fold_int=Folding$0[5],
     hash_fold_char=Folding$0[4],
     hash_fold_int32=Folding$0[3],
     hash_fold_int64=Folding$0[2],
     hash_fold_nativeint=Folding$0[1],
     hash_nativeint=Folding$0[15],
     hash_int64=Folding$0[16],
     hash_int32=Folding$0[17],
     hash_string=Folding$0[21];
    function hash_int(t)
     {var
       t$0=caml_call1(lnot$0,t) + (t << 21) | 0,
       t$1=t$0 ^ (t$0 >>> 24 | 0),
       t$2=(t$1 + (t$1 << 3) | 0) + (t$1 << 8) | 0,
       t$3=t$2 ^ (t$2 >>> 14 | 0),
       t$4=(t$3 + (t$3 << 2) | 0) + (t$3 << 4) | 0,
       t$5=t$4 ^ (t$4 >>> 28 | 0);
      return t$5 + (t$5 << 31) | 0}
    function hash_bool(x){return x?1:0}
    function hash_unit(param){return 0}
    var
     _j_=
      [0,
       hash_fold_nativeint,
       hash_fold_int64,
       hash_fold_int32,
       hash_fold_char,
       hash_fold_int,
       hash_fold_bool,
       hash_fold_string,
       hash_fold_float,
       hash_fold_unit,
       hash_fold_option,
       hash_fold_list,
       hash_fold_lazy_t,
       hash_fold_ref_frozen,
       hash_fold_array_frozen,
       hash_nativeint,
       hash_int64,
       hash_int32,
       to_int,
       hash_int,
       hash_bool,
       hash_string,
       function(_EI_){return runtime.Base_hash_double(_EI_)},
       hash_unit];
    function _k_(_EH_){return runtime.Base_internalhash_get_hash_value(_EH_)}
    function _l_(_EG_,_EF_)
     {return runtime.Base_internalhash_fold_string(_EG_,_EF_)}
    function _m_(_EE_,_ED_)
     {return runtime.Base_internalhash_fold_float(_EE_,_ED_)}
    function _n_(_EC_,_EB_)
     {return runtime.Base_internalhash_fold_int64(_EC_,_EB_)}
    var
     Base_Hash=
      [0,
       F,
       description,
       function(_EA_,_Ez_)
        {return runtime.Base_internalhash_fold_int(_EA_,_Ez_)},
       _n_,
       _m_,
       _l_,
       alloc,
       reset,
       _k_,
       For_tests,
       create$0,
       of_fold,
       _j_,
       run];
    caml_register_global(955,Base_Hash,"Base__Hash");
    function compare_abstract(type_name,param,_Ey_)
     {return caml_call3(ksprintf,failwith$0,_o_,type_name)}
    function equal_abstract(type_name,param,_Ex_)
     {return caml_call3(ksprintf,failwith$0,_p_,type_name)}
    var
     compare_bool=caml_int_compare,
     compare_char=caml_int_compare,
     compare_float=caml_float_compare,
     compare_int=caml_int_compare,
     compare_int32=caml_int_compare;
    function compare_int64(_Ew_,_Ev_){return caml_int64_compare(_Ew_,_Ev_)}
    var
     compare_nativeint=caml_int_compare,
     compare_string=caml_string_compare,
     compare_unit=caml_int_compare;
    function compare_array(compare_elt,a,b)
     {if(a === b)return 0;
      var
       len_a=a.length - 1,
       len_b=b.length - 1,
       ret=caml_call2(compare$0,len_a,len_b);
      if(caml_call2(symbol$18,ret,0))return ret;
      var i=0;
      for(;;)
       {if(caml_call2(symbol$19,i,len_a))return 0;
        var l=a[1 + i],r=b[1 + i],res=caml_call2(compare_elt,l,r);
        if(caml_call2(symbol$18,res,0))return res;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    function compare_list(compare_elt,a,b)
     {var a$0=a,b$0=b;
      for(;;)
       {if(a$0)
         {if(b$0)
           {var
             ys=b$0[2],
             y=b$0[1],
             xs=a$0[2],
             x=a$0[1],
             res=caml_call2(compare_elt,x,y);
            if(caml_call2(symbol$18,res,0))return res;
            var a$0=xs,b$0=ys;
            continue}
          return 1}
        return b$0?-1:0}}
    function compare_option(compare_elt,a,b)
     {if(a)
       {var _Eu_=a[1];
        if(b){var b$0=b[1];return caml_call2(compare_elt,_Eu_,b$0)}
        return 1}
      return b?-1:0}
    function compare_ref(compare_elt,a,b)
     {return caml_call2(compare_elt,a[1],b[1])}
    function equal_bool(_Et_,_Es_){return _Et_ === _Es_?1:0}
    function equal_char(_Er_,_Eq_){return _Er_ === _Eq_?1:0}
    function equal_int(_Ep_,_Eo_){return _Ep_ === _Eo_?1:0}
    var
     equal_int32=caml_equal,
     equal_int64=caml_equal,
     equal_nativeint=caml_equal,
     equal_string=caml_string_equal;
    function equal_unit(_En_,_Em_){return _En_ === _Em_?1:0}
    function equal_float(x,y){return caml_float_compare(x,y) === 0?1:0}
    function equal_array(equal_elt,a,b)
     {var _Eg_=a === b?1:0;
      if(_Eg_)
       var _Eh_=_Eg_;
      else
       {var
         len_a=a.length - 1,
         len_b=b.length - 1,
         _Ei_=caml_call2(equal$0,len_a,len_b);
        if(_Ei_)
         {var i=0;
          for(;;)
           {var _Ej_=caml_call2(symbol$19,i,len_a);
            if(_Ej_)
             var _Ek_=_Ej_;
            else
             {var l=a[1 + i],r=b[1 + i],_El_=caml_call2(equal_elt,l,r);
              if(_El_){var i$0=i + 1 | 0,i=i$0;continue}
              var _Ek_=_El_}
            return _Ek_}}
        var _Eh_=_Ei_}
      return _Eh_}
    function equal_list(equal_elt,a,b)
     {var a$0=a,b$0=b;
      for(;;)
       {if(a$0)
         {if(b$0)
           {var
             ys=b$0[2],
             y=b$0[1],
             xs=a$0[2],
             x=a$0[1],
             _Ef_=caml_call2(equal_elt,x,y);
            if(_Ef_){var a$0=xs,b$0=ys;continue}
            return _Ef_}}
        else
         if(! b$0)return 1;
        return 0}}
    function equal_option(equal_elt,a,b)
     {if(a)
       {if(b){var b$0=b[1],a$0=a[1];return caml_call2(equal_elt,a$0,b$0)}}
      else
       if(! b)return 1;
      return 0}
    function equal_ref(equal_elt,a,b){return caml_call2(equal_elt,a[1],b[1])}
    var
     _q_=
      [0,
       compare_bool,
       compare_char,
       compare_float,
       compare_int,
       compare_int32,
       compare_int64,
       compare_nativeint,
       compare_string,
       compare_unit,
       compare_array,
       compare_list,
       compare_option,
       compare_ref,
       equal_bool,
       equal_char,
       equal_float,
       equal_int,
       equal_int32,
       equal_int64,
       equal_nativeint,
       equal_string,
       equal_unit,
       equal_array,
       equal_list,
       equal_option,
       equal_ref],
     Base_Ppx_compare_lib=[0,phys_equal,compare_abstract,equal_abstract,_q_];
    caml_register_global(956,Base_Ppx_compare_lib,"Base__Ppx_compare_lib");
    var Std=[0],Base_Ppx_hash_lib=[0,Std];
    caml_register_global(957,Base_Ppx_hash_lib,"Base__Ppx_hash_lib");
    var
     t_of_sexp=Sexplib0_Sexp[1],
     sexp_of_t=Sexplib0_Sexp[2],
     equal$11=Sexplib0_Sexp[3],
     Not_found_s=Sexplib0_Sexp[5],
     Of_sexp_error=Sexplib0_Sexp[6],
     message=Sexplib0_Sexp[7],
     default_indent=Sexplib0_Sexp[8],
     pp_hum=Sexplib0_Sexp[9],
     pp_hum_indent=Sexplib0_Sexp[10],
     pp_mach=Sexplib0_Sexp[11],
     pp=Sexplib0_Sexp[12],
     to_string_hum=Sexplib0_Sexp[13],
     to_string_mach=Sexplib0_Sexp[14],
     to_string$0=Sexplib0_Sexp[15],
     of_float_style=Sexplib0_Sexp[16],
     of_int_style=Sexplib0_Sexp[17],
     Private=Sexplib0_Sexp[18];
    function compare$10(a_001,match)
     {if(a_001 === match)return 0;
      if(0 === a_001[0])
       {var _Ed_=a_001[1];
        if(0 === match[0])
         {var b_004=match[1];return caml_call2(_q_[8],_Ed_,b_004)}
        return -1}
      var _Ee_=a_001[1];
      if(0 === match[0])return 1;
      var b_006=match[1];
      return caml_call3(_q_[11],compare$10,_Ee_,b_006)}
    var
     hash_fold_t=function _Ec_(_Ea_,_Eb_){return _Ec_.fun(_Ea_,_Eb_)},
     hash=function _D$_(_D__){return _D$_.fun(_D__)};
    caml_update_dummy
     (hash_fold_t,
      function(hsv,arg)
       {if(0 === arg[0])
         {var a0=arg[1],hsv$0=runtime.Base_internalhash_fold_int(hsv,0);
          return caml_call2(_j_[7],hsv$0,a0)}
        var a0$0=arg[1],hsv$1=runtime.Base_internalhash_fold_int(hsv,1);
        return caml_call3(_j_[11],hash_fold_t,hsv$1,a0$0)});
    caml_update_dummy
     (hash,
      function(x)
       {var hsv=create$0(0,0);
        return runtime.Base_internalhash_get_hash_value
                (caml_call2(hash_fold_t,hsv,x))});
    var
     Base_Sexp=
      [0,
       hash_fold_t,
       hash,
       t_of_sexp,
       sexp_of_t,
       equal$11,
       compare$10,
       Not_found_s,
       Of_sexp_error,
       message,
       default_indent,
       pp_hum,
       pp_hum_indent,
       pp_mach,
       pp,
       to_string_hum,
       to_string_mach,
       to_string$0,
       of_float_style,
       of_int_style,
       Private,
       0];
    caml_register_global(959,Base_Sexp,"Base__Sexp");
    var
     default_string_of_float=Sexplib0_Sexp_conv[1],
     write_old_option_format=Sexplib0_Sexp_conv[2],
     read_old_option_format=Sexplib0_Sexp_conv[3],
     list_map=Sexplib0_Sexp_conv[4],
     sexp_of_t$0=Sexplib0_Sexp_conv[5],
     sexp_of_t$1=Sexplib0_Sexp_conv[6],
     sexp_of_t$2=Sexplib0_Sexp_conv[7],
     sexp_of_bytes=Sexplib0_Sexp_conv[8],
     sexp_of_t$3=Sexplib0_Sexp_conv[9],
     sexp_of_t$4=Sexplib0_Sexp_conv[10],
     sexp_of_t$5=Sexplib0_Sexp_conv[11],
     sexp_of_t$6=Sexplib0_Sexp_conv[12],
     sexp_of_t$7=Sexplib0_Sexp_conv[13],
     sexp_of_t$8=Sexplib0_Sexp_conv[14],
     sexp_of_ref=Sexplib0_Sexp_conv[15],
     sexp_of_t$9=Sexplib0_Sexp_conv[16],
     sexp_of_option=Sexplib0_Sexp_conv[17],
     sexp_of_pair=Sexplib0_Sexp_conv[18],
     sexp_of_triple=Sexplib0_Sexp_conv[19],
     sexp_of_t$10=Sexplib0_Sexp_conv[20],
     sexp_of_t$11=Sexplib0_Sexp_conv[21],
     sexp_of_hashtbl=Sexplib0_Sexp_conv[22],
     sexp_of_opaque=Sexplib0_Sexp_conv[23],
     sexp_of_fun=Sexplib0_Sexp_conv[24],
     Of_sexp_error$0=Sexplib0_Sexp_conv[25],
     record_check_extra_fields=Sexplib0_Sexp_conv[26],
     of_sexp_error=Sexplib0_Sexp_conv[27],
     of_sexp_error_exn=Sexplib0_Sexp_conv[28],
     t_of_sexp$0=Sexplib0_Sexp_conv[29],
     t_of_sexp$1=Sexplib0_Sexp_conv[30],
     t_of_sexp$2=Sexplib0_Sexp_conv[31],
     bytes_of_sexp=Sexplib0_Sexp_conv[32],
     t_of_sexp$3=Sexplib0_Sexp_conv[33],
     t_of_sexp$4=Sexplib0_Sexp_conv[34],
     t_of_sexp$5=Sexplib0_Sexp_conv[35],
     t_of_sexp$6=Sexplib0_Sexp_conv[36],
     t_of_sexp$7=Sexplib0_Sexp_conv[37],
     t_of_sexp$8=Sexplib0_Sexp_conv[38],
     ref_of_sexp=Sexplib0_Sexp_conv[39],
     t_of_sexp$9=Sexplib0_Sexp_conv[40],
     option_of_sexp=Sexplib0_Sexp_conv[41],
     pair_of_sexp=Sexplib0_Sexp_conv[42],
     triple_of_sexp=Sexplib0_Sexp_conv[43],
     t_of_sexp$10=Sexplib0_Sexp_conv[44],
     t_of_sexp$11=Sexplib0_Sexp_conv[45],
     hashtbl_of_sexp=Sexplib0_Sexp_conv[46],
     opaque_of_sexp=Sexplib0_Sexp_conv[47],
     fun_of_sexp=Sexplib0_Sexp_conv[48],
     sexp_of_exn=Sexplib0_Sexp_conv[49],
     sexp_of_exn_opt=Sexplib0_Sexp_conv[50],
     Exn_converter=Sexplib0_Sexp_conv[51],
     hash_fold_t$0=_j_[1],
     hash_fold_t$1=_j_[2],
     hash_fold_t$2=_j_[3],
     hash_fold_t$3=_j_[4],
     hash_fold_t$4=_j_[5],
     hash_fold_t$5=_j_[6],
     hash_fold_string$0=_j_[7],
     hash_fold_t$6=_j_[8],
     hash_fold_t$7=_j_[9],
     hash_fold_option$0=_j_[10],
     hash_fold_t$8=_j_[11],
     hash_fold_lazy_t$0=_j_[12],
     hash_fold_ref_frozen$0=_j_[13],
     hash_fold_array_frozen$0=_j_[14],
     func$0=_j_[15],
     func$1=_j_[16],
     func$2=_j_[17],
     func$3=_j_[18],
     func$4=_j_[19],
     func$5=_j_[20],
     func$6=_j_[21],
     specialized_hash=_j_[22],
     func$7=_j_[23],
     compare$11=_q_[1],
     compare$12=_q_[2],
     compare_float$0=_q_[3],
     compare$13=_q_[4],
     compare$14=_q_[5],
     compare$15=_q_[6],
     compare$16=_q_[7],
     compare_string$0=_q_[8],
     compare_unit$0=_q_[9],
     compare$17=_q_[10],
     compare_list$0=_q_[11],
     compare_option$0=_q_[12],
     compare_ref$0=_q_[13],
     equal_bool$0=_q_[14],
     equal_char$0=_q_[15],
     equal_float$0=_q_[16],
     equal_int$0=_q_[17],
     equal_int32$0=_q_[18],
     equal_int64$0=_q_[19],
     equal_nativeint$0=_q_[20],
     equal_string$0=_q_[21],
     equal_unit$0=_q_[22],
     equal_array$0=_q_[23],
     equal_list$0=_q_[24],
     equal_option$0=_q_[25],
     equal_ref$0=_q_[26],
     symbol$78=include$1[1],
     symbol$79=include$1[2],
     symbol$80=include$1[3],
     symbol$81=include$1[4],
     symbol$82=include$1[5],
     symbol$83=include$1[6],
     compare$18=include$1[7],
     ascending$11=include$1[8],
     descending$11=include$1[9],
     equal$12=include$1[10],
     max$12=include$1[11],
     min$12=include$1[12],
     Base_Import=
      [0,
       Exit,
       max_int,
       min_int,
       infinity,
       neg_infinity,
       nan,
       max_float,
       min_float,
       epsilon_float,
       char_of_int,
       string_of_bool,
       bool_of_string_opt,
       bool_of_string,
       string_of_int,
       int_of_string_opt,
       string_of_float,
       float_of_string_opt,
       stdin,
       stdout,
       stderr,
       print_char,
       print_string,
       print_bytes,
       print_int,
       print_float,
       print_endline,
       print_newline,
       prerr_char,
       prerr_string,
       prerr_bytes,
       prerr_int,
       prerr_float,
       prerr_endline,
       prerr_newline,
       read_line,
       read_int_opt,
       read_int,
       read_float_opt,
       read_float,
       open_out,
       open_out_bin,
       open_out_gen,
       flush,
       flush_all,
       output_char,
       output_string,
       output_bytes,
       output,
       output_substring,
       output_byte,
       output_binary_int,
       output_value,
       seek_out,
       pos_out,
       out_channel_length,
       close_out,
       close_out_noerr,
       set_binary_mode_out,
       open_in,
       open_in_bin,
       open_in_gen,
       input_char,
       input_line,
       input,
       really_input,
       really_input_string,
       input_byte,
       input_binary_int,
       input_value,
       seek_in,
       pos_in,
       in_channel_length,
       close_in,
       close_in_noerr,
       set_binary_mode_in,
       string_of_format,
       symbol,
       exit,
       at_exit,
       valid_float_lexem,
       unsafe_really_input,
       do_at_exit,
       Not_found,
       Caml$0,
       bool_to_int,
       symbol$3,
       symbol$4,
       symbol$5,
       scale,
       symbol$6,
       add,
       symbol$7,
       sub,
       symbol$8,
       symbol$9,
       include$1,
       Int32_replace_polymorphic_comp,
       include$2,
       include$3,
       include$4,
       include$5,
       include$6,
       include$7,
       include$8,
       include$9,
       symbol$76,
       symbol$77,
       neg,
       neg$0,
       asr,
       land,
       lnot$0,
       lor,
       lsl,
       lsr,
       lxor,
       mod,
       abs$0,
       failwith$0,
       get_key,
       invalid_arg$0,
       get_data,
       phys_equal,
       decr,
       incr,
       float_of_string,
       am_testing,
       default_string_of_float,
       write_old_option_format,
       read_old_option_format,
       list_map,
       sexp_of_t$0,
       sexp_of_t$1,
       sexp_of_t$2,
       sexp_of_bytes,
       sexp_of_t$3,
       sexp_of_t$4,
       sexp_of_t$5,
       sexp_of_t$6,
       sexp_of_t$7,
       sexp_of_t$8,
       sexp_of_ref,
       sexp_of_t$9,
       sexp_of_option,
       sexp_of_pair,
       sexp_of_triple,
       sexp_of_t$10,
       sexp_of_t$11,
       sexp_of_hashtbl,
       sexp_of_opaque,
       sexp_of_fun,
       Of_sexp_error$0,
       record_check_extra_fields,
       of_sexp_error,
       of_sexp_error_exn,
       t_of_sexp$0,
       t_of_sexp$1,
       t_of_sexp$2,
       bytes_of_sexp,
       t_of_sexp$3,
       t_of_sexp$4,
       t_of_sexp$5,
       t_of_sexp$6,
       t_of_sexp$7,
       t_of_sexp$8,
       ref_of_sexp,
       t_of_sexp$9,
       option_of_sexp,
       pair_of_sexp,
       triple_of_sexp,
       t_of_sexp$10,
       t_of_sexp$11,
       hashtbl_of_sexp,
       opaque_of_sexp,
       fun_of_sexp,
       sexp_of_exn,
       sexp_of_exn_opt,
       Exn_converter,
       hash_fold_t$0,
       hash_fold_t$1,
       hash_fold_t$2,
       hash_fold_t$3,
       hash_fold_t$4,
       hash_fold_t$5,
       hash_fold_string$0,
       hash_fold_t$6,
       hash_fold_t$7,
       hash_fold_option$0,
       hash_fold_t$8,
       hash_fold_lazy_t$0,
       hash_fold_ref_frozen$0,
       hash_fold_array_frozen$0,
       func$0,
       func$1,
       func$2,
       func$3,
       func$4,
       func$5,
       func$6,
       specialized_hash,
       func$7,
       compare$11,
       compare$12,
       compare_float$0,
       compare$13,
       compare$14,
       compare$15,
       compare$16,
       compare_string$0,
       compare_unit$0,
       compare$17,
       compare_list$0,
       compare_option$0,
       compare_ref$0,
       equal_bool$0,
       equal_char$0,
       equal_float$0,
       equal_int$0,
       equal_int32$0,
       equal_int64$0,
       equal_nativeint$0,
       equal_string$0,
       equal_unit$0,
       equal_array$0,
       equal_list$0,
       equal_option$0,
       equal_ref$0,
       symbol$78,
       symbol$79,
       symbol$80,
       symbol$81,
       symbol$82,
       symbol$83,
       compare$18,
       ascending$11,
       descending$11,
       equal$12,
       max$12,
       min$12,
       Not_found_s];
    caml_register_global(961,Base_Import,"Base__Import");
    var Base_Stringable=[0];
    caml_register_global(962,Base_Stringable,"Base__Stringable");
    var of_string$0=0;
    function Of_sexpable(Sexpable,M)
     {function t_of_sexp(sexp)
       {var s=caml_call1(Sexpable[1],sexp);
        try
         {var _D9_=caml_call1(M[2],s);return _D9_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          return caml_call2(of_sexp_error_exn,exn,sexp)}}
      function sexp_of_t(t)
       {var _D8_=caml_call1(M[1],t);return caml_call1(Sexpable[2],_D8_)}
      return [0,t_of_sexp,sexp_of_t]}
    function Of_sexpable1(Sexpable,M)
     {function t_of_sexp(a_of_sexp,sexp)
       {var s=caml_call2(Sexpable[1],a_of_sexp,sexp);
        try
         {var _D7_=caml_call1(M[2],s);return _D7_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          return caml_call2(of_sexp_error_exn,exn,sexp)}}
      function sexp_of_t(sexp_of_a,t)
       {var _D6_=caml_call1(M[1],t);
        return caml_call2(Sexpable[2],sexp_of_a,_D6_)}
      return [0,t_of_sexp,sexp_of_t]}
    function Of_sexpable2(Sexpable,M)
     {function t_of_sexp(a_of_sexp,b_of_sexp,sexp)
       {var s=caml_call3(Sexpable[1],a_of_sexp,b_of_sexp,sexp);
        try
         {var _D5_=caml_call1(M[2],s);return _D5_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          return caml_call2(of_sexp_error_exn,exn,sexp)}}
      function sexp_of_t(sexp_of_a,sexp_of_b,t)
       {var _D4_=caml_call1(M[1],t);
        return caml_call3(Sexpable[2],sexp_of_a,sexp_of_b,_D4_)}
      return [0,t_of_sexp,sexp_of_t]}
    function Of_sexpable3(Sexpable,M)
     {function t_of_sexp(a_of_sexp,b_of_sexp,c_of_sexp,sexp)
       {var s=caml_call4(Sexpable[1],a_of_sexp,b_of_sexp,c_of_sexp,sexp);
        try
         {var _D3_=caml_call1(M[2],s);return _D3_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          return caml_call2(of_sexp_error_exn,exn,sexp)}}
      function sexp_of_t(sexp_of_a,sexp_of_b,sexp_of_c,t)
       {var _D2_=caml_call1(M[1],t);
        return caml_call4(Sexpable[2],sexp_of_a,sexp_of_b,sexp_of_c,_D2_)}
      return [0,t_of_sexp,sexp_of_t]}
    function Of_stringable(M)
     {function t_of_sexp(sexp)
       {if(0 === sexp[0])
         {var s=sexp[1];
          try
           {var _D1_=caml_call1(M[1],s);return _D1_}
          catch(exn)
           {exn = caml_wrap_exception(exn);
            return caml_call2(of_sexp_error_exn,exn,sexp)}}
        return caml_call2(of_sexp_error,cst_Sexpable_Of_stringable_t_o,sexp)}
      function sexp_of_t(t){return [0,caml_call1(M[2],t)]}
      return [0,t_of_sexp,sexp_of_t]}
    var
     Base_Sexpable=
      [0,Of_sexpable,Of_sexpable1,Of_sexpable2,Of_sexpable3,Of_stringable];
    caml_register_global(963,Base_Sexpable,"Base__Sexpable");
    var Base_Sexplib=[0];
    caml_register_global(964,Base_Sexplib,"Base__Sexplib");
    var Base_Ppx_sexp_conv_lib=[0];
    caml_register_global(965,Base_Ppx_sexp_conv_lib,"Base__Ppx_sexp_conv_lib");
    function sexp_of_t$12(param){return param?_r_:_s_}
    function num_bits$0(param){return param?64:32}
    var
     word_size=
      32 === word_size_in_bits
       ?0
       :64 === word_size_in_bits
         ?1
         :caml_call1(failwith$0,cst_unknown_word_size),
     Base_Word_size=[0,sexp_of_t$12,num_bits$0,word_size];
    caml_register_global(966,Base_Word_size,"Base__Word_size");
    var Base_Formatter=[0];
    caml_register_global(967,Base_Formatter,"Base__Formatter");
    var r=[0,_t_];
    function all(param){return r[1]}
    function register(p){r[1] = [0,p,r[1]];return 0}
    function Register_pp(_DY_)
     {var _DZ_=_DY_[1],_D0_=_DY_[2];
      register(caml_call2(symbol$77,_DY_[2],cst_pp));
      return [0,_DZ_,_D0_]}
    function _u_(_DX_){return [0,Register_pp(_DX_)[1]]}
    function _v_(M)
     {var module_name=M[1];
      function pp(formatter,t)
       {var _DW_=caml_call1(M[2],t);
        return caml_call2(Stdlib_format[13],formatter,_DW_)}
      return [0,Register_pp([0,pp,module_name])[1]]}
    var Base_Pretty_printer=[0,all,_v_,_u_,register];
    caml_register_global(969,Base_Pretty_printer,"Base__Pretty_printer");
    var _w_=Caml$0[86],Finally=[248,cst_Base_Exn_Finally,caml_fresh_oo_id(0)];
    function _x_(param)
     {if(param[1] === Finally)
       {var
         v1=param[3],
         v0=param[2],
         v0$0=caml_call1(sexp_of_exn,v0),
         v1$0=caml_call1(sexp_of_exn,v1);
        return [1,[0,_y_,[0,v0$0,[0,v1$0,0]]]]}
      throw [0,Assert_failure,_z_]}
    caml_call3(Sexplib0_Sexp_conv[51][2],0,Finally,_x_);
    var Reraised=[248,cst_Base_Exn_Reraised,caml_fresh_oo_id(0)];
    function _A_(param)
     {if(param[1] === Reraised)
       {var
         v1=param[3],
         v0=param[2],
         v0$0=caml_call1(sexp_of_t$2,v0),
         v1$0=caml_call1(sexp_of_exn,v1);
        return [1,[0,_B_,[0,v0$0,[0,v1$0,0]]]]}
      throw [0,Assert_failure,_C_]}
    caml_call3(Sexplib0_Sexp_conv[51][2],0,Reraised,_A_);
    var Sexp=[248,cst_Base_Exn_Sexp,caml_fresh_oo_id(0)];
    function _D_(param)
     {if(param[1] === Sexp){var t=param[2];return t}
      throw [0,Assert_failure,_E_]}
    caml_call3(Sexplib0_Sexp_conv[51][2],0,Sexp,_D_);
    function create_s(sexp){return [0,Sexp,sexp]}
    function reraise(exc,str){throw [0,Reraised,str,exc]}
    function reraisef(exc,format)
     {return caml_call2
              (ksprintf,function(str,param){return reraise(exc,str)},format)}
    function to_string$1(exc)
     {return caml_call2(to_string_hum,_F_,caml_call1(sexp_of_exn,exc))}
    function to_string_mach$0(exc)
     {return caml_call1(to_string_mach,caml_call1(sexp_of_exn,exc))}
    function protectx(f,x,finally$0)
     {try
       {var res=caml_call1(f,x)}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        try
         {caml_call1(finally$0,x);var _DV_=exn}
        catch(final_exn)
         {final_exn = caml_wrap_exception(final_exn);
          var _DV_=[0,Finally,exn,final_exn]}
        throw _DV_}
      caml_call1(finally$0,x);
      return res}
    function protect(f,finally$0){return protectx(f,0,finally$0)}
    function does_raise(f)
     {try {caml_call1(f,0);var _DT_=0;return _DT_}catch(_DU_){return 1}}
    function pp$0(ppf,t)
     {var match=caml_call1(sexp_of_exn_opt,t);
      if(match){var sexp=match[1];return caml_call2(pp_hum,ppf,sexp)}
      var _DS_=caml_call1(Stdlib_printexc[1],t);
      return caml_call2(Stdlib_format[13],ppf,_DS_)}
    var include$15=_u_([0,pp$0,module_name]),pp$1=include$15[1];
    function print_with_backtrace(exc,raw_backtrace)
     {caml_call3(Stdlib_format[125],_G_,pp$1,exc);
      if(caml_call1(Stdlib_printexc[8],0))
       caml_call2(Stdlib_printexc[12],Caml$0[28],raw_backtrace);
      return caml_call1(Caml$0[51],Caml$0[28])}
    function handle_uncaught_aux(do_at_exit,exit,f)
     {try
       {var _DO_=caml_call1(f,0);return _DO_}
      catch(exc)
       {exc = caml_wrap_exception(exc);
        var raw_backtrace=caml_call1(Stdlib_printexc[11],0);
        if(do_at_exit)try {caml_call1(Caml$0[89],0)}catch(_DR_){}
        try
         {print_with_backtrace(exc,raw_backtrace)}
        catch(_DP_){try {caml_call1(Stdlib_printf[3],_H_)}catch(_DQ_){}}
        return caml_call1(exit,1)}}
    function handle_uncaught_and_exit(f){return handle_uncaught_aux(1,_w_,f)}
    function handle_uncaught(must_exit,f)
     {var exit=must_exit?_w_:function(_DN_){return 0};
      return handle_uncaught_aux(must_exit,exit,f)}
    function reraise_uncaught(str,func)
     {try
       {var _DM_=caml_call1(func,0);return _DM_}
      catch(exn){exn = caml_wrap_exception(exn);throw [0,Reraised,str,exn]}}
    function raise_without_backtrace(e)
     {runtime.Base_clear_caml_backtrace_pos(0);throw e}
    function initialize_module(param)
     {return caml_call1(Stdlib_printexc[14],print_with_backtrace)}
    function clear_backtrace(_DL_)
     {return runtime.Base_clear_caml_backtrace_pos(_DL_)}
    var
     Private$0=[0,clear_backtrace],
     Base_Exn=
      [0,
       sexp_of_exn,
       pp$1,
       Finally,
       Reraised,
       create_s,
       raise_without_backtrace,
       reraise,
       reraisef,
       to_string$1,
       to_string_mach$0,
       protectx,
       protect,
       handle_uncaught,
       handle_uncaught_and_exit,
       reraise_uncaught,
       does_raise,
       initialize_module,
       Private$0];
    caml_register_global(972,Base_Exn,"Base__Exn");
    function with_return(f)
     {var Return=[248,cst_Return,caml_fresh_oo_id(0)],is_alive=[0,1];
      function return$0(a)
       {if(1 - is_alive[1])
         caml_call1(failwith$0,cst_use_of_return_from_a_with_);
        return raise_without_backtrace([0,Return,a])}
      try
       {var a$0=caml_call1(f,return$0);is_alive[1] = 0;return a$0}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        is_alive[1] = 0;
        if(exn[1] === Return){var a=exn[2];return a}
        throw exn}}
    function with_return_option(f)
     {return with_return
              (function(return$0)
                {caml_call1(f,function(a){return caml_call1(return$0,[0,a])});
                 return 0})}
    function prepend(param,f)
     {return function(x){return caml_call1(param,caml_call1(f,x))}}
    var Base_With_return=[0,with_return,with_return_option,prepend];
    caml_register_global(973,Base_With_return,"Base__With_return");
    var Base_Variant=[0];
    caml_register_global(974,Base_Variant,"Base__Variant");
    var Base_Variantslib=[0];
    caml_register_global(975,Base_Variantslib,"Base__Variantslib");
    function S_to_S2(X)
     {var
       symbol_bind=X[1],
       symbol_map=X[2],
       Monad_infix=X[3],
       bind=X[4],
       return$0=X[5],
       map=X[6],
       join=X[7],
       ignore_m=X[8],
       all=X[9],
       all_unit=X[10],
       Let_syntax=X[11];
      return [0,
              symbol_bind,
              symbol_map,
              Let_syntax,
              Monad_infix,
              bind,
              return$0,
              map,
              join,
              ignore_m,
              all,
              all_unit]}
    function S2_to_S3(X)
     {var
       symbol_bind=X[1],
       symbol_map=X[2],
       Let_syntax=X[3],
       Monad_infix=X[4],
       bind=X[5],
       return$0=X[6],
       map=X[7],
       join=X[8],
       ignore_m=X[9],
       all=X[10],
       all_unit=X[11];
      return [0,
              symbol_bind,
              symbol_map,
              Let_syntax,
              Monad_infix,
              bind,
              return$0,
              map,
              join,
              ignore_m,
              all,
              all_unit]}
    function S_to_S_indexed(X)
     {var
       symbol_bind=X[1],
       symbol_map=X[2],
       Monad_infix=X[3],
       bind=X[4],
       return$0=X[5],
       map=X[6],
       join=X[7],
       ignore_m=X[8],
       all=X[9],
       all_unit=X[10],
       Let_syntax=X[11];
      return [0,
              symbol_bind,
              symbol_map,
              Let_syntax,
              Monad_infix,
              bind,
              return$0,
              map,
              join,
              ignore_m,
              all,
              all_unit]}
    function S2_to_S(X)
     {var
       symbol_bind=X[1],
       symbol_map=X[2],
       Let_syntax=X[3],
       Monad_infix=X[4],
       bind=X[5],
       return$0=X[6],
       map=X[7],
       join=X[8],
       ignore_m=X[9],
       all=X[10],
       all_unit=X[11];
      return [0,
              symbol_bind,
              symbol_map,
              Monad_infix,
              bind,
              return$0,
              map,
              join,
              ignore_m,
              all,
              all_unit,
              Let_syntax]}
    function S3_to_S2(X)
     {var
       symbol_bind=X[1],
       symbol_map=X[2],
       Let_syntax=X[3],
       Monad_infix=X[4],
       bind=X[5],
       return$0=X[6],
       map=X[7],
       join=X[8],
       ignore_m=X[9],
       all=X[10],
       all_unit=X[11];
      return [0,
              symbol_bind,
              symbol_map,
              Let_syntax,
              Monad_infix,
              bind,
              return$0,
              map,
              join,
              ignore_m,
              all,
              all_unit]}
    function S_indexed_to_S2(X)
     {var
       symbol_bind=X[1],
       symbol_map=X[2],
       Let_syntax=X[3],
       Monad_infix=X[4],
       bind=X[5],
       return$0=X[6],
       map=X[7],
       join=X[8],
       ignore_m=X[9],
       all=X[10],
       all_unit=X[11];
      return [0,
              symbol_bind,
              symbol_map,
              Let_syntax,
              Monad_infix,
              bind,
              return$0,
              map,
              join,
              ignore_m,
              all,
              all_unit]}
    var
     Base_Monad_intf=
      [0,S_to_S2,S2_to_S3,S_to_S_indexed,S2_to_S,S3_to_S2,S_indexed_to_S2];
    caml_register_global(976,Base_Monad_intf,"Base__Monad_intf");
    function Make_general(_DF_)
     {var _DG_=_DF_[1],_DH_=_DF_[3];
      function map_via_bind(ma,f)
       {function _DJ_(a)
         {var _DK_=caml_call1(f,a);return caml_call1(_DF_[3],_DK_)}
        return caml_call2(_DF_[1],ma,_DJ_)}
      var _DI_=_DF_[2];
      if(typeof _DI_ === "number")
       var map=map_via_bind;
      else
       var x=_DI_[2],map=x;
      function symbol_bind(t,f){return caml_call2(_DG_,t,f)}
      function symbol_map(t,f){return caml_call2(map,t,f)}
      var
       Monad_infix=[0,symbol_bind,symbol_map],
       symbol_bind$0=Monad_infix[1],
       symbol_map$0=Monad_infix[2],
       symbol_bind$1=Monad_infix[1],
       symbol_map$1=Monad_infix[2];
      function both(a,b)
       {return caml_call2
                (symbol_bind$1,
                 a,
                 function(a)
                  {return caml_call2
                           (symbol_map$1,b,function(b){return [0,a,b]})})}
      var
       Open_on_rhs=[0],
       Let_syntax=[0,_DH_,_DG_,map,both,Open_on_rhs],
       Let_syntax$0=[0,_DH_,symbol_bind$1,symbol_map$1,Let_syntax];
      function join(t)
       {return caml_call2(symbol_bind$0,t,function(t){return t})}
      function ignore_m(t){return caml_call2(map,t,function(param){return 0})}
      function loop(vs,param)
       {if(param)
         {var ts=param[2],t=param[1];
          return caml_call2
                  (symbol_bind$0,t,function(v){return loop([0,v,vs],ts)})}
        return caml_call1(_DH_,rev(vs))}
      function all(ts){return loop(0,ts)}
      function all_unit(param)
       {if(param)
         {var ts=param[2],t=param[1];
          return caml_call2
                  (symbol_bind$0,t,function(param){return all_unit(ts)})}
        return caml_call1(_DH_,0)}
      return [0,
              _DG_,
              _DH_,
              map_via_bind,
              map,
              Monad_infix,
              symbol_bind$0,
              symbol_map$0,
              Let_syntax$0,
              join,
              ignore_m,
              all,
              all_unit]}
    function Make_indexed(M)
     {var
       bind=M[1],
       map=M[2],
       return$0=M[3],
       _DE_=Make_general([0,bind,map,return$0]);
      return [0,
              _DE_[6],
              _DE_[7],
              _DE_[8],
              _DE_[5],
              _DE_[1],
              _DE_[2],
              _DE_[4],
              _DE_[9],
              _DE_[10],
              _DE_[11],
              _DE_[12]]}
    function Make3(M)
     {var
       bind=M[1],
       map=M[2],
       return$0=M[3],
       _DD_=Make_general([0,bind,map,return$0]);
      return [0,
              _DD_[6],
              _DD_[7],
              _DD_[8],
              _DD_[5],
              _DD_[1],
              _DD_[2],
              _DD_[4],
              _DD_[9],
              _DD_[10],
              _DD_[11],
              _DD_[12]]}
    function Make2(M)
     {var
       bind=M[1],
       map=M[2],
       return$0=M[3],
       _DC_=Make_general([0,bind,map,return$0]);
      return [0,
              _DC_[6],
              _DC_[7],
              _DC_[8],
              _DC_[5],
              _DC_[1],
              _DC_[2],
              _DC_[4],
              _DC_[9],
              _DC_[10],
              _DC_[11],
              _DC_[12]]}
    function Make(M)
     {var
       bind=M[1],
       return$0=M[2],
       map=M[3],
       _DB_=Make_general([0,bind,map,return$0]);
      return [0,
              _DB_[6],
              _DB_[7],
              _DB_[5],
              _DB_[1],
              _DB_[2],
              _DB_[4],
              _DB_[9],
              _DB_[10],
              _DB_[11],
              _DB_[12],
              _DB_[8]]}
    function bind(a,f){return caml_call1(f,a)}
    function return$0(a){return a}
    var
     map$0=[0,-198771759,function(a,f){return caml_call1(f,a)}],
     include$16=Make([0,bind,return$0,map$0]),
     symbol_bind=include$16[1],
     symbol_map=include$16[2],
     Monad_infix=include$16[3],
     bind$0=include$16[4],
     return$1=include$16[5],
     map$1=include$16[6],
     join=include$16[7],
     ignore_m=include$16[8],
     all$0=include$16[9],
     all_unit=include$16[10],
     Let_syntax=include$16[11],
     Ident=
      [0,
       symbol_bind,
       symbol_map,
       Monad_infix,
       bind$0,
       return$1,
       map$1,
       join,
       ignore_m,
       all$0,
       all_unit,
       Let_syntax],
     Base_Monad=[0,Make,Make2,Make3,Make_indexed,Ident];
    caml_register_global(977,Base_Monad,"Base__Monad");
    var Base_Applicative_intf=[0];
    caml_register_global(978,Base_Applicative_intf,"Base__Applicative_intf");
    function is_empty(param){return param?0:1}
    function partition_map(t,f)
     {var t$0=t,fst=0,snd=0;
      for(;;)
       {if(t$0)
         {var t$1=t$0[2],x=t$0[1],match=caml_call1(f,x);
          if(4152137 <= match[1])
           {var y=match[2],snd$0=[0,y,snd],t$0=t$1,snd=snd$0;continue}
          var y$0=match[2],fst$0=[0,y$0,fst],t$0=t$1,fst=fst$0;
          continue}
        var _DA_=rev(snd);
        return [0,rev(fst),_DA_]}}
    var
     include$17=
      [0,
       hd_exn,
       length,
       rev_append,
       tl_exn,
       unzip,
       exists,
       exists2_ok,
       fold$0,
       fold2_ok,
       for_all,
       for_all2_ok,
       iter$0,
       iter2_ok,
       nontail_map,
       nontail_mapi,
       partition,
       rev_map,
       rev_map2_ok,
       func,
       stable_sort$0,
       rev,
       is_empty,
       partition_map];
    caml_register_global(979,include$17,"Base__List1");
    function t_of_sexp$12(of_a,of_b,sexp)
     {if(0 === sexp[0])
       {var _Dw_=sexp[1],switch$0=0;
        if(caml_string_notequal(_Dw_,cst_Error))
         {var switch$1=0;
          if(caml_string_notequal(_Dw_,cst_Ok))
           if(caml_string_notequal(_Dw_,cst_error))
            {if(caml_string_notequal(_Dw_,cst_ok)){switch$0 = 1;switch$1 = 1}}
           else
            switch$1 = 1;
          if(! switch$1)
           return caml_call2(Sexplib0_Sexp_conv_error[5],tp_loc,sexp)}
        if(! switch$0)
         return caml_call2(Sexplib0_Sexp_conv_error[5],tp_loc,sexp)}
      else
       {var _Dx_=sexp[1];
        if(! _Dx_)return caml_call2(Sexplib0_Sexp_conv_error[7],tp_loc,sexp);
        var _Dy_=_Dx_[1];
        if(0 !== _Dy_[0])
         return caml_call2(Sexplib0_Sexp_conv_error[6],tp_loc,sexp);
        var _Dz_=_Dy_[1],switch$2=0;
        if(caml_string_notequal(_Dz_,cst_Error$0))
         {var switch$3=0;
          if(caml_string_notequal(_Dz_,cst_Ok$0))
           if(caml_string_notequal(_Dz_,cst_error$0))
            {if(caml_string_notequal(_Dz_,cst_ok$0))
              {switch$2 = 1;switch$3 = 1}}
           else
            switch$3 = 1;
          if(! switch$3)
           {var sexp_args=_Dx_[2];
            if(sexp_args && ! sexp_args[2])
             {var v0=sexp_args[1],v0$0=caml_call1(of_a,v0);return [0,v0$0]}
            return caml_call3(Sexplib0_Sexp_conv_error[4],tp_loc,_Dz_,sexp)}}
        if(! switch$2)
         {var sexp_args$0=_Dx_[2];
          if(sexp_args$0 && ! sexp_args$0[2])
           {var v0$1=sexp_args$0[1],v0$2=caml_call1(of_b,v0$1);
            return [1,v0$2]}
          return caml_call3(Sexplib0_Sexp_conv_error[4],tp_loc,_Dz_,sexp)}}
      return caml_call2(Sexplib0_Sexp_conv_error[8],tp_loc,sexp)}
    function sexp_of_t$13(of_a,of_b,param)
     {if(0 === param[0])
       {var v0=param[1],v0$0=caml_call1(of_a,v0);
        return [1,[0,_I_,[0,v0$0,0]]]}
      var v0$1=param[1],v0$2=caml_call1(of_b,v0$1);
      return [1,[0,_J_,[0,v0$2,0]]]}
    function compare$19(cmp_a,cmp_b,a_001,match)
     {if(a_001 === match)return 0;
      if(0 === a_001[0])
       {var _Du_=a_001[1];
        if(0 === match[0])
         {var b_004=match[1];return caml_call2(cmp_a,_Du_,b_004)}
        return -1}
      var _Dv_=a_001[1];
      if(0 === match[0])return 1;
      var b_006=match[1];
      return caml_call2(cmp_b,_Dv_,b_006)}
    function equal$13(cmp_a,cmp_b,a_007,match)
     {if(a_007 === match)return 1;
      if(0 === a_007[0])
       {var _Ds_=a_007[1];
        if(0 === match[0])
         {var b_010=match[1];return caml_call2(cmp_a,_Ds_,b_010)}
        return 0}
      var _Dt_=a_007[1];
      if(0 === match[0])return 0;
      var b_012=match[1];
      return caml_call2(cmp_b,_Dt_,b_012)}
    function hash_fold_t$9(hash_fold_a,hash_fold_b,hsv,arg)
     {if(0 === arg[0])
       {var a0=arg[1],hsv$0=runtime.Base_internalhash_fold_int(hsv,0);
        return caml_call2(hash_fold_a,hsv$0,a0)}
      var a0$0=arg[1],hsv$1=runtime.Base_internalhash_fold_int(hsv,1);
      return caml_call2(hash_fold_b,hsv$1,a0$0)}
    function bind$1(x,f)
     {if(0 === x[0]){var x$0=x[1];return caml_call1(f,x$0)}return x}
    var
     map$2=
      [0,
       -198771759,
       function(x,f)
        {if(0 === x[0]){var x$0=x[1];return [0,caml_call1(f,x$0)]}return x}];
    function return$2(x){return [0,x]}
    var
     include$18=Make2([0,bind$1,map$2,return$2]),
     symbol_bind$0=include$18[1],
     symbol_map$0=include$18[2],
     Let_syntax$0=include$18[3],
     Monad_infix$0=include$18[4],
     bind$2=include$18[5],
     return$3=include$18[6],
     map$3=include$18[7],
     join$0=include$18[8],
     ignore_m$0=include$18[9],
     all$1=include$18[10],
     all_unit$0=include$18[11];
    function fail(x){return [1,x]}
    function failf(format){return caml_call2(ksprintf,fail,format)}
    function map_error(t,f)
     {if(0 === t[0])return t;var x=t[1];return [1,caml_call1(f,x)]}
    function is_ok(param){return 0 === param[0]?1:0}
    function is_error(param){return 0 === param[0]?0:1}
    function ok(param)
     {if(0 === param[0]){var x=param[1];return [0,x]}return 0}
    function error(param)
     {if(0 === param[0])return 0;var x=param[1];return [0,x]}
    function of_option(opt,error)
     {if(opt){var x=opt[1];return [0,x]}return [1,error]}
    function iter$1(v,f)
     {if(0 === v[0]){var x=v[1];return caml_call1(f,x)}return 0}
    function iter_error(v,f)
     {if(0 === v[0])return 0;var x=v[1];return caml_call1(f,x)}
    function ok_fst(param)
     {if(0 === param[0]){var x=param[1];return [0,3506791,x]}
      var x$0=param[1];
      return [0,4152137,x$0]}
    function ok_if_true(bool,error){return bool?_K_:[1,error]}
    function try_with(f)
     {try
       {var _Dr_=[0,caml_call1(f,0)];return _Dr_}
      catch(exn){exn = caml_wrap_exception(exn);return [1,exn]}}
    function ok_exn(param)
     {if(0 === param[0]){var x=param[1];return x}var exn=param[1];throw exn}
    function ok_or_failwith(param)
     {if(0 === param[0]){var x=param[1];return x}
      var str=param[1];
      return caml_call1(failwith$0,str)}
    function combine(t1,match,ok,err)
     {if(0 === t1[0])
       {var _Dp_=t1[1];
        if(0 === match[0])
         {var ok2=match[1];return [0,caml_call2(ok,_Dp_,ok2)]}
        var e=match[1]}
      else
       {var _Dq_=t1[1];
        if(0 !== match[0])
         {var err2=match[1];return [1,caml_call2(err,_Dq_,err2)]}
        var e=_Dq_}
      return [1,e]}
    function combine_errors(l)
     {var match=partition_map(l,ok_fst),errs=match[2],ok=match[1];
      return errs?[1,errs]:[0,ok]}
    function combine_errors_unit(l)
     {function _Do_(param){return 0}
      return caml_call2(map$3,combine_errors(l),_Do_)}
    var
     Base_Result=
      [0,
       t_of_sexp$12,
       sexp_of_t$13,
       compare$19,
       equal$13,
       hash_fold_t$9,
       symbol_bind$0,
       symbol_map$0,
       Let_syntax$0,
       Monad_infix$0,
       bind$2,
       return$3,
       join$0,
       ignore_m$0,
       all$1,
       all_unit$0,
       ignore_m$0,
       fail,
       failf,
       is_ok,
       is_error,
       ok,
       ok_exn,
       ok_or_failwith,
       error,
       of_option,
       iter$1,
       iter_error,
       map$3,
       map_error,
       combine,
       combine_errors,
       combine_errors_unit,
       ok_fst,
       ok_if_true,
       try_with,
       ok_unit,
       [0,is_ok,is_error]];
    caml_register_global(981,Base_Result,"Base__Result");
    var
     Continue_or_stop=[0],
     include$19=[0,Continue_or_stop],
     Continue_or_stop$0=include$19[1],
     Base_Container_intf=[0,include$19,Continue_or_stop$0];
    caml_register_global(982,Base_Container_intf,"Base__Container_intf");
    var Base_T=[0];
    caml_register_global(983,Base_T,"Base__T");
    function iter$2(fold,t,f)
     {return caml_call3(fold,t,0,function(param,a){return caml_call1(f,a)})}
    function count(fold,t,f)
     {return caml_call3
              (fold,t,0,function(n,a){return caml_call1(f,a)?n + 1 | 0:n})}
    function sum(fold,M,t,f)
     {function _Dm_(n,a)
       {var _Dn_=caml_call1(f,a);return caml_call2(M[2],n,_Dn_)}
      return caml_call3(fold,t,M[1],_Dm_)}
    function fold_result(fold,init,f,t)
     {return with_return
              (function(param)
                {return [0,
                         caml_call3
                          (fold,
                           t,
                           init,
                           function(acc,item)
                            {var e=caml_call2(f,acc,item);
                             if(0 === e[0]){var x=e[1];return x}
                             return caml_call1(param,e)})]})}
    function fold_until(fold,init,f,finish,t)
     {return with_return
              (function(param)
                {return caml_call1
                         (finish,
                          caml_call3
                           (fold,
                            t,
                            init,
                            function(acc,item)
                             {var match=caml_call2(f,acc,item);
                              if(0 === match[0]){var x=match[1];return x}
                              var x$0=match[1];
                              return caml_call1(param,x$0)}))})}
    function min_elt(fold,t,compare)
     {return caml_call3
              (fold,
               t,
               0,
               function(acc,elt)
                {if(acc)
                  {var min=acc[1];
                   return caml_call2(symbol$82,caml_call2(compare,min,elt),0)
                           ?[0,elt]
                           :acc}
                 return [0,elt]})}
    function max_elt(fold,t,compare)
     {return caml_call3
              (fold,
               t,
               0,
               function(acc,elt)
                {if(acc)
                  {var max=acc[1];
                   return caml_call2(symbol$78,caml_call2(compare,max,elt),0)
                           ?[0,elt]
                           :acc}
                 return [0,elt]})}
    function length$0(fold,c)
     {return caml_call3(fold,c,0,function(acc,param){return acc + 1 | 0})}
    function is_empty$0(iter,c)
     {return with_return
              (function(r)
                {caml_call2(iter,c,function(param){return caml_call1(r,0)});
                 return 1})}
    function exists$0(iter,c,f)
     {return with_return
              (function(r)
                {caml_call2
                  (iter,
                   c,
                   function(x)
                    {var _Dl_=caml_call1(f,x);return _Dl_?caml_call1(r,1):_Dl_});
                 return 0})}
    function for_all$0(iter,c,f)
     {return with_return
              (function(r)
                {caml_call2
                  (iter,
                   c,
                   function(x)
                    {var _Dk_=1 - caml_call1(f,x);
                     return _Dk_?caml_call1(r,0):_Dk_});
                 return 1})}
    function find_map(iter,t,f)
     {return with_return
              (function(r)
                {caml_call2
                  (iter,
                   t,
                   function(x)
                    {var res=caml_call1(f,x);return res?caml_call1(r,res):0});
                 return 0})}
    function find(iter,c,f)
     {return with_return
              (function(r)
                {caml_call2
                  (iter,
                   c,
                   function(x)
                    {var _Dj_=caml_call1(f,x);
                     return _Dj_?caml_call1(r,[0,x]):_Dj_});
                 return 0})}
    function to_list$0(fold,c)
     {return rev(caml_call3(fold,c,0,function(acc,x){return [0,x,acc]}))}
    function to_array(length,iter,c)
     {var array=[0,[0]],i=[0,0];
      caml_call2
       (iter,
        c,
        function(x)
         {if(caml_call2(symbol$81,i[1],0))
           array[1] = caml_make_vect(caml_call1(length,c),x);
          var _Di_=i[1];
          caml_check_bound(array[1],_Di_)[1 + _Di_] = x;
          return incr(i)});
      return array[1]}
    function Make_gen(T)
     {var _Dd_=T[1],_De_=T[2];
      if(typeof _De_ === "number")
       var _Df_=function(t,f){return iter$2(_Dd_,t,f)};
      else
       var iter=_De_[2],_Df_=iter;
      var _Dg_=T[3];
      if(typeof _Dg_ === "number")
       var length=function(t){return length$0(_Dd_,t)};
      else
       var length$1=_Dg_[2],length=length$1;
      function is_empty(t){return is_empty$0(_Df_,t)}
      function sum$0(m,t){return function(_Dh_){return sum(_Dd_,m,t,_Dh_)}}
      function count$0(t,f){return count(_Dd_,t,f)}
      function exists(t,f){return exists$0(_Df_,t,f)}
      function for_all(t,f){return for_all$0(_Df_,t,f)}
      function find_map$0(t,f){return find_map(_Df_,t,f)}
      function find$0(t,f){return find(_Df_,t,f)}
      function to_list(t){return to_list$0(_Dd_,t)}
      function to_array$0(t){return to_array(length,_Df_,t)}
      function min_elt$0(t,compare){return min_elt(_Dd_,t,compare)}
      function max_elt$0(t,compare){return max_elt(_Dd_,t,compare)}
      function fold_result$0(t,init,f){return fold_result(_Dd_,init,f,t)}
      function fold_until$0(t,init,f,finish)
       {return fold_until(_Dd_,init,f,finish,t)}
      return [0,
              length,
              is_empty,
              _Df_,
              _Dd_,
              fold_result$0,
              fold_until$0,
              exists,
              for_all,
              count$0,
              sum$0,
              find$0,
              find_map$0,
              to_list,
              to_array$0,
              min_elt$0,
              max_elt$0]}
    function _L_(T)
     {var
       length=T[4],
       iter=T[3],
       fold=T[2],
       include=Make_gen([0,fold,iter,length]),
       length$0=include[1],
       is_empty=include[2],
       iter$0=include[3],
       fold$0=include[4],
       fold_result=include[5],
       fold_until=include[6],
       exists=include[7],
       for_all=include[8],
       count=include[9],
       sum=include[10],
       find=include[11],
       find_map=include[12],
       to_list=include[13],
       to_array=include[14],
       min_elt=include[15],
       max_elt=include[16];
      function mem(t,elt){return caml_call2(exists,t,caml_call1(T[1][1],elt))}
      return [0,
              mem,
              length$0,
              is_empty,
              iter$0,
              fold$0,
              fold_result,
              fold_until,
              exists,
              for_all,
              count,
              sum,
              find,
              find_map,
              to_list,
              to_array,
              min_elt,
              max_elt]}
    function _M_(T)
     {var
       fold=T[1],
       iter=T[2],
       length=T[3],
       include=Make_gen([0,fold,iter,length]),
       length$0=include[1],
       is_empty=include[2],
       iter$0=include[3],
       fold$0=include[4],
       fold_result=include[5],
       fold_until=include[6],
       exists=include[7],
       for_all=include[8],
       count=include[9],
       sum=include[10],
       find=include[11],
       find_map=include[12],
       to_list=include[13],
       to_array=include[14],
       min_elt=include[15],
       max_elt=include[16];
      function mem(t,a,equal){return caml_call2(exists,t,caml_call1(equal,a))}
      return [0,
              mem,
              length$0,
              is_empty,
              iter$0,
              fold$0,
              fold_result,
              fold_until,
              exists,
              for_all,
              count,
              sum,
              find,
              find_map,
              to_list,
              to_array,
              min_elt,
              max_elt]}
    var
     Base_Container=
      [0,
       iter$2,
       count,
       min_elt,
       max_elt,
       length$0,
       to_list$0,
       sum,
       fold_result,
       fold_until,
       is_empty$0,
       exists$0,
       for_all$0,
       find,
       find_map,
       to_array,
       _M_,
       _L_];
    caml_register_global(984,Base_Container,"Base__Container");
    var
     Undefined=Stdlib_lazy[1],
     force_val=Stdlib_lazy[2],
     from_fun=Stdlib_lazy[3],
     from_val=Stdlib_lazy[4],
     is_val=Stdlib_lazy[5];
    function _N_(t,f)
     {return [246,
              function(_Da_)
               {var
                 _Db_=caml_obj_tag(t),
                 _Dc_=
                  250 === _Db_
                   ?t[1]
                   :246 === _Db_?caml_call1(CamlinternalLazy[2],t):t;
                return caml_call1(f,_Dc_)}]}
    function compare$20(compare_a,t1,t2)
     {if(t1 === t2)return 0;
      var
       _C8_=caml_obj_tag(t2),
       _C9_=
        250 === _C8_?t2[1]:246 === _C8_?caml_call1(CamlinternalLazy[2],t2):t2,
       _C__=caml_obj_tag(t1),
       _C$_=
        250 === _C__?t1[1]:246 === _C__?caml_call1(CamlinternalLazy[2],t1):t1;
      return caml_call2(compare_a,_C$_,_C9_)}
    var hash_fold_t$10=_j_[12];
    function return$4(x){return caml_call1(from_val,x)}
    function bind$3(t,f)
     {return [246,
              function(_C3_)
               {var
                 _C4_=caml_obj_tag(t),
                 _C5_=
                  250 === _C4_
                   ?t[1]
                   :246 === _C4_?caml_call1(CamlinternalLazy[2],t):t,
                 _C6_=caml_call1(f,_C5_),
                 _C7_=caml_obj_tag(_C6_);
                return 250 === _C7_
                        ?_C6_[1]
                        :246 === _C7_?caml_call1(CamlinternalLazy[2],_C6_):_C6_}]}
    var
     map$4=[0,-198771759,_N_],
     include$20=Make([0,bind$3,return$4,map$4]),
     symbol_bind$1=include$20[1],
     symbol_map$1=include$20[2],
     Monad_infix$1=include$20[3],
     bind$4=include$20[4],
     return$5=include$20[5],
     map$5=include$20[6],
     join$1=include$20[7],
     ignore_m$1=include$20[8],
     all$2=include$20[9],
     all_unit$1=include$20[10],
     Let_syntax$1=include$20[11];
    function sexp_of_t$14(sexp_of_a,t)
     {if(caml_call1(is_val,t))
       {var
         _C1_=caml_obj_tag(t),
         _C2_=
          250 === _C1_?t[1]:246 === _C1_?caml_call1(CamlinternalLazy[2],t):t;
        return caml_call1(sexp_of_a,_C2_)}
      return caml_call1(sexp_of_t$2,cst_unforced_lazy)}
    var
     T_unforcing=[0,sexp_of_t$14],
     Base_Lazy=
      [0,
       compare$20,
       hash_fold_t$10,
       t_of_sexp$9,
       sexp_of_t$9,
       symbol_bind$1,
       symbol_map$1,
       Monad_infix$1,
       bind$4,
       return$5,
       map$5,
       join$1,
       ignore_m$1,
       all$2,
       all_unit$1,
       Let_syntax$1,
       Undefined,
       force_val,
       from_fun,
       from_val,
       is_val,
       T_unforcing];
    caml_register_global(986,Base_Lazy,"Base__Lazy");
    function forbid_nondeterminism_in_tests(allow_in_tests)
     {if(am_testing)
       {if(allow_in_tests && allow_in_tests[1])return 0;
        return caml_call1(failwith$0,cst_initializing_Random_with_a)}
      return am_testing}
    function bits(t)
     {var
       _CZ_=caml_obj_tag(t),
       _C0_=250 === _CZ_?t[1]:246 === _CZ_?caml_call1(CamlinternalLazy[2],t):t;
      return caml_call1(Stdlib_random[11][4],_C0_)}
    function bool(t)
     {var
       _CX_=caml_obj_tag(t),
       _CY_=250 === _CX_?t[1]:246 === _CX_?caml_call1(CamlinternalLazy[2],t):t;
      return caml_call1(Stdlib_random[11][10],_CY_)}
    function int$0(t,x)
     {var
       _CV_=caml_obj_tag(t),
       _CW_=250 === _CV_?t[1]:246 === _CV_?caml_call1(CamlinternalLazy[2],t):t;
      return caml_call2(Stdlib_random[11][5],_CW_,x)}
    function int32(t,x)
     {var
       _CT_=caml_obj_tag(t),
       _CU_=250 === _CT_?t[1]:246 === _CT_?caml_call1(CamlinternalLazy[2],t):t;
      return caml_call2(Stdlib_random[11][6],_CU_,x)}
    function int64(t,x)
     {var
       _CR_=caml_obj_tag(t),
       _CS_=250 === _CR_?t[1]:246 === _CR_?caml_call1(CamlinternalLazy[2],t):t;
      return caml_call2(Stdlib_random[11][8],_CS_,x)}
    function nativeint(t,x)
     {var
       _CP_=caml_obj_tag(t),
       _CQ_=250 === _CP_?t[1]:246 === _CP_?caml_call1(CamlinternalLazy[2],t):t;
      return caml_call2(Stdlib_random[11][7],_CQ_,x)}
    function make(seed)
     {return caml_call1(from_val,caml_call1(Stdlib_random[11][1],seed))}
    function copy$0(t)
     {var
       _CN_=caml_obj_tag(t),
       _CO_=250 === _CN_?t[1]:246 === _CN_?caml_call1(CamlinternalLazy[2],t):t;
      return caml_call1(from_val,caml_call1(Stdlib_random[11][3],_CO_))}
    function char$0(t){return int$0(t,256)}
    function ascii(t){return int$0(t,128)}
    function make_self_init(allow_in_tests,param)
     {forbid_nondeterminism_in_tests(allow_in_tests);
      return caml_call1(from_val,caml_call1(Stdlib_random[11][2],0))}
    function assign(t1,t2)
     {var
       _CJ_=caml_obj_tag(t1),
       _CK_=
        250 === _CJ_?t1[1]:246 === _CJ_?caml_call1(CamlinternalLazy[2],t1):t1,
       _CL_=caml_obj_tag(t2),
       _CM_=
        250 === _CL_?t2[1]:246 === _CL_?caml_call1(CamlinternalLazy[2],t2):t2;
      caml_call5(blit,_CM_[1],0,_CK_[1],0,_CK_[1].length - 1);
      _CK_[2] = _CM_[2];
      return 0}
    if(am_testing)
     {var t=caml_call1(Stdlib_random[12],0);
      caml_call1(Stdlib_random[1],137);
      var _O_=caml_call1(from_val,t)}
    else
     var
      _O_=
       [246,
        function(_CG_)
         {var _CH_=make_self_init(0,0),_CI_=caml_obj_tag(_CH_);
          return 250 === _CI_
                  ?_CH_[1]
                  :246 === _CI_?caml_call1(CamlinternalLazy[2],_CH_):_CH_}];
    function int_on_64bits(t,bound)
     {return caml_call2(symbol$79,bound,1073741823)
              ?int$0(t,bound)
              :caml_int64_to_int32(int64(t,caml_int64_of_int32(bound)))}
    function int_on_32bits(t,bound)
     {return caml_call2(symbol$79,bound,1073741823)
              ?int$0(t,bound)
              :int32(t,bound)}
    var int$1=word_size?int_on_64bits:int_on_32bits;
    function bits$0(state){return caml_int64_of_int32(bits(state))}
    function full_range_int64(state)
     {var
       _CE_=caml_int64_shift_left(bits$0(state),60),
       _CF_=caml_int64_xor(caml_int64_shift_left(bits$0(state),30),_CE_);
      return caml_int64_xor(bits$0(state),_CF_)}
    function bits$1(state){return bits(state)}
    function full_range_int32(state)
     {var _CD_=bits$1(state) << 30;return bits$1(state) ^ _CD_}
    function full_range_int_on_64bits(state)
     {return caml_int64_to_int32(full_range_int64(state))}
    function full_range_int_on_32bits(state){return full_range_int32(state)}
    var
     full_range_int_on_64bits$0=
      word_size?full_range_int_on_64bits:full_range_int_on_32bits;
    function full_range_nativeint_on_64bits(state)
     {return caml_int64_to_int32(full_range_int64(state))}
    function full_range_nativeint_on_32bits(state)
     {return full_range_int32(state)}
    var
     full_range_nativeint=
      word_size?full_range_nativeint_on_64bits:full_range_nativeint_on_32bits;
    function raise_crossed_bounds
     (name,lower_bound,upper_bound,string_of_bound)
     {var
       _CB_=caml_call1(string_of_bound,upper_bound),
       _CC_=caml_call1(string_of_bound,lower_bound);
      return caml_call4(failwithf(_P_),name,_CC_,_CB_,0)}
    function int_incl(state,lo,hi)
     {if(caml_call2(symbol$82,lo,hi))
       raise_crossed_bounds(cst_int,lo,hi,to_string);
      var diff=hi - lo | 0;
      if(caml_call2(symbol$81,diff,max_value$0))
       return lo + (full_range_int_on_64bits$0(state) & max_value$0) | 0;
      if(caml_call2(symbol$83,diff,0))
       return lo + int$1(state,diff + 1 | 0) | 0;
      for(;;)
       {var int$0=full_range_int_on_64bits$0(state);
        if(caml_call2(symbol$83,int$0,lo) && caml_call2(symbol$79,int$0,hi))
         return int$0;
        continue}}
    function int32_incl(state,lo,hi)
     {if(caml_call2(Int32_replace_polymorphic_comp[5],lo,hi))
       raise_crossed_bounds(cst_int32,lo,hi,Stdlib_int32[14]);
      var diff=hi - lo | 0;
      if(caml_call2(Int32_replace_polymorphic_comp[4],diff,Stdlib_int32[9]))
       {var _CA_=Stdlib_int32[9];
        return lo + (full_range_int32(state) & _CA_) | 0}
      if(caml_call2(Int32_replace_polymorphic_comp[6],diff,0))
       return lo + int32(state,caml_call1(Stdlib_int32[6],diff)) | 0;
      for(;;)
       {var int$0=full_range_int32(state);
        if
         (caml_call2(Int32_replace_polymorphic_comp[6],int$0,lo)
          &&
          caml_call2(Int32_replace_polymorphic_comp[2],int$0,hi))
         return int$0;
        continue}}
    function nativeint_incl(state,lo,hi)
     {if(caml_call2(include$3[5],lo,hi))
       raise_crossed_bounds(cst_nativeint,lo,hi,Stdlib_nativeint[15]);
      var diff=hi - lo | 0;
      if(caml_call2(include$3[4],diff,Stdlib_nativeint[10]))
       {var _Cz_=Stdlib_nativeint[10];
        return lo + (full_range_nativeint(state) & _Cz_) | 0}
      if(caml_call2(include$3[6],diff,0))
       return lo + nativeint(state,caml_call1(Stdlib_nativeint[6],diff)) | 0;
      for(;;)
       {var int$0=full_range_nativeint(state);
        if
         (caml_call2(include$3[6],int$0,lo)
          &&
          caml_call2(include$3[2],int$0,hi))
         return int$0;
        continue}}
    function int64_incl(state,lo,hi)
     {if(caml_call2(include$2[5],lo,hi))
       raise_crossed_bounds(cst_int64,lo,hi,Stdlib_int64[14]);
      var diff=caml_int64_sub(hi,lo);
      if(caml_call2(include$2[4],diff,Stdlib_int64[9]))
       {var _Cy_=Stdlib_int64[9];
        return caml_int64_add(lo,caml_int64_and(full_range_int64(state),_Cy_))}
      if(caml_call2(include$2[6],diff,_Q_))
       return caml_int64_add(lo,int64(state,caml_call1(Stdlib_int64[6],diff)));
      for(;;)
       {var int$0=full_range_int64(state);
        if
         (caml_call2(include$2[6],int$0,lo)
          &&
          caml_call2(include$2[2],int$0,hi))
         return int$0;
        continue}}
    function float$0(state,hi)
     {for(;;)
       {var
         r1=bits(state),
         r2=bits(state),
         result=(r1 * 9.31322574615478516e-10 + r2) * 9.31322574615478516e-10;
        if(caml_call2(include$7[1],result,1.))return result * hi;
        continue}}
    function float_range(state,lo,hi)
     {if(caml_call2(include$7[5],lo,hi))
       raise_crossed_bounds(cst_float,lo,hi,Caml$0[23]);
      return lo + float$0(state,hi - lo)}
    function bits$2(param){return bits(_O_)}
    function int$2(x){return int$1(_O_,x)}
    function int32$0(x){return int32(_O_,x)}
    function nativeint$0(x){return nativeint(_O_,x)}
    function int64$0(x){return int64(_O_,x)}
    function float$1(x){return float$0(_O_,x)}
    function int_incl$0(x,y){return int_incl(_O_,x,y)}
    function int32_incl$0(x,y){return int32_incl(_O_,x,y)}
    function nativeint_incl$0(x,y){return nativeint_incl(_O_,x,y)}
    function int64_incl$0(x,y){return int64_incl(_O_,x,y)}
    function float_range$0(x,y){return float_range(_O_,x,y)}
    function bool$0(param){return bool(_O_)}
    function char$1(param){return char$0(_O_)}
    function ascii$0(param){return ascii(_O_)}
    function full_init(seed){return assign(_O_,make(seed))}
    function init$0(seed){return full_init([0,seed])}
    function self_init(allow_in_tests,param)
     {forbid_nondeterminism_in_tests(allow_in_tests);
      return full_init(runtime.caml_sys_random_seed(0))}
    function set_state(s){return assign(_O_,s)}
    var
     _R_=
      [0,
       _O_,
       make,
       make_self_init,
       copy$0,
       bits,
       int$1,
       int32,
       nativeint,
       int64,
       float$0,
       int_incl,
       int32_incl,
       nativeint_incl,
       int64_incl,
       float_range,
       bool,
       char$0,
       ascii],
     Base_Random=
      [0,
       init$0,
       full_init,
       self_init,
       bits$2,
       int$2,
       int32$0,
       nativeint$0,
       int64$0,
       float$1,
       int_incl$0,
       int32_incl$0,
       nativeint_incl$0,
       int64_incl$0,
       float_range$0,
       bool$0,
       char$1,
       ascii$0,
       _R_,
       set_state];
    caml_register_global(991,Base_Random,"Base__Random");
    function permute(opt,t)
     {if(opt)var sth=opt[1],random_state=sth;else var random_state=_R_[1];
      var _Cw_=t.length - 1;
      if(! (_Cw_ < 2))
       {var i=_Cw_;
        for(;;)
         {swap(t,i - 1 | 0,caml_call2(_R_[6],random_state,i));
          var _Cx_=i - 1 | 0;
          if(2 !== i){var i=_Cx_;continue}
          break}}
      return 0}
    var
     Base_Array_permute=
      [0,
       invalid_argf,
       Array,
       max_length$0,
       create,
       append,
       blit,
       concat,
       copy,
       fill,
       init,
       make_matrix,
       of_list,
       sub$0,
       to_list,
       fold,
       fold_right,
       iter,
       iteri,
       map,
       mapi,
       stable_sort,
       swap,
       permute];
    caml_register_global(992,Base_Array_permute,"Base__Array_permute");
    var Base_Equal=[0];
    caml_register_global(993,Base_Equal,"Base__Equal");
    function const$0(c,param){return c}
    function non(f,x){return 1 - caml_call1(f,x)}
    function forever(f)
     {function forever(param){for(;;){caml_call1(f,0);continue}}
      try
       {var _Cv_=forever(0);return _Cv_}
      catch(e){e = caml_wrap_exception(e);return e}}
    function compose(f,g,x){return caml_call1(f,caml_call1(g,x))}
    function flip(f,x,y){return caml_call2(f,y,x)}
    function apply_n_times(n,f,x)
     {var n$0=n,x$0=x;
      for(;;)
       {if(caml_call2(symbol$79,n$0,0))return x$0;
        var x$1=caml_call1(f,x$0),n$1=n$0 - 1 | 0,n$0=n$1,x$0=x$1;
        continue}}
    var Base_Fn=[0,const$0,non,forever,apply_n_times,compose,flip];
    caml_register_global(994,Base_Fn,"Base__Fn");
    var compare$21=caml_int_compare;
    function hash_fold_t$11(hsv,arg)
     {switch(arg)
       {case 0:return runtime.Base_internalhash_fold_int(hsv,0);
        case 1:return runtime.Base_internalhash_fold_int(hsv,1);
        default:return runtime.Base_internalhash_fold_int(hsv,2)}}
    function hash$0(x)
     {var hsv=create$0(0,0);
      return runtime.Base_internalhash_get_hash_value(hash_fold_t$11(hsv,x))}
    function t_of_sexp$13(sexp)
     {if(0 === sexp[0])
       {var _Cr_=sexp[1],switch$0=0;
        if(caml_string_notequal(_Cr_,cst_Equal))
         {var switch$1=0;
          if(caml_string_notequal(_Cr_,cst_Greater))
           {var switch$2=0;
            if(caml_string_notequal(_Cr_,cst_Less))
             if(caml_string_notequal(_Cr_,cst_equal))
              if(caml_string_notequal(_Cr_,cst_greater))
               {if(caml_string_notequal(_Cr_,cst_less))
                 {switch$0 = 1;switch$1 = 1;switch$2 = 1}}
              else
               switch$2 = 1;
             else
              {switch$1 = 1;switch$2 = 1}
            if(! switch$2)return 0}
          if(! switch$1)return 2}
        if(! switch$0)return 1}
      else
       {var _Cs_=sexp[1];
        if(! _Cs_)
         return caml_call2(Sexplib0_Sexp_conv_error[7],tp_loc$0,sexp);
        var _Ct_=_Cs_[1];
        if(0 !== _Ct_[0])
         return caml_call2(Sexplib0_Sexp_conv_error[6],tp_loc$0,sexp);
        var _Cu_=_Ct_[1],switch$3=0;
        if(caml_string_notequal(_Cu_,cst_Equal$0))
         {var switch$4=0;
          if(caml_string_notequal(_Cu_,cst_Greater$0))
           {var switch$5=0;
            if(caml_string_notequal(_Cu_,cst_Less$0))
             if(caml_string_notequal(_Cu_,cst_equal$0))
              if(caml_string_notequal(_Cu_,cst_greater$0))
               {if(caml_string_notequal(_Cu_,cst_less$0))
                 {switch$3 = 1;switch$4 = 1;switch$5 = 1}}
              else
               switch$5 = 1;
             else
              {switch$4 = 1;switch$5 = 1}
            if(! switch$5)
             return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$0,sexp)}
          if(! switch$4)
           return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$0,sexp)}
        if(! switch$3)
         return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$0,sexp)}
      return caml_call2(Sexplib0_Sexp_conv_error[8],tp_loc$0,sexp)}
    function sexp_of_t$15(param)
     {switch(param){case 0:return _S_;case 1:return _T_;default:return _U_}}
    function equal$14(a,b)
     {return caml_call2(symbol$81,caml_int_compare(a,b),0)}
    var Export=[0];
    function of_int$0(n)
     {return caml_call2(symbol$78,n,0)?0:caml_call2(symbol$81,n,0)?1:2}
    function to_int$0(param)
     {switch(param){case 0:return -1;case 1:return 0;default:return 1}}
    var
     Base_Ordering=
      [0,
       compare$21,
       all$3,
       hash_fold_t$11,
       hash$0,
       t_of_sexp$13,
       sexp_of_t$15,
       equal$14,
       of_int$0,
       to_int$0,
       Export];
    caml_register_global(995,Base_Ordering,"Base__Ordering");
    function compare$22(cmp_a,a_001,b_002)
     {if(a_001 === b_002)return 0;
      if(a_001)
       {var _Cq_=a_001[1];
        if(b_002){var b_004=b_002[1];return caml_call2(cmp_a,_Cq_,b_004)}
        return -1}
      return b_002?1:0}
    function sexp_of_t$16(of_a,param)
     {if(param)
       {var v0=param[1],v0$0=caml_call1(of_a,v0);
        return [1,[0,_V_,[0,v0$0,0]]]}
      return _W_}
    var Or_unequal_lengths=[0,compare$22,sexp_of_t$16];
    function of_list$0(t){return t}
    function range(compare,stride,opt,_Co_,start_i,stop_i)
     {if(opt)var sth=opt[1],start=sth;else var start=104758188;
      if(_Co_)var sth$0=_Co_[1],stop=sth$0;else var stop=-160346914;
      var next_i=caml_call1(stride,start_i);
      function order(x,y){return of_int$0(caml_call2(compare,x,y))}
      function raise_stride_cannot_return_sam(param)
       {return caml_call1(invalid_arg$0,cst_List_range_stride_function)}
      var match=order(start_i,next_i);
      switch(match)
       {case 0:var initial_stride_order=847855481;break;
        case 1:
         var initial_stride_order=raise_stride_cannot_return_sam(0);break;
        default:var initial_stride_order=85047514}
      var start_i$0=104758188 <= start?start_i:next_i,i=start_i$0,accum=0;
      for(;;)
       {var i_to_stop_order=order(i,stop_i),switch$0=0;
        switch(i_to_stop_order)
         {case 0:switch$0 = 847855481 <= initial_stride_order?1:2;break;
          case 1:var _Cp_=104758188 <= stop?[0,i,accum]:accum;break;
          default:switch$0 = 847855481 <= initial_stride_order?2:1}
        switch(switch$0)
         {case 1:
           var next_i$0=caml_call1(stride,i),switch$1=0;
           switch(order(i,next_i$0))
            {case 0:switch$1 = 847855481 <= initial_stride_order?2:1;break;
             case 1:var _Cp_=raise_stride_cannot_return_sam(0);break;
             default:switch$1 = 847855481 <= initial_stride_order?1:2}
           switch(switch$1)
            {case 1:
              var
               _Cp_=
                caml_call1(invalid_arg$0,cst_List_range_stride_function$0);
              break;
             case 2:var accum$0=[0,i,accum],i=next_i$0,accum=accum$0;continue
             }
           break;
          case 2:var _Cp_=accum;break
          }
        return rev(_Cp_)}}
    function range$0(opt,_Cl_,_Ck_,start_i,stop_i)
     {if(opt)var sth=opt[1],stride=sth;else var stride=1;
      if(_Cl_)var sth$0=_Cl_[1],start=sth$0;else var start=104758188;
      if(_Ck_)var sth$1=_Ck_[1],stop=sth$1;else var stop=-160346914;
      if(caml_call2(symbol$81,stride,0))
       caml_call1(invalid_arg$0,cst_List_range_stride_must_be_);
      var _Cm_=[0,stop],_Cn_=[0,start];
      return range
              (compare$18,
               function(x){return x + stride | 0},
               _Cn_,
               _Cm_,
               start_i,
               stop_i)}
    function hd(t){if(t){var x=t[1];return [0,x]}return 0}
    function tl(t){if(t){var t$0=t[2];return [0,t$0]}return 0}
    function nth(t,n)
     {if(caml_call2(symbol$78,n,0))return 0;
      var t$0=t,n$0=n;
      for(;;)
       {if(t$0)
         {var t$1=t$0[2],a=t$0[1];
          if(caml_call2(symbol$81,n$0,0))return [0,a];
          var n$1=n$0 - 1 | 0,t$0=t$1,n$0=n$1;
          continue}
        return 0}}
    function nth_exn(t,n)
     {var match=nth(t,n);
      if(match){var a=match[1];return a}
      var _Cj_=caml_call1(length,t);
      return caml_call3(invalid_argf(_X_),n,_Cj_,0)}
    function unordered_append(l1,l2)
     {if(l1){if(l2)return caml_call2(rev_append,l1,l2);var l=l1}else var l=l2;
      return l}
    function check_length2_exn(name,l1,l2)
     {var
       n1=caml_call1(length,l1),
       n2=caml_call1(length,l2),
       _Ci_=caml_call2(symbol$80,n1,n2);
      if(_Ci_)throw caml_call4(invalid_argf(_Y_),name,n1,n2,0);
      return _Ci_}
    function check_length3_exn(name,l1,l2,l3)
     {var
       n1=caml_call1(length,l1),
       n2=caml_call1(length,l2),
       n3=caml_call1(length,l3),
       _Cg_=caml_call2(symbol$80,n1,n2),
       _Ch_=_Cg_ || caml_call2(symbol$80,n2,n3);
      if(_Ch_)throw caml_call6(invalid_argf(_Z_),name,n1,n2,n2,n3,0);
      return _Ch_}
    function check_length2(l1,l2,f)
     {var _Cf_=caml_call1(length,l2);
      return caml_call2(symbol$80,caml_call1(length,l1),_Cf_)
              ?0
              :[0,caml_call2(f,l1,l2)]}
    function check_length3(l1,l2,l3,f)
     {var
       n1=caml_call1(length,l1),
       n2=caml_call1(length,l2),
       n3=caml_call1(length,l3);
      if(! caml_call2(symbol$80,n1,n2) && ! caml_call2(symbol$80,n2,n3))
       return [0,caml_call3(f,l1,l2,l3)];
      return 0}
    function iter2(l1,l2,f)
     {return check_length2
              (l1,
               l2,
               function(_Cd_)
                {return function(_Ce_){return iter2_ok(_Cd_,_Ce_,f)}})}
    function iter2_exn(l1,l2,f)
     {check_length2_exn(cst_iter2_exn,l1,l2);return iter2_ok(l1,l2,f)}
    function rev_map2(l1,l2,f)
     {return check_length2
              (l1,
               l2,
               function(_Cb_)
                {return function(_Cc_){return rev_map2_ok(_Cb_,_Cc_,f)}})}
    function rev_map2_exn(l1,l2,f)
     {check_length2_exn(cst_rev_map2_exn,l1,l2);return rev_map2_ok(l1,l2,f)}
    function fold2(l1,l2,init,f)
     {return check_length2
              (l1,
               l2,
               function(_B$_)
                {return function(_Ca_){return fold2_ok(_B$_,_Ca_,init,f)}})}
    function fold2_exn(l1,l2,init,f)
     {check_length2_exn(cst_fold2_exn,l1,l2);return fold2_ok(l1,l2,init,f)}
    function for_all2(l1,l2,f)
     {return check_length2
              (l1,
               l2,
               function(_B9_)
                {return function(_B__){return for_all2_ok(_B9_,_B__,f)}})}
    function for_all2_exn(l1,l2,f)
     {check_length2_exn(cst_for_all2_exn,l1,l2);return for_all2_ok(l1,l2,f)}
    function exists2(l1,l2,f)
     {return check_length2
              (l1,
               l2,
               function(_B7_)
                {return function(_B8_){return exists2_ok(_B7_,_B8_,f)}})}
    function exists2_exn(l1,l2,f)
     {check_length2_exn(cst_exists2_exn,l1,l2);return exists2_ok(l1,l2,f)}
    function mem(param,a,equal)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var bs=param$0[2],b=param$0[1],_B6_=caml_call2(equal,a,b);
          if(_B6_)return _B6_;
          var param$0=bs;
          continue}
        return 0}}
    function rev_filter(param,f)
     {var accu=0,param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],x=param$0[1];
          if(caml_call1(f,x))
           {var accu$0=[0,x,accu],accu=accu$0,param$0=l;continue}
          var param$0=l;
          continue}
        return accu}}
    function filter(t,f){return rev(rev_filter(t,f))}
    function find_map$0(param,f)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],x=param$0[1],r=caml_call1(f,x);
          if(r)return r;
          var param$0=l;
          continue}
        return 0}}
    var not_found=[0,Not_found_s,___];
    function find_map_exn(t,f)
     {var match=find_map$0(t,f);
      if(match){var x=match[1];return x}
      throw not_found}
    function find$0(param,f)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var l=param$0[2],x=param$0[1];
          if(caml_call1(f,x))return [0,x];
          var param$0=l;
          continue}
        return 0}}
    var not_found$0=[0,Not_found_s,_$_];
    function find_exn(t,f)
     {var t$0=t;
      for(;;)
       {if(t$0)
         {var t$1=t$0[2],x=t$0[1];
          if(caml_call1(f,x))return x;
          var t$0=t$1;
          continue}
        throw not_found$0}}
    function findi(t,f)
     {var i=0,t$0=t;
      for(;;)
       {if(t$0)
         {var l=t$0[2],x=t$0[1];
          if(caml_call2(f,i,x))return [0,[0,i,x]];
          var i$0=i + 1 | 0,i=i$0,t$0=l;
          continue}
        return 0}}
    function find_mapi(t,f)
     {var i=0,t$0=t;
      for(;;)
       {if(t$0)
         {var l=t$0[2],x=t$0[1],result=caml_call2(f,i,x);
          if(result)return result;
          var i$0=i + 1 | 0,i=i$0,t$0=l;
          continue}
        return 0}}
    var not_found$1=[0,Not_found_s,_aa_];
    function find_mapi_exn(t,f)
     {var match=find_mapi(t,f);
      if(match){var x=match[1];return x}
      throw not_found$1}
    function for_alli(t,f)
     {var i=0,t$0=t;
      for(;;)
       {if(t$0)
         {var tl=t$0[2],hd=t$0[1],_B5_=caml_call2(f,i,hd);
          if(_B5_){var i$0=i + 1 | 0,i=i$0,t$0=tl;continue}
          return _B5_}
        return 1}}
    function existsi(t,f)
     {var i=0,t$0=t;
      for(;;)
       {if(t$0)
         {var tl=t$0[2],hd=t$0[1],_B4_=caml_call2(f,i,hd);
          if(_B4_)return _B4_;
          var i$0=i + 1 | 0,i=i$0,t$0=tl;
          continue}
        return 0}}
    function to_list$1(t){return t}
    function count_append(l1,l2,count)
     {if(l2)
       {if(l1)
         {var _BV_=l1[2],_BW_=l1[1];
          if(_BV_)
           {var _BX_=_BV_[2],_BY_=_BV_[1];
            if(_BX_)
             {var _BZ_=_BX_[2],_B0_=_BX_[1];
              if(_BZ_)
               {var _B1_=_BZ_[2],_B2_=_BZ_[1];
                if(_B1_)
                 {var
                   tl=_B1_[2],
                   x5=_B1_[1],
                   _B3_=
                    caml_call2(symbol$82,count,1000)
                     ?caml_call2(rev_append,rev(tl),l2)
                     :count_append(tl,l2,count + 1 | 0);
                  return [0,_BW_,[0,_BY_,[0,_B0_,[0,_B2_,[0,x5,_B3_]]]]]}
                return [0,_BW_,[0,_BY_,[0,_B0_,[0,_B2_,l2]]]]}
              return [0,_BW_,[0,_BY_,[0,_B0_,l2]]]}
            return [0,_BW_,[0,_BY_,l2]]}
          return [0,_BW_,l2]}
        return l2}
      return l1}
    function append$0(l1,l2){return count_append(l1,l2,0)}
    function count_map(f,l,ctr)
     {if(l)
       {var _BM_=l[2],_BN_=l[1];
        if(_BM_)
         {var _BO_=_BM_[2],_BP_=_BM_[1];
          if(_BO_)
           {var _BQ_=_BO_[2],_BR_=_BO_[1];
            if(_BQ_)
             {var _BS_=_BQ_[2],_BT_=_BQ_[1];
              if(_BS_)
               {var
                 tl=_BS_[2],
                 x5=_BS_[1],
                 f1=caml_call1(f,_BN_),
                 f2=caml_call1(f,_BP_),
                 f3=caml_call1(f,_BR_),
                 f4=caml_call1(f,_BT_),
                 f5=caml_call1(f,x5),
                 _BU_=
                  caml_call2(symbol$82,ctr,1000)
                   ?rev(rev_map(tl,f))
                   :count_map(f,tl,ctr + 1 | 0);
                return [0,f1,[0,f2,[0,f3,[0,f4,[0,f5,_BU_]]]]]}
              var
               f1$0=caml_call1(f,_BN_),
               f2$0=caml_call1(f,_BP_),
               f3$0=caml_call1(f,_BR_),
               f4$0=caml_call1(f,_BT_);
              return [0,f1$0,[0,f2$0,[0,f3$0,[0,f4$0,0]]]]}
            var
             f1$1=caml_call1(f,_BN_),
             f2$1=caml_call1(f,_BP_),
             f3$1=caml_call1(f,_BR_);
            return [0,f1$1,[0,f2$1,[0,f3$1,0]]]}
          var f1$2=caml_call1(f,_BN_),f2$2=caml_call1(f,_BP_);
          return [0,f1$2,[0,f2$2,0]]}
        var f1$3=caml_call1(f,_BN_);
        return [0,f1$3,0]}
      return 0}
    function map$6(l,f){return count_map(f,l,0)}
    function folding_map(t,init,f)
     {var acc=[0,init];
      return map$6
              (t,
               function(x)
                {var match=caml_call2(f,acc[1],x),y=match[2],new_acc=match[1];
                 acc[1] = new_acc;
                 return y})}
    function fold_map(t,init,f)
     {var
       acc=[0,init],
       result=
        map$6
         (t,
          function(x)
           {var match=caml_call2(f,acc[1],x),y=match[2],new_acc=match[1];
            acc[1] = new_acc;
            return y});
      return [0,acc[1],result]}
    function symbol_map$2(l,f){return map$6(l,f)}
    function map2_ok(l1,l2,f){return rev(rev_map2_ok(l1,l2,f))}
    function map2(l1,l2,f)
     {return check_length2
              (l1,
               l2,
               function(_BK_)
                {return function(_BL_){return map2_ok(_BK_,_BL_,f)}})}
    function map2_exn(l1,l2,f)
     {check_length2_exn(cst_map2_exn,l1,l2);return map2_ok(l1,l2,f)}
    function rev_map3_ok(l1,l2,l3,f)
     {var l1$0=l1,l2$0=l2,l3$0=l3,ac=0;
      for(;;)
       {if(l1$0)
         {if(l2$0 && l3$0)
           {var
             l3$1=l3$0[2],
             x3=l3$0[1],
             l2$1=l2$0[2],
             x2=l2$0[1],
             l1$1=l1$0[2],
             x1=l1$0[1],
             ac$0=[0,caml_call3(f,x1,x2,x3),ac],
             l1$0=l1$1,
             l2$0=l2$1,
             l3$0=l3$1,
             ac=ac$0;
            continue}}
        else
         if(! l2$0 && ! l3$0)return ac;
        throw [0,Assert_failure,_ab_]}}
    function rev_map3(l1,l2,l3,f)
     {return check_length3
              (l1,
               l2,
               l3,
               function(_BH_)
                {return function(_BI_)
                  {return function(_BJ_){return rev_map3_ok(_BH_,_BI_,_BJ_,f)}}})}
    function rev_map3_exn(l1,l2,l3,f)
     {check_length3_exn(cst_rev_map3_exn,l1,l2,l3);
      return rev_map3_ok(l1,l2,l3,f)}
    function map3_ok(l1,l2,l3,f){return rev(rev_map3_ok(l1,l2,l3,f))}
    function map3(l1,l2,l3,f)
     {return check_length3
              (l1,
               l2,
               l3,
               function(_BE_)
                {return function(_BF_)
                  {return function(_BG_){return map3_ok(_BE_,_BF_,_BG_,f)}}})}
    function map3_exn(l1,l2,l3,f)
     {check_length3_exn(cst_map3_exn,l1,l2,l3);return map3_ok(l1,l2,l3,f)}
    function rev_map_append(l1,l2,f)
     {var l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {var
           t=l1$0[2],
           h=l1$0[1],
           l2$1=[0,caml_call1(f,h),l2$0],
           l1$0=t,
           l2$0=l2$1;
          continue}
        return l2$0}}
    function fold_right$0(l,f,init)
     {if(l)
       {var _BD_=function(a,b){return caml_call2(f,b,a)};
        return fold$0(rev(l),init,_BD_)}
      return init}
    function unzip$0(list)
     {var list$0=list,l1=0,l2=0;
      for(;;)
       {if(list$0)
         {var
           list$1=list$0[2],
           match=list$0[1],
           y=match[2],
           x=match[1],
           l2$0=[0,y,l2],
           l1$0=[0,x,l1],
           list$0=list$1,
           l1=l1$0,
           l2=l2$0;
          continue}
        var _BC_=rev(l2);
        return [0,rev(l1),_BC_]}}
    function unzip3(list)
     {var list$0=list,l1=0,l2=0,l3=0;
      for(;;)
       {if(list$0)
         {var
           list$1=list$0[2],
           match=list$0[1],
           z=match[3],
           y=match[2],
           x=match[1],
           l3$0=[0,z,l3],
           l2$0=[0,y,l2],
           l1$0=[0,x,l1],
           list$0=list$1,
           l1=l1$0,
           l2=l2$0,
           l3=l3$0;
          continue}
        var _BA_=rev(l3),_BB_=rev(l2);
        return [0,rev(l1),_BB_,_BA_]}}
    function zip_exn(l1,l2)
     {check_length2_exn(cst_zip_exn,l1,l2);
      return map2_ok(l1,l2,function(a,b){return [0,a,b]})}
    function zip(l1,l2){return map2(l1,l2,function(a,b){return [0,a,b]})}
    function rev_mapi(param,f)
     {var i=0,acc=0,param$0=param;
      for(;;)
       {if(param$0)
         {var
           t=param$0[2],
           h=param$0[1],
           acc$0=[0,caml_call2(f,i,h),acc],
           i$0=i + 1 | 0,
           i=i$0,
           acc=acc$0,
           param$0=t;
          continue}
        return acc}}
    function mapi$0(l,f){return rev(rev_mapi(l,f))}
    function folding_mapi(t,init,f)
     {var acc=[0,init];
      return mapi$0
              (t,
               function(i,x)
                {var
                  match=caml_call3(f,i,acc[1],x),
                  y=match[2],
                  new_acc=match[1];
                 acc[1] = new_acc;
                 return y})}
    function fold_mapi(t,init,f)
     {var
       acc=[0,init],
       result=
        mapi$0
         (t,
          function(i,x)
           {var match=caml_call3(f,i,acc[1],x),y=match[2],new_acc=match[1];
            acc[1] = new_acc;
            return y});
      return [0,acc[1],result]}
    function iteri$0(l,f)
     {fold$0(l,0,function(i,x){caml_call2(f,i,x);return i + 1 | 0});return 0}
    function foldi(t,init,f)
     {return fold$0
               (t,
                [0,0,init],
                function(param,v)
                 {var acc=param[2],i=param[1];
                  return [0,i + 1 | 0,caml_call3(f,i,acc,v)]})
              [2]}
    function filteri(l,f)
     {return rev
              (foldi
                (l,
                 0,
                 function(pos,acc,x){return caml_call2(f,pos,x)?[0,x,acc]:acc}))}
    function reduce(l,f)
     {if(l){var tl=l[2],hd=l[1];return [0,fold$0(tl,hd,f)]}return 0}
    function reduce_exn(l,f)
     {var match=reduce(l,f);
      if(match){var v=match[1];return v}
      throw [0,Stdlib[6],cst_List_reduce_exn]}
    function reduce_balanced(l,f)
     {function step_accum(num,acc,x)
       {var num$0=num,acc$0=acc,x$0=x;
        for(;;)
         {if(caml_call2(symbol$81,num$0 & 1,0))return [0,x$0,acc$0];
          if(acc$0)
           {var
             ys=acc$0[2],
             y=acc$0[1],
             x$1=caml_call2(f,y,x$0),
             num$1=num$0 >> 1,
             num$0=num$1,
             acc$0=ys,
             x$0=x$1;
            continue}
          throw [0,Assert_failure,_ac_]}}
      var match=foldi(l,0,step_accum);
      if(match)
       {var xs=match[2],x=match[1];
        return [0,fold$0(xs,x,function(x,y){return caml_call2(f,y,x)})]}
      return 0}
    function reduce_balanced_exn(l,f)
     {var match=reduce_balanced(l,f);
      if(match){var v=match[1];return v}
      throw [0,Stdlib[6],cst_List_reduce_balanced_exn]}
    function groupi(l,break$0)
     {var
       groups=
        foldi
         (l,
          0,
          function(i,acc,x)
           {if(acc)
             {var tl=acc[2],current_group=acc[1];
              return caml_call3(break$0,i,caml_call1(hd_exn,current_group),x)
                      ?[0,[0,x,0],[0,current_group,tl]]
                      :[0,[0,x,current_group],tl]}
            return [0,[0,x,0],0]});
      return groups?rev_map(groups,rev):0}
    function group(l,break$0)
     {return groupi(l,function(param,x,y){return caml_call2(break$0,x,y)})}
    function concat_map(param,f)
     {var acc=0,param$0=param;
      for(;;)
       {if(param$0)
         {var
           tl=param$0[2],
           hd=param$0[1],
           acc$0=caml_call2(rev_append,caml_call1(f,hd),acc),
           acc=acc$0,
           param$0=tl;
          continue}
        return rev(acc)}}
    function concat_mapi(param,f)
     {var cont=0,acc=0,param$0=param;
      for(;;)
       {if(param$0)
         {var
           tl=param$0[2],
           hd=param$0[1],
           acc$0=caml_call2(rev_append,caml_call2(f,cont,hd),acc),
           cont$0=cont + 1 | 0,
           cont=cont$0,
           acc=acc$0,
           param$0=tl;
          continue}
        return rev(acc)}}
    function merge(l1,l2,compare)
     {var acc=0,l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {if(l2$0)
           {var t2=l2$0[2],h2=l2$0[1],t1=l1$0[2],h1=l1$0[1];
            if(caml_call2(symbol$79,caml_call2(compare,h1,h2),0))
             {var acc$0=[0,h1,acc],acc=acc$0,l1$0=t1;continue}
            var acc$1=[0,h2,acc],acc=acc$1,l2$0=t2;
            continue}
          return caml_call2(rev_append,acc,l1$0)}
        return caml_call2(rev_append,acc,l2$0)}}
    function bind$5(x,f){return concat_map(x,f)}
    var map$7=[0,-198771759,map$6];
    function return$6(x){return [0,x,0]}
    var
     Monad=Make([0,bind$5,return$6,map$7]),
     ignore_m$2=Monad[8],
     join$2=Monad[7],
     bind$6=Monad[4];
    function symbol_bind$2(t,f){return caml_call2(bind$6,t,f)}
    var return$7=Monad[5],all$4=Monad[9],all_unit$2=Monad[10];
    function last_exn(list)
     {var list$0=list;
      for(;;)
       {if(list$0)
         {var _Bz_=list$0[1];
          if(list$0[2]){var list$1=list$0[2],list$0=list$1;continue}
          return _Bz_}
        throw [0,Stdlib[6],cst_List_last]}}
    function last(list)
     {var list$0=list;
      for(;;)
       {if(list$0)
         {var _By_=list$0[1];
          if(list$0[2]){var list$1=list$0[2],list$0=list$1;continue}
          return [0,_By_]}
        return 0}}
    function is_prefix(list,prefix,equal)
     {var list$0=list,prefix$0=prefix;
      for(;;)
       {if(prefix$0)
         {var tl=prefix$0[2],hd=prefix$0[1];
          if(list$0)
           {var tl$0=list$0[2],hd$0=list$0[1],_Bx_=caml_call2(equal,hd,hd$0);
            if(_Bx_){var list$0=tl$0,prefix$0=tl;continue}
            return _Bx_}
          return 0}
        return 1}}
    function find_consecutive_duplicate(t,equal)
     {if(t)
       {var t$0=t[2],a1=t[1],a1$0=a1,t$1=t$0;
        for(;;)
         {if(t$1)
           {var t$2=t$1[2],a2=t$1[1];
            if(caml_call2(equal,a1$0,a2))return [0,[0,a1$0,a2]];
            var a1$0=a2,t$1=t$2;
            continue}
          return 0}}
      return 0}
    function remove_consecutive_duplicates(opt,list,equal)
     {if(opt)
       var sth=opt[1],which_to_keep=sth;
      else
       var which_to_keep=847656566;
      if(list)
       {var tl$0=list[2],hd$0=list[1],to_keep=hd$0,accum=0,param=tl$0;
        for(;;)
         {if(param)
           {var tl=param[2],hd=param[1];
            if(caml_call2(equal,hd,to_keep))
             {var
               to_keep$0=847656566 <= which_to_keep?hd:to_keep,
               to_keep=to_keep$0,
               param=tl;
              continue}
            var accum$0=[0,to_keep,accum],to_keep=hd,accum=accum$0,param=tl;
            continue}
          return rev([0,to_keep,accum])}}
      return 0}
    function dedup_and_sort(compare,list)
     {if(list && list[2])
       {var
         equal=
          function(x$0,x)
           {return caml_call2(symbol$81,caml_call2(compare,x$0,x),0)},
         sorted=func(list,compare);
        return remove_consecutive_duplicates(0,sorted,equal)}
      return list}
    function find_a_dup(compare,l)
     {var l$0=func(l,compare),l$1=l$0;
      for(;;)
       {if(l$1)
         {var _Bw_=l$1[2];
          if(_Bw_)
           {var hd2=_Bw_[1],hd1=l$1[1];
            if(caml_call2(symbol$81,caml_call2(compare,hd1,hd2),0))
             return [0,hd1];
            var l$1=_Bw_;
            continue}}
        return 0}}
    function contains_dup(compare,lst)
     {var match=find_a_dup(compare,lst);return match?1:0}
    function find_all_dups(compare,l)
     {function compare$0(a,b){return -1 * caml_call2(compare,a,b) | 0}
      var sorted=func(l,compare$0);
      if(sorted)
       {var
         tl$0=sorted[2],
         hd$0=sorted[1],
         sorted$0=tl$0,
         prev=hd$0,
         already_recorded=0,
         acc=0;
        for(;;)
         {if(sorted$0)
           {var tl=sorted$0[2],hd=sorted$0[1];
            if(caml_call2(symbol$80,compare$0(prev,hd),0))
             {var sorted$0=tl,prev=hd,already_recorded=0;continue}
            if(already_recorded)
             {var sorted$0=tl,prev=hd,already_recorded=1;continue}
            var
             acc$0=[0,hd,acc],
             sorted$0=tl,
             prev=hd,
             already_recorded=1,
             acc=acc$0;
            continue}
          return acc}}
      return 0}
    function count$0(t,f){return count(fold$0,t,f)}
    function sum$0(m,t,f){return sum(fold$0,m,t,f)}
    function min_elt$0(t,compare){return min_elt(fold$0,t,compare)}
    function max_elt$0(t,compare){return max_elt(fold$0,t,compare)}
    function counti(t,f)
     {return foldi
              (t,
               0,
               function(idx,count,a)
                {return caml_call2(f,idx,a)?count + 1 | 0:count})}
    function init$1(i,f)
     {if(caml_call2(symbol$78,i,0))caml_call2(invalid_argf(_ad_),i,0);
      var i$0=i,accum=0;
      for(;;)
       {if(caml_call2(symbol$83,i$0,0))
         {if(caml_call2(symbol$81,i$0,0))return accum;
          var
           accum$0=[0,caml_call1(f,i$0 - 1 | 0),accum],
           i$1=i$0 - 1 | 0,
           i$0=i$1,
           accum=accum$0;
          continue}
        throw [0,Assert_failure,_ae_]}}
    function rev_filter_map(l,f)
     {var l$0=l,accum=0;
      for(;;)
       {if(l$0)
         {var tl=l$0[2],hd=l$0[1],match=caml_call1(f,hd);
          if(match)
           {var x=match[1],accum$0=[0,x,accum],l$0=tl,accum=accum$0;continue}
          var l$0=tl;
          continue}
        return accum}}
    function filter_map(l,f){return rev(rev_filter_map(l,f))}
    function rev_filter_mapi(l,f)
     {var i=0,l$0=l,accum=0;
      for(;;)
       {if(l$0)
         {var tl=l$0[2],hd=l$0[1],match=caml_call2(f,i,hd);
          if(match)
           {var
             x=match[1],
             accum$0=[0,x,accum],
             i$0=i + 1 | 0,
             i=i$0,
             l$0=tl,
             accum=accum$0;
            continue}
          var i$1=i + 1 | 0,i=i$1,l$0=tl;
          continue}
        return accum}}
    function filter_mapi(l,f){return rev(rev_filter_mapi(l,f))}
    function filter_opt(l){return filter_map(l,function(_Bv_){return _Bv_})}
    function partition3_map(t,f)
     {var t$0=t,fst=0,snd=0,trd=0;
      for(;;)
       {if(t$0)
         {var t$1=t$0[2],x=t$0[1],match=caml_call1(f,x),_Bs_=match[1];
          if(4152137 === _Bs_)
           {var y=match[2],snd$0=[0,y,snd],t$0=t$1,snd=snd$0;continue}
          if(4202758 <= _Bs_)
           {var y$0=match[2],trd$0=[0,y$0,trd],t$0=t$1,trd=trd$0;continue}
          var y$1=match[2],fst$0=[0,y$1,fst],t$0=t$1,fst=fst$0;
          continue}
        var _Bt_=rev(trd),_Bu_=rev(snd);
        return [0,rev(fst),_Bu_,_Bt_]}}
    function partition_tf(t,f)
     {function f$0(x){return caml_call1(f,x)?[0,3506791,x]:[0,4152137,x]}
      return partition_map(t,f$0)}
    function partition_result(t)
     {function f(x)
       {if(0 === x[0]){var v=x[1];return [0,3506791,v]}
        var e=x[1];
        return [0,4152137,e]}
      return partition_map(t,f)}
    function t_of_sexp$14(of_a,of_b,t)
     {return caml_call2
              (t_of_sexp$10,
               function(sexp)
                {if(1 === sexp[0])
                  {var _Bq_=sexp[1];
                   if(_Bq_)
                    {var _Br_=_Bq_[2];
                     if(_Br_ && ! _Br_[2])
                      {var
                        v1=_Br_[1],
                        v0=_Bq_[1],
                        v0$0=caml_call1(of_a,v0),
                        v1$0=caml_call1(of_b,v1);
                       return [0,v0$0,v1$0]}}}
                 return caml_call3
                         (Sexplib0_Sexp_conv_error[2],tp_loc$1,2,sexp)},
               t)}
    function sexp_of_t$17(of_a,of_b,v)
     {return caml_call2
              (sexp_of_t$10,
               function(param)
                {var
                  v1=param[2],
                  v0=param[1],
                  v0$0=caml_call1(of_a,v0),
                  v1$0=caml_call1(of_b,v1);
                 return [1,[0,v0$0,[0,v1$0,0]]]},
               v)}
    function find$1(t,equal,key)
     {var
       match=
        find$0
         (t,
          function(param)
           {var key$0=param[1];return caml_call2(equal,key,key$0)});
      if(match){var x=match[1];return [0,x[2]]}
      return 0}
    var not_found$2=[0,Not_found_s,_af_];
    function find_exn$0(t,equal,key)
     {var match=find$1(t,equal,key);
      if(match){var value=match[1];return value}
      throw not_found$2}
    function mem$0(t,equal,key)
     {var match=find$1(t,equal,key);return match?1:0}
    function remove(t,equal,key)
     {return filter
              (t,
               function(param)
                {var key$0=param[1];return 1 - caml_call2(equal,key,key$0)})}
    function add$0(t,equal,key,value)
     {return [0,[0,key,value],remove(t,equal,key)]}
    function inverse(t)
     {return map$6
              (t,function(param){var y=param[2],x=param[1];return [0,y,x]})}
    function map$8(t,f)
     {return map$6
              (t,
               function(param)
                {var value=param[2],key=param[1];
                 return [0,key,caml_call1(f,value)]})}
    function sub$1(l,pos,len)
     {var _Bn_=caml_call2(symbol$78,pos,0);
      if(_Bn_)
       var _Bo_=_Bn_;
      else
       var
        _Bp_=caml_call2(symbol$78,len,0),
        _Bo_=_Bp_ || caml_call2(symbol$82,pos,caml_call1(length,l) - len | 0);
      if(_Bo_)caml_call1(invalid_arg$0,cst_List_sub);
      return rev
              (foldi
                (l,
                 0,
                 function(i,acc,el)
                  {if
                    (caml_call2(symbol$83,i,pos)
                     &&
                     caml_call2(symbol$78,i,pos + len | 0))
                    return [0,el,acc];
                   return acc}))}
    function split_n(t,n)
     {if(caml_call2(symbol$79,n,0))return [0,0,t];
      var n$0=n,t$0=t,accum=0;
      for(;;)
       {if(caml_call2(symbol$81,n$0,0))return [0,rev(accum),t$0];
        if(t$0)
         {var
           tl=t$0[2],
           hd=t$0[1],
           accum$0=[0,hd,accum],
           n$1=n$0 - 1 | 0,
           n$0=n$1,
           t$0=tl,
           accum=accum$0;
          continue}
        return [0,t,0]}}
    function take(t,n)
     {if(caml_call2(symbol$79,n,0))return 0;
      var n$0=n,t$0=t,accum=0;
      for(;;)
       {if(caml_call2(symbol$81,n$0,0))return rev(accum);
        if(t$0)
         {var
           tl=t$0[2],
           hd=t$0[1],
           accum$0=[0,hd,accum],
           n$1=n$0 - 1 | 0,
           n$0=n$1,
           t$0=tl,
           accum=accum$0;
          continue}
        return t}}
    function drop(t,n)
     {var t$0=t,n$0=n;
      for(;;)
       {if(t$0)
         {var tl=t$0[2];
          if(caml_call2(symbol$82,n$0,0))
           {var n$1=n$0 - 1 | 0,t$0=tl,n$0=n$1;continue}}
        return t$0}}
    function chunks_of(l,length)
     {if(caml_call2(symbol$79,length,0))
       caml_call2(invalid_argf(_ag_),length,0);
      var acc=0,l$0=l;
      for(;;)
       {if(l$0)
         {var
           match=split_n(l$0,length),
           l$1=match[2],
           sublist=match[1],
           acc$0=[0,sublist,acc],
           acc=acc$0,
           l$0=l$1;
          continue}
        return rev(acc)}}
    function split_while(t,f)
     {var acc=0,t$0=t;
      for(;;)
       {if(t$0)
         {var tl=t$0[2],hd=t$0[1];
          if(caml_call1(f,hd)){var acc$0=[0,hd,acc],acc=acc$0,t$0=tl;continue}}
        return [0,rev(acc),t$0]}}
    function take_while(param,f)
     {var acc=0,param$0=param;
      for(;;)
       {if(param$0)
         {var tl=param$0[2],hd=param$0[1];
          if(caml_call1(f,hd))
           {var acc$0=[0,hd,acc],acc=acc$0,param$0=tl;continue}}
        return rev(acc)}}
    function drop_while(t,f)
     {var t$0=t;
      for(;;)
       {if(t$0)
         {var tl=t$0[2],hd=t$0[1];if(caml_call1(f,hd)){var t$0=tl;continue}}
        return t$0}}
    function drop_last(t)
     {var match=rev(t);
      if(match){var lst=match[2];return [0,rev(lst)]}
      return 0}
    function drop_last_exn(t)
     {var match=drop_last(t);
      if(match){var lst=match[1];return lst}
      return caml_call1(failwith$0,cst_List_drop_last_exn_empty_l)}
    function cartesian_product(list1,list2)
     {if(is_empty(list2))return 0;
      var l1=list1,accum=0;
      for(;;)
       {if(l1)
         {var
           tl=l1[2],
           hd=l1[1],
           accum$0=
            caml_call2
             (rev_append,
              map$6
               (list2,function(hd){return function(x){return [0,hd,x]}}(hd)),
              accum),
           l1=tl,
           accum=accum$0;
          continue}
        return rev(accum)}}
    function of_list$1(l){return fold_right$0(l,append$0,0)}
    function concat_no_order(l)
     {return fold$0(l,0,function(acc,l){return caml_call2(rev_append,l,acc)})}
    function cons(x,l){return [0,x,l]}
    function is_sorted(l,compare)
     {var l$0=l;
      for(;;)
       {if(l$0)
         {var _Bl_=l$0[2];
          if(_Bl_)
           {var
             x2=_Bl_[1],
             x1=l$0[1],
             _Bm_=caml_call2(symbol$79,caml_call2(compare,x1,x2),0);
            if(_Bm_){var l$0=_Bl_;continue}
            return _Bm_}}
        return 1}}
    function is_sorted_strictly(l,compare)
     {var l$0=l;
      for(;;)
       {if(l$0)
         {var _Bj_=l$0[2];
          if(_Bj_)
           {var
             x2=_Bj_[1],
             x1=l$0[1],
             _Bk_=caml_call2(symbol$78,caml_call2(compare,x1,x2),0);
            if(_Bk_){var l$0=_Bj_;continue}
            return _Bk_}}
        return 1}}
    var Infix=[0,append$0];
    function permute$0(opt,list)
     {if(opt)var sth=opt[1],random_state=sth;else var random_state=_R_[1];
      if(list)
       {var _Bi_=list[2];
        if(_Bi_)
         {if(_Bi_[2])
           {var arr=caml_call1(of_list,list);
            permute([0,random_state],arr);
            return caml_call1(to_list,arr)}
          var y=_Bi_[1],x=list[1];
          return caml_call1(_R_[16],random_state)?[0,y,[0,x,0]]:list}}
      return list}
    function random_element_exn(opt,list)
     {if(opt)var sth=opt[1],random_state=sth;else var random_state=_R_[1];
      if(is_empty(list))
       return caml_call1(failwith$0,cst_List_random_element_exn_em);
      var _Bh_=caml_call1(length,list);
      return nth_exn(list,caml_call2(_R_[6],random_state,_Bh_))}
    function random_element(opt,list)
     {if(opt)var sth=opt[1],random_state=sth;else var random_state=_R_[1];
      try
       {var _Bf_=[0,random_element_exn([0,random_state],list)];return _Bf_}
      catch(_Bg_){return 0}}
    function compare_list$1(cmp,a,b)
     {var a$0=a,b$0=b;
      for(;;)
       {if(a$0)
         {if(b$0)
           {var ys=b$0[2],y=b$0[1],xs=a$0[2],x=a$0[1],n=caml_call2(cmp,x,y);
            if(caml_call2(symbol$81,n,0)){var a$0=xs,b$0=ys;continue}
            return n}
          return 1}
        return b$0?-1:0}}
    function equal_list$1(equal,t1,t2)
     {var t1$0=t1,t2$0=t2;
      for(;;)
       {if(t1$0)
         {if(t2$0)
           {var
             t2$1=t2$0[2],
             x2=t2$0[1],
             t1$1=t1$0[2],
             x1=t1$0[1],
             _Be_=caml_call2(equal,x1,x2);
            if(_Be_){var t1$0=t1$1,t2$0=t2$1;continue}
            return _Be_}}
        else
         if(! t2$0)return 1;
        return 0}}
    function transpose(t$1)
     {var t=t$1,rev_columns=0;
      for(;;)
       {var
         match=
          partition_map
           (t,
            function(param)
             {if(param)
               {var xs=param[2],x=param[1];return [0,3506791,[0,x,xs]]}
              return _ah_}),
         _Bd_=match[1];
        if(_Bd_)
         {if(match[2])return 0;
          var
           match$0=unzip$0(_Bd_),
           t$0=match$0[2],
           column=match$0[1],
           rev_columns$0=[0,column,rev_columns],
           t=t$0,
           rev_columns=rev_columns$0;
          continue}
        return [0,caml_call2(rev_append,rev_columns,0)]}}
    var
     Transpose_got_lists_of_differe=
      [248,cst_Base_List_Transpose_got_li,caml_fresh_oo_id(0)];
    function _ai_(param)
     {if(param[1] === Transpose_got_lists_of_differe)
       {var v0=param[2],v0$0=caml_call2(sexp_of_t$10,sexp_of_t$4,v0);
        return [1,[0,_aj_,[0,v0$0,0]]]}
      throw [0,Assert_failure,_ak_]}
    caml_call3
     (Sexplib0_Sexp_conv[51][2],0,Transpose_got_lists_of_differe,_ai_);
    function transpose_exn(l)
     {var match=transpose(l);
      if(match){var l$0=match[1];return l$0}
      throw [0,Transpose_got_lists_of_differe,map$6(l,length)]}
    function intersperse(t,sep)
     {if(t)
       {var xs=t[2],x=t[1],_Bc_=0;
        return [0,
                x,
                fold_right$0
                 (xs,function(y,acc){return [0,sep,[0,y,acc]]},_Bc_)]}
      return 0}
    function fold_result$0(t,init,f){return fold_result(fold$0,init,f,t)}
    function fold_until$0(t,init,f)
     {return function(_Bb_){return fold_until(fold$0,init,f,_Bb_,t)}}
    var
     _al_=
      [0,
       t_of_sexp$14,
       sexp_of_t$17,
       add$0,
       find$1,
       find_exn$0,
       mem$0,
       remove,
       map$8,
       inverse],
     Base_List=
      [0,
       compare_list$1,
       hash_fold_t$8,
       t_of_sexp$10,
       sexp_of_t$10,
       mem,
       length,
       is_empty,
       iter$0,
       fold$0,
       fold_result$0,
       fold_until$0,
       exists,
       for_all,
       sum$0,
       find$0,
       find_map$0,
       to_list$1,
       of_list,
       min_elt$0,
       max_elt$0,
       symbol_bind$2,
       symbol_map$2,
       Monad[3],
       bind$6,
       return$7,
       join$2,
       ignore_m$2,
       all$4,
       all_unit$2,
       Monad[11],
       Or_unequal_lengths,
       of_list$0,
       nth,
       nth_exn,
       rev,
       rev_append,
       unordered_append,
       rev_map,
       iter2_exn,
       iter2,
       rev_map2_exn,
       rev_map2,
       fold2_exn,
       fold2,
       for_alli,
       for_all2_exn,
       for_all2,
       existsi,
       exists2_exn,
       exists2,
       filter,
       rev_filter,
       filteri,
       partition_map,
       partition3_map,
       partition_tf,
       partition_result,
       split_n,
       func,
       stable_sort$0,
       merge,
       hd,
       tl,
       hd_exn,
       tl_exn,
       findi,
       find_exn,
       find_map_exn,
       find_mapi,
       find_mapi_exn,
       append$0,
       map$6,
       folding_map,
       folding_mapi,
       fold_map,
       fold_mapi,
       concat_map,
       concat_mapi,
       map2_exn,
       map2,
       rev_map3_exn,
       rev_map3,
       map3_exn,
       map3,
       rev_map_append,
       fold_right$0,
       fold$0,
       unzip$0,
       unzip3,
       zip,
       zip_exn,
       mapi$0,
       rev_mapi,
       iteri$0,
       foldi,
       reduce_exn,
       reduce,
       reduce_balanced,
       reduce_balanced_exn,
       group,
       groupi,
       chunks_of,
       last,
       last_exn,
       is_prefix,
       find_consecutive_duplicate,
       remove_consecutive_duplicates,
       dedup_and_sort,
       find_a_dup,
       contains_dup,
       find_all_dups,
       count$0,
       counti,
       range$0,
       range,
       init$1,
       rev_filter_map,
       rev_filter_mapi,
       filter_map,
       filter_mapi,
       filter_opt,
       _al_,
       sub$1,
       take,
       drop,
       take_while,
       drop_while,
       split_while,
       drop_last,
       drop_last_exn,
       of_list$1,
       concat_no_order,
       cons,
       cartesian_product,
       permute$0,
       random_element,
       random_element_exn,
       is_sorted,
       is_sorted_strictly,
       equal_list$1,
       Infix,
       transpose,
       transpose_exn,
       intersperse];
    caml_register_global(996,Base_List,"Base__List");
    function S_to_S2$0(X)
     {var
       return$0=X[1],
       map=X[2],
       both=X[3],
       symbol=X[4],
       symbol$0=X[5],
       symbol$1=X[6],
       symbol_map=X[7],
       apply=X[8],
       map2=X[9],
       map3=X[10],
       all=X[11],
       all_unit=X[12],
       Applicative_infix=X[13];
      return [0,
              return$0,
              map,
              both,
              symbol,
              symbol$0,
              symbol$1,
              symbol_map,
              apply,
              map2,
              map3,
              all,
              all_unit,
              Applicative_infix]}
    function S2_to_S$0(X)
     {var
       return$0=X[1],
       map=X[2],
       both=X[3],
       symbol=X[4],
       symbol$0=X[5],
       symbol$1=X[6],
       symbol_map=X[7],
       apply=X[8],
       map2=X[9],
       map3=X[10],
       all=X[11],
       all_unit=X[12],
       Applicative_infix=X[13];
      return [0,
              return$0,
              map,
              both,
              symbol,
              symbol$0,
              symbol$1,
              symbol_map,
              apply,
              map2,
              map3,
              all,
              all_unit,
              Applicative_infix]}
    function S2_to_S3$0(X)
     {var
       return$0=X[1],
       map=X[2],
       both=X[3],
       symbol=X[4],
       symbol$0=X[5],
       symbol$1=X[6],
       symbol_map=X[7],
       apply=X[8],
       map2=X[9],
       map3=X[10],
       all=X[11],
       all_unit=X[12],
       Applicative_infix=X[13];
      return [0,
              return$0,
              map,
              both,
              symbol,
              symbol$0,
              symbol$1,
              symbol_map,
              apply,
              map2,
              map3,
              all,
              all_unit,
              Applicative_infix]}
    function S3_to_S2$0(X)
     {var
       return$0=X[1],
       map=X[2],
       both=X[3],
       symbol=X[4],
       symbol$0=X[5],
       symbol$1=X[6],
       symbol_map=X[7],
       apply=X[8],
       map2=X[9],
       map3=X[10],
       all=X[11],
       all_unit=X[12],
       Applicative_infix=X[13];
      return [0,
              return$0,
              map,
              both,
              symbol,
              symbol$0,
              symbol$1,
              symbol_map,
              apply,
              map2,
              map3,
              all,
              all_unit,
              Applicative_infix]}
    function Make3$0(_A5_)
     {var _A6_=_A5_[1],_A7_=_A5_[2];
      function derived_map(t,f){return caml_call2(_A7_,caml_call1(_A6_,f),t)}
      var _A8_=_A5_[3];
      if(typeof _A8_ === "number")
       var map=derived_map;
      else
       var x=_A8_[2],map=x;
      function symbol_map(t,f){return caml_call2(map,t,f)}
      function map2(ta,tb,f){return caml_call2(_A7_,caml_call2(map,ta,f),tb)}
      function map3(ta,tb,tc,f)
       {return caml_call2(_A7_,caml_call2(_A7_,caml_call2(map,ta,f),tb),tc)}
      function all(ts)
       {var _A9_=caml_call1(_A6_,0);
        function _A__(x,xs){return [0,x,xs]}
        return fold_right$0
                (ts,
                 function(_A$_)
                  {return function(_Ba_){return map2(_A$_,_Ba_,_A__)}},
                 _A9_)}
      function both(ta,tb){return map2(ta,tb,function(a,b){return [0,a,b]})}
      function symbol(u,v)
       {return caml_call2
                (_A7_,
                 caml_call2
                  (_A7_,caml_call1(_A6_,function(param,y){return y}),u),
                 v)}
      function symbol$0(u,v)
       {return caml_call2
                (_A7_,
                 caml_call2
                  (_A7_,caml_call1(_A6_,function(x,param){return x}),u),
                 v)}
      function all_unit(ts){return fold$0(ts,caml_call1(_A6_,0),symbol)}
      return [0,
              _A6_,
              map,
              both,
              _A7_,
              symbol$0,
              symbol,
              symbol_map,
              _A7_,
              map2,
              map3,
              all,
              all_unit,
              [0,_A7_,symbol$0,symbol,symbol_map]]}
    function Make2$0(X)
     {var return$0=X[1],apply=X[2],map=X[3];
      return Make3$0([0,return$0,apply,map])}
    function Make$0(X)
     {var return$0=X[1],apply=X[2],map=X[3];
      return Make2$0([0,return$0,apply,map])}
    function Make_let_syntax3(X,Intf,Impl)
     {var
       return$0=X[1],
       map=X[2],
       both=X[3],
       symbol=X[4],
       symbol$0=X[5],
       symbol$1=X[6],
       symbol_map=X[7],
       return$1=X[1],
       map$0=X[2],
       both$0=X[3],
       symbol$2=X[4],
       symbol$3=X[5],
       symbol$4=X[6],
       symbol_map$0=X[7],
       Let_syntax=
        [0,return$1,map$0,both$0,symbol$2,symbol$3,symbol$4,symbol_map$0,Impl],
       Let_syntax$0=
        [0,return$0,map,both,symbol,symbol$0,symbol$1,symbol_map,Let_syntax];
      return [0,Let_syntax$0]}
    function Make_let_syntax2(X,Intf,Impl)
     {var
       return$0=X[1],
       map=X[2],
       both=X[3],
       symbol=X[4],
       symbol$0=X[5],
       symbol$1=X[6],
       symbol_map=X[7];
      return Make_let_syntax3
              ([0,return$0,map,both,symbol,symbol$0,symbol$1,symbol_map],
               Intf,
               Impl)}
    function Make3_using_map2(_A1_)
     {var _A4_=_A1_[3],_A2_=_A1_[1],_A3_=_A1_[2];
      function apply(tf,tx)
       {return caml_call3(_A3_,tf,tx,function(f,x){return caml_call1(f,x)})}
      if(typeof _A4_ === "number")
       var map=-777467953;
      else
       var map$0=_A4_[2],map=[0,-198771759,map$0];
      return Make3$0([0,_A2_,apply,map])}
    function Make2_using_map2(X)
     {var return$0=X[1],map2=X[2],map=X[3];
      return Make3_using_map2([0,return$0,map2,map])}
    function Make_using_map2(X)
     {var return$0=X[1],map2=X[2],map=X[3];
      return Make2_using_map2([0,return$0,map2,map])}
    function Of_monad2(M)
     {var return$0=M[6];
      function apply(mf,mx)
       {function _A0_(f){return caml_call2(M[7],mx,f)}
        return caml_call2(M[5],mf,_A0_)}
      var map=[0,-198771759,M[7]];
      return Make2$0([0,return$0,apply,map])}
    function Of_monad(M)
     {var
       symbol_bind=M[1],
       symbol_map=M[2],
       Monad_infix=M[3],
       bind=M[4],
       return$0=M[5],
       map=M[6],
       join=M[7],
       ignore_m=M[8],
       all=M[9],
       all_unit=M[10],
       Let_syntax=M[11];
      return Of_monad2
              ([0,
                symbol_bind,
                symbol_map,
                Let_syntax,
                Monad_infix,
                bind,
                return$0,
                map,
                join,
                ignore_m,
                all,
                all_unit])}
    function Compose(F,G)
     {function return$0(a)
       {var _AZ_=caml_call1(F[1],a);return caml_call1(G[1],_AZ_)}
      function apply(tf,tx)
       {var _AY_=caml_call2(G[2],tf,F[8]);return caml_call2(G[8],_AY_,tx)}
      function custom_map(t,f)
       {var _AV_=F[2];
        function _AW_(_AX_){return caml_call2(_AV_,_AX_,f)}
        return caml_call2(G[2],t,_AW_)}
      var
       map=[0,-198771759,custom_map],
       include=Make$0([0,return$0,apply,map]),
       return$1=include[1],
       map$0=include[2],
       both=include[3],
       symbol=include[4],
       symbol$0=include[5],
       symbol$1=include[6],
       symbol_map=include[7],
       apply$0=include[8],
       map2=include[9],
       map3=include[10],
       all=include[11],
       all_unit=include[12],
       Applicative_infix=include[13];
      return [0,
              return$1,
              map$0,
              both,
              symbol,
              symbol$0,
              symbol$1,
              symbol_map,
              apply$0,
              map2,
              map3,
              all,
              all_unit,
              Applicative_infix]}
    function Pair(F,G)
     {function return$0(a)
       {var _AU_=caml_call1(G[1],a);return [0,caml_call1(F[1],a),_AU_]}
      function apply(tf,tx)
       {var _AT_=caml_call2(G[8],tf[2],tx[2]);
        return [0,caml_call2(F[8],tf[1],tx[1]),_AT_]}
      function custom_map(t,f)
       {var _AS_=caml_call2(G[2],t[2],f);
        return [0,caml_call2(F[2],t[1],f),_AS_]}
      var
       map=[0,-198771759,custom_map],
       include=Make$0([0,return$0,apply,map]),
       return$1=include[1],
       map$0=include[2],
       both=include[3],
       symbol=include[4],
       symbol$0=include[5],
       symbol$1=include[6],
       symbol_map=include[7],
       apply$0=include[8],
       map2=include[9],
       map3=include[10],
       all=include[11],
       all_unit=include[12],
       Applicative_infix=include[13];
      return [0,
              return$1,
              map$0,
              both,
              symbol,
              symbol$0,
              symbol$1,
              symbol_map,
              apply$0,
              map2,
              map3,
              all,
              all_unit,
              Applicative_infix]}
    function _am_(_AP_,_AO_,_AN_)
     {var _AQ_=Make_let_syntax3(_AP_,_AO_,_AN_)[1],_AR_=_AQ_[8];
      return [0,
              [0,
               _AQ_[1],
               _AQ_[4],
               _AQ_[5],
               _AQ_[6],
               _AQ_[7],
               [0,_AR_[1],_AR_[2],_AR_[3],_AR_[8]]]]}
    function _an_(_AK_,_AJ_,_AI_)
     {var _AL_=Make_let_syntax2(_AK_,_AJ_,_AI_)[1],_AM_=_AL_[8];
      return [0,
              [0,
               _AL_[1],
               _AL_[4],
               _AL_[5],
               _AL_[6],
               _AL_[7],
               [0,_AM_[1],_AM_[2],_AM_[3],_AM_[8]]]]}
    var
     Base_Applicative=
      [0,
       S2_to_S$0,
       S_to_S2$0,
       S3_to_S2$0,
       S2_to_S3$0,
       Make$0,
       Make2$0,
       Make3$0,
       function(X,Intf,Impl)
        {var
          return$0=X[1],
          map=X[2],
          both=X[3],
          symbol=X[4],
          symbol$0=X[5],
          symbol$1=X[6],
          symbol_map=X[7],
          _AG_=
           Make_let_syntax2
             ([0,return$0,map,both,symbol,symbol$0,symbol$1,symbol_map],
              Intf,
              Impl)
            [1],
          _AH_=_AG_[8];
         return [0,
                 [0,
                  _AG_[1],
                  _AG_[4],
                  _AG_[5],
                  _AG_[6],
                  _AG_[7],
                  [0,_AH_[1],_AH_[2],_AH_[3],_AH_[8]]]]},
       _an_,
       _am_,
       Make_using_map2,
       Make2_using_map2,
       Make3_using_map2,
       Of_monad,
       Of_monad2,
       Compose,
       Pair];
    caml_register_global(997,Base_Applicative,"Base__Applicative");
    var Base_Bytes_set_primitives=[0];
    caml_register_global
     (998,Base_Bytes_set_primitives,"Base__Bytes_set_primitives");
    function make$0(compare,sexp_of_t)
     {var comparator=[0,compare,sexp_of_t];return [0,comparator]}
    function S_to_S1(S){var comparator=S[1];return [0,comparator]}
    function Make1(M){var comparator=[0,M[1],M[2]];return [0,comparator]}
    var compare$23=caml_compare;
    function sexp_of_t$18(param){return _ao_}
    var
     include$21=Make1([0,compare$23,sexp_of_t$18]),
     comparator=include$21[1],
     Poly=[0,comparator];
    function Derived(M)
     {function comparator(a)
       {var _AF_=caml_call1(M[2],a[2]);return [0,caml_call1(M[1],a[1]),_AF_]}
      return [0,comparator]}
    function Derived2(M)
     {function comparator(a,b)
       {var _AE_=caml_call2(M[2],a[2],b[2]);
        return [0,caml_call2(M[1],a[1],b[1]),_AE_]}
      return [0,comparator]}
    function Derived_phantom(M)
     {function comparator(a)
       {var _AD_=caml_call1(M[2],a[2]);return [0,caml_call1(M[1],a[1]),_AD_]}
      return [0,comparator]}
    function _ap_(M){var comparator=[0,M[1],M[2]];return [0,comparator]}
    var
     Base_Comparator=
      [0,make$0,Poly,S_to_S1,_ap_,Make1,Derived,Derived2,Derived_phantom];
    caml_register_global(999,Base_Comparator,"Base__Comparator");
    function opaque_identity(_AC_){return _AC_}
    var For_generated_code=[0,opaque_identity];
    function name(param){return param[2]}
    function get(param,r){return caml_call1(param[4],r)}
    function fset(param,r,v){return caml_call2(param[5],r,v)}
    function setter(param){return param[3]}
    function map$9(field,r,f)
     {var _AB_=caml_call1(f,caml_call1(field[4],r));
      return caml_call2(field[5],r,_AB_)}
    function updater(field)
     {var _AA_=field[3];
      if(_AA_)
       {var setter=_AA_[1];
        return [0,
                function(r,f)
                 {return caml_call2
                          (setter,r,caml_call1(f,caml_call1(field[4],r)))}]}
      return 0}
    var Base_Field=[0,For_generated_code,name,get,fset,setter,map$9,updater];
    caml_register_global(1000,Base_Field,"Base__Field");
    var
     capitalize=Stdlib_string[31],
     lowercase=Stdlib_string[30],
     uncapitalize=Stdlib_string[32],
     uppercase=Stdlib_string[29],
     String=[0],
     compare$24=Stdlib_stringLabels[33],
     copy$1=Stdlib_stringLabels[3],
     escaped=Stdlib_stringLabels[13],
     make$1=Stdlib_stringLabels[1],
     sub$2=Stdlib_stringLabels[4],
     unsafe_blit=caml_blit_string;
    function concat$0(opt,l)
     {if(opt)var sth=opt[1],sep=sth;else var sep=cst$0;
      if(l)
       {if(l[2])return caml_call2(Stdlib_stringLabels[7],sep,l);
        var x=l[1];
        return x}
      return cst}
    function iter$3(t,f){return caml_call2(Stdlib_stringLabels[8],f,t)}
    var
     include$22=
      [0,
       capitalize,
       lowercase,
       uncapitalize,
       uppercase,
       String,
       max_length,
       symbol$77,
       compare$24,
       copy$1,
       escaped,
       make$1,
       sub$2,
       unsafe_blit,
       concat$0,
       iter$3];
    caml_register_global(1003,include$22,"Base__String0");
    function compare$25(a_001,b_002)
     {if(a_001 === b_002)return 0;
      var n=caml_call2(compare_string$0,a_001[1],b_002[1]);
      if(0 === n)
       {var n$0=caml_call2(compare$13,a_001[2],b_002[2]);
        if(0 === n$0)
         {var n$1=caml_call2(compare$13,a_001[3],b_002[3]);
          return 0 === n$1?caml_call2(compare$13,a_001[4],b_002[4]):n$1}
        return n$0}
      return n}
    function hash_fold_t$12(hsv,arg)
     {var
       hsv$0=caml_call2(hash_fold_string$0,hsv,arg[1]),
       hsv$1=caml_call2(hash_fold_t$4,hsv$0,arg[2]),
       hsv$2=caml_call2(hash_fold_t$4,hsv$1,arg[3]);
      return caml_call2(hash_fold_t$4,hsv$2,arg[4])}
    function hash$1(x)
     {var hsv=create$0(0,0);
      return runtime.Base_internalhash_get_hash_value(hash_fold_t$12(hsv,x))}
    function t_of_sexp$15(sexp)
     {if(0 === sexp[0])
       return caml_call2(Sexplib0_Sexp_conv_error[15],tp_loc$2,sexp);
      var
       field_sexps=sexp[1],
       pos_fname_field=[0,0],
       pos_lnum_field=[0,0],
       pos_bol_field=[0,0],
       pos_cnum_field=[0,0],
       duplicates=[0,0],
       extra=[0,0],
       param=field_sexps;
      for(;;)
       {if(param)
         {var _Ar_=param[1];
          if(1 === _Ar_[0])
           {var _As_=_Ar_[1];
            if(_As_)
             {var _At_=_As_[1];
              if(0 === _At_[0])
               {var _Au_=_As_[2],_Av_=_At_[1];
                if(! _Au_)
                 {var tail$0=param[2];
                  if(Sexplib0_Sexp_conv[26][1])extra[1] = [0,_Av_,extra[1]];
                  var param=tail$0;
                  continue}
                if(! _Au_[2])
                 {var tail=param[2],field_sexp=_Au_[1];
                  if(caml_string_notequal(_Av_,cst_pos_bol))
                   if(caml_string_notequal(_Av_,cst_pos_cnum))
                    if(caml_string_notequal(_Av_,cst_pos_fname))
                     if(caml_string_notequal(_Av_,cst_pos_lnum))
                      {if(Sexplib0_Sexp_conv[26][1])extra[1] = [0,_Av_,extra[1]]}
                     else
                      if(pos_lnum_field[1])
                       duplicates[1] = [0,_Av_,duplicates[1]];
                      else
                       {var fvalue=caml_call1(t_of_sexp$4,field_sexp);
                        pos_lnum_field[1] = [0,fvalue]}
                    else
                     if(pos_fname_field[1])
                      duplicates[1] = [0,_Av_,duplicates[1]];
                     else
                      {var fvalue$0=caml_call1(t_of_sexp$2,field_sexp);
                       pos_fname_field[1] = [0,fvalue$0]}
                   else
                    if(pos_cnum_field[1])
                     duplicates[1] = [0,_Av_,duplicates[1]];
                    else
                     {var fvalue$1=caml_call1(t_of_sexp$4,field_sexp);
                      pos_cnum_field[1] = [0,fvalue$1]}
                  else
                   if(pos_bol_field[1])
                    duplicates[1] = [0,_Av_,duplicates[1]];
                   else
                    {var fvalue$2=caml_call1(t_of_sexp$4,field_sexp);
                     pos_bol_field[1] = [0,fvalue$2]}
                  var param=tail;
                  continue}}}}
          caml_call2(Sexplib0_Sexp_conv_error[9],tp_loc$2,_Ar_)}
        if(duplicates[1])
         return caml_call3
                 (Sexplib0_Sexp_conv_error[11],tp_loc$2,duplicates[1],sexp);
        if(extra[1])
         return caml_call3
                 (Sexplib0_Sexp_conv_error[12],tp_loc$2,extra[1],sexp);
        var
         _Aw_=pos_fname_field[1],
         _Ax_=pos_lnum_field[1],
         _Ay_=pos_bol_field[1],
         _Az_=pos_cnum_field[1];
        if(_Aw_ && _Ax_ && _Ay_ && _Az_)
         {var
           pos_cnum_value=_Az_[1],
           pos_bol_value=_Ay_[1],
           pos_lnum_value=_Ax_[1],
           pos_fname_value=_Aw_[1];
          return [0,
                  pos_fname_value,
                  pos_lnum_value,
                  pos_bol_value,
                  pos_cnum_value]}
        return caml_call3
                (Sexplib0_Sexp_conv_error[14],
                 tp_loc$2,
                 sexp,
                 [0,
                  [0,0 === pos_fname_field[1]?1:0,cst_pos_fname$0],
                  [0,
                   [0,0 === pos_lnum_field[1]?1:0,cst_pos_lnum$0],
                   [0,
                    [0,0 === pos_bol_field[1]?1:0,cst_pos_bol$0],
                    [0,[0,0 === pos_cnum_field[1]?1:0,cst_pos_cnum$0],0]]]])}}
    function sexp_of_t$19(param)
     {var
       v_pos_cnum=param[4],
       v_pos_bol=param[3],
       v_pos_lnum=param[2],
       v_pos_fname=param[1],
       arg=caml_call1(sexp_of_t$4,v_pos_cnum),
       bnds=[0,[1,[0,_aq_,[0,arg,0]]],0],
       arg$0=caml_call1(sexp_of_t$4,v_pos_bol),
       bnds$0=[0,[1,[0,_ar_,[0,arg$0,0]]],bnds],
       arg$1=caml_call1(sexp_of_t$4,v_pos_lnum),
       bnds$1=[0,[1,[0,_as_,[0,arg$1,0]]],bnds$0],
       arg$2=caml_call1(sexp_of_t$2,v_pos_fname),
       bnds$2=[0,[1,[0,_at_,[0,arg$2,0]]],bnds$1];
      return [1,bnds$2]}
    var
     T=[0,compare$25,hash_fold_t$12,hash$1,t_of_sexp$15,sexp_of_t$19],
     compare$26=T[1],
     hash_fold_t$13=T[2],
     hash$2=T[3],
     t_of_sexp$16=T[4],
     include$23=_ap_([0,T[1],T[5]]),
     comparator$0=include$23[1];
    function make_location_string(pos_fname,pos_lnum,pos_cnum,pos_bol)
     {var _Aq_=[0,cst$1,[0,caml_call1(to_string,pos_cnum - pos_bol | 0),0]];
      return concat$0
              (0,
               [0,pos_fname,[0,cst$2,[0,caml_call1(to_string,pos_lnum),_Aq_]]])}
    function to_string$2(param)
     {var
       pos_cnum=param[4],
       pos_bol=param[3],
       pos_lnum=param[2],
       pos_fname=param[1];
      return make_location_string(pos_fname,pos_lnum,pos_cnum,pos_bol)}
    function sexp_of_t$20(t){return [0,to_string$2(t)]}
    var
     include$24=
      [0,
       T,
       compare$26,
       hash_fold_t$13,
       hash$2,
       t_of_sexp$16,
       comparator$0,
       make_location_string,
       to_string$2,
       sexp_of_t$20];
    caml_register_global(1004,include$24,"Base__Source_code_position0");
    var Base_Invariant_intf=[0];
    caml_register_global(1005,Base_Invariant_intf,"Base__Invariant_intf");
    var Base_Info_intf=[0];
    caml_register_global(1006,Base_Info_intf,"Base__Info_intf");
    function sexp_of_t$21(param)
     {switch(param[0])
       {case 0:
         var v0=param[1],v0$0=caml_call1(sexp_of_t,v0);
         return [1,[0,_au_,[0,v0$0,0]]];
        case 1:
         var v0$1=param[1],v0$2=caml_call1(sexp_of_t$2,v0$1);
         return [1,[0,_av_,[0,v0$2,0]]];
        case 2:
         var v0$3=param[1],v0$4=caml_call1(sexp_of_exn,v0$3);
         return [1,[0,_aw_,[0,v0$4,0]]];
        case 3:
         var v0$5=param[1],v0$6=caml_call1(sexp_of_t,v0$5);
         return [1,[0,_ax_,[0,v0$6,0]]];
        case 4:
         var
          v2=param[3],
          v1=param[2],
          v0$7=param[1],
          v0$8=caml_call1(sexp_of_t$2,v0$7),
          v1$0=caml_call1(sexp_of_t,v1),
          v2$0=caml_call2(sexp_of_option,sexp_of_t$20,v2);
         return [1,[0,_ay_,[0,v0$8,[0,v1$0,[0,v2$0,0]]]]];
        case 5:
         var
          v1$1=param[2],
          v0$9=param[1],
          v0$10=caml_call1(sexp_of_t$2,v0$9),
          v1$2=sexp_of_t$21(v1$1);
         return [1,[0,_az_,[0,v0$10,[0,v1$2,0]]]];
        case 6:
         var
          v2$1=param[3],
          v1$3=param[2],
          v0$11=param[1],
          v0$12=caml_call1(sexp_of_t$2,v0$11),
          v1$4=caml_call1(sexp_of_t,v1$3),
          v2$2=sexp_of_t$21(v2$1);
         return [1,[0,_aA_,[0,v0$12,[0,v1$4,[0,v2$2,0]]]]];
        case 7:
         var
          v1$5=param[2],
          v0$13=param[1],
          v0$14=caml_call2(sexp_of_option,sexp_of_t$4,v0$13),
          v1$6=caml_call2(sexp_of_t$10,sexp_of_t$21,v1$5);
         return [1,[0,_aB_,[0,v0$14,[0,v1$6,0]]]];
        default:
         var
          v1$7=param[2],
          v0$15=param[1],
          v0$16=sexp_of_t$21(v0$15),
          v1$8=caml_call1(sexp_of_t$2,v1$7);
         return [1,[0,_aC_,[0,v0$16,[0,v1$8,0]]]]}}
    function to_strings_hum(t,ac)
     {var t$0=t,ac$0=ac;
      for(;;)
       switch(t$0[0])
        {case 0:
          var sexp=t$0[1];
          return [0,
                  cst_could_not_construct_info,
                  [0,caml_call1(to_string_mach,sexp),ac$0]];
         case 1:var string=t$0[1];return [0,string,ac$0];
         case 2:
          var exn=t$0[1];
          return [0,
                  caml_call1(to_string_mach,caml_call1(sexp_of_exn,exn)),
                  ac$0];
         case 3:
          var sexp$0=t$0[1];return [0,caml_call1(to_string_mach,sexp$0),ac$0];
         case 4:
          var sexp$1=t$0[2],tag=t$0[1];
          return [0,tag,[0,cst$3,[0,caml_call1(to_string_mach,sexp$1),ac$0]]];
         case 5:
          var t$1=t$0[2],tag$0=t$0[1];
          return [0,tag$0,[0,cst$4,to_strings_hum(t$1,ac$0)]];
         case 6:
          var
           t$2=t$0[3],
           sexp$2=t$0[2],
           tag$1=t$0[1],
           _An_=[0,cst$5,to_strings_hum(t$2,ac$0)],
           body=[0,caml_call1(to_string_mach,sexp$2),_An_];
          return caml_call2(symbol$81,caml_ml_string_length(tag$1),0)
                  ?body
                  :[0,tag$1,[0,cst$6,body]];
         case 7:
          var ts=t$0[2],trunc_after=t$0[1];
          if(trunc_after)
           {var max=trunc_after[1],n=caml_call1(length,ts);
            if(caml_call2(symbol$79,n,max))
             var ts$0=ts;
            else
             var
              _Ap_=[0,[1,caml_call2(sprintf,_aD_,n - max | 0)],0],
              ts$0=caml_call2(symbol$76,take(ts,max),_Ap_);
            var ts$1=ts$0}
          else
           var ts$1=ts;
          var
           _Ao_=
            function(ac,t)
             {var ac$0=is_empty(ac)?ac:[0,cst$7,ac];
              return to_strings_hum(t,ac$0)};
          return fold$0(rev(ts$1),ac$0,_Ao_);
         default:
          var
           backtrace=t$0[2],
           t$3=t$0[1],
           ac$1=[0,cst_Backtrace,[0,backtrace,ac$0]],
           t$0=t$3,
           ac$0=ac$1;
          continue}}
    function to_sexps_hum(t,ac)
     {switch(t[0])
       {case 0:return [0,sexp_of_t$21(t),ac];
        case 1:var string=t[1];return [0,[0,string],ac];
        case 2:var exn=t[1];return [0,caml_call1(sexp_of_exn,exn),ac];
        case 3:var sexp=t[1];return [0,sexp,ac];
        case 4:
         var here=t[3],sexp$0=t[2],tag=t[1];
         if(here)
          var here$0=here[1],_Al_=[0,sexp_of_t$20(here$0),0];
         else
          var _Al_=0;
         return [0,[1,[0,[0,tag],[0,sexp$0,_Al_]]],ac];
        case 5:
         var t$0=t[2],tag$0=t[1];
         return [0,[1,[0,[0,tag$0],to_sexps_hum(t$0,0)]],ac];
        case 6:
         var
          t$1=t[3],
          sexp$1=t[2],
          tag$1=t[1],
          body=[0,sexp$1,to_sexps_hum(t$1,0)];
         return caml_call2(symbol$81,caml_ml_string_length(tag$1),0)
                 ?[0,[1,body],ac]
                 :[0,[1,[0,[0,tag$1],body]],ac];
        case 7:
         var ts=t[2],_Am_=function(ac,t){return to_sexps_hum(t,ac)};
         return fold$0(rev(ts),ac,_Am_);
        default:
         var backtrace=t[2],t$2=t[1];
         return [0,[1,[0,to_sexp_hum(t$2),[0,[0,backtrace],0]]],ac]}}
    function to_sexp_hum(t)
     {var sexps=to_sexps_hum(t,0);
      if(sexps && ! sexps[2]){var sexp=sexps[1];return sexp}
      return [1,sexps]}
    function protect$0(f)
     {try
       {var _Ak_=caml_call1(f,0);return _Ak_}
      catch(exn)
       {exn = caml_wrap_exception(exn);return [0,caml_call1(sexp_of_exn,exn)]}}
    function to_message(info)
     {return protect$0
              (function(param)
                {var _Aj_=caml_obj_tag(info);
                 return 250 === _Aj_
                         ?info[1]
                         :246 === _Aj_?caml_call1(CamlinternalLazy[2],info):info})}
    function of_message(t){return [250,t]}
    function invariant(param){return 0}
    function sexp_of_t$22(t){return to_sexp_hum(to_message(t))}
    function t_of_sexp$17(sexp){return [246,function(_Ai_){return [3,sexp]}]}
    function compare$27(t1,t2)
     {var _Ah_=sexp_of_t$22(t2);return compare$10(sexp_of_t$22(t1),_Ah_)}
    function equal$15(t1,t2)
     {var _Ag_=sexp_of_t$22(t2);
      return caml_call2(equal$11,sexp_of_t$22(t1),_Ag_)}
    function hash_fold_t$14(state,t)
     {return caml_call2(hash_fold_t,state,sexp_of_t$22(t))}
    function hash$3(t){return run(0,hash_fold_t$14,t)}
    function to_string_hum$0(t)
     {var message=to_message(t);
      if(1 === message[0]){var s=message[1];return s}
      return caml_call2(to_string_hum,0,to_sexp_hum(message))}
    function to_string_hum_deprecated(t)
     {var t$0=to_message(t);return concat$0(0,to_strings_hum(t$0,0))}
    function to_string_mach$1(t)
     {return caml_call1(to_string_mach,sexp_of_t$22(t))}
    function of_lazy(l)
     {return [246,
              function(_Ad_)
               {return protect$0
                        (function(param)
                          {var
                            _Ae_=caml_obj_tag(l),
                            _Af_=
                             250 === _Ae_
                              ?l[1]
                              :246 === _Ae_?caml_call1(CamlinternalLazy[2],l):l;
                           return [1,_Af_]})}]}
    function of_lazy_t(lazy_t){return caml_call1(join$1,lazy_t)}
    function of_string$1(message){return caml_call1(from_val,[1,message])}
    function createf(format){return caml_call2(ksprintf,of_string$1,format)}
    function of_thunk(f)
     {return [246,
              function(_Ac_)
               {return protect$0(function(param){return [1,caml_call1(f,0)]})}]}
    function create$1(here,strict,tag,x,sexp_of_x)
     {return strict
              ?[250,[4,tag,caml_call1(sexp_of_x,x),here]]
              :[246,
                function(_Ab_)
                 {return protect$0
                          (function(param)
                            {return [4,tag,caml_call1(sexp_of_x,x),here]})}]}
    function create_s$0(sexp){return caml_call1(from_val,[3,sexp])}
    function tag(t,tag)
     {return [246,function(_Aa_){return [5,tag,to_message(t)]}]}
    function tag_s(t,tag)
     {return [246,
              function(_z$_)
               {return protect$0
                        (function(param){return [6,cst$8,tag,to_message(t)]})}]}
    function tag_arg(t,tag,x,sexp_of_x)
     {return [246,
              function(_z9_)
               {return protect$0
                        (function(param)
                          {var _z__=to_message(t);
                           return [6,tag,caml_call1(sexp_of_x,x),_z__]})}]}
    function arg(trunc_after,ts)
     {return [246,function(_z8_){return [7,trunc_after,map$6(ts,to_message)]}]}
    var Exn=[248,cst_Base_Info_Exn,caml_fresh_oo_id(0)];
    function _aE_(param)
     {if(param[1] === Exn){var t=param[2];return sexp_of_t$22(t)}
      throw [0,Assert_failure,_aF_]}
    caml_call3(Sexplib0_Sexp_conv[51][2],0,Exn,_aE_);
    function to_exn(t)
     {if(caml_call1(is_val,t))
       {var
         _z6_=caml_obj_tag(t),
         _z7_=
          250 === _z6_?t[1]:246 === _z6_?caml_call1(CamlinternalLazy[2],t):t;
        if(2 === _z7_[0]){var exn=_z7_[1];return exn}
        return [0,Exn,t]}
      return [0,Exn,t]}
    function of_exn(backtrace,exn)
     {if(backtrace)
       {var _z1_=backtrace[1];
        if(typeof _z1_ === "number")
         var _z2_=[0,caml_call1(Stdlib_printexc[6],0)];
        else
         var s=_z1_[2],_z2_=[0,s];
        var backtrace$0=_z2_}
      else
       var backtrace$0=0;
      if(exn[1] === Exn)
       {var _z3_=exn[2];
        if(backtrace$0)
         {var backtrace$1=backtrace$0[1];
          return [246,function(_z5_){return [8,to_message(_z3_),backtrace$1]}]}
        return _z3_}
      if(backtrace$0)
       {var backtrace$2=backtrace$0[1];
        return [246,
                function(_z4_)
                 {return [8,[3,caml_call1(sexp_of_exn,exn)],backtrace$2]}]}
      return caml_call1(from_val,[2,exn])}
    function pp$2(ppf,t)
     {var _z0_=to_string_hum$0(t);
      return caml_call2(Stdlib_format[13],ppf,_z0_)}
    var
     include$25=_u_([0,pp$2,module_name$0]),
     pp$3=include$25[1],
     Internal_repr=[0,sexp_of_t$21,to_message,of_message],
     include$26=
      [0,
       compare$27,
       equal$15,
       hash_fold_t$14,
       hash$3,
       t_of_sexp$17,
       sexp_of_t$22,
       invariant,
       to_string_hum$0,
       to_string_mach$1,
       to_string_hum_deprecated,
       of_string$1,
       of_lazy,
       of_thunk,
       of_lazy_t,
       create$1,
       create_s$0,
       createf,
       tag,
       tag_s,
       tag_arg,
       arg,
       of_exn,
       to_exn,
       pp$3,
       Internal_repr];
    caml_register_global(1007,include$26,"Base__Info");
    function raise(t){throw to_exn(t)}
    function raise_s(sexp){return raise(create_s$0(sexp))}
    function to_info(t){return t}
    function of_info(t){return t}
    var
     include$27=_u_([0,pp$3,module_name$1]),
     pp$4=include$27[1],
     Base_Error=
      [0,
       compare$27,
       equal$15,
       hash_fold_t$14,
       hash$3,
       t_of_sexp$17,
       sexp_of_t$22,
       invariant,
       to_string_hum$0,
       to_string_mach$1,
       to_string_hum_deprecated,
       of_string$1,
       of_lazy,
       of_thunk,
       of_lazy_t,
       create$1,
       create_s$0,
       createf,
       tag,
       tag_s,
       tag_arg,
       arg,
       of_exn,
       to_exn,
       pp$4,
       Internal_repr,
       raise,
       raise_s,
       to_info,
       of_info];
    caml_register_global(1008,Base_Error,"Base__Error");
    function invariant$0(here,t,sexp_of_t,f)
     {try
       {var _zZ_=caml_call1(f,0);return _zZ_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        var
         _zX_=[0,[0,cst$9,caml_call1(sexp_of_t,t)],0],
         _zY_=[0,[0,cst_exn,caml_call1(sexp_of_exn,exn)],_zX_];
        return raise_s
                (caml_call2
                  (message,
                   cst_invariant_failed,
                   [0,[0,cst$10,sexp_of_t$20(here)],_zY_]))}}
    function check_field(t,f,field)
     {try
       {var _zW_=caml_call1(f,get(field,t));return _zW_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        var _zV_=[0,[0,cst_exn$0,caml_call1(sexp_of_exn,exn)],0];
        return raise_s
                (caml_call2
                  (message,
                   cst_problem_with_field,
                   [0,[0,cst_field,caml_call1(sexp_of_t$2,field[2])],_zV_]))}}
    var Base_Invariant=[0,invariant$0,check_field];
    caml_register_global(1009,Base_Invariant,"Base__Invariant");
    var Base_Ppx_enumerate_lib=[0];
    caml_register_global
     (1010,Base_Ppx_enumerate_lib,"Base__Ppx_enumerate_lib");
    function all$5(all_of_a)
     {var l=all_of_a,acc=0;
      for(;;)
       {if(l)
         {var
           l$0=l[2],
           enumerate_002=l[1],
           acc$0=[0,[1,enumerate_002],acc],
           l=l$0,
           acc=acc$0;
          continue}
        var l$1=all_of_a,acc$1=0,_zU_=append$0(rev(acc),_aG_);
        for(;;)
         {if(l$1)
           {var
             l$2=l$1[2],
             enumerate_001=l$1[1],
             acc$2=[0,[0,enumerate_001],acc$1],
             l$1=l$2,
             acc$1=acc$2;
            continue}
          return append$0(rev(acc$1),_zU_)}}}
    function t_of_sexp$18(of_a,sexp)
     {if(0 === sexp[0])
       {var _zQ_=sexp[1],switch$0=0;
        if(caml_string_notequal(_zQ_,cst_Excl))
         {var switch$1=0;
          if(caml_string_notequal(_zQ_,cst_Incl))
           {var switch$2=0;
            if(caml_string_notequal(_zQ_,cst_Unbounded))
             if(caml_string_notequal(_zQ_,cst_excl))
              if(caml_string_notequal(_zQ_,cst_incl))
               {if(caml_string_notequal(_zQ_,cst_unbounded))
                 {switch$0 = 1;switch$1 = 1;switch$2 = 1}}
              else
               switch$2 = 1;
             else
              {switch$1 = 1;switch$2 = 1}
            if(! switch$2)return 0}
          if(! switch$1)
           return caml_call2(Sexplib0_Sexp_conv_error[5],tp_loc$3,sexp)}
        if(! switch$0)
         return caml_call2(Sexplib0_Sexp_conv_error[5],tp_loc$3,sexp)}
      else
       {var _zR_=sexp[1];
        if(! _zR_)
         return caml_call2(Sexplib0_Sexp_conv_error[7],tp_loc$3,sexp);
        var _zS_=_zR_[1];
        if(0 !== _zS_[0])
         return caml_call2(Sexplib0_Sexp_conv_error[6],tp_loc$3,sexp);
        var _zT_=_zS_[1],switch$3=0;
        if(caml_string_notequal(_zT_,cst_Excl$0))
         {var switch$4=0;
          if(caml_string_notequal(_zT_,cst_Incl$0))
           {var switch$5=0;
            if(caml_string_notequal(_zT_,cst_Unbounded$0))
             if(caml_string_notequal(_zT_,cst_excl$0))
              if(caml_string_notequal(_zT_,cst_incl$0))
               {if(caml_string_notequal(_zT_,cst_unbounded$0))
                 {switch$3 = 1;switch$4 = 1;switch$5 = 1}}
              else
               switch$5 = 1;
             else
              {switch$4 = 1;switch$5 = 1}
            if(! switch$5)
             return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$3,sexp)}
          if(! switch$4)
           {var sexp_args=_zR_[2];
            if(sexp_args && ! sexp_args[2])
             {var v0=sexp_args[1],v0$0=caml_call1(of_a,v0);return [0,v0$0]}
            return caml_call3(Sexplib0_Sexp_conv_error[4],tp_loc$3,_zT_,sexp)}}
        if(! switch$3)
         {var sexp_args$0=_zR_[2];
          if(sexp_args$0 && ! sexp_args$0[2])
           {var v0$1=sexp_args$0[1],v0$2=caml_call1(of_a,v0$1);
            return [1,v0$2]}
          return caml_call3(Sexplib0_Sexp_conv_error[4],tp_loc$3,_zT_,sexp)}}
      return caml_call2(Sexplib0_Sexp_conv_error[8],tp_loc$3,sexp)}
    function sexp_of_t$23(of_a,param)
     {if(typeof param === "number")
       return _aH_;
      else
       {if(0 === param[0])
         {var v0=param[1],v0$0=caml_call1(of_a,v0);
          return [1,[0,_aI_,[0,v0$0,0]]]}
        var v0$1=param[1],v0$2=caml_call1(of_a,v0$1);
        return [1,[0,_aJ_,[0,v0$2,0]]]}}
    function interval_comparison_of_sexp(sexp)
     {if(0 === sexp[0])
       {var _zM_=sexp[1],switch$0=0;
        if(caml_string_notequal(_zM_,cst_Above_upper_bound))
         {var switch$1=0;
          if(caml_string_notequal(_zM_,cst_Below_lower_bound))
           {var switch$2=0;
            if(caml_string_notequal(_zM_,cst_In_range))
             if(caml_string_notequal(_zM_,cst_above_upper_bound))
              if(caml_string_notequal(_zM_,cst_below_lower_bound))
               {if(caml_string_notequal(_zM_,cst_in_range))
                 {switch$0 = 1;switch$1 = 1;switch$2 = 1}}
              else
               switch$2 = 1;
             else
              {switch$1 = 1;switch$2 = 1}
            if(! switch$2)return 1}
          if(! switch$1)return 0}
        if(! switch$0)return 2}
      else
       {var _zN_=sexp[1];
        if(! _zN_)
         return caml_call2(Sexplib0_Sexp_conv_error[7],tp_loc$4,sexp);
        var _zO_=_zN_[1];
        if(0 !== _zO_[0])
         return caml_call2(Sexplib0_Sexp_conv_error[6],tp_loc$4,sexp);
        var _zP_=_zO_[1],switch$3=0;
        if(caml_string_notequal(_zP_,cst_Above_upper_bound$0))
         {var switch$4=0;
          if(caml_string_notequal(_zP_,cst_Below_lower_bound$0))
           {var switch$5=0;
            if(caml_string_notequal(_zP_,cst_In_range$0))
             if(caml_string_notequal(_zP_,cst_above_upper_bound$0))
              if(caml_string_notequal(_zP_,cst_below_lower_bound$0))
               {if(caml_string_notequal(_zP_,cst_in_range$0))
                 {switch$3 = 1;switch$4 = 1;switch$5 = 1}}
              else
               switch$5 = 1;
             else
              {switch$4 = 1;switch$5 = 1}
            if(! switch$5)
             return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$4,sexp)}
          if(! switch$4)
           return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$4,sexp)}
        if(! switch$3)
         return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$4,sexp)}
      return caml_call2(Sexplib0_Sexp_conv_error[8],tp_loc$4,sexp)}
    function sexp_of_interval_comparison(param)
     {switch(param){case 0:return _aK_;case 1:return _aL_;default:return _aM_}}
    var compare_interval_comparison=caml_int_compare;
    function hash_fold_interval_comparison(hsv,arg)
     {switch(arg)
       {case 0:return runtime.Base_internalhash_fold_int(hsv,0);
        case 1:return runtime.Base_internalhash_fold_int(hsv,1);
        default:return runtime.Base_internalhash_fold_int(hsv,2)}}
    function hash_interval_comparison(x)
     {var hsv=create$0(0,0);
      return runtime.Base_internalhash_get_hash_value
              (hash_fold_interval_comparison(hsv,x))}
    function map$10(t,f)
     {if(typeof t === "number")
       return 0;
      else
       {if(0 === t[0]){var incl=t[1];return [0,caml_call1(f,incl)]}
        var excl=t[1];
        return [1,caml_call1(f,excl)]}}
    function is_lower_bound(t,a,compare)
     {if(typeof t === "number")
       return 1;
      else
       {if(0 === t[0])
         {var incl=t[1];
          return caml_call2(symbol$79,caml_call2(compare,incl,a),0)}
        var excl=t[1];
        return caml_call2(symbol$78,caml_call2(compare,excl,a),0)}}
    function is_upper_bound(t,a,compare)
     {if(typeof t === "number")
       return 1;
      else
       {if(0 === t[0])
         {var incl=t[1];
          return caml_call2(symbol$79,caml_call2(compare,a,incl),0)}
        var excl=t[1];
        return caml_call2(symbol$78,caml_call2(compare,a,excl),0)}}
    function bounds_crossed(lower,upper,compare)
     {if(typeof lower === "number")return 0;
      var lower$0=lower[1];
      if(typeof upper === "number")return 0;
      var upper$0=upper[1];
      return caml_call2(symbol$82,caml_call2(compare,lower$0,upper$0),0)}
    function compare_to_interval_exn(lower,upper,a,compare)
     {if(bounds_crossed(lower,upper,compare))
       caml_call1(failwith$0,cst_Maybe_bound_compare_to_int);
      return is_lower_bound(lower,a,compare)
              ?is_upper_bound(upper,a,compare)?1:2
              :0}
    function interval_contains_exn(lower,upper,a,compare)
     {var match=compare_to_interval_exn(lower,upper,a,compare);
      return 1 === match?1:0}
    var
     Base_Maybe_bound=
      [0,
       all$5,
       t_of_sexp$18,
       sexp_of_t$23,
       map$10,
       is_lower_bound,
       is_upper_bound,
       interval_contains_exn,
       bounds_crossed,
       sexp_of_interval_comparison,
       interval_comparison_of_sexp,
       compare_interval_comparison,
       hash_fold_interval_comparison,
       hash_interval_comparison,
       compare_to_interval_exn];
    caml_register_global(1011,Base_Maybe_bound,"Base__Maybe_bound");
    function compare$28(cmp_a,a_001,b_002)
     {return compare$19(cmp_a,compare$27,a_001,b_002)}
    function equal$16(cmp_a,a_007,b_008)
     {return equal$13(cmp_a,equal$15,a_007,b_008)}
    function hash_fold_t$15(hash_fold_a,hsv,arg)
     {return hash_fold_t$9(hash_fold_a,hash_fold_t$14,hsv,arg)}
    function t_of_sexp$19(of_a,t){return t_of_sexp$12(of_a,t_of_sexp$17,t)}
    function sexp_of_t$24(of_a,v){return sexp_of_t$13(of_a,sexp_of_t$22,v)}
    function invariant$1(invariant_a,t)
     {if(0 === t[0]){var a=t[1];return caml_call1(invariant_a,a)}return 0}
    function apply(f,x)
     {function _zL_(e1,e2){return arg(0,[0,e1,[0,e2,0]])}
      return combine(f,x,function(f,x){return caml_call1(f,x)},_zL_)}
    var
     map$11=[0,-198771759,map$3],
     include$28=Make$0([0,return$3,apply,map$11]),
     return$8=include$28[1],
     map$12=include$28[2],
     both=include$28[3],
     symbol$84=include$28[4],
     symbol$85=include$28[5],
     symbol$86=include$28[6],
     symbol_map$3=include$28[7],
     apply$0=include$28[8],
     map2$0=include$28[9],
     map3$0=include$28[10],
     all$6=include$28[11],
     all_unit$3=include$28[12],
     Applicative_infix=include$28[13],
     symbol_bind$3=Monad_infix$0[1],
     symbol_map$4=Monad_infix$0[2],
     Open_on_rhs=[0];
    function try_with$0(opt,f)
     {if(opt)var sth=opt[1],backtrace=sth;else var backtrace=0;
      try
       {var _zK_=[0,caml_call1(f,0)];return _zK_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        var _zJ_=backtrace?_aN_:0;
        return [1,of_exn(_zJ_,exn)]}}
    function try_with_join(backtrace,f)
     {return caml_call1(join$0,try_with$0(backtrace,f))}
    function ok_exn$0(param)
     {if(0 === param[0]){var x=param[1];return x}
      var err=param[1];
      return raise(err)}
    function of_exn$0(backtrace,exn){return [1,of_exn(backtrace,exn)]}
    function of_exn_result(backtrace,z)
     {if(0 === z[0])return z;var exn=z[1];return of_exn$0(backtrace,exn)}
    function error$0(strict,message,a,sexp_of_a)
     {return [1,create$1(0,strict,message,a,sexp_of_a)]}
    function error_s(sexp){return [1,create_s$0(sexp)]}
    function error_string(message){return [1,of_string$1(message)]}
    function errorf(format){return caml_call2(ksprintf,error_string,format)}
    function tag$0(t,tag$0)
     {return map_error(t,function(_zI_){return tag(_zI_,tag$0)})}
    function tag_s$0(t,tag)
     {return map_error(t,function(_zH_){return tag_s(_zH_,tag)})}
    function tag_arg$0(t,message,a,sexp_of_a)
     {return map_error(t,function(e){return tag_arg(e,message,a,sexp_of_a)})}
    function unimplemented(s)
     {return error$0(0,cst_unimplemented,s,sexp_of_t$2)}
    function combine_errors$0(l)
     {function _zG_(eta){return arg(0,eta)}
      return map_error(combine_errors(l),_zG_)}
    function combine_errors_unit$0(l)
     {function _zF_(param){return 0}
      return caml_call2(map$3,combine_errors$0(l),_zF_)}
    function filter_ok_at_least_one(l)
     {var match=partition_map(l,ok_fst),errs=match[2],ok=match[1];
      return ok?[0,ok]:[1,arg(0,errs)]}
    function find_ok(l)
     {var match=find_map$0(l,ok);
      if(match){var x=match[1];return [0,x]}
      return [1,
              arg
               (0,
                map$6
                 (l,
                  function(param)
                   {if(0 === param[0])throw [0,Assert_failure,_aO_];
                    var err=param[1];
                    return err}))]}
    function find_map_ok(l,f)
     {return with_return
              (function(param)
                {return [1,
                         arg
                          (0,
                           map$6
                            (l,
                             function(elt)
                              {var x=caml_call1(f,elt);
                               if(0 === x[0])return caml_call1(param,x);
                               var err=x[1];
                               return err}))]})}
    var
     Base_Or_error=
      [0,
       compare$28,
       equal$16,
       hash_fold_t$15,
       t_of_sexp$19,
       sexp_of_t$24,
       both,
       symbol$84,
       symbol$85,
       symbol$86,
       apply$0,
       map2$0,
       map3$0,
       Applicative_infix,
       invariant$1,
       symbol_bind$0,
       symbol_map$3,
       Monad_infix$0,
       bind$2,
       return$8,
       join$0,
       ignore_m$0,
       all$6,
       all_unit$3,
       [0,
        return$8,
        symbol_bind$3,
        symbol_map$4,
        [0,return$8,bind$2,map$12,both,Open_on_rhs]],
       is_ok,
       is_error,
       ignore_m$0,
       try_with$0,
       try_with_join,
       ok,
       ok_exn$0,
       of_exn$0,
       of_exn_result,
       error$0,
       error_s,
       error_string,
       errorf,
       tag$0,
       tag_s$0,
       tag_arg$0,
       unimplemented,
       map$3,
       iter$1,
       iter_error,
       combine_errors$0,
       combine_errors_unit$0,
       filter_ok_at_least_one,
       find_ok,
       find_map_ok];
    caml_register_global(1012,Base_Or_error,"Base__Or_error");
    function stage(_zE_){return _zE_}
    function unstage(_zD_){return _zD_}
    var Base_Staged=[0,stage,unstage];
    caml_register_global(1013,Base_Staged,"Base__Staged");
    var pass=0;
    function fails(message,a,sexp_of_a)
     {return [0,[0,0,create$1(0,0,message,a,sexp_of_a)],0]}
    function fail$0(message){return [0,[0,0,of_string$1(message)],0]}
    function failf$0(format){return caml_call2(ksprintf,fail$0,format)}
    function fail_s(sexp){return [0,[0,0,create_s$0(sexp)],0]}
    function combine$0(t1,t2){return caml_call2(symbol$76,t1,t2)}
    function name$0(name,t)
     {return t
              ?map$6
                (t,
                 function(param)
                  {var error=param[2],path=param[1];
                   return [0,[0,name,path],error]})
              :0}
    function name_list(n,l){return name$0(n,of_list$1(l))}
    function fail_fn(message,param){return fail$0(message)}
    function pass_bool(param){return pass}
    function pass_unit(param){return pass}
    function protect$1(f,v)
     {try
       {var _zC_=caml_call1(f,v);return _zC_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        return fail_s
                (caml_call2
                  (message,
                   cst_Exception_raised_during_va,
                   [0,[0,cst$11,caml_call1(sexp_of_exn,exn)],0]))}}
    function try_with$1(f)
     {var _zB_=0;
      return protect$1(function(param){caml_call1(f,0);return pass},_zB_)}
    function path_string(path){return concat$0(_aP_,path)}
    function errors(t)
     {return map$6
              (t,
               function(param)
                {var error=param[2],path=param[1];
                 return to_string_hum$0(tag(error,path_string(path)))})}
    function result(t)
     {if(is_empty(t))return _aQ_;
      var
       _zA_=
        caml_call1
         (sexp_of_t$10,caml_call2(sexp_of_pair,sexp_of_t$2,sexp_of_t$22));
      return error$0
              (0,
               cst_validation_errors,
               map$6
                (t,
                 function(param)
                  {var error=param[2],path=param[1];
                   return [0,path_string(path),error]}),
               _zA_)}
    function maybe_raise(t){return ok_exn$0(result(t))}
    function valid_or_error(x,check)
     {function _zz_(param){return x}
      return caml_call2(map$3,result(protect$1(check,x)),_zz_)}
    function field(record,fld,f)
     {var v=get(fld,record),result=protect$1(f,v);
      return name$0(fld[2],result)}
    function field_folder(record,check)
     {return function(acc,fld){return [0,field(record,fld,check),acc]}}
    function field_direct_folder(check)
     {return function(acc,fld,record,v)
       {var result=protect$1(check,v);
        return result?[0,name$0(fld[2],result),acc]:acc}}
    function all$7(checks,v)
     {var checks$0=checks,errs=0;
      for(;;)
       {if(checks$0)
         {var checks$1=checks$0[2],check=checks$0[1],err=protect$1(check,v);
          if(err)
           {var errs$0=[0,err,errs],checks$0=checks$1,errs=errs$0;continue}
          var checks$0=checks$1;
          continue}
        return of_list$1(rev(errs))}}
    function of_result(f)
     {function _zx_(v)
       {var match=caml_call1(f,v);
        if(0 === match[0])return pass;
        var error=match[1];
        return fail$0(error)}
      return function(_zy_){return protect$1(_zx_,_zy_)}}
    function of_error(f)
     {function _zv_(v)
       {var match=caml_call1(f,v);
        if(0 === match[0])return pass;
        var error=match[1];
        return [0,[0,0,error],0]}
      return function(_zw_){return protect$1(_zv_,_zw_)}}
    function booltest(f,if_false)
     {function _zt_(v){return caml_call1(f,v)?pass:fail$0(if_false)}
      return function(_zu_){return protect$1(_zt_,_zu_)}}
    function pair(fst,snd,param)
     {var
       snd_value=param[2],
       fst_value=param[1],
       _zs_=[0,name$0(cst_snd,protect$1(snd,snd_value)),0];
      return of_list$1([0,name$0(cst_fst,protect$1(fst,fst_value)),_zs_])}
    function list_indexed(check,list)
     {return of_list$1
              (mapi$0
                (list,
                 function(i,el)
                  {var _zr_=protect$1(check,el);
                   return name$0(caml_call1(to_string,i + 1 | 0),_zr_)}))}
    function list(extract_name,check,list)
     {return of_list$1
              (map$6
                (list,
                 function(el)
                  {var t=protect$1(check,el);
                   return t
                           ?protect$1
                             (function(t){return name$0(caml_call1(extract_name,el),t)},
                              t)
                           :0}))}
    function alist(name,f,list$0)
     {function _zq_(param){var x=param[2];return caml_call1(f,x)}
      return list
              (function(param){var key=param[1];return caml_call1(name,key)},
               _zq_,
               list$0)}
    function first_failure(t1,t2){return is_empty(t1)?t2:t1}
    function of_error_opt(param)
     {if(param){var error=param[1];return fail$0(error)}return pass}
    function bounded(name,lower,upper,compare,x)
     {var match=compare_to_interval_exn(lower,upper,x,compare);
      switch(match)
       {case 0:
         if(typeof lower === "number")
          throw [0,Assert_failure,_aR_];
         else
          {if(0 === lower[0])
            {var incl=lower[1],_zm_=caml_call1(name,incl);
             return fail$0(caml_call3(sprintf,_aS_,caml_call1(name,x),_zm_))}
           var excl=lower[1],_zn_=caml_call1(name,excl);
           return fail$0(caml_call3(sprintf,_aT_,caml_call1(name,x),_zn_))}
        case 1:return pass;
        default:
         if(typeof upper === "number")
          throw [0,Assert_failure,_aU_];
         else
          {if(0 === upper[0])
            {var incl$0=upper[1],_zo_=caml_call1(name,incl$0);
             return fail$0(caml_call3(sprintf,_aV_,caml_call1(name,x),_zo_))}
           var excl$0=upper[1],_zp_=caml_call1(name,excl$0);
           return fail$0(caml_call3(sprintf,_aW_,caml_call1(name,x),_zp_))}}}
    function symbol$87(t1,t2){return combine$0(t1,t2)}
    var
     Infix$0=[0,symbol$87],
     Base_Validate=
      [0,
       pass,
       fail$0,
       fails,
       fail_s,
       failf$0,
       combine$0,
       of_list$1,
       name$0,
       name_list,
       fail_fn,
       pass_bool,
       pass_unit,
       protect$1,
       try_with$1,
       result,
       errors,
       maybe_raise,
       valid_or_error,
       field,
       field_folder,
       field_direct_folder,
       all$7,
       of_result,
       of_error,
       booltest,
       pair,
       list_indexed,
       list,
       first_failure,
       of_error_opt,
       alist,
       bounded,
       Infix$0];
    caml_register_global(1014,Base_Validate,"Base__Validate");
    var Base_Comparisons=[0];
    caml_register_global(1015,Base_Comparisons,"Base__Comparisons");
    function t_of_sexp$20(sexp)
     {if(0 === sexp[0])
       {var _zi_=sexp[1],switch$0=0;
        if(caml_string_notequal(_zi_,cst_Neg))
         {var switch$1=0;
          if(caml_string_notequal(_zi_,cst_Pos))
           {var switch$2=0;
            if(caml_string_notequal(_zi_,cst_Zero))
             if(caml_string_notequal(_zi_,cst_neg))
              if(caml_string_notequal(_zi_,cst_pos))
               {if(caml_string_notequal(_zi_,cst_zero))
                 {switch$0 = 1;switch$1 = 1;switch$2 = 1}}
              else
               switch$2 = 1;
             else
              {switch$1 = 1;switch$2 = 1}
            if(! switch$2)return 1}
          if(! switch$1)return 2}
        if(! switch$0)return 0}
      else
       {var _zj_=sexp[1];
        if(! _zj_)
         return caml_call2(Sexplib0_Sexp_conv_error[7],tp_loc$5,sexp);
        var _zk_=_zj_[1];
        if(0 !== _zk_[0])
         return caml_call2(Sexplib0_Sexp_conv_error[6],tp_loc$5,sexp);
        var _zl_=_zk_[1],switch$3=0;
        if(caml_string_notequal(_zl_,cst_Neg$0))
         {var switch$4=0;
          if(caml_string_notequal(_zl_,cst_Pos$0))
           {var switch$5=0;
            if(caml_string_notequal(_zl_,cst_Zero$0))
             if(caml_string_notequal(_zl_,cst_neg$0))
              if(caml_string_notequal(_zl_,cst_pos$0))
               {if(caml_string_notequal(_zl_,cst_zero$0))
                 {switch$3 = 1;switch$4 = 1;switch$5 = 1}}
              else
               switch$5 = 1;
             else
              {switch$4 = 1;switch$5 = 1}
            if(! switch$5)
             return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$5,sexp)}
          if(! switch$4)
           return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$5,sexp)}
        if(! switch$3)
         return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$5,sexp)}
      return caml_call2(Sexplib0_Sexp_conv_error[8],tp_loc$5,sexp)}
    function sexp_of_t$25(param)
     {switch(param){case 0:return _aX_;case 1:return _aY_;default:return _aZ_}}
    var compare$29=caml_int_compare;
    function hash_fold_t$16(hsv,arg)
     {switch(arg)
       {case 0:return runtime.Base_internalhash_fold_int(hsv,0);
        case 1:return runtime.Base_internalhash_fold_int(hsv,1);
        default:return runtime.Base_internalhash_fold_int(hsv,2)}}
    function symbol$88(x,y){return x < y?1:0}
    function symbol$89(x,y){return x <= y?1:0}
    function symbol$90(x,y){return x !== y?1:0}
    function symbol$91(x,y){return x === y?1:0}
    function symbol$92(x,y){return y < x?1:0}
    function symbol$93(x,y){return y <= x?1:0}
    var ascending$12=caml_compare;
    function descending$12(x,y){return caml_compare(y,x)}
    var compare$30=caml_int_compare;
    function equal$17(x,y){return x === y?1:0}
    function max$13(x,y){return y <= x?x:y}
    function min$13(x,y){return x <= y?x:y}
    var
     Replace_polymorphic_compare=
      [0,
       symbol$88,
       symbol$89,
       symbol$90,
       symbol$91,
       symbol$92,
       symbol$93,
       ascending$12,
       descending$12,
       compare$30,
       equal$17,
       max$13,
       min$13];
    function of_string$2(s){return t_of_sexp$20(caml_call1(sexp_of_t$2,s))}
    function to_string$3(t){return caml_call1(t_of_sexp$2,sexp_of_t$25(t))}
    function to_int$1(param)
     {switch(param){case 0:return -1;case 1:return 0;default:return 1}}
    function sign(n)
     {return caml_call2(symbol$78,n,0)?0:caml_call2(symbol$81,n,0)?1:2}
    var
     Base_Sign0=
      [0,
       t_of_sexp$20,
       sexp_of_t$25,
       compare$29,
       hash_fold_t$16,
       all$8,
       Replace_polymorphic_compare,
       of_string$2,
       to_string$3,
       to_int$1,
       to_int$1,
       module_name$2,
       sign];
    caml_register_global(1016,Base_Sign0,"Base__Sign0");
    var Base_Comparable_intf=[0];
    caml_register_global(1017,Base_Comparable_intf,"Base__Comparable_intf");
    function Validate(T)
     {function to_string(t){return caml_call1(to_string$0,caml_call1(T[2],t))}
      function validate_bound(min,max,t)
       {return bounded(to_string,min,max,T[1],t)}
      function validate_lbound(min,t){return validate_bound(min,0,t)}
      function validate_ubound(max,t){return validate_bound(0,max,t)}
      return [0,validate_lbound,validate_ubound,validate_bound]}
    function With_zero(T)
     {var excl_zero=[1,T[3]],incl_zero=[0,T[3]];
      function validate_positive(t){return caml_call2(T[4],excl_zero,t)}
      function validate_non_negative(t){return caml_call2(T[4],incl_zero,t)}
      function validate_negative(t){return caml_call2(T[5],excl_zero,t)}
      function validate_non_positive(t){return caml_call2(T[5],incl_zero,t)}
      function is_positive(t)
       {return caml_call2(symbol$82,caml_call2(T[1],t,T[3]),0)}
      function is_non_negative(t)
       {return caml_call2(symbol$83,caml_call2(T[1],t,T[3]),0)}
      function is_negative(t)
       {return caml_call2(symbol$78,caml_call2(T[1],t,T[3]),0)}
      function is_non_positive(t)
       {return caml_call2(symbol$79,caml_call2(T[1],t,T[3]),0)}
      function sign$0(t){return sign(caml_call2(T[1],t,T[3]))}
      return [0,
              excl_zero,
              incl_zero,
              validate_positive,
              validate_non_negative,
              validate_negative,
              validate_non_positive,
              is_positive,
              is_non_negative,
              is_negative,
              is_non_positive,
              sign$0]}
    function geq(cmp,a,b){return caml_call2(symbol$83,caml_call2(cmp,a,b),0)}
    function leq(cmp,a,b){return caml_call2(symbol$79,caml_call2(cmp,a,b),0)}
    function equal$18(cmp,a,b)
     {return caml_call2(symbol$81,caml_call2(cmp,a,b),0)}
    function min$14(cmp,t$0,t){return leq(cmp,t$0,t)?t$0:t}
    function max$14(cmp,t$0,t){return geq(cmp,t$0,t)?t$0:t}
    function Make_using_comparator(T)
     {var sexp_of_t=T[1],comparator=T[2],compare=comparator[1];
      function symbol(a,b)
       {return caml_call2(symbol$82,caml_call2(compare,a,b),0)}
      function symbol$0(a,b)
       {return caml_call2(symbol$78,caml_call2(compare,a,b),0)}
      function symbol$1(a,b){return geq(compare,a,b)}
      function symbol$2(a,b){return leq(compare,a,b)}
      function equal(a,b){return equal$18(compare,a,b)}
      function symbol$3(a,b)
       {return caml_call2(symbol$80,caml_call2(compare,a,b),0)}
      function min(t$0,t){return min$14(compare,t$0,t)}
      function max(t$0,t){return max$14(compare,t$0,t)}
      function descending(t$0,t){return caml_call2(compare,t,t$0)}
      function between(t,low,high)
       {var _zh_=symbol$2(low,t);return _zh_?symbol$2(t,high):_zh_}
      function clamp_unchecked(t,min,max)
       {return symbol$0(t,min)?min:symbol$2(t,max)?t:max}
      function clamp_exn(t,min,max)
       {if(symbol$2(min,max))return clamp_unchecked(t,min,max);
        throw [0,Assert_failure,_a1_]}
      function clamp(t,min,max)
       {if(symbol(min,max))
         {var _zg_=[0,[0,cst_max$0,caml_call1(sexp_of_t,max)],0];
          return error_s
                  (caml_call2
                    (message,
                     cst_clamp_requires_min_max$0,
                     [0,[0,cst_min$0,caml_call1(sexp_of_t,min)],_zg_]))}
        return [0,clamp_unchecked(t,min,max)]}
      var
       include=Validate([0,compare,sexp_of_t]),
       validate_lbound=include[1],
       validate_ubound=include[2],
       validate_bound=include[3];
      return [0,
              symbol$1,
              symbol$2,
              equal,
              symbol,
              symbol$0,
              symbol$3,
              equal,
              compare,
              min,
              max,
              compare,
              descending,
              between,
              clamp_exn,
              clamp,
              comparator,
              validate_lbound,
              validate_ubound,
              validate_bound]}
    function Make$1(T)
     {var sexp_of_t=T[2],include=_ap_(T),comparator=include[1];
      return Make_using_comparator([0,sexp_of_t,comparator])}
    function Inherit(C,T)
     {var sexp_of_t=T[1];
      function compare(t$0,t)
       {var _ze_=caml_call1(T[2],t),_zf_=caml_call1(T[2],t$0);
        return caml_call2(C[1],_zf_,_ze_)}
      return Make$1([0,compare,sexp_of_t])}
    function lexicographic(param,x,y)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var cmps=param$0[2],cmp=param$0[1],res=caml_call2(cmp,x,y);
          if(caml_call2(symbol$81,res,0)){var param$0=cmps;continue}
          return res}
        return 0}}
    function lift(cmp,f,x,y)
     {var _zd_=caml_call1(f,y);return caml_call2(cmp,caml_call1(f,x),_zd_)}
    function reverse(cmp,x,y){return caml_call2(cmp,y,x)}
    function _a2_(T)
     {var
       V=Validate([0,T[1],T[2]]),
       validate_lbound=V[1],
       validate_ubound=V[2],
       validate_bound=V[3],
       compare=T[1],
       sexp_of_t=T[2],
       zero=T[3],
       validate_lbound$0=V[1],
       validate_ubound$0=V[2],
       validate_bound$0=V[3],
       include=
        With_zero
         ([0,
           compare,
           sexp_of_t,
           zero,
           validate_lbound$0,
           validate_ubound$0,
           validate_bound$0]),
       validate_positive=include[3],
       validate_non_negative=include[4],
       validate_negative=include[5],
       validate_non_positive=include[6],
       is_positive=include[7],
       is_non_negative=include[8],
       is_negative=include[9],
       is_non_positive=include[10],
       sign=include[11];
      return [0,
              validate_lbound,
              validate_ubound,
              validate_bound,
              validate_positive,
              validate_non_negative,
              validate_negative,
              validate_non_positive,
              is_positive,
              is_non_negative,
              is_negative,
              is_non_positive,
              sign]}
    function _a3_(_zb_)
     {var _zc_=With_zero(_zb_);
      return [0,
              _zc_[3],
              _zc_[4],
              _zc_[5],
              _zc_[6],
              _zc_[7],
              _zc_[8],
              _zc_[9],
              _zc_[10],
              _zc_[11]]}
    var
     Base_Comparable=
      [0,
       lexicographic,
       lift,
       reverse,
       equal$18,
       max$14,
       min$14,
       Inherit,
       Make$1,
       Make_using_comparator,
       function(T)
        {var sexp_of_t=T[1];
         function between(t,low,high)
          {var
            _y$_=caml_lessequal(low,t),
            _za_=_y$_?caml_lessequal(t,high):_y$_;
           return _za_}
         function clamp_unchecked(t,min,max)
          {return caml_lessthan(t,min)?min:caml_lessequal(t,max)?t:max}
         function clamp_exn(t,min,max)
          {if(caml_lessequal(min,max))return clamp_unchecked(t,min,max);
           throw [0,Assert_failure,_a0_]}
         function clamp(t,min,max)
          {if(caml_greaterthan(min,max))
            {var _y__=[0,[0,cst_max,caml_call1(T[1],max)],0];
             return error_s
                     (caml_call2
                       (message,
                        cst_clamp_requires_min_max,
                        [0,[0,cst_min,caml_call1(T[1],min)],_y__]))}
           return [0,clamp_unchecked(t,min,max)]}
         var
          sexp_of_t$0=T[1],
          include=_ap_([0,caml_compare,sexp_of_t]),
          comparator=include[1],
          compare=caml_compare,
          include$0=Validate([0,compare,sexp_of_t$0]),
          validate_lbound=include$0[1],
          validate_ubound=include$0[2],
          validate_bound=include$0[3];
         return [0,
                 caml_greaterequal,
                 caml_lessequal,
                 caml_equal,
                 caml_greaterthan,
                 caml_lessthan,
                 caml_notequal,
                 caml_equal,
                 caml_compare,
                 min,
                 max,
                 ascending,
                 descending,
                 between,
                 clamp_exn,
                 clamp,
                 comparator,
                 validate_lbound,
                 validate_ubound,
                 validate_bound]},
       Validate,
       _a3_,
       _a2_];
    caml_register_global(1018,Base_Comparable,"Base__Comparable");
    function _a4_(T)
     {var
       hash_fold_t=T[2],
       hash=T[3],
       t_of_sexp=T[4],
       sexp_of_t=T[5],
       of_string=T[7],
       to_string=T[8],
       _y9_=Make_using_comparator([0,T[5],T[6]]),
       symbol=_y9_[1],
       symbol$0=_y9_[2],
       symbol$1=_y9_[3],
       symbol$2=_y9_[4],
       symbol$3=_y9_[5],
       symbol$4=_y9_[6],
       equal=_y9_[7],
       compare=_y9_[8],
       min=_y9_[9],
       max=_y9_[10],
       ascending=_y9_[11],
       descending=_y9_[12],
       between=_y9_[13],
       clamp_exn=_y9_[14],
       clamp=_y9_[15],
       comparator=_y9_[16],
       validate_lbound=_y9_[17],
       validate_ubound=_y9_[18],
       validate_bound=_y9_[19],
       include=_v_([0,T[9],T[8]]),
       pp=include[1];
      return [0,
              hash_fold_t,
              hash,
              t_of_sexp,
              sexp_of_t,
              of_string,
              to_string,
              symbol,
              symbol$0,
              symbol$1,
              symbol$2,
              symbol$3,
              symbol$4,
              equal,
              compare,
              min,
              max,
              ascending,
              descending,
              between,
              clamp_exn,
              clamp,
              comparator,
              validate_lbound,
              validate_ubound,
              validate_bound,
              pp]}
    function _a5_(T)
     {var
       hash_fold_t=T[2],
       hash=T[3],
       t_of_sexp=T[4],
       sexp_of_t=T[5],
       of_string=T[6],
       to_string=T[7],
       _y8_=Make$1([0,T[1],T[5]]),
       symbol=_y8_[1],
       symbol$0=_y8_[2],
       symbol$1=_y8_[3],
       symbol$2=_y8_[4],
       symbol$3=_y8_[5],
       symbol$4=_y8_[6],
       equal=_y8_[7],
       compare=_y8_[8],
       min=_y8_[9],
       max=_y8_[10],
       ascending=_y8_[11],
       descending=_y8_[12],
       between=_y8_[13],
       clamp_exn=_y8_[14],
       clamp=_y8_[15],
       comparator=_y8_[16],
       validate_lbound=_y8_[17],
       validate_ubound=_y8_[18],
       validate_bound=_y8_[19],
       include=_v_([0,T[8],T[7]]),
       pp=include[1];
      return [0,
              hash_fold_t,
              hash,
              t_of_sexp,
              sexp_of_t,
              of_string,
              to_string,
              symbol,
              symbol$0,
              symbol$1,
              symbol$2,
              symbol$3,
              symbol$4,
              equal,
              compare,
              min,
              max,
              ascending,
              descending,
              between,
              clamp_exn,
              clamp,
              comparator,
              validate_lbound,
              validate_ubound,
              validate_bound,
              pp]}
    var Base_Identifiable=[0,_a5_,_a4_];
    caml_register_global(1019,Base_Identifiable,"Base__Identifiable");
    function hash$4(x){return caml_call1(func$7,x)}
    function compare$31(param,_y7_){return 0}
    function of_string$3(param)
     {return caml_string_notequal(param,cst$12)
              ?caml_call1(failwith$0,cst_Base_Unit_of_string_expect)
              :0}
    function to_string$4(param){return cst$13}
    var
     include$29=
      _a5_
       ([0,
         compare$31,
         hash_fold_t$7,
         hash$4,
         t_of_sexp$0,
         sexp_of_t$0,
         of_string$3,
         to_string$4,
         module_name$3]),
     hash_fold_unit$0=include$29[1],
     func$8=include$29[2],
     unit_of_sexp=include$29[3],
     sexp_of_unit=include$29[4],
     of_string$4=include$29[5],
     to_string$5=include$29[6],
     symbol$94=include$29[7],
     symbol$95=include$29[8],
     symbol$96=include$29[9],
     symbol$97=include$29[10],
     symbol$98=include$29[11],
     symbol$99=include$29[12],
     equal_unit$1=include$29[13],
     compare_unit$1=include$29[14],
     min$15=include$29[15],
     max$15=include$29[16],
     ascending$13=include$29[17],
     descending$13=include$29[18],
     between=include$29[19],
     clamp_exn=include$29[20],
     clamp=include$29[21],
     comparator$1=include$29[22],
     validate_lbound=include$29[23],
     validate_ubound=include$29[24],
     validate_bound=include$29[25],
     pp$5=include$29[26];
    function invariant$2(param){return 0}
    var
     Base_Unit=
      [0,
       all$9,
       hash_fold_unit$0,
       func$8,
       unit_of_sexp,
       sexp_of_unit,
       of_string$4,
       to_string$5,
       symbol$94,
       symbol$95,
       symbol$96,
       symbol$97,
       symbol$98,
       symbol$99,
       equal_unit$1,
       compare_unit$1,
       min$15,
       max$15,
       ascending$13,
       descending$13,
       between,
       clamp_exn,
       clamp,
       comparator$1,
       validate_lbound,
       validate_ubound,
       validate_bound,
       pp$5,
       invariant$2];
    caml_register_global(1020,Base_Unit,"Base__Unit");
    function slow_check_pos_len_exn(pos,len,total_length)
     {if(caml_call2(symbol$78,pos,0))caml_call2(invalid_argf(_a6_),pos,0);
      if(caml_call2(symbol$78,len,0))caml_call2(invalid_argf(_a7_),len,0);
      var _y6_=caml_call2(symbol$82,pos,total_length - len | 0);
      return _y6_?caml_call4(invalid_argf(_a8_),pos,len,total_length,0):_y6_}
    function check_pos_len_exn(pos,len,total_length)
     {var
       stop=pos + len | 0,
       _y5_=caml_call2(symbol$78,pos | len | stop | total_length - stop | 0,0);
      return _y5_?slow_check_pos_len_exn(pos,len,total_length):_y5_}
    function get_pos_len_exn(opt,len,param,total_length)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if(len)var i=len[1],len$0=i;else var len$0=total_length - pos | 0;
      check_pos_len_exn(pos,len$0,total_length);
      return [0,pos,len$0]}
    function get_pos_len(pos,len,param,total_length)
     {try
       {var _y4_=[0,get_pos_len_exn(pos,len,0,total_length)];return _y4_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Stdlib[6]){var s=exn[2];return error_string(s)}
        throw exn}}
    var
     Private$1=[0,slow_check_pos_len_exn],
     Base_Ordered_collection_common=
      [0,get_pos_len,get_pos_len_exn,check_pos_len_exn,Private$1];
    caml_register_global
     (1021,Base_Ordered_collection_common,"Base__Ordered_collection_common");
    function find_first_satisfying(pos,len,t,get,length,pred)
     {var
       match=get_pos_len_exn(pos,len,0,caml_call1(length,t)),
       len$0=match[2],
       pos$0=match[1],
       hi$0=(pos$0 + len$0 | 0) - 1 | 0,
       lo$1=pos$0,
       hi=hi$0;
      for(;;)
       {if(caml_call2(symbol$79,hi - lo$1 | 0,8))
         {var lo=lo$1;
          for(;;)
           {if(caml_call2(symbol$82,lo,hi))return 0;
            if(caml_call1(pred,caml_call2(get,t,lo)))return [0,lo];
            var lo$0=lo + 1 | 0,lo=lo$0;
            continue}}
        var mid=lo$1 + ((hi - lo$1 | 0) / 2 | 0) | 0;
        if(caml_call1(pred,caml_call2(get,t,mid))){var hi=mid;continue}
        var lo$2=mid + 1 | 0,lo$1=lo$2;
        continue}}
    function find_last_satisfying(pos,len,t,pred,get,length)
     {var
       match=get_pos_len_exn(pos,len,0,caml_call1(length,t)),
       len$0=match[2],
       pos$0=match[1];
      if(caml_call2(symbol$81,len$0,0))return 0;
      var
       match$0=
        find_first_satisfying
         ([0,pos$0],
          [0,len$0],
          t,
          get,
          length,
          function(_y3_){return non(pred,_y3_)});
      if(match$0)
       {var i=match$0[1];return caml_call2(symbol$81,i,pos$0)?0:[0,i - 1 | 0]}
      return [0,(pos$0 + len$0 | 0) - 1 | 0]}
    function binary_search(pos,len,t,length,get,compare,how,v)
     {if(-839473056 <= how)
       return 200870407 <= how
               ?926943384 <= how
                 ?find_first_satisfying
                   (pos,
                    len,
                    t,
                    get,
                    length,
                    function(x)
                     {return caml_call2(symbol$83,caml_call2(compare,x,v),0)})
                 :find_last_satisfying
                   (pos,
                    len,
                    t,
                    function(x)
                     {return caml_call2(symbol$78,caml_call2(compare,x,v),0)},
                    get,
                    length)
               :-253007807 <= how
                 ?find_last_satisfying
                   (pos,
                    len,
                    t,
                    function(x)
                     {return caml_call2(symbol$79,caml_call2(compare,x,v),0)},
                    get,
                    length)
                 :find_first_satisfying
                   (pos,
                    len,
                    t,
                    get,
                    length,
                    function(x)
                     {return caml_call2(symbol$82,caml_call2(compare,x,v),0)});
      if(-1055410545 <= how)
       {var
         match=
          find_last_satisfying
           (pos,
            len,
            t,
            function(x)
             {return caml_call2(symbol$79,caml_call2(compare,x,v),0)},
            get,
            length);
        if(match)
         {var x=match[1];
          if
           (caml_call2(symbol$81,caml_call2(compare,caml_call2(get,t,x),v),0))
           return [0,x]}
        return 0}
      var
       match$0=
        find_first_satisfying
         (pos,
          len,
          t,
          get,
          length,
          function(x){return caml_call2(symbol$83,caml_call2(compare,x,v),0)});
      if(match$0)
       {var x$0=match$0[1];
        if
         (caml_call2(symbol$81,caml_call2(compare,caml_call2(get,t,x$0),v),0))
         return [0,x$0]}
      return 0}
    function binary_search_segmented(pos,len,t,length,get,segment_of,how)
     {function is_left(x)
       {var match=caml_call1(segment_of,x);return 847852583 <= match?1:0}
      function is_right(x){return 1 - is_left(x)}
      return 125585502 <= how
              ?find_last_satisfying(pos,len,t,is_left,get,length)
              :find_first_satisfying(pos,len,t,get,length,is_right)}
    var Base_Binary_search=[0,binary_search,binary_search_segmented];
    caml_register_global(1022,Base_Binary_search,"Base__Binary_search");
    var Base_Binary_searchable_intf=[0];
    caml_register_global
     (1023,Base_Binary_searchable_intf,"Base__Binary_searchable_intf");
    function Make_gen$0(T)
     {var get=T[1],length=T[2];
      function binary_search$0(pos,len,t,compare,how,v)
       {return binary_search(pos,len,t,length,get,compare,how,v)}
      function binary_search_segmented$0(pos,len,t,segment_of,how)
       {return binary_search_segmented(pos,len,t,length,get,segment_of,how)}
      return [0,get,length,binary_search$0,binary_search_segmented$0]}
    function _a9_(T)
     {var get=T[1],length=T[2],_y2_=Make_gen$0([0,get,length]);
      return [0,_y2_[3],_y2_[4]]}
    var
     Base_Binary_searchable=
      [0,
       function(T)
        {var get=T[1],length=T[2],_y1_=Make_gen$0([0,get,length]);
         return [0,_y1_[3],_y1_[4]]},
       _a9_];
    caml_register_global
     (1024,Base_Binary_searchable,"Base__Binary_searchable");
    var Base_Blit_intf=[0];
    caml_register_global(1025,Base_Blit_intf,"Base__Blit_intf");
    var blit_string=Stdlib_bytes[12];
    function sub_string(t,pos,len)
     {return caml_call3(Stdlib_bytes[8],t,pos,len)}
    var
     Primitives=[0],
     blit$0=Stdlib_bytesLabels[11],
     compare$32=Stdlib_bytesLabels[40],
     copy$2=Stdlib_bytesLabels[4],
     create$2=caml_create_bytes,
     fill$0=Stdlib_bytesLabels[10],
     make$2=Stdlib_bytesLabels[1],
     map$13=Stdlib_bytesLabels[17],
     mapi$1=Stdlib_bytesLabels[18],
     sub$3=Stdlib_bytesLabels[7],
     unsafe_blit$0=runtime.caml_blit_bytes,
     to_string$6=Stdlib_bytesLabels[6],
     of_string$5=Stdlib_bytesLabels[5];
    function unsafe_to_string(s){return caml_call1(Stdlib_bytesLabels[73],s)}
    var unsafe_of_string_promise_no_mu=Stdlib_bytesLabels[74];
    function blit_string$0(src,src_pos,dst,dst_pos,len)
     {return caml_call5(blit_string,src,src_pos,dst,dst_pos,len)}
    var
     include$30=
      [0,
       sub_string,
       Primitives,
       max_length,
       blit$0,
       compare$32,
       copy$2,
       create$2,
       fill$0,
       make$2,
       map$13,
       mapi$1,
       sub$3,
       unsafe_blit$0,
       to_string$6,
       of_string$5,
       unsafe_to_string,
       unsafe_of_string_promise_no_mu,
       blit_string$0];
    caml_register_global(1028,include$30,"Base__Bytes0");
    function Make_gen$1(Src,Dst)
     {var unsafe_blit=Dst[3];
      function blit(src,src_pos,dst,dst_pos,len)
       {check_pos_len_exn(src_pos,len,caml_call1(Src[1],src));
        check_pos_len_exn(dst_pos,len,caml_call1(Dst[1],dst));
        var _y0_=caml_call2(symbol$82,len,0);
        return _y0_?caml_call5(unsafe_blit,src,src_pos,dst,dst_pos,len):_y0_}
      function blito(src,opt,_yZ_,dst,_yY_,param)
       {if(opt)var sth=opt[1],src_pos=sth;else var src_pos=0;
        if(_yZ_)
         var sth$0=_yZ_[1],src_len=sth$0;
        else
         var src_len=caml_call1(Src[1],src) - src_pos | 0;
        if(_yY_)var sth$1=_yY_[1],dst_pos=sth$1;else var dst_pos=0;
        return blit(src,src_pos,dst,dst_pos,src_len)}
      function sub(src,pos,len)
       {check_pos_len_exn(pos,len,caml_call1(Src[1],src));
        var dst=caml_call2(Dst[2],len,src);
        if(caml_call2(symbol$82,len,0))
         caml_call5(unsafe_blit,src,pos,dst,0,len);
        return dst}
      function subo(opt,len,src)
       {if(opt)var sth=opt[1],pos=sth;else var pos=0;
        if(len)
         var i=len[1],i$0=i;
        else
         var i$0=caml_call1(Src[1],src) - pos | 0;
        return sub(src,pos,i$0)}
      return [0,unsafe_blit,blit,blito,sub,subo]}
    function Make_to_string(T,To_bytes)
     {function sub(src,pos,len)
       {return unsafe_to_string(caml_call3(To_bytes[4],src,pos,len))}
      function subo(pos,len,src)
       {return unsafe_to_string(caml_call3(To_bytes[5],pos,len,src))}
      return [0,sub,subo]}
    function _a__(_yW_)
     {var _yX_=Make_gen$1([0,_yW_[2]],[0,_yW_[2],_yW_[1],_yW_[3]]);
      return [0,_yX_[2],_yX_[3],_yX_[1],_yX_[4],_yX_[5]]}
    function _a$_(_yT_)
     {var _yU_=[0,_yT_[2],_yT_[1],_yT_[3]],_yV_=Make_gen$1([0,_yU_[1]],_yU_);
      return [0,_yV_[2],_yV_[3],_yV_[1],_yV_[4],_yV_[5]]}
    function _ba_(Src,Dst)
     {var length=Dst[1];
      function create_like(len,param){return caml_call1(Dst[2],len)}
      var
       unsafe_blit=Dst[3],
       length$0=Src[1],
       _yS_=Make_gen$1([0,length$0],[0,length,create_like,unsafe_blit]);
      return [0,_yS_[2],_yS_[3],_yS_[1],_yS_[4],_yS_[5]]}
    function _bb_(Sequence)
     {function create_like(len,param){return caml_call1(Sequence[2],len)}
      var
       length=Sequence[1],
       unsafe_blit=Sequence[3],
       include=Make_gen$1([0,length],[0,length,create_like,unsafe_blit]),
       unsafe_blit$0=include[1],
       blit=include[2],
       blito=include[3],
       sub=include[4],
       subo=include[5];
      return [0,blit,blito,unsafe_blit$0,sub,subo]}
    var Base_Blit=[0,_bb_,_ba_,Make_to_string,_a$_,_a__];
    caml_register_global(1029,Base_Blit,"Base__Blit");
    var Base_Either_intf=[0];
    caml_register_global(1030,Base_Either_intf,"Base__Either_intf");
    function is_none(param){return param?0:1}
    function is_some(param){return param?1:0}
    function value_map(o,default$0,f)
     {if(o){var x=o[1];return caml_call1(f,x)}return default$0}
    function iter$4(o,f){if(o){var a=o[1];return caml_call1(f,a)}return 0}
    function invariant$3(f,t){return iter$4(t,f)}
    function map2$1(o1,match,f)
     {if(o1 && match){var a2=match[1],a1=o1[1];return [0,caml_call2(f,a1,a2)]}
      return 0}
    function call(x,f){if(f){var f$0=f[1];return caml_call1(f$0,x)}return 0}
    function value(t,default$0){if(t){var x=t[1];return x}return default$0}
    function value_exn(here,error,match,t)
     {if(t){var x=t[1];return x}
      if(here)
       {var _yN_=here[1];
        if(error)
         var
          e=error[1],
          _yO_=caml_call2(sexp_of_pair,sexp_of_t$22,sexp_of_t$20),
          _yP_=create$1(0,0,value(match,cst$14),[0,e,_yN_],_yO_);
        else
         if(match)
          var m=match[1],_yP_=create$1(0,0,m,_yN_,sexp_of_t$20);
         else
          var _yP_=create$1(0,0,cst_Option_value_exn,_yN_,sexp_of_t$20);
        var error$0=_yP_}
      else
       if(error)
        {var _yQ_=error[1];
         if(match)var m$0=match[1],_yR_=tag(_yQ_,m$0);else var _yR_=_yQ_;
         var error$0=_yR_}
       else
        if(match)
         var m$1=match[1],error$0=of_string$1(m$1);
        else
         var error$0=of_string$1(cst_Option_value_exn_None);
      return raise(error$0)}
    function to_array$0(t){if(t){var x=t[1];return [0,x]}return [0]}
    function to_list$2(t){if(t){var x=t[1];return [0,x,0]}return 0}
    function min_elt$1(t,param){return t}
    function max_elt$1(t,param){return t}
    function sum$1(M,t,f){if(t){var x=t[1];return caml_call1(f,x)}return M[1]}
    function for_all$1(t,f){if(t){var x=t[1];return caml_call1(f,x)}return 1}
    function exists$1(t,f){if(t){var x=t[1];return caml_call1(f,x)}return 0}
    function mem$1(t,a,equal)
     {if(t){var a$0=t[1];return caml_call2(equal,a,a$0)}return 0}
    function length$1(t){return t?1:0}
    function fold$1(t,init,f)
     {if(t){var x=t[1];return caml_call2(f,init,x)}return init}
    function count$1(t,f)
     {if(t){var a=t[1];return caml_call1(f,a)?1:0}return 0}
    function find$2(t,f)
     {if(t){var x=t[1];return caml_call1(f,x)?[0,x]:0}return 0}
    function find_map$1(t,f){if(t){var a=t[1];return caml_call1(f,a)}return 0}
    function equal_option$1(f,t$0,t)
     {if(t$0)
       {if(t){var x=t[1],x$0=t$0[1];return caml_call2(f,x$0,x)}}
      else
       if(! t)return 1;
      return 0}
    function some(x){return [0,x]}
    function both$0(x,match)
     {if(x && match){var b=match[1],a=x[1];return [0,[0,a,b]]}return 0}
    function first_some(x,y){return x?x:y}
    function some_if(cond,x){return cond?[0,x]:0}
    function merge$0(a,b,f)
     {if(a)
       {if(b){var b$0=b[1],a$0=a[1];return [0,caml_call2(f,a$0,b$0)]}var x=a}
      else
       var x=b;
      return x}
    function filter$0(o,f)
     {if(o){var v=o[1];if(caml_call1(f,v))return o}return 0}
    function try_with$2(f)
     {try {var _yL_=[0,caml_call1(f,0)];return _yL_}catch(_yM_){return 0}}
    function return$9(x){return [0,x]}
    var
     map$14=
      [0,
       -198771759,
       function(t,f){if(t){var a=t[1];return [0,caml_call1(f,a)]}return 0}];
    function bind$7(o,f){if(o){var x=o[1];return caml_call1(f,x)}return 0}
    var
     include$31=Make([0,bind$7,return$9,map$14]),
     symbol_bind$4=include$31[1],
     symbol_map$5=include$31[2],
     Monad_infix$2=include$31[3],
     bind$8=include$31[4],
     return$10=include$31[5],
     map$15=include$31[6],
     join$3=include$31[7],
     ignore_m$3=include$31[8],
     all$10=include$31[9],
     all_unit$4=include$31[10],
     Let_syntax$2=include$31[11];
    function fold_result$1(t,init,f){return fold_result(fold$1,init,f,t)}
    function fold_until$1(t,init,f)
     {return function(_yK_){return fold_until(fold$1,init,f,_yK_,t)}}
    function validate(none,some,t)
     {if(t){var x=t[1];return name$0(cst_some,protect$1(some,x))}
      return name$0(cst_none,protect$1(none,0))}
    var
     Base_Option=
      [0,
       compare_option$0,
       hash_fold_option$0,
       option_of_sexp,
       sexp_of_option,
       mem$1,
       length$1,
       is_none,
       iter$4,
       fold$1,
       fold_result$1,
       fold_until$1,
       exists$1,
       for_all$1,
       count$1,
       sum$1,
       find$2,
       find_map$1,
       to_list$2,
       to_array$0,
       min_elt$1,
       max_elt$1,
       equal_option$1,
       invariant$3,
       symbol_bind$4,
       symbol_map$5,
       Monad_infix$2,
       bind$8,
       return$10,
       map$15,
       join$3,
       ignore_m$3,
       all$10,
       all_unit$4,
       Let_syntax$2,
       is_none,
       is_some,
       value_map,
       map2$1,
       call,
       value,
       value_exn,
       some,
       both$0,
       first_some,
       some_if,
       merge$0,
       filter$0,
       try_with$2,
       validate];
    caml_register_global(1031,Base_Option,"Base__Option");
    function compare$33(cmp_f,cmp_s,a_001,match)
     {if(a_001 === match)return 0;
      if(0 === a_001[0])
       {var _yI_=a_001[1];
        if(0 === match[0])
         {var b_004=match[1];return caml_call2(cmp_f,_yI_,b_004)}
        return -1}
      var _yJ_=a_001[1];
      if(0 === match[0])return 1;
      var b_006=match[1];
      return caml_call2(cmp_s,_yJ_,b_006)}
    function hash_fold_t$17(hash_fold_f,hash_fold_s,hsv,arg)
     {if(0 === arg[0])
       {var a0=arg[1],hsv$0=runtime.Base_internalhash_fold_int(hsv,0);
        return caml_call2(hash_fold_f,hsv$0,a0)}
      var a0$0=arg[1],hsv$1=runtime.Base_internalhash_fold_int(hsv,1);
      return caml_call2(hash_fold_s,hsv$1,a0$0)}
    function t_of_sexp$21(of_f,of_s,sexp)
     {if(0 === sexp[0])
       {var _yE_=sexp[1],switch$0=0;
        if(caml_string_notequal(_yE_,cst_First))
         {var switch$1=0;
          if(caml_string_notequal(_yE_,cst_Second))
           if(caml_string_notequal(_yE_,cst_first))
            {if(caml_string_notequal(_yE_,cst_second))
              {switch$0 = 1;switch$1 = 1}}
           else
            switch$1 = 1;
          if(! switch$1)
           return caml_call2(Sexplib0_Sexp_conv_error[5],tp_loc$6,sexp)}
        if(! switch$0)
         return caml_call2(Sexplib0_Sexp_conv_error[5],tp_loc$6,sexp)}
      else
       {var _yF_=sexp[1];
        if(! _yF_)
         return caml_call2(Sexplib0_Sexp_conv_error[7],tp_loc$6,sexp);
        var _yG_=_yF_[1];
        if(0 !== _yG_[0])
         return caml_call2(Sexplib0_Sexp_conv_error[6],tp_loc$6,sexp);
        var _yH_=_yG_[1],switch$2=0;
        if(caml_string_notequal(_yH_,cst_First$0))
         {var switch$3=0;
          if(caml_string_notequal(_yH_,cst_Second$0))
           if(caml_string_notequal(_yH_,cst_first$0))
            {if(caml_string_notequal(_yH_,cst_second$0))
              {switch$2 = 1;switch$3 = 1}}
           else
            switch$3 = 1;
          if(! switch$3)
           {var sexp_args=_yF_[2];
            if(sexp_args && ! sexp_args[2])
             {var v0=sexp_args[1],v0$0=caml_call1(of_s,v0);return [1,v0$0]}
            return caml_call3(Sexplib0_Sexp_conv_error[4],tp_loc$6,_yH_,sexp)}}
        if(! switch$2)
         {var sexp_args$0=_yF_[2];
          if(sexp_args$0 && ! sexp_args$0[2])
           {var v0$1=sexp_args$0[1],v0$2=caml_call1(of_f,v0$1);
            return [0,v0$2]}
          return caml_call3(Sexplib0_Sexp_conv_error[4],tp_loc$6,_yH_,sexp)}}
      return caml_call2(Sexplib0_Sexp_conv_error[8],tp_loc$6,sexp)}
    function sexp_of_t$26(of_f,of_s,param)
     {if(0 === param[0])
       {var v0=param[1],v0$0=caml_call1(of_f,v0);
        return [1,[0,_bc_,[0,v0$0,0]]]}
      var v0$1=param[1],v0$2=caml_call1(of_s,v0$1);
      return [1,[0,_bd_,[0,v0$2,0]]]}
    function swap$0(param)
     {if(0 === param[0]){var x=param[1];return [1,x]}
      var x$0=param[1];
      return [0,x$0]}
    function is_first(param){return 0 === param[0]?1:0}
    function is_second(param){return 0 === param[0]?0:1}
    function value$0(param){var x=param[1];return x}
    function value_map$0(t,first,second)
     {if(0 === t[0]){var x=t[1];return caml_call1(first,x)}
      var x$0=t[1];
      return caml_call1(second,x$0)}
    function map$16(t,first,second)
     {if(0 === t[0]){var x=t[1];return [0,caml_call1(first,x)]}
      var x$0=t[1];
      return [1,caml_call1(second,x$0)]}
    function first(x){return [0,x]}
    function second(x){return [1,x]}
    function equal$19(eq1,eq2,t1,match)
     {if(0 === t1[0])
       {var _yC_=t1[1];
        if(0 === match[0]){var y=match[1];return caml_call2(eq1,_yC_,y)}}
      else
       {var _yD_=t1[1];
        if(0 !== match[0]){var y$0=match[1];return caml_call2(eq2,_yD_,y$0)}}
      return 0}
    function invariant$4(f,s,param)
     {if(0 === param[0]){var x=param[1];return caml_call1(f,x)}
      var y=param[1];
      return caml_call1(s,y)}
    function Make_focused(M)
     {var
       return$0=M[1],
       other=M[2],
       either=M[3],
       combine=M[4],
       bind=M[5],
       map=
        [0,
         -198771759,
         function(t,f)
          {return caml_call2
                   (bind,
                    t,
                    function(x){return caml_call1(return$0,caml_call1(f,x))})}],
       include=Make2([0,bind,map,return$0]),
       symbol_bind=include[1],
       Let_syntax=include[3],
       Monad_infix=include[4],
       bind$0=include[5],
       return$1=include[6],
       join=include[8],
       ignore_m=include[9],
       _yv_=include[7];
      function apply(t1,t2)
       {return caml_call2
                (bind$0,
                 t1,
                 function(f)
                  {return caml_call2
                           (bind$0,
                            t2,
                            function(x){return caml_call1(return$1,caml_call1(f,x))})})}
      var
       map$0=[0,-198771759,_yv_],
       App=Make2$0([0,return$1,apply,map$0]),
       return$2=App[1],
       map$1=App[2],
       both=App[3],
       symbol=App[4],
       symbol$0=App[5],
       symbol$1=App[6],
       symbol_map=App[7],
       apply$0=App[8],
       map2=App[9],
       map3=App[10],
       all=App[11],
       all_unit=App[12],
       Applicative_infix=App[13];
      function other_loop(f,acc,param)
       {if(param)
         {var
           ts=param[2],
           t=param[1],
           _yB_=function(o){return other_loop(f,caml_call2(f,acc,o),ts)};
          return caml_call3
                  (either,t,function(param){return other_loop(f,acc,ts)},_yB_)}
        return caml_call1(other,acc)}
      function return_loop(f,acc,param)
       {if(param)
         {var
           ts=param[2],
           t=param[1],
           _yA_=function(o){return other_loop(f,o,ts)};
          return caml_call3
                  (either,
                   t,
                   function(x){return return_loop(f,[0,x,acc],ts)},
                   _yA_)}
        return caml_call1(return$2,rev(acc))}
      function combine_all(ts,f){return return_loop(f,0,ts)}
      function other_loop$0(f,acc,param)
       {if(param)
         {var
           ts=param[2],
           t=param[1],
           _yz_=function(o){return other_loop$0(f,caml_call2(f,acc,o),ts)};
          return caml_call3
                  (either,
                   t,
                   function(param){return other_loop$0(f,acc,ts)},
                   _yz_)}
        return caml_call1(other,acc)}
      function return_loop$0(f,param)
       {if(param)
         {var
           ts=param[2],
           t=param[1],
           _yy_=function(o){return other_loop$0(f,o,ts)};
          return caml_call3
                  (either,t,function(param){return return_loop$0(f,ts)},_yy_)}
        return caml_call1(return$2,0)}
      function combine_all_unit(ts,f){return return_loop$0(f,ts)}
      function to_option(t)
       {return caml_call3(either,t,some,function(param){return 0})}
      function value(t,default$0)
       {function _yw_(param){return default$0}
        return caml_call3(either,t,function(_yx_){return _yx_},_yw_)}
      function with_return$0(f)
       {return with_return
                (function(ret)
                  {return caml_call1
                           (other,caml_call1(f,prepend(ret,return$2)))})}
      return [0,
              other,
              either,
              combine,
              symbol_bind,
              Let_syntax,
              Monad_infix,
              bind$0,
              join,
              ignore_m,
              App,
              return$2,
              map$1,
              both,
              symbol,
              symbol$0,
              symbol$1,
              symbol_map,
              apply$0,
              map2,
              map3,
              all,
              all_unit,
              Applicative_infix,
              combine_all,
              combine_all_unit,
              to_option,
              value,
              with_return$0]}
    function either(t,return$0,other)
     {if(0 === t[0]){var x=t[1];return caml_call1(return$0,x)}
      var y=t[1];
      return caml_call1(other,y)}
    function combine$1(t1,match,f,other)
     {if(0 === t1[0])
       {var _yt_=t1[1];
        if(0 === match[0]){var y=match[1];return [0,caml_call2(f,_yt_,y)]}
        var x=match[1]}
      else
       {var _yu_=t1[1];
        if(0 !== match[0])
         {var y$0=match[1];return [1,caml_call2(other,_yu_,y$0)]}
        var x=_yu_}
      return [1,x]}
    function bind$9(t,f)
     {if(0 === t[0]){var x=t[1];return caml_call1(f,x)}return t}
    var First=Make_focused([0,first,second,either,combine$1,bind$9]);
    function either$0(t,return$0,other)
     {if(0 === t[0]){var x=t[1];return caml_call1(other,x)}
      var y=t[1];
      return caml_call1(return$0,y)}
    function combine$2(t1,match,f,other)
     {if(0 === t1[0])
       {var _yr_=t1[1];
        if(0 === match[0]){var y=match[1];return [0,caml_call2(other,_yr_,y)]}
        var x=_yr_}
      else
       {var _ys_=t1[1];
        if(0 !== match[0]){var y$0=match[1];return [1,caml_call2(f,_ys_,y$0)]}
        var x=match[1]}
      return [0,x]}
    function bind$10(t,f)
     {if(0 === t[0])return t;var x=t[1];return caml_call1(f,x)}
    var
     Second=Make_focused([0,second,first,either$0,combine$2,bind$10]),
     Export$0=[0],
     Base_Either=
      [0,
       compare$33,
       hash_fold_t$17,
       t_of_sexp$21,
       sexp_of_t$26,
       invariant$4,
       swap$0,
       value$0,
       value_map$0,
       value_map$0,
       map$16,
       equal$19,
       [0,
        First[4],
        First[5],
        First[6],
        First[7],
        First[8],
        First[9],
        First[11],
        First[12],
        First[13],
        First[14],
        First[15],
        First[16],
        First[17],
        First[18],
        First[19],
        First[20],
        First[21],
        First[22],
        First[23],
        First[27],
        First[26],
        First[28],
        First[3],
        First[24],
        First[25]],
       [0,
        Second[4],
        Second[5],
        Second[6],
        Second[7],
        Second[8],
        Second[9],
        Second[11],
        Second[12],
        Second[13],
        Second[14],
        Second[15],
        Second[16],
        Second[17],
        Second[18],
        Second[19],
        Second[20],
        Second[21],
        Second[22],
        Second[23],
        Second[27],
        Second[26],
        Second[28],
        Second[3],
        Second[24],
        Second[25]],
       is_first,
       is_second,
       first,
       second,
       Export$0];
    caml_register_global(1032,Base_Either,"Base__Either");
    var Base_Indexed_container_intf=[0];
    caml_register_global
     (1033,Base_Indexed_container_intf,"Base__Indexed_container_intf");
    function iteri$1(fold,t,f)
     {caml_call3(fold,t,0,function(i,x){caml_call2(f,i,x);return i + 1 | 0});
      return 0}
    function foldi$0(fold,t,init,f)
     {var i=[0,0];
      return caml_call3
              (fold,
               t,
               init,
               function(acc,v)
                {var acc$0=caml_call3(f,i[1],acc,v);
                 i[1] = i[1] + 1 | 0;
                 return acc$0})}
    function counti$0(foldi,t,f)
     {return caml_call3
              (foldi,
               t,
               0,
               function(i,n,a){return caml_call2(f,i,a)?n + 1 | 0:n})}
    function existsi$0(iteri,c,f)
     {return with_return
              (function(r)
                {caml_call2
                  (iteri,
                   c,
                   function(i,x)
                    {var _yq_=caml_call2(f,i,x);
                     return _yq_?caml_call1(r,1):_yq_});
                 return 0})}
    function for_alli$0(iteri,c,f)
     {return with_return
              (function(r)
                {caml_call2
                  (iteri,
                   c,
                   function(i,x)
                    {var _yp_=1 - caml_call2(f,i,x);
                     return _yp_?caml_call1(r,0):_yp_});
                 return 1})}
    function find_mapi$0(iteri,t,f)
     {return with_return
              (function(r)
                {caml_call2
                  (iteri,
                   t,
                   function(i,x)
                    {var res=caml_call2(f,i,x);return res?caml_call1(r,res):0});
                 return 0})}
    function findi$0(iteri,c,f)
     {return with_return
              (function(r)
                {caml_call2
                  (iteri,
                   c,
                   function(i,x)
                    {var _yo_=caml_call2(f,i,x);
                     return _yo_?caml_call1(r,[0,[0,i,x]]):_yo_});
                 return 0})}
    function Make$2(T)
     {var
       include=_M_([0,T[1],T[2],T[3]]),
       _x__=include[5],
       _yl_=T[4],
       _x6_=include[1],
       _x7_=include[2],
       _x8_=include[3],
       _x9_=include[4],
       _x$_=include[6],
       _ya_=include[7],
       _yb_=include[8],
       _yc_=include[9],
       _yd_=include[10],
       _ye_=include[11],
       _yf_=include[12],
       _yg_=include[13],
       _yh_=include[14],
       _yi_=include[15],
       _yj_=include[16],
       _yk_=include[17];
      if(typeof _yl_ === "number")
       var _ym_=function(t,f){return iteri$1(_x__,t,f)};
      else
       var iteri=_yl_[2],_ym_=iteri;
      var _yn_=T[5];
      if(typeof _yn_ === "number")
       var foldi=function(t,init,f){return foldi$0(_x__,t,init,f)};
      else
       var foldi$1=_yn_[2],foldi=foldi$1;
      function counti(t,f){return counti$0(foldi,t,f)}
      function existsi(t,f){return existsi$0(_ym_,t,f)}
      function for_alli(t,f){return for_alli$0(_ym_,t,f)}
      function find_mapi(t,f){return find_mapi$0(_ym_,t,f)}
      function findi(t,f){return findi$0(_ym_,t,f)}
      return [0,
              _x6_,
              _x7_,
              _x8_,
              _x9_,
              _x__,
              _x$_,
              _ya_,
              _yb_,
              _yc_,
              _yd_,
              _ye_,
              _yf_,
              _yg_,
              _yh_,
              _yi_,
              _yj_,
              _yk_,
              foldi,
              _ym_,
              existsi,
              for_alli,
              counti,
              findi,
              find_mapi]}
    var
     Base_Indexed_container=
      [0,
       foldi$0,
       iteri$1,
       counti$0,
       existsi$0,
       for_alli$0,
       findi$0,
       find_mapi$0,
       Make$2];
    caml_register_global
     (1034,Base_Indexed_container,"Base__Indexed_container");
    function sexp_of_t$27(of_a,of_s,param)
     {if(typeof param === "number")
       return _be_;
      else
       {if(0 === param[0])
         {var v0=param[1],v0$0=caml_call1(of_s,v0);
          return [1,[0,_bf_,[0,v0$0,0]]]}
        var
         v1=param[2],
         v0$1=param[1],
         v0$2=caml_call1(of_a,v0$1),
         v1$0=caml_call1(of_s,v1);
        return [1,[0,_bg_,[0,v0$2,[0,v1$0,0]]]]}}
    var Step=[0,sexp_of_t$27];
    function next_step(param)
     {var f=param[2],s=param[1],match=caml_call1(f,s);
      if(typeof match === "number")
       return 0;
      else
       {if(0 === match[0]){var s$0=match[1];return [0,[0,s$0,f]]}
        var s$1=match[2],a=match[1];
        return [1,a,[0,s$1,f]]}}
    function delayed_fold_step(s,init,f,finish)
     {function loop(s,next,finish,f,acc)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return caml_call1(finish,acc);
        else
         {if(0 === match[0])
           {var s$0=match[1];
            return caml_call3
                    (f,
                     acc,
                     0,
                     function(_x5_){return loop(s$0,next,finish,f,_x5_)})}
          var s$1=match[2],a=match[1];
          return caml_call3
                  (f,
                   acc,
                   [0,a],
                   function(_x4_){return loop(s$1,next,finish,f,_x4_)})}}
      var next=s[2],s$0=s[1];
      return loop(s$0,next,finish,f,init)}
    var Expert=[0,next_step,delayed_fold_step];
    function unfold_step(init,f){return [0,init,f]}
    function unfold(init,f)
     {return [0,
              init,
              function(s)
               {var match=caml_call1(f,s);
                if(match)
                 {var match$0=match[1],s$0=match$0[2],a=match$0[1];
                  return [1,a,s$0]}
                return 0}]}
    function unfold_with(s,init,f)
     {var next=s[2],s$0=s[1];
      return [0,
              [0,init,s$0],
              function(param)
               {var s=param[2],seed=param[1],match=caml_call1(next,s);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0]){var s$0=match[1];return [0,[0,seed,s$0]]}
                  var s$1=match[2],a=match[1],match$0=caml_call2(f,seed,a);
                  if(typeof match$0 === "number")
                   return 0;
                  else
                   {if(0 === match$0[0])
                     {var seed$0=match$0[1];return [0,[0,seed$0,s$1]]}
                    var seed$1=match$0[2],a$0=match$0[1];
                    return [1,a$0,[0,seed$1,s$1]]}}}]}
    function unfold_with_and_finish
     (s,init,running_step,inner_finished,finishing_step)
     {var next=s[2],s$0=s[1];
      return [0,
              [0,-172306698,[0,init,s$0]],
              function(state)
               {if(301075099 <= state[1])
                 {var
                   state$0=state[2],
                   match=caml_call1(finishing_step,state$0);
                  if(typeof match === "number")
                   return 0;
                  else
                   {if(0 === match[0])
                     {var state$1=match[1];return [0,[0,301075099,state$1]]}
                    var state$2=match[2],y=match[1];
                    return [1,y,[0,301075099,state$2]]}}
                var
                 match$0=state[2],
                 inner_state=match$0[2],
                 state$3=match$0[1],
                 match$1=caml_call1(next,inner_state);
                if(typeof match$1 === "number")
                 return [0,[0,301075099,caml_call1(inner_finished,state$3)]];
                else
                 {if(0 === match$1[0])
                   {var inner_state$0=match$1[1];
                    return [0,[0,-172306698,[0,state$3,inner_state$0]]]}
                  var
                   inner_state$1=match$1[2],
                   x=match$1[1],
                   match$2=caml_call2(running_step,state$3,x);
                  if(typeof match$2 === "number")
                   return 0;
                  else
                   {if(0 === match$2[0])
                     {var state$4=match$2[1];
                      return [0,[0,-172306698,[0,state$4,inner_state$1]]]}
                    var state$5=match$2[2],y$0=match$2[1];
                    return [1,y$0,[0,-172306698,[0,state$5,inner_state$1]]]}}}]}
    function of_list$2(l)
     {return [0,
              l,
              function(param)
               {if(param){var l=param[2],x=param[1];return [1,x,l]}return 0}]}
    function fold$2(t,v,f)
     {var next=t[2],seed$1=t[1],seed=seed$1,v$0=v;
      for(;;)
       {var match=caml_call1(next,seed);
        if(typeof match === "number")
         return v$0;
        else
         {if(0 === match[0]){var seed$0=match[1],seed=seed$0;continue}
          var s=match[2],a=match[1],v$1=caml_call2(f,v$0,a),seed=s,v$0=v$1;
          continue}}}
    function to_list_rev(t){return fold$2(t,0,function(l,x){return [0,x,l]})}
    function to_list$3(param)
     {var next=param[2],s=param[1];
      function to_list(s,next,i)
       {var s$0=s;
        for(;;)
         {if(caml_call2(symbol$81,i,0))
           {var t=[0,s$0,next];return rev(to_list_rev(t))}
          var match=caml_call1(next,s$0);
          if(typeof match === "number")
           return 0;
          else
           {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
            var s$2=match[2],a=match[1];
            return [0,a,to_list(s$2,next,i - 1 | 0)]}}}
      return to_list(s,next,500)}
    function sexp_of_t$28(sexp_of_a,t)
     {return caml_call2(sexp_of_t$10,sexp_of_a,to_list$3(t))}
    function range$1(opt,_x3_,_x2_,start_v,stop_v)
     {if(opt)var sth=opt[1],stride=sth;else var stride=1;
      if(_x3_)var sth$0=_x3_[1],start=sth$0;else var start=104758188;
      if(_x2_)var sth$1=_x2_[1],stop=sth$1;else var stop=-160346914;
      var
       step=
        104758188 <= stop
         ?caml_call2(symbol$83,stride,0)
           ?function(i)
             {return caml_call2(symbol$82,i,stop_v)?0:[1,i,i + stride | 0]}
           :function(i)
             {return caml_call2(symbol$78,i,stop_v)?0:[1,i,i + stride | 0]}
         :caml_call2(symbol$83,stride,0)
           ?function(i)
             {return caml_call2(symbol$83,i,stop_v)?0:[1,i,i + stride | 0]}
           :function(i)
             {return caml_call2(symbol$79,i,stop_v)?0:[1,i,i + stride | 0]},
       init=104758188 <= start?start_v:start_v + stride | 0;
      return [0,init,step]}
    function of_lazy$0(t_lazy)
     {return [0,
              t_lazy,
              function(t_lazy)
               {var
                 _x1_=caml_obj_tag(t_lazy),
                 match=
                  250 === _x1_
                   ?t_lazy[1]
                   :246 === _x1_?caml_call1(CamlinternalLazy[2],t_lazy):t_lazy,
                 next=match[2],
                 s=match[1],
                 match$0=caml_call1(next,s);
                if(typeof match$0 === "number")
                 return 0;
                else
                 {if(0 === match$0[0])
                   {var s$0=match$0[1],v=[0,s$0,next];return [0,v]}
                  var s$1=match$0[2],x=match$0[1],v$0=[0,s$1,next];
                  return [1,x,v$0]}}]}
    function _bh_(t,f)
     {var next=t[2],seed=t[1];
      return [0,
              seed,
              function(seed)
               {var match=caml_call1(next,seed);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0]){var s=match[1];return [0,s]}
                  var s$0=match[2],a=match[1];
                  return [1,caml_call1(f,a),s$0]}}]}
    function mapi$2(t,f)
     {var next=t[2],s=t[1];
      return [0,
              [0,0,s],
              function(param)
               {var s=param[2],i=param[1],match=caml_call1(next,s);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0]){var s$0=match[1];return [0,[0,i,s$0]]}
                  var s$1=match[2],a=match[1];
                  return [1,caml_call2(f,i,a),[0,i + 1 | 0,s$1]]}}]}
    function folding_map$0(t,init,f)
     {return unfold_with
              (t,
               init,
               function(acc,x)
                {var match=caml_call2(f,acc,x),x$0=match[2],acc$0=match[1];
                 return [1,x$0,acc$0]})}
    function folding_mapi$0(t,init,f)
     {return unfold_with
              (t,
               [0,0,init],
               function(param,x)
                {var
                  acc=param[2],
                  i=param[1],
                  match=caml_call3(f,i,acc,x),
                  x$0=match[2],
                  acc$0=match[1];
                 return [1,x$0,[0,i + 1 | 0,acc$0]]})}
    function filter$1(t,f)
     {var next=t[2],seed=t[1];
      return [0,
              seed,
              function(seed)
               {var match=caml_call1(next,seed);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0]){var s=match[1];return [0,s]}
                  var a=match[1],s$0=match[2];
                  if(caml_call1(f,a))return [1,a,s$0];
                  var s$1=match[2];
                  return [0,s$1]}}]}
    function filteri$0(t,f)
     {function _x0_(param){var s=param[2],i=param[1];return caml_call2(f,i,s)}
      return _bh_
              (filter$1(mapi$2(t,function(i,s){return [0,i,s]}),_x0_),
               get_data)}
    function length$2(t)
     {var next=t[2],seed=t[1],i=0,s=seed;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return i;
        else
         {if(0 === match[0]){var s$0=match[1],s=s$0;continue}
          var s$1=match[2],i$0=i + 1 | 0,i=i$0,s=s$1;
          continue}}}
    function to_array$1(t)
     {var
       match=
        fold$2
         (t,
          _bi_,
          function(param,x)
           {var i=param[2],l=param[1];return [0,[0,x,l],i + 1 | 0]}),
       len=match[2],
       l=match[1];
      if(l)
       {var
         l$0=l[2],
         x=l[1],
         a=caml_make_vect(len,x),
         i$1=len - 2 | 0,
         i=i$1,
         l$1=l$0;
        for(;;)
         {if(l$1)
           {var l$2=l$1[2],x$0=l$1[1];
            caml_check_bound(a,i)[1 + i] = x$0;
            var i$0=i - 1 | 0,i=i$0,l$1=l$2;
            continue}
          if(caml_call2(symbol$81,i,-1))return a;
          throw [0,Assert_failure,_bj_]}}
      return [0]}
    function find$3(t,f)
     {var next=t[2],seed=t[1],s=seed;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return 0;
        else
         if(0 === match[0])
          var s$0=match[1];
         else
          {var a=match[1];if(caml_call1(f,a))return [0,a];var s$0=match[2]}
        var s=s$0;
        continue}}
    function find_map$2(t,f)
     {var next=t[2],seed=t[1],s=seed;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var s$0=match[1],s=s$0;continue}
          var s$1=match[2],a=match[1],some_b=caml_call1(f,a);
          if(some_b)return some_b;
          var s=s$1;
          continue}}}
    function find_mapi$1(t,f)
     {var next=t[2],seed=t[1],s=seed,i=0;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var s$0=match[1],s=s$0;continue}
          var s$1=match[2],a=match[1],some_b=caml_call2(f,i,a);
          if(some_b)return some_b;
          var i$0=i + 1 | 0,s=s$1,i=i$0;
          continue}}}
    function for_all$2(t,f)
     {var next=t[2],seed=t[1],s=seed;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return 1;
        else
         if(0 === match[0])
          var s$0=match[1];
         else
          {var a=match[1];if(! caml_call1(f,a))return 0;var s$0=match[2]}
        var s=s$0;
        continue}}
    function for_alli$1(t,f)
     {var next=t[2],seed=t[1],s=seed,i=0;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return 1;
        else
         {if(0 === match[0]){var s$0=match[1],s=s$0;continue}
          var a=match[1];
          if(caml_call2(f,i,a))
           {var s$1=match[2],i$0=i + 1 | 0,s=s$1,i=i$0;continue}
          return 0}}}
    function exists$2(t,f)
     {var next=t[2],seed=t[1],s=seed;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return 0;
        else
         if(0 === match[0])
          var s$0=match[1];
         else
          {var a=match[1];if(caml_call1(f,a))return 1;var s$0=match[2]}
        var s=s$0;
        continue}}
    function existsi$1(t,f)
     {var next=t[2],seed=t[1],s=seed,i=0;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var s$0=match[1],s=s$0;continue}
          var a=match[1];
          if(caml_call2(f,i,a))return 1;
          var s$1=match[2],i$0=i + 1 | 0,s=s$1,i=i$0;
          continue}}}
    function iter$5(t,f)
     {var next=t[2],seed$1=t[1],seed=seed$1;
      for(;;)
       {var match=caml_call1(next,seed);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var seed$0=match[1],seed=seed$0;continue}
          var s=match[2],a=match[1];
          caml_call1(f,a);
          var seed=s;
          continue}}}
    function is_empty$1(t)
     {var next=t[2],seed=t[1],s=seed;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return 1;
        else
         {if(0 === match[0]){var s$0=match[1],s=s$0;continue}return 0}}}
    function mem$2(t,a,equal)
     {var next=t[2],seed=t[1],s=seed;
      for(;;)
       {var match=caml_call1(next,s);
        if(typeof match === "number")
         return 0;
        else
         if(0 === match[0])
          var s$0=match[1];
         else
          {var b=match[1];if(caml_call2(equal,a,b))return 1;var s$0=match[2]}
        var s=s$0;
        continue}}
    var empty=[0,0,function(param){return 0}];
    function bind$11(t,f)
     {return [0,
              [0,empty,t],
              function(param)
               {var
                 rest=param[2],
                 match=param[1],
                 next=match[2],
                 seed=match[1],
                 match$0=caml_call1(next,seed);
                if(typeof match$0 === "number")
                 {var
                   next$0=rest[2],
                   seed$0=rest[1],
                   match$1=caml_call1(next$0,seed$0);
                  if(typeof match$1 === "number")
                   return 0;
                  else
                   {if(0 === match$1[0])
                     {var s=match$1[1];return [0,[0,empty,[0,s,next$0]]]}
                    var s$0=match$1[2],a=match$1[1];
                    return [0,[0,caml_call1(f,a),[0,s$0,next$0]]]}}
                else
                 {if(0 === match$0[0])
                   {var s$1=match$0[1];return [0,[0,[0,s$1,next],rest]]}
                  var s$2=match$0[2],a$0=match$0[1];
                  return [1,a$0,[0,[0,s$2,next],rest]]}}]}
    function return$11(x)
     {return [0,
              [0,x],
              function(param)
               {if(param){var x=param[1];return [1,x,0]}return 0}]}
    var
     map$17=[0,-198771759,_bh_],
     include$32=Make([0,bind$11,return$11,map$17]),
     symbol_bind$5=include$32[1],
     symbol_map$6=include$32[2],
     Monad_infix$3=include$32[3],
     bind$12=include$32[4],
     return$12=include$32[5],
     map$18=include$32[6],
     join$4=include$32[7],
     ignore_m$4=include$32[8],
     all$11=include$32[9],
     all_unit$5=include$32[10],
     Let_syntax$3=include$32[11];
    function nth$0(s,i)
     {if(caml_call2(symbol$78,i,0))return 0;
      var next=s[2],s$3=s[1],i$0=i,s$0=s$3;
      for(;;)
       {var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var s$2=match[2],a=match[1];
          if(i$0 === 0)return [0,a];
          var i$1=i$0 - 1 | 0,i$0=i$1,s$0=s$2;
          continue}}}
    function nth_exn$0(s,n)
     {if(caml_call2(symbol$78,n,0))throw [0,Stdlib[6],cst_Sequence_nth];
      var match=nth$0(s,n);
      if(match){var x=match[1];return x}
      return caml_call1(failwith$0,cst_Sequence_nth$0)}
    function compare$34(cmp_a,cmp_b,a_001,match)
     {if(a_001 === match)return 0;
      switch(a_001[0])
       {case 0:
         var _xW_=a_001[1];
         if(0 === match[0])
          {var b_004=match[1];return caml_call2(cmp_a,_xW_,b_004)}
         return -1;
        case 1:
         var _xX_=a_001[1];
         switch(match[0])
          {case 0:break;
           case 1:var b_006=match[1];return caml_call2(cmp_b,_xX_,b_006);
           default:return -1}
         break;
        default:
         var _xY_=a_001[2],_xZ_=a_001[1];
         switch(match[0])
          {case 0:break;
           case 1:return 1;
           default:
            var b_010=match[2],b_008=match[1],n=caml_call2(cmp_a,_xZ_,b_008);
            return 0 === n?caml_call2(cmp_b,_xY_,b_010):n}}
      return 1}
    function hash_fold_t$18(hash_fold_a,hash_fold_b,hsv,arg)
     {switch(arg[0])
       {case 0:
         var a0=arg[1],hsv$0=runtime.Base_internalhash_fold_int(hsv,0);
         return caml_call2(hash_fold_a,hsv$0,a0);
        case 1:
         var a0$0=arg[1],hsv$1=runtime.Base_internalhash_fold_int(hsv,1);
         return caml_call2(hash_fold_b,hsv$1,a0$0);
        default:
         var
          a1=arg[2],
          a0$1=arg[1],
          hsv$2=runtime.Base_internalhash_fold_int(hsv,2),
          hsv$3=caml_call2(hash_fold_a,hsv$2,a0$1);
         return caml_call2(hash_fold_b,hsv$3,a1)}}
    function t_of_sexp$22(of_a,of_b,sexp)
     {if(0 === sexp[0])
       {var _xR_=sexp[1],switch$0=0;
        if(caml_string_notequal(_xR_,cst_Both))
         {var switch$1=0;
          if(caml_string_notequal(_xR_,cst_Left))
           {var switch$2=0;
            if(caml_string_notequal(_xR_,cst_Right))
             if(caml_string_notequal(_xR_,cst_both))
              if(caml_string_notequal(_xR_,cst_left))
               {if(caml_string_notequal(_xR_,cst_right))
                 {switch$0 = 1;switch$1 = 1;switch$2 = 1}}
              else
               switch$2 = 1;
             else
              {switch$1 = 1;switch$2 = 1}
            if(! switch$2)
             return caml_call2(Sexplib0_Sexp_conv_error[5],tp_loc$7,sexp)}
          if(! switch$1)
           return caml_call2(Sexplib0_Sexp_conv_error[5],tp_loc$7,sexp)}
        if(! switch$0)
         return caml_call2(Sexplib0_Sexp_conv_error[5],tp_loc$7,sexp)}
      else
       {var _xS_=sexp[1];
        if(! _xS_)
         return caml_call2(Sexplib0_Sexp_conv_error[7],tp_loc$7,sexp);
        var _xT_=_xS_[1];
        if(0 !== _xT_[0])
         return caml_call2(Sexplib0_Sexp_conv_error[6],tp_loc$7,sexp);
        var _xU_=_xT_[1],switch$3=0;
        if(caml_string_notequal(_xU_,cst_Both$0))
         {var switch$4=0;
          if(caml_string_notequal(_xU_,cst_Left$0))
           {var switch$5=0;
            if(caml_string_notequal(_xU_,cst_Right$0))
             if(caml_string_notequal(_xU_,cst_both$0))
              if(caml_string_notequal(_xU_,cst_left$0))
               {if(caml_string_notequal(_xU_,cst_right$0))
                 {switch$3 = 1;switch$4 = 1;switch$5 = 1}}
              else
               switch$5 = 1;
             else
              {switch$4 = 1;switch$5 = 1}
            if(! switch$5)
             {var sexp_args=_xS_[2];
              if(sexp_args && ! sexp_args[2])
               {var v0=sexp_args[1],v0$0=caml_call1(of_b,v0);return [1,v0$0]}
              return caml_call3
                      (Sexplib0_Sexp_conv_error[4],tp_loc$7,_xU_,sexp)}}
          if(! switch$4)
           {var sexp_args$0=_xS_[2];
            if(sexp_args$0 && ! sexp_args$0[2])
             {var v0$1=sexp_args$0[1],v0$2=caml_call1(of_a,v0$1);
              return [0,v0$2]}
            return caml_call3(Sexplib0_Sexp_conv_error[4],tp_loc$7,_xU_,sexp)}}
        if(! switch$3)
         {var sexp_args$1=_xS_[2];
          if(sexp_args$1)
           {var _xV_=sexp_args$1[2];
            if(_xV_ && ! _xV_[2])
             {var
               v1=_xV_[1],
               v0$3=sexp_args$1[1],
               v0$4=caml_call1(of_a,v0$3),
               v1$0=caml_call1(of_b,v1);
              return [2,v0$4,v1$0]}}
          return caml_call3(Sexplib0_Sexp_conv_error[4],tp_loc$7,_xU_,sexp)}}
      return caml_call2(Sexplib0_Sexp_conv_error[8],tp_loc$7,sexp)}
    function sexp_of_t$29(of_a,of_b,param)
     {switch(param[0])
       {case 0:
         var v0=param[1],v0$0=caml_call1(of_a,v0);
         return [1,[0,_bk_,[0,v0$0,0]]];
        case 1:
         var v0$1=param[1],v0$2=caml_call1(of_b,v0$1);
         return [1,[0,_bl_,[0,v0$2,0]]];
        default:
         var
          v1=param[2],
          v0$3=param[1],
          v0$4=caml_call1(of_a,v0$3),
          v1$0=caml_call1(of_b,v1);
         return [1,[0,_bm_,[0,v0$4,[0,v1$0,0]]]]}}
    var
     Merge_with_duplicates_element=
      [0,compare$34,hash_fold_t$18,t_of_sexp$22,sexp_of_t$29];
    function merge_with_duplicates(param,_xL_,compare)
     {var next2=_xL_[2],s2=_xL_[1],next1=param[2],s1=param[1];
      function next(param)
       {var _xM_=param[1];
        if(typeof _xM_ === "number")
         {var _xN_=param[2];
          if(typeof _xN_ === "number")
           return 0;
          else
           if(0 !== _xN_[0])
            {var s2$0=_xN_[2],b=_xN_[1];return [1,[1,b],[0,0,[0,s2$0]]]}}
        else
         {if(0 === _xM_[0])
           {var s2$1=param[2],s1=_xM_[1];
            return [0,[0,caml_call1(next1,s1),s2$1]]}
          var _xO_=param[2],_xP_=_xM_[2],_xQ_=_xM_[1];
          if(typeof _xO_ === "number")
           return [1,[0,_xQ_],[0,[0,_xP_],0]];
          else
           if(0 !== _xO_[0])
            {var
              s2$2=_xO_[2],
              b$0=_xO_[1],
              comparison=caml_call2(compare,_xQ_,b$0);
             return caml_call2(symbol$78,comparison,0)
                     ?[1,[0,_xQ_],[0,[0,_xP_],_xO_]]
                     :caml_call2(symbol$81,comparison,0)
                       ?[1,[2,_xQ_,b$0],[0,[0,_xP_],[0,s2$2]]]
                       :[1,[1,b$0],[0,_xM_,[0,s2$2]]]}}
        var match=param[2],s2=match[1];
        return [0,[0,_xM_,caml_call1(next2,s2)]]}
      return [0,[0,[0,s1],[0,s2]],next]}
    function merge$1(s1,s2,compare)
     {function _xK_(param){var x=param[1];return x}
      return caml_call2(map$18,merge_with_duplicates(s1,s2,compare),_xK_)}
    function hd$0(s)
     {var next=s[2],s$2=s[1],s$0=s$2;
      for(;;)
       {var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var a=match[1];
          return [0,a]}}}
    function hd_exn$0(s)
     {var match=hd$0(s);
      if(match){var a=match[1];return a}
      return caml_call1(failwith$0,cst_hd_exn)}
    function tl$0(s)
     {var next=s[2],s$2=s[1],s$0=s$2;
      for(;;)
       {var match=caml_call1(next,s$0);
        if(typeof match === "number")
         var match$0=0;
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var a=match[2],match$0=[0,a]}
        if(match$0){var s$3=match$0[1];return [0,[0,s$3,next]]}
        return 0}}
    function tl_eagerly_exn(s)
     {var match=tl$0(s);
      if(match){var s$0=match[1];return s$0}
      return caml_call1(failwith$0,cst_Sequence_tl_exn)}
    function lift_identity(next,s)
     {var match=caml_call1(next,s);
      if(typeof match === "number")
       return 0;
      else
       {if(0 === match[0]){var s$0=match[1];return [0,[0,316735838,s$0]]}
        var s$1=match[2],a=match[1];
        return [1,a,[0,316735838,s$1]]}}
    function next(s)
     {var next=s[2],s$3=s[1],s$0=s$3;
      for(;;)
       {var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var s$2=match[2],a=match[1];
          return [0,[0,a,[0,s$2,next]]]}}}
    function filter_opt$0(s)
     {var next=s[2],s$0=s[1];
      return [0,
              s$0,
              function(s)
               {var match=caml_call1(next,s);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0]){var s$0=match[1];return [0,s$0]}
                  var _xJ_=match[1];
                  if(_xJ_){var s$1=match[2],a=_xJ_[1];return [1,a,s$1]}
                  var s$2=match[2];
                  return [0,s$2]}}]}
    function filter_map$0(s,f){return filter_opt$0(caml_call2(map$18,s,f))}
    function filter_mapi$0(s,f)
     {function _xI_(param){var s=param[2],i=param[1];return caml_call2(f,i,s)}
      return filter_map$0(mapi$2(s,function(i,s){return [0,i,s]}),_xI_)}
    function split_n$0(s,i)
     {var next=s[2],s$3=s[1],s$0=s$3,i$0=i,accum=0;
      for(;;)
       {if(caml_call2(symbol$79,i$0,0))return [0,rev(accum),[0,s$0,next]];
        var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return [0,rev(accum),empty];
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var
           s$2=match[2],
           a=match[1],
           accum$0=[0,a,accum],
           i$1=i$0 - 1 | 0,
           s$0=s$2,
           i$0=i$1,
           accum=accum$0;
          continue}}}
    function chunks_exn(t,n)
     {if(caml_call2(symbol$79,n,0))
       throw [0,Stdlib[6],cst_Sequence_chunks_exn];
      return [0,
              t,
              function(t)
               {var match=split_n$0(t,n),_xH_=match[1];
                if(_xH_){var t$0=match[2];return [1,_xH_,t$0]}
                return 0}]}
    function findi$1(s,f)
     {function _xG_(param){var s=param[2],i=param[1];return caml_call2(f,i,s)}
      return find$3(mapi$2(s,function(i,s){return [0,i,s]}),_xG_)}
    function find_exn$1(s,f)
     {var match=find$3(s,f);
      if(match){var x=match[1];return x}
      return caml_call1(failwith$0,cst_Sequence_find_exn)}
    function append$1(s1,match)
     {var next2=match[2],s2=match[1],next1=s1[2],s1$0=s1[1];
      return [0,
              [0,472258093,s1$0],
              function(param)
               {if(472258093 <= param[1])
                 {var s1=param[2],match=caml_call1(next1,s1);
                  if(typeof match === "number")
                   return [0,[0,-630817751,s2]];
                  else
                   {if(0 === match[0])
                     {var s1$0=match[1];return [0,[0,472258093,s1$0]]}
                    var s1$1=match[2],a=match[1];
                    return [1,a,[0,472258093,s1$1]]}}
                var s2$0=param[2],match$0=caml_call1(next2,s2$0);
                if(typeof match$0 === "number")
                 return 0;
                else
                 {if(0 === match$0[0])
                   {var s2$1=match$0[1];return [0,[0,-630817751,s2$1]]}
                  var s2$2=match$0[2],a$0=match$0[1];
                  return [1,a$0,[0,-630817751,s2$2]]}}]}
    function concat_map$0(s,f){return caml_call2(bind$12,s,f)}
    function concat$1(s){return concat_map$0(s,function(_xF_){return _xF_})}
    function concat_mapi$0(s,f)
     {function _xE_(param){var s=param[2],i=param[1];return caml_call2(f,i,s)}
      return concat_map$0(mapi$2(s,function(i,s){return [0,i,s]}),_xE_)}
    function zip$0(param,_xz_)
     {var next2=_xz_[2],s2=_xz_[1],next1=param[2],s1=param[1];
      function next(param)
       {var _xA_=param[1],switch$0=0;
        if(typeof _xA_ === "number")
         switch$0 = 1;
        else
         if(1 === _xA_[0])
          {var _xB_=param[2],_xC_=_xA_[2],_xD_=_xA_[1];
           if(typeof _xB_ !== "number")
            {if(0 === _xB_[0])
              {var match=param[2],s2$0=match[1];
               return [0,[0,_xA_,caml_call1(next2,s2$0)]]}
             var s2$1=_xB_[2],b=_xB_[1];
             return [1,[0,_xD_,b],[0,[0,_xC_],[0,s2$1]]]}}
        if(! switch$0 && typeof param[2] !== "number")
         {var s2=param[2],s1=_xA_[1];return [0,[0,caml_call1(next1,s1),s2]]}
        return 0}
      return [0,[0,[0,s1],[0,s2]],next]}
    function zip_full(param,_xt_)
     {var next2=_xt_[2],s2=_xt_[1],next1=param[2],s1=param[1];
      function next(param)
       {var _xu_=param[1];
        if(typeof _xu_ === "number")
         {var _xv_=param[2];
          if(typeof _xv_ === "number")
           return 0;
          else
           if(0 !== _xv_[0])
            {var s2$0=_xv_[2],b=_xv_[1];
             return [1,[0,-57574468,b],[0,0,caml_call1(next2,s2$0)]]}}
        else
         {if(0 === _xu_[0])
           {var s2$1=param[2],s1=_xu_[1];
            return [0,[0,caml_call1(next1,s1),s2$1]]}
          var _xw_=param[2],_xx_=_xu_[2],_xy_=_xu_[1];
          if(typeof _xw_ === "number")
           return [1,[0,847852583,_xy_],[0,caml_call1(next1,_xx_),0]];
          else
           if(0 !== _xw_[0])
            {var s2$2=_xw_[2],b$0=_xw_[1];
             return [1,[0,737457313,[0,_xy_,b$0]],[0,[0,_xx_],[0,s2$2]]]}}
        var match=param[2],s2=match[1];
        return [0,[0,_xu_,caml_call1(next2,s2)]]}
      return [0,[0,[0,s1],[0,s2]],next]}
    function bounded_length(param,at_most)
     {var next=param[2],seed=param[1],i=0,seed$0=seed;
      for(;;)
       {if(caml_call2(symbol$82,i,at_most))return 85047514;
        var match=caml_call1(next,seed$0);
        if(typeof match === "number")
         return [0,16394,i];
        else
         {if(0 === match[0]){var seed$1=match[1],seed$0=seed$1;continue}
          var seed$2=match[2],i$0=i + 1 | 0,i=i$0,seed$0=seed$2;
          continue}}}
    function length_is_bounded_by(opt,max,t)
     {if(opt)var sth=opt[1],min=sth;else var min=-1;
      if(max)
       {var max$0=max[1],match$0=bounded_length(t,max$0);
        if(typeof match$0 !== "number" && 16394 === match$0[1])
         {var len=match$0[2];if(caml_call2(symbol$83,len,min))return 1}
        return 0}
      var next=t[2],s=t[1],s$0=s,acc=0;
      for(;;)
       {if(caml_call2(symbol$83,acc,min))return 1;
        var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var s$2=match[2],acc$0=acc + 1 | 0,s$0=s$2,acc=acc$0;
          continue}}}
    function iteri$2(s,f)
     {function _xs_(param){var s=param[2],i=param[1];return caml_call2(f,i,s)}
      return iter$5(mapi$2(s,function(i,s){return [0,i,s]}),_xs_)}
    function foldi$1(s,init,f)
     {function _xr_(acc,param)
       {var s=param[2],i=param[1];return caml_call3(f,i,acc,s)}
      return fold$2(mapi$2(s,function(i,s){return [0,i,s]}),init,_xr_)}
    function reduce$0(s,f)
     {var match=next(s);
      if(match)
       {var match$0=match[1],s$0=match$0[2],a=match$0[1];
        return [0,fold$2(s$0,a,f)]}
      return 0}
    function reduce_exn$0(s,f)
     {var match=reduce$0(s,f);
      if(match){var res=match[1];return res}
      return caml_call1(failwith$0,cst_Sequence_reduce_exn)}
    function group$0(param,break$0)
     {var next=param[2],s=param[1];
      return [0,
              [0,[0,0,s]],
              function(param)
               {if(param)
                 {var
                   match=param[1],
                   s=match[2],
                   acc=match[1],
                   match$0=caml_call1(next,s);
                  if(typeof match$0 !== "number" && 0 === match$0[0])
                   {var s$2=match$0[1];return [0,[0,[0,acc,s$2]]]}
                  if(acc)
                   {if(typeof match$0 === "number")return [1,rev(acc),0];
                    var s$0=match$0[2],cur=match$0[1],prev=acc[1];
                    return caml_call2(break$0,prev,cur)
                            ?[1,rev(acc),[0,[0,[0,cur,0],s$0]]]
                            :[0,[0,[0,[0,cur,acc],s$0]]]}
                  if(typeof match$0 === "number")return 0;
                  var s$1=match$0[2],cur$0=match$0[1];
                  return [0,[0,[0,[0,cur$0,0],s$1]]]}
                return 0}]}
    function find_consecutive_duplicate$0(param,equal)
     {var next=param[2],s=param[1],last_elt=0,s$0=s;
      for(;;)
       {var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var s$2=match[2],a=match[1];
          if(last_elt)
           {var b=last_elt[1];if(caml_call2(equal,a,b))return [0,[0,b,a]]}
          var last_elt$0=[0,a],last_elt=last_elt$0,s$0=s$2;
          continue}}}
    function remove_consecutive_duplicates$0(s,equal)
     {return unfold_with
              (s,
               0,
               function(prev,a)
                {if(prev)
                  {var b=prev[1];if(caml_call2(equal,a,b))return [0,[0,a]]}
                 return [1,a,[0,a]]})}
    function count$2(s,f){return length$2(filter$1(s,f))}
    function counti$1(t,f){return length$2(filteri$0(t,f))}
    function sum$2(m,t,f){return sum(fold$2,m,t,f)}
    function min_elt$2(t,compare){return min_elt(fold$2,t,compare)}
    function max_elt$2(t,compare){return max_elt(fold$2,t,compare)}
    function init$2(n,f)
     {return [0,
              0,
              function(i)
               {return caml_call2(symbol$83,i,n)
                        ?0
                        :[1,caml_call1(f,i),i + 1 | 0]}]}
    function sub$4(s,pos,len)
     {var
       _xp_=caml_call2(symbol$78,pos,0),
       _xq_=_xp_ || caml_call2(symbol$78,len,0);
      if(_xq_)caml_call1(failwith$0,cst_Sequence_sub);
      var next=s[2],s$0=s[1];
      return [0,
              [0,0,s$0],
              function(param)
               {var s=param[2],i=param[1];
                if(caml_call2(symbol$83,i - pos | 0,len))return 0;
                var match=caml_call1(next,s);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0]){var s$0=match[1];return [0,[0,i,s$0]]}
                  var a=match[1],s$1=match[2];
                  if(caml_call2(symbol$83,i,pos))
                   return [1,a,[0,i + 1 | 0,s$1]];
                  var s$2=match[2];
                  return [0,[0,i + 1 | 0,s$2]]}}]}
    function take$0(s,len)
     {if(caml_call2(symbol$78,len,0))caml_call1(failwith$0,cst_Sequence_take);
      var next=s[2],s$0=s[1];
      return [0,
              [0,0,s$0],
              function(param)
               {var s=param[2],i=param[1];
                if(caml_call2(symbol$83,i,len))return 0;
                var match=caml_call1(next,s);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0]){var s$0=match[1];return [0,[0,i,s$0]]}
                  var s$1=match[2],a=match[1];
                  return [1,a,[0,i + 1 | 0,s$1]]}}]}
    function drop$0(s,len)
     {if(caml_call2(symbol$78,len,0))caml_call1(failwith$0,cst_Sequence_drop);
      var next=s[2],s$0=s[1];
      return [0,
              [0,0,s$0],
              function(param)
               {var s=param[2],i=param[1],match=caml_call1(next,s);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0]){var s$0=match[1];return [0,[0,i,s$0]]}
                  var a=match[1],s$1=match[2];
                  if(caml_call2(symbol$83,i,len))
                   return [1,a,[0,i + 1 | 0,s$1]];
                  var s$2=match[2];
                  return [0,[0,i + 1 | 0,s$2]]}}]}
    function take_while$0(s,f)
     {var next=s[2],s$0=s[1];
      return [0,
              s$0,
              function(s)
               {var match=caml_call1(next,s);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0]){var s$0=match[1];return [0,s$0]}
                  var a=match[1],s$1=match[2];
                  return caml_call1(f,a)?[1,a,s$1]:0}}]}
    function drop_while$0(s,f)
     {var next=s[2],s$0=s[1];
      return [0,
              [0,-557110719,s$0],
              function(param)
               {if(316735838 <= param[1])
                 {var s=param[2];return lift_identity(next,s)}
                var s$0=param[2],match=caml_call1(next,s$0);
                if(typeof match === "number")
                 return 0;
                else
                 {if(0 === match[0])
                   {var s$1=match[1];return [0,[0,-557110719,s$1]]}
                  var a=match[1],s$2=match[2];
                  if(caml_call1(f,a))return [0,[0,-557110719,s$2]];
                  var s$3=match[2];
                  return [1,a,[0,316735838,s$3]]}}]}
    function shift_right(s,x)
     {var next=s[2],seed=s[1];
      return [0,
              [0,-433944719,[0,seed,x]],
              function(param)
               {if(316735838 <= param[1])
                 {var s=param[2];return lift_identity(next,s)}
                var match=param[2],x=match[2],seed=match[1];
                return [1,x,[0,316735838,seed]]}]}
    function shift_right_with_list(s,l){return append$1(of_list$2(l),s)}
    var Infix$1=[0,append$1];
    function intersperse$0(s,sep)
     {var next=s[2],s$0=s[1];
      return [0,
              [0,815032112,s$0],
              function(param)
               {var _xo_=param[1];
                if(815032112 === _xo_)
                 {var s=param[2],match=caml_call1(next,s);
                  if(typeof match === "number")
                   return 0;
                  else
                   {if(0 === match[0])
                     {var s$0=match[1];return [0,[0,815032112,s$0]]}
                    var s$1=match[2],a=match[1];
                    return [1,a,[0,951752159,s$1]]}}
                if(951752159 <= _xo_)
                 {var s$2=param[2],match$0=caml_call1(next,s$2);
                  if(typeof match$0 === "number")
                   return 0;
                  else
                   {if(0 === match$0[0])
                     {var s$3=match$0[1];return [0,[0,951752159,s$3]]}
                    var s$4=match$0[2],a$0=match$0[1];
                    return [1,sep,[0,-571577571,[0,a$0,s$4]]]}}
                var match$1=param[2],s$5=match$1[2],a$1=match$1[1];
                return [1,a$1,[0,951752159,s$5]]}]}
    function repeat(x){return [0,x,function(x){return [1,x,x]}]}
    function cycle_list_exn(xs)
     {if(is_empty(xs))throw [0,Stdlib[6],cst_Sequence_cycle_list_exn];
      var s=of_list$2(xs);
      function _xn_(param){return s}
      return concat_map$0(repeat(0),_xn_)}
    function cartesian_product$0(sa,sb)
     {return concat_map$0(sa,function(a){return zip$0(repeat(a),sb)})}
    function singleton(x){return caml_call1(return$12,x)}
    function delayed_fold(s,init,f,finish)
     {function _xm_(acc,option,k)
       {if(option){var a=option[1];return caml_call3(f,acc,a,k)}
        return caml_call1(k,acc)}
      return caml_call4(Expert[2],s,init,_xm_,finish)}
    function fold_m(bind,return$0,t,init,f)
     {function _xl_(acc,option,k)
       {if(option)
         {var a=option[1];return caml_call2(bind,caml_call2(f,acc,a),k)}
        return caml_call2(bind,caml_call1(return$0,acc),k)}
      return caml_call4(Expert[2],t,init,_xl_,return$0)}
    function iter_m(bind,return$0,t,f)
     {function _xk_(param,option,k)
       {if(option){var a=option[1];return caml_call2(bind,caml_call1(f,a),k)}
        return caml_call2(bind,caml_call1(return$0,0),k)}
      return caml_call4(Expert[2],t,0,_xk_,return$0)}
    function fold_until$2(s,acc,f,finish)
     {var next=s[2],s$3=s[1],s$0=s$3,acc$0=acc;
      for(;;)
       {var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return caml_call1(finish,acc$0);
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var s$2=match[2],a=match[1],match$0=caml_call2(f,acc$0,a);
          if(0 === match$0[0])
           {var acc$1=match$0[1],s$0=s$2,acc$0=acc$1;continue}
          var x=match$0[1];
          return x}}}
    function fold_result$2(s,acc,f)
     {var next=s[2],s$3=s[1],s$0=s$3,acc$0=acc;
      for(;;)
       {var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return caml_call1(return$3,acc$0);
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var s$2=match[2],a=match[1],e=caml_call2(f,acc$0,a);
          if(0 === e[0]){var acc$1=e[1],s$0=s$2,acc$0=acc$1;continue}
          return e}}}
    function force_eagerly(t){return of_list$2(to_list$3(t))}
    function memoize(param)
     {var next=param[2],s=param[1];
      function memoize(s)
       {return [0,
                [246,
                 function(_xj_)
                  {var s$0=s;
                   for(;;)
                    {var match=caml_call1(next,s$0);
                     if(typeof match === "number")
                      return 0;
                     else
                      {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
                       var s$2=match[2],a=match[1];
                       return [1,a,memoize(s$2)]}}}]]}
      function _xh_(param)
       {var l=param[1],_xi_=caml_obj_tag(l);
        return 250 === _xi_
                ?l[1]
                :246 === _xi_?caml_call1(CamlinternalLazy[2],l):l}
      return [0,memoize(s),_xh_]}
    function drop_eagerly(s,len)
     {var next=s[2],s$3=s[1],i=0,s$0=s$3;
      for(;;)
       {if(caml_call2(symbol$83,i,len))return [0,s$0,next];
        var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return empty;
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var s$2=match[2],i$0=i + 1 | 0,i=i$0,s$0=s$2;
          continue}}}
    function drop_while_option(param,f)
     {var next=param[2],s=param[1],s$0=s;
      for(;;)
       {var match=caml_call1(next,s$0);
        if(typeof match === "number")
         return 0;
        else
         {if(0 === match[0]){var s$1=match[1],s$0=s$1;continue}
          var s$2=match[2],x=match[1];
          if(caml_call1(f,x)){var s$0=s$2;continue}
          return [0,[0,x,[0,s$2,next]]]}}}
    function compare$35(compare_a,t1,t2)
     {return with_return
              (function(r)
                {function _xe_(param)
                  {var _xf_=param[1];
                   if(737457313 === _xf_)
                    {var
                      match=param[2],
                      v2=match[2],
                      v1=match[1],
                      c=caml_call2(compare_a,v1,v2),
                      _xg_=caml_call2(symbol$80,c,0);
                     return _xg_?caml_call1(r,c):_xg_}
                   return 847852583 <= _xf_?caml_call1(r,1):caml_call1(r,-1)}
                 iter$5(zip_full(t1,t2),_xe_);
                 return 0})}
    function equal$20(equal_a,t1,t2)
     {function _xd_(param)
       {if(737457313 === param[1])
         {var match=param[2],a2=match[2],a1=match[1];
          return caml_call2(equal_a,a1,a2)}
        return 0}
      return for_all$2(zip_full(t1,t2),_xd_)}
    function round_robin(list)
     {function next(param)
       {var done_stack=param[2],todo_stack=param[1];
        if(todo_stack)
         {var
           todo_stack$0=todo_stack[2],
           match=todo_stack[1],
           f=match[2],
           s=match[1],
           match$0=caml_call1(f,s);
          if(typeof match$0 === "number")
           return [0,[0,todo_stack$0,done_stack]];
          else
           {if(0 === match$0[0])
             {var s$0=match$0[1];
              return [0,[0,[0,[0,s$0,f],todo_stack$0],done_stack]]}
            var s$1=match$0[2],x=match$0[1];
            return [1,x,[0,todo_stack$0,[0,[0,s$1,f],done_stack]]]}}
        return is_empty(done_stack)?0:[0,[0,rev(done_stack),0]]}
      var state=[0,list,0];
      return [0,state,next]}
    function interleave(param)
     {var f1=param[2],s1=param[1];
      function next(param)
       {var s1=param[3],done_stack=param[2],todo_stack=param[1];
        if(todo_stack)
         {var
           todo_stack$0=todo_stack[2],
           match=todo_stack[1],
           f2=match[2],
           s2=match[1],
           match$0=caml_call1(f2,s2);
          if(typeof match$0 === "number")
           return [0,[0,todo_stack$0,done_stack,s1]];
          else
           {if(0 === match$0[0])
             {var s2$0=match$0[1];
              return [0,[0,todo_stack$0,[0,[0,s2$0,f2],done_stack],s1]]}
            var s2$1=match$0[2],x=match$0[1];
            return [1,x,[0,todo_stack$0,[0,[0,s2$1,f2],done_stack],s1]]}}
        var _xc_=caml_call1(f1,s1);
        if(typeof _xc_ === "number")
         return done_stack?[0,[0,rev(done_stack),0,s1]]:0;
        else
         {if(0 === _xc_[0])
           {var s1$0=_xc_[1];return [0,[0,rev(done_stack),0,s1$0]]}
          var s1$1=_xc_[2],t=_xc_[1];
          return [0,[0,rev([0,t,done_stack]),0,s1$1]]}}
      var state=[0,0,0,s1];
      return [0,state,next]}
    function interleaved_cartesian_product(s1,s2)
     {return interleave
              (caml_call2
                (map$18,
                 s1,
                 function(x1)
                  {return caml_call2(map$18,s2,function(x2){return [0,x1,x2]})}))}
    function return$13(x,k){return caml_call1(k,x)}
    function bind$13(m,f,k)
     {return caml_call1
              (m,function(a){var m=caml_call1(f,a);return caml_call1(m,k)})}
    var
     map$19=
      [0,
       -198771759,
       function(m,f,k)
        {return caml_call1
                 (m,function(a){return caml_call1(k,caml_call1(f,a))})}],
     include$33=Make2([0,bind$13,map$19,return$13]),
     symbol_bind$6=include$33[1],
     symbol_map$7=include$33[2],
     Let_syntax$4=include$33[3],
     Monad_infix$4=include$33[4],
     bind$14=include$33[5],
     return$14=include$33[6],
     map$20=include$33[7],
     join$5=include$33[8],
     ignore_m$5=include$33[9],
     all$12=include$33[10],
     all_unit$6=include$33[11];
    function yield$0(e,k){return [0,[1,e,k]]}
    function of_sequence(sequence)
     {return delayed_fold
              (sequence,
               0,
               function(param,x,k,f)
                {return [0,[1,x,function(param){return caml_call2(k,0,f)}]]},
               return$14)}
    function run$0(t)
     {function init(param){return caml_call1(t,function(param){return _bn_})}
      function f(thunk){return caml_call1(thunk,0)[1]}
      return [0,init,f]}
    var
     Base_Sequence=
      [0,
       compare$35,
       equal$20,
       sexp_of_t$28,
       mem$2,
       length$2,
       is_empty$1,
       iter$5,
       fold$2,
       fold_result$2,
       fold_until$2,
       exists$2,
       for_all$2,
       count$2,
       sum$2,
       find$3,
       find_map$2,
       to_list$3,
       to_array$1,
       min_elt$2,
       max_elt$2,
       foldi$1,
       iteri$2,
       existsi$1,
       counti$1,
       findi$1,
       find_mapi$1,
       symbol_bind$5,
       symbol_map$6,
       Monad_infix$3,
       bind$12,
       return$12,
       map$18,
       join$4,
       ignore_m$4,
       all$11,
       all_unit$5,
       Let_syntax$3,
       empty,
       next,
       Step,
       unfold_step,
       unfold,
       unfold_with,
       unfold_with_and_finish,
       nth$0,
       nth_exn$0,
       folding_map$0,
       folding_mapi$0,
       mapi$2,
       filteri$0,
       filter$1,
       merge$1,
       Merge_with_duplicates_element,
       merge_with_duplicates,
       hd$0,
       hd_exn$0,
       tl$0,
       tl_eagerly_exn,
       find_exn$1,
       for_alli$1,
       append$1,
       concat$1,
       concat_map$0,
       concat_mapi$0,
       interleave,
       round_robin,
       zip$0,
       zip_full,
       reduce_exn$0,
       reduce$0,
       group$0,
       find_consecutive_duplicate$0,
       remove_consecutive_duplicates$0,
       range$1,
       init$2,
       filter_map$0,
       filter_mapi$0,
       filter_opt$0,
       sub$4,
       take$0,
       drop$0,
       drop_eagerly,
       take_while$0,
       drop_while$0,
       drop_while_option,
       split_n$0,
       chunks_exn,
       shift_right,
       shift_right_with_list,
       drop$0,
       Infix$1,
       cartesian_product$0,
       interleaved_cartesian_product,
       intersperse$0,
       cycle_list_exn,
       repeat,
       singleton,
       delayed_fold,
       fold_m,
       iter_m,
       to_list_rev,
       of_list$2,
       of_lazy$0,
       memoize,
       force_eagerly,
       bounded_length,
       length_is_bounded_by,
       [0,
        symbol_bind$6,
        symbol_map$7,
        Let_syntax$4,
        Monad_infix$4,
        bind$14,
        return$14,
        map$20,
        join$5,
        ignore_m$5,
        all$12,
        all_unit$6,
        yield$0,
        of_sequence,
        run$0],
       Expert];
    caml_register_global(1035,Base_Sequence,"Base__Sequence");
    function get$0(_xb_,_xa_){return caml_check_bound(_xb_,_xa_)[1 + _xa_]}
    function set(_w$_,_w__,_w9_)
     {caml_check_bound(_w$_,_w__)[1 + _w__] = _w9_;return 0}
    function swap$1(arr,i,j)
     {var tmp=get$0(arr,i);set(arr,i,get$0(arr,j));return set(arr,j,tmp)}
    function sort(arr,compare,left,right)
     {var _w7_=left + 1 | 0;
      if(! (right < _w7_))
       {var pos=_w7_;
        a:
        for(;;)
         {var v=get$0(arr,pos),i=pos;
          for(;;)
           {var i_next=i - 1 | 0;
            if
             (caml_call2(symbol$83,i_next,left)
              &&
              caml_call2(symbol$82,caml_call2(compare,get$0(arr,i_next),v),0))
             {set(arr,i,get$0(arr,i_next));var i=i_next;continue}
            set(arr,i,v);
            var _w8_=pos + 1 | 0;
            if(right !== pos){var pos=_w8_;continue a}
            break}
          break}}
      return 0}
    var Insertion_sort=[0,sort];
    function heapify(arr,compare,root,left,right)
     {var root$0=root;
      for(;;)
       {var
         relative_root=root$0 - left | 0,
         left_child=((2 * relative_root | 0) + left | 0) + 1 | 0,
         right_child=((2 * relative_root | 0) + left | 0) + 2 | 0,
         switch$0=0;
        if(caml_call2(symbol$79,left_child,right))
         {var _w4_=get$0(arr,root$0);
          if
           (caml_call2
             (symbol$82,caml_call2(compare,get$0(arr,left_child),_w4_),0))
           {var largest=left_child;switch$0 = 1}}
        if(! switch$0)var largest=root$0;
        var switch$1=0;
        if(caml_call2(symbol$79,right_child,right))
         {var _w5_=get$0(arr,largest);
          if
           (caml_call2
             (symbol$82,caml_call2(compare,get$0(arr,right_child),_w5_),0))
           {var largest$0=right_child;switch$1 = 1}}
        if(! switch$1)var largest$0=largest;
        var _w6_=caml_call2(symbol$80,largest$0,root$0);
        if(_w6_){swap$1(arr,root$0,largest$0);var root$0=largest$0;continue}
        return _w6_}}
    function sort$0(arr,compare,left,right)
     {var _w0_=(left + right | 0) / 2 | 0;
      if(! (_w0_ < left))
       {var i=_w0_;
        for(;;)
         {heapify(arr,compare,i,left,right);
          var _w1_=i - 1 | 0;
          if(left !== i){var i=_w1_;continue}
          break}}
      var _w2_=left + 1 | 0;
      if(! (right < _w2_))
       {var i$0=right;
        for(;;)
         {swap$1(arr,left,i$0);
          heapify(arr,compare,left,left,i$0 - 1 | 0);
          var _w3_=i$0 - 1 | 0;
          if(_w2_ !== i$0){var i$0=_w3_;continue}
          break}}
      return 0}
    var Heap_sort=[0,sort$0];
    function five_element_sort(arr,compare,m1,m2,m3,m4,m5)
     {function compare_and_swap(i,j)
       {var
         _wY_=get$0(arr,j),
         _wZ_=caml_call2(symbol$82,caml_call2(compare,get$0(arr,i),_wY_),0);
        return _wZ_?swap$1(arr,i,j):_wZ_}
      compare_and_swap(m1,m2);
      compare_and_swap(m4,m5);
      compare_and_swap(m1,m3);
      compare_and_swap(m2,m3);
      compare_and_swap(m1,m4);
      compare_and_swap(m3,m4);
      compare_and_swap(m2,m5);
      compare_and_swap(m2,m3);
      return compare_and_swap(m4,m5)}
    function intro_sort(arr,max_depth,compare,left,r$3)
     {var max_depth$0=max_depth,left$0=left;
      a:
      for(;;)
       {var len=(r$3 - left$0 | 0) + 1 | 0;
        if(caml_call2(symbol$79,len,32))
         return caml_call4(Insertion_sort[1],arr,compare,left$0,r$3);
        if(caml_call2(symbol$78,max_depth$0,0))
         return caml_call4(Heap_sort[1],arr,compare,left$0,r$3);
        var
         max_depth$1=max_depth$0 - 1 | 0,
         sixth=(r$3 - left$0 | 0) / 6 | 0,
         m1=left$0 + sixth | 0,
         m2=m1 + sixth | 0,
         m3=m2 + sixth | 0,
         m4=m3 + sixth | 0,
         m5=m4 + sixth | 0;
        five_element_sort(arr,compare,m1,m2,m3,m4,m5);
        var
         m2_val=get$0(arr,m2),
         m3_val=get$0(arr,m3),
         m4_val=get$0(arr,m4),
         match=
          caml_call2(symbol$81,caml_call2(compare,m2_val,m3_val),0)
           ?[0,m2_val,m3_val,1]
           :caml_call2(symbol$81,caml_call2(compare,m3_val,m4_val),0)
             ?[0,m3_val,m4_val,1]
             :[0,m2_val,m4_val,0],
         middle_sorted=match[3],
         pivot2=match[2],
         pivot1=match[1],
         l$0=left$0,
         p$1=left$0,
         r$2=r$3;
        b:
        for(;;)
         {if(caml_call2(symbol$82,p$1,r$2))
           {intro_sort(arr,max_depth$1,compare,left$0,l$0 - 1 | 0);
            if(1 - middle_sorted)intro_sort(arr,max_depth$1,compare,l$0,r$2);
            var left$1=r$2 + 1 | 0,max_depth$0=max_depth$1,left$0=left$1;
            continue a}
          var pv=get$0(arr,p$1);
          if(caml_call2(symbol$78,caml_call2(compare,pv,pivot1),0))
           {swap$1(arr,p$1,l$0);
            var p=p$1 + 1 | 0,l=l$0 + 1 | 0,l$0=l,p$1=p;
            continue}
          if(caml_call2(symbol$82,caml_call2(compare,pv,pivot2),0))
           {var r=r$2;
            for(;;)
             {if
               (caml_call2(symbol$82,r,p$1)
                &&
                caml_call2
                 (symbol$82,caml_call2(compare,get$0(arr,r),pivot2),0))
               {var r$0=r - 1 | 0,r=r$0;continue}
              swap$1(arr,r,p$1);
              var r$1=r - 1 | 0,r$2=r$1;
              continue b}}
          var p$0=p$1 + 1 | 0,p$1=p$0;
          continue}}}
    var log10_of_3=caml_log10_float(3.);
    function sort$1(arr,compare,left,right)
     {var
       x=(right - left | 0) + 1 | 0,
       heap_sort_switch_depth=caml_log10_float(x) / log10_of_3 | 0;
      return intro_sort(arr,heap_sort_switch_depth,compare,left,right)}
    var Intro_sort=[0,sort$1,five_element_sort];
    function sort$2(pos,len,arr,compare)
     {var
       match=get_pos_len_exn(pos,len,0,arr.length - 1),
       len$0=match[2],
       pos$0=match[1];
      return caml_call4
              (Intro_sort[1],arr,compare,pos$0,(pos$0 + len$0 | 0) - 1 | 0)}
    function to_array$2(t){return t}
    function is_empty$2(t){return caml_call2(symbol$81,t.length - 1,0)}
    function is_sorted$0(t,compare)
     {var i$1=t.length - 1 - 1 | 0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,1))return 1;
        var
         _wW_=i - 1 | 0,
         _wV_=caml_check_bound(t,i)[1 + i],
         _wX_=
          caml_call2
           (symbol$79,
            caml_call2(compare,caml_check_bound(t,_wW_)[1 + _wW_],_wV_),
            0);
        if(_wX_){var i$0=i - 1 | 0,i=i$0;continue}
        return _wX_}}
    function is_sorted_strictly$0(t,compare)
     {var i$1=t.length - 1 - 1 | 0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,1))return 1;
        var
         _wT_=i - 1 | 0,
         _wS_=caml_check_bound(t,i)[1 + i],
         _wU_=
          caml_call2
           (symbol$78,
            caml_call2(compare,caml_check_bound(t,_wT_)[1 + _wT_],_wS_),
            0);
        if(_wU_){var i$0=i - 1 | 0,i=i$0;continue}
        return _wU_}}
    function folding_map$1(t,init,f)
     {var acc=[0,init];
      return map
              (t,
               function(x)
                {var match=caml_call2(f,acc[1],x),y=match[2],new_acc=match[1];
                 acc[1] = new_acc;
                 return y})}
    function fold_map$0(t,init,f)
     {var
       acc=[0,init],
       result=
        map
         (t,
          function(x)
           {var match=caml_call2(f,acc[1],x),y=match[2],new_acc=match[1];
            acc[1] = new_acc;
            return y});
      return [0,acc[1],result]}
    function fold_result$3(t,init,f){return fold_result(fold,init,f,t)}
    function fold_until$3(t,init,f)
     {return function(_wR_){return fold_until(fold,init,f,_wR_,t)}}
    function count$3(t,f){return count(fold,t,f)}
    function sum$3(m,t,f){return sum(fold,m,t,f)}
    function min_elt$3(t,compare){return min_elt(fold,t,compare)}
    function max_elt$3(t,compare){return max_elt(fold,t,compare)}
    function foldi$2(t,ac,f)
     {var i=0,ac$0=ac;
      for(;;)
       {if(caml_call2(symbol$81,i,t.length - 1))return ac$0;
        var
         ac$1=caml_call3(f,i,ac$0,caml_check_bound(t,i)[1 + i]),
         i$0=i + 1 | 0,
         i=i$0,
         ac$0=ac$1;
        continue}}
    function folding_mapi$1(t,init,f)
     {var acc=[0,init];
      return mapi
              (t,
               function(i,x)
                {var
                  match=caml_call3(f,i,acc[1],x),
                  y=match[2],
                  new_acc=match[1];
                 acc[1] = new_acc;
                 return y})}
    function fold_mapi$0(t,init,f)
     {var
       acc=[0,init],
       result=
        mapi
         (t,
          function(i,x)
           {var match=caml_call3(f,i,acc[1],x),y=match[2],new_acc=match[1];
            acc[1] = new_acc;
            return y});
      return [0,acc[1],result]}
    function counti$2(t,f)
     {return foldi$2
              (t,
               0,
               function(idx,count,a)
                {return caml_call2(f,idx,a)?count + 1 | 0:count})}
    function concat_map$1(t,f)
     {return caml_call1(concat,caml_call1(to_list,map(t,f)))}
    function concat_mapi$1(t,f)
     {return caml_call1(concat,caml_call1(to_list,mapi(t,f)))}
    function rev_inplace(t)
     {var i=[0,0],j=[0,t.length - 1 - 1 | 0];
      for(;;)
       {if(caml_call2(symbol$78,i[1],j[1]))
         {swap(t,i[1],j[1]);incr(i);decr(j);continue}
        return 0}}
    function of_list_rev(l)
     {if(l)
       {var
         l$0=l[2],
         a=l[1],
         len=1 + caml_call1(length,l$0) | 0,
         t=caml_make_vect(len,a),
         r=[0,l$0],
         _wO_=len - 2 | 0;
        if(! (_wO_ < 0))
         {var i=_wO_;
          for(;;)
           {var _wP_=r[1];
            if(! _wP_)throw [0,Assert_failure,_bo_];
            var l$1=_wP_[2],a$0=_wP_[1];
            caml_check_bound(t,i)[1 + i] = a$0;
            r[1] = l$1;
            var _wQ_=i - 1 | 0;
            if(0 !== i){var i=_wQ_;continue}
            break}}
        return t}
      return [0]}
    function of_list_map(xs,f)
     {if(xs)
       {var
         tl=xs[2],
         hd=xs[1],
         _wN_=caml_call1(f,hd),
         a=caml_make_vect(1 + caml_call1(length,tl) | 0,_wN_),
         i=1,
         param=tl;
        for(;;)
         {if(param)
           {var tl$0=param[2],hd$0=param[1];
            a[1 + i] = caml_call1(f,hd$0);
            var i$0=i + 1 | 0,i=i$0,param=tl$0;
            continue}
          return a}}
      return [0]}
    function of_list_mapi(xs,f)
     {if(xs)
       {var
         tl=xs[2],
         hd=xs[1],
         _wM_=caml_call2(f,0,hd),
         a=caml_make_vect(1 + caml_call1(length,tl) | 0,_wM_),
         i=1,
         param=tl;
        for(;;)
         {if(param)
           {var tl$0=param[2],hd$0=param[1];
            a[1 + i] = caml_call2(f,i,hd$0);
            var i$0=i + 1 | 0,i=i$0,param=tl$0;
            continue}
          return a}}
      return [0]}
    function of_list_rev_map(xs,f)
     {var t=of_list_map(xs,f);rev_inplace(t);return t}
    function of_list_rev_mapi(xs,f)
     {var t=of_list_mapi(xs,f);rev_inplace(t);return t}
    function filter_mapi$1(t,f)
     {var r=[0,[0]],k=[0,0],_wK_=t.length - 1 - 1 | 0,_wJ_=0;
      if(! (_wK_ < 0))
       {var i=_wJ_;
        for(;;)
         {var match=caml_call2(f,i,t[1 + i]);
          if(match)
           {var a=match[1];
            if(caml_call2(symbol$81,k[1],0))
             r[1] = caml_make_vect(t.length - 1,a);
            r[1][1 + k[1]] = a;
            incr(k)}
          var _wL_=i + 1 | 0;
          if(_wK_ !== i){var i=_wL_;continue}
          break}}
      return caml_call2(symbol$81,k[1],t.length - 1)
              ?r[1]
              :caml_call2(symbol$82,k[1],0)?caml_call3(sub$0,r[1],0,k[1]):[0]}
    function filter_map$1(t,f)
     {return filter_mapi$1(t,function(i,a){return caml_call1(f,a)})}
    function filter_opt$1(t)
     {return filter_map$1(t,function(_wI_){return _wI_})}
    function iter2_exn$0(t1,t2,f)
     {if(caml_call2(symbol$80,t1.length - 1,t2.length - 1))
       caml_call1(invalid_arg$0,cst_Array_iter2_exn);
      return iteri
              (t1,
               function(i,x1)
                {return caml_call2(f,x1,caml_check_bound(t2,i)[1 + i])})}
    function map2_exn$0(t1,t2,f)
     {var len=t1.length - 1;
      if(caml_call2(symbol$80,t2.length - 1,len))
       caml_call1(invalid_arg$0,cst_Array_map2_exn);
      return caml_call2
              (init,
               len,
               function(i)
                {var _wH_=caml_check_bound(t2,i)[1 + i];
                 return caml_call2(f,caml_check_bound(t1,i)[1 + i],_wH_)})}
    function fold2_exn$0(t1,t2,init,f)
     {if(caml_call2(symbol$80,t1.length - 1,t2.length - 1))
       caml_call1(invalid_arg$0,cst_Array_fold2_exn);
      return foldi$2
              (t1,
               init,
               function(i,ac,x)
                {return caml_call3(f,ac,x,caml_check_bound(t2,i)[1 + i])})}
    function filter$2(t,f)
     {return filter_map$1(t,function(x){return caml_call1(f,x)?[0,x]:0})}
    function filteri$1(t,f)
     {return filter_mapi$1(t,function(i,x){return caml_call2(f,i,x)?[0,x]:0})}
    function exists$3(t,f)
     {var i$1=t.length - 1 - 1 | 0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,0))return 0;
        var _wG_=caml_call1(f,caml_check_bound(t,i)[1 + i]);
        if(_wG_)return _wG_;
        var i$0=i - 1 | 0,i=i$0;
        continue}}
    function existsi$2(t,f)
     {var i$1=t.length - 1 - 1 | 0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,0))return 0;
        var _wF_=caml_call2(f,i,caml_check_bound(t,i)[1 + i]);
        if(_wF_)return _wF_;
        var i$0=i - 1 | 0,i=i$0;
        continue}}
    function mem$3(t,a,equal){return exists$3(t,caml_call1(equal,a))}
    function for_all$3(t,f)
     {var i$1=t.length - 1 - 1 | 0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,0))return 1;
        var _wE_=caml_call1(f,caml_check_bound(t,i)[1 + i]);
        if(_wE_){var i$0=i - 1 | 0,i=i$0;continue}
        return _wE_}}
    function for_alli$2(t,f)
     {var i$1=t.length - 1 - 1 | 0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,0))return 1;
        var _wD_=caml_call2(f,i,caml_check_bound(t,i)[1 + i]);
        if(_wD_){var i$0=i - 1 | 0,i=i$0;continue}
        return _wD_}}
    function exists2_exn$0(t1,t2,f)
     {var len=t1.length - 1;
      if(caml_call2(symbol$80,t2.length - 1,len))
       caml_call1(invalid_arg$0,cst_Array_exists2_exn);
      var i$1=len - 1 | 0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,0))return 0;
        var
         _wB_=caml_check_bound(t2,i)[1 + i],
         _wC_=caml_call2(f,caml_check_bound(t1,i)[1 + i],_wB_);
        if(_wC_)return _wC_;
        var i$0=i - 1 | 0,i=i$0;
        continue}}
    function for_all2_exn$0(t1,t2,f)
     {var len=t1.length - 1;
      if(caml_call2(symbol$80,t2.length - 1,len))
       caml_call1(invalid_arg$0,cst_Array_for_all2_exn);
      var i$1=len - 1 | 0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,0))return 1;
        var
         _wz_=caml_check_bound(t2,i)[1 + i],
         _wA_=caml_call2(f,caml_check_bound(t1,i)[1 + i],_wz_);
        if(_wA_){var i$0=i - 1 | 0,i=i$0;continue}
        return _wA_}}
    function equal_array$1(equal,t1,t2)
     {var _wy_=caml_call2(symbol$81,t1.length - 1,t2.length - 1);
      return _wy_?for_all2_exn$0(t1,t2,equal):_wy_}
    function map_inplace(t,f)
     {var _wv_=t.length - 1 - 1 | 0,_wu_=0;
      if(! (_wv_ < 0))
       {var i=_wu_;
        for(;;)
         {var _ww_=caml_call1(f,caml_check_bound(t,i)[1 + i]);
          caml_check_bound(t,i)[1 + i] = _ww_;
          var _wx_=i + 1 | 0;
          if(_wv_ !== i){var i=_wx_;continue}
          break}}
      return 0}
    function findi$2(t,f)
     {var length=t.length - 1,i=0;
      for(;;)
       {if(caml_call2(symbol$83,i,length))return 0;
        if(caml_call2(f,i,caml_check_bound(t,i)[1 + i]))
         return [0,[0,i,caml_check_bound(t,i)[1 + i]]];
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    var not_found$3=[0,Not_found_s,_bp_];
    function findi_exn(t,f)
     {var match=findi$2(t,f);
      if(match){var x=match[1];return x}
      throw not_found$3}
    var not_found$4=[0,Not_found_s,_bq_];
    function find_exn$2(t,f)
     {var match=findi$2(t,function(i,x){return caml_call1(f,x)});
      if(match){var match$0=match[1],x=match$0[2];return x}
      throw not_found$4}
    function find$4(t,f)
     {function _wt_(param){var x=param[2];return x}
      return caml_call2
              (map$15,findi$2(t,function(i,x){return caml_call1(f,x)}),_wt_)}
    function find_map$3(t,f)
     {var length=t.length - 1,i=0;
      for(;;)
       {if(caml_call2(symbol$83,i,length))return 0;
        var res=caml_call1(f,caml_check_bound(t,i)[1 + i]);
        if(res)return res;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    var not_found$5=[0,Not_found_s,_br_];
    function find_map_exn$0(t,f)
     {var match=find_map$3(t,f);
      if(match){var x=match[1];return x}
      throw not_found$5}
    function find_mapi$2(t,f)
     {var length=t.length - 1,i=0;
      for(;;)
       {if(caml_call2(symbol$83,i,length))return 0;
        var res=caml_call2(f,i,caml_check_bound(t,i)[1 + i]);
        if(res)return res;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    var not_found$6=[0,Not_found_s,_bs_];
    function find_mapi_exn$0(t,f)
     {var match=find_mapi$2(t,f);
      if(match){var x=match[1];return x}
      throw not_found$6}
    function find_consecutive_duplicate$1(t,equal)
     {var n=t.length - 1;
      if(caml_call2(symbol$79,n,1))return 0;
      var result=[0,0],i=[0,1],prev=[0,caml_check_bound(t,0)[1]];
      for(;;)
       {if(caml_call2(symbol$78,i[1],n))
         {var _ws_=i[1],cur=caml_check_bound(t,_ws_)[1 + _ws_];
          if(caml_call2(equal,cur,prev[1]))
           {result[1] = [0,[0,prev[1],cur]];i[1] = n}
          else
           {prev[1] = cur;incr(i)}
          continue}
        return result[1]}}
    function reduce$1(t,f)
     {if(caml_call2(symbol$81,t.length - 1,0))return 0;
      var r=[0,caml_check_bound(t,0)[1]],_wp_=t.length - 1 - 1 | 0,_wo_=1;
      if(! (_wp_ < 1))
       {var i=_wo_;
        for(;;)
         {var _wq_=caml_check_bound(t,i)[1 + i];
          r[1] = caml_call2(f,r[1],_wq_);
          var _wr_=i + 1 | 0;
          if(_wp_ !== i){var i=_wr_;continue}
          break}}
      return [0,r[1]]}
    function reduce_exn$1(t,f)
     {var match=reduce$1(t,f);
      if(match){var v=match[1];return v}
      return caml_call1(invalid_arg$0,cst_Array_reduce_exn)}
    function random_element_exn$0(opt,t)
     {if(opt)var sth=opt[1],random_state=sth;else var random_state=_R_[1];
      if(is_empty$2(t))
       return caml_call1(failwith$0,cst_Array_random_element_exn_e);
      var _wn_=caml_call2(_R_[6],random_state,t.length - 1);
      return caml_check_bound(t,_wn_)[1 + _wn_]}
    function random_element$0(opt,t)
     {if(opt)var sth=opt[1],random_state=sth;else var random_state=_R_[1];
      try
       {var _wl_=[0,random_element_exn$0([0,random_state],t)];return _wl_}
      catch(_wm_){return 0}}
    function zip$1(t1,t2)
     {return caml_call2(symbol$80,t1.length - 1,t2.length - 1)
              ?0
              :[0,map2_exn$0(t1,t2,function(x1,x2){return [0,x1,x2]})]}
    function zip_exn$0(t1,t2)
     {return caml_call2(symbol$80,t1.length - 1,t2.length - 1)
              ?caml_call1(failwith$0,cst_Array_zip_exn)
              :map2_exn$0(t1,t2,function(x1,x2){return [0,x1,x2]})}
    function unzip$1(t)
     {var n=t.length - 1;
      if(caml_call2(symbol$81,n,0))return [0,[0],[0]];
      var
       match=caml_check_bound(t,0)[1],
       y=match[2],
       x=match[1],
       res1=caml_make_vect(n,x),
       res2=caml_make_vect(n,y),
       _wj_=n - 1 | 0,
       _wi_=1;
      if(! (_wj_ < 1))
       {var i=_wi_;
        for(;;)
         {var
           match$0=caml_check_bound(t,i)[1 + i],
           y$0=match$0[2],
           x$0=match$0[1];
          caml_check_bound(res1,i)[1 + i] = x$0;
          caml_check_bound(res2,i)[1 + i] = y$0;
          var _wk_=i + 1 | 0;
          if(_wj_ !== i){var i=_wk_;continue}
          break}}
      return [0,res1,res2]}
    function sorted_copy(t,compare)
     {var t1=caml_call1(copy,t);sort$2(0,0,t1,compare);return t1}
    function partitioni_tf(t,f)
     {var
       both=mapi(t,function(i,x){return caml_call2(f,i,x)?[0,x]:[1,x]}),
       trues=
        filter_map$1
         (both,
          function(param)
           {if(0 === param[0]){var x=param[1];return [0,x]}return 0}),
       falses=
        filter_map$1
         (both,
          function(param)
           {if(0 === param[0])return 0;var x=param[1];return [0,x]});
      return [0,trues,falses]}
    function partition_tf$0(t,f)
     {return partitioni_tf(t,function(i,x){return caml_call1(f,x)})}
    function last$0(t)
     {var _wh_=t.length - 1 - 1 | 0;return caml_check_bound(t,_wh_)[1 + _wh_]}
    function to_sequence_mutable(t)
     {return [0,
              0,
              function(i)
               {return caml_call2(symbol$83,i,t.length - 1)
                        ?0
                        :[1,caml_check_bound(t,i)[1 + i],i + 1 | 0]}]}
    function to_sequence(t){return to_sequence_mutable(caml_call1(copy,t))}
    function cartesian_product$1(t1,t2)
     {if(! is_empty$2(t1) && ! is_empty$2(t2))
       {var
         n1=t1.length - 1,
         n2=t2.length - 1,
         _v9_=caml_check_bound(t2,0)[1],
         t=caml_make_vect(caml_mul(n1,n2),[0,caml_check_bound(t1,0)[1],_v9_]),
         r=[0,0],
         _v$_=n1 - 1 | 0,
         _v__=0;
        if(! (_v$_ < 0))
         {var i1=_v__;
          for(;;)
           {var _wb_=n2 - 1 | 0,_wa_=0;
            if(! (_wb_ < 0))
             {var i2=_wa_;
              for(;;)
               {var
                 _wd_=caml_check_bound(t2,i2)[1 + i2],
                 _we_=[0,caml_check_bound(t1,i1)[1 + i1],_wd_],
                 _wf_=r[1];
                caml_check_bound(t,_wf_)[1 + _wf_] = _we_;
                incr(r);
                var _wg_=i2 + 1 | 0;
                if(_wb_ !== i2){var i2=_wg_;continue}
                break}}
            var _wc_=i1 + 1 | 0;
            if(_v$_ !== i1){var i1=_wc_;continue}
            break}}
        return t}
      return [0]}
    function transpose$0(tt)
     {if(caml_call2(symbol$81,tt.length - 1,0))return [0,[0]];
      var width=tt.length - 1,depth=caml_check_bound(tt,0)[1].length - 1;
      return exists$3
               (tt,
                function(t){return caml_call2(symbol$80,t.length - 1,depth)})
              ?0
              :[0,
                caml_call2
                 (init,
                  depth,
                  function(d)
                   {return caml_call2
                            (init,
                             width,
                             function(w)
                              {return caml_check_bound(caml_check_bound(tt,w)[1 + w],d)
                                       [1 + d]})})]}
    function transpose_exn$0(tt)
     {var match=transpose$0(tt);
      if(match){var tt$0=match[1];return tt$0}
      return caml_call1(invalid_arg$0,cst_Array_transpose_exn)}
    function get$1(_v8_,_v7_){return caml_check_bound(_v8_,_v7_)[1 + _v7_]}
    function length$3(_v6_){return _v6_.length - 1}
    var
     include$34=_a9_([0,get$1,length$3]),
     binary_search$0=include$34[1],
     binary_search_segmented$0=include$34[2];
    function length$4(_v5_){return _v5_.length - 1}
    function create_like(len,t)
     {if(caml_call2(symbol$81,len,0))return [0];
      if(caml_call2(symbol$82,t.length - 1,0))
       return caml_make_vect(len,caml_check_bound(t,0)[1]);
      throw [0,Assert_failure,_bt_]}
    var
     include$35=_a$_([0,create_like,length$4,blit]),
     blit$1=include$35[1],
     blito=include$35[2],
     unsafe_blit$1=include$35[3],
     sub$5=include$35[4],
     subo=include$35[5];
    function invariant$5(invariant_a,t){return iter(t,invariant_a)}
    function unsafe_truncate(t,len)
     {var
       _v1_=caml_call2(symbol$79,len,0),
       _v2_=_v1_ || caml_call2(symbol$82,len,t.length - 1);
      if(_v2_)
       raise_s
        (caml_call2
          (message,
           cst_Array_unsafe_truncate_got_,
           [0,[0,cst_len,caml_call1(sexp_of_t$4,len)],0]));
      var
       _v3_=caml_call2(symbol$78,len,t.length - 1),
       _v4_=_v3_?caml_obj_truncate(t,len):_v3_;
      return _v4_}
    var
     _bu_=[0,[0,Insertion_sort,Heap_sort,Intro_sort]],
     Base_Array=
      [0,
       compare$17,
       t_of_sexp$11,
       sexp_of_t$11,
       binary_search$0,
       binary_search_segmented$0,
       mem$3,
       function(_v0_){return _v0_.length - 1},
       is_empty$2,
       iter,
       fold,
       fold_result$3,
       fold_until$3,
       exists$3,
       for_all$3,
       count$3,
       sum$3,
       find$4,
       find_map$3,
       to_list,
       to_array$2,
       min_elt$3,
       max_elt$3,
       invariant$5,
       max_length$0,
       create,
       init,
       make_matrix,
       append,
       concat,
       copy,
       fill,
       blit$1,
       blito,
       unsafe_blit$1,
       sub$5,
       subo,
       of_list,
       map,
       folding_map$1,
       folding_mapi$1,
       fold_map$0,
       fold_mapi$0,
       iteri,
       mapi,
       foldi$2,
       fold_right,
       sort$2,
       stable_sort,
       is_sorted$0,
       is_sorted_strictly$0,
       concat_map$1,
       concat_mapi$1,
       partition_tf$0,
       partitioni_tf,
       cartesian_product$1,
       transpose$0,
       transpose_exn$0,
       filter_opt$1,
       filter_map$1,
       filter_mapi$1,
       for_alli$2,
       existsi$2,
       counti$2,
       iter2_exn$0,
       map2_exn$0,
       fold2_exn$0,
       for_all2_exn$0,
       exists2_exn$0,
       filter$2,
       filteri$1,
       swap,
       rev_inplace,
       of_list_rev,
       of_list_map,
       of_list_mapi,
       of_list_rev_map,
       of_list_rev_mapi,
       map_inplace,
       find_exn$2,
       find_map_exn$0,
       findi$2,
       findi_exn,
       find_mapi$2,
       find_mapi_exn$0,
       find_consecutive_duplicate$1,
       reduce$1,
       reduce_exn$1,
       permute,
       random_element$0,
       random_element_exn$0,
       zip$1,
       zip_exn$0,
       unzip$1,
       sorted_copy,
       last$0,
       equal_array$1,
       unsafe_truncate,
       to_sequence,
       to_sequence_mutable,
       _bu_];
    caml_register_global(1036,Base_Array,"Base__Array");
    var
     Base_Sys=
      [0,
       get_argv,
       argv,
       interactive,
       os_type,
       unix,
       win32,
       cygwin,
       backend_type,
       word_size_in_bits,
       num_bits,
       big_endian,
       max_length,
       max_length$0,
       runtime_variant,
       runtime_parameters,
       ocaml_version,
       enable_runtime_warnings,
       runtime_warnings_enabled,
       getenv,
       getenv_exn];
    caml_register_global(1037,Base_Sys,"Base__Sys");
    function invariant$6(t)
     {var _vZ_=Stdlib_obj[15];
      if(caml_call2(symbol$80,caml_obj_tag(t),_vZ_))return 0;
      throw [0,Assert_failure,_bv_]}
    function length$5(_vY_){return _vY_.length - 1}
    function swap$2(t,i,j){return swap(t,i,j)}
    function sexp_of_t$30(t)
     {return [0,
              concat$0
               (_bx_,
                [0,
                 cst_Obj_array_t_of_length,
                 [0,caml_call1(to_string,t.length - 1),_bw_]])]}
    function create_zero(len){return caml_make_vect(len,0)}
    function create$3(len,x)
     {var _vU_=Stdlib_obj[14];
      if(caml_call2(symbol$80,caml_obj_tag(x),_vU_))
       return caml_make_vect(len,x);
      var t=caml_make_vect(len,0),_vW_=len - 1 | 0,_vV_=0;
      if(! (_vW_ < 0))
       {var i=_vV_;
        for(;;)
         {t[1 + i] = x;
          var _vX_=i + 1 | 0;
          if(_vW_ !== i){var i=_vX_;continue}
          break}}
      return t}
    var empty$0=[0];
    function get$2(t,i){return caml_check_bound(t,i)[1 + i]}
    function unsafe_get(t,i){return t[1 + i]}
    function unsafe_set_with_caml_modify(t,i,obj){t[1 + i] = obj;return 0}
    function unsafe_set_int_assuming_curren(t,i,int$0)
     {t[1 + i] = int$0;return 0}
    function set$0(t,i,obj)
     {var old_obj=get$2(t,i);
      if(typeof old_obj === "number" && typeof obj === "number")
       return unsafe_set_int_assuming_curren(t,i,obj);
      var _vT_=1 - (old_obj === obj?1:0);
      return _vT_?unsafe_set_with_caml_modify(t,i,obj):_vT_}
    function unsafe_set(t,i,obj)
     {var old_obj=t[1 + i];
      if(typeof old_obj === "number" && typeof obj === "number")
       return unsafe_set_int_assuming_curren(t,i,obj);
      var _vS_=1 - (old_obj === obj?1:0);
      return _vS_?unsafe_set_with_caml_modify(t,i,obj):_vS_}
    function unsafe_set_omit_phys_equal_che(t,i,obj)
     {var old_obj=t[1 + i];
      if(typeof old_obj === "number" && typeof obj === "number")
       return unsafe_set_int_assuming_curren(t,i,obj);
      return unsafe_set_with_caml_modify(t,i,obj)}
    function singleton$0(obj){return create$3(1,obj)}
    function unsafe_set_assuming_currently_(t,i,obj)
     {return typeof obj === "number"
              ?unsafe_set_int_assuming_curren(t,i,obj)
              :unsafe_set_with_caml_modify(t,i,obj)}
    function unsafe_set_int(t,i,int$0)
     {var old_obj=t[1 + i];
      return typeof old_obj === "number"
              ?unsafe_set_int_assuming_curren(t,i,int$0)
              :unsafe_set_with_caml_modify(t,i,int$0)}
    function unsafe_clear_if_pointer(t,i)
     {var old_obj=t[1 + i],_vR_=1 - (typeof old_obj === "number"?1:0);
      return _vR_?unsafe_set_with_caml_modify(t,i,0):_vR_}
    function unsafe_blit$2(src,src_pos,dst,dst_pos,len)
     {if(caml_call2(symbol$78,dst_pos,src_pos))
       {var _vN_=len - 1 | 0,_vM_=0;
        if(! (_vN_ < 0))
         {var i=_vM_;
          for(;;)
           {unsafe_set(dst,dst_pos + i | 0,src[1 + (src_pos + i | 0)]);
            var _vO_=i + 1 | 0;
            if(_vN_ !== i){var i=_vO_;continue}
            break}}
        return 0}
      var _vP_=len - 1 | 0;
      if(! (_vP_ < 0))
       {var i$0=_vP_;
        for(;;)
         {unsafe_set(dst,dst_pos + i$0 | 0,src[1 + (src_pos + i$0 | 0)]);
          var _vQ_=i$0 - 1 | 0;
          if(0 !== i$0){var i$0=_vQ_;continue}
          break}}
      return 0}
    var
     include$36=_bb_([0,length$5,create_zero,unsafe_blit$2]),
     blit$2=include$36[1],
     blito$0=include$36[2],
     unsafe_blit$3=include$36[3],
     sub$6=include$36[4],
     subo$0=include$36[5];
    function copy$3(src)
     {var dst=caml_make_vect(src.length - 1,0);
      caml_call6(blito$0,src,0,0,dst,0,0);
      return dst}
    var
     unsafe_truncate$0=caml_obj_truncate,
     Base_Obj_array=
      [0,
       sexp_of_t$30,
       blit$2,
       blito$0,
       unsafe_blit$3,
       sub$6,
       subo$0,
       invariant$6,
       create$3,
       create_zero,
       copy$3,
       singleton$0,
       empty$0,
       length$5,
       get$2,
       unsafe_get,
       set$0,
       unsafe_set,
       swap$2,
       unsafe_set_assuming_currently_,
       unsafe_set_int_assuming_curren,
       unsafe_set_int,
       unsafe_set_omit_phys_equal_che,
       unsafe_clear_if_pointer,
       unsafe_truncate$0];
    caml_register_global(1039,Base_Obj_array,"Base__Obj_array");
    function unsafe_create_uninitialized(len){return caml_make_vect(len,0)}
    function create_obj_array(len){return caml_make_vect(len,0)}
    function create$4(len,x){return create$3(len,x)}
    function singleton$1(x){return singleton$0(x)}
    function swap$3(t,i,j){return swap$2(t,i,j)}
    function get$3(arr,i){return get$2(arr,i)}
    function set$1(arr,i,x){return set$0(arr,i,x)}
    function unsafe_get$0(arr,i){return arr[1 + i]}
    function unsafe_set$0(arr,i,x){return unsafe_set(arr,i,x)}
    function unsafe_set_int$0(arr,i,x){return unsafe_set_int(arr,i,x)}
    function unsafe_set_int_assuming_curren$0(arr,i,x)
     {return unsafe_set_int_assuming_curren(arr,i,x)}
    function unsafe_set_assuming_currently_$0(arr,i,x)
     {return unsafe_set_assuming_currently_(arr,i,x)}
    function unsafe_set_omit_phys_equal_che$0(t,i,x)
     {return unsafe_set_omit_phys_equal_che(t,i,x)}
    function invariant$7(t)
     {var _vL_=Stdlib_obj[15];
      if(caml_call2(symbol$80,caml_obj_tag(t),_vL_))return 0;
      throw [0,Assert_failure,_by_]}
    function init$3(l,f)
     {if(caml_call2(symbol$78,l,0))
       return caml_call1(invalid_arg$0,cst_Uniform_array_init);
      var res=caml_make_vect(l,0),_vJ_=l - 1 | 0,_vI_=0;
      if(! (_vJ_ < 0))
       {var i=_vI_;
        for(;;)
         {unsafe_set$0(res,i,caml_call1(f,i));
          var _vK_=i + 1 | 0;
          if(_vJ_ !== i){var i=_vK_;continue}
          break}}
      return res}
    function of_array(arr)
     {return init$3(arr.length - 1,function(_vH_){return arr[1 + _vH_]})}
    function map$21(a,f)
     {return init$3(a.length - 1,function(i){return caml_call1(f,a[1 + i])})}
    function iter$6(a,f)
     {var _vF_=a.length - 1 - 1 | 0,_vE_=0;
      if(! (_vF_ < 0))
       {var i=_vE_;
        for(;;)
         {caml_call1(f,a[1 + i]);
          var _vG_=i + 1 | 0;
          if(_vF_ !== i){var i=_vG_;continue}
          break}}
      return 0}
    function to_list$4(t)
     {return init$1(t.length - 1,function(_vD_){return get$3(t,_vD_)})}
    function of_list$3(l)
     {var len=caml_call1(length,l),res=caml_make_vect(len,0);
      iteri$0(l,function(i,x){return set$1(res,i,x)});
      return res}
    function to_array$3(t)
     {return caml_call2(init,t.length - 1,function(i){return t[1 + i]})}
    function exists$4(t,f)
     {var i$1=t.length - 1 - 1 | 0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,0))return 0;
        var _vC_=caml_call1(f,t[1 + i]);
        if(_vC_)return _vC_;
        var i$0=i - 1 | 0,i=i$0;
        continue}}
    function map2_exn$1(t1,t2,f)
     {var len=t1.length - 1;
      if(caml_call2(symbol$80,t2.length - 1,len))
       caml_call1(invalid_arg$0,cst_Array_map2_exn$0);
      return init$3(len,function(i){return caml_call2(f,t1[1 + i],t2[1 + i])})}
    var
     include$83=
      Of_sexpable1([0,t_of_sexp$11,sexp_of_t$11],[0,to_array$3,of_array]),
     t_of_sexp$23=include$83[1],
     sexp_of_t$31=include$83[2];
    function create_like$0(len,t)
     {if(caml_call2(symbol$81,len,0))return empty$0;
      if(caml_call2(symbol$82,t.length - 1,0))return create$4(len,get$3(t,0));
      throw [0,Assert_failure,_bz_]}
    var
     include$37=_a$_([0,create_like$0,length$5,unsafe_blit$3]),
     blit$3=include$37[1],
     blito$1=include$37[2],
     unsafe_blit$4=include$37[3],
     sub$7=include$37[4],
     subo$1=include$37[5];
    function fold$3(t,init,f)
     {var r=[0,init],_vA_=t.length - 1 - 1 | 0,_vz_=0;
      if(! (_vA_ < 0))
       {var i=_vz_;
        for(;;)
         {r[1] = caml_call2(f,r[1],t[1 + i]);
          var _vB_=i + 1 | 0;
          if(_vA_ !== i){var i=_vB_;continue}
          break}}
      return r[1]}
    function min_elt$4(t,compare){return min_elt(fold$3,t,compare)}
    function max_elt$4(t,compare){return max_elt(fold$3,t,compare)}
    var
     Base_Uniform_array=
      [0,
       t_of_sexp$23,
       sexp_of_t$31,
       invariant$7,
       empty$0,
       create$4,
       singleton$1,
       init$3,
       length$5,
       get$3,
       unsafe_get$0,
       set$1,
       unsafe_set$0,
       swap$3,
       unsafe_set_omit_phys_equal_che$0,
       map$21,
       iter$6,
       of_array,
       to_array$3,
       of_list$3,
       to_list$4,
       blit$3,
       blito$1,
       unsafe_blit$4,
       sub$7,
       subo$1,
       copy$3,
       unsafe_truncate$0,
       unsafe_create_uninitialized,
       create_obj_array,
       unsafe_set_assuming_currently_$0,
       unsafe_set_int_assuming_curren$0,
       unsafe_set_int$0,
       unsafe_clear_if_pointer,
       exists$4,
       map2_exn$1,
       min_elt$4,
       max_elt$4];
    caml_register_global(1040,Base_Uniform_array,"Base__Uniform_array");
    var
     succ$0=Stdlib_uchar[5],
     pred=Stdlib_uchar[6],
     is_valid=Stdlib_uchar[7],
     is_char=Stdlib_uchar[11],
     unsafe_to_char=Stdlib_uchar[14],
     unsafe_of_int$0=Stdlib_uchar[9],
     of_int$1=Stdlib_uchar[8],
     to_int$2=Stdlib_uchar[10],
     of_char=Stdlib_uchar[12],
     compare$36=Stdlib_uchar[16],
     equal$21=Stdlib_uchar[15],
     min_value$1=Stdlib_uchar[1],
     max_value$1=Stdlib_uchar[2],
     include$38=
      [0,
       succ$0,
       pred,
       is_valid,
       is_char,
       unsafe_to_char,
       unsafe_of_int$0,
       of_int$1,
       to_int$2,
       of_char,
       compare$36,
       equal$21,
       min_value$1,
       max_value$1];
    caml_register_global(1041,include$38,"Base__Uchar0");
    function hash_fold_t$19(state,t)
     {return runtime.Base_internalhash_fold_int(state,caml_call1(to_int$2,t))}
    function hash$5(t){return run(0,hash_fold_t$19,t)}
    function to_string$7(t)
     {return caml_call2(sprintf,_bA_,caml_call1(to_int$2,t))}
    function sexp_of_t$32(t){return [0,to_string$7(t)]}
    function t_of_sexp$24(sexp)
     {if(0 === sexp[0])
       {var s=sexp[1];
        try
         {var
           _vw_=function(i){return caml_call1(of_int$1,i)},
           _vx_=caml_call3(Stdlib_scanf[4],s,_bB_,_vw_);
          return _vx_}
        catch(_vy_)
         {return caml_call2(of_sexp_error,cst_Uchar_t_of_sexp_atom_of_th,sexp)}}
      return caml_call2(of_sexp_error,cst_Uchar_t_of_sexp_atom_neede,sexp)}
    var
     pp$6=_v_([0,module_name$4,to_string$7])[1],
     _bC_=Make$1([0,compare$36,sexp_of_t$32]),
     between$0=_bC_[13],
     clamp_exn$0=_bC_[14],
     clamp$0=_bC_[15],
     comparator$2=_bC_[16],
     validate_lbound$0=_bC_[17],
     validate_ubound$0=_bC_[18],
     validate_bound$0=_bC_[19];
    function succ_exn(c)
     {try
       {var _vv_=caml_call1(succ$0,c);return _vv_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Stdlib[6])
         {var msg=exn[2];return caml_call2(failwithf(_bD_),msg,0)}
        throw exn}}
    function succ$1(c)
     {try
       {var _vt_=[0,caml_call1(succ$0,c)];return _vt_}
      catch(_vu_)
       {_vu_ = caml_wrap_exception(_vu_);
        if(_vu_[1] === Stdlib[6])return 0;
        throw _vu_}}
    function pred_exn(c)
     {try
       {var _vs_=caml_call1(pred,c);return _vs_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Stdlib[6])
         {var msg=exn[2];return caml_call2(failwithf(_bE_),msg,0)}
        throw exn}}
    function pred$0(c)
     {try
       {var _vq_=[0,caml_call1(pred,c)];return _vq_}
      catch(_vr_)
       {_vr_ = caml_wrap_exception(_vr_);
        if(_vr_[1] === Stdlib[6])return 0;
        throw _vr_}}
    function of_scalar(i)
     {return caml_call1(is_valid,i)?[0,caml_call1(unsafe_of_int$0,i)]:0}
    function of_scalar_exn(i)
     {return caml_call1(is_valid,i)
              ?caml_call1(unsafe_of_int$0,i)
              :caml_call2(failwithf(_bF_),i,0)}
    function to_scalar(t){return caml_call1(to_int$2,t)}
    function to_char(c)
     {return caml_call1(is_char,c)?[0,caml_call1(unsafe_to_char,c)]:0}
    function to_char_exn(c)
     {if(caml_call1(is_char,c))return caml_call1(unsafe_to_char,c);
      var _vp_=caml_call1(to_int$2,c);
      return caml_call2(failwithf(_bG_),_vp_,0)}
    var
     symbol$100=include$6[2],
     symbol$101=include$6[3],
     symbol$102=include$6[4],
     symbol$103=include$6[5],
     symbol$104=include$6[6],
     symbol$105=include$6[7],
     ascending$14=include$6[8],
     descending$14=include$6[9],
     compare$37=include$6[10],
     equal$22=include$6[11],
     max$16=include$6[12],
     min$16=include$6[13],
     Base_Uchar=
      [0,
       hash_fold_t$19,
       hash$5,
       t_of_sexp$24,
       sexp_of_t$32,
       symbol$105,
       symbol$101,
       symbol$103,
       symbol$104,
       symbol$100,
       symbol$102,
       equal$22,
       compare$37,
       min$16,
       max$16,
       ascending$14,
       descending$14,
       between$0,
       clamp_exn$0,
       clamp$0,
       comparator$2,
       validate_lbound$0,
       validate_ubound$0,
       validate_bound$0,
       pp$6,
       succ$1,
       succ_exn,
       pred$0,
       pred_exn,
       is_char,
       to_char,
       to_char_exn,
       of_char,
       is_valid,
       of_scalar,
       of_scalar_exn,
       to_scalar,
       min_value$1,
       max_value$1];
    caml_register_global(1043,Base_Uchar,"Base__Uchar");
    var Base_Floatable=[0];
    caml_register_global(1044,Base_Floatable,"Base__Floatable");
    function ceil(_vo_){return Math.ceil(_vo_)}
    function floor(_vn_){return Math.floor(_vn_)}
    function mod_float(_vm_,_vl_){return _vm_ % _vl_}
    var
     modf=runtime.caml_modf_float,
     float_of_string$0=caml_float_of_string,
     nan$1=Caml$0[12],
     infinity$1=Caml$0[10],
     neg_infinity$1=Caml$0[11],
     max_finite_value=Caml$0[13],
     epsilon_float$1=Caml$0[15],
     classify_float=caml_classify_float;
    function abs_float(_vk_){return Math.abs(_vk_)}
    function symbol$106(_vj_,_vi_){return Math.pow(_vj_,_vi_)}
    var frexp=runtime.caml_frexp_float,ldexp=runtime.caml_ldexp_float;
    function is_nan(x){return caml_call2(include$7[3],x,x)}
    function to_int64_preserve_order(t)
     {return is_nan(t)
              ?0
              :caml_call2(include$7[4],t,0.)
                ?_bH_
                :caml_call2(include$7[5],t,0.)
                  ?[0,caml_int64_bits_of_float(t)]
                  :[0,caml_int64_neg(caml_int64_bits_of_float(- t))]}
    function to_int64_preserve_order_exn(x)
     {return value_exn(0,0,0,to_int64_preserve_order(x))}
    function of_int64_preserve_order(x)
     {return caml_call2(include$2[6],x,_bI_)
              ?caml_int64_float_of_bits(x)
              :- caml_int64_float_of_bits(caml_int64_neg(x))}
    function one_ulp(dir,t)
     {var match=to_int64_preserve_order(t);
      if(match)
       {var x=match[1],_vh_=759637122 <= dir?_bJ_:_bK_;
        return of_int64_preserve_order(caml_int64_add(x,_vh_))}
      return Caml$0[12]}
    function upper_bound_for_int(num_bits)
     {var exp=num_bits - 1 | 0;return one_ulp(759637122,Math.pow(2.,exp))}
    function is_x_minus_one_exact(x)
     {return 1
             -
             caml_call2
              (include$2[4],
               caml_int64_bits_of_float(x),
               caml_int64_bits_of_float(x - 1.))}
    function lower_bound_for_int(num_bits)
     {var exp=num_bits - 1 | 0,min_int_as_float=- Math.pow(2.,exp);
      if(caml_call2(include$1[1],num_bits - 1 | 0,53))
       {if(is_x_minus_one_exact(min_int_as_float))
         return one_ulp(19067,min_int_as_float - 1.);
        throw [0,Assert_failure,_bL_]}
      if(is_x_minus_one_exact(min_int_as_float))throw [0,Assert_failure,_bM_];
      return min_int_as_float}
    function clamp_unchecked(t,min,max)
     {return caml_call2(include$7[1],t,min)
              ?min
              :caml_call2(include$7[1],max,t)?max:t}
    function box(f){return f + 0.}
    var
     symbol$107=include$7[1],
     symbol$108=include$7[2],
     symbol$109=include$7[3],
     symbol$110=include$7[4],
     symbol$111=include$7[5],
     symbol$112=include$7[6],
     ascending$15=include$7[7],
     descending$15=include$7[8],
     compare$38=include$7[9],
     equal$23=include$7[10],
     max$17=include$7[11],
     min$17=include$7[12],
     include$39=
      [0,
       ceil,
       floor,
       mod_float,
       modf,
       float_of_string$0,
       nan$1,
       infinity$1,
       neg_infinity$1,
       max_finite_value,
       epsilon_float$1,
       classify_float,
       abs_float,
       symbol$106,
       frexp,
       ldexp,
       is_nan,
       to_int64_preserve_order,
       to_int64_preserve_order_exn,
       of_int64_preserve_order,
       one_ulp,
       upper_bound_for_int,
       is_x_minus_one_exact,
       lower_bound_for_int,
       clamp_unchecked,
       box,
       symbol$107,
       symbol$108,
       symbol$109,
       symbol$110,
       symbol$111,
       symbol$112,
       ascending$15,
       descending$15,
       compare$38,
       equal$23,
       max$17,
       min$17];
    caml_register_global(1045,include$39,"Base__Float0");
    function hash$6(x){return caml_call1(func$3,x)}
    function to_string$8(t){return caml_call2(make$1,1,t)}
    function of_string$6(s)
     {var match=caml_ml_string_length(s);
      return 1 === match?caml_string_get(s,0):caml_call2(failwithf(_bN_),s,0)}
    var
     include$40=
      _a5_
       ([0,
         compare$12,
         hash_fold_t$3,
         hash$6,
         t_of_sexp$3,
         sexp_of_t$3,
         of_string$6,
         to_string$8,
         module_name$5]),
     _bO_=include$40[1],
     _bP_=include$40[2],
     _bQ_=include$40[3],
     _bR_=include$40[4],
     _bS_=include$40[5],
     _bT_=include$40[6],
     _bU_=include$40[19],
     _bV_=include$40[20],
     _bW_=include$40[21],
     _bX_=include$40[22],
     _bY_=include$40[23],
     _bZ_=include$40[24],
     _b0_=include$40[25],
     _b1_=include$40[26],
     all$13=caml_call1(to_list,caml_call2(init,256,unsafe_of_int));
    function is_lowercase(param)
     {var switcher=param - 97 | 0;return 25 < switcher >>> 0?0:1}
    function is_uppercase(param)
     {var switcher=param - 65 | 0;return 25 < switcher >>> 0?0:1}
    function is_print(param)
     {var switcher=param - 32 | 0;return 94 < switcher >>> 0?0:1}
    function is_whitespace(param)
     {var switch$0=0;
      if(14 <= param)
       {if(32 === param)switch$0 = 1}
      else
       if(9 <= param)switch$0 = 1;
      return switch$0?1:0}
    function is_digit(param)
     {var switcher=param - 48 | 0;return 9 < switcher >>> 0?0:1}
    function is_alpha(param)
     {var switch$0=0;
      if(91 <= param)
       {if(! (25 < (param - 97 | 0) >>> 0))switch$0 = 1}
      else
       if(65 <= param)switch$0 = 1;
      return switch$0?1:0}
    function is_alphanum(param)
     {var _vg_=param - 48 | 0,switch$0=0;
      if(42 < _vg_ >>> 0)
       {if(! (25 < (_vg_ - 49 | 0) >>> 0))switch$0 = 1}
      else
       if(6 < (_vg_ - 10 | 0) >>> 0)switch$0 = 1;
      return switch$0?1:0}
    function get_digit_exn(t)
     {return is_digit(t)?t - 48 | 0:caml_call2(failwithf(_b2_),t,0)}
    function get_digit(t){return is_digit(t)?[0,t - 48 | 0]:0}
    var
     symbol$113=include$5[6],
     symbol$114=include$5[2],
     symbol$115=include$5[4],
     symbol$116=include$5[5],
     symbol$117=include$5[1],
     symbol$118=include$5[3],
     O=[0,symbol$113,symbol$114,symbol$115,symbol$116,symbol$117,symbol$118],
     symbol$119=include$5[1],
     symbol$120=include$5[2],
     symbol$121=include$5[3],
     symbol$122=include$5[4],
     symbol$123=include$5[5],
     symbol$124=include$5[6],
     ascending$16=include$5[7],
     descending$16=include$5[8],
     compare_char$0=include$5[9],
     equal_char$1=include$5[10],
     max$18=include$5[11],
     min$18=include$5[12],
     Base_Char=
      [0,
       all$13,
       _bO_,
       _bP_,
       _bQ_,
       _bR_,
       _bS_,
       _bT_,
       symbol$124,
       symbol$120,
       symbol$122,
       symbol$123,
       symbol$119,
       symbol$121,
       equal_char$1,
       compare_char$0,
       min$18,
       max$18,
       ascending$16,
       descending$16,
       _bU_,
       _bV_,
       _bW_,
       _bX_,
       _bY_,
       _bZ_,
       _b0_,
       _b1_,
       O,
       to_int,
       of_int,
       of_int_exn,
       unsafe_of_int,
       _b_,
       _c_,
       _d_,
       is_digit,
       is_lowercase,
       is_uppercase,
       is_alpha,
       is_alphanum,
       is_print,
       is_whitespace,
       get_digit,
       get_digit_exn,
       min_value,
       max_value];
    caml_register_global(1046,Base_Char,"Base__Char");
    function tr_create_map(target,replacement)
     {var tr_map=caml_create_bytes(256),i$3=0;
      for(;;)
       {caml_bytes_unsafe_set(tr_map,i$3,of_int_exn(i$3));
        var _vf_=i$3 + 1 | 0;
        if(255 !== i$3){var i$3=_vf_;continue}
        var
         _u__=
          caml_call2
           (include$1[12],
            caml_ml_string_length(target),
            caml_ml_string_length(replacement))
          -
          1
          |
          0,
         _u9_=0;
        if(! (_u__ < 0))
         {var i$2=_u9_;
          for(;;)
           {var index$0=caml_string_unsafe_get(target,i$2);
            caml_bytes_unsafe_set
             (tr_map,index$0,caml_string_unsafe_get(replacement,i$2));
            var _ve_=i$2 + 1 | 0;
            if(_u__ !== i$2){var i$2=_ve_;continue}
            break}}
        var
         last_replacement=
          caml_string_unsafe_get
           (replacement,caml_ml_string_length(replacement) - 1 | 0),
         _u$_=
          caml_call2
           (include$1[12],
            caml_ml_string_length(target),
            caml_ml_string_length(replacement)),
         _va_=caml_ml_string_length(target) - 1 | 0;
        if(! (_va_ < _u$_))
         {var i$1=_u$_;
          for(;;)
           {var index=caml_string_unsafe_get(target,i$1);
            caml_bytes_unsafe_set(tr_map,index,last_replacement);
            var _vd_=i$1 + 1 | 0;
            if(_va_ !== i$1){var i$1=_vd_;continue}
            break}}
        var first_target=caml_string_get(target,0);
        if
         (!
          caml_call2
           (symbol$121,
            caml_bytes_unsafe_get(tr_map,first_target),
            first_target))
         {var i=0;
          for(;;)
           {if(caml_call2(include$1[4],i,256))
             var _vc_=0;
            else
             {var _vb_=of_int_exn(i);
              if
               (! caml_call2(symbol$121,caml_bytes_unsafe_get(tr_map,i),_vb_))
               {var i$0=i + 1 | 0,i=i$0;continue}
              var _vc_=1}
            if(! _vc_)return 0;
            break}}
        return [0,unsafe_to_string(tr_map)]}}
    var Base_Bytes_tr=[0,tr_create_map];
    caml_register_global(1047,Base_Bytes_tr,"Base__Bytes_tr");
    var
     include$41=_ap_([0,compare$24,sexp_of_t$2]),
     comparator$3=include$41[1];
    function is_substring_at_gen(str,str_pos$1,sub,char_equal)
     {var
       str_len=caml_ml_string_length(str),
       sub_len=caml_ml_string_length(sub),
       _u6_=caml_call2(symbol$78,str_pos$1,0),
       _u7_=_u6_ || caml_call2(symbol$82,str_pos$1,str_len);
      if(_u7_)caml_call3(invalid_argf(_b3_),str_pos$1,str_len,0);
      var _u8_=caml_call2(symbol$79,str_pos$1 + sub_len | 0,str_len);
      if(_u8_)
       {var str_pos=str_pos$1,sub_pos=0;
        for(;;)
         {if(caml_call2(symbol$81,sub_pos,sub_len))return 1;
          if
           (caml_call2
             (char_equal,
              caml_string_unsafe_get(str,str_pos),
              caml_string_unsafe_get(sub,sub_pos)))
           {var
             sub_pos$0=sub_pos + 1 | 0,
             str_pos$0=str_pos + 1 | 0,
             str_pos=str_pos$0,
             sub_pos=sub_pos$0;
            continue}
          return 0}}
      return _u8_}
    function is_suffix_gen(string,suffix,char_equal)
     {var
       string_len=caml_ml_string_length(string),
       suffix_len=caml_ml_string_length(suffix),
       _u5_=caml_call2(symbol$83,string_len,suffix_len);
      return _u5_
              ?is_substring_at_gen
                (string,string_len - suffix_len | 0,suffix,char_equal)
              :_u5_}
    function is_prefix_gen(string,prefix,char_equal)
     {var
       string_len=caml_ml_string_length(string),
       prefix_len=caml_ml_string_length(prefix),
       _u4_=caml_call2(symbol$83,string_len,prefix_len);
      return _u4_?is_substring_at_gen(string,0,prefix,char_equal):_u4_}
    function char_equal_caseless(c1,c2)
     {var _u3_=caml_call1(_c_,c2);
      return caml_call2(equal_char$1,caml_call1(_c_,c1),_u3_)}
    function compare$39(string1,string2)
     {if(string1 === string2)return 0;
      var
       len2=caml_ml_string_length(string2),
       len1=caml_ml_string_length(string1),
       pos=0;
      for(;;)
       {if(caml_call2(symbol$81,pos,len1))
         return caml_call2(symbol$81,pos,len2)?0:-1;
        if(caml_call2(symbol$81,pos,len2))return 1;
        var
         c2=caml_string_unsafe_get(string2,pos),
         c1=caml_string_unsafe_get(string1,pos),
         _u2_=caml_call1(_c_,c2),
         c=caml_call2(compare_char$0,caml_call1(_c_,c1),_u2_);
        if(0 === c){var pos$0=pos + 1 | 0,pos=pos$0;continue}
        return c}}
    function hash_fold_t$20(state,t)
     {var
       len=caml_ml_string_length(t),
       state$0=[0,caml_call2(hash_fold_t$4,state,len)],
       _uZ_=len - 1 | 0,
       _uY_=0;
      if(! (_uZ_ < 0))
       {var pos=_uY_;
        for(;;)
         {var _u0_=caml_call1(_c_,caml_string_unsafe_get(t,pos));
          state$0[1] = caml_call2(hash_fold_t$3,state$0[1],_u0_);
          var _u1_=pos + 1 | 0;
          if(_uZ_ !== pos){var pos=_u1_;continue}
          break}}
      return state$0[1]}
    function hash$7(t){return run(0,hash_fold_t$20,t)}
    function is_suffix(s,suffix)
     {return is_suffix_gen(s,suffix,char_equal_caseless)}
    function is_prefix$0(s,prefix)
     {return is_prefix_gen(s,prefix,char_equal_caseless)}
    var
     include$42=Make$1([0,compare$39,sexp_of_t$2]),
     symbol$125=include$42[1],
     symbol$126=include$42[2],
     symbol$127=include$42[3],
     symbol$128=include$42[4],
     symbol$129=include$42[5],
     symbol$130=include$42[6],
     equal$24=include$42[7],
     compare$40=include$42[8],
     min$19=include$42[9],
     max$19=include$42[10],
     ascending$17=include$42[11],
     descending$17=include$42[12],
     between$1=include$42[13],
     clamp_exn$1=include$42[14],
     clamp$1=include$42[15],
     comparator$4=include$42[16],
     validate_lbound$1=include$42[17],
     validate_ubound$1=include$42[18],
     validate_bound$1=include$42[19];
    function sub$8(src,pos,len)
     {if
       (caml_call2(symbol$81,pos,0)
        &&
        caml_call2(symbol$81,len,caml_ml_string_length(src)))
       return src;
      check_pos_len_exn(pos,len,caml_ml_string_length(src));
      var dst=caml_create_bytes(len);
      if(caml_call2(symbol$82,len,0))caml_blit_string(src,pos,dst,0,len);
      return unsafe_to_string(dst)}
    function subo$2(opt,len,src)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if(len)
       var i=len[1],i$0=i;
      else
       var i$0=caml_ml_string_length(src) - pos | 0;
      return sub$8(src,pos,i$0)}
    function contains(opt,len,t,char$0)
     {if(opt)var sth=opt[1],pos$1=sth;else var pos$1=0;
      var
       total_length=caml_ml_string_length(t),
       len$0=value(len,total_length - pos$1 | 0);
      check_pos_len_exn(pos$1,len$0,total_length);
      var end=pos$1 + len$0 | 0,pos=pos$1;
      for(;;)
       {var _uV_=caml_call2(symbol$78,pos,end);
        if(_uV_)
         {var
           _uW_=
            caml_call2(equal_char$1,caml_string_unsafe_get(t,pos),char$0);
          if(! _uW_){var pos$0=pos + 1 | 0,pos=pos$0;continue}
          var _uX_=_uW_}
        else
         var _uX_=_uV_;
        return _uX_}}
    function is_empty$3(t)
     {return caml_call2(symbol$81,caml_ml_string_length(t),0)}
    function index_from_exn_internal(string,pos,len,not_found,char$0)
     {var pos$0=pos;
      for(;;)
       {if(caml_call2(symbol$83,pos$0,len))throw not_found;
        if
         (caml_call2(equal_char$1,caml_string_unsafe_get(string,pos$0),char$0))
         return pos$0;
        var pos$1=pos$0 + 1 | 0,pos$0=pos$1;
        continue}}
    function index_exn_internal(t,not_found,char$0)
     {return index_from_exn_internal
              (t,0,caml_ml_string_length(t),not_found,char$0)}
    var not_found$7=[0,Not_found_s,_b4_];
    function index_exn(t,char$0)
     {return index_exn_internal(t,not_found$7,char$0)}
    var not_found$8=[0,Not_found_s,_b5_];
    function index_from_exn(t,pos,char$0)
     {var len=caml_ml_string_length(t);
      if(! caml_call2(symbol$78,pos,0) && ! caml_call2(symbol$82,pos,len))
       return index_from_exn_internal(t,pos,len,not_found$8,char$0);
      return caml_call1(invalid_arg$0,cst_String_index_from_exn)}
    function rindex_from_exn_internal(string,pos,len,not_found,char$0)
     {var pos$0=pos;
      for(;;)
       {if(caml_call2(symbol$78,pos$0,0))throw not_found;
        if
         (caml_call2(equal_char$1,caml_string_unsafe_get(string,pos$0),char$0))
         return pos$0;
        var pos$1=pos$0 - 1 | 0,pos$0=pos$1;
        continue}}
    function rindex_exn_internal(t,not_found,char$0)
     {var len=caml_ml_string_length(t);
      return rindex_from_exn_internal(t,len - 1 | 0,len,not_found,char$0)}
    var not_found$9=[0,Not_found_s,_b6_];
    function rindex_exn(t,char$0)
     {return rindex_exn_internal(t,not_found$9,char$0)}
    var not_found$10=[0,Not_found_s,_b7_];
    function rindex_from_exn(t,pos,char$0)
     {var len=caml_ml_string_length(t);
      if(! caml_call2(symbol$78,pos,-1) && ! caml_call2(symbol$83,pos,len))
       return rindex_from_exn_internal(t,pos,len,not_found$10,char$0);
      return caml_call1(invalid_arg$0,cst_String_rindex_from_exn)}
    function index(t,char$0)
     {try
       {var _uT_=[0,index_exn(t,char$0)];return _uT_}
      catch(_uU_)
       {_uU_ = caml_wrap_exception(_uU_);
        if(_uU_[1] !== Not_found_s && _uU_ !== Caml$0[90])throw _uU_;
        return 0}}
    function rindex(t,char$0)
     {try
       {var _uR_=[0,rindex_exn(t,char$0)];return _uR_}
      catch(_uS_)
       {_uS_ = caml_wrap_exception(_uS_);
        if(_uS_[1] !== Not_found_s && _uS_ !== Caml$0[90])throw _uS_;
        return 0}}
    function index_from(t,pos,char$0)
     {try
       {var _uP_=[0,index_from_exn(t,pos,char$0)];return _uP_}
      catch(_uQ_)
       {_uQ_ = caml_wrap_exception(_uQ_);
        if(_uQ_[1] !== Not_found_s && _uQ_ !== Caml$0[90])throw _uQ_;
        return 0}}
    function rindex_from(t,pos,char$0)
     {try
       {var _uN_=[0,rindex_from_exn(t,pos,char$0)];return _uN_}
      catch(_uO_)
       {_uO_ = caml_wrap_exception(_uO_);
        if(_uO_[1] !== Not_found_s && _uO_ !== Caml$0[90])throw _uO_;
        return 0}}
    function sexp_of_t$33(param)
     {var
       v1=param[2],
       v0=param[1],
       v0$0=caml_call1(sexp_of_t$2,v0),
       v1$0=caml_call2(sexp_of_t$11,sexp_of_t$4,v1);
      return [1,[0,v0$0,[0,v1$0,0]]]}
    function kmp_internal_loop(matched_chars,next_text_char,pattern,kmp_arr)
     {var matched_chars$0=[0,matched_chars];
      for(;;)
       {if
         (caml_call2(symbol$82,matched_chars$0[1],0)
          &&
          caml_call2
           (symbol$121,
            next_text_char,
            caml_string_unsafe_get(pattern,matched_chars$0[1])))
         {matched_chars$0[1] = kmp_arr[1 + (matched_chars$0[1] - 1 | 0)];
          continue}
        if
         (caml_call2
           (equal_char$1,
            next_text_char,
            caml_string_unsafe_get(pattern,matched_chars$0[1])))
         matched_chars$0[1] = matched_chars$0[1] + 1 | 0;
        return matched_chars$0[1]}}
    function create$5(pattern)
     {var n=caml_ml_string_length(pattern),kmp_arr=caml_make_vect(n,-1);
      if(caml_call2(symbol$82,n,0))
       {kmp_arr[1] = 0;
        var matched_chars=[0,0],_uL_=n - 1 | 0,_uK_=1;
        if(! (_uL_ < 1))
         {var i=_uK_;
          for(;;)
           {matched_chars[1]
            =
            kmp_internal_loop
             (matched_chars[1],
              caml_string_unsafe_get(pattern,i),
              pattern,
              kmp_arr);
            kmp_arr[1 + i] = matched_chars[1];
            var _uM_=i + 1 | 0;
            if(_uL_ !== i){var i=_uM_;continue}
            break}}}
      return [0,pattern,kmp_arr]}
    function index_internal(opt,param,text)
     {var kmp_arr=param[2],pattern=param[1];
      if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if
       (!
        caml_call2(symbol$78,pos,0)
        &&
        !
        caml_call2
         (symbol$82,
          pos,
          caml_ml_string_length(text) - caml_ml_string_length(pattern) | 0))
       {var
         j=[0,pos],
         matched_chars=[0,0],
         k=caml_ml_string_length(pattern),
         n=caml_ml_string_length(text);
        for(;;)
         {if
           (caml_call2(symbol$78,j[1],n)
            &&
            caml_call2(symbol$78,matched_chars[1],k))
           {var next_text_char=caml_string_unsafe_get(text,j[1]);
            matched_chars[1]
            =
            kmp_internal_loop(matched_chars[1],next_text_char,pattern,kmp_arr);
            j[1] = j[1] + 1 | 0;
            continue}
          return caml_call2(symbol$81,matched_chars[1],k)?j[1] - k | 0:-1}}
      return -1}
    function matches(t,str)
     {return caml_call2(symbol$83,index_internal(0,t,str),0)}
    function index$0(pos,t,in$0)
     {var p=index_internal(pos,t,in$0);
      return caml_call2(symbol$78,p,0)?0:[0,p]}
    function index_exn$0(pos,t,in$0)
     {var p=index_internal(pos,t,in$0);
      return caml_call2(symbol$83,p,0)
              ?p
              :raise_s
                (caml_call2
                  (message,
                   cst_Substring_not_found,
                   [0,[0,cst_substring,caml_call1(sexp_of_t$2,t[1])],0]))}
    function index_all(param,may_overlap,text)
     {var kmp_arr=param[2],pattern=param[1];
      if(caml_call2(symbol$81,caml_ml_string_length(pattern),0))
       return init$1
               (1 + caml_ml_string_length(text) | 0,
                function(_uJ_){return _uJ_});
      var
       matched_chars=[0,0],
       k=caml_ml_string_length(pattern),
       n=caml_ml_string_length(text),
       found=[0,0],
       _uH_=0;
      if(! (n < 0))
       {var j=_uH_;
        for(;;)
         {if(caml_call2(symbol$81,matched_chars[1],k))
           {found[1] = [0,j - k | 0,found[1]];
            matched_chars[1] = may_overlap?kmp_arr[1 + (k - 1 | 0)]:0}
          if(caml_call2(symbol$78,j,n))
           {var next_text_char=caml_string_unsafe_get(text,j);
            matched_chars[1]
            =
            kmp_internal_loop(matched_chars[1],next_text_char,pattern,kmp_arr)}
          var _uI_=j + 1 | 0;
          if(n !== j){var j=_uI_;continue}
          break}}
      return rev(found[1])}
    function replace_first(pos,t,s,with$0)
     {var match=index$0(pos,t,s);
      if(match)
       {var
         i=match[1],
         len_s=caml_ml_string_length(s),
         len_t=caml_ml_string_length(t[1]),
         len_with=caml_ml_string_length(with$0),
         dst=caml_create_bytes((len_s + len_with | 0) - len_t | 0);
        blit_string$0(s,0,dst,0,i);
        blit_string$0(with$0,0,dst,i,len_with);
        blit_string$0
         (s,i + len_t | 0,dst,i + len_with | 0,(len_s - i | 0) - len_t | 0);
        return unsafe_to_string(dst)}
      return s}
    function replace_all(t,s,with$0)
     {var matches=index_all(t,0,s);
      if(matches)
       {var
         len_s=caml_ml_string_length(s),
         len_t=caml_ml_string_length(t[1]),
         len_with=caml_ml_string_length(with$0),
         num_matches=caml_call1(length,matches),
         dst=
          caml_create_bytes
           (len_s + caml_mul(len_with - len_t | 0,num_matches) | 0),
         next_dst_pos=[0,0],
         next_src_pos=[0,0];
        iter$0
         (matches,
          function(i)
           {var len=i - next_src_pos[1] | 0;
            blit_string$0(s,next_src_pos[1],dst,next_dst_pos[1],len);
            blit_string$0(with$0,0,dst,next_dst_pos[1] + len | 0,len_with);
            next_dst_pos[1] = (next_dst_pos[1] + len | 0) + len_with | 0;
            next_src_pos[1] = (next_src_pos[1] + len | 0) + len_t | 0;
            return 0});
        blit_string$0
         (s,next_src_pos[1],dst,next_dst_pos[1],len_s - next_src_pos[1] | 0);
        return unsafe_to_string(dst)}
      return s}
    function substr_index(pos,t,pattern)
     {return index$0(pos,create$5(pattern),t)}
    function substr_index_exn(pos,t,pattern)
     {return index_exn$0(pos,create$5(pattern),t)}
    function substr_index_all(t,may_overlap,pattern)
     {return index_all(create$5(pattern),may_overlap,t)}
    function substr_replace_first(pos,t,pattern)
     {var _uF_=create$5(pattern);
      return function(_uG_){return replace_first(pos,_uF_,t,_uG_)}}
    function substr_replace_all(t,pattern)
     {var _uD_=create$5(pattern);
      return function(_uE_){return replace_all(_uD_,t,_uE_)}}
    function is_substring(t,substring)
     {return is_some(substr_index(0,t,substring))}
    function of_string$7(_uC_){return _uC_}
    function to_string$9(_uB_){return _uB_}
    function init$4(n,f)
     {if(caml_call2(symbol$78,n,0))caml_call2(invalid_argf(_b8_),n,0);
      var t=caml_create_bytes(n),_uz_=n - 1 | 0,_uy_=0;
      if(! (_uz_ < 0))
       {var i=_uy_;
        for(;;)
         {caml_bytes_set(t,i,caml_call1(f,i));
          var _uA_=i + 1 | 0;
          if(_uz_ !== i){var i=_uA_;continue}
          break}}
      return unsafe_to_string(t)}
    function to_list$5(s)
     {var i$1=caml_ml_string_length(s) - 1 | 0,acc=0,i=i$1;
      for(;;)
       {if(caml_call2(symbol$78,i,0))return acc;
        var i$0=i - 1 | 0,acc$0=[0,caml_string_get(s,i),acc],acc=acc$0,i=i$0;
        continue}}
    function to_list_rev$0(s)
     {var len=caml_ml_string_length(s),acc=0,i=0;
      for(;;)
       {if(caml_call2(symbol$81,i,len))return acc;
        var i$0=i + 1 | 0,acc$0=[0,caml_string_get(s,i),acc],acc=acc$0,i=i$0;
        continue}}
    function rev$0(t)
     {var
       len=caml_ml_string_length(t),
       res=caml_create_bytes(len),
       _uw_=len - 1 | 0,
       _uv_=0;
      if(! (_uw_ < 0))
       {var i=_uv_;
        for(;;)
         {caml_bytes_unsafe_set
           (res,i,caml_string_unsafe_get(t,(len - 1 | 0) - i | 0));
          var _ux_=i + 1 | 0;
          if(_uw_ !== i){var i=_ux_;continue}
          break}}
      return unsafe_to_string(res)}
    var not_found$11=[0,Not_found_s,_b9_];
    function lsplit2_exn(line,delim)
     {var
       pos=index_exn_internal(line,not_found$11,delim),
       _uu_=
        sub$8
         (line,pos + 1 | 0,(caml_ml_string_length(line) - pos | 0) - 1 | 0);
      return [0,sub$8(line,0,pos),_uu_]}
    var not_found$12=[0,Not_found_s,_b__];
    function rsplit2_exn(line,delim)
     {var
       pos=rindex_exn_internal(line,not_found$12,delim),
       _ut_=
        sub$8
         (line,pos + 1 | 0,(caml_ml_string_length(line) - pos | 0) - 1 | 0);
      return [0,sub$8(line,0,pos),_ut_]}
    function lsplit2(line,on)
     {try
       {var _ur_=[0,lsplit2_exn(line,on)];return _ur_}
      catch(_us_)
       {_us_ = caml_wrap_exception(_us_);
        if(_us_[1] !== Not_found_s && _us_ !== Caml$0[90])throw _us_;
        return 0}}
    function rsplit2(line,on)
     {try
       {var _up_=[0,rsplit2_exn(line,on)];return _up_}
      catch(_uq_)
       {_uq_ = caml_wrap_exception(_uq_);
        if(_uq_[1] !== Not_found_s && _uq_ !== Caml$0[90])throw _uq_;
        return 0}}
    function char_list_mem(l,c)
     {var l$0=l;
      for(;;)
       {if(l$0)
         {var tl=l$0[2],hd=l$0[1],_uo_=caml_call2(equal_char$1,hd,c);
          if(_uo_)return _uo_;
          var l$0=tl;
          continue}
        return 0}}
    function split_gen(str,on)
     {if(552554919 <= on[1])
       var l=on[2],is_delim=function(c){return char_list_mem(l,c)};
      else
       var
        c=on[2],
        is_delim=function(c$0){return caml_call2(equal_char$1,c$0,c)};
      var
       last_pos=caml_ml_string_length(str),
       pos$2=last_pos - 1 | 0,
       acc=0,
       last_pos$0=last_pos,
       pos=pos$2;
      for(;;)
       {if(caml_call2(symbol$81,pos,-1))
         return [0,sub$8(str,0,last_pos$0),acc];
        if(is_delim(caml_string_get(str,pos)))
         {var
           pos1=pos + 1 | 0,
           sub_str=sub$8(str,pos1,last_pos$0 - pos1 | 0),
           pos$0=pos - 1 | 0,
           acc$0=[0,sub_str,acc],
           acc=acc$0,
           last_pos$0=pos,
           pos=pos$0;
          continue}
        var pos$1=pos - 1 | 0,pos=pos$1;
        continue}}
    function split(str,on){return split_gen(str,[0,-1044422954,on])}
    function split_on_chars(str,chars)
     {return split_gen(str,[0,552554919,chars])}
    function back_up_at_newline(t,pos,eol)
     {var switch$0=0;
      if
       (caml_call2(symbol$82,pos[1],0)
        &&
        caml_call2(equal_char$1,caml_string_get(t,pos[1] - 1 | 0),13))
       {var _un_=2;switch$0 = 1}
      if(! switch$0)var _un_=1;
      pos[1] = pos[1] - _un_ | 0;
      eol[1] = pos[1] + 1 | 0;
      return 0}
    function split_lines(t)
     {var n=caml_ml_string_length(t);
      if(caml_call2(symbol$81,n,0))return 0;
      var pos=[0,n - 1 | 0],eol=[0,n],ac=[0,0];
      if(caml_call2(equal_char$1,caml_string_get(t,pos[1]),10))
       back_up_at_newline(t,pos,eol);
      for(;;)
       {if(caml_call2(symbol$83,pos[1],0))
         {if(caml_call2(symbol$121,caml_string_get(t,pos[1]),10))
           {decr(pos);continue}
          var start=pos[1] + 1 | 0,_ul_=ac[1];
          ac[1] = [0,sub$8(t,start,eol[1] - start | 0),_ul_];
          back_up_at_newline(t,pos,eol);
          continue}
        var _um_=ac[1];
        return [0,sub$8(t,0,eol[1]),_um_]}}
    function is_suffix$0(s,suffix)
     {return is_suffix_gen(s,suffix,equal_char$1)}
    function is_prefix$1(s,prefix)
     {return is_prefix_gen(s,prefix,equal_char$1)}
    function is_substring_at(s,pos,substring)
     {return is_substring_at_gen(s,pos,substring,equal_char$1)}
    function wrap_sub_n(t,n,name,pos,len,on_error)
     {if(caml_call2(symbol$78,n,0))
       return caml_call1
               (invalid_arg$0,
                caml_call2(symbol$77,name,cst_expecting_nonnegative_argu));
      try {var _uj_=sub$8(t,pos,len);return _uj_}catch(_uk_){return on_error}}
    function drop_prefix(t,n)
     {return wrap_sub_n
              (t,n,cst_drop_prefix,n,caml_ml_string_length(t) - n | 0,cst$15)}
    function drop_suffix(t,n)
     {return wrap_sub_n
              (t,n,cst_drop_suffix,0,caml_ml_string_length(t) - n | 0,cst$16)}
    function prefix(t,n){return wrap_sub_n(t,n,cst_prefix,0,n,t)}
    function suffix(t,n)
     {return wrap_sub_n(t,n,cst_suffix,caml_ml_string_length(t) - n | 0,n,t)}
    function lfindi(opt,t,f)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      var n=caml_ml_string_length(t),i=pos;
      for(;;)
       {if(caml_call2(symbol$81,i,n))return 0;
        if(caml_call2(f,i,caml_string_get(t,i)))return [0,i];
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    function find$5(t,f)
     {var match=lfindi(0,t,function(param,c){return caml_call1(f,c)});
      if(match){var i=match[1];return [0,caml_string_get(t,i)]}
      return 0}
    function find_map$4(t,f)
     {var n=caml_ml_string_length(t),i=0;
      for(;;)
       {if(caml_call2(symbol$81,i,n))return 0;
        var res=caml_call1(f,caml_string_get(t,i));
        if(res)return res;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    function rfindi(pos,t,f)
     {if(pos)
       var pos$0=pos[1],pos$1=pos$0;
      else
       var pos$1=caml_ml_string_length(t) - 1 | 0;
      var i=pos$1;
      for(;;)
       {if(caml_call2(symbol$78,i,0))return 0;
        if(caml_call2(f,i,caml_string_get(t,i)))return [0,i];
        var i$0=i - 1 | 0,i=i$0;
        continue}}
    function last_non_drop(drop,t)
     {return rfindi(0,t,function(param,c){return 1 - caml_call1(drop,c)})}
    function rstrip(opt,t)
     {if(opt)var sth=opt[1],drop=sth;else var drop=is_whitespace;
      var match=last_non_drop(drop,t);
      if(match)
       {var i=match[1];
        return caml_call2(symbol$81,i,caml_ml_string_length(t) - 1 | 0)
                ?t
                :prefix(t,i + 1 | 0)}
      return cst$17}
    function first_non_drop(drop,t)
     {return lfindi(0,t,function(param,c){return 1 - caml_call1(drop,c)})}
    function lstrip(opt,t)
     {if(opt)var sth=opt[1],drop=sth;else var drop=is_whitespace;
      var match=first_non_drop(drop,t);
      if(match){var _ui_=match[1];return 0 === _ui_?t:drop_prefix(t,_ui_)}
      return cst$18}
    function strip(opt,t)
     {if(opt)var sth=opt[1],drop=sth;else var drop=is_whitespace;
      var length=caml_ml_string_length(t);
      if(! caml_call2(symbol$81,length,0))
       {var switch$0=0;
        if
         (caml_call1(drop,caml_string_get(t,0))
          ||
          caml_call1(drop,caml_string_get(t,length - 1 | 0)))
         switch$0 = 1;
        if(switch$0)
         {var match=first_non_drop(drop,t);
          if(match)
           {var first=match[1],match$0=last_non_drop(drop,t);
            if(match$0)
             {var last=match$0[1];
              return sub$8(t,first,(last - first | 0) + 1 | 0)}
            throw [0,Assert_failure,_b$_]}
          return cst$19}}
      return t}
    function mapi$3(t,f)
     {var
       l=caml_ml_string_length(t),
       t$0=caml_create_bytes(l),
       _ug_=l - 1 | 0,
       _uf_=0;
      if(! (_ug_ < 0))
       {var i=_uf_;
        for(;;)
         {caml_bytes_unsafe_set(t$0,i,caml_call2(f,i,caml_string_get(t,i)));
          var _uh_=i + 1 | 0;
          if(_ug_ !== i){var i=_uh_;continue}
          break}}
      return unsafe_to_string(t$0)}
    function map$22(t,f)
     {var
       l=caml_ml_string_length(t),
       t$0=caml_create_bytes(l),
       _ud_=l - 1 | 0,
       _uc_=0;
      if(! (_ud_ < 0))
       {var i=_uc_;
        for(;;)
         {caml_bytes_unsafe_set(t$0,i,caml_call1(f,caml_string_get(t,i)));
          var _ue_=i + 1 | 0;
          if(_ud_ !== i){var i=_ue_;continue}
          break}}
      return unsafe_to_string(t$0)}
    function to_array$4(s)
     {return caml_call2
              (init,
               caml_ml_string_length(s),
               function(i){return caml_string_get(s,i)})}
    function exists$5(s,f)
     {var len=caml_ml_string_length(s),i=0;
      for(;;)
       {var _t$_=caml_call2(symbol$78,i,len);
        if(_t$_)
         {var _ua_=caml_call1(f,caml_string_get(s,i));
          if(! _ua_){var i$0=i + 1 | 0,i=i$0;continue}
          var _ub_=_ua_}
        else
         var _ub_=_t$_;
        return _ub_}}
    function for_all$4(s,f)
     {var len=caml_ml_string_length(s),i=0;
      for(;;)
       {var _t8_=caml_call2(symbol$81,i,len);
        if(_t8_)
         var _t9_=_t8_;
        else
         {var _t__=caml_call1(f,caml_string_get(s,i));
          if(_t__){var i$0=i + 1 | 0,i=i$0;continue}
          var _t9_=_t__}
        return _t9_}}
    function fold$4(t,ac,f)
     {var n=caml_ml_string_length(t),i=0,ac$0=ac;
      for(;;)
       {if(caml_call2(symbol$81,i,n))return ac$0;
        var
         ac$1=caml_call2(f,ac$0,caml_string_get(t,i)),
         i$0=i + 1 | 0,
         i=i$0,
         ac$0=ac$1;
        continue}}
    function foldi$3(t,ac,f)
     {var n=caml_ml_string_length(t),i=0,ac$0=ac;
      for(;;)
       {if(caml_call2(symbol$81,i,n))return ac$0;
        var
         ac$1=caml_call3(f,i,ac$0,caml_string_get(t,i)),
         i$0=i + 1 | 0,
         i=i$0,
         ac$0=ac$1;
        continue}}
    function count$4(t,f){return count(fold$4,t,f)}
    function sum$4(m,t,f){return sum(fold$4,m,t,f)}
    function min_elt$5(t)
     {return function(_t7_){return min_elt(fold$4,t,_t7_)}}
    function max_elt$5(t)
     {return function(_t6_){return max_elt(fold$4,t,_t6_)}}
    function fold_result$4(t,init,f){return fold_result(fold$4,init,f,t)}
    function fold_until$4(t,init,f)
     {return function(_t5_){return fold_until(fold$4,init,f,_t5_,t)}}
    function mem$4(t,c)
     {var len=caml_ml_string_length(t),i=0;
      for(;;)
       {var _t2_=caml_call2(symbol$78,i,len);
        if(_t2_)
         {var _t3_=caml_call2(equal_char$1,c,caml_string_unsafe_get(t,i));
          if(! _t3_){var i$0=i + 1 | 0,i=i$0;continue}
          var _t4_=_t3_}
        else
         var _t4_=_t2_;
        return _t4_}}
    function tr(target,replacement,s)
     {return caml_call2(equal_char$1,target,replacement)
              ?s
              :mem$4(s,target)
                ?map$22
                  (s,
                   function(c)
                    {return caml_call2(equal_char$1,c,target)?replacement:c})
                :s}
    function tr_multi(target,replacement)
     {if(is_empty$3(target))return function(_t1_){return _t1_};
      if(is_empty$3(replacement))
       return caml_call1(invalid_arg$0,cst_tr_multi_replacement_is_em);
      var match=tr_create_map(target,replacement);
      if(match)
       {var tr_map=match[1];
        return function(s)
         {return exists$5
                   (s,
                    function(c)
                     {return caml_call2
                              (symbol$121,c,caml_string_unsafe_get(tr_map,c))})
                  ?map$22
                    (s,function(c){return caml_string_unsafe_get(tr_map,c)})
                  :s}}
      return function(_t0_){return _t0_}}
    function concat_array(sep,ar){return concat$0(sep,caml_call1(to_list,ar))}
    function concat_map$2(sep,s,f)
     {return concat_array(sep,map(to_array$4(s),f))}
    function filter$3(t,f)
     {var n=caml_ml_string_length(t),i=[0,0];
      for(;;)
       {if
         (caml_call2(symbol$78,i[1],n)
          &&
          caml_call1(f,caml_string_get(t,i[1])))
         {incr(i);continue}
        if(caml_call2(symbol$81,i[1],n))return t;
        var out=caml_create_bytes(n - 1 | 0);
        blit_string$0(t,0,out,0,i[1]);
        var out_pos=[0,i[1]];
        incr(i);
        for(;;)
         {if(caml_call2(symbol$78,i[1],n))
           {var c=caml_string_get(t,i[1]);
            if(caml_call1(f,c))
             {caml_bytes_set(out,out_pos[1],c);incr(out_pos)}
            incr(i);
            continue}
          var out$0=unsafe_to_string(out);
          return caml_call2(symbol$81,out_pos[1],n - 1 | 0)
                  ?out$0
                  :sub$8(out$0,0,out_pos[1])}}}
    function chop_prefix(s,prefix)
     {return is_prefix$1(s,prefix)
              ?[0,drop_prefix(s,caml_ml_string_length(prefix))]
              :0}
    function chop_prefix_exn(s,prefix)
     {var match=chop_prefix(s,prefix);
      if(match){var str=match[1];return str}
      var _tZ_=caml_call3(sprintf,_ca_,s,prefix);
      throw [0,Stdlib[6],_tZ_]}
    function chop_suffix(s,suffix)
     {return is_suffix$0(s,suffix)
              ?[0,drop_suffix(s,caml_ml_string_length(suffix))]
              :0}
    function chop_suffix_exn(s,suffix)
     {var match=chop_suffix(s,suffix);
      if(match){var str=match[1];return str}
      var _tY_=caml_call3(sprintf,_cb_,s,suffix);
      throw [0,Stdlib[6],_tY_]}
    var
     include$43=Validate([0,compare$24,sexp_of_t$2]),
     validate_lbound$2=include$43[1],
     validate_ubound$2=include$43[2],
     validate_bound$2=include$43[3],
     pp$7=Stdlib_format[13];
    function of_char$0(c){return caml_call2(make$1,1,c)}
    function of_char_list(l)
     {var t=caml_create_bytes(caml_call1(length,l));
      iteri$0(l,function(i,c){return caml_bytes_set(t,i,c)});
      return unsafe_to_string(t)}
    function build_and_validate_escapeworth(escapeworthy_map,escape_char,func)
     {var
       escapeworthy_map$0=
        caml_call3(_al_[6],escapeworthy_map,equal_char$1,escape_char)
         ?escapeworthy_map
         :[0,[0,escape_char,escape_char],escapeworthy_map],
       arr=caml_make_vect(256,-1),
       vals=caml_make_vect(256,0),
       param=escapeworthy_map$0;
      for(;;)
       {if(param)
         {var l=param[2],match=param[1],c_to=match[2],c_from=match[1];
          if(919809722 <= func)var v=c_from,k=c_to;else var v=c_to,k=c_from;
          if
           (!
            caml_call2(symbol$80,caml_check_bound(arr,k)[1 + k],-1)
            &&
            !
            caml_check_bound(vals,v)[1 + v])
           {caml_check_bound(arr,k)[1 + k] = v;
            caml_check_bound(vals,v)[1 + v] = 1;
            var param=l;
            continue}
          var
           _tW_=
            [0,
             [0,
              cst_escapeworthy_map,
              caml_call2
               (sexp_of_t$10,
                caml_call2(sexp_of_pair,sexp_of_t$3,sexp_of_t$3),
                escapeworthy_map$0)],
             0],
           _tX_=[0,[0,cst_c_to,caml_call1(sexp_of_t$3,c_to)],_tW_];
          return error_s
                  (caml_call2
                    (message,
                     cst_escapeworthy_map_not_one_t,
                     [0,[0,cst_c_from,caml_call1(sexp_of_t$3,c_from)],_tX_]))}
        return [0,arr]}}
    function escape_gen(escapeworthy_map,escape_char)
     {var
       x=
        build_and_validate_escapeworth(escapeworthy_map,escape_char,258914209);
      if(0 === x[0])
       {var escapeworthy=x[1];
        return [0,
                function(src)
                 {var
                   to_escape_len=[0,0],
                   param=
                    foldi$3
                     (src,
                      0,
                      function(i,acc,c)
                       {var n=caml_check_bound(escapeworthy,c)[1 + c];
                        return -1 === n?acc:(incr(to_escape_len),[0,[0,i,n],acc])});
                  if(param)
                   {var
                     last_idx=caml_ml_string_length(src),
                     last_dst_pos=last_idx + to_escape_len[1] | 0,
                     dst=caml_create_bytes(last_dst_pos),
                     last_idx$0=last_idx,
                     last_dst_pos$0=last_dst_pos,
                     param$0=param;
                    for(;;)
                     {if(param$0)
                       {var
                         to_escape=param$0[2],
                         match=param$0[1],
                         escaped_char=match[2],
                         idx=match[1],
                         len=(last_idx$0 - idx | 0) - 1 | 0,
                         dst_pos=last_dst_pos$0 - len | 0;
                        blit_string$0(src,idx + 1 | 0,dst,dst_pos,len);
                        var last_dst_pos$1=dst_pos - 2 | 0;
                        caml_bytes_set(dst,last_dst_pos$1,escape_char);
                        caml_bytes_set(dst,last_dst_pos$1 + 1 | 0,escaped_char);
                        var
                         last_idx$0=idx,
                         last_dst_pos$0=last_dst_pos$1,
                         param$0=to_escape;
                        continue}
                      blit_string$0(src,0,dst,0,last_idx$0);
                      return unsafe_to_string(dst)}}
                  return src}]}
      return x}
    function escape_gen_exn(escapeworthy_map,escape_char)
     {return ok_exn$0(escape_gen(escapeworthy_map,escape_char))}
    function escape(escapeworthy,escape_char)
     {var
       _tV_=dedup_and_sort(compare_char$0,escapeworthy),
       escapeworthy_map=map$6(_tV_,function(c){return [0,c,c]});
      return escape_gen_exn(escapeworthy_map,escape_char)}
    function unescape_gen(escapeworthy_map,escape_char)
     {var
       x=
        build_and_validate_escapeworth(escapeworthy_map,escape_char,919809722);
      if(0 === x[0])
       {var escapeworthy=x[1];
        return [0,
                function(src)
                 {var i=0,status=-512962225,acc=0;
                  for(;;)
                   {if(caml_call2(symbol$83,i,caml_ml_string_length(src)))
                     {if(acc)
                       {var
                         to_unescape=acc[2],
                         idx=acc[1],
                         dst=
                          caml_create_bytes
                           (caml_ml_string_length(src) - caml_call1(length,acc) | 0),
                         loop=
                          function(last_idx,last_dst_pos,param)
                           {var
                             last_idx$0=last_idx,
                             last_dst_pos$0=last_dst_pos,
                             param$0=param;
                            for(;;)
                             {if(param$0)
                               {var
                                 to_unescape=param$0[2],
                                 idx=param$0[1],
                                 len=(last_idx$0 - idx | 0) - 2 | 0,
                                 dst_pos=last_dst_pos$0 - len | 0;
                                blit_string$0(src,idx + 2 | 0,dst,dst_pos,len);
                                var
                                 dst_pos$0=dst_pos - 1 | 0,
                                 _tT_=caml_string_get(src,idx + 1 | 0),
                                 n=caml_check_bound(escapeworthy,_tT_)[1 + _tT_],
                                 _tU_=-1 === n?caml_string_get(src,idx + 1 | 0):n;
                                caml_bytes_set(dst,dst_pos$0,_tU_);
                                var
                                 last_idx$0=idx,
                                 last_dst_pos$0=dst_pos$0,
                                 param$0=to_unescape;
                                continue}
                              return blit_string$0(src,0,dst,0,last_idx$0)}};
                        if
                         (caml_call2
                           (symbol$78,idx,caml_ml_string_length(src) - 1 | 0))
                         loop
                          (caml_ml_string_length(src),caml_ml_bytes_length(dst),acc);
                        else
                         loop
                          (caml_ml_string_length(src) - 1 | 0,
                           caml_ml_bytes_length(dst),
                           to_unescape);
                        return unsafe_to_string(dst)}
                      return src}
                    var
                     status$0=
                      -512962225 <= status
                       ?caml_call2(equal_char$1,caml_string_get(src,i),escape_char)
                         ?-767030498
                         :-512962225
                       :-244189789,
                     acc$0=-512962225 <= status$0?acc:[0,i,acc],
                     i$0=i + 1 | 0,
                     i=i$0,
                     status=status$0,
                     acc=acc$0;
                    continue}}]}
      return x}
    function unescape_gen_exn(escapeworthy_map,escape_char)
     {return ok_exn$0(unescape_gen(escapeworthy_map,escape_char))}
    function unescape(escape_char){return unescape_gen_exn(0,escape_char)}
    function preceding_escape_chars(str,escape_char,pos)
     {var p$1=pos - 1 | 0,p=p$1,cnt=0;
      for(;;)
       {if
         (!
          caml_call2(symbol$78,p,0)
          &&
          !
          caml_call2(symbol$121,caml_string_get(str,p),escape_char))
         {var cnt$0=cnt + 1 | 0,p$0=p - 1 | 0,p=p$0,cnt=cnt$0;continue}
        return cnt}}
    function update_escape_status(str,escape_char,i,param)
     {return -512962225 <= param
              ?caml_call2(equal_char$1,caml_string_get(str,i),escape_char)
                ?-767030498
                :-512962225
              :-244189789}
    function escape_status(str,escape_char,pos)
     {var
       odd=
        caml_call2
         (symbol$81,preceding_escape_chars(str,escape_char,pos) % 2 | 0,1),
       match=caml_call2(equal_char$1,caml_string_get(str,pos),escape_char);
      return odd?-244189789:match?-767030498:-512962225}
    function check_bound(str,pos,function_name)
     {var
       _tR_=caml_call2(symbol$83,pos,caml_ml_string_length(str)),
       _tS_=_tR_ || caml_call2(symbol$78,pos,0);
      return _tS_?caml_call2(invalid_argf(_cc_),function_name,0):_tS_}
    function is_char_escaping(str,escape_char,pos)
     {check_bound(str,pos,cst_is_char_escaping);
      var match=escape_status(str,escape_char,pos);
      return -512962225 <= match?0:1}
    function is_char_escaped(str,escape_char,pos)
     {check_bound(str,pos,cst_is_char_escaped);
      var match=escape_status(str,escape_char,pos);
      return -244189789 <= match?1:0}
    function is_char_literal(str,escape_char,pos)
     {check_bound(str,pos,cst_is_char_literal);
      var match=escape_status(str,escape_char,pos);
      return -512962225 === match?1:0}
    function index_from$0(str,escape_char,pos,char$0)
     {check_bound(str,pos,cst_index_from);
      var status$1=escape_status(str,escape_char,pos),i=pos,status=status$1;
      for(;;)
       {if(caml_call2(symbol$83,i,pos))
         {var _tQ_=-512962225 === status?1:0;
          if(_tQ_ && caml_call2(equal_char$1,caml_string_get(str,i),char$0))
           return [0,i]}
        var i$0=i + 1 | 0;
        if(caml_call2(symbol$83,i$0,caml_ml_string_length(str)))return 0;
        var
         status$0=update_escape_status(str,escape_char,i$0,status),
         i=i$0,
         status=status$0;
        continue}}
    function index_from_exn$0(str,escape_char,pos,char$0)
     {var match=index_from$0(str,escape_char,pos,char$0);
      if(match){var pos$0=match[1];return pos$0}
      var
       _tN_=[0,[0,cst_char,caml_call1(sexp_of_t$3,char$0)],0],
       _tO_=[0,[0,cst_pos$1,caml_call1(sexp_of_t$4,pos)],_tN_],
       _tP_=[0,[0,cst_escape_char,caml_call1(sexp_of_t$3,escape_char)],_tO_];
      return raise_s
              (caml_call2
                (message,
                 cst_index_from_exn_not_found,
                 [0,[0,cst_str,caml_call1(sexp_of_t$2,str)],_tP_]))}
    function index$1(str,escape_char,char$0)
     {return index_from$0(str,escape_char,0,char$0)}
    function index_exn$1(str,escape_char,char$0)
     {return index_from_exn$0(str,escape_char,0,char$0)}
    function rindex_from$0(str,escape_char,pos,char$0)
     {check_bound(str,pos,cst_rindex_from);
      if(caml_call2(equal_char$1,char$0,escape_char))return 0;
      var pos$0=pos;
      for(;;)
       {if(caml_call2(symbol$78,pos$0,0))return 0;
        var escape_chars=preceding_escape_chars(str,escape_char,pos$0);
        if
         (caml_call2(symbol$81,escape_chars % 2 | 0,0)
          &&
          caml_call2(equal_char$1,caml_string_get(str,pos$0),char$0))
         return [0,pos$0];
        var pos$1=(pos$0 - escape_chars | 0) - 1 | 0,pos$0=pos$1;
        continue}}
    function rindex_from_exn$0(str,escape_char,pos,char$0)
     {var match=rindex_from$0(str,escape_char,pos,char$0);
      if(match){var pos$0=match[1];return pos$0}
      var
       _tK_=[0,[0,cst_char$0,caml_call1(sexp_of_t$3,char$0)],0],
       _tL_=[0,[0,cst_pos$2,caml_call1(sexp_of_t$4,pos)],_tK_],
       _tM_=[0,[0,cst_escape_char$0,caml_call1(sexp_of_t$3,escape_char)],_tL_];
      return raise_s
              (caml_call2
                (message,
                 cst_rindex_from_exn_not_found,
                 [0,[0,cst_str$0,caml_call1(sexp_of_t$2,str)],_tM_]))}
    function rindex$0(str,escape_char,char$0)
     {return is_empty$3(str)
              ?0
              :rindex_from$0
                (str,escape_char,caml_ml_string_length(str) - 1 | 0,char$0)}
    function rindex_exn$0(str,escape_char,char$0)
     {return rindex_from_exn$0
              (str,escape_char,caml_ml_string_length(str) - 1 | 0,char$0)}
    function split_gen$0(str,escape_char,on)
     {if(552554919 <= on[1])
       var l=on[2],is_delim=function(c){return char_list_mem(l,c)};
      else
       var
        c=on[2],
        is_delim=function(c$0){return caml_call2(equal_char$1,c$0,c)};
      var
       len=caml_ml_string_length(str),
       acc=0,
       status=-512962225,
       last_pos=0,
       pos=0;
      for(;;)
       {if(caml_call2(symbol$81,pos,len))
         return rev([0,sub$8(str,last_pos,len - last_pos | 0),acc]);
        var
         status$0=update_escape_status(str,escape_char,pos,status),
         _tJ_=-512962225 === status$0?1:0;
        if(_tJ_ && is_delim(caml_string_get(str,pos)))
         {var
           sub_str=sub$8(str,last_pos,pos - last_pos | 0),
           pos$0=pos + 1 | 0,
           last_pos$0=pos + 1 | 0,
           acc$0=[0,sub_str,acc],
           acc=acc$0,
           status=status$0,
           last_pos=last_pos$0,
           pos=pos$0;
          continue}
        var pos$1=pos + 1 | 0,status=status$0,pos=pos$1;
        continue}}
    function split$0(str,on)
     {var _tH_=[0,-1044422954,on];
      return function(_tI_){return split_gen$0(str,_tI_,_tH_)}}
    function split_on_chars$0(str,chars)
     {var _tF_=[0,552554919,chars];
      return function(_tG_){return split_gen$0(str,_tG_,_tF_)}}
    function split_at(str,pos)
     {var
       _tE_=
        sub$8(str,pos + 1 | 0,(caml_ml_string_length(str) - pos | 0) - 1 | 0);
      return [0,sub$8(str,0,pos),_tE_]}
    function lsplit2$0(str,on,escape_char)
     {function _tD_(x){return split_at(str,x)}
      return caml_call2(map$15,index$1(str,escape_char,on),_tD_)}
    function rsplit2$0(str,on,escape_char)
     {function _tC_(x){return split_at(str,x)}
      return caml_call2(map$15,rindex$0(str,escape_char,on),_tC_)}
    function lsplit2_exn$0(str,on,escape_char)
     {return split_at(str,index_exn$1(str,escape_char,on))}
    function rsplit2_exn$0(str,on,escape_char)
     {return split_at(str,rindex_exn$0(str,escape_char,on))}
    function last_non_drop_literal(drop,escape_char,t)
     {return rfindi
              (0,
               t,
               function(i,c)
                {var _tz_=1 - caml_call1(drop,c);
                 if(_tz_)
                  var _tA_=_tz_;
                 else
                  {var _tB_=is_char_escaping(t,escape_char,i);
                   if(! _tB_)return is_char_escaped(t,escape_char,i);
                   var _tA_=_tB_}
                 return _tA_})}
    function first_non_drop_literal(drop,escape_char,t)
     {return lfindi
              (0,
               t,
               function(i,c)
                {var _tw_=1 - caml_call1(drop,c);
                 if(_tw_)
                  var _tx_=_tw_;
                 else
                  {var _ty_=is_char_escaping(t,escape_char,i);
                   if(! _ty_)return is_char_escaped(t,escape_char,i);
                   var _tx_=_ty_}
                 return _tx_})}
    function rstrip_literal(opt,t,escape_char)
     {if(opt)var sth=opt[1],drop=sth;else var drop=is_whitespace;
      var match=last_non_drop_literal(drop,escape_char,t);
      if(match)
       {var i=match[1];
        return caml_call2(symbol$81,i,caml_ml_string_length(t) - 1 | 0)
                ?t
                :prefix(t,i + 1 | 0)}
      return cst$20}
    function lstrip_literal(opt,t,escape_char)
     {if(opt)var sth=opt[1],drop=sth;else var drop=is_whitespace;
      var match=first_non_drop_literal(drop,escape_char,t);
      if(match){var _tv_=match[1];return 0 === _tv_?t:drop_prefix(t,_tv_)}
      return cst$21}
    function strip_literal(opt,t,escape_char)
     {if(opt)var sth=opt[1],drop=sth;else var drop=is_whitespace;
      var length=caml_ml_string_length(t);
      if(! caml_call2(symbol$81,length,0))
       {var switch$0=0;
        if
         (caml_call1(drop,caml_string_get(t,0))
          ||
          caml_call1(drop,caml_string_get(t,length - 1 | 0)))
         switch$0 = 1;
        if(switch$0)
         {var match=first_non_drop_literal(drop,escape_char,t);
          if(match)
           {var
             first=match[1],
             match$0=last_non_drop_literal(drop,escape_char,t);
            if(match$0)
             {var last=match$0[1];
              return sub$8(t,first,(last - first | 0) + 1 | 0)}
            throw [0,Assert_failure,_cd_]}
          return cst$22}}
      return t}
    function between$2(t,low,high)
     {var _tu_=caml_call2(include$8[2],low,t);
      return _tu_?caml_call2(include$8[2],t,high):_tu_}
    function clamp_unchecked$0(t,min,max)
     {return caml_call2(include$8[1],t,min)
              ?min
              :caml_call2(include$8[2],t,max)?t:max}
    function clamp_exn$2(t,min,max)
     {if(caml_call2(include$8[2],min,max))return clamp_unchecked$0(t,min,max);
      throw [0,Assert_failure,_ce_]}
    function clamp$2(t,min,max)
     {if(caml_call2(include$8[5],min,max))
       {var _tt_=[0,[0,cst_max$1,caml_call1(sexp_of_t$2,max)],0];
        return error_s
                (caml_call2
                  (message,
                   cst_clamp_requires_min_max$1,
                   [0,[0,cst_min$1,caml_call1(sexp_of_t$2,min)],_tt_]))}
      return [0,clamp_unchecked$0(t,min,max)]}
    var
     symbol$131=include$8[1],
     symbol$132=include$8[2],
     symbol$133=include$8[3],
     symbol$134=include$8[4],
     symbol$135=include$8[5],
     symbol$136=include$8[6],
     ascending$18=include$8[7],
     descending$18=include$8[8],
     compare_string$1=include$8[9],
     equal_string$1=include$8[10],
     max$20=include$8[11],
     min$20=include$8[12],
     Base_String=
      [0,
       sub$8,
       subo$2,
       mem$4,
       is_empty$3,
       iter$3,
       fold$4,
       fold_result$4,
       fold_until$4,
       exists$5,
       for_all$4,
       count$4,
       sum$4,
       find$5,
       find_map$4,
       to_list$5,
       to_array$4,
       min_elt$5,
       max_elt$5,
       hash_fold_string$0,
       t_of_sexp$2,
       sexp_of_t$2,
       of_string$7,
       to_string$9,
       symbol$136,
       symbol$132,
       symbol$134,
       symbol$135,
       symbol$131,
       symbol$133,
       compare_string$1,
       min$20,
       max$20,
       ascending$18,
       descending$18,
       between$2,
       clamp_exn$2,
       clamp$2,
       comparator$3,
       validate_lbound$2,
       validate_ubound$2,
       validate_bound$2,
       pp$7,
       max_length,
       make$1,
       copy$1,
       init$4,
       symbol$77,
       concat$0,
       escaped,
       contains,
       uppercase,
       lowercase,
       capitalize,
       uncapitalize,
       [0,
        hash_fold_t$20,
        hash$7,
        t_of_sexp$2,
        sexp_of_t$2,
        symbol$125,
        symbol$126,
        symbol$127,
        symbol$128,
        symbol$129,
        symbol$130,
        equal$24,
        compare$40,
        min$19,
        max$19,
        ascending$17,
        descending$17,
        between$1,
        clamp_exn$1,
        clamp$1,
        comparator$4,
        validate_lbound$1,
        validate_ubound$1,
        validate_bound$1,
        is_suffix,
        is_prefix$0],
       index,
       index_exn,
       index_from,
       index_from_exn,
       rindex,
       rindex_exn,
       rindex_from,
       rindex_from_exn,
       [0,
        sexp_of_t$33,
        create$5,
        matches,
        index$0,
        index_exn$0,
        index_all,
        replace_first,
        replace_all],
       substr_index,
       substr_index_exn,
       substr_index_all,
       substr_replace_first,
       substr_replace_all,
       is_substring,
       is_substring_at,
       to_list_rev$0,
       rev$0,
       is_suffix$0,
       is_prefix$1,
       lsplit2_exn,
       rsplit2_exn,
       lsplit2,
       rsplit2,
       split,
       split_on_chars,
       split_lines,
       lfindi,
       rfindi,
       lstrip,
       rstrip,
       strip,
       map$22,
       mapi$3,
       foldi$3,
       concat_map$2,
       filter$3,
       tr,
       tr_multi,
       chop_suffix_exn,
       chop_prefix_exn,
       chop_suffix,
       chop_prefix,
       suffix,
       prefix,
       drop_suffix,
       drop_prefix,
       concat_array,
       equal_string$1,
       of_char$0,
       of_char_list,
       [0,
        escape_gen_exn,
        escape_gen,
        escape,
        unescape_gen_exn,
        unescape_gen,
        unescape,
        is_char_escaping,
        is_char_escaped,
        is_char_literal,
        index$1,
        index_exn$1,
        rindex$0,
        rindex_exn$0,
        index_from$0,
        index_from_exn$0,
        rindex_from$0,
        rindex_from_exn$0,
        split$0,
        split_on_chars$0,
        lsplit2$0,
        lsplit2_exn$0,
        rsplit2$0,
        rsplit2_exn$0,
        lstrip_literal,
        rstrip_literal,
        strip_literal]];
    caml_register_global(1048,Base_String,"Base__String");
    function pp$8(fmt,t)
     {var _ts_=caml_call1(to_string$6,t);
      return caml_call3(Stdlib_format[123],fmt,_cf_,_ts_)}
    var
     create$6=caml_create_bytes,
     To_bytes=_bb_([0,caml_ml_bytes_length,create$6,unsafe_blit$0]),
     blit$4=To_bytes[1],
     blito$2=To_bytes[2],
     unsafe_blit$5=To_bytes[3],
     sub$9=To_bytes[4],
     subo$3=To_bytes[5],
     comparator$5=_ap_([0,compare$32,sexp_of_bytes])[1],
     _cg_=Validate([0,compare$32,sexp_of_bytes]),
     validate_lbound$3=_cg_[1],
     validate_ubound$3=_cg_[2],
     validate_bound$3=_cg_[3],
     include$44=_u_([0,pp$8,module_name$6]),
     pp$9=include$44[1],
     To_string=Make_to_string([0],To_bytes),
     create$7=caml_create_bytes,
     length$6=caml_ml_bytes_length,
     unsafe_blit$6=caml_blit_string,
     length$7=caml_ml_string_length,
     From_string=_ba_([0,length$7],[0,length$6,create$7,unsafe_blit$6]);
    function init$5(n,f)
     {if(caml_call2(include$1[1],n,0))caml_call2(invalid_argf(_ch_),n,0);
      var t=caml_create_bytes(n),_tq_=n - 1 | 0,_tp_=0;
      if(! (_tq_ < 0))
       {var i=_tp_;
        for(;;)
         {caml_bytes_unsafe_set(t,i,caml_call1(f,i));
          var _tr_=i + 1 | 0;
          if(_tq_ !== i){var i=_tr_;continue}
          break}}
      return t}
    function of_char_list$0(l)
     {var t=caml_create_bytes(caml_call1(length,l));
      iteri$0(l,function(i,c){return caml_bytes_set(t,i,c)});
      return t}
    function to_list$6(t)
     {var i$1=caml_ml_bytes_length(t) - 1 | 0,i=i$1,acc=0;
      for(;;)
       {if(caml_call2(include$1[1],i,0))return acc;
        var
         acc$0=[0,caml_bytes_unsafe_get(t,i),acc],
         i$0=i - 1 | 0,
         i=i$0,
         acc=acc$0;
        continue}}
    function to_array$5(t)
     {return caml_call2
              (init,
               caml_ml_bytes_length(t),
               function(i){return caml_bytes_unsafe_get(t,i)})}
    function map$23(t,f){return caml_call2(map$13,f,t)}
    function mapi$4(t,f){return caml_call2(mapi$1,f,t)}
    function fold$5(t,init,f)
     {var len=caml_ml_bytes_length(t),pos=0,acc=init;
      for(;;)
       {if(caml_call2(include$1[10],pos,len))return acc;
        var
         acc$0=caml_call2(f,acc,caml_bytes_unsafe_get(t,pos)),
         pos$0=pos + 1 | 0,
         pos=pos$0,
         acc=acc$0;
        continue}}
    function foldi$4(t,init,f)
     {var len=caml_ml_bytes_length(t),pos=0,acc=init;
      for(;;)
       {if(caml_call2(include$1[10],pos,len))return acc;
        var
         acc$0=caml_call3(f,pos,acc,caml_bytes_unsafe_get(t,pos)),
         pos$0=pos + 1 | 0,
         pos=pos$0,
         acc=acc$0;
        continue}}
    function tr$0(target,replacement,s)
     {var _tn_=caml_ml_bytes_length(s) - 1 | 0,_tm_=0;
      if(! (_tn_ < 0))
       {var i=_tm_;
        for(;;)
         {if(caml_call2(equal_char$1,caml_bytes_unsafe_get(s,i),target))
           caml_bytes_unsafe_set(s,i,replacement);
          var _to_=i + 1 | 0;
          if(_tn_ !== i){var i=_to_;continue}
          break}}
      return 0}
    function tr_multi$0(target,replacement)
     {if(caml_call2(include$1[4],caml_ml_string_length(target),0))
       return function(_tl_){return 0};
      if(caml_call2(include$1[4],caml_ml_string_length(replacement),0))
       return caml_call1(invalid_arg$0,cst_tr_multi_replacement_is_th);
      var match=tr_create_map(target,replacement);
      if(match)
       {var tr_map=match[1];
        return function(s)
         {var _tj_=caml_ml_bytes_length(s) - 1 | 0,_ti_=0;
          if(! (_tj_ < 0))
           {var i=_ti_;
            for(;;)
             {caml_bytes_unsafe_set
               (s,i,caml_string_unsafe_get(tr_map,caml_bytes_unsafe_get(s,i)));
              var _tk_=i + 1 | 0;
              if(_tj_ !== i){var i=_tk_;continue}
              break}}
          return 0}}
      return function(_th_){return 0}}
    function between$3(t,low,high)
     {var _tg_=caml_call2(include$9[2],low,t);
      return _tg_?caml_call2(include$9[2],t,high):_tg_}
    function clamp_unchecked$1(t,min,max)
     {return caml_call2(include$9[1],t,min)
              ?min
              :caml_call2(include$9[2],t,max)?t:max}
    function clamp_exn$3(t,min,max)
     {if(caml_call2(include$9[2],min,max))return clamp_unchecked$1(t,min,max);
      throw [0,Assert_failure,_ci_]}
    function clamp$3(t,min,max)
     {if(caml_call2(include$9[5],min,max))
       {var _tf_=[0,[0,cst_max$2,caml_call1(sexp_of_bytes,max)],0];
        return error_s
                (caml_call2
                  (message,
                   cst_clamp_requires_min_max$2,
                   [0,[0,cst_min$2,caml_call1(sexp_of_bytes,min)],_tf_]))}
      return [0,clamp_unchecked$1(t,min,max)]}
    function contains$0(pos,len,t,char$0)
     {var
       match=get_pos_len_exn(pos,len,0,caml_ml_bytes_length(t)),
       len$0=match[2],
       pos$0=match[1],
       last=pos$0 + len$0 | 0,
       i=pos$0;
      for(;;)
       {var _tc_=caml_call2(include$1[1],i,last);
        if(_tc_)
         {var _td_=caml_call2(equal_char$1,caml_bytes_get(t,i),char$0);
          if(! _td_){var i$0=i + 1 | 0,i=i$0;continue}
          var _te_=_td_}
        else
         var _te_=_tc_;
        return _te_}}
    var
     symbol$137=include$9[1],
     symbol$138=include$9[2],
     symbol$139=include$9[3],
     symbol$140=include$9[4],
     symbol$141=include$9[5],
     symbol$142=include$9[6],
     ascending$19=include$9[7],
     descending$19=include$9[8],
     compare_bytes=include$9[9],
     equal_bytes=include$9[10],
     max$21=include$9[11],
     min$21=include$9[12],
     length$8=caml_ml_bytes_length,
     Base_Bytes=
      [0,
       bytes_of_sexp,
       sexp_of_bytes,
       blit$4,
       blito$2,
       unsafe_blit$5,
       sub$9,
       subo$3,
       symbol$142,
       symbol$138,
       symbol$140,
       symbol$141,
       symbol$137,
       symbol$139,
       equal_bytes,
       compare_bytes,
       min$21,
       max$21,
       ascending$19,
       descending$19,
       between$3,
       clamp_exn$3,
       clamp$3,
       comparator$5,
       validate_lbound$3,
       validate_ubound$3,
       validate_bound$3,
       of_string$5,
       to_string$6,
       pp$9,
       To_string,
       From_string,
       create$2,
       make$2,
       map$23,
       mapi$4,
       copy$2,
       init$5,
       of_char_list$0,
       length$8,
       caml_bytes_get,
       caml_bytes_set,
       fill$0,
       tr$0,
       tr_multi$0,
       to_list$6,
       to_array$5,
       fold$5,
       foldi$4,
       contains$0,
       max_length,
       unsafe_to_string,
       unsafe_of_string_promise_no_mu];
    caml_register_global(1049,Base_Bytes,"Base__Bytes");
    function parse_hex(lexbuf)
     {var ocaml_lex_state=0;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_call3
           (Stdlib_lexing[18],ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)
         {var
           body=
            caml_call3(Stdlib_lexing[14],lexbuf,lexbuf[5] + 3 | 0,lexbuf[6]);
          return [0,body]}
        if(1 === ocaml_lex_state$0)
         {var
           body$0=
            caml_call3(Stdlib_lexing[14],lexbuf,lexbuf[5] + 2 | 0,lexbuf[6]);
          return [1,body$0]}
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    var Base_Hex_lexer=[0,parse_hex];
    caml_register_global(1051,Base_Hex_lexer,"Base__Hex_lexer");
    function convert_failure(x,a,b,to_string)
     {var _tb_=caml_call1(to_string,x);
      return caml_call4(failwithf(_cj_),a,b,_tb_,0)}
    var
     num_bits_nativeint=num_bits$0(word_size),
     num_bits_int32=32,
     num_bits_int64=64;
    if
     (!
      caml_call2(symbol$81,num_bits,63)
      &&
      !
      caml_call2(symbol$81,num_bits,31)
      &&
      !
      caml_call2(symbol$81,num_bits,32))
     throw [0,Assert_failure,_ii_];
    var
     _ck_=Stdlib_int32[10],
     _cl_=Stdlib_int32[9],
     _cs_=Stdlib_int64[14],
     _ct_=Stdlib_nativeint[15],
     _cm_=Stdlib_int64[10],
     _cn_=Stdlib_int64[9],
     _co_=Stdlib_nativeint[11],
     _cp_=Stdlib_nativeint[10],
     _cq_=Caml$0[21],
     _cr_=Stdlib_int32[14];
    function int32_to_int_trunc(_ta_){return _ta_}
    function int_to_int32_trunc(_s$_){return _s$_}
    var
     _cu_=
      caml_call2(symbol$79,num_bits,num_bits_int32)
       ?function(param){return 1}
       :function(x)
         {var _s__=caml_call2(symbol$79,caml_call2(compare$13,_ck_,x),0);
          return _s__
                  ?caml_call2(symbol$79,caml_call2(compare$13,x,_cl_),0)
                  :_s__},
     _cv_=
      caml_call2(symbol$79,num_bits_int32,num_bits)
       ?function(param){return 1}
       :function(x)
         {var
           _s9_=
            caml_call2(symbol$79,caml_call2(compare$14,min_value$0,x),0);
          return _s9_
                  ?caml_call2
                    (symbol$79,caml_call2(compare$14,x,max_value$0),0)
                  :_s9_};
    function int_to_int32(x){return _cu_(x)?[0,x]:0}
    function int32_to_int(x){return _cv_(x)?[0,x]:0}
    function int_to_int32_exn(x)
     {return _cu_(x)?x:convert_failure(x,cst_int$0,cst_int32$0,_cq_)}
    function int32_to_int_exn(x)
     {return _cv_(x)?x:convert_failure(x,cst_int32$1,cst_int$1,_cr_)}
    if(caml_call2(symbol$78,num_bits,num_bits_int64))
     {var
       int_to_int64=caml_int64_of_int32,
       int64_to_int_trunc=caml_int64_to_int32,
       min$22=caml_int64_of_int32(min_value$0),
       max$22=caml_int64_of_int32(max_value$0),
       int64_is_representable_as_int=
        function(x)
         {var _s8_=caml_call2(symbol$79,caml_call2(compare$15,min$22,x),0);
          return _s8_
                  ?caml_call2(symbol$79,caml_call2(compare$15,x,max$22),0)
                  :_s8_},
       int64_to_int=
        function(x)
         {return int64_is_representable_as_int(x)?[0,caml_int64_to_int32(x)]:0},
       int64_to_int_exn=
        function(x)
         {return int64_is_representable_as_int(x)
                  ?caml_int64_to_int32(x)
                  :convert_failure(x,cst_int64$0,cst_int$2,_cs_)};
      if(caml_call2(symbol$79,num_bits,num_bits_nativeint))
       {var
         int_to_nativeint=function(_s7_){return _s7_},
         nativeint_to_int_trunc=function(_s6_){return _s6_},
         _cw_=
          caml_call2(symbol$79,num_bits_nativeint,num_bits)
           ?function(param){return 1}
           :function(x)
             {var
               _s5_=
                caml_call2(symbol$79,caml_call2(compare$16,min_value$0,x),0);
              return _s5_
                      ?caml_call2
                        (symbol$79,caml_call2(compare$16,x,max_value$0),0)
                      :_s5_},
         nativeint_to_int=function(x){return _cw_(x)?[0,x]:0},
         nativeint_to_int_exn=
          function(x)
           {return _cw_(x)?x:convert_failure(x,cst_nativeint$0,cst_int$3,_ct_)};
        if(caml_call2(symbol$78,num_bits_int32,num_bits_int64))
         {var
           int32_to_int64=caml_int64_of_int32,
           int64_to_int32_trunc=caml_int64_to_int32,
           min$23=caml_int64_of_int32(_ck_),
           max$23=caml_int64_of_int32(_cl_),
           int64_is_representable_as_int3=
            function(x)
             {var
               _s4_=
                caml_call2(symbol$79,caml_call2(compare$15,min$23,x),0);
              return _s4_
                      ?caml_call2(symbol$79,caml_call2(compare$15,x,max$23),0)
                      :_s4_},
           int64_to_int32=
            function(x)
             {return int64_is_representable_as_int3(x)
                      ?[0,caml_int64_to_int32(x)]
                      :0},
           int64_to_int32_exn=
            function(x)
             {return int64_is_representable_as_int3(x)
                      ?caml_int64_to_int32(x)
                      :convert_failure(x,cst_int64$1,cst_int32$2,_cs_)};
          if(caml_call2(symbol$79,num_bits_int32,num_bits_nativeint))
           {var
             int32_to_nativeint=function(_s3_){return _s3_},
             nativeint_to_int32_trunc=function(_s2_){return _s2_},
             _cx_=
              caml_call2(symbol$79,num_bits_nativeint,num_bits_int32)
               ?function(param){return 1}
               :function(x)
                 {var
                   _s1_=
                    caml_call2(symbol$79,caml_call2(compare$16,_ck_,x),0);
                  return _s1_
                          ?caml_call2(symbol$79,caml_call2(compare$16,x,_cl_),0)
                          :_s1_},
             nativeint_to_int32=function(x){return _cx_(x)?[0,x]:0},
             nativeint_to_int32_exn=
              function(x)
               {return _cx_(x)
                        ?x
                        :convert_failure(x,cst_nativeint$1,cst_int32$3,_ct_)};
            if(caml_call2(symbol$83,num_bits_int64,num_bits_nativeint))
             {var
               int64_to_nativeint_trunc=caml_int64_to_int32,
               nativeint_to_int64=caml_int64_of_int32;
              if(caml_call2(symbol$79,num_bits_int64,num_bits_nativeint))
               var int64_is_representable_as_nati=function(param){return 1};
              else
               var
                min$38=caml_int64_of_int32(_co_),
                max$39=caml_int64_of_int32(_cp_),
                int64_is_representable_as_nati=
                 function(x)
                  {var
                    _s0_=
                     caml_call2(symbol$79,caml_call2(compare$15,min$38,x),0);
                   return _s0_
                           ?caml_call2(symbol$79,caml_call2(compare$15,x,max$39),0)
                           :_s0_};
              var
               to_nativeint=
                function(x)
                 {return int64_is_representable_as_nati(x)
                          ?[0,caml_int64_to_int32(x)]
                          :0},
               to_nativeint_exn=
                function(x)
                 {return int64_is_representable_as_nati(x)
                          ?caml_int64_to_int32(x)
                          :convert_failure(x,cst_int64$2,cst_nativeint$2,_cs_)},
               min$24=caml_int64_shift_right(_cm_,1),
               max$24=caml_int64_shift_right(_cn_,1),
               int64_is_representable_as_int6=
                function(x)
                 {var
                   _sZ_=
                    caml_call2(symbol$79,caml_call2(compare$15,min$24,x),0);
                  return _sZ_
                          ?caml_call2(symbol$79,caml_call2(compare$15,x,max$24),0)
                          :_sZ_},
               int64_fit_on_int63_exn=
                function(x)
                 {return int64_is_representable_as_int6(x)
                          ?0
                          :convert_failure(x,cst_int64$3,cst_int63,_cs_)},
               insert_delimiter_every=
                function(input,delimiter,chars_per_delimiter)
                 {var input_length=caml_ml_string_length(input);
                  if(caml_call2(symbol$79,input_length,chars_per_delimiter))
                   return input;
                  var match=caml_string_get(input,0),switch$0=0;
                  if(43 !== match && 45 !== match)
                   {var has_sign=0;switch$0 = 1}
                  if(! switch$0)var has_sign=1;
                  var
                   num_digits=has_sign?input_length - 1 | 0:input_length,
                   num_delimiters=
                    caml_div(num_digits - 1 | 0,chars_per_delimiter),
                   output_length=input_length + num_delimiters | 0,
                   output=caml_create_bytes(output_length),
                   input_pos=[0,input_length - 1 | 0],
                   output_pos=[0,output_length - 1 | 0],
                   num_chars_until_delimiter=[0,chars_per_delimiter],
                   first_digit_pos=has_sign?1:0;
                  for(;;)
                   {if(caml_call2(symbol$83,input_pos[1],first_digit_pos))
                     {if(caml_call2(symbol$81,num_chars_until_delimiter[1],0))
                       {caml_bytes_set(output,output_pos[1],delimiter);
                        decr(output_pos);
                        num_chars_until_delimiter[1] = chars_per_delimiter}
                      var _sY_=caml_string_get(input,input_pos[1]);
                      caml_bytes_set(output,output_pos[1],_sY_);
                      decr(input_pos);
                      decr(output_pos);
                      decr(num_chars_until_delimiter);
                      continue}
                    if(has_sign)
                     caml_bytes_set(output,0,caml_string_get(input,0));
                    return unsafe_to_string(output)}},
               insert_delimiter=
                function(input,delimiter)
                 {return insert_delimiter_every(input,delimiter,3)},
               insert_underscores=
                function(input){return insert_delimiter(input,95)},
               _cz_=
                function(I)
                 {var compare=I[1],hash_fold_t=I[2],func=I[3];
                  function hash(x){return caml_call1(func,x)}
                  var chars_per_delimiter=4;
                  function to_string(delimiter,t)
                   {if(delimiter)
                     var
                      delimiter$0=delimiter[1],
                      make_suffix=
                       function(t)
                        {return insert_delimiter_every
                                 (caml_call1(I[4],t),delimiter$0,chars_per_delimiter)};
                    else
                     var make_suffix=I[4];
                    return caml_call2(I[7],t,I[6])
                            ?caml_call2
                              (symbol$77,
                               cst_0x,
                               caml_call1(make_suffix,caml_call1(I[8],t)))
                            :caml_call2(symbol$77,cst_0x$0,caml_call1(make_suffix,t))}
                  function to_string$0(t){return to_string(0,t)}
                  function to_string_hum(opt,t)
                   {if(opt)var sth=opt[1],delimiter=sth;else var delimiter=95;
                    return to_string([0,delimiter],t)}
                  function invalid(str)
                   {return caml_call1
                            (failwith$0,caml_call3(sprintf,_cy_,I[9],str))}
                  function of_string_with_delimiter(str)
                   {var
                     _sX_=
                      filter$3
                       (str,function(c){return caml_call2(symbol$121,c,95)});
                    return caml_call1(I[5],_sX_)}
                  function of_string(str)
                   {var
                     lex=caml_call2(Stdlib_lexing[3],0,str),
                     result=try_with$2(function(param){return parse_hex(lex)});
                    if(caml_call2(symbol$81,lex[6],lex[3]))
                     {if(result)
                       {var _sV_=result[1];
                        if(0 === _sV_[0])
                         {var body=_sV_[1],_sW_=of_string_with_delimiter(body);
                          return caml_call1(I[8],_sW_)}
                        var body$0=_sV_[1];
                        return of_string_with_delimiter(body$0)}
                      return invalid(str)}
                    return invalid(str)}
                  var
                   include=Of_stringable([0,of_string,to_string$0]),
                   t_of_sexp=include[1],
                   sexp_of_t=include[2];
                  return [0,
                          [0,
                           t_of_sexp,
                           sexp_of_t,
                           compare,
                           hash_fold_t,
                           hash,
                           of_string,
                           to_string$0,
                           to_string_hum]]},
               _cA_=
                function(I)
                 {var chars_per_delimiter=3;
                  function to_string_hum(opt,t)
                   {if(opt)var sth=opt[1],delimiter=sth;else var delimiter=95;
                    return insert_delimiter_every
                            (caml_call1(I[1],t),delimiter,chars_per_delimiter)}
                  function sexp_of_t(t)
                   {var
                     s=caml_call1(I[1],t),
                     s$0=
                      1009018843 <= of_int_style[1]
                       ?s
                       :insert_delimiter_every(s,95,chars_per_delimiter);
                    return [0,s$0]}
                  return [0,to_string_hum,sexp_of_t]},
               Base_Int_conversions=
                [0,
                 int_to_int32,
                 int_to_int32_exn,
                 int_to_int32_trunc,
                 int_to_int64,
                 int_to_nativeint,
                 int32_to_int,
                 int32_to_int_exn,
                 int32_to_int_trunc,
                 int32_to_int64,
                 int32_to_nativeint,
                 int64_to_int,
                 int64_to_int_exn,
                 int64_to_int_trunc,
                 int64_to_int32,
                 int64_to_int32_exn,
                 int64_to_int32_trunc,
                 to_nativeint,
                 to_nativeint_exn,
                 int64_to_nativeint_trunc,
                 int64_fit_on_int63_exn,
                 int64_is_representable_as_int6,
                 nativeint_to_int,
                 nativeint_to_int_exn,
                 nativeint_to_int_trunc,
                 nativeint_to_int32,
                 nativeint_to_int32_exn,
                 nativeint_to_int32_trunc,
                 nativeint_to_int64,
                 num_bits,
                 num_bits_int32,
                 num_bits_int64,
                 num_bits_nativeint,
                 _cA_,
                 _cz_,
                 of_int_style,
                 insert_delimiter_every,
                 insert_delimiter,
                 insert_underscores];
              caml_register_global
               (1052,Base_Int_conversions,"Base__Int_conversions");
              var Base_Intable=[0];
              caml_register_global(1053,Base_Intable,"Base__Intable");
              var Base_Int_intf=[0];
              caml_register_global(1054,Base_Int_intf,"Base__Int_intf");
              var
               int32_positive_overflow_bounds=_cB_.slice(),
               switcher=num_bits - 31 | 0,
               overflow_bound_max_int32_value=2147483647,
               overflow_bound_max_int_value=2147483647;
              if(1 < switcher >>> 0)
               {if(32 !== switcher)throw [0,Assert_failure,_ib_];
                var
                 int_positive_overflow_bounds=
                  [0,
                   caml_int64_to_int32(_cE_),
                   caml_int64_to_int32(_cD_),
                   caml_int64_to_int32(_cC_),
                   1664510,
                   46340,
                   5404,
                   1290,
                   463,
                   215,
                   118,
                   73,
                   49,
                   35,
                   27,
                   21,
                   17,
                   14,
                   12,
                   10,
                   9,
                   8,
                   7,
                   7,
                   6,
                   5,
                   5,
                   5,
                   4,
                   4,
                   4,
                   4,
                   3,
                   3,
                   3,
                   3,
                   3,
                   3,
                   3,
                   3,
                   3,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   2,
                   1,
                   1]}
              else
               var
                int_positive_overflow_bounds=
                 switcher
                  ?map
                    (int32_positive_overflow_bounds,function(_sU_){return _sU_})
                  :_ic_.slice();
              var
               int63_on_int64_positive_overfl=_cF_.slice(),
               int64_positive_overflow_bounds=_cG_.slice(),
               int64_negative_overflow_bounds=_cH_.slice(),
               Base_Pow_overflow_bounds=
                [0,
                 overflow_bound_max_int32_value,
                 int32_positive_overflow_bounds,
                 overflow_bound_max_int_value,
                 int_positive_overflow_bounds,
                 overflow_bound_max_int63_on_in,
                 int63_on_int64_positive_overfl,
                 overflow_bound_max_int64_value,
                 int64_positive_overflow_bounds,
                 int64_negative_overflow_bounds];
              caml_register_global
               (1055,Base_Pow_overflow_bounds,"Base__Pow_overflow_bounds");
              var
               negative_exponent=
                function(param){return caml_call1(invalid_argf(_cI_),0)},
               overflow=
                function(param){return caml_call1(invalid_argf(_cJ_),0)},
               int_pow=
                function(base,exponent)
                 {if(caml_call2(symbol$78,exponent,0))negative_exponent(0);
                  var _sQ_=caml_call2(symbol$82,caml_call1(abs$0,base),1);
                  if(_sQ_)
                   {var _sR_=caml_call2(symbol$82,exponent,63);
                    if(_sR_)
                     var _sS_=_sR_;
                    else
                     var
                      _sT_=
                       caml_check_bound(int_positive_overflow_bounds,exponent)
                        [1 + exponent],
                      _sS_=caml_call2(symbol$82,caml_call1(abs$0,base),_sT_)}
                  else
                   var _sS_=_sQ_;
                  if(_sS_)overflow(0);
                  return runtime.Base_int_math_int_pow_stub(base,exponent)},
               abs$1=Stdlib_int64[8],
               int64_pow=
                function(base,exponent)
                 {if(caml_lessthan(exponent,_cK_))negative_exponent(0);
                  var
                   _sH_=caml_greaterthan(base,_cL_),
                   _sI_=_sH_ || caml_lessthan(base,_cP_);
                  if(_sI_)
                   {var _sJ_=caml_greaterthan(exponent,_cM_);
                    if(_sJ_)
                     var _sK_=_sJ_;
                    else
                     {var _sL_=caml_greaterequal(base,_cN_);
                      if(_sL_)
                       var
                        _sM_=caml_int64_to_int32(exponent),
                        _sN_=
                         caml_greaterthan
                          (base,
                           caml_check_bound(int64_positive_overflow_bounds,_sM_)
                            [1 + _sM_]);
                      else
                       var _sN_=_sL_;
                      if(_sN_)
                       var _sK_=_sN_;
                      else
                       {var _sO_=caml_lessthan(base,_cO_);
                        if(_sO_)
                         var
                          _sP_=caml_int64_to_int32(exponent),
                          _sK_=
                           caml_lessthan
                            (base,
                             caml_check_bound(int64_negative_overflow_bounds,_sP_)
                              [1 + _sP_]);
                        else
                         var _sK_=_sO_}}}
                  else
                   var _sK_=_sI_;
                  if(_sK_)overflow(0);
                  return runtime.Base_int_math_int64_pow_stub(base,exponent)},
               int63_pow_on_int64=
                function(base,exponent)
                 {if(caml_lessthan(exponent,_cQ_))negative_exponent(0);
                  var _sC_=caml_greaterthan(caml_call1(abs$1,base),_cR_);
                  if(_sC_)
                   {var _sD_=caml_greaterthan(exponent,_cS_);
                    if(_sD_)
                     var _sE_=_sD_;
                    else
                     var
                      _sF_=caml_int64_to_int32(exponent),
                      _sG_=
                       caml_check_bound(int63_on_int64_positive_overfl,_sF_)
                        [1 + _sF_],
                      _sE_=caml_greaterthan(caml_call1(abs$1,base),_sG_)}
                  else
                   var _sE_=_sC_;
                  if(_sE_)overflow(0);
                  return runtime.Base_int_math_int64_pow_stub(base,exponent)},
               Private$2=[0,int_pow,int64_pow,int63_pow_on_int64],
               _cV_=
                function(X)
                 {function symbol(x,y)
                   {if(caml_call2(X[11],y,X[18]))
                     {var _sA_=caml_call1(X[4],y),_sB_=caml_call1(X[4],x);
                      caml_call3(invalid_argf(_cT_),_sB_,_sA_,0)}
                    var rval=caml_call2(X[20],x,y);
                    return caml_call2(X[14],rval,X[18])
                            ?caml_call2(X[5],rval,y)
                            :rval}
                  var one=caml_call1(X[19],1);
                  function symbol$0(x,y)
                   {if(caml_call2(X[11],y,X[18]))
                     {var _sw_=caml_call1(X[4],y),_sx_=caml_call1(X[4],x);
                      caml_call3(invalid_argf(_cU_),_sx_,_sw_,0)}
                    if(caml_call2(X[14],x,X[18]))
                     {var
                       _sy_=caml_call2(X[5],x,one),
                       _sz_=caml_call2(X[8],_sy_,y);
                      return caml_call2(X[6],_sz_,one)}
                    return caml_call2(X[8],x,y)}
                  function symbol$1(x,y)
                   {var _sv_=caml_call1(X[2],y);
                    return caml_call1(X[2],x) / _sv_}
                  function round_down(i,modulus)
                   {var _su_=symbol(i,modulus);return caml_call2(X[6],i,_su_)}
                  function round_up(i,modulus)
                   {var remainder=symbol(i,modulus);
                    if(caml_call2(X[12],remainder,X[18]))return i;
                    var _st_=caml_call2(X[5],i,modulus);
                    return caml_call2(X[6],_st_,remainder)}
                  function round_towards_zero(i,to_multiple_of)
                   {return caml_call2(X[12],i,X[18])
                            ?X[18]
                            :caml_call2(X[13],i,X[18])
                              ?round_down(i,to_multiple_of)
                              :round_up(i,to_multiple_of)}
                  function round_nearest(i,modulus)
                   {var
                     remainder=symbol(i,modulus),
                     _sq_=caml_call1(X[19],2),
                     _sr_=caml_call2(X[7],remainder,_sq_);
                    if(caml_call2(X[14],_sr_,modulus))
                     return caml_call2(X[6],i,remainder);
                    var _ss_=caml_call2(X[6],i,remainder);
                    return caml_call2(X[5],_ss_,modulus)}
                  function round(opt,i,to_multiple_of)
                   {if(opt)var sth=opt[1],dir=sth;else var dir=857423934;
                    return 857423934 <= dir
                            ?1003109192 <= dir
                              ?round_towards_zero(i,to_multiple_of)
                              :round_nearest(i,to_multiple_of)
                            :759637122 <= dir
                              ?round_down(i,to_multiple_of)
                              :round_up(i,to_multiple_of)}
                  return [0,
                          symbol,
                          symbol$0,
                          symbol$1,
                          round,
                          round_towards_zero,
                          round_down,
                          round_up,
                          round_nearest]},
               Base_Int_math=[0,_cV_,Private$2];
              caml_register_global(1056,Base_Int_math,"Base__Int_math");
              var
               int64_popcount=
                function(x)
                 {var
                   x$0=
                    caml_int64_sub
                     (x,caml_int64_and(caml_int64_shift_right_unsigne(x,1),m1)),
                   x$1=
                    caml_int64_add
                     (caml_int64_and(x$0,m2),
                      caml_int64_and(caml_int64_shift_right_unsigne(x$0,2),m2)),
                   x$2=
                    caml_int64_and
                     (caml_int64_add(x$1,caml_int64_shift_right_unsigne(x$1,4)),
                      m4);
                  return caml_int64_to_int32
                          (caml_int64_shift_right_unsigne(caml_int64_mul(x$2,h01),56))},
               int32_popcount=
                function(x)
                 {return int64_popcount
                          (caml_int64_and(caml_int64_of_int32(x),mask))},
               _cW_=Stdlib_nativeint[9];
              if(32 === _cW_)
               var popcount=function(x){return int32_popcount(x)};
              else
               {if(64 !== _cW_)throw [0,Assert_failure,_ia_];
                var
                 popcount=
                  function(x){return int64_popcount(caml_int64_of_int32(x))}}
              var
               popcount$0=
                function(_sp_)
                 {return runtime.Base_int_math_int_popcount(_sp_)},
               Base_Popcount=
                [0,popcount$0,int32_popcount,int64_popcount,popcount];
              caml_register_global(1057,Base_Popcount,"Base__Popcount");
              var
               _cX_=
                _a5_
                 ([0,
                   compare$29,
                   hash_fold_t$16,
                   to_int$1,
                   t_of_sexp$20,
                   sexp_of_t$25,
                   of_string$2,
                   to_string$3,
                   module_name$2]),
               hash_fold_t$21=_cX_[1],
               hash$8=_cX_[2],
               t_of_sexp$25=_cX_[3],
               sexp_of_t$34=_cX_[4],
               of_string$8=_cX_[5],
               to_string$10=_cX_[6],
               between$4=_cX_[19],
               clamp_exn$4=_cX_[20],
               clamp$4=_cX_[21],
               comparator$6=_cX_[22],
               validate_lbound$4=_cX_[23],
               validate_ubound$4=_cX_[24],
               validate_bound$4=_cX_[25],
               pp$10=_cX_[26],
               to_float$0=
                function(param)
                 {switch(param)
                   {case 0:return -1.;case 1:return 0.;default:return 1.}},
               flip$0=
                function(param)
                 {switch(param)
                   {case 0:return 2;case 1:return 1;default:return 0}},
               symbol$143=
                function(t$0,t)
                 {var _so_=to_int$1(t);
                  return sign(caml_mul(to_int$1(t$0),_so_))},
               symbol$144=Replace_polymorphic_compare[1],
               symbol$145=Replace_polymorphic_compare[2],
               symbol$146=Replace_polymorphic_compare[3],
               symbol$147=Replace_polymorphic_compare[4],
               symbol$148=Replace_polymorphic_compare[5],
               symbol$149=Replace_polymorphic_compare[6],
               ascending$20=Replace_polymorphic_compare[7],
               descending$20=Replace_polymorphic_compare[8],
               compare$41=Replace_polymorphic_compare[9],
               equal$25=Replace_polymorphic_compare[10],
               max$25=Replace_polymorphic_compare[11],
               min$25=Replace_polymorphic_compare[12],
               Base_Sign=
                [0,
                 all$8,
                 hash_fold_t$21,
                 hash$8,
                 t_of_sexp$25,
                 sexp_of_t$34,
                 of_string$8,
                 to_string$10,
                 symbol$149,
                 symbol$145,
                 symbol$147,
                 symbol$148,
                 symbol$144,
                 symbol$146,
                 equal$25,
                 compare$41,
                 min$25,
                 max$25,
                 ascending$20,
                 descending$20,
                 between$4,
                 clamp_exn$4,
                 clamp$4,
                 comparator$6,
                 validate_lbound$4,
                 validate_ubound$4,
                 validate_bound$4,
                 pp$10,
                 sign,
                 to_int$1,
                 to_float$0,
                 flip$0,
                 symbol$143];
              caml_register_global(1058,Base_Sign,"Base__Sign");
              var
               func$9=function(x){return caml_call1(func$4,x)},
               compare$42=function(x,y){return caml_call2(include$1[7],x,y)},
               of_string$9=
                function(s)
                 {try
                   {var _sm_=caml_int_of_string(s);return _sm_}
                  catch(_sn_){return caml_call2(failwithf(_cY_),s,0)}},
               float_lower_bound=lower_bound_for_int(num_bits),
               float_upper_bound=upper_bound_for_int(num_bits),
               of_int$2=function(_sl_){return _sl_},
               of_float_unchecked=function(_sk_){return _sk_ | 0},
               to_int$3=
                function(f)
                 {if
                   (caml_call2(include$7[6],f,float_lower_bound)
                    &&
                    caml_call2(include$7[2],f,float_upper_bound))
                   return f | 0;
                  return caml_call2(invalid_argf(_cZ_),f + 0.,0)},
               comparator$7=_ap_([0,compare$42,sexp_of_t$4])[1],
               _c0_=_a2_([0,compare$42,sexp_of_t$4,0]),
               validate_lbound$5=_c0_[1],
               validate_ubound$5=_c0_[2],
               validate_bound$5=_c0_[3],
               validate_positive=_c0_[4],
               validate_non_negative=_c0_[5],
               validate_negative=_c0_[6],
               validate_non_positive=_c0_[7],
               is_positive=_c0_[8],
               is_non_negative=_c0_[9],
               is_negative=_c0_[10],
               is_non_positive=_c0_[11],
               include$45=_cA_([0,to_string]),
               to_string_hum$1=include$45[1],
               sexp_of_t$35=include$45[2],
               zero=0,
               one=1,
               minus_one=-1,
               hash$9=function(x){return caml_call1(func$4,x)},
               symbol$150=include$1[1],
               to_string$11=function(i){return caml_call2(sprintf,_c1_,i)},
               of_string$10=
                function(s)
                 {function _si_(_sj_){return _sj_}
                  return caml_call3(Stdlib_scanf[4],s,_c2_,_si_)},
               include$46=
                _cz_
                 ([0,
                   compare$13,
                   hash_fold_t$4,
                   hash$9,
                   to_string$11,
                   of_string$10,
                   zero,
                   symbol$150,
                   neg,
                   module_name$7]),
               Hex=include$46[1],
               include$47=_v_([0,module_name$8,to_string]),
               pp$11=include$47[1],
               between$5=
                function(t,low,high)
                 {var _sh_=caml_call2(include$1[2],low,t);
                  return _sh_?caml_call2(include$1[2],t,high):_sh_},
               clamp_unchecked$2=
                function(t,min,max)
                 {return caml_call2(include$1[1],t,min)
                          ?min
                          :caml_call2(include$1[2],t,max)?t:max},
               clamp_exn$5=
                function(t,min,max)
                 {if(caml_call2(include$1[2],min,max))
                   return clamp_unchecked$2(t,min,max);
                  throw [0,Assert_failure,_c3_]},
               clamp$5=
                function(t,min,max)
                 {if(caml_call2(include$1[5],min,max))
                   {var _sg_=[0,[0,cst_max$3,caml_call1(sexp_of_t$4,max)],0];
                    return error_s
                            (caml_call2
                              (message,
                               cst_clamp_requires_min_max$3,
                               [0,[0,cst_min$3,caml_call1(sexp_of_t$4,min)],_sg_]))}
                  return [0,clamp_unchecked$2(t,min,max)]},
               pred$1=function(i){return i - 1 | 0},
               succ$2=function(i){return i + 1 | 0},
               to_int_exn=function(i){return i},
               of_int$3=function(i){return i},
               max_value$2=Caml$0[7],
               min_value$2=Caml$0[8],
               max_value_30_bits=1073741823,
               abs$2=function(x){return caml_call1(abs$0,x)},
               symbol$151=function(x,y){return x + y | 0},
               symbol$152=function(x,y){return x - y | 0},
               symbol$153=caml_mul,
               symbol$154=caml_div,
               symbol$155=function(x){return - x | 0},
               rem=caml_mod,
               incr$0=function(_sf_){_sf_[1]++;return 0},
               decr$0=function(_se_){_se_[1] += -1;return 0},
               shift_right$0=function(a,b){return a >> b},
               shift_right_logical=function(a,b){return a >>> b | 0},
               shift_left=function(a,b){return a << b},
               bit_not=function(a){return caml_call1(lnot$0,a)},
               bit_or=function(a,b){return a | b},
               bit_and=function(a,b){return a & b},
               bit_xor=function(a,b){return a ^ b},
               pow=Private$2[1],
               symbol$156=function(b,e){return caml_call2(pow,b,e)},
               non_positive_argument=
                function(param){return caml_call1(invalid_argf(_c4_),0)},
               ceil_pow2=
                function(x)
                 {if(caml_call2(symbol$79,x,0))non_positive_argument(0);
                  var
                   x$0=x - 1 | 0,
                   x$1=x$0 | x$0 >>> 1 | 0,
                   x$2=x$1 | x$1 >>> 2 | 0,
                   x$3=x$2 | x$2 >>> 4 | 0,
                   x$4=x$3 | x$3 >>> 8 | 0,
                   x$5=x$4 | x$4 >>> 16 | 0,
                   x$6=x$5 | x$5 >>> 32 | 0;
                  return x$6 + 1 | 0},
               floor_pow2=
                function(x)
                 {if(caml_call2(symbol$79,x,0))non_positive_argument(0);
                  var
                   x$0=x | x >>> 1 | 0,
                   x$1=x$0 | x$0 >>> 2 | 0,
                   x$2=x$1 | x$1 >>> 4 | 0,
                   x$3=x$2 | x$2 >>> 8 | 0,
                   x$4=x$3 | x$3 >>> 16 | 0,
                   x$5=x$4 | x$4 >>> 32 | 0;
                  return x$5 - (x$5 >>> 1 | 0) | 0},
               is_pow2=
                function(x)
                 {if(caml_call2(symbol$79,x,0))non_positive_argument(0);
                  return caml_call2(symbol$81,x & (x - 1 | 0),0)},
               floor_log2=
                function(i)
                 {if(caml_call2(symbol$79,i,0))
                   raise_s
                    (caml_call2
                      (message,
                       cst_Int_floor_log2_got_invalid,
                       [0,[0,cst$23,caml_call1(sexp_of_t$4,i)],0]));
                  return (word_size_in_bits - 1 | 0)
                         -
                         runtime.Base_int_math_int_clz(i)
                         |
                         0},
               ceil_log2=
                function(i)
                 {if(caml_call2(symbol$79,i,0))
                   raise_s
                    (caml_call2
                      (message,
                       cst_Int_ceil_log2_got_invalid_,
                       [0,[0,cst$24,caml_call1(sexp_of_t$4,i)],0]));
                  return caml_call2(symbol$81,i,1)
                          ?0
                          :word_size_in_bits
                           -
                           runtime.Base_int_math_int_clz(i - 1 | 0)
                           |
                           0},
               symbol$157=include$1[3],
               symbol$158=include$1[1],
               symbol$159=include$1[5],
               symbol$160=include$1[4],
               symbol$161=include$1[2],
               symbol$162=include$1[6],
               F$0=
                _cV_
                 ([0,
                   to_int$3,
                   of_int$2,
                   of_string$9,
                   to_string,
                   symbol$151,
                   symbol$152,
                   symbol$153,
                   symbol$154,
                   symbol$155,
                   symbol$162,
                   symbol$161,
                   symbol$160,
                   symbol$159,
                   symbol$158,
                   symbol$157,
                   abs$2,
                   symbol$155,
                   zero,
                   of_int$3,
                   rem]),
               round=F$0[4],
               round_towards_zero=F$0[5],
               round_down=F$0[6],
               round_up=F$0[7],
               round_nearest=F$0[8],
               symbol$163=
                function(x,y)
                 {if(caml_call2(symbol$161,y,zero))
                   {var
                     _sc_=caml_call1(to_string,y),
                     _sd_=caml_call1(to_string,x);
                    caml_call3(invalid_argf(_c5_),_sd_,_sc_,0)}
                  var rval=caml_mod(x,y);
                  return caml_call2(symbol$158,rval,zero)?rval + y | 0:rval},
               symbol$164=
                function(x,y)
                 {if(caml_call2(symbol$161,y,zero))
                   {var
                     _sa_=caml_call1(to_string,y),
                     _sb_=caml_call1(to_string,x);
                    caml_call3(invalid_argf(_c6_),_sb_,_sa_,0)}
                  return caml_call2(symbol$158,x,zero)
                          ?caml_div(x + 1 | 0,y) - 1 | 0
                          :caml_div(x,y)},
               symbol$165=function(x,y){return x / y},
               symbol$166=include$1[1],
               symbol$167=include$1[2],
               symbol$168=include$1[3],
               symbol$169=include$1[4],
               symbol$170=include$1[5],
               symbol$171=include$1[6],
               compare$43=include$1[7],
               ascending$21=include$1[8],
               descending$21=include$1[9],
               equal$26=include$1[10],
               max$26=include$1[11],
               min$26=include$1[12],
               Private$3=[0,[0,F$0[1],F$0[2],F$0[3]]],
               O$0=
                [0,
                 symbol$151,
                 symbol$152,
                 symbol$153,
                 symbol$154,
                 symbol$155,
                 symbol$156,
                 symbol$162,
                 symbol$161,
                 symbol$160,
                 symbol$159,
                 symbol$158,
                 symbol$157,
                 abs$2,
                 symbol$155,
                 zero,
                 symbol$163,
                 symbol$164,
                 symbol$165,
                 land,
                 lor,
                 lxor,
                 lnot$0,
                 lsl,
                 asr,
                 lsr],
               include$48=
                [0,
                 to_int$3,
                 of_int$2,
                 of_int$3,
                 to_int_exn,
                 hash_fold_t$4,
                 func$9,
                 t_of_sexp$4,
                 sexp_of_t$35,
                 of_string$9,
                 to_string,
                 symbol$171,
                 symbol$167,
                 symbol$169,
                 symbol$170,
                 symbol$166,
                 symbol$168,
                 equal$26,
                 compare$43,
                 min$26,
                 max$26,
                 ascending$21,
                 descending$21,
                 between$5,
                 clamp_exn$5,
                 clamp$5,
                 comparator$7,
                 validate_lbound$5,
                 validate_ubound$5,
                 validate_bound$5,
                 pp$11,
                 validate_positive,
                 validate_non_negative,
                 validate_negative,
                 validate_non_positive,
                 is_positive,
                 is_non_negative,
                 is_negative,
                 is_non_positive,
                 sign,
                 Hex,
                 to_string_hum$1,
                 zero,
                 one,
                 minus_one,
                 symbol$151,
                 symbol$152,
                 symbol$153,
                 symbol$156,
                 symbol$155,
                 symbol$155,
                 symbol$164,
                 symbol$163,
                 symbol$154,
                 rem,
                 symbol$165,
                 land,
                 lor,
                 lxor,
                 lnot$0,
                 lsl,
                 asr,
                 round,
                 round_towards_zero,
                 round_down,
                 round_up,
                 round_nearest,
                 abs$2,
                 succ$2,
                 pred$1,
                 pow,
                 bit_and,
                 bit_or,
                 bit_xor,
                 bit_not,
                 popcount$0,
                 shift_left,
                 shift_right$0,
                 decr$0,
                 incr$0,
                 int32_to_int_exn,
                 int_to_int32_exn,
                 int64_to_int_exn,
                 int_to_int64,
                 nativeint_to_int_exn,
                 int_to_nativeint,
                 of_float_unchecked,
                 num_bits,
                 max_value$2,
                 min_value$2,
                 lsr,
                 shift_right_logical,
                 ceil_pow2,
                 floor_pow2,
                 ceil_log2,
                 floor_log2,
                 is_pow2,
                 O$0,
                 max_value_30_bits,
                 of_int$3,
                 to_int_exn,
                 int32_to_int,
                 int_to_int32,
                 int64_to_int,
                 nativeint_to_int,
                 int_to_nativeint,
                 int32_to_int_trunc,
                 int_to_int32_trunc,
                 int64_to_int_trunc,
                 nativeint_to_int_trunc,
                 Private$3];
              caml_register_global(1059,include$48,"Base__Int");
              var
               sexp_of_t$36=function(of_a,of_b,param){return _c7_},
               refl=0,
               sym=function(param){return 0},
               trans=function(param,_r$_){return 0},
               conv=function(param,a){return a},
               Lift=function(X){function lift(param){return 0}return [0,lift]},
               Lift2=
                function(X)
                 {function lift(param,_r__){return 0}return [0,lift]},
               Lift3=
                function(X)
                 {function lift(param,_r9_,_r8_){return 0}return [0,lift]},
               detuple2=function(param){return _c8_},
               tuple2=function(param,_r7_){return 0},
               Composition_preserves_injectiv=
                function(M1,M2)
                 {function strip(e)
                   {var _r6_=caml_call1(M2[1],e);return caml_call1(M1[1],_r6_)}
                  return [0,strip]},
               id=Stdlib_obj[24],
               of_val=Stdlib_obj[22],
               sexp_of_t$37=
                function(param,_r5_)
                 {var name=_r5_[2],witness=_r5_[1];
                  if(am_testing)return [0,name];
                  var v0=caml_call1(id,caml_call1(of_val,witness[1]));
                  return [1,
                          [0,
                           [1,[0,_c$_,[0,[0,name],0]]],
                           [0,
                            [1,
                             [0,_c__,[0,[1,[0,_c9_,[0,caml_call1(sexp_of_t$4,v0),0]]],0]]],
                            0]]]},
               to_sexp=function(t){return t[3]},
               name$1=function(t){return t[2]},
               create$8=
                function(name,to_sexp)
                 {var Key=[248,cst_Key,caml_fresh_oo_id(0)];
                  return [0,[0,Key],name,to_sexp]},
               uid=
                function(t){return caml_call1(id,caml_call1(of_val,t[1][1]))},
               hash$10=function(t){return uid(t)},
               hash_fold_t$22=
                function(s,t){return caml_call2(hash_fold_t$4,s,uid(t))},
               same_witness=
                function(t1,t2){return t1[1][1] === t2[1][1]?some_t:0},
               same=function(t1,t2){return is_some(same_witness(t1,t2))},
               same_witness_exn=
                function(t1,t2)
                 {var match=same_witness(t1,t2);
                  if(match){var w=match[1];return w}
                  var _r0_=0,_r1_=[0,t1,t2];
                  function _r2_(_r4_)
                   {return sexp_of_t$37(sexp_of_opaque,_r4_)}
                  return raise_s
                          (caml_call2
                            (message,
                             cst_Type_equal_Id_same_witness,
                             [0,
                              [0,
                               cst$25,
                               caml_call3
                                (sexp_of_pair,
                                 function(_r3_){return sexp_of_t$37(sexp_of_opaque,_r3_)},
                                 _r2_,
                                 _r1_)],
                              _r0_]))},
               Base_Type_equal=
                [0,
                 sexp_of_t$36,
                 refl,
                 sym,
                 trans,
                 conv,
                 Lift,
                 Lift2,
                 Lift3,
                 detuple2,
                 tuple2,
                 Composition_preserves_injectiv,
                 [0,
                  sexp_of_t$37,
                  [0,
                   hash_fold_t$4,
                   func$9,
                   t_of_sexp$4,
                   sexp_of_t$35,
                   symbol$171,
                   symbol$167,
                   symbol$169,
                   symbol$170,
                   symbol$166,
                   symbol$168,
                   equal$26,
                   compare$43,
                   min$26,
                   max$26,
                   ascending$21,
                   descending$21,
                   between$5,
                   clamp_exn$5,
                   clamp$5,
                   comparator$7,
                   validate_lbound$5,
                   validate_ubound$5,
                   validate_bound$5],
                  uid,
                  create$8,
                  hash$10,
                  name$1,
                  to_sexp,
                  hash_fold_t$22,
                  same,
                  same_witness,
                  same_witness_exn]];
              caml_register_global(1060,Base_Type_equal,"Base__Type_equal");
              var Base_Stack_intf=[0];
              caml_register_global(1061,Base_Stack_intf,"Base__Stack_intf");
              var
               none_substitute=runtime.caml_obj_block(Stdlib_obj[12],1),
               none=24791911,
               is_none$0=function(x){return x === 24791911?1:0},
               is_some$0=function(x){return 1 - (x === 24791911?1:0)},
               some$0=function(x){return x === 24791911?none_substitute:x},
               value_unsafe=function(x){return x === none_substitute?none:x},
               value_exn$0=
                function(x)
                 {return is_some$0(x)
                          ?value_unsafe(x)
                          :caml_call1(failwith$0,cst_Option_array_get_some_exn_)},
               of_sexpable=
                function(param)
                 {if(param){var x=param[1];return some$0(x)}return none},
               to_sexpable=
                function(x){return is_some$0(x)?[0,value_unsafe(x)]:0},
               include$84=
                Of_sexpable1
                 ([0,option_of_sexp,sexp_of_option],
                  [0,to_sexpable,of_sexpable]),
               t_of_sexp$26=include$84[1],
               sexp_of_t$38=include$84[2],
               t_of_sexp$27=
                function(of_a,t)
                 {return caml_call2
                          (t_of_sexp$23,caml_call1(t_of_sexp$26,of_a),t)},
               sexp_of_t$39=
                function(of_a,v)
                 {return caml_call2
                          (sexp_of_t$31,caml_call1(sexp_of_t$38,of_a),v)},
               create$9=function(len){return create$4(len,none)},
               init$6=
                function(n,f)
                 {return init$3
                          (n,function(i){return of_sexpable(caml_call1(f,i))})},
               init_some=
                function(n,f)
                 {return init$3(n,function(i){return some$0(caml_call1(f,i))})},
               get$4=function(t,i){return to_sexpable(get$3(t,i))},
               get_some_exn=function(t,i){return value_exn$0(get$3(t,i))},
               is_none$1=function(t,i){return get$3(t,i) === 24791911?1:0},
               is_some$1=function(t,i){return is_some$0(get$3(t,i))},
               set$2=function(t,i,x){return set$1(t,i,of_sexpable(x))},
               set_some=function(t,i,x){return set$1(t,i,some$0(x))},
               set_none=function(t,i){return set$1(t,i,none)},
               swap$4=function(t,i,j){return swap$3(t,i,j)},
               unsafe_get$1=function(t,i){return to_sexpable(t[1 + i])},
               unsafe_get_some_exn=function(t,i){return value_exn$0(t[1 + i])},
               unsafe_get_some_assuming_some=
                function(t,i){return value_unsafe(t[1 + i])},
               unsafe_is_some=function(t,i){return is_some$0(t[1 + i])},
               unsafe_set$1=
                function(t,i,x){return unsafe_set$0(t,i,of_sexpable(x))},
               unsafe_set_some=
                function(t,i,x){return unsafe_set$0(t,i,some$0(x))},
               unsafe_set_none=function(t,i){return unsafe_set$0(t,i,none)},
               clear=
                function(t)
                 {var _rY_=t.length - 1 - 1 | 0,_rX_=0;
                  if(! (_rY_ < 0))
                   {var i=_rX_;
                    for(;;)
                     {unsafe_set_none(t,i);
                      var _rZ_=i + 1 | 0;
                      if(_rY_ !== i){var i=_rZ_;continue}
                      break}}
                  return 0},
               create_like$1=function(len,param){return create$9(len)},
               include$49=_a__([0,create_like$1,length$5,unsafe_blit$4]),
               blit$5=include$49[1],
               blito$3=include$49[2],
               unsafe_blit$7=include$49[3],
               sub$10=include$49[4],
               subo$4=include$49[5],
               Base_Option_array=
                [0,
                 t_of_sexp$27,
                 sexp_of_t$39,
                 empty$0,
                 create$9,
                 init_some,
                 init$6,
                 length$5,
                 get$4,
                 get_some_exn,
                 is_none$1,
                 is_some$1,
                 unsafe_get$1,
                 unsafe_get_some_exn,
                 unsafe_get_some_assuming_some,
                 unsafe_is_some,
                 set$2,
                 set_some,
                 set_none,
                 swap$4,
                 clear,
                 unsafe_set$1,
                 unsafe_set_some,
                 unsafe_set_none,
                 blit$5,
                 blito$3,
                 unsafe_blit$7,
                 sub$10,
                 subo$4,
                 copy$3,
                 [0,
                  [0,
                   t_of_sexp$26,
                   sexp_of_t$38,
                   none,
                   some$0,
                   is_none$0,
                   is_some$0,
                   value_exn$0,
                   value_unsafe,
                   to_sexpable,
                   of_sexpable]]];
              caml_register_global
               (1062,Base_Option_array,"Base__Option_array");
              var
               sexp_of_t_internal=
                function(of_a,param)
                 {var
                   v_length=param[1],
                   v_elts=param[2],
                   arg=sexp_of_t$39(of_a,v_elts),
                   bnds=[0,[1,[0,_da_,[0,arg,0]]],0],
                   arg$0=caml_call1(sexp_of_t$4,v_length),
                   bnds$0=[0,[1,[0,_db_,[0,arg$0,0]]],bnds];
                  return [1,bnds$0]},
               capacity=function(t){return t[2].length - 1},
               invariant$8=
                function(invariant_a,t)
                 {var length=t[1],elts=t[2];
                  try
                   {if
                     (caml_call2(symbol$79,0,length)
                      &&
                      caml_call2(symbol$79,length,elts.length - 1))
                     {var _rS_=length - 1 | 0,_rR_=0;
                      if(! (_rS_ < 0))
                       {var i$0=_rR_;
                        for(;;)
                         {caml_call1(invariant_a,get_some_exn(elts,i$0));
                          var _rW_=i$0 + 1 | 0;
                          if(_rS_ !== i$0){var i$0=_rW_;continue}
                          break}}
                      var _rT_=elts.length - 1 - 1 | 0;
                      if(! (_rT_ < length))
                       {var i=length;
                        for(;;)
                         {if(is_some$1(elts,i))throw [0,Assert_failure,_dc_];
                          var _rV_=i + 1 | 0;
                          if(_rT_ !== i){var i=_rV_;continue}
                          break}}
                      var _rU_=0;
                      return _rU_}
                    throw [0,Assert_failure,_dd_]}
                  catch(exn)
                   {exn = caml_wrap_exception(exn);
                    var
                     _rQ_=
                      [0,[0,cst_stack,sexp_of_t_internal(sexp_of_opaque,t)],0];
                    return raise_s
                            (caml_call2
                              (message,
                               cst_Stack_invariant_failed,
                               [0,[0,cst_exn$1,caml_call1(sexp_of_exn,exn)],_rQ_]))}},
               create$10=function(param){return [0,0,empty$0]},
               length$9=function(t){return t[1]},
               is_empty$4=function(t){return caml_call2(symbol$81,t[1],0)},
               fold$6=
                function(t,init,f)
                 {var r=[0,init],_rN_=t[1] - 1 | 0;
                  if(! (_rN_ < 0))
                   {var i=_rN_;
                    for(;;)
                     {var _rO_=get_some_exn(t[2],i);
                      r[1] = caml_call2(f,r[1],_rO_);
                      var _rP_=i - 1 | 0;
                      if(0 !== i){var i=_rP_;continue}
                      break}}
                  return r[1]},
               iter$7=
                function(t,f)
                 {var _rL_=t[1] - 1 | 0;
                  if(! (_rL_ < 0))
                   {var i=_rL_;
                    for(;;)
                     {caml_call1(f,get_some_exn(t[2],i));
                      var _rM_=i - 1 | 0;
                      if(0 !== i){var i=_rM_;continue}
                      break}}
                  return 0},
               iter$8=[0,-198771759,iter$7],
               length$10=[0,-198771759,length$9],
               C=_M_([0,fold$6,iter$8,length$10]),
               _dl_=C[14],
               _de_=C[1],
               _df_=C[8],
               _dg_=C[9],
               _dh_=C[10],
               _di_=C[11],
               _dj_=C[12],
               _dk_=C[13],
               _dm_=C[15],
               _dn_=C[16],
               _do_=C[17],
               _dp_=C[6],
               _dq_=C[7],
               of_list$4=
                function(l)
                 {if(is_empty(l))return create$10(0);
                  var
                   length$0=caml_call1(length,l),
                   elts=create$9(2 * length$0 | 0),
                   r=[0,l],
                   _rI_=length$0 - 1 | 0;
                  if(! (_rI_ < 0))
                   {var i=_rI_;
                    for(;;)
                     {var _rJ_=r[1];
                      if(! _rJ_)throw [0,Assert_failure,_dr_];
                      var l$0=_rJ_[2],a=_rJ_[1];
                      set_some(elts,i,a);
                      r[1] = l$0;
                      var _rK_=i - 1 | 0;
                      if(0 !== i){var i=_rK_;continue}
                      break}}
                  return [0,length$0,elts]},
               sexp_of_t$40=
                function(sexp_of_a,t)
                 {return caml_call2(sexp_of_t$10,sexp_of_a,caml_call1(_dl_,t))},
               t_of_sexp$28=
                function(a_of_sexp,sexp)
                 {return of_list$4(caml_call2(t_of_sexp$10,a_of_sexp,sexp))},
               resize=
                function(t,size)
                 {var arr=create$9(size);
                  caml_call5(blit$5,t[2],0,arr,0,t[1]);
                  t[2] = arr;
                  return 0},
               set_capacity=
                function(t,new_capacity)
                 {var
                   new_capacity$0=caml_call2(max$12,new_capacity,t[1]),
                   _rH_=caml_call2(symbol$80,new_capacity$0,capacity(t));
                  return _rH_?resize(t,new_capacity$0):_rH_},
               push=
                function(t,a)
                 {if(caml_call2(symbol$81,t[1],t[2].length - 1))
                   resize(t,2 * (t[1] + 1 | 0) | 0);
                  set_some(t[2],t[1],a);
                  t[1] = t[1] + 1 | 0;
                  return 0},
               pop_nonempty=
                function(t)
                 {var i=t[1] - 1 | 0,result=get_some_exn(t[2],i);
                  set_none(t[2],i);
                  t[1] = i;
                  return result},
               pop_error=of_string$1(cst_Stack_pop_of_empty_stack),
               pop=function(t){return is_empty$4(t)?0:[0,pop_nonempty(t)]},
               pop_exn=
                function(t)
                 {return is_empty$4(t)?raise(pop_error):pop_nonempty(t)},
               top_nonempty=
                function(t){return get_some_exn(t[2],t[1] - 1 | 0)},
               top_error=of_string$1(cst_Stack_top_of_empty_stack),
               top=function(t){return is_empty$4(t)?0:[0,top_nonempty(t)]},
               top_exn=
                function(t)
                 {return is_empty$4(t)?raise(top_error):top_nonempty(t)},
               copy$4=
                function(param)
                 {var length=param[1],elts=param[2];
                  return [0,length,copy$3(elts)]},
               clear$0=
                function(t)
                 {var _rC_=caml_call2(symbol$82,t[1],0);
                  if(_rC_)
                   {var _rE_=t[1] - 1 | 0,_rD_=0;
                    if(! (_rE_ < 0))
                     {var i=_rD_;
                      for(;;)
                       {set_none(t[2],i);
                        var _rG_=i + 1 | 0;
                        if(_rE_ !== i){var i=_rG_;continue}
                        break}}
                    t[1] = 0;
                    var _rF_=0}
                  else
                   var _rF_=_rC_;
                  return _rF_},
               until_empty=
                function(t,f)
                 {for(;;)
                   {var _rB_=caml_call2(symbol$82,t[1],0);
                    if(_rB_){caml_call1(f,pop_nonempty(t));continue}
                    return _rB_}},
               singleton$2=function(x){var t=create$10(0);push(t,x);return t},
               Base_Stack=
                [0,
                 t_of_sexp$28,
                 sexp_of_t$40,
                 invariant$8,
                 _de_,
                 length$9,
                 is_empty$4,
                 iter$7,
                 fold$6,
                 _dp_,
                 _dq_,
                 _df_,
                 _dg_,
                 _dh_,
                 _di_,
                 _dj_,
                 _dk_,
                 _dl_,
                 _dm_,
                 _dn_,
                 _do_,
                 of_list$4,
                 create$10,
                 singleton$2,
                 push,
                 pop,
                 pop_exn,
                 top,
                 top_exn,
                 clear$0,
                 copy$4,
                 until_empty,
                 capacity,
                 set_capacity];
              caml_register_global(1063,Base_Stack,"Base__Stack");
              var
               hash$11=
                function(param)
                 {var
                   pos_cnum=param[4],
                   pos_bol=param[3],
                   pos_lnum=param[2],
                   pos_fname=param[1],
                   _ry_=func$9(pos_cnum),
                   _rz_=func$9(pos_bol),
                   _rA_=func$9(pos_lnum);
                  return runtime.Base_hash_string(pos_fname)
                         ^
                         _rA_
                         ^
                         _rz_
                         ^
                         _ry_},
               include$50=Make_using_comparator([0,sexp_of_t$20,comparator$0]),
               symbol$172=include$50[1],
               symbol$173=include$50[2],
               symbol$174=include$50[3],
               symbol$175=include$50[4],
               symbol$176=include$50[5],
               symbol$177=include$50[6],
               equal$27=include$50[7],
               compare$44=include$50[8],
               min$27=include$50[9],
               max$27=include$50[10],
               ascending$22=include$50[11],
               descending$22=include$50[12],
               between$6=include$50[13],
               clamp_exn$6=include$50[14],
               clamp$6=include$50[15],
               comparator$8=include$50[16],
               validate_lbound$6=include$50[17],
               validate_ubound$6=include$50[18],
               validate_bound$6=include$50[19],
               Base_Source_code_position=
                [0,
                 hash_fold_t$13,
                 hash$11,
                 sexp_of_t$20,
                 symbol$172,
                 symbol$173,
                 symbol$174,
                 symbol$175,
                 symbol$176,
                 symbol$177,
                 equal$27,
                 compare$44,
                 min$27,
                 max$27,
                 ascending$22,
                 descending$22,
                 between$6,
                 clamp_exn$6,
                 clamp$6,
                 comparator$8,
                 validate_lbound$6,
                 validate_ubound$6,
                 validate_bound$6,
                 to_string$2];
              caml_register_global
               (1064,Base_Source_code_position,"Base__Source_code_position");
              var
               t_of_sexp$29=
                function(sexp)
                 {if(0 === sexp[0])
                   {var _ru_=sexp[1],switch$0=0;
                    if(caml_string_notequal(_ru_,cst_Nan))
                     {var switch$1=0;
                      if(caml_string_notequal(_ru_,cst_Neg$1))
                       {var switch$2=0;
                        if(caml_string_notequal(_ru_,cst_Pos$1))
                         {var switch$3=0;
                          if(caml_string_notequal(_ru_,cst_Zero$1))
                           if(caml_string_notequal(_ru_,cst_nan))
                            if(caml_string_notequal(_ru_,cst_neg$1))
                             if(caml_string_notequal(_ru_,cst_pos$3))
                              {if(caml_string_notequal(_ru_,cst_zero$1))
                                {switch$0 = 1;switch$1 = 1;switch$2 = 1;switch$3 = 1}}
                             else
                              switch$3 = 1;
                            else
                             {switch$2 = 1;switch$3 = 1}
                           else
                            {switch$1 = 1;switch$2 = 1;switch$3 = 1}
                          if(! switch$3)return 1}
                        if(! switch$2)return 2}
                      if(! switch$1)return 0}
                    if(! switch$0)return 3}
                  else
                   {var _rv_=sexp[1];
                    if(! _rv_)
                     return caml_call2(Sexplib0_Sexp_conv_error[7],tp_loc$8,sexp);
                    var _rw_=_rv_[1];
                    if(0 !== _rw_[0])
                     return caml_call2(Sexplib0_Sexp_conv_error[6],tp_loc$8,sexp);
                    var _rx_=_rw_[1],switch$4=0;
                    if(caml_string_notequal(_rx_,cst_Nan$0))
                     {var switch$5=0;
                      if(caml_string_notequal(_rx_,cst_Neg$2))
                       {var switch$6=0;
                        if(caml_string_notequal(_rx_,cst_Pos$2))
                         {var switch$7=0;
                          if(caml_string_notequal(_rx_,cst_Zero$2))
                           if(caml_string_notequal(_rx_,cst_nan$0))
                            if(caml_string_notequal(_rx_,cst_neg$2))
                             if(caml_string_notequal(_rx_,cst_pos$4))
                              {if(caml_string_notequal(_rx_,cst_zero$2))
                                {switch$4 = 1;switch$5 = 1;switch$6 = 1;switch$7 = 1}}
                             else
                              switch$7 = 1;
                            else
                             {switch$6 = 1;switch$7 = 1}
                           else
                            {switch$5 = 1;switch$6 = 1;switch$7 = 1}
                          if(! switch$7)
                           return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$8,sexp)}
                        if(! switch$6)
                         return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$8,sexp)}
                      if(! switch$5)
                       return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$8,sexp)}
                    if(! switch$4)
                     return caml_call2(Sexplib0_Sexp_conv_error[3],tp_loc$8,sexp)}
                  return caml_call2(Sexplib0_Sexp_conv_error[8],tp_loc$8,sexp)},
               sexp_of_t$41=
                function(param)
                 {switch(param)
                   {case 0:return _ds_;
                    case 1:return _dt_;
                    case 2:return _du_;
                    default:return _dv_}},
               compare$45=caml_int_compare,
               hash_fold_t$23=
                function(hsv,arg)
                 {switch(arg)
                   {case 0:return runtime.Base_internalhash_fold_int(hsv,0);
                    case 1:return runtime.Base_internalhash_fold_int(hsv,1);
                    case 2:return runtime.Base_internalhash_fold_int(hsv,2);
                    default:return runtime.Base_internalhash_fold_int(hsv,3)}},
               hash$12=
                function(x)
                 {var hsv=create$0(0,0);
                  return runtime.Base_internalhash_get_hash_value
                          (hash_fold_t$23(hsv,x))},
               of_string$11=
                function(s){return t_of_sexp$29(caml_call1(sexp_of_t$2,s))},
               to_string$12=
                function(t){return caml_call1(t_of_sexp$2,sexp_of_t$41(t))},
               symbol$178=function(x,y){return x < y?1:0},
               symbol$179=function(x,y){return x <= y?1:0},
               symbol$180=function(x,y){return x !== y?1:0},
               symbol$181=function(x,y){return x === y?1:0},
               symbol$182=function(x,y){return y < x?1:0},
               symbol$183=function(x,y){return y <= x?1:0},
               ascending$23=caml_compare,
               descending$23=function(x,y){return caml_compare(y,x)},
               compare$46=caml_int_compare,
               equal$28=function(x,y){return x === y?1:0},
               max$28=function(x,y){return y <= x?x:y},
               min$28=function(x,y){return x <= y?x:y},
               _dw_=
                _a5_
                 ([0,
                   compare$45,
                   hash_fold_t$23,
                   hash$12,
                   t_of_sexp$29,
                   sexp_of_t$41,
                   of_string$11,
                   to_string$12,
                   module_name$9]),
               hash_fold_t$24=_dw_[1],
               hash$13=_dw_[2],
               t_of_sexp$30=_dw_[3],
               sexp_of_t$42=_dw_[4],
               of_string$12=_dw_[5],
               to_string$13=_dw_[6],
               between$7=_dw_[19],
               clamp_exn$7=_dw_[20],
               clamp$7=_dw_[21],
               comparator$9=_dw_[22],
               validate_lbound$7=_dw_[23],
               validate_ubound$7=_dw_[24],
               validate_bound$7=_dw_[25],
               pp$12=_dw_[26],
               of_sign=
                function(param)
                 {switch(param)
                   {case 0:return 0;case 1:return 1;default:return 2}},
               to_sign_exn=
                function(param)
                 {switch(param)
                   {case 0:return 0;
                    case 1:return 1;
                    case 2:return 2;
                    default:
                     return caml_call1
                             (invalid_arg$0,cst_Base_Sign_or_nan_to_sign_e)}},
               of_int$4=function(n){return of_sign(sign(n))},
               to_int_exn$0=function(t){return to_int$1(to_sign_exn(t))},
               flip$1=
                function(param)
                 {switch(param)
                   {case 0:return 2;
                    case 1:return 1;
                    case 2:return 0;
                    default:return 3}},
               symbol$184=
                function(t$0,t)
                 {if(! (3 <= t$0) && ! (3 <= t))
                   {var _rt_=to_sign_exn(t);
                    return of_sign(symbol$143(to_sign_exn(t$0),_rt_))}
                  return 3},
               Base_Sign_or_nan=
                [0,
                 all$14,
                 hash_fold_t$24,
                 hash$13,
                 t_of_sexp$30,
                 sexp_of_t$42,
                 of_string$12,
                 to_string$13,
                 symbol$183,
                 symbol$179,
                 symbol$181,
                 symbol$182,
                 symbol$178,
                 symbol$180,
                 equal$28,
                 compare$46,
                 min$28,
                 max$28,
                 ascending$23,
                 descending$23,
                 between$7,
                 clamp_exn$7,
                 clamp$7,
                 comparator$9,
                 validate_lbound$7,
                 validate_ubound$7,
                 validate_bound$7,
                 pp$12,
                 of_int$4,
                 to_int_exn$0,
                 of_sign,
                 to_sign_exn,
                 flip$1,
                 symbol$184];
              caml_register_global(1065,Base_Sign_or_nan,"Base__Sign_or_nan");
              var
               include$51=Make$1([0,compare$10,sexp_of_t]),
               symbol$185=include$51[1],
               symbol$186=include$51[2],
               symbol$187=include$51[3],
               symbol$188=include$51[4],
               symbol$189=include$51[5],
               symbol$190=include$51[6],
               equal$29=include$51[7],
               compare$47=include$51[8],
               min$29=include$51[9],
               max$29=include$51[10],
               ascending$24=include$51[11],
               descending$24=include$51[12],
               between$8=include$51[13],
               clamp_exn$8=include$51[14],
               clamp$8=include$51[15],
               comparator$10=include$51[16],
               validate_lbound$8=include$51[17],
               validate_ubound$8=include$51[18],
               validate_bound$8=include$51[19],
               include$52=
                [0,
                 hash_fold_t,
                 hash,
                 t_of_sexp,
                 sexp_of_t,
                 Not_found_s,
                 Of_sexp_error,
                 message,
                 default_indent,
                 pp_hum,
                 pp_hum_indent,
                 pp_mach,
                 pp,
                 to_string_hum,
                 to_string_mach,
                 to_string$0,
                 of_float_style,
                 of_int_style,
                 of_string$0,
                 symbol$185,
                 symbol$186,
                 symbol$187,
                 symbol$188,
                 symbol$189,
                 symbol$190,
                 equal$29,
                 compare$47,
                 min$29,
                 max$29,
                 ascending$24,
                 descending$24,
                 between$8,
                 clamp_exn$8,
                 clamp$8,
                 comparator$10,
                 validate_lbound$8,
                 validate_ubound$8,
                 validate_bound$8];
              caml_register_global
               (1066,include$52,"Base__Sexp_with_comparable");
              var Base_Hasher=[0];
              caml_register_global(1067,Base_Hasher,"Base__Hasher");
              var
               sexp_of_t$43=
                function(of_a,param)
                 {if(typeof param === "number")return _dx_;
                  var v0=param[2];
                  return [1,[0,_dy_,[0,caml_call1(of_a,v0),0]]]},
               Or_duplicate=[0,sexp_of_t$43],
               Without_comparator=[0],
               With_comparator=[0],
               With_first_class_module=[0],
               compare$48=
                function(cmp_k,cmp_v,a_001,b_002)
                 {var
                   t_004=a_001[2],
                   t_003=a_001[1],
                   t_006=b_002[2],
                   t_005=b_002[1],
                   n=caml_call2(cmp_k,t_003,t_005);
                  if(0 === n)
                   {if(t_004 === t_006)return 0;
                    var _rs_=t_004[1];
                    if(847852583 === _rs_)
                     {if(typeof t_006 !== "number" && 847852583 === t_006[1])
                       {var right_008=t_006[2],left_007=t_004[2];
                        return caml_call2(cmp_v,left_007,right_008)}}
                    else
                     if(1013247643 <= _rs_)
                      {if(typeof t_006 !== "number" && 1013247643 === t_006[1])
                        {var
                          right_012=t_006[2],
                          left_011=t_004[2],
                          t_014=left_011[2],
                          t_013=left_011[1],
                          t_016=right_012[2],
                          t_015=right_012[1],
                          n$0=caml_call2(cmp_v,t_013,t_015);
                         return 0 === n$0?caml_call2(cmp_v,t_014,t_016):n$0}}
                     else
                      if(typeof t_006 !== "number" && -57574468 === t_006[1])
                       {var right_010=t_006[2],left_009=t_004[2];
                        return caml_call2(cmp_v,left_009,right_010)}
                    return caml_compare(t_004,t_006)}
                  return n},
               t_of_sexp$31=
                function(of_k,of_v,sexp)
                 {if(1 === sexp[0])
                   {var _rd_=sexp[1];
                    if(_rd_)
                     {var _re_=_rd_[2];
                      if(_re_ && ! _re_[2])
                       {var
                         v1=_re_[1],
                         v0=_rd_[1],
                         v0$0=caml_call1(of_k,v0),
                         v1$0=
                          function(sexp)
                            {try
                              {if(0 === sexp[0])
                                var
                                 atom=sexp[1],
                                 _rf_=
                                  caml_string_notequal(atom,cst_Left$1)
                                   ?caml_string_notequal(atom,cst_Right$1)
                                     ?caml_string_notequal(atom,cst_Unequal)
                                       ?caml_call1(Sexplib0_Sexp_conv_error[18],0)
                                       :caml_call2(Sexplib0_Sexp_conv_error[22],tp_loc$9,sexp)
                                     :caml_call2(Sexplib0_Sexp_conv_error[22],tp_loc$9,sexp)
                                   :caml_call2(Sexplib0_Sexp_conv_error[22],tp_loc$9,sexp),
                                 _rg_=_rf_;
                               else
                                {var _rh_=sexp[1];
                                 if(_rh_)
                                  {var _ri_=_rh_[1];
                                   if(0 === _ri_[0])
                                    {var sexp_args=_rh_[2],atom$0=_ri_[1];
                                     if(caml_string_notequal(atom$0,cst_Left$2))
                                      if(caml_string_notequal(atom$0,cst_Right$2))
                                       if(caml_string_notequal(atom$0,cst_Unequal$0))
                                        var _rj_=caml_call1(Sexplib0_Sexp_conv_error[18],0);
                                       else
                                        {var switch$0=0;
                                         if(sexp_args && ! sexp_args[2])
                                          {var v0=sexp_args[1],switch$1=0;
                                           if(1 === v0[0])
                                            {var _rn_=v0[1];
                                             if(_rn_)
                                              {var _ro_=_rn_[2];
                                               if(_ro_ && ! _ro_[2])
                                                {var
                                                  v1=_ro_[1],
                                                  v0$1=_rn_[1],
                                                  v0$2=caml_call1(of_v,v0$1),
                                                  v1$0=caml_call1(of_v,v1),
                                                  v0$0=[0,v0$2,v1$0];
                                                 switch$1 = 1}}}
                                           if(! switch$1)
                                            var
                                             v0$0=
                                              caml_call3(Sexplib0_Sexp_conv_error[2],tp_loc$9,2,v0);
                                           var _rm_=[0,1013247643,v0$0];
                                           switch$0 = 1}
                                         if(! switch$0)
                                          var
                                           _rm_=
                                            caml_call3
                                             (Sexplib0_Sexp_conv_error[21],tp_loc$9,atom$0,sexp);
                                         var _rj_=_rm_}
                                      else
                                       {var switch$2=0;
                                        if(sexp_args && ! sexp_args[2])
                                         {var
                                           v0$3=sexp_args[1],
                                           v0$4=caml_call1(of_v,v0$3),
                                           _rp_=[0,-57574468,v0$4];
                                          switch$2 = 1}
                                        if(! switch$2)
                                         var
                                          _rp_=
                                           caml_call3
                                            (Sexplib0_Sexp_conv_error[21],tp_loc$9,atom$0,sexp);
                                        var _rj_=_rp_}
                                     else
                                      {var switch$3=0;
                                       if(sexp_args && ! sexp_args[2])
                                        {var
                                          v0$5=sexp_args[1],
                                          v0$6=caml_call1(of_v,v0$5),
                                          _rq_=[0,847852583,v0$6];
                                         switch$3 = 1}
                                       if(! switch$3)
                                        var
                                         _rq_=
                                          caml_call3
                                           (Sexplib0_Sexp_conv_error[21],tp_loc$9,atom$0,sexp);
                                       var _rj_=_rq_}
                                     var _rk_=_rj_}
                                   else
                                    var
                                     _rk_=
                                      caml_call2(Sexplib0_Sexp_conv_error[23],tp_loc$9,sexp);
                                   var _rl_=_rk_}
                                 else
                                  var
                                   _rl_=
                                    caml_call2(Sexplib0_Sexp_conv_error[24],tp_loc$9,sexp);
                                 var _rg_=_rl_}
                               return _rg_}
                             catch(_rr_)
                              {_rr_ = caml_wrap_exception(_rr_);
                               if(_rr_ === Sexplib0_Sexp_conv_error[17])
                                return caml_call2
                                        (Sexplib0_Sexp_conv_error[19],tp_loc$9,sexp);
                               throw _rr_}}
                           (v1);
                        return [0,v0$0,v1$0]}}}
                  return caml_call3
                          (Sexplib0_Sexp_conv_error[2],tp_loc$9,2,sexp)},
               sexp_of_t$44=
                function(of_k,of_v,param)
                 {var
                   v1=param[2],
                   v0=param[1],
                   v0$0=caml_call1(of_k,v0),
                   _rc_=v1[1];
                  if(847852583 === _rc_)
                   var
                    v0$1=v1[2],
                    v1$0=[1,[0,_dz_,[0,caml_call1(of_v,v0$1),0]]];
                  else
                   if(1013247643 <= _rc_)
                    var
                     v0$2=v1[2],
                     v1$1=v0$2[2],
                     v0$3=v0$2[1],
                     v0$4=caml_call1(of_v,v0$3),
                     v1$2=caml_call1(of_v,v1$1),
                     v1$0=[1,[0,_dA_,[0,[1,[0,v0$4,[0,v1$2,0]]],0]]];
                   else
                    var
                     v0$5=v1[2],
                     v1$0=[1,[0,_dB_,[0,caml_call1(of_v,v0$5),0]]];
                  return [1,[0,v0$0,[0,v1$0,0]]]},
               Symmetric_diff_element=[0,compare$48,t_of_sexp$31,sexp_of_t$44],
               compare$49=caml_int_compare,
               equal$30=function(_rb_,_ra_){return _rb_ === _ra_?1:0},
               sexp_of_t$45=function(param){return param?_dC_:_dD_},
               Continue_or_stop$1=[0,compare$49,all$15,equal$30,sexp_of_t$45],
               compare$50=caml_int_compare,
               equal$31=function(_q$_,_q__){return _q$_ === _q__?1:0},
               sexp_of_t$46=function(param){return param?_dE_:_dF_},
               include$53=[0,compare$50,all$16,equal$31,sexp_of_t$46],
               Check_accessors=function(T,Tree,Key,Cmp,Options,M){return [0]},
               Check_accessors1=function(M){return [0]},
               Check_accessors2=function(M){return [0]},
               Check_accessors3=function(M){return [0]},
               Check_accessors3_with_comparat=function(M){return [0]},
               Check_creators=function(T,Tree,Key,Cmp,Options,M){return [0]},
               Check_creators1=function(M){return [0]},
               Check_creators2=function(M){return [0]},
               Check_creators3_with_comparato=function(M){return [0]},
               Base_Map_intf=
                [0,
                 Or_duplicate,
                 Without_comparator,
                 With_comparator,
                 With_first_class_module,
                 Symmetric_diff_element,
                 Continue_or_stop$1,
                 include$53,
                 Check_accessors,
                 Check_accessors1,
                 Check_accessors2,
                 Check_accessors3,
                 Check_accessors3_with_comparat,
                 Check_creators,
                 Check_creators1,
                 Check_creators2,
                 Check_creators3_with_comparato];
              caml_register_global(1068,Base_Map_intf,"Base__Map_intf");
              var
               Continue_or_stop$2=include$19[1],
               Check_accessors$0=
                function(T,Tree,Elt,Named,Cmp,Options,M){return [0]},
               Check_accessors0=function(M){return [0]},
               Check_accessors1$0=function(M){return [0]},
               Check_accessors2$0=function(M){return [0]},
               Check_accessors2_with_comparat=function(M){return [0]},
               Check_creators$0=function(T,Tree,Elt,Cmp,Options,M){return [0]},
               Check_creators0=function(M){return [0]},
               Check_creators1$0=function(M){return [0]},
               Check_creators2$0=function(M){return [0]},
               Check_creators2_with_comparato=function(M){return [0]},
               Base_Set_intf=
                [0,
                 Continue_or_stop$2,
                 Check_accessors$0,
                 Check_accessors0,
                 Check_accessors1$0,
                 Check_accessors2$0,
                 Check_accessors2_with_comparat,
                 Check_creators$0,
                 Check_creators0,
                 Check_creators1$0,
                 Check_creators2$0,
                 Check_creators2_with_comparato];
              caml_register_global(1069,Base_Set_intf,"Base__Set_intf");
              var
               height=
                function(param)
                 {if(typeof param === "number")
                   return 0;
                  else
                   {if(0 === param[0])return 1;var h=param[4];return h}},
               length$11=
                function(param)
                 {if(typeof param === "number")
                   return 0;
                  else
                   {if(0 === param[0])return 1;var s=param[5];return s}},
               in_range=
                function(lower,upper,compare_elt,v)
                 {if(lower)
                   var
                    lower$0=lower[1],
                    _q8_=
                     caml_call2(symbol$78,caml_call2(compare_elt,lower$0,v),0);
                  else
                   var _q8_=1;
                  if(_q8_)
                   {if(upper)
                     {var upper$0=upper[1];
                      return caml_call2
                              (symbol$78,caml_call2(compare_elt,v,upper$0),0)}
                    var _q9_=1}
                  else
                   var _q9_=_q8_;
                  return _q9_},
               loop=
                function(lower,upper,compare_elt,t)
                 {var lower$0=lower,t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 1;
                   else
                    {if(0 === t$0[0])
                      {var v=t$0[1];return in_range(lower$0,upper,compare_elt,v)}
                     var
                      n=t$0[5],
                      h=t$0[4],
                      r=t$0[3],
                      v$0=t$0[2],
                      l=t$0[1],
                      hl=height(l),
                      hr=height(r),
                      _q1_=caml_call2(symbol$79,caml_call1(abs$0,hl - hr | 0),2);
                     if(_q1_)
                      {var
                        _q2_=
                         caml_call2(symbol$81,h,caml_call2(max$12,hl,hr) + 1 | 0);
                       if(_q2_)
                        {var
                          _q3_=length$11(r),
                          _q4_=
                           caml_call2(symbol$81,n,(length$11(l) + _q3_ | 0) + 1 | 0);
                         if(_q4_)
                          {var _q5_=in_range(lower$0,upper,compare_elt,v$0);
                           if(_q5_)
                            {var _q6_=loop(lower$0,[0,v$0],compare_elt,l);
                             if(_q6_){var lower$1=[0,v$0],lower$0=lower$1,t$0=r;continue}
                             var _q7_=_q6_}
                           else
                            var _q7_=_q5_}
                         else
                          var _q7_=_q4_}
                       else
                        var _q7_=_q2_}
                     else
                      var _q7_=_q1_;
                     return _q7_}},
               invariants=
                function(t,compare_elt){return loop(0,0,compare_elt,t)},
               is_empty$5=
                function(param){return typeof param === "number"?1:0},
               create$11=
                function(l,v,r)
                 {if(typeof l === "number")
                   var hl=0;
                  else
                   if(0 === l[0])var hl=1;else var h$1=l[4],hl=h$1;
                  if(typeof r === "number")
                   var hr=0;
                  else
                   if(0 === r[0])var hr=1;else var h$0=r[4],hr=h$0;
                  var h=caml_call2(symbol$83,hl,hr)?hl + 1 | 0:hr + 1 | 0;
                  if(caml_call2(symbol$81,h,1))return [0,v];
                  if(typeof l === "number")
                   var sl=0;
                  else
                   if(0 === l[0])var sl=1;else var s$0=l[5],sl=s$0;
                  if(typeof r === "number")
                   var sr=0;
                  else
                   if(0 === r[0])var sr=1;else var s=r[5],sr=s;
                  return [1,l,v,r,h,(sl + sr | 0) + 1 | 0]},
               of_increasing_iterator_uncheck=
                function(len,f)
                 {function loop(n,f,i)
                   {if(3 < n >>> 0)
                     {var
                       left_length=n >>> 1 | 0,
                       right_length=(n - left_length | 0) - 1 | 0,
                       left=loop(left_length,f,i),
                       k=caml_call1(f,i + left_length | 0),
                       right=loop(right_length,f,(i + left_length | 0) + 1 | 0);
                      return create$11(left,k,right)}
                    switch(n)
                     {case 0:return 0;
                      case 1:var k$0=caml_call1(f,i);return [0,k$0];
                      case 2:
                       var kl=caml_call1(f,i),k$1=caml_call1(f,i + 1 | 0);
                       return create$11([0,kl],k$1,0);
                      default:
                       var
                        kl$0=caml_call1(f,i),
                        k$2=caml_call1(f,i + 1 | 0),
                        kr=caml_call1(f,i + 2 | 0);
                       return create$11([0,kl$0],k$2,[0,kr])}}
                  return loop(len,f,0)},
               of_sorted_array_unchecked=
                function(array,compare_elt)
                 {var array_length=array.length - 1,switch$0=0;
                  if(! caml_call2(symbol$78,array_length,2))
                   {var _qZ_=caml_check_bound(array,1)[2];
                    if
                     (!
                      caml_call2
                       (symbol$78,
                        caml_call2(compare_elt,caml_check_bound(array,0)[1],_qZ_),
                        0))
                     {var
                       next=
                        function(i)
                         {var _q0_=(array_length - 1 | 0) - i | 0;
                          return caml_check_bound(array,_q0_)[1 + _q0_]};
                      switch$0 = 1}}
                  if(! switch$0)
                   var
                    next=
                     function(i){return caml_check_bound(array,i)[1 + i]};
                  return of_increasing_iterator_uncheck(array_length,next)},
               of_sorted_array=
                function(array,compare_elt)
                 {var len=array.length - 1;
                  if(1 !== len && len)
                   return with_return
                           (function(r)
                             {var
                               _qT_=caml_check_bound(array,1)[2],
                               i=caml_call2(compare_elt,caml_check_bound(array,0)[1],_qT_),
                               increasing=
                                0 === i
                                 ?caml_call1(r,error_string(cst_of_sorted_array_duplicated))
                                 :caml_call2(symbol$78,i,0),
                               _qV_=array.length - 1 - 2 | 0,
                               _qU_=1;
                              if(! (_qV_ < 1))
                               {var i$0=_qU_;
                                for(;;)
                                 {var
                                   _qW_=i$0 + 1 | 0,
                                   _qX_=caml_check_bound(array,_qW_)[1 + _qW_],
                                   i$1=
                                    caml_call2
                                     (compare_elt,caml_check_bound(array,i$0)[1 + i$0],_qX_);
                                  if(0 === i$1)
                                   caml_call1(r,error_string(cst_of_sorted_array_duplicated$0));
                                  else
                                   if(caml_call2(symbol$78,i$1,0) !== increasing)
                                    caml_call1(r,error_string(cst_of_sorted_array_elements_a));
                                  var _qY_=i$0 + 1 | 0;
                                  if(_qV_ !== i$0){var i$0=_qY_;continue}
                                  break}}
                              return [0,of_sorted_array_unchecked(array,compare_elt)]});
                  return [0,of_sorted_array_unchecked(array,compare_elt)]},
               bal=
                function(l,v,r)
                 {if(typeof l === "number")
                   var hl=0;
                  else
                   if(0 === l[0])var hl=1;else var h$1=l[4],hl=h$1;
                  if(typeof r === "number")
                   var hr=0;
                  else
                   if(0 === r[0])var hr=1;else var h$0=r[4],hr=h$0;
                  if(caml_call2(symbol$82,hl,hr + 2 | 0))
                   if(typeof l === "number")
                    throw [0,Assert_failure,_dG_];
                   else
                    {if(0 === l[0])throw [0,Assert_failure,_dH_];
                     var lr=l[3],lv=l[2],ll=l[1],_qN_=height(lr);
                     if(caml_call2(symbol$83,height(ll),_qN_))
                      return create$11(ll,lv,create$11(lr,v,r));
                     if(typeof lr === "number")
                      throw [0,Assert_failure,_dI_];
                     else
                      {if(0 === lr[0])
                        {var lrv=lr[1];
                         if(is_empty$5(ll))
                          {var _qO_=create$11(0,v,r);
                           return create$11(create$11(ll,lv,0),lrv,_qO_)}
                         throw [0,Assert_failure,_dJ_]}
                       var lrr=lr[3],lrv$0=lr[2],lrl=lr[1],_qP_=create$11(lrr,v,r);
                       return create$11(create$11(ll,lv,lrl),lrv$0,_qP_)}}
                  if(caml_call2(symbol$82,hr,hl + 2 | 0))
                   if(typeof r === "number")
                    throw [0,Assert_failure,_dK_];
                   else
                    {if(0 === r[0])
                      {var rv=r[1];return create$11(create$11(l,v,0),rv,0)}
                     var rr=r[3],rv$0=r[2],rl=r[1],_qQ_=height(rl);
                     if(caml_call2(symbol$83,height(rr),_qQ_))
                      return create$11(create$11(l,v,rl),rv$0,rr);
                     if(typeof rl === "number")
                      throw [0,Assert_failure,_dL_];
                     else
                      {if(0 === rl[0])
                        {var rlv=rl[1];
                         if(is_empty$5(rr))
                          {var _qR_=create$11(0,rv$0,rr);
                           return create$11(create$11(l,v,0),rlv,_qR_)}
                         throw [0,Assert_failure,_dM_]}
                       var
                        rlr=rl[3],
                        rlv$0=rl[2],
                        rll=rl[1],
                        _qS_=create$11(rlr,rv$0,rr);
                       return create$11(create$11(l,v,rll),rlv$0,_qS_)}}
                  var h=caml_call2(symbol$83,hl,hr)?hl + 1 | 0:hr + 1 | 0;
                  if(typeof l === "number")
                   var sl=0;
                  else
                   if(0 === l[0])var sl=1;else var s$0=l[5],sl=s$0;
                  if(typeof r === "number")
                   var sr=0;
                  else
                   if(0 === r[0])var sr=1;else var s=r[5],sr=s;
                  return caml_call2(symbol$81,h,1)
                          ?[0,v]
                          :[1,l,v,r,h,(sl + sr | 0) + 1 | 0]},
               Same=[248,cst_Base_Set_Tree0_Same,caml_fresh_oo_id(0)],
               add$1=
                function(t,x,compare_elt)
                 {function aux(param)
                   {if(typeof param === "number")
                     return [0,x];
                    else
                     {if(0 === param[0])
                       {var v=param[1],c=caml_call2(compare_elt,x,v);
                        if(caml_call2(symbol$81,c,0))throw Same;
                        return caml_call2(symbol$78,c,0)
                                ?bal([0,x],v,0)
                                :bal(0,v,[0,x])}
                      var
                       r=param[3],
                       v$0=param[2],
                       l=param[1],
                       c$0=caml_call2(compare_elt,x,v$0);
                      if(caml_call2(symbol$81,c$0,0))throw Same;
                      return caml_call2(symbol$78,c$0,0)
                              ?bal(aux(l),v$0,r)
                              :bal(l,v$0,aux(r))}}
                  try
                   {var _qL_=aux(t);return _qL_}
                  catch(_qM_)
                   {_qM_ = caml_wrap_exception(_qM_);
                    if(_qM_ === Same)return t;
                    throw _qM_}},
               join$6=
                function(l,v,r,compare_elt)
                 {if(typeof l === "number")
                   return add$1(r,v,compare_elt);
                  else
                   if(1 === l[0])
                    {var _qH_=l[4],_qI_=l[3],_qJ_=l[2],_qK_=l[1];
                     if(typeof r !== "number")
                      {if(0 === r[0])
                        {var rv=r[1];
                         return add$1(add$1(l,v,compare_elt),rv,compare_elt)}
                       var rh=r[4],rr=r[3],rv$0=r[2],rl=r[1];
                       return caml_call2(symbol$82,_qH_,rh + 2 | 0)
                               ?bal(_qK_,_qJ_,join$6(_qI_,v,r,compare_elt))
                               :caml_call2(symbol$82,rh,_qH_ + 2 | 0)
                                 ?bal(join$6(l,v,rl,compare_elt),rv$0,rr)
                                 :create$11(l,v,r)}}
                  if(typeof r === "number")return add$1(l,v,compare_elt);
                  var lv=l[1];
                  return add$1(add$1(r,v,compare_elt),lv,compare_elt)},
               min_elt$6=
                function(param)
                 {var param$0=param;
                  for(;;)
                   {if(typeof param$0 === "number")
                     return 0;
                    else
                     if(0 === param$0[0])
                      var v=param$0[1];
                     else
                      {var _qG_=param$0[1];
                       if(typeof _qG_ !== "number"){var param$0=_qG_;continue}
                       var v=param$0[2]}
                    return [0,v]}},
               Set_min_elt_exn_of_empty_set=
                [248,cst_Base_Set_Tree0_Set_min_elt,caml_fresh_oo_id(0)],
               _dN_=
                function(param)
                 {if(param === Set_min_elt_exn_of_empty_set)return _dO_;
                  throw [0,Assert_failure,_dP_]};
              caml_call3
               (Sexplib0_Sexp_conv[51][2],0,Set_min_elt_exn_of_empty_set,_dN_);
              var
               Set_max_elt_exn_of_empty_set=
                [248,cst_Base_Set_Tree0_Set_max_elt,caml_fresh_oo_id(0)],
               _dQ_=
                function(param)
                 {if(param === Set_max_elt_exn_of_empty_set)return _dR_;
                  throw [0,Assert_failure,_dS_]};
              caml_call3
               (Sexplib0_Sexp_conv[51][2],0,Set_max_elt_exn_of_empty_set,_dQ_);
              var
               min_elt_exn=
                function(t)
                 {var match=min_elt$6(t);
                  if(match){var v=match[1];return v}
                  throw Set_min_elt_exn_of_empty_set},
               fold_until$5=
                function(t,init,f,finish)
                 {function fold_until_helper(f,t,acc)
                   {var t$0=t,acc$0=acc;
                    for(;;)
                     if(typeof t$0 === "number")
                      return [0,acc$0];
                     else
                      {if(0 === t$0[0])
                        {var value=t$0[1];return caml_call2(f,acc$0,value)}
                       var
                        right=t$0[3],
                        value$0=t$0[2],
                        left=t$0[1],
                        x=fold_until_helper(f,left,acc$0);
                       if(0 === x[0])
                        {var acc$1=x[1],x$0=caml_call2(f,acc$1,value$0);
                         if(0 === x$0[0])
                          {var acc$2=x$0[1],t$0=right,acc$0=acc$2;continue}
                         return x$0}
                       return x}}
                  var match=fold_until_helper(f,t,init);
                  if(0 === match[0])
                   {var x=match[1];return caml_call1(finish,x)}
                  var x$0=match[1];
                  return x$0},
               max_elt$6=
                function(param)
                 {var param$0=param;
                  for(;;)
                   {if(typeof param$0 === "number")
                     return 0;
                    else
                     if(0 === param$0[0])
                      var v=param$0[1];
                     else
                      {if(typeof param$0[3] !== "number")
                        {var param$1=param$0[3],param$0=param$1;continue}
                       var v=param$0[2]}
                    return [0,v]}},
               max_elt_exn=
                function(t)
                 {var match=max_elt$6(t);
                  if(match){var v=match[1];return v}
                  throw Set_max_elt_exn_of_empty_set},
               remove_min_elt=
                function(param)
                 {if(typeof param === "number")
                   return caml_call1(invalid_arg$0,cst_Set_remove_min_elt);
                  else
                   {if(0 === param[0])return 0;
                    var _qF_=param[1];
                    if(typeof _qF_ === "number"){var r=param[3];return r}
                    var r$0=param[3],v=param[2];
                    return bal(remove_min_elt(_qF_),v,r$0)}},
               merge$2=
                function(t1,t2)
                 {if(typeof t1 === "number")return t2;
                  if(typeof t2 === "number")return t1;
                  var _qE_=remove_min_elt(t2);
                  return bal(t1,min_elt_exn(t2),_qE_)},
               concat$2=
                function(t1,t2,compare_elt)
                 {if(typeof t1 === "number")
                   var t=t2;
                  else
                   {if(typeof t2 !== "number")
                     {var _qD_=remove_min_elt(t2);
                      return join$6(t1,min_elt_exn(t2),_qD_,compare_elt)}
                    var t=t1}
                  return t},
               split$1=
                function(t,x,compare_elt)
                 {function split(t)
                   {if(typeof t === "number")
                     return _dT_;
                    else
                     {if(0 === t[0])
                       {var v=t[1],c=caml_call2(compare_elt,x,v);
                        return caml_call2(symbol$81,c,0)
                                ?[0,0,[0,v],0]
                                :caml_call2(symbol$78,c,0)?[0,0,0,[0,v]]:[0,[0,v],0,0]}
                      var
                       r=t[3],
                       v$0=t[2],
                       l=t[1],
                       c$0=caml_call2(compare_elt,x,v$0);
                      if(caml_call2(symbol$81,c$0,0))return [0,l,[0,v$0],r];
                      if(caml_call2(symbol$78,c$0,0))
                       {var
                         match=split(l),
                         rl=match[3],
                         maybe_elt=match[2],
                         ll=match[1];
                        return [0,ll,maybe_elt,join$6(rl,v$0,r,compare_elt)]}
                      var
                       match$0=split(r),
                       rr=match$0[3],
                       maybe_elt$0=match$0[2],
                       lr=match$0[1];
                      return [0,join$6(l,v$0,lr,compare_elt),maybe_elt$0,rr]}}
                  return split(t)},
               already_seen=0,
               mem$5=
                function(t,x,compare_elt)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var v=t$0[1],c=caml_call2(compare_elt,x,v);
                       return caml_call2(symbol$81,c,0)}
                     var
                      r=t$0[3],
                      v$0=t$0[2],
                      l=t$0[1],
                      c$0=caml_call2(compare_elt,x,v$0),
                      _qC_=caml_call2(symbol$81,c$0,0);
                     if(_qC_)return _qC_;
                     var t$1=caml_call2(symbol$78,c$0,0)?l:r,t$0=t$1;
                     continue}},
               remove$0=
                function(t,x,compare_elt)
                 {function aux(t)
                   {if(typeof t === "number")
                     throw Same;
                    else
                     {if(0 === t[0])
                       {var v=t[1];
                        if(caml_call2(symbol$81,caml_call2(compare_elt,x,v),0))
                         return 0;
                        throw Same}
                      var r=t[3],v$0=t[2],l=t[1],c=caml_call2(compare_elt,x,v$0);
                      return caml_call2(symbol$81,c,0)
                              ?merge$2(l,r)
                              :caml_call2(symbol$78,c,0)
                                ?bal(aux(l),v$0,r)
                                :bal(l,v$0,aux(r))}}
                  try
                   {var _qA_=aux(t);return _qA_}
                  catch(_qB_)
                   {_qB_ = caml_wrap_exception(_qB_);
                    if(_qB_ === Same)return t;
                    throw _qB_}},
               remove_index=
                function(t,i,param)
                 {function aux(t,i)
                   {if(typeof t === "number")
                     throw Same;
                    else
                     {if(0 === t[0])
                       {if(caml_call2(symbol$81,i,0))return 0;throw Same}
                      var
                       r=t[3],
                       v=t[2],
                       l=t[1],
                       l_size=length$11(l),
                       c=caml_int_compare(i,l_size);
                      return caml_call2(symbol$81,c,0)
                              ?merge$2(l,r)
                              :caml_call2(symbol$78,c,0)
                                ?bal(aux(l,i),v,r)
                                :bal(l,v,aux(r,(i - l_size | 0) - 1 | 0))}}
                  try
                   {var _qy_=aux(t,i);return _qy_}
                  catch(_qz_)
                   {_qz_ = caml_wrap_exception(_qz_);
                    if(_qz_ === Same)return t;
                    throw _qz_}},
               union=
                function(s1,s2,compare_elt)
                 {function union(s1,s2)
                   {var s1$0=s1,s2$0=s2;
                    for(;;)
                     {var switch$0=0;
                      if(typeof s1$0 === "number")
                       {var t=s2$0;switch$0 = 1}
                      else
                       if(1 === s1$0[0])
                        {var _qs_=s1$0[4],_qu_=s1$0[2],_qt_=s1$0[3],_qv_=s1$0[1];
                         if(typeof s2$0 !== "number")
                          {if(0 === s2$0[0])
                            {var v2=s2$0[1],s2$1=[1,0,v2,0,1,1],s2$0=s2$1;continue}
                           var h2=s2$0[4],r2=s2$0[3],v2$0=s2$0[2],l2=s2$0[1];
                           if(caml_call2(symbol$83,_qs_,h2))
                            {if(caml_call2(symbol$81,h2,1))
                              return add$1(s1$0,v2$0,compare_elt);
                             var
                              match=split$1(s2$0,_qu_,compare_elt),
                              r2$0=match[3],
                              l2$0=match[1],
                              _qw_=union(_qt_,r2$0);
                             return join$6(union(_qv_,l2$0),_qu_,_qw_,compare_elt)}
                           if(caml_call2(symbol$81,_qs_,1))
                            return add$1(s2$0,_qu_,compare_elt);
                           var
                            match$0=split$1(s1$0,v2$0,compare_elt),
                            r1=match$0[3],
                            l1=match$0[1],
                            _qx_=union(r1,r2);
                           return join$6(union(l1,l2),v2$0,_qx_,compare_elt)}}
                      if(! switch$0)
                       {if(typeof s2$0 !== "number")
                         {var v1=s1$0[1],s1$1=[1,0,v1,0,1,1],s1$0=s1$1;continue}
                        var t=s1$0}
                      return t}}
                  return union(s1,s2)},
               union_list=
                function(comparator,to_tree,xs)
                 {var compare_elt=comparator[1];
                  return fold$0
                          (xs,
                           already_seen,
                           function(ac,x)
                            {return union(ac,caml_call1(to_tree,x),compare_elt)})},
               inter=
                function(s1,s2,compare_elt)
                 {function inter(s1,match)
                   {if(typeof s1 !== "number" && typeof match !== "number")
                     {var switch$0=0;
                      if(typeof s1 !== "number" && 0 !== s1[0])
                       {if(typeof match !== "number" && 0 !== match[0])
                         {var
                           r1=s1[3],
                           v1=s1[2],
                           l1=s1[1],
                           _qn_=split$1(match,v1,compare_elt),
                           _qo_=_qn_[2],
                           _qp_=_qn_[1];
                          if(_qo_)
                           {var r2=_qn_[3],v1$0=_qo_[1],_qq_=inter(r1,r2);
                            return join$6(inter(l1,_qp_),v1$0,_qq_,compare_elt)}
                          var r2$0=_qn_[3],_qr_=inter(r1,r2$0);
                          return concat$2(inter(l1,_qp_),_qr_,compare_elt)}
                        var other_set=s1,singleton=match,elt=match[1];
                        switch$0 = 1}
                      if(! switch$0)var other_set=match,singleton=s1,elt=s1[1];
                      return mem$5(other_set,elt,compare_elt)?singleton:0}
                    return 0}
                  return inter(s1,s2)},
               diff=
                function(s1,s2,compare_elt)
                 {function diff(s1,match)
                   {var s1$0=s1;
                    for(;;)
                     {if(typeof s1$0 === "number")return 0;
                      if(typeof match === "number")return s1$0;
                      if(typeof s1$0 !== "number" && 0 !== s1$0[0])
                       {var
                         r1=s1$0[3],
                         v1$0=s1$0[2],
                         l1=s1$0[1],
                         _qj_=split$1(match,v1$0,compare_elt),
                         _qk_=_qj_[1];
                        if(_qj_[2])
                         {var r2=_qj_[3],_ql_=diff(r1,r2);
                          return concat$2(diff(l1,_qk_),_ql_,compare_elt)}
                        var r2$0=_qj_[3],_qm_=diff(r1,r2$0);
                        return join$6(diff(l1,_qk_),v1$0,_qm_,compare_elt)}
                      var v1=s1$0[1],s1$1=[1,0,v1,0,1,1],s1$0=s1$1;
                      continue}}
                  return diff(s1,s2)},
               cons$0=
                function(s,e)
                 {var s$0=s,e$0=e;
                  for(;;)
                   if(typeof s$0 === "number")
                    return e$0;
                   else
                    {if(0 === s$0[0]){var v=s$0[1];return [0,v,0,e$0]}
                     var
                      r=s$0[3],
                      v$0=s$0[2],
                      s$1=s$0[1],
                      e$1=[0,v$0,r,e$0],
                      s$0=s$1,
                      e$0=e$1;
                     continue}},
               cons_right=
                function(s,e)
                 {var s$0=s,e$0=e;
                  for(;;)
                   if(typeof s$0 === "number")
                    return e$0;
                   else
                    {if(0 === s$0[0]){var v=s$0[1];return [0,v,0,e$0]}
                     var
                      s$1=s$0[3],
                      v$0=s$0[2],
                      l=s$0[1],
                      e$1=[0,v$0,l,e$0],
                      s$0=s$1,
                      e$0=e$1;
                     continue}},
               of_set=function(s){return cons$0(s,0)},
               iter$9=
                function(f,param)
                 {var param$0=param;
                  for(;;)
                   {if(param$0)
                     {var enum$0=param$0[3],tree=param$0[2],a=param$0[1];
                      caml_call1(f,a);
                      var param$1=cons$0(tree,enum$0),param$0=param$1;
                      continue}
                    return 0}},
               symmetric_diff=
                function(t1,t2,compare_elt)
                 {function step(state)
                   {var _qc_=state[1];
                    if(_qc_)
                     {var _qd_=state[2],_qe_=_qc_[3],_qf_=_qc_[2],_qg_=_qc_[1];
                      if(_qd_)
                       {var
                         enum2=_qd_[3],
                         tree2=_qd_[2],
                         a2=_qd_[1],
                         compare_result=caml_call2(compare_elt,_qg_,a2);
                        if(caml_call2(symbol$81,compare_result,0))
                         {if(_qf_ === tree2)
                           var next_state=[0,_qe_,enum2];
                          else
                           var
                            _qh_=cons$0(tree2,enum2),
                            next_state=[0,cons$0(_qf_,_qe_),_qh_];
                          return [0,next_state]}
                        return caml_call2(symbol$78,compare_result,0)
                                ?[1,[0,_qg_],[0,cons$0(_qf_,_qe_),_qd_]]
                                :[1,[1,a2],[0,_qc_,cons$0(tree2,enum2)]]}
                      return [1,[0,_qg_],[0,cons$0(_qf_,_qe_),0]]}
                    var _qi_=state[2];
                    if(_qi_)
                     {var enum$0=_qi_[3],tree=_qi_[2],elt=_qi_[1];
                      return [1,[1,elt],[0,0,cons$0(tree,enum$0)]]}
                    return 0}
                  var _qb_=of_set(t2);
                  return [0,[0,of_set(t1),_qb_],step]},
               to_sequence$0=
                function
                 (comparator,opt,greater_or_equal_to,less_or_equal_to,t$4)
                 {if(opt)var sth=opt[1],order=sth;else var order=608542111;
                  function inclusive_bound(side,t,bound)
                   {var
                     compare_elt=comparator[1],
                     match=split$1(t,bound,compare_elt),
                     r=match[3],
                     maybe=match[2],
                     l=match[1],
                     t$0=caml_call1(side,[0,l,r]);
                    if(maybe)
                     {var elt=maybe[1];return add$1(t$0,elt,compare_elt)}
                    return t$0}
                  if(608542111 <= order)
                   {var
                     t$5=
                      fold$1
                       (less_or_equal_to,
                        t$4,
                        function(_p$_,_qa_)
                         {return inclusive_bound(get_key,_p$_,_qa_)}),
                     next=
                      function(enum$0)
                       {if(enum$0)
                         {var e=enum$0[3],t=enum$0[2],k=enum$0[1];
                          return [1,k,cons$0(t,e)]}
                        return 0};
                    if(greater_or_equal_to)
                     {var
                       key=greater_or_equal_to[1],
                       t=t$5,
                       e=0,
                       _p7_=comparator[1];
                      for(;;)
                       {if(typeof t === "number")
                         var init=e;
                        else
                         {if(0 === t[0]){var v=t[1],t$0=[1,0,v,0,1,1],t=t$0;continue}
                          var l=t[1],r=t[3],v$0=t[2];
                          if(caml_call2(symbol$78,caml_call2(_p7_,v$0,key),0))
                           {var t=r;continue}
                          var r$0=t[3],v$1=t[2],e$0=[0,v$1,r$0,e],t=l,e=e$0;
                          continue}
                        break}}
                    else
                     var init=of_set(t$5);
                    return [0,init,next]}
                  var
                   t$6=
                    fold$1
                     (greater_or_equal_to,
                      t$4,
                      function(_p9_,_p__)
                       {return inclusive_bound(get_data,_p9_,_p__)});
                  function next$0(enum$0)
                   {if(enum$0)
                     {var e=enum$0[3],t=enum$0[2],k=enum$0[1];
                      return [1,k,cons_right(t,e)]}
                    return 0}
                  if(less_or_equal_to)
                   {var
                     key$0=less_or_equal_to[1],
                     t$1=t$6,
                     e$1=0,
                     _p8_=comparator[1];
                    for(;;)
                     {if(typeof t$1 === "number")
                       var init$0=e$1;
                      else
                       {if(0 === t$1[0])
                         {var v$2=t$1[1],t$2=[1,0,v$2,0,1,1],t$1=t$2;continue}
                        var l$0=t$1[1],v$3=t$1[2];
                        if(caml_call2(symbol$82,caml_call2(_p8_,v$3,key$0),0))
                         {var t$1=l$0;continue}
                        var
                         t$3=t$1[3],
                         v$4=t$1[2],
                         e$2=[0,v$4,l$0,e$1],
                         t$1=t$3,
                         e$1=e$2;
                        continue}
                      break}}
                  else
                   var init$0=cons_right(t$6,0);
                  return [0,init$0,next$0]},
               find_first_satisfying$0=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var v=t$0[1];return caml_call1(f,v)?[0,v]:0}
                     var r=t$0[3],v$0=t$0[2],l=t$0[1];
                     if(caml_call1(f,v$0))
                      {var x=find_first_satisfying$0(l,f);return x?x:[0,v$0]}
                     var t$0=r;
                     continue}},
               find_last_satisfying$0=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var v=t$0[1];return caml_call1(f,v)?[0,v]:0}
                     var r=t$0[3],v$0=t$0[2],l=t$0[1];
                     if(caml_call1(f,v$0))
                      {var x=find_last_satisfying$0(r,f);return x?x:[0,v$0]}
                     var t$0=l;
                     continue}},
               binary_search$1=
                function(t,compare,how,v)
                 {if(-839473056 <= how)
                   return 200870407 <= how
                           ?926943384 <= how
                             ?find_first_satisfying$0
                               (t,
                                function(x)
                                 {return caml_call2(symbol$83,caml_call2(compare,x,v),0)})
                             :find_last_satisfying$0
                               (t,
                                function(x)
                                 {return caml_call2(symbol$78,caml_call2(compare,x,v),0)})
                           :-253007807 <= how
                             ?find_last_satisfying$0
                               (t,
                                function(x)
                                 {return caml_call2(symbol$79,caml_call2(compare,x,v),0)})
                             :find_first_satisfying$0
                               (t,
                                function(x)
                                 {return caml_call2(symbol$82,caml_call2(compare,x,v),0)});
                  if(-1055410545 <= how)
                   {var
                     elt=
                      find_last_satisfying$0
                       (t,
                        function(x)
                         {return caml_call2(symbol$79,caml_call2(compare,x,v),0)});
                    if(elt)
                     {var x=elt[1];
                      if(caml_call2(symbol$81,caml_call2(compare,x,v),0))
                       return elt}
                    return 0}
                  var
                   elt$0=
                    find_first_satisfying$0
                     (t,
                      function(x)
                       {return caml_call2(symbol$83,caml_call2(compare,x,v),0)});
                  if(elt$0)
                   {var x$0=elt$0[1];
                    if(caml_call2(symbol$81,caml_call2(compare,x$0,v),0))
                     return elt$0}
                  return 0},
               binary_search_segmented$1=
                function(t,segment_of,how)
                 {function is_left(x)
                   {var match=caml_call1(segment_of,x);
                    return 847852583 <= match?1:0}
                  function is_right(x){return 1 - is_left(x)}
                  return 125585502 <= how
                          ?find_last_satisfying$0(t,is_left)
                          :find_first_satisfying$0(t,is_right)},
               merge_to_sequence=
                function
                 (comparator,opt,greater_or_equal_to,less_or_equal_to,t$0,t)
                 {if(opt)var sth=opt[1],order=sth;else var order=608542111;
                  if(608542111 <= order)
                   var _p2_=comparator[1];
                  else
                   var
                    _p4_=comparator[1],
                    _p2_=function(_p5_,_p6_){return flip(_p4_,_p5_,_p6_)};
                  var
                   _p3_=
                    to_sequence$0
                     (comparator,
                      [0,order],
                      greater_or_equal_to,
                      less_or_equal_to,
                      t);
                  return merge_with_duplicates
                          (to_sequence$0
                            (comparator,
                             [0,order],
                             greater_or_equal_to,
                             less_or_equal_to,
                             t$0),
                           _p3_,
                           _p2_)},
               compare$51=
                function(compare_elt,s1,s2)
                 {var e2$2=of_set(s2),e1$2=of_set(s1),e1=e1$2,e2=e2$2;
                  for(;;)
                   {if(e1)
                     {if(e2)
                       {var
                         e2$0=e2[3],
                         r2=e2[2],
                         v2=e2[1],
                         e1$0=e1[3],
                         r1=e1[2],
                         v1=e1[1],
                         c=caml_call2(compare_elt,v1,v2);
                        if(caml_call2(symbol$80,c,0))return c;
                        var
                         e2$1=cons$0(r2,e2$0),
                         e1$1=cons$0(r1,e1$0),
                         e1=e1$1,
                         e2=e2$1;
                        continue}
                      return 1}
                    return e2?-1:0}},
               iter2$0=
                function(s1,s2,compare_elt)
                 {var t2=of_set(s2),t1=of_set(s1);
                  return function(f)
                   {var t1$0=t1,t2$0=t2;
                    for(;;)
                     {if(t1$0)
                       {if(t2$0)
                         {var
                           enum2=t2$0[3],
                           tree2=t2$0[2],
                           a2=t2$0[1],
                           enum1=t1$0[3],
                           tree1=t1$0[2],
                           a1=t1$0[1],
                           compare_result=caml_call2(compare_elt,a1,a2);
                          if(caml_call2(symbol$81,compare_result,0))
                           {caml_call1(f,[0,737457313,[0,a1,a2]]);
                            var
                             t2$1=cons$0(tree2,enum2),
                             t1$1=cons$0(tree1,enum1),
                             t1$0=t1$1,
                             t2$0=t2$1;
                            continue}
                          if(caml_call2(symbol$78,compare_result,0))
                           {caml_call1(f,[0,847852583,a1]);
                            var t1$2=cons$0(tree1,enum1),t1$0=t1$2;
                            continue}
                          caml_call1(f,[0,-57574468,a2]);
                          var t2$2=cons$0(tree2,enum2),t2$0=t2$2;
                          continue}
                        return iter$9
                                (function(a){return caml_call1(f,[0,847852583,a])},t1$0)}
                      return t2$0
                              ?iter$9
                                (function(a){return caml_call1(f,[0,-57574468,a])},t2$0)
                              :0}}},
               equal$32=
                function(s1,s2,compare_elt)
                 {return caml_call2(symbol$81,compare$51(compare_elt,s1,s2),0)},
               is_subset=
                function(s1,s2,compare_elt)
                 {function is_subset(s1,s2)
                   {var s1$0=s1,s2$0=s2;
                    for(;;)
                     {if(typeof s1$0 === "number")
                       return 1;
                      else
                       if(1 === s1$0[0])
                        {var _pW_=s1$0[3],_pX_=s1$0[2],_pY_=s1$0[1];
                         if(typeof s2$0 !== "number")
                          {if(0 === s2$0[0])
                            {var v2=s2$0[1];
                             if(typeof _pY_ === "number" && typeof _pW_ === "number")
                              return caml_call2
                                      (symbol$81,caml_call2(compare_elt,_pX_,v2),0);
                             return 0}
                           var
                            r2=s2$0[3],
                            v2$0=s2$0[2],
                            l2=s2$0[1],
                            c=caml_call2(compare_elt,_pX_,v2$0);
                           if(caml_call2(symbol$81,c,0))
                            {var _pZ_=is_subset(_pY_,l2);
                             if(_pZ_){var s1$0=_pW_,s2$0=r2;continue}
                             return _pZ_}
                           if(caml_call2(symbol$78,c,0))
                            {var _p0_=is_subset([1,_pY_,_pX_,0,0,0],l2);
                             if(_p0_){var s1$0=_pW_;continue}
                             return _p0_}
                           var _p1_=is_subset([1,0,_pX_,_pW_,0,0],r2);
                           if(_p1_){var s1$0=_pY_;continue}
                           return _p1_}}
                      if(typeof s2$0 === "number")return 0;
                      var v1=s1$0[1];
                      return mem$5(s2$0,v1,compare_elt)}}
                  return is_subset(s1,s2)},
               iter$10=
                function(t,f)
                 {function iter(param)
                   {var param$0=param;
                    for(;;)
                     if(typeof param$0 === "number")
                      return 0;
                     else
                      {if(0 === param$0[0])
                        {var v=param$0[1];return caml_call1(f,v)}
                       var r=param$0[3],v$0=param$0[2],l=param$0[1];
                       iter(l);
                       caml_call1(f,v$0);
                       var param$0=r;
                       continue}}
                  return iter(t)},
               fold$7=
                function(s,accu,f)
                 {var s$0=s,accu$0=accu;
                  for(;;)
                   if(typeof s$0 === "number")
                    return accu$0;
                   else
                    {if(0 === s$0[0])
                      {var v=s$0[1];return caml_call2(f,accu$0,v)}
                     var
                      r=s$0[3],
                      v$0=s$0[2],
                      l=s$0[1],
                      accu$1=caml_call2(f,fold$7(l,accu$0,f),v$0),
                      s$0=r,
                      accu$0=accu$1;
                     continue}},
               count$5=function(t,f){return count(fold$7,t,f)},
               sum$5=function(m,t,f){return sum(fold$7,m,t,f)},
               fold_right$1=
                function(s,accu,f)
                 {var s$0=s,accu$0=accu;
                  for(;;)
                   if(typeof s$0 === "number")
                    return accu$0;
                   else
                    {if(0 === s$0[0])
                      {var v=s$0[1];return caml_call2(f,v,accu$0)}
                     var
                      r=s$0[3],
                      v$0=s$0[2],
                      l=s$0[1],
                      accu$1=caml_call2(f,v$0,fold_right$1(r,accu$0,f)),
                      s$0=l,
                      accu$0=accu$1;
                     continue}},
               for_all$5=
                function(t,p)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 1;
                   else
                    {if(0 === t$0[0]){var v=t$0[1];return caml_call1(p,v)}
                     var r=t$0[3],v$0=t$0[2],l=t$0[1],_pT_=caml_call1(p,v$0);
                     if(_pT_)
                      {var _pU_=for_all$5(l,p);
                       if(_pU_){var t$0=r;continue}
                       var _pV_=_pU_}
                     else
                      var _pV_=_pT_;
                     return _pV_}},
               exists$6=
                function(t,p)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0]){var v=t$0[1];return caml_call1(p,v)}
                     var r=t$0[3],v$0=t$0[2],l=t$0[1],_pQ_=caml_call1(p,v$0);
                     if(_pQ_)
                      var _pR_=_pQ_;
                     else
                      {var _pS_=exists$6(l,p);
                       if(! _pS_){var t$0=r;continue}
                       var _pR_=_pS_}
                     return _pR_}},
               filter$4=
                function(s,p,compare_elt)
                 {function filt(accu,param)
                   {var accu$0=accu,param$0=param;
                    for(;;)
                     if(typeof param$0 === "number")
                      return accu$0;
                     else
                      {if(0 === param$0[0])
                        {var v=param$0[1];
                         return caml_call1(p,v)?add$1(accu$0,v,compare_elt):accu$0}
                       var
                        r=param$0[3],
                        v$0=param$0[2],
                        l=param$0[1],
                        _pP_=caml_call1(p,v$0)?add$1(accu$0,v$0,compare_elt):accu$0,
                        accu$1=filt(_pP_,l),
                        accu$0=accu$1,
                        param$0=r;
                       continue}}
                  return filt(0,s)},
               filter_map$2=
                function(s,p,compare_elt)
                 {function filt(accu,param)
                   {var accu$0=accu,param$0=param;
                    for(;;)
                     if(typeof param$0 === "number")
                      return accu$0;
                     else
                      {if(0 === param$0[0])
                        {var v=param$0[1],match=caml_call1(p,v);
                         if(match)
                          {var v$0=match[1];return add$1(accu$0,v$0,compare_elt)}
                         return accu$0}
                       var
                        r=param$0[3],
                        v$1=param$0[2],
                        l=param$0[1],
                        match$0=caml_call1(p,v$1);
                       if(match$0)
                        var v$2=match$0[1],_pO_=add$1(accu$0,v$2,compare_elt);
                       else
                        var _pO_=accu$0;
                       var accu$1=filt(_pO_,l),accu$0=accu$1,param$0=r;
                       continue}}
                  return filt(0,s)},
               partition_tf$1=
                function(s,p,compare_elt)
                 {function part(accu,param)
                   {var accu$0=accu,param$0=param;
                    for(;;)
                     {var _pL_=accu$0[2],_pM_=accu$0[1];
                      if(typeof param$0 === "number")
                       return accu$0;
                      else
                       {if(0 === param$0[0])
                         {var v=param$0[1];
                          return caml_call1(p,v)
                                  ?[0,add$1(_pM_,v,compare_elt),_pL_]
                                  :[0,_pM_,add$1(_pL_,v,compare_elt)]}
                        var
                         r=param$0[3],
                         v$0=param$0[2],
                         l=param$0[1],
                         _pN_=
                          caml_call1(p,v$0)
                           ?[0,add$1(_pM_,v$0,compare_elt),_pL_]
                           :[0,_pM_,add$1(_pL_,v$0,compare_elt)],
                         accu$1=part(_pN_,l),
                         accu$0=accu$1,
                         param$0=r;
                        continue}}}
                  return part(_dU_,s)},
               elements_aux=
                function(accu,param)
                 {var accu$0=accu,param$0=param;
                  for(;;)
                   if(typeof param$0 === "number")
                    return accu$0;
                   else
                    {if(0 === param$0[0]){var v=param$0[1];return [0,v,accu$0]}
                     var
                      r=param$0[3],
                      v$0=param$0[2],
                      l=param$0[1],
                      accu$1=[0,v$0,elements_aux(accu$0,r)],
                      accu$0=accu$1,
                      param$0=l;
                     continue}},
               elements=function(s){return elements_aux(0,s)},
               choose=
                function(t)
                 {if(typeof t === "number")
                   return 0;
                  else
                   {if(0 === t[0]){var v=t[1];return [0,v]}
                    var v$0=t[2];
                    return [0,v$0]}},
               not_found$13=[0,Not_found_s,_dV_],
               choose_exn=
                function(t)
                 {var match=choose(t);
                  if(match){var v=match[1];return v}
                  throw not_found$13},
               of_list$5=
                function(lst,compare_elt)
                 {return fold$0
                          (lst,
                           already_seen,
                           function(t,x){return add$1(t,x,compare_elt)})},
               to_list$7=function(s){return elements(s)},
               of_array$0=
                function(a,compare_elt)
                 {return fold
                          (a,
                           already_seen,
                           function(t,x){return add$1(t,x,compare_elt)})},
               to_array$6=
                function(param)
                 {if(typeof param === "number")
                   return [0];
                  else
                   {if(0 === param[0]){var v=param[1];return [0,v]}
                    var
                     s=param[5],
                     r=param[3],
                     v$0=param[2],
                     l=param[1],
                     res=caml_make_vect(s,v$0),
                     pos_ref=[0,0],
                     loop=
                      function(param)
                       {var param$0=param;
                        for(;;)
                         if(typeof param$0 === "number")
                          return 0;
                         else
                          {if(0 === param$0[0])
                            {var v=param$0[1],_pJ_=pos_ref[1];
                             caml_check_bound(res,_pJ_)[1 + _pJ_] = v;
                             return incr(pos_ref)}
                           var r=param$0[3],v$0=param$0[2],l=param$0[1];
                           loop(l);
                           var _pK_=pos_ref[1];
                           caml_check_bound(res,_pK_)[1 + _pK_] = v$0;
                           incr(pos_ref);
                           var param$0=r;
                           continue}};
                    loop(l);
                    incr(pos_ref);
                    loop(r);
                    return res}},
               map$24=
                function(t,f,compare_elt)
                 {return fold$7
                          (t,
                           already_seen,
                           function(t,x){return add$1(t,caml_call1(f,x),compare_elt)})},
               group_by=
                function(set,equiv,compare_elt)
                 {var set$0=set,equiv_classes=0;
                  for(;;)
                   {if(is_empty$5(set$0))return equiv_classes;
                    var
                     x=choose_exn(set$0),
                     match=
                      partition_tf$1
                       (set$0,
                        function(x)
                          {return function(elt)
                            {var _pI_=x === elt?1:0;
                             return _pI_?_pI_:caml_call2(equiv,x,elt)}}
                         (x),
                        compare_elt),
                     set$1=match[2],
                     equiv_x=match[1],
                     equiv_classes$0=[0,equiv_x,equiv_classes],
                     set$0=set$1,
                     equiv_classes=equiv_classes$0;
                    continue}},
               find$6=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var v=t$0[1];return caml_call1(f,v)?[0,v]:0}
                     var r=t$0[3],v$0=t$0[2],l=t$0[1];
                     if(caml_call1(f,v$0))return [0,v$0];
                     var r$0=find$6(l,f);
                     if(r$0)return r$0;
                     var t$0=r;
                     continue}},
               find_map$5=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0]){var v=t$0[1];return caml_call1(f,v)}
                     var r=t$0[3],v$0=t$0[2],l=t$0[1],r$0=caml_call1(f,v$0);
                     if(r$0)return r$0;
                     var r$1=find_map$5(l,f);
                     if(r$1)return r$1;
                     var t$0=r;
                     continue}},
               find_exn$3=
                function(t,f)
                 {var match=find$6(t,f);
                  if(match){var e=match[1];return e}
                  return caml_call1(failwith$0,cst_Set_find_exn_failed_to_fin)},
               nth$1=
                function(t,i)
                 {var t$0=t,i$0=i;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var v=t$0[1];return caml_call2(symbol$81,i$0,0)?[0,v]:0}
                     var s=t$0[5],r=t$0[3],v$0=t$0[2],l=t$0[1];
                     if(caml_call2(symbol$83,i$0,s))return 0;
                     var l_size=length$11(l),c=caml_int_compare(i$0,l_size);
                     if(caml_call2(symbol$78,c,0)){var t$0=l;continue}
                     if(caml_call2(symbol$81,c,0))return [0,v$0];
                     var i$1=(i$0 - l_size | 0) - 1 | 0,t$0=r,i$0=i$1;
                     continue}},
               stable_dedup_list=
                function(xs,compare_elt)
                 {var xs$0=xs,leftovers=0,already_seen$0=already_seen;
                  for(;;)
                   {if(xs$0)
                     {var tl=xs$0[2],hd=xs$0[1];
                      if(mem$5(already_seen$0,hd,compare_elt))
                       {var xs$0=tl;continue}
                      var
                       already_seen$1=add$1(already_seen$0,hd,compare_elt),
                       leftovers$0=[0,hd,leftovers],
                       xs$0=tl,
                       leftovers=leftovers$0,
                       already_seen$0=already_seen$1;
                      continue}
                    return rev(leftovers)}},
               t_of_sexp_direct=
                function(a_of_sexp,sexp,compare_elt)
                 {if(0 === sexp[0])
                   return caml_call2
                           (of_sexp_error,cst_Set_t_of_sexp_list_needed,sexp);
                  var
                   lst=sexp[1],
                   elt_lst=map$6(lst,a_of_sexp),
                   set=of_list$5(elt_lst,compare_elt),
                   _pH_=caml_call1(length,lst);
                  if(caml_call2(symbol$81,length$11(set),_pH_))return set;
                  var set$0=[0,already_seen];
                  iter2_exn
                   (lst,
                    elt_lst,
                    function(el_sexp,el)
                     {return mem$5(set$0[1],el,compare_elt)
                              ?caml_call2
                                (of_sexp_error,cst_Set_t_of_sexp_duplicate_el,el_sexp)
                              :(set$0[1] = add$1(set$0[1],el,compare_elt),0)});
                  throw [0,Assert_failure,_dW_]},
               sexp_of_t$47=
                function(sexp_of_a,t)
                 {return [1,
                          fold_right$1
                           (t,
                            0,
                            function(el,acc){return [0,caml_call1(sexp_of_a,el),acc]})]},
               is_subset$0=
                function(subset,superset,sexp_of_elt,compare_elt)
                 {var
                   invalid_elements=
                    diff(subset[1],superset[1],compare_elt);
                  if(is_empty$5(invalid_elements))return _dX_;
                  var
                   invalid_elements_sexp=
                    sexp_of_t$47(sexp_of_elt,invalid_elements),
                   _pG_=
                    caml_call2(symbol$77,cst_is_not_a_subset_of,superset[2]);
                  return error_s
                          (caml_call2
                            (message,
                             caml_call2(symbol$77,subset[2],_pG_),
                             [0,[0,cst_invalid_elements,invalid_elements_sexp],0]))},
               like=
                function(param,tree)
                 {var comparator=param[1];return [0,comparator,tree]},
               compare_elt=function(t){return t[1][1]},
               comparator$11=function(t){return t[1]},
               invariants$0=
                function(t)
                 {var _pF_=compare_elt(t);return invariants(t[2],_pF_)},
               length$12=function(t){return length$11(t[2])},
               is_empty$6=function(t){return is_empty$5(t[2])},
               elements$0=function(t){return elements(t[2])},
               min_elt$7=function(t){return min_elt$6(t[2])},
               min_elt_exn$0=function(t){return min_elt_exn(t[2])},
               max_elt$7=function(t){return max_elt$6(t[2])},
               max_elt_exn$0=function(t){return max_elt_exn(t[2])},
               choose$0=function(t){return choose(t[2])},
               choose_exn$0=function(t){return choose_exn(t[2])},
               to_list$8=function(t){return to_list$7(t[2])},
               to_array$7=function(t){return to_array$6(t[2])},
               fold$8=function(t,init,f){return fold$7(t[2],init,f)},
               fold_until$6=
                function(t,init,f)
                 {var _pD_=t[2];
                  return function(_pE_){return fold_until$5(_pD_,init,f,_pE_)}},
               fold_right$2=
                function(t,init,f){return fold_right$1(t[2],init,f)},
               fold_result$5=
                function(t,init,f){return fold_result(fold$8,init,f,t)},
               iter$11=function(t,f){return iter$10(t[2],f)},
               iter2$1=
                function(a,b,f)
                 {var _pC_=compare_elt(a);
                  return caml_call1(iter2$0(a[2],b[2],_pC_),f)},
               exists$7=function(t,f){return exists$6(t[2],f)},
               for_all$6=function(t,f){return for_all$5(t[2],f)},
               count$6=function(t,f){return count$5(t[2],f)},
               sum$6=function(m,t,f){return sum$5(m,t[2],f)},
               find$7=function(t,f){return find$6(t[2],f)},
               find_exn$4=function(t,f){return find_exn$3(t[2],f)},
               find_map$6=function(t,f){return find_map$5(t[2],f)},
               mem$6=
                function(t,a)
                 {var _pB_=compare_elt(t);return mem$5(t[2],a,_pB_)},
               filter$5=
                function(t,f)
                 {var _pA_=compare_elt(t);
                  return like(t,filter$4(t[2],f,_pA_))},
               add$2=
                function(t,a)
                 {var _pz_=compare_elt(t);return like(t,add$1(t[2],a,_pz_))},
               remove$1=
                function(t,a)
                 {var _py_=compare_elt(t);
                  return like(t,remove$0(t[2],a,_py_))},
               union$0=
                function(t1,t2)
                 {var _px_=compare_elt(t1);
                  return like(t1,union(t1[2],t2[2],_px_))},
               inter$0=
                function(t1,t2)
                 {var _pw_=compare_elt(t1);
                  return like(t1,inter(t1[2],t2[2],_pw_))},
               diff$0=
                function(t1,t2)
                 {var _pv_=compare_elt(t1);
                  return like(t1,diff(t1[2],t2[2],_pv_))},
               symmetric_diff$0=
                function(t1,t2)
                 {var _pu_=compare_elt(t1);
                  return symmetric_diff(t1[2],t2[2],_pu_)},
               compare_direct=
                function(t1,t2)
                 {var _ps_=t2[2],_pt_=t1[2];
                  return compare$51(compare_elt(t1),_pt_,_ps_)},
               equal$33=
                function(t1,t2)
                 {var _pr_=compare_elt(t1);return equal$32(t1[2],t2[2],_pr_)},
               is_subset$1=
                function(t,of)
                 {var _pq_=compare_elt(t);return is_subset(t[2],of[2],_pq_)},
               to_named_tree=
                function(param)
                 {var name=param[2],set=param[1];return [0,set[2],name]},
               is_subset$2=
                function(subset,superset)
                 {var
                   _pn_=compare_elt(subset[1]),
                   _po_=subset[1][1][2],
                   _pp_=to_named_tree(superset);
                  return is_subset$0(to_named_tree(subset),_pp_,_po_,_pn_)},
               equal$34=
                function(t1,t2)
                 {var _pm_=[0,is_subset$2(t2,t1),0];
                  return combine_errors_unit$0([0,is_subset$2(t1,t2),_pm_])},
               partition_tf$2=
                function(t,f)
                 {var
                   _pk_=compare_elt(t),
                   match=partition_tf$1(t[2],f,_pk_),
                   tree_f=match[2],
                   tree_t=match[1],
                   _pl_=like(t,tree_f);
                  return [0,like(t,tree_t),_pl_]},
               split$2=
                function(t,a)
                 {var
                   _pi_=compare_elt(t),
                   match=split$1(t[2],a,_pi_),
                   tree2=match[3],
                   b=match[2],
                   tree1=match[1],
                   _pj_=like(t,tree2);
                  return [0,like(t,tree1),b,_pj_]},
               group_by$0=
                function(t,equiv)
                 {function _pf_(_ph_){return like(t,_ph_)}
                  var _pg_=compare_elt(t);
                  return map$6(group_by(t[2],equiv,_pg_),_pf_)},
               nth$2=function(t,i){return nth$1(t[2],i)},
               remove_index$0=
                function(t,i)
                 {var _pe_=compare_elt(t);
                  return like(t,remove_index(t[2],i,_pe_))},
               sexp_of_t$48=
                function(sexp_of_a,param,t)
                 {return sexp_of_t$47(sexp_of_a,t[2])},
               to_sequence$1=
                function(order,greater_or_equal_to,less_or_equal_to,t)
                 {return to_sequence$0
                          (t[1],order,greater_or_equal_to,less_or_equal_to,t[2])},
               binary_search$2=
                function(t,compare,how,v)
                 {return binary_search$1(t[2],compare,how,v)},
               binary_search_segmented$2=
                function(t,segment_of,how)
                 {return binary_search_segmented$1(t[2],segment_of,how)},
               merge_to_sequence$0=
                function(order,greater_or_equal_to,less_or_equal_to,t$0,t)
                 {return merge_to_sequence
                          (t$0[1],
                           order,
                           greater_or_equal_to,
                           less_or_equal_to,
                           t$0[2],
                           t[2])},
               hash_fold_direct=
                function(hash_fold_key,state,t)
                 {var _pd_=t[2];
                  return fold$7
                          (_pd_,
                           caml_call2(hash_fold_t$4,state,length$11(_pd_)),
                           hash_fold_key)},
               compare$52=
                function(param,_pc_,t1,t2){return compare_direct(t1,t2)},
               t_of_sexp_direct$0=
                function(comparator,a_of_sexp,sexp)
                 {return t_of_sexp_direct(a_of_sexp,sexp,comparator[1])},
               empty$1=function(param){return already_seen},
               singleton$3=function(param,e){return [0,e]},
               length$13=function(t){return length$11(t)},
               invariants$1=
                function(comparator,t){return invariants(t,comparator[1])},
               is_empty$7=function(t){return is_empty$5(t)},
               elements$1=function(t){return elements(t)},
               min_elt$8=function(t){return min_elt$6(t)},
               min_elt_exn$1=function(t){return min_elt_exn(t)},
               max_elt$8=function(t){return max_elt$6(t)},
               max_elt_exn$1=function(t){return max_elt_exn(t)},
               choose$1=function(t){return choose(t)},
               choose_exn$1=function(t){return choose_exn(t)},
               to_list$9=function(t){return to_list$7(t)},
               to_array$8=function(t){return to_array$6(t)},
               iter$12=function(t,f){return iter$10(t,f)},
               exists$8=function(t,f){return exists$6(t,f)},
               for_all$7=function(t,f){return for_all$5(t,f)},
               count$7=function(t,f){return count$5(t,f)},
               sum$7=function(m,t,f){return sum$5(m,t,f)},
               find$8=function(t,f){return find$6(t,f)},
               find_exn$5=function(t,f){return find_exn$3(t,f)},
               find_map$7=function(t,f){return find_map$5(t,f)},
               fold$9=function(t,init,f){return fold$7(t,init,f)},
               fold_until$7=
                function(t,init,f)
                 {return function(_pb_){return fold_until$5(t,init,f,_pb_)}},
               fold_right$3=function(t,init,f){return fold_right$1(t,init,f)},
               map$25=
                function(comparator,t,f){return map$24(t,f,comparator[1])},
               filter$6=
                function(comparator,t,f){return filter$4(t,f,comparator[1])},
               filter_map$3=
                function(comparator,t,f)
                 {return filter_map$2(t,f,comparator[1])},
               partition_tf$3=
                function(comparator,t,f)
                 {return partition_tf$1(t,f,comparator[1])},
               iter2$2=
                function(comparator,a,b,f)
                 {return caml_call1(iter2$0(a,b,comparator[1]),f)},
               mem$7=function(comparator,t,a){return mem$5(t,a,comparator[1])},
               add$3=function(comparator,t,a){return add$1(t,a,comparator[1])},
               remove$2=
                function(comparator,t,a){return remove$0(t,a,comparator[1])},
               union$1=
                function(comparator,t1,t2){return union(t1,t2,comparator[1])},
               inter$1=
                function(comparator,t1,t2){return inter(t1,t2,comparator[1])},
               diff$1=
                function(comparator,t1,t2){return diff(t1,t2,comparator[1])},
               symmetric_diff$1=
                function(comparator,t1,t2)
                 {return symmetric_diff(t1,t2,comparator[1])},
               compare_direct$0=
                function(comparator,t1,t2)
                 {return compare$51(comparator[1],t1,t2)},
               equal$35=
                function(comparator,t1,t2)
                 {return equal$32(t1,t2,comparator[1])},
               is_subset$3=
                function(comparator,t,of)
                 {return is_subset(t,of,comparator[1])},
               of_list$6=
                function(comparator,l){return of_list$5(l,comparator[1])},
               of_array$1=
                function(comparator,a){return of_array$0(a,comparator[1])},
               of_sorted_array_unchecked$0=
                function(comparator,a)
                 {return of_sorted_array_unchecked(a,comparator[1])},
               of_increasing_iterator_uncheck$0=
                function(param,len,f)
                 {return of_increasing_iterator_uncheck(len,f)},
               of_sorted_array$0=
                function(comparator,a)
                 {return of_sorted_array(a,comparator[1])},
               union_list$0=
                function(comparator,l)
                 {return union_list(comparator,function(_pa_){return _pa_},l)},
               stable_dedup_list$0=
                function(comparator,xs)
                 {return stable_dedup_list(xs,comparator[1])},
               group_by$1=
                function(comparator,t,equiv)
                 {return group_by(t,equiv,comparator[1])},
               split$3=
                function(comparator,t,a){return split$1(t,a,comparator[1])},
               nth$3=function(t,i){return nth$1(t,i)},
               remove_index$1=
                function(comparator,t,i)
                 {return remove_index(t,i,comparator[1])},
               sexp_of_t$49=
                function(sexp_of_a,param,t){return sexp_of_t$47(sexp_of_a,t)},
               to_tree=function(t){return t},
               of_tree=function(param,t){return t},
               to_sequence$2=
                function
                 (comparator,order,greater_or_equal_to,less_or_equal_to,t)
                 {return to_sequence$0
                          (comparator,order,greater_or_equal_to,less_or_equal_to,t)},
               binary_search$3=
                function(param,t,compare,how,v)
                 {return binary_search$1(t,compare,how,v)},
               binary_search_segmented$3=
                function(param,t,segment_of,how)
                 {return binary_search_segmented$1(t,segment_of,how)},
               merge_to_sequence$1=
                function
                 (comparator,order,greater_or_equal_to,less_or_equal_to,t$0,t)
                 {return merge_to_sequence
                          (comparator,
                           order,
                           greater_or_equal_to,
                           less_or_equal_to,
                           t$0,
                           t)},
               fold_result$6=
                function(t,init,f){return fold_result(fold$9,init,f,t)},
               is_subset$4=
                function(comparator,t1,t2)
                 {return is_subset$0(t1,t2,comparator[2],comparator[1])},
               equal$36=
                function(comparator,t1,t2)
                 {var
                   _o__=comparator[1],
                   _o$_=comparator[2],
                   _o9_=[0,is_subset$0(t2,t1,_o$_,_o__),0];
                  return combine_errors_unit$0
                          ([0,is_subset$0(t1,t2,_o$_,_o__),_o9_])},
               Named=[0,is_subset$4,equal$36],
               to_tree$0=function(t){return t[2]},
               of_tree$0=function(comparator,tree){return [0,comparator,tree]},
               t_of_sexp_direct$1=
                function(comparator,a_of_sexp,sexp)
                 {return [0,
                          comparator,
                          t_of_sexp_direct(a_of_sexp,sexp,comparator[1])]},
               empty$2=
                function(comparator){return [0,comparator,already_seen]},
               Empty_without_value_restrictio=
                function(Elt)
                 {var empty=[0,Elt[1],already_seen];return [0,empty]},
               singleton$4=function(comparator,e){return [0,comparator,[0,e]]},
               union_list$1=
                function(comparator,l)
                 {return [0,comparator,union_list(comparator,to_tree$0,l)]},
               of_sorted_array_unchecked$1=
                function(comparator,array)
                 {var tree=of_sorted_array_unchecked(array,comparator[1]);
                  return [0,comparator,tree]},
               of_increasing_iterator_uncheck$1=
                function(comparator,len,f)
                 {return [0,comparator,of_increasing_iterator_uncheck(len,f)]},
               of_sorted_array$1=
                function(comparator,array)
                 {function _o7_(tree){return [0,comparator,tree]}
                  var _o8_=of_sorted_array(array,comparator[1]);
                  return caml_call2(Monad_infix$0[2],_o8_,_o7_)},
               of_list$7=
                function(comparator,l)
                 {return [0,comparator,of_list$5(l,comparator[1])]},
               of_array$2=
                function(comparator,a)
                 {return [0,comparator,of_array$0(a,comparator[1])]},
               stable_dedup_list$1=
                function(comparator,xs)
                 {return stable_dedup_list(xs,comparator[1])},
               map$26=
                function(comparator,t,f)
                 {return [0,comparator,map$24(t[2],f,comparator[1])]},
               filter_map$4=
                function(comparator,t,f)
                 {return [0,comparator,filter_map$2(t[2],f,comparator[1])]},
               comparator_s=
                function(t){var comparator=t[1];return [0,comparator]},
               empty$3=function(m){return empty$2(m[1])},
               singleton$5=function(m,a){return singleton$4(m[1],a)},
               union_list$2=function(m,a){return union_list$1(m[1],a)},
               of_sorted_array_unchecked$2=
                function(m,a){return of_sorted_array_unchecked$1(m[1],a)},
               of_increasing_iterator_uncheck$2=
                function(m,len,f)
                 {return of_increasing_iterator_uncheck$1(m[1],len,f)},
               of_sorted_array$2=
                function(m,a){return of_sorted_array$1(m[1],a)},
               of_list$8=function(m,a){return of_list$7(m[1],a)},
               of_array$3=function(m,a){return of_array$2(m[1],a)},
               stable_dedup_list$2=
                function(m,a){return stable_dedup_list$1(m[1],a)},
               map$27=function(m,a,f){return map$26(m[1],a,f)},
               filter_map$5=function(m,a,f){return filter_map$4(m[1],a,f)},
               M=function(Elt){return [0]},
               sexp_of_m_t=
                function(Elt,t)
                 {function _o6_(param){return _dY_}
                  return sexp_of_t$48(Elt[1],_o6_,t)},
               m_t_of_sexp=
                function(Elt,sexp)
                 {return t_of_sexp_direct$1(Elt[2],Elt[1],sexp)},
               compare_m_t=function(Elt,t1,t2){return compare_direct(t1,t2)},
               equal_m_t=function(Elt,t1,t2){return equal$33(t1,t2)},
               hash_fold_m_t=
                function(Elt,state)
                 {var _o4_=Elt[1];
                  return function(_o5_)
                   {return hash_fold_direct(_o4_,state,_o5_)}},
               hash_m_t=
                function(folder,t)
                 {var state=caml_call1(hash_fold_m_t(folder,create$0(0,0)),t);
                  return runtime.Base_internalhash_get_hash_value(state)},
               comparator$12=Poly[1],
               include$54=Empty_without_value_restrictio(Poly),
               empty$4=include$54[1],
               singleton$6=function(a){return singleton$4(comparator$12,a)},
               union_list$3=function(a){return union_list$1(comparator$12,a)},
               of_sorted_array_unchecked$3=
                function(a)
                 {return of_sorted_array_unchecked$1(comparator$12,a)},
               of_increasing_iterator_uncheck$3=
                function(len,f)
                 {return of_increasing_iterator_uncheck$1(comparator$12,len,f)},
               of_sorted_array$3=
                function(a){return of_sorted_array$1(comparator$12,a)},
               of_list$9=function(a){return of_list$7(comparator$12,a)},
               of_array$4=function(a){return of_array$2(comparator$12,a)},
               stable_dedup_list$3=
                function(a){return stable_dedup_list$1(comparator$12,a)},
               map$28=function(a,f){return map$26(comparator$12,a,f)},
               filter_map$6=
                function(a,f){return filter_map$4(comparator$12,a,f)},
               of_tree$1=function(tree){return [0,comparator$12,tree]},
               to_tree$1=function(t){return t[2]},
               Base_Set=
                [0,
                 compare$52,
                 invariants$0,
                 comparator_s,
                 comparator$11,
                 empty$3,
                 singleton$5,
                 length$12,
                 is_empty$6,
                 mem$6,
                 add$2,
                 remove$1,
                 union$0,
                 union_list$2,
                 inter$0,
                 diff$0,
                 symmetric_diff$0,
                 compare_direct,
                 hash_fold_direct,
                 equal$33,
                 exists$7,
                 for_all$6,
                 count$6,
                 sum$6,
                 find$7,
                 find_map$6,
                 find_exn$4,
                 nth$2,
                 remove_index$0,
                 is_subset$1,
                 [0,is_subset$2,equal$34],
                 of_list$8,
                 of_array$3,
                 to_list$8,
                 to_array$7,
                 of_sorted_array$2,
                 of_sorted_array_unchecked$2,
                 of_increasing_iterator_uncheck$2,
                 stable_dedup_list$2,
                 map$27,
                 filter_map$5,
                 filter$5,
                 fold$8,
                 fold_result$5,
                 fold_until$6,
                 fold_right$2,
                 iter$11,
                 iter2$1,
                 partition_tf$2,
                 elements$0,
                 min_elt$7,
                 min_elt_exn$0,
                 max_elt$7,
                 max_elt_exn$0,
                 choose$0,
                 choose_exn$0,
                 split$2,
                 group_by$0,
                 to_sequence$1,
                 binary_search$2,
                 binary_search_segmented$2,
                 [0,
                  Merge_with_duplicates_element[1],
                  Merge_with_duplicates_element[3],
                  Merge_with_duplicates_element[4]],
                 merge_to_sequence$0,
                 M,
                 sexp_of_m_t,
                 m_t_of_sexp,
                 compare_m_t,
                 equal_m_t,
                 hash_fold_m_t,
                 hash_m_t,
                 [0,
                  length$12,
                  is_empty$6,
                  iter$11,
                  fold$8,
                  fold_result$5,
                  exists$7,
                  for_all$6,
                  count$6,
                  sum$6,
                  find$7,
                  find_map$6,
                  to_list$8,
                  to_array$7,
                  invariants$0,
                  mem$6,
                  add$2,
                  remove$1,
                  union$0,
                  inter$0,
                  diff$0,
                  symmetric_diff$0,
                  compare_direct,
                  equal$33,
                  is_subset$1,
                  [0,is_subset$2,equal$34],
                  fold_until$6,
                  fold_right$2,
                  iter2$1,
                  filter$5,
                  partition_tf$2,
                  elements$0,
                  min_elt$7,
                  min_elt_exn$0,
                  max_elt$7,
                  max_elt_exn$0,
                  choose$0,
                  choose_exn$0,
                  split$2,
                  group_by$0,
                  find_exn$4,
                  nth$2,
                  remove_index$0,
                  to_tree$1,
                  to_sequence$1,
                  binary_search$2,
                  binary_search_segmented$2,
                  merge_to_sequence$0,
                  empty$4,
                  singleton$6,
                  union_list$3,
                  of_list$9,
                  of_array$4,
                  of_sorted_array$3,
                  of_sorted_array_unchecked$3,
                  of_increasing_iterator_uncheck$3,
                  stable_dedup_list$3,
                  map$28,
                  filter_map$6,
                  of_tree$1],
                 [0,
                  sexp_of_t$48,
                  t_of_sexp_direct$1,
                  [0,
                   sexp_of_t$49,
                   t_of_sexp_direct$0,
                   Named,
                   length$13,
                   is_empty$7,
                   iter$12,
                   fold$9,
                   fold_result$6,
                   exists$8,
                   for_all$7,
                   count$7,
                   sum$7,
                   find$8,
                   find_map$7,
                   to_list$9,
                   to_array$8,
                   invariants$1,
                   mem$7,
                   add$3,
                   remove$2,
                   union$1,
                   inter$1,
                   diff$1,
                   symmetric_diff$1,
                   compare_direct$0,
                   equal$35,
                   is_subset$3,
                   fold_until$7,
                   fold_right$3,
                   iter2$2,
                   filter$6,
                   partition_tf$3,
                   elements$1,
                   min_elt$8,
                   min_elt_exn$1,
                   max_elt$8,
                   max_elt_exn$1,
                   choose$1,
                   choose_exn$1,
                   split$3,
                   group_by$1,
                   find_exn$5,
                   nth$3,
                   remove_index$1,
                   to_tree,
                   to_sequence$2,
                   binary_search$3,
                   binary_search_segmented$3,
                   merge_to_sequence$1,
                   empty$1,
                   singleton$3,
                   union_list$0,
                   of_list$6,
                   of_array$1,
                   of_sorted_array$0,
                   of_sorted_array_unchecked$0,
                   of_increasing_iterator_uncheck$0,
                   stable_dedup_list$0,
                   map$25,
                   filter_map$3,
                   of_tree,
                   already_seen],
                  length$12,
                  is_empty$6,
                  iter$11,
                  fold$8,
                  fold_result$5,
                  exists$7,
                  for_all$6,
                  count$6,
                  sum$6,
                  find$7,
                  find_map$6,
                  to_list$8,
                  to_array$7,
                  invariants$0,
                  mem$6,
                  add$2,
                  remove$1,
                  union$0,
                  inter$0,
                  diff$0,
                  symmetric_diff$0,
                  compare_direct,
                  equal$33,
                  is_subset$1,
                  [0,is_subset$2,equal$34],
                  fold_until$6,
                  fold_right$2,
                  iter2$1,
                  filter$5,
                  partition_tf$2,
                  elements$0,
                  min_elt$7,
                  min_elt_exn$0,
                  max_elt$7,
                  max_elt_exn$0,
                  choose$0,
                  choose_exn$0,
                  split$2,
                  group_by$0,
                  find_exn$4,
                  nth$2,
                  remove_index$0,
                  to_tree$0,
                  to_sequence$1,
                  binary_search$2,
                  binary_search_segmented$2,
                  merge_to_sequence$0,
                  empty$2,
                  singleton$4,
                  union_list$1,
                  of_list$7,
                  of_array$2,
                  of_sorted_array$1,
                  of_sorted_array_unchecked$1,
                  of_increasing_iterator_uncheck$1,
                  stable_dedup_list$1,
                  map$26,
                  filter_map$4,
                  of_tree$0,
                  comparator$11,
                  hash_fold_direct,
                  Empty_without_value_restrictio]];
              caml_register_global(1070,Base_Set,"Base__Set");
              var
               swap$5=
                function(t1,t2)
                 {var tmp=t1[1];t1[1] = t2[1];t2[1] = tmp;return 0},
               replace=function(t,f){t[1] = caml_call1(f,t[1]);return 0},
               set_temporarily=
                function(t,a,f)
                 {var restore_to=t[1];
                  t[1] = a;
                  return protect
                          (f,function(param){t[1] = restore_to;return 0})},
               Base_Ref=
                [0,
                 compare_ref$0,
                 equal_ref$0,
                 ref_of_sexp,
                 sexp_of_ref,
                 swap$5,
                 replace,
                 set_temporarily];
              caml_register_global(1071,Base_Ref,"Base__Ref");
              var Base_Queue_intf=[0];
              caml_register_global(1072,Base_Queue_intf,"Base__Queue_intf");
              var
               inc_num_mutations=function(t){t[1] = t[1] + 1 | 0;return 0},
               capacity$0=function(t){return t[3] + 1 | 0},
               elts_index=function(t,i){return (t[2] + i | 0) & t[3]},
               unsafe_get$2=
                function(t,i)
                 {var _o3_=elts_index(t,i);
                  return unsafe_get_some_exn(t[5],_o3_)},
               unsafe_set$2=
                function(t,i,a)
                 {var _o2_=elts_index(t,i);
                  return unsafe_set_some(t[5],_o2_,a)},
               check_index_exn=
                function(t,i)
                 {var
                   _oZ_=caml_call2(symbol$78,i,0),
                   _o0_=_oZ_ || caml_call2(symbol$83,i,t[4]);
                  if(_o0_)
                   {var
                     _o1_=
                      [0,[0,cst_length,caml_call1(sexp_of_t$35,t[4])],0];
                    return raise_s
                            (caml_call2
                              (message,
                               cst_Queue_index_out_of_bounds,
                               [0,[0,cst_index,caml_call1(sexp_of_t$35,i)],_o1_]))}
                  return _o0_},
               get$5=
                function(t,i){check_index_exn(t,i);return unsafe_get$2(t,i)},
               set$3=
                function(t,i,a)
                 {check_index_exn(t,i);
                  inc_num_mutations(t);
                  return unsafe_set$2(t,i,a)},
               is_empty$8=function(t){return caml_call2(symbol$81,t[4],0)},
               length$14=function(param){var length=param[4];return length},
               ensure_no_mutation=
                function(t,num_mutations)
                 {var _oX_=caml_call2(symbol$80,t[1],num_mutations);
                  if(_oX_)
                   {var
                     _oY_=0,
                     of_a=function(param){return _d4_},
                     v_num_mutations=t[1],
                     v_front=t[2],
                     v_mask=t[3],
                     v_length=t[4],
                     v_elts=t[5],
                     arg=sexp_of_t$39(of_a,v_elts),
                     bnds=[0,[1,[0,_dZ_,[0,arg,0]]],0],
                     arg$0=caml_call1(sexp_of_t$4,v_length),
                     bnds$0=[0,[1,[0,_d0_,[0,arg$0,0]]],bnds],
                     arg$1=caml_call1(sexp_of_t$4,v_mask),
                     bnds$1=[0,[1,[0,_d1_,[0,arg$1,0]]],bnds$0],
                     arg$2=caml_call1(sexp_of_t$4,v_front),
                     bnds$2=[0,[1,[0,_d2_,[0,arg$2,0]]],bnds$1],
                     arg$3=caml_call1(sexp_of_t$4,v_num_mutations),
                     bnds$3=[0,[1,[0,_d3_,[0,arg$3,0]]],bnds$2];
                    return raise_s
                            (caml_call2
                              (message,
                               cst_mutation_of_queue_during_i,
                               [0,[0,cst$26,[1,bnds$3]],_oY_]))}
                  return _oX_},
               compare$53=
                function(compare_elt,t1,t2)
                 {if(t1 === t2)return 0;
                  var pos=0,_oT_=t2[1],_oU_=t1[1],_oV_=t2[4],_oW_=t1[4];
                  for(;;)
                   {var
                     match=caml_call2(symbol$81,pos,_oW_),
                     match$0=caml_call2(symbol$81,pos,_oV_);
                    if(match)return match$0?0:-1;
                    if(match$0)return 1;
                    var
                     _oS_=unsafe_get$2(t2,pos),
                     x=caml_call2(compare_elt,unsafe_get$2(t1,pos),_oS_);
                    ensure_no_mutation(t1,_oU_);
                    ensure_no_mutation(t2,_oT_);
                    if(0 === x){var pos$0=pos + 1 | 0,pos=pos$0;continue}
                    return x}},
               equal$37=
                function(equal_elt,t1,t2)
                 {var _oN_=t1 === t2?1:0;
                  if(_oN_)
                   var _oO_=_oN_;
                  else
                   {var
                     len1=t1[4],
                     len2=t2[4],
                     _oP_=caml_call2(symbol$81,len1,len2);
                    if(_oP_)
                     {var pos=0,_oQ_=t2[1],_oR_=t1[1];
                      for(;;)
                       {var _oK_=caml_call2(symbol$81,pos,len1);
                        if(_oK_)
                         var _oL_=_oK_;
                        else
                         {var
                           _oM_=unsafe_get$2(t2,pos),
                           b=caml_call2(equal_elt,unsafe_get$2(t1,pos),_oM_);
                          ensure_no_mutation(t1,_oR_);
                          ensure_no_mutation(t2,_oQ_);
                          if(b){var pos$0=pos + 1 | 0,pos=pos$0;continue}
                          var _oL_=b}
                        return _oL_}}
                    var _oO_=_oP_}
                  return _oO_},
               invariant$9=
                function(invariant_a,t)
                 {var num_mutations=t[1],front=t[2],length=t[4],elts=t[5];
                  if(caml_call2(symbol$83,front,0))
                   {if(caml_call2(symbol$78,front,capacity$0(t)))
                     {var capacity=capacity$0(t);
                      if(caml_call2(symbol$81,capacity,elts.length - 1))
                       {if(caml_call2(symbol$83,capacity,1))
                         {if(is_pow2(capacity))
                           {if(caml_call2(symbol$83,length,0))
                             {if(caml_call2(symbol$79,length,capacity))
                               {var _oI_=capacity - 1 | 0,_oH_=0;
                                if(! (_oI_ < 0))
                                 {var i=_oH_;
                                  for(;;)
                                   {if(caml_call2(symbol$78,i,t[4]))
                                     {caml_call1(invariant_a,unsafe_get$2(t,i));
                                      ensure_no_mutation(t,num_mutations)}
                                    else
                                     {var _oG_=elts_index(t,i);
                                      if(unsafe_is_some(t[5],_oG_))throw [0,Assert_failure,_d5_]}
                                    var _oJ_=i + 1 | 0;
                                    if(_oI_ !== i){var i=_oJ_;continue}
                                    break}}
                                return 0}
                              throw [0,Assert_failure,_d6_]}
                            throw [0,Assert_failure,_d7_]}
                          throw [0,Assert_failure,_d8_]}
                        throw [0,Assert_failure,_d9_]}
                      throw [0,Assert_failure,_d__]}
                    throw [0,Assert_failure,_d$_]}
                  throw [0,Assert_failure,_ea_]},
               create$12=
                function(capacity,param)
                 {if(capacity)
                   var
                    capacity$0=capacity[1],
                    _oF_=
                     caml_call2(symbol$78,capacity$0,0)
                      ?raise_s
                        (caml_call2
                          (message,
                           cst_cannot_have_queue_with_neg,
                           [0,[0,cst_capacity,caml_call1(sexp_of_t$35,capacity$0)],0]))
                      :caml_call2(symbol$81,capacity$0,0)?1:ceil_pow2(capacity$0),
                    capacity$1=_oF_;
                  else
                   var capacity$1=1;
                  return [0,0,0,capacity$1 - 1 | 0,0,create$9(capacity$1)]},
               blit_to_array=
                function(src,dst)
                 {if(caml_call2(symbol$79,src[4],dst.length - 1))
                   {var
                     _oD_=src[2],
                     _oE_=capacity$0(src) - _oD_ | 0,
                     front_len=caml_call2(min$26,src[4],_oE_),
                     rest_len=src[4] - front_len | 0;
                    caml_call5(blit$5,src[5],src[2],dst,0,front_len);
                    return caml_call5(blit$5,src[5],0,dst,front_len,rest_len)}
                  throw [0,Assert_failure,_eb_]},
               set_capacity$0=
                function(t,desired_capacity)
                 {inc_num_mutations(t);
                  var
                   new_capacity=
                    ceil_pow2
                     (caml_call2
                       (max$12,1,caml_call2(max$12,desired_capacity,t[4]))),
                   _oB_=caml_call2(symbol$80,new_capacity,capacity$0(t));
                  if(_oB_)
                   {var dst=create$9(new_capacity);
                    blit_to_array(t,dst);
                    t[2] = 0;
                    t[3] = new_capacity - 1 | 0;
                    t[5] = dst;
                    var _oC_=0}
                  else
                   var _oC_=_oB_;
                  return _oC_},
               enqueue=
                function(t,a)
                 {inc_num_mutations(t);
                  var _oA_=capacity$0(t);
                  if(caml_call2(symbol$81,t[4],_oA_))
                   set_capacity$0(t,2 * t[4] | 0);
                  unsafe_set$2(t,t[4],a);
                  t[4] = t[4] + 1 | 0;
                  return 0},
               dequeue_nonempty=
                function(t)
                 {inc_num_mutations(t);
                  var elts=t[5],front=t[2],res=get_some_exn(elts,front);
                  set_none(elts,front);
                  t[2] = elts_index(t,1);
                  t[4] = t[4] - 1 | 0;
                  return res},
               dequeue_exn=
                function(t)
                 {if(is_empty$8(t))throw Stdlib_queue[1];
                  return dequeue_nonempty(t)},
               dequeue=
                function(t){return is_empty$8(t)?0:[0,dequeue_nonempty(t)]},
               front_nonempty=
                function(t){return unsafe_get_some_exn(t[5],t[2])},
               last_nonempty=function(t){return unsafe_get$2(t,t[4] - 1 | 0)},
               peek=function(t){return is_empty$8(t)?0:[0,front_nonempty(t)]},
               peek_exn=
                function(t)
                 {if(is_empty$8(t))throw Stdlib_queue[1];
                  return front_nonempty(t)},
               last$1=function(t){return is_empty$8(t)?0:[0,last_nonempty(t)]},
               last_exn$0=
                function(t)
                 {if(is_empty$8(t))throw Stdlib_queue[1];
                  return last_nonempty(t)},
               clear$1=
                function(t)
                 {inc_num_mutations(t);
                  var _ov_=caml_call2(symbol$82,t[4],0);
                  if(_ov_)
                   {var _ox_=t[4] - 1 | 0,_ow_=0;
                    if(! (_ox_ < 0))
                     {var i=_ow_;
                      for(;;)
                       {var _ou_=elts_index(t,i);
                        unsafe_set_none(t[5],_ou_);
                        var _oz_=i + 1 | 0;
                        if(_ox_ !== i){var i=_oz_;continue}
                        break}}
                    t[4] = 0;
                    t[2] = 0;
                    var _oy_=0}
                  else
                   var _oy_=_ov_;
                  return _oy_},
               blit_transfer=
                function(src,dst,len,param)
                 {inc_num_mutations(src);
                  inc_num_mutations(dst);
                  if(len)
                   {var len$0=len[1];
                    if(caml_call2(symbol$78,len$0,0))
                     raise_s
                      (caml_call2
                        (message,
                         cst_Queue_blit_transfer_negati,
                         [0,[0,cst_length$0,caml_call1(sexp_of_t$35,len$0)],0]));
                    var len$1=caml_call2(min$12,len$0,src[4])}
                  else
                   var len$1=src[4];
                  var _on_=caml_call2(symbol$82,len$1,0);
                  if(_on_)
                   {var _oo_=dst[4] + len$1 | 0;
                    set_capacity$0(dst,caml_call2(max$12,capacity$0(dst),_oo_));
                    var dst_start=dst[2] + dst[4] | 0,_oq_=len$1 - 1 | 0,_op_=0;
                    if(! (_oq_ < 0))
                     {var i=_op_;
                      for(;;)
                       {var
                         src_i=(src[2] + i | 0) & src[3],
                         dst_i=(dst_start + i | 0) & dst[3],
                         _os_=unsafe_get_some_exn(src[5],src_i);
                        unsafe_set_some(dst[5],dst_i,_os_);
                        unsafe_set_none(src[5],src_i);
                        var _ot_=i + 1 | 0;
                        if(_oq_ !== i){var i=_ot_;continue}
                        break}}
                    dst[4] = dst[4] + len$1 | 0;
                    src[2] = (src[2] + len$1 | 0) & src[3];
                    src[4] = src[4] - len$1 | 0;
                    var _or_=0}
                  else
                   var _or_=_on_;
                  return _or_},
               enqueue_all=
                function(t,l)
                 {var _ol_=caml_call1(length,l),_om_=t[4] + _ol_ | 0;
                  set_capacity$0(t,caml_call2(max$26,capacity$0(t),_om_));
                  return iter$0(l,function(x){return enqueue(t,x)})},
               fold$10=
                function(t,init,f)
                 {if(caml_call2(symbol$81,t[4],0))return init;
                  var num_mutations=t[1],r=[0,init],_oi_=t[4] - 1 | 0,_oh_=0;
                  if(! (_oi_ < 0))
                   {var i=_oh_;
                    for(;;)
                     {var _oj_=unsafe_get$2(t,i);
                      r[1] = caml_call2(f,r[1],_oj_);
                      ensure_no_mutation(t,num_mutations);
                      var _ok_=i + 1 | 0;
                      if(_oi_ !== i){var i=_ok_;continue}
                      break}}
                  return r[1]},
               foldi$5=
                function(t,init,f)
                 {var i=[0,0];
                  return fold$10
                          (t,
                           init,
                           function(acc,a)
                            {var acc$0=caml_call3(f,i[1],acc,a);
                             i[1] = i[1] + 1 | 0;
                             return acc$0})},
               iter$13=
                function(t,f)
                 {var num_mutations=t[1],_of_=t[4] - 1 | 0,_oe_=0;
                  if(! (_of_ < 0))
                   {var i=_oe_;
                    for(;;)
                     {caml_call1(f,unsafe_get$2(t,i));
                      ensure_no_mutation(t,num_mutations);
                      var _og_=i + 1 | 0;
                      if(_of_ !== i){var i=_og_;continue}
                      break}}
                  return 0},
               iteri$3=
                function(t,f)
                 {var num_mutations=t[1],_oc_=t[4] - 1 | 0,_ob_=0;
                  if(! (_oc_ < 0))
                   {var i=_ob_;
                    for(;;)
                     {caml_call2(f,i,unsafe_get$2(t,i));
                      ensure_no_mutation(t,num_mutations);
                      var _od_=i + 1 | 0;
                      if(_oc_ !== i){var i=_od_;continue}
                      break}}
                  return 0},
               iter$14=[0,-198771759,iter$13],
               length$15=[0,-198771759,length$14],
               foldi$6=[0,-198771759,foldi$5],
               iteri$4=[0,-198771759,iteri$3],
               C$0=Make$2([0,fold$10,iter$14,length$15,iteri$4,foldi$6]),
               count$8=C$0[10],
               exists$9=C$0[8],
               find$9=C$0[12],
               find_map$8=C$0[13],
               fold_result$7=C$0[6],
               fold_until$8=C$0[7],
               for_all$8=C$0[9],
               max_elt$9=C$0[17],
               mem$8=C$0[1],
               min_elt$9=C$0[16],
               sum$8=C$0[11],
               to_list$10=C$0[14],
               counti$3=C$0[22],
               existsi$3=C$0[20],
               find_mapi$3=C$0[24],
               findi$3=C$0[23],
               for_alli$3=C$0[21],
               concat_map$3=
                function(t,f)
                 {var t_result=create$12(0,0);
                  iter$13
                   (t,
                    function(a)
                     {function _oa_(b){return enqueue(t_result,b)}
                      return iter$0(caml_call1(f,a),_oa_)});
                  return t_result},
               concat_mapi$2=
                function(t,f)
                 {var t_result=create$12(0,0);
                  iteri$3
                   (t,
                    function(i,a)
                     {function _n$_(b){return enqueue(t_result,b)}
                      return iter$0(caml_call2(f,i,a),_n$_)});
                  return t_result},
               filter_map$7=
                function(t,f)
                 {var t_result=create$12(0,0);
                  iter$13
                   (t,
                    function(a)
                     {var match=caml_call1(f,a);
                      if(match){var b=match[1];return enqueue(t_result,b)}
                      return 0});
                  return t_result},
               filter_mapi$2=
                function(t,f)
                 {var t_result=create$12(0,0);
                  iteri$3
                   (t,
                    function(i,a)
                     {var match=caml_call2(f,i,a);
                      if(match){var b=match[1];return enqueue(t_result,b)}
                      return 0});
                  return t_result},
               filter$7=
                function(t,f)
                 {var t_result=create$12(0,0);
                  iter$13
                   (t,
                    function(a)
                     {var _n__=caml_call1(f,a);
                      return _n__?enqueue(t_result,a):_n__});
                  return t_result},
               filteri$2=
                function(t,f)
                 {var t_result=create$12(0,0);
                  iteri$3
                   (t,
                    function(i,a)
                     {var _n9_=caml_call2(f,i,a);
                      return _n9_?enqueue(t_result,a):_n9_});
                  return t_result},
               filter_inplace=
                function(t,f)
                 {var t2=filter$7(t,f);
                  clear$1(t);
                  return blit_transfer(t2,t,0,0)},
               filteri_inplace=
                function(t,f)
                 {var t2=filteri$2(t,f);
                  clear$1(t);
                  return blit_transfer(t2,t,0,0)},
               copy$5=
                function(src)
                 {var dst=create$12([0,src[4]],0);
                  blit_to_array(src,dst[5]);
                  dst[4] = src[4];
                  return dst},
               of_list$10=
                function(l)
                 {var t=create$12([0,caml_call1(length,l)],0);
                  iter$0(l,function(x){return enqueue(t,x)});
                  return t},
               init$7=
                function(len,f)
                 {if(caml_call2(symbol$78,len,0))
                   raise_s
                    (caml_call2
                      (message,
                       cst_Queue_init_negative_length,
                       [0,[0,cst_length$1,caml_call1(sexp_of_t$35,len)],0]));
                  var t=create$12([0,len],0);
                  if(caml_call2(symbol$83,t[5].length - 1,len))
                   {var _n6_=len - 1 | 0,_n5_=0;
                    if(! (_n6_ < 0))
                     {var i=_n5_;
                      for(;;)
                       {var _n7_=caml_call1(f,i);
                        unsafe_set_some(t[5],i,_n7_);
                        var _n8_=i + 1 | 0;
                        if(_n6_ !== i){var i=_n8_;continue}
                        break}}
                    t[4] = len;
                    return t}
                  throw [0,Assert_failure,_ec_]},
               of_array$5=
                function(a)
                 {return init$7
                          (a.length - 1,function(_n4_){return a[1 + _n4_]})},
               to_array$9=
                function(t)
                 {function _n3_(i){return unsafe_get$2(t,i)}
                  return caml_call2(init,t[4],_n3_)},
               map$29=
                function(ta,f)
                 {var num_mutations=ta[1],tb=create$12([0,ta[4]],0);
                  tb[4] = ta[4];
                  var _n1_=ta[4] - 1 | 0,_n0_=0;
                  if(! (_n1_ < 0))
                   {var i=_n0_;
                    for(;;)
                     {var b=caml_call1(f,unsafe_get$2(ta,i));
                      ensure_no_mutation(ta,num_mutations);
                      unsafe_set_some(tb[5],i,b);
                      var _n2_=i + 1 | 0;
                      if(_n1_ !== i){var i=_n2_;continue}
                      break}}
                  return tb},
               mapi$5=
                function(t,f)
                 {var i=[0,0];
                  return map$29
                          (t,
                           function(a)
                            {var result=caml_call2(f,i[1],a);
                             i[1] = i[1] + 1 | 0;
                             return result})},
               singleton$7=
                function(x){var t=create$12(0,0);enqueue(t,x);return t},
               sexp_of_t$50=
                function(sexp_of_a,t)
                 {return caml_call2
                          (sexp_of_t$10,sexp_of_a,caml_call1(to_list$10,t))},
               t_of_sexp$32=
                function(a_of_sexp,sexp)
                 {return of_list$10(caml_call2(t_of_sexp$10,a_of_sexp,sexp))},
               Base_Queue=
                [0,
                 compare$53,
                 t_of_sexp$32,
                 sexp_of_t$50,
                 mem$8,
                 length$14,
                 is_empty$8,
                 iter$13,
                 fold$10,
                 fold_result$7,
                 fold_until$8,
                 exists$9,
                 for_all$8,
                 count$8,
                 sum$8,
                 find$9,
                 find_map$8,
                 to_list$10,
                 to_array$9,
                 min_elt$9,
                 max_elt$9,
                 foldi$5,
                 iteri$3,
                 existsi$3,
                 for_alli$3,
                 counti$3,
                 findi$3,
                 find_mapi$3,
                 singleton$7,
                 of_list$10,
                 of_array$5,
                 init$7,
                 enqueue,
                 enqueue_all,
                 dequeue,
                 dequeue_exn,
                 peek,
                 peek_exn,
                 clear$1,
                 copy$5,
                 map$29,
                 mapi$5,
                 concat_map$3,
                 concat_mapi$2,
                 filter_map$7,
                 filter_mapi$2,
                 filter$7,
                 filteri$2,
                 filter_inplace,
                 filteri_inplace,
                 equal$37,
                 invariant$9,
                 create$12,
                 last$1,
                 last_exn$0,
                 blit_transfer,
                 get$5,
                 set$3,
                 capacity$0,
                 set_capacity$0];
              caml_register_global(1074,Base_Queue,"Base__Queue");
              var
               func$10=function(x){return caml_call1(func$0,x)},
               compare$54=include$3[9],
               to_string$14=Stdlib_nativeint[15],
               of_string$13=caml_int_of_string,
               comparator$13=_ap_([0,compare$54,sexp_of_t$8])[1],
               zero$0=Stdlib_nativeint[1],
               _ed_=_a2_([0,compare$54,sexp_of_t$8,zero$0]),
               validate_lbound$9=_ed_[1],
               validate_ubound$9=_ed_[2],
               validate_bound$9=_ed_[3],
               validate_positive$0=_ed_[4],
               validate_non_negative$0=_ed_[5],
               validate_negative$0=_ed_[6],
               validate_non_positive$0=_ed_[7],
               is_positive$0=_ed_[8],
               is_non_negative$0=_ed_[9],
               is_negative$0=_ed_[10],
               is_non_positive$0=_ed_[11],
               sign$0=_ed_[12],
               include$55=_cA_([0,to_string$14]),
               to_string_hum$2=include$55[1],
               sexp_of_t$51=include$55[2],
               hash$14=function(x){return caml_call1(func$0,x)},
               zero$1=Stdlib_nativeint[1],
               neg$1=function(_nZ_){return - _nZ_ | 0},
               symbol$191=include$3[1],
               to_string$15=function(i){return caml_call2(sprintf,_ee_,i)},
               of_string$14=
                function(s)
                 {function _nX_(_nY_){return _nY_}
                  return caml_call3(Stdlib_scanf[4],s,_ef_,_nX_)},
               include$56=
                _cz_
                 ([0,
                   compare$16,
                   hash_fold_t$0,
                   hash$14,
                   to_string$15,
                   of_string$14,
                   zero$1,
                   symbol$191,
                   neg$1,
                   module_name$10]),
               Hex$0=include$56[1],
               include$57=_v_([0,module_name$11,to_string$14]),
               _eg_=include$57[1],
               num_bits$1=num_bits$0(word_size),
               float_lower_bound$0=lower_bound_for_int(num_bits$1),
               float_upper_bound$0=upper_bound_for_int(num_bits$1),
               lsr$0=function(_nW_,_nV_){return _nW_ >>> _nV_ | 0},
               asr$0=function(_nU_,_nT_){return _nU_ >> _nT_},
               lsl$0=function(_nS_,_nR_){return _nS_ << _nR_},
               lnot$1=Stdlib_nativeint[12],
               lxor$0=function(_nQ_,_nP_){return _nQ_ ^ _nP_},
               lor$0=function(_nO_,_nN_){return _nO_ | _nN_},
               land$0=function(_nM_,_nL_){return _nM_ & _nL_},
               min_value$3=Stdlib_nativeint[11],
               max_value$3=Stdlib_nativeint[10],
               abs$3=Stdlib_nativeint[8],
               pred$2=Stdlib_nativeint[7],
               succ$3=Stdlib_nativeint[6],
               rem$0=caml_mod,
               neg$2=function(_nK_){return - _nK_ | 0},
               minus_one$0=Stdlib_nativeint[3],
               one$0=Stdlib_nativeint[2],
               zero$2=Stdlib_nativeint[1],
               to_float$1=function(_nJ_){return _nJ_},
               of_float_unchecked$0=function(_nI_){return _nI_ | 0},
               of_float$0=
                function(f)
                 {if
                   (caml_call2(include$7[6],f,float_lower_bound$0)
                    &&
                    caml_call2(include$7[2],f,float_upper_bound$0))
                   return f | 0;
                  return caml_call2(invalid_argf(_eh_),f + 0.,0)},
               non_positive_argument$0=
                function(param){return caml_call1(invalid_argf(_ei_),0)},
               ceil_pow2$0=
                function(x)
                 {if(caml_call2(include$3[2],x,0))non_positive_argument$0(0);
                  var
                   x$0=caml_call1(Stdlib_nativeint[7],x),
                   x$1=x$0 | x$0 >>> 1 | 0,
                   x$2=x$1 | x$1 >>> 2 | 0,
                   x$3=x$2 | x$2 >>> 4 | 0,
                   x$4=x$3 | x$3 >>> 8 | 0,
                   x$5=x$4 | x$4 >>> 16 | 0,
                   x$6=x$5 | x$5 >>> 32 | 0;
                  return caml_call1(Stdlib_nativeint[6],x$6)},
               floor_pow2$0=
                function(x)
                 {if(caml_call2(include$3[2],x,0))non_positive_argument$0(0);
                  var
                   x$0=x | x >>> 1 | 0,
                   x$1=x$0 | x$0 >>> 2 | 0,
                   x$2=x$1 | x$1 >>> 4 | 0,
                   x$3=x$2 | x$2 >>> 8 | 0,
                   x$4=x$3 | x$3 >>> 16 | 0,
                   x$5=x$4 | x$4 >>> 32 | 0;
                  return x$5 - (x$5 >>> 1 | 0) | 0},
               is_pow2$0=
                function(x)
                 {if(caml_call2(include$3[2],x,0))non_positive_argument$0(0);
                  var _nH_=x & caml_call1(Stdlib_nativeint[7],x);
                  return caml_call2(include$3[4],_nH_,0)},
               floor_log2$0=
                function(i)
                 {if(caml_lessequal(i,Stdlib_nativeint[1]))
                   raise_s
                    (caml_call2
                      (message,
                       cst_Nativeint_floor_log2_got_i,
                       [0,[0,cst$27,caml_call1(sexp_of_t$8,i)],0]));
                  return (word_size_in_bits - 1 | 0)
                         -
                         runtime.Base_int_math_nativeint_clz(i)
                         |
                         0},
               ceil_log2$0=
                function(i)
                 {if(caml_lessequal(i,Stdlib_nativeint[1]))
                   raise_s
                    (caml_call2
                      (message,
                       cst_Nativeint_ceil_log2_got_in,
                       [0,[0,cst$28,caml_call1(sexp_of_t$8,i)],0]));
                  return caml_call2
                           (Stdlib_nativeint[18],i,Stdlib_nativeint[2])
                          ?0
                          :word_size_in_bits
                           -
                           runtime.Base_int_math_nativeint_clz
                            (caml_call1(Stdlib_nativeint[7],i))
                           |
                           0},
               between$9=
                function(t,low,high)
                 {var _nG_=caml_call2(include$3[2],low,t);
                  return _nG_?caml_call2(include$3[2],t,high):_nG_},
               clamp_unchecked$3=
                function(t,min,max)
                 {return caml_call2(include$3[1],t,min)
                          ?min
                          :caml_call2(include$3[2],t,max)?t:max},
               clamp_exn$9=
                function(t,min,max)
                 {if(caml_call2(include$3[2],min,max))
                   return clamp_unchecked$3(t,min,max);
                  throw [0,Assert_failure,_ej_]},
               clamp$9=
                function(t,min,max)
                 {if(caml_call2(include$3[5],min,max))
                   {var _nF_=[0,[0,cst_max$4,caml_call1(sexp_of_t$8,max)],0];
                    return error_s
                            (caml_call2
                              (message,
                               cst_clamp_requires_min_max$4,
                               [0,[0,cst_min$4,caml_call1(sexp_of_t$8,min)],_nF_]))}
                  return [0,clamp_unchecked$3(t,min,max)]},
               symbol$192=caml_div,
               symbol$193=caml_mul,
               symbol$194=function(_nE_,_nD_){return _nE_ - _nD_ | 0},
               symbol$195=function(_nC_,_nB_){return _nC_ + _nB_ | 0},
               incr$1=function(r){r[1] = r[1] + one$0 | 0;return 0},
               decr$1=function(r){r[1] = r[1] - one$0 | 0;return 0},
               of_nativeint=function(t){return t},
               to_nativeint$0=function(t){return t},
               pow$0=
                function(b,e)
                 {var
                   _nz_=nativeint_to_int_exn(e),
                   _nA_=nativeint_to_int_exn(b);
                  return caml_call2(Private$2[1],_nA_,_nz_)},
               symbol$196=function(b,e){return pow$0(b,e)},
               symbol$197=include$3[3],
               symbol$198=include$3[1],
               symbol$199=include$3[5],
               symbol$200=include$3[4],
               symbol$201=include$3[2],
               symbol$202=include$3[6],
               include$58=
                _cV_
                 ([0,
                   of_float$0,
                   to_float$1,
                   of_string$13,
                   to_string$14,
                   symbol$195,
                   symbol$194,
                   symbol$193,
                   symbol$192,
                   neg$2,
                   symbol$202,
                   symbol$201,
                   symbol$200,
                   symbol$199,
                   symbol$198,
                   symbol$197,
                   abs$3,
                   neg$2,
                   zero$2,
                   int_to_nativeint,
                   rem$0]),
               symbol$203=include$58[1],
               symbol$204=include$58[2],
               symbol$205=include$58[3],
               round$0=include$58[4],
               round_towards_zero$0=include$58[5],
               round_down$0=include$58[6],
               round_up$0=include$58[7],
               round_nearest$0=include$58[8],
               symbol$206=include$3[1],
               symbol$207=include$3[2],
               symbol$208=include$3[3],
               symbol$209=include$3[4],
               symbol$210=include$3[5],
               symbol$211=include$3[6],
               ascending$25=include$3[7],
               descending$25=include$3[8],
               compare_nativeint$0=include$3[9],
               equal_nativeint$1=include$3[10],
               max$30=include$3[11],
               min$30=include$3[12],
               Base_Nativeint=
                [0,
                 of_float$0,
                 to_float$1,
                 int_to_nativeint,
                 nativeint_to_int_exn,
                 hash_fold_t$0,
                 func$10,
                 t_of_sexp$8,
                 sexp_of_t$51,
                 of_string$13,
                 to_string$14,
                 symbol$211,
                 symbol$207,
                 symbol$209,
                 symbol$210,
                 symbol$206,
                 symbol$208,
                 equal_nativeint$1,
                 compare_nativeint$0,
                 min$30,
                 max$30,
                 ascending$25,
                 descending$25,
                 between$9,
                 clamp_exn$9,
                 clamp$9,
                 comparator$13,
                 validate_lbound$9,
                 validate_ubound$9,
                 validate_bound$9,
                 _eg_,
                 validate_positive$0,
                 validate_non_negative$0,
                 validate_negative$0,
                 validate_non_positive$0,
                 is_positive$0,
                 is_non_negative$0,
                 is_negative$0,
                 is_non_positive$0,
                 sign$0,
                 Hex$0,
                 to_string_hum$2,
                 zero$2,
                 one$0,
                 minus_one$0,
                 symbol$195,
                 symbol$194,
                 symbol$193,
                 symbol$196,
                 neg$2,
                 neg$2,
                 symbol$204,
                 symbol$203,
                 symbol$192,
                 rem$0,
                 symbol$205,
                 land$0,
                 lor$0,
                 lxor$0,
                 lnot$1,
                 lsl$0,
                 asr$0,
                 round$0,
                 round_towards_zero$0,
                 round_down$0,
                 round_up$0,
                 round_nearest$0,
                 abs$3,
                 succ$3,
                 pred$2,
                 pow$0,
                 land$0,
                 lor$0,
                 lxor$0,
                 lnot$1,
                 popcount,
                 lsl$0,
                 asr$0,
                 decr$1,
                 incr$1,
                 int32_to_nativeint,
                 nativeint_to_int32_exn,
                 to_nativeint_exn,
                 nativeint_to_int64,
                 of_nativeint,
                 to_nativeint$0,
                 of_float_unchecked$0,
                 num_bits$1,
                 max_value$3,
                 min_value$3,
                 lsr$0,
                 lsr$0,
                 ceil_pow2$0,
                 floor_pow2$0,
                 ceil_log2$0,
                 floor_log2$0,
                 is_pow2$0,
                 [0,
                  symbol$195,
                  symbol$194,
                  symbol$193,
                  symbol$192,
                  neg$2,
                  symbol$196,
                  symbol$202,
                  symbol$201,
                  symbol$200,
                  symbol$199,
                  symbol$198,
                  symbol$197,
                  abs$3,
                  neg$2,
                  zero$2,
                  symbol$203,
                  symbol$204,
                  symbol$205,
                  land$0,
                  lor$0,
                  lxor$0,
                  lnot$1,
                  lsl$0,
                  asr$0,
                  lsr$0],
                 int_to_nativeint,
                 nativeint_to_int,
                 int32_to_nativeint,
                 nativeint_to_int32,
                 of_nativeint,
                 to_nativeint$0,
                 to_nativeint,
                 nativeint_to_int_trunc,
                 nativeint_to_int32_trunc,
                 int64_to_nativeint_trunc];
              caml_register_global(1075,Base_Nativeint,"Base__Nativeint");
              var
               compare$55=include$53[1],
               all$17=include$53[2],
               equal$38=include$53[3],
               sexp_of_t$52=include$53[4],
               of_continue_or_stop=function(_ny_){return _ny_},
               to_continue_or_stop=function(_nx_){return _nx_},
               Finished_or_unfinished=
                [0,
                 compare$55,
                 all$17,
                 equal$38,
                 sexp_of_t$52,
                 of_continue_or_stop,
                 to_continue_or_stop],
               Duplicate=[248,cst_Base_Map_Duplicate,caml_fresh_oo_id(0)],
               _ek_=
                function(param)
                 {if(param === Duplicate)return _el_;
                  throw [0,Assert_failure,_em_]};
              caml_call3(Sexplib0_Sexp_conv[51][2],0,Duplicate,_ek_);
              var
               height$0=
                function(param)
                 {if(typeof param === "number")
                   return 0;
                  else
                   {if(0 === param[0])return 1;var h=param[5];return h}},
               in_range$0=
                function(lower,upper,compare_key,k)
                 {if(lower)
                   var
                    lower$0=lower[1],
                    _nv_=
                     caml_call2(symbol$78,caml_call2(compare_key,lower$0,k),0);
                  else
                   var _nv_=1;
                  if(_nv_)
                   {if(upper)
                     {var upper$0=upper[1];
                      return caml_call2
                              (symbol$78,caml_call2(compare_key,k,upper$0),0)}
                    var _nw_=1}
                  else
                   var _nw_=_nv_;
                  return _nw_},
               loop$0=
                function(lower,upper,compare_key,t)
                 {var lower$0=lower,t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 1;
                   else
                    {if(0 === t$0[0])
                      {var k=t$0[1];
                       return in_range$0(lower$0,upper,compare_key,k)}
                     var
                      h=t$0[5],
                      r=t$0[4],
                      k$0=t$0[2],
                      l=t$0[1],
                      hl=height$0(l),
                      hr=height$0(r),
                      _nq_=caml_call2(symbol$79,caml_call1(abs$0,hl - hr | 0),2);
                     if(_nq_)
                      {var
                        _nr_=
                         caml_call2(symbol$81,h,caml_call2(max$12,hl,hr) + 1 | 0);
                       if(_nr_)
                        {var _ns_=in_range$0(lower$0,upper,compare_key,k$0);
                         if(_ns_)
                          {var _nt_=loop$0(lower$0,[0,k$0],compare_key,l);
                           if(_nt_){var lower$1=[0,k$0],lower$0=lower$1,t$0=r;continue}
                           var _nu_=_nt_}
                         else
                          var _nu_=_ns_}
                       else
                        var _nu_=_nr_}
                     else
                      var _nu_=_nq_;
                     return _nu_}},
               invariants$2=
                function(t,compare_key){return loop$0(0,0,compare_key,t)},
               create$13=
                function(l,x,d,r)
                 {var hl=height$0(l),hr=height$0(r);
                  if(caml_call2(symbol$81,hl,0) && caml_call2(symbol$81,hr,0))
                   return [0,x,d];
                  var _np_=caml_call2(symbol$83,hl,hr)?hl + 1 | 0:hr + 1 | 0;
                  return [1,l,x,d,r,_np_]},
               of_increasing_iterator_uncheck$4=
                function(len,f)
                 {function loop(n,f,i)
                   {if(3 < n >>> 0)
                     {var
                       left_length=n >>> 1 | 0,
                       right_length=(n - left_length | 0) - 1 | 0,
                       left=loop(left_length,f,i),
                       match=caml_call1(f,i + left_length | 0),
                       v=match[2],
                       k=match[1],
                       right=loop(right_length,f,(i + left_length | 0) + 1 | 0);
                      return create$13(left,k,v,right)}
                    switch(n)
                     {case 0:return 0;
                      case 1:
                       var match$0=caml_call1(f,i),v$0=match$0[2],k$0=match$0[1];
                       return [0,k$0,v$0];
                      case 2:
                       var
                        match$1=caml_call1(f,i),
                        vl=match$1[2],
                        kl=match$1[1],
                        match$2=caml_call1(f,i + 1 | 0),
                        v$1=match$2[2],
                        k$1=match$2[1];
                       return [1,[0,kl,vl],k$1,v$1,0,2];
                      default:
                       var
                        match$3=caml_call1(f,i),
                        vl$0=match$3[2],
                        kl$0=match$3[1],
                        match$4=caml_call1(f,i + 1 | 0),
                        v$2=match$4[2],
                        k$2=match$4[1],
                        match$5=caml_call1(f,i + 2 | 0),
                        vr=match$5[2],
                        kr=match$5[1];
                       return [1,[0,kl$0,vl$0],k$2,v$2,[0,kr,vr],2]}}
                  return loop(len,f,0)},
               of_sorted_array_unchecked$4=
                function(array,compare_key)
                 {var array_length=array.length - 1,switch$0=0;
                  if(! caml_call2(symbol$78,array_length,2))
                   {var
                     match=caml_check_bound(array,0)[1],
                     k0=match[1],
                     match$0=caml_check_bound(array,1)[2],
                     k1=match$0[1];
                    if(! caml_call2(symbol$78,caml_call2(compare_key,k0,k1),0))
                     {var
                       next=
                        function(i)
                         {var _no_=(array_length - 1 | 0) - i | 0;
                          return caml_check_bound(array,_no_)[1 + _no_]};
                      switch$0 = 1}}
                  if(! switch$0)
                   var
                    next=
                     function(i){return caml_check_bound(array,i)[1 + i]};
                  return [0,
                          of_increasing_iterator_uncheck$4(array_length,next),
                          array_length]},
               of_sorted_array$4=
                function(array,compare_key)
                 {var len=array.length - 1;
                  if(1 !== len && len)
                   return with_return
                           (function(r)
                             {var
                               _ni_=caml_check_bound(array,1)[2][1],
                               i=
                                caml_call2(compare_key,caml_check_bound(array,0)[1][1],_ni_),
                               increasing=
                                0 === i
                                 ?caml_call1
                                   (r,error_string(cst_of_sorted_array_duplicated$1))
                                 :caml_call2(symbol$78,i,0),
                               _nk_=array.length - 1 - 2 | 0,
                               _nj_=1;
                              if(! (_nk_ < 1))
                               {var i$0=_nj_;
                                for(;;)
                                 {var
                                   _nl_=i$0 + 1 | 0,
                                   _nm_=caml_check_bound(array,_nl_)[1 + _nl_][1],
                                   i$1=
                                    caml_call2
                                     (compare_key,caml_check_bound(array,i$0)[1 + i$0][1],_nm_);
                                  if(0 === i$1)
                                   caml_call1(r,error_string(cst_of_sorted_array_duplicated$2));
                                  else
                                   if(caml_call2(symbol$78,i$1,0) !== increasing)
                                    caml_call1(r,error_string(cst_of_sorted_array_elements_a$0));
                                  var _nn_=i$0 + 1 | 0;
                                  if(_nk_ !== i$0){var i$0=_nn_;continue}
                                  break}}
                              return [0,of_sorted_array_unchecked$4(array,compare_key)]});
                  return [0,of_sorted_array_unchecked$4(array,compare_key)]},
               bal$0=
                function(l,x,d,r)
                 {var hl=height$0(l),hr=height$0(r);
                  if(caml_call2(symbol$82,hl,hr + 2 | 0))
                   if(typeof l === "number")
                    return caml_call1(invalid_arg$0,cst_Map_bal);
                   else
                    {if(0 === l[0])throw [0,Assert_failure,_en_];
                     var lr=l[4],ld=l[3],lv=l[2],ll=l[1],_nc_=height$0(lr);
                     if(caml_call2(symbol$83,height$0(ll),_nc_))
                      return create$13(ll,lv,ld,create$13(lr,x,d,r));
                     if(typeof lr === "number")
                      return caml_call1(invalid_arg$0,cst_Map_bal$0);
                     else
                      {if(0 === lr[0])
                        {var lrd=lr[2],lrv=lr[1],_nd_=create$13(0,x,d,r);
                         return create$13(create$13(ll,lv,ld,0),lrv,lrd,_nd_)}
                       var
                        lrr=lr[4],
                        lrd$0=lr[3],
                        lrv$0=lr[2],
                        lrl=lr[1],
                        _ne_=create$13(lrr,x,d,r);
                       return create$13(create$13(ll,lv,ld,lrl),lrv$0,lrd$0,_ne_)}}
                  if(caml_call2(symbol$82,hr,hl + 2 | 0))
                   if(typeof r === "number")
                    return caml_call1(invalid_arg$0,cst_Map_bal$1);
                   else
                    {if(0 === r[0])throw [0,Assert_failure,_eo_];
                     var rr=r[4],rd=r[3],rv=r[2],rl=r[1],_nf_=height$0(rl);
                     if(caml_call2(symbol$83,height$0(rr),_nf_))
                      return create$13(create$13(l,x,d,rl),rv,rd,rr);
                     if(typeof rl === "number")
                      return caml_call1(invalid_arg$0,cst_Map_bal$2);
                     else
                      {if(0 === rl[0])
                        {var rld=rl[2],rlv=rl[1],_ng_=create$13(0,rv,rd,rr);
                         return create$13(create$13(l,x,d,0),rlv,rld,_ng_)}
                       var
                        rlr=rl[4],
                        rld$0=rl[3],
                        rlv$0=rl[2],
                        rll=rl[1],
                        _nh_=create$13(rlr,rv,rd,rr);
                       return create$13(create$13(l,x,d,rll),rlv$0,rld$0,_nh_)}}
                  return create$13(l,x,d,r)},
               empty_without_value_restrictio=0,
               is_empty$9=
                function(param){return typeof param === "number"?1:0},
               raise_key_already_present=
                function(key,sexp_of_key)
                 {return raise_s
                          (caml_call2
                            (message,
                             cst_Map_add_exn_got_key_alread,
                             [0,[0,cst_key,caml_call1(sexp_of_key,key)],0]))},
               find_and_add_or_set=
                function(t,length,x,data,compare_key,sexp_of_key,add_or_set)
                 {if(typeof t === "number")
                   return [0,[0,x,data],length + 1 | 0];
                  else
                   {if(0 === t[0])
                     {var d=t[2],v=t[1],c=caml_call2(compare_key,x,v);
                      if(caml_call2(symbol$81,c,0))
                       switch(add_or_set)
                        {case 0:return raise_without_backtrace(Duplicate);
                         case 1:return raise_key_already_present(x,sexp_of_key);
                         default:return [0,[0,x,data],length]}
                      return caml_call2(symbol$78,c,0)
                              ?[0,[1,[0,x,data],v,d,0,2],length + 1 | 0]
                              :[0,[1,0,v,d,[0,x,data],2],length + 1 | 0]}
                    var
                     h=t[5],
                     r=t[4],
                     d$0=t[3],
                     v$0=t[2],
                     l=t[1],
                     c$0=caml_call2(compare_key,x,v$0);
                    if(caml_call2(symbol$81,c$0,0))
                     switch(add_or_set)
                      {case 0:return raise_without_backtrace(Duplicate);
                       case 1:return raise_key_already_present(x,sexp_of_key);
                       default:return [0,[1,l,x,data,r,h],length]}
                    if(caml_call2(symbol$78,c$0,0))
                     {var
                       match=
                        find_and_add_or_set
                         (l,length,x,data,compare_key,sexp_of_key,add_or_set),
                       length$0=match[2],
                       l$0=match[1];
                      return [0,bal$0(l$0,v$0,d$0,r),length$0]}
                    var
                     match$0=
                      find_and_add_or_set
                       (r,length,x,data,compare_key,sexp_of_key,add_or_set),
                     length$1=match$0[2],
                     r$0=match$0[1];
                    return [0,bal$0(l,v$0,d$0,r$0),length$1]}},
               add_exn=
                function(t,length,key,data,compare_key,sexp_of_key)
                 {return find_and_add_or_set
                          (t,length,key,data,compare_key,sexp_of_key,1)},
               set$4=
                function(t,length,key,data,compare_key)
                 {var _nb_=2;
                  return find_and_add_or_set
                          (t,
                           length,
                           key,
                           data,
                           compare_key,
                           function(param){return _ep_},
                           _nb_)},
               set$5=
                function(t,key,data,compare_key)
                 {return set$4(t,0,key,data,compare_key)[1]},
               singleton_to_tree_exn=
                function(param)
                 {if(typeof param[1] === "number")
                   {var data=param[3],key=param[2];return [0,key,data]}
                  return caml_call1(failwith$0,cst_Map_singleton_to_tree_exn_)},
               collapse=function(l,r){return create$13(l[1],l[2],l[3],r)},
               join$7=
                function(l,r)
                 {var _m$_=r[3],_na_=r[2];
                  return [0,collapse(l,r[1]),_na_,_m$_]},
               go=
                function(t,x)
                 {switch(t[0])
                   {case 0:return [1,t,x];
                    case 1:var y=t[2],t$0=t[1];return [2,t$0,y,x];
                    default:
                     var y$0=t[3],z=t[2],t$1=t[1];
                     return [1,go(t$1,join$7(z,y$0)),x]}},
               go$0=
                function(t,r)
                 {var t$0=t,r$0=r;
                  for(;;)
                   switch(t$0[0])
                    {case 0:return r$0;
                     case 1:
                      var l=t$0[2],t$1=t$0[1],r$1=collapse(l,r$0),t$0=t$1,r$0=r$1;
                      continue;
                     default:
                      var
                       l$0=t$0[3],
                       ll=t$0[2],
                       t$2=t$0[1],
                       r$2=collapse(join$7(ll,l$0),r$0),
                       t$0=t$2,
                       r$0=r$2;
                      continue}},
               of_increasing_sequence=
                function(seq,compare_key)
                 {return with_return
                          (function(param)
                            {var
                              match=
                               fold$2
                                (seq,
                                 [0,empty$5,0],
                                 function(param$0,_m__)
                                  {var
                                    data=_m__[2],
                                    key=_m__[1],
                                    length=param$0[2],
                                    builder=param$0[1],
                                    switch$0=0;
                                   switch(builder[0])
                                    {case 0:var match=0;switch$0 = 1;break;
                                     case 1:var r=builder[2];break;
                                     default:var r=builder[3]}
                                   if(! switch$0)var match=[0,r[2]];
                                   if(match)
                                    {var prev_key=match[1];
                                     if
                                      (caml_call2
                                        (symbol$83,caml_call2(compare_key,prev_key,key),0))
                                      return caml_call1
                                              (param,error_string(cst_of_increasing_sequence_non))}
                                   return [0,go(builder,[0,0,key,data]),length + 1 | 0]}),
                              length=match[2],
                              builder=match[1];
                             switch(builder[0])
                              {case 0:var _m9_=0;break;
                               case 1:
                                var
                                 r=builder[2],
                                 t=builder[1],
                                 _m9_=go$0(t,singleton_to_tree_exn(r));
                                break;
                               default:
                                var
                                 r$0=builder[3],
                                 l=builder[2],
                                 t$0=builder[1],
                                 _m9_=go$0([1,t$0,l],singleton_to_tree_exn(r$0))}
                             return [0,[0,_m9_,length]]})},
               join$8=
                function(l,k,d,r,compare_key)
                 {if(typeof l === "number")
                   return set$5(r,k,d,compare_key);
                  else
                   if(1 === l[0])
                    {var _m4_=l[5],_m5_=l[4],_m6_=l[3],_m7_=l[2],_m8_=l[1];
                     if(typeof r !== "number")
                      {if(0 === r[0])
                        {var rd=r[2],rk=r[1];
                         return set$5(set$5(l,k,d,compare_key),rk,rd,compare_key)}
                       var rh=r[5],rr=r[4],rd$0=r[3],rk$0=r[2],rl=r[1];
                       return caml_call2(symbol$82,_m4_,rh + 3 | 0)
                               ?bal$0(_m8_,_m7_,_m6_,join$8(_m5_,k,d,r,compare_key))
                               :caml_call2(symbol$82,rh,_m4_ + 3 | 0)
                                 ?bal$0(join$8(l,k,d,rl,compare_key),rk$0,rd$0,rr)
                                 :bal$0(l,k,d,r)}}
                  if(typeof r === "number")return set$5(l,k,d,compare_key);
                  var ld=l[2],lk=l[1];
                  return set$5(set$5(r,k,d,compare_key),lk,ld,compare_key)},
               split$4=
                function(t,x,compare_key)
                 {if(typeof t === "number")
                   return _eq_;
                  else
                   {if(0 === t[0])
                     {var d=t[2],k=t[1],cmp=caml_call2(compare_key,x,k);
                      return caml_call2(symbol$81,cmp,0)
                              ?[0,0,[0,[0,k,d]],0]
                              :caml_call2(symbol$78,cmp,0)?[0,0,0,t]:[0,t,0,0]}
                    var
                     r=t[4],
                     d$0=t[3],
                     k$0=t[2],
                     l=t[1],
                     cmp$0=caml_call2(compare_key,x,k$0);
                    if(caml_call2(symbol$81,cmp$0,0))
                     return [0,l,[0,[0,k$0,d$0]],r];
                    if(caml_call2(symbol$78,cmp$0,0))
                     {var
                       match=split$4(l,x,compare_key),
                       lr=match[3],
                       maybe=match[2],
                       ll=match[1];
                      return [0,ll,maybe,join$8(lr,k$0,d$0,r,compare_key)]}
                    var
                     match$0=split$4(r,x,compare_key),
                     rr=match$0[3],
                     maybe$0=match$0[2],
                     rl=match$0[1];
                    return [0,join$8(l,k$0,d$0,rl,compare_key),maybe$0,rr]}},
               split_and_reinsert_boundary=
                function(t,into,x,compare_key)
                 {var
                   match=split$4(t,x,compare_key),
                   right=match[3],
                   boundary_opt=match[2],
                   left=match[1];
                  if(boundary_opt)
                   {var
                     match$0=boundary_opt[1],
                     data=match$0[2],
                     key=match$0[1],
                     insert_into=
                      function(tree){return set$4(tree,0,key,data,compare_key)[1]};
                    return 847852583 <= into
                            ?[0,insert_into(left),right]
                            :[0,left,insert_into(right)]}
                  return [0,left,right]},
               split_range=
                function(t,lower_bound,upper_bound,compare_key)
                 {if(bounds_crossed(lower_bound,upper_bound,compare_key))
                   return [0,
                           empty_without_value_restrictio,
                           empty_without_value_restrictio,
                           empty_without_value_restrictio];
                  if(typeof lower_bound === "number")
                   var match=[0,empty_without_value_restrictio,t];
                  else
                   if(0 === lower_bound[0])
                    var
                     lb$1=lower_bound[1],
                     match=
                      split_and_reinsert_boundary(t,-57574468,lb$1,compare_key);
                   else
                    var
                     lb$2=lower_bound[1],
                     match=
                      split_and_reinsert_boundary(t,847852583,lb$2,compare_key);
                  var mid_and_right=match[2],left=match[1];
                  if(typeof upper_bound === "number")
                   var
                    match$0=
                     [0,mid_and_right,empty_without_value_restrictio];
                  else
                   if(0 === upper_bound[0])
                    var
                     lb=upper_bound[1],
                     match$0=
                      split_and_reinsert_boundary
                       (mid_and_right,847852583,lb,compare_key);
                   else
                    var
                     lb$0=upper_bound[1],
                     match$0=
                      split_and_reinsert_boundary
                       (mid_and_right,-57574468,lb$0,compare_key);
                  var right=match$0[2],mid=match$0[1];
                  return [0,left,mid,right]},
               find$10=
                function(t,x,compare_key)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var d=t$0[2],v=t$0[1];
                       return caml_call2(symbol$81,caml_call2(compare_key,x,v),0)
                               ?[0,d]
                               :0}
                     var
                      r=t$0[4],
                      d$0=t$0[3],
                      v$0=t$0[2],
                      l=t$0[1],
                      c=caml_call2(compare_key,x,v$0);
                     if(caml_call2(symbol$81,c,0))return [0,d$0];
                     var t$1=caml_call2(symbol$78,c,0)?l:r,t$0=t$1;
                     continue}},
               add_multi=
                function(t,length,key,data,compare_key)
                 {var data$0=[0,data,value(find$10(t,key,compare_key),0)];
                  return set$4(t,length,key,data$0,compare_key)},
               find_multi=
                function(t,x,compare_key)
                 {var match=find$10(t,x,compare_key);
                  if(match){var l=match[1];return l}
                  return 0},
               if_not_found=
                function(key,sexp_of_key)
                 {throw [0,
                         Not_found_s,
                         [1,[0,_er_,[0,caml_call1(sexp_of_key,key),0]]]]},
               find_exn$6=
                function(t,x,compare_key,sexp_of_key)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return if_not_found(x,sexp_of_key);
                   else
                    {if(0 === t$0[0])
                      {var d=t$0[2],v=t$0[1];
                       return caml_call2(symbol$81,caml_call2(compare_key,x,v),0)
                               ?d
                               :if_not_found(x,sexp_of_key)}
                     var
                      r=t$0[4],
                      d$0=t$0[3],
                      v$0=t$0[2],
                      l=t$0[1],
                      c=caml_call2(compare_key,x,v$0);
                     if(caml_call2(symbol$81,c,0))return d$0;
                     var t$1=caml_call2(symbol$78,c,0)?l:r,t$0=t$1;
                     continue}},
               mem$9=
                function(t,x,compare_key)
                 {return is_some(find$10(t,x,compare_key))},
               min_elt$10=
                function(param)
                 {var param$0=param;
                  for(;;)
                   if(typeof param$0 === "number")
                    return 0;
                   else
                    {if(0 === param$0[0])
                      {var d=param$0[2],k=param$0[1];return [0,[0,k,d]]}
                     var _m3_=param$0[1];
                     if(typeof _m3_ === "number")
                      {var d$0=param$0[3],k$0=param$0[2];return [0,[0,k$0,d$0]]}
                     var param$0=_m3_;
                     continue}},
               Map_min_elt_exn_of_empty_map=
                [248,cst_Base_Map_Tree0_Map_min_elt,caml_fresh_oo_id(0)],
               _es_=
                function(param)
                 {if(param === Map_min_elt_exn_of_empty_map)return _et_;
                  throw [0,Assert_failure,_eu_]};
              caml_call3
               (Sexplib0_Sexp_conv[51][2],0,Map_min_elt_exn_of_empty_map,_es_);
              var
               Map_max_elt_exn_of_empty_map=
                [248,cst_Base_Map_Tree0_Map_max_elt,caml_fresh_oo_id(0)],
               _ev_=
                function(param)
                 {if(param === Map_max_elt_exn_of_empty_map)return _ew_;
                  throw [0,Assert_failure,_ex_]};
              caml_call3
               (Sexplib0_Sexp_conv[51][2],0,Map_max_elt_exn_of_empty_map,_ev_);
              var
               min_elt_exn$2=
                function(t)
                 {var match=min_elt$10(t);
                  if(match){var v=match[1];return v}
                  throw Map_min_elt_exn_of_empty_map},
               max_elt$10=
                function(param)
                 {var param$0=param;
                  for(;;)
                   if(typeof param$0 === "number")
                    return 0;
                   else
                    {if(0 === param$0[0])
                      {var d=param$0[2],k=param$0[1];return [0,[0,k,d]]}
                     if(typeof param$0[4] === "number")
                      {var d$0=param$0[3],k$0=param$0[2];return [0,[0,k$0,d$0]]}
                     var param$1=param$0[4],param$0=param$1;
                     continue}},
               max_elt_exn$2=
                function(t)
                 {var match=max_elt$10(t);
                  if(match){var v=match[1];return v}
                  throw Map_max_elt_exn_of_empty_map},
               remove_min_elt$0=
                function(t)
                 {if(typeof t === "number")
                   return caml_call1(invalid_arg$0,cst_Map_remove_min_elt);
                  else
                   {if(0 === t[0])return 0;
                    var _m2_=t[1];
                    if(typeof _m2_ === "number"){var r=t[4];return r}
                    var r$0=t[4],d=t[3],x=t[2];
                    return bal$0(remove_min_elt$0(_m2_),x,d,r$0)}},
               append$2=
                function(lower_part,upper_part,compare_key)
                 {var
                   match=max_elt$10(lower_part),
                   match$0=min_elt$10(upper_part);
                  if(match)
                   {if(match$0)
                     {var
                       _m1_=match$0[1],
                       v=_m1_[2],
                       min_upper=_m1_[1],
                       match$1=match[1],
                       max_lower=match$1[1];
                      if
                       (caml_call2
                         (symbol$78,caml_call2(compare_key,max_lower,min_upper),0))
                       {var upper_part_without_min=remove_min_elt$0(upper_part);
                        return [0,
                                17724,
                                join$8
                                 (lower_part,min_upper,v,upper_part_without_min,compare_key)]}
                      return 838882908}
                    return [0,17724,lower_part]}
                  return [0,17724,upper_part]},
               go$1=
                function(t,min,max,init,f,compare_key)
                 {var t$0=t,init$0=init;
                  for(;;)
                   if(typeof t$0 === "number")
                    return init$0;
                   else
                    {if(0 === t$0[0])
                      {var d=t$0[2],k=t$0[1];
                       if
                        (!
                         caml_call2(symbol$78,caml_call2(compare_key,k,min),0)
                         &&
                         !
                         caml_call2(symbol$82,caml_call2(compare_key,k,max),0))
                        return caml_call3(f,k,d,init$0);
                       return init$0}
                     var
                      r=t$0[4],
                      d$0=t$0[3],
                      k$0=t$0[2],
                      l=t$0[1],
                      c_min=caml_call2(compare_key,k$0,min);
                     if(caml_call2(symbol$78,c_min,0)){var t$0=r;continue}
                     if(caml_call2(symbol$81,c_min,0))
                      {var
                        init$1=caml_call3(f,k$0,d$0,init$0),
                        t$0=r,
                        init$0=init$1;
                       continue}
                     var
                      z=go$1(l,min,max,init$0,f,compare_key),
                      c_max=caml_call2(compare_key,k$0,max);
                     if(caml_call2(symbol$82,c_max,0))return z;
                     var init$2=caml_call3(f,k$0,d$0,z);
                     if(caml_call2(symbol$81,c_max,0))return init$2;
                     var t$0=r,init$0=init$2;
                     continue}},
               fold_range_inclusive=
                function(t,min,max,init,f,compare_key)
                 {return caml_call2
                           (symbol$79,caml_call2(compare_key,min,max),0)
                          ?go$1(t,min,max,init,f,compare_key)
                          :init},
               range_to_alist=
                function(t,min,max,compare_key)
                 {return rev
                          (fold_range_inclusive
                            (t,
                             min,
                             max,
                             0,
                             function(key,data,l){return [0,[0,key,data],l]},
                             compare_key))},
               concat_unchecked=
                function(t1,t2)
                 {if(typeof t1 === "number")return t2;
                  if(typeof t2 === "number")return t1;
                  var match=min_elt_exn$2(t2),d=match[2],x=match[1];
                  return bal$0(t1,x,d,remove_min_elt$0(t2))},
               remove$3=
                function(t,x,length,compare_key)
                 {if(typeof t === "number")
                   return [0,0,length];
                  else
                   {if(0 === t[0])
                     {var v=t[1];
                      return caml_call2(symbol$81,caml_call2(compare_key,x,v),0)
                              ?[0,0,length - 1 | 0]
                              :[0,t,length]}
                    var
                     r=t[4],
                     d=t[3],
                     v$0=t[2],
                     l=t[1],
                     c=caml_call2(compare_key,x,v$0);
                    if(caml_call2(symbol$81,c,0))
                     return [0,concat_unchecked(l,r),length - 1 | 0];
                    if(caml_call2(symbol$78,c,0))
                     {var
                       match=remove$3(l,x,length,compare_key),
                       length$0=match[2],
                       l$0=match[1];
                      return [0,bal$0(l$0,v$0,d,r),length$0]}
                    var
                     match$0=remove$3(r,x,length,compare_key),
                     length$1=match$0[2],
                     r$0=match$0[1];
                    return [0,bal$0(l,v$0,d,r$0),length$1]}},
               Change_no_op=
                [248,cst_Base_Map_Tree0_Change_no_o,caml_fresh_oo_id(0)],
               change=
                function(t,key,f,length,compare_key)
                 {function change_core(t,key,f)
                   {if(typeof t === "number")
                     {var match=caml_call1(f,0);
                      if(match)
                       {var data=match[1];return [0,[0,key,data],length + 1 | 0]}
                      throw Change_no_op}
                    else
                     {if(0 === t[0])
                       {var d=t[2],v=t[1],c=caml_call2(compare_key,key,v);
                        if(caml_call2(symbol$81,c,0))
                         {var match$0=caml_call1(f,[0,d]);
                          if(match$0){var d$0=match$0[1];return [0,[0,v,d$0],length]}
                          return [0,0,length - 1 | 0]}
                        if(caml_call2(symbol$78,c,0))
                         {var
                           match$1=change_core(0,key,f),
                           length$0=match$1[2],
                           l=match$1[1];
                          return [0,bal$0(l,v,d,0),length$0]}
                        var
                         match$2=change_core(0,key,f),
                         length$1=match$2[2],
                         r=match$2[1];
                        return [0,bal$0(0,v,d,r),length$1]}
                      var
                       h=t[5],
                       r$0=t[4],
                       d$1=t[3],
                       v$0=t[2],
                       l$0=t[1],
                       c$0=caml_call2(compare_key,key,v$0);
                      if(caml_call2(symbol$81,c$0,0))
                       {var match$3=caml_call1(f,[0,d$1]);
                        if(match$3)
                         {var data$0=match$3[1];
                          return [0,[1,l$0,key,data$0,r$0,h],length]}
                        return [0,concat_unchecked(l$0,r$0),length - 1 | 0]}
                      if(caml_call2(symbol$78,c$0,0))
                       {var
                         match$4=change_core(l$0,key,f),
                         length$2=match$4[2],
                         l$1=match$4[1];
                        return [0,bal$0(l$1,v$0,d$1,r$0),length$2]}
                      var
                       match$5=change_core(r$0,key,f),
                       length$3=match$5[2],
                       r$1=match$5[1];
                      return [0,bal$0(l$0,v$0,d$1,r$1),length$3]}}
                  try
                   {var _mZ_=change_core(t,key,f);return _mZ_}
                  catch(_m0_)
                   {_m0_ = caml_wrap_exception(_m0_);
                    if(_m0_ === Change_no_op)return [0,t,length];
                    throw _m0_}},
               remove_multi=
                function(t,key,length,compare_key)
                 {return change
                          (t,
                           key,
                           function(param)
                            {if(param)
                              {var _mX_=param[1];
                               if(_mX_){var _mY_=_mX_[2];if(_mY_)return [0,_mY_]}}
                             return 0},
                           length,
                           compare_key)},
               iter_keys=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0]){var v=t$0[1];return caml_call1(f,v)}
                     var r=t$0[4],v$0=t$0[2],l=t$0[1];
                     iter_keys(l,f);
                     caml_call1(f,v$0);
                     var t$0=r;
                     continue}},
               iter$15=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0]){var d=t$0[2];return caml_call1(f,d)}
                     var r=t$0[4],d$0=t$0[3],l=t$0[1];
                     iter$15(l,f);
                     caml_call1(f,d$0);
                     var t$0=r;
                     continue}},
               iteri$5=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var d=t$0[2],v=t$0[1];return caml_call2(f,v,d)}
                     var r=t$0[4],d$0=t$0[3],v$0=t$0[2],l=t$0[1];
                     iteri$5(l,f);
                     caml_call2(f,v$0,d$0);
                     var t$0=r;
                     continue}},
               iteri_until_loop=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var d=t$0[2],v=t$0[1];return caml_call2(f,v,d)}
                     var
                      r=t$0[4],
                      d$0=t$0[3],
                      v$0=t$0[2],
                      l=t$0[1],
                      match=iteri_until_loop(l,f);
                     if(match)return 1;
                     var match$0=caml_call2(f,v$0,d$0);
                     if(match$0)return 1;
                     var t$0=r;
                     continue}},
               iteri_until=
                function(t,f)
                 {var _mW_=iteri_until_loop(t,f);
                  return caml_call1(Finished_or_unfinished[5],_mW_)},
               map$30=
                function(t,f)
                 {if(typeof t === "number")
                   return 0;
                  else
                   {if(0 === t[0])
                     {var d=t[2],v=t[1];return [0,v,caml_call1(f,d)]}
                    var
                     h=t[5],
                     r=t[4],
                     d$0=t[3],
                     v$0=t[2],
                     l=t[1],
                     l$0=map$30(l,f),
                     d$1=caml_call1(f,d$0),
                     r$0=map$30(r,f);
                    return [1,l$0,v$0,d$1,r$0,h]}},
               mapi$6=
                function(t,f)
                 {if(typeof t === "number")
                   return 0;
                  else
                   {if(0 === t[0])
                     {var d=t[2],v=t[1];return [0,v,caml_call2(f,v,d)]}
                    var
                     h=t[5],
                     r=t[4],
                     d$0=t[3],
                     v$0=t[2],
                     l=t[1],
                     l$0=mapi$6(l,f),
                     d$1=caml_call2(f,v$0,d$0),
                     r$0=mapi$6(r,f);
                    return [1,l$0,v$0,d$1,r$0,h]}},
               fold$11=
                function(t,accu,f)
                 {var t$0=t,accu$0=accu;
                  for(;;)
                   if(typeof t$0 === "number")
                    return accu$0;
                   else
                    {if(0 === t$0[0])
                      {var d=t$0[2],v=t$0[1];return caml_call3(f,v,d,accu$0)}
                     var
                      r=t$0[4],
                      d$0=t$0[3],
                      v$0=t$0[2],
                      l=t$0[1],
                      accu$1=caml_call3(f,v$0,d$0,fold$11(l,accu$0,f)),
                      t$0=r,
                      accu$0=accu$1;
                     continue}},
               fold_right$4=
                function(t,accu,f)
                 {var t$0=t,accu$0=accu;
                  for(;;)
                   if(typeof t$0 === "number")
                    return accu$0;
                   else
                    {if(0 === t$0[0])
                      {var d=t$0[2],v=t$0[1];return caml_call3(f,v,d,accu$0)}
                     var
                      r=t$0[4],
                      d$0=t$0[3],
                      v$0=t$0[2],
                      l=t$0[1],
                      accu$1=caml_call3(f,v$0,d$0,fold_right$4(r,accu$0,f)),
                      t$0=l,
                      accu$0=accu$1;
                     continue}},
               filter_keys=
                function(t,f,compare_key)
                 {return fold$11
                          (t,
                           _ey_,
                           function(key,data,param)
                            {var length=param[2],accu=param[1];
                             return caml_call1(f,key)
                                     ?set$4(accu,length,key,data,compare_key)
                                     :[0,accu,length]})},
               filter$8=
                function(t,f,compare_key)
                 {return fold$11
                          (t,
                           _ez_,
                           function(key,data,param)
                            {var length=param[2],accu=param[1];
                             return caml_call1(f,data)
                                     ?set$4(accu,length,key,data,compare_key)
                                     :[0,accu,length]})},
               filteri$3=
                function(t,f,compare_key)
                 {return fold$11
                          (t,
                           _eA_,
                           function(key,data,param)
                            {var length=param[2],accu=param[1];
                             return caml_call2(f,key,data)
                                     ?set$4(accu,length,key,data,compare_key)
                                     :[0,accu,length]})},
               filter_map$8=
                function(t,f,compare_key)
                 {return fold$11
                          (t,
                           _eB_,
                           function(key,data,param)
                            {var length=param[2],accu=param[1],match=caml_call1(f,data);
                             if(match)
                              {var b=match[1];return set$4(accu,length,key,b,compare_key)}
                             return [0,accu,length]})},
               filter_mapi$3=
                function(t,f,compare_key)
                 {return fold$11
                          (t,
                           _eC_,
                           function(key,data,param)
                            {var
                              length=param[2],
                              accu=param[1],
                              match=caml_call2(f,key,data);
                             if(match)
                              {var b=match[1];return set$4(accu,length,key,b,compare_key)}
                             return [0,accu,length]})},
               partition_mapi=
                function(t,f,compare_key)
                 {return fold$11
                          (t,
                           _eD_,
                           function(key,data,param)
                            {var
                              pair2=param[2],
                              pair1=param[1],
                              match=caml_call2(f,key,data);
                             if(4152137 <= match[1])
                              {var y=match[2],length=pair2[2],t=pair2[1];
                               return [0,pair1,set$4(t,length,key,y,compare_key)]}
                             var x=match[2],length$0=pair1[2],t$0=pair1[1];
                             return [0,set$4(t$0,length$0,key,x,compare_key),pair2]})},
               partition_map$0=
                function(t,f,compare_key)
                 {return partition_mapi
                          (t,
                           function(param,data){return caml_call1(f,data)},
                           compare_key)},
               partitioni_tf$0=
                function(t,f,compare_key)
                 {return partition_mapi
                          (t,
                           function(key,data)
                            {return caml_call2(f,key,data)
                                     ?[0,3506791,data]
                                     :[0,4152137,data]},
                           compare_key)},
               partition_tf$4=
                function(t,f,compare_key)
                 {return partition_mapi
                          (t,
                           function(param,data)
                            {return caml_call1(f,data)?[0,3506791,data]:[0,4152137,data]},
                           compare_key)},
               cons$1=
                function(t,e)
                 {var t$0=t,e$0=e;
                  for(;;)
                   if(typeof t$0 === "number")
                    return e$0;
                   else
                    {if(0 === t$0[0])
                      {var d=t$0[2],v=t$0[1];return [0,v,d,0,e$0]}
                     var
                      r=t$0[4],
                      d$0=t$0[3],
                      v$0=t$0[2],
                      t$1=t$0[1],
                      e$1=[0,v$0,d$0,r,e$0],
                      t$0=t$1,
                      e$0=e$1;
                     continue}},
               cons_right$0=
                function(t,e)
                 {var t$0=t,e$0=e;
                  for(;;)
                   if(typeof t$0 === "number")
                    return e$0;
                   else
                    {if(0 === t$0[0])
                      {var d=t$0[2],v=t$0[1];return [0,v,d,0,e$0]}
                     var
                      t$1=t$0[4],
                      d$0=t$0[3],
                      v$0=t$0[2],
                      l=t$0[1],
                      e$1=[0,v$0,d$0,l,e$0],
                      t$0=t$1,
                      e$0=e$1;
                     continue}},
               of_tree$2=function(tree){return cons$1(tree,0)},
               fold$12=
                function(init,f,param)
                 {var init$0=init,param$0=param;
                  for(;;)
                   {if(param$0)
                     {var
                       enum$0=param$0[4],
                       tree=param$0[3],
                       data=param$0[2],
                       key=param$0[1],
                       init$1=caml_call3(f,key,data,init$0),
                       param$1=cons$1(tree,enum$0),
                       init$0=init$1,
                       param$0=param$1;
                      continue}
                    return init$0}},
               fold2$0=
                function(compare_key,t1,t2,curr,f)
                 {var t1$0=t1,t2$0=t2,curr$0=curr;
                  for(;;)
                   {if(t1$0)
                     {if(t2$0)
                       {var
                         enum2=t2$0[4],
                         tree2=t2$0[3],
                         v2=t2$0[2],
                         k2=t2$0[1],
                         enum1=t1$0[4],
                         tree1=t1$0[3],
                         v1=t1$0[2],
                         k1=t1$0[1],
                         compare_result=caml_call2(compare_key,k1,k2);
                        if(caml_call2(symbol$81,compare_result,0))
                         {var
                           curr$1=caml_call3(f,k1,[0,737457313,[0,v1,v2]],curr$0),
                           t2$1=cons$1(tree2,enum2),
                           t1$1=cons$1(tree1,enum1),
                           t1$0=t1$1,
                           t2$0=t2$1,
                           curr$0=curr$1;
                          continue}
                        if(caml_call2(symbol$78,compare_result,0))
                         {var
                           curr$2=caml_call3(f,k1,[0,847852583,v1],curr$0),
                           t1$2=cons$1(tree1,enum1),
                           t1$0=t1$2,
                           curr$0=curr$2;
                          continue}
                        var
                         curr$3=caml_call3(f,k2,[0,-57574468,v2],curr$0),
                         t2$2=cons$1(tree2,enum2),
                         t2$0=t2$2,
                         curr$0=curr$3;
                        continue}
                      return fold$12
                              (curr$0,
                               function(key,data,acc)
                                {return caml_call3(f,key,[0,847852583,data],acc)},
                               t1$0)}
                    return t2$0
                            ?fold$12
                              (curr$0,
                               function(key,data,acc)
                                {return caml_call3(f,key,[0,-57574468,data],acc)},
                               t2$0)
                            :curr$0}},
               symmetric_diff$2=
                function(t1,t2,compare_key,data_equal)
                 {function step(state)
                   {var _mO_=state[1];
                    if(_mO_)
                     {var
                       _mP_=state[2],
                       _mQ_=_mO_[4],
                       _mR_=_mO_[3],
                       _mS_=_mO_[2],
                       _mT_=_mO_[1];
                      if(_mP_)
                       {var
                         enum2=_mP_[4],
                         tree2=_mP_[3],
                         v2=_mP_[2],
                         k2=_mP_[1],
                         compare_result=caml_call2(compare_key,_mT_,k2);
                        if(caml_call2(symbol$81,compare_result,0))
                         {if(_mR_ === tree2)
                           var next_state=[0,_mQ_,enum2];
                          else
                           var
                            _mU_=cons$1(tree2,enum2),
                            next_state=[0,cons$1(_mR_,_mQ_),_mU_];
                          return caml_call2(data_equal,_mS_,v2)
                                  ?[0,next_state]
                                  :[1,[0,_mT_,[0,1013247643,[0,_mS_,v2]]],next_state]}
                        return caml_call2(symbol$78,compare_result,0)
                                ?[1,[0,_mT_,[0,847852583,_mS_]],[0,cons$1(_mR_,_mQ_),_mP_]]
                                :[1,[0,k2,[0,-57574468,v2]],[0,_mO_,cons$1(tree2,enum2)]]}
                      return [1,
                              [0,_mT_,[0,847852583,_mS_]],
                              [0,cons$1(_mR_,_mQ_),0]]}
                    var _mV_=state[2];
                    if(_mV_)
                     {var enum$0=_mV_[4],tree=_mV_[3],data=_mV_[2],key=_mV_[1];
                      return [1,
                              [0,key,[0,-57574468,data]],
                              [0,0,cons$1(tree,enum$0)]]}
                    return 0}
                  var _mN_=of_tree$2(t2);
                  return [0,[0,of_tree$2(t1),_mN_],step]},
               to_sequence$3=
                function
                 (comparator,
                  opt,
                  keys_greater_or_equal_to,
                  keys_less_or_equal_to,
                  t$4)
                 {if(opt)var sth=opt[1],order=sth;else var order=-542431297;
                  function inclusive_bound(side,t,bound)
                   {var
                     compare_key=comparator[1],
                     match=split$4(t,bound,compare_key),
                     r=match[3],
                     maybe=match[2],
                     l=match[1],
                     t$0=caml_call1(side,[0,l,r]);
                    if(maybe)
                     {var match$0=maybe[1],data=match$0[2],key=match$0[1];
                      return set$5(t$0,key,data,compare_key)}
                    return t$0}
                  if(511974747 <= order)
                   {var
                     t$5=
                      fold$1
                       (keys_greater_or_equal_to,
                        t$4,
                        function(_mL_,_mM_)
                         {return inclusive_bound(get_data,_mL_,_mM_)}),
                     next$0=
                      function(enum$0)
                       {if(enum$0)
                         {var e=enum$0[4],t=enum$0[3],v=enum$0[2],k=enum$0[1];
                          return [1,[0,k,v],cons_right$0(t,e)]}
                        return 0};
                    if(keys_less_or_equal_to)
                     {var
                       key$0=keys_less_or_equal_to[1],
                       t$1=t$5,
                       e$1=0,
                       _mI_=comparator[1];
                      for(;;)
                       {if(typeof t$1 === "number")
                         var init$0=e$1;
                        else
                         {if(0 === t$1[0])
                           {var d$1=t$1[2],v$2=t$1[1],t$2=[1,0,v$2,d$1,0,1],t$1=t$2;
                            continue}
                          var l$0=t$1[1],v$3=t$1[2];
                          if(caml_call2(symbol$82,caml_call2(_mI_,v$3,key$0),0))
                           {var t$1=l$0;continue}
                          var
                           t$3=t$1[4],
                           d$2=t$1[3],
                           v$4=t$1[2],
                           e$2=[0,v$4,d$2,l$0,e$1],
                           t$1=t$3,
                           e$1=e$2;
                          continue}
                        break}}
                    else
                     var init$0=cons_right$0(t$5,0);
                    return [0,init$0,next$0]}
                  var
                   t$6=
                    fold$1
                     (keys_less_or_equal_to,
                      t$4,
                      function(_mJ_,_mK_)
                       {return inclusive_bound(get_key,_mJ_,_mK_)});
                  function next(enum$0)
                   {if(enum$0)
                     {var e=enum$0[4],t=enum$0[3],v=enum$0[2],k=enum$0[1];
                      return [1,[0,k,v],cons$1(t,e)]}
                    return 0}
                  if(keys_greater_or_equal_to)
                   {var
                     key=keys_greater_or_equal_to[1],
                     t=t$6,
                     e=0,
                     _mH_=comparator[1];
                    for(;;)
                     {if(typeof t === "number")
                       var init=e;
                      else
                       {if(0 === t[0])
                         {var d=t[2],v=t[1],t$0=[1,0,v,d,0,1],t=t$0;continue}
                        var l=t[1],r=t[4],v$0=t[2];
                        if(caml_call2(symbol$78,caml_call2(_mH_,v$0,key),0))
                         {var t=r;continue}
                        var
                         r$0=t[4],
                         d$0=t[3],
                         v$1=t[2],
                         e$0=[0,v$1,d$0,r$0,e],
                         t=l,
                         e=e$0;
                        continue}
                      break}}
                  else
                   var init=of_tree$2(t$6);
                  return [0,init,next]},
               compare$56=
                function(compare_key,compare_data,t1$1,t2$1)
                 {var
                   t2$2=of_tree$2(t2$1),
                   t1$2=of_tree$2(t1$1),
                   t1=t1$2,
                   t2=t2$2;
                  for(;;)
                   {if(t1)
                     {if(t2)
                       {var
                         e2=t2[4],
                         r2=t2[3],
                         d2=t2[2],
                         v2=t2[1],
                         e1=t1[4],
                         r1=t1[3],
                         d1=t1[2],
                         v1=t1[1],
                         c=caml_call2(compare_key,v1,v2);
                        if(caml_call2(symbol$80,c,0))return c;
                        var c$0=caml_call2(compare_data,d1,d2);
                        if(caml_call2(symbol$80,c$0,0))return c$0;
                        if(r1 === r2){var t1=e1,t2=e2;continue}
                        var t2$0=cons$1(r2,e2),t1$0=cons$1(r1,e1),t1=t1$0,t2=t2$0;
                        continue}
                      return 1}
                    return t2?-1:0}},
               equal$39=
                function(compare_key,compare_data,t1$1,t2$1)
                 {var
                   t2$2=of_tree$2(t2$1),
                   t1$2=of_tree$2(t1$1),
                   t1=t1$2,
                   t2=t2$2;
                  for(;;)
                   {if(t1)
                     {if(t2)
                       {var
                         e2=t2[4],
                         r2=t2[3],
                         d2=t2[2],
                         v2=t2[1],
                         e1=t1[4],
                         r1=t1[3],
                         d1=t1[2],
                         v1=t1[1],
                         _mE_=caml_call2(symbol$81,caml_call2(compare_key,v1,v2),0);
                        if(_mE_)
                         {var _mF_=caml_call2(compare_data,d1,d2);
                          if(_mF_)
                           {if(r1 === r2){var t1=e1,t2=e2;continue}
                            var t2$0=cons$1(r2,e2),t1$0=cons$1(r1,e1),t1=t1$0,t2=t2$0;
                            continue}
                          var _mG_=_mF_}
                        else
                         var _mG_=_mE_;
                        return _mG_}}
                    else
                     if(! t2)return 1;
                    return 0}},
               iter2$3=
                function(t1,t2,f,compare_key)
                 {function _mC_(key,data,param){return caml_call2(f,key,data)}
                  var _mD_=of_tree$2(t2);
                  return fold2$0(compare_key,of_tree$2(t1),_mD_,0,_mC_)},
               fold2$1=
                function(t1,t2,init,f,compare_key)
                 {var _mB_=of_tree$2(t2);
                  return fold2$0(compare_key,of_tree$2(t1),_mB_,init,f)},
               fold_symmetric_diff=
                function(t1,t2,compare_key,data_equal,init,f)
                 {function add(acc,k,v)
                   {return caml_call2(f,acc,[0,k,[0,-57574468,v]])}
                  function remove(acc,k,v)
                   {return caml_call2(f,acc,[0,k,[0,847852583,v]])}
                  function delta(acc,k,v$0,v)
                   {return caml_call2(data_equal,v$0,v)
                            ?acc
                            :caml_call2(f,acc,[0,k,[0,1013247643,[0,v$0,v]]])}
                  function loop(t$0,t,acc$3)
                   {var t$2=t$0,t$1=t,acc$4=acc$3;
                    for(;;)
                     {if(t$2 === t$1)return acc$4;
                      var switch$0=0;
                      if(typeof t$2 === "number")
                       return fold$11
                               (t$1,acc$4,function(key,data,acc){return add(acc,key,data)});
                      else
                       if(0 === t$2[0])
                        {var _mv_=t$2[2],_mw_=t$2[1];
                         if(typeof t$1 === "number")
                          switch$0 = 1;
                         else
                          if(0 === t$1[0])
                           {var v=t$1[2],k=t$1[1],x=caml_call2(compare_key,_mw_,k);
                            if(caml_call2(symbol$81,x,0))
                             return delta(acc$4,_mw_,_mv_,v);
                            if(caml_call2(symbol$78,x,0))
                             {var acc$5=remove(acc$4,_mw_,_mv_);return add(acc$5,k,v)}
                            var acc$6=add(acc$4,k,v);
                            return remove(acc$6,_mw_,_mv_)}}
                       else
                        {var _mz_=t$2[2],_mx_=t$2[4],_my_=t$2[3],_mA_=t$2[1];
                         if(typeof t$1 === "number")
                          switch$0 = 1;
                         else
                          if(0 !== t$1[0])
                           {var l=t$1[1],r=t$1[4],v$0=t$1[3],k$0=t$1[2];
                            if(caml_call2(symbol$81,caml_call2(compare_key,_mz_,k$0),0))
                             {var
                               acc$7=loop(_mA_,l,acc$4),
                               acc$8=delta(acc$7,_mz_,_my_,v$0),
                               t$2=_mx_,
                               t$1=r,
                               acc$4=acc$8;
                              continue}}}
                      if(switch$0)
                       return fold$11
                               (t$2,
                                acc$4,
                                function(key,data,acc){return remove(acc,key,data)});
                      var
                       add$0=
                        function(acc,k,v)
                         {return caml_call2(f,acc,[0,k,[0,-57574468,v]])},
                       remove$0=
                        function(acc,k,v)
                         {return caml_call2(f,acc,[0,k,[0,847852583,v]])},
                       right$2=of_tree$2(t$1),
                       left$2=of_tree$2(t$2),
                       left=left$2,
                       right=right$2,
                       acc=acc$4;
                      for(;;)
                       {if(left)
                         {if(right)
                           {var
                             enum2=right[4],
                             tree2=right[3],
                             v2=right[2],
                             k2=right[1],
                             enum1=left[4],
                             tree1=left[3],
                             v1=left[2],
                             k1=left[1],
                             compare_result=caml_call2(compare_key,k1,k2);
                            if(caml_call2(symbol$81,compare_result,0))
                             {var
                               acc$0=
                                caml_call2(data_equal,v1,v2)
                                 ?acc
                                 :caml_call2(f,acc,[0,k1,[0,1013247643,[0,v1,v2]]]);
                              if(tree1 === tree2)
                               {var left=enum1,right=enum2,acc=acc$0;continue}
                              var
                               right$0=cons$1(tree2,enum2),
                               left$0=cons$1(tree1,enum1),
                               left=left$0,
                               right=right$0,
                               acc=acc$0;
                              continue}
                            if(caml_call2(symbol$78,compare_result,0))
                             {var
                               acc$1=remove$0(acc,k1,v1),
                               left$1=cons$1(tree1,enum1),
                               left=left$1,
                               acc=acc$1;
                              continue}
                            var
                             acc$2=add$0(acc,k2,v2),
                             right$1=cons$1(tree2,enum2),
                             right=right$1,
                             acc=acc$2;
                            continue}
                          return fold$12
                                  (acc,
                                   function(key,data,acc){return remove$0(acc,key,data)},
                                   left)}
                        return fold$12
                                (acc,
                                 function(key,data,acc){return add$0(acc,key,data)},
                                 right)}}}
                  return loop(t1,t2,init)},
               length$16=
                function(param)
                 {if(typeof param === "number")
                   return 0;
                  else
                   {if(0 === param[0])return 1;
                    var r=param[4],l=param[1],_mu_=length$16(r);
                    return (length$16(l) + _mu_ | 0) + 1 | 0}},
               keys=
                function(t)
                 {return fold_right$4
                          (t,0,function(key,param,list){return [0,key,list]})},
               data=
                function(t)
                 {return fold_right$4
                          (t,0,function(param,data,list){return [0,data,list]})},
               Of_foldable=
                function(M)
                 {function of_foldable_fold(foldable,init,f,compare_key)
                   {function _ms_(param,_mt_)
                     {var
                       data=_mt_[2],
                       key=_mt_[1],
                       length=param[2],
                       accum=param[1],
                       match=find$10(accum,key,compare_key);
                      if(match)
                       var prev=match[1],prev_data=prev;
                      else
                       var prev_data=init;
                      var data$0=caml_call2(f,prev_data,data);
                      return set$4(accum,length,key,data$0,compare_key)}
                    return caml_call3
                            (M[2],foldable,[0,empty_without_value_restrictio,0],_ms_)}
                  function of_foldable_reduce(foldable,f,compare_key)
                   {function _mq_(param,_mr_)
                     {var
                       data=_mr_[2],
                       key=_mr_[1],
                       length=param[2],
                       accum=param[1],
                       match=find$10(accum,key,compare_key);
                      if(match)
                       var prev=match[1],new_data=caml_call2(f,prev,data);
                      else
                       var new_data=data;
                      return set$4(accum,length,key,new_data,compare_key)}
                    return caml_call3
                            (M[2],foldable,[0,empty_without_value_restrictio,0],_mq_)}
                  function of_foldable(foldable,compare_key)
                   {return with_return
                            (function(r)
                              {function _mo_(param,_mp_)
                                {var
                                  data=_mp_[2],
                                  key=_mp_[1],
                                  length=param[2],
                                  t=param[1],
                                  acc=set$4(t,length,key,data,compare_key),
                                  length$0=acc[2];
                                 return caml_call2(symbol$81,length,length$0)
                                         ?caml_call1(r,[0,-1048878709,key])
                                         :acc}
                               var
                                map=
                                 caml_call3
                                  (M[2],foldable,[0,empty_without_value_restrictio,0],_mo_);
                               return [0,17724,map]})}
                  function of_foldable_or_error(foldable,comparator)
                   {var match=of_foldable(foldable,comparator[1]);
                    if(17724 <= match[1]){var x=match[2];return [0,x]}
                    var key=match[2],_mn_=comparator[2];
                    return error$0
                            (0,
                             caml_call2
                              (symbol$77,
                               cst_Map_of,
                               caml_call2(symbol$77,M[1],cst_or_error_duplicate_key)),
                             key,
                             _mn_)}
                  function of_foldable_exn(foldable,comparator)
                   {var match=of_foldable(foldable,comparator[1]);
                    if(17724 <= match[1]){var x=match[2];return x}
                    var key=match[2],_mm_=comparator[2];
                    return raise
                            (create$1
                              (0,
                               0,
                               caml_call2
                                (symbol$77,
                                 cst_Map_of$0,
                                 caml_call2(symbol$77,M[1],cst_exn_duplicate_key)),
                               key,
                               _mm_))}
                  return [0,
                          of_foldable_fold,
                          of_foldable_reduce,
                          of_foldable,
                          of_foldable_or_error,
                          of_foldable_exn]},
               Of_alist=Of_foldable([0,name$2,fold$0]),
               of_alist_fold=Of_alist[1],
               of_alist_reduce=Of_alist[2],
               of_alist=Of_alist[3],
               of_alist_or_error=Of_alist[4],
               of_alist_exn=Of_alist[5],
               of_foldable_multi=
                function(foldable,fold,compare_key)
                 {var
                   alist=
                    caml_call3(fold,foldable,0,function(l,x){return [0,x,l]});
                  return caml_call4
                          (of_alist_fold,
                           alist,
                           0,
                           function(l,x){return [0,x,l]},
                           compare_key)},
               of_alist_multi=
                function(alist,compare_key)
                 {return of_foldable_multi(alist,fold$0,compare_key)},
               Of_sequence=Of_foldable([0,name$3,fold$2]),
               of_sequence_fold=Of_sequence[1],
               of_sequence_reduce=Of_sequence[2],
               of_sequence$0=Of_sequence[3],
               of_sequence_or_error=Of_sequence[4],
               of_sequence_exn=Of_sequence[5],
               of_sequence_multi=
                function(sequence,compare_key)
                 {return of_foldable_multi(sequence,fold$2,compare_key)},
               for_all$9=
                function(t,f)
                 {return with_return
                          (function(r)
                            {iter$15
                              (t,
                               function(data)
                                {var _ml_=1 - caml_call1(f,data);
                                 return _ml_?caml_call1(r,0):_ml_});
                             return 1})},
               for_alli$4=
                function(t,f)
                 {return with_return
                          (function(r)
                            {iteri$5
                              (t,
                               function(key,data)
                                {var _mk_=1 - caml_call2(f,key,data);
                                 return _mk_?caml_call1(r,0):_mk_});
                             return 1})},
               exists$10=
                function(t,f)
                 {return with_return
                          (function(r)
                            {iter$15
                              (t,
                               function(data)
                                {var _mj_=caml_call1(f,data);
                                 return _mj_?caml_call1(r,1):_mj_});
                             return 0})},
               existsi$4=
                function(t,f)
                 {return with_return
                          (function(r)
                            {iteri$5
                              (t,
                               function(key,data)
                                {var _mi_=caml_call2(f,key,data);
                                 return _mi_?caml_call1(r,1):_mi_});
                             return 0})},
               count$9=
                function(t,f)
                 {return fold$11
                          (t,
                           0,
                           function(param,data,acc)
                            {return caml_call1(f,data)?acc + 1 | 0:acc})},
               counti$4=
                function(t,f)
                 {return fold$11
                          (t,
                           0,
                           function(key,data,acc)
                            {return caml_call2(f,key,data)?acc + 1 | 0:acc})},
               to_alist=
                function(opt,t)
                 {if(opt)
                   var sth=opt[1],key_order=sth;
                  else
                   var key_order=608542111;
                  return 608542111 <= key_order
                          ?fold_right$4
                            (t,0,function(key,data,x){return [0,[0,key,data],x]})
                          :fold$11
                            (t,0,function(key,data,x){return [0,[0,key,data],x]})},
               merge$3=
                function(t1,t2,f,compare_key)
                 {var
                   _mh_=length$16(t2),
                   elts=caml_make_vect(length$16(t1) + _mh_ | 0,0),
                   i=[0,0];
                  iter2$3
                   (t1,
                    t2,
                    function(key,values)
                     {var match=caml_call2(f,key,values);
                      if(match)
                       {var value=match[1];
                        set$1(elts,i[1],[0,key,value]);
                        return incr(i)}
                      return 0},
                    compare_key);
                  var len=i[1];
                  function get(i){return get$3(elts,i)}
                  var tree=of_increasing_iterator_uncheck$4(len,get);
                  return [0,tree,len]},
               repackage=function(marker,k,v){return marker?[0,[0,k,v]]:0},
               closest_key=
                function(t$0,dir,k$1,compare_key)
                 {var t=t$0,found_marker=0,found_key=0,found_value=0;
                  for(;;)
                   if(typeof t === "number")
                    return repackage(found_marker,found_key,found_value);
                   else
                    {if(0 === t[0])
                      {var
                        v=t[2],
                        k=t[1],
                        c=caml_call2(compare_key,k,k$1),
                        _mg_=
                         521507869 <= dir
                          ?927731004 <= dir
                            ?caml_call2(symbol$79,c,0)
                            :caml_call2(symbol$83,c,0)
                          :-640801497 <= dir
                            ?caml_call2(symbol$78,c,0)
                            :caml_call2(symbol$82,c,0);
                       return _mg_
                               ?[0,[0,k,v]]
                               :repackage(found_marker,found_key,found_value)}
                     var
                      r=t[4],
                      v$0=t[3],
                      k$0=t[2],
                      l=t[1],
                      c$0=caml_call2(compare_key,k$0,k$1);
                     if(caml_call2(symbol$81,c$0,0))
                      return -640801497 === dir
                              ?is_empty$9(l)
                                ?repackage(found_marker,found_key,found_value)
                                :max_elt$10(l)
                              :-779285465 <= dir
                                ?[0,[0,k$0,v$0]]
                                :is_empty$9(r)
                                  ?repackage(found_marker,found_key,found_value)
                                  :min_elt$10(r);
                     if(-640801497 !== dir && ! (927731004 <= dir))
                      {if(caml_call2(symbol$82,c$0,0))
                        {var t=l,found_marker=1,found_key=k$0,found_value=v$0;
                         continue}
                       var t=r;
                       continue}
                     if(caml_call2(symbol$78,c$0,0))
                      {var t=r,found_marker=1,found_key=k$0,found_value=v$0;
                       continue}
                     var t=l;
                     continue}},
               rank=
                function(t,k,compare_key)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var k$0=t$0[1];
                       return caml_call2(symbol$81,caml_call2(compare_key,k$0,k),0)
                               ?_eE_
                               :0}
                     var
                      r=t$0[4],
                      k$1=t$0[2],
                      l=t$0[1],
                      c=caml_call2(compare_key,k$1,k);
                     if(caml_call2(symbol$81,c,0))return [0,length$16(l)];
                     if(caml_call2(symbol$82,c,0)){var t$0=l;continue}
                     var
                      _mf_=
                       function(rank){return (rank + 1 | 0) + length$16(l) | 0};
                     return caml_call2(map$15,rank(r,k,compare_key),_mf_)}},
               nth$4=
                function(num_to_search,param)
                 {var param$0=param;
                  for(;;)
                   if(typeof param$0 === "number")
                    return 0;
                   else
                    {if(0 === param$0[0])
                      {var v=param$0[2],k=param$0[1];
                       return caml_call2(symbol$81,num_to_search[1],0)
                               ?[0,[0,k,v]]
                               :(decr(num_to_search),0)}
                     var
                      r=param$0[4],
                      v$0=param$0[3],
                      k$0=param$0[2],
                      l=param$0[1],
                      some=nth$4(num_to_search,l);
                     if(some)return some;
                     if(caml_call2(symbol$81,num_to_search[1],0))
                      return [0,[0,k$0,v$0]];
                     decr(num_to_search);
                     var param$0=r;
                     continue}},
               nth$5=function(t,n){return nth$4([0,n],t)},
               find_first_satisfying$1=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var v=t$0[2],k=t$0[1];
                       return caml_call2(f,k,v)?[0,[0,k,v]]:0}
                     var r=t$0[4],v$0=t$0[3],k$0=t$0[2],l=t$0[1];
                     if(caml_call2(f,k$0,v$0))
                      {var x=find_first_satisfying$1(l,f);
                       return x?x:[0,[0,k$0,v$0]]}
                     var t$0=r;
                     continue}},
               find_last_satisfying$1=
                function(t,f)
                 {var t$0=t;
                  for(;;)
                   if(typeof t$0 === "number")
                    return 0;
                   else
                    {if(0 === t$0[0])
                      {var v=t$0[2],k=t$0[1];
                       return caml_call2(f,k,v)?[0,[0,k,v]]:0}
                     var r=t$0[4],v$0=t$0[3],k$0=t$0[2],l=t$0[1];
                     if(caml_call2(f,k$0,v$0))
                      {var x=find_last_satisfying$1(r,f);
                       return x?x:[0,[0,k$0,v$0]]}
                     var t$0=l;
                     continue}},
               binary_search$4=
                function(t,compare,how,v)
                 {if(-839473056 <= how)
                   return 200870407 <= how
                           ?926943384 <= how
                             ?find_first_satisfying$1
                               (t,
                                function(key,data)
                                 {return caml_call2
                                          (symbol$83,caml_call3(compare,key,data,v),0)})
                             :find_last_satisfying$1
                               (t,
                                function(key,data)
                                 {return caml_call2
                                          (symbol$78,caml_call3(compare,key,data,v),0)})
                           :-253007807 <= how
                             ?find_last_satisfying$1
                               (t,
                                function(key,data)
                                 {return caml_call2
                                          (symbol$79,caml_call3(compare,key,data,v),0)})
                             :find_first_satisfying$1
                               (t,
                                function(key,data)
                                 {return caml_call2
                                          (symbol$82,caml_call3(compare,key,data,v),0)});
                  if(-1055410545 <= how)
                   {var
                     pair=
                      find_last_satisfying$1
                       (t,
                        function(key,data)
                         {return caml_call2
                                  (symbol$79,caml_call3(compare,key,data,v),0)});
                    if(pair)
                     {var match=pair[1],data=match[2],key=match[1];
                      if(caml_call2(symbol$81,caml_call3(compare,key,data,v),0))
                       return pair}
                    return 0}
                  var
                   pair$0=
                    find_first_satisfying$1
                     (t,
                      function(key,data)
                       {return caml_call2
                                (symbol$83,caml_call3(compare,key,data,v),0)});
                  if(pair$0)
                   {var match$0=pair$0[1],data$0=match$0[2],key$0=match$0[1];
                    if
                     (caml_call2(symbol$81,caml_call3(compare,key$0,data$0,v),0))
                     return pair$0}
                  return 0},
               binary_search_segmented$4=
                function(t,segment_of,how)
                 {function is_left(key,data)
                   {var match=caml_call2(segment_of,key,data);
                    return 847852583 <= match?1:0}
                  function is_right(key,data){return 1 - is_left(key,data)}
                  return 125585502 <= how
                          ?find_last_satisfying$1(t,is_left)
                          :find_first_satisfying$1(t,is_right)},
               of_iteri=
                function(iteri,compare_key)
                 {var acc=[0,0,[0,empty_without_value_restrictio,0]];
                  caml_call1
                   (iteri,
                    function(key,data)
                     {var
                       match=acc[2],
                       length=match[2],
                       map=match[1],
                       pair=set$4(map,length,key,data,compare_key),
                       length$0=pair[2];
                      if(caml_call2(symbol$81,length,length$0) && is_none(acc[1]))
                       {acc[1] = [0,key];return 0}
                      acc[2] = pair;
                      return 0});
                  var _me_=acc[1];
                  if(_me_){var key=_me_[1];return [0,-1048878709,key]}
                  return [0,17724,acc[2]]},
               t_of_sexp_direct$2=
                function(key_of_sexp,value_of_sexp,sexp,comparator)
                 {var
                   alist=
                    caml_call2
                     (t_of_sexp$10,
                      caml_call2(pair_of_sexp,key_of_sexp,value_of_sexp),
                      sexp),
                   compare_key=comparator[1],
                   match=caml_call2(of_alist,alist,compare_key);
                  if(17724 <= match[1]){var v=match[2];return v}
                  var k=match[2];
                  function _l__(_md_){return _md_}
                  var
                   alist_sexps=
                    caml_call2
                     (t_of_sexp$10,
                      caml_call2(pair_of_sexp,function(_mc_){return _mc_},_l__),
                      sexp),
                   found_first_k=[0,0];
                  iter2_ok
                   (alist,
                    alist_sexps,
                    function(param,_l$_)
                     {var
                       k2_sexp=_l$_[1],
                       k2=param[1],
                       _ma_=caml_call2(symbol$81,caml_call2(compare_key,k,k2),0);
                      if(_ma_)
                       {if(found_first_k[1])
                         return caml_call2
                                 (of_sexp_error,cst_Map_t_of_sexp_direct_dupli,k2_sexp);
                        found_first_k[1] = 1;
                        var _mb_=0}
                      else
                       var _mb_=_ma_;
                      return _mb_});
                  throw [0,Assert_failure,_eF_]},
               sexp_of_t$53=
                function(sexp_of_key,sexp_of_value,t)
                 {function f(key,data,acc)
                   {var _l9_=[0,caml_call1(sexp_of_value,data),0];
                    return [0,[1,[0,caml_call1(sexp_of_key,key),_l9_]],acc]}
                  return [1,fold_right$4(t,0,f)]},
               compare_key=function(t){return t[1][1]},
               like$0=
                function(param,_l8_)
                 {var length=_l8_[2],tree=_l8_[1],comparator=param[1];
                  return [0,comparator,tree,length]},
               like2=
                function(x,param)
                 {var z=param[2],y=param[1],_l7_=like$0(x,z);
                  return [0,like$0(x,y),_l7_]},
               with_same_length=
                function(param,tree)
                 {var length=param[3],comparator=param[1];
                  return [0,comparator,tree,length]},
               of_tree$3=
                function(comparator,tree)
                 {return [0,comparator,tree,length$16(tree)]},
               comparator$14=function(t){return t[1]},
               to_tree$2=function(t){return t[2]},
               invariants$3=
                function(t)
                 {var _l6_=compare_key(t);return invariants$2(t[2],_l6_)},
               is_empty$10=function(t){return is_empty$9(t[2])},
               length$17=function(t){return t[3]},
               set$6=
                function(t,key,data)
                 {var _l5_=compare_key(t);
                  return like$0(t,set$4(t[2],t[3],key,data,_l5_))},
               add_exn$0=
                function(t,key,data)
                 {var _l3_=t[1][2],_l4_=compare_key(t);
                  return like$0(t,add_exn(t[2],t[3],key,data,_l4_,_l3_))},
               add_exn_internal=
                function(t,key,data)
                 {var _l2_=t[1][2],compare_key$0=compare_key(t);
                  return like$0
                          (t,
                           find_and_add_or_set(t[2],t[3],key,data,compare_key$0,_l2_,0))},
               add$4=
                function(t,key,data)
                 {try
                   {var result=add_exn_internal(t,key,data)}
                  catch(_l1_)
                   {_l1_ = caml_wrap_exception(_l1_);
                    if(_l1_ === Duplicate)return -1024851605;
                    throw _l1_}
                  return [0,17724,result]},
               add_multi$0=
                function(t,key,data)
                 {var _l0_=compare_key(t);
                  return like$0(t,add_multi(t[2],t[3],key,data,_l0_))},
               remove_multi$0=
                function(t,key)
                 {var _lZ_=compare_key(t);
                  return like$0(t,remove_multi(t[2],key,t[3],_lZ_))},
               find_multi$0=
                function(t,key)
                 {var _lY_=compare_key(t);return find_multi(t[2],key,_lY_)},
               change$0=
                function(t,key,f)
                 {var _lX_=compare_key(t);
                  return like$0(t,change(t[2],key,f,t[3],_lX_))},
               update=
                function(t,key,f)
                 {var compare_key$0=compare_key(t),_lV_=t[3],_lW_=t[2];
                  function update_core(t,key,f)
                   {if(typeof t === "number")
                     {var data=caml_call1(f,0);
                      return [0,[0,key,data],_lV_ + 1 | 0]}
                    else
                     {if(0 === t[0])
                       {var d=t[2],v=t[1],c=caml_call2(compare_key$0,key,v);
                        if(caml_call2(symbol$81,c,0))
                         {var d$0=caml_call1(f,[0,d]);return [0,[0,v,d$0],_lV_]}
                        if(caml_call2(symbol$78,c,0))
                         {var match=update_core(0,key,f),length=match[2],l=match[1];
                          return [0,bal$0(l,v,d,0),length]}
                        var
                         match$0=update_core(0,key,f),
                         length$0=match$0[2],
                         r=match$0[1];
                        return [0,bal$0(0,v,d,r),length$0]}
                      var
                       h=t[5],
                       r$0=t[4],
                       d$1=t[3],
                       v$0=t[2],
                       l$0=t[1],
                       c$0=caml_call2(compare_key$0,key,v$0);
                      if(caml_call2(symbol$81,c$0,0))
                       {var data$0=caml_call1(f,[0,d$1]);
                        return [0,[1,l$0,key,data$0,r$0,h],_lV_]}
                      if(caml_call2(symbol$78,c$0,0))
                       {var
                         match$1=update_core(l$0,key,f),
                         length$1=match$1[2],
                         l$1=match$1[1];
                        return [0,bal$0(l$1,v$0,d$1,r$0),length$1]}
                      var
                       match$2=update_core(r$0,key,f),
                       length$2=match$2[2],
                       r$1=match$2[1];
                      return [0,bal$0(l$0,v$0,d$1,r$1),length$2]}}
                  return like$0(t,update_core(_lW_,key,f))},
               find_exn$7=
                function(t,key)
                 {var _lT_=t[1][2],_lU_=compare_key(t);
                  return find_exn$6(t[2],key,_lU_,_lT_)},
               find$11=
                function(t,key)
                 {var _lS_=compare_key(t);return find$10(t[2],key,_lS_)},
               remove$4=
                function(t,key)
                 {var _lR_=compare_key(t);
                  return like$0(t,remove$3(t[2],key,t[3],_lR_))},
               mem$10=
                function(t,key)
                 {var _lQ_=compare_key(t);return mem$9(t[2],key,_lQ_)},
               iter_keys$0=function(t,f){return iter_keys(t[2],f)},
               iter$16=function(t,f){return iter$15(t[2],f)},
               iteri$6=function(t,f){return iteri$5(t[2],f)},
               iteri_until$0=function(t,f){return iteri_until(t[2],f)},
               iter2$4=
                function(t1,t2,f)
                 {var _lP_=compare_key(t1);return iter2$3(t1[2],t2[2],f,_lP_)},
               map$31=function(t,f){return with_same_length(t,map$30(t[2],f))},
               mapi$7=function(t,f){return with_same_length(t,mapi$6(t[2],f))},
               fold$13=function(t,init,f){return fold$11(t[2],init,f)},
               fold_right$5=
                function(t,init,f){return fold_right$4(t[2],init,f)},
               fold2$2=
                function(t1,t2,init,f)
                 {var _lO_=compare_key(t1);
                  return fold2$1(t1[2],t2[2],init,f,_lO_)},
               filter_keys$0=
                function(t,f)
                 {var _lN_=compare_key(t);
                  return like$0(t,filter_keys(t[2],f,_lN_))},
               filter$9=
                function(t,f)
                 {var _lM_=compare_key(t);
                  return like$0(t,filter$8(t[2],f,_lM_))},
               filteri$4=
                function(t,f)
                 {var _lL_=compare_key(t);
                  return like$0(t,filteri$3(t[2],f,_lL_))},
               filter_map$9=
                function(t,f)
                 {var _lK_=compare_key(t);
                  return like$0(t,filter_map$8(t[2],f,_lK_))},
               filter_mapi$4=
                function(t,f)
                 {var _lJ_=compare_key(t);
                  return like$0(t,filter_mapi$3(t[2],f,_lJ_))},
               partition_mapi$0=
                function(t,f)
                 {var _lI_=compare_key(t);
                  return like2(t,partition_mapi(t[2],f,_lI_))},
               partition_map$1=
                function(t,f)
                 {var _lH_=compare_key(t);
                  return like2(t,partition_map$0(t[2],f,_lH_))},
               partitioni_tf$1=
                function(t,f)
                 {var _lG_=compare_key(t);
                  return like2(t,partitioni_tf$0(t[2],f,_lG_))},
               partition_tf$5=
                function(t,f)
                 {var _lF_=compare_key(t);
                  return like2(t,partition_tf$4(t[2],f,_lF_))},
               compare_direct$1=
                function(compare_data,t1,t2)
                 {var _lD_=t2[2],_lE_=t1[2];
                  return compare$56(compare_key(t1),compare_data,_lE_,_lD_)},
               equal$40=
                function(compare_data,t1,t2)
                 {var _lB_=t2[2],_lC_=t1[2];
                  return equal$39(compare_key(t1),compare_data,_lC_,_lB_)},
               keys$0=function(t){return keys(t[2])},
               data$0=function(t){return data(t[2])},
               to_alist$0=
                function(key_order,t){return to_alist(key_order,t[2])},
               validate$0=
                function(name,f,t){return alist(name,f,to_alist$0(0,t))},
               symmetric_diff$3=
                function(t1,t2,data_equal)
                 {var _lA_=compare_key(t1);
                  return symmetric_diff$2(t1[2],t2[2],_lA_,data_equal)},
               fold_symmetric_diff$0=
                function(t1,t2,data_equal,init,f)
                 {var _lz_=compare_key(t1);
                  return fold_symmetric_diff
                          (t1[2],t2[2],_lz_,data_equal,init,f)},
               merge$4=
                function(t1,t2,f)
                 {var _ly_=compare_key(t1);
                  return like$0(t1,merge$3(t1[2],t2[2],f,_ly_))},
               min_elt$11=function(t){return min_elt$10(t[2])},
               min_elt_exn$3=function(t){return min_elt_exn$2(t[2])},
               max_elt$11=function(t){return max_elt$10(t[2])},
               max_elt_exn$3=function(t){return max_elt_exn$2(t[2])},
               for_all$10=function(t,f){return for_all$9(t[2],f)},
               for_alli$5=function(t,f){return for_alli$4(t[2],f)},
               exists$11=function(t,f){return exists$10(t[2],f)},
               existsi$5=function(t,f){return existsi$4(t[2],f)},
               count$10=function(t,f){return count$9(t[2],f)},
               counti$5=function(t,f){return counti$4(t[2],f)},
               split$5=
                function(t,k)
                 {var
                   _lw_=compare_key(t),
                   match=split$4(t[2],k,_lw_),
                   r=match[3],
                   maybe=match[2],
                   l=match[1],
                   comparator=t[1],
                   both_len=is_some(maybe)?t[3] - 1 | 0:t[3],
                   _lx_=height$0(r);
                  if(caml_call2(symbol$78,height$0(l),_lx_))
                   {var l$0=of_tree$3(comparator,l);
                    return [0,l$0,maybe,[0,comparator,r,both_len - l$0[3] | 0]]}
                  var r$0=of_tree$3(comparator,r);
                  return [0,[0,comparator,l,both_len - r$0[3] | 0],maybe,r$0]},
               subrange=
                function(t,lower_bound,upper_bound)
                 {var
                   _lt_=compare_key(t),
                   match=split_range(t[2],lower_bound,upper_bound,_lt_),
                   right=match[3],
                   mid=match[2],
                   left=match[1],
                   h_l=height$0(left),
                   h_r=height$0(right),
                   outer_joined_height=
                    caml_call2(symbol$81,h_l,h_r)
                     ?h_l + 1 | 0
                     :caml_call2(max$12,h_l,h_r);
                  if(caml_call2(symbol$78,outer_joined_height,height$0(mid)))
                   {var
                     _lu_=length$16(right),
                     _lv_=length$16(left) + _lu_ | 0,
                     mid_length=t[3] - _lv_ | 0;
                    return [0,t[1],mid,mid_length]}
                  return of_tree$3(t[1],mid)},
               append$3=
                function(lower_part,upper_part)
                 {var
                   _ls_=compare_key(lower_part),
                   match=append$2(lower_part[2],upper_part[2],_ls_);
                  if(typeof match === "number")return 838882908;
                  var tree=match[2];
                  return [0,
                          17724,
                          [0,lower_part[1],tree,lower_part[3] + upper_part[3] | 0]]},
               fold_range_inclusive$0=
                function(t,min,max,init,f)
                 {var _lr_=compare_key(t);
                  return fold_range_inclusive(t[2],min,max,init,f,_lr_)},
               range_to_alist$0=
                function(t,min,max)
                 {var _lq_=compare_key(t);
                  return range_to_alist(t[2],min,max,_lq_)},
               closest_key$0=
                function(t,dir,key)
                 {var _lp_=compare_key(t);
                  return closest_key(t[2],dir,key,_lp_)},
               nth$6=function(t,n){return nth$5(t[2],n)},
               nth_exn$1=function(t,n){return value_exn(0,0,0,nth$6(t,n))},
               rank$0=
                function(t,key)
                 {var _lo_=compare_key(t);return rank(t[2],key,_lo_)},
               sexp_of_t$54=
                function(sexp_of_k,sexp_of_v,param,t)
                 {return sexp_of_t$53(sexp_of_k,sexp_of_v,t[2])},
               to_sequence$4=
                function
                 (order,keys_greater_or_equal_to,keys_less_or_equal_to,t)
                 {return to_sequence$3
                          (t[1],
                           order,
                           keys_greater_or_equal_to,
                           keys_less_or_equal_to,
                           t[2])},
               binary_search$5=
                function(t,compare,how,v)
                 {return binary_search$4(t[2],compare,how,v)},
               binary_search_segmented$5=
                function(t,segment_of,how)
                 {return binary_search_segmented$4(t[2],segment_of,how)},
               hash_fold_direct$0=
                function(hash_fold_key,hash_fold_data,state,t)
                 {var _ln_=t[2];
                  function _lm_(key,data,state)
                   {return caml_call2
                            (hash_fold_data,caml_call2(hash_fold_key,state,key),data)}
                  return fold$11
                          (_ln_,caml_call2(hash_fold_t$4,state,length$16(_ln_)),_lm_)},
               empty$6=function(param){return empty_without_value_restrictio},
               of_tree$4=function(param,tree){return tree},
               singleton$8=function(param,k,v){return [0,k,v]},
               of_sorted_array_unchecked$5=
                function(comparator,array)
                 {return of_sorted_array_unchecked$4(array,comparator[1])[1]},
               of_sorted_array$5=
                function(comparator,array)
                 {return caml_call2
                          (map$3,of_sorted_array$4(array,comparator[1]),get_key)},
               of_alist$0=
                function(comparator,alist)
                 {var d=caml_call2(of_alist,alist,comparator[1]);
                  if(17724 <= d[1])
                   {var match=d[2],tree=match[1];return [0,17724,tree]}
                  return d},
               of_alist_or_error$0=
                function(comparator,alist)
                 {return caml_call2
                          (map$3,
                           caml_call2(of_alist_or_error,alist,comparator),
                           get_key)},
               of_alist_exn$0=
                function(comparator,alist)
                 {return caml_call2(of_alist_exn,alist,comparator)[1]},
               of_alist_multi$0=
                function(comparator,alist)
                 {return of_alist_multi(alist,comparator[1])[1]},
               of_alist_fold$0=
                function(comparator,alist,init,f)
                 {return caml_call4(of_alist_fold,alist,init,f,comparator[1])
                          [1]},
               of_alist_reduce$0=
                function(comparator,alist,f)
                 {return caml_call3(of_alist_reduce,alist,f,comparator[1])[1]},
               of_iteri$0=
                function(comparator,iteri)
                 {var d=of_iteri(iteri,comparator[1]);
                  if(17724 <= d[1])
                   {var match=d[2],tree=match[1];return [0,17724,tree]}
                  return d},
               of_increasing_iterator_uncheck$5=
                function(required_by_intf,len,f)
                 {return of_increasing_iterator_uncheck$4(len,f)},
               of_increasing_sequence$0=
                function(comparator,seq)
                 {return caml_call2
                          (map$3,of_increasing_sequence(seq,comparator[1]),get_key)},
               of_sequence$1=
                function(comparator,seq)
                 {var d=caml_call2(of_sequence$0,seq,comparator[1]);
                  if(17724 <= d[1])
                   {var match=d[2],tree=match[1];return [0,17724,tree]}
                  return d},
               of_sequence_or_error$0=
                function(comparator,seq)
                 {return caml_call2
                          (map$3,
                           caml_call2(of_sequence_or_error,seq,comparator),
                           get_key)},
               of_sequence_exn$0=
                function(comparator,seq)
                 {return caml_call2(of_sequence_exn,seq,comparator)[1]},
               of_sequence_multi$0=
                function(comparator,seq)
                 {return of_sequence_multi(seq,comparator[1])[1]},
               of_sequence_fold$0=
                function(comparator,seq,init,f)
                 {return caml_call4(of_sequence_fold,seq,init,f,comparator[1])
                          [1]},
               of_sequence_reduce$0=
                function(comparator,seq,f)
                 {return caml_call3(of_sequence_reduce,seq,f,comparator[1])[1]},
               to_tree$3=function(t){return t},
               invariants$4=
                function(comparator,t){return invariants$2(t,comparator[1])},
               is_empty$11=function(t){return is_empty$9(t)},
               length$18=function(t){return length$16(t)},
               set$7=
                function(comparator,t,key,data)
                 {return set$4(t,0,key,data,comparator[1])[1]},
               add_exn$1=
                function(comparator,t,key,data)
                 {return add_exn(t,0,key,data,comparator[1],comparator[2])[1]},
               add$5=
                function(comparator,t,key,data)
                 {try
                   {var _lk_=[0,17724,add_exn$1(comparator,t,key,data)];
                    return _lk_}
                  catch(_ll_){return -1024851605}},
               add_multi$1=
                function(comparator,t,key,data)
                 {return add_multi(t,0,key,data,comparator[1])[1]},
               remove_multi$1=
                function(comparator,t,key)
                 {return remove_multi(t,key,0,comparator[1])[1]},
               find_multi$1=
                function(comparator,t,key)
                 {return find_multi(t,key,comparator[1])},
               change$1=
                function(comparator,t,key,f)
                 {return change(t,key,f,0,comparator[1])[1]},
               update$0=
                function(comparator,t,key,f)
                 {return change$1
                          (comparator,
                           t,
                           key,
                           function(data){return [0,caml_call1(f,data)]})},
               find_exn$8=
                function(comparator,t,key)
                 {return find_exn$6(t,key,comparator[1],comparator[2])},
               find$12=
                function(comparator,t,key)
                 {return find$10(t,key,comparator[1])},
               remove$5=
                function(comparator,t,key)
                 {return remove$3(t,key,0,comparator[1])[1]},
               mem$11=
                function(comparator,t,key){return mem$9(t,key,comparator[1])},
               iter_keys$1=function(t,f){return iter_keys(t,f)},
               iter$17=function(t,f){return iter$15(t,f)},
               iteri$7=function(t,f){return iteri$5(t,f)},
               iteri_until$1=function(t,f){return iteri_until(t,f)},
               iter2$5=
                function(comparator,t1,t2,f)
                 {return iter2$3(t1,t2,f,comparator[1])},
               map$32=function(t,f){return map$30(t,f)},
               mapi$8=function(t,f){return mapi$6(t,f)},
               fold$14=function(t,init,f){return fold$11(t,init,f)},
               fold_right$6=function(t,init,f){return fold_right$4(t,init,f)},
               fold2$3=
                function(comparator,t1,t2,init,f)
                 {return fold2$1(t1,t2,init,f,comparator[1])},
               filter_keys$1=
                function(comparator,t,f)
                 {return filter_keys(t,f,comparator[1])[1]},
               filter$10=
                function(comparator,t,f)
                 {return filter$8(t,f,comparator[1])[1]},
               filteri$5=
                function(comparator,t,f)
                 {return filteri$3(t,f,comparator[1])[1]},
               filter_map$10=
                function(comparator,t,f)
                 {return filter_map$8(t,f,comparator[1])[1]},
               filter_mapi$5=
                function(comparator,t,f)
                 {return filter_mapi$3(t,f,comparator[1])[1]},
               partition_mapi$1=
                function(comparator,t,f)
                 {var
                   _lj_=partition_mapi(t,f,comparator[1]),
                   b=_lj_[2][1],
                   match=_lj_[1],
                   a=match[1];
                  return [0,a,b]},
               partition_map$2=
                function(comparator,t,f)
                 {var
                   _li_=partition_map$0(t,f,comparator[1]),
                   b=_li_[2][1],
                   match=_li_[1],
                   a=match[1];
                  return [0,a,b]},
               partitioni_tf$2=
                function(comparator,t,f)
                 {var
                   _lh_=partitioni_tf$0(t,f,comparator[1]),
                   b=_lh_[2][1],
                   match=_lh_[1],
                   a=match[1];
                  return [0,a,b]},
               partition_tf$6=
                function(comparator,t,f)
                 {var
                   _lg_=partition_tf$4(t,f,comparator[1]),
                   b=_lg_[2][1],
                   match=_lg_[1],
                   a=match[1];
                  return [0,a,b]},
               compare_direct$2=
                function(comparator,compare_data,t1,t2)
                 {return compare$56(comparator[1],compare_data,t1,t2)},
               equal$41=
                function(comparator,compare_data,t1,t2)
                 {return equal$39(comparator[1],compare_data,t1,t2)},
               keys$1=function(t){return keys(t)},
               data$1=function(t){return data(t)},
               to_alist$1=function(key_order,t){return to_alist(key_order,t)},
               validate$1=
                function(name,f,t){return alist(name,f,to_alist$1(0,t))},
               symmetric_diff$4=
                function(comparator,t1,t2,data_equal)
                 {return symmetric_diff$2(t1,t2,comparator[1],data_equal)},
               fold_symmetric_diff$1=
                function(comparator,t1,t2,data_equal,init,f)
                 {return fold_symmetric_diff
                          (t1,t2,comparator[1],data_equal,init,f)},
               merge$5=
                function(comparator,t1,t2,f)
                 {return merge$3(t1,t2,f,comparator[1])[1]},
               min_elt$12=function(t){return min_elt$10(t)},
               min_elt_exn$4=function(t){return min_elt_exn$2(t)},
               max_elt$12=function(t){return max_elt$10(t)},
               max_elt_exn$4=function(t){return max_elt_exn$2(t)},
               for_all$11=function(t,f){return for_all$9(t,f)},
               for_alli$6=function(t,f){return for_alli$4(t,f)},
               exists$12=function(t,f){return exists$10(t,f)},
               existsi$6=function(t,f){return existsi$4(t,f)},
               count$11=function(t,f){return count$9(t,f)},
               counti$6=function(t,f){return counti$4(t,f)},
               split$6=
                function(comparator,t,k){return split$4(t,k,comparator[1])},
               append$4=
                function(comparator,lower_part,upper_part)
                 {return append$2(lower_part,upper_part,comparator[1])},
               subrange$0=
                function(comparator,t,lower_bound,upper_bound)
                 {var
                   match=split_range(t,lower_bound,upper_bound,comparator[1]),
                   ret=match[2];
                  return ret},
               fold_range_inclusive$1=
                function(comparator,t,min,max,init,f)
                 {return fold_range_inclusive(t,min,max,init,f,comparator[1])},
               range_to_alist$1=
                function(comparator,t,min,max)
                 {return range_to_alist(t,min,max,comparator[1])},
               closest_key$1=
                function(comparator,t,dir,key)
                 {return closest_key(t,dir,key,comparator[1])},
               nth$7=function(param,t,n){return nth$5(t,n)},
               nth_exn$2=
                function(comparator,t,n)
                 {return value_exn(0,0,0,nth$7(comparator,t,n))},
               rank$1=
                function(comparator,t,key){return rank(t,key,comparator[1])},
               sexp_of_t$55=
                function(sexp_of_k,sexp_of_v,param,t)
                 {return sexp_of_t$53(sexp_of_k,sexp_of_v,t)},
               t_of_sexp_direct$3=
                function(comparator,k_of_sexp,v_of_sexp,sexp)
                 {return t_of_sexp_direct$2
                           (k_of_sexp,v_of_sexp,sexp,comparator)
                          [1]},
               to_sequence$5=
                function
                 (comparator,
                  order,
                  keys_greater_or_equal_to,
                  keys_less_or_equal_to,
                  t)
                 {return to_sequence$3
                          (comparator,
                           order,
                           keys_greater_or_equal_to,
                           keys_less_or_equal_to,
                           t)},
               binary_search$6=
                function(param,t,compare,how,v)
                 {return binary_search$4(t,compare,how,v)},
               binary_search_segmented$6=
                function(param,t,segment_of,how)
                 {return binary_search_segmented$4(t,segment_of,how)},
               empty$7=
                function(comparator)
                 {return [0,comparator,empty_without_value_restrictio,0]},
               singleton$9=
                function(comparator,k,v){return [0,comparator,[0,k,v],1]},
               of_tree0=
                function(comparator,param)
                 {var length=param[2],tree=param[1];
                  return [0,comparator,tree,length]},
               of_tree$5=
                function(comparator,tree)
                 {return of_tree0(comparator,[0,tree,length$16(tree)])},
               of_sorted_array_unchecked$6=
                function(comparator,array)
                 {return of_tree0
                          (comparator,
                           of_sorted_array_unchecked$4(array,comparator[1]))},
               of_sorted_array$6=
                function(comparator,array)
                 {function _lf_(tree){return of_tree0(comparator,tree)}
                  return caml_call2
                          (map$3,of_sorted_array$4(array,comparator[1]),_lf_)},
               of_alist$1=
                function(comparator,alist)
                 {var z=caml_call2(of_alist,alist,comparator[1]);
                  if(17724 <= z[1])
                   {var match=z[2],length=match[2],tree=match[1];
                    return [0,17724,[0,comparator,tree,length]]}
                  return z},
               of_alist_or_error$1=
                function(comparator,alist)
                 {function _le_(tree){return of_tree0(comparator,tree)}
                  return caml_call2
                          (map$3,caml_call2(of_alist_or_error,alist,comparator),_le_)},
               of_alist_exn$1=
                function(comparator,alist)
                 {return of_tree0
                          (comparator,caml_call2(of_alist_exn,alist,comparator))},
               of_alist_multi$1=
                function(comparator,alist)
                 {return of_tree0
                          (comparator,of_alist_multi(alist,comparator[1]))},
               of_alist_fold$1=
                function(comparator,alist,init,f)
                 {return of_tree0
                          (comparator,
                           caml_call4(of_alist_fold,alist,init,f,comparator[1]))},
               of_alist_reduce$1=
                function(comparator,alist,f)
                 {return of_tree0
                          (comparator,
                           caml_call3(of_alist_reduce,alist,f,comparator[1]))},
               of_iteri$1=
                function(comparator,iteri)
                 {var z=of_iteri(iteri,comparator[1]);
                  if(17724 <= z[1])
                   {var tree_length=z[2];
                    return [0,17724,of_tree0(comparator,tree_length)]}
                  return z},
               of_increasing_iterator_uncheck$6=
                function(comparator,len,f)
                 {return of_tree0
                          (comparator,[0,of_increasing_iterator_uncheck$4(len,f),len])},
               of_increasing_sequence$1=
                function(comparator,seq)
                 {function _lc_(_ld_){return of_tree0(comparator,_ld_)}
                  return caml_call2
                          (map$3,of_increasing_sequence(seq,comparator[1]),_lc_)},
               of_sequence$2=
                function(comparator,seq)
                 {var z=caml_call2(of_sequence$0,seq,comparator[1]);
                  if(17724 <= z[1])
                   {var match=z[2],length=match[2],tree=match[1];
                    return [0,17724,[0,comparator,tree,length]]}
                  return z},
               of_sequence_or_error$1=
                function(comparator,seq)
                 {function _lb_(tree){return of_tree0(comparator,tree)}
                  return caml_call2
                          (map$3,caml_call2(of_sequence_or_error,seq,comparator),_lb_)},
               of_sequence_exn$1=
                function(comparator,seq)
                 {return of_tree0
                          (comparator,caml_call2(of_sequence_exn,seq,comparator))},
               of_sequence_multi$1=
                function(comparator,seq)
                 {return of_tree0
                          (comparator,of_sequence_multi(seq,comparator[1]))},
               of_sequence_fold$1=
                function(comparator,seq,init,f)
                 {return of_tree0
                          (comparator,
                           caml_call4(of_sequence_fold,seq,init,f,comparator[1]))},
               of_sequence_reduce$1=
                function(comparator,seq,f)
                 {return of_tree0
                          (comparator,
                           caml_call3(of_sequence_reduce,seq,f,comparator[1]))},
               t_of_sexp_direct$4=
                function(comparator,k_of_sexp,v_of_sexp,sexp)
                 {return of_tree0
                          (comparator,
                           t_of_sexp_direct$2(k_of_sexp,v_of_sexp,sexp,comparator))},
               Empty_without_value_restrictio$0=
                function(K)
                 {var empty=[0,K[1],empty_without_value_restrictio,0];
                  return [0,empty]},
               comparator_s$0=
                function(t){var comparator=t[1];return [0,comparator]},
               empty$8=function(m){return empty$7(m[1])},
               singleton$10=
                function(m,a)
                 {var _k$_=m[1];
                  return function(_la_){return singleton$9(_k$_,a,_la_)}},
               of_alist$2=function(m,a){return of_alist$1(m[1],a)},
               of_alist_or_error$2=
                function(m,a){return of_alist_or_error$1(m[1],a)},
               of_alist_exn$2=function(m,a){return of_alist_exn$1(m[1],a)},
               of_alist_multi$2=function(m,a){return of_alist_multi$1(m[1],a)},
               of_alist_fold$2=
                function(m,a,init,f){return of_alist_fold$1(m[1],a,init,f)},
               of_alist_reduce$2=
                function(m,a,f){return of_alist_reduce$1(m[1],a,f)},
               of_sorted_array_unchecked$7=
                function(m,a){return of_sorted_array_unchecked$6(m[1],a)},
               of_sorted_array$7=
                function(m,a){return of_sorted_array$6(m[1],a)},
               of_iteri$2=function(m,iteri){return of_iteri$1(m[1],iteri)},
               of_increasing_iterator_uncheck$7=
                function(m,len,f)
                 {return of_increasing_iterator_uncheck$6(m[1],len,f)},
               of_increasing_sequence$2=
                function(m,seq){return of_increasing_sequence$1(m[1],seq)},
               of_sequence$3=function(m,s){return of_sequence$2(m[1],s)},
               of_sequence_or_error$2=
                function(m,s){return of_sequence_or_error$1(m[1],s)},
               of_sequence_exn$2=
                function(m,s){return of_sequence_exn$1(m[1],s)},
               of_sequence_multi$2=
                function(m,s){return of_sequence_multi$1(m[1],s)},
               of_sequence_fold$2=
                function(m,s,init,f){return of_sequence_fold$1(m[1],s,init,f)},
               of_sequence_reduce$2=
                function(m,s,f){return of_sequence_reduce$1(m[1],s,f)},
               M$0=function(K){return [0]},
               sexp_of_m_t$0=
                function(K,sexp_of_v,t)
                 {function _k__(param){return _eG_}
                  return sexp_of_t$54(K[1],sexp_of_v,_k__,t)},
               m_t_of_sexp$0=
                function(K,v_of_sexp,sexp)
                 {return t_of_sexp_direct$4(K[2],K[1],v_of_sexp,sexp)},
               compare_m_t$0=
                function(K,compare_v,t1,t2)
                 {return compare_direct$1(compare_v,t1,t2)},
               equal_m_t$0=
                function(K,equal_v,t1,t2){return equal$40(equal_v,t1,t2)},
               hash_fold_m_t$0=
                function(K,hash_fold_v,state)
                 {var _k8_=K[1];
                  return function(_k9_)
                   {return hash_fold_direct$0(_k8_,hash_fold_v,state,_k9_)}},
               merge_skewed=
                function(t2,t1,combine)
                 {if(caml_call2(symbol$79,t1[3],t2[3]))
                   var combine$0=combine,t2$0=t1,t1$0=t2;
                  else
                   var
                    combine$1=
                     function(key,v1,v2){return caml_call3(combine,key,v2,v1)},
                    combine$0=combine$1,
                    t2$0=t2,
                    t1$0=t1;
                  return fold$13
                          (t2$0,
                           t1$0,
                           function(key,v2,t1)
                            {return change$0
                                     (t1,
                                      key,
                                      function(param)
                                       {if(param)
                                         {var v1=param[1];return [0,caml_call3(combine$0,key,v1,v2)]}
                                        return [0,v2]})})},
               comparator$15=Poly[1],
               of_tree$6=
                function(tree){return [0,comparator$15,tree,length$16(tree)]},
               include$59=Empty_without_value_restrictio$0(Poly),
               empty$9=include$59[1],
               singleton$11=
                function(a)
                 {return function(_k7_)
                   {return singleton$9(comparator$15,a,_k7_)}},
               of_alist$3=function(a){return of_alist$1(comparator$15,a)},
               of_alist_or_error$3=
                function(a){return of_alist_or_error$1(comparator$15,a)},
               of_alist_exn$3=
                function(a){return of_alist_exn$1(comparator$15,a)},
               of_alist_multi$3=
                function(a){return of_alist_multi$1(comparator$15,a)},
               of_alist_fold$3=
                function(a,init,f)
                 {return of_alist_fold$1(comparator$15,a,init,f)},
               of_alist_reduce$3=
                function(a,f){return of_alist_reduce$1(comparator$15,a,f)},
               of_sorted_array_unchecked$8=
                function(a)
                 {return of_sorted_array_unchecked$6(comparator$15,a)},
               of_sorted_array$8=
                function(a){return of_sorted_array$6(comparator$15,a)},
               of_iteri$3=
                function(iteri){return of_iteri$1(comparator$15,iteri)},
               of_increasing_iterator_uncheck$8=
                function(len,f)
                 {return of_increasing_iterator_uncheck$6(comparator$15,len,f)},
               of_increasing_sequence$3=
                function(seq)
                 {return of_increasing_sequence$1(comparator$15,seq)},
               of_sequence$4=
                function(s){return of_sequence$2(comparator$15,s)},
               of_sequence_or_error$3=
                function(s){return of_sequence_or_error$1(comparator$15,s)},
               of_sequence_exn$3=
                function(s){return of_sequence_exn$1(comparator$15,s)},
               of_sequence_multi$3=
                function(s){return of_sequence_multi$1(comparator$15,s)},
               of_sequence_fold$3=
                function(s,init,f)
                 {return of_sequence_fold$1(comparator$15,s,init,f)},
               of_sequence_reduce$3=
                function(s,f){return of_sequence_reduce$1(comparator$15,s,f)},
               Base_Map=
                [0,
                 Finished_or_unfinished,
                 invariants$3,
                 comparator_s$0,
                 comparator$14,
                 empty$8,
                 singleton$10,
                 of_alist$2,
                 of_alist_or_error$2,
                 of_alist_exn$2,
                 of_alist_multi$2,
                 of_alist_fold$2,
                 of_alist_reduce$2,
                 of_iteri$2,
                 of_sorted_array$7,
                 of_sorted_array_unchecked$7,
                 of_increasing_iterator_uncheck$7,
                 of_increasing_sequence$2,
                 of_sequence$3,
                 of_sequence_or_error$2,
                 of_sequence_exn$2,
                 of_sequence_multi$2,
                 of_sequence_fold$2,
                 of_sequence_reduce$2,
                 is_empty$10,
                 length$17,
                 set$6,
                 add$4,
                 add_exn$0,
                 add_multi$0,
                 remove_multi$0,
                 find_multi$0,
                 change$0,
                 update,
                 find$11,
                 find_exn$7,
                 remove$4,
                 mem$10,
                 iter_keys$0,
                 iter$16,
                 iteri$6,
                 iteri_until$0,
                 iter2$4,
                 map$31,
                 mapi$7,
                 fold$13,
                 fold_right$5,
                 fold2$2,
                 filter_keys$0,
                 filter$9,
                 filteri$4,
                 filter_map$9,
                 filter_mapi$4,
                 partition_mapi$0,
                 partition_map$1,
                 partitioni_tf$1,
                 partition_tf$5,
                 compare_direct$1,
                 hash_fold_direct$0,
                 equal$40,
                 keys$0,
                 data$0,
                 to_alist$0,
                 validate$0,
                 merge$4,
                 merge_skewed,
                 Symmetric_diff_element,
                 symmetric_diff$3,
                 fold_symmetric_diff$0,
                 min_elt$11,
                 min_elt_exn$3,
                 max_elt$11,
                 max_elt_exn$3,
                 for_all$10,
                 for_alli$5,
                 exists$11,
                 existsi$5,
                 count$10,
                 counti$5,
                 split$5,
                 append$3,
                 subrange,
                 fold_range_inclusive$0,
                 range_to_alist$0,
                 closest_key$0,
                 nth$6,
                 nth_exn$1,
                 rank$0,
                 to_sequence$4,
                 binary_search$5,
                 binary_search_segmented$5,
                 M$0,
                 sexp_of_m_t$0,
                 m_t_of_sexp$0,
                 compare_m_t$0,
                 equal_m_t$0,
                 hash_fold_m_t$0,
                 [0,
                  empty$9,
                  singleton$11,
                  of_alist$3,
                  of_alist_or_error$3,
                  of_alist_exn$3,
                  of_alist_multi$3,
                  of_alist_fold$3,
                  of_alist_reduce$3,
                  of_sorted_array$8,
                  of_sorted_array_unchecked$8,
                  of_increasing_iterator_uncheck$8,
                  of_increasing_sequence$3,
                  of_sequence$4,
                  of_sequence_or_error$3,
                  of_sequence_exn$3,
                  of_sequence_multi$3,
                  of_sequence_fold$3,
                  of_sequence_reduce$3,
                  of_iteri$3,
                  of_tree$6,
                  invariants$3,
                  is_empty$10,
                  length$17,
                  add$4,
                  add_exn$0,
                  set$6,
                  add_multi$0,
                  remove_multi$0,
                  find_multi$0,
                  change$0,
                  update,
                  find$11,
                  find_exn$7,
                  remove$4,
                  mem$10,
                  iter_keys$0,
                  iter$16,
                  iteri$6,
                  iteri_until$0,
                  iter2$4,
                  map$31,
                  mapi$7,
                  fold$13,
                  fold_right$5,
                  fold2$2,
                  filter_keys$0,
                  filter$9,
                  filteri$4,
                  filter_map$9,
                  filter_mapi$4,
                  partition_mapi$0,
                  partition_map$1,
                  partitioni_tf$1,
                  partition_tf$5,
                  compare_direct$1,
                  equal$40,
                  keys$0,
                  data$0,
                  to_alist$0,
                  validate$0,
                  merge$4,
                  symmetric_diff$3,
                  fold_symmetric_diff$0,
                  min_elt$11,
                  min_elt_exn$3,
                  max_elt$11,
                  max_elt_exn$3,
                  for_all$10,
                  for_alli$5,
                  exists$11,
                  existsi$5,
                  count$10,
                  counti$5,
                  split$5,
                  append$3,
                  subrange,
                  fold_range_inclusive$0,
                  range_to_alist$0,
                  closest_key$0,
                  nth$6,
                  nth_exn$1,
                  rank$0,
                  to_tree$2,
                  to_sequence$4,
                  binary_search$5,
                  binary_search_segmented$5],
                 [0,
                  sexp_of_t$54,
                  t_of_sexp_direct$4,
                  [0,
                   sexp_of_t$55,
                   t_of_sexp_direct$3,
                   empty$6,
                   singleton$8,
                   of_alist$0,
                   of_alist_or_error$0,
                   of_alist_exn$0,
                   of_alist_multi$0,
                   of_alist_fold$0,
                   of_alist_reduce$0,
                   of_sorted_array$5,
                   of_sorted_array_unchecked$5,
                   of_increasing_iterator_uncheck$5,
                   of_increasing_sequence$0,
                   of_sequence$1,
                   of_sequence_or_error$0,
                   of_sequence_exn$0,
                   of_sequence_multi$0,
                   of_sequence_fold$0,
                   of_sequence_reduce$0,
                   of_iteri$0,
                   of_tree$4,
                   invariants$4,
                   is_empty$11,
                   length$18,
                   add$5,
                   add_exn$1,
                   set$7,
                   add_multi$1,
                   remove_multi$1,
                   find_multi$1,
                   change$1,
                   update$0,
                   find$12,
                   find_exn$8,
                   remove$5,
                   mem$11,
                   iter_keys$1,
                   iter$17,
                   iteri$7,
                   iteri_until$1,
                   iter2$5,
                   map$32,
                   mapi$8,
                   fold$14,
                   fold_right$6,
                   fold2$3,
                   filter_keys$1,
                   filter$10,
                   filteri$5,
                   filter_map$10,
                   filter_mapi$5,
                   partition_mapi$1,
                   partition_map$2,
                   partitioni_tf$2,
                   partition_tf$6,
                   compare_direct$2,
                   equal$41,
                   keys$1,
                   data$1,
                   to_alist$1,
                   validate$1,
                   merge$5,
                   symmetric_diff$4,
                   fold_symmetric_diff$1,
                   min_elt$12,
                   min_elt_exn$4,
                   max_elt$12,
                   max_elt_exn$4,
                   for_all$11,
                   for_alli$6,
                   exists$12,
                   existsi$6,
                   count$11,
                   counti$6,
                   split$6,
                   append$4,
                   subrange$0,
                   fold_range_inclusive$1,
                   range_to_alist$1,
                   closest_key$1,
                   nth$7,
                   nth_exn$2,
                   rank$1,
                   to_tree$3,
                   to_sequence$5,
                   binary_search$6,
                   binary_search_segmented$6,
                   empty_without_value_restrictio],
                  invariants$3,
                  is_empty$10,
                  length$17,
                  add$4,
                  add_exn$0,
                  set$6,
                  add_multi$0,
                  remove_multi$0,
                  find_multi$0,
                  change$0,
                  update,
                  find$11,
                  find_exn$7,
                  remove$4,
                  mem$10,
                  iter_keys$0,
                  iter$16,
                  iteri$6,
                  iteri_until$0,
                  iter2$4,
                  map$31,
                  mapi$7,
                  fold$13,
                  fold_right$5,
                  fold2$2,
                  filter_keys$0,
                  filter$9,
                  filteri$4,
                  filter_map$9,
                  filter_mapi$4,
                  partition_mapi$0,
                  partition_map$1,
                  partitioni_tf$1,
                  partition_tf$5,
                  compare_direct$1,
                  equal$40,
                  keys$0,
                  data$0,
                  to_alist$0,
                  validate$0,
                  merge$4,
                  symmetric_diff$3,
                  fold_symmetric_diff$0,
                  min_elt$11,
                  min_elt_exn$3,
                  max_elt$11,
                  max_elt_exn$3,
                  for_all$10,
                  for_alli$5,
                  exists$11,
                  existsi$5,
                  count$10,
                  counti$5,
                  split$5,
                  append$3,
                  subrange,
                  fold_range_inclusive$0,
                  range_to_alist$0,
                  closest_key$0,
                  nth$6,
                  nth_exn$1,
                  rank$0,
                  to_tree$2,
                  to_sequence$4,
                  binary_search$5,
                  binary_search_segmented$5,
                  empty$7,
                  singleton$9,
                  of_alist$1,
                  of_alist_or_error$1,
                  of_alist_exn$1,
                  of_alist_multi$1,
                  of_alist_fold$1,
                  of_alist_reduce$1,
                  of_sorted_array$6,
                  of_sorted_array_unchecked$6,
                  of_increasing_iterator_uncheck$6,
                  of_increasing_sequence$1,
                  of_sequence$2,
                  of_sequence_or_error$1,
                  of_sequence_exn$1,
                  of_sequence_multi$1,
                  of_sequence_fold$1,
                  of_sequence_reduce$1,
                  of_iteri$1,
                  of_tree$5,
                  comparator$14,
                  hash_fold_direct$0,
                  Empty_without_value_restrictio$0]];
              caml_register_global(1076,Base_Map,"Base__Map");
              var
               create$14=Stdlib_queue[2],
               clear$2=Stdlib_queue[11],
               copy$6=Stdlib_queue[12],
               is_empty$12=Stdlib_queue[13],
               length$19=Stdlib_queue[14],
               peek_exn$0=Stdlib_queue[8],
               dequeue_exn$0=Stdlib_queue[7],
               push$0=Stdlib_queue[4],
               transfer=Stdlib_queue[17],
               iter$18=function(t,f){return caml_call2(Stdlib_queue[15],f,t)},
               fold$15=
                function(t,init,f)
                 {return caml_call3(Stdlib_queue[16],f,init,t)},
               include$60=
                [0,
                 create$14,
                 clear$2,
                 copy$6,
                 is_empty$12,
                 length$19,
                 peek_exn$0,
                 dequeue_exn$0,
                 push$0,
                 transfer,
                 iter$18,
                 fold$15];
              caml_register_global(1077,include$60,"Base__Linked_queue0");
              var
               enqueue$0=function(t,x){return caml_call2(push$0,x,t)},
               dequeue$0=
                function(t)
                 {return caml_call1(is_empty$12,t)
                          ?0
                          :[0,caml_call1(dequeue_exn$0,t)]},
               peek$0=
                function(t)
                 {return caml_call1(is_empty$12,t)
                          ?0
                          :[0,caml_call1(peek_exn$0,t)]},
               iter$19=[0,-198771759,iter$18],
               length$20=[0,-198771759,length$19],
               C$1=Make$2([0,fold$15,iter$19,length$20,-304398144,-304398144]),
               count$12=C$1[10],
               exists$13=C$1[8],
               find$13=C$1[12],
               find_map$9=C$1[13],
               fold_result$8=C$1[6],
               fold_until$9=C$1[7],
               for_all$12=C$1[9],
               max_elt$13=C$1[17],
               mem$12=C$1[1],
               min_elt$13=C$1[16],
               sum$9=C$1[11],
               to_list$11=C$1[14],
               counti$7=C$1[22],
               existsi$7=C$1[20],
               find_mapi$4=C$1[24],
               findi$4=C$1[23],
               foldi$7=C$1[18],
               for_alli$7=C$1[21],
               iteri$8=C$1[19],
               transfer$0=
                function(src,dst){return caml_call2(transfer,src,dst)},
               concat_map$4=
                function(t,f)
                 {var res=caml_call1(create$14,0);
                  iter$18
                   (t,
                    function(a)
                     {function _k6_(b){return enqueue$0(res,b)}
                      return iter$0(caml_call1(f,a),_k6_)});
                  return res},
               concat_mapi$3=
                function(t,f)
                 {var res=caml_call1(create$14,0);
                  caml_call2
                   (iteri$8,
                    t,
                    function(i,a)
                     {function _k5_(b){return enqueue$0(res,b)}
                      return iter$0(caml_call2(f,i,a),_k5_)});
                  return res},
               filter_map$11=
                function(t,f)
                 {var res=caml_call1(create$14,0);
                  iter$18
                   (t,
                    function(a)
                     {var match=caml_call1(f,a);
                      if(match){var b=match[1];return enqueue$0(res,b)}
                      return 0});
                  return res},
               filter_mapi$6=
                function(t,f)
                 {var res=caml_call1(create$14,0);
                  caml_call2
                   (iteri$8,
                    t,
                    function(i,a)
                     {var match=caml_call2(f,i,a);
                      if(match){var b=match[1];return enqueue$0(res,b)}
                      return 0});
                  return res},
               filter$11=
                function(t,f)
                 {var res=caml_call1(create$14,0);
                  iter$18
                   (t,
                    function(a)
                     {var _k4_=caml_call1(f,a);return _k4_?enqueue$0(res,a):_k4_});
                  return res},
               filteri$6=
                function(t,f)
                 {var res=caml_call1(create$14,0);
                  caml_call2
                   (iteri$8,
                    t,
                    function(i,a)
                     {var _k3_=caml_call2(f,i,a);
                      return _k3_?enqueue$0(res,a):_k3_});
                  return res},
               map$33=
                function(t,f)
                 {var res=caml_call1(create$14,0);
                  iter$18
                   (t,function(a){return enqueue$0(res,caml_call1(f,a))});
                  return res},
               mapi$9=
                function(t,f)
                 {var res=caml_call1(create$14,0);
                  caml_call2
                   (iteri$8,
                    t,
                    function(i,a){return enqueue$0(res,caml_call2(f,i,a))});
                  return res},
               filter_inplace$0=
                function(q,f)
                 {var q$0=filter$11(q,f);
                  caml_call1(clear$2,q);
                  return transfer$0(q$0,q)},
               filteri_inplace$0=
                function(q,f)
                 {var q$0=filteri$6(q,f);
                  caml_call1(clear$2,q);
                  return transfer$0(q$0,q)},
               enqueue_all$0=
                function(t,list)
                 {return iter$0(list,function(x){return enqueue$0(t,x)})},
               of_list$11=
                function(list)
                 {var t=caml_call1(create$14,0);
                  iter$0(list,function(x){return enqueue$0(t,x)});
                  return t},
               of_array$6=
                function(array)
                 {var t=caml_call1(create$14,0);
                  iter(array,function(x){return enqueue$0(t,x)});
                  return t},
               init$8=
                function(len,f)
                 {var t=caml_call1(create$14,0),_k1_=len - 1 | 0,_k0_=0;
                  if(! (_k1_ < 0))
                   {var i=_k0_;
                    for(;;)
                     {enqueue$0(t,caml_call1(f,i));
                      var _k2_=i + 1 | 0;
                      if(_k1_ !== i){var i=_k2_;continue}
                      break}}
                  return t},
               to_array$10=
                function(t)
                 {var len=caml_call1(length$19,t);
                  if(0 === len)return [0];
                  var
                   arr=caml_make_vect(len,caml_call1(peek_exn$0,t)),
                   i=[0,0];
                  iter$18
                   (t,
                    function(v)
                     {var _kZ_=i[1];
                      caml_check_bound(arr,_kZ_)[1 + _kZ_] = v;
                      return incr(i)});
                  return arr},
               t_of_sexp$33=
                function(a_of_sexp,sexp)
                 {return of_list$11(caml_call2(t_of_sexp$10,a_of_sexp,sexp))},
               sexp_of_t$56=
                function(sexp_of_a,t)
                 {return caml_call2
                          (sexp_of_t$10,sexp_of_a,caml_call1(to_list$11,t))},
               singleton$12=
                function(a)
                 {var t=caml_call1(create$14,0);enqueue$0(t,a);return t},
               Base_Linked_queue=
                [0,
                 t_of_sexp$33,
                 sexp_of_t$56,
                 mem$12,
                 length$19,
                 is_empty$12,
                 iter$18,
                 fold$15,
                 fold_result$8,
                 fold_until$9,
                 exists$13,
                 for_all$12,
                 count$12,
                 sum$9,
                 find$13,
                 find_map$9,
                 to_list$11,
                 to_array$10,
                 min_elt$13,
                 max_elt$13,
                 foldi$7,
                 iteri$8,
                 existsi$7,
                 for_alli$7,
                 counti$7,
                 findi$4,
                 find_mapi$4,
                 singleton$12,
                 of_list$11,
                 of_array$6,
                 init$8,
                 enqueue$0,
                 enqueue_all$0,
                 dequeue$0,
                 dequeue_exn$0,
                 peek$0,
                 peek_exn$0,
                 clear$2,
                 copy$6,
                 map$33,
                 mapi$9,
                 concat_map$4,
                 concat_mapi$3,
                 filter_map$11,
                 filter_mapi$6,
                 filter$11,
                 filteri$6,
                 filter_inplace$0,
                 filteri_inplace$0,
                 create$14,
                 transfer$0];
              caml_register_global
               (1078,Base_Linked_queue,"Base__Linked_queue");
              var
               func$11=function(x){return caml_call1(func$1,x)},
               compare$57=include$2[9],
               to_string$16=Stdlib_int64[14],
               of_string$15=caml_int64_of_string,
               include$61=_ap_([0,compare$57,sexp_of_t$7]),
               _eH_=include$61[1],
               float_lower_bound$1=lower_bound_for_int(64),
               float_upper_bound$1=upper_bound_for_int(64),
               float_of_bits=caml_int64_float_of_bits,
               bits_of_float=caml_int64_bits_of_float,
               lsr$1=caml_int64_shift_right_unsigne,
               asr$1=caml_int64_shift_right,
               lsl$1=caml_int64_shift_left,
               lnot$2=Stdlib_int64[11],
               lxor$1=caml_int64_xor,
               lor$1=caml_int64_or,
               land$1=caml_int64_and,
               min_value$4=Stdlib_int64[10],
               max_value$4=Stdlib_int64[9],
               abs$4=Stdlib_int64[8],
               pred$3=Stdlib_int64[7],
               succ$4=Stdlib_int64[6],
               pow$1=Private$2[2],
               rem$1=caml_int64_mod,
               neg$3=caml_int64_neg,
               minus_one$1=Stdlib_int64[3],
               one$1=Stdlib_int64[2],
               zero$3=Stdlib_int64[1],
               to_float$2=caml_int64_to_float,
               of_float_unchecked$1=caml_int64_of_float,
               num_bits$2=64,
               of_float$1=
                function(f)
                 {if
                   (caml_call2(include$7[6],f,float_lower_bound$1)
                    &&
                    caml_call2(include$7[2],f,float_upper_bound$1))
                   return caml_int64_of_float(f);
                  return caml_call2(invalid_argf(_eI_),f + 0.,0)},
               symbol$212=function(b,e){return caml_call2(pow$1,b,e)},
               include$62=_a2_([0,compare$57,sexp_of_t$7,zero$3]),
               validate_lbound$10=include$62[1],
               validate_ubound$10=include$62[2],
               validate_bound$10=include$62[3],
               validate_positive$1=include$62[4],
               validate_non_negative$1=include$62[5],
               validate_negative$1=include$62[6],
               validate_non_positive$1=include$62[7],
               is_positive$1=include$62[8],
               is_non_negative$1=include$62[9],
               is_negative$1=include$62[10],
               is_non_positive$1=include$62[11],
               sign$1=include$62[12],
               between$10=
                function(t,low,high)
                 {var _kY_=caml_call2(include$2[2],low,t);
                  return _kY_?caml_call2(include$2[2],t,high):_kY_},
               clamp_unchecked$4=
                function(t,min,max)
                 {return caml_call2(include$2[1],t,min)
                          ?min
                          :caml_call2(include$2[2],t,max)?t:max},
               clamp_exn$10=
                function(t,min,max)
                 {if(caml_call2(include$2[2],min,max))
                   return clamp_unchecked$4(t,min,max);
                  throw [0,Assert_failure,_eJ_]},
               clamp$10=
                function(t,min,max)
                 {if(caml_call2(include$2[5],min,max))
                   {var _kX_=[0,[0,cst_max$5,caml_call1(sexp_of_t$7,max)],0];
                    return error_s
                            (caml_call2
                              (message,
                               cst_clamp_requires_min_max$5,
                               [0,[0,cst_min$5,caml_call1(sexp_of_t$7,min)],_kX_]))}
                  return [0,clamp_unchecked$4(t,min,max)]},
               symbol$213=caml_int64_div,
               symbol$214=caml_int64_mul,
               symbol$215=caml_int64_sub,
               symbol$216=caml_int64_add,
               incr$2=function(r){r[1] = caml_int64_add(r[1],one$1);return 0},
               decr$2=function(r){r[1] = caml_int64_sub(r[1],one$1);return 0},
               of_int64=function(t){return t},
               to_int64=function(t){return t},
               non_positive_argument$1=
                function(param){return caml_call1(invalid_argf(_eK_),0)},
               ceil_pow2$1=
                function(x)
                 {if(caml_call2(include$2[2],x,Stdlib_int64[1]))
                   non_positive_argument$1(0);
                  var
                   x$0=caml_call1(Stdlib_int64[7],x),
                   x$1=caml_int64_or(x$0,caml_int64_shift_right_unsigne(x$0,1)),
                   x$2=caml_int64_or(x$1,caml_int64_shift_right_unsigne(x$1,2)),
                   x$3=caml_int64_or(x$2,caml_int64_shift_right_unsigne(x$2,4)),
                   x$4=caml_int64_or(x$3,caml_int64_shift_right_unsigne(x$3,8)),
                   x$5=
                    caml_int64_or(x$4,caml_int64_shift_right_unsigne(x$4,16)),
                   x$6=
                    caml_int64_or(x$5,caml_int64_shift_right_unsigne(x$5,32));
                  return caml_call1(Stdlib_int64[6],x$6)},
               floor_pow2$1=
                function(x)
                 {if(caml_call2(include$2[2],x,Stdlib_int64[1]))
                   non_positive_argument$1(0);
                  var
                   x$0=caml_int64_or(x,caml_int64_shift_right_unsigne(x,1)),
                   x$1=caml_int64_or(x$0,caml_int64_shift_right_unsigne(x$0,2)),
                   x$2=caml_int64_or(x$1,caml_int64_shift_right_unsigne(x$1,4)),
                   x$3=caml_int64_or(x$2,caml_int64_shift_right_unsigne(x$2,8)),
                   x$4=
                    caml_int64_or(x$3,caml_int64_shift_right_unsigne(x$3,16)),
                   x$5=
                    caml_int64_or(x$4,caml_int64_shift_right_unsigne(x$4,32));
                  return caml_int64_sub
                          (x$5,caml_int64_shift_right_unsigne(x$5,1))},
               is_pow2$1=
                function(x)
                 {if(caml_call2(include$2[2],x,Stdlib_int64[1]))
                   non_positive_argument$1(0);
                  var
                   _kV_=Stdlib_int64[1],
                   _kW_=caml_int64_and(x,caml_call1(Stdlib_int64[7],x));
                  return caml_call2(include$2[4],_kW_,_kV_)},
               floor_log2$1=
                function(i)
                 {if(caml_call2(include$2[2],i,Stdlib_int64[1]))
                   raise_s
                    (caml_call2
                      (message,
                       cst_Int64_floor_log2_got_inval,
                       [0,[0,cst$29,caml_call1(sexp_of_t$7,i)],0]));
                  return 63 - runtime.Base_int_math_int64_clz(i) | 0},
               ceil_log2$1=
                function(i)
                 {if(caml_lessequal(i,Stdlib_int64[1]))
                   raise_s
                    (caml_call2
                      (message,
                       cst_Int64_ceil_log2_got_invali,
                       [0,[0,cst$30,caml_call1(sexp_of_t$7,i)],0]));
                  return caml_call2(Stdlib_int64[17],i,Stdlib_int64[2])
                          ?0
                          :64
                           -
                           runtime.Base_int_math_int64_clz
                            (caml_call1(Stdlib_int64[7],i))
                           |
                           0},
               include$63=_cA_([0,to_string$16]),
               to_string_hum$3=include$63[1],
               sexp_of_int64=include$63[2],
               hash$15=function(x){return caml_call1(func$1,x)},
               symbol$217=include$2[1],
               to_string$17=function(i){return caml_call2(sprintf,_eL_,i)},
               of_string$16=
                function(s)
                 {function _kT_(_kU_){return _kU_}
                  return caml_call3(Stdlib_scanf[4],s,_eM_,_kT_)},
               include$64=
                _cz_
                 ([0,
                   compare$15,
                   hash_fold_t$1,
                   hash$15,
                   to_string$17,
                   of_string$16,
                   zero$3,
                   symbol$217,
                   neg$3,
                   module_name$12]),
               Hex$1=include$64[1],
               pp$13=_v_([0,module_name$13,to_string$16])[1],
               symbol$218=include$2[3],
               symbol$219=include$2[1],
               symbol$220=include$2[5],
               symbol$221=include$2[4],
               symbol$222=include$2[2],
               symbol$223=include$2[6],
               include$65=
                _cV_
                 ([0,
                   of_float$1,
                   to_float$2,
                   of_string$15,
                   to_string$16,
                   symbol$216,
                   symbol$215,
                   symbol$214,
                   symbol$213,
                   neg$3,
                   symbol$223,
                   symbol$222,
                   symbol$221,
                   symbol$220,
                   symbol$219,
                   symbol$218,
                   abs$4,
                   neg$3,
                   zero$3,
                   int_to_int64,
                   rem$1]),
               symbol$224=include$65[1],
               symbol$225=include$65[2],
               symbol$226=include$65[3],
               round$1=include$65[4],
               round_towards_zero$1=include$65[5],
               round_down$1=include$65[6],
               round_up$1=include$65[7],
               round_nearest$1=include$65[8],
               symbol$227=include$2[1],
               symbol$228=include$2[2],
               symbol$229=include$2[3],
               symbol$230=include$2[4],
               symbol$231=include$2[5],
               symbol$232=include$2[6],
               ascending$26=include$2[7],
               descending$26=include$2[8],
               compare_int64$0=include$2[9],
               equal_int64$1=include$2[10],
               max$31=include$2[11],
               min$31=include$2[12],
               Base_Int64=
                [0,
                 of_float$1,
                 to_float$2,
                 int_to_int64,
                 int64_to_int_exn,
                 hash_fold_t$1,
                 func$11,
                 t_of_sexp$7,
                 sexp_of_int64,
                 of_string$15,
                 to_string$16,
                 symbol$232,
                 symbol$228,
                 symbol$230,
                 symbol$231,
                 symbol$227,
                 symbol$229,
                 equal_int64$1,
                 compare_int64$0,
                 min$31,
                 max$31,
                 ascending$26,
                 descending$26,
                 between$10,
                 clamp_exn$10,
                 clamp$10,
                 _eH_,
                 validate_lbound$10,
                 validate_ubound$10,
                 validate_bound$10,
                 pp$13,
                 validate_positive$1,
                 validate_non_negative$1,
                 validate_negative$1,
                 validate_non_positive$1,
                 is_positive$1,
                 is_non_negative$1,
                 is_negative$1,
                 is_non_positive$1,
                 sign$1,
                 Hex$1,
                 to_string_hum$3,
                 zero$3,
                 one$1,
                 minus_one$1,
                 symbol$216,
                 symbol$215,
                 symbol$214,
                 symbol$212,
                 neg$3,
                 neg$3,
                 symbol$225,
                 symbol$224,
                 symbol$213,
                 rem$1,
                 symbol$226,
                 land$1,
                 lor$1,
                 lxor$1,
                 lnot$2,
                 lsl$1,
                 asr$1,
                 round$1,
                 round_towards_zero$1,
                 round_down$1,
                 round_up$1,
                 round_nearest$1,
                 abs$4,
                 succ$4,
                 pred$3,
                 pow$1,
                 land$1,
                 lor$1,
                 lxor$1,
                 lnot$2,
                 int64_popcount,
                 lsl$1,
                 asr$1,
                 decr$2,
                 incr$2,
                 int32_to_int64,
                 int64_to_int32_exn,
                 of_int64,
                 to_int64,
                 nativeint_to_int64,
                 to_nativeint_exn,
                 of_float_unchecked$1,
                 num_bits$2,
                 max_value$4,
                 min_value$4,
                 lsr$1,
                 lsr$1,
                 ceil_pow2$1,
                 floor_pow2$1,
                 ceil_log2$1,
                 floor_log2$1,
                 is_pow2$1,
                 [0,
                  symbol$216,
                  symbol$215,
                  symbol$214,
                  symbol$213,
                  neg$3,
                  symbol$212,
                  symbol$223,
                  symbol$222,
                  symbol$221,
                  symbol$220,
                  symbol$219,
                  symbol$218,
                  abs$4,
                  neg$3,
                  zero$3,
                  symbol$224,
                  symbol$225,
                  symbol$226,
                  land$1,
                  lor$1,
                  lxor$1,
                  lnot$2,
                  lsl$1,
                  asr$1,
                  lsr$1],
                 int_to_int64,
                 int64_to_int,
                 int32_to_int64,
                 int64_to_int32,
                 nativeint_to_int64,
                 to_nativeint,
                 of_int64,
                 int64_to_int_trunc,
                 int64_to_int32_trunc,
                 int64_to_nativeint_trunc,
                 bits_of_float,
                 float_of_bits];
              caml_register_global(1079,Base_Int64,"Base__Int64");
              var
               symbol$233=include$2[1],
               symbol$234=include$2[2],
               symbol$235=include$2[5],
               include$66=_ap_([0,compare$15,sexp_of_t$7]),
               comparator$16=include$66[1],
               wrap_exn=
                function(x)
                 {int64_fit_on_int63_exn(x);return caml_int64_mul(x,_eN_)},
               wrap_modulo=function(x){return caml_int64_mul(x,_eP_)},
               unwrap=function(x){return caml_int64_shift_right(x,1)},
               m=function(x){return caml_int64_and(x,mask$0)},
               symbol$236=caml_int64_add,
               symbol$237=caml_int64_sub,
               neg$4=caml_int64_neg,
               abs$5=function(x){return caml_call1(Stdlib_int64[8],x)},
               one$2=wrap_exn(_eR_),
               succ$5=function(a){return caml_int64_add(a,one$2)},
               pred$4=function(a){return caml_int64_sub(a,one$2)},
               min_value$5=m(Stdlib_int64[10]),
               max_value$5=m(Stdlib_int64[9]),
               lnot$3=function(x){return m(caml_call1(Stdlib_int64[11],x))},
               land$2=caml_int64_and,
               lxor$2=caml_int64_xor,
               lor$2=caml_int64_or,
               lsl$2=caml_int64_shift_left,
               asr$2=function(x,i){return m(caml_int64_shift_right(x,i))},
               lsr$2=
                function(x,i){return m(caml_int64_shift_right_unsigne(x,i))},
               _eS_=Private$2[3],
               pow$2=
                function(a,b)
                 {return caml_int64_mul
                          (caml_call2
                            (_eS_,
                             caml_int64_shift_right(a,1),
                             caml_int64_shift_right(b,1)),
                           _eQ_)},
               symbol$238=
                function(a,b)
                 {return caml_int64_mul(a,caml_int64_shift_right(b,1))},
               symbol$239=
                function(a,b){return wrap_modulo(caml_int64_div(a,b))},
               rem$2=caml_int64_mod,
               popcount$1=function(x){return int64_popcount(x)},
               to_int64$0=function(t){return caml_int64_shift_right(t,1)},
               of_int64$0=
                function(t)
                 {return int64_is_representable_as_int6(t)
                          ?[0,caml_int64_mul(t,_eO_)]
                          :0},
               of_int64_exn=function(t){return wrap_exn(t)},
               of_int64_trunc=function(t){return wrap_modulo(t)},
               t_of_sexp$34=
                function(x){return wrap_exn(caml_call1(t_of_sexp$7,x))},
               sexp_of_t$57=
                function(x)
                 {return caml_call1(sexp_of_t$7,caml_int64_shift_right(x,1))},
               compare$58=function(x,y){return caml_call2(compare$15,x,y)},
               is_pow2$2=
                function(x){return is_pow2$1(caml_int64_shift_right(x,1))},
               floor_pow2$2=
                function(x)
                 {return wrap_exn(floor_pow2$1(caml_int64_shift_right(x,1)))},
               ceil_pow2$2=
                function(x)
                 {return wrap_exn(floor_pow2$1(caml_int64_shift_right(x,1)))},
               floor_log2$2=
                function(x){return floor_log2$1(caml_int64_shift_right(x,1))},
               ceil_log2$2=
                function(x){return ceil_log2$1(caml_int64_shift_right(x,1))},
               func$12=
                function(x){return caml_call1(Stdlib_moreLabels[1][27],x)},
               invalid_str=
                function(x)
                 {return caml_call1(failwith$0,caml_call2(sprintf,_eT_,x))},
               sign_and_signedness=
                function(x)
                 {var len=caml_ml_string_length(x);
                  if(caml_call2(include$1[1],0,len))
                   {var
                     match=caml_string_get(x,0),
                     switcher=match - 43 | 0,
                     switch$0=0;
                    if(2 < switcher >>> 0)
                     switch$0 = 1;
                    else
                     {var switch$1=0;
                      switch(switcher)
                       {case 0:var _kS_=_eU_;break;
                        case 1:switch$0 = 1;switch$1 = 1;break;
                        default:var _kS_=_eV_}
                      if(! switch$1)var sign=_kS_[2],pos=_kS_[1]}
                    if(switch$0)var sign=4003188,pos=0}
                  else
                   var sign=4003188,pos=0;
                  if(caml_call2(include$1[1],pos + 2 | 0,len))
                   {var
                     c1=caml_string_get(x,pos),
                     match$0=caml_string_get(x,pos + 1 | 0);
                    if(48 === c1)
                     {var switcher$0=match$0 - 48 | 0;
                      return 9 < switcher$0 >>> 0?[0,sign,0]:[0,sign,1]}
                    return [0,sign,1]}
                  return [0,sign,1]},
               to_string$18=
                function(x)
                 {return caml_call1
                          (Stdlib_int64[14],caml_int64_shift_right(x,1))},
               of_string$17=
                function(str)
                 {try
                   {var
                     match=sign_and_signedness(str),
                     signedness=match[2],
                     sign=match[1];
                    if(signedness)
                     var _kQ_=of_int64_exn(caml_int64_of_string(str));
                    else
                     {var
                       pos_str=
                        4003188 <= sign
                         ?str
                         :sub$8(str,1,caml_ml_string_length(str) - 1 | 0),
                       int64=caml_int64_of_string(pos_str);
                      if(caml_call2(include$2[1],int64,_eW_))invalid_str(str);
                      var
                       int63=wrap_modulo(int64),
                       int63$0=4003188 <= sign?int63:caml_int64_neg(int63),
                       _kQ_=int63$0}
                    return _kQ_}
                  catch(_kR_){return invalid_str(str)}},
               float_lower_bound$2=lower_bound_for_int(63),
               float_upper_bound$2=upper_bound_for_int(63),
               minus_one$2=wrap_exn(Stdlib_int64[3]),
               one$3=wrap_exn(Stdlib_int64[2]),
               zero$4=wrap_exn(Stdlib_int64[1]),
               num_bits$3=63,
               to_float$3=
                function(x)
                 {return caml_int64_to_float(caml_int64_shift_right(x,1))},
               of_float_unchecked$2=
                function(x){return wrap_modulo(caml_int64_of_float(x))},
               of_float$2=
                function(t)
                 {if
                   (caml_call2(include$7[6],t,float_lower_bound$2)
                    &&
                    caml_call2(include$7[2],t,float_upper_bound$2))
                   return wrap_modulo(caml_int64_of_float(t));
                  return caml_call2(invalid_argf(_eX_),t + 0.,0)},
               _eY_=_a2_([0,compare$58,sexp_of_t$57,zero$4]),
               validate_lbound$11=_eY_[1],
               validate_ubound$11=_eY_[2],
               validate_bound$11=_eY_[3],
               validate_positive$2=_eY_[4],
               validate_non_negative$2=_eY_[5],
               validate_negative$2=_eY_[6],
               validate_non_positive$2=_eY_[7],
               is_positive$2=_eY_[8],
               is_non_negative$2=_eY_[9],
               is_negative$2=_eY_[10],
               is_non_positive$2=_eY_[11],
               sign$2=_eY_[12],
               between$11=
                function(t,low,high)
                 {var _kP_=caml_call2(symbol$234,low,t);
                  return _kP_?caml_call2(symbol$234,t,high):_kP_},
               clamp_unchecked$5=
                function(t,min,max)
                 {return caml_call2(symbol$233,t,min)
                          ?min
                          :caml_call2(symbol$234,t,max)?t:max},
               clamp_exn$11=
                function(t,min,max)
                 {if(caml_call2(symbol$234,min,max))
                   return clamp_unchecked$5(t,min,max);
                  throw [0,Assert_failure,_eZ_]},
               clamp$11=
                function(t,min,max)
                 {if(caml_call2(symbol$235,min,max))
                   {var _kO_=[0,[0,cst_max$6,sexp_of_t$57(max)],0];
                    return error_s
                            (caml_call2
                              (message,
                               cst_clamp_requires_min_max$6,
                               [0,[0,cst_min$6,sexp_of_t$57(min)],_kO_]))}
                  return [0,clamp_unchecked$5(t,min,max)]},
               symbol$240=function(b,e){return pow$2(b,e)},
               incr$3=function(r){r[1] = caml_int64_add(r[1],one$3);return 0},
               decr$3=function(r){r[1] = caml_int64_sub(r[1],one$3);return 0},
               of_int$5=function(x){return wrap_exn(caml_int64_of_int32(x))},
               of_int_exn$0=function(x){return of_int$5(x)},
               to_int$4=
                function(x){return int64_to_int(caml_int64_shift_right(x,1))},
               to_int_exn$1=
                function(x)
                 {return int64_to_int_exn(caml_int64_shift_right(x,1))},
               to_int_trunc=
                function(x)
                 {return caml_int64_to_int32(caml_int64_shift_right(x,1))},
               of_int32=function(x){return wrap_exn(caml_int64_of_int32(x))},
               of_int32_exn=function(x){return of_int32(x)},
               to_int32=
                function(x)
                 {return int64_to_int32(caml_int64_shift_right(x,1))},
               to_int32_exn=
                function(x)
                 {return int64_to_int32_exn(caml_int64_shift_right(x,1))},
               to_int32_trunc=
                function(x)
                 {return caml_int64_to_int32(caml_int64_shift_right(x,1))},
               of_nativeint$0=
                function(x){return of_int64$0(caml_int64_of_int32(x))},
               of_nativeint_exn=
                function(x){return wrap_exn(caml_int64_of_int32(x))},
               of_nativeint_trunc=
                function(x){return of_int64_trunc(caml_int64_of_int32(x))},
               to_nativeint$1=
                function(x){return to_nativeint(caml_int64_shift_right(x,1))},
               to_nativeint_exn$0=
                function(x)
                 {return to_nativeint_exn(caml_int64_shift_right(x,1))},
               to_nativeint_trunc=
                function(x)
                 {return caml_int64_to_int32(caml_int64_shift_right(x,1))},
               include$67=_cA_([0,to_string$18]),
               to_string_hum$4=include$67[1],
               sexp_of_t$58=include$67[2],
               hash$16=function(x){return func$12(x)},
               to_string$19=
                function(i)
                 {return caml_call2
                          (sprintf,_e0_,caml_int64_shift_right_unsigne(i,1))},
               of_string$18=
                function(s)
                 {return of_string$17(caml_call2(symbol$77,cst_0x$1,s))},
               include$68=
                _cz_
                 ([0,
                   compare$58,
                   hash_fold_t$1,
                   hash$16,
                   to_string$19,
                   of_string$18,
                   zero$4,
                   symbol$233,
                   neg$4,
                   module_name$14]),
               Hex$2=include$68[1],
               to_string$20=function(x){return to_string$18(x)},
               pp$14=_v_([0,module_name$15,to_string$20])[1],
               symbol$241=include$2[3],
               symbol$242=include$2[1],
               symbol$243=include$2[5],
               symbol$244=include$2[4],
               symbol$245=include$2[2],
               symbol$246=include$2[6],
               include$69=
                _cV_
                 ([0,
                   of_float$2,
                   to_float$3,
                   of_string$17,
                   to_string$18,
                   symbol$236,
                   symbol$237,
                   symbol$238,
                   symbol$239,
                   neg$4,
                   symbol$246,
                   symbol$245,
                   symbol$244,
                   symbol$243,
                   symbol$242,
                   symbol$241,
                   abs$5,
                   neg$4,
                   zero$4,
                   of_int_exn$0,
                   rem$2]),
               symbol$247=include$69[1],
               symbol$248=include$69[2],
               symbol$249=include$69[3],
               round$2=include$69[4],
               round_towards_zero$2=include$69[5],
               round_down$2=include$69[6],
               round_up$2=include$69[7],
               round_nearest$2=include$69[8],
               Repr=[0],
               symbol$250=include$2[1],
               symbol$251=include$2[2],
               symbol$252=include$2[3],
               symbol$253=include$2[4],
               symbol$254=include$2[5],
               symbol$255=include$2[6],
               ascending$27=include$2[7],
               descending$27=include$2[8],
               compare$59=include$2[9],
               equal$42=include$2[10],
               max$32=include$2[11],
               min$32=include$2[12],
               _e1_=
                [0,
                 symbol$236,
                 symbol$237,
                 symbol$238,
                 symbol$239,
                 neg$4,
                 symbol$240,
                 symbol$246,
                 symbol$245,
                 symbol$244,
                 symbol$243,
                 symbol$242,
                 symbol$241,
                 abs$5,
                 neg$4,
                 zero$4,
                 symbol$247,
                 symbol$248,
                 symbol$249,
                 land$2,
                 lor$2,
                 lxor$2,
                 lnot$3,
                 lsl$2,
                 asr$2,
                 lsr$2],
               Base_Int63_emul=
                [0,
                 of_float$2,
                 to_float$3,
                 of_int_exn$0,
                 to_int_exn$1,
                 hash_fold_t$1,
                 func$12,
                 t_of_sexp$34,
                 sexp_of_t$58,
                 of_string$17,
                 to_string$18,
                 symbol$255,
                 symbol$251,
                 symbol$253,
                 symbol$254,
                 symbol$250,
                 symbol$252,
                 equal$42,
                 compare$59,
                 min$32,
                 max$32,
                 ascending$27,
                 descending$27,
                 between$11,
                 clamp_exn$11,
                 clamp$11,
                 comparator$16,
                 validate_lbound$11,
                 validate_ubound$11,
                 validate_bound$11,
                 pp$14,
                 validate_positive$2,
                 validate_non_negative$2,
                 validate_negative$2,
                 validate_non_positive$2,
                 is_positive$2,
                 is_non_negative$2,
                 is_negative$2,
                 is_non_positive$2,
                 sign$2,
                 Hex$2,
                 to_string_hum$4,
                 zero$4,
                 one$3,
                 minus_one$2,
                 symbol$236,
                 symbol$237,
                 symbol$238,
                 symbol$240,
                 neg$4,
                 neg$4,
                 symbol$248,
                 symbol$247,
                 symbol$239,
                 rem$2,
                 symbol$249,
                 land$2,
                 lor$2,
                 lxor$2,
                 lnot$3,
                 lsl$2,
                 asr$2,
                 round$2,
                 round_towards_zero$2,
                 round_down$2,
                 round_up$2,
                 round_nearest$2,
                 abs$5,
                 succ$5,
                 pred$4,
                 pow$2,
                 land$2,
                 lor$2,
                 lxor$2,
                 lnot$3,
                 popcount$1,
                 lsl$2,
                 asr$2,
                 decr$3,
                 incr$3,
                 of_int32_exn,
                 to_int32_exn,
                 of_int64_exn,
                 to_int64$0,
                 of_nativeint_exn,
                 to_nativeint_exn$0,
                 of_float_unchecked$2,
                 num_bits$3,
                 max_value$5,
                 min_value$5,
                 lsr$2,
                 lsr$2,
                 ceil_pow2$2,
                 floor_pow2$2,
                 ceil_log2$2,
                 floor_log2$2,
                 is_pow2$2,
                 _e1_,
                 of_int$5,
                 to_int$4,
                 to_int_trunc,
                 of_int32,
                 to_int32,
                 to_int32_trunc,
                 of_int64$0,
                 of_int64_trunc,
                 of_nativeint$0,
                 to_nativeint$1,
                 of_nativeint_trunc,
                 to_nativeint_trunc,
                 [0,wrap_exn,unwrap],
                 Repr,
                 1];
              caml_register_global(1081,Base_Int63_emul,"Base__Int63_emul");
              var
               repr=1,
               hash$17=function(x){return caml_call1(func$5,x)},
               of_string$19=
                function(s)
                 {return caml_string_notequal(s,cst_false)
                          ?caml_string_notequal(s,cst_true)
                            ?caml_call2(invalid_argf(_e2_),s,0)
                            :1
                          :0},
               to_string$21=Caml$0[18],
               comparator$17=_ap_([0,compare$11,sexp_of_t$1])[1],
               include$70=Validate([0,compare$11,sexp_of_t$1]),
               validate_lbound$12=include$70[1],
               validate_ubound$12=include$70[2],
               validate_bound$12=include$70[3],
               include$71=_v_([0,module_name$16,to_string$21]),
               pp$15=include$71[1],
               between$12=
                function(t,low,high)
                 {var _kN_=caml_call2(include$4[2],low,t);
                  return _kN_?caml_call2(include$4[2],t,high):_kN_},
               clamp_unchecked$6=
                function(t,min,max)
                 {return caml_call2(include$4[1],t,min)
                          ?min
                          :caml_call2(include$4[2],t,max)?t:max},
               clamp_exn$12=
                function(t,min,max)
                 {if(caml_call2(include$4[2],min,max))
                   return clamp_unchecked$6(t,min,max);
                  throw [0,Assert_failure,_e3_]},
               clamp$12=
                function(t,min,max)
                 {if(caml_call2(include$4[5],min,max))
                   {var _kM_=[0,[0,cst_max$7,caml_call1(sexp_of_t$1,max)],0];
                    return error_s
                            (caml_call2
                              (message,
                               cst_clamp_requires_min_max$7,
                               [0,[0,cst_min$7,caml_call1(sexp_of_t$1,min)],_kM_]))}
                  return [0,clamp_unchecked$6(t,min,max)]},
               to_int$5=function(x){return x},
               symbol$256=function(a,b){return a | b},
               symbol$257=function(a,b){return a & b},
               symbol$258=include$4[1],
               symbol$259=include$4[2],
               symbol$260=include$4[3],
               symbol$261=include$4[4],
               symbol$262=include$4[5],
               symbol$263=include$4[6],
               ascending$28=include$4[7],
               descending$28=include$4[8],
               compare_bool$0=include$4[9],
               equal_bool$1=include$4[10],
               max$33=include$4[11],
               min$33=include$4[12],
               Base_Bool=
                [0,
                 all$18,
                 hash_fold_t$5,
                 hash$17,
                 t_of_sexp$1,
                 sexp_of_t$1,
                 of_string$19,
                 to_string$21,
                 symbol$263,
                 symbol$259,
                 symbol$261,
                 symbol$262,
                 symbol$258,
                 symbol$260,
                 equal_bool$1,
                 compare_bool$0,
                 min$33,
                 max$33,
                 ascending$28,
                 descending$28,
                 between$12,
                 clamp_exn$12,
                 clamp$12,
                 comparator$17,
                 validate_lbound$12,
                 validate_ubound$12,
                 validate_bound$12,
                 pp$15,
                 to_int$5,
                 [0,symbol$257,symbol$256]];
              caml_register_global(1082,Base_Bool,"Base__Bool");
              var
               func$13=function(x){return caml_call1(func$2,x)},
               compare_int32$0=
                function(x,y){return caml_call2(Stdlib_int32[15],x,y)},
               to_string$22=Stdlib_int32[14],
               of_string$20=caml_int_of_string,
               include$72=_ap_([0,compare_int32$0,sexp_of_t$6]),
               _e4_=include$72[1],
               float_lower_bound$3=lower_bound_for_int(32),
               float_upper_bound$3=upper_bound_for_int(32),
               float_of_bits$0=runtime.caml_int32_float_of_bits,
               bits_of_float$0=runtime.caml_int32_bits_of_float,
               num_bits$4=32,
               lsr$3=function(_kL_,_kK_){return _kL_ >>> _kK_ | 0},
               asr$3=function(_kJ_,_kI_){return _kJ_ >> _kI_},
               lsl$3=function(_kH_,_kG_){return _kH_ << _kG_},
               lnot$4=Stdlib_int32[11],
               lxor$3=function(_kF_,_kE_){return _kF_ ^ _kE_},
               lor$3=function(_kD_,_kC_){return _kD_ | _kC_},
               land$3=function(_kB_,_kA_){return _kB_ & _kA_},
               min_value$6=Stdlib_int32[10],
               max_value$6=Stdlib_int32[9],
               abs$6=Stdlib_int32[8],
               pred$5=Stdlib_int32[7],
               succ$6=Stdlib_int32[6],
               rem$3=caml_mod,
               neg$5=function(_kz_){return - _kz_ | 0},
               minus_one$3=Stdlib_int32[3],
               one$4=Stdlib_int32[2],
               zero$5=Stdlib_int32[1],
               to_float$4=function(_ky_){return _ky_},
               of_float_unchecked$3=function(_kx_){return _kx_ | 0},
               of_float$3=
                function(f)
                 {if
                   (caml_call2(include$7[6],f,float_lower_bound$3)
                    &&
                    caml_call2(include$7[2],f,float_upper_bound$3))
                   return f | 0;
                  return caml_call2(invalid_argf(_e5_),f + 0.,0)},
               include$73=_a2_([0,compare_int32$0,sexp_of_t$6,zero$5]),
               validate_lbound$13=include$73[1],
               validate_ubound$13=include$73[2],
               validate_bound$13=include$73[3],
               validate_positive$3=include$73[4],
               validate_non_negative$3=include$73[5],
               validate_negative$3=include$73[6],
               validate_non_positive$3=include$73[7],
               is_positive$3=include$73[8],
               is_non_negative$3=include$73[9],
               is_negative$3=include$73[10],
               is_non_positive$3=include$73[11],
               sign$3=include$73[12],
               symbol$264=caml_greaterequal,
               symbol$265=caml_lessequal,
               symbol$266=caml_equal,
               symbol$267=caml_greaterthan,
               symbol$268=caml_lessthan,
               symbol$269=caml_notequal,
               descending$29=function(x,y){return compare_int32$0(y,x)},
               min$34=function(x,y){return caml_lessthan(x,y)?x:y},
               max$34=function(x,y){return caml_greaterthan(x,y)?x:y},
               equal_int32$1=caml_equal,
               between$13=
                function(t,low,high)
                 {var _kw_=caml_lessequal(low,t);
                  return _kw_?caml_lessequal(t,high):_kw_},
               clamp_unchecked$7=
                function(t,min,max)
                 {return caml_lessthan(t,min)?min:caml_lessequal(t,max)?t:max},
               clamp_exn$13=
                function(t,min,max)
                 {if(caml_lessequal(min,max))
                   return clamp_unchecked$7(t,min,max);
                  throw [0,Assert_failure,_e6_]},
               clamp$13=
                function(t,min,max)
                 {if(caml_greaterthan(min,max))
                   {var _kv_=[0,[0,cst_max$8,caml_call1(sexp_of_t$6,max)],0];
                    return error_s
                            (caml_call2
                              (message,
                               cst_clamp_requires_min_max$8,
                               [0,[0,cst_min$8,caml_call1(sexp_of_t$6,min)],_kv_]))}
                  return [0,clamp_unchecked$7(t,min,max)]},
               symbol$270=caml_div,
               symbol$271=caml_mul,
               symbol$272=function(_ku_,_kt_){return _ku_ - _kt_ | 0},
               symbol$273=function(_ks_,_kr_){return _ks_ + _kr_ | 0},
               incr$4=function(r){r[1] = r[1] + one$4 | 0;return 0},
               decr$4=function(r){r[1] = r[1] - one$4 | 0;return 0},
               of_int32$0=function(t){return t},
               to_int32$0=function(t){return t},
               pow$3=
                function(b,e)
                 {var _kp_=int32_to_int_exn(e),_kq_=int32_to_int_exn(b);
                  return int_to_int32_exn(caml_call2(Private$2[1],_kq_,_kp_))},
               symbol$274=function(b,e){return pow$3(b,e)},
               non_positive_argument$2=
                function(param){return caml_call1(invalid_argf(_e7_),0)},
               ceil_pow2$3=
                function(x)
                 {if
                   (caml_call2
                     (Int32_replace_polymorphic_comp[2],x,Stdlib_int32[1]))
                   non_positive_argument$2(0);
                  var
                   x$0=caml_call1(Stdlib_int32[7],x),
                   x$1=x$0 | x$0 >>> 1 | 0,
                   x$2=x$1 | x$1 >>> 2 | 0,
                   x$3=x$2 | x$2 >>> 4 | 0,
                   x$4=x$3 | x$3 >>> 8 | 0,
                   x$5=x$4 | x$4 >>> 16 | 0;
                  return caml_call1(Stdlib_int32[6],x$5)},
               floor_pow2$3=
                function(x)
                 {if
                   (caml_call2
                     (Int32_replace_polymorphic_comp[2],x,Stdlib_int32[1]))
                   non_positive_argument$2(0);
                  var
                   x$0=x | x >>> 1 | 0,
                   x$1=x$0 | x$0 >>> 2 | 0,
                   x$2=x$1 | x$1 >>> 4 | 0,
                   x$3=x$2 | x$2 >>> 8 | 0,
                   x$4=x$3 | x$3 >>> 16 | 0;
                  return x$4 - (x$4 >>> 1 | 0) | 0},
               is_pow2$3=
                function(x)
                 {if
                   (caml_call2
                     (Int32_replace_polymorphic_comp[2],x,Stdlib_int32[1]))
                   non_positive_argument$2(0);
                  var
                   _kn_=Stdlib_int32[1],
                   _ko_=x & caml_call1(Stdlib_int32[7],x);
                  return caml_call2
                          (Int32_replace_polymorphic_comp[4],_ko_,_kn_)},
               floor_log2$3=
                function(i)
                 {if
                   (caml_call2
                     (Int32_replace_polymorphic_comp[2],i,Stdlib_int32[1]))
                   raise_s
                    (caml_call2
                      (message,
                       cst_Int32_floor_log2_got_inval,
                       [0,[0,cst$31,caml_call1(sexp_of_t$6,i)],0]));
                  return 31 - runtime.Base_int_math_int32_clz(i) | 0},
               ceil_log2$3=
                function(i)
                 {if
                   (caml_call2
                     (Int32_replace_polymorphic_comp[2],i,Stdlib_int32[1]))
                   raise_s
                    (caml_call2
                      (message,
                       cst_Int32_ceil_log2_got_invali,
                       [0,[0,cst$32,caml_call1(sexp_of_t$6,i)],0]));
                  return caml_call2(Stdlib_int32[17],i,Stdlib_int32[2])
                          ?0
                          :32
                           -
                           runtime.Base_int_math_int32_clz
                            (caml_call1(Stdlib_int32[7],i))
                           |
                           0},
               include$74=_cA_([0,to_string$22]),
               to_string_hum$5=include$74[1],
               sexp_of_int32=include$74[2],
               hash$18=function(x){return caml_call1(func$2,x)},
               to_string$23=function(i){return caml_call2(sprintf,_e8_,i)},
               of_string$21=
                function(s)
                 {function _kl_(_km_){return _km_}
                  return caml_call3(Stdlib_scanf[4],s,_e9_,_kl_)},
               include$75=
                _cz_
                 ([0,
                   compare$14,
                   hash_fold_t$2,
                   hash$18,
                   to_string$23,
                   of_string$21,
                   zero$5,
                   symbol$268,
                   neg$5,
                   module_name$17]),
               Hex$3=include$75[1],
               pp$16=_v_([0,module_name$18,to_string$22])[1],
               include$76=
                _cV_
                 ([0,
                   of_float$3,
                   to_float$4,
                   of_string$20,
                   to_string$22,
                   symbol$273,
                   symbol$272,
                   symbol$271,
                   symbol$270,
                   neg$5,
                   symbol$264,
                   symbol$265,
                   symbol$266,
                   symbol$267,
                   symbol$268,
                   symbol$269,
                   abs$6,
                   neg$5,
                   zero$5,
                   int_to_int32_exn,
                   rem$3]),
               symbol$275=include$76[1],
               symbol$276=include$76[2],
               symbol$277=include$76[3],
               round$3=include$76[4],
               round_towards_zero$3=include$76[5],
               round_down$3=include$76[6],
               round_up$3=include$76[7],
               round_nearest$3=include$76[8],
               Base_Int32=
                [0,
                 of_float$3,
                 to_float$4,
                 int_to_int32_exn,
                 int32_to_int_exn,
                 hash_fold_t$2,
                 func$13,
                 t_of_sexp$6,
                 sexp_of_int32,
                 of_string$20,
                 to_string$22,
                 symbol$264,
                 symbol$265,
                 symbol$266,
                 symbol$267,
                 symbol$268,
                 symbol$269,
                 equal_int32$1,
                 compare_int32$0,
                 min$34,
                 max$34,
                 compare_int32$0,
                 descending$29,
                 between$13,
                 clamp_exn$13,
                 clamp$13,
                 _e4_,
                 validate_lbound$13,
                 validate_ubound$13,
                 validate_bound$13,
                 pp$16,
                 validate_positive$3,
                 validate_non_negative$3,
                 validate_negative$3,
                 validate_non_positive$3,
                 is_positive$3,
                 is_non_negative$3,
                 is_negative$3,
                 is_non_positive$3,
                 sign$3,
                 Hex$3,
                 to_string_hum$5,
                 zero$5,
                 one$4,
                 minus_one$3,
                 symbol$273,
                 symbol$272,
                 symbol$271,
                 symbol$274,
                 neg$5,
                 neg$5,
                 symbol$276,
                 symbol$275,
                 symbol$270,
                 rem$3,
                 symbol$277,
                 land$3,
                 lor$3,
                 lxor$3,
                 lnot$4,
                 lsl$3,
                 asr$3,
                 round$3,
                 round_towards_zero$3,
                 round_down$3,
                 round_up$3,
                 round_nearest$3,
                 abs$6,
                 succ$6,
                 pred$5,
                 pow$3,
                 land$3,
                 lor$3,
                 lxor$3,
                 lnot$4,
                 int32_popcount,
                 lsl$3,
                 asr$3,
                 decr$4,
                 incr$4,
                 of_int32$0,
                 to_int32$0,
                 int64_to_int32_exn,
                 int32_to_int64,
                 nativeint_to_int32_exn,
                 int32_to_nativeint,
                 of_float_unchecked$3,
                 num_bits$4,
                 max_value$6,
                 min_value$6,
                 lsr$3,
                 lsr$3,
                 ceil_pow2$3,
                 floor_pow2$3,
                 ceil_log2$3,
                 floor_log2$3,
                 is_pow2$3,
                 [0,
                  symbol$273,
                  symbol$272,
                  symbol$271,
                  symbol$270,
                  neg$5,
                  symbol$274,
                  symbol$264,
                  symbol$265,
                  symbol$266,
                  symbol$267,
                  symbol$268,
                  symbol$269,
                  abs$6,
                  neg$5,
                  zero$5,
                  symbol$275,
                  symbol$276,
                  symbol$277,
                  land$3,
                  lor$3,
                  lxor$3,
                  lnot$4,
                  lsl$3,
                  asr$3,
                  lsr$3],
                 int_to_int32,
                 int32_to_int,
                 of_int32$0,
                 to_int32$0,
                 nativeint_to_int32,
                 int32_to_nativeint,
                 int64_to_int32,
                 int_to_int32_trunc,
                 int32_to_int_trunc,
                 nativeint_to_int32_trunc,
                 int64_to_int32_trunc,
                 bits_of_float$0,
                 float_of_bits$0];
              caml_register_global(1083,Base_Int32,"Base__Int32");
              var
               repr$0=word_size?0:1,
               to_int$6=function(x){return [0,x]},
               to_int_trunc$0=function(x){return x},
               to_nativeint_trunc$0=function(x){return x},
               to_nativeint$2=function(x){return [0,x]},
               repr$1=0,
               include$77=
                repr$0
                 ?[0,
                   of_float$2,
                   to_float$3,
                   of_int_exn$0,
                   to_int_exn$1,
                   hash_fold_t$1,
                   func$12,
                   t_of_sexp$34,
                   sexp_of_t$58,
                   of_string$17,
                   to_string$18,
                   symbol$255,
                   symbol$251,
                   symbol$253,
                   symbol$254,
                   symbol$250,
                   symbol$252,
                   equal$42,
                   compare$59,
                   min$32,
                   max$32,
                   ascending$27,
                   descending$27,
                   between$11,
                   clamp_exn$11,
                   clamp$11,
                   comparator$16,
                   validate_lbound$11,
                   validate_ubound$11,
                   validate_bound$11,
                   pp$14,
                   validate_positive$2,
                   validate_non_negative$2,
                   validate_negative$2,
                   validate_non_positive$2,
                   is_positive$2,
                   is_non_negative$2,
                   is_negative$2,
                   is_non_positive$2,
                   sign$2,
                   Hex$2,
                   to_string_hum$4,
                   zero$4,
                   one$3,
                   minus_one$2,
                   symbol$236,
                   symbol$237,
                   symbol$238,
                   symbol$240,
                   neg$4,
                   neg$4,
                   symbol$248,
                   symbol$247,
                   symbol$239,
                   rem$2,
                   symbol$249,
                   land$2,
                   lor$2,
                   lxor$2,
                   lnot$3,
                   lsl$2,
                   asr$2,
                   round$2,
                   round_towards_zero$2,
                   round_down$2,
                   round_up$2,
                   round_nearest$2,
                   abs$5,
                   succ$5,
                   pred$4,
                   pow$2,
                   land$2,
                   lor$2,
                   lxor$2,
                   lnot$3,
                   popcount$1,
                   lsl$2,
                   asr$2,
                   decr$3,
                   incr$3,
                   of_int32_exn,
                   to_int32_exn,
                   of_int64_exn,
                   to_int64$0,
                   of_nativeint_exn,
                   to_nativeint_exn$0,
                   num_bits$3,
                   max_value$5,
                   min_value$5,
                   lsr$2,
                   lsr$2,
                   ceil_pow2$2,
                   floor_pow2$2,
                   ceil_log2$2,
                   floor_log2$2,
                   is_pow2$2,
                   _e1_,
                   of_int$5,
                   to_int$4,
                   to_int_trunc,
                   of_int32,
                   to_int32,
                   to_int32_trunc,
                   of_int64$0,
                   of_int64_trunc,
                   of_nativeint$0,
                   to_nativeint$1,
                   of_nativeint_trunc,
                   to_nativeint_trunc,
                   of_float_unchecked$2,
                   repr]
                 :[0,
                   to_int$3,
                   of_int$2,
                   of_int$3,
                   to_int_exn,
                   hash_fold_t$4,
                   func$9,
                   t_of_sexp$4,
                   sexp_of_t$35,
                   of_string$9,
                   to_string,
                   symbol$171,
                   symbol$167,
                   symbol$169,
                   symbol$170,
                   symbol$166,
                   symbol$168,
                   equal$26,
                   compare$43,
                   min$26,
                   max$26,
                   ascending$21,
                   descending$21,
                   between$5,
                   clamp_exn$5,
                   clamp$5,
                   comparator$7,
                   validate_lbound$5,
                   validate_ubound$5,
                   validate_bound$5,
                   pp$11,
                   validate_positive,
                   validate_non_negative,
                   validate_negative,
                   validate_non_positive,
                   is_positive,
                   is_non_negative,
                   is_negative,
                   is_non_positive,
                   sign,
                   Hex,
                   to_string_hum$1,
                   zero,
                   one,
                   minus_one,
                   symbol$151,
                   symbol$152,
                   symbol$153,
                   symbol$156,
                   symbol$155,
                   symbol$155,
                   symbol$164,
                   symbol$163,
                   symbol$154,
                   rem,
                   symbol$165,
                   land,
                   lor,
                   lxor,
                   lnot$0,
                   lsl,
                   asr,
                   round,
                   round_towards_zero,
                   round_down,
                   round_up,
                   round_nearest,
                   abs$2,
                   succ$2,
                   pred$1,
                   pow,
                   bit_and,
                   bit_or,
                   bit_xor,
                   bit_not,
                   popcount$0,
                   shift_left,
                   shift_right$0,
                   decr$0,
                   incr$0,
                   int32_to_int_exn,
                   int_to_int32_exn,
                   int64_to_int_exn,
                   int_to_int64,
                   nativeint_to_int_exn,
                   int_to_nativeint,
                   num_bits,
                   max_value$2,
                   min_value$2,
                   lsr,
                   shift_right_logical,
                   ceil_pow2,
                   floor_pow2,
                   ceil_log2,
                   floor_log2,
                   is_pow2,
                   O$0,
                   of_int$3,
                   to_int$6,
                   to_int_trunc$0,
                   int32_to_int_exn,
                   int_to_int32,
                   int_to_int32_trunc,
                   int64_to_int,
                   int64_to_int_trunc,
                   nativeint_to_int,
                   to_nativeint$2,
                   nativeint_to_int_trunc,
                   to_nativeint_trunc$0,
                   of_float_unchecked,
                   repr$1],
               of_float$4=include$77[1],
               to_float$5=include$77[2],
               of_int_exn$1=include$77[3],
               to_int_exn$2=include$77[4],
               hash_fold_t$25=include$77[5],
               hash$19=include$77[6],
               t_of_sexp$35=include$77[7],
               sexp_of_t$59=include$77[8],
               of_string$22=include$77[9],
               to_string$24=include$77[10],
               symbol$278=include$77[11],
               symbol$279=include$77[12],
               symbol$280=include$77[13],
               symbol$281=include$77[14],
               symbol$282=include$77[15],
               symbol$283=include$77[16],
               equal$43=include$77[17],
               compare$60=include$77[18],
               min$35=include$77[19],
               max$35=include$77[20],
               ascending$29=include$77[21],
               descending$30=include$77[22],
               between$14=include$77[23],
               clamp_exn$14=include$77[24],
               clamp$14=include$77[25],
               comparator$18=include$77[26],
               validate_lbound$14=include$77[27],
               validate_ubound$14=include$77[28],
               validate_bound$14=include$77[29],
               pp$17=include$77[30],
               validate_positive$4=include$77[31],
               validate_non_negative$4=include$77[32],
               validate_negative$4=include$77[33],
               validate_non_positive$4=include$77[34],
               is_positive$4=include$77[35],
               is_non_negative$4=include$77[36],
               is_negative$4=include$77[37],
               is_non_positive$4=include$77[38],
               sign$4=include$77[39],
               Hex$4=include$77[40],
               to_string_hum$6=include$77[41],
               zero$6=include$77[42],
               one$5=include$77[43],
               minus_one$4=include$77[44],
               _e__=include$77[45],
               _e$_=include$77[46],
               symbol$284=include$77[47],
               symbol$285=include$77[48],
               _fa_=include$77[49],
               symbol$286=include$77[50],
               symbol$287=include$77[51],
               symbol$288=include$77[52],
               symbol$289=include$77[53],
               rem$4=include$77[54],
               symbol$290=include$77[55],
               land$4=include$77[56],
               lor$4=include$77[57],
               lxor$4=include$77[58],
               lnot$5=include$77[59],
               lsl$4=include$77[60],
               asr$4=include$77[61],
               round$4=include$77[62],
               round_towards_zero$4=include$77[63],
               round_down$4=include$77[64],
               round_up$4=include$77[65],
               round_nearest$4=include$77[66],
               _fb_=include$77[67],
               succ$7=include$77[68],
               pred$6=include$77[69],
               pow$4=include$77[70],
               bit_and$0=include$77[71],
               bit_or$0=include$77[72],
               bit_xor$0=include$77[73],
               bit_not$0=include$77[74],
               popcount$2=include$77[75],
               shift_left$0=include$77[76],
               shift_right$1=include$77[77],
               decr$5=include$77[78],
               incr$5=include$77[79],
               of_int32_exn$0=include$77[80],
               to_int32_exn$0=include$77[81],
               of_int64_exn$0=include$77[82],
               to_int64$1=include$77[83],
               of_nativeint_exn$0=include$77[84],
               to_nativeint_exn$1=include$77[85],
               num_bits$5=include$77[86],
               max_value$7=include$77[87],
               min_value$7=include$77[88],
               lsr$4=include$77[89],
               shift_right_logical$0=include$77[90],
               ceil_pow2$4=include$77[91],
               floor_pow2$4=include$77[92],
               ceil_log2$4=include$77[93],
               is_pow2$4=include$77[95],
               O$1=include$77[96],
               of_int$6=include$77[97],
               to_int$7=include$77[98],
               to_int_trunc$1=include$77[99],
               of_int32$1=include$77[100],
               to_int32$1=include$77[101],
               to_int32_trunc$0=include$77[102],
               of_int64$1=include$77[103],
               of_int64_trunc$0=include$77[104],
               of_nativeint$1=include$77[105],
               to_nativeint$3=include$77[106],
               of_nativeint_trunc$0=include$77[107],
               to_nativeint_trunc$1=include$77[108],
               of_float_unchecked$4=include$77[109],
               repr$2=include$77[110],
               symbol$291=
                function(t,u)
                 {var sum=_e__(t,u),_ki_=bit_xor$0(t,bit_not$0(sum));
                  if
                   (caml_call2(symbol$282,bit_or$0(bit_xor$0(t,u),_ki_),zero$6))
                   return sum;
                  var
                   _kj_=[0,[0,cst_sum,caml_call1(sexp_of_t$59,sum)],0],
                   _kk_=[0,[0,cst_u,caml_call1(sexp_of_t$59,u)],_kj_];
                  return raise_s
                          (caml_call2
                            (message,
                             cst_overflow,
                             [0,[0,cst_t,caml_call1(sexp_of_t$59,t)],_kk_]))},
               symbol$292=
                function(t,u)
                 {var diff=_e$_(t,u),pos_diff=caml_call2(symbol$281,t,u);
                  if
                   (caml_call2(symbol$283,t,u)
                    &&
                    caml_call2
                     (symbol$260,pos_diff,caml_call1(is_positive$4,diff)))
                   {var
                     _kg_=[0,[0,cst_diff,caml_call1(sexp_of_t$59,diff)],0],
                     _kh_=[0,[0,cst_u$0,caml_call1(sexp_of_t$59,u)],_kg_];
                    return raise_s
                            (caml_call2
                              (message,
                               cst_overflow$0,
                               [0,[0,cst_t$0,caml_call1(sexp_of_t$59,t)],_kh_]))}
                  return diff},
               abs$7=
                function(t)
                 {return caml_call2(symbol$280,t,min_value$7)
                          ?caml_call1(failwith$0,cst_abs_overflow)
                          :_fb_(t)},
               neg$6=
                function(t)
                 {return caml_call2(symbol$280,t,min_value$7)
                          ?caml_call1(failwith$0,cst_neg_overflow)
                          :_fa_(t)},
               Overflow_exn=[0,symbol$291,symbol$292,abs$7,neg$6];
              if(caml_call2(symbol$169,num_bits$5,63))
               {var
                 random_of_int=
                  function(opt,bound)
                   {if(opt)var sth=opt[1],state=sth;else var state=_R_[1];
                    var _kf_=to_int_exn$2(bound);
                    return of_int$6(caml_call2(_R_[6],state,_kf_))},
                 random_of_int64=
                  function(opt,bound)
                   {if(opt)var sth=opt[1],state=sth;else var state=_R_[1];
                    var _ke_=to_int64$1(bound);
                    return of_int64_exn$0(caml_call2(_R_[9],state,_ke_))},
                 random_of_int$0=word_size?random_of_int:random_of_int64,
                 random_incl_of_int=
                  function(opt,lo,hi)
                   {if(opt)var sth=opt[1],state=sth;else var state=_R_[1];
                    var _kc_=to_int_exn$2(hi),_kd_=to_int_exn$2(lo);
                    return of_int$6(caml_call3(_R_[11],state,_kd_,_kc_))},
                 random_incl_of_int64=
                  function(opt,lo,hi)
                   {if(opt)var sth=opt[1],state=sth;else var state=_R_[1];
                    var _ka_=to_int64$1(hi),_kb_=to_int64$1(lo);
                    return of_int64_exn$0(caml_call3(_R_[14],state,_kb_,_ka_))},
                 random_incl=word_size?random_incl_of_int:random_incl_of_int64,
                 floor_log2$4=
                  function(t)
                   {if(word_size)return floor_log2(to_int_exn$2(t));
                    if(caml_call2(symbol$279,t,zero$6))
                     raise_s
                      (caml_call2
                        (message,
                         cst_Int_floor_log2_got_invalid$0,
                         [0,[0,cst$33,caml_call1(sexp_of_t$59,t)],0]));
                    var floor_log2$0=[0,num_bits$5 - 2 | 0];
                    for(;;)
                     {if
                       (caml_call2
                         (equal$43,
                          zero$6,
                          bit_and$0(t,shift_left$0(one$5,floor_log2$0[1]))))
                       {floor_log2$0[1] = floor_log2$0[1] - 1 | 0;continue}
                      return floor_log2$0[1]}},
                 Base_Int63=
                  [0,
                   of_float$4,
                   to_float$5,
                   of_int_exn$1,
                   to_int_exn$2,
                   hash_fold_t$25,
                   hash$19,
                   t_of_sexp$35,
                   sexp_of_t$59,
                   of_string$22,
                   to_string$24,
                   symbol$278,
                   symbol$279,
                   symbol$280,
                   symbol$281,
                   symbol$282,
                   symbol$283,
                   equal$43,
                   compare$60,
                   min$35,
                   max$35,
                   ascending$29,
                   descending$30,
                   between$14,
                   clamp_exn$14,
                   clamp$14,
                   comparator$18,
                   validate_lbound$14,
                   validate_ubound$14,
                   validate_bound$14,
                   pp$17,
                   validate_positive$4,
                   validate_non_negative$4,
                   validate_negative$4,
                   validate_non_positive$4,
                   is_positive$4,
                   is_non_negative$4,
                   is_negative$4,
                   is_non_positive$4,
                   sign$4,
                   Hex$4,
                   to_string_hum$6,
                   zero$6,
                   one$5,
                   minus_one$4,
                   _e__,
                   _e$_,
                   symbol$284,
                   symbol$285,
                   _fa_,
                   symbol$286,
                   symbol$287,
                   symbol$288,
                   symbol$289,
                   rem$4,
                   symbol$290,
                   land$4,
                   lor$4,
                   lxor$4,
                   lnot$5,
                   lsl$4,
                   asr$4,
                   round$4,
                   round_towards_zero$4,
                   round_down$4,
                   round_up$4,
                   round_nearest$4,
                   _fb_,
                   succ$7,
                   pred$6,
                   pow$4,
                   bit_and$0,
                   bit_or$0,
                   bit_xor$0,
                   bit_not$0,
                   popcount$2,
                   shift_left$0,
                   shift_right$1,
                   decr$5,
                   incr$5,
                   of_int32_exn$0,
                   to_int32_exn$0,
                   of_int64_exn$0,
                   to_int64$1,
                   of_nativeint_exn$0,
                   to_nativeint_exn$1,
                   of_float_unchecked$4,
                   num_bits$5,
                   max_value$7,
                   min_value$7,
                   lsr$4,
                   shift_right_logical$0,
                   ceil_pow2$4,
                   floor_pow2$4,
                   ceil_log2$4,
                   is_pow2$4,
                   O$1,
                   Overflow_exn,
                   of_int$6,
                   to_int$7,
                   of_int32$1,
                   to_int32$1,
                   of_int64$1,
                   of_nativeint$1,
                   to_nativeint$3,
                   to_int_trunc$1,
                   to_int32_trunc$0,
                   of_int64_trunc$0,
                   of_nativeint_trunc$0,
                   to_nativeint_trunc$1,
                   random_of_int$0,
                   random_incl,
                   floor_log2$4,
                   [0,Repr,repr$2]];
                caml_register_global(1084,Base_Int63,"Base__Int63");
                var
                 equal$44=
                  function(a,b)
                   {var _j8_=a === b?1:0;
                    if(_j8_)
                     var _j9_=_j8_;
                    else
                     {var _j__=a[1] === b[1]?1:0;
                      if(_j__)
                       {var _j$_=a[2] === b[2]?1:0;
                        if(_j$_)return a[3] === b[3]?1:0;
                        var _j9_=_j$_}
                      else
                       var _j9_=_j__}
                    return _j9_},
                 hash_param=Stdlib_moreLabels[1][29],
                 hash$20=Stdlib_moreLabels[1][27],
                 poly=[0,hash$20,caml_compare,function(param){return _fc_}],
                 of_key=function(Key){return [0,Key[3],Key[1],Key[2]]},
                 to_key=
                  function(param)
                   {var sexp_of_t=param[3],compare=param[2],hash=param[1];
                    return [0,compare,sexp_of_t,hash]},
                 Hashable=[0,equal$44,hash_param,hash$20,poly,of_key,to_key],
                 equal$45=Hashable[1],
                 hash_param$0=Hashable[2],
                 hash$21=Hashable[3],
                 hashable=Hashable[4],
                 of_key$0=Hashable[5],
                 to_key$0=Hashable[6],
                 include$78=
                  [0,
                   Hashable,
                   equal$45,
                   hash_param$0,
                   hash$21,
                   hashable,
                   of_key$0,
                   to_key$0];
                caml_register_global(1085,include$78,"Base__Hashable_intf");
                var
                 Base_Hashable=
                  [0,equal$45,hashable,of_key$0,to_key$0,hash_param$0,hash$21];
                caml_register_global(1086,Base_Hashable,"Base__Hashable");
                var Key=[0],Base_Hashtbl_intf=[0,Key];
                caml_register_global
                 (1087,Base_Hashtbl_intf,"Base__Hashtbl_intf");
                var
                 max$36=function(x,y){return caml_call2(symbol$82,x,y)?x:y},
                 empty$10=0,
                 is_empty$13=
                  function(param){return typeof param === "number"?1:0},
                 height$1=
                  function(param)
                   {if(typeof param === "number")
                     return 0;
                    else
                     {if(0 === param[0]){var height=param[4];return height}
                      return 1}},
                 invariant$10=
                  function(t,compare)
                   {function inv(param)
                     {if(typeof param !== "number" && 0 === param[0])
                       {var
                         left=param[1],
                         k=param[2],
                         h=param[4],
                         right=param[5],
                         hr=height$1(right),
                         hl=height$1(left);
                        inv(left);
                        inv(right);
                        var switch$0=0;
                        if(typeof left === "number")
                         switch$0 = 1;
                        else
                         var left_key=0 === left[0]?left[2]:left[1];
                        if
                         (!
                          switch$0
                          &&
                          !
                          caml_call2(symbol$78,caml_call2(compare,left_key,k),0))
                         throw [0,Assert_failure,_fd_];
                        var switch$1=0;
                        if(typeof right === "number")
                         switch$1 = 1;
                        else
                         var right_key=0 === right[0]?right[2]:right[1];
                        if
                         (!
                          switch$1
                          &&
                          !
                          caml_call2(symbol$82,caml_call2(compare,right_key,k),0))
                         throw [0,Assert_failure,_fe_];
                        if(caml_call2(symbol$81,h,max$36(hl,hr) + 1 | 0))
                         {if(caml_call2(symbol$79,caml_call1(abs$0,hl - hr | 0),2))
                           return 0;
                          throw [0,Assert_failure,_ff_]}
                        throw [0,Assert_failure,_fg_]}
                      return 0}
                    return inv(t)},
                 update_height=
                  function(x)
                   {if(typeof x !== "number" && 0 === x[0])
                     {var
                       left=x[1],
                       old_height=x[4],
                       right=x[5],
                       _j5_=height$1(right),
                       new_height=max$36(height$1(left),_j5_) + 1 | 0,
                       _j6_=caml_call2(symbol$80,new_height,old_height),
                       _j7_=_j6_?(x[4] = new_height,0):_j6_;
                      return _j7_}
                    throw [0,Assert_failure,_fh_]},
                 balance=
                  function(tree)
                   {if(typeof tree !== "number" && 0 === tree[0])
                     {var
                       left=tree[1],
                       right=tree[5],
                       hl=height$1(left),
                       hr=height$1(right);
                      if(caml_call2(symbol$82,hl,hr + 2 | 0))
                       {if(typeof left !== "number" && 0 === left[0])
                         {var
                           left_node_left=left[1],
                           left_node_right=left[5],
                           _j3_=height$1(left_node_right);
                          if(caml_call2(symbol$83,height$1(left_node_left),_j3_))
                           {tree[1] = left_node_right;
                            left[5] = tree;
                            update_height(tree);
                            update_height(left);
                            return left}
                          if
                           (typeof left_node_right
                            !==
                            "number"
                            &&
                            0
                            ===
                            left_node_right[0])
                           {var lr_left=left_node_right[1],lr_right=left_node_right[5];
                            left[5] = lr_left;
                            tree[1] = lr_right;
                            left_node_right[5] = tree;
                            left_node_right[1] = left;
                            update_height(left);
                            update_height(tree);
                            update_height(left_node_right);
                            return left_node_right}
                          throw [0,Assert_failure,_fj_]}
                        throw [0,Assert_failure,_fi_]}
                      if(caml_call2(symbol$82,hr,hl + 2 | 0))
                       {if(typeof right !== "number" && 0 === right[0])
                         {var
                           right_node_left=right[1],
                           right_node_right=right[5],
                           _j4_=height$1(right_node_left);
                          if(caml_call2(symbol$83,height$1(right_node_right),_j4_))
                           {tree[5] = right_node_left;
                            right[1] = tree;
                            update_height(tree);
                            update_height(right);
                            return right}
                          if
                           (typeof right_node_left
                            !==
                            "number"
                            &&
                            0
                            ===
                            right_node_left[0])
                           {var rl_left=right_node_left[1],rl_right=right_node_left[5];
                            right[1] = rl_right;
                            tree[5] = rl_left;
                            right_node_left[1] = tree;
                            right_node_left[5] = right;
                            update_height(right);
                            update_height(tree);
                            update_height(right_node_left);
                            return right_node_left}
                          throw [0,Assert_failure,_fl_]}
                        throw [0,Assert_failure,_fk_]}
                      update_height(tree);
                      return tree}
                    return tree},
                 set_left=
                  function(r,tree)
                   {var tree$0=balance(tree);
                    if(typeof r !== "number" && 0 === r[0])
                     {var left=r[1];
                      if(left !== tree$0)r[1] = tree$0;
                      return update_height(r)}
                    throw [0,Assert_failure,_fm_]},
                 set_right=
                  function(r,tree)
                   {var tree$0=balance(tree);
                    if(typeof r !== "number" && 0 === r[0])
                     {var right=r[5];
                      if(right !== tree$0)r[5] = tree$0;
                      return update_height(r)}
                    throw [0,Assert_failure,_fn_]},
                 add$6=
                  function(t,replace,added,compare,k,v)
                   {if(typeof t === "number")
                     {added[1] = 1;return [1,k,v]}
                    else
                     {if(0 === t[0])
                       {var
                         left=t[1],
                         k$0=t[2],
                         right=t[5],
                         c=caml_call2(compare,k,k$0);
                        if(caml_call2(symbol$81,c,0))
                         {added[1] = 0;if(replace)t[3] = v}
                        else
                         if(caml_call2(symbol$78,c,0))
                          set_left(t,add$6(left,replace,added,compare,k,v));
                         else
                          set_right(t,add$6(right,replace,added,compare,k,v));
                        return t}
                      var k$1=t[1],c$0=caml_call2(compare,k$1,k);
                      if(caml_call2(symbol$81,c$0,0))
                       {added[1] = 0;if(replace)t[2] = v;return t}
                      added[1] = 1;
                      return caml_call2(symbol$78,c$0,0)
                              ?[0,t,k,v,2,0]
                              :[0,0,k,v,2,t]}},
                 add$7=
                  function(t,replace,compare,added,key,data)
                   {var t$0=add$6(t,replace,added,compare,key,data);
                    return added[1]?balance(t$0):t$0},
                 first$0=
                  function(t)
                   {var t$0=t;
                    for(;;)
                     {if(typeof t$0 === "number")
                       return 0;
                      else
                       if(0 === t$0[0])
                        {var _j2_=t$0[1];
                         if(typeof _j2_ !== "number"){var t$0=_j2_;continue}
                         var v=t$0[3],k=t$0[2]}
                       else
                        var v=t$0[2],k=t$0[1];
                      return [0,[0,k,v]]}},
                 last$2=
                  function(t)
                   {var t$0=t;
                    for(;;)
                     {if(typeof t$0 === "number")
                       return 0;
                      else
                       if(0 === t$0[0])
                        {var _j0_=t$0[2],_j1_=t$0[3];
                         if(typeof t$0[5] !== "number")
                          {var t$1=t$0[5],t$0=t$1;continue}
                         var v=_j1_,k=_j0_}
                       else
                        var v=t$0[2],k=t$0[1];
                      return [0,[0,k,v]]}},
                 findi_and_call_impl=
                  function
                   (t,
                    compare,
                    k,
                    arg,
                    call_if_found,
                    call_if_not_found,
                    if_found,
                    if_not_found)
                   {var t$0=t;
                    for(;;)
                     if(typeof t$0 === "number")
                      return caml_call3(call_if_not_found,if_not_found,k,arg);
                     else
                      {if(0 === t$0[0])
                        {var
                          left=t$0[1],
                          k$0=t$0[2],
                          v=t$0[3],
                          right=t$0[5],
                          c=caml_call2(compare,k,k$0);
                         if(caml_call2(symbol$81,c,0))
                          return caml_call4(call_if_found,if_found,k$0,v,arg);
                         if(caml_call2(symbol$78,c,0))
                          if(typeof left === "number")
                           return caml_call3(call_if_not_found,if_not_found,k,arg);
                          else
                           {if(0 === left[0])
                             {var
                               left$0=left[1],
                               k$1=left[2],
                               v$0=left[3],
                               right$0=left[5],
                               c$0=caml_call2(compare,k,k$1);
                              if(caml_call2(symbol$81,c$0,0))
                               return caml_call4(call_if_found,if_found,k$1,v$0,arg);
                              var t$1=caml_call2(symbol$78,c$0,0)?left$0:right$0,t$0=t$1;
                              continue}
                            var k$2=left[1],v$1=left[2];
                            return caml_call2(symbol$81,caml_call2(compare,k,k$2),0)
                                    ?caml_call4(call_if_found,if_found,k$2,v$1,arg)
                                    :caml_call3(call_if_not_found,if_not_found,k,arg)}
                         if(typeof right === "number")
                          return caml_call3(call_if_not_found,if_not_found,k,arg);
                         else
                          {if(0 === right[0])
                            {var
                              left$1=right[1],
                              k$3=right[2],
                              v$2=right[3],
                              right$1=right[5],
                              c$1=caml_call2(compare,k,k$3);
                             if(caml_call2(symbol$81,c$1,0))
                              return caml_call4(call_if_found,if_found,k$3,v$2,arg);
                             var t$2=caml_call2(symbol$78,c$1,0)?left$1:right$1,t$0=t$2;
                             continue}
                           var k$4=right[1],v$3=right[2];
                           return caml_call2(symbol$81,caml_call2(compare,k,k$4),0)
                                   ?caml_call4(call_if_found,if_found,k$4,v$3,arg)
                                   :caml_call3(call_if_not_found,if_not_found,k,arg)}}
                       var k$5=t$0[1],v$4=t$0[2];
                       return caml_call2(symbol$81,caml_call2(compare,k,k$5),0)
                               ?caml_call4(call_if_found,if_found,k$5,v$4,arg)
                               :caml_call3(call_if_not_found,if_not_found,k,arg)}},
                 call_if_found=
                  function(if_found,param,data,_jZ_)
                   {return caml_call1(if_found,data)},
                 call_if_not_found=
                  function(if_not_found,key,param)
                   {return caml_call1(if_not_found,key)},
                 find_and_call=
                  function(t,compare,k,if_found,if_not_found)
                   {return findi_and_call_impl
                            (t,
                             compare,
                             k,
                             0,
                             call_if_found,
                             call_if_not_found,
                             if_found,
                             if_not_found)},
                 call_if_found$0=
                  function(if_found,key,data,param)
                   {return caml_call2(if_found,key,data)},
                 call_if_not_found$0=
                  function(if_not_found,key,param)
                   {return caml_call1(if_not_found,key)},
                 findi_and_call=
                  function(t,compare,k,if_found,if_not_found)
                   {return findi_and_call_impl
                            (t,
                             compare,
                             k,
                             0,
                             call_if_found$0,
                             call_if_not_found$0,
                             if_found,
                             if_not_found)},
                 call_if_found$1=
                  function(if_found,param,data,arg)
                   {return caml_call2(if_found,data,arg)},
                 call_if_not_found$1=
                  function(if_not_found,key,arg)
                   {return caml_call2(if_not_found,key,arg)},
                 find_and_call1=
                  function(t,compare,k,arg,if_found,if_not_found)
                   {return findi_and_call_impl
                            (t,
                             compare,
                             k,
                             arg,
                             call_if_found$1,
                             call_if_not_found$1,
                             if_found,
                             if_not_found)},
                 if_found=function(v){return [0,v]},
                 if_not_found$0=function(param){return 0},
                 find$14=
                  function(t,compare,k)
                   {return find_and_call(t,compare,k,if_found,if_not_found$0)},
                 if_found$0=function(param){return 1},
                 if_not_found$1=function(param){return 0},
                 mem$13=
                  function(t,compare,k)
                   {return find_and_call(t,compare,k,if_found$0,if_not_found$1)},
                 remove_min_elt$1=
                  function(tree)
                   {if(typeof tree === "number")
                     throw [0,Assert_failure,_fo_];
                    else
                     {if(0 === tree[0])
                       {var _jW_=tree[1];
                        if(typeof _jW_ === "number")
                         {var right=tree[5];return right}
                        else
                         {if(0 === _jW_[0])
                           {set_left(tree,remove_min_elt$1(_jW_));return tree}
                          var _jX_=tree[2],_jY_=tree[3];
                          return typeof tree[5] === "number"
                                  ?[1,_jX_,_jY_]
                                  :(set_left(tree,0),tree)}}
                      return 0}},
                 remove$6=
                  function(t,removed,compare,k$0)
                   {if(typeof t === "number")
                     {removed[1] = 0;return 0}
                    else
                     {if(0 === t[0])
                       {var
                         left=t[1],
                         k$1=t[2],
                         right=t[5],
                         c=caml_call2(compare,k$0,k$1);
                        if(caml_call2(symbol$81,c,0))
                         {removed[1] = 1;
                          if(typeof left === "number")return right;
                          if(typeof right === "number")return left;
                          var tree=right;
                          for(;;)
                           {if(typeof tree === "number")
                             var tree$0=0;
                            else
                             if(0 === tree[0])
                              {var _jU_=tree[1];
                               if(typeof _jU_ !== "number"){var tree=_jU_;continue}
                               var tree$0=tree}
                             else
                              var tree$0=tree;
                            if(typeof tree$0 === "number")
                             throw [0,Assert_failure,_fp_];
                            else
                             {if(0 === tree$0[0])
                               {set_right(tree$0,remove_min_elt$1(right));
                                set_left(tree$0,left);
                                return tree$0}
                              var
                               k=tree$0[1],
                               v=tree$0[2],
                               t2=balance(remove_min_elt$1(right)),
                               _jV_=height$1(t2);
                              return [0,left,k,v,max$36(height$1(left),_jV_) + 1 | 0,t2]}}}
                        return caml_call2(symbol$78,c,0)
                                ?(set_left(t,remove$6(left,removed,compare,k$0)),t)
                                :(set_right(t,remove$6(right,removed,compare,k$0)),t)}
                      var k$2=t[1];
                      return caml_call2(symbol$81,caml_call2(compare,k$0,k$2),0)
                              ?(removed[1] = 1,0)
                              :(removed[1] = 0,t)}},
                 remove$7=
                  function(t,removed,compare,k)
                   {return balance(remove$6(t,removed,compare,k))},
                 fold$16=
                  function(t,init,f)
                   {var t$0=t,init$0=init;
                    for(;;)
                     if(typeof t$0 === "number")
                      return init$0;
                     else
                      {if(0 === t$0[0])
                        {var _jI_=t$0[1],switch$0=0;
                         if(typeof _jI_ === "number")
                          {var _jL_=t$0[5],_jJ_=t$0[2],_jK_=t$0[3];
                           if(typeof _jL_ !== "number" && 0 !== _jL_[0])
                            {var rkey=_jL_[1],rdata=_jL_[2];
                             return caml_call3
                                     (f,rkey,rdata,caml_call3(f,_jJ_,_jK_,init$0))}}
                         else
                          if(0 === _jI_[0])
                           {var _jO_=t$0[5],_jM_=t$0[2],_jN_=t$0[3];
                            if(typeof _jO_ !== "number" && 0 !== _jO_[0])
                             {var rkey$0=_jO_[1],rdata$0=_jO_[2];
                              return caml_call3
                                      (f,
                                       rkey$0,
                                       rdata$0,
                                       caml_call3(f,_jM_,_jN_,fold$16(_jI_,init$0,f)))}
                            switch$0 = 1}
                          else
                           {var
                             _jP_=_jI_[1],
                             _jQ_=_jI_[2],
                             _jR_=t$0[2],
                             _jS_=t$0[3],
                             _jT_=t$0[5];
                            if(typeof _jT_ === "number")
                             return caml_call3
                                     (f,_jR_,_jS_,caml_call3(f,_jP_,_jQ_,init$0));
                            else
                             {if(0 !== _jT_[0])
                               {var rkey$1=_jT_[1],rdata$1=_jT_[2];
                                return caml_call3
                                        (f,
                                         rkey$1,
                                         rdata$1,
                                         caml_call3(f,_jR_,_jS_,caml_call3(f,_jP_,_jQ_,init$0)))}
                              switch$0 = 1}}
                         if(switch$0 && typeof _jI_ !== "number" && 1 === _jI_[0])
                          {var
                            lkey=_jI_[1],
                            ldata=_jI_[2],
                            key$0=t$0[2],
                            data$0=t$0[3],
                            right$0=t$0[5],
                            init$2=
                             caml_call3(f,key$0,data$0,caml_call3(f,lkey,ldata,init$0)),
                            t$0=right$0,
                            init$0=init$2;
                           continue}
                         var
                          key=t$0[2],
                          data=t$0[3],
                          right=t$0[5],
                          init$1=caml_call3(f,key,data,fold$16(_jI_,init$0,f)),
                          t$0=right,
                          init$0=init$1;
                         continue}
                       var key$1=t$0[1],data$1=t$0[2];
                       return caml_call3(f,key$1,data$1,init$0)}},
                 iter$20=
                  function(t,f)
                   {var t$0=t;
                    for(;;)
                     if(typeof t$0 === "number")
                      return 0;
                     else
                      {if(0 === t$0[0])
                        {var left=t$0[1],key=t$0[2],data=t$0[3],right=t$0[5];
                         iter$20(left,f);
                         caml_call2(f,key,data);
                         var t$0=right;
                         continue}
                       var key$0=t$0[1],data$0=t$0[2];
                       return caml_call2(f,key$0,data$0)}},
                 mapi_inplace=
                  function(t,f)
                   {var t$0=t;
                    for(;;)
                     if(typeof t$0 === "number")
                      return 0;
                     else
                      {if(0 === t$0[0])
                        {var left=t$0[1],key=t$0[2],value=t$0[3],right=t$0[5];
                         mapi_inplace(left,f);
                         t$0[3] = caml_call2(f,key,value);
                         var t$0=right;
                         continue}
                       var key$0=t$0[1],value$0=t$0[2];
                       t$0[2] = caml_call2(f,key$0,value$0);
                       return 0}},
                 choose_exn$2=
                  function(param)
                   {if(typeof param === "number")
                     return raise_s
                             (caml_call2(message,cst_Avltree_choose_exn_of_empt,0));
                    else
                     if(0 === param[0])
                      var value=param[3],key=param[2];
                     else
                      var value=param[2],key=param[1];
                    return [0,key,value]},
                 Base_Avltree=
                  [0,
                   empty$10,
                   is_empty$13,
                   invariant$10,
                   add$7,
                   first$0,
                   last$2,
                   find$14,
                   find_and_call,
                   find_and_call1,
                   findi_and_call,
                   mem$13,
                   remove$7,
                   fold$16,
                   iter$20,
                   mapi_inplace,
                   choose_exn$2];
                caml_register_global(1088,Base_Avltree,"Base__Avltree");
                var
                 sexp_of_key=function(t){return t[5][3]},
                 compare_key$0=function(t){return t[5][2]},
                 ensure_mutation_allowed=
                  function(t)
                   {var _jH_=1 - t[6];
                    return _jH_
                            ?caml_call1(failwith$0,cst_Hashtbl_mutation_not_allow)
                            :_jH_},
                 without_mutating=
                  function(t,f)
                   {if(t[6])
                     {t[6] = 0;
                      try
                       {var x=caml_call1(f,0)}
                      catch(exn)
                       {exn = caml_wrap_exception(exn);t[6] = 1;throw exn}
                      t[6] = 1;
                      return x}
                    return caml_call1(f,0)},
                 max_table_length=floor_pow2(max_length$0),
                 create$15=
                  function(opt,_jG_,hashable,param)
                   {if(opt)
                     var sth=opt[1],growth_allowed=sth;
                    else
                     var growth_allowed=1;
                    if(_jG_)var sth$0=_jG_[1],size=sth$0;else var size=0;
                    var
                     size$0=
                      caml_call2
                       (min$26,caml_call2(max$26,1,size),max_table_length),
                     size$1=ceil_pow2(size$0);
                    return [0,
                            caml_make_vect(size$1,0),
                            0,
                            [0,0],
                            growth_allowed,
                            hashable,
                            1]},
                 slot=
                  function(t,key)
                   {var hash=caml_call1(t[5][1],key);
                    return hash & (t[1].length - 1 - 1 | 0)},
                 add_worker=
                  function(t,replace,key,data)
                   {var
                     i=slot(t,key),
                     root=caml_check_bound(t[1],i)[1 + i],
                     added=t[3];
                    added[1] = 0;
                    var
                     new_root=
                      add$7(root,replace,compare_key$0(t),added,key,data);
                    if(added[1])t[2] = t[2] + 1 | 0;
                    var
                     _jE_=1 - (new_root === root?1:0),
                     _jF_=
                      _jE_?(caml_check_bound(t[1],i)[1 + i] = new_root,0):_jE_;
                    return _jF_},
                 maybe_resize_table=
                  function(t)
                   {var
                     len=t[1].length - 1,
                     should_grow=caml_call2(symbol$82,t[2],len),
                     _jx_=should_grow?t[4]:should_grow;
                    if(_jx_)
                     {var
                       new_array_length=
                        caml_call2(min$26,len * 2 | 0,max_table_length),
                       _jy_=caml_call2(symbol$82,new_array_length,len);
                      if(_jy_)
                       {var
                         new_table=caml_make_vect(new_array_length,0),
                         old_table=t[1];
                        t[1] = new_table;
                        t[2] = 0;
                        var
                         f=function(key,data){return add_worker(t,1,key,data)},
                         _jA_=old_table.length - 1 - 1 | 0,
                         _jz_=0;
                        if(! (_jA_ < 0))
                         {var i=_jz_;
                          for(;;)
                           {iter$20(caml_check_bound(old_table,i)[1 + i],f);
                            var _jD_=i + 1 | 0;
                            if(_jA_ !== i){var i=_jD_;continue}
                            break}}
                        var _jB_=0}
                      else
                       var _jB_=_jy_;
                      var _jC_=_jB_}
                    else
                     var _jC_=_jx_;
                    return _jC_},
                 set$8=
                  function(t,key,data)
                   {ensure_mutation_allowed(t);
                    add_worker(t,1,key,data);
                    return maybe_resize_table(t)},
                 add$8=
                  function(t,key,data)
                   {ensure_mutation_allowed(t);
                    add_worker(t,0,key,data);
                    return t[3][1]?(maybe_resize_table(t),17724):-1024851605},
                 add_exn$2=
                  function(t,key,data)
                   {var match=add$8(t,key,data);
                    if(17724 <= match)return 0;
                    var
                     sexp_of_key$0=sexp_of_key(t),
                     error=
                      create$1
                       (0,0,cst_Hashtbl_add_exn_got_key_al,key,sexp_of_key$0);
                    return raise(error)},
                 clear$3=
                  function(t)
                   {ensure_mutation_allowed(t);
                    var _jv_=t[1].length - 1 - 1 | 0,_ju_=0;
                    if(! (_jv_ < 0))
                     {var i=_ju_;
                      for(;;)
                       {caml_check_bound(t[1],i)[1 + i] = empty$10;
                        var _jw_=i + 1 | 0;
                        if(_jv_ !== i){var i=_jw_;continue}
                        break}}
                    t[2] = 0;
                    return 0},
                 find_and_call$0=
                  function(t,key,if_found,if_not_found)
                   {var
                     _jt_=slot(t,key),
                     tree=caml_check_bound(t[1],_jt_)[1 + _jt_];
                    if(typeof tree === "number")
                     return caml_call1(if_not_found,key);
                    else
                     {if(0 === tree[0])
                       return find_and_call
                               (tree,compare_key$0(t),key,if_found,if_not_found);
                      var k=tree[1],v=tree[2];
                      return caml_call2
                               (symbol$81,caml_call2(compare_key$0(t),k,key),0)
                              ?caml_call1(if_found,v)
                              :caml_call1(if_not_found,key)}},
                 findi_and_call$0=
                  function(t,key,if_found,if_not_found)
                   {var
                     _js_=slot(t,key),
                     tree=caml_check_bound(t[1],_js_)[1 + _js_];
                    if(typeof tree === "number")
                     return caml_call1(if_not_found,key);
                    else
                     {if(0 === tree[0])
                       return findi_and_call
                               (tree,compare_key$0(t),key,if_found,if_not_found);
                      var k=tree[1],v=tree[2];
                      return caml_call2
                               (symbol$81,caml_call2(compare_key$0(t),k,key),0)
                              ?caml_call2(if_found,k,v)
                              :caml_call1(if_not_found,key)}},
                 if_found$1=function(v){return [0,v]},
                 if_not_found$2=function(param){return 0},
                 find$15=
                  function(t,key)
                   {return find_and_call$0(t,key,if_found$1,if_not_found$2)},
                 mem$14=
                  function(t,key)
                   {var
                     _jr_=slot(t,key),
                     tree=caml_check_bound(t[1],_jr_)[1 + _jr_];
                    if(typeof tree === "number")
                     return 0;
                    else
                     {if(0 === tree[0])return mem$13(tree,compare_key$0(t),key);
                      var k=tree[1];
                      return caml_call2
                              (symbol$81,caml_call2(compare_key$0(t),k,key),0)}},
                 remove$8=
                  function(t,key)
                   {ensure_mutation_allowed(t);
                    var
                     i=slot(t,key),
                     root=caml_check_bound(t[1],i)[1 + i],
                     added_or_removed=t[3];
                    added_or_removed[1] = 0;
                    var
                     new_root=
                      remove$7(root,added_or_removed,compare_key$0(t),key);
                    if(1 - (root === new_root?1:0))
                     caml_check_bound(t[1],i)[1 + i] = new_root;
                    var
                     _jp_=added_or_removed[1],
                     _jq_=_jp_?(t[2] = t[2] - 1 | 0,0):_jp_;
                    return _jq_},
                 length$21=function(t){return t[2]},
                 is_empty$14=function(t){return caml_call2(symbol$81,t[2],0)},
                 fold$17=
                  function(t,init,f)
                   {if(caml_call2(symbol$81,t[2],0))return init;
                    var n=t[1].length - 1,acc=[0,init],m=t[6];
                    try
                     {t[6] = 0;
                      var _jn_=n - 1 | 0,_jm_=0;
                      if(! (_jn_ < 0))
                       {var i=_jm_;
                        for(;;)
                         {var bucket=t[1][1 + i];
                          if(typeof bucket !== "number")
                           if(0 === bucket[0])
                            acc[1] = fold$16(bucket,acc[1],f);
                           else
                            {var key=bucket[1],data=bucket[2];
                             acc[1] = caml_call3(f,key,data,acc[1])}
                          var _jo_=i + 1 | 0;
                          if(_jn_ !== i){var i=_jo_;continue}
                          break}}}
                    catch(exn)
                     {exn = caml_wrap_exception(exn);t[6] = m;throw exn}
                    t[6] = m;
                    return acc[1]},
                 iteri$9=
                  function(t,f)
                   {if(caml_call2(symbol$81,t[2],0))return 0;
                    var n=t[1].length - 1,m=t[6];
                    try
                     {t[6] = 0;
                      var _jk_=n - 1 | 0,_jj_=0;
                      if(! (_jk_ < 0))
                       {var i=_jj_;
                        for(;;)
                         {var bucket=t[1][1 + i];
                          if(typeof bucket !== "number")
                           if(0 === bucket[0])
                            iter$20(bucket,f);
                           else
                            {var key=bucket[1],data=bucket[2];caml_call2(f,key,data)}
                          var _jl_=i + 1 | 0;
                          if(_jk_ !== i){var i=_jl_;continue}
                          break}}}
                    catch(exn)
                     {exn = caml_wrap_exception(exn);t[6] = m;throw exn}
                    t[6] = m;
                    return 0},
                 iter$21=
                  function(t,f)
                   {return iteri$9
                            (t,function(param,data){return caml_call1(f,data)})},
                 iter_keys$2=
                  function(t,f)
                   {return iteri$9
                            (t,function(key,param){return caml_call1(f,key)})},
                 choose_nonempty=
                  function(table,i)
                   {var i$0=i;
                    for(;;)
                     {var avltree=caml_check_bound(table,i$0)[1 + i$0];
                      if(is_empty$13(avltree))
                       {var i$1=i$0 + 1 | 0,i$0=i$1;continue}
                      return choose_exn$2(avltree)}},
                 choose_exn$3=
                  function(t)
                   {if(caml_call2(symbol$81,t[2],0))
                     raise_s
                      (caml_call2(message,cst_Hashtbl_choose_exn_of_empt,0));
                    return choose_nonempty(t[1],0)},
                 choose$2=
                  function(t)
                   {return is_empty$14(t)?0:[0,choose_nonempty(t[1],0)]},
                 invariant$11=
                  function(invariant_key,invariant_data,t)
                   {var _jg_=t[1].length - 1 - 1 | 0,_jf_=0;
                    if(! (_jg_ < 0))
                     {var i=_jf_;
                      for(;;)
                       {var _jh_=compare_key$0(t);
                        invariant$10(caml_check_bound(t[1],i)[1 + i],_jh_);
                        var _ji_=i + 1 | 0;
                        if(_jg_ !== i){var i=_ji_;continue}
                        break}}
                    var
                     real_len=
                      fold$17
                       (t,
                        0,
                        function(key,data,i)
                         {caml_call1(invariant_key,key);
                          caml_call1(invariant_data,data);
                          return i + 1 | 0});
                    if(caml_call2(symbol$81,real_len,t[2]))return 0;
                    throw [0,Assert_failure,_fq_]},
                 if_found$2=function(v,param){return v},
                 if_not_found$3=
                  function(k,t)
                   {throw [0,
                           Not_found_s,
                           [1,[0,_fr_,[0,caml_call1(t[5][3],k),0]]]]},
                 find_exn$9=
                  function(t,key)
                   {var
                     _je_=slot(t,key),
                     tree=caml_check_bound(t[1],_je_)[1 + _je_];
                    if(typeof tree === "number")
                     return if_not_found$3(key,t);
                    else
                     {if(0 === tree[0])
                       return find_and_call1
                               (tree,compare_key$0(t),key,t,if_found$2,if_not_found$3);
                      var k=tree[1],v=tree[2];
                      return caml_call2
                               (symbol$81,caml_call2(compare_key$0(t),k,key),0)
                              ?v
                              :if_not_found$3(key,t)}},
                 existsi$8=
                  function(t,f)
                   {return with_return
                            (function(r)
                              {iteri$9
                                (t,
                                 function(key,data)
                                  {var _jd_=caml_call2(f,key,data);
                                   return _jd_?caml_call1(r,1):_jd_});
                               return 0})},
                 exists$14=
                  function(t,f)
                   {return existsi$8
                            (t,function(param,data){return caml_call1(f,data)})},
                 for_alli$8=
                  function(t,f)
                   {return 1
                           -
                           existsi$8
                            (t,function(key,data){return 1 - caml_call2(f,key,data)})},
                 for_all$13=
                  function(t,f)
                   {return 1
                           -
                           existsi$8
                            (t,function(param,data){return 1 - caml_call1(f,data)})},
                 counti$8=
                  function(t,f)
                   {return fold$17
                            (t,
                             0,
                             function(key,data,acc)
                              {return caml_call2(f,key,data)?acc + 1 | 0:acc})},
                 count$13=
                  function(t,f)
                   {return fold$17
                            (t,
                             0,
                             function(param,data,acc)
                              {return caml_call1(f,data)?acc + 1 | 0:acc})},
                 mapi$10=
                  function(t,f)
                   {var new_t=create$15([0,t[4]],[0,t[2]],t[5],0);
                    iteri$9
                     (t,
                      function(key,data)
                       {return set$8(new_t,key,caml_call2(f,key,data))});
                    return new_t},
                 map$34=
                  function(t,f)
                   {return mapi$10
                            (t,function(param,data){return caml_call1(f,data)})},
                 copy$7=
                  function(t){return map$34(t,function(_jc_){return _jc_})},
                 filter_mapi$7=
                  function(t,f)
                   {var new_t=create$15([0,t[4]],[0,t[2]],t[5],0);
                    iteri$9
                     (t,
                      function(key,data)
                       {var match=caml_call2(f,key,data);
                        if(match)
                         {var new_data=match[1];return set$8(new_t,key,new_data)}
                        return 0});
                    return new_t},
                 filter_map$12=
                  function(t,f)
                   {return filter_mapi$7
                            (t,function(param,data){return caml_call1(f,data)})},
                 filteri$7=
                  function(t,f)
                   {return filter_mapi$7
                            (t,
                             function(key,data){return caml_call2(f,key,data)?[0,data]:0})},
                 filter$12=
                  function(t,f)
                   {return filteri$7
                            (t,function(param,data){return caml_call1(f,data)})},
                 filter_keys$2=
                  function(t,f)
                   {return filteri$7
                            (t,function(key,param){return caml_call1(f,key)})},
                 partition_mapi$2=
                  function(t,f)
                   {var
                     t0=create$15([0,t[4]],[0,t[2]],t[5],0),
                     t1=create$15([0,t[4]],[0,t[2]],t[5],0);
                    iteri$9
                     (t,
                      function(key,data)
                       {var match=caml_call2(f,key,data);
                        if(4152137 <= match[1])
                         {var new_data=match[2];return set$8(t1,key,new_data)}
                        var new_data$0=match[2];
                        return set$8(t0,key,new_data$0)});
                    return [0,t0,t1]},
                 partition_map$3=
                  function(t,f)
                   {return partition_mapi$2
                            (t,function(param,data){return caml_call1(f,data)})},
                 partitioni_tf$3=
                  function(t,f)
                   {return partition_mapi$2
                            (t,
                             function(key,data)
                              {return caml_call2(f,key,data)
                                       ?[0,3506791,data]
                                       :[0,4152137,data]})},
                 partition_tf$7=
                  function(t,f)
                   {return partitioni_tf$3
                            (t,function(param,data){return caml_call1(f,data)})},
                 find_or_add=
                  function(t,id,default$0)
                   {var match=find$15(t,id);
                    if(match){var x=match[1];return x}
                    var default$1=caml_call1(default$0,0);
                    set$8(t,id,default$1);
                    return default$1},
                 findi_or_add=
                  function(t,id,default$0)
                   {var match=find$15(t,id);
                    if(match){var x=match[1];return x}
                    var default$1=caml_call1(default$0,id);
                    set$8(t,id,default$1);
                    return default$1},
                 find_and_remove=
                  function(t,id)
                   {var result=find$15(t,id);
                    if(is_some(result))remove$8(t,id);
                    return result},
                 change$2=
                  function(t,id,f)
                   {var match=caml_call1(f,find$15(t,id));
                    if(match){var data=match[1];return set$8(t,id,data)}
                    return remove$8(t,id)},
                 update$1=
                  function(t,id,f)
                   {return set$8(t,id,caml_call1(f,find$15(t,id)))},
                 incr_by=
                  function(remove_if_zero,t,key,by)
                   {return remove_if_zero
                            ?change$2
                              (t,
                               key,
                               function(opt)
                                {var n=by + value(opt,0) | 0;return 0 === n?0:[0,n]})
                            :update$1
                              (t,
                               key,
                               function(param)
                                {if(param){var i=param[1];return by + i | 0}return by})},
                 incr$6=
                  function(opt,_jb_,t,key)
                   {if(opt)var sth=opt[1],by=sth;else var by=1;
                    if(_jb_)
                     var sth$0=_jb_[1],remove_if_zero=sth$0;
                    else
                     var remove_if_zero=0;
                    return incr_by(remove_if_zero,t,key,by)},
                 decr$6=
                  function(opt,_ja_,t,key)
                   {if(opt)var sth=opt[1],by=sth;else var by=1;
                    if(_ja_)
                     var sth$0=_ja_[1],remove_if_zero=sth$0;
                    else
                     var remove_if_zero=0;
                    return incr_by(remove_if_zero,t,key,- by | 0)},
                 add_multi$2=
                  function(t,key,data)
                   {return update$1
                            (t,
                             key,
                             function(param)
                              {if(param){var l=param[1];return [0,data,l]}
                               return [0,data,0]})},
                 remove_multi$2=
                  function(t,key)
                   {var match=find$15(t,key);
                    if(match)
                     {var _i$_=match[1];
                      if(_i$_ && _i$_[2]){var tl=_i$_[2];return set$8(t,key,tl)}
                      return remove$8(t,key)}
                    return 0},
                 find_multi$2=
                  function(t,key)
                   {var match=find$15(t,key);
                    if(match){var l=match[1];return l}
                    return 0},
                 create_mapped=
                  function(growth_allowed,size,hashable,get_key,get_data,rows)
                   {if(size)
                     var s=size[1],size$0=s;
                    else
                     var size$0=caml_call1(length,rows);
                    var
                     res=create$15(growth_allowed,[0,size$0],hashable,0),
                     dupes=[0,0];
                    iter$0
                     (rows,
                      function(r)
                       {var key=caml_call1(get_key,r),data=caml_call1(get_data,r);
                        return mem$14(res,key)
                                ?(dupes[1] = [0,key,dupes[1]],0)
                                :set$8(res,key,data)});
                    var _i__=dupes[1];
                    return _i__
                            ?[0,175765640,dedup_and_sort(hashable[2],_i__)]
                            :[0,17724,res]},
                 of_alist$4=
                  function(growth_allowed,size,hashable,lst)
                   {var
                     match=
                      create_mapped
                       (growth_allowed,size,hashable,get_key,get_data,lst);
                    if(175765640 <= match[1])
                     {var k=match[2];return [0,-1048878709,caml_call1(hd_exn,k)]}
                    var t=match[2];
                    return [0,17724,t]},
                 of_alist_report_all_dups=
                  function(growth_allowed,size,hashable,lst)
                   {return create_mapped
                            (growth_allowed,size,hashable,get_key,get_data,lst)},
                 of_alist_or_error$4=
                  function(growth_allowed,size,hashable,lst)
                   {var match=of_alist$4(growth_allowed,size,hashable,lst);
                    if(17724 <= match[1]){var v=match[2];return [0,v]}
                    var key=match[2],sexp_of_key=hashable[3];
                    return error$0
                            (0,cst_Hashtbl_of_alist_exn_dupli,key,sexp_of_key)},
                 of_alist_exn$4=
                  function(growth_allowed,size,hashable,lst)
                   {var
                     match=
                      of_alist_or_error$4(growth_allowed,size,hashable,lst);
                    if(0 === match[0]){var v=match[1];return v}
                    var e=match[1];
                    return raise(e)},
                 of_alist_multi$4=
                  function(growth_allowed,size$0,hashable,lst)
                   {if(size$0)
                     var s=size$0[1],size=s;
                    else
                     var size=caml_call1(length,lst);
                    var res=create$15(growth_allowed,[0,size],hashable,0);
                    iter$0
                     (lst,
                      function(r)
                       {var key=r[1],data=r[2];return add_multi$2(res,key,data)});
                    return res},
                 to_alist$2=
                  function(t)
                   {return fold$17
                            (t,0,function(key,data,list){return [0,[0,key,data],list]})},
                 sexp_of_t$60=
                  function(sexp_of_key,sexp_of_data,t)
                   {var
                     _i7_=to_alist$2(t),
                     _i8_=
                      func
                       (_i7_,
                        function(param,_i9_)
                         {var k2=_i9_[1],k1=param[1];
                          return caml_call2(t[5][2],k1,k2)});
                    return caml_call2
                            (sexp_of_t$10,
                             caml_call2(sexp_of_pair,sexp_of_key,sexp_of_data),
                             _i8_)},
                 t_of_sexp$36=
                  function(hashable,k_of_sexp,d_of_sexp,sexp)
                   {var
                     alist=
                      caml_call2
                       (t_of_sexp$10,
                        caml_call2(pair_of_sexp,k_of_sexp,d_of_sexp),
                        sexp),
                     match=
                      of_alist$4(0,[0,caml_call1(length,alist)],hashable,alist);
                    if(17724 <= match[1]){var v=match[2];return v}
                    var k=match[2];
                    function _i1_(_i6_){return _i6_}
                    var
                     alist_sexps=
                      caml_call2
                       (t_of_sexp$10,
                        caml_call2(pair_of_sexp,function(_i5_){return _i5_},_i1_),
                        sexp),
                     found_first_k=[0,0];
                    iter2_exn
                     (alist,
                      alist_sexps,
                      function(param,_i2_)
                       {var
                         k2_sexp=_i2_[1],
                         k2=param[1],
                         _i3_=caml_call2(symbol$81,caml_call2(hashable[2],k,k2),0);
                        if(_i3_)
                         {if(found_first_k[1])
                           return caml_call2
                                   (of_sexp_error,cst_Hashtbl_t_of_sexp_duplicat,k2_sexp);
                          found_first_k[1] = 1;
                          var _i4_=0}
                        else
                         var _i4_=_i3_;
                        return _i4_});
                    throw [0,Assert_failure,_fs_]},
                 validate$2=
                  function(name,f,t){return alist(name,f,to_alist$2(t))},
                 to_list$12=
                  function(t)
                   {return fold$17
                            (t,0,function(key,param,acc){return [0,key,acc]})},
                 data$2=
                  function(t)
                   {return fold$17
                            (t,0,function(param,data,list){return [0,data,list]})},
                 group$1=
                  function
                   (growth_allowed,size,hashable,get_key,get_data,combine,rows)
                   {var groups=create$15(growth_allowed,size,hashable,0);
                    iter$0
                     (rows,
                      function(row)
                       {var
                         key=caml_call1(get_key,row),
                         data=caml_call1(get_data,row),
                         match=find$15(groups,key);
                        if(match)
                         var old=match[1],data$0=caml_call2(combine,old,data);
                        else
                         var data$0=data;
                        return set$8(groups,key,data$0)});
                    return groups},
                 create_with_key=
                  function(growth_allowed,size,hashable,get_key,rows)
                   {return create_mapped
                            (growth_allowed,
                             size,
                             hashable,
                             get_key,
                             function(_i0_){return _i0_},
                             rows)},
                 create_with_key_or_error=
                  function(growth_allowed,size,hashable,get_key,rows)
                   {var
                     match=
                      create_with_key(growth_allowed,size,hashable,get_key,rows);
                    if(175765640 <= match[1])
                     {var keys=match[2],sexp_of_key=hashable[3];
                      return error_s
                              (caml_call2
                                (message,
                                 cst_Hashtbl_create_with_key_du,
                                 [0,[0,cst_keys,caml_call2(sexp_of_t$10,sexp_of_key,keys)],0]))}
                    var t=match[2];
                    return [0,t]},
                 create_with_key_exn=
                  function(growth_allowed,size,hashable,get_key,rows)
                   {return ok_exn$0
                            (create_with_key_or_error
                              (growth_allowed,size,hashable,get_key,rows))},
                 maybe_set=
                  function(t,key,f,d)
                   {var match=caml_call2(f,key,d);
                    if(match){var v=match[1];return set$8(t,key,v)}
                    return 0},
                 merge$6=
                  function(t_left,t_right,f)
                   {if(1 - caml_call2(equal$45,t_left[5],t_right[5]))
                     caml_call1(invalid_arg$0,cst_Hashtbl_merge_different_ha);
                    var
                     new_t=
                      create$15([0,t_left[4]],[0,t_left[2]],t_left[5],0);
                    without_mutating
                     (t_left,
                      function(param)
                       {return without_mutating
                                (t_right,
                                 function(param)
                                  {iteri$9
                                    (t_left,
                                     function(key,left)
                                      {var match=find$15(t_right,key);
                                       if(match)
                                        {var right=match[1];
                                         return maybe_set(new_t,key,f,[0,737457313,[0,left,right]])}
                                       return maybe_set(new_t,key,f,[0,847852583,left])});
                                   return iteri$9
                                           (t_right,
                                            function(key,right)
                                             {var match=find$15(t_left,key);
                                              return match?0:maybe_set(new_t,key,f,[0,-57574468,right])})})});
                    return new_t},
                 merge_into=
                  function(src,dst,f)
                   {return iteri$9
                            (src,
                             function(key,data)
                              {var
                                dst_data=find$15(dst,key),
                                action=
                                 without_mutating
                                  (dst,
                                   function(param){return caml_call3(f,key,data,dst_data)});
                               if(action)
                                {var data$0=action[1];
                                 if(dst_data)
                                  {var
                                    dst_data$0=dst_data[1],
                                    _iZ_=1 - (dst_data$0 === data$0?1:0);
                                   return _iZ_?set$8(dst,key,data$0):_iZ_}
                                 return set$8(dst,key,data$0)}
                               return remove$8(dst,key)})},
                 filteri_inplace$1=
                  function(t,f)
                   {var
                     to_remove=
                      fold$17
                       (t,
                        0,
                        function(key,data,ac)
                         {return caml_call2(f,key,data)?ac:[0,key,ac]});
                    return iter$0
                            (to_remove,function(key){return remove$8(t,key)})},
                 filter_inplace$1=
                  function(t,f)
                   {return filteri_inplace$1
                            (t,function(param,data){return caml_call1(f,data)})},
                 filter_keys_inplace=
                  function(t,f)
                   {return filteri_inplace$1
                            (t,function(key,param){return caml_call1(f,key)})},
                 filter_mapi_inplace=
                  function(t,f)
                   {var
                     map_results=
                      fold$17
                       (t,
                        0,
                        function(key,data,ac)
                         {return [0,[0,key,caml_call2(f,key,data)],ac]});
                    return iter$0
                            (map_results,
                             function(param)
                              {var result=param[2],key=param[1];
                               if(result){var data=result[1];return set$8(t,key,data)}
                               return remove$8(t,key)})},
                 filter_map_inplace=
                  function(t,f)
                   {return filter_mapi_inplace
                            (t,function(param,data){return caml_call1(f,data)})},
                 mapi_inplace$0=
                  function(t,f)
                   {ensure_mutation_allowed(t);
                    return without_mutating
                            (t,
                             function(param)
                              {function _iX_(_iY_){return mapi_inplace(_iY_,f)}
                               return iter(t[1],_iX_)})},
                 map_inplace$0=
                  function(t,f)
                   {return mapi_inplace$0
                            (t,function(param,data){return caml_call1(f,data)})},
                 similar=
                  function(t$0,t,equal)
                   {var _iV_=caml_call2(symbol$81,t$0[2],t[2]);
                    return _iV_
                            ?with_return
                              (function(r)
                                {without_mutating
                                  (t,
                                   function(param)
                                    {return iteri$9
                                             (t$0,
                                              function(key,data)
                                               {var match=find$15(t,key);
                                                if(match)
                                                 {var data$0=match[1],_iW_=1 - caml_call2(equal,data,data$0);
                                                  return _iW_?caml_call1(r,0):_iW_}
                                                return caml_call1(r,0)})});
                                 return 1})
                            :_iV_},
                 Creators=
                  function(Key)
                   {var hashable=Key[1];
                    function create(growth_allowed,size,param)
                     {return create$15(growth_allowed,size,hashable,0)}
                    function of_alist(growth_allowed,size,l)
                     {return of_alist$4(growth_allowed,size,hashable,l)}
                    function of_alist_report_all_dups$0(growth_allowed,size,l)
                     {return of_alist_report_all_dups
                              (growth_allowed,size,hashable,l)}
                    function of_alist_or_error(growth_allowed,size,l)
                     {return of_alist_or_error$4(growth_allowed,size,hashable,l)}
                    function of_alist_exn(growth_allowed,size,l)
                     {return of_alist_exn$4(growth_allowed,size,hashable,l)}
                    function t_of_sexp(k_of_sexp,d_of_sexp,sexp)
                     {return t_of_sexp$36(hashable,k_of_sexp,d_of_sexp,sexp)}
                    function of_alist_multi(growth_allowed,size,l)
                     {return of_alist_multi$4(growth_allowed,size,hashable,l)}
                    function create_mapped$0
                     (growth_allowed,size,get_key,get_data,l)
                     {return create_mapped
                              (growth_allowed,size,hashable,get_key,get_data,l)}
                    function create_with_key$0(growth_allowed,size,get_key,l)
                     {return create_with_key
                              (growth_allowed,size,hashable,get_key,l)}
                    function create_with_key_or_error$0
                     (growth_allowed,size,get_key,l)
                     {return create_with_key_or_error
                              (growth_allowed,size,hashable,get_key,l)}
                    function create_with_key_exn$0
                     (growth_allowed,size,get_key,l)
                     {return create_with_key_exn
                              (growth_allowed,size,hashable,get_key,l)}
                    function group
                     (growth_allowed,size,get_key,get_data,combine,l)
                     {return group$1
                              (growth_allowed,size,hashable,get_key,get_data,combine,l)}
                    return [0,
                            t_of_sexp,
                            create,
                            of_alist,
                            of_alist_report_all_dups$0,
                            of_alist_or_error,
                            of_alist_exn,
                            of_alist_multi,
                            create_mapped$0,
                            create_with_key$0,
                            create_with_key_or_error$0,
                            create_with_key_exn$0,
                            group]},
                 _ft_=Creators([0,hashable]),
                 t_of_sexp$37=_ft_[1],
                 create$16=_ft_[2],
                 of_alist$5=_ft_[3],
                 of_alist_report_all_dups$0=_ft_[4],
                 of_alist_or_error$5=_ft_[5],
                 of_alist_exn$5=_ft_[6],
                 of_alist_multi$5=_ft_[7],
                 create_mapped$0=_ft_[8],
                 create_with_key$0=_ft_[9],
                 create_with_key_or_error$0=_ft_[10],
                 create_with_key_exn$0=_ft_[11],
                 group$2=_ft_[12],
                 hashable$0=function(t){return t[5]},
                 Private$4=[0,hashable$0],
                 create$17=
                  function(growth_allowed,size,m)
                   {return create$15
                            (growth_allowed,size,caml_call1(of_key$0,m),0)},
                 of_alist$6=
                  function(growth_allowed,size,m,l)
                   {return of_alist$4
                            (growth_allowed,size,caml_call1(of_key$0,m),l)},
                 of_alist_report_all_dups$1=
                  function(growth_allowed,size,m,l)
                   {return of_alist_report_all_dups
                            (growth_allowed,size,caml_call1(of_key$0,m),l)},
                 of_alist_or_error$6=
                  function(growth_allowed,size,m,l)
                   {return of_alist_or_error$4
                            (growth_allowed,size,caml_call1(of_key$0,m),l)},
                 of_alist_exn$6=
                  function(growth_allowed,size,m,l)
                   {return of_alist_exn$4
                            (growth_allowed,size,caml_call1(of_key$0,m),l)},
                 of_alist_multi$6=
                  function(growth_allowed,size,m,l)
                   {return of_alist_multi$4
                            (growth_allowed,size,caml_call1(of_key$0,m),l)},
                 create_mapped$1=
                  function(growth_allowed,size,m,get_key,get_data,l)
                   {return create_mapped
                            (growth_allowed,
                             size,
                             caml_call1(of_key$0,m),
                             get_key,
                             get_data,
                             l)},
                 create_with_key$1=
                  function(growth_allowed,size,m,get_key,l)
                   {return create_with_key
                            (growth_allowed,size,caml_call1(of_key$0,m),get_key,l)},
                 create_with_key_or_error$1=
                  function(growth_allowed,size,m,get_key,l)
                   {return create_with_key_or_error
                            (growth_allowed,size,caml_call1(of_key$0,m),get_key,l)},
                 create_with_key_exn$1=
                  function(growth_allowed,size,m,get_key,l)
                   {return create_with_key_exn
                            (growth_allowed,size,caml_call1(of_key$0,m),get_key,l)},
                 group$3=
                  function(growth_allowed,size,m,get_key,get_data,combine,l)
                   {return group$1
                            (growth_allowed,
                             size,
                             caml_call1(of_key$0,m),
                             get_key,
                             get_data,
                             combine,
                             l)},
                 hashable_s=function(t){return caml_call1(to_key$0,t[5])},
                 M$1=function(K){return [0]},
                 sexp_of_m_t$1=
                  function(K,sexp_of_v,t)
                   {return sexp_of_t$60(K[1],sexp_of_v,t)},
                 m_t_of_sexp$1=
                  function(K,v_of_sexp,sexp)
                   {var _iU_=K[1];
                    return t_of_sexp$36
                            (caml_call1(of_key$0,[0,K[2],K[3],K[4]]),
                             _iU_,
                             v_of_sexp,
                             sexp)},
                 _fu_=
                  [0,
                   t_of_sexp$37,
                   sexp_of_t$60,
                   hashable,
                   invariant$11,
                   create$16,
                   of_alist$5,
                   of_alist_report_all_dups$0,
                   of_alist_or_error$5,
                   of_alist_exn$5,
                   of_alist_multi$5,
                   create_mapped$0,
                   create_with_key$0,
                   create_with_key_or_error$0,
                   create_with_key_exn$0,
                   group$2,
                   sexp_of_key,
                   clear$3,
                   copy$7,
                   fold$17,
                   iter_keys$2,
                   iter$21,
                   iteri$9,
                   existsi$8,
                   exists$14,
                   for_alli$8,
                   for_all$13,
                   counti$8,
                   count$13,
                   length$21,
                   is_empty$14,
                   mem$14,
                   remove$8,
                   choose$2,
                   choose_exn$3,
                   set$8,
                   add$8,
                   add_exn$2,
                   change$2,
                   update$1,
                   map$34,
                   mapi$10,
                   filter_map$12,
                   filter_mapi$7,
                   filter_keys$2,
                   filter$12,
                   filteri$7,
                   partition_map$3,
                   partition_mapi$2,
                   partition_tf$7,
                   partitioni_tf$3,
                   find_or_add,
                   findi_or_add,
                   find$15,
                   find_exn$9,
                   find_and_call$0,
                   findi_and_call$0,
                   find_and_remove,
                   merge$6,
                   merge_into,
                   to_list$12,
                   data$2,
                   filter_keys_inplace,
                   filter_inplace$1,
                   filteri_inplace$1,
                   map_inplace$0,
                   mapi_inplace$0,
                   filter_map_inplace,
                   filter_mapi_inplace,
                   similar,
                   similar,
                   to_alist$2,
                   validate$2,
                   incr$6,
                   decr$6,
                   add_multi$2,
                   remove_multi$2,
                   find_multi$2],
                 Base_Hashtbl=
                  [0,
                   hash$21,
                   hash_param$0,
                   sexp_of_t$60,
                   create$17,
                   of_alist$6,
                   of_alist_report_all_dups$1,
                   of_alist_or_error$6,
                   of_alist_exn$6,
                   of_alist_multi$6,
                   create_mapped$1,
                   create_with_key$1,
                   create_with_key_or_error$1,
                   create_with_key_exn$1,
                   group$3,
                   sexp_of_key,
                   clear$3,
                   copy$7,
                   fold$17,
                   iter_keys$2,
                   iter$21,
                   iteri$9,
                   existsi$8,
                   exists$14,
                   for_alli$8,
                   for_all$13,
                   counti$8,
                   count$13,
                   length$21,
                   is_empty$14,
                   mem$14,
                   remove$8,
                   choose$2,
                   choose_exn$3,
                   set$8,
                   add$8,
                   add_exn$2,
                   change$2,
                   update$1,
                   map$34,
                   mapi$10,
                   filter_map$12,
                   filter_mapi$7,
                   filter_keys$2,
                   filter$12,
                   filteri$7,
                   partition_map$3,
                   partition_mapi$2,
                   partition_tf$7,
                   partitioni_tf$3,
                   find_or_add,
                   findi_or_add,
                   find$15,
                   find_exn$9,
                   find_and_call$0,
                   findi_and_call$0,
                   find_and_remove,
                   merge$6,
                   merge_into,
                   to_list$12,
                   data$2,
                   filter_keys_inplace,
                   filter_inplace$1,
                   filteri_inplace$1,
                   map_inplace$0,
                   mapi_inplace$0,
                   filter_map_inplace,
                   filter_mapi_inplace,
                   similar,
                   similar,
                   to_alist$2,
                   validate$2,
                   incr$6,
                   decr$6,
                   add_multi$2,
                   remove_multi$2,
                   find_multi$2,
                   hashable_s,
                   invariant$11,
                   Creators,
                   _fu_,
                   M$1,
                   sexp_of_m_t$1,
                   m_t_of_sexp$1,
                   Private$4];
                caml_register_global(1089,Base_Hashtbl,"Base__Hashtbl");
                var
                 Make_creators_check=function(Type,Elt,Options,M){return [0]},
                 Check_creators_is_specializati=function(M){return [0]},
                 Check=[0,Make_creators_check,Check_creators_is_specializati],
                 Base_Hash_set_intf=[0,Check];
                caml_register_global
                 (1090,Base_Hash_set_intf,"Base__Hash_set_intf");
                var
                 hashable$1=Private$4[1],
                 poly_hashable=_fu_[3],
                 is_empty$15=function(t){return is_empty$14(t)},
                 find_map$10=
                  function(t,f)
                   {return with_return
                            (function(r)
                              {iter_keys$2
                                (t,
                                 function(elt)
                                  {var o=caml_call1(f,elt);return o?caml_call1(r,o):0});
                               return 0})},
                 find$16=
                  function(t,f)
                   {return find_map$10
                            (t,function(a){return caml_call1(f,a)?[0,a]:0})},
                 add$9=function(t,k){return set$8(t,k,0)},
                 strict_add=
                  function(t,k)
                   {return mem$14(t,k)
                            ?error_string(cst_element_already_exists)
                            :(set$8(t,k,0),_fv_)},
                 strict_add_exn=
                  function(t,k){return ok_exn$0(strict_add(t,k))},
                 strict_remove=
                  function(t,k)
                   {return mem$14(t,k)
                            ?(remove$8(t,k),_fw_)
                            :error$0(0,cst_element_not_in_set,k,sexp_of_key(t))},
                 strict_remove_exn=
                  function(t,k){return ok_exn$0(strict_remove(t,k))},
                 fold$18=
                  function(t,init,f)
                   {return fold$17
                            (t,
                             init,
                             function(key,param,acc){return caml_call2(f,acc,key)})},
                 iter$22=function(t,f){return iter_keys$2(t,f)},
                 count$14=function(t,f){return count(fold$18,t,f)},
                 sum$10=function(m,t,f){return sum(fold$18,m,t,f)},
                 min_elt$14=
                  function(t,compare){return min_elt(fold$18,t,compare)},
                 max_elt$14=
                  function(t,compare){return max_elt(fold$18,t,compare)},
                 fold_result$9=
                  function(t,init,f){return fold_result(fold$18,init,f,t)},
                 fold_until$10=
                  function(t,init,f)
                   {return function(_iT_)
                     {return fold_until(fold$18,init,f,_iT_,t)}},
                 sexp_of_t$61=
                  function(sexp_of_e,t)
                   {var _iS_=to_list$12(t);
                    return caml_call2
                            (sexp_of_t$10,
                             sexp_of_e,
                             func(_iS_,caml_call1(hashable$1,t)[2]))},
                 to_array$11=
                  function(t)
                   {var len=t[2],index=[0,len - 1 | 0];
                    return fold$18
                            (t,
                             [0],
                             function(acc,key)
                              {if(caml_call2(symbol$81,acc.length - 1,0))
                                return caml_make_vect(len,key);
                               index[1] = index[1] - 1 | 0;
                               var _iR_=index[1];
                               caml_check_bound(acc,_iR_)[1 + _iR_] = key;
                               return acc})},
                 exists$15=
                  function(t,f)
                   {return existsi$8
                            (t,function(key,param){return caml_call1(f,key)})},
                 for_all$14=
                  function(t,f)
                   {return 1
                           -
                           existsi$8
                            (t,function(key,param){return 1 - caml_call1(f,key)})},
                 equal$46=
                  function(t1,t2)
                   {return similar(t1,t2,function(param,_iQ_){return 1})},
                 copy$8=function(t){return copy$7(t)},
                 filter$13=
                  function(t,f)
                   {return filteri$7
                            (t,function(key,param){return caml_call1(f,key)})},
                 union$2=
                  function(t1,t2)
                   {return merge$6(t1,t2,function(param,_iP_){return _fx_})},
                 diff$2=
                  function(t1,t2)
                   {return filter$13
                            (t1,function(key){return 1 - mem$14(t2,key)})},
                 inter$2=
                  function(smaller,larger)
                   {if(caml_call2(symbol$82,smaller[2],larger[2]))
                     var larger$0=smaller,smaller$0=larger;
                    else
                     var larger$0=larger,smaller$0=smaller;
                    return filteri$7
                            (smaller$0,function(key,param){return mem$14(larger$0,key)})},
                 filter_inplace$2=
                  function(t,f)
                   {var
                     to_remove=
                      fold$18
                       (t,0,function(ac,x){return caml_call1(f,x)?ac:[0,x,ac]});
                    return iter$0(to_remove,function(x){return remove$8(t,x)})},
                 of_hashtbl_keys=
                  function(hashtbl)
                   {return map$34(hashtbl,function(_iO_){return 0})},
                 to_hashtbl=
                  function(t,f)
                   {return mapi$10
                            (t,function(key,param){return caml_call1(f,key)})},
                 create$18=
                  function(growth_allowed,size,m)
                   {return create$17(growth_allowed,size,m)},
                 of_list$12=
                  function(growth_allowed,size,m,l)
                   {if(size)
                     var x=size[1],size$0=x;
                    else
                     var size$0=caml_call1(length,l);
                    var t=create$17(growth_allowed,[0,size$0],m);
                    iter$0(l,function(k){return add$9(t,k)});
                    return t},
                 t_of_sexp$38=
                  function(m,e_of_sexp,sexp)
                   {if(0 === sexp[0])
                     return caml_call2
                             (of_sexp_error,cst_Hash_set_t_of_sexp_require,sexp);
                    var
                     list=sexp[1],
                     t=create$18(0,[0,caml_call1(length,list)],m);
                    iter$0
                     (list,
                      function(sexp)
                       {var e=caml_call1(e_of_sexp,sexp),match=strict_add(t,e);
                        return 0 === match[0]
                                ?0
                                :caml_call2
                                  (of_sexp_error,cst_Hash_set_t_of_sexp_got_a_d,sexp)});
                    return t},
                 Creators$0=
                  function(Elt)
                   {function create(growth_allowed,size,param)
                     {return create$18
                              (growth_allowed,size,caml_call1(to_key$0,Elt[1]))}
                    function of_list(growth_allowed,size,l)
                     {return of_list$12
                              (growth_allowed,size,caml_call1(to_key$0,Elt[1]),l)}
                    function t_of_sexp(e_of_sexp,sexp)
                     {return t_of_sexp$38
                              (caml_call1(to_key$0,Elt[1]),e_of_sexp,sexp)}
                    return [0,t_of_sexp,create,of_list]},
                 _fy_=Creators$0([0,poly_hashable]),
                 t_of_sexp$39=_fy_[1],
                 create$19=_fy_[2],
                 of_list$13=_fy_[3],
                 M$2=function(Elt){return [0]},
                 sexp_of_m_t$2=function(Elt,t){return sexp_of_t$61(Elt[1],t)},
                 m_t_of_sexp$2=
                  function(Elt,sexp)
                   {return t_of_sexp$38([0,Elt[2],Elt[3],Elt[4]],Elt[1],sexp)},
                 hashable$2=Private$4[1],
                 Private$5=[0,hashable$2],
                 Base_Hash_set=
                  [0,
                   sexp_of_t$61,
                   create$18,
                   of_list$12,
                   length$21,
                   is_empty$15,
                   iter$22,
                   fold$18,
                   fold_result$9,
                   fold_until$10,
                   exists$15,
                   for_all$14,
                   count$14,
                   sum$10,
                   find$16,
                   find_map$10,
                   to_list$12,
                   to_array$11,
                   min_elt$14,
                   max_elt$14,
                   mem$14,
                   copy$8,
                   add$9,
                   strict_add,
                   strict_add_exn,
                   remove$8,
                   strict_remove,
                   strict_remove_exn,
                   clear$3,
                   equal$46,
                   filter$13,
                   filter_inplace$2,
                   inter$2,
                   union$2,
                   diff$2,
                   of_hashtbl_keys,
                   to_hashtbl,
                   hashable_s,
                   [0,
                    t_of_sexp$39,
                    sexp_of_t$61,
                    create$19,
                    of_list$13,
                    length$21,
                    is_empty$15,
                    iter$22,
                    fold$18,
                    fold_result$9,
                    fold_until$10,
                    exists$15,
                    for_all$14,
                    count$14,
                    sum$10,
                    find$16,
                    find_map$10,
                    to_list$12,
                    to_array$11,
                    min_elt$14,
                    max_elt$14,
                    mem$14,
                    copy$8,
                    add$9,
                    strict_add,
                    strict_add_exn,
                    remove$8,
                    strict_remove,
                    strict_remove_exn,
                    clear$3,
                    equal$46,
                    filter$13,
                    filter_inplace$2,
                    inter$2,
                    union$2,
                    diff$2,
                    of_hashtbl_keys,
                    to_hashtbl],
                   M$2,
                   sexp_of_m_t$2,
                   m_t_of_sexp$2,
                   Creators$0,
                   Private$5];
                caml_register_global(1091,Base_Hash_set,"Base__Hash_set");
                var
                 hash$22=function(x){return caml_call1(specialized_hash,x)},
                 compare$61=include$7[9],
                 include$79=_ap_([0,compare$61,sexp_of_t$5]),
                 _fz_=include$79[1],
                 to_float$6=function(x){return x},
                 of_float$5=function(x){return x},
                 of_string$23=
                  function(s)
                   {try
                     {var _iM_=caml_float_of_string(s);return _iM_}
                    catch(_iN_){return caml_call2(invalid_argf(_fA_),s,0)}},
                 to_string$25=
                  function(x)
                   {var
                     y=caml_format_float(cst_15g,x),
                     _iL_=caml_float_of_string(y),
                     y$0=
                      caml_call2(include$7[4],_iL_,x)
                       ?y
                       :caml_format_float(cst_17g,x),
                     l=caml_ml_string_length(y$0),
                     i=0;
                    for(;;)
                     {if(caml_call2(include$1[6],i,l))
                       return caml_call2(symbol$77,y$0,cst$34);
                      var match=caml_string_get(y$0,i),switch$0=0;
                      if(48 <= match)
                       {if(! (58 <= match))switch$0 = 1}
                      else
                       if(45 === match)switch$0 = 1;
                      if(switch$0){var i$0=i + 1 | 0,i=i$0;continue}
                      return y$0}},
                 min_positive_subnormal_value=4.94065645841e-324,
                 min_positive_normal_value=2.22507385850720138e-308,
                 zero$7=0.,
                 one$6=1.,
                 minus_one$5=-1.,
                 pi=3.14159265358979312,
                 sqrt_pi=1.7724538509055161,
                 sqrt_2pi=2.50662827463100069,
                 euler=0.577215664901532866,
                 of_int63=function(i){return to_float$5(i)},
                 of_int64$2=caml_int64_to_float,
                 to_int64$2=caml_int64_of_float,
                 iround_lbound=lower_bound_for_int(num_bits),
                 iround_ubound=upper_bound_for_int(num_bits),
                 iround_up=
                  function(t)
                   {if(caml_call2(include$7[5],t,0.))
                     {var t$0=Math.ceil(t);
                      return caml_call2(include$7[2],t$0,iround_ubound)
                              ?[0,t$0 | 0]
                              :0}
                    return caml_call2(include$7[6],t,iround_lbound)?[0,t | 0]:0},
                 iround_up_exn=
                  function(t)
                   {if(caml_call2(include$7[5],t,0.))
                     {var t$0=Math.ceil(t);
                      return caml_call2(include$7[2],t$0,iround_ubound)
                              ?t$0 | 0
                              :caml_call2(invalid_argf(_fB_),t + 0.,0)}
                    return caml_call2(include$7[6],t,iround_lbound)
                            ?t | 0
                            :caml_call2(invalid_argf(_fC_),t + 0.,0)},
                 iround_down=
                  function(t)
                   {if(caml_call2(include$7[6],t,0.))
                     return caml_call2(include$7[2],t,iround_ubound)?[0,t | 0]:0;
                    var t$0=Math.floor(t);
                    return caml_call2(include$7[6],t$0,iround_lbound)
                            ?[0,t$0 | 0]
                            :0},
                 iround_down_exn=
                  function(t)
                   {if(caml_call2(include$7[6],t,0.))
                     return caml_call2(include$7[2],t,iround_ubound)
                             ?t | 0
                             :caml_call2(invalid_argf(_fD_),t + 0.,0);
                    var t$0=Math.floor(t);
                    return caml_call2(include$7[6],t$0,iround_lbound)
                            ?t$0 | 0
                            :caml_call2(invalid_argf(_fE_),t + 0.,0)},
                 iround_towards_zero=
                  function(t)
                   {if
                     (caml_call2(include$7[6],t,iround_lbound)
                      &&
                      caml_call2(include$7[2],t,iround_ubound))
                     return [0,t | 0];
                    return 0},
                 iround_towards_zero_exn=
                  function(t)
                   {if
                     (caml_call2(include$7[6],t,iround_lbound)
                      &&
                      caml_call2(include$7[2],t,iround_ubound))
                     return t | 0;
                    return caml_call2(invalid_argf(_fF_),t + 0.,0)},
                 one_ulp_less_than_half=one_ulp(759637122,0.5),
                 round_nearest_lb=-4503599627370496.,
                 round_nearest_ub=4503599627370496.,
                 add_half_for_round_nearest=
                  function(t)
                   {var
                     _iK_=
                      caml_call2(include$7[4],t,one_ulp_less_than_half)
                       ?one_ulp_less_than_half
                       :0.5;
                    return t + _iK_},
                 iround_nearest_32=
                  function(t)
                   {if(caml_call2(include$7[6],t,0.))
                     {var t$0=add_half_for_round_nearest(t);
                      return caml_call2(include$7[2],t$0,iround_ubound)
                              ?[0,t$0 | 0]
                              :0}
                    var t$1=Math.floor(t + 0.5);
                    return caml_call2(include$7[6],t$1,iround_lbound)
                            ?[0,t$1 | 0]
                            :0},
                 iround_nearest_64=
                  function(t)
                   {return caml_call2(include$7[6],t,0.)
                            ?caml_call2(include$7[1],t,round_nearest_ub)
                              ?[0,add_half_for_round_nearest(t) | 0]
                              :caml_call2(include$7[2],t,iround_ubound)?[0,t | 0]:0
                            :caml_call2(include$7[5],t,round_nearest_lb)
                              ?[0,Math.floor(t + 0.5) | 0]
                              :caml_call2(include$7[6],t,iround_lbound)?[0,t | 0]:0},
                 iround_nearest_64$0=
                  word_size?iround_nearest_64:iround_nearest_32,
                 iround_nearest_exn_32=
                  function(t)
                   {if(caml_call2(include$7[6],t,0.))
                     {var t$0=add_half_for_round_nearest(t);
                      return caml_call2(include$7[2],t$0,iround_ubound)
                              ?t$0 | 0
                              :caml_call2(invalid_argf(_fG_),t + 0.,0)}
                    var t$1=Math.floor(t + 0.5);
                    return caml_call2(include$7[6],t$1,iround_lbound)
                            ?t$1 | 0
                            :caml_call2(invalid_argf(_fH_),t + 0.,0)},
                 iround_nearest_exn_64=
                  function(t)
                   {return caml_call2(include$7[6],t,0.)
                            ?caml_call2(include$7[1],t,round_nearest_ub)
                              ?add_half_for_round_nearest(t) | 0
                              :caml_call2(include$7[2],t,iround_ubound)
                                ?t | 0
                                :caml_call2(invalid_argf(_fI_),t + 0.,0)
                            :caml_call2(include$7[5],t,round_nearest_lb)
                              ?Math.floor(t + 0.5) | 0
                              :caml_call2(include$7[6],t,iround_lbound)
                                ?t | 0
                                :caml_call2(invalid_argf(_fJ_),t + 0.,0)},
                 iround_nearest_exn=
                  word_size?iround_nearest_exn_64:iround_nearest_exn_32,
                 iround_exn=
                  function(opt,t)
                   {if(opt)var sth=opt[1],dir=sth;else var dir=857423934;
                    return 857423934 <= dir
                            ?1003109192 <= dir
                              ?iround_towards_zero_exn(t)
                              :iround_nearest_exn(t)
                            :759637122 <= dir?iround_down_exn(t):iround_up_exn(t)},
                 iround=
                  function(opt,t)
                   {if(opt)var sth=opt[1],dir=sth;else var dir=857423934;
                    try
                     {var _iI_=[0,iround_exn([0,dir],t)];return _iI_}
                    catch(_iJ_){return 0}},
                 is_inf=
                  function(x)
                   {var match=caml_classify_float(x);return 3 === match?1:0},
                 min_inan=
                  function(x,y)
                   {return is_nan(y)
                            ?x
                            :is_nan(x)?y:caml_call2(include$7[1],x,y)?x:y},
                 max_inan=
                  function(x,y)
                   {return is_nan(y)
                            ?x
                            :is_nan(x)?y:caml_call2(include$7[5],x,y)?x:y},
                 square=function(x){return x * x},
                 fractional=function(t){return t[1]},
                 integral=function(t){return t[2]},
                 round_towards_zero$5=
                  function(t)
                   {return caml_call2(include$7[6],t,0.)
                            ?Math.floor(t)
                            :Math.ceil(t)},
                 round_nearest$5=
                  function(t)
                   {if
                     (caml_call2(include$7[5],t,round_nearest_lb)
                      &&
                      caml_call2(include$7[1],t,round_nearest_ub))
                     return Math.floor(add_half_for_round_nearest(t));
                    return t + 0.},
                 round_nearest_half_to_even=
                  function(t)
                   {if
                     (!
                      caml_call2(include$7[2],t,round_nearest_lb)
                      &&
                      !
                      caml_call2(include$7[6],t,round_nearest_ub))
                     {var
                       floor=Math.floor(t),
                       ceil_or_succ=floor + 1.,
                       diff_floor=t - floor,
                       diff_ceil=ceil_or_succ - t;
                      return caml_call2(include$7[1],diff_floor,diff_ceil)
                              ?floor
                              :caml_call2(include$7[5],diff_floor,diff_ceil)
                                ?ceil_or_succ
                                :caml_call2(include$7[4],floor % 2.,0.)?floor:ceil_or_succ}
                    return t + 0.},
                 int63_round_lbound=lower_bound_for_int(num_bits$5),
                 int63_round_ubound=upper_bound_for_int(num_bits$5),
                 int63_round_up_exn=
                  function(t)
                   {if(caml_call2(include$7[5],t,0.))
                     {var t$0=Math.ceil(t);
                      return caml_call2(include$7[2],t$0,int63_round_ubound)
                              ?of_float_unchecked$4(t$0)
                              :caml_call2(invalid_argf(_fK_),t + 0.,0)}
                    return caml_call2(include$7[6],t,int63_round_lbound)
                            ?of_float_unchecked$4(t)
                            :caml_call2(invalid_argf(_fL_),t + 0.,0)},
                 int63_round_down_exn=
                  function(t)
                   {if(caml_call2(include$7[6],t,0.))
                     return caml_call2(include$7[2],t,int63_round_ubound)
                             ?of_float_unchecked$4(t)
                             :caml_call2(invalid_argf(_fM_),t + 0.,0);
                    var t$0=Math.floor(t);
                    return caml_call2(include$7[6],t$0,int63_round_lbound)
                            ?of_float_unchecked$4(t$0)
                            :caml_call2(invalid_argf(_fN_),t + 0.,0)},
                 int63_round_nearest_portable_a=
                  function(t0)
                   {var t=round_nearest$5(t0);
                    return caml_call2(include$7[5],t,0.)
                            ?caml_call2(include$7[2],t,int63_round_ubound)
                              ?of_float_unchecked$4(t)
                              :caml_call2(invalid_argf(_fO_),t0 + 0.,0)
                            :caml_call2(include$7[6],t,int63_round_lbound)
                              ?of_float_unchecked$4(t)
                              :caml_call2(invalid_argf(_fP_),t0 + 0.,0)},
                 int63_round_nearest_arch64_noa=
                  function(f){return of_int$6(iround_nearest_exn(f))},
                 int63_round_nearest_exn=
                  word_size
                   ?int63_round_nearest_arch64_noa
                   :int63_round_nearest_portable_a,
                 round$5=
                  function(opt,t)
                   {if(opt)var sth=opt[1],dir=sth;else var dir=857423934;
                    return 857423934 <= dir
                            ?1003109192 <= dir
                              ?round_towards_zero$5(t)
                              :round_nearest$5(t)
                            :759637122 <= dir?Math.floor(t):Math.ceil(t)},
                 compare$62=caml_int_compare,
                 t_of_sexp$40=
                  function(sexp)
                   {if(0 === sexp[0])
                     {var
                       _iC_=sexp[1],
                       _iD_=caml_string_compare(_iC_,cst_infinite),
                       switch$0=0;
                      if(0 <= _iD_)
                       if(0 < _iD_)
                        if(caml_string_notequal(_iC_,cst_nan$1))
                         if(caml_string_notequal(_iC_,cst_normal))
                          if(caml_string_notequal(_iC_,cst_subnormal))
                           {if(! caml_string_notequal(_iC_,cst_zero$3))switch$0 = 5}
                          else
                           switch$0 = 4;
                         else
                          switch$0 = 3;
                        else
                         switch$0 = 2;
                       else
                        switch$0 = 1;
                      else
                       if(caml_string_notequal(_iC_,cst_Infinite))
                        if(caml_string_notequal(_iC_,cst_Nan$1))
                         if(caml_string_notequal(_iC_,cst_Normal))
                          if(caml_string_notequal(_iC_,cst_Subnormal))
                           {if(! caml_string_notequal(_iC_,cst_Zero$3))switch$0 = 5}
                          else
                           switch$0 = 4;
                         else
                          switch$0 = 3;
                        else
                         switch$0 = 2;
                       else
                        switch$0 = 1;
                      switch(switch$0)
                       {case 1:return 0;
                        case 2:return 1;
                        case 3:return 2;
                        case 4:return 3;
                        case 5:return 4
                        }}
                    else
                     {var _iE_=sexp[1];
                      if(! _iE_)
                       return caml_call2
                               (Sexplib0_Sexp_conv_error[7],tp_loc$10,sexp);
                      var _iF_=_iE_[1];
                      if(0 !== _iF_[0])
                       return caml_call2
                               (Sexplib0_Sexp_conv_error[6],tp_loc$10,sexp);
                      var
                       _iG_=_iF_[1],
                       _iH_=caml_string_compare(_iG_,cst_infinite$0),
                       switch$1=0;
                      if(0 <= _iH_)
                       if(0 < _iH_)
                        if(caml_string_notequal(_iG_,cst_nan$2))
                         if(caml_string_notequal(_iG_,cst_normal$0))
                          if(caml_string_notequal(_iG_,cst_subnormal$0))
                           {if(! caml_string_notequal(_iG_,cst_zero$4))switch$1 = 5}
                          else
                           switch$1 = 4;
                         else
                          switch$1 = 3;
                        else
                         switch$1 = 2;
                       else
                        switch$1 = 1;
                      else
                       if(caml_string_notequal(_iG_,cst_Infinite$0))
                        if(caml_string_notequal(_iG_,cst_Nan$2))
                         if(caml_string_notequal(_iG_,cst_Normal$0))
                          if(caml_string_notequal(_iG_,cst_Subnormal$0))
                           {if(! caml_string_notequal(_iG_,cst_Zero$4))switch$1 = 5}
                          else
                           switch$1 = 4;
                         else
                          switch$1 = 3;
                        else
                         switch$1 = 2;
                       else
                        switch$1 = 1;
                      switch(switch$1)
                       {case 1:
                         return caml_call2
                                 (Sexplib0_Sexp_conv_error[3],tp_loc$10,sexp);
                        case 2:
                         return caml_call2
                                 (Sexplib0_Sexp_conv_error[3],tp_loc$10,sexp);
                        case 3:
                         return caml_call2
                                 (Sexplib0_Sexp_conv_error[3],tp_loc$10,sexp);
                        case 4:
                         return caml_call2
                                 (Sexplib0_Sexp_conv_error[3],tp_loc$10,sexp);
                        case 5:
                         return caml_call2
                                 (Sexplib0_Sexp_conv_error[3],tp_loc$10,sexp)
                        }}
                    return caml_call2
                            (Sexplib0_Sexp_conv_error[8],tp_loc$10,sexp)},
                 sexp_of_t$62=
                  function(param)
                   {switch(param)
                     {case 0:return _fQ_;
                      case 1:return _fR_;
                      case 2:return _fS_;
                      case 3:return _fT_;
                      default:return _fU_}},
                 to_string$26=
                  function(t){return caml_call1(t_of_sexp$2,sexp_of_t$62(t))},
                 of_string$24=
                  function(s){return t_of_sexp$40(caml_call1(sexp_of_t$2,s))},
                 classify=
                  function(t)
                   {var match=caml_classify_float(t);
                    switch(match)
                     {case 0:return 2;
                      case 1:return 3;
                      case 2:return 4;
                      case 3:return 0;
                      default:return 1}},
                 is_finite=
                  function(t)
                   {var _iz_=caml_call2(include$7[4],t,infinity$1);
                    if(_iz_)
                     var _iA_=_iz_;
                    else
                     var
                      _iB_=caml_call2(include$7[4],t,neg_infinity$1),
                      _iA_=_iB_ || is_nan(t);
                    return 1 - _iA_},
                 insert_underscores$0=
                  function(opt,_iy_,string)
                   {if(opt)var sth=opt[1],delimiter=sth;else var delimiter=95;
                    if(_iy_)
                     var sth$0=_iy_[1],strip_zero=sth$0;
                    else
                     var strip_zero=0;
                    var match=lsplit2(string,46);
                    if(match)
                     {var
                       match$0=match[1],
                       right=match$0[2],
                       left=match$0[1],
                       left$0=insert_delimiter(left,delimiter),
                       right$0=
                        strip_zero
                         ?rstrip
                           ([0,function(c){return caml_call2(symbol$122,c,48)}],right)
                         :right;
                      return caml_string_notequal(right$0,cst$35)
                              ?caml_call2
                                (symbol$77,left$0,caml_call2(symbol$77,cst$36,right$0))
                              :left$0}
                    return insert_delimiter(string,delimiter)},
                 to_string_hum$7=
                  function(delimiter,opt,strip_zero,f)
                   {if(opt)var sth=opt[1],decimals=sth;else var decimals=3;
                    if(caml_call2(include$1[1],decimals,0))
                     caml_call2(invalid_argf(_fV_),decimals,0);
                    var match=classify(f);
                    return 1 === match
                            ?cst_nan$3
                            :match
                              ?insert_underscores$0
                                (delimiter,strip_zero,caml_call3(sprintf,_fW_,decimals,f))
                              :caml_call2(include$7[5],f,0.)?cst_inf:cst_inf$0},
                 sexp_of_float=
                  function(t)
                   {var sexp=caml_call1(sexp_of_t$5,t);
                    if(1009018843 <= of_float_style[1])return sexp;
                    if(0 === sexp[0])
                     {var string=sexp[1];
                      return contains(0,0,string,69)
                              ?sexp
                              :[0,insert_underscores$0(0,0,string)]}
                    return raise_s
                            (caml_call2
                              (message,
                               cst_sexp_of_float_produced_str,
                               [0,[0,cst_sexp,caml_call1(sexp_of_t,sexp)],0]))},
                 to_padded_compact_string_custo=
                  function(t,opt,kilo,mega,giga,tera,peta,param)
                   {if(opt)var sth=opt[1],prefix=sth;else var prefix=cst$38;
                    var match=classify(t);
                    if(1 === match)return cst_nan$4;
                    if(match)
                     {var
                       go=
                        function(t)
                         {function conv(mag,t,denominator)
                           {var switch$0=0;
                            if
                             (caml_call2(include$7[4],denominator,100.)
                              &&
                              caml_call2(include$7[6],t,999.95))
                             switch$0 = 1;
                            if(! switch$0)
                             {var switch$1=0;
                              if(caml_call2(include$7[6],denominator,100000.))
                               {var _ix_=round_nearest$5(denominator * 9.9995);
                                if(! caml_call2(include$7[6],t,_ix_))switch$1 = 1}
                              else
                               switch$1 = 1;
                              if(switch$1)throw [0,Assert_failure,_f3_]}
                            var _iw_=round_nearest$5(denominator * 9999.5);
                            if(caml_call2(include$7[1],t,_iw_))
                             {var
                               k=Math.floor(t / denominator),
                               lower=denominator * k,
                               higher=denominator * (k + 1.),
                               diff_right=higher - t,
                               diff_left=t - lower,
                               k$0=iround_nearest_exn(k),
                               k$1=
                                caml_call2(include$7[1],diff_right,diff_left)
                                 ?k$0 + 1 | 0
                                 :caml_call2(include$7[5],diff_right,diff_left)
                                   ?k$0
                                   :caml_call2(include$1[4],k$0 % 2 | 0,0)?k$0:k$0 + 1 | 0,
                               d=k$1 % 10 | 0,
                               i=k$1 / 10 | 0;
                              if
                               (caml_call2(include$1[2],0,i)
                                &&
                                caml_call2(include$1[1],i,1000))
                               {if
                                 (caml_call2(include$1[2],0,d)
                                  &&
                                  caml_call2(include$1[1],d,10))
                                 return caml_call2(include$1[4],d,0)
                                         ?caml_call4(sprintf,_fY_,prefix,i,mag)
                                         :caml_call5(sprintf,_fZ_,prefix,i,mag,d);
                                throw [0,Assert_failure,_f0_]}
                              throw [0,Assert_failure,_f1_]}
                            throw [0,Assert_failure,_f2_]}
                          if(caml_call2(include$7[1],t,999.95))
                           {if
                             (caml_call2(include$7[2],0.,t)
                              &&
                              caml_call2(include$7[1],t,999.95))
                             {var
                               x=
                                caml_call2(symbol$77,prefix,caml_format_float(cst_1f,t));
                              if(is_suffix$0(x,cst_0))
                               {var
                                 x$0=caml_call1(of_string$5,x),
                                 n=caml_ml_bytes_length(x$0);
                                caml_bytes_set(x$0,n - 1 | 0,32);
                                caml_bytes_set(x$0,n - 2 | 0,32);
                                return unsafe_to_string(x$0)}
                              return x}
                            throw [0,Assert_failure,_fX_]}
                          if(caml_call2(include$7[1],t,999950.))
                           return conv(kilo,t,100.);
                          if(caml_call2(include$7[1],t,999950000.))
                           return conv(mega,t,100000.);
                          if(caml_call2(include$7[1],t,999950000000.))
                           return conv(giga,t,100000000.);
                          if(caml_call2(include$7[1],t,999950000000000.))
                           return conv(tera,t,100000000000.);
                          if(peta)
                           {var peta$0=peta[1];
                            return caml_call2(include$7[1],t,999950000000000000.)
                                    ?conv(peta$0,t,100000000000000.)
                                    :caml_call3(sprintf,_f4_,prefix,t)}
                          return caml_call3(sprintf,_f5_,prefix,t)};
                      return caml_call2(include$7[6],t,0.)
                              ?go(t)
                              :caml_call2(symbol$77,cst$37,go(- t))}
                    return caml_call2(include$7[1],t,0.)?cst_inf$1:cst_inf$2},
                 to_padded_compact_string=
                  function(t)
                   {return to_padded_compact_string_custo
                            (t,0,cst_k,cst_m,cst_g,cst_t$1,_f6_,0)},
                 int_pow$0=
                  function(x,n)
                   {if(caml_call2(include$1[4],n,0))return 1.;
                    var x$0=[0,x - 0.],n$0=[0,n],accum=[0,1.];
                    if(caml_call2(include$1[1],n$0[1],0))
                     {x$0[1] = 1. / x$0[1];
                      n$0[1] = - n$0[1] | 0;
                      if(caml_call2(include$1[1],n$0[1],0))
                       {accum[1] = x$0[1];decr(n$0)}}
                    for(;;)
                     {if(caml_call2(include$1[5],n$0[1],1))
                       {if(caml_call2(include$1[3],n$0[1] & 1,0))
                         accum[1] = x$0[1] * accum[1];
                        x$0[1] = x$0[1] * x$0[1];
                        n$0[1] = n$0[1] >>> 1 | 0;
                        continue}
                      return x$0[1] * accum[1]}},
                 round_gen=
                  function(x,how)
                   {if(caml_call2(include$7[4],x,0.))return 0.;
                    if(is_finite(x))
                     {if(555917426 <= how[1])
                       var
                        sd=how[2],
                        dd=
                         sd
                         -
                         to_int$3(Math.ceil(caml_log10_float(Math.abs(x))))
                         |
                         0,
                        dd$0=dd,
                        sd$0=sd;
                      else
                       var
                        dd$1=how[2],
                        sd$1=
                         dd$1
                         +
                         to_int$3(Math.ceil(caml_log10_float(Math.abs(x))))
                         |
                         0,
                        dd$0=dd$1,
                        sd$0=sd$1;
                      if(caml_call2(include$1[1],sd$0,0))return 0.;
                      if(caml_call2(include$1[6],sd$0,17))return x;
                      var abs_dd=abs$2(dd$0);
                      if
                       (!
                        caml_call2(include$1[5],abs_dd,22)
                        &&
                        !
                        caml_call2(include$1[6],sd$0,16))
                       {var order=int_pow$0(10.,abs_dd);
                        return caml_call2(include$1[6],dd$0,0)
                                ?round_nearest_half_to_even(x * order) / order
                                :round_nearest_half_to_even(x / order) * order}
                      return of_string$23(caml_call3(sprintf,_f7_,sd$0,x))}
                    return x},
                 round_significant=
                  function(x,significant_digits)
                   {if(caml_call2(include$1[2],significant_digits,0))
                     {var
                       _iv_=
                        caml_call2
                         (symbol$77,
                          cst_Float_round_significant_in,
                          caml_call1(to_string,significant_digits));
                      throw [0,Stdlib[6],_iv_]}
                    return round_gen(x,[0,555917426,significant_digits])},
                 round_decimal=
                  function(x,decimal_digits)
                   {return round_gen(x,[0,-352548012,decimal_digits])},
                 between$15=
                  function(t,low,high)
                   {var _iu_=caml_call2(include$7[2],low,t);
                    return _iu_?caml_call2(include$7[2],t,high):_iu_},
                 clamp_exn$15=
                  function(t,min,max)
                   {if(caml_call2(include$7[2],min,max))
                     return clamp_unchecked(t,min,max);
                    throw [0,Assert_failure,_f8_]},
                 clamp$15=
                  function(t,min,max)
                   {if(caml_call2(include$7[2],min,max))
                     return [0,clamp_unchecked(t,min,max)];
                    var _it_=[0,[0,cst_max$9,caml_call1(sexp_of_t$5,max)],0];
                    return error_s
                            (caml_call2
                              (message,
                               cst_clamp_requires_min_max$9,
                               [0,[0,cst_min$9,caml_call1(sexp_of_t$5,min)],_it_]))},
                 sign_exn=
                  function(t)
                   {return caml_call2(include$7[5],t,0.)
                            ?2
                            :caml_call2(include$7[1],t,0.)
                              ?0
                              :caml_call2(include$7[4],t,0.)
                                ?1
                                :raise_s
                                  (caml_call2
                                    (message,
                                     cst_Float_sign_exn_of_NAN,
                                     [0,[0,cst$39,sexp_of_float(t)],0]))},
                 sign_or_nan=
                  function(t)
                   {return caml_call2(include$7[5],t,0.)
                            ?2
                            :caml_call2(include$7[1],t,0.)
                              ?0
                              :caml_call2(include$7[4],t,0.)?1:3},
                 ieee_negative=
                  function(t)
                   {var bits=caml_int64_bits_of_float(t);
                    return caml_lessthan(bits,Stdlib_int64[1])},
                 exponent_mask64=
                  caml_int64_sub(caml_int64_shift_left(one$1,11),one$1),
                 exponent_mask=int64_to_int_exn(exponent_mask64),
                 mantissa_mask=_e$_(shift_left$0(one$5,52),one$5),
                 mantissa_mask64=to_int64$1(mantissa_mask),
                 ieee_exponent=
                  function(t)
                   {var bits=caml_int64_bits_of_float(t);
                    return caml_int64_to_int32
                            (caml_int64_and
                              (caml_int64_shift_right_unsigne(bits,52),exponent_mask64))},
                 ieee_mantissa=
                  function(t)
                   {var bits=caml_int64_bits_of_float(t);
                    return of_int64_exn$0(caml_int64_and(bits,mantissa_mask64))},
                 create_ieee_exn=
                  function(negative,exponent,mantissa)
                   {if
                     (caml_call2(symbol$168,exponent & exponent_mask,exponent))
                     return caml_call3(failwithf(_f9_),exponent,exponent_mask,0);
                    if
                     (caml_call2
                       (symbol$283,bit_and$0(mantissa,mantissa_mask),mantissa))
                     {var
                       _ir_=caml_call1(to_string$24,mantissa_mask),
                       _is_=caml_call1(to_string$24,mantissa);
                      return caml_call3(failwithf(_f__),_is_,_ir_,0)}
                    var
                     sign_bits=negative?Stdlib_int64[10]:Stdlib_int64[1],
                     expt_bits=
                      caml_int64_shift_left(caml_int64_of_int32(exponent),52),
                     mant_bits=to_int64$1(mantissa),
                     bits=
                      caml_int64_or(sign_bits,caml_int64_or(expt_bits,mant_bits));
                    return caml_int64_float_of_bits(bits)},
                 create_ieee=
                  function(negative,exponent,mantissa)
                   {return try_with$0
                            (0,
                             function(param)
                              {return create_ieee_exn(negative,exponent,mantissa)})},
                 to_string$27=function(x){return caml_call2(sprintf,_f$_,x)},
                 sexp_of_t$63=function(x){return [0,to_string$27(x)]},
                 of_string$25=function(x){return of_string$23(x)},
                 validate_ordinary=
                  function(t)
                   {var match=classify(t),_iq_=1 === match?_ga_:match?0:_gb_;
                    return of_error_opt(_iq_)},
                 ZZ=Validate([0,compare$61,sexp_of_t$5]),
                 validate_bound$15=
                  function(min,max,t)
                   {var _ip_=caml_call3(ZZ[3],min,max,t);
                    return first_failure(validate_ordinary(t),_ip_)},
                 validate_lbound$15=
                  function(min,t)
                   {var _io_=caml_call2(ZZ[1],min,t);
                    return first_failure(validate_ordinary(t),_io_)},
                 validate_ubound$15=
                  function(max,t)
                   {var _in_=caml_call2(ZZ[2],max,t);
                    return first_failure(validate_ordinary(t),_in_)},
                 include$80=
                  _a3_
                   ([0,
                     compare$61,
                     sexp_of_t$5,
                     zero$7,
                     validate_lbound$15,
                     validate_ubound$15,
                     validate_bound$15]),
                 validate_positive$5=include$80[1],
                 validate_non_negative$5=include$80[2],
                 validate_negative$5=include$80[3],
                 validate_non_positive$5=include$80[4],
                 sign$5=include$80[9],
                 is_positive$5=
                  function(t){return caml_call2(include$7[5],t,0.)},
                 is_non_negative$5=
                  function(t){return caml_call2(include$7[6],t,0.)},
                 is_negative$5=
                  function(t){return caml_call2(include$7[1],t,0.)},
                 is_non_positive$5=
                  function(t){return caml_call2(include$7[2],t,0.)},
                 include$81=_v_([0,module_name$19,to_string$25]),
                 pp$18=include$81[1],
                 symbol$293=include$7[3],
                 symbol$294=include$7[1],
                 symbol$295=include$7[5],
                 symbol$296=include$7[4],
                 symbol$297=include$7[2],
                 symbol$298=include$7[6],
                 of_float$6=function(x){return x},
                 Private$6=
                  [0,
                   box,
                   clamp_unchecked,
                   lower_bound_for_int,
                   upper_bound_for_int,
                   specialized_hash,
                   one_ulp_less_than_half,
                   int63_round_nearest_portable_a,
                   int63_round_nearest_arch64_noa,
                   iround_nearest_exn_64],
                 symbol$299=include$7[1],
                 symbol$300=include$7[2],
                 symbol$301=include$7[3],
                 symbol$302=include$7[4],
                 symbol$303=include$7[5],
                 symbol$304=include$7[6],
                 ascending$30=include$7[7],
                 descending$31=include$7[8],
                 compare_float$1=include$7[9],
                 equal_float$1=include$7[10],
                 min$36=
                  function(x,y)
                   {if(! is_nan(x) && ! is_nan(y))
                     return caml_call2(symbol$299,x,y)?x:y;
                    return nan$1},
                 max$37=
                  function(x,y)
                   {if(! is_nan(x) && ! is_nan(y))
                     return caml_call2(symbol$303,x,y)?x:y;
                    return nan$1},
                 include$82=[0,add,sub,scale,symbol$9,symbol$106,neg$0],
                 Base_Float=
                  [0,
                   of_float$5,
                   to_float$6,
                   hash_fold_t$6,
                   hash$22,
                   t_of_sexp$5,
                   sexp_of_float,
                   of_string$23,
                   symbol$304,
                   symbol$300,
                   symbol$302,
                   symbol$303,
                   symbol$299,
                   symbol$301,
                   equal_float$1,
                   compare_float$1,
                   min$36,
                   max$37,
                   ascending$30,
                   descending$31,
                   between$15,
                   clamp_exn$15,
                   clamp$15,
                   _fz_,
                   validate_lbound$15,
                   validate_ubound$15,
                   validate_bound$15,
                   pp$18,
                   validate_positive$5,
                   validate_non_negative$5,
                   validate_negative$5,
                   validate_non_positive$5,
                   is_positive$5,
                   is_non_negative$5,
                   is_negative$5,
                   is_non_positive$5,
                   validate_ordinary,
                   nan$1,
                   infinity$1,
                   neg_infinity$1,
                   infinity$1,
                   neg_infinity$1,
                   zero$7,
                   one$6,
                   minus_one$5,
                   pi,
                   sqrt_pi,
                   sqrt_2pi,
                   euler,
                   epsilon_float$1,
                   max_finite_value,
                   min_positive_subnormal_value,
                   min_positive_normal_value,
                   to_int64_preserve_order,
                   to_int64_preserve_order_exn,
                   of_int64_preserve_order,
                   one_ulp,
                   of_int$2,
                   to_int$3,
                   of_int63,
                   of_int64$2,
                   to_int64$2,
                   round$5,
                   iround,
                   iround_exn,
                   round_towards_zero$5,
                   floor,
                   ceil,
                   round_nearest$5,
                   round_nearest_half_to_even,
                   iround_towards_zero,
                   iround_down,
                   iround_up,
                   iround_nearest_64$0,
                   iround_towards_zero_exn,
                   iround_down_exn,
                   iround_up_exn,
                   iround_nearest_exn,
                   int63_round_down_exn,
                   int63_round_up_exn,
                   int63_round_nearest_exn,
                   iround_lbound,
                   iround_ubound,
                   round_significant,
                   round_decimal,
                   is_nan,
                   is_inf,
                   min_inan,
                   max_inan,
                   add,
                   sub,
                   symbol$9,
                   scale,
                   symbol$106,
                   neg$0,
                   [0,fractional,integral],
                   modf,
                   mod_float,
                   add,
                   sub,
                   neg$0,
                   scale,
                   abs_float,
                   [0,
                    add,
                    sub,
                    scale,
                    symbol$9,
                    symbol$106,
                    neg$0,
                    symbol$298,
                    symbol$297,
                    symbol$296,
                    symbol$295,
                    symbol$294,
                    symbol$293,
                    abs_float,
                    neg$0,
                    zero$7,
                    of_int$2,
                    of_float$6],
                   include$82,
                   to_string$25,
                   to_string_hum$7,
                   to_padded_compact_string,
                   to_padded_compact_string_custo,
                   int_pow$0,
                   square,
                   ldexp,
                   frexp,
                   [0,
                    compare$62,
                    all$19,
                    t_of_sexp$40,
                    sexp_of_t$62,
                    of_string$24,
                    to_string$26],
                   classify,
                   is_finite,
                   sign$5,
                   sign_exn,
                   sign_or_nan,
                   create_ieee,
                   create_ieee_exn,
                   ieee_negative,
                   ieee_exponent,
                   ieee_mantissa,
                   [0,t_of_sexp$5,sexp_of_t$63,of_string$25,to_string$27],
                   Private$6];
                caml_register_global(1092,Base_Float,"Base__Float");
                var Base_Fieldslib=[0];
                caml_register_global(1093,Base_Fieldslib,"Base__Fieldslib");
                var Base_Buffer_intf=[0];
                caml_register_global
                 (1094,Base_Buffer_intf,"Base__Buffer_intf");
                var
                 create$20=Stdlib_buffer[1],
                 contents=Stdlib_buffer[2],
                 to_bytes=Stdlib_buffer[3],
                 nth$8=Stdlib_buffer[6],
                 length$22=Stdlib_buffer[7],
                 clear$4=Stdlib_buffer[8],
                 reset$0=Stdlib_buffer[9],
                 add_char=Stdlib_buffer[10],
                 add_string=Stdlib_buffer[14],
                 add_bytes=Stdlib_buffer[15],
                 add_buffer=Stdlib_buffer[19],
                 _gc_=Stdlib_buffer[16],
                 _gd_=Stdlib_buffer[17],
                 add_substring=
                  function(t,s,pos,len){return caml_call4(_gc_,t,s,pos,len)},
                 add_subbytes=
                  function(t,s,pos,len){return caml_call4(_gd_,t,s,pos,len)},
                 sexp_of_t$64=
                  function(t)
                   {return caml_call1(sexp_of_t$2,caml_call1(contents,t))},
                 create$21=caml_create_bytes,
                 unsafe_blit$8=
                  function(src,src_pos,dst,dst_pos,len)
                   {return caml_call5
                            (Stdlib_buffer[5],src,src_pos,dst,dst_pos,len)},
                 To_bytes$0=
                  _ba_([0,length$22],[0,length$8,create$21,unsafe_blit$8]),
                 blit$6=To_bytes$0[1],
                 blito$4=To_bytes$0[2],
                 unsafe_blit$9=To_bytes$0[3],
                 sub$11=To_bytes$0[4],
                 subo$5=To_bytes$0[5],
                 To_string$0=Make_to_string([0],To_bytes$0),
                 Base_Buffer=
                  [0,
                   sexp_of_t$64,
                   create$20,
                   contents,
                   to_bytes,
                   blit$6,
                   blito$4,
                   unsafe_blit$9,
                   sub$11,
                   subo$5,
                   To_string$0,
                   nth$8,
                   length$22,
                   clear$4,
                   reset$0,
                   add_char,
                   add_string,
                   add_substring,
                   add_bytes,
                   add_subbytes,
                   add_buffer];
                caml_register_global(1096,Base_Buffer,"Base__Buffer");
                var
                 elide=[0,am_testing],
                 get$6=
                  function(opt,param)
                   {if(opt)
                     var sth=opt[1],at_most_num_frames=sth;
                    else
                     var at_most_num_frames=max_value$2;
                    return runtime.caml_get_current_callstack
                            (at_most_num_frames)},
                 to_string$28=
                  function(t)
                   {return elide[1]
                            ?elided_message
                            :caml_call1(Stdlib_printexc[13],t)},
                 to_string_list=
                  function(t){return split_lines(to_string$28(t))},
                 sexp_of_t$65=
                  function(t)
                   {function _im_(x){return [0,x]}
                    return [1,map$6(to_string_list(t),_im_)]},
                 set_recording=Stdlib_printexc[7],
                 am_recording=Stdlib_printexc[8],
                 most_recent=
                  function(param){return caml_call1(Stdlib_printexc[11],0)},
                 with_recording=
                  function(b,f)
                   {var saved=caml_call1(am_recording,0);
                    caml_call1(set_recording,b);
                    return protect
                            (f,function(param){return caml_call1(set_recording,saved)})},
                 initialize_module$0=
                  function(param)
                   {var match=getenv(cst_OCAMLRUNPARAM);
                    if(match)
                     var
                      x=match[1],
                      _ij_=function(_il_){return is_prefix$1(_il_,cst_b)},
                      ocamlrunparam_mentions_backtra=exists(split(x,44),_ij_);
                    else
                     var ocamlrunparam_mentions_backtra=0;
                    var _ik_=1 - ocamlrunparam_mentions_backtra;
                    return _ik_?caml_call1(set_recording,1):_ik_},
                 Base_Backtrace=
                  [0,
                   sexp_of_t$65,
                   get$6,
                   to_string$28,
                   to_string_list,
                   elide,
                   [0,am_recording,set_recording,with_recording,most_recent],
                   initialize_module$0];
                caml_register_global(1097,Base_Backtrace,"Base__Backtrace");
                var
                 Exit$1=include$0[3],
                 max_int$1=include$0[7],
                 min_int$1=include$0[8],
                 infinity$2=include$0[10],
                 neg_infinity$2=include$0[11],
                 nan$2=include$0[12],
                 max_float$1=include$0[13],
                 min_float$1=include$0[14],
                 epsilon_float$2=include$0[15],
                 char_of_int$1=include$0[17],
                 string_of_bool$1=include$0[18],
                 bool_of_string_opt$1=include$0[19],
                 bool_of_string$1=include$0[20],
                 string_of_int$1=include$0[21],
                 int_of_string_opt$1=include$0[22],
                 string_of_float$1=include$0[23],
                 float_of_string_opt$1=include$0[24],
                 stdin$1=include$0[26],
                 stdout$1=include$0[27],
                 stderr$1=include$0[28],
                 print_char$1=include$0[29],
                 print_string$1=include$0[30],
                 print_bytes$1=include$0[31],
                 print_int$1=include$0[32],
                 print_float$1=include$0[33],
                 print_endline$1=include$0[34],
                 print_newline$1=include$0[35],
                 prerr_char$1=include$0[36],
                 prerr_string$1=include$0[37],
                 prerr_bytes$1=include$0[38],
                 prerr_int$1=include$0[39],
                 prerr_float$1=include$0[40],
                 prerr_endline$1=include$0[41],
                 prerr_newline$1=include$0[42],
                 read_line$1=include$0[43],
                 read_int_opt$1=include$0[44],
                 read_int$1=include$0[45],
                 read_float_opt$1=include$0[46],
                 read_float$1=include$0[47],
                 open_out$1=include$0[48],
                 open_out_bin$1=include$0[49],
                 open_out_gen$1=include$0[50],
                 flush$1=include$0[51],
                 flush_all$1=include$0[52],
                 output_char$1=include$0[53],
                 output_string$1=include$0[54],
                 output_bytes$1=include$0[55],
                 output$1=include$0[56],
                 output_substring$1=include$0[57],
                 output_byte$1=include$0[58],
                 output_binary_int$1=include$0[59],
                 output_value$1=include$0[60],
                 seek_out$1=include$0[61],
                 pos_out$1=include$0[62],
                 out_channel_length$1=include$0[63],
                 close_out$1=include$0[64],
                 close_out_noerr$1=include$0[65],
                 set_binary_mode_out$1=include$0[66],
                 open_in$1=include$0[67],
                 open_in_bin$1=include$0[68],
                 open_in_gen$1=include$0[69],
                 input_char$1=include$0[70],
                 input_line$1=include$0[71],
                 input$1=include$0[72],
                 really_input$1=include$0[73],
                 really_input_string$1=include$0[74],
                 input_byte$1=include$0[75],
                 input_binary_int$1=include$0[76],
                 input_value$1=include$0[77],
                 seek_in$1=include$0[78],
                 pos_in$1=include$0[79],
                 in_channel_length$1=include$0[80],
                 close_in$1=include$0[81],
                 close_in_noerr$1=include$0[82],
                 set_binary_mode_in$1=include$0[83],
                 string_of_format$1=include$0[84],
                 symbol$305=include$0[85],
                 exit$1=include$0[86],
                 at_exit$1=include$0[87],
                 valid_float_lexem$1=include$0[88],
                 unsafe_really_input$0=include$0[89],
                 do_at_exit$1=include$0[90],
                 Not_found$1=include$0[91],
                 Sexp$0=
                  [0,
                   hash_fold_t,
                   hash,
                   t_of_sexp,
                   sexp_of_t,
                   Not_found_s,
                   Of_sexp_error,
                   message,
                   default_indent,
                   pp_hum,
                   pp_hum_indent,
                   pp_mach,
                   pp,
                   to_string_hum,
                   to_string_mach,
                   to_string$0,
                   of_float_style,
                   of_int_style,
                   of_string$0,
                   symbol$185,
                   symbol$186,
                   symbol$187,
                   symbol$188,
                   symbol$189,
                   symbol$190,
                   equal$29,
                   compare$47,
                   min$29,
                   max$29,
                   ascending$24,
                   descending$24,
                   between$8,
                   clamp_exn$8,
                   clamp$8,
                   comparator$10,
                   validate_lbound$8,
                   validate_ubound$8,
                   validate_bound$8],
                 Exported_for_specific_uses=[0,am_testing],
                 hash_bool$0=function(x){return hash$17(x)},
                 hash_char=function(x){return caml_call1(_bP_,x)},
                 hash_float=function(x){return hash$22(x)},
                 hash_int$0=function(x){return func$9(x)},
                 hash_int32$0=function(x){return func$13(x)},
                 hash_int64$0=function(x){return func$11(x)},
                 hash_nativeint$0=function(x){return func$10(x)},
                 hash_string$0=function(x){return runtime.Base_hash_string(x)},
                 hash_unit$0=function(x){return caml_call1(func$8,x)},
                 symbol$306=Infix[1],
                 symbol$307=O$0[1],
                 symbol$308=O$0[2],
                 symbol$309=O$0[3],
                 symbol$310=O$0[4],
                 symbol$311=O$0[5],
                 symbol$312=O$0[6],
                 abs$8=O$0[13],
                 neg$7=O$0[14],
                 zero$8=O$0[15],
                 symbol$313=O$0[16],
                 symbol$314=O$0[17],
                 symbol$315=O$0[18],
                 land$5=O$0[19],
                 lor$5=O$0[20],
                 lxor$5=O$0[21],
                 lnot$6=O$0[22],
                 lsl$5=O$0[23],
                 asr$5=O$0[24],
                 lsr$5=O$0[25],
                 symbol$316=include$1[1],
                 symbol$317=include$1[2],
                 symbol$318=include$1[3],
                 symbol$319=include$1[4],
                 symbol$320=include$1[5],
                 symbol$321=include$1[6],
                 compare$63=include$1[7],
                 ascending$31=include$1[8],
                 descending$32=include$1[9],
                 equal$47=include$1[10],
                 max$38=include$1[11],
                 min$37=include$1[12],
                 symbol$322=include$82[1],
                 symbol$323=include$82[2],
                 symbol$324=include$82[3],
                 symbol$325=include$82[4],
                 symbol$326=include$82[5],
                 symbol$327=include$82[6],
                 Export$1=
                  [0,
                   compare$17,
                   equal_array$1,
                   t_of_sexp$11,
                   sexp_of_t$11,
                   compare_bool$0,
                   equal_bool$1,
                   hash_fold_t$5,
                   hash_bool$0,
                   t_of_sexp$1,
                   sexp_of_t$1,
                   compare_char$0,
                   equal_char$1,
                   _bO_,
                   hash_char,
                   _bQ_,
                   _bR_,
                   sexp_of_exn,
                   compare_float$1,
                   equal_float$1,
                   hash_fold_t$6,
                   hash_float,
                   t_of_sexp$5,
                   sexp_of_float,
                   compare$43,
                   equal$26,
                   hash_fold_t$4,
                   hash_int$0,
                   t_of_sexp$4,
                   sexp_of_t$35,
                   compare_int32$0,
                   equal_int32$1,
                   hash_fold_t$2,
                   hash_int32$0,
                   t_of_sexp$6,
                   sexp_of_int32,
                   compare_int64$0,
                   equal_int64$1,
                   hash_fold_t$1,
                   hash_int64$0,
                   t_of_sexp$7,
                   sexp_of_int64,
                   compare_list$1,
                   equal_list$1,
                   hash_fold_t$8,
                   t_of_sexp$10,
                   sexp_of_t$10,
                   compare_nativeint$0,
                   equal_nativeint$1,
                   hash_fold_t$0,
                   hash_nativeint$0,
                   t_of_sexp$8,
                   sexp_of_t$51,
                   compare_option$0,
                   equal_option$1,
                   hash_fold_option$0,
                   option_of_sexp,
                   sexp_of_option,
                   compare_ref$0,
                   equal_ref$0,
                   ref_of_sexp,
                   sexp_of_ref,
                   compare_string$1,
                   equal_string$1,
                   hash_fold_string$0,
                   hash_string$0,
                   t_of_sexp$2,
                   sexp_of_t$2,
                   compare_bytes,
                   equal_bytes,
                   bytes_of_sexp,
                   sexp_of_bytes,
                   compare_unit$1,
                   equal_unit$1,
                   hash_fold_unit$0,
                   hash_unit$0,
                   unit_of_sexp,
                   sexp_of_unit,
                   symbol$306,
                   symbol$307,
                   symbol$308,
                   symbol$309,
                   symbol$310,
                   symbol$311,
                   symbol$312,
                   abs$8,
                   neg$7,
                   zero$8,
                   symbol$313,
                   symbol$314,
                   symbol$315,
                   land$5,
                   lor$5,
                   lxor$5,
                   lnot$6,
                   lsl$5,
                   asr$5,
                   lsr$5,
                   symbol$316,
                   symbol$317,
                   symbol$318,
                   symbol$319,
                   symbol$320,
                   symbol$321,
                   compare$63,
                   ascending$31,
                   descending$32,
                   equal$47,
                   max$38,
                   min$37,
                   symbol$322,
                   symbol$323,
                   symbol$324,
                   symbol$325,
                   symbol$326,
                   symbol$327,
                   symbol$77,
                   get_key,
                   get_data,
                   failwith$0,
                   invalid_arg$0,
                   raise_s,
                   phys_equal],
                 _ge_=Export$1[1],
                 _gf_=Export$1[2],
                 _gg_=Export$1[3],
                 _gh_=Export$1[4],
                 _gi_=Export$1[5],
                 _gj_=Export$1[6],
                 _gk_=Export$1[7],
                 _gl_=Export$1[8],
                 _gm_=Export$1[9],
                 _gn_=Export$1[10],
                 _go_=Export$1[11],
                 _gp_=Export$1[12],
                 _gq_=Export$1[13],
                 _gr_=Export$1[14],
                 _gs_=Export$1[15],
                 _gt_=Export$1[16],
                 _gu_=Export$1[17],
                 _gv_=Export$1[18],
                 _gw_=Export$1[19],
                 _gx_=Export$1[20],
                 _gy_=Export$1[21],
                 _gz_=Export$1[22],
                 _gA_=Export$1[23],
                 _gB_=Export$1[24],
                 _gC_=Export$1[25],
                 _gD_=Export$1[26],
                 _gE_=Export$1[27],
                 _gF_=Export$1[28],
                 _gG_=Export$1[29],
                 _gH_=Export$1[30],
                 _gI_=Export$1[31],
                 _gJ_=Export$1[32],
                 _gK_=Export$1[33],
                 _gL_=Export$1[34],
                 _gM_=Export$1[35],
                 _gN_=Export$1[36],
                 _gO_=Export$1[37],
                 _gP_=Export$1[38],
                 _gQ_=Export$1[39],
                 _gR_=Export$1[40],
                 _gS_=Export$1[41],
                 _gT_=Export$1[42],
                 _gU_=Export$1[43],
                 _gV_=Export$1[44],
                 _gW_=Export$1[45],
                 _gX_=Export$1[46],
                 _gY_=Export$1[47],
                 _gZ_=Export$1[48],
                 _g0_=Export$1[49],
                 _g1_=Export$1[50],
                 _g2_=Export$1[51],
                 _g3_=Export$1[52],
                 _g4_=Export$1[53],
                 _g5_=Export$1[54],
                 _g6_=Export$1[55],
                 _g7_=Export$1[56],
                 _g8_=Export$1[57],
                 _g9_=Export$1[58],
                 _g__=Export$1[59],
                 _g$_=Export$1[60],
                 _ha_=Export$1[61],
                 _hb_=Export$1[62],
                 _hc_=Export$1[63],
                 _hd_=Export$1[64],
                 _he_=Export$1[65],
                 _hf_=Export$1[66],
                 _hg_=Export$1[67],
                 _hh_=Export$1[68],
                 _hi_=Export$1[69],
                 _hj_=Export$1[70],
                 _hk_=Export$1[71],
                 _hl_=Export$1[72],
                 _hm_=Export$1[73],
                 _hn_=Export$1[74],
                 _ho_=Export$1[75],
                 _hp_=Export$1[76],
                 _hq_=Export$1[77],
                 _hr_=Export$1[78],
                 _hs_=Export$1[79],
                 _ht_=Export$1[80],
                 _hu_=Export$1[81],
                 _hv_=Export$1[82],
                 _hw_=Export$1[83],
                 _hx_=Export$1[84],
                 _hy_=Export$1[85],
                 _hz_=Export$1[86],
                 _hA_=Export$1[87],
                 _hB_=Export$1[88],
                 _hC_=Export$1[89],
                 _hD_=Export$1[90],
                 _hE_=Export$1[91],
                 _hF_=Export$1[92],
                 _hG_=Export$1[93],
                 _hH_=Export$1[94],
                 _hI_=Export$1[95],
                 _hJ_=Export$1[96],
                 _hK_=Export$1[97],
                 _hL_=Export$1[98],
                 _hM_=Export$1[99],
                 _hN_=Export$1[100],
                 _hO_=Export$1[101],
                 _hP_=Export$1[102],
                 _hQ_=Export$1[103],
                 _hR_=Export$1[104],
                 _hS_=Export$1[105],
                 _hT_=Export$1[106],
                 _hU_=Export$1[107],
                 _hV_=Export$1[108],
                 _hW_=Export$1[109],
                 _hX_=Export$1[110],
                 _hY_=Export$1[111],
                 _hZ_=Export$1[112],
                 _h0_=Export$1[113],
                 _h1_=Export$1[114],
                 _h2_=Export$1[115],
                 _h3_=Export$1[116],
                 _h4_=Export$1[117],
                 _h5_=Export$1[118],
                 _h6_=Export$1[119],
                 _h7_=Export$1[120],
                 _h8_=Export$1[121],
                 _h9_=Export$1[122],
                 _h__=include$19[1];
                initialize_module$0(0);
                var
                 Base$0=
                  [0,
                   Exit$1,
                   max_int$1,
                   min_int$1,
                   infinity$2,
                   neg_infinity$2,
                   nan$2,
                   max_float$1,
                   min_float$1,
                   epsilon_float$2,
                   char_of_int$1,
                   string_of_bool$1,
                   bool_of_string_opt$1,
                   bool_of_string$1,
                   string_of_int$1,
                   int_of_string_opt$1,
                   string_of_float$1,
                   float_of_string_opt$1,
                   stdin$1,
                   stdout$1,
                   stderr$1,
                   print_char$1,
                   print_string$1,
                   print_bytes$1,
                   print_int$1,
                   print_float$1,
                   print_endline$1,
                   print_newline$1,
                   prerr_char$1,
                   prerr_string$1,
                   prerr_bytes$1,
                   prerr_int$1,
                   prerr_float$1,
                   prerr_endline$1,
                   prerr_newline$1,
                   read_line$1,
                   read_int_opt$1,
                   read_int$1,
                   read_float_opt$1,
                   read_float$1,
                   open_out$1,
                   open_out_bin$1,
                   open_out_gen$1,
                   flush$1,
                   flush_all$1,
                   output_char$1,
                   output_string$1,
                   output_bytes$1,
                   output$1,
                   output_substring$1,
                   output_byte$1,
                   output_binary_int$1,
                   output_value$1,
                   seek_out$1,
                   pos_out$1,
                   out_channel_length$1,
                   close_out$1,
                   close_out_noerr$1,
                   set_binary_mode_out$1,
                   open_in$1,
                   open_in_bin$1,
                   open_in_gen$1,
                   input_char$1,
                   input_line$1,
                   input$1,
                   really_input$1,
                   really_input_string$1,
                   input_byte$1,
                   input_binary_int$1,
                   input_value$1,
                   seek_in$1,
                   pos_in$1,
                   in_channel_length$1,
                   close_in$1,
                   close_in_noerr$1,
                   set_binary_mode_in$1,
                   string_of_format$1,
                   symbol$305,
                   exit$1,
                   at_exit$1,
                   valid_float_lexem$1,
                   unsafe_really_input$0,
                   do_at_exit$1,
                   Not_found$1,
                   Sexp$0,
                   Exported_for_specific_uses,
                   Export$1,
                   _ge_,
                   _gf_,
                   _gg_,
                   _gh_,
                   _gi_,
                   _gj_,
                   _gk_,
                   _gl_,
                   _gm_,
                   _gn_,
                   _go_,
                   _gp_,
                   _gq_,
                   _gr_,
                   _gs_,
                   _gt_,
                   _gu_,
                   _gv_,
                   _gw_,
                   _gx_,
                   _gy_,
                   _gz_,
                   _gA_,
                   _gB_,
                   _gC_,
                   _gD_,
                   _gE_,
                   _gF_,
                   _gG_,
                   _gH_,
                   _gI_,
                   _gJ_,
                   _gK_,
                   _gL_,
                   _gM_,
                   _gN_,
                   _gO_,
                   _gP_,
                   _gQ_,
                   _gR_,
                   _gS_,
                   _gT_,
                   _gU_,
                   _gV_,
                   _gW_,
                   _gX_,
                   _gY_,
                   _gZ_,
                   _g0_,
                   _g1_,
                   _g2_,
                   _g3_,
                   _g4_,
                   _g5_,
                   _g6_,
                   _g7_,
                   _g8_,
                   _g9_,
                   _g__,
                   _g$_,
                   _ha_,
                   _hb_,
                   _hc_,
                   _hd_,
                   _he_,
                   _hf_,
                   _hg_,
                   _hh_,
                   _hi_,
                   _hj_,
                   _hk_,
                   _hl_,
                   _hm_,
                   _hn_,
                   _ho_,
                   _hp_,
                   _hq_,
                   _hr_,
                   _hs_,
                   _ht_,
                   _hu_,
                   _hv_,
                   _hw_,
                   _hx_,
                   _hy_,
                   _hz_,
                   _hA_,
                   _hB_,
                   _hC_,
                   _hD_,
                   _hE_,
                   _hF_,
                   _hG_,
                   _hH_,
                   _hI_,
                   _hJ_,
                   _hK_,
                   _hL_,
                   _hM_,
                   _hN_,
                   _hO_,
                   _hP_,
                   _hQ_,
                   _hR_,
                   _hS_,
                   _hT_,
                   _hU_,
                   _hV_,
                   _hW_,
                   _hX_,
                   _hY_,
                   _hZ_,
                   _h0_,
                   _h1_,
                   _h2_,
                   _h3_,
                   _h4_,
                   _h5_,
                   _h6_,
                   _h7_,
                   _h8_,
                   _h9_,
                   _h__,
                   Not_found_s];
                caml_register_global(1098,Base$0,"Base");
                return}
              throw [0,Assert_failure,_h$_]}
            throw [0,Assert_failure,_id_]}
          throw [0,Assert_failure,_ie_]}
        throw [0,Assert_failure,_if_]}
      throw [0,Assert_failure,_ig_]}
    throw [0,Assert_failure,_ih_]}
  (function(){return this}()));


//# 1 "../../.js/parsexp/parsexp.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_check_bound=runtime.caml_check_bound,
     caml_compare=runtime.caml_compare,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_mul=runtime.caml_mul,
     caml_obj_tag=runtime.caml_obj_tag,
     caml_register_global=runtime.caml_register_global,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Parsexp_Positions_find=
      caml_string_of_jsbytes("Parsexp.Positions.find"),
     cst_Parsexp_Position_find=caml_string_of_jsbytes("Parsexp.Position.find"),
     cst_Parsexp_Positions_add_gen=
      caml_string_of_jsbytes("Parsexp.Positions.add_gen"),
     beginning_of_file=[0,1,0,0],
     cst_Parsexp_Positions_Iterator=
      caml_string_of_jsbytes("Parsexp__Positions.Iterator.No_more"),
     cst_Parsexp_Positions_Sexp_sea=
      caml_string_of_jsbytes("Parsexp__Positions.Sexp_search.Found"),
     cst_unterminated_hexadecimal_e=
      caml_string_of_jsbytes("unterminated hexadecimal escape sequence"),
     cst_unterminated_decimal_escap=
      caml_string_of_jsbytes("unterminated decimal escape sequence"),
     cst_unterminated_quoted_string=
      caml_string_of_jsbytes("unterminated quoted string"),
     cst_unterminated_block_comment=
      caml_string_of_jsbytes("unterminated block comment"),
     cst_escape_sequence_in_quoted_=
      caml_string_of_jsbytes("escape sequence in quoted string out of range"),
     cst_unclosed_parentheses_at_en=
      caml_string_of_jsbytes("unclosed parentheses at end of input"),
     cst_s_expression_followed_by_d=
      caml_string_of_jsbytes("s-expression followed by data"),
     cst_unexpected_character=
      caml_string_of_jsbytes("unexpected character: ')'"),
     cst$0=caml_string_of_jsbytes("|"),
     cst_illegal_end_of_comment=
      caml_string_of_jsbytes("illegal end of comment"),
     cst_comment_tokens_in_unquoted=
      caml_string_of_jsbytes("comment tokens in unquoted atom"),
     cst_unterminated_sexp_comment=
      caml_string_of_jsbytes("unterminated sexp comment"),
     cst_unexpected_end_of_input_af=
      caml_string_of_jsbytes("unexpected end of input after carriage return"),
     cst_unexpected_character_after=
      caml_string_of_jsbytes("unexpected character after carriage return"),
     cst_no_s_expression_found_in_i=
      caml_string_of_jsbytes("no s-expression found in input"),
     cst_Parsexp_Parser_automaton_p=
      caml_string_of_jsbytes("Parsexp.Parser_automaton: parser is dead"),
     cst=caml_string_of_jsbytes("|"),
     cst_Parser_automaton_sexps_cst=
      caml_string_of_jsbytes("Parser_automaton.sexps_cst_of_stack"),
     cst_Parser_automaton_sexps_of_=
      caml_string_of_jsbytes("Parser_automaton.sexps_of_stack"),
     cst_Parser_automaton_sexp_of_s=
      caml_string_of_jsbytes("Parser_automaton.sexp_of_stack"),
     cst_Parsexp_Parser_automaton_i=
      caml_string_of_jsbytes
       ("Parsexp__Parser_automaton_internal.Public.Parse_error"),
     cst_Parsexp_parse_gen_None=
      caml_string_of_jsbytes("Parsexp.parse_gen: None"),
     cst_Parsexp_Make_eager_Params_=
      caml_string_of_jsbytes
       ("Parsexp.Make_eager(Params).Lexbuf_consumer.Got_sexp"),
     partial=[12,10,0],
     cst_Parsexp_feed_subbytes=caml_string_of_jsbytes("Parsexp.feed_subbytes"),
     cst_Parsexp_feed_substring=
      caml_string_of_jsbytes("Parsexp.feed_substring"),
     cst_Parsexp_Of_sexp_error=caml_string_of_jsbytes("Parsexp.Of_sexp_error"),
     Sexplib0_Sexp_conv=global_data.Sexplib0__Sexp_conv,
     Stdlib_listLabels=global_data.Stdlib__listLabels,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib=global_data.Stdlib,
     Assert_failure=global_data.Assert_failure,
     CamlinternalLazy=global_data.CamlinternalLazy,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib_string=global_data.Stdlib__string,
     Sexplib0_Sexp=global_data.Sexplib0__Sexp,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Stdlib_format=global_data.Stdlib__format,
     Parsexp=[0];
    caml_register_global(90,Parsexp,"Parsexp__");
    var
     Ppx_sexp_conv_lib=[0],
     default_string_of_float=Sexplib0_Sexp_conv[1],
     write_old_option_format=Sexplib0_Sexp_conv[2],
     read_old_option_format=Sexplib0_Sexp_conv[3],
     list_map=Sexplib0_Sexp_conv[4],
     sexp_of_unit=Sexplib0_Sexp_conv[5],
     sexp_of_bool=Sexplib0_Sexp_conv[6],
     sexp_of_string=Sexplib0_Sexp_conv[7],
     sexp_of_bytes=Sexplib0_Sexp_conv[8],
     sexp_of_char=Sexplib0_Sexp_conv[9],
     sexp_of_int=Sexplib0_Sexp_conv[10],
     sexp_of_float=Sexplib0_Sexp_conv[11],
     sexp_of_int32=Sexplib0_Sexp_conv[12],
     sexp_of_int64=Sexplib0_Sexp_conv[13],
     sexp_of_nativeint=Sexplib0_Sexp_conv[14],
     sexp_of_ref=Sexplib0_Sexp_conv[15],
     sexp_of_lazy_t=Sexplib0_Sexp_conv[16],
     sexp_of_option=Sexplib0_Sexp_conv[17],
     sexp_of_pair=Sexplib0_Sexp_conv[18],
     sexp_of_triple=Sexplib0_Sexp_conv[19],
     sexp_of_list=Sexplib0_Sexp_conv[20],
     sexp_of_array=Sexplib0_Sexp_conv[21],
     sexp_of_hashtbl=Sexplib0_Sexp_conv[22],
     sexp_of_opaque=Sexplib0_Sexp_conv[23],
     sexp_of_fun=Sexplib0_Sexp_conv[24],
     Of_sexp_error=Sexplib0_Sexp_conv[25],
     record_check_extra_fields=Sexplib0_Sexp_conv[26],
     of_sexp_error=Sexplib0_Sexp_conv[27],
     of_sexp_error_exn=Sexplib0_Sexp_conv[28],
     unit_of_sexp=Sexplib0_Sexp_conv[29],
     bool_of_sexp=Sexplib0_Sexp_conv[30],
     string_of_sexp=Sexplib0_Sexp_conv[31],
     bytes_of_sexp=Sexplib0_Sexp_conv[32],
     char_of_sexp=Sexplib0_Sexp_conv[33],
     int_of_sexp=Sexplib0_Sexp_conv[34],
     float_of_sexp=Sexplib0_Sexp_conv[35],
     int32_of_sexp=Sexplib0_Sexp_conv[36],
     int64_of_sexp=Sexplib0_Sexp_conv[37],
     nativeint_of_sexp=Sexplib0_Sexp_conv[38],
     ref_of_sexp=Sexplib0_Sexp_conv[39],
     lazy_t_of_sexp=Sexplib0_Sexp_conv[40],
     option_of_sexp=Sexplib0_Sexp_conv[41],
     pair_of_sexp=Sexplib0_Sexp_conv[42],
     triple_of_sexp=Sexplib0_Sexp_conv[43],
     list_of_sexp=Sexplib0_Sexp_conv[44],
     array_of_sexp=Sexplib0_Sexp_conv[45],
     hashtbl_of_sexp=Sexplib0_Sexp_conv[46],
     opaque_of_sexp=Sexplib0_Sexp_conv[47],
     fun_of_sexp=Sexplib0_Sexp_conv[48],
     sexp_of_exn=Sexplib0_Sexp_conv[49],
     sexp_of_exn_opt=Sexplib0_Sexp_conv[50],
     Exn_converter=Sexplib0_Sexp_conv[51],
     Parsexp_Import=
      [0,
       Ppx_sexp_conv_lib,
       default_string_of_float,
       write_old_option_format,
       read_old_option_format,
       list_map,
       sexp_of_unit,
       sexp_of_bool,
       sexp_of_string,
       sexp_of_bytes,
       sexp_of_char,
       sexp_of_int,
       sexp_of_float,
       sexp_of_int32,
       sexp_of_int64,
       sexp_of_nativeint,
       sexp_of_ref,
       sexp_of_lazy_t,
       sexp_of_option,
       sexp_of_pair,
       sexp_of_triple,
       sexp_of_list,
       sexp_of_array,
       sexp_of_hashtbl,
       sexp_of_opaque,
       sexp_of_fun,
       Of_sexp_error,
       record_check_extra_fields,
       of_sexp_error,
       of_sexp_error_exn,
       unit_of_sexp,
       bool_of_sexp,
       string_of_sexp,
       bytes_of_sexp,
       char_of_sexp,
       int_of_sexp,
       float_of_sexp,
       int32_of_sexp,
       int64_of_sexp,
       nativeint_of_sexp,
       ref_of_sexp,
       lazy_t_of_sexp,
       option_of_sexp,
       pair_of_sexp,
       triple_of_sexp,
       list_of_sexp,
       array_of_sexp,
       hashtbl_of_sexp,
       opaque_of_sexp,
       fun_of_sexp,
       sexp_of_exn,
       sexp_of_exn_opt,
       Exn_converter];
    caml_register_global(92,Parsexp_Import,"Parsexp__Import");
    var
     _h_=[0,caml_string_of_jsbytes("src/positions.ml"),398,12],
     _g_=[0,caml_string_of_jsbytes("src/positions.ml"),377,12],
     _f_=[0,caml_string_of_jsbytes("src/positions.ml"),200,12],
     _d_=[0,caml_string_of_jsbytes("end_pos")],
     _e_=[0,caml_string_of_jsbytes("start_pos")],
     _a_=[0,caml_string_of_jsbytes("offset")],
     _b_=[0,caml_string_of_jsbytes("col")],
     _c_=[0,caml_string_of_jsbytes("line")],
     _j_=[0,caml_string_of_jsbytes("unescaped")],
     _k_=[0,caml_string_of_jsbytes("atom")],
     _l_=[0,caml_string_of_jsbytes("loc")],
     _m_=[0,caml_string_of_jsbytes("Atom")],
     _n_=[0,caml_string_of_jsbytes("elements")],
     _o_=[0,caml_string_of_jsbytes("loc")],
     _p_=[0,caml_string_of_jsbytes("List")],
     _q_=[0,caml_string_of_jsbytes("Sexp")],
     _r_=[0,caml_string_of_jsbytes("Comment")],
     _s_=[0,caml_string_of_jsbytes("comment")],
     _t_=[0,caml_string_of_jsbytes("loc")],
     _u_=[0,caml_string_of_jsbytes("Plain_comment")],
     _v_=[0,caml_string_of_jsbytes("sexp")],
     _w_=[0,caml_string_of_jsbytes("comments")],
     _x_=[0,caml_string_of_jsbytes("hash_semi_pos")],
     _y_=[0,caml_string_of_jsbytes("Sexp_comment")],
     _L_=[0,caml_string_of_jsbytes("src/parser_automaton_internal.ml"),565,26],
     _M_=[0,caml_string_of_jsbytes("src/parser_automaton_internal.ml"),593,4],
     _S_=[0,1],
     _R_=[0,-1],
     _Q_=[0,-1],
     _P_=[0,1],
     _O_=[0,0],
     _N_=[0,1],
     _K_=[0,caml_string_of_jsbytes("src/parser_automaton_internal.ml"),523,6],
     _I_=
      [0,
       caml_string_of_jsbytes
        ("parser_automaton_internal.ml.Public.Parse_error")],
     _J_=[0,caml_string_of_jsbytes("src/parser_automaton_internal.ml"),219,15],
     _F_=[0,caml_string_of_jsbytes("message")],
     _G_=[0,caml_string_of_jsbytes("position")],
     _z_=[0,caml_string_of_jsbytes("Parsing_toplevel_whitespace")],
     _A_=[0,caml_string_of_jsbytes("Parsing_nested_whitespace")],
     _B_=[0,caml_string_of_jsbytes("Parsing_atom")],
     _C_=[0,caml_string_of_jsbytes("Parsing_list")],
     _D_=[0,caml_string_of_jsbytes("Parsing_sexp_comment")],
     _E_=[0,caml_string_of_jsbytes("Parsing_block_comment")],
     _T_=[0,0,0,1,2,2,2,0,2,2,2,2,2,2,2,2,2,5,5,5,5,5,5,5,5,5,5,5],
     _ad_=[0,caml_string_of_jsbytes("src/parsexp.ml"),453,13],
     _ac_=[0,caml_string_of_jsbytes("src/parsexp.ml"),333,13],
     _aa_=[0,caml_string_of_jsbytes("parsexp.ml.Of_sexp_error")],
     _ab_=[0,caml_string_of_jsbytes("src/parsexp.ml"),154,13],
     _Z_=[0,caml_string_of_jsbytes("Parse_error")],
     ___=[0,caml_string_of_jsbytes("Of_sexp_error")],
     _Y_=
      [0,
       [11,
        caml_string_of_jsbytes('File "'),
        [2,
         0,
         [11,
          caml_string_of_jsbytes('", line '),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(", characters "),
            [4,
             0,
             0,
             0,
             [12,
              45,
              [4,
               0,
               0,
               0,
               [11,
                caml_string_of_jsbytes
                 (":\nError: s-expression conversion error;\nexception "),
                [2,0,partial]]]]]]]]]],
       caml_string_of_jsbytes
        ('File "%s", line %d, characters %d-%d:\nError: s-expression conversion error;\nexception %s\n')],
     _V_=[0,caml_string_of_jsbytes("location")],
     _W_=[0,caml_string_of_jsbytes("sub_sexp")],
     _X_=[0,caml_string_of_jsbytes("user_exn")],
     _U_=
      [0,
       [11,
        caml_string_of_jsbytes('File "'),
        [2,
         0,
         [11,
          caml_string_of_jsbytes('", line '),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(", character "),
            [4,
             0,
             0,
             0,
             [11,
              caml_string_of_jsbytes
               (":\nError: s-expression parsing error;\n"),
              [2,0,[12,10,0]]]]]]]]],
       caml_string_of_jsbytes
        ('File "%s", line %d, character %d:\nError: s-expression parsing error;\n%s\n')];
    function sexp_of_pos(param)
     {var
       v_offset=param[3],
       v_col=param[2],
       v_line=param[1],
       arg=caml_call1(sexp_of_int,v_offset),
       bnds=[0,[1,[0,_a_,[0,arg,0]]],0],
       arg$0=caml_call1(sexp_of_int,v_col),
       bnds$0=[0,[1,[0,_b_,[0,arg$0,0]]],bnds],
       arg$1=caml_call1(sexp_of_int,v_line),
       bnds$1=[0,[1,[0,_c_,[0,arg$1,0]]],bnds$0];
      return [1,bnds$1]}
    var compare_pos=caml_compare;
    function shift_pos(pos,cols)
     {return [0,pos[1],pos[2] + cols | 0,pos[3] + cols | 0]}
    function sexp_of_range(param)
     {var
       v_end_pos=param[2],
       v_start_pos=param[1],
       arg=sexp_of_pos(v_end_pos),
       bnds=[0,[1,[0,_d_,[0,arg,0]]],0],
       arg$0=sexp_of_pos(v_start_pos),
       bnds$0=[0,[1,[0,_e_,[0,arg$0,0]]],bnds];
      return [1,bnds$0]}
    var compare_range=caml_compare;
    function make_range_incl(start_pos,last_pos)
     {return [0,start_pos,shift_pos(last_pos,1)]}
    function memory_footprint_in_bytes(param)
     {var
       _br_=caml_obj_tag(param),
       t=
        250 === _br_
         ?param[1]
         :246 === _br_?caml_call1(CamlinternalLazy[2],param):param,
       _bs_=Stdlib_sys[9];
      if(32 === _bs_)
       var word_bytes=4;
      else
       {if(64 !== _bs_)throw [0,Assert_failure,_f_];var word_bytes=8}
      var
       n=runtime.caml_div((64 + word_bytes | 0) - 1 | 0,word_bytes),
       chunk_words=n + 1 | 0;
      return caml_mul
              (9
               +
               caml_mul
                (caml_call1(Stdlib_listLabels[1],t[1]),chunk_words + 3 | 0)
               |
               0,
               word_bytes)}
    function create(opt,param)
     {if(opt)
       var sth=opt[1],initial_pos=sth;
      else
       var initial_pos=beginning_of_file;
      return [0,caml_create_bytes(62),0,0,initial_pos[3],0,0,initial_pos]}
    function reset(t,pos)
     {t[1] = caml_create_bytes(62);
      t[2] = 0;
      t[3] = 0;
      t[4] = pos[3];
      t[5] = 0;
      t[6] = 0;
      t[7] = pos;
      return 0}
    function add_uint16(t,n)
     {if(t[2] === 62)
       {t[3] = [0,t[1],t[3]];t[1] = caml_create_bytes(62);t[2] = 0}
      return runtime.caml_bytes_set16(t[1],t[2],n)}
    function add_bits(t,n,num_bits)
     {var int_buf=t[5] << num_bits | n,num_bits$0=t[6] + num_bits | 0;
      t[5] = int_buf;
      if(16 <= num_bits$0)
       {var num_bits$1=num_bits$0 - 16 | 0;
        t[6] = num_bits$1;
        add_uint16(t,int_buf >>> num_bits$1 | 0);
        t[2] = t[2] + 2 | 0;
        return 0}
      t[6] = num_bits$0;
      return 0}
    function contents(t)
     {add_uint16(t,t[5]);
      var
       rev_chunks=[0,t[1],t[3]],
       chunk_pos=t[2],
       extra_bits=t[6],
       initial_pos=t[7];
      return [246,
              function(_bp_)
               {var
                 _bq_=
                  ((caml_call1(Stdlib_listLabels[1],rev_chunks) - 1 | 0)
                   *
                   62
                   |
                   0)
                  +
                  chunk_pos
                  |
                  0;
                return [0,
                        caml_call1(Stdlib_listLabels[9],rev_chunks),
                        _bq_,
                        extra_bits,
                        initial_pos]}]}
    function add_gen(t,offset,instr,instr_bits)
     {var n$0=offset - t[4] | 0;
      t[4] = offset + 1 | 0;
      if(5 <= n$0)
       {if(! (37 <= n$0))
         return add_bits
                 (t,
                  (192 | n$0 - 5 | 0) << instr_bits | instr,
                  8 + instr_bits | 0)}
      else
       if(0 <= n$0)
        {var num_bits=(n$0 << 1) + instr_bits | 0;
         return add_bits
                 (t,
                  (170 << instr_bits | instr) & ((1 << num_bits) - 1 | 0),
                  num_bits)}
      if(n$0 < 0)caml_call1(Stdlib[1],cst_Parsexp_Positions_add_gen);
      var n=[0,n$0 - 5 | 0];
      for(;;)
       {if(0 < n[1])
         {add_bits(t,192 | n[1] & 31,8);n[1] = n[1] >>> 5 | 0;continue}
        return add_bits(t,instr,instr_bits)}}
    function add(t,offset){return add_gen(t,offset,0,1)}
    function add_twice(t,offset){return add_gen(t,offset,15,4)}
    function add_newline(t,offset){return add_gen(t,offset,14,4)}
    function create$0(param)
     {var
       _bn_=caml_obj_tag(param),
       p=
        250 === _bn_
         ?param[1]
         :246 === _bn_?caml_call1(CamlinternalLazy[2],param):param,
       _bo_=p[1];
      if(_bo_)
       {var chunks=_bo_[2],chunk=_bo_[1];
        return [0,
                chunk,
                chunks,
                p[2],
                p[3],
                0,
                p[4][3],
                p[4][1],
                p[4][3] - p[4][2] | 0,
                0,
                0,
                0]}
      throw [0,Assert_failure,_g_]}
    var No_more=[248,cst_Parsexp_Positions_Iterator,caml_fresh_oo_id(0)];
    function no_more(param){throw No_more}
    function next_instruction_bits(t,num_bits)
     {if(t[10] < num_bits)
       {if(t[3] < t[5])no_more(0);
        if(t[5] === 62)
         {var _bm_=t[2];
          if(! _bm_)throw [0,Assert_failure,_h_];
          var chunks=_bm_[2],chunk=_bm_[1];
          t[5] = 0;
          t[3] = t[3] - 62 | 0;
          t[1] = chunk;
          t[2] = chunks}
        var
         v=runtime.caml_string_get16(t[1],t[5]),
         added_bits=t[5] === t[3]?t[4]:16;
        t[9] = t[9] << added_bits | v & ((1 << added_bits) - 1 | 0);
        t[10] = t[10] + added_bits | 0;
        t[5] = t[5] + 2 | 0;
        if(t[10] < num_bits)no_more(0)}
      var n=(t[9] >>> (t[10] - num_bits | 0) | 0) & ((1 << num_bits) - 1 | 0);
      t[10] = t[10] - num_bits | 0;
      return n}
    function advance(t,skip,offset_shift,offset_shift_num_bits)
     {var
       skip$0=skip,
       offset_shift$0=offset_shift,
       offset_shift_num_bits$0=offset_shift_num_bits;
      for(;;)
       {var match=next_instruction_bits(t,1);
        if(0 === match)
         {var offset=t[6] + offset_shift$0 | 0;
          t[6] = offset + 1 | 0;
          if(0 === skip$0)return [0,t[7],offset - t[8] | 0,offset];
          var
           skip$1=skip$0 - 1 | 0,
           skip$0=skip$1,
           offset_shift$0=0,
           offset_shift_num_bits$0=0;
          continue}
        var match$0=next_instruction_bits(t,1);
        if(0 === match$0)
         {t[6] = (t[6] + offset_shift$0 | 0) + 1 | 0;
          var offset_shift$0=0,offset_shift_num_bits$0=0;
          continue}
        var match$1=next_instruction_bits(t,1);
        if(0 === match$1)
         {var
           n=next_instruction_bits(t,5),
           offset_shift$1=0 === offset_shift_num_bits$0?5:offset_shift$0,
           offset_shift_num_bits$1=offset_shift_num_bits$0 + 5 | 0,
           offset_shift$2=offset_shift$1 + (n << offset_shift_num_bits$0) | 0,
           offset_shift$0=offset_shift$2,
           offset_shift_num_bits$0=offset_shift_num_bits$1;
          continue}
        var match$2=next_instruction_bits(t,1);
        if(0 === match$2)
         {t[6] = (t[6] + offset_shift$0 | 0) + 1 | 0;
          t[8] = t[6];
          t[7] = t[7] + 1 | 0;
          var offset_shift$0=0,offset_shift_num_bits$0=0;
          continue}
        var offset$0=t[6] + offset_shift$0 | 0;
        t[6] = offset$0 + 1 | 0;
        if(1 < skip$0)
         {var
           skip$2=skip$0 - 2 | 0,
           skip$0=skip$2,
           offset_shift$0=0,
           offset_shift_num_bits$0=0;
          continue}
        var pos=[0,t[7],offset$0 - t[8] | 0,offset$0];
        if(0 === skip$0)t[11] = [0,pos];
        return pos}}
    function advance_exn(t,skip)
     {var _bl_=t[11];
      if(_bl_)
       {var pos=_bl_[1];
        t[11] = 0;
        return 0 === skip?pos:advance(t,skip - 1 | 0,0,0)}
      return advance(t,skip,0,0)}
    var Iterator=[0,create$0,No_more,advance_exn];
    function find(t,a,b)
     {var _bh_=a < 0?1:0,_bi_=_bh_ || (b <= a?1:0);
      if(_bi_)caml_call1(Stdlib[1],cst_Parsexp_Positions_find);
      var iter=caml_call1(Iterator[1],t);
      try
       {var
         start_pos=caml_call2(Iterator[3],iter,a),
         last_pos=caml_call2(Iterator[3],iter,(b - a | 0) - 1 | 0),
         _bj_=make_range_incl(start_pos,last_pos);
        return _bj_}
      catch(_bk_)
       {_bk_ = caml_wrap_exception(_bk_);
        if(_bk_ === Iterator[2])
         return caml_call1(Stdlib[2],cst_Parsexp_Position_find);
        throw _bk_}}
    function sub_sexp_count(sexp)
     {if(0 === sexp[0])return 1;
      var l=sexp[1],_bf_=1;
      function _bg_(acc,x){return acc + sub_sexp_count(x) | 0}
      return caml_call3(Stdlib_listLabels[22],_bg_,_bf_,l)}
    var Found=[248,cst_Parsexp_Positions_Sexp_sea,caml_fresh_oo_id(0)];
    function loop(sub,index,sexp)
     {if(sexp === sub)throw [0,Found,index];
      if(0 === sexp[0])return index + 2 | 0;
      var l=sexp[1],index$0=loop_list(sub,index + 1 | 0,l);
      return index$0 + 1 | 0}
    function loop_list(sub,index,sexps)
     {function _bc_(_bd_,_be_){return loop(sub,_bd_,_be_)}
      return caml_call3(Stdlib_listLabels[22],_bc_,index,sexps)}
    function finalize(t,sub,a)
     {var b=(a + (sub_sexp_count(sub) * 2 | 0) | 0) - 1 | 0;
      return [0,find(t,a,b)]}
    function find$0(t,sexp,sub)
     {try
       {loop(sub,0,sexp)}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Found){var n=exn[2];return finalize(t,sub,n)}
        throw exn}
      return 0}
    function find$1(t,sexps,sub)
     {try
       {loop_list(sub,0,sexps)}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Found){var n=exn[2];return finalize(t,sub,n)}
        throw exn}
      return 0}
    function to_list(t)
     {var iter=caml_call1(Iterator[1],t);
      function loop(acc)
       {var acc$0=acc;
        for(;;)
         {try
           {var pos=caml_call2(Iterator[3],iter,0)}
          catch(_bb_)
           {_bb_ = caml_wrap_exception(_bb_);
            if(_bb_ === Iterator[2])
             return caml_call1(Stdlib_listLabels[9],acc$0);
            throw _bb_;
            var _ba_=_bb_}
          var acc$1=[0,pos,acc$0],acc$0=acc$1;
          continue}}
      return loop(0)}
    function to_array(t)
     {var _a$_=to_list(t);return caml_call1(Stdlib_array[12],_a$_)}
    function compare(t1,t2)
     {var _a__=to_array(t2);return caml_compare(to_array(t1),_a__)}
    function sexp_of_t(t)
     {return caml_call2(sexp_of_array,sexp_of_pos,to_array(t))}
    var
     _i_=[0,create,add,add_twice,add_newline,contents,reset],
     Parsexp_Positions=
      [0,
       sexp_of_t,
       compare,
       sexp_of_pos,
       compare_pos,
       beginning_of_file,
       shift_pos,
       sexp_of_range,
       compare_range,
       make_range_incl,
       _i_,
       to_list,
       to_array,
       find,
       find$0,
       find$1,
       memory_footprint_in_bytes,
       Iterator];
    caml_register_global(99,Parsexp_Positions,"Parsexp__Positions");
    function sexp_of_t$0(param)
     {if(0 === param[0])
       {var
         v_unescaped=param[3],
         v_atom=param[2],
         v_loc=param[1],
         arg=caml_call2(sexp_of_option,sexp_of_string,v_unescaped),
         bnds=[0,[1,[0,_j_,[0,arg,0]]],0],
         arg$0=caml_call1(sexp_of_string,v_atom),
         bnds$0=[0,[1,[0,_k_,[0,arg$0,0]]],bnds],
         arg$1=sexp_of_range(v_loc),
         bnds$1=[0,[1,[0,_l_,[0,arg$1,0]]],bnds$0];
        return [1,[0,_m_,bnds$1]]}
      var
       v_elements=param[2],
       v_loc$0=param[1],
       arg$2=caml_call2(sexp_of_list,sexp_of_t_or_comment,v_elements),
       bnds$2=[0,[1,[0,_n_,[0,arg$2,0]]],0],
       arg$3=sexp_of_range(v_loc$0),
       bnds$3=[0,[1,[0,_o_,[0,arg$3,0]]],bnds$2];
      return [1,[0,_p_,bnds$3]]}
    function sexp_of_t_or_comment(param)
     {if(0 === param[0])
       {var v0=param[1],v0$0=sexp_of_t$0(v0);return [1,[0,_q_,[0,v0$0,0]]]}
      var v0$1=param[1],v0$2=sexp_of_comment(v0$1);
      return [1,[0,_r_,[0,v0$2,0]]]}
    function sexp_of_comment(param)
     {if(0 === param[0])
       {var
         v_comment=param[2],
         v_loc=param[1],
         arg=caml_call1(sexp_of_string,v_comment),
         bnds=[0,[1,[0,_s_,[0,arg,0]]],0],
         arg$0=sexp_of_range(v_loc),
         bnds$0=[0,[1,[0,_t_,[0,arg$0,0]]],bnds];
        return [1,[0,_u_,bnds$0]]}
      var
       v_sexp=param[3],
       v_comments=param[2],
       v_hash_semi_pos=param[1],
       arg$1=sexp_of_t$0(v_sexp),
       bnds$1=[0,[1,[0,_v_,[0,arg$1,0]]],0],
       arg$2=caml_call2(sexp_of_list,sexp_of_comment,v_comments),
       bnds$2=[0,[1,[0,_w_,[0,arg$2,0]]],bnds$1],
       arg$3=sexp_of_pos(v_hash_semi_pos),
       bnds$3=[0,[1,[0,_x_,[0,arg$3,0]]],bnds$2];
      return [1,[0,_y_,bnds$3]]}
    var
     compare$0=caml_compare,
     compare_t_or_comment=caml_compare,
     compare_comment=caml_compare;
    function forget_t$0(counter,t,k)
     {if(0 === t[0]){var atom=t[2];return caml_call1(k,[0,atom])}
      var elements=t[2];
      function _a9_(xs){return caml_call1(k,[1,xs])}
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return forget_tocs$0(counter$0,elements,_a9_)}
      return caml_trampoline_return(forget_tocs$0,[0,elements,_a9_])}
    function forget_tocs$0(counter,tocs,k)
     {if(tocs)
       {var
         tocs$0=tocs[2],
         toc=tocs[1],
         _a8_=
          function(param)
           {if(param)
             {var x=param[1];
              return forget_tocs
                      (tocs$0,function(xs){return caml_call1(k,[0,x,xs])})}
            return forget_tocs(tocs$0,k)};
        if(counter < 50)
         {var counter$0=counter + 1 | 0;
          return forget_toc$0(counter$0,toc,_a8_)}
        return caml_trampoline_return(forget_toc$0,[0,toc,_a8_])}
      return caml_call1(k,0)}
    function forget_toc$0(counter,toc,k)
     {if(0 === toc[0])
       {var t=toc[1],_a7_=function(x){return caml_call1(k,[0,x])};
        if(counter < 50)
         {var counter$0=counter + 1 | 0;return forget_t$0(counter$0,t,_a7_)}
        return caml_trampoline_return(forget_t$0,[0,t,_a7_])}
      return caml_call1(k,0)}
    function forget_t(t,k){return caml_trampoline(forget_t$0(0,t,k))}
    function forget_tocs(tocs,k)
     {return caml_trampoline(forget_tocs$0(0,tocs,k))}
    function forget_toc(toc,k){return caml_trampoline(forget_toc$0(0,toc,k))}
    function t(x){return forget_t(x,function(y){return y})}
    function t_or_comment(x){return forget_toc(x,function(y){return y})}
    function t_or_comments(x){return forget_tocs(x,function(y){return y})}
    var
     Parsexp_Cst=
      [0,
       compare$0,
       compare_t_or_comment,
       compare_comment,
       sexp_of_t$0,
       sexp_of_t_or_comment,
       sexp_of_comment,
       [0,t,t_or_comment,t_or_comments]];
    caml_register_global(100,Parsexp_Cst,"Parsexp__Cst");
    var empty_stack=0,empty_stack_cst=0,initial_state=0,error_state=1;
    function new_state(opt,mode,kind)
     {if(opt)
       var sth=opt[1],initial_pos=sth;
      else
       var initial_pos=beginning_of_file;
      var
       _a2_=initial_pos[3] - initial_pos[2] | 0,
       _a3_=initial_pos[1],
       _a4_=initial_pos[3],
       _a5_=0;
      switch(kind)
       {case 0:var _a6_=caml_call2(_i_[1],[0,initial_pos],0);break;
        case 1:var _a6_=0;break;
        case 2:var _a6_=caml_call2(_i_[1],[0,initial_pos],0);break;
        default:
         var _a6_=[0,caml_call1(Stdlib_buffer[1],128),beginning_of_file]}
      return [0,
              initial_state,
              kind,
              0,
              0,
              0,
              0,
              caml_call1(Stdlib_buffer[1],128),
              _a6_,
              mode,
              _a5_,
              _a4_,
              _a3_,
              _a2_]}
    function mode(t){return t[9]}
    function positions(t){return caml_call1(_i_[5],t[8])}
    function atom_buffer(t){return t[7]}
    function offset(state){return state[11]}
    function line(state){return state[12]}
    function column(state){return state[11] - state[13] | 0}
    function position(t)
     {var _a0_=t[11],_a1_=column(t);return [0,t[12],_a1_,_a0_]}
    function reset$0(opt,t)
     {if(opt)var sth=opt[1],pos=sth;else var pos=beginning_of_file;
      t[3] = 0;
      t[1] = initial_state;
      t[4] = 0;
      t[5] = 0;
      t[6] = 0;
      t[10] = 0;
      t[11] = pos[3];
      t[12] = pos[1];
      t[13] = pos[3] - pos[2] | 0;
      switch(t[2])
       {case 0:var _aY_=position(t);caml_call2(_i_[6],t[8],_aY_);break;
        case 1:break;
        case 2:var _aZ_=position(t);caml_call2(_i_[6],t[8],_aZ_);break;
        default:caml_call1(Stdlib_buffer[8],t[8][1])}
      return caml_call1(Stdlib_buffer[8],t[7])}
    function is_ignoring(state){return state[5]?1:0}
    function is_not_ignoring(state){return 1 - is_ignoring(state)}
    function context(state){return is_not_ignoring(state)?1:0}
    function has_unclosed_paren(state){return 0 < state[3]?1:0}
    function set_error_state(state){state[1] = error_state;return 0}
    function sexp_of_t$1(param)
     {switch(param)
       {case 0:return _z_;
        case 1:return _A_;
        case 2:return _B_;
        case 3:return _C_;
        case 4:return _D_;
        default:return _E_}}
    var Old_parser_cont_state=[0,sexp_of_t$1];
    function sexp_of_t$2(param)
     {var
       message=param[2],
       position=param[1],
       _aX_=[0,[1,[0,_F_,[0,caml_call1(sexp_of_string,message),0]]],0];
      return [1,[0,[1,[0,_G_,[0,sexp_of_pos(position),0]]],_aX_]]}
    function position$0(t){return t[1]}
    function message(t){return t[2]}
    function old_parser_exn(t){return t[3]}
    var
     include=[0,sexp_of_t$2,position$0,message,old_parser_exn],
     Parse_error=[248,cst_Parsexp_Parser_automaton_i,caml_fresh_oo_id(0)];
    function _H_(param)
     {if(param[1] === Parse_error)
       {var v0=param[2],v0$0=caml_call1(include[1],v0);
        return [1,[0,_I_,[0,v0$0,0]]]}
      throw [0,Assert_failure,_J_]}
    caml_call3(Sexplib0_Sexp_conv[51][2],0,Parse_error,_H_);
    function sexp_of_stack(param)
     {if
       (typeof param
        !==
        "number"
        &&
        1
        ===
        param[0]
        &&
        typeof param[2]
        ===
        "number")
       {var sexp=param[1];return sexp}
      return caml_call1(Stdlib[2],cst_Parser_automaton_sexp_of_s)}
    function sexps_of_stack(stack)
     {var acc=0,param=stack;
      for(;;)
       if(typeof param === "number")
        return acc;
       else
        {if(0 === param[0])
          return caml_call1(Stdlib[2],cst_Parser_automaton_sexps_of_);
         var
          param$0=param[2],
          sexp=param[1],
          acc$0=[0,sexp,acc],
          acc=acc$0,
          param=param$0;
         continue}}
    function sexps_cst_of_stack(stack$1)
     {var acc=0,stack=stack$1;
      for(;;)
       if(typeof stack === "number")
        return acc;
       else
        {if(0 === stack[0])
          {var
            stack$0=stack[2],
            t=stack[1],
            acc$0=[0,t,acc],
            acc=acc$0,
            stack=stack$0;
           continue}
         return caml_call1(Stdlib[2],cst_Parser_automaton_sexps_cst)}}
    function automaton_state(state){return state[1]}
    var
     sexp_of_t$3=include[1],
     position$1=include[2],
     message$0=include[3],
     old_parser_exn$0=include[4],
     Reason=[0];
    function raise(state,at_eof,reason)
     {set_error_state(state);
      switch(reason)
       {case 0:var message=cst_unterminated_hexadecimal_e;break;
        case 1:var message=cst_unterminated_decimal_escap;break;
        case 2:var message=cst_unterminated_quoted_string;break;
        case 3:var message=cst_unterminated_block_comment;break;
        case 4:var message=cst_escape_sequence_in_quoted_;break;
        case 5:var message=cst_unclosed_parentheses_at_en;break;
        case 6:var message=cst_s_expression_followed_by_d;break;
        case 7:var message=cst_unexpected_character;break;
        case 8:
         var
          _aW_=caml_call1(Stdlib_buffer[2],state[7]),
          message=
           caml_call2(Stdlib_string[34],_aW_,cst$0)
            ?cst_illegal_end_of_comment
            :cst_comment_tokens_in_unquoted;
         break;
        case 9:var message=cst_unterminated_sexp_comment;break;
        case 10:
         var
          message=
           at_eof
            ?cst_unexpected_end_of_input_af
            :cst_unexpected_character_after;
         break;
        case 11:var message=cst_no_s_expression_found_in_i;break;
        default:
         var message=caml_call1(Stdlib[2],cst_Parsexp_Parser_automaton_p)}
      var switch$0=0;
      if(6 === reason || at_eof)
       switch$0 = 1;
      else
       {var switch$1=0;
        if(8 === reason)
         {var _aV_=caml_call1(Stdlib_buffer[2],state[7]);
          if(caml_call2(Stdlib_string[34],_aV_,cst))
           {var old_parser_exn=-464807894;switch$1 = 1}}
        if(! switch$1)var old_parser_exn=434889564}
      if(switch$0)var old_parser_exn=-464807894;
      var position=[0,state[12],state[11] - state[13] | 0,state[11]];
      throw [0,Parse_error,[0,position,message,old_parser_exn]]}
    var
     Error=
      [0,sexp_of_t$3,position$1,message$0,old_parser_exn$0,Reason,raise];
    function current_pos(opt,state)
     {if(opt)var sth=opt[1],delta=sth;else var delta=0;
      var offset=state[11] + delta | 0;
      return [0,state[12],offset - state[13] | 0,offset]}
    function set_automaton_state(state,x){state[1] = x;return 0}
    function advance$0(state){state[11] = state[11] + 1 | 0;return 0}
    function advance_eol(state)
     {var newline_offset=state[11];
      state[11] = newline_offset + 1 | 0;
      state[13] = state[11];
      state[12] = state[12] + 1 | 0;
      var _aU_=state[2];
      if(! (3 <= _aU_))
       switch(_aU_)
        {case 0:return caml_call2(_i_[4],state[8],newline_offset);
         case 2:return caml_call2(_i_[4],state[8],newline_offset)
         }
      return 0}
    function block_comment_depth(state){return state[4]}
    function add_token_char(state,char$0,stack)
     {return 3 <= state[2]
              ?(caml_call2(Stdlib_buffer[10],state[8][1],char$0),stack)
              :stack}
    function add_atom_char(state,c,stack)
     {caml_call2(Stdlib_buffer[10],state[7],c);return stack}
    function add_quoted_atom_char(state,c,stack)
     {caml_call2(Stdlib_buffer[10],state[7],c);
      return add_token_char(state,c,stack)}
    function check_new_sexp_allowed(state)
     {var _aR_=state[9],switch$0=0;
      if(typeof _aR_ === "number" && ! _aR_){var is_single=1;switch$0 = 1}
      if(! switch$0)var is_single=0;
      if(is_single)
       var _aS_=0 < state[10]?1:0,_aT_=_aS_?is_not_ignoring(state):_aS_;
      else
       var _aT_=is_single;
      return _aT_?caml_call3(Error[6],state,0,6):_aT_}
    function add_pos(state,delta)
     {return caml_call2(_i_[2],state[8],state[11] + delta | 0)}
    function add_first_char(state,char$0,stack)
     {check_new_sexp_allowed(state);
      caml_call2(Stdlib_buffer[10],state[7],char$0);
      return stack}
    function eps_add_first_char_hash(state,stack)
     {check_new_sexp_allowed(state);
      caml_call2(Stdlib_buffer[10],state[7],35);
      return stack}
    function start_quoted_string(state,char$0,stack)
     {check_new_sexp_allowed(state);
      switch(state[2])
       {case 0:if(is_not_ignoring(state))add_pos(state,0);return stack;
        case 1:return stack;
        case 2:if(is_not_ignoring(state))add_pos(state,0);return stack;
        default:
         var _aQ_=current_pos(0,state);
         state[8][2] = _aQ_;
         caml_call2(Stdlib_buffer[10],state[8][1],34);
         return stack}}
    function add_escaped(state,c,stack)
     {var _aO_=c - 34 | 0,switch$0=0;
      if(5 < _aO_ >>> 0)
       {var switcher=_aO_ - 58 | 0;
        if(! (24 < switcher >>> 0))
         {var switch$1=0;
          switch(switcher)
           {case 0:switch$0 = 2;switch$1 = 1;break;
            case 6:var _aP_=8;break;
            case 18:var _aP_=10;break;
            case 22:var _aP_=13;break;
            case 24:var _aP_=9;break;
            default:switch$1 = 1}
          if(! switch$1){var c$0=_aP_;switch$0 = 1}}}
      else
       if(3 < (_aO_ - 1 | 0) >>> 0)switch$0 = 2;
      switch(switch$0)
       {case 0:caml_call2(Stdlib_buffer[10],state[7],92);var c$0=c;break;
        case 2:var c$0=c;break
        }
      caml_call2(Stdlib_buffer[10],state[7],c$0);
      return add_token_char(state,c,stack)}
    function eps_add_escaped_cr(state,stack)
     {caml_call2(Stdlib_buffer[10],state[7],13);return stack}
    function hex_val(c)
     {if(58 <= c)
       {var switcher=c - 97 | 0;
        if(! (5 < switcher >>> 0))return (c - 97 | 0) + 10 | 0}
      else
       if(48 <= c)return c - 48 | 0;
      return (c - 65 | 0) + 10 | 0}
    function add_dec_escape_char(state,c,stack)
     {state[6] = (state[6] * 10 | 0) + (c - 48 | 0) | 0;
      return add_token_char(state,c,stack)}
    function add_last_dec_escape_char(state,c,stack)
     {var value=(state[6] * 10 | 0) + (c - 48 | 0) | 0;
      state[6] = 0;
      if(255 < value)caml_call3(Error[6],state,0,4);
      var _aN_=caml_call1(Stdlib_char[1],value);
      caml_call2(Stdlib_buffer[10],state[7],_aN_);
      return add_token_char(state,c,stack)}
    function comment_add_last_dec_escape_ch(state,c,stack)
     {var value=(state[6] * 10 | 0) + (c - 48 | 0) | 0;
      state[6] = 0;
      if(255 < value)caml_call3(Error[6],state,0,4);
      return add_token_char(state,c,stack)}
    function add_hex_escape_char(state,c,stack)
     {var _aM_=hex_val(c);
      state[6] = state[6] << 4 | _aM_;
      return add_token_char(state,c,stack)}
    function add_last_hex_escape_char(state,c,stack)
     {var _aK_=hex_val(c),value=state[6] << 4 | _aK_;
      state[6] = 0;
      var _aL_=caml_call1(Stdlib_char[1],value);
      caml_call2(Stdlib_buffer[10],state[7],_aL_);
      return add_token_char(state,c,stack)}
    function opening(state,char$0,stack)
     {check_new_sexp_allowed(state);
      state[3] = state[3] + 1 | 0;
      switch(state[2])
       {case 0:if(is_not_ignoring(state))add_pos(state,0);return stack;
        case 1:return is_not_ignoring(state)?[0,stack]:stack;
        case 2:
         return is_not_ignoring(state)?(add_pos(state,0),[0,stack]):stack;
        default:return [1,current_pos(0,state),stack]}}
    function do_reset_positions(state)
     {return caml_call2
              (_i_[6],
               state[8],
               [0,state[12],state[11] - state[13] | 0,state[11]])}
    function reset_positions(state)
     {switch(state[2])
       {case 0:return do_reset_positions(state);
        case 1:return 0;
        case 2:return do_reset_positions(state);
        default:return 0}}
    function toplevel_sexp_or_comment_added(state,stack,delta)
     {var _aJ_=state[9];
      if(typeof _aJ_ === "number")return stack;
      var f=_aJ_[1],saved_offset=state[11];
      state[11] = state[11] + delta | 0;
      var saved_full_sexps=state[10];
      try
       {var stack$0=caml_call2(f,state,stack)}
      catch(e){e = caml_wrap_exception(e);set_error_state(state);throw e}
      if
       (state[11]
        ===
        (saved_offset + delta | 0)
        &&
        state[10]
        ===
        saved_full_sexps)
       {state[11] = saved_offset;reset_positions(state);return stack$0}
      throw [0,Assert_failure,_K_]}
    function is_top_level(state)
     {var _aH_=is_not_ignoring(state),_aI_=_aH_?0 === state[3]?1:0:_aH_;
      return _aI_}
    function comment_added_assuming_cst(state,stack,delta)
     {return is_top_level(state)
              ?toplevel_sexp_or_comment_added(state,stack,delta)
              :stack}
    function sexp_added(state,stack,delta)
     {var _aF_=state[5],switch$0=0;
      if(_aF_)
       {var inner_comment_depth=_aF_[1];
        if(state[3] < inner_comment_depth)
         var is_comment=caml_call3(Error[6],state,0,9);
        else
         {var tl=_aF_[2];
          if(inner_comment_depth === state[3])
           {state[5] = tl;var is_comment=1}
          else
           switch$0 = 1}}
      else
       switch$0 = 1;
      if(switch$0)var is_comment=0;
      if(is_top_level(state))
       {if(1 - is_comment)state[10] = state[10] + 1 | 0;
        if(is_comment){var _aG_=3 <= state[2]?1:0;if(! _aG_)return stack}
        return toplevel_sexp_or_comment_added(state,stack,delta)}
      return stack}
    function make_list(acc,param)
     {var acc$0=acc,param$0=param;
      for(;;)
       if(typeof param$0 === "number")
        throw [0,Assert_failure,_L_];
       else
        {if(0 === param$0[0]){var stack=param$0[1];return [1,[1,acc$0],stack]}
         var
          param$1=param$0[2],
          sexp=param$0[1],
          acc$1=[0,sexp,acc$0],
          acc$0=acc$1,
          param$0=param$1;
         continue}}
    function add_comment_to_stack_cst(comment,stack)
     {if(typeof stack !== "number" && 2 === stack[0])
       return [2,stack[1],[0,comment,stack[2]],stack[3]];
      return [0,[1,comment],stack]}
    function add_sexp_to_stack_cst(sexp,stack)
     {if(typeof stack !== "number" && 2 === stack[0])
       {var
         stack$0=stack[3],
         rev_comments=stack[2],
         hash_semi_pos=stack[1],
         comment=
          [1,hash_semi_pos,caml_call1(Stdlib_list[9],rev_comments),sexp];
        return add_comment_to_stack_cst(comment,stack$0)}
      return [0,[0,sexp],stack]}
    function closing(state,char$0,stack$0)
     {if(0 < state[3])
       {switch(state[2])
         {case 0:
           if(is_not_ignoring(state))add_pos(state,0);
           var stack$1=stack$0;
           break;
          case 1:
           var stack$1=is_not_ignoring(state)?make_list(0,stack$0):stack$0;
           break;
          case 2:
           var
            stack$1=
             is_not_ignoring(state)
              ?(add_pos(state,0),make_list(0,stack$0))
              :stack$0;
           break;
          default:
           var end_pos=current_pos(_N_,state),acc=0,param=stack$0;
           for(;;)
            {var switch$0=0;
             if(typeof param === "number")
              switch$0 = 1;
             else
              switch(param[0])
               {case 0:
                 var
                  param$0=param[2],
                  t=param[1],
                  acc$0=[0,t,acc],
                  acc=acc$0,
                  param=param$0;
                 continue;
                case 1:
                 var
                  stack=param[2],
                  start_pos=param[1],
                  sexp=[1,[0,start_pos,end_pos],acc],
                  stack$1=add_sexp_to_stack_cst(sexp,stack);
                 break;
                default:switch$0 = 1}
             if(switch$0)throw [0,Assert_failure,_M_];
             break}}
        state[3] = state[3] - 1 | 0;
        return sexp_added(state,stack$1,1)}
      return caml_call3(Error[6],state,0,7)}
    function make_loc(opt,state)
     {if(opt)var sth=opt[1],delta=sth;else var delta=0;
      var _aE_=current_pos([0,delta],state);
      return [0,state[8][2],_aE_]}
    function add_non_quoted_atom_pos(state,atom)
     {var len=caml_ml_string_length(atom);
      return 1 === len
              ?caml_call2(_i_[3],state[8],state[11] - 1 | 0)
              :(add_pos(state,- len | 0),add_pos(state,-1))}
    function eps_push_atom(state,stack)
     {var str=caml_call1(Stdlib_buffer[2],state[7]);
      caml_call1(Stdlib_buffer[8],state[7]);
      switch(state[2])
       {case 0:
         if(is_not_ignoring(state))add_non_quoted_atom_pos(state,str);
         var stack$0=stack;
         break;
        case 1:
         var stack$0=is_not_ignoring(state)?[1,[0,str],stack]:stack;break;
        case 2:
         var
          stack$0=
           is_not_ignoring(state)
            ?(add_non_quoted_atom_pos(state,str),[1,[0,str],stack])
            :stack;
         break;
        default:
         var
          _aD_=current_pos(_O_,state),
          loc=[0,current_pos([0,- caml_ml_string_length(str) | 0],state),_aD_],
          sexp=[0,loc,str,[0,str]],
          stack$0=add_sexp_to_stack_cst(sexp,stack)}
      return sexp_added(state,stack$0,0)}
    function push_quoted_atom(state,char$0,stack)
     {var str=caml_call1(Stdlib_buffer[2],state[7]);
      caml_call1(Stdlib_buffer[8],state[7]);
      switch(state[2])
       {case 0:
         if(is_not_ignoring(state))add_pos(state,0);var stack$0=stack;break;
        case 1:
         var stack$0=is_not_ignoring(state)?[1,[0,str],stack]:stack;break;
        case 2:
         var
          stack$0=
           is_not_ignoring(state)?(add_pos(state,0),[1,[0,str],stack]):stack;
         break;
        default:
         var buf=state[8][1];
         caml_call2(Stdlib_buffer[10],buf,34);
         var s=caml_call1(Stdlib_buffer[2],buf);
         caml_call1(Stdlib_buffer[8],buf);
         var
          sexp=[0,make_loc(_P_,state),str,[0,s]],
          stack$0=add_sexp_to_stack_cst(sexp,stack)}
      return sexp_added(state,stack$0,1)}
    function start_sexp_comment(state,char$0,stack)
     {state[5] = [0,state[3],state[5]];
      return 3 <= state[2]?[2,current_pos(_Q_,state),0,stack]:stack}
    function start_block_comment(state,char$0,stack)
     {state[4] = state[4] + 1 | 0;
      switch(state[2])
       {case 0:return stack;
        case 1:return stack;
        case 2:return stack;
        default:
         if(1 === state[4])
          {var _aC_=current_pos(_R_,state);
           state[8][2] = _aC_;
           caml_call2(Stdlib_buffer[10],state[8][1],35)}
         caml_call2(Stdlib_buffer[10],state[8][1],char$0);
         return stack}}
    function end_block_comment(state,char$0,stack)
     {state[4] = state[4] - 1 | 0;
      switch(state[2])
       {case 0:return stack;
        case 1:return stack;
        case 2:return stack;
        default:
         var buf=state[8][1];
         caml_call2(Stdlib_buffer[10],buf,char$0);
         if(0 === state[4])
          {var s=caml_call1(Stdlib_buffer[2],buf);
           caml_call1(Stdlib_buffer[8],buf);
           var
            comment=[0,make_loc(_S_,state),s],
            stack$0=add_comment_to_stack_cst(comment,stack);
           return comment_added_assuming_cst(state,stack$0,1)}
         return stack}}
    function start_line_comment(state,char$0,stack)
     {if(3 <= state[2])
       {var _aB_=current_pos(0,state);
        state[8][2] = _aB_;
        caml_call2(Stdlib_buffer[10],state[8][1],char$0);
        return stack}
      return stack}
    function end_line_comment(state,stack)
     {switch(state[2])
       {case 0:return stack;
        case 1:return stack;
        case 2:return stack;
        default:
         var buf=state[8][1],s=caml_call1(Stdlib_buffer[2],buf);
         caml_call1(Stdlib_buffer[8],buf);
         var
          comment=[0,make_loc(0,state),s],
          stack$0=add_comment_to_stack_cst(comment,stack);
         return comment_added_assuming_cst(state,stack$0,0)}}
    function eps_eoi_check(state,stack)
     {if(0 < state[3])caml_call3(Error[6],state,1,5);
      if(is_ignoring(state))caml_call3(Error[6],state,1,9);
      if(0 === state[10])
       {var _aA_=state[9],switch$0=0;
        if(typeof _aA_ === "number")
         {if(! _aA_)switch$0 = 1}
        else
         if(_aA_[2])switch$0 = 1;
        if(switch$0)caml_call3(Error[6],state,1,11)}
      return stack}
    var
     include$0=
      [0,
       empty_stack,
       empty_stack_cst,
       new_state,
       reset$0,
       positions,
       mode,
       offset,
       line,
       column,
       has_unclosed_paren,
       set_error_state,
       sexp_of_stack,
       sexps_of_stack,
       sexps_cst_of_stack,
       include,
       Parse_error,
       atom_buffer,
       Old_parser_cont_state,
       automaton_state],
     Parsexp_Parser_automaton_inter=
      [0,
       include$0,
       Error,
       context,
       set_automaton_state,
       advance$0,
       advance_eol,
       block_comment_depth,
       add_atom_char,
       add_quoted_atom_char,
       add_escaped,
       add_dec_escape_char,
       add_last_dec_escape_char,
       comment_add_last_dec_escape_ch,
       add_hex_escape_char,
       add_last_hex_escape_char,
       start_sexp_comment,
       add_first_char,
       start_quoted_string,
       add_token_char,
       opening,
       closing,
       push_quoted_atom,
       start_block_comment,
       end_block_comment,
       start_line_comment,
       end_line_comment,
       eps_push_atom,
       eps_add_first_char_hash,
       eps_eoi_check,
       eps_add_escaped_cr];
    caml_register_global
     (105,Parsexp_Parser_automaton_inter,"Parsexp__Parser_automaton_internal");
    var Parsexp_Parsexp_intf=[0];
    caml_register_global(106,Parsexp_Parsexp_intf,"Parsexp__Parsexp_intf");
    var
     empty=include$0[1],
     empty$0=include$0[2],
     new_state$0=include$0[3],
     reset$1=include$0[4],
     positions$0=include$0[5],
     mode$0=include$0[6],
     offset$0=include$0[7],
     line$0=include$0[8],
     column$0=include$0[9],
     has_unclosed_paren$0=include$0[10],
     set_error_state$0=include$0[11],
     sexp_of_stack$0=include$0[12],
     sexps_of_stack$0=include$0[13],
     sexps_cst_of_stack$0=include$0[14],
     include$1=include$0[15],
     Parse_error$0=include$0[16],
     atom_buffer$0=include$0[17],
     Old_parser_cont_state$0=include$0[18],
     automaton_state$0=include$0[19],
     raise$0=Error[6];
    function tr_00(state,char$0,stack)
     {var stack$0=add_first_char(state,char$0,stack);
      set_automaton_state(state,3);
      advance$0(state);
      return stack$0}
    function tr_01(state,char$0,stack)
     {set_automaton_state(state,0);advance$0(state);return stack}
    function tr_02(state,char$0,stack)
     {set_automaton_state(state,0);advance_eol(state);return stack}
    function tr_03(state,char$0,stack)
     {set_automaton_state(state,2);advance$0(state);return stack}
    function tr_04(state,char$0,stack)
     {var stack$0=start_quoted_string(state,char$0,stack);
      set_automaton_state(state,8);
      advance$0(state);
      return stack$0}
    function tr_05(state,char$0,stack)
     {set_automaton_state(state,7);advance$0(state);return stack}
    function tr_06(state,char$0,stack)
     {var stack$0=opening(state,char$0,stack);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$0}
    function tr_07(state,char$0,stack)
     {var stack$0=closing(state,char$0,stack);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$0}
    function tr_08(state,char$0,stack)
     {var stack$0=start_line_comment(state,char$0,stack);
      set_automaton_state(state,6);
      advance$0(state);
      return stack$0}
    function tr_09(state,char$0,stack)
     {var stack$0=add_first_char(state,char$0,stack);
      set_automaton_state(state,5);
      advance$0(state);
      return stack$0}
    function tr_10(state,char$0,stack){return caml_call3(raise$0,state,0,12)}
    function tr_11(state,char$0,stack){return caml_call3(raise$0,state,0,10)}
    function tr_12(state,char$0,stack)
     {var stack$0=add_atom_char(state,char$0,stack);
      set_automaton_state(state,3);
      advance$0(state);
      return stack$0}
    function tr_13(state,char$0,stack)
     {var stack$0=eps_push_atom(state,stack);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$0}
    function tr_14(state,char$0,stack)
     {var stack$0=eps_push_atom(state,stack);
      set_automaton_state(state,0);
      advance_eol(state);
      return stack$0}
    function tr_15(state,char$0,stack)
     {var stack$0=eps_push_atom(state,stack);
      set_automaton_state(state,2);
      advance$0(state);
      return stack$0}
    function tr_16(state,char$0,stack)
     {var
       stack$0=eps_push_atom(state,stack),
       stack$1=start_quoted_string(state,char$0,stack$0);
      set_automaton_state(state,8);
      advance$0(state);
      return stack$1}
    function tr_17(state,char$0,stack)
     {var stack$0=add_atom_char(state,char$0,stack);
      set_automaton_state(state,4);
      advance$0(state);
      return stack$0}
    function tr_18(state,char$0,stack)
     {var
       stack$0=eps_push_atom(state,stack),
       stack$1=opening(state,char$0,stack$0);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$1}
    function tr_19(state,char$0,stack)
     {var
       stack$0=eps_push_atom(state,stack),
       stack$1=closing(state,char$0,stack$0);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$1}
    function tr_20(state,char$0,stack)
     {var
       stack$0=eps_push_atom(state,stack),
       stack$1=start_line_comment(state,char$0,stack$0);
      set_automaton_state(state,6);
      advance$0(state);
      return stack$1}
    function tr_21(state,char$0,stack)
     {var stack$0=add_atom_char(state,char$0,stack);
      set_automaton_state(state,5);
      advance$0(state);
      return stack$0}
    function tr_22(state,char$0,stack){return caml_call3(raise$0,state,0,8)}
    function tr_23(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,6);
      advance$0(state);
      return stack$0}
    function tr_24(state,char$0,stack)
     {var stack$0=end_line_comment(state,stack);
      set_automaton_state(state,0);
      advance_eol(state);
      return stack$0}
    function tr_25(state,char$0,stack)
     {var stack$0=end_line_comment(state,stack);
      set_automaton_state(state,2);
      advance$0(state);
      return stack$0}
    function tr_26(state,char$0,stack)
     {var
       stack$0=eps_add_first_char_hash(state,stack),
       stack$1=add_atom_char(state,char$0,stack$0);
      set_automaton_state(state,3);
      advance$0(state);
      return stack$1}
    function tr_27(state,char$0,stack)
     {var
       stack$0=eps_add_first_char_hash(state,stack),
       stack$1=eps_push_atom(state,stack$0);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$1}
    function tr_28(state,char$0,stack)
     {var
       stack$0=eps_add_first_char_hash(state,stack),
       stack$1=eps_push_atom(state,stack$0);
      set_automaton_state(state,0);
      advance_eol(state);
      return stack$1}
    function tr_29(state,char$0,stack)
     {var
       stack$0=eps_add_first_char_hash(state,stack),
       stack$1=eps_push_atom(state,stack$0);
      set_automaton_state(state,2);
      advance$0(state);
      return stack$1}
    function tr_30(state,char$0,stack)
     {var
       stack$0=eps_add_first_char_hash(state,stack),
       stack$1=eps_push_atom(state,stack$0),
       stack$2=start_quoted_string(state,char$0,stack$1);
      set_automaton_state(state,8);
      advance$0(state);
      return stack$2}
    function tr_31(state,char$0,stack)
     {var
       stack$0=eps_add_first_char_hash(state,stack),
       stack$1=add_atom_char(state,char$0,stack$0);
      set_automaton_state(state,4);
      advance$0(state);
      return stack$1}
    function tr_32(state,char$0,stack)
     {var
       stack$0=eps_add_first_char_hash(state,stack),
       stack$1=eps_push_atom(state,stack$0),
       stack$2=opening(state,char$0,stack$1);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$2}
    function tr_33(state,char$0,stack)
     {var
       stack$0=eps_add_first_char_hash(state,stack),
       stack$1=eps_push_atom(state,stack$0),
       stack$2=closing(state,char$0,stack$1);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$2}
    function tr_34(state,char$0,stack)
     {var stack$0=start_sexp_comment(state,char$0,stack);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$0}
    function tr_35(state,char$0,stack)
     {var stack$0=start_block_comment(state,char$0,stack);
      set_automaton_state(state,16);
      advance$0(state);
      return stack$0}
    function tr_36(state,char$0,stack)
     {var stack$0=add_quoted_atom_char(state,char$0,stack);
      set_automaton_state(state,8);
      advance$0(state);
      return stack$0}
    function tr_37(state,char$0,stack)
     {var stack$0=add_quoted_atom_char(state,char$0,stack);
      set_automaton_state(state,8);
      advance_eol(state);
      return stack$0}
    function tr_38(state,char$0,stack)
     {var stack$0=push_quoted_atom(state,char$0,stack);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$0}
    function tr_39(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,9);
      advance$0(state);
      return stack$0}
    function tr_40(state,char$0,stack)
     {var stack$0=add_escaped(state,char$0,stack);
      set_automaton_state(state,8);
      advance$0(state);
      return stack$0}
    function tr_41(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,15);
      advance_eol(state);
      return stack$0}
    function tr_42(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,10);
      advance$0(state);
      return stack$0}
    function tr_43(state,char$0,stack)
     {var stack$0=add_dec_escape_char(state,char$0,stack);
      set_automaton_state(state,11);
      advance$0(state);
      return stack$0}
    function tr_44(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,13);
      advance$0(state);
      return stack$0}
    function tr_45(state,char$0,stack)
     {var
       stack$0=eps_add_escaped_cr(state,stack),
       stack$1=add_quoted_atom_char(state,char$0,stack$0);
      set_automaton_state(state,8);
      advance$0(state);
      return stack$1}
    function tr_46(state,char$0,stack)
     {var
       stack$0=eps_add_escaped_cr(state,stack),
       stack$1=push_quoted_atom(state,char$0,stack$0);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$1}
    function tr_47(state,char$0,stack)
     {var
       stack$0=eps_add_escaped_cr(state,stack),
       stack$1=add_token_char(state,char$0,stack$0);
      set_automaton_state(state,9);
      advance$0(state);
      return stack$1}
    function tr_48(state,char$0,stack){return caml_call3(raise$0,state,0,1)}
    function tr_49(state,char$0,stack)
     {var stack$0=add_dec_escape_char(state,char$0,stack);
      set_automaton_state(state,12);
      advance$0(state);
      return stack$0}
    function tr_50(state,char$0,stack)
     {var stack$0=add_last_dec_escape_char(state,char$0,stack);
      set_automaton_state(state,8);
      advance$0(state);
      return stack$0}
    function tr_51(state,char$0,stack){return caml_call3(raise$0,state,0,0)}
    function tr_52(state,char$0,stack)
     {var stack$0=add_hex_escape_char(state,char$0,stack);
      set_automaton_state(state,14);
      advance$0(state);
      return stack$0}
    function tr_53(state,char$0,stack)
     {var stack$0=add_last_hex_escape_char(state,char$0,stack);
      set_automaton_state(state,8);
      advance$0(state);
      return stack$0}
    function tr_54(state,char$0,stack)
     {var stack$0=add_quoted_atom_char(state,char$0,stack);
      set_automaton_state(state,8);
      advance$0(state);
      return stack$0}
    function tr_55(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,15);
      advance$0(state);
      return stack$0}
    function tr_56(state,char$0,stack)
     {var stack$0=add_quoted_atom_char(state,char$0,stack);
      set_automaton_state(state,8);
      advance_eol(state);
      return stack$0}
    function tr_57(state,char$0,stack)
     {var stack$0=push_quoted_atom(state,char$0,stack);
      set_automaton_state(state,0);
      advance$0(state);
      return stack$0}
    function tr_58(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,9);
      advance$0(state);
      return stack$0}
    function tr_59(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,16);
      advance$0(state);
      return stack$0}
    function tr_60(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,16);
      advance_eol(state);
      return stack$0}
    function tr_61(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,19);
      advance$0(state);
      return stack$0}
    function tr_62(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,18);
      advance$0(state);
      return stack$0}
    function tr_63(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,17);
      advance$0(state);
      return stack$0}
    function tr_64(state,char$0,stack)
     {var
       stack$0=end_block_comment(state,char$0,stack),
       _az_=0 === state[4]?0:16;
      set_automaton_state(state,_az_);
      advance$0(state);
      return stack$0}
    function tr_65(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,19);
      advance_eol(state);
      return stack$0}
    function tr_66(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,20);
      advance$0(state);
      return stack$0}
    function tr_67(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,26);
      advance_eol(state);
      return stack$0}
    function tr_68(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,21);
      advance$0(state);
      return stack$0}
    function tr_69(state,char$0,stack)
     {var stack$0=add_dec_escape_char(state,char$0,stack);
      set_automaton_state(state,22);
      advance$0(state);
      return stack$0}
    function tr_70(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,24);
      advance$0(state);
      return stack$0}
    function tr_71(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,19);
      advance$0(state);
      return stack$0}
    function tr_72(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,16);
      advance$0(state);
      return stack$0}
    function tr_73(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,20);
      advance$0(state);
      return stack$0}
    function tr_74(state,char$0,stack)
     {var stack$0=add_dec_escape_char(state,char$0,stack);
      set_automaton_state(state,23);
      advance$0(state);
      return stack$0}
    function tr_75(state,char$0,stack)
     {var stack$0=comment_add_last_dec_escape_ch(state,char$0,stack);
      set_automaton_state(state,19);
      advance$0(state);
      return stack$0}
    function tr_76(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,25);
      advance$0(state);
      return stack$0}
    function tr_77(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,26);
      advance$0(state);
      return stack$0}
    function tr_78(state,char$0,stack)
     {var stack$0=add_token_char(state,char$0,stack);
      set_automaton_state(state,19);
      advance_eol(state);
      return stack$0}
    function tr_eoi_00(state,stack){return eps_eoi_check(state,stack)}
    function tr_eoi_01(state,stack){return caml_call3(raise$0,state,1,12)}
    function tr_eoi_02(state,stack){return caml_call3(raise$0,state,1,10)}
    function tr_eoi_03(state,stack)
     {var stack$0=eps_push_atom(state,stack);
      return eps_eoi_check(state,stack$0)}
    function tr_eoi_04(state,stack)
     {var stack$0=end_line_comment(state,stack);
      return eps_eoi_check(state,stack$0)}
    function tr_eoi_05(state,stack)
     {var
       stack$0=eps_add_first_char_hash(state,stack),
       stack$1=eps_push_atom(state,stack$0);
      return eps_eoi_check(state,stack$1)}
    function tr_eoi_06(state,stack){return caml_call3(raise$0,state,1,2)}
    function tr_eoi_07(state,stack){return caml_call3(raise$0,state,1,3)}
    var
     transitions=
      [0,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_01,
       tr_02,
       tr_00,
       tr_01,
       tr_03,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_01,
       tr_00,
       tr_04,
       tr_05,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_06,
       tr_07,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_08,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_09,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_00,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_10,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_02,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_11,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_13,
       tr_14,
       tr_12,
       tr_13,
       tr_15,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_13,
       tr_12,
       tr_16,
       tr_17,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_18,
       tr_19,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_20,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_21,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_13,
       tr_14,
       tr_12,
       tr_13,
       tr_15,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_13,
       tr_12,
       tr_16,
       tr_17,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_18,
       tr_19,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_20,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_22,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_13,
       tr_14,
       tr_12,
       tr_13,
       tr_15,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_13,
       tr_12,
       tr_16,
       tr_22,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_18,
       tr_19,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_20,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_21,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_12,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_24,
       tr_23,
       tr_23,
       tr_25,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_23,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_27,
       tr_28,
       tr_26,
       tr_27,
       tr_29,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_27,
       tr_26,
       tr_30,
       tr_31,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_32,
       tr_33,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_34,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_35,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_26,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_37,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_38,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_39,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_36,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_41,
       tr_40,
       tr_40,
       tr_42,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_43,
       tr_43,
       tr_43,
       tr_43,
       tr_43,
       tr_43,
       tr_43,
       tr_43,
       tr_43,
       tr_43,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_44,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_40,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_41,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_46,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_47,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_45,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_49,
       tr_49,
       tr_49,
       tr_49,
       tr_49,
       tr_49,
       tr_49,
       tr_49,
       tr_49,
       tr_49,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_50,
       tr_50,
       tr_50,
       tr_50,
       tr_50,
       tr_50,
       tr_50,
       tr_50,
       tr_50,
       tr_50,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_52,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_53,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_55,
       tr_56,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_55,
       tr_54,
       tr_57,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_58,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_54,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_60,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_61,
       tr_62,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_63,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_60,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_61,
       tr_64,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_63,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_60,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_61,
       tr_62,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_35,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_59,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_65,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_59,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_66,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_67,
       tr_61,
       tr_61,
       tr_68,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_69,
       tr_69,
       tr_69,
       tr_69,
       tr_69,
       tr_69,
       tr_69,
       tr_69,
       tr_69,
       tr_69,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_70,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_67,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_72,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_73,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_74,
       tr_74,
       tr_74,
       tr_74,
       tr_74,
       tr_74,
       tr_74,
       tr_74,
       tr_74,
       tr_74,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_75,
       tr_75,
       tr_75,
       tr_75,
       tr_75,
       tr_75,
       tr_75,
       tr_75,
       tr_75,
       tr_75,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_48,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_76,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_61,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_51,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_77,
       tr_78,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_77,
       tr_71,
       tr_72,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_73,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71,
       tr_71],
     transitions_eoi=
      [0,
       tr_eoi_00,
       tr_eoi_01,
       tr_eoi_02,
       tr_eoi_03,
       tr_eoi_03,
       tr_eoi_03,
       tr_eoi_04,
       tr_eoi_05,
       tr_eoi_06,
       tr_eoi_06,
       tr_eoi_06,
       tr_eoi_06,
       tr_eoi_06,
       tr_eoi_06,
       tr_eoi_06,
       tr_eoi_06,
       tr_eoi_07,
       tr_eoi_07,
       tr_eoi_07,
       tr_eoi_07,
       tr_eoi_07,
       tr_eoi_07,
       tr_eoi_07,
       tr_eoi_07,
       tr_eoi_07,
       tr_eoi_07,
       tr_eoi_07];
    function feed(state,char$0,stack)
     {var idx=caml_call1(automaton_state$0,state) << 8 | char$0;
      return caml_call3
              (caml_check_bound(transitions,idx)[1 + idx],state,char$0,stack)}
    function feed_eoi(state,stack)
     {var
       _ay_=caml_call1(automaton_state$0,state),
       stack$0=
        caml_call2
         (caml_check_bound(transitions_eoi,_ay_)[1 + _ay_],state,stack);
      caml_call1(set_error_state$0,state);
      return stack$0}
    var old_parser_approx_cont_states=_T_.slice();
    function old_parser_cont_state(state)
     {var match=context(state);
      if(match)
       {var
         _ax_=caml_call1(automaton_state$0,state),
         match$0=
          caml_check_bound(old_parser_approx_cont_states,_ax_)[1 + _ax_],
         match$1=caml_call1(has_unclosed_paren$0,state);
        if(! match$0 && match$1)return 3;
        return match$0}
      return 4}
    var
     Parsexp_Parser_automaton=
      [0,
       empty,
       empty$0,
       new_state$0,
       reset$1,
       positions$0,
       mode$0,
       offset$0,
       line$0,
       column$0,
       has_unclosed_paren$0,
       set_error_state$0,
       sexp_of_stack$0,
       sexps_of_stack$0,
       sexps_cst_of_stack$0,
       include$1,
       Parse_error$0,
       atom_buffer$0,
       Old_parser_cont_state$0,
       automaton_state$0,
       feed,
       feed_eoi,
       old_parser_cont_state];
    caml_register_global
     (107,Parsexp_Parser_automaton,"Parsexp__Parser_automaton");
    function feed_substring_unsafe(str,state,stack,i,stop)
     {var stack$0=stack,i$0=i;
      for(;;)
       {if(i$0 < stop)
         {var
           c=runtime.caml_string_unsafe_get(str,i$0),
           stack$1=feed(state,c,stack$0),
           i$1=i$0 + 1 | 0,
           stack$0=stack$1,
           i$0=i$1;
          continue}
        return stack$0}}
    function feed_subbytes_unsafe(str,state,stack,i,stop)
     {var stack$0=stack,i$0=i;
      for(;;)
       {if(i$0 < stop)
         {var
           c=runtime.caml_bytes_unsafe_get(str,i$0),
           stack$1=feed(state,c,stack$0),
           i$1=i$0 + 1 | 0,
           stack$0=stack$1,
           i$0=i$1;
          continue}
        return stack$0}}
    function feed_substring(state,str,pos,len,stack)
     {var str_len=caml_ml_string_length(str),_au_=pos < 0?1:0;
      if(_au_)
       var _av_=_au_;
      else
       var _aw_=len < 0?1:0,_av_=_aw_ || ((str_len - len | 0) < pos?1:0);
      if(_av_)caml_call1(Stdlib[1],cst_Parsexp_feed_substring);
      return feed_substring_unsafe(str,state,stack,pos,pos + len | 0)}
    function feed_subbytes(state,str,pos,len,stack)
     {var str_len=caml_ml_bytes_length(str),_ar_=pos < 0?1:0;
      if(_ar_)
       var _as_=_ar_;
      else
       var _at_=len < 0?1:0,_as_=_at_ || ((str_len - len | 0) < pos?1:0);
      if(_as_)caml_call1(Stdlib[1],cst_Parsexp_feed_subbytes);
      return feed_subbytes_unsafe(str,state,stack,pos,pos + len | 0)}
    function feed_string(state,str,stack)
     {return feed_substring_unsafe
              (str,state,stack,0,caml_ml_string_length(str))}
    function feed_bytes(state,str,stack)
     {return feed_subbytes_unsafe(str,state,stack,0,caml_ml_bytes_length(str))}
    var
     sexp_of_t$4=include$1[1],
     position$2=include$1[2],
     message$1=include$1[3];
    function report(ppf,filename,t)
     {var pos=caml_call1(position$2,t),msg=caml_call1(message$1,t);
      return caml_call6(Stdlib_format[123],ppf,_U_,filename,pos[1],pos[2],msg)}
    function sexp_of_t$5(param)
     {var
       v_location=param[3],
       v_sub_sexp=param[2],
       v_user_exn=param[1],
       arg=caml_call2(sexp_of_option,sexp_of_range,v_location),
       bnds=[0,[1,[0,_V_,[0,arg,0]]],0],
       arg$0=caml_call1(Sexplib0_Sexp[2],v_sub_sexp),
       bnds$0=[0,[1,[0,_W_,[0,arg$0,0]]],bnds],
       arg$1=caml_call1(sexp_of_exn,v_user_exn),
       bnds$1=[0,[1,[0,_X_,[0,arg$1,0]]],bnds$0];
      return [1,bnds$1]}
    function user_exn(t){return t[1]}
    function sub_sexp(t){return t[2]}
    function location(t){return t[3]}
    function report$0(ppf,filename,t)
     {var _ap_=t[3];
      if(_ap_)
       var
        match=_ap_[1],
        end_pos=match[2],
        start_pos=match[1],
        stop=(start_pos[2] + end_pos[3] | 0) - start_pos[3] | 0,
        start=start_pos[2],
        line=start_pos[1];
      else
       var stop=0,start=0,line=1;
      var _aq_=caml_call1(Stdlib_printexc[1],t[1]);
      return caml_call7
              (Stdlib_format[123],ppf,_Y_,filename,line,start,stop,_aq_)}
    var Of_sexp_error$0=[0,sexp_of_t$5,user_exn,sub_sexp,location,report$0];
    function sexp_of_t$6(param)
     {if(0 === param[0])
       {var v0=param[1],v0$0=caml_call1(sexp_of_t$4,v0);
        return [1,[0,_Z_,[0,v0$0,0]]]}
      var v0$1=param[1],v0$2=caml_call1(Of_sexp_error$0[1],v0$1);
      return [1,[0,___,[0,v0$2,0]]]}
    function report$1(ppf,filename,t)
     {if(0 === t[0]){var e=t[1];return report(ppf,filename,e)}
      var e$0=t[1];
      return caml_call3(Of_sexp_error$0[5],ppf,filename,e$0)}
    var
     Conv_error=[0,sexp_of_t$6,report$1],
     Of_sexp_error$1=[248,cst_Parsexp_Of_sexp_error,caml_fresh_oo_id(0)];
    function _$_(param)
     {if(param[1] === Of_sexp_error$1)
       {var v0=param[2],v0$0=caml_call1(Of_sexp_error$0[1],v0);
        return [1,[0,_aa_,[0,v0$0,0]]]}
      throw [0,Assert_failure,_ab_]}
    caml_call3(Sexplib0_Sexp_conv[51][2],0,Of_sexp_error$1,_$_);
    function Make(Params)
     {var empty=Params[3],Stack=[0,empty];
      function create(pos,param)
       {return caml_call3(new_state$0,pos,Params[2],Params[1])}
      function position(t)
       {var _an_=caml_call1(offset$0,t),_ao_=caml_call1(column$0,t);
        return [0,caml_call1(line$0,t),_ao_,_an_]}
      function stop(state){return caml_call1(set_error_state$0,state)}
      var State=[0,create,reset$1,offset$0,line$0,column$0,position,stop];
      function feed_eoi$0(state,stack)
       {var _am_=feed_eoi(state,stack);
        return caml_call2(Params[4],state,_am_)}
      function parse_string_exn(str)
       {var state=caml_call2(State[1],0,0);
        return feed_eoi$0(state,feed_string(state,str,Stack[1]))}
      function parse_string(str)
       {try
         {var x=parse_string_exn(str)}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Parse_error$0){var e=exn[2];return [1,e]}
          throw exn}
        return [0,x]}
      return [0,
              State,
              Stack,
              feed,
              feed_eoi$0,
              feed_string,
              feed_substring,
              feed_bytes,
              feed_subbytes,
              parse_string,
              parse_string_exn]}
    function Make_eager(Params)
     {var empty=Params[2],Stack=[0,empty];
      function position(t)
       {var _ak_=caml_call1(offset$0,t),_al_=caml_call1(column$0,t);
        return [0,caml_call1(line$0,t),_al_,_ak_]}
      var
       Read_only=[0,offset$0,line$0,column$0,position],
       offset=Read_only[1],
       line=Read_only[2],
       column=Read_only[3],
       position$0=Read_only[4];
      function create(pos,opt,f)
       {if(opt)
         var sth=opt[1],no_sexp_is_error=sth;
        else
         var no_sexp_is_error=0;
        function got_sexp(state,stack)
         {var parsed_value=caml_call2(Params[3],state,stack);
          caml_call2(f,state,parsed_value);
          return Params[2]}
        return caml_call3
                (new_state$0,pos,[0,got_sexp,no_sexp_is_error],Params[1])}
      function stop(t){return caml_call1(set_error_state$0,t)}
      function old_parser_cont_state$0(t){return old_parser_cont_state(t)}
      function feed_eoi$0(state,stack){feed_eoi(state,stack);return 0}
      var Got_sexp=[248,cst_Parsexp_Make_eager_Params_,caml_fresh_oo_id(0)];
      function got_sexp(state,parsed_value)
       {throw [0,Got_sexp,parsed_value,caml_call1(position$0,state)]}
      function create$0(param){return create(0,0,got_sexp)}
      function pos_of_lexbuf(lexbuf)
       {var p=lexbuf[12];return [0,p[2],p[4] - p[3] | 0,p[4]]}
      function update_lexbuf(lexbuf,pos)
       {var p=pos[3] - lexbuf[4] | 0;
        lexbuf[6] = p;
        lexbuf[5] = p;
        lexbuf[12] = [0,lexbuf[12][1],pos[1],pos[3] - pos[2] | 0,pos[3]];
        return 0}
      function feed_lexbuf(t,lexbuf,stack)
       {var stack$0=stack;
        for(;;)
         {var
           stack$1=
            feed_subbytes
             (t,lexbuf[2],lexbuf[6],lexbuf[3] - lexbuf[6] | 0,stack$0);
          lexbuf[6] = lexbuf[3];
          lexbuf[5] = lexbuf[3];
          if(lexbuf[9])return feed_eoi$0(t,stack$1);
          caml_call1(lexbuf[1],lexbuf);
          var stack$0=stack$1;
          continue}}
      function parse_gen(t,lexbuf)
       {caml_call2(reset$1,[0,pos_of_lexbuf(lexbuf)],t);
        try
         {feed_lexbuf(t,lexbuf,Stack[1])}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Got_sexp)
           {var pos=exn[3],parsed_value=exn[2];
            update_lexbuf(lexbuf,pos);
            return [0,parsed_value]}
          update_lexbuf(lexbuf,caml_call1(position$0,t));
          throw exn}
        update_lexbuf(lexbuf,caml_call1(position$0,t));
        return 0}
      function set_no_sexp_is_error(t,x)
       {var match=caml_call1(mode$0,t);
        if(typeof match === "number")throw [0,Assert_failure,_ac_];
        match[2] = x;
        return 0}
      function parse(t,lexbuf)
       {set_no_sexp_is_error(t,1);
        var match=parse_gen(t,lexbuf);
        if(match){var x=match[1];return x}
        return caml_call1(Stdlib[2],cst_Parsexp_parse_gen_None)}
      function parse_opt(t,lexbuf)
       {set_no_sexp_is_error(t,0);return parse_gen(t,lexbuf)}
      return [0,
              [0,
               reset$1,
               offset,
               line,
               column,
               position$0,
               stop,
               Read_only,
               create,
               old_parser_cont_state$0],
              Stack,
              feed,
              feed_eoi$0,
              feed_string,
              feed_substring,
              feed_bytes,
              feed_subbytes,
              [0,create$0,parse,parse_opt]]}
    var kind=1,mode$1=0;
    function make_value(param,stack){return caml_call1(sexp_of_stack$0,stack)}
    var Single=Make([0,kind,mode$1,empty,make_value]),kind$0=1,mode$2=1;
    function make_value$0(param,stack)
     {return caml_call1(sexps_of_stack$0,stack)}
    var Many=Make([0,kind$0,mode$2,empty,make_value$0]),kind$1=1;
    function make_value$1(param,stack)
     {return caml_call1(sexp_of_stack$0,stack)}
    var Eager=Make_eager([0,kind$1,empty,make_value$1]),kind$2=2,mode$3=0;
    function make_value$2(state,stack)
     {var _aj_=caml_call1(positions$0,state);
      return [0,caml_call1(sexp_of_stack$0,stack),_aj_]}
    var
     Single_and_positions=Make([0,kind$2,mode$3,empty,make_value$2]),
     kind$3=2,
     mode$4=1;
    function make_value$3(state,stack)
     {var _ai_=caml_call1(positions$0,state);
      return [0,caml_call1(sexps_of_stack$0,stack),_ai_]}
    var
     Many_and_positions=Make([0,kind$3,mode$4,empty,make_value$3]),
     kind$4=2;
    function make_value$4(state,stack)
     {var _ah_=caml_call1(positions$0,state);
      return [0,caml_call1(sexp_of_stack$0,stack),_ah_]}
    var
     Eager_and_positions=Make_eager([0,kind$4,empty,make_value$4]),
     kind$5=0,
     mode$5=0,
     empty$1=0;
    function make_value$5(state,param){return caml_call1(positions$0,state)}
    var
     Single_just_positions=Make([0,kind$5,mode$5,empty$1,make_value$5]),
     kind$6=0,
     mode$6=1,
     empty$2=0;
    function make_value$6(state,param){return caml_call1(positions$0,state)}
    var
     Many_just_positions=Make([0,kind$6,mode$6,empty$2,make_value$6]),
     kind$7=0,
     empty$3=0;
    function make_value$7(state,param){return caml_call1(positions$0,state)}
    var
     Eager_just_positions=Make_eager([0,kind$7,empty$3,make_value$7]),
     kind$8=3,
     mode$7=1;
    function make_value$8(param,stack)
     {return caml_call1(sexps_cst_of_stack$0,stack)}
    var Many_cst=Make([0,kind$8,mode$7,empty$0,make_value$8]),kind$9=3;
    function make_value$9(param,stack)
     {var match=caml_call1(sexps_cst_of_stack$0,stack);
      if(match && ! match[2]){var sexp=match[1];return sexp}
      throw [0,Assert_failure,_ad_]}
    var Eager_cst=Make_eager([0,kind$9,empty$0,make_value$9]);
    function Make_conv(Mode,Parser,Parser_pos)
     {function reraise(positions,parsed_value,sub,exn)
       {var loc=caml_call3(Mode[2],positions,parsed_value,sub);
        throw [0,Of_sexp_error$1,[0,exn,sub,loc]]}
      function parse_string_exn(str,f)
       {var parsed_value=caml_call1(Parser[10],str);
        try
         {var x=caml_call2(Mode[1],parsed_value,f);return x}
        catch(_ag_)
         {_ag_ = caml_wrap_exception(_ag_);
          if(_ag_[1] === Sexplib0_Sexp[6])
           {var
             sub=_ag_[3],
             exn=_ag_[2],
             positions=caml_call1(Parser_pos[10],str);
            return reraise(positions,parsed_value,sub,exn)}
          throw _ag_}}
      function parse_string(str,f)
       {try
         {var x=parse_string_exn(str,f)}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Parse_error$0){var e=exn[2];return [1,[0,e]]}
          if(exn[1] === Of_sexp_error$1){var e$0=exn[2];return [1,[1,e$0]]}
          throw exn}
        return [0,x]}
      function conv_exn(param,f)
       {var positions=param[2],parsed_value=param[1];
        try
         {var x=caml_call2(Mode[1],parsed_value,f);return x}
        catch(_af_)
         {_af_ = caml_wrap_exception(_af_);
          if(_af_[1] === Sexplib0_Sexp[6])
           {var sub=_af_[3],exn=_af_[2];
            return reraise(positions,parsed_value,sub,exn)}
          throw _af_}}
      function conv(x,f)
       {try
         {var x$0=conv_exn(x,f)}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Of_sexp_error$1){var e=exn[2];return [1,e]}
          throw exn}
        return [0,x$0]}
      function conv_combine(result,f)
       {if(0 === result[0])
         {var x=result[1],r=conv(x,f);
          if(0 === r[0])return r;
          var e=r[1];
          return [1,[1,e]]}
        var e$0=result[1];
        return [1,[0,e$0]]}
      return [0,
              reraise,
              parse_string_exn,
              parse_string,
              conv_exn,
              conv,
              conv_combine]}
    function apply_f(x,f){return caml_call1(f,x)}
    var
     Conv_single=
      Make_conv([0,apply_f,find$0],Single,Single_just_positions);
    function apply_f$0(x,f)
     {var _ae_=caml_call2(Stdlib_list[19],f,x);
      return caml_call1(Stdlib_list[9],_ae_)}
    var Conv_many=Make_conv([0,apply_f$0,find$1],Many,Many_just_positions);
    function apply_f$1(x,f){return caml_call1(f,x)}
    var
     Conv_many_at_once=
      Make_conv([0,apply_f$1,find$1],Many,Many_just_positions),
     Private=[0],
     Parsexp$0=
      [0,
       [0,sexp_of_t$4,position$2,message$1,report],
       Parse_error$0,
       Single,
       Many,
       Eager,
       Single_and_positions,
       Many_and_positions,
       Eager_and_positions,
       Single_just_positions,
       Many_just_positions,
       Eager_just_positions,
       Many_cst,
       Eager_cst,
       Of_sexp_error$0,
       Of_sexp_error$1,
       Conv_error,
       [0,
        Conv_single[3],
        Conv_single[2],
        Conv_single[5],
        Conv_single[4],
        Conv_single[6]],
       [0,Conv_many[3],Conv_many[2],Conv_many[5],Conv_many[4],Conv_many[6]],
       [0,
        Conv_many_at_once[3],
        Conv_many_at_once[2],
        Conv_many_at_once[5],
        Conv_many_at_once[4],
        Conv_many_at_once[6]],
       Private];
    caml_register_global(111,Parsexp$0,"Parsexp");
    return}
  (function(){return this}()));


//# 1 "../../.js/num.core/nums.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     add_nat=runtime.add_nat,
     blit_nat=runtime.blit_nat,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_div=runtime.caml_div,
     caml_equal=runtime.caml_equal,
     caml_greaterequal=runtime.caml_greaterequal,
     caml_greaterthan=runtime.caml_greaterthan,
     caml_int64_and=runtime.caml_int64_and,
     caml_int64_neg=runtime.caml_int64_neg,
     caml_int64_of_int32=runtime.caml_int64_of_int32,
     caml_int64_or=runtime.caml_int64_or,
     caml_int64_to_float=runtime.caml_int64_to_float,
     caml_int64_to_int32=runtime.caml_int64_to_int32,
     caml_ldexp_float=runtime.caml_ldexp_float,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_mod=runtime.caml_mod,
     caml_mul=runtime.caml_mul,
     caml_register_global=runtime.caml_register_global,
     caml_string_get=runtime.caml_string_get,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception,
     compare_nat=runtime.compare_nat,
     complement_nat=runtime.complement_nat,
     create_nat=runtime.create_nat,
     decr_nat=runtime.decr_nat,
     div_digit_nat=runtime.div_digit_nat,
     div_nat=runtime.div_nat,
     incr_nat=runtime.incr_nat,
     is_digit_int=runtime.is_digit_int,
     is_digit_zero=runtime.is_digit_zero,
     land_digit_nat=runtime.land_digit_nat,
     mult_digit_nat=runtime.mult_digit_nat,
     mult_nat=runtime.mult_nat,
     nth_digit_nat=runtime.nth_digit_nat,
     nth_digit_nat_native=runtime.nth_digit_nat_native,
     num_digits_nat=runtime.num_digits_nat,
     num_leading_zero_bits_in_digit=runtime.num_leading_zero_bits_in_digit,
     set_digit_nat=runtime.set_digit_nat,
     set_digit_nat_native=runtime.set_digit_nat_native,
     set_to_zero_nat=runtime.set_to_zero_nat,
     shift_right_nat=runtime.shift_right_nat,
     square_nat=runtime.square_nat,
     sub_nat=runtime.sub_nat;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_invalid_digit=caml_string_of_jsbytes("invalid digit"),
     cst_number_too_long=caml_string_of_jsbytes("number too long"),
     cst_power_base_int=caml_string_of_jsbytes("power_base_int"),
     cst_nat_of_int=caml_string_of_jsbytes("nat_of_int"),
     cst_int_of_nat=caml_string_of_jsbytes("int_of_nat"),
     cst_make_nat=caml_string_of_jsbytes("make_nat"),
     cst_xor_big_int=caml_string_of_jsbytes("xor_big_int"),
     cst_or_big_int=caml_string_of_jsbytes("or_big_int"),
     cst_and_big_int=caml_string_of_jsbytes("and_big_int"),
     cst_extract_big_int=caml_string_of_jsbytes("extract_big_int"),
     cst_shift_right_big_int=caml_string_of_jsbytes("shift_right_big_int"),
     cst_two_power_m1_big_int=caml_string_of_jsbytes("two_power_m1_big_int"),
     cst_shift_right_towards_zero_b=
      caml_string_of_jsbytes("shift_right_towards_zero_big_int"),
     cst_shift_left_big_int=caml_string_of_jsbytes("shift_left_big_int"),
     cst_100000000=caml_string_of_jsbytes("100000000"),
     cst_963295986=caml_string_of_jsbytes("963295986"),
     cst$0=caml_string_of_jsbytes("-"),
     sign=caml_string_of_jsbytes(""),
     cst_e=caml_string_of_jsbytes("e"),
     cst_1=caml_string_of_jsbytes("1."),
     cst_e$0=caml_string_of_jsbytes("e"),
     cst$1=caml_string_of_jsbytes("."),
     cst_sqrt_big_int=caml_string_of_jsbytes("sqrt_big_int"),
     cst_base_power_big_int=caml_string_of_jsbytes("base_power_big_int"),
     cst_base_power_big_int$0=caml_string_of_jsbytes("base_power_big_int"),
     cst_base_power_big_int$1=caml_string_of_jsbytes("base_power_big_int"),
     cst_power_big_int_positive_big=
      caml_string_of_jsbytes("power_big_int_positive_big_int"),
     cst_power_int_positive_big_int=
      caml_string_of_jsbytes("power_int_positive_big_int"),
     cst_power_big_int_positive_int=
      caml_string_of_jsbytes("power_big_int_positive_int"),
     cst_power_int_positive_int=
      caml_string_of_jsbytes("power_int_positive_int"),
     cst_sys_big_int_of_string$1=
      caml_string_of_jsbytes("sys_big_int_of_string"),
     cst_sys_big_int_of_string$0=
      caml_string_of_jsbytes("sys_big_int_of_string"),
     cst_sys_big_int_of_string=caml_string_of_jsbytes("sys_big_int_of_string"),
     cst=caml_string_of_jsbytes("-"),
     cst_nat_of_big_int=caml_string_of_jsbytes("nat_of_big_int"),
     cst_int64_of_big_int$1=caml_string_of_jsbytes("int64_of_big_int"),
     cst_int64_of_big_int=caml_string_of_jsbytes("int64_of_big_int"),
     cst_int64_of_big_int$0=caml_string_of_jsbytes("int64_of_big_int"),
     cst_int32_of_big_int=caml_string_of_jsbytes("int32_of_big_int"),
     cst_nativeint_of_big_int=caml_string_of_jsbytes("nativeint_of_big_int"),
     cst_nativeint_of_big_int$0=caml_string_of_jsbytes("nativeint_of_big_int"),
     cst_nativeint_of_big_int$1=caml_string_of_jsbytes("nativeint_of_big_int"),
     cst_int_of_big_int=caml_string_of_jsbytes("int_of_big_int"),
     cst_create_big_int=caml_string_of_jsbytes("create_big_int"),
     cst$5=caml_string_of_jsbytes("/"),
     cst_approx_ratio_exp=caml_string_of_jsbytes("approx_ratio_exp"),
     cst_approx_ratio_exp$0=caml_string_of_jsbytes("approx_ratio_exp"),
     cst_0$0=caml_string_of_jsbytes("+0."),
     cst$4=caml_string_of_jsbytes(""),
     cst_1$1=caml_string_of_jsbytes("-1."),
     cst_1$2=caml_string_of_jsbytes("+1."),
     cst_0$1=caml_string_of_jsbytes("-0."),
     cst_0$2=caml_string_of_jsbytes("+0."),
     cst_approx_ratio_fix=caml_string_of_jsbytes("approx_ratio_fix"),
     cst_0=caml_string_of_jsbytes("+0"),
     cst_1$0=caml_string_of_jsbytes("1"),
     cst_msd_ratio=caml_string_of_jsbytes("msd_ratio"),
     cst_big_int_of_ratio=caml_string_of_jsbytes("big_int_of_ratio"),
     cst_nat_of_ratio$0=caml_string_of_jsbytes("nat_of_ratio"),
     cst_nat_of_ratio=caml_string_of_jsbytes("nat_of_ratio"),
     cst_integer_argument_required=
      caml_string_of_jsbytes("integer argument required"),
     cst_integer_ratio=caml_string_of_jsbytes("integer_ratio"),
     cst_inverse_ratio=caml_string_of_jsbytes("inverse_ratio"),
     cst_create_normalized_ratio=
      caml_string_of_jsbytes("create_normalized_ratio"),
     cst_create_ratio=caml_string_of_jsbytes("create_ratio"),
     cst$3=caml_string_of_jsbytes(""),
     s=caml_string_of_jsbytes("infinite or undefined rational number"),
     cst$2=caml_string_of_jsbytes(" "),
     cst_num_of_string=caml_string_of_jsbytes("num_of_string"),
     cst_power_num=caml_string_of_jsbytes("power_num"),
     cst_Normalization_during_compu=
      caml_string_of_jsbytes("Normalization during computation"),
     cst_returned_by_get_normalize_=
      caml_string_of_jsbytes("     (returned by get_normalize_ratio ())"),
     cst_modifiable_with_set_normal=
      caml_string_of_jsbytes
       ("     (modifiable with set_normalize_ratio <your choice>)"),
     cst_Normalization_when_printin=
      caml_string_of_jsbytes("Normalization when printing"),
     cst_returned_by_get_normalize_$0=
      caml_string_of_jsbytes
       ("     (returned by get_normalize_ratio_when_printing ())"),
     cst_modifiable_with_set_normal$0=
      caml_string_of_jsbytes
       ("     (modifiable with set_normalize_ratio_when_printing <your choice>)"),
     cst_Floating_point_approximati=
      caml_string_of_jsbytes
       ("Floating point approximation when printing rational numbers"),
     cst_returned_by_get_approx_pri=
      caml_string_of_jsbytes("     (returned by get_approx_printing ())"),
     cst_modifiable_with_set_approx=
      caml_string_of_jsbytes
       ("     (modifiable with set_approx_printing <your choice>)"),
     cst_Default_precision=caml_string_of_jsbytes("  Default precision = "),
     cst_returned_by_get_floating_p=
      caml_string_of_jsbytes("     (returned by get_floating_precision ())"),
     cst_modifiable_with_set_floati=
      caml_string_of_jsbytes
       ("     (modifiable with set_floating_precision <your choice>)"),
     cst_Error_when_a_rational_deno=
      caml_string_of_jsbytes("Error when a rational denominator is null"),
     cst_returned_by_get_error_when=
      caml_string_of_jsbytes
       ("     (returned by get_error_when_null_denominator ())"),
     cst_modifiable_with_set_error_=
      caml_string_of_jsbytes
       ("     (modifiable with set_error_when_null_denominator <your choice>)"),
     cst_ON=caml_string_of_jsbytes("ON"),
     cst_OFF=caml_string_of_jsbytes("OFF"),
     cst$6=caml_string_of_jsbytes(" --> "),
     Stdlib=global_data.Stdlib,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_char=global_data.Stdlib__char,
     Assert_failure=global_data.Assert_failure,
     Stdlib_int64=global_data.Stdlib__int64,
     Stdlib_nativeint=global_data.Stdlib__nativeint,
     _z_=[0,caml_string_of_jsbytes("nat.ml"),273,9],
     _y_=runtime.caml_int64_create_lo_mi_hi(6553600,11973543,3552),
     _x_=[0,caml_string_of_jsbytes("nat.ml"),280,9],
     _w_=[0,caml_string_of_jsbytes("nat.ml"),287,9],
     _v_=[0,caml_string_of_jsbytes("nat.ml"),293,9],
     _u_=runtime.caml_int64_create_lo_mi_hi(6553600,11973543,3552),
     _l_=[0,caml_string_of_jsbytes("big_int.ml"),879,2],
     _k_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _j_=runtime.caml_int64_create_lo_mi_hi(16777215,255,0),
     _g_=runtime.caml_int64_create_lo_mi_hi(16777215,255,0),
     _h_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _i_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _d_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _e_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _f_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _n_=[0,caml_string_of_jsbytes("ratio.ml"),575,11],
     _m_=[0,caml_string_of_jsbytes("e0"),0],
     _r_=[0,1],
     _s_=[0,1],
     _t_=[0,1],
     _o_=[0,1],
     _p_=[0,1],
     _q_=[0,1];
    function gcd_int(i1,i2)
     {var i1$0=i1,i2$0=i2;
      for(;;)
       {if(0 === i2$0)return caml_call1(Stdlib[18],i1$0);
        var i2$1=caml_mod(i1$0,i2$0),i1$0=i2$0,i2$0=i2$1;
        continue}}
    function num_bits_int_aux(n)
     {return 0 === n?0:num_bits_int_aux(n >>> 1 | 0) + 1 | 0}
    function num_bits_int(n)
     {return num_bits_int_aux(caml_call1(Stdlib[18],n))}
    function sign_int(i){return 0 === i?0:0 < i?1:-1}
    var
     length_of_int=Stdlib_sys[10] - 1 | 0,
     monster_int=1 << length_of_int,
     biggest_int=monster_int - 1 | 0,
     least_int=- biggest_int | 0;
    function compare_int(n1,n2)
     {return n1 === n2?0:caml_greaterthan(n1,n2)?1:-1}
    var
     Int_misc=
      [0,
       gcd_int,
       num_bits_int,
       compare_int,
       sign_int,
       length_of_int,
       biggest_int,
       least_int,
       monster_int];
    caml_register_global(122,Int_misc,"Int_misc");
    runtime.initialize_nat(0);
    function length_nat(n){return n.length - 1 - 1 | 0}
    var _a_=Stdlib_sys[9];
    function make_nat(len)
     {if(0 <= len)
       {var res=create_nat(len);set_to_zero_nat(res,0,len);return res}
      return caml_call1(Stdlib[1],cst_make_nat)}
    var a_2=make_nat(2),a_1=make_nat(1),b_2=make_nat(2);
    function copy_nat(nat,off_set,length)
     {var res=create_nat(length);
      blit_nat(res,0,nat,off_set,length);
      return res}
    function is_zero_nat(n,off,len)
     {var _dk_=num_digits_nat(n,off,len);
      return 0 === compare_nat(make_nat(1),0,1,n,off,_dk_)?1:0}
    function is_nat_int(nat,off,len)
     {var
       _di_=1 === num_digits_nat(nat,off,len)?1:0,
       _dj_=_di_?is_digit_int(nat,off):_di_;
      return _dj_}
    function int_of_nat(nat)
     {var len=length_nat(nat);
      return is_nat_int(nat,0,len)
              ?nth_digit_nat(nat,0)
              :caml_call1(Stdlib[2],cst_int_of_nat)}
    function nat_of_int(i)
     {if(0 <= i)
       {var res=make_nat(1);return 0 === i?res:(set_digit_nat(res,0,i),res)}
      return caml_call1(Stdlib[1],cst_nat_of_int)}
    function eq_nat(nat1,off1,len1,nat2,off2,len2)
     {var _dh_=num_digits_nat(nat2,off2,len2);
      return 0
              ===
              compare_nat
               (nat1,off1,num_digits_nat(nat1,off1,len1),nat2,off2,_dh_)
              ?1
              :0}
    function le_nat(nat1,off1,len1,nat2,off2,len2)
     {var _dg_=num_digits_nat(nat2,off2,len2);
      return compare_nat
               (nat1,off1,num_digits_nat(nat1,off1,len1),nat2,off2,_dg_)
              <=
              0
              ?1
              :0}
    function lt_nat(nat1,off1,len1,nat2,off2,len2)
     {var _df_=num_digits_nat(nat2,off2,len2);
      return compare_nat
               (nat1,off1,num_digits_nat(nat1,off1,len1),nat2,off2,_df_)
              <
              0
              ?1
              :0}
    function ge_nat(nat1,off1,len1,nat2,off2,len2)
     {var _de_=num_digits_nat(nat2,off2,len2);
      return 0
              <=
              compare_nat
               (nat1,off1,num_digits_nat(nat1,off1,len1),nat2,off2,_de_)
              ?1
              :0}
    function gt_nat(nat1,off1,len1,nat2,off2,len2)
     {var _dd_=num_digits_nat(nat2,off2,len2);
      return 0
              <
              compare_nat
               (nat1,off1,num_digits_nat(nat1,off1,len1),nat2,off2,_dd_)
              ?1
              :0}
    function exchange(r1,r2)
     {var old1=r1[1];r1[1] = r2[1];r2[1] = old1;return 0}
    function gcd_nat(nat1,off1,len1,nat2,off2,len2)
     {if(is_zero_nat(nat1,off1,len1))
       {blit_nat(nat1,off1,nat2,off2,len2);return len2}
      var
       copy1=[0,create_nat(len1 + 1 | 0)],
       copy2=[0,create_nat(len2 + 1 | 0)];
      blit_nat(copy1[1],0,nat1,off1,len1);
      blit_nat(copy2[1],0,nat2,off2,len2);
      set_digit_nat(copy1[1],len1,0);
      set_digit_nat(copy2[1],len2,0);
      if(lt_nat(copy1[1],0,len1,copy2[1],0,len2))exchange(copy1,copy2);
      var
       _db_=length_nat(copy1[1]),
       real_len1=[0,num_digits_nat(copy1[1],0,_db_)],
       _dc_=length_nat(copy2[1]),
       real_len2=[0,num_digits_nat(copy2[1],0,_dc_)];
      for(;;)
       {if(is_zero_nat(copy2[1],0,real_len2[1]))
         {blit_nat(nat1,off1,copy1[1],0,real_len1[1]);return real_len1[1]}
        set_digit_nat(copy1[1],real_len1[1],0);
        div_nat(copy1[1],0,real_len1[1] + 1 | 0,copy2[1],0,real_len2[1]);
        exchange(copy1,copy2);
        real_len1[1] = real_len2[1];
        real_len2[1] = num_digits_nat(copy2[1],0,real_len2[1]);
        continue}}
    function sqrt_nat(rad,off,len)
     {var
       len$0=num_digits_nat(rad,off,len),
       len_parity=len$0 % 2 | 0,
       rad_len=(len$0 + 1 | 0) + len_parity | 0,
       rad$0=create_nat(rad_len);
      blit_nat(rad$0,0,rad,off,len$0);
      set_digit_nat(rad$0,len$0,0);
      set_digit_nat(rad$0,rad_len - 1 | 0,0);
      var
       cand_len=(len$0 + 1 | 0) / 2 | 0,
       cand_rest=rad_len - cand_len | 0,
       cand=make_nat(cand_len),
       shift_cand=
        (num_leading_zero_bits_in_digit(rad$0,len$0 - 1 | 0)
         +
         caml_mul(_a_,len_parity)
         |
         0)
        /
        2
        |
        0;
      if(shift_cand === _a_)return cand;
      complement_nat(cand,0,cand_len);
      shift_right_nat(cand,0,1,a_1,0,shift_cand);
      var next_cand=create_nat(rad_len);
      for(;;)
       {blit_nat(next_cand,0,rad$0,0,rad_len);
        div_nat(next_cand,0,rad_len,cand,0,cand_len);
        add_nat(next_cand,cand_len,cand_rest,cand,0,cand_len,0);
        shift_right_nat(next_cand,cand_len,cand_rest,a_1,0,1);
        if(lt_nat(next_cand,cand_len,cand_rest,cand,0,cand_len))
         {blit_nat(cand,0,next_cand,cand_len,cand_len);continue}
        return cand}}
    var power_base_max=make_nat(2);
    if(32 === _a_)
     set_digit_nat(power_base_max,0,1000000000);
    else
     {if(64 !== _a_)throw [0,Assert_failure,_z_];
      set_digit_nat(power_base_max,0,caml_int64_to_int32(_y_));
      mult_digit_nat(power_base_max,0,2,power_base_max,0,1,nat_of_int(9),0)}
    if(32 === _a_)
     var _b_=9;
    else
     {if(64 !== _a_)throw [0,Assert_failure,_x_];var _b_=19}
    if(32 === _a_)
     var _c_=9;
    else
     {if(64 !== _a_)throw [0,Assert_failure,_w_];var _c_=18}
    if(32 === _a_)
     var max_power_10_power_in_int=nat_of_int(1000000000);
    else
     {if(64 !== _a_)throw [0,Assert_failure,_v_];
      var max_power_10_power_in_int=nat_of_int(caml_int64_to_int32(_u_))}
    function raw_string_of_digit(nat,off)
     {if(is_nat_int(nat,off,1))
       {var _c__=nth_digit_nat(nat,off);return caml_call1(Stdlib[33],_c__)}
      blit_nat(b_2,0,nat,off,1);
      div_digit_nat(a_2,0,a_1,0,b_2,0,2,max_power_10_power_in_int,0);
      var
       leading_digits=nth_digit_nat(a_2,0),
       _c$_=nth_digit_nat(a_1,0),
       s1=caml_call1(Stdlib[33],_c$_),
       len=caml_ml_string_length(s1);
      if(10 <= leading_digits)
       {var
         result=caml_call2(Stdlib_bytes[1],_c_ + 2 | 0,48),
         _da_=caml_call1(Stdlib[33],leading_digits);
        caml_call5(Stdlib_string[6],_da_,0,result,0,2);
        caml_call5
         (Stdlib_string[6],
          s1,
          0,
          result,
          caml_ml_bytes_length(result) - len | 0,
          len);
        return caml_call1(Stdlib_bytes[6],result)}
      var result$0=caml_call2(Stdlib_bytes[1],_c_ + 1 | 0,48);
      caml_bytes_set
       (result$0,0,caml_call1(Stdlib_char[1],48 + leading_digits | 0));
      caml_call5
       (Stdlib_string[6],
        s1,
        0,
        result$0,
        caml_ml_bytes_length(result$0) - len | 0,
        len);
      return caml_call1(Stdlib_bytes[6],result$0)}
    function make_power_base(base,power_base)
     {var i=[0,0],j=[0,0];
      set_digit_nat(power_base,0,base);
      for(;;)
       {i[1]++;
        if(is_digit_zero(power_base,i[1]))
         {mult_digit_nat
           (power_base,i[1],2,power_base,i[1] - 1 | 0,1,power_base,0);
          continue}
        for(;;)
         {if(j[1] < (i[1] - 1 | 0) && is_digit_int(power_base,j[1]))
           {j[1]++;continue}
          return [0,i[1] - 2 | 0,j[1]]}}}
    function power_base_int(base,i)
     {if(0 !== i && 1 !== base)
       {if(0 === base)return nat_of_int(0);
        if(0 <= i)
         {var
           power_base=make_nat(_a_ + 1 | 0),
           match=make_power_base(base,power_base),
           pmax=match[1],
           n=caml_div(i,pmax + 1 | 0),
           rem=caml_mod(i,pmax + 1 | 0);
          if(0 < n)
           {var
             newn=i === biggest_int?n:n + 1 | 0,
             res=make_nat(newn),
             res2=make_nat(newn),
             l=num_bits_int(n) - 2 | 0;
            blit_nat(res,0,power_base,pmax,1);
            if(! (l < 0))
             {var i$0=l;
              for(;;)
               {var
                 len=num_digits_nat(res,0,newn),
                 len2=caml_call2(Stdlib[16],n,2 * len | 0),
                 succ_len2=len2 + 1 | 0;
                square_nat(res2,0,len2,res,0,len);
                if(0 < (n & 1 << i$0))
                 {set_to_zero_nat(res,0,len);
                  mult_digit_nat(res,0,succ_len2,res2,0,len2,power_base,pmax)}
                else
                 blit_nat(res,0,res2,0,len2);
                set_to_zero_nat(res2,0,len2);
                var _c9_=i$0 - 1 | 0;
                if(0 !== i$0){var i$0=_c9_;continue}
                break}}
            return 0 < rem
                    ?(mult_digit_nat(res2,0,newn,res,0,n,power_base,rem - 1 | 0),
                      res2)
                    :res}
          return copy_nat(power_base,rem - 1 | 0,1)}
        return caml_call1(Stdlib[1],cst_power_base_int)}
      return nat_of_int(1)}
    function unadjusted_string_of_nat(nat,off,len_nat)
     {var len=num_digits_nat(nat,off,len_nat);
      if(1 === len)return raw_string_of_digit(nat,off);
      var
       len_copy=[0,len + 1 | 0],
       copy1=create_nat(len_copy[1]),
       copy2=make_nat(len_copy[1]),
       rest_digit=make_nat(2);
      if(caml_div(biggest_int,_b_ + 1 | 0) < len)
       return caml_call1(Stdlib[2],cst_number_too_long);
      var
       len_s=caml_mul(_b_ + 1 | 0,len),
       s=caml_call2(Stdlib_bytes[1],len_s,48),
       pos_ref=[0,len_s];
      len_copy[1] = len_copy[1] - 1 | 0;
      blit_nat(copy1,0,nat,off,len);
      set_digit_nat(copy1,len,0);
      for(;;)
       {if(is_zero_nat(copy1,0,len_copy[1]))
         return caml_call1(Stdlib_bytes[42],s);
        div_digit_nat
         (copy2,0,rest_digit,0,copy1,0,len_copy[1] + 1 | 0,power_base_max,0);
        var str=raw_string_of_digit(rest_digit,0);
        caml_call5
         (Stdlib_string[6],
          str,
          0,
          s,
          pos_ref[1] - caml_ml_string_length(str) | 0,
          caml_ml_string_length(str));
        pos_ref[1] = pos_ref[1] - _b_ | 0;
        len_copy[1] = num_digits_nat(copy2,0,len_copy[1]);
        blit_nat(copy1,0,copy2,0,len_copy[1]);
        set_digit_nat(copy1,len_copy[1],0);
        continue}}
    function string_of_nat(nat)
     {var s=unadjusted_string_of_nat(nat,0,length_nat(nat)),index=[0,0];
      try
       {var _c6_=caml_ml_string_length(s) - 2 | 0,_c5_=0;
        if(! (_c6_ < 0))
         {var i=_c5_;
          for(;;)
           {if(48 !== caml_string_get(s,i)){index[1] = i;throw Stdlib[3]}
            var _c7_=i + 1 | 0;
            if(_c6_ !== i){var i=_c7_;continue}
            break}}}
      catch(_c8_)
       {_c8_ = caml_wrap_exception(_c8_);if(_c8_ !== Stdlib[3])throw _c8_}
      return caml_call3
              (Stdlib_string[4],
               s,
               index[1],
               caml_ml_string_length(s) - index[1] | 0)}
    function sys_nat_of_string(base,s,off,len)
     {var
       power_base=make_nat(_a_ + 1 | 0),
       match=make_power_base(base,power_base),
       pint=match[2],
       pmax=match[1],
       _cX_=1 + caml_div(len,pmax + 1 | 0) | 0,
       current_len=[0,1],
       possible_len=[0,caml_call2(Stdlib[16],2,_cX_)],
       nat1=make_nat(_cX_),
       nat2=make_nat(_cX_),
       digits_read=[0,0],
       bound=(off + len | 0) - 1 | 0,
       int$0=[0,0];
      if(! (bound < off))
       {var i=off;
        for(;;)
         {var n=caml_string_get(s,i),switch$0=0;
          if(32 <= n)
           {if(93 <= n)
             {if(95 === n && off < i)switch$0 = 2}
            else
             if(58 < (n - 33 | 0) >>> 0)switch$0 = 1}
          else
           if(11 <= n){if(13 === n)switch$0 = 1}else if(9 <= n)switch$0 = 1;
          switch(switch$0)
           {case 0:
             var switch$1=0;
             if(48 <= n && n <= (47 + caml_call2(Stdlib[16],base,10) | 0))
              var _c4_=n - 48 | 0;
             else
              switch$1 = 1;
             if(switch$1)
              {var switch$2=0;
               if(65 <= n && n <= ((65 + base | 0) - 11 | 0))
                var _c4_=n - 55 | 0;
               else
                switch$2 = 1;
               if(switch$2)
                {var switch$3=0;
                 if(97 <= n && n <= ((97 + base | 0) - 11 | 0))
                  var _c4_=n - 87 | 0;
                 else
                  switch$3 = 1;
                 if(switch$3)var _c4_=caml_call1(Stdlib[2],cst_invalid_digit)}}
             int$0[1] = caml_mul(int$0[1],base) + _c4_ | 0;
             digits_read[1]++;
             break;
            case 1:break
            }
          var
           _cY_=digits_read[1] === pint?1:0,
           _cZ_=_cY_ || (i === bound?1:0),
           _c0_=_cZ_?1 - (0 === digits_read[1]?1:0):_cZ_;
          if(_c0_)
           {set_digit_nat(nat1,0,int$0[1]);
            var
             erase_len=
              _cX_ === current_len[1]?current_len[1] - 1 | 0:current_len[1],
             _c1_=1;
            if(! (erase_len < 1))
             {var j=_c1_;
              for(;;)
               {set_digit_nat(nat1,j,0);
                var _c3_=j + 1 | 0;
                if(erase_len !== j){var j=_c3_;continue}
                break}}
            mult_digit_nat
             (nat1,
              0,
              possible_len[1],
              nat2,
              0,
              current_len[1],
              power_base,
              digits_read[1] - 1 | 0);
            blit_nat(nat2,0,nat1,0,possible_len[1]);
            current_len[1] = num_digits_nat(nat1,0,possible_len[1]);
            possible_len[1]
            =
            caml_call2(Stdlib[16],_cX_,current_len[1] + 1 | 0);
            int$0[1] = 0;
            digits_read[1] = 0}
          var _c2_=i + 1 | 0;
          if(bound !== i){var i=_c2_;continue}
          break}}
      var nat=create_nat(current_len[1]);
      blit_nat(nat,0,nat1,0,current_len[1]);
      return nat}
    function nat_of_string(s)
     {return sys_nat_of_string(10,s,0,caml_ml_string_length(s))}
    function float_of_nat(nat)
     {return runtime.caml_float_of_string(string_of_nat(nat))}
    var
     Nat=
      [0,
       make_nat,
       copy_nat,
       length_nat,
       is_zero_nat,
       is_nat_int,
       int_of_nat,
       nat_of_int,
       eq_nat,
       le_nat,
       lt_nat,
       ge_nat,
       gt_nat,
       gcd_nat,
       sqrt_nat,
       string_of_nat,
       nat_of_string,
       sys_nat_of_string,
       float_of_nat,
       make_power_base,
       power_base_int,
       _a_];
    caml_register_global(127,Nat,"Nat");
    function sign_big_int(bi){return bi[1]}
    var zero_big_int=[0,0,make_nat(1)],unit_big_int=[0,1,nat_of_int(1)];
    function num_digits_big_int(bi)
     {var _cW_=length_nat(bi[2]);return num_digits_nat(bi[2],0,_cW_)}
    function num_bits_big_int(bi)
     {var
       _cV_=length_nat(bi[2]),
       nd=num_digits_nat(bi[2],0,_cV_),
       lz=num_leading_zero_bits_in_digit(bi[2],nd - 1 | 0);
      return caml_mul(nd,_a_) - lz | 0}
    function minus_big_int(bi)
     {var _cT_=num_digits_big_int(bi),_cU_=copy_nat(bi[2],0,_cT_);
      return [0,- bi[1] | 0,_cU_]}
    function abs_big_int(bi)
     {var
       _cQ_=num_digits_big_int(bi),
       _cR_=copy_nat(bi[2],0,_cQ_),
       _cS_=0 === bi[1]?0:1;
      return [0,_cS_,_cR_]}
    function compare_big_int(bi1,bi2)
     {if(0 === bi1[1] && 0 === bi2[1])return 0;
      if(bi1[1] < bi2[1])return -1;
      if(bi2[1] < bi1[1])return 1;
      if(1 === bi1[1])
       {var
         _cK_=num_digits_big_int(bi2),
         _cL_=bi2[2],
         _cM_=num_digits_big_int(bi1);
        return compare_nat(bi1[2],0,_cM_,_cL_,0,_cK_)}
      var
       _cN_=num_digits_big_int(bi1),
       _cO_=bi1[2],
       _cP_=num_digits_big_int(bi2);
      return compare_nat(bi2[2],0,_cP_,_cO_,0,_cN_)}
    function eq_big_int(bi1,bi2){return 0 === compare_big_int(bi1,bi2)?1:0}
    function le_big_int(bi1,bi2){return compare_big_int(bi1,bi2) <= 0?1:0}
    function ge_big_int(bi1,bi2){return 0 <= compare_big_int(bi1,bi2)?1:0}
    function lt_big_int(bi1,bi2){return compare_big_int(bi1,bi2) < 0?1:0}
    function gt_big_int(bi1,bi2){return 0 < compare_big_int(bi1,bi2)?1:0}
    function max_big_int(bi1,bi2){return lt_big_int(bi1,bi2)?bi2:bi1}
    function min_big_int(bi1,bi2){return gt_big_int(bi1,bi2)?bi2:bi1}
    function pred_big_int(bi)
     {var _cI_=bi[1];
      if(0 === _cI_)return [0,-1,nat_of_int(1)];
      if(1 === _cI_)
       {var size_bi=num_digits_big_int(bi),copy_bi=copy_nat(bi[2],0,size_bi);
        decr_nat(copy_bi,0,size_bi,0);
        var _cJ_=is_zero_nat(copy_bi,0,size_bi)?0:1;
        return [0,_cJ_,copy_bi]}
      var
       size_bi$0=num_digits_big_int(bi),
       size_res=size_bi$0 + 1 | 0,
       copy_bi$0=create_nat(size_res);
      blit_nat(copy_bi$0,0,bi[2],0,size_bi$0);
      set_digit_nat(copy_bi$0,size_bi$0,0);
      incr_nat(copy_bi$0,0,size_res,1);
      return [0,-1,copy_bi$0]}
    function succ_big_int(bi)
     {var _cG_=bi[1];
      if(-1 === _cG_)
       {var size_bi=num_digits_big_int(bi),copy_bi=copy_nat(bi[2],0,size_bi);
        decr_nat(copy_bi,0,size_bi,0);
        var _cH_=is_zero_nat(copy_bi,0,size_bi)?0:-1;
        return [0,_cH_,copy_bi]}
      if(0 === _cG_)return [0,1,nat_of_int(1)];
      var
       size_bi$0=num_digits_big_int(bi),
       size_res=size_bi$0 + 1 | 0,
       copy_bi$0=create_nat(size_res);
      blit_nat(copy_bi$0,0,bi[2],0,size_bi$0);
      set_digit_nat(copy_bi$0,size_bi$0,0);
      incr_nat(copy_bi$0,0,size_res,1);
      return [0,1,copy_bi$0]}
    function add_big_int(bi1,bi2)
     {var size_bi1=num_digits_big_int(bi1),size_bi2=num_digits_big_int(bi2);
      if(bi1[1] === bi2[1])
       {var match=compare_nat(bi1[2],0,size_bi1,bi2[2],0,size_bi2);
        if(-1 === match)
         {var res=create_nat(size_bi2 + 1 | 0);
          blit_nat(res,0,bi2[2],0,size_bi2);
          set_digit_nat(res,size_bi2,0);
          add_nat(res,0,size_bi2 + 1 | 0,bi1[2],0,size_bi1,0);
          var res$0=res}
        else
         {var res$1=create_nat(size_bi1 + 1 | 0);
          blit_nat(res$1,0,bi1[2],0,size_bi1);
          set_digit_nat(res$1,size_bi1,0);
          add_nat(res$1,0,size_bi1 + 1 | 0,bi2[2],0,size_bi2,0);
          var res$0=res$1}
        return [0,bi1[1],res$0]}
      var match$0=compare_nat(bi1[2],0,size_bi1,bi2[2],0,size_bi2);
      if(0 === match$0)return zero_big_int;
      if(1 === match$0)
       {var res$2=copy_nat(bi1[2],0,size_bi1);
        sub_nat(res$2,0,size_bi1,bi2[2],0,size_bi2,1);
        return [0,bi1[1],res$2]}
      var res$3=copy_nat(bi2[2],0,size_bi2);
      sub_nat(res$3,0,size_bi2,bi1[2],0,size_bi1,1);
      return [0,bi2[1],res$3]}
    function big_int_of_int(i)
     {var res=create_nat(1);
      if(i === monster_int)
       {set_digit_nat(res,0,biggest_int);incr_nat(res,0,1,1)}
      else
       set_digit_nat(res,0,caml_call1(Stdlib[18],i));
      return [0,sign_int(i),res]}
    function add_int_big_int(i,bi){return add_big_int(big_int_of_int(i),bi)}
    function sub_big_int(bi1,bi2){return add_big_int(bi1,minus_big_int(bi2))}
    function mult_int_big_int(i,bi)
     {var size_bi=num_digits_big_int(bi),size_res=size_bi + 1 | 0;
      if(i === monster_int)
       {var res=create_nat(size_res);
        blit_nat(res,0,bi[2],0,size_bi);
        set_digit_nat(res,size_bi,0);
        var _cD_=nat_of_int(biggest_int);
        mult_digit_nat(res,0,size_res,bi[2],0,size_bi,_cD_,0);
        return [0,- bi[1] | 0,res]}
      var res$0=make_nat(size_res),_cE_=nat_of_int(caml_call1(Stdlib[18],i));
      mult_digit_nat(res$0,0,size_res,bi[2],0,size_bi,_cE_,0);
      var _cF_=bi[1];
      return [0,caml_mul(sign_int(i),_cF_),res$0]}
    function mult_big_int(bi1,bi2)
     {var
       size_bi1=num_digits_big_int(bi1),
       size_bi2=num_digits_big_int(bi2),
       size_res=size_bi1 + size_bi2 | 0,
       res=make_nat(size_res);
      if(size_bi1 < size_bi2)
       mult_nat(res,0,size_res,bi2[2],0,size_bi2,bi1[2],0,size_bi1);
      else
       mult_nat(res,0,size_res,bi1[2],0,size_bi1,bi2[2],0,size_bi2);
      return [0,caml_mul(bi1[1],bi2[1]),res]}
    function quomod_big_int(bi1,bi2)
     {if(0 === bi2[1])throw Stdlib[13];
      var
       size_bi1=num_digits_big_int(bi1),
       size_bi2=num_digits_big_int(bi2),
       match=compare_nat(bi1[2],0,size_bi1,bi2[2],0,size_bi2);
      if(-1 === match)
       {if(0 <= bi1[1])return [0,big_int_of_int(0),bi1];
        if(0 <= bi2[1])
         {var _cw_=add_big_int(bi2,bi1);return [0,big_int_of_int(-1),_cw_]}
        var _cx_=sub_big_int(bi1,bi2);
        return [0,big_int_of_int(1),_cx_]}
      if(0 === match)
       return [0,big_int_of_int(caml_mul(bi1[1],bi2[1])),zero_big_int];
      var
       bi1_negatif=-1 === bi1[1]?1:0,
       _cy_=
        bi1_negatif
         ?caml_call2(Stdlib[17],(size_bi1 - size_bi2 | 0) + 1 | 0,1) + 1 | 0
         :caml_call2(Stdlib[17],(size_bi1 - size_bi2 | 0) + 1 | 0,1),
       size_r=caml_call2(Stdlib[17],size_bi1,size_bi2) + 1 | 0,
       q=create_nat(_cy_),
       r=create_nat(size_r);
      blit_nat(r,0,bi1[2],0,size_bi1);
      set_to_zero_nat(r,size_bi1,size_r - size_bi1 | 0);
      div_nat(r,0,size_r,bi2[2],0,size_bi2);
      blit_nat(q,0,r,size_bi2,size_r - size_bi2 | 0);
      var not_null_mod=1 - is_zero_nat(r,0,size_bi2);
      if(bi1_negatif && not_null_mod)
       {var new_r=copy_nat(bi2[2],0,size_bi2);
        sub_nat(new_r,0,size_bi2,r,0,size_bi2,1);
        set_digit_nat(q,_cy_ - 1 | 0,0);
        incr_nat(q,0,_cy_,1);
        return [0,[0,- bi2[1] | 0,q],[0,1,new_r]]}
      if(bi1_negatif)set_digit_nat(q,_cy_ - 1 | 0,0);
      var
       _cz_=copy_nat(r,0,size_bi2),
       _cA_=not_null_mod?1:0,
       _cB_=[0,_cA_,_cz_],
       _cC_=is_zero_nat(q,0,_cy_)?0:caml_mul(bi1[1],bi2[1]);
      return [0,[0,_cC_,q],_cB_]}
    function div_big_int(bi1,bi2){return quomod_big_int(bi1,bi2)[1]}
    function mod_big_int(bi1,bi2){return quomod_big_int(bi1,bi2)[2]}
    function gcd_big_int(bi1,bi2)
     {var size_bi1=num_digits_big_int(bi1),size_bi2=num_digits_big_int(bi2);
      if(is_zero_nat(bi1[2],0,size_bi1))return abs_big_int(bi2);
      if(is_zero_nat(bi2[2],0,size_bi2))return [0,1,bi1[2]];
      var match=compare_nat(bi1[2],0,size_bi1,bi2[2],0,size_bi2);
      if(0 === match)
       var _cv_=bi1[2];
      else
       if(1 === match)
        var
         res=copy_nat(bi1[2],0,size_bi1),
         len=gcd_nat(res,0,size_bi1,bi2[2],0,size_bi2),
         _cv_=copy_nat(res,0,len);
       else
        var
         res$0=copy_nat(bi2[2],0,size_bi2),
         len$0=gcd_nat(res$0,0,size_bi2,bi1[2],0,size_bi1),
         _cv_=copy_nat(res$0,0,len$0);
      return [0,1,_cv_]}
    var
     monster_big_int=big_int_of_int(monster_int),
     monster_nat=monster_big_int[2];
    function is_int_big_int(bi)
     {var _ct_=1 === num_digits_big_int(bi)?1:0;
      if(_ct_)
       {var match=compare_nat(bi[2],0,1,monster_nat,0,1);
        if(-1 !== match)return 0 === match?-1 === bi[1]?1:0:0;
        var _cu_=1}
      else
       var _cu_=_ct_;
      return _cu_}
    function int_of_big_int(bi)
     {try
       {var n=int_of_nat(bi[2]),_cr_=-1 === bi[1]?- n | 0:n;return _cr_}
      catch(_cs_)
       {_cs_ = caml_wrap_exception(_cs_);
        if(_cs_[1] === Stdlib[7])
         return eq_big_int(bi,monster_big_int)
                 ?monster_int
                 :caml_call1(Stdlib[2],cst_int_of_big_int);
        throw _cs_}}
    function int_of_big_int_opt(bi)
     {try
       {var _cp_=[0,int_of_big_int(bi)];return _cp_}
      catch(_cq_)
       {_cq_ = caml_wrap_exception(_cq_);
        if(_cq_[1] === Stdlib[7])return 0;
        throw _cq_}}
    function big_int_of_nativeint(i)
     {if(caml_equal(i,0))return zero_big_int;
      if(caml_greaterthan(i,0))
       {var res=create_nat(1);set_digit_nat_native(res,0,i);return [0,1,res]}
      var res$0=create_nat(1);
      set_digit_nat_native(res$0,0,- i | 0);
      return [0,-1,res$0]}
    function nativeint_of_big_int(bi)
     {if(1 < num_digits_big_int(bi))
       caml_call1(Stdlib[2],cst_nativeint_of_big_int);
      var i=nth_digit_nat_native(bi[2],0);
      if(0 <= bi[1])
       return caml_greaterequal(i,0)
               ?i
               :caml_call1(Stdlib[2],cst_nativeint_of_big_int$0);
      if(! caml_greaterequal(i,0) && ! caml_equal(i,Stdlib_nativeint[11]))
       return caml_call1(Stdlib[2],cst_nativeint_of_big_int$1);
      return - i | 0}
    function nativeint_of_big_int_opt(bi)
     {try
       {var _cn_=[0,nativeint_of_big_int(bi)];return _cn_}
      catch(_co_)
       {_co_ = caml_wrap_exception(_co_);
        if(_co_[1] === Stdlib[7])return 0;
        throw _co_}}
    function big_int_of_int32(i){return big_int_of_nativeint(i)}
    function int32_of_big_int(bi)
     {var i=nativeint_of_big_int(bi);
      if
       (runtime.caml_lessequal(i,2147483647)
        &&
        caml_greaterequal(i,-2147483648))
       return i;
      return caml_call1(Stdlib[2],cst_int32_of_big_int)}
    function int32_of_big_int_opt(bi)
     {try
       {var _cl_=[0,int32_of_big_int(bi)];return _cl_}
      catch(_cm_)
       {_cm_ = caml_wrap_exception(_cm_);
        if(_cm_[1] === Stdlib[7])return 0;
        throw _cm_}}
    function big_int_of_int64(i)
     {if(64 === Stdlib_sys[9])
       return big_int_of_nativeint(caml_int64_to_int32(i));
      if(caml_equal(i,_d_))
       var absi=_e_,sg=0;
      else
       if(caml_greaterthan(i,_f_))
        var absi=i,sg=1;
       else
        var absi$0=caml_int64_neg(i),absi=absi$0,sg=-1;
      var res=create_nat(2);
      set_digit_nat_native(res,0,caml_int64_to_int32(absi));
      set_digit_nat_native
       (res,1,caml_int64_to_int32(runtime.caml_int64_shift_right(absi,32)));
      return [0,sg,res]}
    function int64_of_big_int(bi)
     {if(64 === Stdlib_sys[9])
       return caml_int64_of_int32(nativeint_of_big_int(bi));
      var match=num_digits_big_int(bi);
      if(1 === match)
       var
        i=
         caml_int64_and
          (caml_int64_of_int32(nth_digit_nat_native(bi[2],0)),_g_);
      else
       if(2 === match)
        var
         _ck_=
          runtime.caml_int64_shift_left
           (caml_int64_of_int32(nth_digit_nat_native(bi[2],1)),32),
         i=
          caml_int64_or
           (caml_int64_and
             (caml_int64_of_int32(nth_digit_nat_native(bi[2],0)),_j_),
            _ck_);
       else
        var i=caml_call1(Stdlib[2],cst_int64_of_big_int$1);
      if(0 <= bi[1])
       return caml_greaterequal(i,_h_)
               ?i
               :caml_call1(Stdlib[2],cst_int64_of_big_int);
      if(! caml_greaterequal(i,_i_) && ! caml_equal(i,Stdlib_int64[10]))
       return caml_call1(Stdlib[2],cst_int64_of_big_int$0);
      return caml_int64_neg(i)}
    function int64_of_big_int_opt(bi)
     {try
       {var _ci_=[0,int64_of_big_int(bi)];return _ci_}
      catch(_cj_)
       {_cj_ = caml_wrap_exception(_cj_);
        if(_cj_[1] === Stdlib[7])return 0;
        throw _cj_}}
    function nat_of_big_int(bi)
     {if(-1 === bi[1])return caml_call1(Stdlib[2],cst_nat_of_big_int);
      var _ch_=num_digits_big_int(bi);
      return copy_nat(bi[2],0,_ch_)}
    function sys_big_int_of_nat(nat,off,len)
     {var
       length=num_digits_nat(nat,off,len),
       _cf_=copy_nat(nat,off,length),
       _cg_=is_zero_nat(nat,off,length)?0:1;
      return [0,_cg_,_cf_]}
    function big_int_of_nat(nat)
     {return sys_big_int_of_nat(nat,0,length_nat(nat))}
    function string_of_big_int(bi)
     {if(-1 === bi[1])
       {var _ce_=string_of_nat(bi[2]);return caml_call2(Stdlib[28],cst,_ce_)}
      return string_of_nat(bi[2])}
    function sys_big_int_of_string_aux(s,ofs,len,sgn,base)
     {if(len < 1)caml_call1(Stdlib[2],cst_sys_big_int_of_string);
      var n=sys_nat_of_string(base,s,ofs,len);
      return is_zero_nat(n,0,length_nat(n))?zero_big_int:[0,sgn,n]}
    function sys_big_int_of_string_base(s,ofs,len,sgn)
     {if(len < 1)caml_call1(Stdlib[2],cst_sys_big_int_of_string$0);
      if(2 <= len)
       {var
         match=caml_string_get(s,ofs),
         match$0=caml_string_get(s,ofs + 1 | 0);
        if(48 === match)
         {var switch$0=0;
          if(89 <= match$0)
           {if(98 === match$0)
             switch$0 = 3;
            else
             if(111 === match$0)
              switch$0 = 2;
             else
              if(120 === match$0)switch$0 = 1}
          else
           if(66 === match$0)
            switch$0 = 3;
           else
            if(79 === match$0)switch$0 = 2;else if(88 <= match$0)switch$0 = 1;
          switch(switch$0)
           {case 0:break;
            case 1:
             return sys_big_int_of_string_aux
                     (s,ofs + 2 | 0,len - 2 | 0,sgn,16);
            case 2:
             return sys_big_int_of_string_aux(s,ofs + 2 | 0,len - 2 | 0,sgn,8);
            default:
             return sys_big_int_of_string_aux(s,ofs + 2 | 0,len - 2 | 0,sgn,2)}}
        return sys_big_int_of_string_aux(s,ofs,len,sgn,10)}
      return sys_big_int_of_string_aux(s,ofs,len,sgn,10)}
    function sys_big_int_of_string(s,ofs,len)
     {if(len < 1)caml_call1(Stdlib[2],cst_sys_big_int_of_string$1);
      var match=caml_string_get(s,ofs),switcher=match - 43 | 0;
      if(! (2 < switcher >>> 0))
       switch(switcher)
        {case 0:
          return sys_big_int_of_string_base(s,ofs + 1 | 0,len - 1 | 0,1);
         case 1:break;
         default:
          return sys_big_int_of_string_base(s,ofs + 1 | 0,len - 1 | 0,-1)}
      return sys_big_int_of_string_base(s,ofs,len,1)}
    function big_int_of_string(s)
     {return sys_big_int_of_string(s,0,caml_ml_string_length(s))}
    function big_int_of_string_opt(s)
     {try
       {var _cc_=[0,big_int_of_string(s)];return _cc_}
      catch(_cd_)
       {_cd_ = caml_wrap_exception(_cd_);
        if(_cd_[1] === Stdlib[7])return 0;
        throw _cd_}}
    function power_int_positive_int(i,n)
     {var match=sign_int(n);
      if(-1 === match)return caml_call1(Stdlib[1],cst_power_int_positive_int);
      if(0 === match)return unit_big_int;
      var
       nat=power_base_int(caml_call1(Stdlib[18],i),n),
       _cb_=0 <= i?sign_int(i):0 === (n & 1)?1:-1;
      return [0,_cb_,nat]}
    function power_big_int_positive_int(bi,n)
     {var match=sign_int(n);
      if(-1 === match)
       return caml_call1(Stdlib[1],cst_power_big_int_positive_int);
      if(0 === match)return unit_big_int;
      var
       bi_len=num_digits_big_int(bi),
       res_len=caml_mul(bi_len,n),
       res=make_nat(res_len),
       res2=make_nat(res_len),
       l=num_bits_int(n) - 2 | 0;
      blit_nat(res,0,bi[2],0,bi_len);
      if(! (l < 0))
       {var i=l;
        for(;;)
         {var
           len=num_digits_nat(res,0,res_len),
           len2=caml_call2(Stdlib[16],res_len,2 * len | 0);
          set_to_zero_nat(res2,0,len2);
          square_nat(res2,0,len2,res,0,len);
          if(0 < (n & 1 << i))
           {var lenp=caml_call2(Stdlib[16],res_len,len2 + bi_len | 0);
            set_to_zero_nat(res,0,lenp);
            mult_nat(res,0,lenp,res2,0,len2,bi[2],0,bi_len)}
          else
           blit_nat(res,0,res2,0,len2);
          var _ca_=i - 1 | 0;
          if(0 !== i){var i=_ca_;continue}
          break}}
      var _b$_=0 <= bi[1]?bi[1]:0 === (n & 1)?1:-1;
      return [0,_b$_,res]}
    function power_int_positive_big_int(i$0,bi)
     {var match$1=bi[1];
      if(-1 === match$1)
       return caml_call1(Stdlib[1],cst_power_int_positive_big_int);
      if(0 === match$1)return unit_big_int;
      var
       len$0=num_digits_big_int(bi),
       _b9_=bi[2],
       base=caml_call1(Stdlib[18],i$0),
       off=0;
      if(0 === base)
       var nat=nat_of_int(0);
      else
       {var switch$0=0;
        if(is_zero_nat(_b9_,off,len$0) || 1 === base)
         switch$0 = 1;
        else
         {var
           power_base=make_nat(_a_ + 1 | 0),
           match=make_power_base(base,power_base),
           pmax=match[1],
           _b7_=big_int_of_int(pmax + 1 | 0),
           match$0=quomod_big_int(sys_big_int_of_nat(_b9_,off,len$0),_b7_),
           y=match$0[2],
           x=match$0[1],
           rem=int_of_big_int(y),
           n=int_of_big_int(x);
          if(0 === n)
           var nat=copy_nat(power_base,rem - 1 | 0,1);
          else
           {var
             res=make_nat(n),
             res2=make_nat(n + 1 | 0),
             l=num_bits_int(n) - 2 | 0;
            blit_nat(res,0,power_base,pmax,1);
            if(! (l < 0))
             {var i=l;
              for(;;)
               {var
                 len=num_digits_nat(res,0,n),
                 len2=caml_call2(Stdlib[16],n,2 * len | 0),
                 succ_len2=len2 + 1 | 0;
                square_nat(res2,0,len2,res,0,len);
                if(0 < (n & 1 << i))
                 {set_to_zero_nat(res,0,len);
                  mult_digit_nat(res,0,succ_len2,res2,0,len2,power_base,pmax)}
                else
                 blit_nat(res,0,res2,0,len2);
                set_to_zero_nat(res2,0,len2);
                var _b8_=i - 1 | 0;
                if(0 !== i){var i=_b8_;continue}
                break}}
            var
             nat=
              0 < rem
               ?(mult_digit_nat
                  (res2,0,n + 1 | 0,res,0,n,power_base,rem - 1 | 0),
                 res2)
               :res}}
        if(switch$0)var nat=nat_of_int(1)}
      var _b__=0 <= i$0?sign_int(i$0):runtime.is_digit_odd(bi[2],0)?-1:1;
      return [0,_b__,nat]}
    function power_big_int_positive_big_int(bi1,bi2)
     {var match=bi2[1];
      if(-1 === match)
       return caml_call1(Stdlib[1],cst_power_big_int_positive_big);
      if(0 === match)return unit_big_int;
      try
       {var _b4_=power_big_int_positive_int(bi1,int_of_big_int(bi2));
        return _b4_}
      catch(_b5_)
       {_b5_ = caml_wrap_exception(_b5_);
        if(_b5_[1] === Stdlib[7])
         try
          {var _b3_=power_int_positive_big_int(int_of_big_int(bi1),bi2);
           return _b3_}
         catch(_b6_)
          {_b6_ = caml_wrap_exception(_b6_);
           if(_b6_[1] === Stdlib[7])throw Stdlib[9];
           throw _b6_}
        throw _b5_}}
    function base_power_big_int(base,n,bi)
     {var match=sign_int(n);
      if(-1 === match)
       {var
         nat=power_base_int(base,- n | 0),
         len_nat=num_digits_nat(nat,0,length_nat(nat)),
         len_bi=num_digits_big_int(bi);
        if(len_bi < len_nat)
         return caml_call1(Stdlib[1],cst_base_power_big_int);
        if
         (len_bi
          ===
          len_nat
          &&
          -1
          ===
          runtime.compare_digits_nat(bi[2],len_bi,nat,len_nat))
         return caml_call1(Stdlib[1],cst_base_power_big_int$0);
        var copy=create_nat(len_bi + 1 | 0);
        blit_nat(copy,0,bi[2],0,len_bi);
        set_digit_nat(copy,len_bi,0);
        div_nat(copy,0,len_bi + 1 | 0,nat,0,len_nat);
        if(is_zero_nat(copy,0,len_nat))
         {var _b1_=copy_nat(copy,len_nat,1);return [0,bi[1],_b1_]}
        return caml_call1(Stdlib[1],cst_base_power_big_int$1)}
      if(0 === match)return bi;
      var
       nat$0=power_base_int(base,n),
       len_nat$0=num_digits_nat(nat$0,0,length_nat(nat$0)),
       len_bi$0=num_digits_big_int(bi),
       new_len=len_bi$0 + len_nat$0 | 0,
       nat$1=make_nat(new_len);
      if(len_nat$0 < len_bi$0)
       mult_nat(nat$1,0,new_len,bi[2],0,len_bi$0,nat$0,0,len_nat$0);
      else
       mult_nat(nat$1,0,new_len,nat$0,0,len_nat$0,bi[2],0,len_bi$0);
      if(is_zero_nat(nat$1,0,new_len))return zero_big_int;
      var _b2_=bi[1];
      if(1 !== _b2_ && -1 !== _b2_)
       {var switch$0=0;
        if
         (0
          !==
          _b2_
          ||
          !
          is_zero_nat(nat$1,0,num_digits_nat(nat$1,0,length_nat(nat$1))))
         switch$0 = 1;
        if(switch$0)return caml_call1(Stdlib[1],cst_create_big_int)}
      return [0,_b2_,nat$1]}
    function sqrt_big_int(bi)
     {var _bZ_=bi[1];
      if(-1 === _bZ_)return caml_call1(Stdlib[1],cst_sqrt_big_int);
      if(0 === _bZ_)return zero_big_int;
      var _b0_=num_digits_big_int(bi);
      return [0,1,sqrt_nat(bi[2],0,_b0_)]}
    function square_big_int(bi)
     {if(0 === bi[1])return zero_big_int;
      var
       len_bi=num_digits_big_int(bi),
       len_res=2 * len_bi | 0,
       res=make_nat(len_res);
      square_nat(res,0,len_res,bi[2],0,len_bi);
      return [0,1,res]}
    function round_futur_last_digit(s,off_set,length)
     {var l=(length + off_set | 0) - 1 | 0;
      if(53 <= caml_bytes_get(s,l))
       {var l$2=l - 1 | 0,l$0=l$2;
        for(;;)
         {if(l$0 < off_set)return 1;
          var current_char=caml_bytes_get(s,l$0);
          if(57 === current_char)
           {caml_bytes_set(s,l$0,48);var l$1=l$0 - 1 | 0,l$0=l$1;continue}
          caml_bytes_set
           (s,l$0,caml_call1(Stdlib_char[1],current_char + 1 | 0));
          return 0}}
      return 0}
    function approx_big_int(prec,bi)
     {var
       len_bi=num_digits_big_int(bi),
       _bJ_=big_int_of_string(cst_100000000),
       _bK_=big_int_of_string(cst_963295986),
       _bL_=
        int_of_big_int
         (add_int_big_int
           (- prec | 0,
            div_big_int
             (mult_big_int(big_int_of_int(len_bi - 1 | 0),_bK_),_bJ_))),
       n=caml_call2(Stdlib[17],0,_bL_),
       _bM_=string_of_big_int(div_big_int(bi,power_int_positive_int(10,n))),
       s=caml_call1(Stdlib_bytes[43],_bM_);
      if(45 === caml_bytes_get(s,0))
       var off=1,sign$0=cst$0;
      else
       var off=0,sign$0=sign;
      if(round_futur_last_digit(s,off,prec + 1 | 0))
       {var
         _bN_=
          caml_call1
           (Stdlib[33],((n + 1 | 0) - off | 0) + caml_ml_bytes_length(s) | 0),
         _bO_=caml_call2(Stdlib[28],cst_e,_bN_),
         _bP_=caml_call2(Stdlib_string[1],prec,48),
         _bQ_=caml_call2(Stdlib[28],_bP_,_bO_),
         _bR_=caml_call2(Stdlib[28],cst_1,_bQ_);
        return caml_call2(Stdlib[28],sign$0,_bR_)}
      var
       _bS_=
        caml_call1
         (Stdlib[33],(n - (off + 1 | 0) | 0) + caml_ml_bytes_length(s) | 0),
       _bT_=caml_call2(Stdlib[28],cst_e$0,_bS_),
       _bU_=caml_call3(Stdlib_bytes[8],s,off + 1 | 0,prec - 1 | 0),
       _bV_=caml_call2(Stdlib[28],_bU_,_bT_),
       _bW_=caml_call2(Stdlib[28],cst$1,_bV_),
       _bX_=caml_call3(Stdlib_bytes[8],s,off,1),
       _bY_=caml_call2(Stdlib[28],_bX_,_bW_);
      return caml_call2(Stdlib[28],sign$0,_bY_)}
    function shift_left_big_int(bi,n)
     {if(0 <= n)
       {if(0 === n)return bi;
        if(0 === bi[1])return bi;
        var
         size_bi=num_digits_big_int(bi),
         size_res=size_bi + caml_div((n + _a_ | 0) - 1 | 0,_a_) | 0,
         res=create_nat(size_res),
         ndigits=caml_div(n,_a_);
        set_to_zero_nat(res,0,ndigits);
        blit_nat(res,ndigits,bi[2],0,size_bi);
        var nbits=caml_mod(n,_a_);
        if(0 < nbits)
         runtime.shift_left_nat
          (res,ndigits,size_bi,res,ndigits + size_bi | 0,nbits);
        return [0,bi[1],res]}
      return caml_call1(Stdlib[1],cst_shift_left_big_int)}
    function shift_right_towards_zero_big_i(bi,n)
     {if(0 <= n)
       {if(0 === n)return bi;
        if(0 === bi[1])return bi;
        var
         size_bi=num_digits_big_int(bi),
         ndigits=caml_div(n,_a_),
         nbits=caml_mod(n,_a_);
        if(size_bi <= ndigits)return zero_big_int;
        var size_res=size_bi - ndigits | 0,res=create_nat(size_res);
        blit_nat(res,0,bi[2],ndigits,size_res);
        if(0 < nbits)
         {var tmp=create_nat(1);shift_right_nat(res,0,size_res,tmp,0,nbits)}
        return is_zero_nat(res,0,size_res)?zero_big_int:[0,bi[1],res]}
      return caml_call1(Stdlib[1],cst_shift_right_towards_zero_b)}
    function shift_right_big_int(bi,n)
     {if(0 <= n)
       {if(0 <= bi[1])return shift_right_towards_zero_big_i(bi,n);
        if(0 <= n)
         if(0 === n)
          var _bI_=zero_big_int;
         else
          {var
            idx=caml_div(n,_a_),
            size_res=idx + 1 | 0,
            res=make_nat(size_res);
           set_digit_nat_native(res,idx,1 << caml_mod(n,_a_));
           decr_nat(res,0,size_res,0);
           var _bI_=[0,1,res]}
        else
         var _bI_=caml_call1(Stdlib[1],cst_two_power_m1_big_int);
        return shift_right_towards_zero_big_i(sub_big_int(bi,_bI_),n)}
      return caml_call1(Stdlib[1],cst_shift_right_big_int)}
    function extract_big_int(bi,ofs,n)
     {if(0 <= ofs && 0 <= n)
       {if(0 === bi[1])return bi;
        var
         size_bi=num_digits_big_int(bi),
         size_res=caml_div((n + _a_ | 0) - 1 | 0,_a_),
         ndigits=caml_div(ofs,_a_),
         nbits=caml_mod(ofs,_a_),
         res=make_nat(size_res);
        if(ndigits < size_bi)
         {var _bD_=caml_call2(Stdlib[16],size_res,size_bi - ndigits | 0);
          blit_nat(res,0,bi[2],ndigits,_bD_)}
        if(bi[1] < 0)
         {complement_nat(res,0,size_res);
          var i=0;
          for(;;)
           {var _bE_=ndigits <= i?1:0;
            if(_bE_)
             var _bF_=_bE_;
            else
             {var _bG_=size_bi <= i?1:0;
              if(_bG_)
               var _bF_=_bG_;
              else
               {var _bH_=is_digit_zero(bi[2],i);
                if(_bH_){var i$0=i + 1 | 0,i=i$0;continue}
                var _bF_=_bH_}}
            if(_bF_)incr_nat(res,0,size_res,1);
            break}}
        if(0 < nbits)
         {var tmp=create_nat(1);shift_right_nat(res,0,size_res,tmp,0,nbits)}
        var n$0=caml_mod(n,_a_);
        if(0 < n$0)
         {var tmp$0=create_nat(1);
          set_digit_nat_native(tmp$0,0,-1 >>> (_a_ - n$0 | 0) | 0);
          land_digit_nat(res,size_res - 1 | 0,tmp$0,0)}
        return is_zero_nat(res,0,size_res)?zero_big_int:[0,1,res]}
      return caml_call1(Stdlib[1],cst_extract_big_int)}
    function and_big_int(a,b)
     {if(0 <= a[1] && 0 <= b[1])
       {if(0 !== a[1] && 0 !== b[1])
         {var
           size_a=num_digits_big_int(a),
           size_b=num_digits_big_int(b),
           size_res=caml_call2(Stdlib[16],size_a,size_b),
           res=create_nat(size_res);
          blit_nat(res,0,a[2],0,size_res);
          var _bB_=size_res - 1 | 0,_bA_=0;
          if(! (_bB_ < 0))
           {var i=_bA_;
            for(;;)
             {land_digit_nat(res,i,b[2],i);
              var _bC_=i + 1 | 0;
              if(_bB_ !== i){var i=_bC_;continue}
              break}}
          return is_zero_nat(res,0,size_res)?zero_big_int:[0,1,res]}
        return zero_big_int}
      return caml_call1(Stdlib[1],cst_and_big_int)}
    function or_big_int(a,b)
     {if(0 <= a[1] && 0 <= b[1])
       {if(0 === a[1])return b;
        if(0 === b[1])return a;
        var
         size_a=num_digits_big_int(a),
         size_b=num_digits_big_int(b),
         size_res=caml_call2(Stdlib[17],size_a,size_b),
         res=create_nat(size_res),
         or_aux=
          function(a,b,size_b)
           {blit_nat(res,0,a[2],0,size_res);
            var _by_=size_b - 1 | 0,_bx_=0;
            if(! (_by_ < 0))
             {var i=_bx_;
              for(;;)
               {runtime.lor_digit_nat(res,i,b[2],i);
                var _bz_=i + 1 | 0;
                if(_by_ !== i){var i=_bz_;continue}
                break}}
            return 0};
        if(size_b <= size_a)or_aux(a,b,size_b);else or_aux(b,a,size_a);
        return is_zero_nat(res,0,size_res)?zero_big_int:[0,1,res]}
      return caml_call1(Stdlib[1],cst_or_big_int)}
    function xor_big_int(a,b)
     {if(0 <= a[1] && 0 <= b[1])
       {if(0 === a[1])return b;
        if(0 === b[1])return a;
        var
         size_a=num_digits_big_int(a),
         size_b=num_digits_big_int(b),
         size_res=caml_call2(Stdlib[17],size_a,size_b),
         res=create_nat(size_res),
         xor_aux=
          function(a,b,size_b)
           {blit_nat(res,0,a[2],0,size_res);
            var _bv_=size_b - 1 | 0,_bu_=0;
            if(! (_bv_ < 0))
             {var i=_bu_;
              for(;;)
               {runtime.lxor_digit_nat(res,i,b[2],i);
                var _bw_=i + 1 | 0;
                if(_bv_ !== i){var i=_bw_;continue}
                break}}
            return 0};
        if(size_b <= size_a)xor_aux(a,b,size_b);else xor_aux(b,a,size_a);
        return is_zero_nat(res,0,size_res)?zero_big_int:[0,1,res]}
      return caml_call1(Stdlib[1],cst_xor_big_int)}
    function round_big_int_to_float(x,exact)
     {var n=num_bits_big_int(x),_bs_=55 <= n?1:0,_bt_=_bs_?n <= 63?1:0:_bs_;
      if(_bt_)
       {var m=int64_of_big_int(x),m$0=exact?m:caml_int64_or(m,_k_);
        return caml_int64_to_float(m$0)}
      throw [0,Assert_failure,_l_]}
    function float_of_big_int(x)
     {var n=num_bits_big_int(x);
      if(63 < n)
       {var
         n$0=n - 55 | 0,
         top=shift_right_big_int(x,n$0),
         exact=eq_big_int(x,shift_left_big_int(top,n$0));
        return caml_ldexp_float(round_big_int_to_float(top,exact),n$0)}
      return caml_int64_to_float(int64_of_big_int(x))}
    var
     Big_int=
      [0,
       zero_big_int,
       unit_big_int,
       minus_big_int,
       abs_big_int,
       add_big_int,
       succ_big_int,
       add_int_big_int,
       sub_big_int,
       pred_big_int,
       mult_big_int,
       mult_int_big_int,
       square_big_int,
       sqrt_big_int,
       quomod_big_int,
       div_big_int,
       mod_big_int,
       gcd_big_int,
       power_int_positive_int,
       power_big_int_positive_int,
       power_int_positive_big_int,
       power_big_int_positive_big_int,
       sign_big_int,
       compare_big_int,
       eq_big_int,
       le_big_int,
       ge_big_int,
       lt_big_int,
       gt_big_int,
       max_big_int,
       min_big_int,
       num_digits_big_int,
       num_bits_big_int,
       string_of_big_int,
       big_int_of_string,
       big_int_of_string_opt,
       big_int_of_int,
       is_int_big_int,
       int_of_big_int,
       int_of_big_int_opt,
       big_int_of_int32,
       big_int_of_nativeint,
       big_int_of_int64,
       int32_of_big_int,
       int32_of_big_int_opt,
       nativeint_of_big_int,
       nativeint_of_big_int_opt,
       int64_of_big_int,
       int64_of_big_int_opt,
       float_of_big_int,
       and_big_int,
       or_big_int,
       xor_big_int,
       shift_left_big_int,
       shift_right_big_int,
       shift_right_towards_zero_big_i,
       extract_big_int,
       nat_of_big_int,
       big_int_of_nat,
       base_power_big_int,
       sys_big_int_of_string,
       round_futur_last_digit,
       approx_big_int,
       round_big_int_to_float];
    caml_register_global(130,Big_int,"Big_int");
    var
     error_when_null_denominator_fl=[0,1],
     normalize_ratio_flag=[0,0],
     normalize_ratio_when_printing_=[0,1],
     floating_precision=[0,12],
     approx_printing_flag=[0,0],
     Arith_flags=
      [0,
       error_when_null_denominator_fl,
       normalize_ratio_flag,
       normalize_ratio_when_printing_,
       floating_precision,
       approx_printing_flag];
    caml_register_global(131,Arith_flags,"Arith_flags");
    function failwith_zero(name)
     {if(0 === caml_ml_string_length(name))
       var s$0=s;
      else
       var
        _br_=caml_call2(Stdlib[28],cst$2,s),
        s$0=caml_call2(Stdlib[28],name,_br_);
      return caml_call1(Stdlib[2],s$0)}
    function numerator_ratio(r){return r[1]}
    function denominator_ratio(r){return r[2]}
    function null_denominator(r){return 0 === r[2][1]?1:0}
    function verify_null_denominator(r)
     {return 0 === r[2][1]
              ?error_when_null_denominator_fl[1]?failwith_zero(cst$3):1
              :0}
    function sign_ratio(r){return r[1][1]}
    function normalize_ratio(r)
     {if(r[3])return r;
      if(verify_null_denominator(r))
       {r[1] = big_int_of_int(r[1][1]);r[3] = 1;return r}
      var p=gcd_big_int(r[1],r[2]);
      return eq_big_int(p,unit_big_int)
              ?(r[3] = 1,r)
              :(r[1]
                =
                div_big_int(r[1],p),
                r[2]
                =
                div_big_int(r[2],p),
                r[3]
                =
                1,
                r)}
    function cautious_normalize_ratio(r)
     {return normalize_ratio_flag[1]?normalize_ratio(r):r}
    function cautious_normalize_ratio_when_(r)
     {return normalize_ratio_when_printing_[1]?normalize_ratio(r):r}
    function create_ratio(bi1,bi2)
     {var match=bi2[1];
      if(-1 === match)
       {var _bq_=minus_big_int(bi2);
        return cautious_normalize_ratio([0,minus_big_int(bi1),_bq_,0])}
      return 0 === match
              ?error_when_null_denominator_fl[1]
                ?failwith_zero(cst_create_ratio)
                :cautious_normalize_ratio([0,bi1,bi2,0])
              :cautious_normalize_ratio([0,bi1,bi2,0])}
    function create_normalized_ratio(bi1,bi2)
     {var match=bi2[1];
      if(-1 === match)
       {var _bp_=minus_big_int(bi2);return [0,minus_big_int(bi1),_bp_,1]}
      return 0 === match
              ?error_when_null_denominator_fl[1]
                ?failwith_zero(cst_create_normalized_ratio)
                :[0,bi1,bi2,1]
              :[0,bi1,bi2,1]}
    function is_normalized_ratio(r){return r[3]}
    function report_sign_ratio(r,bi)
     {return -1 === sign_ratio(r)?minus_big_int(bi):bi}
    function abs_ratio(r)
     {var _bn_=r[3],_bo_=r[2];return [0,abs_big_int(r[1]),_bo_,_bn_]}
    function is_integer_ratio(r)
     {return eq_big_int(normalize_ratio(r)[2],unit_big_int)}
    function add_ratio(r1,r2)
     {if(normalize_ratio_flag[1])
       {var
         _bg_=normalize_ratio(r2)[2],
         p=gcd_big_int(normalize_ratio(r1)[2],_bg_);
        if(eq_big_int(p,unit_big_int))
         {var _bh_=mult_big_int(r1[2],r2[2]),_bi_=mult_big_int(r2[1],r1[2]);
          return [0,add_big_int(mult_big_int(r1[1],r2[2]),_bi_),_bh_,1]}
        var
         d1=div_big_int(r1[2],p),
         d2=div_big_int(r2[2],p),
         _bj_=mult_big_int(d1,r2[1]),
         n=add_big_int(mult_big_int(r1[1],d2),_bj_),
         p$0=gcd_big_int(n,p),
         _bk_=mult_big_int(d1,div_big_int(r2[2],p$0));
        return [0,div_big_int(n,p$0),_bk_,1]}
      var _bl_=mult_big_int(r1[2],r2[2]),_bm_=mult_big_int(r1[2],r2[1]);
      return [0,add_big_int(mult_big_int(r1[1],r2[2]),_bm_),_bl_,0]}
    function minus_ratio(r)
     {var _be_=r[3],_bf_=r[2];return [0,minus_big_int(r[1]),_bf_,_be_]}
    function add_int_ratio(i,r)
     {cautious_normalize_ratio(r);
      var _bb_=r[3],_bc_=r[2],_bd_=r[1];
      return [0,add_big_int(mult_int_big_int(i,r[2]),_bd_),_bc_,_bb_]}
    function add_big_int_ratio(bi,r)
     {cautious_normalize_ratio(r);
      var _a__=r[3],_a$_=r[2],_ba_=r[1];
      return [0,add_big_int(mult_big_int(bi,r[2]),_ba_),_a$_,_a__]}
    function sub_ratio(r1,r2){return add_ratio(r1,minus_ratio(r2))}
    function mult_ratio(r1,r2)
     {if(normalize_ratio_flag[1])
       {var
         _a5_=normalize_ratio(r2)[2],
         p1=gcd_big_int(normalize_ratio(r1)[1],_a5_),
         p2=gcd_big_int(r2[1],r1[2]);
        if(eq_big_int(p1,unit_big_int))
         var _a7_=r2[2],_a6_=r1[1];
        else
         var d2=div_big_int(r2[2],p1),_a7_=d2,_a6_=div_big_int(r1[1],p1);
        if(eq_big_int(p2,unit_big_int))
         var d1=r1[2],n2=r2[1];
        else
         var
          d1$0=div_big_int(r1[2],p2),
          n2$0=div_big_int(r2[1],p2),
          d1=d1$0,
          n2=n2$0;
        var _a8_=mult_big_int(d1,_a7_);
        return [0,mult_big_int(_a6_,n2),_a8_,1]}
      var _a9_=mult_big_int(r1[2],r2[2]);
      return [0,mult_big_int(r1[1],r2[1]),_a9_,0]}
    function mult_int_ratio(i,r)
     {if(normalize_ratio_flag[1])
       {var _aZ_=big_int_of_int(i),p=gcd_big_int(normalize_ratio(r)[2],_aZ_);
        if(eq_big_int(p,unit_big_int))
         {var _a0_=r[2],_a1_=r[1];
          return [0,mult_big_int(big_int_of_int(i),_a1_),_a0_,1]}
        var _a2_=div_big_int(r[2],p),_a3_=r[1];
        return [0,mult_big_int(div_big_int(big_int_of_int(i),p),_a3_),_a2_,1]}
      var _a4_=r[2];
      return [0,mult_int_big_int(i,r[1]),_a4_,0]}
    function mult_big_int_ratio(bi,r)
     {if(normalize_ratio_flag[1])
       {var p=gcd_big_int(normalize_ratio(r)[2],bi);
        if(eq_big_int(p,unit_big_int))
         {var _aV_=r[2];return [0,mult_big_int(bi,r[1]),_aV_,1]}
        var _aW_=div_big_int(r[2],p),_aX_=r[1];
        return [0,mult_big_int(div_big_int(bi,p),_aX_),_aW_,1]}
      var _aY_=r[2];
      return [0,mult_big_int(bi,r[1]),_aY_,0]}
    function square_ratio(r)
     {cautious_normalize_ratio(r);
      var _aT_=r[3],_aU_=square_big_int(r[2]);
      return [0,square_big_int(r[1]),_aU_,_aT_]}
    function inverse_ratio(r)
     {if(error_when_null_denominator_fl[1] && 0 === r[1][1])
       return failwith_zero(cst_inverse_ratio);
      var _aR_=r[3],_aS_=abs_big_int(r[1]);
      return [0,report_sign_ratio(r,r[2]),_aS_,_aR_]}
    function div_ratio(r1,r2){return mult_ratio(r1,inverse_ratio(r2))}
    function integer_ratio(r)
     {if(null_denominator(r))return failwith_zero(cst_integer_ratio);
      if(0 === sign_ratio(r))return zero_big_int;
      var _aQ_=abs_big_int(r[2]);
      return report_sign_ratio(r,div_big_int(abs_big_int(r[1]),_aQ_))}
    function floor_ratio(r)
     {verify_null_denominator(r);return div_big_int(r[1],r[2])}
    function round_ratio(r)
     {verify_null_denominator(r);
      var
       abs_num=abs_big_int(r[1]),
       bi=div_big_int(abs_num,r[2]),
       _aP_=r[2],
       bi$0=
        -1
         ===
         sub_big_int
           (mult_int_big_int(2,sub_big_int(abs_num,mult_big_int(r[2],bi))),
            _aP_)
          [1]
         ?bi
         :succ_big_int(bi);
      return report_sign_ratio(r,bi$0)}
    function ceiling_ratio(r)
     {return is_integer_ratio(r)?r[1]:succ_big_int(floor_ratio(r))}
    function eq_ratio(r1,r2)
     {normalize_ratio(r1);
      normalize_ratio(r2);
      var _aO_=eq_big_int(r1[1],r2[1]);
      return _aO_?eq_big_int(r1[2],r2[2]):_aO_}
    function compare_ratio(r1,r2)
     {if(verify_null_denominator(r1))
       {var sign_num_r1=r1[1][1];
        if(verify_null_denominator(r2))
         {var sign_num_r2=r2[1][1];
          if(1 === sign_num_r1 && -1 === sign_num_r2)return 1;
          if(-1 === sign_num_r1 && 1 === sign_num_r2)return -1;
          return 0}
        return sign_num_r1}
      if(verify_null_denominator(r2))return - r2[1][1] | 0;
      var match=compare_int(r1[1][1],r2[1][1]),switcher=match + 1 | 0;
      if(! (2 < switcher >>> 0))
       switch(switcher){case 0:return -1;case 1:break;default:return 1}
      if(eq_big_int(r1[2],r2[2]))return compare_big_int(r1[1],r2[1]);
      var _aN_=mult_big_int(r1[2],r2[1]);
      return compare_big_int(mult_big_int(r1[1],r2[2]),_aN_)}
    function lt_ratio(r1,r2){return compare_ratio(r1,r2) < 0?1:0}
    function le_ratio(r1,r2){return compare_ratio(r1,r2) <= 0?1:0}
    function gt_ratio(r1,r2){return 0 < compare_ratio(r1,r2)?1:0}
    function ge_ratio(r1,r2){return 0 <= compare_ratio(r1,r2)?1:0}
    function max_ratio(r1,r2){return lt_ratio(r1,r2)?r2:r1}
    function min_ratio(r1,r2){return gt_ratio(r1,r2)?r2:r1}
    function eq_big_int_ratio(bi,r)
     {var _aM_=is_integer_ratio(r);return _aM_?eq_big_int(bi,r[1]):_aM_}
    function compare_big_int_ratio(bi,r)
     {normalize_ratio(r);
      if(verify_null_denominator(r))return - r[1][1] | 0;
      var _aL_=r[1];
      return compare_big_int(mult_big_int(bi,r[2]),_aL_)}
    function lt_big_int_ratio(bi,r)
     {return compare_big_int_ratio(bi,r) < 0?1:0}
    function le_big_int_ratio(bi,r)
     {return compare_big_int_ratio(bi,r) <= 0?1:0}
    function gt_big_int_ratio(bi,r)
     {return 0 < compare_big_int_ratio(bi,r)?1:0}
    function ge_big_int_ratio(bi,r)
     {return 0 <= compare_big_int_ratio(bi,r)?1:0}
    function int_of_ratio(r)
     {if(is_integer_ratio(r) && is_int_big_int(r[1]))
       return int_of_big_int(r[1]);
      return caml_call1(Stdlib[2],cst_integer_argument_required)}
    function ratio_of_int(i){return [0,big_int_of_int(i),unit_big_int,1]}
    function ratio_of_nat(nat){return [0,big_int_of_nat(nat),unit_big_int,1]}
    function nat_of_ratio(r)
     {normalize_ratio(r);
      return is_integer_ratio(r)
              ?-1 < r[1][1]
                ?nat_of_big_int(r[1])
                :caml_call1(Stdlib[2],cst_nat_of_ratio)
              :caml_call1(Stdlib[2],cst_nat_of_ratio$0)}
    function ratio_of_big_int(bi){return [0,bi,unit_big_int,1]}
    function big_int_of_ratio(r)
     {normalize_ratio(r);
      return is_integer_ratio(r)
              ?r[1]
              :caml_call1(Stdlib[2],cst_big_int_of_ratio)}
    function div_int_ratio(i,r)
     {verify_null_denominator(r);return mult_int_ratio(i,inverse_ratio(r))}
    function div_ratio_int(r,i){return div_ratio(r,ratio_of_int(i))}
    function div_big_int_ratio(bi,r)
     {verify_null_denominator(r);
      return mult_big_int_ratio(bi,inverse_ratio(r))}
    function div_ratio_big_int(r,bi){return div_ratio(r,ratio_of_big_int(bi))}
    function approx_ratio_fix(n,r)
     {if(null_denominator(r))return failwith_zero(cst_approx_ratio_fix);
      var sign_r=sign_ratio(r);
      if(0 === sign_r)return cst_0;
      if(0 <= n)
       {var
         _aG_=r[2],
         s1=
          string_of_nat
           (nat_of_big_int
             (div_big_int
               (base_power_big_int(10,n + 1 | 0,abs_big_int(r[1])),_aG_))),
         s2=
          round_futur_last_digit
            (caml_call1(Stdlib_bytes[43],s1),0,caml_ml_string_length(s1))
           ?caml_call2(Stdlib[28],cst_1$0,s1)
           :s1,
         l2=caml_ml_string_length(s2) - 1 | 0;
        if(n < l2)
         {var
           s=caml_call2(Stdlib_bytes[1],l2 + 2 | 0,48),
           _aH_=-1 === sign_r?45:43;
          caml_bytes_set(s,0,_aH_);
          caml_call5(Stdlib_string[6],s2,0,s,1,l2 - n | 0);
          caml_bytes_set(s,(l2 - n | 0) + 1 | 0,46);
          caml_call5(Stdlib_string[6],s2,l2 - n | 0,s,(l2 - n | 0) + 2 | 0,n);
          return caml_call1(Stdlib_bytes[42],s)}
        var
         s$0=caml_call2(Stdlib_bytes[1],n + 3 | 0,48),
         _aI_=-1 === sign_r?45:43;
        caml_bytes_set(s$0,0,_aI_);
        caml_bytes_set(s$0,2,46);
        caml_call5(Stdlib_string[6],s2,0,s$0,(n + 3 | 0) - l2 | 0,l2);
        return caml_call1(Stdlib_bytes[42],s$0)}
      var
       _aJ_=base_power_big_int(10,- n | 0,r[2]),
       s$1=string_of_big_int(div_big_int(abs_big_int(r[1]),_aJ_)),
       len=caml_ml_string_length(s$1) + 1 | 0,
       s$2=caml_call2(Stdlib_bytes[1],len,48),
       _aK_=-1 === sign_r?45:43;
      caml_bytes_set(s$2,0,_aK_);
      caml_call5(Stdlib_string[6],s$1,0,s$2,1,len - 1 | 0);
      return caml_call1(Stdlib_bytes[42],s$2)}
    function num_decimal_digits_int(n)
     {return caml_ml_string_length(caml_call1(Stdlib[33],n))}
    function approx_ratio_exp(n,r)
     {if(null_denominator(r))return failwith_zero(cst_approx_ratio_exp);
      if(0 < n)
       {var sign_r=sign_ratio(r),i$4=[0,n + 3 | 0];
        if(0 === sign_r)
         {var _ar_=[0,cst_0$0,[0,caml_call2(Stdlib_string[1],n,48),_m_]];
          return caml_call2(Stdlib_string[7],cst$4,_ar_)}
        var r$0=abs_ratio(r);
        cautious_normalize_ratio(r$0);
        if(null_denominator(r$0))
         var msd=failwith_zero(cst_msd_ratio);
        else
         if(0 === r$0[1][1])
          var msd=0;
         else
          {var
            s1=string_of_big_int(r$0[1]),
            s=string_of_big_int(r$0[2]),
            size_num=caml_ml_string_length(s1),
            lim=caml_ml_string_length(s),
            i$3=caml_call2(Stdlib[16],size_num,lim),
            m=size_num - lim | 0,
            i=0;
           for(;;)
            {if(i$3 <= i)
              var cmp=0;
             else
              {var
                c1=caml_string_get(s1,i),
                c2=caml_string_get(s,i),
                c=compare_int(c1,c2);
               if(0 === c){var i$0=i + 1 | 0,i=i$0;continue}
               var cmp=c}
             var switcher=cmp + 1 | 0,switch$0=0;
             if(2 < switcher >>> 0)
              switch$0 = 1;
             else
              switch(switcher)
               {case 0:var msd=m - 1 | 0;break;
                case 1:switch$0 = 1;break;
                default:var msd=m}
             if(switch$0)
              if(0 <= m)
               var msd=m;
              else
               {var i$1=i$3;
                for(;;)
                 {var _ao_=lim <= i$1?1:0;
                  if(_ao_)
                   var _ap_=_ao_;
                  else
                   {var _aq_=48 === caml_string_get(s,i$1)?1:0;
                    if(_aq_){var i$2=i$1 + 1 | 0,i$1=i$2;continue}
                    var _ap_=_aq_}
                  var msd=_ap_?m:m - 1 | 0;
                  break}}
             break}}
        var k=n - msd | 0;
        if(0 <= k)
         var
          _as_=r[2],
          _at_=div_big_int(base_power_big_int(10,k,abs_big_int(r[1])),_as_);
        else
         var
          _aF_=base_power_big_int(10,- k | 0,r[2]),
          _at_=div_big_int(abs_big_int(r[1]),_aF_);
        var nat=nat_of_big_int(_at_),s$0=string_of_nat(nat);
        if
         (round_futur_last_digit
           (caml_call1(Stdlib_bytes[43],s$0),0,caml_ml_string_length(s$0)))
         {var
           m$0=num_decimal_digits_int(msd + 1 | 0),
           str=caml_call2(Stdlib_bytes[1],(n + m$0 | 0) + 4 | 0,48),
           _au_=3,
           _av_=0,
           _aw_=0,
           _ax_=-1 === sign_r?cst_1$1:cst_1$2;
          caml_call5(Stdlib_string[6],_ax_,_aw_,str,_av_,_au_);
          caml_bytes_set(str,i$4[1],101);
          i$4[1]++;
          if(0 === m$0)
           caml_bytes_set(str,i$4[1],48);
          else
           {var _ay_=i$4[1],_az_=caml_call1(Stdlib[33],msd + 1 | 0);
            caml_call5(Stdlib_string[6],_az_,0,str,_ay_,m$0)}
          return caml_call1(Stdlib_bytes[42],str)}
        var
         m$1=num_decimal_digits_int(msd + 1 | 0),
         p=n + 3 | 0,
         str$0=caml_call2(Stdlib_bytes[1],(m$1 + p | 0) + 1 | 0,48),
         _aA_=3,
         _aB_=0,
         _aC_=0,
         _aD_=-1 === sign_r?cst_0$1:cst_0$2;
        caml_call5(Stdlib_string[6],_aD_,_aC_,str$0,_aB_,_aA_);
        caml_call5(Stdlib_string[6],s$0,0,str$0,3,n);
        caml_bytes_set(str$0,p,101);
        if(0 === m$1)
         caml_bytes_set(str$0,p + 1 | 0,48);
        else
         {var _aE_=caml_call1(Stdlib[33],msd + 1 | 0);
          caml_call5(Stdlib_string[6],_aE_,0,str$0,p + 1 | 0,m$1)}
        return caml_call1(Stdlib_bytes[42],str$0)}
      return caml_call1(Stdlib[1],cst_approx_ratio_exp$0)}
    function float_of_rational_string(r)
     {var s=approx_ratio_exp(floating_precision[1],r);
      return 43 === caml_string_get(s,0)
              ?caml_call3
                (Stdlib_string[4],s,1,caml_ml_string_length(s) - 1 | 0)
              :s}
    function string_of_ratio(r)
     {cautious_normalize_ratio_when_(r);
      if(approx_printing_flag[1])return float_of_rational_string(r);
      var
       _al_=string_of_big_int(r[2]),
       _am_=caml_call2(Stdlib[28],cst$5,_al_),
       _an_=string_of_big_int(r[1]);
      return caml_call2(Stdlib[28],_an_,_am_)}
    function ratio_of_string(s)
     {try
       {var
         n=caml_call2(Stdlib_string[14],s,47),
         _ai_=
          sys_big_int_of_string
           (s,n + 1 | 0,(caml_ml_string_length(s) - n | 0) - 1 | 0),
         _aj_=create_ratio(sys_big_int_of_string(s,0,n),_ai_);
        return _aj_}
      catch(_ak_)
       {_ak_ = caml_wrap_exception(_ak_);
        if(_ak_ === Stdlib[8])return [0,big_int_of_string(s),unit_big_int,1];
        throw _ak_}}
    function float_of_ratio(r)
     {var p=r[1],q=r[2];
      if(0 === q[1])
       {var match=p[1],switcher=match + 1 | 0;
        if(2 < switcher >>> 0)throw [0,Assert_failure,_n_];
        switch(switcher)
         {case 0:return Stdlib[23];
          case 1:return Stdlib[24];
          default:return Stdlib[22]}}
      if(0 === p[1])return 0.;
      var np=num_bits_big_int(p),nq=num_bits_big_int(q);
      if(! (53 < np) && ! (53 < nq))
       {var _ah_=caml_int64_to_float(int64_of_big_int(q));
        return caml_int64_to_float(int64_of_big_int(p)) / _ah_}
      var ap=abs_big_int(p),n=55 - (np - nq | 0) | 0;
      if(0 <= n)
       var q$0=q,p$0=shift_left_big_int(ap,n);
      else
       var q$1=shift_left_big_int(q,- n | 0),q$0=q$1,p$0=ap;
      var
       match$0=quomod_big_int(p$0,q$0),
       rem=match$0[2],
       quo=match$0[1],
       f=round_big_int_to_float(quo,0 === rem[1]?1:0),
       f$0=caml_ldexp_float(f,- n | 0);
      return 0 <= p[1]?f$0:- f$0}
    function power_ratio_positive_int(r,n)
     {var _ag_=power_big_int_positive_int(r[2],n);
      return create_ratio(power_big_int_positive_int(r[1],n),_ag_)}
    function power_ratio_positive_big_int(r,bi)
     {var _af_=power_big_int_positive_big_int(r[2],bi);
      return create_ratio(power_big_int_positive_big_int(r[1],bi),_af_)}
    var
     Ratio=
      [0,
       null_denominator,
       numerator_ratio,
       denominator_ratio,
       sign_ratio,
       normalize_ratio,
       cautious_normalize_ratio,
       cautious_normalize_ratio_when_,
       create_ratio,
       create_normalized_ratio,
       is_normalized_ratio,
       report_sign_ratio,
       abs_ratio,
       is_integer_ratio,
       add_ratio,
       minus_ratio,
       add_int_ratio,
       add_big_int_ratio,
       sub_ratio,
       mult_ratio,
       mult_int_ratio,
       mult_big_int_ratio,
       square_ratio,
       inverse_ratio,
       div_ratio,
       integer_ratio,
       floor_ratio,
       round_ratio,
       ceiling_ratio,
       eq_ratio,
       compare_ratio,
       lt_ratio,
       le_ratio,
       gt_ratio,
       ge_ratio,
       max_ratio,
       min_ratio,
       eq_big_int_ratio,
       compare_big_int_ratio,
       lt_big_int_ratio,
       le_big_int_ratio,
       gt_big_int_ratio,
       ge_big_int_ratio,
       int_of_ratio,
       ratio_of_int,
       ratio_of_nat,
       nat_of_ratio,
       ratio_of_big_int,
       big_int_of_ratio,
       div_int_ratio,
       div_ratio_int,
       div_big_int_ratio,
       div_ratio_big_int,
       approx_ratio_fix,
       approx_ratio_exp,
       float_of_rational_string,
       string_of_ratio,
       ratio_of_string,
       float_of_ratio,
       power_ratio_positive_int,
       power_ratio_positive_big_int];
    caml_register_global(132,Ratio,"Ratio");
    var
     biggest_INT=big_int_of_int(biggest_int),
     least_INT=big_int_of_int(least_int);
    function num_of_big_int(bi)
     {if(le_big_int(bi,biggest_INT) && ge_big_int(bi,least_INT))
       return [0,int_of_big_int(bi)];
      return [1,bi]}
    function num_of_ratio(r)
     {normalize_ratio(r);
      return is_integer_ratio(r)
              ?is_int_big_int(r[1])?[0,int_of_big_int(r[1])]:[1,r[1]]
              :[2,r]}
    function add_num(a,match)
     {switch(a[0])
       {case 0:
         var _ab_=a[1];
         switch(match[0])
          {case 0:
            var int2=match[1],r=_ab_ + int2 | 0;
            if(0 <= (_ab_ ^ int2 | _ab_ ^ r ^ -1))
             {var _ac_=big_int_of_int(int2);
              return [1,add_big_int(big_int_of_int(_ab_),_ac_)]}
            return [0,r];
           case 1:
            var bi=match[1];return num_of_big_int(add_int_big_int(_ab_,bi));
           default:var r$0=match[1];return [2,add_int_ratio(_ab_,r$0)]}
        case 1:
         var _ad_=a[1];
         switch(match[0])
          {case 0:
            var i=match[1];return num_of_big_int(add_int_big_int(i,_ad_));
           case 1:
            var bi2=match[1];return num_of_big_int(add_big_int(_ad_,bi2));
           default:var r$1=match[1];return [2,add_big_int_ratio(_ad_,r$1)]}
        default:
         var _ae_=a[1];
         switch(match[0])
          {case 0:var i$0=match[1];return [2,add_int_ratio(i$0,_ae_)];
           case 1:var bi$0=match[1];return [2,add_big_int_ratio(bi$0,_ae_)];
           default:var r2=match[1];return num_of_ratio(add_ratio(_ae_,r2))}}}
    function minus_num(param)
     {switch(param[0])
       {case 0:
         var i=param[1];
         return i === monster_int
                 ?[1,minus_big_int(big_int_of_int(i))]
                 :[0,- i | 0];
        case 1:var bi=param[1];return [1,minus_big_int(bi)];
        default:var r=param[1];return [2,minus_ratio(r)]}}
    function sub_num(n1,n2){return add_num(n1,minus_num(n2))}
    function mult_num(a,match)
     {switch(a[0])
       {case 0:
         var _Y_=a[1];
         switch(match[0])
          {case 0:
            var int2=match[1],_Z_=num_bits_int(int2);
            if((num_bits_int(_Y_) + _Z_ | 0) < length_of_int)
             return [0,caml_mul(_Y_,int2)];
            var ___=big_int_of_int(int2);
            return num_of_big_int(mult_big_int(big_int_of_int(_Y_),___));
           case 1:
            var bi=match[1];return num_of_big_int(mult_int_big_int(_Y_,bi));
           default:var r=match[1];return num_of_ratio(mult_int_ratio(_Y_,r))}
        case 1:
         var _$_=a[1];
         switch(match[0])
          {case 0:
            var i=match[1];return num_of_big_int(mult_int_big_int(i,_$_));
           case 1:
            var bi2=match[1];return num_of_big_int(mult_big_int(_$_,bi2));
           default:
            var r$0=match[1];return num_of_ratio(mult_big_int_ratio(_$_,r$0))}
        default:
         var _aa_=a[1];
         switch(match[0])
          {case 0:
            var i$0=match[1];return num_of_ratio(mult_int_ratio(i$0,_aa_));
           case 1:
            var bi$0=match[1];
            return num_of_ratio(mult_big_int_ratio(bi$0,_aa_));
           default:var r2=match[1];return num_of_ratio(mult_ratio(_aa_,r2))}}}
    function square_num(param)
     {switch(param[0])
       {case 0:
         var i=param[1];
         return (2 * num_bits_int(i) | 0) < length_of_int
                 ?[0,caml_mul(i,i)]
                 :num_of_big_int(square_big_int(big_int_of_int(i)));
        case 1:var bi=param[1];return [1,square_big_int(bi)];
        default:var r=param[1];return [2,square_ratio(r)]}}
    function div_num(n1,n2)
     {switch(n1[0])
       {case 0:
         var i1=n1[1];
         switch(n2[0])
          {case 0:
            var i2=n2[1],_X_=big_int_of_int(i2);
            return num_of_ratio(create_ratio(big_int_of_int(i1),_X_));
           case 1:
            var bi2=n2[1];
            return num_of_ratio(create_ratio(big_int_of_int(i1),bi2));
           default:var r2=n2[1];return num_of_ratio(div_int_ratio(i1,r2))}
        case 1:
         var bi1=n1[1];
         switch(n2[0])
          {case 0:
            var i2$0=n2[1];
            return num_of_ratio(create_ratio(bi1,big_int_of_int(i2$0)));
           case 1:
            var bi2$0=n2[1];return num_of_ratio(create_ratio(bi1,bi2$0));
           default:
            var r2$0=n2[1];return num_of_ratio(div_big_int_ratio(bi1,r2$0))}
        default:
         var r1=n1[1];
         switch(n2[0])
          {case 0:var i2$1=n2[1];return num_of_ratio(div_ratio_int(r1,i2$1));
           case 1:
            var bi2$1=n2[1];return num_of_ratio(div_ratio_big_int(r1,bi2$1));
           default:var r2$1=n2[1];return num_of_ratio(div_ratio(r1,r2$1))}}}
    function floor_num(n)
     {switch(n[0])
       {case 0:return n;
        case 1:return n;
        default:var r=n[1];return num_of_big_int(floor_ratio(r))}}
    function ratio_of_num(param)
     {switch(param[0])
       {case 0:var i=param[1];return ratio_of_int(i);
        case 1:var bi=param[1];return ratio_of_big_int(bi);
        default:var r=param[1];return r}}
    function quo_num(n1,n2)
     {switch(n1[0])
       {case 0:
         var _V_=n1[1];
         switch(n2[0])
          {case 0:
            var
             i2=n2[1],
             q=caml_div(_V_,i2),
             r=caml_mod(_V_,i2),
             q$0=0 <= r?q:0 < i2?q - 1 | 0:q + 1 | 0;
            return [0,q$0];
           case 1:
            var bi2=n2[1];
            return num_of_big_int(div_big_int(big_int_of_int(_V_),bi2));
           default:
            var r2=n2[1];
            return num_of_big_int
                    (report_sign_ratio
                      (r2,floor_ratio(div_int_ratio(_V_,abs_ratio(r2)))))}
        case 1:
         var _W_=n1[1];
         switch(n2[0])
          {case 0:
            var i2$0=n2[1];
            return num_of_big_int(div_big_int(_W_,big_int_of_int(i2$0)));
           case 1:
            var bi2$0=n2[1];return num_of_big_int(div_big_int(_W_,bi2$0));
           default:
            var r2$0=n2[1];
            return num_of_big_int
                    (report_sign_ratio
                      (r2$0,floor_ratio(div_big_int_ratio(_W_,abs_ratio(r2$0)))))}
        default:
         var r1=n1[1],r2$1=ratio_of_num(n2);
         return num_of_big_int
                 (report_sign_ratio
                   (r2$1,floor_ratio(div_ratio(r1,abs_ratio(r2$1)))))}}
    function mod_num(n1,n2)
     {switch(n1[0])
       {case 0:
         var _T_=n1[1];
         switch(n2[0])
          {case 0:
            var
             i2=n2[1],
             r=caml_mod(_T_,i2),
             r$0=0 <= r?r:0 < i2?r + i2 | 0:r - i2 | 0;
            return [0,r$0];
           case 1:
            var bi2=n2[1];
            return num_of_big_int(mod_big_int(big_int_of_int(_T_),bi2))
           }
         break;
        case 1:
         var _U_=n1[1];
         switch(n2[0])
          {case 0:
            var i2$0=n2[1];
            return num_of_big_int(mod_big_int(_U_,big_int_of_int(i2$0)));
           case 1:
            var bi2$0=n2[1];return num_of_big_int(mod_big_int(_U_,bi2$0))
           }
         break
        }
      return sub_num(n1,mult_num(n2,quo_num(n1,n2)))}
    function power_num(n,match$5)
     {switch(match$5[0])
       {case 0:
         var i$1=match$5[1];
         switch(n[0])
          {case 0:
            var i=n[1],match=sign_int(i$1);
            return 0 === match
                    ?_o_
                    :1 === match
                      ?num_of_big_int(power_int_positive_int(i,i$1))
                      :[2,
                        create_normalized_ratio
                         (unit_big_int,power_int_positive_int(i,- i$1 | 0))];
           case 1:
            var bi=n[1],match$0=sign_int(i$1);
            return 0 === match$0
                    ?_p_
                    :1 === match$0
                      ?num_of_big_int(power_big_int_positive_int(bi,i$1))
                      :[2,
                        create_normalized_ratio
                         (unit_big_int,power_big_int_positive_int(bi,- i$1 | 0))];
           default:
            var r=n[1],match$1=sign_int(i$1);
            return 0 === match$1
                    ?_q_
                    :1 === match$1
                      ?[2,power_ratio_positive_int(r,i$1)]
                      :[2,power_ratio_positive_int(inverse_ratio(r),- i$1 | 0)]}
        case 1:
         var bi$1=match$5[1];
         switch(n[0])
          {case 0:
            var i$0=n[1],match$2=bi$1[1];
            return 0 === match$2
                    ?_r_
                    :1 === match$2
                      ?num_of_big_int(power_int_positive_big_int(i$0,bi$1))
                      :[2,
                        create_normalized_ratio
                         (unit_big_int,
                          power_int_positive_big_int(i$0,minus_big_int(bi$1)))];
           case 1:
            var bi$0=n[1],match$3=bi$1[1];
            return 0 === match$3
                    ?_s_
                    :1 === match$3
                      ?num_of_big_int(power_big_int_positive_big_int(bi$0,bi$1))
                      :[2,
                        create_normalized_ratio
                         (unit_big_int,
                          power_big_int_positive_big_int(bi$0,minus_big_int(bi$1)))];
           default:
            var r$0=n[1],match$4=bi$1[1];
            if(0 === match$4)return _t_;
            if(1 === match$4)
             return [2,power_ratio_positive_big_int(r$0,bi$1)];
            var _S_=minus_big_int(bi$1);
            return [2,power_ratio_positive_big_int(inverse_ratio(r$0),_S_)]}
        default:return caml_call1(Stdlib[1],cst_power_num)}}
    function is_integer_num(param)
     {switch(param[0])
       {case 0:return 1;
        case 1:return 1;
        default:var r=param[1];return is_integer_ratio(r)}}
    function integer_num(n)
     {switch(n[0])
       {case 0:return n;
        case 1:return n;
        default:var r=n[1];return num_of_big_int(integer_ratio(r))}}
    function round_num(n)
     {switch(n[0])
       {case 0:return n;
        case 1:return n;
        default:var r=n[1];return num_of_big_int(round_ratio(r))}}
    function ceiling_num(n)
     {switch(n[0])
       {case 0:return n;
        case 1:return n;
        default:var r=n[1];return num_of_big_int(ceiling_ratio(r))}}
    function sign_num(param)
     {switch(param[0])
       {case 0:var i=param[1];return sign_int(i);
        case 1:var bi=param[1];return bi[1];
        default:var r=param[1];return sign_ratio(r)}}
    function eq_num(a,match)
     {switch(a[0])
       {case 0:
         var _P_=a[1];
         switch(match[0])
          {case 0:var int2=match[1];return _P_ === int2?1:0;
           case 1:var bi=match[1];return eq_big_int(big_int_of_int(_P_),bi);
           default:
            var r=match[1];return eq_big_int_ratio(big_int_of_int(_P_),r)}
        case 1:
         var _Q_=a[1];
         switch(match[0])
          {case 0:var i=match[1];return eq_big_int(big_int_of_int(i),_Q_);
           case 1:var bi2=match[1];return eq_big_int(_Q_,bi2);
           default:var r$0=match[1];return eq_big_int_ratio(_Q_,r$0)}
        default:
         var _R_=a[1];
         switch(match[0])
          {case 0:
            var i$0=match[1];return eq_big_int_ratio(big_int_of_int(i$0),_R_);
           case 1:var bi$0=match[1];return eq_big_int_ratio(bi$0,_R_);
           default:var r2=match[1];return eq_ratio(_R_,r2)}}}
    function symbol(a,b){return 1 - eq_num(a,b)}
    function compare_num(a,match)
     {switch(a[0])
       {case 0:
         var _M_=a[1];
         switch(match[0])
          {case 0:var int2=match[1];return compare_int(_M_,int2);
           case 1:
            var bi=match[1];return compare_big_int(big_int_of_int(_M_),bi);
           default:
            var r=match[1];return compare_big_int_ratio(big_int_of_int(_M_),r)}
        case 1:
         var _N_=a[1];
         switch(match[0])
          {case 0:
            var i=match[1];return compare_big_int(_N_,big_int_of_int(i));
           case 1:var bi2=match[1];return compare_big_int(_N_,bi2);
           default:var r$0=match[1];return compare_big_int_ratio(_N_,r$0)}
        default:
         var _O_=a[1];
         switch(match[0])
          {case 0:
            var i$0=match[1];
            return - compare_big_int_ratio(big_int_of_int(i$0),_O_) | 0;
           case 1:
            var bi$0=match[1];return - compare_big_int_ratio(bi$0,_O_) | 0;
           default:var r2=match[1];return compare_ratio(_O_,r2)}}}
    function lt_num(num1,num2){return compare_num(num1,num2) < 0?1:0}
    function le_num(num1,num2){return compare_num(num1,num2) <= 0?1:0}
    function gt_num(num1,num2){return 0 < compare_num(num1,num2)?1:0}
    function ge_num(num1,num2){return 0 <= compare_num(num1,num2)?1:0}
    function max_num(num1,num2){return lt_num(num1,num2)?num2:num1}
    function min_num(num1,num2){return gt_num(num1,num2)?num2:num1}
    function int_of_num(param)
     {switch(param[0])
       {case 0:var i=param[1];return i;
        case 1:var bi=param[1];return int_of_big_int(bi);
        default:var r=param[1];return int_of_ratio(r)}}
    function int_of_num_opt(param)
     {switch(param[0])
       {case 0:var i=param[1];return [0,i];
        case 1:var bi=param[1];return int_of_big_int_opt(bi);
        default:
         var r=param[1];
         try
          {var _K_=[0,int_of_ratio(r)];return _K_}
         catch(_L_)
          {_L_ = caml_wrap_exception(_L_);
           if(_L_[1] === Stdlib[7])return 0;
           throw _L_}}}
    function num_of_int(i)
     {return i === monster_int?[1,big_int_of_int(i)]:[0,i]}
    function nat_of_num(param)
     {switch(param[0])
       {case 0:var i=param[1];return nat_of_int(i);
        case 1:var bi=param[1];return nat_of_big_int(bi);
        default:var r=param[1];return nat_of_ratio(r)}}
    function num_of_nat(nat)
     {return is_nat_int(nat,0,length_nat(nat))
              ?[0,nth_digit_nat(nat,0)]
              :[1,big_int_of_nat(nat)]}
    function nat_of_num_opt(x)
     {try
       {var _I_=[0,nat_of_num(x)];return _I_}
      catch(_J_)
       {_J_ = caml_wrap_exception(_J_);
        if(_J_[1] === Stdlib[7])return 0;
        throw _J_}}
    function big_int_of_num(param)
     {switch(param[0])
       {case 0:var i=param[1];return big_int_of_int(i);
        case 1:var bi=param[1];return bi;
        default:var r=param[1];return big_int_of_ratio(r)}}
    function big_int_of_num_opt(x)
     {try
       {var _G_=[0,big_int_of_num(x)];return _G_}
      catch(_H_)
       {_H_ = caml_wrap_exception(_H_);
        if(_H_[1] === Stdlib[7])return 0;
        throw _H_}}
    function string_of_num(n)
     {if(normalize_ratio_when_printing_[1])
       switch(n[0])
        {case 0:var i=n[1],_F_=[0,i];break;
         case 1:var bi=n[1],_F_=num_of_big_int(bi);break;
         default:var r=n[1],_F_=is_integer_ratio(r)?num_of_big_int(r[1]):[2,r]}
      else
       var _F_=n;
      switch(_F_[0])
       {case 0:var i$0=_F_[1];return caml_call1(Stdlib[33],i$0);
        case 1:
         var bi$0=_F_[1];
         return approx_printing_flag[1]
                 ?approx_big_int(floating_precision[1],bi$0)
                 :string_of_big_int(bi$0);
        default:var r$0=_F_[1];return string_of_ratio(r$0)}}
    function num_of_string(s)
     {try
       {var flag=normalize_ratio_flag[1];
        normalize_ratio_flag[1] = 1;
        var r=ratio_of_string(s);
        normalize_ratio_flag[1] = flag;
        var _D_=eq_big_int(r[2],unit_big_int)?num_of_big_int(r[1]):[2,r];
        return _D_}
      catch(_E_)
       {_E_ = caml_wrap_exception(_E_);
        if(_E_[1] === Stdlib[7])
         return caml_call1(Stdlib[2],cst_num_of_string);
        throw _E_}}
    function num_of_string_opt(s)
     {try
       {var _B_=[0,num_of_string(s)];return _B_}
      catch(_C_)
       {_C_ = caml_wrap_exception(_C_);
        if(_C_[1] === Stdlib[7])return 0;
        throw _C_}}
    function float_of_num(param)
     {switch(param[0])
       {case 0:var i=param[1];return i;
        case 1:var bi=param[1];return float_of_big_int(bi);
        default:var r=param[1];return float_of_ratio(r)}}
    function succ_num(param)
     {switch(param[0])
       {case 0:
         var i=param[1];
         return i === biggest_int
                 ?[1,succ_big_int(big_int_of_int(i))]
                 :[0,i + 1 | 0];
        case 1:var bi=param[1];return num_of_big_int(succ_big_int(bi));
        default:var r=param[1];return [2,add_int_ratio(1,r)]}}
    function pred_num(param)
     {switch(param[0])
       {case 0:
         var i=param[1];
         return i === monster_int
                 ?[1,pred_big_int(big_int_of_int(i))]
                 :[0,i - 1 | 0];
        case 1:var bi=param[1];return num_of_big_int(pred_big_int(bi));
        default:var r=param[1];return [2,add_int_ratio(-1,r)]}}
    function abs_num(param)
     {switch(param[0])
       {case 0:
         var i=param[1];
         return i === monster_int
                 ?[1,minus_big_int(big_int_of_int(i))]
                 :[0,caml_call1(Stdlib[18],i)];
        case 1:var bi=param[1];return [1,abs_big_int(bi)];
        default:var r=param[1];return [2,abs_ratio(r)]}}
    function approx_num_fix(n,num)
     {return approx_ratio_fix(n,ratio_of_num(num))}
    function approx_num_exp(n,num)
     {return approx_ratio_exp(n,ratio_of_num(num))}
    function incr_num(r){r[1] = succ_num(r[1]);return 0}
    function decr_num(r){r[1] = pred_num(r[1]);return 0}
    var
     Num=
      [0,
       add_num,
       add_num,
       minus_num,
       sub_num,
       sub_num,
       mult_num,
       mult_num,
       square_num,
       div_num,
       div_num,
       quo_num,
       mod_num,
       power_num,
       power_num,
       abs_num,
       succ_num,
       pred_num,
       incr_num,
       decr_num,
       is_integer_num,
       integer_num,
       floor_num,
       round_num,
       ceiling_num,
       sign_num,
       eq_num,
       lt_num,
       gt_num,
       le_num,
       ge_num,
       symbol,
       eq_num,
       lt_num,
       le_num,
       gt_num,
       ge_num,
       compare_num,
       max_num,
       min_num,
       string_of_num,
       approx_num_fix,
       approx_num_exp,
       num_of_string,
       num_of_string_opt,
       int_of_num,
       int_of_num_opt,
       num_of_int,
       nat_of_num,
       nat_of_num_opt,
       num_of_nat,
       num_of_big_int,
       big_int_of_num,
       big_int_of_num_opt,
       ratio_of_num,
       num_of_ratio,
       float_of_num];
    caml_register_global(133,Num,"Num");
    function get_error_when_null_denominato(param)
     {return error_when_null_denominator_fl[1]}
    function set_error_when_null_denominato(choice)
     {error_when_null_denominator_fl[1] = choice;return 0}
    function get_normalize_ratio(param){return normalize_ratio_flag[1]}
    function set_normalize_ratio(choice)
     {normalize_ratio_flag[1] = choice;return 0}
    function get_normalize_ratio_when_print(param)
     {return normalize_ratio_when_printing_[1]}
    function set_normalize_ratio_when_print(choice)
     {normalize_ratio_when_printing_[1] = choice;return 0}
    function get_floating_precision(param){return floating_precision[1]}
    function set_floating_precision(i){floating_precision[1] = i;return 0}
    function get_approx_printing(param){return approx_printing_flag[1]}
    function set_approx_printing(b){approx_printing_flag[1] = b;return 0}
    function arith_print_string(s)
     {caml_call1(Stdlib[42],s);return caml_call1(Stdlib[42],cst$6)}
    function arith_print_bool(param)
     {return param
              ?caml_call1(Stdlib[42],cst_ON)
              :caml_call1(Stdlib[42],cst_OFF)}
    function arith_status(param)
     {caml_call1(Stdlib[47],0);
      arith_print_string(cst_Normalization_during_compu);
      arith_print_bool(get_normalize_ratio(0));
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[42],cst_returned_by_get_normalize_);
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[42],cst_modifiable_with_set_normal);
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[47],0);
      arith_print_string(cst_Normalization_when_printin);
      arith_print_bool(get_normalize_ratio_when_print(0));
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[42],cst_returned_by_get_normalize_$0);
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[42],cst_modifiable_with_set_normal$0);
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[47],0);
      arith_print_string(cst_Floating_point_approximati);
      arith_print_bool(get_approx_printing(0));
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[42],cst_returned_by_get_approx_pri);
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[42],cst_modifiable_with_set_approx);
      caml_call1(Stdlib[47],0);
      if(get_approx_printing(0))
       {caml_call1(Stdlib[42],cst_Default_precision);
        var _A_=get_floating_precision(0);
        caml_call1(Stdlib[44],_A_);
        caml_call1(Stdlib[47],0);
        caml_call1(Stdlib[42],cst_returned_by_get_floating_p);
        caml_call1(Stdlib[47],0);
        caml_call1(Stdlib[42],cst_modifiable_with_set_floati);
        caml_call1(Stdlib[47],0);
        caml_call1(Stdlib[47],0)}
      else
       caml_call1(Stdlib[47],0);
      arith_print_string(cst_Error_when_a_rational_deno);
      arith_print_bool(get_error_when_null_denominato(0));
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[42],cst_returned_by_get_error_when);
      caml_call1(Stdlib[47],0);
      caml_call1(Stdlib[42],cst_modifiable_with_set_error_);
      return caml_call1(Stdlib[47],0)}
    var
     Arith_status=
      [0,
       arith_status,
       get_error_when_null_denominato,
       set_error_when_null_denominato,
       get_normalize_ratio,
       set_normalize_ratio,
       get_normalize_ratio_when_print,
       set_normalize_ratio_when_print,
       get_approx_printing,
       set_approx_printing,
       get_floating_precision,
       set_floating_precision];
    caml_register_global(134,Arith_status,"Arith_status");
    return}
  (function(){return this}()));


//# 1 "../../.js/re/re.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
     caml_check_bound=runtime.caml_check_bound,
     caml_compare=runtime.caml_compare,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_equal=runtime.caml_equal,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_int_compare=runtime.caml_int_compare,
     caml_lessthan=runtime.caml_lessthan,
     caml_list_of_js_array=runtime.caml_list_of_js_array,
     caml_make_vect=runtime.caml_make_vect,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_obj_tag=runtime.caml_obj_tag,
     caml_register_global=runtime.caml_register_global,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Re_cset_pick=caml_string_of_jsbytes("Re_cset.pick"),
     cany=[0,[0,0,255],0],
     cst_eps=caml_string_of_jsbytes("eps"),
     cst_cst=caml_string_of_jsbytes("cst"),
     cst_alt=caml_string_of_jsbytes("alt"),
     cst_seq=caml_string_of_jsbytes("seq"),
     cst_rep=caml_string_of_jsbytes("rep"),
     cst_mark=caml_string_of_jsbytes("mark"),
     cst_erase=caml_string_of_jsbytes("erase"),
     cst_before=caml_string_of_jsbytes("before"),
     cst_after=caml_string_of_jsbytes("after"),
     cst_pmark=caml_string_of_jsbytes("pmark"),
     cst_Non_greedy=caml_string_of_jsbytes("Non_greedy"),
     cst_Greedy=caml_string_of_jsbytes("Greedy"),
     cst_first=caml_string_of_jsbytes("first"),
     cst_short=caml_string_of_jsbytes("short"),
     cst_long=caml_string_of_jsbytes("long"),
     eps_expr=[0,0,0],
     cst_Group=caml_string_of_jsbytes("Group"),
     dummy_offset=[0,-1,-1],
     dummy_string=caml_string_of_jsbytes(""),
     cst_Beg_of_line=caml_string_of_jsbytes("Beg_of_line"),
     cst_End_of_line=caml_string_of_jsbytes("End_of_line"),
     cst_Beg_of_word=caml_string_of_jsbytes("Beg_of_word"),
     cst_End_of_word=caml_string_of_jsbytes("End_of_word"),
     cst_Not_bound=caml_string_of_jsbytes("Not_bound"),
     cst_Beg_of_str=caml_string_of_jsbytes("Beg_of_str"),
     cst_End_of_str=caml_string_of_jsbytes("End_of_str"),
     cst_Last_end_of_line=caml_string_of_jsbytes("Last_end_of_line"),
     cst_Start=caml_string_of_jsbytes("Start"),
     cst_Stop=caml_string_of_jsbytes("Stop"),
     cst_Set=caml_string_of_jsbytes("Set"),
     cst_Sequence=caml_string_of_jsbytes("Sequence"),
     cst_Alternative=caml_string_of_jsbytes("Alternative"),
     cst_Repeat=caml_string_of_jsbytes("Repeat"),
     cst_Sem=caml_string_of_jsbytes("Sem"),
     cst_Sem_greedy=caml_string_of_jsbytes("Sem_greedy"),
     cst_Group$0=caml_string_of_jsbytes("Group"),
     cst_No_group=caml_string_of_jsbytes("No_group"),
     cst_Nest=caml_string_of_jsbytes("Nest"),
     cst_Case=caml_string_of_jsbytes("Case"),
     cst_No_case=caml_string_of_jsbytes("No_case"),
     cst_Intersection=caml_string_of_jsbytes("Intersection"),
     cst_Complement=caml_string_of_jsbytes("Complement"),
     cst_Difference=caml_string_of_jsbytes("Difference"),
     cst_Pmark=caml_string_of_jsbytes("Pmark"),
     cst$1=caml_string_of_jsbytes(""),
     cst$2=caml_string_of_jsbytes(""),
     cst_Re_replace=caml_string_of_jsbytes("Re.replace"),
     cst_Re_replace$0=caml_string_of_jsbytes("Re.replace"),
     cst_Re_split=caml_string_of_jsbytes("Re.split"),
     cst_Re_split$0=caml_string_of_jsbytes("Re.split"),
     cst_Re_all=caml_string_of_jsbytes("Re.all"),
     cst_Re_all$0=caml_string_of_jsbytes("Re.all"),
     cst_Re_exec_partial=caml_string_of_jsbytes("Re.exec_partial"),
     cst_Re_execp=caml_string_of_jsbytes("Re.execp"),
     cst_Re_exec_opt=caml_string_of_jsbytes("Re.exec_opt"),
     cst_Re_exec=caml_string_of_jsbytes("Re.exec"),
     cst_Re_diff=caml_string_of_jsbytes("Re.diff"),
     cst_Re_compl=caml_string_of_jsbytes("Re.compl"),
     cst_Re_inter=caml_string_of_jsbytes("Re.inter"),
     cst_Re_repn=caml_string_of_jsbytes("Re.repn"),
     cst_Re_repn$0=caml_string_of_jsbytes("Re.repn"),
     cst$0=caml_string_of_jsbytes("\t "),
     cst_Re_Emacs_Parse_error=caml_string_of_jsbytes("Re__Emacs.Parse_error"),
     cst_Re_Emacs_Not_supported=
      caml_string_of_jsbytes("Re__Emacs.Not_supported"),
     cst_Str_replace_illegal_backsl=
      caml_string_of_jsbytes("Str.replace: illegal backslash sequence"),
     cst$5=caml_string_of_jsbytes(""),
     cst$4=caml_string_of_jsbytes(""),
     cst$3=caml_string_of_jsbytes(""),
     cst_Str_group_end=caml_string_of_jsbytes("Str.group_end"),
     cst_Str_group_beginning=caml_string_of_jsbytes("Str.group_beginning"),
     beg=[0,caml_string_of_jsbytes(""),0],
     cst_Re_Glob_Parse_error=caml_string_of_jsbytes("Re__Glob.Parse_error"),
     cst$6=caml_string_of_jsbytes(":]"),
     cst_lower=caml_string_of_jsbytes("lower"),
     cst_alnum=caml_string_of_jsbytes("alnum"),
     cst_ascii=caml_string_of_jsbytes("ascii"),
     cst_blank=caml_string_of_jsbytes("blank"),
     cst_cntrl=caml_string_of_jsbytes("cntrl"),
     cst_digit=caml_string_of_jsbytes("digit"),
     cst_graph=caml_string_of_jsbytes("graph"),
     cst_print=caml_string_of_jsbytes("print"),
     cst_punct=caml_string_of_jsbytes("punct"),
     cst_space=caml_string_of_jsbytes("space"),
     cst_upper=caml_string_of_jsbytes("upper"),
     cst_word=caml_string_of_jsbytes("word"),
     cst_xdigit=caml_string_of_jsbytes("xdigit"),
     cst_Invalid_pcre_class=caml_string_of_jsbytes("Invalid pcre class: "),
     cst_Re_Perl_Parse_error=caml_string_of_jsbytes("Re__Perl.Parse_error"),
     cst_Re_Perl_Not_supported=
      caml_string_of_jsbytes("Re__Perl.Not_supported"),
     posix_class_strings=
      caml_list_of_js_array
       ([caml_string_of_jsbytes("alnum"),
         caml_string_of_jsbytes("ascii"),
         caml_string_of_jsbytes("blank"),
         caml_string_of_jsbytes("cntrl"),
         caml_string_of_jsbytes("digit"),
         caml_string_of_jsbytes("lower"),
         caml_string_of_jsbytes("print"),
         caml_string_of_jsbytes("space"),
         caml_string_of_jsbytes("upper"),
         caml_string_of_jsbytes("word"),
         caml_string_of_jsbytes("punct"),
         caml_string_of_jsbytes("graph"),
         caml_string_of_jsbytes("xdigit")]),
     cst_Re_Posix_Parse_error=caml_string_of_jsbytes("Re__Posix.Parse_error"),
     cst_Re_Posix_Not_supported=
      caml_string_of_jsbytes("Re__Posix.Not_supported"),
     include=global_data.Stdlib__format,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib=global_data.Stdlib,
     Assert_failure=global_data.Assert_failure,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_map=global_data.Stdlib__map,
     Stdlib_set=global_data.Stdlib__set,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_seq=global_data.Stdlib__seq,
     CamlinternalLazy=global_data.CamlinternalLazy,
     Re=[0];
    caml_register_global(134,Re,"Re__");
    var
     _bG_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bH_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<3>"),0],
          caml_string_of_jsbytes("<3>")]],
        [12,
         91,
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [15,[17,[0,caml_string_of_jsbytes("@ "),1,0],[12,93,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<3>[@ %a@ ]@]")],
     _bF_=[0,[12,34,[2,0,[12,34,0]]],caml_string_of_jsbytes('"%s"')],
     _bE_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[4,0,0,0,0]],
       caml_string_of_jsbytes("@ %d")],
     _bD_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<3>"),0],
          caml_string_of_jsbytes("<3>")]],
        [12,
         40,
         [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[12,41,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<3>(%s@ %a)@]")],
     _bL_=[0,caml_string_of_jsbytes("lib/cset.ml"),153,9],
     _bI_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _bJ_=[0,[4,0,0,0,[12,45,[4,0,0,0,0]]],caml_string_of_jsbytes("%d-%d")],
     _bZ_=[0,caml_string_of_jsbytes("lib/automata.ml"),360,21],
     _bQ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("(Seq"),
         [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]],
       caml_string_of_jsbytes("@[<2>(Seq@ ")],
     _bR_=[0,[12,32,[15,[12,41,[17,0,0]]]],caml_string_of_jsbytes(" %a)@]")],
     _bS_=
      [0,
       [11,
        caml_string_of_jsbytes("(Exp "),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" ("),
          [15,[11,caml_string_of_jsbytes(") (eps))"),0]]]]],
       caml_string_of_jsbytes("(Exp %d (%a) (eps))")],
     _bT_=
      [0,
       [11,
        caml_string_of_jsbytes("(Exp "),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" ("),
          [15,[11,caml_string_of_jsbytes(") "),[15,[12,41,0]]]]]]],
       caml_string_of_jsbytes("(Exp %d (%a) %a)")],
     _bU_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("(Match"),
         [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[12,41,[17,0,0]]]]]],
       caml_string_of_jsbytes("@[<2>(Match@ %a)@]")],
     _bV_=
      [0,[11,caml_string_of_jsbytes(" | "),0],caml_string_of_jsbytes(" | ")],
     _bW_=[0,[11,caml_string_of_jsbytes("()"),0],caml_string_of_jsbytes("()")],
     _bX_=[0,0,0],
     _bP_=[1,0],
     _bO_=
      [0,
       [12,32,[4,0,0,0,[12,45,[4,0,0,0,0]]]],
       caml_string_of_jsbytes(" %d-%d")],
     _bN_=[0,[4,0,0,0,[12,45,[4,0,0,0,0]]],caml_string_of_jsbytes("%d-%d")],
     _b2_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [12,
         40,
         [2,
          0,
          [11,
           caml_string_of_jsbytes(" ("),
           [4,
            0,
            0,
            0,
            [12,32,[4,0,0,0,[11,caml_string_of_jsbytes("))"),[17,0,0]]]]]]]]],
       caml_string_of_jsbytes("@[(%s (%d %d))@]")],
     _b4_=
      [0,
       [15,[17,[0,caml_string_of_jsbytes("@ "),1,0],[4,0,0,0,[15,0]]]],
       caml_string_of_jsbytes("%a@ %d%a")],
     _b__=[0,caml_string_of_jsbytes("lib/core.ml"),690,4],
     _cv_=[0,caml_string_of_jsbytes("lib/core.ml"),1149,24],
     _cw_=[0,caml_string_of_jsbytes("lib/core.ml"),1160,27],
     _ca_=[0,1],
     _b$_=[0,caml_string_of_jsbytes("lib/core.ml"),723,13],
     _b9_=[0,caml_string_of_jsbytes("lib/core.ml"),493,35],
     _b3_=[0,0,0,0,0,0,0,0,0,0,0],
     _b8_=[0,170,[0,181,[0,186,[0,223,[0,255,0]]]]],
     _cB_=[0,1],
     _cA_=[0,1],
     _cy_=[0,caml_string_of_jsbytes(""),0],
     _cz_=[0,caml_string_of_jsbytes(""),0],
     _cx_=[0,45],
     _cC_=[0,748194550,8],
     _cD_=[0,748194550,10],
     _cE_=[0,748194550,13],
     _cF_=[0,748194550,9],
     _cG_=[0,-1,-1];
    function equal(x,y){return x === y?1:0}
    var compare=caml_int_compare;
    function to_int(x){return x}
    var pp=include[17];
    function intersect(x,y){return 0 !== (x & y)?1:0}
    function symbol(x,y){return x | y}
    var
     dummy=-1,
     inexistant=1,
     letter=2,
     not_letter=4,
     newline=8,
     lastnewline=16,
     search_boundary=32;
    function from_char(param)
     {var switch$0=0;
      if(170 <= param)
       if(187 <= param)
        {var _i$_=param - 192 | 0;
         if(54 < _i$_ >>> 0)
          {if(56 <= _i$_)switch$0 = 1}
         else
          if(23 !== _i$_)switch$0 = 1}
       else
        {var _ja_=param - 171 | 0;
         if(14 < _ja_ >>> 0 || 10 === _ja_)switch$0 = 1}
      else
       if(65 <= param)
        {var _jb_=param - 91 | 0;
         if(5 < _jb_ >>> 0)
          {if(! (32 <= _jb_))switch$0 = 1}
         else
          if(4 === _jb_)switch$0 = 1}
       else
        if(48 <= param)
         {if(! (58 <= param))switch$0 = 1}
        else
         if(10 === param)return 12;
      return switch$0?letter:not_letter}
    var
     Re_Category=
      [0,
       symbol,
       from_char,
       dummy,
       inexistant,
       letter,
       not_letter,
       newline,
       lastnewline,
       search_boundary,
       to_int,
       equal,
       compare,
       intersect,
       pp];
    caml_register_global(136,Re_Category,"Re__Category");
    var
     _m_=include[13],
     _q_=include[17],
     _y_=include[25],
     _A_=include[27],
     _bd_=include[123],
     _a_=include[1],
     _b_=include[2],
     _c_=include[3],
     _d_=include[4],
     _e_=include[5],
     _f_=include[6],
     _g_=include[7],
     _h_=include[8],
     _i_=include[9],
     _j_=include[10],
     _k_=include[11],
     _l_=include[12],
     _n_=include[14],
     _o_=include[15],
     _p_=include[16],
     _r_=include[18],
     _s_=include[19],
     _t_=include[20],
     _u_=include[21],
     _v_=include[22],
     _w_=include[23],
     _x_=include[24],
     _z_=include[26],
     _B_=include[28],
     _C_=include[29],
     _D_=include[30],
     _E_=include[31],
     _F_=include[32],
     _G_=include[33],
     _H_=include[34],
     _I_=include[35],
     _J_=include[36],
     _K_=include[37],
     _L_=include[38],
     _M_=include[39],
     _N_=include[40],
     _O_=include[41],
     _P_=include[42],
     _Q_=include[43],
     _R_=include[44],
     _S_=include[45],
     _T_=include[46],
     _U_=include[47],
     _V_=include[48],
     _W_=include[49],
     _X_=include[50],
     _Y_=include[51],
     _Z_=include[52],
     ___=include[53],
     _$_=include[54],
     _aa_=include[55],
     _ab_=include[56],
     _ac_=include[57],
     _ad_=include[58],
     _ae_=include[59],
     _af_=include[60],
     _ag_=include[61],
     _ah_=include[62],
     _ai_=include[63],
     _aj_=include[64],
     _ak_=include[65],
     _al_=include[66],
     _am_=include[67],
     _an_=include[68],
     _ao_=include[69],
     _ap_=include[70],
     _aq_=include[71],
     _ar_=include[72],
     _as_=include[73],
     _at_=include[74],
     _au_=include[75],
     _av_=include[76],
     _aw_=include[77],
     _ax_=include[78],
     _ay_=include[79],
     _az_=include[80],
     _aA_=include[81],
     _aB_=include[82],
     _aC_=include[83],
     _aD_=include[84],
     _aE_=include[85],
     _aF_=include[86],
     _aG_=include[87],
     _aH_=include[88],
     _aI_=include[89],
     _aJ_=include[90],
     _aK_=include[91],
     _aL_=include[92],
     _aM_=include[93],
     _aN_=include[94],
     _aO_=include[95],
     _aP_=include[96],
     _aQ_=include[97],
     _aR_=include[98],
     _aS_=include[99],
     _aT_=include[100],
     _aU_=include[101],
     _aV_=include[102],
     _aW_=include[103],
     _aX_=include[104],
     _aY_=include[105],
     _aZ_=include[106],
     _a0_=include[107],
     _a1_=include[108],
     _a2_=include[109],
     _a3_=include[110],
     _a4_=include[111],
     _a5_=include[112],
     _a6_=include[113],
     _a7_=include[114],
     _a8_=include[115],
     _a9_=include[116],
     _a__=include[117],
     _a$_=include[118],
     _ba_=include[120],
     _bb_=include[121],
     _bc_=include[122],
     _be_=include[124],
     _bf_=include[125],
     _bg_=include[126],
     _bh_=include[127],
     _bi_=include[128],
     _bj_=include[129],
     _bk_=include[130],
     _bl_=include[131],
     _bm_=include[132],
     _bn_=include[133],
     _bo_=include[134],
     _bp_=include[135],
     _bq_=include[136],
     _br_=include[137],
     _bs_=include[138],
     _bt_=include[139],
     _bu_=include[140],
     _bv_=include[141],
     _bw_=include[142],
     _bx_=include[143],
     _by_=include[144],
     _bz_=include[145],
     _bA_=include[146],
     _bB_=include[147],
     _bC_=include[148];
    function pp_print_list(opt,pp,ppf,param)
     {var opt$0=opt,param$0=param;
      for(;;)
       {if(opt$0)var sth=opt$0[1],pp_sep=sth;else var pp_sep=_A_;
        if(param$0)
         {var _i__=param$0[1];
          if(param$0[2])
           {var vs=param$0[2];
            caml_call2(pp,ppf,_i__);
            caml_call2(pp_sep,ppf,0);
            var opt$1=[0,pp_sep],opt$0=opt$1,param$0=vs;
            continue}
          return caml_call2(pp,ppf,_i__)}
        return 0}}
    function sexp(fmt,s,pp,x){return caml_call5(_bd_,fmt,_bD_,s,pp,x)}
    function pair(pp1,pp2,fmt,param)
     {var v2=param[2],v1=param[1];
      caml_call2(pp1,fmt,v1);
      caml_call2(_y_,fmt,0);
      return caml_call2(pp2,fmt,v2)}
    function triple(pp1,pp2,pp3,fmt,param)
     {var v3=param[3],v2=param[2],v1=param[1];
      caml_call2(pp1,fmt,v1);
      caml_call2(_y_,fmt,0);
      caml_call2(pp2,fmt,v2);
      caml_call2(_y_,fmt,0);
      return caml_call2(pp3,fmt,v3)}
    function optint(fmt,param)
     {if(param){var i=param[1];return caml_call3(_bd_,fmt,_bE_,i)}return 0}
    function quote(fmt,s){return caml_call3(include[123],fmt,_bF_,s)}
    function pp_olist(pp_elem,fmt)
     {var _i6_=[0,function(fmt,param){return caml_call2(_bd_,fmt,_bG_)}];
      function _i7_(_i8_,_i9_){return pp_print_list(_i6_,pp_elem,_i8_,_i9_)}
      return caml_call3(include[123],fmt,_bH_,_i7_)}
    function pp_str_list(_i5_){return pp_olist(quote,_i5_)}
    function to_to_string(pp,x)
     {var b=caml_call1(Stdlib_buffer[1],16),fmt=caml_call1(include[107],b);
      caml_call2(pp,fmt,x);
      return caml_call1(Stdlib_buffer[2],b)}
    var
     Re_Fmt=
      [0,
       _a_,
       _b_,
       _c_,
       _d_,
       _e_,
       _f_,
       _g_,
       _h_,
       _i_,
       _j_,
       _k_,
       _l_,
       _m_,
       _n_,
       _o_,
       _p_,
       _q_,
       _r_,
       _s_,
       _t_,
       _u_,
       _v_,
       _w_,
       _x_,
       _y_,
       _z_,
       _A_,
       _B_,
       _C_,
       _D_,
       _E_,
       _F_,
       _G_,
       _H_,
       _I_,
       _J_,
       _K_,
       _L_,
       _M_,
       _N_,
       _O_,
       _P_,
       _Q_,
       _R_,
       _S_,
       _T_,
       _U_,
       _V_,
       _W_,
       _X_,
       _Y_,
       _Z_,
       ___,
       _$_,
       _aa_,
       _ab_,
       _ac_,
       _ad_,
       _ae_,
       _af_,
       _ag_,
       _ah_,
       _ai_,
       _aj_,
       _ak_,
       _al_,
       _am_,
       _an_,
       _ao_,
       _ap_,
       _aq_,
       _ar_,
       _as_,
       _at_,
       _au_,
       _av_,
       _aw_,
       _ax_,
       _ay_,
       _az_,
       _aA_,
       _aB_,
       _aC_,
       _aD_,
       _aE_,
       _aF_,
       _aG_,
       _aH_,
       _aI_,
       _aJ_,
       _aK_,
       _aL_,
       _aM_,
       _aN_,
       _aO_,
       _aP_,
       _aQ_,
       _aR_,
       _aS_,
       _aT_,
       _aU_,
       _aV_,
       _aW_,
       _aX_,
       _aY_,
       _aZ_,
       _a0_,
       _a1_,
       _a2_,
       _a3_,
       _a4_,
       _a5_,
       _a6_,
       _a7_,
       _a8_,
       _a9_,
       _a__,
       _a$_,
       _ba_,
       _bb_,
       _bc_,
       _bd_,
       _be_,
       _bf_,
       _bg_,
       _bh_,
       _bi_,
       _bj_,
       _bk_,
       _bl_,
       _bm_,
       _bn_,
       _bo_,
       _bp_,
       _bq_,
       _br_,
       _bs_,
       _bt_,
       _bu_,
       _bv_,
       _bw_,
       _bx_,
       _by_,
       _bz_,
       _bA_,
       _bB_,
       _bC_,
       pp_print_list,
       pp_print_list,
       _m_,
       sexp,
       pair,
       triple,
       _q_,
       optint,
       quote,
       pp_olist,
       pp_str_list,
       to_to_string];
    caml_register_global(138,Re_Fmt,"Re__Fmt");
    function union(l$0,l)
     {var l$2=l$0,l$1=l;
      for(;;)
       {if(l$1)
         {if(l$2)
           {var
             r=l$1[2],
             _i4_=l$1[1],
             c2=_i4_[2],
             c1=_i4_[1],
             r$0=l$2[2],
             match=l$2[1],
             c2$0=match[2],
             c1$0=match[1];
            if((c2$0 + 1 | 0) < c1)return [0,[0,c1$0,c2$0],union(r$0,l$1)];
            if((c2 + 1 | 0) < c1$0)return [0,[0,c1,c2],union(l$2,r)];
            if(c2$0 < c2)
             {var
               l$3=[0,[0,caml_call2(Stdlib[16],c1$0,c1),c2],r],
               l$2=r$0,
               l$1=l$3;
              continue}
            var
             l$4=[0,[0,caml_call2(Stdlib[16],c1$0,c1),c2$0],r$0],
             l$2=l$4,
             l$1=r;
            continue}
          return l$1}
        return l$2}}
    function inter(l$0,l)
     {var l$2=l$0,l$1=l;
      for(;;)
       {if(l$1)
         {if(l$2)
           {var
             r=l$1[2],
             _i1_=l$1[1],
             c2=_i1_[2],
             c1=_i1_[1],
             r$0=l$2[2],
             match=l$2[1],
             c2$0=match[2],
             c1$0=match[1];
            if(caml_lessthan(c2$0,c1)){var l$2=r$0;continue}
            if(caml_lessthan(c2,c1$0)){var l$1=r;continue}
            if(caml_lessthan(c2$0,c2))
             {var _i2_=inter(r$0,l$1);
              return [0,[0,caml_call2(Stdlib[17],c1$0,c1),c2$0],_i2_]}
            var _i3_=inter(l$2,r);
            return [0,[0,caml_call2(Stdlib[17],c1$0,c1),c2],_i3_]}
          return 0}
        return 0}}
    function diff(l$0,l)
     {var l$2=l$0,l$1=l;
      for(;;)
       {if(l$1)
         {if(l$2)
           {var
             r=l$1[2],
             _i0_=l$1[1],
             c2=_i0_[2],
             c1=_i0_[1],
             r$0=l$2[2],
             match=l$2[1],
             c2$0=match[2],
             c1$0=match[1];
            if(c2$0 < c1)return [0,[0,c1$0,c2$0],diff(r$0,l$1)];
            if(c2 < c1$0){var l$1=r;continue}
            var r$1=c2 < c2$0?[0,[0,c2 + 1 | 0,c2$0],r$0]:r$0;
            if(c1$0 < c1)return [0,[0,c1$0,c1 - 1 | 0],diff(r$1,r)];
            var l$2=r$1,l$1=r;
            continue}
          return 0}
        return l$2}}
    function single(c){return [0,[0,c,c],0]}
    function add(c,l){return union(single(c),l)}
    function seq(c$0,c)
     {return runtime.caml_lessequal(c$0,c)?[0,[0,c$0,c],0]:[0,[0,c,c$0],0]}
    function offset(o,l)
     {if(l)
       {var r=l[2],match=l[1],c2=match[2],c1=match[1];
        return [0,[0,c1 + o | 0,c2 + o | 0],offset(o,r)]}
      return 0}
    var empty=0;
    function mem(c,s)
     {var s$0=s;
      for(;;)
       {if(s$0)
         {var rem=s$0[2],match=s$0[1],c2=match[2],c1=match[1];
          if(c <= c2)return c1 <= c?1:0;
          var s$0=rem;
          continue}
        return 0}}
    function hash_rec(param)
     {if(param)
       {var r=param[2],match=param[1],j=match[2],i=match[1];
        return (i + (13 * j | 0) | 0) + (257 * hash_rec(r) | 0) | 0}
      return 0}
    function hash(l){return hash_rec(l) & 1073741823}
    function print_one(ch,param)
     {var c2=param[2],c1=param[1];
      return c1 === c2
              ?caml_call3(include[123],ch,_bI_,c1)
              :caml_call4(include[123],ch,_bJ_,c1,c2)}
    var _bK_=0;
    function pp$0(_iY_,_iZ_){return pp_print_list(_bK_,print_one,_iY_,_iZ_)}
    function iter(t,f)
     {var t$0=t;
      for(;;)
       {if(t$0)
         {var xs=t$0[2],match=t$0[1],y=match[2],x=match[1];
          caml_call2(f,x,y);
          var t$0=xs;
          continue}
        return 0}}
    function one_char(param)
     {if(param && ! param[2])
       {var match=param[1],j=match[2],i=match[1];
        if(caml_equal(i,j))return [0,i]}
      return 0}
    function compare$0(param,_iX_)
     {var v=_iX_[2],j=_iX_[1],u=param[2],i=param[1],c=caml_compare(i,j);
      return 0 === c?caml_compare(u,v):c}
    var CSetMap=caml_call1(Stdlib_map[1],[0,compare$0]);
    function fold_right(t,init,f){return caml_call3(Stdlib_list[23],f,t,init)}
    function csingle(c){return single(c)}
    function is_empty(param){return param?0:1}
    function prepend(s,x,l)
     {var s$0=s;
      for(;;)
       {if(s$0)
         {if(l)
           {var _iS_=l[1],_iT_=_iS_[1];
            if(_iT_ && ! _iT_[2])
             {var
               x$0=_iS_[2],
               _iU_=_iT_[1],
               d=_iU_[2],
               d$0=_iU_[1],
               r=s$0[2],
               match=s$0[1],
               c=match[2],
               c$0=match[1];
              if(c < d$0){var s$0=r;continue}
              var r$0=l[2];
              if(c$0 <= d$0)
               {if(c < d)
                 {var _iV_=prepend(r,x,[0,[0,[0,[0,c + 1 | 0,d],0],x$0],r$0]);
                  return [0,
                          [0,[0,[0,d$0,c],0],caml_call2(Stdlib[37],x,x$0)],
                          _iV_]}
                var _iW_=prepend(s$0,x,r$0);
                return [0,
                        [0,[0,[0,d$0,d],0],caml_call2(Stdlib[37],x,x$0)],
                        _iW_]}
              return d < c$0
                      ?[0,[0,[0,[0,d$0,d],0],x$0],prepend(s$0,x,r$0)]
                      :[0,
                        [0,[0,[0,d$0,c$0 - 1 | 0],0],x$0],
                        prepend(s$0,x,[0,[0,[0,[0,c$0,d],0],x$0],r$0])]}
            throw [0,Assert_failure,_bL_]}
          return 0}
        return l}}
    function pick(param)
     {if(param){var match=param[1],x=match[1];return x}
      return caml_call1(Stdlib[1],cst_Re_cset_pick)}
    var
     Re_Cset=
      [0,
       iter,
       union,
       inter,
       diff,
       offset,
       empty,
       single,
       seq,
       add,
       mem,
       hash,
       pp$0,
       one_char,
       fold_right,
       hash_rec,
       CSetMap,
       cany,
       csingle,
       is_empty,
       prepend,
       pick];
    caml_register_global(143,Re_Cset,"Re__Cset");
    function equal$0(x,y){return x === y?1:0}
    var compare$1=caml_int_compare,r=[0,0];
    function gen(param){r[1]++;return r[1]}
    var
     pp$1=include[17],
     Set=caml_call1(Stdlib_set[1],[0,compare$1]),
     Re_Pmark=[0,equal$0,compare$1,gen,pp$1,Set];
    caml_register_global(145,Re_Pmark,"Re__Pmark");
    function hash_combine(h,accu){return (accu * 65599 | 0) + h | 0}
    var empty$0=[0,0,Set[1]];
    function merge_marks_offset(old,param)
     {if(param)
       {var
         rem=param[2],
         match=param[1],
         v=match[2],
         i=match[1],
         nw=merge_marks_offset(caml_call2(Stdlib_list[48],i,old),rem);
        return -2 === v?nw:[0,[0,i,v],nw]}
      return old}
    function merge(old,nw)
     {var _iR_=caml_call2(Set[7],old[2],nw[2]);
      return [0,merge_marks_offset(old[1],nw[1]),_iR_]}
    function hash$0(m,accu$1)
     {var
       accu$2=hash_combine(caml_call1(Stdlib_hashtbl[27],m[2]),accu$1),
       l=m[1],
       accu=accu$2;
      for(;;)
       {if(l)
         {var
           r=l[2],
           match=l[1],
           i=match[2],
           a=match[1],
           accu$0=hash_combine(a,hash_combine(i,accu)),
           l=r,
           accu=accu$0;
          continue}
        return accu}}
    function _bM_(idx,marks)
     {if(marks)
       {var _iQ_=marks[1];
        if(-1 === _iQ_[2])
         {var rem=marks[2],a=_iQ_[1];return [0,[0,a,idx],_bM_(idx,rem)]}}
      return marks}
    function marks_set_idx(marks,idx)
     {var _iP_=marks[2];return [0,_bM_(idx,marks[1]),_iP_]}
    function pp_marks(ch,t)
     {var _iN_=t[1];
      if(_iN_)
       {var r=_iN_[2],match=_iN_[1],i=match[2],a=match[1];
        caml_call4(include[123],ch,_bN_,a,i);
        var
         _iO_=
          function(param)
           {var i=param[2],a=param[1];
            return caml_call4(include[123],ch,_bO_,a,i)};
        return caml_call2(Stdlib_list[15],_iO_,r)}
      return 0}
    function pp_sem(ch,k)
     {var _iM_=-730718166 === k?cst_long:332064784 <= k?cst_first:cst_short;
      return caml_call2(include[13],ch,_iM_)}
    function pp_rep_kind(fmt,param)
     {return 620821490 <= param
              ?caml_call2(include[13],fmt,cst_Non_greedy)
              :caml_call2(include[13],fmt,cst_Greedy)}
    function pp$2(ch,e)
     {var _iz_=e[2];
      if(typeof _iz_ === "number")
       return caml_call2(_m_,ch,cst_eps);
      else
       switch(_iz_[0])
        {case 0:var l=_iz_[1];return sexp(ch,cst_cst,pp$0,l);
         case 1:
          var l$0=_iz_[1],_iA_=0;
          return sexp
                  (ch,
                   cst_alt,
                   function(_iK_,_iL_)
                    {return pp_print_list(_iA_,pp$2,_iK_,_iL_)},
                   l$0);
         case 2:
          var e$0=_iz_[3],e$1=_iz_[2],k=_iz_[1],_iB_=[0,k,e$1,e$0];
          return sexp
                  (ch,
                   cst_seq,
                   function(_iI_,_iJ_)
                    {return triple(pp_sem,pp$2,pp$2,_iI_,_iJ_)},
                   _iB_);
         case 3:
          var e$2=_iz_[3],k$0=_iz_[2],_iC_=[0,k$0,e$2];
          return sexp
                  (ch,
                   cst_rep,
                   function(_iG_,_iH_){return pair(pp_sem,pp$2,_iG_,_iH_)},
                   _iC_);
         case 4:var i=_iz_[1];return sexp(ch,cst_mark,_q_,i);
         case 5:
          var e$3=_iz_[2],b=_iz_[1],_iD_=[0,b,e$3];
          return sexp
                  (ch,
                   cst_erase,
                   function(_iE_,_iF_){return pair(_q_,_q_,_iE_,_iF_)},
                   _iD_);
         case 6:var c=_iz_[1];return sexp(ch,cst_before,pp,c);
         case 7:var c$0=_iz_[1];return sexp(ch,cst_after,pp,c$0);
         default:var i$0=_iz_[1];return sexp(ch,cst_pmark,_q_,i$0)}}
    function first(f,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var r=param$0[2],x=param$0[1],res=caml_call1(f,x);
          if(res)return res;
          var param$0=r;
          continue}
        return 0}}
    function create_ids(param){return [0,0]}
    function mk_expr(ids,def){ids[1]++;return [0,ids[1],def]}
    function empty$1(ids){return mk_expr(ids,_bP_)}
    function cst(ids,s){return is_empty(s)?empty$1(ids):mk_expr(ids,[0,s])}
    function alt(ids,l)
     {if(l){if(l[2])return mk_expr(ids,[1,l]);var c=l[1];return c}
      return empty$1(ids)}
    function seq$0(ids,kind,x,y)
     {var _ix_=x[2],_iy_=y[2];
      if(typeof _ix_ !== "number" && 1 === _ix_[0] && ! _ix_[1])return x;
      if(typeof _iy_ !== "number" && 1 === _iy_[0] && ! _iy_[1])return y;
      if(typeof _ix_ === "number")return y;
      if(typeof _iy_ === "number" && 332064784 === kind)return x;
      return mk_expr(ids,[2,kind,x,y])}
    function is_eps(expr){return typeof expr[2] === "number"?1:0}
    function eps(ids){return mk_expr(ids,0)}
    function rep(ids,kind,sem,x){return mk_expr(ids,[3,kind,sem,x])}
    function mark(ids,m){return mk_expr(ids,[4,m])}
    function pmark(ids,i){return mk_expr(ids,[8,i])}
    function erase(ids,m$0,m){return mk_expr(ids,[5,m$0,m])}
    function before(ids,c){return mk_expr(ids,[6,c])}
    function after(ids,c){return mk_expr(ids,[7,c])}
    function rename(ids,x)
     {var _it_=x[2];
      if(typeof _it_ !== "number")
       switch(_it_[0])
        {case 1:
          var l=_it_[1],_iu_=function(_iw_){return rename(ids,_iw_)};
          return mk_expr(ids,[1,caml_call2(Stdlib_list[17],_iu_,l)]);
         case 2:
          var z=_it_[3],y=_it_[2],k=_it_[1],_iv_=rename(ids,z);
          return mk_expr(ids,[2,k,rename(ids,y),_iv_]);
         case 3:
          var y$0=_it_[3],k$0=_it_[2],g=_it_[1];
          return mk_expr(ids,[3,g,k$0,rename(ids,y$0)])
         }
      return mk_expr(ids,x[2])}
    function equal$1(l1,l2)
     {var l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {var _ia_=l1$0[1];
          switch(_ia_[0])
           {case 0:
             if(l2$0)
              {var _ib_=l2$0[1],_ic_=l1$0[2],_id_=_ia_[2],_ie_=_ia_[1];
               if(0 === _ib_[0])
                {var
                  r2=l2$0[2],
                  e2=_ib_[2],
                  l2$1=_ib_[1],
                  _if_=_id_[1] === e2[1]?1:0;
                 if(_if_)
                  {var _ig_=equal$1(_ie_,l2$1);
                   if(_ig_){var l1$0=_ic_,l2$0=r2;continue}
                   var _ih_=_ig_}
                 else
                  var _ih_=_if_;
                 return _ih_}}
             break;
            case 1:
             if(l2$0)
              {var _ii_=l2$0[1],_ij_=l1$0[2],_ik_=_ia_[2],_il_=_ia_[1];
               if(1 === _ii_[0])
                {var
                  r2$0=l2$0[2],
                  e2$0=_ii_[2],
                  marks2=_ii_[1],
                  _im_=_ik_[1] === e2$0[1]?1:0;
                 if(_im_)
                  {var _in_=caml_equal(_il_,marks2);
                   if(_in_){var l1$0=_ij_,l2$0=r2$0;continue}
                   var _io_=_in_}
                 else
                  var _io_=_im_;
                 return _io_}}
             break;
            default:
             if(l2$0)
              {var _ip_=l2$0[1],_iq_=l1$0[2],_ir_=_ia_[1];
               if(2 === _ip_[0])
                {var
                  r2$1=l2$0[2],
                  marks2$0=_ip_[1],
                  _is_=caml_equal(_ir_,marks2$0);
                 if(_is_){var l1$0=_iq_,l2$0=r2$1;continue}
                 return _is_}}}}
        else
         if(! l2$0)return 1;
        return 0}}
    function hash$1(l,accu)
     {var l$0=l,accu$0=accu;
      for(;;)
       {if(l$0)
         {var _h9_=l$0[1];
          switch(_h9_[0])
           {case 0:
             var
              r=l$0[2],
              e=_h9_[2],
              l$1=_h9_[1],
              _h__=hash$1(l$1,accu$0),
              accu$1=hash_combine(388635598,hash_combine(e[1],_h__)),
              l$0=r,
              accu$0=accu$1;
             continue;
            case 1:
             var
              r$0=l$0[2],
              e$0=_h9_[2],
              marks=_h9_[1],
              _h$_=hash$0(marks,accu$0),
              accu$2=hash_combine(726404471,hash_combine(e$0[1],_h$_)),
              l$0=r$0,
              accu$0=accu$2;
             continue;
            default:
             var
              r$1=l$0[2],
              marks$0=_h9_[1],
              accu$3=hash_combine(471882453,hash$0(marks$0,accu$0)),
              l$0=r$1,
              accu$0=accu$3;
             continue}}
        return accu$0}}
    function tseq(kind,x,y,rem)
     {if(x)
       {var _h8_=x[1];
        if(1 === _h8_[0] && typeof _h8_[2][2] === "number" && ! x[2])
         {var marks=_h8_[1];return [0,[1,marks,y],rem]}
        return [0,[0,x,y,kind],rem]}
      return rem}
    function print_state_rec(ch,e,y)
     {switch(e[0])
       {case 0:
         var x=e[2],l=e[1];
         caml_call2(include[123],ch,_bQ_);
         print_state_lst(ch,l,x);
         return caml_call4(include[123],ch,_bR_,pp$2,x);
        case 1:
         var _h7_=e[1];
         if(typeof e[2][2] === "number")
          return caml_call5(include[123],ch,_bS_,y[1],pp_marks,_h7_);
         var x$0=e[2];
         return caml_call7(include[123],ch,_bT_,x$0[1],pp_marks,_h7_,pp$2,x$0);
        default:
         var marks=e[1];return caml_call4(include[123],ch,_bU_,pp_marks,marks)}}
    function print_state_lst(ch,l,y)
     {if(l)
       {var rem=l[2],e=l[1];
        print_state_rec(ch,e,y);
        var
         _h6_=
          function(e)
           {caml_call2(include[123],ch,_bV_);return print_state_rec(ch,e,y)};
        return caml_call2(Stdlib_list[15],_h6_,rem)}
      return caml_call2(include[123],ch,_bW_)}
    function pp$3(ch,t){return print_state_lst(ch,[0,t,0],_bX_)}
    var dummy$0=[0,-1,dummy,0,0,-1];
    function mk(idx,cat,desc)
     {return [0,
              idx,
              cat,
              desc,
              0,
              hash$1(desc,hash_combine(idx,hash_combine(cat,0))) & 1073741823]}
    function create(cat,e){return mk(0,cat,[0,[1,empty$0,e],0])}
    function equal$2(x,y)
     {var _h2_=x[5] === y[5]?1:0;
      if(_h2_)
       {var _h3_=x[1] === y[1]?1:0;
        if(_h3_)
         {var _h4_=x[2] === y[2]?1:0;
          if(_h4_)return equal$1(x[3],y[3]);
          var _h5_=_h4_}
        else
         var _h5_=_h3_}
      else
       var _h5_=_h2_;
      return _h5_}
    function hash$2(t){return t[5]}
    var Table=caml_call1(Stdlib_hashtbl[25],[0,equal$2,hash$2]);
    function create_working_area(param){return [0,[0,0]]}
    function index_count(w){return w[1].length - 1}
    function mark_used_indices(tbl)
     {function _hX_(param)
       {if(0 === param[0])
         {var l=param[1];return caml_call1(mark_used_indices(tbl),l)}
        var marks=param[1],_hY_=marks[1];
        function _hZ_(param)
         {var
           i=param[2],
           _h0_=0 <= i?1:0,
           _h1_=_h0_?(caml_check_bound(tbl,i)[1 + i] = 1,0):_h0_;
          return _h1_}
        return caml_call2(Stdlib_list[15],_hZ_,_hY_)}
      return caml_call1(Stdlib_list[15],_hX_)}
    function free_index(tbl_ref,l)
     {var tbl=tbl_ref[1];
      caml_call4(Stdlib_array[9],tbl,0,tbl.length - 1,0);
      caml_call1(mark_used_indices(tbl),l);
      var len=tbl.length - 1,idx=0;
      for(;;)
       {if(idx !== len && caml_check_bound(tbl,idx)[1 + idx])
         {var idx$0=idx + 1 | 0,idx=idx$0;continue}
        if(idx === len)tbl_ref[1] = caml_make_vect(2 * len | 0,0);
        return idx}}
    function _bY_(param){return 2 === param[0]?0:1}
    var remove_matches=caml_call1(Stdlib_list[38],_bY_);
    function split_at_match(l$1)
     {var l=0,param=l$1;
      for(;;)
       {if(param)
         {var _hV_=param[1];
          if(2 === _hV_[0])
           {var r=param[2],_hW_=caml_call1(remove_matches,r);
            return [0,caml_call1(Stdlib_list[9],l),_hW_]}
          var param$0=param[2],l$0=[0,_hV_,l],l=l$0,param=param$0;
          continue}
        throw [0,Assert_failure,_bZ_]}}
    function remove_duplicates(prev,l,y)
     {var l$0=l;
      for(;;)
       {if(l$0)
         {var _hU_=l$0[1];
          switch(_hU_[0])
           {case 0:
             var
              r=l$0[2],
              kind=_hU_[3],
              x=_hU_[2],
              l$1=_hU_[1],
              match=remove_duplicates(prev,l$1,x),
              prev$0=match[2],
              l$2=match[1],
              match$0=remove_duplicates(prev$0,r,y),
              prev$1=match$0[2],
              r$0=match$0[1];
             return [0,tseq(kind,l$2,x,r$0),prev$1];
            case 1:
             if(typeof _hU_[2][2] === "number")
              {var r$1=l$0[2];
               if(caml_call2(Stdlib_list[34],y[1],prev)){var l$0=r$1;continue}
               var
                match$1=remove_duplicates([0,y[1],prev],r$1,y),
                prev$2=match$1[2],
                r$2=match$1[1];
               return [0,[0,_hU_,r$2],prev$2]}
             var r$3=l$0[2],x$0=_hU_[2];
             if(caml_call2(Stdlib_list[34],x$0[1],prev)){var l$0=r$3;continue}
             var
              match$2=remove_duplicates([0,x$0[1],prev],r$3,y),
              prev$3=match$2[2],
              r$4=match$2[1];
             return [0,[0,_hU_,r$4],prev$3];
            default:return [0,[0,_hU_,0],prev]}}
        return [0,0,prev]}}
    function set_idx(idx,param)
     {if(param)
       {var _hQ_=param[1];
        switch(_hQ_[0])
         {case 0:
           var
            r=param[2],
            kind=_hQ_[3],
            x=_hQ_[2],
            l=_hQ_[1],
            _hR_=set_idx(idx,r);
           return [0,[0,set_idx(idx,l),x,kind],_hR_];
          case 1:
           var r$0=param[2],x$0=_hQ_[2],marks=_hQ_[1],_hS_=set_idx(idx,r$0);
           return [0,[1,marks_set_idx(marks,idx),x$0],_hS_];
          default:
           var r$1=param[2],marks$0=_hQ_[1],_hT_=set_idx(idx,r$1);
           return [0,[2,marks_set_idx(marks$0,idx)],_hT_]}}
      return 0}
    function filter_marks(b,e,marks)
     {var _hL_=marks[2],_hM_=marks[1];
      function _hN_(param)
       {var i=param[1],_hO_=i < b?1:0,_hP_=_hO_ || (e < i?1:0);return _hP_}
      return [0,caml_call2(Stdlib_list[38],_hN_,_hM_),_hL_]}
    function delta_1$0(counter,init,c,next_cat,prev_cat,x,rem)
     {var _hI_=x[2];
      if(typeof _hI_ === "number")
       return [0,[2,init],rem];
      else
       switch(_hI_[0])
        {case 0:var s=_hI_[1];return mem(c,s)?[0,[1,init,eps_expr],rem]:rem;
         case 1:
          var l=_hI_[1];
          if(counter < 50)
           {var counter$1=counter + 1 | 0;
            return delta_2$0(counter$1,init,c,next_cat,prev_cat,l,rem)}
          return caml_trampoline_return
                  (delta_2$0,[0,init,c,next_cat,prev_cat,l,rem]);
         case 2:
          var
           z=_hI_[3],
           y=_hI_[2],
           kind=_hI_[1],
           y$0=delta_1(init,c,next_cat,prev_cat,y,0);
          if(counter < 50)
           {var counter$0=counter + 1 | 0;
            return delta_seq$0(counter$0,c,next_cat,prev_cat,kind,y$0,z,rem)}
          return caml_trampoline_return
                  (delta_seq$0,[0,c,next_cat,prev_cat,kind,y$0,z,rem]);
         case 3:
          var
           y$1=_hI_[3],
           kind$0=_hI_[2],
           rep_kind=_hI_[1],
           y$2=delta_1(init,c,next_cat,prev_cat,y$1,0),
           match=
            first
             (function(param)
               {if(2 === param[0]){var marks=param[1];return [0,marks]}
                return 0},
              y$2);
          if(match)
           var
            marks=match[1],
            marks$0=marks,
            y$3=caml_call1(remove_matches,y$2);
          else
           var marks$0=init,y$3=y$2;
          return 620821490 <= rep_kind
                  ?[0,[2,init],tseq(kind$0,y$3,x,rem)]
                  :tseq(kind$0,y$3,x,[0,[2,marks$0],rem]);
         case 4:
          var
           i=_hI_[1],
           _hJ_=init[2],
           marks$1=[0,[0,[0,i,-1],caml_call2(Stdlib_list[48],i,init[1])],_hJ_];
          return [0,[2,marks$1],rem];
         case 5:
          var e=_hI_[2],b=_hI_[1];return [0,[2,filter_marks(b,e,init)],rem];
         case 6:
          var cat=_hI_[1];return intersect(next_cat,cat)?[0,[2,init],rem]:rem;
         case 7:
          var cat$0=_hI_[1];
          return intersect(prev_cat,cat$0)?[0,[2,init],rem]:rem;
         default:
          var
           i$0=_hI_[1],
           _hK_=caml_call2(Set[4],i$0,init[2]),
           marks$2=[0,init[1],_hK_];
          return [0,[2,marks$2],rem]}}
    function delta_2$0(counter,marks,c,next_cat,prev_cat,l,rem)
     {if(l)
       {var r=l[2],y=l[1],_hH_=delta_2(marks,c,next_cat,prev_cat,r,rem);
        if(counter < 50)
         {var counter$0=counter + 1 | 0;
          return delta_1$0(counter$0,marks,c,next_cat,prev_cat,y,_hH_)}
        return caml_trampoline_return
                (delta_1$0,[0,marks,c,next_cat,prev_cat,y,_hH_])}
      return rem}
    function delta_seq$0(counter,c,next_cat,prev_cat,kind,y,z,rem)
     {var
       match=
        first
         (function(param)
           {if(2 === param[0]){var marks=param[1];return [0,marks]}return 0},
          y);
      if(match)
       {var marks=match[1];
        if(-730718166 === kind)
         {var _hF_=delta_1(marks,c,next_cat,prev_cat,z,rem);
          return tseq(kind,caml_call1(remove_matches,y),z,_hF_)}
        if(332064784 <= kind)
         {var match$0=split_at_match(y),y$0=match$0[2],y$1=match$0[1];
          return tseq
                  (kind,
                   y$1,
                   z,
                   delta_1(marks,c,next_cat,prev_cat,z,tseq(kind,y$0,z,rem)))}
        var _hG_=tseq(kind,caml_call1(remove_matches,y),z,rem);
        if(counter < 50)
         {var counter$0=counter + 1 | 0;
          return delta_1$0(counter$0,marks,c,next_cat,prev_cat,z,_hG_)}
        return caml_trampoline_return
                (delta_1$0,[0,marks,c,next_cat,prev_cat,z,_hG_])}
      return tseq(kind,y,z,rem)}
    function delta_1(init,c,next_cat,prev_cat,x,rem)
     {return caml_trampoline(delta_1$0(0,init,c,next_cat,prev_cat,x,rem))}
    function delta_2(marks,c,next_cat,prev_cat,l,rem)
     {return caml_trampoline(delta_2$0(0,marks,c,next_cat,prev_cat,l,rem))}
    function delta_seq(c,next_cat,prev_cat,kind,y,z,rem)
     {return caml_trampoline(delta_seq$0(0,c,next_cat,prev_cat,kind,y,z,rem))}
    function delta_4(c,next_cat,prev_cat,l,rem)
     {if(l)
       {var r=l[2],y$1=l[1],rem$0=delta_4(c,next_cat,prev_cat,r,rem);
        switch(y$1[0])
         {case 0:
           var
            kind=y$1[3],
            z=y$1[2],
            y=y$1[1],
            y$0=delta_4(c,next_cat,prev_cat,y,0);
           return delta_seq(c,next_cat,prev_cat,kind,y$0,z,rem$0);
          case 1:
           var e=y$1[2],marks=y$1[1];
           return delta_1(marks,c,next_cat,prev_cat,e,rem$0);
          default:return [0,y$1,rem$0]}}
      return rem}
    function delta(tbl_ref,next_cat,char$0,st)
     {var
       prev_cat=st[2],
       match=
        remove_duplicates
         (0,delta_4(char$0,next_cat,prev_cat,st[3],0),eps_expr),
       expr=match[1],
       idx=free_index(tbl_ref,expr),
       expr$0=set_idx(idx,expr);
      return mk(idx,next_cat,expr$0)}
    function red_tr(l)
     {var l$0=l;
      for(;;)
       {if(l$0)
         {var _hE_=l$0[2];
          if(_hE_)
           {var
             rem=_hE_[2],
             tr2=_hE_[1],
             st2=tr2[2],
             s2=tr2[1],
             tr1=l$0[1],
             st1=tr1[2],
             s1=tr1[1];
            if(equal$2(st1,st2))
             {var l$1=[0,[0,union(s1,s2),st1],rem],l$0=l$1;continue}
            return [0,tr1,red_tr([0,tr2,rem])]}}
        return l$0}}
    function _b0_(param,l){var x=param[2],s=param[1];return prepend(s,x,l)}
    var prepend_deriv=caml_call1(Stdlib_list[23],_b0_);
    function restrict(s,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var
           rem=param$0[2],
           match=param$0[1],
           x=match[2],
           s$0=match[1],
           s$1=inter(s,s$0);
          if(is_empty(s$1)){var param$0=rem;continue}
          return [0,[0,s$1,x],restrict(s,rem)]}
        return 0}}
    function prepend_marks_expr_lst(m,l)
     {function _hD_(param)
       {switch(param[0])
         {case 0:
           var s=param[3],e=param[2],l=param[1];
           return [0,prepend_marks_expr_lst(m,l),e,s];
          case 1:var e$0=param[2],m$0=param[1];return [1,merge(m,m$0),e$0];
          default:var m$1=param[1];return [2,merge(m,m$1)]}}
      return caml_call2(Stdlib_list[17],_hD_,l)}
    function deriv_seq(all_chars,categories,cat,kind,y,z,rem)
     {function _hu_(param)
       {var xl=param[2];
        function _hC_(param){return 2 === param[0]?1:0}
        return caml_call2(Stdlib_list[30],_hC_,xl)}
      if(caml_call2(Stdlib_list[30],_hu_,y))
       {var
         z$0=deriv_1(all_chars,categories,empty$0,cat,z,[0,[0,all_chars,0],0]),
         _hv_=
          function(param,rem)
           {var
             y=param[2],
             s=param[1],
             match=
              first
               (function(param)
                 {if(2 === param[0]){var marks=param[1];return [0,marks]}
                  return 0},
                y);
            if(match)
             {var
               marks=match[1],
               _hx_=
                function(param)
                 {var x=param[2],s=param[1];
                  return [0,s,prepend_marks_expr_lst(marks,x)]},
               z$1=caml_call1(caml_call1(Stdlib_list[17],_hx_),z$0);
              if(-730718166 === kind)
               {var _hy_=caml_call2(prepend_deriv,restrict(s,z$1),rem);
                return prepend
                        (s,tseq(kind,caml_call1(remove_matches,y),z,0),_hy_)}
              if(332064784 <= kind)
               {var
                 match$0=split_at_match(y),
                 y$0=match$0[2],
                 y$1=match$0[1],
                 _hz_=prepend(s,tseq(kind,y$0,z,0),rem),
                 _hA_=caml_call2(prepend_deriv,restrict(s,z$1),_hz_);
                return prepend(s,tseq(kind,y$1,z,0),_hA_)}
              var
               _hB_=
                prepend(s,tseq(kind,caml_call1(remove_matches,y),z,0),rem);
              return caml_call2(prepend_deriv,restrict(s,z$1),_hB_)}
            return prepend(s,tseq(kind,y,z,0),rem)};
        return caml_call3(Stdlib_list[23],_hv_,y,rem)}
      function _hw_(param,rem)
       {var xl=param[2],s=param[1];return prepend(s,tseq(kind,xl,z,0),rem)}
      return caml_call3(Stdlib_list[23],_hw_,y,rem)}
    function deriv_1$0(counter,all_chars,categories,marks,cat,x,rem$1)
     {var _ho_=x[2];
      if(typeof _ho_ === "number")
       return prepend(all_chars,[0,[2,marks],0],rem$1);
      else
       switch(_ho_[0])
        {case 0:
          var s=_ho_[1];return prepend(s,[0,[1,marks,eps_expr],0],rem$1);
         case 1:
          var l=_ho_[1];
          if(counter < 50)
           {var counter$0=counter + 1 | 0;
            return deriv_2$0(counter$0,all_chars,categories,marks,cat,l,rem$1)}
          return caml_trampoline_return
                  (deriv_2$0,[0,all_chars,categories,marks,cat,l,rem$1]);
         case 2:
          var
           z=_ho_[3],
           y=_ho_[2],
           kind=_ho_[1],
           y$0=deriv_1(all_chars,categories,marks,cat,y,[0,[0,all_chars,0],0]);
          return deriv_seq(all_chars,categories,cat,kind,y$0,z,rem$1);
         case 3:
          var
           y$1=_ho_[3],
           kind$0=_ho_[2],
           rep_kind=_ho_[1],
           y$2=
            deriv_1(all_chars,categories,marks,cat,y$1,[0,[0,all_chars,0],0]),
           _hp_=
            function(param,rem)
             {var
               z=param[2],
               s=param[1],
               match=
                first
                 (function(param)
                   {if(2 === param[0]){var marks=param[1];return [0,marks]}
                    return 0},
                  z);
              if(match)
               var
                marks$0=match[1],
                marks$1=marks$0,
                z$0=caml_call1(remove_matches,z);
              else
               var marks$1=marks,z$0=z;
              var
               _ht_=
                620821490 <= rep_kind
                 ?[0,[2,marks],tseq(kind$0,z$0,x,0)]
                 :tseq(kind$0,z$0,x,[0,[2,marks$1],0]);
              return prepend(s,_ht_,rem)};
          return caml_call3(Stdlib_list[23],_hp_,y$2,rem$1);
         case 4:
          var i=_ho_[1],_hq_=marks[2];
          return prepend
                  (all_chars,
                   [0,
                    [2,
                     [0,[0,[0,i,-1],caml_call2(Stdlib_list[48],i,marks[1])],_hq_]],
                    0],
                   rem$1);
         case 5:
          var
           e$1=_ho_[2],
           b=_ho_[1],
           _hs_=marks[2],
           e=e$1,
           rem=filter_marks(b,e$1,marks)[1],
           _hr_=0;
          for(;;)
           {if(e < b)
             return prepend(all_chars,[0,[2,[0,rem,_hs_]],_hr_],rem$1);
            var rem$0=[0,[0,e,-2],rem],e$0=e - 1 | 0,e=e$0,rem=rem$0;
            continue}
         case 6:
          var cat$0=_ho_[1];
          return prepend
                  (caml_call2(Stdlib_list[43],cat$0,categories),
                   [0,[2,marks],0],
                   rem$1);
         case 7:
          var cat$1=_ho_[1];
          return intersect(cat,cat$1)
                  ?prepend(all_chars,[0,[2,marks],0],rem$1)
                  :rem$1;
         default:return prepend(all_chars,[0,[2,marks],0],rem$1)}}
    function deriv_2$0(counter,all_chars,categories,marks,cat,l,rem)
     {if(l)
       {var r=l[2],y=l[1],_hn_=deriv_2(all_chars,categories,marks,cat,r,rem);
        if(counter < 50)
         {var counter$0=counter + 1 | 0;
          return deriv_1$0(counter$0,all_chars,categories,marks,cat,y,_hn_)}
        return caml_trampoline_return
                (deriv_1$0,[0,all_chars,categories,marks,cat,y,_hn_])}
      return rem}
    function deriv_1(all_chars,categories,marks,cat,x,rem)
     {return caml_trampoline
              (deriv_1$0(0,all_chars,categories,marks,cat,x,rem))}
    function deriv_2(all_chars,categories,marks,cat,l,rem)
     {return caml_trampoline
              (deriv_2$0(0,all_chars,categories,marks,cat,l,rem))}
    function deriv_4(all_chars,categories,cat,l,rem)
     {if(l)
       {var r=l[2],y$1=l[1],rem$0=deriv_4(all_chars,categories,cat,r,rem);
        switch(y$1[0])
         {case 0:
           var
            kind=y$1[3],
            z=y$1[2],
            y=y$1[1],
            y$0=deriv_4(all_chars,categories,cat,y,[0,[0,all_chars,0],0]);
           return deriv_seq(all_chars,categories,cat,kind,y$0,z,rem$0);
          case 1:
           var e=y$1[2],marks=y$1[1];
           return deriv_1(all_chars,categories,marks,cat,e,rem$0);
          default:return prepend(all_chars,[0,y$1,0],rem$0)}}
      return rem}
    function deriv(tbl_ref,all_chars,categories,st)
     {var
       der=deriv_4(all_chars,categories,st[2],st[3],[0,[0,all_chars,0],0]),
       _hi_=0;
      function _hj_(param,rem)
       {var
         expr=param[2],
         s=param[1],
         match=remove_duplicates(0,expr,eps_expr),
         expr$0=match[1],
         idx=free_index(tbl_ref,expr$0),
         expr$1=set_idx(idx,expr$0);
        function _hm_(param,rem)
         {var s$0=param[2],cat=param[1],s$1=inter(s,s$0);
          return is_empty(s$1)?rem:[0,[0,s$1,mk(idx,cat,expr$1)],rem]}
        return caml_call3(Stdlib_list[23],_hm_,categories,rem)}
      var l=caml_call3(Stdlib_list[23],_hj_,der,_hi_);
      function _hf_(param,_hl_)
       {var st2=_hl_[2],st1=param[2],c=caml_int_compare(st1[5],st2[5]);
        if(0 === c)
         {var c$0=caml_int_compare(st1[2],st2[2]);
          return 0 === c$0?caml_compare(st1[3],st2[3]):c$0}
        return c}
      var _hg_=red_tr(caml_call2(Stdlib_list[51],_hf_,l));
      function _hh_(param,_hk_)
       {var s2=_hk_[1],s1=param[1];return caml_compare(s1,s2)}
      return caml_call2(Stdlib_list[51],_hh_,_hg_)}
    function status(s)
     {var _ha_=s[4];
      if(_ha_){var st=_ha_[1];return st}
      var _hb_=s[3];
      if(_hb_)
       {var _hc_=_hb_[1];
        if(2 === _hc_[0])
         {var
           m=_hc_[1],
           _he_=m[1],
           _hd_=m[2],
           _g9_=-1,
           _g__=
            function(ma,param)
             {var i=param[1];return caml_call2(Stdlib[17],ma,i)},
           ma=caml_call3(Stdlib_list[22],_g__,_g9_,_he_),
           res=caml_make_vect(ma + 1 | 0,-1),
           _g$_=
            function(param)
             {var v=param[2],i=param[1];
              caml_check_bound(res,i)[1 + i] = v;
              return 0};
          caml_call2(Stdlib_list[15],_g$_,_he_);
          var st$0=[0,res,_hd_]}
        else
         var st$0=1}
      else
       var st$0=0;
      s[4] = [0,st$0];
      return st$0}
    var
     _b1_=[0,dummy$0,create,Table],
     Re_Automata=
      [0,
       pp_sem,
       pp_rep_kind,
       is_eps,
       pp$2,
       create_ids,
       cst,
       empty$1,
       alt,
       seq$0,
       eps,
       rep,
       mark,
       pmark,
       erase,
       before,
       after,
       rename,
       [0],
       [0,pp$3],
       _b1_,
       create_working_area,
       index_count,
       delta,
       deriv,
       status];
    caml_register_global(148,Re_Automata,"Re__Automata");
    function make(param){return caml_call2(Stdlib_bytes[1],257,0)}
    function flatten(cm)
     {var c=caml_create_bytes(256),color_repr=caml_create_bytes(256),v=[0,0];
      caml_bytes_set(c,0,0);
      caml_bytes_set(color_repr,0,0);
      var i=1;
      for(;;)
       {if(0 !== caml_bytes_get(cm,i))v[1]++;
        caml_bytes_set(c,i,caml_call1(Stdlib_char[1],v[1]));
        var _g7_=caml_call1(Stdlib_char[1],i);
        caml_bytes_set(color_repr,v[1],_g7_);
        var _g8_=i + 1 | 0;
        if(255 !== i){var i=_g8_;continue}
        var _g6_=v[1] + 1 | 0;
        return [0,
                c,
                caml_call3(Stdlib_bytes[7],color_repr,0,v[1] + 1 | 0),
                _g6_]}}
    function split(s,cm)
     {return iter
              (s,
               function(i,j)
                {caml_bytes_set(cm,i,1);return caml_bytes_set(cm,j + 1 | 0,1)})}
    var Re_Color_map=[0,make,flatten,split];
    caml_register_global(151,Re_Color_map,"Re__Color_map");
    function offset$0(t,i)
     {if(t[2].length - 1 <= ((2 * i | 0) + 1 | 0))throw Stdlib[8];
      var _g3_=2 * i | 0,m1=caml_check_bound(t[2],_g3_)[1 + _g3_];
      if(-1 === m1)throw Stdlib[8];
      var
       p1=caml_check_bound(t[4],m1)[1 + m1] - 1 | 0,
       _g4_=(2 * i | 0) + 1 | 0,
       _g5_=caml_check_bound(t[2],_g4_)[1 + _g4_],
       p2=caml_check_bound(t[4],_g5_)[1 + _g5_] - 1 | 0;
      return [0,p1,p2]}
    function get(t,i)
     {var match=offset$0(t,i),p2=match[2],p1=match[1];
      return caml_call3(Stdlib_string[4],t[1],p1,p2 - p1 | 0)}
    function start(subs,i){return offset$0(subs,i)[1]}
    function stop(subs,i){return offset$0(subs,i)[2]}
    function test(t,i)
     {if(t[2].length - 1 <= (2 * i | 0))return 0;
      var _g2_=2 * i | 0,idx=caml_check_bound(t[2],_g2_)[1 + _g2_];
      return -1 !== idx?1:0}
    function all_offset(t)
     {var
       res=caml_make_vect(t[5],dummy_offset),
       _gX_=((t[2].length - 1) / 2 | 0) - 1 | 0,
       _gW_=0;
      if(! (_gX_ < 0))
       {var i=_gW_;
        for(;;)
         {var _gY_=2 * i | 0,m1=caml_check_bound(t[2],_gY_)[1 + _gY_];
          if(-1 !== m1)
           {var
             p1=caml_check_bound(t[4],m1)[1 + m1],
             _gZ_=(2 * i | 0) + 1 | 0,
             _g0_=caml_check_bound(t[2],_gZ_)[1 + _gZ_],
             p2=caml_check_bound(t[4],_g0_)[1 + _g0_];
            caml_check_bound(res,i)[1 + i] = [0,p1 - 1 | 0,p2 - 1 | 0]}
          var _g1_=i + 1 | 0;
          if(_gX_ !== i){var i=_g1_;continue}
          break}}
      return res}
    function all(t)
     {var
       res=caml_make_vect(t[5],dummy_string),
       _gQ_=((t[2].length - 1) / 2 | 0) - 1 | 0,
       _gP_=0;
      if(! (_gQ_ < 0))
       {var i=_gP_;
        for(;;)
         {var _gR_=2 * i | 0,m1=caml_check_bound(t[2],_gR_)[1 + _gR_];
          if(-1 !== m1)
           {var
             p1=caml_check_bound(t[4],m1)[1 + m1],
             _gS_=(2 * i | 0) + 1 | 0,
             _gT_=caml_check_bound(t[2],_gS_)[1 + _gS_],
             p2=caml_check_bound(t[4],_gT_)[1 + _gT_],
             _gU_=caml_call3(Stdlib_string[4],t[1],p1 - 1 | 0,p2 - p1 | 0);
            caml_check_bound(res,i)[1 + i] = _gU_}
          var _gV_=i + 1 | 0;
          if(_gQ_ !== i){var i=_gV_;continue}
          break}}
      return res}
    function pp$4(fmt,t)
     {var offsets=all_offset(t),strs=all(t);
      function _gJ_(i)
       {var _gO_=caml_check_bound(offsets,i)[1 + i];
        return [0,caml_check_bound(strs,i)[1 + i],_gO_]}
      var
       _gK_=caml_call2(Stdlib_array[2],strs.length - 1,_gJ_),
       matches=caml_call1(Stdlib_array[11],_gK_);
      function pp_match(fmt,param)
       {var match=param[2],stop=match[2],start=match[1],str=param[1];
        return caml_call5(_bd_,fmt,_b2_,str,start,stop)}
      var _gL_=0;
      return sexp
              (fmt,
               cst_Group,
               function(_gM_,_gN_)
                {return pp_print_list(_gL_,pp_match,_gM_,_gN_)},
               matches)}
    function nb_groups(t){return t[5]}
    var Group=[0,get,offset$0,start,stop,all,all_offset,test,nb_groups,pp$4];
    caml_register_global(153,Group,"Re__Group");
    function iter$0(n,f,v)
     {var n$0=n,v$0=v;
      for(;;)
       {if(0 === n$0)return v$0;
        var v$1=caml_call1(f,v$0),n$1=n$0 - 1 | 0,n$0=n$1,v$0=v$1;
        continue}}
    var unknown=-2,break$0=-3;
    function print_re(ch,re){return pp$2(ch,re[1])}
    function category(re,color)
     {return -1 === color
              ?inexistant
              :color === re[6]?28:from_char(caml_bytes_get(re[4],color))}
    var dummy_next=[0],unknown_state=[0,unknown,0,dummy_next,0,_b1_[1]];
    function mk_state(ncol,desc)
     {var match=status(desc),switch$0=0;
      if(typeof match === "number" && match){var break_state=0;switch$0 = 1}
      if(! switch$0)var break_state=1;
      var
       _gF_=0,
       _gG_=break_state?dummy_next:caml_make_vect(ncol,unknown_state),
       _gH_=desc[1],
       _gI_=break_state?break$0:desc[1];
      return [0,_gI_,_gH_,_gG_,_gF_,desc]}
    function find_state(re,desc)
     {try
       {var _gD_=caml_call2(_b1_[3][7],re[8],desc);return _gD_}
      catch(_gE_)
       {_gE_ = caml_wrap_exception(_gE_);
        if(_gE_ === Stdlib[8])
         {var st=mk_state(re[5],desc);
          caml_call3(_b1_[3][5],re[8],desc,st);
          return st}
        throw _gE_}}
    function delta$0(info,cat,color,st)
     {var
       desc=delta(info[1][7],cat,color,st[5]),
       len=info[3].length - 1,
       _gB_=desc[1] === len?1:0,
       _gC_=_gB_?0 < len?1:0:_gB_;
      if(_gC_)
       {var pos=info[3];
        info[3] = caml_make_vect(2 * len | 0,0);
        caml_call5(Stdlib_array[10],pos,0,info[3],0,len)}
      return desc}
    function validate(info,s,pos,st)
     {var
       _gA_=caml_string_get(s,pos),
       color=caml_bytes_get(info[2],_gA_),
       cat=category(info[1],color),
       desc=delta$0(info,cat,color,st),
       st$0=find_state(info[1],desc);
      caml_check_bound(st[3],color)[1 + color] = st$0;
      return 0}
    function final$0(info,st,cat)
     {try
       {var _gy_=caml_call2(Stdlib_list[43],cat,st[4]);return _gy_}
      catch(_gz_)
       {_gz_ = caml_wrap_exception(_gz_);
        if(_gz_ === Stdlib[8])
         {var
           st$0=delta$0(info,cat,-1,st),
           _gx_=status(st$0),
           res=[0,st$0[1],_gx_];
          st[4] = [0,[0,cat,res],st[4]];
          return res}
        throw _gz_}}
    function find_initial_state(re,cat)
     {try
       {var _gv_=caml_call2(Stdlib_list[43],cat,re[2]);return _gv_}
      catch(_gw_)
       {_gw_ = caml_wrap_exception(_gw_);
        if(_gw_ === Stdlib[8])
         {var st=find_state(re,caml_call2(_b1_[2],cat,re[1]));
          re[2] = [0,[0,cat,st],re[2]];
          return st}
        throw _gw_}}
    function get_color(re,s,pos)
     {if(0 <= pos)
       {var slen=caml_ml_string_length(s);
        if(slen <= pos)return -1;
        if
         (pos
          ===
          (slen - 1 | 0)
          &&
          -1
          !==
          re[6]
          &&
          10
          ===
          caml_string_get(s,pos))
         return re[6];
        var _gu_=caml_string_get(s,pos);
        return caml_bytes_get(re[3],_gu_)}
      return -1}
    function scan_str(info,s,st$8,groups)
     {var pos$4=info[4],last=info[5];
      if
       (last
        ===
        caml_ml_string_length(s)
        &&
        -1
        !==
        info[1][6]
        &&
        pos$4
        <
        last
        &&
        10
        ===
        caml_string_get(s,last - 1 | 0))
       {var
         info$0=[0,info[1],info[2],info[3],info[4],last - 1 | 0],
         st$9=scan_str(info$0,s,st$8,groups);
        if(st$9[1] === -3)return st$9;
        var pos$5=last - 1 | 0;
        for(;;)
         {var _gr_=info$0[1][6],st$6=caml_check_bound(st$9[3],_gr_)[1 + _gr_];
          if(0 <= st$6[1])
           {if(groups)
             {var _gs_=st$6[1];
              caml_check_bound(info$0[3],_gs_)[1 + _gs_] = pos$5 + 1 | 0}
            return st$6}
          if(st$6[1] === -3)
           {if(groups)
             {var _gt_=st$6[2];
              caml_check_bound(info$0[3],_gt_)[1 + _gt_] = pos$5 + 1 | 0}
            return st$6}
          var
           color=info$0[1][6],
           real_c=caml_bytes_get(info$0[2],10),
           cat=category(info$0[1],color),
           desc=delta$0(info$0,cat,real_c,st$9),
           st$7=find_state(info$0[1],desc);
          caml_check_bound(st$9[3],color)[1 + color] = st$7;
          continue}}
      if(groups)
       {var pos=pos$4,st=st$8;
        a:
        for(;;)
         {if(pos < info[5])
           {var
             _gi_=caml_string_get(s,pos),
             _gj_=caml_bytes_get(info[2],_gi_),
             st$0=caml_check_bound(st[3],_gj_)[1 + _gj_],
             pos$0=pos,
             st$2=st,
             st$1=st$0;
            for(;;)
             {if(0 <= st$1[1])
               {var pos$1=pos$0 + 1 | 0;
                if(pos$1 < info[5])
                 {var
                   _gk_=caml_string_get(s,pos$1),
                   _gl_=caml_bytes_get(info[2],_gk_),
                   st$3=caml_check_bound(st$1[3],_gl_)[1 + _gl_],
                   _gm_=st$1[1];
                  caml_check_bound(info[3],_gm_)[1 + _gm_] = pos$1;
                  var pos$0=pos$1,st$2=st$1,st$1=st$3;
                  continue}
                var _gn_=st$1[1];
                caml_check_bound(info[3],_gn_)[1 + _gn_] = pos$1;
                return st$1}
              if(st$1[1] === -3)
               {var _go_=st$1[2];
                caml_check_bound(info[3],_go_)[1 + _go_] = pos$0 + 1 | 0;
                return st$1}
              validate(info,s,pos$0,st$2);
              var pos=pos$0,st=st$2;
              continue a}}
          return st}}
      var pos$2=pos$4,st$4=st$8;
      for(;;)
       {if(pos$2 < last)
         {var
           _gp_=caml_string_get(s,pos$2),
           _gq_=caml_bytes_get(info[2],_gp_),
           st$5=caml_check_bound(st$4[3],_gq_)[1 + _gq_];
          if(0 <= st$5[1])
           {var pos$3=pos$2 + 1 | 0,pos$2=pos$3,st$4=st$5;continue}
          if(st$5[1] === -3)return st$5;
          validate(info,s,pos$2,st$4);
          continue}
        return st$4}}
    function match_str(groups,partial,re,s,pos,len)
     {var slen=caml_ml_string_length(s),last=-1 === len?slen:pos + len | 0;
      if(groups)
       var
        n=index_count(re[7]) + 1 | 0,
        _gg_=10 < n?caml_make_vect(n,0):_b3_.slice(),
        _gh_=_gg_;
      else
       var _gh_=[0];
      var
       info=[0,re,re[3],_gh_,pos,last],
       initial_cat=0 === pos?33:32 | category(re,get_color(re,s,pos - 1 | 0)),
       initial_state=find_initial_state(re,initial_cat),
       st=scan_str(info,s,initial_state,groups),
       switch$0=0;
      if(st[1] !== -3 && ! partial)
       {var
         final_cat=last === slen?33:32 | category(re,get_color(re,s,last)),
         match=final$0(info,st,final_cat),
         res$0=match[2],
         idx=match[1];
        if(groups)caml_check_bound(info[3],idx)[1 + idx] = last + 1 | 0;
        var res=res$0;
        switch$0 = 1}
      if(! switch$0)var res=status(st[5]);
      if(typeof res === "number")return res?1:0;
      var pmarks=res[2],marks=res[1];
      return [0,[0,s,marks,pmarks,info[3],re[9]]]}
    function cseq(c$0,c){return seq(c$0,c)}
    function cadd(c,s){return add(c,s)}
    function trans_set(cache,cm,s)
     {var match=one_char(s);
      if(match){var i=match[1];return csingle(caml_bytes_get(cm,i))}
      var v=[0,hash_rec(s),s];
      try
       {var _gd_=caml_call2(CSetMap[27],v,cache[1]);return _gd_}
      catch(_ge_)
       {_ge_ = caml_wrap_exception(_ge_);
        if(_ge_ === Stdlib[8])
         {var
           l=
            fold_right
             (s,
              empty,
              function(param,l)
               {var j=param[2],i=param[1],_gf_=caml_bytes_get(cm,j);
                return union(cseq(caml_bytes_get(cm,i),_gf_),l)});
          cache[1] = caml_call3(CSetMap[4],v,l,cache[1]);
          return l}
        throw _ge_}}
    function view(t){return t}
    var View=[0,view];
    function pp$5(fmt,t)
     {function var$0(s,re){return sexp(fmt,s,pp$5,re)}
      function seq(s,rel)
       {var _ga_=0;
        return sexp
                (fmt,
                 s,
                 function(_gb_,_gc_)
                  {return pp_print_list(_ga_,pp$5,_gb_,_gc_)},
                 rel)}
      if(typeof t === "number")
       switch(t)
        {case 0:return caml_call2(_m_,fmt,cst_Beg_of_line);
         case 1:return caml_call2(_m_,fmt,cst_End_of_line);
         case 2:return caml_call2(_m_,fmt,cst_Beg_of_word);
         case 3:return caml_call2(_m_,fmt,cst_End_of_word);
         case 4:return caml_call2(_m_,fmt,cst_Not_bound);
         case 5:return caml_call2(_m_,fmt,cst_Beg_of_str);
         case 6:return caml_call2(_m_,fmt,cst_End_of_str);
         case 7:return caml_call2(_m_,fmt,cst_Last_end_of_line);
         case 8:return caml_call2(_m_,fmt,cst_Start);
         default:return caml_call2(_m_,fmt,cst_Stop)}
      else
       switch(t[0])
        {case 0:var s=t[1];return sexp(fmt,cst_Set,pp$0,s);
         case 1:var sq=t[1];return seq(cst_Sequence,sq);
         case 2:var alt=t[1];return seq(cst_Alternative,alt);
         case 3:
          var
           stop=t[3],
           start=t[2],
           re=t[1],
           pp=
            function(fmt,param)
             {return caml_call7(_bd_,fmt,_b4_,pp$5,re,start,optint,stop)};
          return sexp(fmt,cst_Repeat,pp,0);
         case 4:
          var re$0=t[2],sem=t[1],_f0_=[0,sem,re$0];
          return sexp
                  (fmt,
                   cst_Sem,
                   function(_f8_,_f9_){return pair(pp_sem,pp$5,_f8_,_f9_)},
                   _f0_);
         case 5:
          var re$1=t[2],k=t[1],_f1_=[0,k,re$1];
          return sexp
                  (fmt,
                   cst_Sem_greedy,
                   function(_f6_,_f7_){return pair(pp_rep_kind,pp$5,_f6_,_f7_)},
                   _f1_);
         case 6:var c=t[1];return var$0(cst_Group$0,c);
         case 7:var c$0=t[1];return var$0(cst_No_group,c$0);
         case 8:var c$1=t[1];return var$0(cst_Nest,c$1);
         case 9:var c$2=t[1];return var$0(cst_Case,c$2);
         case 10:var c$3=t[1];return var$0(cst_No_case,c$3);
         case 11:var c$4=t[1];return seq(cst_Intersection,c$4);
         case 12:var c$5=t[1];return seq(cst_Complement,c$5);
         case 13:
          var b=t[2],a=t[1],_f2_=[0,a,b];
          return sexp
                  (fmt,
                   cst_Difference,
                   function(_f4_,_f5_){return pair(pp$5,pp$5,_f4_,_f5_)},
                   _f2_);
         default:
          var r=t[2],m=t[1],_f3_=[0,m,r];
          return sexp
                  (fmt,
                   cst_Pmark,
                   function(_f__,_f$_){return pair(pp$1,pp$5,_f__,_f$_)},
                   _f3_)}}
    function is_charset(param)
     {var param$0=param;
      for(;;)
       {var switch$0=0;
        if(typeof param$0 === "number")
         switch$0 = 1;
        else
         switch(param$0[0])
          {case 0:return 1;
           case 13:
            var r=param$0[2],r$0=param$0[1],_fZ_=is_charset(r$0);
            if(_fZ_){var param$0=r;continue}
            return _fZ_;
           case 4:
           case 5:var param$1=param$0[2];break;
           case 2:
           case 11:
           case 12:
            var l=param$0[1];return caml_call2(Stdlib_list[29],is_charset,l);
           case 7:
           case 9:
           case 10:var param$1=param$0[1];break;
           default:switch$0 = 1}
        if(switch$0)return 0;
        var param$0=param$1;
        continue}}
    var
     _b5_=cseq(216,222),
     _b6_=union(cseq(192,214),_b5_),
     cupper=union(cseq(65,90),_b6_),
     clower=offset(32,cupper),
     _b7_=union(clower,cupper),
     calpha=caml_call3(Stdlib_list[23],cadd,_b8_,_b7_),
     cdigit=cseq(48,57),
     calnum=union(calpha,cdigit),
     cword=cadd(95,calnum);
    function eq_list(l1,l2)
     {var l1$0=l1,l2$0=l2;
      for(;;)
       {if(l1$0)
         {if(l2$0)
           {var
             r2=l2$0[2],
             x2=l2$0[1],
             r1=l1$0[2],
             x1=l1$0[1],
             _fY_=equal$3(x1,x2);
            if(_fY_){var l1$0=r1,l2$0=r2;continue}
            return _fY_}}
        else
         if(! l2$0)return 1;
        return 0}}
    function equal$3(x1,x2)
     {var x1$0=x1,x2$0=x2;
      for(;;)
       {var switch$0=0;
        if(typeof x1$0 === "number")
         switch(x1$0)
          {case 0:if(typeof x2$0 === "number" && ! x2$0)switch$0 = 1;break;
           case 1:
            if(typeof x2$0 === "number" && 1 === x2$0)switch$0 = 1;break;
           case 2:
            if(typeof x2$0 === "number" && 2 === x2$0)switch$0 = 1;break;
           case 3:
            if(typeof x2$0 === "number" && 3 === x2$0)switch$0 = 1;break;
           case 4:
            if(typeof x2$0 === "number" && 4 === x2$0)switch$0 = 1;break;
           case 5:
            if(typeof x2$0 === "number" && 5 === x2$0)switch$0 = 1;break;
           case 6:
            if(typeof x2$0 === "number" && 6 === x2$0)switch$0 = 1;break;
           case 7:
            if(typeof x2$0 === "number" && 7 === x2$0)switch$0 = 1;break;
           case 8:
            if(typeof x2$0 === "number" && 8 === x2$0)switch$0 = 1;break;
           default:if(typeof x2$0 === "number" && 9 <= x2$0)switch$0 = 1}
        else
         switch(x1$0[0])
          {case 0:
            if(typeof x2$0 !== "number" && 0 === x2$0[0])
             {var s2=x2$0[1],s1=x1$0[1];return caml_equal(s1,s2)}
            break;
           case 1:
            if(typeof x2$0 !== "number" && 1 === x2$0[0])
             {var l2=x2$0[1],l1=x1$0[1];return eq_list(l1,l2)}
            break;
           case 2:
            if(typeof x2$0 !== "number" && 2 === x2$0[0])
             {var l2$0=x2$0[1],l1$0=x1$0[1];return eq_list(l1$0,l2$0)}
            break;
           case 3:
            if(typeof x2$0 !== "number" && 3 === x2$0[0])
             {var
               j2=x2$0[3],
               i2=x2$0[2],
               x2$1=x2$0[1],
               j1=x1$0[3],
               i1=x1$0[2],
               x1$1=x1$0[1],
               _fR_=i1 === i2?1:0;
              if(_fR_)
               {var _fS_=caml_equal(j1,j2);
                if(_fS_){var x1$0=x1$1,x2$0=x2$1;continue}
                var _fT_=_fS_}
              else
               var _fT_=_fR_;
              return _fT_}
            break;
           case 4:
            if(typeof x2$0 !== "number" && 4 === x2$0[0])
             {var
               x2$2=x2$0[2],
               sem2=x2$0[1],
               x1$2=x1$0[2],
               sem1=x1$0[1],
               _fU_=sem1 === sem2?1:0;
              if(_fU_){var x1$0=x1$2,x2$0=x2$2;continue}
              return _fU_}
            break;
           case 5:
            if(typeof x2$0 !== "number" && 5 === x2$0[0])
             {var
               x2$3=x2$0[2],
               k2=x2$0[1],
               x1$3=x1$0[2],
               k1=x1$0[1],
               _fV_=k1 === k2?1:0;
              if(_fV_){var x1$0=x1$3,x2$0=x2$3;continue}
              return _fV_}
            break;
           case 6:if(typeof x2$0 !== "number" && 6 === x2$0[0])return 0;break;
           case 7:
            if(typeof x2$0 !== "number" && 7 === x2$0[0])
             {var x2$4=x2$0[1],x1$4=x1$0[1],x1$0=x1$4,x2$0=x2$4;continue}
            break;
           case 8:
            if(typeof x2$0 !== "number" && 8 === x2$0[0])
             {var x2$5=x2$0[1],x1$5=x1$0[1],x1$0=x1$5,x2$0=x2$5;continue}
            break;
           case 9:
            if(typeof x2$0 !== "number" && 9 === x2$0[0])
             {var x2$6=x2$0[1],x1$6=x1$0[1],x1$0=x1$6,x2$0=x2$6;continue}
            break;
           case 10:
            if(typeof x2$0 !== "number" && 10 === x2$0[0])
             {var x2$7=x2$0[1],x1$7=x1$0[1],x1$0=x1$7,x2$0=x2$7;continue}
            break;
           case 11:
            if(typeof x2$0 !== "number" && 11 === x2$0[0])
             {var l2$1=x2$0[1],l1$1=x1$0[1];return eq_list(l1$1,l2$1)}
            break;
           case 12:
            if(typeof x2$0 !== "number" && 12 === x2$0[0])
             {var l2$2=x2$0[1],l1$2=x1$0[1];return eq_list(l1$2,l2$2)}
            break;
           case 13:
            if(typeof x2$0 !== "number" && 13 === x2$0[0])
             {var
               x2$8=x2$0[2],
               x2$9=x2$0[1],
               x1$8=x1$0[2],
               x1$9=x1$0[1],
               _fW_=equal$3(x1$9,x2$9);
              if(_fW_){var x1$0=x1$8,x2$0=x2$8;continue}
              return _fW_}
            break;
           default:
            if(typeof x2$0 !== "number" && 14 === x2$0[0])
             {var
               r2=x2$0[2],
               m2=x2$0[1],
               r1=x1$0[2],
               m1=x1$0[1],
               _fX_=m1 === m2?1:0;
              if(_fX_){var x1$0=r1,x2$0=r2;continue}
              return _fX_}}
        return switch$0?1:0}}
    function sequence(l){if(l && ! l[2]){var x=l[1];return x}return [1,l]}
    function merge_sequences(param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var _fM_=param$0[1];
          if(typeof _fM_ !== "number")
           switch(_fM_[0])
            {case 1:
              var _fN_=_fM_[1];
              if(_fN_)
               {var
                 r$0=param$0[2],
                 y=_fN_[2],
                 x=_fN_[1],
                 r$1=merge_sequences(r$0);
                if(r$1)
                 {var _fO_=r$1[1],switch$0=0;
                  if(typeof _fO_ === "number" || ! (1 === _fO_[0]))
                   switch$0 = 1;
                  else
                   {var _fP_=_fO_[1];
                    if(_fP_)
                     {var r$2=r$1[2],y$0=_fP_[2],x$0=_fP_[1];
                      if(equal$3(x,x$0))
                       {var _fQ_=[0,sequence(y$0),0];
                        return [0,[1,[0,x,[0,[2,[0,sequence(y),_fQ_]],0]]],r$2]}}}}
                return [0,[1,[0,x,y]],r$1]}
              break;
             case 2:
              var
               r$3=param$0[2],
               l=_fM_[1],
               param$1=caml_call2(Stdlib[37],l,r$3),
               param$0=param$1;
              continue
             }
          var r=param$0[2];
          return [0,_fM_,merge_sequences(r)]}
        return 0}}
    function enforce_kind(ids,kind,k,cr)
     {return 332064784 === kind?332064784 === k?cr:seq$0(ids,k,cr,eps(ids)):cr}
    function translate(ids,kind,ign_group,ign_case,greedy,pos,cache,c,param)
     {var ign_group$0=ign_group,greedy$0=greedy,param$0=param;
      for(;;)
       if(typeof param$0 === "number")
        switch(param$0)
         {case 0:return [0,after(ids,9),kind];
          case 1:return [0,before(ids,9),kind];
          case 2:
           var _fD_=before(ids,3);
           return [0,seq$0(ids,332064784,after(ids,5),_fD_),kind];
          case 3:
           var _fE_=before(ids,5);
           return [0,seq$0(ids,332064784,after(ids,3),_fE_),kind];
          case 4:
           var
            _fF_=before(ids,letter),
            _fG_=[0,seq$0(ids,332064784,after(ids,letter),_fF_),0],
            _fH_=before(ids,letter);
           return [0,
                   alt
                    (ids,[0,seq$0(ids,332064784,after(ids,letter),_fH_),_fG_]),
                   kind];
          case 5:return [0,after(ids,inexistant),kind];
          case 6:return [0,before(ids,inexistant),kind];
          case 7:return [0,before(ids,17),kind];
          case 8:return [0,after(ids,search_boundary),kind];
          default:return [0,before(ids,search_boundary),kind]}
       else
        switch(param$0[0])
         {case 0:
           var s=param$0[1];return [0,cst(ids,trans_set(cache,c,s)),kind];
          case 1:
           var l=param$0[1];
           return [0,
                   trans_seq
                    (ids,kind,ign_group$0,ign_case,greedy$0,pos,cache,c,l),
                   kind];
          case 2:
           var l$0=param$0[1],merged_sequences=merge_sequences(l$0);
           if(merged_sequences && ! merged_sequences[2])
            {var
              r=merged_sequences[1],
              match=
               translate(ids,kind,ign_group$0,ign_case,greedy$0,pos,cache,c,r),
              kind$0=match[2],
              cr=match[1];
             return [0,enforce_kind(ids,kind,kind$0,cr),kind]}
           var
            _fI_=
             function(r)
              {var
                match=
                 translate
                  (ids,kind,ign_group$0,ign_case,greedy$0,pos,cache,c,r),
                kind$0=match[2],
                cr=match[1];
               return enforce_kind(ids,kind,kind$0,cr)};
           return [0,
                   alt(ids,caml_call2(Stdlib_list[17],_fI_,merged_sequences)),
                   kind];
          case 3:
           var
            j=param$0[3],
            i=param$0[2],
            r$0=param$0[1],
            match$0=
             translate(ids,kind,ign_group$0,ign_case,greedy$0,pos,cache,c,r$0),
            kind$1=match$0[2],
            cr$0=match$0[1];
           if(j)
            var
             j$0=j[1],
             f=
              620821490 <= greedy$0
               ?function(rem)
                 {var _fK_=[0,seq$0(ids,kind$1,rename(ids,cr$0),rem),0];
                  return alt(ids,[0,eps(ids),_fK_])}
               :function(rem)
                 {var _fL_=[0,eps(ids),0];
                  return alt
                          (ids,[0,seq$0(ids,kind$1,rename(ids,cr$0),rem),_fL_])},
             rem=iter$0(j$0 - i | 0,f,eps(ids));
           else
            var rem=rep(ids,greedy$0,kind$1,cr$0);
           return [0,
                   iter$0
                    (i,
                     function(rem){return seq$0(ids,kind$1,rename(ids,cr$0),rem)},
                     rem),
                   kind];
          case 4:
           var
            r$1=param$0[2],
            kind$2=param$0[1],
            match$1=
             translate
              (ids,kind$2,ign_group$0,ign_case,greedy$0,pos,cache,c,r$1),
            kind$3=match$1[2],
            cr$1=match$1[1];
           return [0,enforce_kind(ids,kind$2,kind$3,cr$1),kind$2];
          case 5:
           var
            param$1=param$0[2],
            greedy$1=param$0[1],
            greedy$0=greedy$1,
            param$0=param$1;
           continue;
          case 6:
           var r$2=param$0[1];
           if(ign_group$0){var param$0=r$2;continue}
           var p=pos[1];
           pos[1] = pos[1] + 2 | 0;
           var
            match$2=
             translate(ids,kind,ign_group$0,ign_case,greedy$0,pos,cache,c,r$2),
            kind$4=match$2[2],
            cr$2=match$2[1],
            _fJ_=seq$0(ids,332064784,cr$2,mark(ids,p + 1 | 0));
           return [0,seq$0(ids,332064784,mark(ids,p),_fJ_),kind$4];
          case 7:
           var param$2=param$0[1],ign_group$0=1,param$0=param$2;continue;
          case 8:
           var
            r$3=param$0[1],
            b=pos[1],
            match$3=
             translate(ids,kind,ign_group$0,ign_case,greedy$0,pos,cache,c,r$3),
            kind$5=match$3[2],
            cr$3=match$3[1],
            e=pos[1] - 1 | 0;
           return e < b
                   ?[0,cr$3,kind$5]
                   :[0,seq$0(ids,332064784,erase(ids,b,e),cr$3),kind$5];
          case 14:
           var
            r$4=param$0[2],
            i$0=param$0[1],
            match$4=
             translate(ids,kind,ign_group$0,ign_case,greedy$0,pos,cache,c,r$4),
            kind$6=match$4[2],
            cr$4=match$4[1];
           return [0,seq$0(ids,332064784,pmark(ids,i$0),cr$4),kind$6];
          default:throw [0,Assert_failure,_b__]}}
    function trans_seq(ids,kind,ign_group,ign_case,greedy,pos,cache,c,param)
     {if(param)
       {var _fC_=param[1];
        if(param[2])
         {var
           rem=param[2],
           match=
            translate(ids,kind,ign_group,ign_case,greedy,pos,cache,c,_fC_),
           kind$0=match[2],
           cr=match[1],
           cr$0=trans_seq(ids,kind,ign_group,ign_case,greedy,pos,cache,c,rem);
          return is_eps(cr$0)?cr:is_eps(cr)?cr$0:seq$0(ids,kind$0,cr,cr$0)}
        var
         match$0=
          translate(ids,kind,ign_group,ign_case,greedy,pos,cache,c,_fC_),
         kind$1=match$0[2],
         cr$1=match$0[1];
        return enforce_kind(ids,kind,kind$1,cr$1)}
      return eps(ids)}
    function as_set(param)
     {if(typeof param !== "number" && 0 === param[0]){var s=param[1];return s}
      throw [0,Assert_failure,_b$_]}
    function handle_case(ign_case,r)
     {var ign_case$0=ign_case,r$0=r;
      for(;;)
       if(typeof r$0 === "number")
        return r$0;
       else
        switch(r$0[0])
         {case 0:
           var s=r$0[1];
           if(ign_case$0)
            var
             _fq_=offset(-32,inter(s,clower)),
             _fr_=union(s,union(offset(32,inter(s,cupper)),_fq_));
           else
            var _fr_=s;
           return [0,_fr_];
          case 1:
           var
            l=r$0[1],
            _fs_=function(_fB_){return handle_case(ign_case$0,_fB_)};
           return [1,caml_call2(Stdlib_list[17],_fs_,l)];
          case 2:
           var
            l$0=r$0[1],
            _ft_=function(_fA_){return handle_case(ign_case$0,_fA_)},
            l$1=caml_call2(Stdlib_list[17],_ft_,l$0);
           if(is_charset([2,l$1]))
            {var _fu_=function(s,r){return union(s,as_set(r))};
             return [0,caml_call3(Stdlib_list[22],_fu_,empty,l$1)]}
           return [2,l$1];
          case 3:
           var j=r$0[3],i=r$0[2],r$1=r$0[1];
           return [3,handle_case(ign_case$0,r$1),i,j];
          case 4:
           var r$2=r$0[2],k=r$0[1],r$3=handle_case(ign_case$0,r$2);
           return is_charset(r$3)?r$3:[4,k,r$3];
          case 5:
           var r$4=r$0[2],k$0=r$0[1],r$5=handle_case(ign_case$0,r$4);
           return is_charset(r$5)?r$5:[5,k$0,r$5];
          case 6:var r$6=r$0[1];return [6,handle_case(ign_case$0,r$6)];
          case 7:
           var r$7=r$0[1],r$8=handle_case(ign_case$0,r$7);
           return is_charset(r$8)?r$8:[7,r$8];
          case 8:
           var r$9=r$0[1],r$10=handle_case(ign_case$0,r$9);
           return is_charset(r$10)?r$10:[8,r$10];
          case 9:var r$11=r$0[1],ign_case$0=0,r$0=r$11;continue;
          case 10:var r$12=r$0[1],ign_case$0=1,r$0=r$12;continue;
          case 11:
           var
            l$2=r$0[1],
            _fv_=function(r){return handle_case(ign_case$0,r)},
            l$3=caml_call2(Stdlib_list[17],_fv_,l$2),
            _fw_=function(s,r){return inter(s,as_set(r))};
           return [0,caml_call3(Stdlib_list[22],_fw_,cany,l$3)];
          case 12:
           var
            l$4=r$0[1],
            _fx_=function(r){return handle_case(ign_case$0,r)},
            l$5=caml_call2(Stdlib_list[17],_fx_,l$4),
            _fy_=function(s,r){return union(s,as_set(r))};
           return [0,diff(cany,caml_call3(Stdlib_list[22],_fy_,empty,l$5))];
          case 13:
           var
            r$13=r$0[2],
            r$14=r$0[1],
            _fz_=diff(cany,as_set(handle_case(ign_case$0,r$13)));
           return [0,inter(as_set(handle_case(ign_case$0,r$14)),_fz_)];
          default:
           var r$15=r$0[2],i$0=r$0[1];
           return [14,i$0,handle_case(ign_case$0,r$15)]}}
    function anchored(param)
     {var param$0=param;
      for(;;)
       {var switch$0=0;
        if(typeof param$0 === "number")
         switch(param$0){case 5:case 8:return 1}
        else
         switch(param$0[0])
          {case 1:
            var l=param$0[1];return caml_call2(Stdlib_list[30],anchored,l);
           case 2:
            var l$0=param$0[1];
            return caml_call2(Stdlib_list[29],anchored,l$0);
           case 3:
            var i=param$0[2],r=param$0[1],_fp_=0 < i?1:0;
            if(_fp_){var param$0=r;continue}
            return _fp_;
           case 4:
           case 5:
           case 14:var param$1=param$0[2];switch$0 = 1;break;
           case 0:
           case 11:
           case 12:
           case 13:break;
           default:var param$1=param$0[1];switch$0 = 1}
        if(switch$0){var param$0=param$1;continue}
        return 0}}
    function str(s)
     {var l=[0,0],_fm_=caml_ml_string_length(s) - 1 | 0;
      if(! (_fm_ < 0))
       {var i=_fm_;
        for(;;)
         {var _fn_=l[1];
          l[1] = [0,[0,csingle(caml_string_get(s,i))],_fn_];
          var _fo_=i - 1 | 0;
          if(0 !== i){var i=_fo_;continue}
          break}}
      return [1,l[1]]}
    function char$0(c){return [0,csingle(c)]}
    function alt$0(l){if(l && ! l[2]){var r=l[1];return r}return [2,l]}
    function seq$1(l){if(l && ! l[2]){var r=l[1];return r}return [1,l]}
    var empty$2=alt$0(0),epsilon=seq$1(0);
    function repn(r,i,j)
     {if(i < 0)caml_call1(Stdlib[1],cst_Re_repn);
      var switch$0=0;
      if(j)
       {var j$0=j[1];
        if(j$0 < i){caml_call1(Stdlib[1],cst_Re_repn$0);switch$0 = 1}}
      return [3,r,i,j]}
    function rep$0(r){return repn(r,0,0)}
    function rep1(r){return repn(r,1,0)}
    function opt(r){return repn(r,0,_ca_)}
    var bol=0,eol=1,bow=2,eow=3;
    function word(r){return seq$1([0,bow,[0,r,[0,eow,0]]])}
    var not_boundary=4,bos=5,eos=6;
    function whole_string(r){return seq$1([0,bos,[0,r,[0,eos,0]]])}
    var leol=7,start$0=8,stop$0=9;
    function longest(r){return [4,-730718166,r]}
    function shortest(r){return [4,-1034406550,r]}
    function first$0(r){return [4,332064784,r]}
    function greedy(r){return [5,-904640576,r]}
    function non_greedy(r){return [5,620821490,r]}
    function group(r){return [6,r]}
    function no_group(r){return [7,r]}
    function nest(r){return [8,r]}
    function mark$0(r){var i=gen(0);return [0,i,[14,i,r]]}
    function set(str)
     {var s=[0,empty],_fj_=caml_ml_string_length(str) - 1 | 0,_fi_=0;
      if(! (_fj_ < 0))
       {var i=_fi_;
        for(;;)
         {var _fk_=s[1];
          s[1] = union(csingle(caml_string_get(str,i)),_fk_);
          var _fl_=i + 1 | 0;
          if(_fj_ !== i){var i=_fl_;continue}
          break}}
      return [0,s[1]]}
    function rg(c$0,c){return [0,cseq(c$0,c)]}
    function inter$0(l)
     {var r=[11,l];return is_charset(r)?r:caml_call1(Stdlib[1],cst_Re_inter)}
    function compl(l)
     {var r=[12,l];return is_charset(r)?r:caml_call1(Stdlib[1],cst_Re_compl)}
    function diff$0(r$0,r)
     {var r$1=[13,r$0,r];
      return is_charset(r$1)?r$1:caml_call1(Stdlib[1],cst_Re_diff)}
    var
     any=[0,cany],
     notnl=[0,diff(cany,csingle(10))],
     _cb_=[0,rg(248,255),0],
     _cc_=[0,rg(223,246),_cb_],
     _cd_=[0,char$0(181),_cc_],
     lower=alt$0([0,rg(97,122),_cd_]),
     _ce_=[0,rg(216,222),0],
     _cf_=[0,rg(192,214),_ce_],
     upper=alt$0([0,rg(65,90),_cf_]),
     _cg_=[0,char$0(186),0],
     alpha=alt$0([0,lower,[0,upper,[0,char$0(170),_cg_]]]),
     digit=rg(48,57),
     alnum=alt$0([0,alpha,[0,digit,0]]),
     wordc=alt$0([0,alnum,[0,char$0(95),0]]),
     ascii=rg(0,127),
     blank=set(cst$0),
     _ch_=[0,rg(127,159),0],
     cntrl=alt$0([0,rg(0,31),_ch_]),
     _ci_=[0,rg(160,255),0],
     graph=alt$0([0,rg(33,126),_ci_]),
     _cj_=[0,rg(160,255),0],
     print=alt$0([0,rg(32,126),_cj_]),
     _ck_=[0,char$0(247),0],
     _cl_=[0,char$0(215),_ck_],
     _cm_=[0,rg(187,191),_cl_],
     _cn_=[0,rg(182,185),_cm_],
     _co_=[0,rg(171,180),_cn_],
     _cp_=[0,rg(160,169),_co_],
     _cq_=[0,rg(123,126),_cp_],
     _cr_=[0,rg(91,96),_cq_],
     _cs_=[0,rg(58,64),_cr_],
     punct=alt$0([0,rg(33,47),_cs_]),
     _ct_=[0,rg(9,13),0],
     space=alt$0([0,char$0(32),_ct_]),
     _cu_=[0,rg(65,70),0],
     xdigit=alt$0([0,digit,[0,rg(97,102),_cu_]]);
    function case$0(r){return [9,r]}
    function no_case(r){return [10,r]}
    function compile(r$0)
     {var
       _fh_=
        anchored(r$0)?[6,r$0]:seq$1([0,shortest(rep$0(any)),[0,[6,r$0],0]]),
       regexp=handle_case(0,_fh_),
       c=make(0),
       lnl=[0,0];
      function colorize(regexp)
       {var regexp$0=regexp;
        for(;;)
         {if(typeof regexp$0 === "number")
           switch(regexp$0)
            {case 7:lnl[1] = 1;return 0;
             case 0:
             case 1:return split(csingle(10),c);
             case 2:
             case 3:
             case 4:return split(cword,c);
             default:return 0}
          else
           switch(regexp$0[0])
            {case 0:var s=regexp$0[1];return split(s,c);
             case 1:
              var l=regexp$0[1];return caml_call2(Stdlib_list[15],colorize,l);
             case 2:
              var l$0=regexp$0[1];
              return caml_call2(Stdlib_list[15],colorize,l$0);
             case 3:var regexp$1=regexp$0[1],regexp$0=regexp$1;continue;
             case 4:
             case 5:
             case 14:var regexp$2=regexp$0[2];break;
             case 6:
             case 7:
             case 8:var regexp$2=regexp$0[1];break;
             default:throw [0,Assert_failure,_b9_]}
          var regexp$0=regexp$2;
          continue}}
      colorize(regexp);
      var
       _fg_=lnl[1],
       match=flatten(c),
       ncolor=match[3],
       color_repr=match[2],
       colors=match[1],
       lnl$0=_fg_?ncolor:-1,
       ncolor$0=_fg_?ncolor + 1 | 0:ncolor,
       ids=create_ids(0),
       pos=[0,0],
       match$0=
        translate
         (ids,332064784,0,0,-904640576,pos,[0,CSetMap[1]],colors,regexp),
       kind=match$0[2],
       r=match$0[1],
       initial=enforce_kind(ids,332064784,kind,r),
       group_count=pos[1] / 2 | 0,
       _ff_=caml_call1(_b1_[3][1],97);
      return [0,
              initial,
              0,
              colors,
              color_repr,
              ncolor$0,
              lnl$0,
              create_working_area(0),
              _ff_,
              group_count]}
    function exec_internal(name,opt,_fb_,partial,groups,re,s)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if(_fb_)var sth$0=_fb_[1],len=sth$0;else var len=-1;
      var _fc_=pos < 0?1:0;
      if(_fc_)
       var _fd_=_fc_;
      else
       var
        _fe_=len < -1?1:0,
        _fd_=_fe_ || (caml_ml_string_length(s) < (pos + len | 0)?1:0);
      if(_fd_)caml_call1(Stdlib[1],name);
      return match_str(groups,partial,re,s,pos,len)}
    function exec(pos,len,re,s)
     {var match=exec_internal(cst_Re_exec,pos,len,0,1,re,s);
      if(typeof match === "number")throw Stdlib[8];
      var substr=match[1];
      return substr}
    function exec_opt(pos,len,re,s)
     {var match=exec_internal(cst_Re_exec_opt,pos,len,0,1,re,s);
      if(typeof match === "number")return 0;
      var substr=match[1];
      return [0,substr]}
    function execp(pos,len,re,s)
     {var match=exec_internal(cst_Re_execp,pos,len,0,0,re,s);
      return typeof match === "number"?0:1}
    function exec_partial(pos,len,re,s)
     {var match=exec_internal(cst_Re_exec_partial,pos,len,1,0,re,s);
      return typeof match === "number"?match?939392865:-1062743954:782112175}
    function marked(g,p){return caml_call2(Set[3],p,g[3])}
    function mark_set(g){return g[3]}
    function all_seq(opt,len,re,s)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if(pos < 0)caml_call1(Stdlib[1],cst_Re_all);
      if(len)
       {var
         l=len[1],
         _e9_=l < 0?1:0,
         _e__=_e9_ || (caml_ml_string_length(s) < (pos + l | 0)?1:0);
        if(_e__)caml_call1(Stdlib[1],cst_Re_all$0);
        var limit=pos + l | 0}
      else
       var limit=caml_ml_string_length(s);
      function aux(pos,param)
       {if(limit <= pos)return 0;
        var match=match_str(1,0,re,s,pos,limit - pos | 0);
        if(typeof match === "number")return 0;
        var
         substr=match[1],
         match$0=caml_call2(Group[2],substr,0),
         p2=match$0[2],
         p1=match$0[1],
         pos$0=p1 === p2?p2 + 1 | 0:p2;
        return [0,substr,function(_fa_){return aux(pos$0,_fa_)}]}
      return function(_e$_){return aux(pos,_e$_)}}
    function matches_seq(pos,len,re,s)
     {var _e7_=all_seq(pos,len,re,s);
      function _e8_(sub){return caml_call2(Group[1],sub,0)}
      return caml_call2(Stdlib_seq[3],_e8_,_e7_)}
    function split_full_seq(opt,len,re,s)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if(pos < 0)caml_call1(Stdlib[1],cst_Re_split);
      if(len)
       {var
         l=len[1],
         _eW_=l < 0?1:0,
         _eX_=_eW_ || (caml_ml_string_length(s) < (pos + l | 0)?1:0);
        if(_eX_)caml_call1(Stdlib[1],cst_Re_split$0);
        var limit=pos + l | 0}
      else
       var limit=caml_ml_string_length(s);
      function aux(state,i,pos$0,param)
       {if(typeof state === "number")
         {if(limit <= pos$0)
           {if(i < limit)
             {var
               sub=caml_call3(Stdlib_string[4],s,i,limit - i | 0),
               _e0_=i + 1 | 0;
              return [0,
                      [0,936573133,sub],
                      function(_e6_){return aux(state,_e0_,pos$0,_e6_)}]}
            return 0}
          var match=match_str(1,0,re,s,pos$0,limit - pos$0 | 0);
          if(typeof match === "number")
           {if(match)return 0;
            if(i < limit)
             {var text=caml_call3(Stdlib_string[4],s,i,limit - i | 0);
              return [0,
                      [0,936573133,text],
                      function(_e5_){return aux(state,limit,pos$0,_e5_)}]}
            return 0}
          var
           substr=match[1],
           match$0=caml_call2(Group[2],substr,0),
           p2=match$0[2],
           p1=match$0[1],
           pos$1=p1 === p2?p2 + 1 | 0:p2;
          if(pos < p1)
           {var
             text$0=caml_call3(Stdlib_string[4],s,i,p1 - i | 0),
             state$0=[0,73271853,[0,-363573681,substr]];
            return [0,
                    [0,936573133,text$0],
                    function(_e4_){return aux(state$0,p2,pos$1,_e4_)}]}
          return [0,
                  [0,-363573681,substr],
                  function(_e3_){return aux(state,p2,pos$1,_e3_)}]}
        var x=state[2],_e1_=814535476;
        return [0,x,function(_e2_){return aux(_e1_,i,pos$0,_e2_)}]}
      var _eY_=814535476;
      return function(_eZ_){return aux(_eY_,pos,pos,_eZ_)}}
    function split_seq(pos,len,re,s)
     {var seq=split_full_seq(pos,len,re,s);
      function filter(seq,param)
       {var seq$0=seq;
        for(;;)
         {var match=caml_call1(seq$0,0);
          if(match)
           {var _eU_=match[1];
            if(936573133 <= _eU_[1])
             {var tl=match[2],s=_eU_[2];
              return [0,s,function(_eV_){return filter(tl,_eV_)}]}
            var seq$1=match[2],seq$0=seq$1;
            continue}
          return 0}}
      return function(_eT_){return filter(seq,_eT_)}}
    function list_of_seq(s)
     {var _eQ_=0;
      function _eR_(l,x){return [0,x,l]}
      var _eS_=caml_call3(Stdlib_seq[7],_eR_,_eQ_,s);
      return caml_call1(Stdlib_list[9],_eS_)}
    function all$0(pos,len,re,s){return list_of_seq(all_seq(pos,len,re,s))}
    function matches(pos,len,re,s)
     {return list_of_seq(matches_seq(pos,len,re,s))}
    function split_full(pos,len,re,s)
     {return list_of_seq(split_full_seq(pos,len,re,s))}
    function split$0(pos,len,re,s)
     {return list_of_seq(split_seq(pos,len,re,s))}
    function gen_of_seq(s)
     {var r=[0,s];
      return function(param)
       {var match=caml_call1(r[1],0);
        if(match){var tl=match[2],x=match[1];r[1] = tl;return [0,x]}
        return 0}}
    function split_gen(pos,len,re,s)
     {return gen_of_seq(split_seq(pos,len,re,s))}
    function split_full_gen(pos,len,re,s)
     {return gen_of_seq(split_full_seq(pos,len,re,s))}
    function all_gen(pos,len,re,s){return gen_of_seq(all_seq(pos,len,re,s))}
    function matches_gen(pos,len,re,s)
     {return gen_of_seq(matches_seq(pos,len,re,s))}
    function replace(opt,len,_eM_,re,f,s)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if(_eM_)var sth$0=_eM_[1],all=sth$0;else var all=1;
      if(pos < 0)caml_call1(Stdlib[1],cst_Re_replace);
      if(len)
       {var
         l=len[1],
         _eN_=l < 0?1:0,
         _eO_=_eN_ || (caml_ml_string_length(s) < (pos + l | 0)?1:0);
        if(_eO_)caml_call1(Stdlib[1],cst_Re_replace$0);
        var limit=pos + l | 0}
      else
       var limit=caml_ml_string_length(s);
      var buf=caml_call1(Stdlib_buffer[1],caml_ml_string_length(s)),pos$0=pos;
      for(;;)
       {if(pos$0 < limit)
         {var match=match_str(1,0,re,s,pos$0,limit - pos$0 | 0);
          if(typeof match === "number")
           {if(! match)
             caml_call4(Stdlib_buffer[16],buf,s,pos$0,limit - pos$0 | 0)}
          else
           {var
             substr=match[1],
             match$0=caml_call2(Group[2],substr,0),
             p2=match$0[2],
             p1=match$0[1];
            caml_call4(Stdlib_buffer[16],buf,s,pos$0,p1 - pos$0 | 0);
            var replacing=caml_call1(f,substr);
            caml_call2(Stdlib_buffer[14],buf,replacing);
            if(all)
             {if(p1 === p2)
               {if(p2 < limit)
                 {var _eP_=caml_string_get(s,p2);
                  caml_call2(Stdlib_buffer[10],buf,_eP_)}
                var pos$1=p2 + 1 | 0}
              else
               var pos$1=p2;
              var pos$0=pos$1;
              continue}
            caml_call4(Stdlib_buffer[16],buf,s,p2,limit - p2 | 0)}}
        return caml_call1(Stdlib_buffer[2],buf)}}
    function replace_string(pos,len,all,re,by,s)
     {return replace(pos,len,all,re,function(param){return by},s)}
    function witness(t)
     {function witness(param)
       {var param$0=param;
        for(;;)
         {if(typeof param$0 === "number")
           return cst$1;
          else
           switch(param$0[0])
            {case 0:
              var
               c=param$0[1],
               _eG_=pick(c),
               _eH_=caml_call1(Stdlib_char[1],_eG_);
              return caml_call2(Stdlib_string[1],1,_eH_);
             case 1:
              var xs=param$0[1],_eI_=caml_call2(Stdlib_list[17],witness,xs);
              return caml_call2(Stdlib_string[7],cst$2,_eI_);
             case 2:
              var _eJ_=param$0[1];
              if(_eJ_){var param$1=_eJ_[1],param$0=param$1;continue}
              throw [0,Assert_failure,_cv_];
             case 3:
              var
               from=param$0[2],
               r=param$0[1],
               w=witness(r),
               b=
                caml_call1
                 (Stdlib_buffer[1],
                  runtime.caml_mul(caml_ml_string_length(w),from)),
               _eK_=1;
              if(! (from < 1))
               {var i=_eK_;
                for(;;)
                 {caml_call2(Stdlib_buffer[14],b,w);
                  var _eL_=i + 1 | 0;
                  if(from !== i){var i=_eL_;continue}
                  break}}
              return caml_call1(Stdlib_buffer[2],b);
             case 10:var param$3=param$0[1],param$0=param$3;continue;
             case 4:
             case 5:
             case 14:var param$2=param$0[2];break;
             case 11:
             case 12:
             case 13:throw [0,Assert_failure,_cw_];
             default:var param$2=param$0[1]}
          var param$0=param$2;
          continue}}
      return witness(handle_case(0,t))}
    var
     get$0=Group[1],
     get_ofs=Group[2],
     get_all=Group[5],
     get_all_ofs=Group[6],
     test$0=Group[7],
     Seq=[0,all_seq,matches_seq,split_seq,split_full_seq],
     Mark=[0,marked,Set,mark_set,equal$0,compare$1],
     include$0=
      [0,
       Group,
       compile,
       exec,
       exec_opt,
       execp,
       exec_partial,
       Mark,
       Seq,
       all$0,
       all_gen,
       all_seq,
       matches,
       matches_gen,
       matches_seq,
       split$0,
       split_gen,
       split_seq,
       split_full,
       split_full_gen,
       split_full_seq,
       replace,
       replace_string,
       str,
       char$0,
       alt$0,
       seq$1,
       empty$2,
       epsilon,
       rep$0,
       rep1,
       repn,
       opt,
       bol,
       eol,
       bow,
       eow,
       bos,
       eos,
       leol,
       start$0,
       stop$0,
       word,
       not_boundary,
       whole_string,
       longest,
       shortest,
       first$0,
       greedy,
       non_greedy,
       group,
       no_group,
       nest,
       mark$0,
       set,
       rg,
       inter$0,
       diff$0,
       compl,
       any,
       notnl,
       alnum,
       wordc,
       alpha,
       ascii,
       blank,
       cntrl,
       digit,
       graph,
       lower,
       print,
       punct,
       space,
       upper,
       xdigit,
       case$0,
       no_case,
       pp$5,
       print_re,
       print_re,
       View,
       witness,
       get$0,
       get_ofs,
       get_all,
       get_all_ofs,
       test$0,
       marked,
       mark_set];
    caml_register_global(155,include$0,"Re__Core");
    var
     Parse_error=[248,cst_Re_Emacs_Parse_error,caml_fresh_oo_id(0)],
     Not_supported=[248,cst_Re_Emacs_Not_supported,caml_fresh_oo_id(0)];
    function re(opt$0,s)
     {if(opt$0)var sth=opt$0[1],case$0=sth;else var case$0=1;
      var i=[0,0],l=caml_ml_string_length(s);
      function eos$0(param){return i[1] === l?1:0}
      function test2(c$0,c)
       {var _eD_=(i[1] + 1 | 0) < l?1:0;
        if(_eD_)
         var
          _eE_=caml_string_get(s,i[1]) === c$0?1:0,
          _eF_=_eE_?caml_string_get(s,i[1] + 1 | 0) === c?1:0:_eE_;
        else
         var _eF_=_eD_;
        return _eF_}
      function accept(c)
       {var
         _eB_=1 - eos$0(0),
         _eC_=_eB_?caml_string_get(s,i[1]) === c?1:0:_eB_;
        if(_eC_)i[1]++;
        return _eC_}
      function accept2(c$0,c)
       {var r=test2(c$0,c);if(r)i[1] = i[1] + 2 | 0;return r}
      function get(param){var r=caml_string_get(s,i[1]);i[1]++;return r}
      function regexp(param)
       {var left=branch(0),left$0=left;
        for(;;)
         {if(accept2(92,124))
           {var left$1=alt$0([0,left$0,[0,branch(0),0]]),left$0=left$1;
            continue}
          return left$0}}
      function branch(param)
       {var left=0;
        for(;;)
         {if(! eos$0(0) && ! test2(92,124) && ! test2(92,41))
           {if(accept(46))
             var r=notnl;
            else
             if(accept(94))
              var r=bol;
             else
              if(accept(36))
               var r=eol;
              else
               if(accept(91))
                var r=accept(94)?compl(bracket(0)):alt$0(bracket(0));
               else
                if(accept(92))
                 if(accept(40))
                  {var r$0=regexp(0);
                   if(1 - accept2(92,41))throw Parse_error;
                   var r=[6,r$0]}
                 else
                  if(accept(96))
                   var r=bos;
                  else
                   if(accept(39))
                    var r=eos;
                   else
                    if(accept(61))
                     var r=start$0;
                    else
                     if(accept(98))
                      var r=alt$0([0,bow,[0,eow,0]]);
                     else
                      if(accept(66))
                       var r=not_boundary;
                      else
                       if(accept(60))
                        var r=bow;
                       else
                        if(accept(62))
                         var r=eow;
                        else
                         if(accept(119))
                          var r=alt$0([0,alnum,[0,char$0(95),0]]);
                         else
                          if(accept(87))
                           var r=compl([0,alnum,[0,char$0(95),0]]);
                          else
                           {if(eos$0(0))throw Parse_error;
                            var c=get(0),switch$0=0;
                            if(63 <= c)
                             {if(91 <= c)
                               {if(! (95 <= c))switch$0 = 1}
                              else
                               if(! (64 <= c))switch$0 = 1}
                            else
                             if(48 <= c)
                              {if(! (58 <= c))throw Not_supported}
                             else
                              if(36 <= c)
                               switch(c - 36 | 0)
                                {case 0:case 6:case 7:case 10:switch$0 = 1;break}
                            if(! switch$0)throw Parse_error;
                            var r=char$0(c)}
                else
                 {if(eos$0(0))throw Parse_error;
                  var c$0=get(0),switch$1=0;
                  if(44 <= c$0)
                   {if(63 === c$0)switch$1 = 1}
                  else
                   if(42 <= c$0)switch$1 = 1;
                  if(switch$1)throw Parse_error;
                  var r=char$0(c$0)}
            var
             _eA_=accept(42)?rep$0(r):accept(43)?rep1(r):accept(63)?opt(r):r,
             left$0=[0,_eA_,left],
             left=left$0;
            continue}
          return seq$1(caml_call1(Stdlib_list[9],left))}}
      function bracket(s)
       {var s$0=s;
        for(;;)
         {if(0 !== s$0 && accept(93))return s$0;
          var c=char$1(0);
          if(accept(45))
           {if(accept(93))
             {var _ez_=[0,char$0(45),s$0];return [0,char$0(c),_ez_]}
            var c$0=char$1(0),s$1=[0,rg(c,c$0),s$0],s$0=s$1;
            continue}
          var s$2=[0,char$0(c),s$0],s$0=s$2;
          continue}}
      function char$1(param){if(eos$0(0))throw Parse_error;return get(0)}
      var r=regexp(0);
      if(1 - eos$0(0))throw Parse_error;
      return case$0?r:[10,r]}
    function compile_pat(opt,s)
     {if(opt)var sth=opt[1],case$0=sth;else var case$0=1;
      return compile(re([0,case$0],s))}
    var Re_Emacs=[0,Parse_error,Not_supported,re,compile,compile_pat];
    caml_register_global(156,Re_Emacs,"Re__Emacs");
    function compile_regexp(s,c)
     {var
       re$0=re([0,1 - c],s),
       _ew_=[246,function(_ey_){return compile(re$0)}];
      return [0,
              re$0,
              [246,
               function(_ex_){return compile(seq$1([0,start$0,[0,re$0,0]]))}],
              _ew_]}
    var state=[0,0];
    function string_match(re,s,p)
     {try
       {var
         _er_=re[2],
         _es_=caml_obj_tag(_er_),
         _et_=
          250 === _es_
           ?_er_[1]
           :246 === _es_?caml_call1(CamlinternalLazy[2],_er_):_er_;
        state[1] = [0,exec([0,p],0,_et_,s)];
        var _eu_=1;
        return _eu_}
      catch(_ev_)
       {_ev_ = caml_wrap_exception(_ev_);
        if(_ev_ === Stdlib[8]){state[1] = 0;return 0}
        throw _ev_}}
    function string_partial_match(re,s,p)
     {var
       _eo_=re[2],
       _ep_=caml_obj_tag(_eo_),
       _eq_=
        250 === _ep_
         ?_eo_[1]
         :246 === _ep_?caml_call1(CamlinternalLazy[2],_eo_):_eo_,
       match=exec_partial([0,p],0,_eq_,s);
      return 782112175 === match?string_match(re,s,p):939392865 <= match?1:0}
    function search_forward(re,s,p)
     {try
       {var
         _ej_=re[3],
         _ek_=caml_obj_tag(_ej_),
         _el_=
          250 === _ek_
           ?_ej_[1]
           :246 === _ek_?caml_call1(CamlinternalLazy[2],_ej_):_ej_,
         res=exec([0,p],0,_el_,s);
        state[1] = [0,res];
        var _em_=caml_call2(Group[2],res,0)[1];
        return _em_}
      catch(_en_)
       {_en_ = caml_wrap_exception(_en_);
        if(_en_ === Stdlib[8]){state[1] = 0;throw Stdlib[8]}
        throw _en_}}
    function search_backward(re,s,p)
     {var p$0=p;
      for(;;)
       try
        {var
          _ef_=re[2],
          _eg_=caml_obj_tag(_ef_),
          _eh_=
           250 === _eg_
            ?_ef_[1]
            :246 === _eg_?caml_call1(CamlinternalLazy[2],_ef_):_ef_,
          res=exec([0,p$0],0,_eh_,s);
         state[1] = [0,res];
         return p$0}
       catch(_ei_)
        {_ei_ = caml_wrap_exception(_ei_);
         if(_ei_ === Stdlib[8])
          {state[1] = 0;
           if(0 === p$0)throw Stdlib[8];
           var p$1=p$0 - 1 | 0,p$0=p$1;
           continue}
         throw _ei_}}
    function valid_group(n)
     {var _eb_=0 <= n?1:0;
      if(_eb_)
       {var _ec_=n < 10?1:0;
        if(_ec_)
         {var _ed_=state[1];
          if(_ed_){var m=_ed_[1];return n < caml_call1(Group[8],m)?1:0}
          var _ee_=0}
        else
         var _ee_=_ec_}
      else
       var _ee_=_eb_;
      return _ee_}
    function offset_group(i)
     {var _ea_=state[1];
      if(_ea_){var m=_ea_[1];return caml_call2(Group[2],m,i)}
      throw Stdlib[8]}
    function group_len(i)
     {try
       {var match=offset_group(i),e=match[2],b=match[1],_d__=e - b | 0;
        return _d__}
      catch(_d$_)
       {_d$_ = caml_wrap_exception(_d$_);
        if(_d$_ === Stdlib[8])return 0;
        throw _d$_}}
    function replace$0(orig,repl,p,res,q,len)
     {var p$0=p,q$0=q;
      for(;;)
       {var _d7_=p$0 < len?1:0;
        if(_d7_)
         {var c=caml_string_get(repl,p$0);
          if(92 === c)
           {var c$0=caml_string_get(repl,p$0 + 1 | 0);
            if(58 <= c$0)
             {if(92 === c$0)
               {caml_bytes_set(res,q$0,92);
                var q$1=q$0 + 1 | 0,p$1=p$0 + 2 | 0,p$0=p$1,q$0=q$1;
                continue}}
            else
             if(48 <= c$0)
              {try
                {var
                  match=offset_group(c$0 - 48 | 0),
                  e=match[2],
                  b=match[1],
                  d$0=e - b | 0;
                 if(0 < d$0)caml_call5(Stdlib_string[6],orig,b,res,q$0,d$0);
                 var d=d$0}
               catch(_d9_)
                {_d9_ = caml_wrap_exception(_d9_);
                 if(_d9_ !== Stdlib[8])throw _d9_;
                 var d=0,_d8_=_d9_}
               var q$3=q$0 + d | 0,p$3=p$0 + 2 | 0,p$0=p$3,q$0=q$3;
               continue}
            caml_bytes_set(res,q$0,92);
            caml_bytes_set(res,q$0 + 1 | 0,c$0);
            var q$2=q$0 + 2 | 0,p$2=p$0 + 2 | 0,p$0=p$2,q$0=q$2;
            continue}
          caml_bytes_set(res,q$0,c);
          var q$4=q$0 + 1 | 0,p$4=p$0 + 1 | 0,p$0=p$4,q$0=q$4;
          continue}
        return _d7_}}
    function replacement_text(repl,orig)
     {var len=caml_ml_string_length(repl),p=0,q=0;
      for(;;)
       {if(p < len)
         {if(92 === caml_string_get(repl,p))
           {var p$0=p + 1 | 0;
            if(p$0 === len)
             caml_call1(Stdlib[2],cst_Str_replace_illegal_backsl);
            var c=caml_string_get(repl,p$0),switch$0=0;
            if(58 <= c)
             if(92 === c)var q$0=q + 1 | 0;else switch$0 = 1;
            else
             if(48 <= c)
              var q$0=q + group_len(c - 48 | 0) | 0;
             else
              switch$0 = 1;
            if(switch$0)var q$0=q + 2 | 0;
            var p$1=p$0 + 1 | 0,p=p$1,q=q$0;
            continue}
          var q$1=q + 1 | 0,p$2=p + 1 | 0,p=p$2,q=q$1;
          continue}
        var res=caml_create_bytes(q);
        replace$0(orig,repl,0,res,0,caml_ml_string_length(repl));
        return caml_call1(Stdlib_bytes[42],res)}}
    function quote$0(s)
     {var
       len=caml_ml_string_length(s),
       buf=caml_call1(Stdlib_buffer[1],2 * len | 0),
       _d3_=len - 1 | 0,
       _d2_=0;
      if(! (_d3_ < 0))
       {var i=_d2_;
        for(;;)
         {var c=caml_string_get(s,i),_d4_=c - 63 | 0,switch$0=0;
          if(31 < _d4_ >>> 0)
           {var _d5_=_d4_ + 27 | 0;
            if(! (10 < _d5_ >>> 0))
             switch(_d5_){case 0:case 6:case 7:case 10:switch$0 = 1;break}}
          else
           if(26 < (_d4_ - 1 | 0) >>> 0)switch$0 = 1;
          if(switch$0)
           {caml_call2(Stdlib_buffer[10],buf,92);
            caml_call2(Stdlib_buffer[10],buf,c)}
          else
           caml_call2(Stdlib_buffer[10],buf,c);
          var _d6_=i + 1 | 0;
          if(_d3_ !== i){var i=_d6_;continue}
          break}}
      return caml_call1(Stdlib_buffer[2],buf)}
    function string_before(s,n){return caml_call3(Stdlib_string[4],s,0,n)}
    function string_after(s,n)
     {return caml_call3(Stdlib_string[4],s,n,caml_ml_string_length(s) - n | 0)}
    function first_chars(s,n){return caml_call3(Stdlib_string[4],s,0,n)}
    function last_chars(s,n)
     {return caml_call3(Stdlib_string[4],s,caml_ml_string_length(s) - n | 0,n)}
    function regexp(e){return compile_regexp(e,0)}
    function regexp_case_fold(e){return compile_regexp(e,1)}
    function regexp_string(s){return compile_regexp(quote$0(s),0)}
    function regexp_string_case_fold(s){return compile_regexp(quote$0(s),1)}
    function group_beginning(n)
     {if(1 - valid_group(n))caml_call1(Stdlib[1],cst_Str_group_beginning);
      var pos=offset_group(n)[1];
      if(-1 === pos)throw Stdlib[8];
      return pos}
    function group_end(n)
     {if(1 - valid_group(n))caml_call1(Stdlib[1],cst_Str_group_end);
      var pos=offset_group(n)[2];
      if(-1 === pos)throw Stdlib[8];
      return pos}
    function matched_group(n,txt)
     {var match=offset_group(n),e=match[2],b=match[1];
      return caml_call3(Stdlib_string[4],txt,b,e - b | 0)}
    function replace_matched(repl,matched)
     {return replacement_text(repl,matched)}
    function match_beginning(param){return group_beginning(0)}
    function match_end(param){return group_end(0)}
    function matched_string(txt){return matched_group(0,txt)}
    function substitute_first(expr,repl_fun,text)
     {try
       {var
         pos=search_forward(expr,text,0),
         _dX_=[0,string_after(text,match_end(0)),0],
         _dY_=[0,caml_call1(repl_fun,text),_dX_],
         _dZ_=[0,string_before(text,pos),_dY_],
         _d0_=caml_call2(Stdlib_string[7],cst$3,_dZ_);
        return _d0_}
      catch(_d1_)
       {_d1_ = caml_wrap_exception(_d1_);
        if(_d1_ === Stdlib[8])return text;
        throw _d1_}}
    function global_substitute(expr,repl_fun,text)
     {function replace(accu,start,last_was_empty)
       {try
         {var startpos=last_was_empty?start + 1 | 0:start;
          if(caml_ml_string_length(text) < startpos)throw Stdlib[8];
          var
           pos=search_forward(expr,text,startpos),
           end_pos=match_end(0),
           repl_text=caml_call1(repl_fun,text),
           _dV_=
            replace
             ([0,
               repl_text,
               [0,
                caml_call3(Stdlib_string[4],text,start,pos - start | 0),
                accu]],
              end_pos,
              end_pos === pos?1:0);
          return _dV_}
        catch(_dW_)
         {_dW_ = caml_wrap_exception(_dW_);
          if(_dW_ === Stdlib[8])return [0,string_after(text,start),accu];
          throw _dW_}}
      var _dT_=replace(0,0,0),_dU_=caml_call1(Stdlib_list[9],_dT_);
      return caml_call2(Stdlib_string[7],cst$4,_dU_)}
    function global_replace(expr,repl,text)
     {return global_substitute
              (expr,function(_dS_){return replacement_text(repl,_dS_)},text)}
    function replace_first(expr,repl,text)
     {return substitute_first
              (expr,function(_dR_){return replacement_text(repl,_dR_)},text)}
    function search_forward_progress(re,s,p)
     {var pos=search_forward(re,s,p);
      if(p < match_end(0))return pos;
      if(p < caml_ml_string_length(s))return search_forward(re,s,p + 1 | 0);
      throw Stdlib[8]}
    function bounded_split(expr,text,num)
     {var start=string_match(expr,text,0)?match_end(0):0;
      function split(accu,start,n)
       {if(caml_ml_string_length(text) <= start)return accu;
        if(1 === n)return [0,string_after(text,start),accu];
        try
         {var
           pos=search_forward_progress(expr,text,start),
           _dO_=match_end(0),
           _dP_=
            split
             ([0,caml_call3(Stdlib_string[4],text,start,pos - start | 0),accu],
              _dO_,
              n - 1 | 0);
          return _dP_}
        catch(_dQ_)
         {_dQ_ = caml_wrap_exception(_dQ_);
          if(_dQ_ === Stdlib[8])return [0,string_after(text,start),accu];
          throw _dQ_}}
      var _dN_=split(0,start,num);
      return caml_call1(Stdlib_list[9],_dN_)}
    function split$1(expr,text){return bounded_split(expr,text,0)}
    function bounded_split_delim(expr,text,num)
     {function split(accu,start,n)
       {if(caml_ml_string_length(text) < start)return accu;
        if(1 === n)return [0,string_after(text,start),accu];
        try
         {var
           pos=search_forward_progress(expr,text,start),
           _dK_=match_end(0),
           _dL_=
            split
             ([0,caml_call3(Stdlib_string[4],text,start,pos - start | 0),accu],
              _dK_,
              n - 1 | 0);
          return _dL_}
        catch(_dM_)
         {_dM_ = caml_wrap_exception(_dM_);
          if(_dM_ === Stdlib[8])return [0,string_after(text,start),accu];
          throw _dM_}}
      if(runtime.caml_string_equal(text,cst$5))return 0;
      var _dJ_=split(0,0,num);
      return caml_call1(Stdlib_list[9],_dJ_)}
    function split_delim(expr,text){return bounded_split_delim(expr,text,0)}
    function bounded_full_split(expr,text,num)
     {function split(accu,start,n)
       {if(caml_ml_string_length(text) <= start)return accu;
        if(1 === n)return [0,[0,string_after(text,start)],accu];
        try
         {var
           pos=search_forward_progress(expr,text,start),
           s=matched_string(text);
          if(start < pos)
           var
            _dG_=match_end(0),
            _dH_=
             split
              ([0,
                [1,s],
                [0,
                 [0,caml_call3(Stdlib_string[4],text,start,pos - start | 0)],
                 accu]],
               _dG_,
               n - 1 | 0);
          else
           var _dH_=split([0,[1,s],accu],match_end(0),n - 1 | 0);
          return _dH_}
        catch(_dI_)
         {_dI_ = caml_wrap_exception(_dI_);
          if(_dI_ === Stdlib[8])return [0,[0,string_after(text,start)],accu];
          throw _dI_}}
      var _dF_=split(0,0,num);
      return caml_call1(Stdlib_list[9],_dF_)}
    function full_split(expr,text){return bounded_full_split(expr,text,0)}
    var
     Re_Str=
      [0,
       regexp,
       regexp_case_fold,
       quote$0,
       regexp_string,
       regexp_string_case_fold,
       string_match,
       search_forward,
       search_backward,
       string_partial_match,
       matched_string,
       match_beginning,
       match_end,
       matched_group,
       group_beginning,
       group_end,
       global_replace,
       replace_first,
       global_substitute,
       substitute_first,
       replace_matched,
       split$1,
       bounded_split,
       split_delim,
       bounded_split_delim,
       full_split,
       bounded_full_split,
       string_before,
       string_after,
       first_chars,
       last_chars];
    caml_register_global(158,Re_Str,"Re__Str");
    var Parse_error$0=[248,cst_Re_Glob_Parse_error,caml_fresh_oo_id(0)];
    function mul(l$0,l)
     {function _dC_(s)
       {function _dE_(s$0){return caml_call2(Stdlib[28],s,s$0)}
        return caml_call2(Stdlib_list[17],_dE_,l)}
      var _dD_=caml_call2(Stdlib_list[17],_dC_,l$0);
      return caml_call1(Stdlib_list[14],_dD_)}
    function explicit_period(t)
     {var _dy_=t[6];
      if(_dy_)
       {var _dz_=t[3];
        if(_dz_)var _dA_=_dz_;else var _dB_=t[4],_dA_=_dB_?t[5]:_dB_}
      else
       var _dA_=_dy_;
      return _dA_}
    function append(opt,t,piece)
     {if(opt)
       var sth=opt[1],am_at_start_of_component=sth;
      else
       var am_at_start_of_component=0;
      return [0,[0,piece,t[1]],t[2],0,am_at_start_of_component,t[5],t[6]]}
    function next(t)
     {var _dx_=t[2];
      if(_dx_)
       {var remaining=_dx_[2],piece=_dx_[1];
        return [0,[0,piece,[0,t[1],remaining,t[3],t[4],t[5],t[6]]]]}
      return 0}
    function one(explicit_slash,explicit_period)
     {var
       _dt_=0,
       _du_=explicit_period?[0,char$0(46),0]:0,
       _dv_=[0,_du_,_dt_],
       _dw_=explicit_slash?[0,char$0(47),0]:0;
      return compl(caml_call1(Stdlib_list[13],[0,_dw_,_dv_]))}
    function enclosed(enclosed)
     {if(0 === enclosed[0]){var c=enclosed[1];return char$0(c)}
      var high=enclosed[2],low=enclosed[1];
      return rg(low,high)}
    function enclosed_set(explicit_slash,explicit_period,kind,set)
     {var
       set$0=caml_call2(Stdlib_list[17],enclosed,set),
       enclosure=596216810 <= kind?alt$0(set$0):compl(set$0);
      return inter$0([0,enclosure,[0,one(explicit_slash,explicit_period),0]])}
    function exactly(state,c){return append([0,47 === c?1:0],state,char$0(c))}
    function glob(opt$0,_dh_,_dg_,_df_,s)
     {if(opt$0)var sth=opt$0[1],anchored=sth;else var anchored=0;
      if(_dh_)var sth$0=_dh_[1],pathname=sth$0;else var pathname=1;
      if(_dg_)var sth$1=_dg_[1],period=sth$1;else var period=1;
      if(_df_)var sth$2=_df_[1],expand_braces=sth$2;else var expand_braces=0;
      function to_re(s)
       {var i=[0,0],l=caml_ml_string_length(s);
        function eos(param){return i[1] === l?1:0}
        function read(c)
         {var _ds_=1 - eos(0),r=_ds_?caml_string_get(s,i[1]) === c?1:0:_ds_;
          if(r)i[1]++;
          return r}
        function char$0(param)
         {read(92);
          if(eos(0))throw Parse_error$0;
          var r=caml_string_get(s,i[1]);
          i[1]++;
          return r}
        function enclosed(param)
         {var s=0;
          for(;;)
           {if(0 !== s && read(93))return s;
            var c=char$0(0);
            if(read(45))
             {if(read(93))return [0,[0,c],[0,_cx_,s]];
              var c$0=char$0(0),s$0=[0,[1,c,c$0],s],s=s$0;
              continue}
            var s$1=[0,[0,c],s],s=s$1;
            continue}}
        var pieces=0;
        for(;;)
         {if(eos(0))
           {var
             glob=caml_call1(Stdlib_list[9],pieces),
             state=[0,0,glob,1,1,pathname,period],
             state$7=state;
            for(;;)
             {var match$0=next(state$7);
              if(match$0)
               {var
                 match$1=match$0[1],
                 state$8=match$1[2],
                 p=match$1[1],
                 explicit_slash$0=state$8[5],
                 explicit_period$1=explicit_period(state$8);
                if(typeof p === "number")
                 if(0 === p)
                  var
                   state$9=
                    append(0,state$8,one(explicit_slash$0,explicit_period$1));
                 else
                  {var
                    explicit_slash=state$8[5],
                    explicit_period$0=explicit_period(state$8);
                   if(explicit_period$0)
                    if(explicit_slash)
                     {var
                       _dl_=[0,rep$0(one(1,0)),0],
                       not_empty=seq$1([0,one(1,1),_dl_]),
                       maybe_empty=opt(not_empty),
                       enclosed_set$1=
                        function(not_empty)
                         {function enclosed_set$0(state,kind,set)
                           {var
                             _dr_=
                              [0,seq$1([0,not_empty,[0,enclosed_set(1,0,kind,set),0]]),0];
                            return append
                                    (0,state,alt$0([0,enclosed_set(1,1,kind,set),_dr_]))}
                          return enclosed_set$0},
                       enclosed_set$0=enclosed_set$1(not_empty),
                       state$0=state$8;
                      for(;;)
                       {var match=next(state$0);
                        if(match)
                         {var _dm_=match[1],_dn_=_dm_[1];
                          if(typeof _dn_ === "number")
                           {if(0 !== _dn_)
                             {var state$2=_dm_[2],state$0=state$2;continue}
                            var state$1=_dm_[2],_do_=append(0,state$1,not_empty)}
                          else
                           switch(_dn_[0])
                            {case 0:
                              var
                               state$3=_dm_[2],
                               c=_dn_[1],
                               not_empty$0=46 === c?not_empty:maybe_empty,
                               state$4=append(0,state$3,not_empty$0),
                               _do_=exactly(state$4,c);
                              break;
                             case 1:
                              var
                               state$5=_dm_[2],
                               enclosed$0=_dn_[1],
                               _do_=enclosed_set$0(state$5,596216810,enclosed$0);
                              break;
                             default:
                              var
                               state$6=_dm_[2],
                               enclosed$1=_dn_[1],
                               _do_=enclosed_set$0(state$6,-188280562,enclosed$1)}}
                        else
                         var _do_=append(0,state$0,maybe_empty);
                        var _dq_=_do_;
                        break}}
                    else
                     var
                      _dp_=[0,rep$0(one(0,0)),0],
                      _dq_=
                       append
                        (0,state$8,opt(seq$1([0,one(0,explicit_period$0),_dp_])));
                   else
                    var
                     _dq_=
                      append
                       (0,state$8,rep$0(one(explicit_slash,explicit_period$0)));
                   var state$9=_dq_}
                else
                 switch(p[0])
                  {case 0:var c$0=p[1],state$9=exactly(state$8,c$0);break;
                   case 1:
                    var
                     enclosed$2=p[1],
                     state$9=
                      append
                       (0,
                        state$8,
                        enclosed_set
                         (explicit_slash$0,explicit_period$1,596216810,enclosed$2));
                    break;
                   default:
                    var
                     enclosed$3=p[1],
                     state$9=
                      append
                       (0,
                        state$8,
                        enclosed_set
                         (explicit_slash$0,explicit_period$1,-188280562,enclosed$3))}
                var state$7=state$9;
                continue}
              var re=seq$1(caml_call1(Stdlib_list[9],state$7[1]));
              return anchored?whole_string(re):re}}
          if(read(42))
           var _dk_=1;
          else
           if(read(63))
            var _dk_=0;
           else
            if(read(91))
             {var switch$0=0;
              if(read(94) || read(33))
               switch$0 = 1;
              else
               var _dk_=[1,enclosed(0)];
              if(switch$0)var _dk_=[2,enclosed(0)]}
            else
             var _dk_=[0,char$0(0)];
          var pieces$0=[0,_dk_,pieces],pieces=pieces$0;
          continue}}
      if(expand_braces)
       {var
         l=caml_ml_string_length(s),
         expl=
          function(inner,s$0,i,acc,beg$0)
           {var s$1=s$0,i$0=i,acc$0=acc,beg$1=beg$0;
            for(;;)
             {if(l <= i$0)
               {if(inner)throw Parse_error$0;
                return [0,
                        mul
                         (beg$1,
                          [0,caml_call3(Stdlib_string[4],s,s$1,i$0 - s$1 | 0),0]),
                        i$0]}
              var match=caml_string_get(s,i$0);
              if(44 === match)
               {if(inner)
                 {var
                   _di_=
                    mul
                     (beg$1,
                      [0,caml_call3(Stdlib_string[4],s,s$1,i$0 - s$1 | 0),0]),
                   acc$1=caml_call2(Stdlib[37],_di_,acc$0),
                   i$1=i$0 + 1 | 0,
                   s$2=i$0 + 1 | 0,
                   s$1=s$2,
                   i$0=i$1,
                   acc$0=acc$1,
                   beg$1=beg;
                  continue}}
              else
               if(123 <= match)
                {if(! (126 <= match))
                  {var switcher=match - 123 | 0;
                   switch(switcher)
                    {case 0:
                      var
                       match$0=expl(1,i$0 + 1 | 0,i$0 + 1 | 0,0,_cy_),
                       i$3=match$0[2],
                       t=match$0[1],
                       beg$2=
                        mul
                         (beg$1,
                          mul
                           ([0,caml_call3(Stdlib_string[4],s,s$1,i$0 - s$1 | 0),0],t)),
                       s$1=i$3,
                       i$0=i$3,
                       beg$1=beg$2;
                      continue;
                     case 1:break;
                     default:
                      if(inner)
                       {var
                         _dj_=
                          mul
                           (beg$1,
                            [0,caml_call3(Stdlib_string[4],s,s$1,i$0 - s$1 | 0),0]);
                        return [0,caml_call2(Stdlib[37],_dj_,acc$0),i$0 + 1 | 0]}}}}
               else
                if(92 === match){var i$4=i$0 + 2 | 0,i$0=i$4;continue}
              var i$2=i$0 + 1 | 0,i$0=i$2;
              continue}},
         _dd_=expl(0,0,0,0,_cz_)[1],
         _de_=caml_call1(Stdlib_list[9],_dd_);
        return alt$0(caml_call2(Stdlib_list[17],to_re,_de_))}
      return to_re(s)}
    function glob$0(anchored,period,s){return glob(anchored,0,[0,period],0,s)}
    function globx(anchored,s){return glob(anchored,0,0,_cA_,s)}
    function globx$0(anchored,period,s)
     {return glob(anchored,0,[0,period],_cB_,s)}
    var Re_Glob=[0,Parse_error$0,glob,glob$0,globx,globx$0];
    caml_register_global(159,Re_Glob,"Re__Glob");
    var
     Parse_error$1=[248,cst_Re_Perl_Parse_error,caml_fresh_oo_id(0)],
     Not_supported$0=[248,cst_Re_Perl_Not_supported,caml_fresh_oo_id(0)];
    function posix_class_of_string(class$0)
     {var switch$0=runtime.caml_string_compare(class$0,cst_lower);
      if(0 <= switch$0)
       {if(! (0 < switch$0))return lower;
        if(! caml_string_notequal(class$0,cst_print))return print;
        if(! caml_string_notequal(class$0,cst_punct))return punct;
        if(! caml_string_notequal(class$0,cst_space))return space;
        if(! caml_string_notequal(class$0,cst_upper))return upper;
        if(! caml_string_notequal(class$0,cst_word))return wordc;
        if(! caml_string_notequal(class$0,cst_xdigit))return xdigit}
      else
       {if(! caml_string_notequal(class$0,cst_alnum))return alnum;
        if(! caml_string_notequal(class$0,cst_ascii))return ascii;
        if(! caml_string_notequal(class$0,cst_blank))return blank;
        if(! caml_string_notequal(class$0,cst_cntrl))return cntrl;
        if(! caml_string_notequal(class$0,cst_digit))return digit;
        if(! caml_string_notequal(class$0,cst_graph))return graph}
      var _dc_=caml_call2(Stdlib[28],cst_Invalid_pcre_class,class$0);
      return caml_call1(Stdlib[1],_dc_)}
    function re$0(opt$0,s)
     {if(opt$0)var sth=opt$0[1],opts=sth;else var opts=0;
      var
       ungreedy=caml_call2(Stdlib_list[34],-243745063,opts),
       dotall=caml_call2(Stdlib_list[34],-424303016,opts),
       dollar_endonly=caml_call2(Stdlib_list[34],-712595228,opts),
       multiline=caml_call2(Stdlib_list[34],1071952589,opts),
       i=[0,0],
       l=caml_ml_string_length(s);
      function eos$0(param){return i[1] === l?1:0}
      function test(c)
       {var
         _da_=1 - eos$0(0),
         _db_=_da_?caml_string_get(s,i[1]) === c?1:0:_da_;
        return _db_}
      function accept(c){var r=test(c);if(r)i[1]++;return r}
      function accept_s(s$0)
       {var len=caml_ml_string_length(s$0);
        try
         {var _c6_=len - 1 | 0,_c5_=0;
          if(! (_c6_ < 0))
           {var j=_c5_;
            for(;;)
             {try
               {var _c8_=caml_string_get(s,i[1] + j | 0);
                if(caml_string_get(s$0,j) !== _c8_)throw Stdlib[3]}
              catch(_c$_){throw Stdlib[3]}
              var _c9_=j + 1 | 0;
              if(_c6_ !== j){var j=_c9_;continue}
              break}}
          i[1] = i[1] + len | 0;
          var _c7_=1;
          return _c7_}
        catch(_c__)
         {_c__ = caml_wrap_exception(_c__);
          if(_c__ === Stdlib[3])return 0;
          throw _c__}}
      function get(param){var r=caml_string_get(s,i[1]);i[1]++;return r}
      function unget(param){i[1] += -1;return 0}
      function greedy_mod(r)
       {var gr=accept(63),gr$0=ungreedy?1 - gr:gr;
        return gr$0?non_greedy(r):greedy(r)}
      function regexp(param)
       {var left=branch(0),left$0=left;
        for(;;)
         {if(accept(124))
           {var left$1=alt$0([0,left$0,[0,branch(0),0]]),left$0=left$1;
            continue}
          return left$0}}
      function branch(param)
       {var left=0;
        for(;;)
         {if(! eos$0(0) && ! test(124) && ! test(41))
           {if(accept(46))
             var r=dotall?any:notnl;
            else
             if(accept(40))
              if(accept(63))
               if(accept(58))
                {var r$0=regexp(0);
                 if(1 - accept(41))throw Parse_error$1;
                 var r=r$0}
               else
                {if(! accept(35))throw Parse_error$1;
                 for(;;)
                  {if(eos$0(0))throw Parse_error$1;
                   if(! accept(41)){i[1]++;continue}
                   var r=epsilon;
                   break}}
              else
               {var r$1=regexp(0);
                if(1 - accept(41))throw Parse_error$1;
                var r=[6,r$1]}
             else
              if(accept(94))
               var r=multiline?bol:bos;
              else
               if(accept(36))
                var r=multiline?eol:dollar_endonly?leol:eos;
               else
                if(accept(91))
                 var r=accept(94)?compl(bracket(0)):alt$0(bracket(0));
                else
                 if(accept(92))
                  {if(eos$0(0))throw Parse_error$1;
                   var c=get(0),switcher=c - 48 | 0,switch$0=0;
                   if(74 < switcher >>> 0)
                    switch$0 = 1;
                   else
                    switch(switcher)
                     {case 17:var r=bos;break;
                      case 18:var r=not_boundary;break;
                      case 20:var r=compl([0,digit,0]);break;
                      case 23:var r=start$0;break;
                      case 35:var r=compl([0,space,0]);break;
                      case 39:var r=compl([0,alnum,[0,char$0(95),0]]);break;
                      case 42:var r=leol;break;
                      case 50:var r=alt$0([0,bow,[0,eow,0]]);break;
                      case 52:var r=digit;break;
                      case 67:var r=space;break;
                      case 71:var r=alt$0([0,alnum,[0,char$0(95),0]]);break;
                      case 74:var r=eos;break;
                      case 0:
                      case 1:
                      case 2:
                      case 3:
                      case 4:
                      case 5:
                      case 6:
                      case 7:
                      case 8:
                      case 9:throw Not_supported$0;
                      case 10:
                      case 11:
                      case 12:
                      case 13:
                      case 14:
                      case 15:
                      case 16:
                      case 43:
                      case 44:
                      case 45:
                      case 46:
                      case 47:
                      case 48:switch$0 = 1;break;
                      default:throw Parse_error$1}
                   if(switch$0)var r=char$0(c)}
                 else
                  {if(eos$0(0))throw Parse_error$1;
                   var c$0=get(0),switch$1=0;
                   if(64 <= c$0)
                    {if(92 !== c$0 && 123 !== c$0)switch$1 = 1}
                   else
                    if(44 <= c$0)
                     {if(! (63 <= c$0))switch$1 = 1}
                    else
                     if(! (42 <= c$0))switch$1 = 1;
                   if(! switch$1)throw Parse_error$1;
                   var r=char$0(c$0)}
            if(accept(42))
             var _c4_=greedy_mod(rep$0(r));
            else
             if(accept(43))
              var _c4_=greedy_mod(rep1(r));
             else
              if(accept(63))
               var _c4_=greedy_mod(opt(r));
              else
               if(accept(123))
                {var match=integer(0);
                 if(match)
                  {var i$0=match[1],j=accept(44)?integer(0):[0,i$0];
                   if(1 - accept(125))throw Parse_error$1;
                   if(j){var j$0=j[1];if(j$0 < i$0)throw Parse_error$1}
                   var _c4_=greedy_mod(repn(r,i$0,j))}
                 else
                  {unget(0);var _c4_=r}}
               else
                var _c4_=r;
            var left$0=[0,_c4_,left],left=left$0;
            continue}
          return seq$1(caml_call1(Stdlib_list[9],left))}}
      function integer(param)
       {if(eos$0(0))return 0;
        var d=get(0),switcher=d - 48 | 0;
        if(9 < switcher >>> 0){unget(0);return 0}
        var i=d - 48 | 0,i$0=i;
        for(;;)
         {if(eos$0(0))return [0,i$0];
          var d$0=get(0),switcher$0=d$0 - 48 | 0;
          if(9 < switcher$0 >>> 0){unget(0);return [0,i$0]}
          var i$1=(10 * i$0 | 0) + (d$0 - 48 | 0) | 0;
          if(i$1 < i$0)throw Parse_error$1;
          var i$0=i$1;
          continue}}
      function bracket(s)
       {var s$0=s;
        for(;;)
         {if(0 !== s$0 && accept(93))return s$0;
          var match=char$1(0);
          if(748194550 <= match[1])
           {var c=match[2];
            if(accept(45))
             {if(accept(93))
               {var _c2_=[0,char$0(45),s$0];return [0,char$0(c),_c2_]}
              var match$0=char$1(0);
              if(748194550 <= match$0[1])
               {var c$0=match$0[2],s$1=[0,rg(c,c$0),s$0],s$0=s$1;continue}
              var
               st=match$0[2],
               _c3_=[0,char$0(45),[0,st,s$0]],
               s$2=[0,char$0(c),_c3_],
               s$0=s$2;
              continue}
            var s$3=[0,char$0(c),s$0],s$0=s$3;
            continue}
          var st$0=match[2],s$4=[0,st$0,s$0],s$0=s$4;
          continue}}
      function char$1(param)
       {if(eos$0(0))throw Parse_error$1;
        var c=get(0);
        if(91 === c)
         {if(accept(61))throw Not_supported$0;
          if(accept(58))
           {var compl$0=accept(94);
            try
             {var cls=caml_call2(Stdlib_list[35],accept_s,posix_class_strings)}
            catch(_c1_)
             {_c1_ = caml_wrap_exception(_c1_);
              if(_c1_ === Stdlib[8])throw Parse_error$1;
              throw _c1_}
            if(1 - accept_s(cst$6))throw Parse_error$1;
            var
             posix_class=posix_class_of_string(cls),
             re=compl$0?compl([0,posix_class,0]):posix_class;
            return [0,4150146,re]}
          if(accept(46))
           {if(eos$0(0))throw Parse_error$1;
            var c$0=get(0);
            if(1 - accept(46))throw Not_supported$0;
            if(1 - accept(93))throw Parse_error$1;
            return [0,748194550,c$0]}
          return [0,748194550,c]}
        if(92 === c)
         {if(eos$0(0))throw Parse_error$1;
          var c$1=get(0);
          if(58 <= c$1)
           {if(! (123 <= c$1))
             {var switcher=c$1 - 58 | 0;
              switch(switcher)
               {case 10:return [0,4150146,compl([0,digit,0])];
                case 25:return [0,4150146,compl([0,space,0])];
                case 29:return [0,4150146,compl([0,alnum,[0,char$0(95),0]])];
                case 40:return _cC_;
                case 42:return [0,4150146,digit];
                case 52:return _cD_;
                case 56:return _cE_;
                case 57:return [0,4150146,space];
                case 58:return _cF_;
                case 61:return [0,4150146,alt$0([0,alnum,[0,char$0(95),0]])];
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                case 33:
                case 34:
                case 35:
                case 36:
                case 37:
                case 38:break;
                default:throw Parse_error$1}}}
          else
           if(48 <= c$1)throw Not_supported$0;
          return [0,748194550,c$1]}
        return [0,748194550,c]}
      var r=regexp(0);
      if(1 - eos$0(0))throw Parse_error$1;
      var
       r$0=
        caml_call2(Stdlib_list[34],616470068,opts)
         ?seq$1([0,start$0,[0,r,0]])
         :r,
       r$1=caml_call2(Stdlib_list[34],604571177,opts)?[10,r$0]:r$0;
      return r$1}
    function compile_pat$0(opt,s)
     {if(opt)var sth=opt[1],opts=sth;else var opts=0;
      return compile(re$0([0,opts],s))}
    var Re_Perl=[0,Parse_error$1,Not_supported$0,re$0,compile,compile_pat$0];
    caml_register_global(160,Re_Perl,"Re__Perl");
    function re$1(opt,pat)
     {if(opt)var sth=opt[1],flags=sth;else var flags=0;
      function _c0_(param)
       {return 601676297 === param
                ?604571177
                :613575188 <= param?616470068:1071952589}
      var opts=caml_call2(Stdlib_list[17],_c0_,flags);
      return re$0([0,opts],pat)}
    function regexp$0(flags,pat){return compile(re$1(flags,pat))}
    function extract(rex,s)
     {var _cZ_=exec(0,0,rex,s);return caml_call1(Group[5],_cZ_)}
    function exec$0(rex,pos,s){return exec(pos,0,rex,s)}
    function get_substring(s,i){return caml_call2(Group[1],s,i)}
    function get_substring_ofs(s,i){return caml_call2(Group[2],s,i)}
    function pmatch(rex,s){return execp(0,0,rex,s)}
    function substitute(rex,subst,str)
     {var b=caml_call1(Stdlib_buffer[1],1024),pos=0;
      for(;;)
       {if(caml_ml_string_length(str) <= pos)
         return caml_call1(Stdlib_buffer[2],b);
        if(execp([0,pos],0,rex,str))
         {var
           ss=exec([0,pos],0,rex,str),
           match=caml_call2(Group[2],ss,0),
           fin=match[2],
           start=match[1],
           pat=caml_call2(Group[1],ss,0);
          caml_call4(Stdlib_buffer[16],b,str,pos,start - pos | 0);
          var _cY_=caml_call1(subst,pat);
          caml_call2(Stdlib_buffer[14],b,_cY_);
          var pos=fin;
          continue}
        caml_call4
         (Stdlib_buffer[16],b,str,pos,caml_ml_string_length(str) - pos | 0);
        var pos$0=caml_ml_string_length(str),pos=pos$0;
        continue}}
    function split$2(rex,str)
     {var accu=0,pos=0;
      for(;;)
       {if(caml_ml_string_length(str) <= pos)
         return caml_call1(Stdlib_list[9],accu);
        if(execp([0,pos],0,rex,str))
         {var
           ss=exec([0,pos],0,rex,str),
           match=caml_call2(Group[2],ss,0),
           fin=match[2],
           start=match[1],
           s=caml_call3(Stdlib_string[4],str,pos,start - pos | 0),
           accu$0=[0,s,accu],
           accu=accu$0,
           pos=fin;
          continue}
        var
         s$0=
          caml_call3
           (Stdlib_string[4],str,pos,caml_ml_string_length(str) - pos | 0),
         pos$0=caml_ml_string_length(str),
         accu$1=[0,s$0,accu],
         accu=accu$1,
         pos=pos$0;
        continue}}
    function quote$1(s)
     {var
       len=caml_ml_string_length(s),
       s$0=caml_create_bytes(len << 1),
       pos=[0,0],
       _cU_=len - 1 | 0,
       _cT_=0;
      if(! (_cU_ < 0))
       {var i=_cT_;
        for(;;)
         {var c=runtime.caml_string_unsafe_get(s,i),switch$0=0;
          if(91 <= c)
           {var _cW_=c - 93 | 0;
            if(29 < _cW_ >>> 0)
             {if(! (32 <= _cW_))switch$0 = 1}
            else
             if(1 === _cW_)switch$0 = 1}
          else
           if(47 <= c)
            {if(63 === c)switch$0 = 1}
           else
            if(36 <= c)
             switch(c - 36 | 0)
              {case 1:case 2:case 3:case 8:case 9:break;default:switch$0 = 1}
          if(switch$0)
           {caml_bytes_unsafe_set(s$0,pos[1],92);
            pos[1]++;
            caml_bytes_unsafe_set(s$0,pos[1],c);
            pos[1]++}
          else
           {caml_bytes_unsafe_set(s$0,pos[1],c);pos[1]++}
          var _cX_=i + 1 | 0;
          if(_cU_ !== i){var i=_cX_;continue}
          break}}
      var _cV_=pos[1],r=caml_create_bytes(_cV_);
      runtime.caml_blit_bytes(s$0,0,r,0,_cV_);
      return caml_call1(Stdlib_bytes[42],r)}
    function full_split$0(opt,rex,s)
     {if(opt)var sth=opt[1],max=sth;else var max=0;
      if(0 === caml_ml_string_length(s))return 0;
      if(1 === max)return [0,[0,s],0];
      var results=split_full(0,0,rex,s);
      function _cN_(param)
       {if(936573133 <= param[1]){var s=param[2];return [0,[0,s],0]}
        var
         d=param[2],
         matches=caml_call1(Group[6],d),
         delim=caml_call2(Group[1],d,0),
         l=[0,0],
         _cP_=matches.length - 1 - 1 | 0,
         _cO_=1;
        if(! (_cP_ < 1))
         {var i=_cO_;
          for(;;)
           {var
             _cQ_=l[1],
             _cR_=
              caml_equal(caml_check_bound(matches,i)[1 + i],_cG_)
               ?0
               :[2,i,caml_call2(Group[1],d,i)];
            l[1] = [0,_cR_,_cQ_];
            var _cS_=i + 1 | 0;
            if(_cP_ !== i){var i=_cS_;continue}
            break}}
        return [0,[1,delim],caml_call1(Stdlib_list[9],l[1])]}
      var matches=caml_call2(Stdlib_list[17],_cN_,results);
      return caml_call1(Stdlib_list[13],matches)}
    var
     Re_Pcre=
      [0,
       re$1,
       regexp$0,
       extract,
       exec$0,
       get_substring,
       get_substring_ofs,
       pmatch,
       substitute,
       full_split$0,
       split$2,
       quote$1];
    caml_register_global(161,Re_Pcre,"Re__Pcre");
    var
     Parse_error$2=[248,cst_Re_Posix_Parse_error,caml_fresh_oo_id(0)],
     Not_supported$1=[248,cst_Re_Posix_Not_supported,caml_fresh_oo_id(0)];
    function re$2(opt$0,s)
     {if(opt$0)var sth=opt$0[1],opts=sth;else var opts=0;
      var
       newline=caml_call2(Stdlib_list[34],-638074828,opts),
       i=[0,0],
       l=caml_ml_string_length(s);
      function eos$0(param){return i[1] === l?1:0}
      function test(c)
       {var
         _cL_=1 - eos$0(0),
         _cM_=_cL_?caml_string_get(s,i[1]) === c?1:0:_cL_;
        return _cM_}
      function accept(c){var r=test(c);if(r)i[1]++;return r}
      function get(param){var r=caml_string_get(s,i[1]);i[1]++;return r}
      function unget(param){i[1] += -1;return 0}
      function regexp(param)
       {var left=branch(0),left$0=left;
        for(;;)
         {if(accept(124))
           {var left$1=alt$0([0,left$0,[0,branch(0),0]]),left$0=left$1;
            continue}
          return left$0}}
      function branch(param)
       {var left=0;
        for(;;)
         {if(! eos$0(0) && ! test(124) && ! test(41))
           {if(accept(46))
             var r=newline?notnl:any;
            else
             if(accept(40))
              {var r$0=regexp(0);
               if(1 - accept(41))throw Parse_error$2;
               var r=[6,r$0]}
             else
              if(accept(94))
               var r=newline?bol:bos;
              else
               if(accept(36))
                var r=newline?eol:eos;
               else
                if(accept(91))
                 if(accept(94))
                  var _cJ_=char$0(10),r=diff$0(compl(bracket(0)),_cJ_);
                 else
                  var r=alt$0(bracket(0));
                else
                 if(accept(92))
                  {if(eos$0(0))throw Parse_error$2;
                   var c=get(0),switch$0=0;
                   if(91 <= c)
                    {var _cK_=c - 93 | 0;
                     if(29 < _cK_ >>> 0)
                      {if(! (32 <= _cK_))switch$0 = 1}
                     else
                      if(1 === _cK_)switch$0 = 1}
                   else
                    if(47 <= c)
                     {if(63 === c)switch$0 = 1}
                    else
                     if(36 <= c)
                      switch(c - 36 | 0)
                       {case 1:
                        case 2:
                        case 3:
                        case 8:
                        case 9:break;
                        default:switch$0 = 1}
                   if(! switch$0)throw Parse_error$2;
                   var r=char$0(c)}
                 else
                  {if(eos$0(0))throw Parse_error$2;
                   var c$0=get(0),switch$1=0;
                   if(64 <= c$0)
                    {if(92 !== c$0 && 123 !== c$0)switch$1 = 1}
                   else
                    if(44 <= c$0)
                     {if(! (63 <= c$0))switch$1 = 1}
                    else
                     if(! (42 <= c$0))switch$1 = 1;
                   if(! switch$1)throw Parse_error$2;
                   var r=char$0(c$0)}
            if(accept(42))
             var _cI_=rep$0([8,r]);
            else
             if(accept(43))
              var _cI_=rep1([8,r]);
             else
              if(accept(63))
               var _cI_=opt(r);
              else
               if(accept(123))
                {var match=integer(0);
                 if(match)
                  {var i=match[1],j=accept(44)?integer(0):[0,i];
                   if(1 - accept(125))throw Parse_error$2;
                   if(j){var j$0=j[1];if(j$0 < i)throw Parse_error$2}
                   var _cI_=repn([8,r],i,j)}
                 else
                  {unget(0);var _cI_=r}}
               else
                var _cI_=r;
            var left$0=[0,_cI_,left],left=left$0;
            continue}
          return seq$1(caml_call1(Stdlib_list[9],left))}}
      function integer(param)
       {if(eos$0(0))return 0;
        var d=get(0),switcher=d - 48 | 0;
        if(9 < switcher >>> 0){unget(0);return 0}
        var i=d - 48 | 0,i$0=i;
        for(;;)
         {if(eos$0(0))return [0,i$0];
          var d$0=get(0),switcher$0=d$0 - 48 | 0;
          if(9 < switcher$0 >>> 0){unget(0);return [0,i$0]}
          var i$1=(10 * i$0 | 0) + (d$0 - 48 | 0) | 0;
          if(i$1 < i$0)throw Parse_error$2;
          var i$0=i$1;
          continue}}
      function bracket(s)
       {var s$0=s;
        for(;;)
         {if(0 !== s$0 && accept(93))return s$0;
          var c=char$1(0);
          if(accept(45))
           {if(accept(93))
             {var _cH_=[0,char$0(45),s$0];return [0,char$0(c),_cH_]}
            var c$0=char$1(0),s$1=[0,rg(c,c$0),s$0],s$0=s$1;
            continue}
          var s$2=[0,char$0(c),s$0],s$0=s$2;
          continue}}
      function char$1(param)
       {if(eos$0(0))throw Parse_error$2;
        var c=get(0);
        if(91 === c)
         {if(accept(61))throw Not_supported$1;
          if(accept(58))throw Not_supported$1;
          if(accept(46))
           {if(eos$0(0))throw Parse_error$2;
            var c$0=get(0);
            if(1 - accept(46))throw Not_supported$1;
            if(1 - accept(93))throw Parse_error$2;
            return c$0}
          return c}
        return c}
      var r=regexp(0);
      if(1 - eos$0(0))throw Parse_error$2;
      var
       r$0=caml_call2(Stdlib_list[34],886285209,opts)?[10,r]:r,
       r$1=caml_call2(Stdlib_list[34],853495711,opts)?[7,r$0]:r$0;
      return r$1}
    function compile$0(re){return compile(longest(re))}
    function compile_pat$1(opt,s)
     {if(opt)var sth=opt[1],opts=sth;else var opts=0;
      return compile$0(re$2([0,opts],s))}
    var
     Re_Posix=
      [0,Parse_error$2,Not_supported$1,re$2,compile$0,compile_pat$1];
    caml_register_global(162,Re_Posix,"Re__Posix");
    var
     Re$0=
      [0,
       Group,
       compile,
       exec,
       exec_opt,
       execp,
       exec_partial,
       Mark,
       Seq,
       all$0,
       all_gen,
       all_seq,
       matches,
       matches_gen,
       matches_seq,
       split$0,
       split_gen,
       split_seq,
       split_full,
       split_full_gen,
       split_full_seq,
       replace,
       replace_string,
       str,
       char$0,
       alt$0,
       seq$1,
       empty$2,
       epsilon,
       rep$0,
       rep1,
       repn,
       opt,
       bol,
       eol,
       bow,
       eow,
       bos,
       eos,
       leol,
       start$0,
       stop$0,
       word,
       not_boundary,
       whole_string,
       longest,
       shortest,
       first$0,
       greedy,
       non_greedy,
       group,
       no_group,
       nest,
       mark$0,
       set,
       rg,
       inter$0,
       diff$0,
       compl,
       any,
       notnl,
       alnum,
       wordc,
       alpha,
       ascii,
       blank,
       cntrl,
       digit,
       graph,
       lower,
       print,
       punct,
       space,
       upper,
       xdigit,
       case$0,
       no_case,
       pp$5,
       print_re,
       print_re,
       View,
       witness,
       get$0,
       get_ofs,
       get_all,
       get_all_ofs,
       test$0,
       marked,
       mark_set];
    caml_register_global(163,Re$0,"Re");
    return}
  (function(){return this}()));


//# 1 "../../.js/re.posix/re_posix.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     global_data=runtime.caml_get_global_data(),
     Re_Posix=global_data.Re__Posix,
     Parse_error=Re_Posix[1],
     Not_supported=Re_Posix[2],
     re=Re_Posix[3],
     compile=Re_Posix[4],
     compile_pat=Re_Posix[5],
     Re_posix=[0,Parse_error,Not_supported,re,compile,compile_pat];
    runtime.caml_register_global(1,Re_posix,"Re_posix");
    return}
  (function(){return this}()));


//# 1 "../../.js/stringext/stringext.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_string_unsafe_get=runtime.caml_string_unsafe_get,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    var
     global_data=runtime.caml_get_global_data(),
     cst$7=caml_string_of_jsbytes(""),
     cst_Stringext_rcut_empty_separ=
      caml_string_of_jsbytes("Stringext.rcut: empty separator"),
     cst_Stringext_cut_empty_separa=
      caml_string_of_jsbytes("Stringext.cut: empty separator"),
     cst$6=caml_string_of_jsbytes(""),
     cst$5=caml_string_of_jsbytes(""),
     cst$4=caml_string_of_jsbytes(""),
     cst$3=caml_string_of_jsbytes(""),
     cst$2=caml_string_of_jsbytes(""),
     cst$1=caml_string_of_jsbytes(""),
     cst$0=caml_string_of_jsbytes(""),
     cst=caml_string_of_jsbytes(""),
     cst_Stringext_Found_int=caml_string_of_jsbytes("Stringext.Found_int"),
     cst_Stringext_Found_replace=
      caml_string_of_jsbytes("Stringext.Found_replace"),
     Stdlib_string=global_data.Stdlib__string,
     Stdlib=global_data.Stdlib,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_buffer=global_data.Stdlib__buffer;
    function string_after(s,n)
     {return caml_call3(Stdlib_string[4],s,n,caml_ml_string_length(s) - n | 0)}
    function quote(s)
     {var
       len=caml_ml_string_length(s),
       buf=caml_call1(Stdlib_buffer[1],2 * len | 0),
       _U_=len - 1 | 0,
       _T_=0;
      if(! (_U_ < 0))
       {var i=_T_;
        for(;;)
         {var c=caml_string_get(s,i),_V_=c - 63 | 0,switch$0=0;
          if(31 < _V_ >>> 0)
           {var _W_=_V_ + 27 | 0;
            if(! (10 < _W_ >>> 0))
             switch(_W_){case 0:case 6:case 7:case 10:switch$0 = 1;break}}
          else
           if(26 < (_V_ - 1 | 0) >>> 0)switch$0 = 1;
          if(switch$0)
           {caml_call2(Stdlib_buffer[10],buf,92);
            caml_call2(Stdlib_buffer[10],buf,c)}
          else
           caml_call2(Stdlib_buffer[10],buf,c);
          var _X_=i + 1 | 0;
          if(_U_ !== i){var i=_X_;continue}
          break}}
      return caml_call1(Stdlib_buffer[2],buf)}
    var of_char=caml_call1(Stdlib_string[1],1);
    function full_split(str,on)
     {if(caml_string_equal(str,cst$3))return 0;
      var sep=caml_call1(of_char,on);
      function loop(acc,offset)
       {try
         {var index=caml_call3(Stdlib_string[20],str,offset,on);
          if(index === offset)
           var _R_=loop([0,sep,acc],index - 1 | 0);
          else
           var
            token=
             caml_call3(Stdlib_string[4],str,index + 1 | 0,offset - index | 0),
            _R_=loop([0,sep,[0,token,acc]],index - 1 | 0);
          return _R_}
        catch(_S_)
         {_S_ = caml_wrap_exception(_S_);
          if(_S_ === Stdlib[8])
           return 0 <= offset
                   ?[0,caml_call3(Stdlib_string[4],str,0,offset + 1 | 0),acc]
                   :acc;
          throw _S_}}
      return loop(0,caml_ml_string_length(str) - 1 | 0)}
    function split(max,s,on)
     {if(max)
       {var max$0=max[1];
        if(caml_string_equal(s,cst))return 0;
        if(1 === max$0)return [0,s,0];
        var
         loop=
          function(offset,tokens)
           {if(tokens === (max$0 - 1 | 0))
             return [0,
                     caml_call3
                      (Stdlib_string[4],
                       s,
                       offset,
                       caml_ml_string_length(s) - offset | 0),
                     0];
            try
             {var index=caml_call3(Stdlib_string[18],s,offset,on);
              if(index === offset)
               var _P_=[0,cst$0,loop(offset + 1 | 0,tokens + 1 | 0)];
              else
               var
                token=caml_call3(Stdlib_string[4],s,offset,index - offset | 0),
                _P_=[0,token,loop(index + 1 | 0,tokens + 1 | 0)];
              return _P_}
            catch(_Q_)
             {_Q_ = caml_wrap_exception(_Q_);
              if(_Q_ === Stdlib[8])
               return [0,
                       caml_call3
                        (Stdlib_string[4],
                         s,
                         offset,
                         caml_ml_string_length(s) - offset | 0),
                       0];
              throw _Q_}};
        return loop(0,0)}
      if(caml_string_equal(s,cst$1))return 0;
      function loop$0(acc,offset)
       {try
         {var index=caml_call3(Stdlib_string[20],s,offset,on);
          if(index === offset)
           var _N_=loop$0([0,cst$2,acc],index - 1 | 0);
          else
           var
            token=
             caml_call3(Stdlib_string[4],s,index + 1 | 0,offset - index | 0),
            _N_=loop$0([0,token,acc],index - 1 | 0);
          return _N_}
        catch(_O_)
         {_O_ = caml_wrap_exception(_O_);
          if(_O_ === Stdlib[8])
           return [0,caml_call3(Stdlib_string[4],s,0,offset + 1 | 0),acc];
          throw _O_}}
      return loop$0(0,caml_ml_string_length(s) - 1 | 0)}
    function rindex_from_on(s,i,on)
     {var i$0=i;
      for(;;)
       {if(0 <= i$0)
         {var _M_=caml_string_get(s,i$0);
          if(caml_call2(Stdlib_string[22],on,_M_))return i$0;
          var i$1=i$0 - 1 | 0,i$0=i$1;
          continue}
        throw Stdlib[8]}}
    function trim_left_sub(s,pos,len,chars)
     {var final$0=pos + len | 0,last_char=pos,i=pos;
      for(;;)
       {if(i !== final$0)
         {var _L_=caml_string_get(s,i);
          if(caml_call2(Stdlib_string[22],chars,_L_))
           {var
             i$0=i + 1 | 0,
             last_char$0=i + 1 | 0,
             last_char=last_char$0,
             i=i$0;
            continue}}
        var new_len=len - (last_char - pos | 0) | 0;
        return caml_call3(Stdlib_string[4],s,last_char,new_len)}}
    function split_trim_left(str,on,trim)
     {if(caml_string_equal(str,cst$4))return 0;
      function loop(acc,offset)
       {try
         {var index=rindex_from_on(str,offset,on);
          if(index === offset)
           var _J_=loop([0,cst$5,acc],index - 1 | 0);
          else
           var
            token=trim_left_sub(str,index + 1 | 0,offset - index | 0,trim),
            _J_=loop([0,token,acc],index - 1 | 0);
          return _J_}
        catch(_K_)
         {_K_ = caml_wrap_exception(_K_);
          if(_K_ === Stdlib[8])
           return [0,trim_left_sub(str,0,offset + 1 | 0,trim),acc];
          throw _K_}}
      return loop(0,caml_ml_string_length(str) - 1 | 0)}
    var Found_int=[248,cst_Stringext_Found_int,caml_fresh_oo_id(0)];
    function first_char_ne(s,c)
     {var
       _H_=0 < caml_ml_string_length(s)?1:0,
       _I_=_H_?caml_string_get(s,0) !== c?1:0:_H_;
      return _I_}
    function trim_left(s)
     {if(first_char_ne(s,32))return s;
      var len=caml_ml_string_length(s);
      try
       {var _F_=len - 1 | 0,_E_=0;
        if(! (_F_ < 0))
         {var i=_E_;
          for(;;)
           {if(32 !== caml_string_get(s,i))throw [0,Found_int,i];
            var _G_=i + 1 | 0;
            if(_F_ !== i){var i=_G_;continue}
            break}}
        return cst$6}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Found_int)
         {var non_space=exn[2];
          return caml_call3(Stdlib_string[4],s,non_space,len - non_space | 0)}
        throw exn}}
    function find_from(opt,str,pattern)
     {if(opt)var sth=opt[1],start$0=sth;else var start$0=0;
      try
       {var
         _z_=
          caml_ml_string_length(str) - caml_ml_string_length(pattern) | 0;
        if(! (_z_ < start$0))
         {var sth$0=start$0;
          for(;;)
           {var opt$0=[0,sth$0],start=opt$0?sth$0:0;
            try
             {var _v_=caml_ml_string_length(pattern) - 1 | 0,_u_=0;
              if(! (_v_ < 0))
               {var i=_u_;
                for(;;)
                 {var _x_=caml_string_get(pattern,i);
                  if(caml_string_get(str,i + start | 0) !== _x_)
                   throw Stdlib[3];
                  var _y_=i + 1 | 0;
                  if(_v_ !== i){var i=_y_;continue}
                  break}}
              var _w_=1,_B_=_w_}
            catch(_D_){var _B_=0}
            if(_B_)throw [0,Found_int,sth$0];
            var _C_=sth$0 + 1 | 0;
            if(_z_ !== sth$0){var sth$0=_C_;continue}
            break}}
        var _A_=0;
        return _A_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Found_int){var i$0=exn[2];return [0,i$0]}
        return 0}}
    function find_min(l,f)
     {if(l)
       {var
         xs$0=l[2],
         x$1=l[1],
         fx$1=caml_call1(f,x$1),
         x=x$1,
         fx=fx$1,
         param=xs$0;
        for(;;)
         {if(param)
           {var xs=param[2],x$0=param[1],fx$0=caml_call1(f,x$0);
            if(runtime.caml_lessthan(fx$0,fx))
             {var x=x$0,fx=fx$0,param=xs;continue}
            var param=xs;
            continue}
          return [0,[0,x,fx]]}}
      return 0}
    function replace_all(str,pattern,with$0)
     {var
       plen=caml_ml_string_length(pattern),
       slen=caml_ml_string_length(str),
       buf=caml_call1(Stdlib_buffer[1],slen),
       i=0;
      for(;;)
       {var match=find_from([0,i],str,pattern);
        if(match)
         {var j=match[1];
          caml_call4(Stdlib_buffer[16],buf,str,i,j - i | 0);
          caml_call2(Stdlib_buffer[14],buf,with$0);
          var i$0=j + plen | 0,i=i$0;
          continue}
        caml_call4(Stdlib_buffer[16],buf,str,i,slen - i | 0);
        return caml_call1(Stdlib_buffer[2],buf)}}
    var Found_replace=[248,cst_Stringext_Found_replace,caml_fresh_oo_id(0)];
    function replace_all_assoc(str,tbl)
     {var
       slen=caml_ml_string_length(str),
       buf=caml_call1(Stdlib_buffer[1],slen);
      function loop(i)
       {var i$0=i;
        for(;;)
         {if(slen <= i$0)return caml_call1(Stdlib_buffer[2],buf);
          try
           {var
             found=[0,0],
             e=
              find_min
               (tbl,
                function(i,found)
                  {return function(param)
                    {var
                      with$0=param[2],
                      pattern=param[1],
                      match=find_from([0,i],str,pattern);
                     if(match)
                      {var j=match[1];
                       if(j === i)throw [0,Found_replace,j,pattern,with$0];
                       found[1] = 1;
                       return j}
                     return Stdlib[19]}}
                 (i$0,found));
            if(e)
             var
              _r_=e[1],
              j$1=_r_[2],
              match$0=_r_[1],
              with$2=match$0[2],
              pattern$1=match$0[1],
              _s_=found[1]?[0,[0,j$1,pattern$1,with$2]]:0,
              _t_=_s_;
            else
             var _t_=0;
            var r=_t_}
          catch(exn$0)
           {exn$0 = caml_wrap_exception(exn$0);
            if(exn$0[1] !== Found_replace)throw exn$0;
            var
             with$0=exn$0[4],
             pattern=exn$0[3],
             j=exn$0[2],
             r=[0,[0,j,pattern,with$0]],
             exn=exn$0}
          if(r)
           {var match=r[1],with$1=match[3],pattern$0=match[2],j$0=match[1];
            caml_call4(Stdlib_buffer[16],buf,str,i$0,j$0 - i$0 | 0);
            caml_call2(Stdlib_buffer[14],buf,with$1);
            var i$1=j$0 + caml_ml_string_length(pattern$0) | 0,i$0=i$1;
            continue}
          caml_call4(Stdlib_buffer[16],buf,str,i$0,slen - i$0 | 0);
          return caml_call1(Stdlib_buffer[2],buf)}}
      return loop(0)}
    function of_list(xs$0)
     {var
       l=caml_call1(Stdlib_list[1],xs$0),
       s=caml_create_bytes(l),
       i=0,
       param=xs$0;
      for(;;)
       {if(param)
         {var xs=param[2],x=param[1];
          caml_bytes_set(s,i,x);
          var i$0=i + 1 | 0,i=i$0,param=xs;
          continue}
        return caml_call1(Stdlib_bytes[42],s)}}
    function to_list(s)
     {var i$1=caml_ml_string_length(s) - 1 | 0,acc=0,i=i$1;
      for(;;)
       {if(-1 === i)return acc;
        var i$0=i - 1 | 0,acc$0=[0,caml_string_get(s,i),acc],acc=acc$0,i=i$0;
        continue}}
    function of_array(a)
     {var len=a.length - 1,bytes=caml_create_bytes(len),_p_=len - 1 | 0,_o_=0;
      if(! (_p_ < 0))
       {var i=_o_;
        for(;;)
         {caml_bytes_set(bytes,i,runtime.caml_check_bound(a,i)[1 + i]);
          var _q_=i + 1 | 0;
          if(_p_ !== i){var i=_q_;continue}
          break}}
      return caml_call1(Stdlib_bytes[42],bytes)}
    function to_array(s)
     {function _m_(_n_){return caml_string_get(s,_n_)}
      return caml_call2(Stdlib_array[2],caml_ml_string_length(s),_m_)}
    function cut(s,on)
     {var sep_max=caml_ml_string_length(on) - 1 | 0;
      if(0 <= sep_max)
       {var s_max=caml_ml_string_length(s) - 1 | 0;
        if(0 <= s_max)
         {var k=[0,0],i=[0,0];
          try
           {a:
            for(;;)
             {if((i[1] + sep_max | 0) <= s_max)
               {if
                 (caml_string_unsafe_get(s,i[1])
                  !==
                  caml_string_unsafe_get(on,0))
                 {i[1]++;continue}
                k[1] = 1;
                for(;;)
                 {if
                   (k[1]
                    <=
                    sep_max
                    &&
                    caml_string_unsafe_get(s,i[1] + k[1] | 0)
                    ===
                    caml_string_unsafe_get(on,k[1]))
                   {k[1]++;continue}
                  if(k[1] <= sep_max){i[1]++;continue a}
                  throw Stdlib[3]}}
              var _k_=0;
              return _k_}}
          catch(_l_)
           {_l_ = caml_wrap_exception(_l_);
            if(_l_ === Stdlib[3])
             {var
               left_end=i[1] - 1 | 0,
               right_start=(i[1] + sep_max | 0) + 1 | 0,
               _j_=
                caml_call3
                 (Stdlib_string[4],
                  s,
                  right_start,
                  (s_max - right_start | 0) + 1 | 0);
              return [0,
                      [0,caml_call3(Stdlib_string[4],s,0,left_end + 1 | 0),_j_]]}
            throw _l_}}
        return 0}
      return caml_call1(Stdlib[1],cst_Stringext_cut_empty_separa)}
    function rcut(s,on)
     {var sep_max=caml_ml_string_length(on) - 1 | 0;
      if(0 <= sep_max)
       {var s_max=caml_ml_string_length(s) - 1 | 0;
        if(0 <= s_max)
         {var k=[0,0],i=[0,s_max];
          try
           {a:
            for(;;)
             {if(sep_max <= i[1])
               {if
                 (caml_string_unsafe_get(s,i[1])
                  !==
                  caml_string_unsafe_get(on,sep_max))
                 {i[1] += -1;continue}
                var sep_start=i[1] - sep_max | 0;
                k[1] = sep_max - 1 | 0;
                for(;;)
                 {if
                   (0
                    <=
                    k[1]
                    &&
                    caml_string_unsafe_get(s,sep_start + k[1] | 0)
                    ===
                    caml_string_unsafe_get(on,k[1]))
                   {k[1] += -1;continue}
                  if(0 <= k[1]){i[1] += -1;continue a}
                  throw Stdlib[3]}}
              var _h_=0;
              return _h_}}
          catch(_i_)
           {_i_ = caml_wrap_exception(_i_);
            if(_i_ === Stdlib[3])
             {var
               left_end=(i[1] - sep_max | 0) - 1 | 0,
               right_start=i[1] + 1 | 0,
               _g_=
                caml_call3
                 (Stdlib_string[4],
                  s,
                  right_start,
                  (s_max - right_start | 0) + 1 | 0);
              return [0,
                      [0,caml_call3(Stdlib_string[4],s,0,left_end + 1 | 0),_g_]]}
            throw _i_}}
        return 0}
      return caml_call1(Stdlib[1],cst_Stringext_rcut_empty_separ)}
    function chop_prefix(s,prefix)
     {var
       prefix_l=caml_ml_string_length(prefix),
       string_l=caml_ml_string_length(s);
      if(string_l < prefix_l)return 0;
      try
       {var _b_=prefix_l - 1 | 0,_a_=0;
        if(! (_b_ < 0))
         {var i=_a_;
          for(;;)
           {var _d_=caml_string_get(prefix,i);
            if(caml_string_get(s,i) !== _d_)throw Stdlib[3];
            var _e_=i + 1 | 0;
            if(_b_ !== i){var i=_e_;continue}
            break}}
        var
         _c_=
          [0,caml_call3(Stdlib_string[4],s,prefix_l,string_l - prefix_l | 0)];
        return _c_}
      catch(_f_){return 0}}
    function drop(s,n)
     {var l=caml_ml_string_length(s);
      return l <= n?cst$7:caml_call3(Stdlib_string[4],s,n,l - n | 0)}
    function take(s,n)
     {return caml_ml_string_length(s) <= n
              ?s
              :caml_call3(Stdlib_string[4],s,0,n)}
    var
     Stringext=
      [0,
       string_after,
       quote,
       split,
       full_split,
       trim_left,
       split_trim_left,
       of_char,
       of_list,
       to_list,
       to_array,
       of_array,
       find_from,
       replace_all,
       replace_all_assoc,
       cut,
       rcut,
       chop_prefix,
       drop,
       take,
       trim_left_sub];
    runtime.caml_register_global(19,Stringext,"Stringext");
    return}
  (function(){return this}()));


//# 1 "../../.js/uri/uri.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_check_bound=runtime.caml_check_bound,
     caml_make_vect=runtime.caml_make_vect,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_obj_tag=runtime.caml_obj_tag,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    var
     global_data=runtime.caml_get_global_data(),
     cst$40=caml_string_of_jsbytes(""),
     cst$39=caml_string_of_jsbytes(""),
     cst$37=caml_string_of_jsbytes(""),
     cst$38=caml_string_of_jsbytes("/"),
     cst$36=caml_string_of_jsbytes(""),
     cst$35=caml_string_of_jsbytes(","),
     cst$33=caml_string_of_jsbytes("/"),
     cst$34=caml_string_of_jsbytes("/"),
     cst$32=caml_string_of_jsbytes(""),
     cst$30=caml_string_of_jsbytes(""),
     cst$31=caml_string_of_jsbytes(""),
     cst$29=caml_string_of_jsbytes(""),
     cst_localhost$0=caml_string_of_jsbytes("localhost"),
     cst$25=caml_string_of_jsbytes("//"),
     cst$26=caml_string_of_jsbytes("/"),
     cst$27=caml_string_of_jsbytes(":"),
     cst$28=caml_string_of_jsbytes("./"),
     cst$23=caml_string_of_jsbytes("/"),
     cst$24=caml_string_of_jsbytes("/"),
     cst$22=caml_string_of_jsbytes(","),
     cst$21=caml_string_of_jsbytes("&"),
     cst$20=caml_string_of_jsbytes("/"),
     cst$17=caml_string_of_jsbytes("/"),
     cst$18=caml_string_of_jsbytes("/"),
     cst$19=caml_string_of_jsbytes("/"),
     cst$16=caml_string_of_jsbytes("/"),
     cst$15=caml_string_of_jsbytes(""),
     cst$3=caml_string_of_jsbytes("."),
     cst$4=caml_string_of_jsbytes(".."),
     cst$5=caml_string_of_jsbytes("/"),
     cst$9=caml_string_of_jsbytes("."),
     cst$10=caml_string_of_jsbytes(".."),
     cst$11=caml_string_of_jsbytes("/"),
     cst$12=caml_string_of_jsbytes("/"),
     cst$13=caml_string_of_jsbytes("/"),
     cst$14=caml_string_of_jsbytes("/"),
     cst$6=caml_string_of_jsbytes(".."),
     e=caml_string_of_jsbytes("/"),
     cst$7=caml_string_of_jsbytes("/"),
     cst$8=caml_string_of_jsbytes("/"),
     cst_int_of_hex_char=caml_string_of_jsbytes("int_of_hex_char"),
     cst_int_of_hex_char$0=caml_string_of_jsbytes("int_of_hex_char"),
     cst_file=caml_string_of_jsbytes("file"),
     cst_http=caml_string_of_jsbytes("http"),
     cst_https=caml_string_of_jsbytes("https"),
     cst_urn=caml_string_of_jsbytes("urn"),
     cst_localhost=caml_string_of_jsbytes("localhost"),
     subd=caml_string_of_jsbytes("!$&'()*+,;="),
     cst=caml_string_of_jsbytes("[:/?#\\[\\]@]"),
     cst$0=caml_string_of_jsbytes("[!$&'()*+,;=]"),
     cst$1=caml_string_of_jsbytes("//"),
     cst_A_Za_z0_9=caml_string_of_jsbytes("[A-Za-z0-9-._~]"),
     cst_0_9A_Fa_f=caml_string_of_jsbytes("[0-9A-Fa-f]"),
     cst_25_0_5_2_0_4_0_9_01_0_9_0_=
      caml_string_of_jsbytes("25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?"),
     cst_25=caml_string_of_jsbytes("%25"),
     cst_0_9=caml_string_of_jsbytes("[0-9]*"),
     cst_A_Za_z_A_Za_z0_9=
      caml_string_of_jsbytes("[A-Za-z][A-Za-z0-9+\\\\-\\.]*"),
     cst$2=
      caml_string_of_jsbytes
       ("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"),
     always_safe=
      caml_string_of_jsbytes
       ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-~"),
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib=global_data.Stdlib,
     Stdlib_string=global_data.Stdlib__string,
     Stringext=global_data.Stringext,
     CamlinternalLazy=global_data.CamlinternalLazy,
     Re=global_data.Re,
     Stdlib_lazy=global_data.Stdlib__lazy,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_char=global_data.Stdlib__char,
     Re_Posix=global_data.Re__Posix,
     _ar_=
      [0,
       [11,caml_string_of_jsbytes("/?"),[2,0,0]],
       caml_string_of_jsbytes("/?%s")],
     _aq_=[0,[2,0,[12,63,[2,0,0]]],caml_string_of_jsbytes("%s?%s")],
     _an_=[0,-178940859],
     _ao_=[0,803994504],
     _ap_=[0,127343600],
     _am_=[0,caml_string_of_jsbytes("")],
     _al_=[0,0],
     _aj_=[0,795008922],
     _ai_=[0,-911188600],
     _ae_=[0,caml_string_of_jsbytes(""),0],
     _af_=[0,caml_string_of_jsbytes(""),0],
     _ag_=[0,2],
     _ah_=[0,[0,caml_string_of_jsbytes(""),0],0],
     _ad_=[0,892015045],
     _aa_=[0,-145160103],
     _ab_=[0,-145160103],
     ___=[0,2],
     _$_=[0,caml_string_of_jsbytes(""),0],
     _Z_=[0,[12,37,[4,8,[0,2,2],0,0]],caml_string_of_jsbytes("%%%02X")],
     _Y_=[0,caml_string_of_jsbytes("")],
     _X_=[0,caml_string_of_jsbytes("/"),0],
     _a_=[0,3],
     _c_=[0,4];
    function symbol(a,b){return caml_call1(Re[26],[0,a,[0,b,0]])}
    function symbol$0(a,b){return caml_call1(Re[25],[0,a,[0,b,0]])}
    var
     gen_delims=caml_call2(Re_Posix[3],0,cst),
     sub_delims=caml_call2(Re_Posix[3],0,cst$0),
     c_at=caml_call1(Re[24],64),
     c_colon=caml_call1(Re[24],58),
     c_slash=caml_call1(Re[24],47),
     c_slash2=caml_call2(Re_Posix[3],0,cst$1),
     c_dot=caml_call1(Re[24],46),
     c_question=caml_call1(Re[24],63),
     c_hash=caml_call1(Re[24],35);
    symbol$0(gen_delims,sub_delims);
    var
     unreserved=caml_call2(Re_Posix[3],0,cst_A_Za_z0_9),
     hexdig=caml_call2(Re_Posix[3],0,cst_0_9A_Fa_f),
     pct_encoded=symbol(symbol(caml_call1(Re[24],37),hexdig),hexdig),
     dec_octet=caml_call2(Re_Posix[3],0,cst_25_0_5_2_0_4_0_9_01_0_9_0_),
     _b_=symbol(dec_octet,c_dot),
     ipv4_address=symbol(caml_call3(Re[31],_b_,3,_a_),dec_octet),
     zone_id=symbol$0(unreserved,pct_encoded);
    function symbol$1(n,a){return caml_call3(Re[31],a,n,[0,n])}
    function symbol$2(n,a){return caml_call3(Re[31],a,0,[0,n])}
    var
     h16=caml_call3(Re[31],hexdig,1,_c_),
     h16c=symbol(h16,c_colon),
     cc=symbol(c_colon,c_colon),
     ls32=symbol$0(symbol(h16c,h16),ipv4_address),
     _d_=caml_call1(Re[24],93),
     _e_=caml_call1(Re[30],zone_id),
     _f_=symbol(caml_call2(Re_Posix[3],0,cst_25),_e_),
     _g_=caml_call1(Re[32],_f_),
     _h_=symbol(symbol$2(1,symbol(symbol$2(6,h16c),h16)),cc),
     _i_=symbol(symbol(symbol$2(1,symbol(symbol$2(5,h16c),h16)),cc),h16),
     _j_=symbol(symbol(symbol$2(1,symbol(symbol$2(4,h16c),h16)),cc),ls32),
     _k_=
      symbol
       (symbol(symbol(symbol$2(1,symbol(symbol$2(3,h16c),h16)),cc),h16c),ls32),
     _l_=symbol$1(2,h16c),
     _m_=
      symbol
       (symbol(symbol(symbol$2(1,symbol(symbol$2(2,h16c),h16)),cc),_l_),ls32),
     _n_=symbol$1(3,h16c),
     _o_=
      symbol
       (symbol(symbol(symbol$2(1,symbol(symbol$2(1,h16c),h16)),cc),_n_),ls32),
     _p_=symbol$1(4,h16c),
     _q_=symbol(symbol(symbol(symbol$2(1,h16),cc),_p_),ls32),
     _r_=symbol(symbol(cc,symbol$1(5,h16c)),ls32),
     _s_=
      symbol$0
       (symbol$0
         (symbol$0
           (symbol$0
             (symbol$0
               (symbol$0
                 (symbol$0(symbol$0(symbol(symbol$1(6,h16c),ls32),_r_),_q_),
                  _o_),
                _m_),
              _k_),
            _j_),
          _i_),
        _h_),
     ipv6_address=symbol(symbol(symbol(caml_call1(Re[24],91),_s_),_g_),_d_),
     _t_=symbol$0(symbol$0(unreserved,pct_encoded),sub_delims),
     reg_name=caml_call1(Re[29],_t_),
     host=symbol$0(symbol$0(ipv6_address,ipv4_address),reg_name),
     _u_=
      symbol$0(symbol$0(symbol$0(unreserved,pct_encoded),sub_delims),c_colon),
     userinfo=caml_call1(Re[29],_u_),
     port=caml_call2(Re_Posix[3],0,cst_0_9),
     _v_=symbol(c_colon,caml_call1(Re[50],port)),
     _w_=caml_call1(Re[32],_v_),
     _x_=caml_call1(Re[50],host),
     _y_=symbol(caml_call1(Re[50],userinfo),c_at),
     authority=symbol(symbol(caml_call1(Re[32],_y_),_x_),_w_),
     _z_=caml_call1(Re[50],Re[27]),
     _A_=caml_call1(Re[50],Re[27]);
    symbol(symbol(caml_call1(Re[50],Re[27]),_A_),_z_);
    var
     pchar=
      symbol$0
       (symbol$0
         (symbol$0(symbol$0(unreserved,pct_encoded),sub_delims),c_colon),
        c_at),
     segment=caml_call1(Re[29],pchar),
     segment_nz=caml_call1(Re[30],pchar),
     _B_=symbol$0(symbol$0(symbol$0(unreserved,pct_encoded),sub_delims),c_at),
     segment_nz_nc=caml_call3(Re[31],_B_,1,0),
     _C_=symbol(c_slash,segment),
     path_abempty=caml_call1(Re[29],_C_),
     _D_=symbol(c_slash,segment),
     _E_=symbol(segment_nz,caml_call1(Re[29],_D_)),
     path_absolute=symbol(c_slash,caml_call1(Re[32],_E_)),
     _F_=symbol(c_slash,segment),
     path_noscheme=symbol(segment_nz_nc,caml_call1(Re[29],_F_)),
     _G_=symbol(c_slash,segment),
     path_rootless=symbol(segment_nz,caml_call1(Re[29],_G_)),
     _H_=Re[27];
    symbol$0
     (symbol$0
       (symbol$0(symbol$0(path_abempty,path_absolute),path_noscheme),
        path_rootless),
      _H_);
    var
     _I_=symbol$0(symbol$0(path_absolute,path_rootless),_H_),
     hier_part=symbol$0(symbol(symbol(c_slash2,authority),path_abempty),_I_),
     scheme=caml_call2(Re_Posix[3],0,cst_A_Za_z_A_Za_z0_9),
     _J_=symbol$0(symbol$0(pchar,c_slash),c_question),
     _K_=caml_call1(Re[29],_J_),
     query=caml_call1(Re[50],_K_),
     _L_=symbol$0(symbol$0(pchar,c_slash),c_question),
     _M_=caml_call1(Re[29],_L_),
     fragment=caml_call1(Re[50],_M_),
     _N_=symbol(c_question,query),
     _O_=caml_call1(Re[32],_N_);
    symbol(symbol(symbol(scheme,c_colon),hier_part),_O_);
    var
     _P_=symbol(c_hash,fragment),
     _Q_=caml_call1(Re[32],_P_),
     _R_=symbol(c_question,query),
     _S_=caml_call1(Re[32],_R_);
    symbol(symbol(symbol(symbol(scheme,c_colon),hier_part),_S_),_Q_);
    var
     _T_=symbol$0(symbol$0(path_absolute,path_noscheme),_H_),
     relative_part=
      symbol$0(symbol(symbol(c_slash2,authority),path_abempty),_T_),
     _U_=symbol(c_hash,fragment),
     _V_=caml_call1(Re[32],_U_),
     _W_=symbol(c_question,query);
    symbol(symbol(relative_part,caml_call1(Re[32],_W_)),_V_);
    var
     uri_reference=caml_call2(Re_Posix[3],0,cst$2),
     ipv4_address$0=caml_call1(Re_Posix[4],ipv4_address),
     ipv6_address$0=caml_call1(Re_Posix[4],ipv6_address),
     uri_reference$0=caml_call1(Re_Posix[4],uri_reference),
     authority$0=caml_call1(Re_Posix[4],authority),
     host$0=caml_call1(Re_Posix[4],host);
    function iter_concat(fn,sep,buf,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var _c5_=param$0[1];
          if(param$0[2])
           {var rest=param$0[2];
            caml_call2(fn,buf,_c5_);
            caml_call2(Stdlib_buffer[14],buf,sep);
            var param$0=rest;
            continue}
          return caml_call2(fn,buf,_c5_)}
        return 0}}
    function compare_opt(c,t$0,t)
     {if(t$0)
       {var _c4_=t$0[1];if(t){var b=t[1];return caml_call2(c,_c4_,b)}return 1}
      return t?-1:0}
    function compare_list(f,t$0,t)
     {var t$2=t$0,t$1=t;
      for(;;)
       {if(t$2)
         {var _c2_=t$2[2],_c3_=t$2[1];
          if(t$1)
           {var ys=t$1[2],y=t$1[1],c=caml_call2(f,_c3_,y);
            if(0 === c){var t$2=_c2_,t$1=ys;continue}
            return c}
          return 1}
        return t$1?-1:0}}
    function sub_delims$0(a)
     {var i=0;
      for(;;)
       {var c=caml_string_get(subd,i);
        caml_check_bound(a,c)[1 + c] = 1;
        var _c1_=i + 1 | 0;
        if(10 !== i){var i=_c1_;continue}
        return a}}
    var a=caml_make_vect(256,0),i=0;
    for(;;)
     {var c=caml_string_get(always_safe,i);
      caml_check_bound(a,c)[1 + c] = 1;
      var _as_=i + 1 | 0;
      if(65 !== i){var i=_as_;continue}
      var pchar$0=sub_delims$0(caml_call1(Stdlib_array[8],a));
      caml_check_bound(pchar$0,58)[59] = 1;
      caml_check_bound(pchar$0,64)[65] = 1;
      var safe_chars_for_scheme=caml_call1(Stdlib_array[8],a);
      caml_check_bound(safe_chars_for_scheme,43)[44] = 1;
      var
       safe_chars_for_path=
        sub_delims$0(caml_call1(Stdlib_array[8],pchar$0));
      caml_check_bound(safe_chars_for_path,47)[48] = 0;
      var safe_chars_for_fragment=caml_call1(Stdlib_array[8],pchar$0);
      caml_check_bound(safe_chars_for_fragment,47)[48] = 1;
      caml_check_bound(safe_chars_for_fragment,63)[64] = 1;
      caml_check_bound(safe_chars_for_fragment,38)[39] = 0;
      caml_check_bound(safe_chars_for_fragment,59)[60] = 0;
      caml_check_bound(safe_chars_for_fragment,43)[44] = 0;
      var
       safe_chars_for_query_key=
        caml_call1(Stdlib_array[8],safe_chars_for_fragment);
      caml_check_bound(safe_chars_for_query_key,61)[62] = 0;
      var
       safe_chars_for_query_value=
        caml_call1(Stdlib_array[8],safe_chars_for_fragment);
      caml_check_bound(safe_chars_for_query_value,44)[45] = 0;
      var a$0=caml_call1(Stdlib_array[8],a);
      caml_check_bound(a$0,58)[59] = 0;
      var
       safe_chars_for_component=
        function(param)
         {if(-145160103 <= param)
           if(795008922 <= param)
            {if(892015045 === param)return safe_chars_for_path;
             if(! (795008923 <= param))return safe_chars_for_query_value}
           else
            {if(127343600 === param)return safe_chars_for_fragment;
             if(! (-145160102 <= param))return a$0}
          else
           {if(-911188600 === param)return safe_chars_for_query_key;
            if(-250086680 === param)return safe_chars_for_fragment;
            if(-178940859 === param)return safe_chars_for_scheme}
          return a},
       normalize_host=function(hso){return hso},
       canonicalize_port=function(port){return port},
       canonicalize_path=function(path){return path},
       Generic=
        [0,
         safe_chars_for_component,
         normalize_host,
         canonicalize_port,
         canonicalize_path],
       safe_chars_for_component$0=Generic[1],
       normalize_host$0=
        function(param)
         {if(param)
           {var hs=param[1];return [0,caml_call1(Stdlib_string[30],hs)]}
          return 0},
       canonicalize_port$0=
        function(param)
         {if(param){var _c0_=param[1];return 80 === _c0_?0:[0,_c0_]}return 0},
       canonicalize_path$0=function(x){return x?x:_X_},
       Http=
        [0,
         safe_chars_for_component$0,
         normalize_host$0,
         canonicalize_port$0,
         canonicalize_path$0],
       safe_chars_for_component$1=Http[1],
       normalize_host$1=Http[2],
       canonicalize_path$1=Http[4],
       canonicalize_port$1=
        function(param)
         {if(param){var _cZ_=param[1];return 443 === _cZ_?0:[0,_cZ_]}return 0},
       Https=
        [0,
         safe_chars_for_component$1,
         normalize_host$1,
         canonicalize_port$1,
         canonicalize_path$1],
       safe_chars_for_component$2=Generic[1],
       canonicalize_port$2=Generic[3],
       canonicalize_path$2=Generic[4],
       normalize_host$2=
        function(param)
         {if(param)
           {var hs=param[1],hs$0=caml_call1(Stdlib_string[30],hs);
            return caml_string_equal(hs$0,cst_localhost)?_Y_:[0,hs$0]}
          return 0},
       File=
        [0,
         safe_chars_for_component$2,
         normalize_host$2,
         canonicalize_port$2,
         canonicalize_path$2],
       safe_chars_for_component$3=Generic[1],
       normalize_host$3=Generic[2],
       canonicalize_port$3=Generic[3],
       canonicalize_path$3=Generic[4],
       Urn=
        [0,
         safe_chars_for_component$3,
         normalize_host$3,
         canonicalize_port$3,
         canonicalize_path$3],
       module_of_scheme=
        function(param)
         {if(param)
           {var s=param[1],match=caml_call1(Stdlib_string[30],s);
            return caml_string_notequal(match,cst_file)
                    ?caml_string_notequal(match,cst_http)
                      ?caml_string_notequal(match,cst_https)
                        ?caml_string_notequal(match,cst_urn)?Generic:Urn
                        :Https
                      :Http
                    :File}
          return Generic},
       encode=
        function(scheme,opt,b)
         {if(opt)var sth=opt[1],component=sth;else var component=892015045;
          var
           Scheme=module_of_scheme(scheme),
           safe_chars=caml_call1(Scheme[1],component),
           len=caml_ml_string_length(b),
           buf=caml_call1(Stdlib_buffer[1],len),
           start=0,
           cur=0;
          for(;;)
           {if(len <= cur)
             {caml_call4(Stdlib_buffer[16],buf,b,start,cur - start | 0);
              return caml_call1(Stdlib_buffer[2],buf)}
            var c=caml_string_get(b,cur);
            if(caml_check_bound(safe_chars,c)[1 + c])
             {var cur$0=cur + 1 | 0,cur=cur$0;continue}
            if(start < cur)
             caml_call4(Stdlib_buffer[16],buf,b,start,cur - start | 0);
            var _cY_=caml_call2(Stdlib_printf[4],_Z_,c);
            caml_call2(Stdlib_buffer[14],buf,_cY_);
            var cur$1=cur + 1 | 0,start$0=cur + 1 | 0,start=start$0,cur=cur$1;
            continue}},
       int_of_hex_char=
        function(c)
         {var c$0=caml_call1(Stdlib_char[6],c) - 48 | 0;
          if(9 < c$0)
           {if(16 < c$0 && ! (23 <= c$0))return c$0 - 7 | 0;
            return caml_call1(Stdlib[2],cst_int_of_hex_char)}
          return 0 <= c$0?c$0:caml_call1(Stdlib[2],cst_int_of_hex_char$0)},
       decode=
        function(b)
         {var
           len=caml_ml_string_length(b),
           buf=caml_call1(Stdlib_buffer[1],len);
          function scan(start,cur)
           {var start$0=start,cur$0=cur;
            for(;;)
             {if(len <= cur$0)
               return caml_call4
                       (Stdlib_buffer[16],buf,b,start$0,cur$0 - start$0 | 0);
              if(37 === caml_string_get(b,cur$0))
               {caml_call4
                 (Stdlib_buffer[16],buf,b,start$0,cur$0 - start$0 | 0);
                var cur$1=cur$0 + 1 | 0;
                if(len <= cur$1)return caml_call2(Stdlib_buffer[10],buf,37);
                try
                 {var highbits=int_of_hex_char(caml_string_get(b,cur$1))}
                catch(_cX_)
                 {caml_call2(Stdlib_buffer[10],buf,37);
                  var start$0=cur$1,cur$0=cur$1;
                  continue}
                var cur$2=cur$1 + 1 | 0;
                if(len <= cur$2)
                 {caml_call2(Stdlib_buffer[10],buf,37);
                  var _cT_=caml_string_get(b,cur$2 - 1 | 0);
                  return caml_call2(Stdlib_buffer[10],buf,_cT_)}
                try
                 {var
                   switch$0=0,
                   lowbits=int_of_hex_char(caml_string_get(b,cur$2));
                  switch$0 = 1}
                catch(_cW_)
                 {caml_call2(Stdlib_buffer[10],buf,37);
                  var _cU_=caml_string_get(b,cur$2 - 1 | 0);
                  caml_call2(Stdlib_buffer[10],buf,_cU_);
                  var cur$3=cur$2}
                if(switch$0)
                 {var
                   _cV_=
                    caml_call1(Stdlib_char[1],(highbits << 4) + lowbits | 0);
                  caml_call2(Stdlib_buffer[10],buf,_cV_);
                  var cur$3=cur$2 + 1 | 0}
                var start$0=cur$3,cur$0=cur$3;
                continue}
              var cur$4=cur$0 + 1 | 0,cur$0=cur$4;
              continue}}
          scan(0,0);
          return caml_call1(Stdlib_buffer[2],buf)},
       pct_encode=
        function(scheme,opt,s)
         {if(opt)var sth=opt[1],component=sth;else var component=892015045;
          return encode(scheme,[0,component],s)},
       pct_decode=function(s){return decode(s)},
       compare=
        function(param,_cS_)
         {var
           p=_cS_[2],
           u=_cS_[1],
           p$0=param[2],
           u$0=param[1],
           c=caml_call2(Stdlib_string[33],u$0,u);
          return 0 === c?compare_opt(Stdlib_string[33],p$0,p):c},
       userinfo_of_encoded=
        function(us)
         {var match=caml_call3(Stringext[3],___,us,58);
          if(match)
           {var _cP_=match[2],_cQ_=match[1];
            if(_cP_)
             {var p=_cP_[1],_cR_=[0,pct_decode(p)];
              return [0,pct_decode(_cQ_),_cR_]}
            return [0,pct_decode(_cQ_),0]}
          return _$_},
       encoded_of_userinfo=
        function(scheme)
         {return function(param)
           {var po=param[2],u=param[1];
            if(po)var p=po[1],_cM_=caml_ml_string_length(p);else var _cM_=0;
            var
             len=(1 + caml_ml_string_length(u) | 0) + _cM_ | 0,
             buf=caml_call1(Stdlib_buffer[1],len),
             _cN_=pct_encode(scheme,_aa_,u);
            caml_call2(Stdlib_buffer[14],buf,_cN_);
            if(po)
             {var p$0=po[1];
              caml_call2(Stdlib_buffer[10],buf,58);
              var _cO_=pct_encode(scheme,_ab_,p$0);
              caml_call2(Stdlib_buffer[14],buf,_cO_)}
            return caml_call1(Stdlib_buffer[2],buf)}},
       _ac_=Stdlib_string[33],
       path_of_encoded=
        function(ps)
         {var tokl=caml_call2(Stringext[4],ps,47);
          return caml_call2(Stdlib_list[17],pct_decode,tokl)},
       remove_dot_segments=
        function(p)
         {var
           param$1=caml_call1(Stdlib_list[9],p),
           ascension=0,
           outp=0,
           param$2=param$1;
          for(;;)
           {var switch$0=0;
            if(param$2)
             {var _cI_=param$2[1],switch$1=0;
              if(caml_string_notequal(_cI_,cst$3))
               {var switch$2=0;
                if(caml_string_notequal(_cI_,cst$4))
                 if(caml_string_notequal(_cI_,cst$5))
                  {switch$1 = 1;switch$2 = 1}
                 else
                  {var _cK_=param$2[2];
                   if(_cK_)
                    {var _cL_=_cK_[1];
                     if(caml_string_notequal(_cL_,cst$9))
                      if(caml_string_notequal(_cL_,cst$10))
                       {if(! caml_string_notequal(_cL_,cst$11))
                         {var r$0=_cK_[2];
                          if(0 < ascension)
                           {var
                             param$4=[0,cst$12,r$0],
                             ascension$1=ascension - 1 | 0,
                             ascension=ascension$1,
                             param$2=param$4;
                            continue}}
                        var r=_cK_[2];
                        if(0 < ascension)
                         {var
                           ascension$0=ascension - 1 | 0,
                           ascension=ascension$0,
                           param$2=r;
                          continue}
                        switch$1 = 1;
                        switch$2 = 1}
                      else
                       var param$5=_cK_[2];
                     else
                      {var param$6=_cK_[2];switch$2 = 1}}
                   else
                    {switch$0 = 1;switch$1 = 1;switch$2 = 1}}
                else
                 var param$5=param$2[2];
                if(! switch$2)
                 {var
                   ascension$2=ascension + 1 | 0,
                   ascension=ascension$2,
                   param$2=param$5;
                  continue}}
              else
               var param$6=param$2[2];
              if(! switch$1){var param$2=param$6;continue}}
            else
             switch$0 = 1;
            if
             (switch$0
              &&
              0
              <
              caml_call1(Stdlib_list[1],p)
              &&
              caml_string_equal(caml_call1(Stdlib_list[5],p),cst$13))
             return [0,cst$14,outp];
            if(param$2)
             {var
               param$3=param$2[2],
               s=param$2[1],
               outp$0=[0,s,outp],
               ascension=0,
               outp=outp$0,
               param$2=param$3;
              continue}
            if(0 < ascension)
             {var
               lst=
                caml_call1(Stdlib_array[11],caml_make_vect(ascension,cst$6));
              if(lst)
               {var t=lst[2],h=lst[1],acc$1=[0,h,0],acc=acc$1,param=t;
                for(;;)
                 {if(param)
                   {var
                     param$0=param[2],
                     x=param[1],
                     acc$0=[0,x,[0,e,acc]],
                     acc=acc$0,
                     param=param$0;
                    continue}
                  var _cJ_=acc;
                  break}}
              else
               var _cJ_=0;
              return caml_call2(Stdlib_list[12],[0,cst$7,_cJ_],outp)}
            if
             (0
              <
              caml_call1(Stdlib_list[1],outp)
              &&
              caml_string_equal(caml_call1(Stdlib_list[5],outp),cst$8))
             return caml_call1(Stdlib_list[6],outp);
            return outp}},
       encoded_of_path=
        function(scheme)
         {return function(p)
           {var _cF_=0;
            function _cG_(c,tok){return caml_ml_string_length(tok) + c | 0}
            var
             len=caml_call3(Stdlib_list[22],_cG_,_cF_,p),
             buf=caml_call1(Stdlib_buffer[1],len);
            iter_concat
             (function(buf,seg)
               {if(caml_string_notequal(seg,cst$16))
                 {var _cH_=pct_encode(scheme,_ad_,seg);
                  return caml_call2(Stdlib_buffer[14],buf,_cH_)}
                return caml_call2(Stdlib_buffer[10],buf,47)},
              cst$15,
              buf,
              p);
            return caml_call1(Stdlib_buffer[2],buf)}},
       find=
        function(q,k)
         {try
           {var _cD_=[0,caml_call2(Stdlib_list[41],k,q)];return _cD_}
          catch(_cE_)
           {_cE_ = caml_wrap_exception(_cE_);
            if(_cE_ === Stdlib[8])return 0;
            throw _cE_}},
       query_of_encoded=
        function(qs)
         {var els=caml_call3(Stringext[3],0,qs,38);
          function plus_to_space(s)
           {var
             s$0=caml_call1(Stdlib_bytes[43],s),
             _cB_=runtime.caml_ml_bytes_length(s$0) - 1 | 0,
             _cA_=0;
            if(! (_cB_ < 0))
             {var i=_cA_;
              for(;;)
               {if(43 === runtime.caml_bytes_get(s$0,i))
                 runtime.caml_bytes_set(s$0,i,32);
                var _cC_=i + 1 | 0;
                if(_cB_ !== i){var i=_cC_;continue}
                break}}
            return caml_call1(Stdlib_bytes[42],s$0)}
          if(els)
           {var
             _cw_=function(el){return caml_call3(Stringext[3],_ag_,el,61)},
             param$1=caml_call2(Stdlib_list[19],_cw_,els),
             acc=0,
             param=param$1;
            for(;;)
             {if(param)
               {var _cs_=param[1];
                if(_cs_)
                 {var _ct_=_cs_[2],_cu_=_cs_[1];
                  if(_ct_)
                   {var
                     tl=param[2],
                     v=_ct_[1],
                     _cv_=plus_to_space(v),
                     l=caml_call3(Stringext[3],0,_cv_,44),
                     l$0=l || _ae_,
                     n=[0,plus_to_space(_cu_),l$0],
                     acc$0=[0,n,acc],
                     acc=acc$0,
                     param=tl;
                    continue}
                  var
                   tl$0=param[2],
                   n$0=[0,plus_to_space(_cu_),0],
                   acc$1=[0,n$0,acc],
                   acc=acc$1,
                   param=tl$0;
                  continue}
                var
                 param$0=param[2],
                 acc$2=[0,_af_,acc],
                 acc=acc$2,
                 param=param$0;
                continue}
              var _cx_=acc;
              break}}
          else
           var _cx_=_ah_;
          function _cy_(param)
           {var
             v=param[2],
             k=param[1],
             _cz_=caml_call2(Stdlib_list[17],pct_decode,v);
            return [0,pct_decode(k),_cz_]}
          return caml_call2(Stdlib_list[17],_cy_,_cx_)},
       encoded_of_query=
        function(scheme,l)
         {var _cl_=-1;
          function _cm_(a,param)
           {var v=param[2],k=param[1],_cq_=0;
            function _cr_(a,s)
             {return (a + caml_ml_string_length(s) | 0) + 1 | 0}
            return ((a + caml_ml_string_length(k) | 0)
                    +
                    caml_call3(Stdlib_list[22],_cr_,_cq_,v)
                    |
                    0)
                   +
                   2
                   |
                   0}
          var
           len=caml_call3(Stdlib_list[22],_cm_,_cl_,l),
           buf=caml_call1(Stdlib_buffer[1],len);
          iter_concat
           (function(buf,param)
             {var v=param[2],k=param[1],_cn_=pct_encode(scheme,_ai_,k);
              caml_call2(Stdlib_buffer[14],buf,_cn_);
              var _co_=0 !== v?1:0;
              return _co_
                      ?(caml_call2(Stdlib_buffer[10],buf,61),
                        iter_concat
                         (function(buf,s)
                           {var _cp_=pct_encode(scheme,_aj_,s);
                            return caml_call2(Stdlib_buffer[14],buf,_cp_)},
                          cst$22,
                          buf,
                          v))
                      :_co_},
            cst$21,
            buf,
            l);
          return caml_call1(Stdlib_buffer[2],buf)},
       of_raw=
        function(qs)
         {function _ck_(param){return query_of_encoded(qs)}
          var lazy_query=caml_call1(Stdlib_lazy[3],_ck_);
          return [1,[0,qs],lazy_query]},
       kv=
        function(param)
         {if(0 === param[0])
           var kv=param[1];
          else
           var
            _ch_=param[2],
            _ci_=caml_obj_tag(_ch_),
            _cj_=
             250 === _ci_
              ?_ch_[1]
              :246 === _ci_?caml_call1(CamlinternalLazy[2],_ch_):_ch_,
            kv=_cj_;
          return kv},
       encoded_of_query$0=
        function(scheme)
         {return function(_cg_){return encoded_of_query(scheme,_cg_)}},
       empty=[0,0,0,0,0,0,[1,0,caml_call1(Stdlib_lazy[4],0)],0],
       _ak_=Stdlib_string[33],
       compare_decoded_opt=
        function(_ce_,_cf_){return compare_opt(_ak_,_ce_,_cf_)},
       compare$0=
        function(t$0,t)
         {var c=compare_decoded_opt(t$0[3],t[3]);
          if(0 === c)
           {var c$0=compare_decoded_opt(t$0[1],t[1]);
            if(0 === c$0)
             {var
               _b$_=t[4],
               _ca_=t$0[4],
               c$1=
                compare_opt
                 (function(p$0,p){return p$0 < p?-1:p < p$0?1:0},_ca_,_b$_);
              if(0 === c$1)
               {var c$2=compare_opt(compare,t$0[2],t[2]);
                if(0 === c$2)
                 {var c$4=compare_list(_ac_,t$0[5],t[5]);
                  if(0 === c$4)
                   {var _cb_=t[6],_cc_=t$0[6],switch$0=0;
                    if(0 === _cc_[0])
                     {var _b3_=_cc_[1];
                      if(0 === _cb_[0])
                       var kvl$0=_cb_[1],kvl=_b3_;
                      else
                       var
                        _b4_=_cb_[2],
                        _b5_=caml_obj_tag(_b4_),
                        _b6_=
                         250 === _b5_
                          ?_b4_[1]
                          :246 === _b5_?caml_call1(CamlinternalLazy[2],_b4_):_b4_,
                        kvl$0=_b6_,
                        kvl=_b3_}
                    else
                     {var _b7_=_cc_[2],_b8_=_cc_[1];
                      if(0 === _cb_[0])
                       var
                        _b9_=caml_obj_tag(_b7_),
                        _b__=
                         250 === _b9_
                          ?_b7_[1]
                          :246 === _b9_?caml_call1(CamlinternalLazy[2],_b7_):_b7_,
                        kvl$0=_cb_[1],
                        kvl=_b__;
                      else
                       {var
                         raw=_cb_[1],
                         c$3=compare_opt(Stdlib_string[33],_b8_,raw);
                        switch$0 = 1}}
                    if(! switch$0)
                     var
                      c$3=
                       compare_list
                        (function(param,_cd_)
                          {var
                            vl=_cd_[2],
                            k=_cd_[1],
                            vl$0=param[2],
                            k$0=param[1],
                            c=caml_call2(Stdlib_string[33],k$0,k);
                           return 0 === c?compare_list(Stdlib_string[33],vl$0,vl):c},
                         kvl,
                         kvl$0);
                    return 0 === c$3?compare_decoded_opt(t$0[7],t[7]):c$3}
                  return c$4}
                return c$2}
              return c$1}
            return c$0}
          return c},
       equal=function(t$0,t){return 0 === compare$0(t$0,t)?1:0},
       uncast_opt=
        function(param){if(param){var h=param[1];return [0,h]}return 0},
       normalize=
        function(schem,init)
         {var
           Scheme=module_of_scheme(uncast_opt(schem)),
           _bT_=init[7],
           _bU_=init[6],
           _bV_=init[5],
           _bW_=init[4],
           _bX_=uncast_opt(init[3]),
           param=caml_call1(Scheme[2],_bX_);
          if(param)var h=param[1],_bY_=[0,h];else var _bY_=0;
          var _b0_=init[1],_bZ_=init[2],_b1_=Stdlib_string[30];
          if(_b0_)var x=_b0_[1],_b2_=[0,caml_call1(_b1_,x)];else var _b2_=0;
          return [0,_b2_,_bZ_,_bY_,_bW_,_bV_,_bU_,_bT_]},
       make=
        function(scheme,userinfo,host,port,path,query,fragment,param)
         {function decode(param)
           {if(param){var x=param[1];return [0,x]}return 0}
          var switch$0=0;
          if(! host)
           {var switch$1=0;
            if(! port && ! userinfo)switch$1 = 1;
            if(! switch$1){var host$0=_am_;switch$0 = 1}}
          if(! switch$0)var host$0=host;
          if(userinfo)
           var u=userinfo[1],userinfo$0=[0,userinfo_of_encoded(u)];
          else
           var userinfo$0=0;
          if(path)
           {var p=path[1],match=path_of_encoded(p),switch$2=0;
            if(host$0 && match && caml_string_notequal(match[1],cst$23))
             {var _bR_=[0,cst$24,match];switch$2 = 1}
            if(! switch$2)var _bR_=match;
            var path$0=_bR_}
          else
           var path$0=0;
          if(query)var p$0=query[1],query$0=[0,p$0];else var query$0=_al_;
          var scheme$0=decode(scheme),_bS_=decode(fragment);
          return normalize
                  (scheme$0,
                   [0,
                    scheme$0,
                    userinfo$0,
                    decode(host$0),
                    port,
                    path$0,
                    query$0,
                    _bS_])},
       of_string=
        function(s)
         {function get_opt_encoded(s,n)
           {try
             {var _bP_=[0,caml_call2(Re[1][1],s,n)];return _bP_}
            catch(_bQ_)
             {_bQ_ = caml_wrap_exception(_bQ_);
              if(_bQ_ === Stdlib[8])return 0;
              throw _bQ_}}
          function get_opt(s,n)
           {try
             {var pct=caml_call2(Re[1][1],s,n),_bN_=[0,decode(pct)];
              return _bN_}
            catch(_bO_)
             {_bO_ = caml_wrap_exception(_bO_);
              if(_bO_ === Stdlib[8])return 0;
              throw _bO_}}
          var
           subs=caml_call4(Re[3],0,0,uri_reference$0,s),
           scheme=get_opt(subs,2),
           match=get_opt_encoded(subs,4);
          if(match)
           {var
             a=match[1],
             subs$0=caml_call4(Re[3],0,0,authority$0,a),
             match$0=get_opt_encoded(subs$0,1);
            if(match$0)
             var x=match$0[1],userinfo=[0,userinfo_of_encoded(x)];
            else
             var userinfo=0;
            var host=get_opt(subs$0,2),match$1=get_opt(subs$0,3);
            if(match$1)
             {var x$0=match$1[1];
              try
               {var _bL_=[0,runtime.caml_int_of_string(x$0)],_bK_=_bL_}
              catch(_bM_){var _bK_=0}
              var port=_bK_}
            else
             var port=0;
            var port$0=port,host$0=host,userinfo$0=userinfo}
          else
           var port$0=0,host$0=0,userinfo$0=0;
          var match$2=get_opt_encoded(subs,5);
          if(match$2)
           var x$1=match$2[1],path=path_of_encoded(x$1);
          else
           var path=0;
          var match$3=get_opt_encoded(subs,7);
          if(match$3)
           var x$2=match$3[1],query=of_raw(x$2);
          else
           var query=[1,0,caml_call1(Stdlib_lazy[4],0)];
          var fragment=get_opt(subs,9);
          return normalize
                  (scheme,
                   [0,scheme,userinfo$0,host$0,port$0,path,query,fragment])},
       to_string=
        function(uri)
         {var _bm_=uri[1];
          if(_bm_)var s=_bm_[1],scheme=[0,s];else var scheme=0;
          var buf=caml_call1(Stdlib_buffer[1],128);
          function add_pct_string(opt,x)
           {if(opt)var sth=opt[1],component=sth;else var component=892015045;
            var _bJ_=encode(scheme,[0,component],x);
            return caml_call2(Stdlib_buffer[14],buf,_bJ_)}
          var _bn_=uri[1];
          if(_bn_)
           {var x=_bn_[1];
            add_pct_string(_an_,x);
            caml_call2(Stdlib_buffer[10],buf,58)}
          var switch$0=0,_bo_=uri[3],_bp_=uri[4];
          if(! uri[2] && ! _bo_ && ! _bp_){var _bq_=0;switch$0 = 1}
          if(! switch$0)var _bq_=1;
          if(_bq_)caml_call2(Stdlib_buffer[14],buf,cst$25);
          var _br_=uri[2];
          if(_br_)
           {var
             userinfo=_br_[1],
             _bs_=caml_call1(encoded_of_userinfo(scheme),userinfo);
            caml_call2(Stdlib_buffer[14],buf,_bs_);
            caml_call2(Stdlib_buffer[10],buf,64)}
          var _bt_=uri[3];
          if(_bt_){var host=_bt_[1];add_pct_string(_ao_,host)}
          var _bu_=uri[4];
          if(_bu_)
           {var port=_bu_[1];
            caml_call2(Stdlib_buffer[10],buf,58);
            var _bv_=caml_call1(Stdlib[33],port);
            caml_call2(Stdlib_buffer[14],buf,_bv_)}
          var _bw_=uri[5];
          if(_bw_)
           {var _bx_=_bw_[1];
            if(caml_string_notequal(_bx_,cst$26))
             {if(uri[3])
               caml_call2(Stdlib_buffer[10],buf,47);
              else
               {var match=caml_call3(Stringext[12],0,_bx_,cst$27);
                if(match && ! scheme)caml_call2(Stdlib_buffer[14],buf,cst$28)}
              var _by_=uri[5],_bz_=caml_call1(encoded_of_path(scheme),_by_);
              caml_call2(Stdlib_buffer[14],buf,_bz_)}
            else
             {var _bH_=uri[5],_bI_=caml_call1(encoded_of_path(scheme),_bH_);
              caml_call2(Stdlib_buffer[14],buf,_bI_)}}
          var _bA_=uri[6],switch$1=0;
          if(0 === _bA_[0])
           {var _bB_=_bA_[1];if(_bB_){var q=_bB_;switch$1 = 1}}
          else
           if(_bA_[1])
            {var
              _bE_=_bA_[2],
              _bF_=caml_obj_tag(_bE_),
              _bG_=
               250 === _bF_
                ?_bE_[1]
                :246 === _bF_?caml_call1(CamlinternalLazy[2],_bE_):_bE_,
              q=_bG_;
             switch$1 = 1}
          if(switch$1)
           {caml_call2(Stdlib_buffer[10],buf,63);
            var _bC_=encoded_of_query(scheme,q);
            caml_call2(Stdlib_buffer[14],buf,_bC_)}
          var _bD_=uri[7];
          if(_bD_)
           {var f=_bD_[1];
            caml_call2(Stdlib_buffer[10],buf,35);
            add_pct_string(_ap_,f)}
          return caml_call1(Stdlib_buffer[2],buf)},
       get_decoded_opt=
        function(param){if(param){var x=param[1];return [0,x]}return 0},
       scheme$0=function(uri){return get_decoded_opt(uri[1])},
       with_scheme=
        function(uri,param)
         {if(param)
           {var scheme=param[1];
            return [0,[0,scheme],uri[2],uri[3],uri[4],uri[5],uri[6],uri[7]]}
          return [0,0,uri[2],uri[3],uri[4],uri[5],uri[6],uri[7]]},
       host$1=function(uri){return get_decoded_opt(uri[3])},
       with_host=
        function(uri,param)
         {if(param)
           {var host=param[1];
            return [0,uri[1],uri[2],[0,host],uri[4],uri[5],uri[6],uri[7]]}
          return [0,uri[1],uri[2],0,uri[4],uri[5],uri[6],uri[7]]},
       host_with_default=
        function(opt,uri)
         {if(opt)
           var sth=opt[1],default$0=sth;
          else
           var default$0=cst_localhost$0;
          var match=host$1(uri);
          if(match){var h=match[1];return h}
          return default$0},
       userinfo$0=
        function(uri)
         {var _bj_=uri[2];
          if(_bj_)
           {var userinfo=_bj_[1],_bk_=uri[1];
            if(_bk_)
             var
              s=_bk_[1],
              _bl_=caml_call1(encoded_of_userinfo([0,s]),userinfo);
            else
             var _bl_=caml_call1(encoded_of_userinfo(0),userinfo);
            return [0,_bl_]}
          return 0},
       with_userinfo=
        function(uri,userinfo)
         {if(userinfo)
           var u=userinfo[1],userinfo$0=[0,userinfo_of_encoded(u)];
          else
           var userinfo$0=0;
          var match=host$1(uri);
          return match
                  ?[0,uri[1],userinfo$0,uri[3],uri[4],uri[5],uri[6],uri[7]]
                  :[0,
                    uri[1],
                    userinfo$0,
                    [0,cst$29],
                    uri[4],
                    uri[5],
                    uri[6],
                    uri[7]]},
       user=
        function(uri)
         {var _bi_=uri[2];
          if(_bi_){var match=_bi_[1],user=match[1];return [0,user]}
          return 0},
       password=
        function(uri)
         {var _bg_=uri[2];
          if(_bg_)
           {var _bh_=_bg_[1][2];if(_bh_){var pass=_bh_[1];return [0,pass]}}
          return 0},
       with_password=
        function(uri,password)
         {function result(userinfo)
           {var match=host$1(uri);
            return match
                    ?[0,uri[1],userinfo,uri[3],uri[4],uri[5],uri[6],uri[7]]
                    :[0,uri[1],userinfo,[0,cst$30],uri[4],uri[5],uri[6],uri[7]]}
          var _bf_=uri[2];
          if(_bf_)
           {var match=_bf_[1],user=match[1];
            return result([0,[0,user,password]])}
          return password?result([0,[0,cst$31,password]]):uri},
       port$0=function(uri){return uri[4]},
       with_port=
        function(uri,port)
         {var match=host$1(uri);
          return match
                  ?[0,uri[1],uri[2],uri[3],port,uri[5],uri[6],uri[7]]
                  :port
                    ?[0,uri[1],uri[2],[0,cst$32],port,uri[5],uri[6],uri[7]]
                    :[0,uri[1],uri[2],0,0,uri[5],uri[6],uri[7]]},
       path=
        function(uri)
         {var _bb_=uri[1];
          if(_bb_)
           var
            s=_bb_[1],
            _bc_=uri[5],
            _bd_=caml_call1(encoded_of_path([0,s]),_bc_);
          else
           var _be_=uri[5],_bd_=caml_call1(encoded_of_path(0),_be_);
          return _bd_},
       with_path=
        function(uri,path)
         {var match=path_of_encoded(path);
          if(host$1(uri) && match && caml_string_notequal(match[1],cst$33))
           return [0,
                   uri[1],
                   uri[2],
                   uri[3],
                   uri[4],
                   [0,cst$34,match],
                   uri[6],
                   uri[7]];
          return [0,uri[1],uri[2],uri[3],uri[4],match,uri[6],uri[7]]},
       fragment$0=function(uri){return get_decoded_opt(uri[7])},
       with_fragment=
        function(uri,param)
         {if(param)
           {var frag=param[1];
            return [0,uri[1],uri[2],uri[3],uri[4],uri[5],uri[6],[0,frag]]}
          return [0,uri[1],uri[2],uri[3],uri[4],uri[5],uri[6],0]},
       query$0=function(uri){return kv(uri[6])},
       verbatim_query=
        function(uri)
         {var _a$_=uri[6];
          if(0 === _a$_[0])
           {var _ba_=_a$_[1];
            return _ba_?[0,encoded_of_query(scheme$0(uri),_ba_)]:0}
          var qs=_a$_[1];
          return qs},
       get_query_param=function(uri,k){return find(kv(uri[6]),k)},
       get_query_param$0=
        function(uri,k)
         {var match=get_query_param(uri,k);
          if(match)
           {var v=match[1];return [0,caml_call2(Stdlib_string[7],cst$35,v)]}
          return 0},
       with_query=
        function(uri,query)
         {return [0,uri[1],uri[2],uri[3],uri[4],uri[5],[0,query],uri[7]]},
       q_s=
        function(q)
         {function _a__(param){var v=param[2],k=param[1];return [0,k,[0,v,0]]}
          return caml_call2(Stdlib_list[17],_a__,q)},
       with_query$0=function(uri,query){return with_query(uri,q_s(query))},
       add_query_param=
        function(init,p)
         {var _a8_=init[7],_a9_=[0,[0,p,kv(init[6])]];
          return [0,init[1],init[2],init[3],init[4],init[5],_a9_,_a8_]},
       add_query_param$0=
        function(init,param)
         {var
           v=param[2],
           k=param[1],
           _a6_=init[7],
           _a7_=[0,[0,[0,k,[0,v,0]],kv(init[6])]];
          return [0,init[1],init[2],init[3],init[4],init[5],_a7_,_a6_]},
       add_query_params=
        function(init,ps)
         {var
           _a3_=init[7],
           _a4_=kv(init[6]),
           _a5_=[0,caml_call2(Stdlib[37],ps,_a4_)];
          return [0,init[1],init[2],init[3],init[4],init[5],_a5_,_a3_]},
       add_query_params$0=
        function(init,ps)
         {var
           _aZ_=init[7],
           _a0_=kv(init[6]),
           _a1_=q_s(ps),
           _a2_=[0,caml_call2(Stdlib[37],_a1_,_a0_)];
          return [0,init[1],init[2],init[3],init[4],init[5],_a2_,_aZ_]},
       remove_query_param=
        function(init,k)
         {var _aV_=init[7],_aW_=kv(init[6]);
          function _aX_(param)
           {var k$0=param[1];return caml_string_notequal(k,k$0)}
          var _aY_=[0,caml_call2(Stdlib_list[38],_aX_,_aW_)];
          return [0,init[1],init[2],init[3],init[4],init[5],_aY_,_aV_]},
       with_uri=
        function(scheme,userinfo,host,port,path,query,fragment,uri)
         {function with_path_opt(u,o)
           {if(o){var p=o[1];return with_path(u,p)}return with_path(u,cst$36)}
          function with_query_opt(u,o)
           {if(o){var q=o[1];return with_query(u,q)}return with_query(u,0)}
          function with$0(f,o,u)
           {if(o){var x=o[1];return caml_call2(f,u,x)}return u}
          return with$0
                  (with_fragment,
                   fragment,
                   with$0
                    (with_query_opt,
                     query,
                     with$0
                      (with_path_opt,
                       path,
                       with$0
                        (with_port,
                         port,
                         with$0
                          (with_host,
                           host,
                           with$0
                            (with_userinfo,userinfo,with$0(with_scheme,scheme,uri)))))))},
       path_and_query=
        function(uri)
         {var match=path(uri),match$0=query$0(uri);
          if(caml_string_notequal(match,cst$37))
           {if(match$0)
             {var
               scheme=uncast_opt(uri[1]),
               _aT_=caml_call1(encoded_of_query$0(scheme),match$0);
              return caml_call3(Stdlib_printf[4],_aq_,match,_aT_)}
            return match}
          if(match$0)
           {var
             scheme$0=uncast_opt(uri[1]),
             _aU_=caml_call1(encoded_of_query$0(scheme$0),match$0);
            return caml_call2(Stdlib_printf[4],_ar_,_aU_)}
          return cst$38},
       resolve=
        function(schem,base,uri)
         {var match$0=scheme$0(base);
          if(match$0)
           var scheme=match$0[1],scheme$1=scheme;
          else
           var scheme$1=schem;
          var
           schem$0=[0,scheme$1],
           match$1=scheme$0(uri),
           match$2=userinfo$0(uri),
           match$3=host$1(uri);
          if(match$1)
           var
            _aA_=uri[7],
            _aB_=uri[6],
            _aC_=remove_dot_segments(uri[5]),
            _aD_=[0,uri[1],uri[2],uri[3],uri[4],_aC_,_aB_,_aA_];
          else
           {var switch$0=0;
            if(match$2 || match$3)
             switch$0 = 1;
            else
             {var
               init=[0,base[1],base[2],base[3],base[4],uri[5],uri[6],uri[7]],
               path_str=path(init);
              if(caml_string_equal(path_str,cst$39))
               var
                _aH_=init[7],
                _aI_=init[6][1]?init[6]:base[6],
                _aJ_=[0,init[1],init[2],init[3],init[4],base[5],_aI_,_aH_];
              else
               if(47 === caml_string_get(path_str,0))
                var
                 _aK_=init[7],
                 _aL_=init[6],
                 _aM_=remove_dot_segments(init[5]),
                 _aJ_=[0,init[1],init[2],init[3],init[4],_aM_,_aL_,_aK_];
               else
                {var
                  _aP_=init[5],
                  _aN_=init[7],
                  _aO_=init[6],
                  _aQ_=base[3],
                  match=caml_call1(Stdlib_list[9],base[5]),
                  switch$1=0;
                 if(_aQ_ && ! match)
                  var _aR_=[0,cst$20,_aP_];
                 else
                  switch$1 = 1;
                 if(switch$1)
                  {var switch$2=0;
                   if(match)
                    {var switch$3=0;
                     if(caml_string_notequal(match[1],cst$17))
                      {var _az_=match[2];
                       if(_az_ && ! caml_string_notequal(_az_[1],cst$18))
                        var rbpath=_az_[2];
                       else
                        switch$3 = 1}
                     else
                      var rbpath=match[2];
                     if(! switch$3)
                      {var
                        _aR_=
                         caml_call2(Stdlib_list[12],[0,cst$19,rbpath],_aP_);
                       switch$2 = 1}}
                   if(! switch$2)var _aR_=_aP_}
                 var
                  _aS_=remove_dot_segments(_aR_),
                  _aJ_=[0,init[1],init[2],init[3],init[4],_aS_,_aO_,_aN_]}
              var _aD_=_aJ_}
            if(switch$0)
             var
              _aE_=uri[7],
              _aF_=uri[6],
              _aG_=remove_dot_segments(uri[5]),
              _aD_=[0,base[1],uri[2],uri[3],uri[4],_aG_,_aF_,_aE_]}
          return normalize(schem$0,_aD_)},
       canonicalize=
        function(uri)
         {var
           init=resolve(cst$40,empty,uri),
           Scheme=module_of_scheme(uncast_opt(init[1])),
           _av_=init[7],
           _aw_=init[6],
           _ax_=caml_call1(Scheme[4],init[5]),
           _ay_=caml_call1(Scheme[3],init[4]);
          return [0,init[1],init[2],init[3],_ay_,_ax_,_aw_,_av_]},
       pp=
        function(ppf,uri)
         {var _au_=to_string(uri);
          return caml_call2(Stdlib_format[13],ppf,_au_)},
       pp_hum=
        function(ppf,uri)
         {var _at_=to_string(uri);
          return caml_call2(Stdlib_format[13],ppf,_at_)},
       Uri=
        [0,
         empty,
         compare$0,
         equal,
         pct_encode,
         pct_decode,
         of_string,
         to_string,
         resolve,
         canonicalize,
         make,
         with_uri,
         query$0,
         verbatim_query,
         encoded_of_query$0,
         query_of_encoded,
         with_query,
         with_query$0,
         get_query_param,
         get_query_param$0,
         add_query_param,
         add_query_param$0,
         add_query_params,
         add_query_params$0,
         remove_query_param,
         path,
         path_and_query,
         with_path,
         scheme$0,
         with_scheme,
         userinfo$0,
         with_userinfo,
         user,
         password,
         with_password,
         host$1,
         with_host,
         host_with_default,
         port$0,
         with_port,
         fragment$0,
         with_fragment,
         pp,
         pp_hum,
         [0,ipv4_address$0,ipv6_address$0,uri_reference$0,authority$0,host$0]];
      runtime.caml_register_global(97,Uri,"Uri");
      return}}
  (function(){return this}()));


//# 1 "../../.js/json-data-encoding/json_data_encoding.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_compare=runtime.caml_compare,
     caml_equal=runtime.caml_equal,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_greaterthan=runtime.caml_greaterthan,
     caml_int64_neg=runtime.caml_int64_neg,
     caml_int64_of_float=runtime.caml_int64_of_float,
     caml_int64_shift_left=runtime.caml_int64_shift_left,
     caml_int64_to_float=runtime.caml_int64_to_float,
     caml_lessthan=runtime.caml_lessthan,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_modf_float=runtime.caml_modf_float,
     caml_notequal=runtime.caml_notequal,
     caml_register_global=runtime.caml_register_global,
     caml_string_compare=runtime.caml_string_compare,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    function caml_call8(f,a0,a1,a2,a3,a4,a5,a6,a7)
     {return f.length == 8
              ?f(a0,a1,a2,a3,a4,a5,a6,a7)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7])}
    function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8)
     {return f.length == 9
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_wildcard=caml_string_of_jsbytes("wildcard"),
     cst_array_append=caml_string_of_jsbytes("array append"),
     cst_field_access=caml_string_of_jsbytes("field access"),
     cst_array_access=caml_string_of_jsbytes("array access"),
     cst_Unterminated_escape_sequen=
      caml_string_of_jsbytes("Unterminated escape sequence"),
     cst_Illegal_escape_character=
      caml_string_of_jsbytes("Illegal escape character"),
     cst=caml_string_of_jsbytes("-"),
     cst_JSON_pointer_w_o_wildcards$0=
      caml_string_of_jsbytes("JSON pointer w/o wildcards"),
     cst_Missing_initial_slash=caml_string_of_jsbytes("Missing initial slash"),
     cst_JSON_pointer=caml_string_of_jsbytes("JSON pointer"),
     cst_JSON_pointer_w_o_wildcards=
      caml_string_of_jsbytes("JSON pointer w/o wildcards"),
     cst_JSON_path_w_o_wildcards=
      caml_string_of_jsbytes("JSON path w/o wildcards"),
     cst_Json_query_Illegal_pointer=
      caml_string_of_jsbytes("Json_query.Illegal_pointer_notation"),
     cst_Json_query_Unsupported_pat=
      caml_string_of_jsbytes("Json_query.Unsupported_path_item"),
     cst_Json_query_Cannot_merge=
      caml_string_of_jsbytes("Json_query.Cannot_merge"),
     cst$2=caml_string_of_jsbytes(""),
     cst$3=caml_string_of_jsbytes("?"),
     partial=[11,caml_string_of_jsbytes("<v 0>"),0],
     partial$0=
      [17,
       [0,caml_string_of_jsbytes("@,"),0,0],
       [11,
        caml_string_of_jsbytes("Already present:"),
        [17,
         [0,caml_string_of_jsbytes("@,"),0,0],
         [11,
          caml_string_of_jsbytes("  "),
          [18,
           [1,
            [0,
             [11,caml_string_of_jsbytes("<v 0>"),0],
             caml_string_of_jsbytes("<v 0>")]],
           [15,[17,0,[17,0,0]]]]]]]],
     cst_definitions$1=caml_string_of_jsbytes("/definitions/"),
     cst_has_no_fragment=caml_string_of_jsbytes(" has no fragment"),
     cst_a_list_of_elements=caml_string_of_jsbytes("a list of elements"),
     cst_type$9=caml_string_of_jsbytes("type"),
     cst_type$10=caml_string_of_jsbytes("type"),
     cst_id$0=caml_string_of_jsbytes("id"),
     cst_http=caml_string_of_jsbytes("http"),
     cst_is_not_a_valid_ID=caml_string_of_jsbytes(" is not a valid ID"),
     cst_id$1=caml_string_of_jsbytes("id"),
     cst_type$7=caml_string_of_jsbytes("type"),
     cst_type_type_array_or_operato$0=
      caml_string_of_jsbytes("type, type array or operator"),
     cst_type$11=caml_string_of_jsbytes("type"),
     cst_type_type_array_or_operato=
      caml_string_of_jsbytes("type, type array or operator"),
     cst_type$8=caml_string_of_jsbytes("type"),
     cst_ref$2=caml_string_of_jsbytes("$ref"),
     cst_not$0=caml_string_of_jsbytes("not"),
     cst_not$1=caml_string_of_jsbytes("not"),
     cst_title$0=caml_string_of_jsbytes("title"),
     cst_description$0=caml_string_of_jsbytes("description"),
     n=caml_string_of_jsbytes("default"),
     cst_enum$0=caml_string_of_jsbytes("enum"),
     cst_format$0=caml_string_of_jsbytes("format"),
     cst_oneOf$0=caml_string_of_jsbytes("oneOf"),
     cst_anyOf$0=caml_string_of_jsbytes("anyOf"),
     cst_allOf$0=caml_string_of_jsbytes("allOf"),
     cst_items$3=caml_string_of_jsbytes("items"),
     cst_object$3=caml_string_of_jsbytes("object"),
     cst_string$3=caml_string_of_jsbytes("string"),
     cst_propertyDependencies$3=caml_string_of_jsbytes("propertyDependencies"),
     cst_string_array=caml_string_of_jsbytes("string array"),
     cst_propertyDependencies$2=caml_string_of_jsbytes("propertyDependencies"),
     cst_properties$2=caml_string_of_jsbytes("properties"),
     cst_string$2=caml_string_of_jsbytes("string"),
     cst_required$1=caml_string_of_jsbytes("required"),
     cst_multipleOf$2=caml_string_of_jsbytes("multipleOf"),
     cst_exclusiveMinimum$2=caml_string_of_jsbytes("exclusiveMinimum"),
     cst_minimum$5=caml_string_of_jsbytes("minimum"),
     err$2=
      caml_string_of_jsbytes
       ("minimum field required when exclusiveMinimum is true"),
     cst_minimum$6=caml_string_of_jsbytes("minimum"),
     cst_exclusiveMaximum$2=caml_string_of_jsbytes("exclusiveMaximum"),
     cst_maximum$5=caml_string_of_jsbytes("maximum"),
     err$1=
      caml_string_of_jsbytes
       ("maximum field required when exclusiveMaximum is true"),
     cst_maximum$6=caml_string_of_jsbytes("maximum"),
     cst_multipleOf$1=caml_string_of_jsbytes("multipleOf"),
     cst_exclusiveMinimum$1=caml_string_of_jsbytes("exclusiveMinimum"),
     cst_minimum$3=caml_string_of_jsbytes("minimum"),
     err$0=
      caml_string_of_jsbytes
       ("minimum field required when exclusiveMinimum is true"),
     cst_minimum$4=caml_string_of_jsbytes("minimum"),
     cst_exclusiveMaximum$1=caml_string_of_jsbytes("exclusiveMaximum"),
     cst_maximum$3=caml_string_of_jsbytes("maximum"),
     err=
      caml_string_of_jsbytes
       ("maximum field required when exclusiveMaximum is true"),
     cst_maximum$4=caml_string_of_jsbytes("maximum"),
     cst_array$1=caml_string_of_jsbytes("array"),
     cst_boolean$0=caml_string_of_jsbytes("boolean"),
     cst_integer$0=caml_string_of_jsbytes("integer"),
     cst_null$0=caml_string_of_jsbytes("null"),
     cst_number$1=caml_string_of_jsbytes("number"),
     cst_object$0=caml_string_of_jsbytes("object"),
     cst_string$1=caml_string_of_jsbytes("string"),
     cst_pattern$0=caml_string_of_jsbytes("pattern"),
     cst_minLength$0=caml_string_of_jsbytes("minLength"),
     cst_maxLength$0=caml_string_of_jsbytes("maxLength"),
     cst_required$0=caml_string_of_jsbytes("required"),
     cst_properties$0=caml_string_of_jsbytes("properties"),
     cst_object$1=caml_string_of_jsbytes("object"),
     cst_properties$1=caml_string_of_jsbytes("properties"),
     cst_additionalProperties$0=caml_string_of_jsbytes("additionalProperties"),
     cst_additionalProperties$1=caml_string_of_jsbytes("additionalProperties"),
     cst_propertyDependencies$0=caml_string_of_jsbytes("propertyDependencies"),
     cst_object$2=caml_string_of_jsbytes("object"),
     cst_propertyDependencies$1=caml_string_of_jsbytes("propertyDependencies"),
     cst_patternProperties$0=caml_string_of_jsbytes("patternProperties"),
     cst_schemaDependencies$0=caml_string_of_jsbytes("schemaDependencies"),
     cst_minProperties$0=caml_string_of_jsbytes("minProperties"),
     cst_maxProperties$0=caml_string_of_jsbytes("maxProperties"),
     cst_uniqueItems$1=caml_string_of_jsbytes("uniqueItems"),
     cst_minItems$1=caml_string_of_jsbytes("minItems"),
     cst_maxItems$1=caml_string_of_jsbytes("maxItems"),
     cst_additionalItems$0=caml_string_of_jsbytes("additionalItems"),
     cst_additionalItems$1=caml_string_of_jsbytes("additionalItems"),
     cst_items$1=caml_string_of_jsbytes("items"),
     cst_items$2=caml_string_of_jsbytes("items"),
     cst_a_known_type=caml_string_of_jsbytes("a known type"),
     cst_definitions$0=caml_string_of_jsbytes("#/definitions/"),
     cst_is_not_a_valid_URI=caml_string_of_jsbytes(" is not a valid URI"),
     cst_array$0=caml_string_of_jsbytes("array"),
     cst_number$0=caml_string_of_jsbytes("number"),
     cst_length=caml_string_of_jsbytes("length"),
     cst_integer=caml_string_of_jsbytes("integer"),
     cst_bool=caml_string_of_jsbytes("bool"),
     cst_string$0=caml_string_of_jsbytes("string"),
     cst_id=caml_string_of_jsbytes("id"),
     cst_null=caml_string_of_jsbytes("null"),
     cst_boolean=caml_string_of_jsbytes("boolean"),
     cst_number=caml_string_of_jsbytes("number"),
     cst_object=caml_string_of_jsbytes("object"),
     cst_empty_object=caml_string_of_jsbytes("empty object"),
     cst$6=caml_string_of_jsbytes(""),
     cst_empty_string=caml_string_of_jsbytes("empty string"),
     cst_string=caml_string_of_jsbytes("string"),
     cst_array=caml_string_of_jsbytes("array"),
     cst_empty_array=caml_string_of_jsbytes("empty array"),
     cst_anyOf=caml_string_of_jsbytes("anyOf"),
     cst_oneOf=caml_string_of_jsbytes("oneOf"),
     cst_allOf=caml_string_of_jsbytes("allOf"),
     cst_not=caml_string_of_jsbytes("not"),
     cst_format=caml_string_of_jsbytes("format"),
     cst_enum=caml_string_of_jsbytes("enum"),
     cst_default=caml_string_of_jsbytes("default"),
     cst_type=caml_string_of_jsbytes("type"),
     cst_type$0=caml_string_of_jsbytes("type"),
     cst_Json_schema_to_json_remain=
      caml_string_of_jsbytes("Json_schema.to_json: remaining dummy element"),
     cst_propertyDependencies=caml_string_of_jsbytes("propertyDependencies"),
     cst_schemaDependencies=caml_string_of_jsbytes("schemaDependencies"),
     cst_maxProperties=caml_string_of_jsbytes("maxProperties"),
     cst_minProperties=caml_string_of_jsbytes("minProperties"),
     cst_additionalProperties=caml_string_of_jsbytes("additionalProperties"),
     cst_patternProperties=caml_string_of_jsbytes("patternProperties"),
     cst_required=caml_string_of_jsbytes("required"),
     cst_properties=caml_string_of_jsbytes("properties"),
     cst_type$1=caml_string_of_jsbytes("type"),
     cst_additionalItems=caml_string_of_jsbytes("additionalItems"),
     cst_uniqueItems=caml_string_of_jsbytes("uniqueItems"),
     cst_maxItems=caml_string_of_jsbytes("maxItems"),
     cst_minItems=caml_string_of_jsbytes("minItems"),
     cst_items=caml_string_of_jsbytes("items"),
     cst_type$2=caml_string_of_jsbytes("type"),
     cst_uniqueItems$0=caml_string_of_jsbytes("uniqueItems"),
     cst_maxItems$0=caml_string_of_jsbytes("maxItems"),
     cst_minItems$0=caml_string_of_jsbytes("minItems"),
     cst_items$0=caml_string_of_jsbytes("items"),
     cst_type$3=caml_string_of_jsbytes("type"),
     cst$4=caml_string_of_jsbytes("#"),
     cst_ref=caml_string_of_jsbytes("$ref"),
     cst$5=caml_string_of_jsbytes("#"),
     cst_ref$0=caml_string_of_jsbytes("$ref"),
     cst_ref$1=caml_string_of_jsbytes("$ref"),
     cst_pattern=caml_string_of_jsbytes("pattern"),
     cst_maxLength=caml_string_of_jsbytes("maxLength"),
     cst_minLength=caml_string_of_jsbytes("minLength"),
     cst_type$4=caml_string_of_jsbytes("type"),
     cst_maximum=caml_string_of_jsbytes("maximum"),
     cst_exclusiveMaximum=caml_string_of_jsbytes("exclusiveMaximum"),
     cst_maximum$0=caml_string_of_jsbytes("maximum"),
     cst_minimum=caml_string_of_jsbytes("minimum"),
     cst_exclusiveMinimum=caml_string_of_jsbytes("exclusiveMinimum"),
     cst_minimum$0=caml_string_of_jsbytes("minimum"),
     cst_multipleOf=caml_string_of_jsbytes("multipleOf"),
     cst_type$5=caml_string_of_jsbytes("type"),
     cst_maximum$1=caml_string_of_jsbytes("maximum"),
     cst_exclusiveMaximum$0=caml_string_of_jsbytes("exclusiveMaximum"),
     cst_maximum$2=caml_string_of_jsbytes("maximum"),
     cst_minimum$1=caml_string_of_jsbytes("minimum"),
     cst_exclusiveMinimum$0=caml_string_of_jsbytes("exclusiveMinimum"),
     cst_minimum$2=caml_string_of_jsbytes("minimum"),
     cst_multipleOf$0=caml_string_of_jsbytes("multipleOf"),
     cst_type$6=caml_string_of_jsbytes("type"),
     cst_description=caml_string_of_jsbytes("description"),
     cst_title=caml_string_of_jsbytes("title"),
     cst_schema=caml_string_of_jsbytes("$schema"),
     array_specs=[0,0,0,0,0],
     string_specs=[0,0,0,0],
     numeric_specs=[0,0,0,0],
     partial$1=[11,caml_string_of_jsbytes(" */"),0],
     cst_definitions=caml_string_of_jsbytes("definitions"),
     cst$0=caml_string_of_jsbytes(""),
     cst$1=caml_string_of_jsbytes("-"),
     version=caml_string_of_jsbytes("http://json-schema.org/draft-04/schema#"),
     cst_Json_schema_Cannot_parse=
      caml_string_of_jsbytes("Json_schema.Cannot_parse"),
     cst_Json_schema_Dangling_refer=
      caml_string_of_jsbytes("Json_schema.Dangling_reference"),
     cst_Json_schema_Bad_reference=
      caml_string_of_jsbytes("Json_schema.Bad_reference"),
     cst_Json_schema_Unexpected=
      caml_string_of_jsbytes("Json_schema.Unexpected"),
     cst_Json_schema_Duplicate_defi=
      caml_string_of_jsbytes("Json_schema.Duplicate_definition"),
     cst_Json_encoding_union=caml_string_of_jsbytes("Json_encoding.union"),
     cst_Json_encoding_merge_objs=
      caml_string_of_jsbytes("Json_encoding.merge_objs"),
     cst_Json_encoding_merge_tups=
      caml_string_of_jsbytes("Json_encoding.merge_tups"),
     cst_array_or_object=caml_string_of_jsbytes("array or object"),
     cst_Json_encoding_option_canno=
      caml_string_of_jsbytes
       ("Json_encoding.option: cannot nest nullable encodings"),
     cst_asssociative_object=caml_string_of_jsbytes("asssociative object"),
     cst_Json_encoding_string_enum_=
      caml_string_of_jsbytes("Json_encoding.string_enum: duplicate case"),
     cst$7=caml_string_of_jsbytes("'"),
     cst$8=caml_string_of_jsbytes("'"),
     specs=[0,0,0,0],
     cst$9=caml_string_of_jsbytes(" "),
     cst_Json_encoding_ranged_int53=
      caml_string_of_jsbytes
       ("Json_encoding.ranged_int53: bounds out of JSON-representable integers"),
     cst_Json_encoding_ranged_int_b=
      caml_string_of_jsbytes
       ("Json_encoding.ranged_int: bounds out of portable int31 range"),
     cst_Json_encoding_schema_empty=
      caml_string_of_jsbytes("Json_encoding.schema: empty union in object"),
     cst_Json_encoding_schema_conse=
      caml_string_of_jsbytes
       ("Json_encoding.schema: consequence of bad merge_objs"),
     cst_Json_encoding_schema_conse$0=
      caml_string_of_jsbytes
       ("Json_encoding.schema: consequence of bad merge_tups"),
     cst_array$5=caml_string_of_jsbytes("array"),
     cst_array$4=caml_string_of_jsbytes("array"),
     cst_object$6=caml_string_of_jsbytes("object"),
     cst_object$5=caml_string_of_jsbytes("object"),
     cst_array$3=caml_string_of_jsbytes("array"),
     cst_float$0=caml_string_of_jsbytes("float"),
     cst_out_of_range$2=caml_string_of_jsbytes(" out of range"),
     cst_float=caml_string_of_jsbytes("float"),
     cst_cannot_have_a_fractional_p=
      caml_string_of_jsbytes(" cannot have a fractional part"),
     cst_out_of_range$1=caml_string_of_jsbytes(" out of range"),
     cst_number$3=caml_string_of_jsbytes("number"),
     cst_string$5=caml_string_of_jsbytes("string"),
     cst_boolean$2=caml_string_of_jsbytes("boolean"),
     cst_an_empty_object=caml_string_of_jsbytes("an empty object"),
     cst_null$2=caml_string_of_jsbytes("null"),
     cst_Json_encoding_destruct_con=
      caml_string_of_jsbytes
       ("Json_encoding.destruct: consequence of bad merge_tups"),
     cst_Json_encoding_destruct_con$0=
      caml_string_of_jsbytes
       ("Json_encoding.destruct: consequence of bad merge_objs"),
     cst_Json_encoding_construct_co$1=
      caml_string_of_jsbytes
       ("Json_encoding.construct: consequence of bad union"),
     cst_Json_encoding_construct_co$0=
      caml_string_of_jsbytes
       ("Json_encoding.construct: consequence of bad merge_tups"),
     cst_Json_encoding_construct_co=
      caml_string_of_jsbytes
       ("Json_encoding.construct: consequence of bad merge_objs"),
     cst_out_of_range=caml_string_of_jsbytes(" out of range"),
     cst_Json_encoding_construct=
      caml_string_of_jsbytes("Json_encoding.construct: "),
     cst_out_of_range$0=caml_string_of_jsbytes(" out of range"),
     cst_Json_encoding_construct$0=
      caml_string_of_jsbytes("Json_encoding.construct: "),
     cst_null$1=caml_string_of_jsbytes("null"),
     cst_boolean$1=caml_string_of_jsbytes("boolean"),
     cst_number$2=caml_string_of_jsbytes("number"),
     cst_object$4=caml_string_of_jsbytes("object"),
     cst_empty_object$0=caml_string_of_jsbytes("empty object"),
     cst_string$4=caml_string_of_jsbytes("string"),
     cst_array$2=caml_string_of_jsbytes("array"),
     cst_empty_array$0=caml_string_of_jsbytes("empty array"),
     cst_Json_encoding_Unexpected=
      caml_string_of_jsbytes("Json_encoding.Unexpected"),
     cst_Json_encoding_No_case_matc=
      caml_string_of_jsbytes("Json_encoding.No_case_matched"),
     cst_Json_encoding_Bad_array_si=
      caml_string_of_jsbytes("Json_encoding.Bad_array_size"),
     cst_Json_encoding_Missing_fiel=
      caml_string_of_jsbytes("Json_encoding.Missing_field"),
     cst_Json_encoding_Unexpected_f=
      caml_string_of_jsbytes("Json_encoding.Unexpected_field"),
     cst_Json_encoding_Bad_schema=
      caml_string_of_jsbytes("Json_encoding.Bad_schema"),
     cst_Json_encoding_Cannot_destr=
      caml_string_of_jsbytes("Json_encoding.Cannot_destruct"),
     cst_int=caml_string_of_jsbytes("int"),
     cst_int53=caml_string_of_jsbytes("int53"),
     cst_int32=caml_string_of_jsbytes("int32"),
     float$0=[3,0],
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Stdlib=global_data.Stdlib,
     Assert_failure=global_data.Assert_failure,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Uri=global_data.Uri,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_int32=global_data.Stdlib__int32,
     Stdlib_bytes=global_data.Stdlib__bytes,
     _B_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")],
     _l_=[0,[12,44,0],caml_string_of_jsbytes(",")],
     _s_=[0,[15,[12,58,[15,0]]],caml_string_of_jsbytes("%a:%a")],
     _r_=[0,[12,44,0],caml_string_of_jsbytes(",")],
     _k_=
      [0,[11,caml_string_of_jsbytes("null"),0],caml_string_of_jsbytes("null")],
     _n_=
      [0,[11,caml_string_of_jsbytes("true"),0],caml_string_of_jsbytes("true")],
     _o_=
      [0,
       [11,caml_string_of_jsbytes("false"),0],
       caml_string_of_jsbytes("false")],
     _p_=[0,[8,[0,0,0],0,[0,0],0],caml_string_of_jsbytes("%.0f")],
     _q_=[0,[8,[0,0,3],0,0,0],caml_string_of_jsbytes("%g")],
     _t_=[0,[12,123,[15,[12,125,0]]],caml_string_of_jsbytes("{%a}")],
     _m_=[0,[12,91,[15,[12,93,0]]],caml_string_of_jsbytes("[%a]")],
     _u_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _y_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hov 2>"),0],
          caml_string_of_jsbytes("<hov 2>")]],
        [15,[12,58,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]]],
       caml_string_of_jsbytes("@[<hov 2>%a:@ %a@]")],
     _x_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _z_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hov 2>"),0],
          caml_string_of_jsbytes("<hov 2>")]],
        [11,
         caml_string_of_jsbytes("{ "),
         [15,[11,caml_string_of_jsbytes(" }"),[17,0,0]]]]],
       caml_string_of_jsbytes("@[<hov 2>{ %a }@]")],
     _A_=[0,[11,caml_string_of_jsbytes("{}"),0],caml_string_of_jsbytes("{}")],
     _v_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hov 2>"),0],
          caml_string_of_jsbytes("<hov 2>")]],
        [11,
         caml_string_of_jsbytes("[ "),
         [15,[11,caml_string_of_jsbytes(" ]"),[17,0,0]]]]],
       caml_string_of_jsbytes("@[<hov 2>[ %a ]@]")],
     _w_=[0,[11,caml_string_of_jsbytes("[]"),0],caml_string_of_jsbytes("[]")],
     _a_=[0,[12,34,0],caml_string_of_jsbytes('"')],
     _e_=[0,[0,0],caml_string_of_jsbytes("%c")],
     _d_=
      [0,[11,caml_string_of_jsbytes("\\\\"),0],caml_string_of_jsbytes("\\\\")],
     _g_=
      [0,[11,caml_string_of_jsbytes("\\b"),0],caml_string_of_jsbytes("\\b")],
     _h_=
      [0,[11,caml_string_of_jsbytes("\\t"),0],caml_string_of_jsbytes("\\t")],
     _i_=
      [0,[11,caml_string_of_jsbytes("\\n"),0],caml_string_of_jsbytes("\\n")],
     _j_=
      [0,[11,caml_string_of_jsbytes("\\r"),0],caml_string_of_jsbytes("\\r")],
     _c_=
      [0,[11,caml_string_of_jsbytes('\\"'),0],caml_string_of_jsbytes('\\"')],
     _f_=
      [0,
       [11,caml_string_of_jsbytes("\\u"),[4,6,[0,2,4],0,0]],
       caml_string_of_jsbytes("\\u%04x")],
     _b_=[0,[12,34,0],caml_string_of_jsbytes('"')],
     _N_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("Illegal pointer notation"),
         [17,
          [0,caml_string_of_jsbytes("@,"),0,0],
          [11,
           caml_string_of_jsbytes("At character "),
           [4,
            0,
            0,
            0,
            [11,
             caml_string_of_jsbytes(" of "),
             [3,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[2,0,[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes
        ("@[<v 2>Illegal pointer notation@,At character %d of %S@,%s@]")],
     _O_=
      [0,
       [11,
        caml_string_of_jsbytes("Path operator "),
        [2,0,[11,caml_string_of_jsbytes(" unsupported by "),[2,0,0]]]],
       caml_string_of_jsbytes("Path operator %s unsupported by %s")],
     _P_=[0,1],
     _Q_=
      [0,
       [11,
        caml_string_of_jsbytes("Unmergeable objects, incompatibility at "),
        [15,0]],
       caml_string_of_jsbytes("Unmergeable objects, incompatibility at %a")],
     _R_=
      [0,
       [11,caml_string_of_jsbytes("Unmergeable objects"),0],
       caml_string_of_jsbytes("Unmergeable objects")],
     _S_=
      [0,
       [11,caml_string_of_jsbytes("Unhandled error "),[2,0,0]],
       caml_string_of_jsbytes("Unhandled error %s")],
     _M_=[0,caml_string_of_jsbytes("src/json_query.ml"),174,29],
     _L_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _H_=
      [0,
       [11,caml_string_of_jsbytes("/-"),[15,0]],
       caml_string_of_jsbytes("/-%a")],
     _I_=[0,[12,47,[2,0,[15,0]]],caml_string_of_jsbytes("/%s%a")],
     _J_=[0,[12,47,[4,0,0,0,[15,0]]],caml_string_of_jsbytes("/%d%a")],
     _K_=[0,[12,47,0],caml_string_of_jsbytes("/")],
     _C_=[0,[12,42,[15,0]],caml_string_of_jsbytes("*%a")],
     _D_=[0,[12,45,[15,0]],caml_string_of_jsbytes("-%a")],
     _E_=[0,[12,47,[2,0,[15,0]]],caml_string_of_jsbytes("/%s%a")],
     _F_=[0,[12,91,[4,0,0,0,[12,93,[15,0]]]],caml_string_of_jsbytes("[%d]%a")],
     _G_=[0,[12,47,0],caml_string_of_jsbytes("/")],
     _aV_=[0,[12,47,[2,0,[12,47,0]]],caml_string_of_jsbytes("/%s/")],
     _aW_=
      [0,
       [11,caml_string_of_jsbytes("string"),0],
       caml_string_of_jsbytes("string")],
     _aU_=
      [0,
       [4,0,0,0,[11,caml_string_of_jsbytes(" <= "),0]],
       caml_string_of_jsbytes("%d <= ")],
     _aT_=
      [0,
       [11,caml_string_of_jsbytes("<= "),[4,0,0,0,0]],
       caml_string_of_jsbytes("<= %d")],
     _aK_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,caml_string_of_jsbytes("| "),0]],
       caml_string_of_jsbytes("@ | ")],
     _aL_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,caml_string_of_jsbytes("|| "),0]],
       caml_string_of_jsbytes("@ || ")],
     _aM_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,caml_string_of_jsbytes("&& "),0]],
       caml_string_of_jsbytes("@ && ")],
     _aN_=[0,caml_string_of_jsbytes("src/json_schema.ml"),314,23],
     _aD_=[0,[15,[15,0]],caml_string_of_jsbytes("%a%a")],
     _aB_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ao_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,caml_string_of_jsbytes("| "),0]],
       caml_string_of_jsbytes("@ | ")],
     _am_=[0,[12,35,[2,0,0]],caml_string_of_jsbytes("#%s")],
     _an_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _ap_=[0,0],
     _aq_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv 0>"),0],
          caml_string_of_jsbytes("<hv 0>")]],
        [15,[17,0,0]]],
       caml_string_of_jsbytes("@[<hv 0>%a@]")],
     _as_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("{ "),
         [15,
          [17,
           [0,caml_string_of_jsbytes("@,"),0,0],
           [15,[11,caml_string_of_jsbytes(" }"),[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<v 2>{ %a@,%a }@]")],
     _at_=
      [0,
       [15,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,0]]],
       caml_string_of_jsbytes("%a@,%a")],
     _ar_=
      [0,
       [15,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,0]]],
       caml_string_of_jsbytes("%a@ %a")],
     _au_=
      [0,
       [11,caml_string_of_jsbytes("boolean"),0],
       caml_string_of_jsbytes("boolean")],
     _av_=
      [0,[11,caml_string_of_jsbytes("null"),0],caml_string_of_jsbytes("null")],
     _aw_=
      [0,[11,caml_string_of_jsbytes("any"),0],caml_string_of_jsbytes("any")],
     _ax_=[0,caml_string_of_jsbytes("src/json_schema.ml"),306,23],
     _az_=[0,[11,caml_string_of_jsbytes("{}"),0],caml_string_of_jsbytes("{}")],
     _ay_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("{ "),
         [15,[11,caml_string_of_jsbytes(" }"),[17,0,0]]]]],
       caml_string_of_jsbytes("@[<v 2>{ %a }@]")],
     _aC_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv 2>"),0],
          caml_string_of_jsbytes("<hv 2>")]],
        [11,caml_string_of_jsbytes("[ "),0]],
       caml_string_of_jsbytes("@[<hv 2>[ ")],
     _aE_=
      [0,
       [15,
        [12,
         44,
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,caml_string_of_jsbytes("..."),0]]]],
       caml_string_of_jsbytes("%a,@ ...")],
     _aG_=
      [0,
       [15,
        [12,
         44,
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [15,[11,caml_string_of_jsbytes(" ..."),0]]]]],
       caml_string_of_jsbytes("%a,@ %a ...")],
     _aF_=
      [0,
       [11,caml_string_of_jsbytes(" ]"),[17,0,0]],
       caml_string_of_jsbytes(" ]@]")],
     _aH_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv 2>"),0],
          caml_string_of_jsbytes("<hv 2>")]],
        [11,
         caml_string_of_jsbytes("[ "),
         [15,
          [11,
           caml_string_of_jsbytes(" ...,"),
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [11,caml_string_of_jsbytes("... ]"),[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<hv 2>[ %a ...,@ ... ]@]")],
     _aI_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv 2>"),0],
          caml_string_of_jsbytes("<hv 2>")]],
        [11,
         caml_string_of_jsbytes("[ "),
         [15,
          [11,
           caml_string_of_jsbytes(" ...,"),
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [15,[11,caml_string_of_jsbytes(" ... ]"),[17,0,0]]]]]]]],
       caml_string_of_jsbytes("@[<hv 2>[ %a ...,@ %a ... ]@]")],
     _aJ_=
      [0,
       [11,
        caml_string_of_jsbytes("[ "),
        [15,[11,caml_string_of_jsbytes(" ... ]"),0]]],
       caml_string_of_jsbytes("[ %a ... ]")],
     _aP_=
      [0,
       [11,caml_string_of_jsbytes("! "),[15,0]],
       caml_string_of_jsbytes("! %a")],
     _aO_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv 0>"),0],
          caml_string_of_jsbytes("<hv 0>")]],
        [15,[17,0,0]]],
       caml_string_of_jsbytes("@[<hv 0>%a@]")],
     _aQ_=[0,[12,36,[15,0]],caml_string_of_jsbytes("$%a")],
     _aR_=[0,[12,35,[2,0,0]],caml_string_of_jsbytes("#%s")],
     _aS_=[0,[12,36,[15,0]],caml_string_of_jsbytes("$%a")],
     _aY_=[0,[12,47,[2,0,[12,47,0]]],caml_string_of_jsbytes("/%s/")],
     _aZ_=
      [0,
       [11,caml_string_of_jsbytes("string"),0],
       caml_string_of_jsbytes("string")],
     _aX_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(" ("),
         [15,[11,caml_string_of_jsbytes("length"),[15,[12,41,0]]]]]],
       caml_string_of_jsbytes("%a (%alength%a)")],
     _a1_=
      [0,
       [11,caml_string_of_jsbytes("integer"),0],
       caml_string_of_jsbytes("integer")],
     _a0_=
      [0,
       [11,caml_string_of_jsbytes("integer "),[15,0]],
       caml_string_of_jsbytes("integer %a")],
     _a3_=
      [0,
       [11,caml_string_of_jsbytes("number"),0],
       caml_string_of_jsbytes("number")],
     _a2_=
      [0,
       [11,caml_string_of_jsbytes("number "),[15,0]],
       caml_string_of_jsbytes("number %a")],
     _aA_=[0,[11,caml_string_of_jsbytes("[]"),0],caml_string_of_jsbytes("[]")],
     _a6_=
      [0,
       [15,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hv 2>"),0],
           caml_string_of_jsbytes("<hv 2>")]],
         [12,
          47,
          [2,
           0,
           [11,
            caml_string_of_jsbytes("/:"),
            [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]]]]],
       caml_string_of_jsbytes("%a@[<hv 2>/%s/:@ %a@]")],
     _a5_=
      [0,
       [15,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hv 2>"),0],
           caml_string_of_jsbytes("<hv 2>")]],
         [15,
          [2,
           0,
           [12,58,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]]]]],
       caml_string_of_jsbytes("%a@[<hv 2>%a%s:@ %a@]")],
     _a4_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _a7_=
      [0,
       [15,[11,caml_string_of_jsbytes("..."),0]],
       caml_string_of_jsbytes("%a...")],
     _a8_=
      [0,
       [15,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hv 2>"),0],
           caml_string_of_jsbytes("<hv 2>")]],
         [11,
          caml_string_of_jsbytes("*:"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]]],
       caml_string_of_jsbytes("%a@[<hv 2>*:@ %a@]")],
     _bd_=[0,1],
     _be_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("Schema parse error:"),
         [17,
          [0,caml_string_of_jsbytes("@,"),0,0],
          [11,
           caml_string_of_jsbytes("At "),
           [15,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]]]]],
       caml_string_of_jsbytes("@[<v 2>Schema parse error:@,At %a@,%a@]")],
     _bf_=
      [0,
       [11,caml_string_of_jsbytes("Dangling reference "),[2,0,0]],
       caml_string_of_jsbytes("Dangling reference %s")],
     _bg_=
      [0,
       [11,caml_string_of_jsbytes("Illegal reference notation "),[2,0,0]],
       caml_string_of_jsbytes("Illegal reference notation %s")],
     _bh_=
      [0,
       [11,
        caml_string_of_jsbytes("Unexpected "),
        [2,0,[11,caml_string_of_jsbytes(" instead of "),[2,0,0]]]],
       caml_string_of_jsbytes("Unexpected %s instead of %s")],
     _bi_=[0,0],
     _bj_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("Duplicate definition "),
         [15,
          [17,
           [0,caml_string_of_jsbytes("@,"),0,0],
           [11,
            caml_string_of_jsbytes("To be inserted:"),
            [17,
             [0,caml_string_of_jsbytes("@,"),0,0],
             [11,
              caml_string_of_jsbytes("  "),
              [18,
               [1,[0,partial,caml_string_of_jsbytes("<v 0>")]],
               [15,[17,0,partial$0]]]]]]]]]],
       caml_string_of_jsbytes
        ("@[<v 2>Duplicate definition %a@,To be inserted:@,  @[<v 0>%a@]@,Already present:@,  @[<v 0>%a@]@]")],
     _bD_=[0,caml_string_of_jsbytes("src/json_schema.ml"),1188,36],
     _bC_=[0,0],
     _bA_=[0,0],
     _bB_=[0,[0,331416730,caml_string_of_jsbytes("definitions")],0],
     _bq_=[0,737456202,0],
     _bo_=[0,737456202,0],
     _bm_=[0,-976970511,caml_string_of_jsbytes("boolean")],
     _bn_=[0,-976970511,caml_string_of_jsbytes("null")],
     _bp_=[0,-976970511,caml_string_of_jsbytes("object")],
     _br_=[0,-976970511,caml_string_of_jsbytes("array")],
     _bs_=[0,-976970511,caml_string_of_jsbytes("array")],
     _bt_=[0,-976970511,caml_string_of_jsbytes("string")],
     _bw_=[0,737456202,1],
     _bv_=[0,737456202,1],
     _bu_=[0,-976970511,caml_string_of_jsbytes("integer")],
     _bz_=[0,737456202,1],
     _by_=[0,737456202,1],
     _bx_=[0,-976970511,caml_string_of_jsbytes("number")],
     _ba_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<v 2>"),0],
           caml_string_of_jsbytes("<v 2>")]],
         [12,
          35,
          [2,
           0,
           [12,
            58,
            [17,
             [0,caml_string_of_jsbytes("@,"),0,0],
             [15,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes("@,@[<v 2>#%s:@,%a@,%a@]")],
     _bb_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hv 2>"),0],
           caml_string_of_jsbytes("<hv 2>")]],
         [12,
          35,
          [2,
           0,
           [12,58,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]]]]],
       caml_string_of_jsbytes("@,@[<hv 2>#%s:@ %a@]")],
     _a__=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<v 2>"),0],
           caml_string_of_jsbytes("<v 2>")]],
         [12,
          36,
          [15,
           [12,
            58,
            [17,
             [0,caml_string_of_jsbytes("@,"),0,0],
             [15,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes("@,@[<v 2>$%a:@,%a@,%a@]")],
     _a$_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hv 2>"),0],
           caml_string_of_jsbytes("<hv 2>")]],
         [12,
          36,
          [15,[12,58,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]]]]],
       caml_string_of_jsbytes("@,@[<hv 2>$%a:@ %a@]")],
     _a9_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 0>"),0],
          caml_string_of_jsbytes("<v 0>")]],
        0],
       caml_string_of_jsbytes("@[<v 0>")],
     _bc_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _al_=
      [0,
       [11,
        caml_string_of_jsbytes("/* "),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov 0>"),0],
           caml_string_of_jsbytes("<hov 0>")]],
         [15,[17,0,[11,caml_string_of_jsbytes(" */"),0]]]]],
       caml_string_of_jsbytes("/* @[<hov 0>%a@] */")],
     _ak_=
      [0,
       [11,
        caml_string_of_jsbytes("/* "),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<v 0>"),0],
           caml_string_of_jsbytes("<v 0>")]],
         [18,
          [1,
           [0,
            [11,caml_string_of_jsbytes("<hov 0>"),0],
            caml_string_of_jsbytes("<hov 0>")]],
          [15,
           [17,
            0,
            [17,
             [0,caml_string_of_jsbytes("@,"),0,0],
             [18,
              [1,
               [0,
                [11,caml_string_of_jsbytes("<hov 0>"),0],
                caml_string_of_jsbytes("<hov 0>")]],
              [15,[17,0,[17,0,partial$1]]]]]]]]]],
       caml_string_of_jsbytes("/* @[<v 0>@[<hov 0>%a@]@,@[<hov 0>%a@]@] */")],
     _aj_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _ai_=[0,1],
     _ag_=
      [0,
       [11,caml_string_of_jsbytes("multiple of "),[8,[0,0,3],0,0,0]],
       caml_string_of_jsbytes("multiple of %g")],
     _af_=[0,[11,caml_string_of_jsbytes(", "),0],caml_string_of_jsbytes(", ")],
     _ab_=[0,[12,91,[15,0]],caml_string_of_jsbytes("[%a")],
     _ac_=[0,[12,93,[15,0]],caml_string_of_jsbytes("]%a")],
     _ad_=
      [0,
       [11,caml_string_of_jsbytes("]\xe2\x88\x9e"),0],
       caml_string_of_jsbytes("]\xe2\x88\x9e")],
     ___=[0,[15,[12,93,0]],caml_string_of_jsbytes("%a]")],
     _$_=[0,[15,[12,91,0]],caml_string_of_jsbytes("%a[")],
     _aa_=
      [0,
       [11,caml_string_of_jsbytes("\xe2\x88\x9e["),0],
       caml_string_of_jsbytes("\xe2\x88\x9e[")],
     _ae_=
      [0,
       [11,
        caml_string_of_jsbytes("\xe2\x88\x88 "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("\xe2\x88\x88 %a, %a")],
     _ah_=[0,[15,[15,[15,0]]],caml_string_of_jsbytes("%a%a%a")],
     _W_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("2^"),[8,[0,0,3],0,0,0]]],
       caml_string_of_jsbytes("%s2^%g")],
     _X_=[0,[12,43,[8,[0,0,3],0,0,0]],caml_string_of_jsbytes("+%g")],
     _Y_=[0,[12,45,[8,[0,0,3],0,0,0]],caml_string_of_jsbytes("-%g")],
     _U_=[0,[8,[0,0,3],0,0,0],caml_string_of_jsbytes("%g")],
     _V_=[0,-2.,[0,-1.,[0,0.,[0,1.,[0,2.,0]]]]],
     _Z_=[0,[8,[0,0,0],0,0,0],caml_string_of_jsbytes("%f")],
     _b3_=[0,1],
     _b4_=
      [0,
       [11,
        caml_string_of_jsbytes("At "),
        [15,
         [11,
          caml_string_of_jsbytes(", unexpected "),
          [2,0,[11,caml_string_of_jsbytes(" instead of "),[2,0,0]]]]]],
       caml_string_of_jsbytes("At %a, unexpected %s instead of %s")],
     _b5_=[0,1],
     _b6_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("At "),
         [15,
          [11,
           caml_string_of_jsbytes(", no case matched:"),
           [17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<v 2>At %a, no case matched:@,%a@]")],
     _b7_=[0,1],
     _b8_=
      [0,
       [11,
        caml_string_of_jsbytes("At "),
        [15,
         [11,
          caml_string_of_jsbytes(", unexpected array of size "),
          [4,0,0,0,[11,caml_string_of_jsbytes(" instead of "),[4,0,0,0,0]]]]]],
       caml_string_of_jsbytes
        ("At %a, unexpected array of size %d instead of %d")],
     _b9_=[0,1],
     _b__=
      [0,
       [11,
        caml_string_of_jsbytes("At "),
        [15,[11,caml_string_of_jsbytes(", missing object field "),[2,0,0]]]],
       caml_string_of_jsbytes("At %a, missing object field %s")],
     _b$_=[0,1],
     _ca_=
      [0,
       [11,
        caml_string_of_jsbytes("At "),
        [15,[11,caml_string_of_jsbytes(", unexpected object field "),[2,0,0]]]],
       caml_string_of_jsbytes("At %a, unexpected object field %s")],
     _cb_=[0,1],
     _cc_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("At "),
         [15,
          [11,
           caml_string_of_jsbytes(", bad custom schema:"),
           [17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<v 2>At %a, bad custom schema:@,%a@]")],
     _ck_=
      [0,
       [11,
        caml_string_of_jsbytes("Unexpected "),
        [2,0,[11,caml_string_of_jsbytes(" instead of "),[2,0,0]]]],
       caml_string_of_jsbytes("Unexpected %s instead of %s")],
     _cd_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("No case matched:"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]],
       caml_string_of_jsbytes("@[<v 2>No case matched:@,%a@]")],
     _ce_=
      [0,
       [11,
        caml_string_of_jsbytes("Unexpected array of size "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" instead of "),[4,0,0,0,0]]]],
       caml_string_of_jsbytes("Unexpected array of size %d instead of %d")],
     _cf_=
      [0,
       [11,caml_string_of_jsbytes("Missing object field "),[2,0,0]],
       caml_string_of_jsbytes("Missing object field %s")],
     _cg_=
      [0,
       [11,caml_string_of_jsbytes("Unexpected object field "),[2,0,0]],
       caml_string_of_jsbytes("Unexpected object field %s")],
     _ch_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("bad custom schema:"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]],
       caml_string_of_jsbytes("@[<v 2>bad custom schema:@,%a@]")],
     _ci_=[0,1],
     _cj_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("At "),
         [15,[12,58,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<v 2>At %a:@,%a@]")],
     _b1_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Json_encoding.construct: consequence of non exhaustive Json_encoding.string_enum. Strings are: "),
        [2,0,0]],
       caml_string_of_jsbytes
        ("Json_encoding.construct: consequence of non exhaustive Json_encoding.string_enum. Strings are: %s")],
     _bV_=
      [0,
       [3,0,[11,caml_string_of_jsbytes(" , "),[15,0]]],
       caml_string_of_jsbytes("%S , %a")],
     _bW_=
      [0,
       [3,0,[11,caml_string_of_jsbytes(" or "),[3,0,0]]],
       caml_string_of_jsbytes("%S or %S")],
     _bX_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bY_=[0,caml_string_of_jsbytes("src/json_encoding.ml"),748,20],
     _bZ_=
      [0,
       [11,caml_string_of_jsbytes("string value "),[3,0,0]],
       caml_string_of_jsbytes("string value %S")],
     _b0_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bQ_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _bR_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _bH_=[0,[0,0,0],0],
     _bI_=[0,[0,0,1],0],
     _bK_=[0,caml_string_of_jsbytes("src/json_encoding.ml"),511,40],
     _bJ_=[0,caml_string_of_jsbytes("src/json_encoding.ml"),512,37],
     _bG_=[0,79,0],
     _bF_=[0,79,0],
     _bE_=[0,79,0],
     _bO_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _bP_=runtime.caml_int64_create_lo_mi_hi(1,0,0);
    function repr_uid(param){return [0,0]}
    function view(v){return v}
    function repr(v){return v}
    var repr_uid$0=repr_uid(0),Ezjsonm=[0,view,repr,repr_uid$0];
    function view$0(param)
     {if(typeof param === "number")return 870828711;
      var _oq_=param[1];
      if(708012133 <= _oq_)
       {if(726928360 === _oq_){var l=param[2];return [0,65,l]}
        if(848054398 <= _oq_)
         {if(963043957 <= _oq_){var l$0=param[2];return [0,79,l$0]}
          var l$1=param[2];
          return [0,65,l$1]}
        if(737456202 <= _oq_){var b=param[2];return [0,737456202,b]}
        var _or_=param[2],_os_=_or_[2],_ot_=_or_[1];
        if(_os_){var x=_os_[1];return [0,65,[0,[0,-976970511,_ot_],[0,x,0]]]}
        return [0,-976970511,_ot_]}
      if(3654863 <= _oq_)
       {if(365180284 <= _oq_){var f=param[2];return [0,365180284,f]}
        var i=param[2];
        return [0,365180284,i]}
      if(-752863768 <= _oq_){var i$0=param[2];return [0,-976970511,i$0]}
      var s=param[2];
      return [0,-976970511,s]}
    function repr$0(param)
     {if(typeof param === "number")return 870828711;
      var _op_=param[1];
      if(65 === _op_){var l=param[2];return [0,848054398,l]}
      if(365180284 <= _op_)
       {if(737456202 <= _op_){var b=param[2];return [0,737456202,b]}
        var f=param[2];
        return [0,365180284,f]}
      if(79 <= _op_){var l$0=param[2];return [0,963043957,l$0]}
      var s=param[2];
      return [0,-976970511,s]}
    var repr_uid$1=repr_uid(0),Yojson=[0,view$0,repr$0,repr_uid$1];
    function convert(Repr_f,Repr_t,v)
     {var _oj_=Repr_t[3],_ok_=Repr_f[3];
      _oj_[1] = 0;
      _ok_[1] = [0,v];
      var _oi_=_oj_[1];
      if(_oi_){var r=_oi_[1];return r}
      function conv(v)
       {var v$0=caml_call1(Repr_f[1],v);
        if(typeof v$0 !== "number")
         {var _ol_=v$0[1];
          if(65 === _ol_)
           {var
             values=v$0[2],
             _om_=[0,65,caml_call2(Stdlib_list[17],conv,values)];
            return caml_call1(Repr_t[2],_om_)}
          if(79 === _ol_)
           {var
             values$0=v$0[2],
             _on_=
              function(param){var v=param[2],k=param[1];return [0,k,conv(v)]},
             _oo_=[0,79,caml_call2(Stdlib_list[17],_on_,values$0)];
            return caml_call1(Repr_t[2],_oo_)}}
        return caml_call1(Repr_t[2],v$0)}
      return conv(v)}
    function pp_string(ppf,s)
     {caml_call2(Stdlib_format[123],ppf,_a_);
      var _og_=caml_ml_string_length(s) - 1 | 0,_of_=0;
      if(! (_og_ < 0))
       {var i=_of_;
        for(;;)
         {var c=caml_string_get(s,i);
          if(34 === c)
           caml_call2(Stdlib_format[123],ppf,_c_);
          else
           if(32 <= c)
            if(92 === c)
             caml_call2(Stdlib_format[123],ppf,_d_);
            else
             caml_call3(Stdlib_format[123],ppf,_e_,c);
           else
            {var switch$0=0;
             if(14 <= c)
              switch$0 = 1;
             else
              switch(c)
               {case 8:caml_call2(Stdlib_format[123],ppf,_g_);break;
                case 9:caml_call2(Stdlib_format[123],ppf,_h_);break;
                case 10:caml_call2(Stdlib_format[123],ppf,_i_);break;
                case 13:caml_call2(Stdlib_format[123],ppf,_j_);break;
                default:switch$0 = 1}
             if(switch$0)caml_call3(Stdlib_format[123],ppf,_f_,c)}
          var _oh_=i + 1 | 0;
          if(_og_ !== i){var i=_oh_;continue}
          break}}
      return caml_call2(Stdlib_format[123],ppf,_b_)}
    function pp(opt,_n8_,Repr,ppf,v)
     {if(opt)var sth=opt[1],compact=sth;else var compact=0;
      if(_n8_)
       var sth$0=_n8_[1],pp_string$0=sth$0;
      else
       var pp_string$0=pp_string;
      function pp_compact(ppf,v)
       {var match=caml_call1(Repr[1],v);
        if(typeof match === "number")
         return caml_call2(Stdlib_format[123],ppf,_k_);
        var _oc_=match[1];
        if(65 === _oc_)
         {var
           l=match[2],
           pp_sep=
            function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_l_)},
           _od_=caml_call2(Stdlib_format[119],[0,pp_sep],pp_compact);
          return caml_call4(Stdlib_format[123],ppf,_m_,_od_,l)}
        if(365180284 <= _oc_)
         {if(737456202 <= _oc_)
           return match[2]
                   ?caml_call2(Stdlib_format[123],ppf,_n_)
                   :caml_call2(Stdlib_format[123],ppf,_o_);
          var
           f=match[2],
           match$0=caml_modf_float(f),
           intr=match$0[2],
           fract=match$0[1];
          return fract == 0.
                  ?caml_call3(Stdlib_format[123],ppf,_p_,intr)
                  :caml_call3(Stdlib_format[123],ppf,_q_,f)}
        if(79 <= _oc_)
         {var
           l$0=match[2],
           pp_sep$0=
            function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_r_)},
           pp_field=
            function(ppf,param)
             {var v=param[2],name=param[1];
              return caml_call6
                      (Stdlib_format[123],ppf,_s_,pp_string$0,name,pp_compact,v)},
           _oe_=caml_call2(Stdlib_format[119],[0,pp_sep$0],pp_field);
          return caml_call4(Stdlib_format[123],ppf,_t_,_oe_,l$0)}
        var s=match[2];
        return caml_call2(pp_string$0,ppf,s)}
      function pp_box(ppf,v)
       {var match=caml_call1(Repr[1],v);
        if(typeof match !== "number")
         {var _n9_=match[1];
          if(65 === _n9_)
           {var _n__=match[2];
            if(_n__)
             {var
               pp_sep=
                function(ppf,param)
                 {return caml_call2(Stdlib_format[123],ppf,_u_)},
               _n$_=caml_call2(Stdlib_format[119],[0,pp_sep],pp_box);
              return caml_call4(Stdlib_format[123],ppf,_v_,_n$_,_n__)}
            return caml_call2(Stdlib_format[123],ppf,_w_)}
          if(79 === _n9_)
           {var _oa_=match[2];
            if(_oa_)
             {var
               pp_sep$0=
                function(ppf,param)
                 {return caml_call2(Stdlib_format[123],ppf,_x_)},
               pp_field=
                function(ppf,param)
                 {var v=param[2],name=param[1];
                  return caml_call6
                          (Stdlib_format[123],ppf,_y_,pp_string$0,name,pp_box,v)},
               _ob_=caml_call2(Stdlib_format[119],[0,pp_sep$0],pp_field);
              return caml_call4(Stdlib_format[123],ppf,_z_,_ob_,_oa_)}
            return caml_call2(Stdlib_format[123],ppf,_A_)}}
        return pp_compact(ppf,v)}
      return compact?pp_compact(ppf,v):pp_box(ppf,v)}
    function from_yojson(non_basic)
     {function to_basic(non_basic)
       {if(typeof non_basic === "number")return 870828711;
        var _n3_=non_basic[1];
        if(708012133 <= _n3_)
         {if(726928360 === _n3_)
           {var l=non_basic[2];
            return [0,848054398,caml_call2(Stdlib_list[17],to_basic,l)]}
          if(848054398 <= _n3_)
           {if(963043957 <= _n3_)
             {var
               l$0=non_basic[2],
               _n4_=
                function(param)
                 {var value=param[2],key=param[1];
                  return [0,key,to_basic(value)]};
              return [0,963043957,caml_call2(Stdlib_list[17],_n4_,l$0)]}
            var l$1=non_basic[2];
            return [0,848054398,caml_call2(Stdlib_list[17],to_basic,l$1)]}
          if(737456202 <= _n3_){var b=non_basic[2];return [0,737456202,b]}
          var _n5_=non_basic[2],_n6_=_n5_[2],_n7_=_n5_[1];
          if(_n6_)
           {var x=_n6_[1];
            return [0,848054398,[0,[0,-976970511,_n7_],[0,to_basic(x),0]]]}
          return [0,-976970511,_n7_]}
        if(3654863 <= _n3_)
         {if(365180284 <= _n3_){var f=non_basic[2];return [0,365180284,f]}
          var i=non_basic[2];
          return [0,3654863,i]}
        if(-752863768 <= _n3_){var i$0=non_basic[2];return [0,-976970511,i$0]}
        var s=non_basic[2];
        return [0,-976970511,s]}
      function to_value(param)
       {if(typeof param === "number")return 870828711;
        var _n1_=param[1];
        if(365180284 <= _n1_)
         {if(848054398 <= _n1_)
           {if(963043957 <= _n1_)
             {var
               l=param[2],
               _n2_=
                function(param)
                 {var value=param[2],key=param[1];
                  return [0,key,to_value(value)]};
              return [0,79,caml_call2(Stdlib_list[17],_n2_,l)]}
            var l$0=param[2];
            return [0,65,caml_call2(Stdlib_list[17],to_value,l$0)]}
          if(737456202 <= _n1_){var b=param[2];return [0,737456202,b]}
          var f=param[2];
          return [0,365180284,f]}
        if(3654863 <= _n1_){var i=param[2];return [0,365180284,i]}
        var s=param[2];
        return [0,-976970511,s]}
      return to_value(to_basic(non_basic))}
    function to_yojson(json)
     {function aux(param)
       {if(typeof param === "number")return 870828711;
        var _nZ_=param[1];
        if(65 === _nZ_)
         {var values=param[2];
          return [0,848054398,caml_call2(Stdlib_list[17],aux,values)]}
        if(365180284 <= _nZ_)
         {if(737456202 <= _nZ_){var b=param[2];return [0,737456202,b]}
          var
           f=param[2],
           match=caml_modf_float(f),
           intr=match[2],
           fract=match[1];
          if(fract == 0.)
           {if(-1073741824. <= intr && intr <= 1073741823)
             return [0,3654863,intr | 0];
            return [0,-752863768,caml_call2(Stdlib_printf[4],_B_,intr)]}
          return [0,365180284,f]}
        if(79 <= _nZ_)
         {var
           values$0=param[2],
           _n0_=function(param){var v=param[2],k=param[1];return [0,k,aux(v)]};
          return [0,963043957,caml_call2(Stdlib_list[17],_n0_,values$0)]}
        var s=param[2];
        return [0,-976970511,s]}
      return aux(json)}
    function pp_any(compact,pp_string,param,ppf,_nY_)
     {var v=_nY_[2],repr=_nY_[1];return pp(compact,pp_string,repr,ppf,v)}
    function any_to_repr(repr_t,param)
     {var v=param[2],repr_f=param[1];return convert(repr_f,repr_t,v)}
    function repr_to_any(repr,v){return [0,repr,v]}
    function from_any(repr){var res=any_to_repr(Ezjsonm,repr);return res}
    function to_any(v){return [0,Ezjsonm,v]}
    var
     Json_repr=
      [0,
       repr_uid,
       convert,
       pp,
       Ezjsonm,
       Yojson,
       any_to_repr,
       repr_to_any,
       pp_any,
       from_yojson,
       to_yojson,
       from_any,
       to_any];
    caml_register_global(455,Json_repr,"Json_repr");
    var
     Illegal_pointer_notation=
      [248,cst_Json_query_Illegal_pointer,caml_fresh_oo_id(0)],
     Unsupported_path_item=
      [248,cst_Json_query_Unsupported_pat,caml_fresh_oo_id(0)],
     Cannot_merge=[248,cst_Json_query_Cannot_merge,caml_fresh_oo_id(0)];
    function print_path_as_json_path(opt,ppf,nonempty)
     {if(opt)var sth=opt[1],wildcards=sth;else var wildcards=1;
      if(nonempty)
       {var
         print=
          function(ppf,param)
           {if(param)
             {var _nX_=param[1];
              if(typeof _nX_ === "number")
               {if(926224370 <= _nX_)
                 {var rem=param[2];
                  if(wildcards)
                   return caml_call4(Stdlib_format[123],ppf,_C_,print,rem)}
                else
                 {var rem$0=param[2];
                  if(wildcards)
                   return caml_call4(Stdlib_format[123],ppf,_D_,print,rem$0)}
                throw [0,
                       Unsupported_path_item,
                       926224370,
                       cst_JSON_path_w_o_wildcards]}
              if(331416730 <= _nX_[1])
               {var rem$1=param[2],n=_nX_[2];
                return caml_call5(Stdlib_format[123],ppf,_E_,n,print,rem$1)}
              var rem$2=param[2],n$0=_nX_[2];
              return caml_call5(Stdlib_format[123],ppf,_F_,n$0,print,rem$2)}
            return 0};
        return print(ppf,nonempty)}
      return caml_call2(Stdlib_format[123],ppf,_G_)}
    function print_path_as_json_pointer(opt,ppf,nonempty)
     {if(opt)var sth=opt[1],wildcards=sth;else var wildcards=1;
      if(nonempty)
       {var
         print=
          function(ppf,param)
           {if(param)
             {var _nW_=param[1];
              if(typeof _nW_ === "number")
               {if(926224370 <= _nW_)
                 throw [0,Unsupported_path_item,926224370,cst_JSON_pointer];
                var rem=param[2];
                if(wildcards)
                 return caml_call4(Stdlib_format[123],ppf,_H_,print,rem);
                throw [0,
                       Unsupported_path_item,
                       926224370,
                       cst_JSON_pointer_w_o_wildcards]}
              if(331416730 <= _nW_[1])
               {var rem$0=param[2],n=_nW_[2];
                return caml_call5(Stdlib_format[123],ppf,_I_,n,print,rem$0)}
              var rem$1=param[2],n$0=_nW_[2];
              return caml_call5(Stdlib_format[123],ppf,_J_,n$0,print,rem$1)}
            return 0};
        return print(ppf,nonempty)}
      return caml_call2(Stdlib_format[123],ppf,_K_)}
    function json_pointer_of_path(wildcards,path)
     {function _nT_(_nU_,_nV_)
       {return print_path_as_json_pointer(wildcards,_nU_,_nV_)}
      return caml_call3(Stdlib_format[127],_L_,_nT_,path)}
    function path_of_json_pointer(opt,str)
     {if(opt)var sth=opt[1],wildcards=sth;else var wildcards=1;
      var buf=caml_call1(Stdlib_buffer[1],100),len=caml_ml_string_length(str);
      function interp(param)
       {var field=caml_call1(Stdlib_buffer[2],buf);
        caml_call1(Stdlib_buffer[8],buf);
        if(caml_string_equal(field,cst))
         {if(wildcards)return 870035731;
          throw [0,
                 Unsupported_path_item,
                 870035731,
                 cst_JSON_pointer_w_o_wildcards$0]}
        try
         {var _nR_=[0,-784200974,runtime.caml_int_of_string(field)];
          return _nR_}
        catch(_nS_){return [0,331416730,field]}}
      if(0 === len)return 0;
      if(47 === caml_string_get(str,0))
       {var acc=0,i=1;
        a:
        for(;;)
         {if(len <= i)return caml_call1(Stdlib_list[9],acc);
          if(47 === caml_string_get(str,i)){var i$0=i + 1 | 0,i=i$0;continue}
          var i$1=i;
          for(;;)
           {if(len <= i$1)
             {var _nQ_=[0,interp(0),acc];
              return caml_call1(Stdlib_list[9],_nQ_)}
            var unescaped=caml_string_get(str,i$1);
            if(47 === unescaped)
             {var acc$0=[0,interp(0),acc],acc=acc$0,i=i$1;continue a}
            if(126 === unescaped)
             {if(len <= (i$1 + 1 | 0))
               throw [0,
                      Illegal_pointer_notation,
                      str,
                      i$1,
                      cst_Unterminated_escape_sequen];
              var illegal=caml_string_get(str,i$1);
              if(48 === illegal)
               caml_call2(Stdlib_buffer[10],buf,126);
              else
               {if(49 !== illegal)
                 throw [0,
                        Illegal_pointer_notation,
                        str,
                        i$1 + 1 | 0,
                        cst_Illegal_escape_character];
                caml_call2(Stdlib_buffer[10],buf,47)}
              var i$2=i$1 + 1 | 0,i$1=i$2;
              continue}
            caml_call2(Stdlib_buffer[10],buf,unescaped);
            var i$3=i$1 + 1 | 0,i$1=i$3;
            continue}}}
      throw [0,Illegal_pointer_notation,str,0,cst_Missing_initial_slash]}
    function Make(Repr)
     {function query(path,json)
       {var path$0=path,json$0=json;
        for(;;)
         {var match=caml_call1(Repr[1],json$0);
          if(path$0)
           {var _nF_=path$0[1];
            if(typeof _nF_ === "number")
             {if(926224370 === _nF_ && typeof match !== "number")
               {var _nG_=match[1],_nH_=path$0[2];
                if(65 === _nG_)
                 {var _nI_=match[2];
                  if(_nI_)
                   {var rem=_nI_[2],v=_nI_[1];
                    try
                     {var _nJ_=query(_nH_,v);return _nJ_}
                    catch(_nO_)
                     {_nO_ = caml_wrap_exception(_nO_);
                      if(_nO_ === Stdlib[8])
                       {var json$1=caml_call1(Repr[2],[0,65,rem]),json$0=json$1;
                        continue}
                      throw _nO_}}}
                else
                 if(79 === _nG_)
                  {var _nK_=match[2];
                   if(_nK_)
                    {var rem$0=_nK_[2],match$0=_nK_[1],v$0=match$0[2];
                     try
                      {var _nL_=query(_nH_,v$0);return _nL_}
                     catch(_nP_)
                      {_nP_ = caml_wrap_exception(_nP_);
                       if(_nP_ === Stdlib[8])
                        {var json$2=caml_call1(Repr[2],[0,79,rem$0]),json$0=json$2;
                         continue}
                       throw _nP_}}}}}
            else
             {var _nM_=_nF_[1];
              if(-784200974 === _nM_)
               {if(typeof match !== "number" && 65 === match[1])
                 {var
                   cells=match[2],
                   rempath=path$0[2],
                   i=_nF_[2],
                   i$0=0 <= i?i:caml_call1(Stdlib_list[1],cells) - i | 0,
                   json$3=caml_call2(Stdlib_list[7],cells,i$0),
                   path$0=rempath,
                   json$0=json$3;
                  continue}}
              else
               if
                (331416730
                 ===
                 _nM_
                 &&
                 typeof match
                 !==
                 "number"
                 &&
                 79
                 ===
                 match[1])
                {var _nN_=match[2];
                 if(_nN_)
                  {var
                    rem$1=_nN_[2],
                    match$1=_nN_[1],
                    v$1=match$1[2],
                    n=match$1[1],
                    rempath$0=path$0[2],
                    n$0=_nF_[2];
                   if(caml_string_equal(n$0,n))
                    {var path$0=rempath$0,json$0=v$1;continue}
                   var json$4=caml_call1(Repr[2],[0,79,rem$1]),json$0=json$4;
                   continue}}}
            throw Stdlib[8]}
          return json$0}}
      function query_all(path,json)
       {var res=[0,0];
        function query(path,json)
         {var path$0=path,json$0=json;
          for(;;)
           {var match=caml_call1(Repr[1],json$0);
            if(path$0)
             {var _nx_=path$0[1];
              if(typeof _nx_ === "number")
               {if(926224370 === _nx_ && typeof match !== "number")
                 {var _ny_=match[1],_nz_=path$0[2];
                  if(65 === _ny_)
                   {var
                     cells=match[2],
                     _nA_=function(_nE_){return query(_nz_,_nE_)};
                    return caml_call2(Stdlib_list[15],_nA_,cells)}
                  if(79 === _ny_)
                   {var
                     fields=match[2],
                     _nB_=function(param){var v=param[2];return query(_nz_,v)};
                    return caml_call2(Stdlib_list[15],_nB_,fields)}}}
              else
               {var _nC_=_nx_[1];
                if(-784200974 === _nC_)
                 {if(typeof match !== "number" && 65 === match[1])
                   {var
                     cells$0=match[2],
                     rempath=path$0[2],
                     i=_nx_[2],
                     i$0=0 <= i?i:caml_call1(Stdlib_list[1],cells$0) - i | 0,
                     json$1=caml_call2(Stdlib_list[7],cells$0,i$0),
                     path$0=rempath,
                     json$0=json$1;
                    continue}}
                else
                 if
                  (331416730
                   ===
                   _nC_
                   &&
                   typeof match
                   !==
                   "number"
                   &&
                   79
                   ===
                   match[1])
                  {var _nD_=match[2];
                   if(_nD_)
                    {var
                      rem=_nD_[2],
                      match$0=_nD_[1],
                      v=match$0[2],
                      n=match$0[1],
                      rempath$0=path$0[2],
                      n$0=_nx_[2];
                     if(caml_string_equal(n$0,n))
                      {var path$0=rempath$0,json$0=v;continue}
                     var json$2=caml_call1(Repr[2],[0,79,rem]),json$0=json$2;
                     continue}}}
              return 0}
            res[1] = [0,json$0,res[1]];
            return 0}}
        query(path,json);
        return res[1]}
      function _mT_(param,_nw_)
       {var r=_nw_[1],l=param[1];return caml_string_compare(l,r)}
      var sort_fields=caml_call1(Stdlib_list[51],_mT_);
      function equals(l,r)
       {function canon(v)
         {var match=caml_call1(Repr[1],v);
          if(typeof match !== "number")
           {var _ns_=match[1];
            if(65 === _ns_)
             {var l=match[2],_nt_=[0,65,caml_call2(Stdlib_list[17],canon,l)];
              return caml_call1(Repr[2],_nt_)}
            if(79 === _ns_)
             {var
               l$0=match[2],
               _nu_=
                function(param)
                 {var o=param[2],n=param[1];return [0,n,canon(o)]},
               _nv_=
                [0,
                 79,
                 caml_call1(sort_fields,caml_call2(Stdlib_list[17],_nu_,l$0))];
              return caml_call1(Repr[2],_nv_)}}
          return v}
        var _nr_=canon(r);
        return caml_equal(canon(l),_nr_)}
      function merge(l,r)
       {function merge(path,l,r)
         {var
           match=caml_call1(Repr[1],l),
           match$0=caml_call1(Repr[1],r),
           switch$0=0;
          if(typeof match === "number")
           {if(870828711 === match){var v=match$0;switch$0 = 1}}
          else
           {var _nn_=match[1];
            if(65 === _nn_)
             {if(typeof match$0 !== "number" && 65 === match$0[1])
               {var r$0=match$0[2],l$0=match[2],i=0,acc=0,l$2=l$0,r$2=r$0;
                for(;;)
                 {if(l$2)
                   {if(r$2)
                     {var
                       rs=r$2[2],
                       r$3=r$2[1],
                       ls=l$2[2],
                       l$3=l$2[1],
                       item=merge([0,[0,-784200974,i],path],l$3,r$3),
                       acc$0=[0,item,acc],
                       i$0=i + 1 | 0,
                       i=i$0,
                       acc=acc$0,
                       l$2=ls,
                       r$2=rs;
                      continue}
                    var rem=l$2}
                  else
                   var rem=r$2;
                  var _no_=[0,65,caml_call2(Stdlib_list[12],acc,rem)];
                  return caml_call1(Repr[2],_no_)}}}
            else
             if
              (79
               ===
               _nn_
               &&
               typeof match$0
               !==
               "number"
               &&
               79
               ===
               match$0[1])
              {var
                r$1=match$0[2],
                l$1=match[2],
                last=caml_call1(sort_fields,caml_call2(Stdlib[37],l$1,r$1)),
                last$0=last;
               for(;;)
                {if(last$0)
                  {var _np_=last$0[2];
                   if(_np_)
                    {var
                      rem$0=_np_[2],
                      _nq_=_np_[1],
                      rv=_nq_[2],
                      rf=_nq_[1],
                      match$1=last$0[1],
                      lv=match$1[2],
                      lf=match$1[1];
                     if(caml_string_equal(lf,rf))
                      {merge([0,[0,331416730,lf],path],lv,rv);
                       var last$0=rem$0;
                       continue}
                     var last$0=_np_;
                     continue}}
                 return caml_call1(Repr[2],[0,79,last$0])}}}
          if(! switch$0)
           {if(870828711 !== match$0)
             {if(equals(l,r))return l;
              throw [0,Cannot_merge,caml_call1(Stdlib_list[9],path)]}
            var v=match}
          return caml_call1(Repr[2],v)}
        return merge(0,l,r)}
      function _mU_(opt,path,value,root)
       {if(opt)var sth=opt[1],merge$0=sth;else var merge$0=merge;
        function revpath(sub)
         {var acc=0,l=path;
          for(;;)
           {if(l === sub)return caml_call1(Stdlib_list[9],acc);
            if(l)
             {var l$0=l[2],item=l[1],acc$0=[0,item,acc],acc=acc$0,l=l$0;
              continue}
            throw [0,Assert_failure,_M_]}}
        function merge$1(path,l,r)
         {try
           {var _nm_=caml_call2(merge$0,l,r);return _nm_}
          catch(exn)
           {exn = caml_wrap_exception(exn);
            if(exn[1] === Cannot_merge)
             {var sub=exn[2],_nl_=revpath(path);
              throw [0,Cannot_merge,caml_call2(Stdlib[37],_nl_,sub)]}
            throw exn}}
        function nulls(acc,n,last)
         {var acc$0=acc,n$0=n;
          for(;;)
           {if(0 < n$0)
             {var
               n$1=n$0 - 1 | 0,
               acc$1=[0,caml_call1(Repr[2],870828711),acc$0],
               acc$0=acc$1,
               n$0=n$1;
              continue}
            return caml_call1(Stdlib_list[9],[0,last,acc$0])}}
        function insert(root,path)
         {if(root)
           var repr=root[1],root$0=[0,caml_call1(Repr[1],repr)];
          else
           var root$0=0;
          if(path)
           {var _mV_=path[1],switch$0=0;
            if(typeof _mV_ === "number")
             if(926224370 <= _mV_)
              {var _mW_=path[2];
               if(root$0)
                {var _mX_=root$0[1];
                 if(typeof _mX_ !== "number")
                  {var _mZ_=_mX_[1];
                   if(65 === _mZ_)
                    {var
                      cells=_mX_[2],
                      _m0_=function(root){return insert([0,root],_mW_)},
                      _m1_=[0,65,caml_call2(Stdlib_list[17],_m0_,cells)];
                     return caml_call1(Repr[2],_m1_)}
                   if(79 === _mZ_)
                    {var
                      fields=_mX_[2],
                      _m2_=
                       function(param)
                        {var root=param[2],n=param[1];
                         return [0,n,insert([0,root],_mW_)]},
                      _m3_=[0,79,caml_call2(Stdlib_list[17],_m2_,fields)];
                     return caml_call1(Repr[2],_m3_)}}
                 if(! _mW_)
                  {var root$1=root$0[1];
                   return merge$1(path,value,caml_call1(Repr[2],root$1))}}}
             else
              {var _m4_=path[2];
               if(root$0)
                {var _m5_=root$0[1];
                 if(typeof _m5_ !== "number" && 65 === _m5_[1])
                  {var
                    cells$0=_m5_[2],
                    _m6_=[0,insert(0,_m4_),0],
                    _m7_=caml_call1(Stdlib_list[9],cells$0),
                    _m8_=[0,65,caml_call2(Stdlib_list[12],_m7_,_m6_)];
                   return caml_call1(Repr[2],_m8_)}}}
            else
             if(331416730 <= _mV_[1])
              {var _m9_=path[2],_m__=_mV_[2];
               if(! root$0)
                {var _nb_=[0,79,[0,[0,_m__,insert(0,_m9_)],0]];
                 return caml_call1(Repr[2],_nb_)}
               var _m$_=root$0[1];
               if(typeof _m$_ === "number")
                switch$0 = 1;
               else
                {if(79 === _m$_[1])
                  {var fields$0=_m$_[2],acc=0,fields$1=fields$0;
                   for(;;)
                    {if(fields$1)
                      {var
                        other=fields$1[1],
                        rem=fields$1[2],
                        root$2=other[2],
                        n=other[1];
                       if(! caml_string_equal(_m__,n))
                        {var
                          fields$2=fields$1[2],
                          acc$0=[0,other,acc],
                          acc=acc$0,
                          fields$1=fields$2;
                         continue}
                       var
                        _nh_=[0,[0,_m__,insert([0,root$2],_m9_)],acc],
                        _na_=caml_call2(Stdlib_list[12],_nh_,rem)}
                     else
                      var
                       _ni_=[0,[0,_m__,insert(0,_m9_)],acc],
                       _na_=caml_call1(Stdlib_list[9],_ni_);
                     return caml_call1(Repr[2],[0,79,_na_])}}
                 switch$0 = 1}}
             else
              {var _nc_=_mV_[2];
               if(root$0)
                {var _nd_=root$0[1];
                 if(typeof _nd_ !== "number" && 65 === _nd_[1])
                  {var
                    cells$1=_nd_[2],
                    rempath$1=path[2],
                    i=
                     0 <= _nc_?_nc_:caml_call1(Stdlib_list[1],cells$1) - _nc_ | 0;
                   if(i < 0)throw [0,Cannot_merge,revpath(path)];
                   var acc$1=0,n$0=i,cells$2=cells$1;
                   for(;;)
                    {if(cells$2)
                      {var _nj_=cells$2[1];
                       if(0 !== n$0)
                        {var
                          cells$3=cells$2[2],
                          n$1=n$0 - 1 | 0,
                          acc$2=[0,_nj_,acc$1],
                          acc$1=acc$2,
                          n$0=n$1,
                          cells$2=cells$3;
                         continue}
                       var
                        rem$0=cells$2[2],
                        _nk_=[0,insert([0,_nj_],rempath$1),acc$1],
                        _ng_=caml_call2(Stdlib_list[12],_nk_,rem$0)}
                     else
                      var _ng_=nulls(acc$1,n$0,insert(0,rempath$1));
                     return caml_call1(Repr[2],[0,65,_ng_])}}}
               if(0 !== _nc_)
                {if(! root$0)
                  {var rempath$0=path[2];
                   if(_nc_ < 0)throw [0,Cannot_merge,revpath(path)];
                   var
                    _ne_=insert(0,rempath$0),
                    _nf_=
                     [0,65,nulls(0,caml_call2(Stdlib[17],0,_nc_ - 1 | 0),_ne_)];
                   return caml_call1(Repr[2],_nf_)}
                 switch$0 = 1}}
            if(! switch$0 && ! root$0)
             {var rempath=path[2],_mY_=[0,65,[0,insert(0,rempath),0]];
              return caml_call1(Repr[2],_mY_)}
            throw [0,Cannot_merge,revpath(path)]}
          if(root$0)
           {var value$0=root$0[1];
            return merge$1(path,value,caml_call1(Repr[2],value$0))}
          return value}
        return insert([0,root],path)}
      function replace(path,value,root)
       {return _mU_([0,function(value,prev){return value}],path,value,root)}
      function insert(path,value,root){return _mU_(0,path,value,root)}
      return [0,query,query_all,sort_fields,equals,merge,replace,insert]}
    function print_error(print_unknown,ppf,exn)
     {if(exn[1] === Illegal_pointer_notation)
       {var msg=exn[4],pos=exn[3],notation=exn[2];
        return caml_call5(Stdlib_format[123],ppf,_N_,pos,notation,msg)}
      if(exn[1] === Unsupported_path_item)
       {var
         msg$0=exn[3],
         item=exn[2],
         _mN_=
          typeof item === "number"
           ?926224370 <= item?cst_wildcard:cst_array_append
           :331416730 <= item[1]?cst_field_access:cst_array_access;
        return caml_call4(Stdlib_format[123],ppf,_O_,_mN_,msg$0)}
      if(exn[1] === Cannot_merge)
       {var _mO_=exn[2];
        if(_mO_)
         {var
           _mP_=
            function(_mR_,_mS_){return print_path_as_json_path(_P_,_mR_,_mS_)};
          return caml_call4(Stdlib_format[123],ppf,_Q_,_mP_,_mO_)}
        return caml_call2(Stdlib_format[123],ppf,_R_)}
      if(print_unknown)
       {var print_unknown$0=print_unknown[1];
        return caml_call2(print_unknown$0,ppf,exn)}
      var _mQ_=caml_call1(Stdlib_printexc[1],exn);
      return caml_call3(Stdlib_format[123],ppf,_S_,_mQ_)}
    var
     include=Make(Ezjsonm),
     query=include[1],
     query_all=include[2],
     merge=include[5],
     replace=include[6],
     insert=include[7];
    function _T_(_mL_)
     {var _mM_=Make(_mL_);return [0,_mM_[1],_mM_[2],_mM_[7],_mM_[6],_mM_[5]]}
    var
     Json_query=
      [0,
       print_path_as_json_pointer,
       print_path_as_json_path,
       json_pointer_of_path,
       path_of_json_pointer,
       query,
       query_all,
       insert,
       replace,
       merge,
       Cannot_merge,
       Illegal_pointer_notation,
       Unsupported_path_item,
       print_error,
       _T_];
    caml_register_global(460,Json_query,"Json_query");
    function element(kind){return [0,0,0,0,0,kind,0,0]}
    function option_map(f,param)
     {if(param){var v=param[1];return [0,caml_call1(f,v)]}return 0}
    function eq_element(a,b)
     {var _ly_=a === b?1:0;
      if(_ly_)
       var _lz_=_ly_;
      else
       {var _lA_=caml_equal(a[1],b[1]);
        if(_lA_)
         {var _lB_=caml_equal(a[2],b[2]);
          if(_lB_)
           {var
             _lC_=option_map(from_any,b[3]),
             _lD_=caml_equal(option_map(from_any,a[3]),_lC_);
            if(_lD_)
             {var
               _lE_=b[4],
               _lF_=option_map(caml_call1(Stdlib_list[17],from_any),_lE_),
               _lG_=a[4],
               _lH_=
                caml_equal
                 (option_map(caml_call1(Stdlib_list[17],from_any),_lG_),_lF_);
              if(_lH_)
               {var _lI_=b[5],_lJ_=a[5],switch$0=0;
                if(typeof _lJ_ === "number")
                 switch(_lJ_)
                  {case 0:
                    if(typeof _lI_ === "number" && ! _lI_)
                     {var _lK_=1;switch$0 = 1}
                    break;
                   case 1:
                    if(typeof _lI_ === "number" && 1 === _lI_)
                     {var _lK_=1;switch$0 = 1}
                    break;
                   case 2:
                    if(typeof _lI_ === "number" && 2 === _lI_)
                     {var _lK_=1;switch$0 = 1}
                    break;
                   default:
                    if(typeof _lI_ === "number" && 3 <= _lI_)
                     {var _lK_=1;switch$0 = 1}}
                else
                 switch(_lJ_[0])
                  {case 0:
                    if(typeof _lI_ !== "number" && 0 === _lI_[0])
                     {var
                       ab=_lI_[1],
                       aa=_lJ_[1],
                       _lW_=aa[4] === ab[4]?1:0,
                       switch$1=0;
                      if(_lW_)
                       {var _lX_=caml_equal(aa[5],ab[5]);
                        if(_lX_)
                         {var
                           _lY_=caml_call2(Stdlib_list[51],caml_compare,ab[7]),
                           _lZ_=
                            caml_equal
                             (caml_call2(Stdlib_list[51],caml_compare,aa[7]),_lY_);
                          if(_lZ_)
                           {var _l0_=aa[3],_l1_=ab[3],switch$2=0;
                            if(_l0_)
                             if(_l1_)
                              var b$0=_l1_[1],a$0=_l0_[1],_l2_=eq_element(a$0,b$0);
                             else
                              switch$2 = 1;
                            else
                             if(_l1_)switch$2 = 1;else var _l2_=1;
                            if(switch$2)var _l2_=0;
                            if(_l2_)
                             {var
                               _l3_=caml_call1(Stdlib_list[1],ab[2]),
                               _l4_=caml_call1(Stdlib_list[1],aa[2]) === _l3_?1:0;
                              if(_l4_)
                               {var
                                 _l5_=ab[2],
                                 _l6_=
                                  function(param,_mK_)
                                   {var y=_mK_[1],x=param[1];return caml_string_compare(x,y)},
                                 _l7_=caml_call2(Stdlib_list[51],_l6_,_l5_),
                                 _l8_=aa[2],
                                 _l9_=
                                  function(param,_mJ_)
                                   {var y=_mJ_[1],x=param[1];return caml_string_compare(x,y)},
                                 _l__=caml_call2(Stdlib_list[51],_l9_,_l8_),
                                 _l$_=
                                  function(param,_mH_)
                                   {var
                                     eb=_mH_[2],
                                     nb=_mH_[1],
                                     ea=param[2],
                                     na=param[1],
                                     _mI_=caml_string_equal(na,nb);
                                    return _mI_?eq_element(ea,eb):_mI_},
                                 _ma_=caml_call3(Stdlib_list[31],_l$_,_l__,_l7_);
                                if(_ma_)
                                 {var
                                   _mb_=caml_call1(Stdlib_list[1],ab[6]),
                                   _mc_=caml_call1(Stdlib_list[1],aa[6]) === _mb_?1:0;
                                  if(_mc_)
                                   {var
                                     _md_=ab[6],
                                     _me_=
                                      function(param,_mG_)
                                       {var y=_mG_[1],x=param[1];return caml_string_compare(x,y)},
                                     _mf_=caml_call2(Stdlib_list[51],_me_,_md_),
                                     _mg_=aa[6],
                                     _mh_=
                                      function(param,_mF_)
                                       {var y=_mF_[1],x=param[1];return caml_string_compare(x,y)},
                                     _mi_=caml_call2(Stdlib_list[51],_mh_,_mg_),
                                     _mj_=
                                      function(param,_mD_)
                                       {var
                                         eb=_mD_[2],
                                         nb=_mD_[1],
                                         ea=param[2],
                                         na=param[1],
                                         _mE_=caml_string_equal(na,nb);
                                        return _mE_?eq_element(ea,eb):_mE_},
                                     _mk_=caml_call3(Stdlib_list[31],_mj_,_mi_,_mf_);
                                    if(_mk_)
                                     {var
                                       _ml_=caml_call1(Stdlib_list[1],ab[1]),
                                       _mm_=caml_call1(Stdlib_list[1],aa[1]) === _ml_?1:0;
                                      if(_mm_)
                                       {var
                                         _mn_=ab[1],
                                         _mo_=
                                          function(param,_mC_)
                                           {var y=_mC_[1],x=param[1];return caml_string_compare(x,y)},
                                         _mp_=caml_call2(Stdlib_list[51],_mo_,_mn_),
                                         _mq_=aa[1],
                                         _mr_=
                                          function(param,_mB_)
                                           {var y=_mB_[1],x=param[1];return caml_string_compare(x,y)},
                                         _ms_=caml_call2(Stdlib_list[51],_mr_,_mq_),
                                         _mt_=
                                          function(param,_mv_)
                                           {var
                                             db=_mv_[4],
                                             rb=_mv_[3],
                                             eb=_mv_[2],
                                             nb=_mv_[1],
                                             da=param[4],
                                             ra=param[3],
                                             ea=param[2],
                                             na=param[1],
                                             _mw_=caml_string_equal(na,nb);
                                            if(_mw_)
                                             {var _mx_=eq_element(ea,eb);
                                              if(_mx_)
                                               {var _my_=ra === rb?1:0;
                                                if(_my_)
                                                 var
                                                  _mz_=option_map(from_any,db),
                                                  _mA_=caml_equal(option_map(from_any,da),_mz_);
                                                else
                                                 var _mA_=_my_}
                                              else
                                               var _mA_=_mx_}
                                            else
                                             var _mA_=_mw_;
                                            return _mA_},
                                         _lM_=caml_call3(Stdlib_list[31],_mt_,_ms_,_mp_);
                                        switch$1 = 1}
                                      else
                                       var _mu_=_mm_}
                                    else
                                     var _mu_=_mk_}
                                  else
                                   var _mu_=_mc_}
                                else
                                 var _mu_=_ma_}
                              else
                               var _mu_=_l4_}
                            else
                             var _mu_=_l2_}
                          else
                           var _mu_=_lZ_}
                        else
                         var _mu_=_lX_}
                      else
                       var _mu_=_lW_;
                      if(! switch$1)var _lM_=_mu_;
                      var _lK_=_lM_;
                      switch$0 = 1}
                    break;
                   case 1:
                    if(typeof _lI_ !== "number" && 1 === _lI_[0])
                     {var
                       sb=_lI_[2],
                       esb=_lI_[1],
                       sa=_lJ_[2],
                       esa=_lJ_[1],
                       _lN_=caml_call1(Stdlib_list[1],esb),
                       _lO_=caml_call1(Stdlib_list[1],esa) === _lN_?1:0,
                       switch$3=0;
                      if(_lO_)
                       {var _lP_=caml_call3(Stdlib_list[31],eq_element,esa,esb);
                        if(_lP_)
                         {var _lK_=eq_array_specs(sa,sb);switch$0 = 1;switch$3 = 1}
                        else
                         var _lQ_=_lP_}
                      else
                       var _lQ_=_lO_;
                      if(! switch$3){var _lK_=_lQ_;switch$0 = 1}}
                    break;
                   case 2:
                    if(typeof _lI_ !== "number" && 2 === _lI_[0])
                     {var
                       sb$0=_lI_[2],
                       eb=_lI_[1],
                       sa$0=_lJ_[2],
                       ea=_lJ_[1],
                       _lR_=eq_element(ea,eb);
                      if(_lR_)
                       {var _lK_=eq_array_specs(sa$0,sb$0);switch$0 = 1}
                      else
                       {var _lK_=_lR_;switch$0 = 1}}
                    break;
                   case 3:
                    if(typeof _lI_ !== "number" && 3 === _lI_[0])
                     {var
                       esb$0=_lI_[2],
                       cb=_lI_[1],
                       esa$0=_lJ_[2],
                       ca=_lJ_[1],
                       _lS_=ca === cb?1:0,
                       switch$4=0;
                      if(_lS_)
                       {var
                         _lT_=caml_call1(Stdlib_list[1],esb$0),
                         _lU_=caml_call1(Stdlib_list[1],esa$0) === _lT_?1:0;
                        if(_lU_)
                         {var
                           _lK_=
                            caml_call3(Stdlib_list[31],eq_element,esa$0,esb$0);
                          switch$0 = 1;
                          switch$4 = 1}
                        else
                         var _lV_=_lU_}
                      else
                       var _lV_=_lS_;
                      if(! switch$4){var _lK_=_lV_;switch$0 = 1}}
                    break;
                   case 4:
                    if(typeof _lI_ !== "number" && 4 === _lI_[0])
                     {var pb=_lI_[1],pa=_lJ_[1],_lK_=caml_equal(pa,pb);
                      switch$0 = 1}
                    break;
                   case 5:
                    if(typeof _lI_ !== "number" && 5 === _lI_[0])
                     {var rb=_lI_[1],ra=_lJ_[1],_lK_=caml_string_equal(ra,rb);
                      switch$0 = 1}
                    break;
                   case 6:
                    if(typeof _lI_ !== "number" && 6 === _lI_[0])
                     {var rb$0=_lI_[1],ra$0=_lJ_[1],_lK_=caml_equal(ra$0,rb$0);
                      switch$0 = 1}
                    break;
                   case 7:
                    if(typeof _lI_ !== "number" && 7 === _lI_[0])
                     {var sb$1=_lI_[1],sa$1=_lJ_[1],_lK_=caml_equal(sa$1,sb$1);
                      switch$0 = 1}
                    break;
                   case 8:
                    if(typeof _lI_ !== "number" && 8 === _lI_[0])
                     {var nb=_lI_[1],na=_lJ_[1],_lK_=caml_equal(na,nb);
                      switch$0 = 1}
                    break;
                   default:
                    if(typeof _lI_ !== "number" && 9 === _lI_[0])
                     {var nb$0=_lI_[1],na$0=_lJ_[1],_lK_=caml_equal(na$0,nb$0);
                      switch$0 = 1}}
                if(! switch$0)var _lK_=0;
                if(_lK_)
                 var
                  _lL_=caml_equal(a[6],b[6]),
                  _lz_=_lL_?caml_equal(a[7],b[7]):_lL_;
                else
                 var _lz_=_lK_}
              else
               var _lz_=_lH_}
            else
             var _lz_=_lD_}
          else
           var _lz_=_lB_}
        else
         var _lz_=_lA_}
      return _lz_}
    function eq_array_specs(a,b)
     {var _ls_=a[1] === b[1]?1:0;
      if(_ls_)
       {var _lt_=caml_equal(a[2],b[2]);
        if(_lt_)
         {var _lu_=a[3] === b[3]?1:0;
          if(_lu_)
           {var _lv_=a[4],_lw_=b[4];
            if(_lv_)
             {if(_lw_){var b$0=_lw_[1],a$0=_lv_[1];return eq_element(a$0,b$0)}}
            else
             if(! _lw_)return 1;
            var _lx_=0}
          else
           var _lx_=_lu_}
        else
         var _lx_=_lt_}
      else
       var _lx_=_ls_;
      return _lx_}
    function pp_string$0(ppf,s){return pp(0,0,Ezjsonm,ppf,[0,-976970511,s])}
    function pp_num(ppf,m)
     {if(Math.abs(m) < 1000.)return caml_call3(Stdlib_format[123],ppf,_U_,m);
      if(m < 0.)var m$0=- m,pos=0;else var m$0=m,pos=1;
      var _lj_=0;
      function _lk_(acc,d)
       {if(acc)return acc;
        var v=Math.log(m$0 + d) / 0.693147180559945286;
        if(Math.abs(Math.ceil(v) - v) < 1e-05)
         {var _ll_=pos?cst$0:cst$1;
          caml_call4(Stdlib_format[123],ppf,_W_,_ll_,v);
          var _lm_=pos?d < 0.?1:0:pos;
          if(_lm_)
           var _ln_=_lm_;
          else
           var _lr_=1 - pos,_ln_=_lr_?0. < d?1:0:_lr_;
          if(_ln_)caml_call3(Stdlib_format[123],ppf,_X_,Math.abs(d));
          var _lo_=pos?0. < d?1:0:pos;
          if(_lo_)
           var _lp_=_lo_;
          else
           var _lq_=1 - pos,_lp_=_lq_?d < 0.?1:0:_lq_;
          if(_lp_)caml_call3(Stdlib_format[123],ppf,_Y_,Math.abs(d));
          return 1}
        return 0}
      return caml_call3(Stdlib_list[22],_lk_,_lj_,_V_)
              ?0
              :caml_call3(Stdlib_format[123],ppf,_Z_,m$0)}
    function pp_numeric_specs(ppf,param)
     {var
       maximum=param[3],
       minimum=param[2],
       multiple_of=param[1],
       _k9_=[0,minimum,maximum];
      function _k__(ppf,param)
       {var _lc_=param[1];
        if(! _lc_ && ! param[2])return 0;
        var maximum=param[2];
        function _ld_(ppf,param)
         {if(param)
           {var _lh_=param[1],_li_=_lh_[1];
            return 672226188 <= _lh_[2]
                    ?caml_call4(Stdlib_format[123],ppf,___,pp_num,_li_)
                    :caml_call4(Stdlib_format[123],ppf,_$_,pp_num,_li_)}
          return caml_call2(Stdlib_format[123],ppf,_aa_)}
        function _le_(ppf,param)
         {if(param)
           {var _lf_=param[1],_lg_=_lf_[1];
            return 672226188 <= _lf_[2]
                    ?caml_call4(Stdlib_format[123],ppf,_ab_,pp_num,_lg_)
                    :caml_call4(Stdlib_format[123],ppf,_ac_,pp_num,_lg_)}
          return caml_call2(Stdlib_format[123],ppf,_ad_)}
        return caml_call6(Stdlib_format[123],ppf,_ae_,_le_,_lc_,_ld_,maximum)}
      var _k$_=[0,multiple_of,minimum,maximum];
      function _la_(ppf,param)
       {if(param[1])
         {var switch$0=0;
          if(! param[2] && ! param[3])switch$0 = 1;
          if(! switch$0)return caml_call2(Stdlib_format[123],ppf,_af_)}
        return 0}
      function _lb_(ppf,param)
       {if(param)
         {var v=param[1];return caml_call3(Stdlib_format[123],ppf,_ag_,v)}
        return 0}
      return caml_call8
              (Stdlib_format[123],
               ppf,
               _ah_,
               _lb_,
               multiple_of,
               _la_,
               _k$_,
               _k__,
               _k9_)}
    function pp_path(ppf,path)
     {if(path)
       {var _k6_=path[1];
        if
         (typeof _k6_
          !==
          "number"
          &&
          331416730
          ===
          _k6_[1]
          &&
          !
          caml_string_notequal(_k6_[2],cst_definitions))
         {var _k7_=path[2];
          if(_k7_)
           {var _k8_=_k7_[1];
            if(typeof _k8_ !== "number" && 331416730 === _k8_[1] && ! _k7_[2])
             {var name=_k8_[2];
              return caml_call3(Stdlib_format[123],ppf,_aj_,name)}}}}
      return print_path_as_json_path(_ai_,ppf,path)}
    function pp_desc(element)
     {var _k2_=element[1];
      if(_k2_)
       {var _k3_=element[2],_k4_=_k2_[1];
        if(_k3_)
         {var description=_k3_[1];
          return [0,
                  function(ppf,param)
                   {return caml_call6
                            (Stdlib_format[123],
                             ppf,
                             _ak_,
                             Stdlib_format[120],
                             _k4_,
                             Stdlib_format[120],
                             description)}]}
        var text=_k4_}
      else
       {var _k5_=element[2];if(! _k5_)return 0;var text=_k5_[1]}
      return [0,
              function(ppf,param)
               {return caml_call4
                        (Stdlib_format[123],ppf,_al_,Stdlib_format[120],text)}]}
    function pp_element(ppf,element)
     {var _ks_=element[7];
      if(_ks_)
       {var id=_ks_[1];return caml_call3(Stdlib_format[123],ppf,_am_,id)}
      var _kt_=element[6];
      if(_kt_)
       {var format=_kt_[1];
        return caml_call3(Stdlib_format[123],ppf,_an_,format)}
      var _ku_=element[4];
      if(_ku_)
       {var
         cases=_ku_[1],
         pp_sep=
          function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_ao_)},
         _kv_=0,
         _kw_=0,
         _kx_=function(_k0_,_k1_){return pp_any(_ap_,_kw_,_kv_,_k0_,_k1_)},
         _ky_=caml_call2(Stdlib_format[119],[0,pp_sep],_kx_);
        return caml_call4(Stdlib_format[123],ppf,_aq_,_ky_,cases)}
      var match=pp_desc(element);
      if(match)
       {var
         pp_desc$0=match[1],
         stripped=
          [0,0,0,element[3],element[4],element[5],element[6],element[7]],
         _kz_=element[5];
        if(typeof _kz_ !== "number")
         switch(_kz_[0])
          {case 0:
            var specs=_kz_[1];
            return caml_call6
                    (Stdlib_format[123],
                     ppf,
                     _as_,
                     pp_desc$0,
                     0,
                     pp_object_contents,
                     specs);
           case 3:
            return caml_call6
                    (Stdlib_format[123],
                     ppf,
                     _at_,
                     pp_desc$0,
                     0,
                     pp_element,
                     stripped)
           }
        return caml_call6
                (Stdlib_format[123],ppf,_ar_,pp_element,stripped,pp_desc$0,0)}
      var _kA_=element[5];
      if(typeof _kA_ === "number")
       switch(_kA_)
        {case 0:return caml_call2(Stdlib_format[123],ppf,_au_);
         case 1:return caml_call2(Stdlib_format[123],ppf,_av_);
         case 2:return caml_call2(Stdlib_format[123],ppf,_aw_);
         default:throw [0,Assert_failure,_ax_]}
      else
       switch(_kA_[0])
        {case 0:
          var _kB_=_kA_[1];
          if(! _kB_[1] && ! _kB_[2] && ! _kB_[3] && 0 === _kB_[4])
           {var _kC_=_kB_[5];
            if(_kC_ && 0 === _kC_[1] && ! _kB_[6] && ! _kB_[7])
             return caml_call2(Stdlib_format[123],ppf,_az_)}
          return caml_call4
                  (Stdlib_format[123],ppf,_ay_,pp_object_contents,_kB_);
         case 1:
          var _kD_=_kA_[2],_kF_=_kD_[2],switch$0=0,_kE_=_kA_[1];
          if(_kF_ && 0 === _kF_[1])switch$0 = 1;
          if(! switch$0)
           {var
             additional_items=_kD_[4],
             first=[0,1],
             pp_sep$0=
              function(ppf,param)
               {return first[1]
                        ?(first[1] = 0,0)
                        :caml_call2(Stdlib_format[123],ppf,_aB_)};
            caml_call2(Stdlib_format[123],ppf,_aC_);
            var
             _kG_=
              function(elt)
               {return caml_call6
                        (Stdlib_format[123],ppf,_aD_,pp_sep$0,0,pp_element,elt)};
            caml_call2(Stdlib_list[15],_kG_,_kE_);
            if(additional_items)
             {var _kH_=additional_items[1],_kI_=_kH_[5],switch$1=0;
              if(typeof _kI_ === "number" && 2 === _kI_)
               {caml_call4(Stdlib_format[123],ppf,_aE_,pp_sep$0,0);
                switch$1 = 1}
              if(! switch$1)
               caml_call6
                (Stdlib_format[123],ppf,_aG_,pp_sep$0,0,pp_element,_kH_)}
            return caml_call2(Stdlib_format[123],ppf,_aF_)}
          break;
         case 2:
          var _kJ_=_kA_[2],_kK_=_kJ_[2],_kL_=_kA_[1],switch$2=0;
          if(_kK_ && 0 === _kK_[1])switch$2 = 1;
          if(! switch$2)
           {var _kM_=_kJ_[4];
            if(_kM_)
             {var _kN_=_kM_[1],_kO_=_kN_[5];
              if(typeof _kO_ === "number" && 2 === _kO_)
               return caml_call4(Stdlib_format[123],ppf,_aH_,pp_element,_kL_);
              return caml_call6
                      (Stdlib_format[123],
                       ppf,
                       _aI_,
                       pp_element,
                       _kL_,
                       pp_element,
                       _kN_)}
            return caml_call4(Stdlib_format[123],ppf,_aJ_,pp_element,_kL_)}
          break;
         case 3:
          var _kP_=_kA_[1];
          if(3 <= _kP_)
           {var _kQ_=_kA_[2];
            if(_kQ_ && ! _kQ_[2])
             {var elt=_kQ_[1];
              return caml_call4(Stdlib_format[123],ppf,_aP_,pp_element,elt)}}
          var
           elts=_kA_[2],
           pp_sep$1=
            function(ppf,param)
             {switch(_kP_)
               {case 0:return caml_call2(Stdlib_format[123],ppf,_aK_);
                case 1:return caml_call2(Stdlib_format[123],ppf,_aL_);
                case 2:return caml_call2(Stdlib_format[123],ppf,_aM_);
                default:throw [0,Assert_failure,_aN_]}},
           _kR_=caml_call2(Stdlib_format[119],[0,pp_sep$1],pp_element);
          return caml_call4(Stdlib_format[123],ppf,_aO_,_kR_,elts);
         case 4:
          var path=_kA_[1];
          return caml_call4(Stdlib_format[123],ppf,_aQ_,pp_path,path);
         case 5:
          var id$0=_kA_[1];
          return caml_call3(Stdlib_format[123],ppf,_aR_,id$0);
         case 6:
          var uri=_kA_[1];
          return caml_call4(Stdlib_format[123],ppf,_aS_,Uri[43],uri);
         case 7:
          var _kS_=_kA_[1],_kT_=_kS_[1];
          if(_kT_)
           {if(0 === _kS_[2] && ! _kS_[3])
             {var pat=_kT_[1];
              return caml_call3(Stdlib_format[123],ppf,_aY_,pat)}}
          else
           if(0 === _kS_[2] && ! _kS_[3])
            return caml_call2(Stdlib_format[123],ppf,_aZ_);
          var
           max_length=_kS_[3],
           min_length=_kS_[2],
           _kU_=
            function(ppf,param)
             {if(param)
               {var m=param[1];
                return caml_call3(Stdlib_format[123],ppf,_aT_,m)}
              return 0},
           _kV_=
            function(ppf,n)
             {var _kZ_=0 < n?1:0;
              return _kZ_?caml_call3(Stdlib_format[123],ppf,_aU_,n):_kZ_},
           _kW_=
            function(ppf,param)
             {if(param)
               {var pat=param[1];
                return caml_call3(Stdlib_format[123],ppf,_aV_,pat)}
              return caml_call2(Stdlib_format[123],ppf,_aW_)};
          return caml_call8
                  (Stdlib_format[123],
                   ppf,
                   _aX_,
                   _kW_,
                   _kT_,
                   _kV_,
                   min_length,
                   _kU_,
                   max_length);
         case 8:
          var _kX_=_kA_[1];
          if(! _kX_[1] && ! _kX_[2] && ! _kX_[3])
           return caml_call2(Stdlib_format[123],ppf,_a1_);
          return caml_call4(Stdlib_format[123],ppf,_a0_,pp_numeric_specs,_kX_);
         default:
          var _kY_=_kA_[1];
          if(! _kY_[1] && ! _kY_[2] && ! _kY_[3])
           return caml_call2(Stdlib_format[123],ppf,_a3_);
          return caml_call4(Stdlib_format[123],ppf,_a2_,pp_numeric_specs,_kY_)}
      return caml_call2(Stdlib_format[123],ppf,_aA_)}
    function pp_object_contents(ppf,param)
     {var
       additional_properties=param[3],
       pattern_properties=param[2],
       properties=param[1],
       first=[0,1];
      function pp_sep(ppf,param)
       {return first[1]
                ?(first[1] = 0,0)
                :caml_call2(Stdlib_format[123],ppf,_a4_)}
      function _kn_(param)
       {var req=param[3],elt=param[2],name=param[1],_kr_=req?cst$2:cst$3;
        return caml_call9
                (Stdlib_format[123],
                 ppf,
                 _a5_,
                 pp_sep,
                 0,
                 pp_string$0,
                 name,
                 _kr_,
                 pp_element,
                 elt)}
      caml_call2(Stdlib_list[15],_kn_,properties);
      function _ko_(param)
       {var elt=param[2],name=param[1];
        return caml_call7
                (Stdlib_format[123],ppf,_a6_,pp_sep,0,name,pp_element,elt)}
      caml_call2(Stdlib_list[15],_ko_,pattern_properties);
      if(additional_properties)
       {var _kp_=additional_properties[1],_kq_=_kp_[5];
        if(typeof _kq_ === "number" && 2 === _kq_)
         return caml_call4(Stdlib_format[123],ppf,_a7_,pp_sep,0);
        return caml_call6
                (Stdlib_format[123],ppf,_a8_,pp_sep,0,pp_element,_kp_)}
      return 0}
    function pp$0(ppf,schema)
     {caml_call2(Stdlib_format[123],ppf,_a9_);
      pp_element(ppf,schema[1]);
      var _kj_=schema[3];
      function _kk_(param)
       {var elt=param[2],path=param[1],match=pp_desc(elt);
        if(match)
         {var
           pp_desc$0=match[1],
           stripped=[0,0,0,elt[3],elt[4],elt[5],elt[6],elt[7]];
          return caml_call8
                  (Stdlib_format[123],
                   ppf,
                   _a__,
                   pp_path,
                   path,
                   pp_desc$0,
                   0,
                   pp_element,
                   stripped)}
        return caml_call6
                (Stdlib_format[123],ppf,_a$_,pp_path,path,pp_element,elt)}
      caml_call2(Stdlib_list[15],_kk_,_kj_);
      var _kl_=schema[4];
      function _km_(param)
       {var elt=param[2],id=param[1],match=pp_desc(elt);
        if(match)
         {var
           pp_desc$0=match[1],
           stripped=[0,0,0,elt[3],elt[4],elt[5],elt[6],0];
          return caml_call7
                  (Stdlib_format[123],
                   ppf,
                   _ba_,
                   id,
                   pp_desc$0,
                   0,
                   pp_element,
                   stripped)}
        return caml_call5
                (Stdlib_format[123],
                 ppf,
                 _bb_,
                 id,
                 pp_element,
                 [0,elt[1],elt[2],elt[3],elt[4],elt[5],elt[6],0])}
      caml_call2(Stdlib_list[15],_km_,_kl_);
      return caml_call2(Stdlib_format[123],ppf,_bc_)}
    var
     Cannot_parse=[248,cst_Json_schema_Cannot_parse,caml_fresh_oo_id(0)],
     Dangling_reference=
      [248,cst_Json_schema_Dangling_refer,caml_fresh_oo_id(0)],
     Bad_reference=[248,cst_Json_schema_Bad_reference,caml_fresh_oo_id(0)],
     Unexpected=[248,cst_Json_schema_Unexpected,caml_fresh_oo_id(0)],
     Duplicate_definition=
      [248,cst_Json_schema_Duplicate_defi,caml_fresh_oo_id(0)];
    function print_error$0(print_unknown,ppf,exn)
     {if(exn[1] === Cannot_parse)
       {var
         exn$0=exn[3],
         path=exn[2],
         _j$_=
          function(_kh_,_ki_){return print_error$0(print_unknown,_kh_,_ki_)},
         _ka_=
          function(_kf_,_kg_){return print_path_as_json_path(_bd_,_kf_,_kg_)};
        return caml_call6(Stdlib_format[123],ppf,_be_,_ka_,path,_j$_,exn$0)}
      if(exn[1] === Dangling_reference)
       {var uri=exn[2],_kb_=caml_call1(Uri[7],uri);
        return caml_call3(Stdlib_format[123],ppf,_bf_,_kb_)}
      if(exn[1] === Bad_reference)
       {var str=exn[2];return caml_call3(Stdlib_format[123],ppf,_bg_,str)}
      if(exn[1] === Unexpected)
       {var ex=exn[3],unex=exn[2];
        return caml_call4(Stdlib_format[123],ppf,_bh_,unex,ex)}
      if(exn[1] === Duplicate_definition)
       {var
         defelt=exn[4],
         elt=exn[3],
         name=exn[2],
         _kc_=
          function(_kd_,_ke_)
           {return print_path_as_json_pointer(_bi_,_kd_,_ke_)};
        return caml_call8
                (Stdlib_format[123],
                 ppf,
                 _bj_,
                 _kc_,
                 name,
                 pp_element,
                 elt,
                 pp_element,
                 defelt)}
      return print_error(print_unknown,ppf,exn)}
    function _bk_(name,defs){return caml_call2(Stdlib_list[41],name,defs)}
    function _bl_(name,defs){return caml_call2(Stdlib_list[45],name,defs)}
    function insert_definition(name,elt,defs)
     {function insert(param)
       {if(param)
         {var def=param[1],defname=def[1],match=def[2],rem=param[2];
          if(caml_notequal(defname,name))return [0,def,insert(rem)];
          var _j__=match[5];
          if(typeof _j__ === "number" && 3 <= _j__)
           {var rem$0=param[2];return [0,[0,name,elt],rem$0]}
          var rem$1=param[2],defelt=def[2];
          if(1 - eq_element(elt,defelt))
           throw [0,Duplicate_definition,name,elt,defelt];
          return [0,[0,name,elt],rem$1]}
        return [0,[0,name,elt],0]}
      return insert(defs)}
    function Make$0(_gv_)
     {var Query=_T_(_gv_);
      function to_json(schema)
       {function obj(l){return caml_call1(_gv_[2],[0,79,l])}
        function set_always(f,v){return [0,[0,f,caml_call1(_gv_[2],v)],0]}
        function set_if_some(f,v,cb)
         {if(v)
           {var v$0=v[1],_j9_=caml_call1(cb,v$0);
            return [0,[0,f,caml_call1(_gv_[2],_j9_)],0]}
          return 0}
        function set_if_cons(f,v,cb)
         {if(v)
           {var _j8_=caml_call1(cb,v);
            return [0,[0,f,caml_call1(_gv_[2],_j8_)],0]}
          return 0}
        function set_if_neq(f,v$0,v,cb)
         {if(caml_notequal(v$0,v))
           {var _j7_=caml_call1(cb,v$0);
            return [0,[0,f,caml_call1(_gv_[2],_j7_)],0]}
          return 0}
        function format_element(param)
         {var
           format=param[6],
           kind=param[5],
           enum$0=param[4],
           default$0=param[3],
           description=param[2],
           title=param[1],
           _ij_=
            set_if_some
             (cst_format,format,function(s){return [0,-976970511,s]}),
           _ik_=
            set_if_some
             (cst_enum,
              enum$0,
              function(js)
               {function _j5_(_j6_){return any_to_repr(_gv_,_j6_)}
                return [0,65,caml_call2(Stdlib_list[17],_j5_,js)]}),
           _il_=caml_call2(Stdlib[37],_ik_,_ij_),
           _im_=
            set_if_some
             (cst_default,
              default$0,
              function(j)
               {var _j4_=any_to_repr(_gv_,j);return caml_call1(_gv_[1],_j4_)}),
           _in_=caml_call2(Stdlib[37],_im_,_il_);
          if(typeof kind === "number")
           switch(kind)
            {case 0:var _io_=set_always(cst_type,_bm_);break;
             case 1:var _io_=set_always(cst_type$0,_bn_);break;
             case 2:var _io_=0;break;
             default:
              var _io_=caml_call1(Stdlib[1],cst_Json_schema_to_json_remain)}
          else
           switch(kind[0])
            {case 0:
              var
               specs=kind[1],
               _it_=specs[1],
               _iu_=0,
               _iv_=
                function(r,param)
                 {var p=param[3],n=param[1];
                  return p?[0,caml_call1(_gv_[2],[0,-976970511,n]),r]:r},
               required=caml_call3(Stdlib_list[22],_iv_,_iu_,_it_),
               _iw_=specs[1],
               _ix_=
                function(param)
                 {var elt=param[2],n=param[1];
                  return [0,n,obj(format_element(elt))]},
               properties=caml_call2(Stdlib_list[17],_ix_,_iw_),
               _iy_=
                function(fs)
                 {function _j1_(param)
                   {var ls=param[2],n=param[1];
                    function _j2_(s)
                     {return caml_call1(_gv_[2],[0,-976970511,s])}
                    var _j3_=[0,65,caml_call2(Stdlib_list[17],_j2_,ls)];
                    return [0,n,caml_call1(_gv_[2],_j3_)]}
                  var
                   property_dependencies=
                    caml_call2(Stdlib_list[17],_j1_,fs);
                  return [0,79,property_dependencies]},
               _iz_=set_if_cons(cst_propertyDependencies,specs[7],_iy_),
               _iA_=
                function(fs)
                 {function _j0_(param)
                   {var elt=param[2],n=param[1];
                    return [0,n,obj(format_element(elt))]}
                  return [0,79,caml_call2(Stdlib_list[17],_j0_,fs)]},
               _iB_=set_if_cons(cst_schemaDependencies,specs[6],_iA_),
               _iC_=caml_call2(Stdlib[37],_iB_,_iz_),
               _iD_=function(i){return [0,365180284,i]},
               _iE_=set_if_some(cst_maxProperties,specs[5],_iD_),
               _iF_=caml_call2(Stdlib[37],_iE_,_iC_),
               _iG_=function(i){return [0,365180284,i]},
               _iH_=set_if_neq(cst_minProperties,specs[4],0,_iG_),
               _iI_=caml_call2(Stdlib[37],_iH_,_iF_),
               _iJ_=
                function(param)
                 {if(param)
                   {var elt=param[1];return [0,79,format_element(elt)]}
                  return _bo_},
               _iK_=[0,element(2)],
               _iL_=set_if_neq(cst_additionalProperties,specs[3],_iK_,_iJ_),
               _iM_=caml_call2(Stdlib[37],_iL_,_iI_),
               _iN_=
                function(fs)
                 {function _jZ_(param)
                   {var elt=param[2],n=param[1];
                    return [0,n,obj(format_element(elt))]}
                  return [0,79,caml_call2(Stdlib_list[17],_jZ_,fs)]},
               _iO_=set_if_cons(cst_patternProperties,specs[2],_iN_),
               _iP_=caml_call2(Stdlib[37],_iO_,_iM_),
               _iQ_=
                set_if_cons
                 (cst_required,required,function(l){return [0,65,l]}),
               _iR_=caml_call2(Stdlib[37],_iQ_,_iP_),
               _iS_=set_always(cst_properties,[0,79,properties]),
               _iT_=caml_call2(Stdlib[37],_iS_,_iR_),
               _iU_=set_always(cst_type$1,_bp_),
               _io_=caml_call2(Stdlib[37],_iU_,_iT_);
              break;
             case 1:
              var
               specs$0=kind[2],
               elts=kind[1],
               _iV_=
                function(param)
                 {if(param)
                   {var elt=param[1];return [0,79,format_element(elt)]}
                  return _bq_},
               _iW_=[0,element(2)],
               _iX_=set_if_neq(cst_additionalItems,specs$0[4],_iW_,_iV_),
               _iY_=function(b){return [0,737456202,b]},
               _iZ_=set_if_neq(cst_uniqueItems,specs$0[3],0,_iY_),
               _i0_=caml_call2(Stdlib[37],_iZ_,_iX_),
               _i1_=function(i){return [0,365180284,i]},
               _i2_=set_if_some(cst_maxItems,specs$0[2],_i1_),
               _i3_=caml_call2(Stdlib[37],_i2_,_i0_),
               _i4_=function(i){return [0,365180284,i]},
               _i5_=set_if_neq(cst_minItems,specs$0[1],0,_i4_),
               _i6_=caml_call2(Stdlib[37],_i5_,_i3_),
               _i7_=function(elt){return obj(format_element(elt))},
               _i8_=
                set_always
                 (cst_items,[0,65,caml_call2(Stdlib_list[17],_i7_,elts)]),
               _i9_=caml_call2(Stdlib[37],_i8_,_i6_),
               _i__=set_always(cst_type$2,_br_),
               _io_=caml_call2(Stdlib[37],_i__,_i9_);
              break;
             case 2:
              var
               match=kind[2],
               unique_items=match[3],
               max_items=match[2],
               min_items=match[1],
               elt=kind[1],
               _i$_=
                set_if_neq
                 (cst_uniqueItems$0,
                  unique_items,
                  0,
                  function(b){return [0,737456202,b]}),
               _ja_=
                set_if_some
                 (cst_maxItems$0,
                  max_items,
                  function(i){return [0,365180284,i]}),
               _jb_=caml_call2(Stdlib[37],_ja_,_i$_),
               _jc_=
                set_if_neq
                 (cst_minItems$0,
                  min_items,
                  0,
                  function(i){return [0,365180284,i]}),
               _jd_=caml_call2(Stdlib[37],_jc_,_jb_),
               _je_=set_always(cst_items$0,[0,79,format_element(elt)]),
               _jf_=caml_call2(Stdlib[37],_je_,_jd_),
               _jg_=set_always(cst_type$3,_bs_),
               _io_=caml_call2(Stdlib[37],_jg_,_jf_);
              break;
             case 3:
              var
               elts$0=kind[2],
               c=kind[1],
               _jh_=function(elt){return obj(format_element(elt))},
               _ji_=[0,65,caml_call2(Stdlib_list[17],_jh_,elts$0)];
              switch(c)
               {case 0:var _jj_=cst_anyOf;break;
                case 1:var _jj_=cst_oneOf;break;
                case 2:var _jj_=cst_allOf;break;
                default:var _jj_=cst_not}
              var _io_=set_always(_jj_,_ji_);
              break;
             case 4:
              var
               path=kind[1],
               _jk_=json_pointer_of_path(0,path),
               _io_=
                set_always
                 (cst_ref,[0,-976970511,caml_call2(Stdlib[28],cst$4,_jk_)]);
              break;
             case 5:
              var
               name=kind[1],
               _io_=
                set_always
                 (cst_ref$0,[0,-976970511,caml_call2(Stdlib[28],cst$5,name)]);
              break;
             case 6:
              var
               uri=kind[1],
               _io_=
                set_always(cst_ref$1,[0,-976970511,caml_call1(Uri[7],uri)]);
              break;
             case 7:
              var
               match$0=kind[1],
               max_length=match$0[3],
               min_length=match$0[2],
               pattern=match$0[1],
               _jl_=
                set_if_some
                 (cst_pattern,pattern,function(s){return [0,-976970511,s]}),
               _jm_=
                set_if_some
                 (cst_maxLength,
                  max_length,
                  function(i){return [0,365180284,i]}),
               _jn_=caml_call2(Stdlib[37],_jm_,_jl_),
               _jo_=
                set_if_neq
                 (cst_minLength,
                  min_length,
                  0,
                  function(i){return [0,365180284,i]}),
               _jp_=caml_call2(Stdlib[37],_jo_,_jn_),
               _jq_=set_always(cst_type$4,_bt_),
               _io_=caml_call2(Stdlib[37],_jq_,_jp_);
              break;
             case 8:
              var specs$1=kind[1],_jr_=specs$1[3];
              if(_jr_)
               {var _js_=_jr_[1],_jt_=_js_[1];
                if(672226188 <= _js_[2])
                 var
                  _ju_=
                   [0,[0,cst_maximum,caml_call1(_gv_[2],[0,365180284,_jt_])],0];
                else
                 var
                  _jH_=[0,[0,cst_exclusiveMaximum,caml_call1(_gv_[2],_bw_)],0],
                  _ju_=
                   [0,
                    [0,cst_maximum$0,caml_call1(_gv_[2],[0,365180284,_jt_])],
                    _jH_];
                var _jv_=_ju_}
              else
               var _jv_=0;
              var _jw_=specs$1[2];
              if(_jw_)
               {var _jx_=_jw_[1],_jy_=_jx_[1];
                if(672226188 <= _jx_[2])
                 var
                  _jz_=
                   [0,[0,cst_minimum,caml_call1(_gv_[2],[0,365180284,_jy_])],0];
                else
                 var
                  _jG_=[0,[0,cst_exclusiveMinimum,caml_call1(_gv_[2],_bv_)],0],
                  _jz_=
                   [0,
                    [0,cst_minimum$0,caml_call1(_gv_[2],[0,365180284,_jy_])],
                    _jG_];
                var _jA_=_jz_}
              else
               var _jA_=0;
              var
               _jB_=caml_call2(Stdlib[37],_jA_,_jv_),
               _jC_=function(v){return [0,365180284,v]},
               _jD_=set_if_some(cst_multipleOf,specs$1[1],_jC_),
               _jE_=caml_call2(Stdlib[37],_jD_,_jB_),
               _jF_=set_always(cst_type$5,_bu_),
               _io_=caml_call2(Stdlib[37],_jF_,_jE_);
              break;
             default:
              var specs$2=kind[1],_jI_=specs$2[3];
              if(_jI_)
               {var _jJ_=_jI_[1],_jK_=_jJ_[1];
                if(672226188 <= _jJ_[2])
                 var
                  _jL_=
                   [0,
                    [0,cst_maximum$1,caml_call1(_gv_[2],[0,365180284,_jK_])],
                    0];
                else
                 var
                  _jY_=
                   [0,[0,cst_exclusiveMaximum$0,caml_call1(_gv_[2],_bz_)],0],
                  _jL_=
                   [0,
                    [0,cst_maximum$2,caml_call1(_gv_[2],[0,365180284,_jK_])],
                    _jY_];
                var _jM_=_jL_}
              else
               var _jM_=0;
              var _jN_=specs$2[2];
              if(_jN_)
               {var _jO_=_jN_[1],_jP_=_jO_[1];
                if(672226188 <= _jO_[2])
                 var
                  _jQ_=
                   [0,
                    [0,cst_minimum$1,caml_call1(_gv_[2],[0,365180284,_jP_])],
                    0];
                else
                 var
                  _jX_=
                   [0,[0,cst_exclusiveMinimum$0,caml_call1(_gv_[2],_by_)],0],
                  _jQ_=
                   [0,
                    [0,cst_minimum$2,caml_call1(_gv_[2],[0,365180284,_jP_])],
                    _jX_];
                var _jR_=_jQ_}
              else
               var _jR_=0;
              var
               _jS_=caml_call2(Stdlib[37],_jR_,_jM_),
               _jT_=function(v){return [0,365180284,v]},
               _jU_=set_if_some(cst_multipleOf$0,specs$2[1],_jT_),
               _jV_=caml_call2(Stdlib[37],_jU_,_jS_),
               _jW_=set_always(cst_type$6,_bx_),
               _io_=caml_call2(Stdlib[37],_jW_,_jV_)}
          var
           _ip_=caml_call2(Stdlib[37],_io_,_in_),
           _iq_=
            set_if_some
             (cst_description,
              description,
              function(s){return [0,-976970511,s]}),
           _ir_=caml_call2(Stdlib[37],_iq_,_ip_),
           _is_=
            set_if_some(cst_title,title,function(s){return [0,-976970511,s]});
          return caml_call2(Stdlib[37],_is_,_ir_)}
        var
         _id_=schema[3],
         _ie_=format_element(schema[1]),
         _if_=set_always(cst_schema,[0,-976970511,version]),
         _ig_=obj(caml_call2(Stdlib[37],_if_,_ie_));
        function _ih_(acc,param)
         {var elt=param[2],n=param[1],_ii_=obj(format_element(elt));
          return caml_call3(Query[3],n,_ii_,acc)}
        return caml_call3(Stdlib_list[22],_ih_,_ig_,_id_)}
      function unexpected(kind,expected)
       {if(typeof kind === "number")
         var kind$0=cst_null;
        else
         {var _h__=kind[1];
          if(65 === _h__)
           var _h$_=kind[2]?cst_array:cst_empty_array,_ia_=_h$_;
          else
           if(365180284 <= _h__)
            var _ia_=737456202 <= _h__?cst_boolean:cst_number;
           else
            if(79 <= _h__)
             var _ib_=kind[2]?cst_object:cst_empty_object,_ia_=_ib_;
            else
             var
              _ic_=
               caml_string_notequal(kind[2],cst$6)?cst_string:cst_empty_string,
              _ia_=_ic_;
          var kind$0=_ia_}
        return [0,Cannot_parse,0,[0,Unexpected,kind$0,expected]]}
      function at_path(p,exn)
       {if(exn[1] === Cannot_parse)
         {var err=exn[3],l=exn[2];
          return [0,Cannot_parse,caml_call2(Stdlib[37],p,l),err]}
        return exn}
      function at_field(n)
       {var _h8_=[0,[0,331416730,n],0];
        return function(_h9_){return at_path(_h8_,_h9_)}}
      function at_index(i)
       {var _h6_=[0,[0,-784200974,i],0];
        return function(_h7_){return at_path(_h6_,_h7_)}}
      function of_json(json)
       {function opt_field_view(obj,n)
         {var match=caml_call1(_gv_[1],obj);
          if(typeof match !== "number" && 79 === match[1])
           {var ls=match[2];
            try
             {var
               _h3_=caml_call2(Stdlib_list[41],n,ls),
               _h4_=[0,caml_call1(_gv_[1],_h3_)];
              return _h4_}
            catch(_h5_)
             {_h5_ = caml_wrap_exception(_h5_);
              if(_h5_ === Stdlib[8])return 0;
              throw _h5_}}
          return 0}
        function opt_string_field(obj,n)
         {var match=opt_field_view(obj,n);
          if(match)
           {var _h1_=match[1];
            if(typeof _h1_ !== "number" && -976970511 === _h1_[1])
             {var s=_h1_[2];return [0,s]}
            var _h2_=unexpected(_h1_,cst_string$0);
            throw caml_call1(at_field(n),_h2_)}
          return 0}
        function opt_bool_field(def,obj,n)
         {var match=opt_field_view(obj,n);
          if(match)
           {var _hZ_=match[1];
            if(typeof _hZ_ !== "number" && 737456202 === _hZ_[1])
             {var b=_hZ_[2];return b}
            var _h0_=unexpected(_hZ_,cst_bool);
            throw caml_call1(at_field(n),_h0_)}
          return def}
        function opt_int_field(obj,n)
         {var match=opt_field_view(obj,n);
          if(match)
           {var _hX_=match[1];
            if(typeof _hX_ !== "number" && 365180284 === _hX_[1])
             {var f=_hX_[2];
              if
               (caml_modf_float(f)[1]
                ==
                0.
                &&
                f
                <=
                9007199254740992.
                &&
                -9007199254740992.
                <=
                f)
               return [0,f]}
            var _hY_=unexpected(_hX_,cst_integer);
            throw caml_call1(at_field(n),_hY_)}
          return 0}
        function opt_length_field(obj,n)
         {var match=opt_field_view(obj,n);
          if(match)
           {var _hV_=match[1];
            if(typeof _hV_ !== "number" && 365180284 === _hV_[1])
             {var f=_hV_[2];
              if(caml_modf_float(f)[1] == 0. && f <= 1073741824. && 0. <= f)
               return [0,f | 0]}
            var _hW_=unexpected(_hV_,cst_length);
            throw caml_call1(at_field(n),_hW_)}
          return 0}
        function opt_float_field(obj,n)
         {var match=opt_field_view(obj,n);
          if(match)
           {var _hT_=match[1];
            if(typeof _hT_ !== "number" && 365180284 === _hT_[1])
             {var f=_hT_[2];return [0,f]}
            var _hU_=unexpected(_hT_,cst_number$0);
            throw caml_call1(at_field(n),_hU_)}
          return 0}
        function opt_array_field(obj,n)
         {var match=opt_field_view(obj,n);
          if(match)
           {var _hR_=match[1];
            if(typeof _hR_ !== "number" && 65 === _hR_[1])
             {var s=_hR_[2];return [0,s]}
            var _hS_=unexpected(_hR_,cst_array$0);
            throw caml_call1(at_field(n),_hS_)}
          return 0}
        function opt_uri_field(obj,n)
         {var match=opt_string_field(obj,n);
          if(match)
           {var uri=match[1];
            try
             {var _hP_=caml_call1(Uri[6],uri),uri$0=caml_call1(Uri[9],_hP_)}
            catch(_hQ_)
             {throw [0,
                     Cannot_parse,
                     0,
                     [0,
                      Bad_reference,
                      caml_call2(Stdlib[28],uri,cst_is_not_a_valid_URI)]]}
            return [0,uri$0]}
          return 0}
        var match=opt_uri_field(json,cst_id);
        if(match)
         var uri=match[1],schema_source=caml_call2(Uri[41],uri,0);
        else
         var schema_source=Uri[1];
        var collected_definitions=[0,0],collected_id_refs=[0,0],ids=0;
        function collect_definition(uri)
         {var match=caml_call1(Uri[35],uri),match$0=caml_call1(Uri[40],uri);
          if(match)return [6,uri];
          if(match$0)
           {var fragment=match$0[1];
            if(caml_call2(Stdlib_string[22],fragment,47))
             {try
               {var path=path_of_json_pointer(_bA_,fragment)}
              catch(err)
               {err = caml_wrap_exception(err);throw [0,Cannot_parse,0,err]}
              try
               {var raw=caml_call2(Query[1],path,json);
                if(1 - _bl_(path,collected_definitions[1]))
                 {var _hL_=collected_definitions[1];
                  collected_definitions[1]
                  =
                  insert_definition(path,element(3),_hL_);
                  try
                   {var elt=parse_element(schema_source,raw)}
                  catch(err)
                   {err = caml_wrap_exception(err);throw at_path(path,err)}
                  collected_definitions[1]
                  =
                  insert_definition(path,elt,collected_definitions[1])}
                var _hM_=[4,path];
                return _hM_}
              catch(_hO_)
               {_hO_ = caml_wrap_exception(_hO_);
                if(_hO_ === Stdlib[8])
                 throw [0,Cannot_parse,0,[0,Dangling_reference,uri]];
                throw _hO_}}
            collected_id_refs[1] = [0,fragment,collected_id_refs[1]];
            return [5,fragment]}
          var _hN_=caml_call1(Uri[7],uri);
          throw [0,
                 Cannot_parse,
                 0,
                 [0,
                  Bad_reference,
                  caml_call2(Stdlib[28],_hN_,cst_has_no_fragment)]]}
        function parse_element(source,json)
         {var id=opt_uri_field(json,cst_id$0);
          if(id)
           var
            uri=id[1],
            _hq_=caml_call3(Uri[8],cst_http,source,uri),
            uri$0=caml_call1(Uri[9],_hq_),
            source$0=caml_call2(Uri[41],uri$0,0),
            source$1=source$0,
            id$0=caml_call1(Uri[40],uri$0);
          else
           var source$1=source,id$0=0;
          if(caml_notequal(source$1,schema_source))
           return element([6,caml_call2(Uri[41],source$1,id$0)]);
          if(id$0)
           {var id$1=id$0[1];
            if(caml_call2(Stdlib_string[22],id$1,47))
             {var
               _hr_=
                [0,
                 Cannot_parse,
                 0,
                 [0,
                  Bad_reference,
                  caml_call2(Stdlib[28],id$1,cst_is_not_a_valid_ID)]];
              throw caml_call1(at_field(cst_id$1),_hr_)}
            var id$2=[0,id$1]}
          else
           var id$2=0;
          var match$0=opt_field_view(json,cst_type$7);
          if(match$0)
           {var _hs_=match$0[1],switch$0=0;
            if(typeof _hs_ !== "number")
             {var _hu_=_hs_[1],switch$1=0;
              if(-976970511 === _hu_)
               var
                name=_hs_[2],
                _hv_=[0,element(parse_element_kind(source$1,json,name))];
              else
               if(65 === _hu_)
                {var _hz_=_hs_[2];
                 if(! _hz_)
                  {var _hA_=unexpected(_hs_,cst_type_type_array_or_operato$0);
                   throw caml_call1(at_field(cst_type$11),_hA_)}
                 var
                  items=
                   function(i,acc,param)
                    {var i$0=i,acc$0=acc,param$0=param;
                     for(;;)
                      {if(param$0)
                        {var _hI_=param$0[1];
                         if(typeof _hI_ !== "number" && -976970511 === _hI_[1])
                          {var
                            tl=param$0[2],
                            name=_hI_[2],
                            kind=parse_element_kind(source$1,json,name),
                            case$0=element(kind),
                            acc$1=[0,case$0,acc$0],
                            i$1=i$0 + 1 | 0,
                            i$0=i$1,
                            acc$0=acc$1,
                            param$0=tl;
                           continue}
                         var
                          _hJ_=unexpected(_hI_,cst_type$9),
                          _hK_=caml_call1(at_index(i$0),_hJ_);
                         throw caml_call1(at_field(cst_type$10),_hK_)}
                       var kind$0=[3,0,caml_call1(Stdlib_list[9],acc$0)];
                       return [0,element(kind$0)]}},
                  _hv_=items(0,0,caml_call2(Stdlib_list[17],_gv_[1],_hz_))}
               else
                switch$1 = 1;
              if(! switch$1){var as_kind=_hv_;switch$0 = 1}}
            if(! switch$0)
             {var _ht_=unexpected(_hs_,cst_type_type_array_or_operato);
              throw caml_call1(at_field(cst_type$8),_ht_)}}
          else
           var as_kind=0;
          var match$1=opt_uri_field(json,cst_ref$2);
          if(match$1)
           var
            uri$1=match$1[1],
            path=collect_definition(uri$1),
            as_ref=[0,element(path)];
          else
           var as_ref=0;
          function as_nary(name,combinator,others)
           {function build(cases)
             {if(cases)
               {if(cases[2])
                 {var kind=[3,combinator,cases];return [0,element(kind)]}
                var case$0=cases[1];
                return [0,case$0]}
              return 0}
            var match=opt_field_view(json,name);
            if(match)
             {var _hD_=match[1];
              if(typeof _hD_ !== "number" && 65 === _hD_[1])
               {var _hF_=_hD_[2];
                if(_hF_)
                 {var
                   items=
                    function(i,acc,param)
                     {var i$0=i,acc$0=acc,param$0=param;
                      for(;;)
                       {if(param$0)
                         {var tl=param$0[2],elt=param$0[1];
                          try
                           {var elt$0=parse_element(source$1,elt)}
                          catch(err$0)
                           {err$0 = caml_wrap_exception(err$0);
                            var _hG_=caml_call1(at_index(i$0),err$0);
                            throw caml_call1(at_field(name),_hG_);
                            var err=err$0}
                          var
                           acc$1=[0,elt$0,acc$0],
                           i$1=i$0 + 1 | 0,
                           i$0=i$1,
                           acc$0=acc$1,
                           param$0=tl;
                          continue}
                        var _hH_=caml_call1(Stdlib_list[9],acc$0);
                        return build(caml_call2(Stdlib[37],others,_hH_))}};
                  return items(0,0,_hF_)}}
              var _hE_=unexpected(_hD_,cst_a_list_of_elements);
              throw caml_call1(at_field(name),_hE_)}
            return build(others)}
          var match$2=opt_field_view(json,cst_not$0);
          if(match$2)
           {var elt=match$2[1];
            try
             {var elt$0=parse_element(source$1,caml_call1(_gv_[2],elt))}
            catch(err)
             {err = caml_wrap_exception(err);
              throw caml_call1(at_field(cst_not$1),err)}
            var kind=[3,3,[0,elt$0,0]],as_not=[0,element(kind)]}
          else
           var as_not=0;
          var
           title=opt_string_field(json,cst_title$0),
           description=opt_string_field(json,cst_description$0),
           match=caml_call1(_gv_[1],json),
           switch$2=0;
          if(typeof match === "number" || ! (79 === match[1]))
           switch$2 = 1;
          else
           {var ls=match[2];
            try
             {var switch$3=0,_hp_=[0,caml_call2(Stdlib_list[41],n,ls)]}
            catch(_hC_)
             {_hC_ = caml_wrap_exception(_hC_);
              if(_hC_ !== Stdlib[8])throw _hC_;
              var match$3=0;
              switch$3 = 1}
            if(! switch$3)var match$3=_hp_}
          if(switch$2)var match$3=0;
          if(match$3)
           var v=match$3[1],default$0=[0,[0,_gv_,v]];
          else
           var default$0=0;
          var match$4=opt_array_field(json,cst_enum$0);
          if(match$4)
           var
            v$0=match$4[1],
            _hw_=function(_hB_){return [0,_gv_,_hB_]},
            enum$0=[0,caml_call2(Stdlib_list[17],_hw_,v$0)];
          else
           var enum$0=0;
          var
           format=opt_string_field(json,cst_format$0),
           as_one_of=as_nary(cst_oneOf$0,1,0),
           as_any_of=as_nary(cst_anyOf$0,0,0),
           all=[0,as_kind,[0,as_ref,[0,as_not,[0,as_one_of,[0,as_any_of,0]]]]];
          function _hx_(param)
           {if(param){var e=param[1];return [0,e,0]}return 0}
          var
           _hy_=caml_call2(Stdlib_list[17],_hx_,all),
           cases=caml_call1(Stdlib_list[14],_hy_),
           match$5=as_nary(cst_allOf$0,2,cases);
          if(match$5)
           var match$6=match$5[1],kind$0=match$6[5],kind$1=kind$0;
          else
           var kind$1=2;
          return [0,title,description,default$0,enum$0,kind$1,format,id$2]}
        function parse_element_kind(source,json,name)
         {function integer_specs(json)
           {var multiple_of=opt_int_field(json,cst_multipleOf$1);
            if(opt_bool_field(0,json,cst_exclusiveMinimum$1))
             {var match=opt_int_field(json,cst_minimum$3);
              if(! match)throw [0,Stdlib[7],err$0];
              var v=match[1],minimum=[0,[0,v,672226188]]}
            else
             {var match$2=opt_int_field(json,cst_minimum$4);
              if(match$2)
               var v$2=match$2[1],_ho_=[0,[0,v$2,407121086]];
              else
               var _ho_=0;
              var minimum=_ho_}
            if(opt_bool_field(0,json,cst_exclusiveMaximum$1))
             {var match$0=opt_int_field(json,cst_maximum$3);
              if(! match$0)throw [0,Stdlib[7],err];
              var v$0=match$0[1],maximum=[0,[0,v$0,672226188]]}
            else
             {var match$1=opt_int_field(json,cst_maximum$4);
              if(match$1)
               var v$1=match$1[1],_hn_=[0,[0,v$1,407121086]];
              else
               var _hn_=0;
              var maximum=_hn_}
            return [0,multiple_of,minimum,maximum]}
          function numeric_specs(json)
           {var multiple_of=opt_float_field(json,cst_multipleOf$2);
            if(opt_bool_field(0,json,cst_exclusiveMinimum$2))
             {var match=opt_float_field(json,cst_minimum$5);
              if(! match)throw [0,Stdlib[7],err$2];
              var v=match[1],minimum=[0,[0,v,672226188]]}
            else
             {var match$2=opt_float_field(json,cst_minimum$6);
              if(match$2)
               var v$2=match$2[1],_hm_=[0,[0,v$2,407121086]];
              else
               var _hm_=0;
              var minimum=_hm_}
            if(opt_bool_field(0,json,cst_exclusiveMaximum$2))
             {var match$0=opt_float_field(json,cst_maximum$5);
              if(! match$0)throw [0,Stdlib[7],err$1];
              var v$0=match$0[1],maximum=[0,[0,v$0,672226188]]}
            else
             {var match$1=opt_float_field(json,cst_maximum$6);
              if(match$1)
               var v$1=match$1[1],_hl_=[0,[0,v$1,407121086]];
              else
               var _hl_=0;
              var maximum=_hl_}
            return [0,multiple_of,minimum,maximum]}
          if(caml_string_notequal(name,cst_array$1))
           {if(caml_string_notequal(name,cst_boolean$0))
             {if(caml_string_notequal(name,cst_integer$0))
               {if(caml_string_notequal(name,cst_null$0))
                 {if(caml_string_notequal(name,cst_number$1))
                   {if(caml_string_notequal(name,cst_object$0))
                     {if(caml_string_notequal(name,cst_string$1))
                       throw [0,
                              Cannot_parse,
                              0,
                              [0,Unexpected,name,cst_a_known_type]];
                      var
                       pattern=opt_string_field(json,cst_pattern$0),
                       min_length=opt_length_field(json,cst_minLength$0),
                       max_length=opt_length_field(json,cst_maxLength$0);
                      if(min_length)
                       var l=min_length[1],min_length$0=l;
                      else
                       var min_length$0=0;
                      var specs=[0,pattern,min_length$0,max_length];
                      return [7,specs]}
                    var match=opt_array_field(json,cst_required$0);
                    if(match)
                     var
                      l$0=match[1],
                      items=
                       function(i,acc,param)
                        {var i$0=i,acc$0=acc,param$0=param;
                         for(;;)
                          {if(param$0)
                            {var _hi_=param$0[1];
                             if(typeof _hi_ !== "number" && -976970511 === _hi_[1])
                              {var
                                param$1=param$0[2],
                                s=_hi_[2],
                                acc$1=[0,s,acc$0],
                                i$1=i$0 + 1 | 0,
                                i$0=i$1,
                                acc$0=acc$1,
                                param$0=param$1;
                               continue}
                             var
                              _hj_=unexpected(_hi_,cst_string$2),
                              _hk_=caml_call1(at_index(i$0),_hj_);
                             throw caml_call1(at_field(cst_required$1),_hk_)}
                           return caml_call1(Stdlib_list[9],acc$0)}},
                      required=items(0,0,caml_call2(Stdlib_list[17],_gv_[1],l$0));
                    else
                     var required=0;
                    var match$0=opt_field_view(json,cst_properties$0);
                    if(match$0)
                     {var _gW_=match$0[1],switch$0=0;
                      if(typeof _gW_ !== "number" && 79 === _gW_[1])
                       {var props=_gW_[2],acc=0,param=props;
                        for(;;)
                         {if(param)
                           {var
                             tl=param[2],
                             match$1=param[1],
                             elt=match$1[2],
                             n=match$1[1];
                            try
                             {var elt$0=parse_element(source,elt)}
                            catch(err)
                             {err = caml_wrap_exception(err);
                              var _gY_=caml_call1(at_field(n),err);
                              throw caml_call1(at_field(cst_properties$2),_gY_);
                              var err$3=err}
                            var
                             req=caml_call2(Stdlib_list[33],n,required),
                             acc$0=[0,[0,n,elt$0,req,0],acc],
                             acc=acc$0,
                             param=tl;
                            continue}
                          var properties=caml_call1(Stdlib_list[9],acc);
                          switch$0 = 1;
                          break}}
                      if(! switch$0)
                       {var _gX_=unexpected(_gW_,cst_object$1);
                        throw caml_call1(at_field(cst_properties$1),_gX_)}}
                    else
                     var properties=0;
                    var
                     match$2=opt_field_view(json,cst_additionalProperties$0),
                     switch$1=0;
                    if(match$2)
                     {var _gZ_=match$2[1],switch$2=0;
                      if(typeof _gZ_ !== "number" && 737456202 === _gZ_[1])
                       if(_gZ_[2])switch$2 = 2;else{var _g0_=0;switch$2 = 1}
                      var switch$3=0;
                      switch(switch$2)
                       {case 2:switch$3 = 1;break;
                        case 0:
                         try
                          {var elt$1=parse_element(source,caml_call1(_gv_[2],_gZ_))}
                         catch(err)
                          {err = caml_wrap_exception(err);
                           throw caml_call1(at_field(cst_additionalProperties$1),err)}
                         var _g0_=[0,elt$1];
                         break
                        }
                      if(! switch$3){var additional_properties=_g0_;switch$1 = 1}}
                    if(! switch$1)var additional_properties=[0,element(2)];
                    var match$3=opt_field_view(json,cst_propertyDependencies$0);
                    if(match$3)
                     {var _g1_=match$3[1],switch$4=0;
                      if(typeof _g1_ !== "number" && 79 === _g1_[1])
                       {var
                         l$1=_g1_[2],
                         sets=
                          function(sacc,param)
                           {var sacc$0=sacc,param$0=param;
                            a:
                            for(;;)
                             {if(param$0)
                               {var _g$_=param$0[1],_ha_=_g$_[1],_hb_=_g$_[2];
                                if(typeof _hb_ !== "number" && 65 === _hb_[1])
                                 {var
                                   tl=param$0[2],
                                   l=_hb_[2],
                                   param$3=caml_call2(Stdlib_list[17],_gv_[1],l),
                                   j=0,
                                   acc=0,
                                   param$1=param$3;
                                  for(;;)
                                   {if(param$1)
                                     {var _he_=param$1[1];
                                      if(typeof _he_ !== "number" && -976970511 === _he_[1])
                                       {var
                                         param$2=param$1[2],
                                         s=_he_[2],
                                         acc$0=[0,s,acc],
                                         j$0=j + 1 | 0,
                                         j=j$0,
                                         acc=acc$0,
                                         param$1=param$2;
                                        continue}
                                      var
                                       _hf_=unexpected(_he_,cst_string$3),
                                       _hg_=caml_call1(at_index(j),_hf_),
                                       _hh_=caml_call1(at_field(_ha_),_hg_);
                                      throw caml_call1(at_field(cst_propertyDependencies$3),_hh_)}
                                    var
                                     sacc$1=[0,[0,_ha_,caml_call1(Stdlib_list[9],acc)],sacc$0],
                                     sacc$0=sacc$1,
                                     param$0=tl;
                                    continue a}}
                                var
                                 k=_g$_[2],
                                 _hc_=unexpected(k,cst_string_array),
                                 _hd_=caml_call1(at_field(_ha_),_hc_);
                                throw caml_call1(at_field(cst_propertyDependencies$2),_hd_)}
                              return caml_call1(Stdlib_list[9],sacc$0)}},
                         _g3_=
                          function(param)
                           {var v=param[2],n=param[1];
                            return [0,n,caml_call1(_gv_[1],v)]},
                         property_dependencies=
                          sets(0,caml_call2(Stdlib_list[17],_g3_,l$1));
                        switch$4 = 1}
                      if(! switch$4)
                       {var _g2_=unexpected(_g1_,cst_object$2);
                        throw caml_call1(at_field(cst_propertyDependencies$1),_g2_)}}
                    else
                     var property_dependencies=0;
                    var
                     parse_element_assoc=
                      function(field)
                       {var match=opt_field_view(json,field);
                        if(match)
                         {var _g8_=match[1];
                          if(typeof _g8_ !== "number" && 79 === _g8_[1])
                           {var
                             props=_g8_[2],
                             items=
                              function(acc,param)
                               {var acc$0=acc,param$0=param;
                                for(;;)
                                 {if(param$0)
                                   {var tl=param$0[2],match=param$0[1],elt=match[2],n=match[1];
                                    try
                                     {var elt$0=parse_element(source,elt)}
                                    catch(err$0)
                                     {err$0 = caml_wrap_exception(err$0);
                                      var _g__=caml_call1(at_field(n),err$0);
                                      throw caml_call1(at_field(field),_g__);
                                      var err=err$0}
                                    var acc$1=[0,[0,n,elt$0],acc$0],acc$0=acc$1,param$0=tl;
                                    continue}
                                  return caml_call1(Stdlib_list[9],acc$0)}};
                            return items(0,props)}
                          var _g9_=unexpected(_g8_,cst_object$3);
                          throw caml_call1(at_field(field),_g9_)}
                        return 0},
                     pattern_properties=
                      parse_element_assoc(cst_patternProperties$0),
                     schema_dependencies=
                      parse_element_assoc(cst_schemaDependencies$0),
                     match$4=opt_length_field(json,cst_minProperties$0);
                    if(match$4)
                     var l$2=match$4[1],min_properties=l$2;
                    else
                     var min_properties=0;
                    var
                     max_properties=
                      opt_length_field(json,cst_maxProperties$0);
                    return [0,
                            [0,
                             properties,
                             pattern_properties,
                             additional_properties,
                             min_properties,
                             max_properties,
                             schema_dependencies,
                             property_dependencies]]}
                  return [9,numeric_specs(json)]}
                return 1}
              return [8,integer_specs(json)]}
            return 0}
          var
           unique_items=opt_bool_field(0,json,cst_uniqueItems$1),
           min_items=opt_length_field(json,cst_minItems$1),
           max_items=opt_length_field(json,cst_maxItems$1);
          if(min_items)
           var l$3=min_items[1],min_items$0=l$3;
          else
           var min_items$0=0;
          var match$5=opt_field_view(json,cst_additionalItems$0),switch$5=0;
          if(match$5)
           {var _g4_=match$5[1],switch$6=0;
            if(typeof _g4_ !== "number" && 737456202 === _g4_[1])
             if(_g4_[2])
              {var _g5_=[0,min_items$0,max_items,unique_items,[0,element(2)]];
               switch$6 = 1}
             else
              switch$6 = 2;
            var switch$7=0;
            switch(switch$6)
             {case 2:switch$7 = 1;break;
              case 0:
               try
                {var elt$2=parse_element(source,caml_call1(_gv_[2],_g4_))}
               catch(err)
                {err = caml_wrap_exception(err);
                 throw caml_call1(at_field(cst_additionalItems$1),err)}
               var _g5_=[0,min_items$0,max_items,unique_items,[0,elt$2]];
               break
              }
            if(! switch$7){var specs$0=_g5_;switch$5 = 1}}
          if(! switch$5)var specs$0=[0,min_items$0,max_items,unique_items,0];
          var match$6=opt_field_view(json,cst_items$1);
          if(match$6)
           {var _g6_=match$6[1];
            if(typeof _g6_ !== "number" && 65 === _g6_[1])
             {var elts=_g6_[2],i=0,acc$1=0,param$0=elts;
              for(;;)
               {if(param$0)
                 {var tl$0=param$0[2],elt$4=param$0[1];
                  try
                   {var elt$5=parse_element(source,elt$4)}
                  catch(err)
                   {err = caml_wrap_exception(err);
                    var _g7_=caml_call1(at_index(i),err);
                    throw caml_call1(at_field(cst_items$3),_g7_);
                    var err$4=err}
                  var
                   acc$2=[0,elt$5,acc$1],
                   i$0=i + 1 | 0,
                   i=i$0,
                   acc$1=acc$2,
                   param$0=tl$0;
                  continue}
                return [1,caml_call1(Stdlib_list[9],acc$1),specs$0]}}
            try
             {var elt$3=parse_element(source,caml_call1(_gv_[2],_g6_))}
            catch(err)
             {err = caml_wrap_exception(err);
              throw caml_call1(at_field(cst_items$2),err)}
            return [2,elt$3,specs$0]}
          return [2,element(2),specs$0]}
        var root=parse_element(Uri[1],json);
        try
         {var
           switch$0=0,
           _gQ_=caml_call2(Query[1],_bB_,json),
           val=caml_call1(_gv_[1],_gQ_);
          switch$0 = 1}
        catch(_gV_)
         {_gV_ = caml_wrap_exception(_gV_);if(_gV_ !== Stdlib[8])throw _gV_}
        if(switch$0)
         {var switch$1=0;
          if(typeof val !== "number" && 79 === val[1])
           {var
             all=val[2],
             _gR_=
              function(param)
               {var
                 n=param[1],
                 _gU_=caml_call2(Stdlib[28],cst_definitions$0,n);
                return caml_call1(Uri[6],_gU_)},
             all$0=caml_call2(Stdlib_list[17],_gR_,all),
             _gS_=function(uri){collect_definition(uri);return 0};
            caml_call2(Stdlib_list[15],_gS_,all$0);
            switch$1 = 1}}
        var _gO_=collected_id_refs[1];
        function _gP_(id)
         {var _gT_=1 - caml_call2(Stdlib_list[45],id,ids);
          if(_gT_)
           throw [0,
                  Cannot_parse,
                  0,
                  [0,Dangling_reference,caml_call2(Uri[41],Uri[1],[0,id])]];
          return _gT_}
        caml_call2(Stdlib_list[15],_gP_,_gO_);
        var definitions=collected_definitions[1];
        return [0,root,schema_source,definitions,ids,0]}
      function check_definitions(root,definitions)
       {var collected_id_defs=[0,0],collected_id_refs=[0,0];
        function check(elt)
         {var elt$0=elt;
          for(;;)
           {var id=elt$0[7],kind=elt$0[5];
            if(id)
             {var id$0=id[1];
              collected_id_defs[1] = [0,[0,id$0,elt$0],collected_id_defs[1]]}
            if(typeof kind !== "number")
             switch(kind[0])
              {case 0:
                var
                 match=kind[1],
                 schema_dependencies=match[6],
                 additional_properties=match[3],
                 pattern_properties=match[2],
                 properties=match[1],
                 _gK_=function(param){var e=param[2];return check(e)};
                caml_call2(Stdlib_list[15],_gK_,properties);
                var _gL_=function(param){var e=param[2];return check(e)};
                caml_call2(Stdlib_list[15],_gL_,pattern_properties);
                var _gM_=function(param){var e=param[2];return check(e)};
                caml_call2(Stdlib_list[15],_gM_,schema_dependencies);
                if(additional_properties)
                 {var elt$1=additional_properties[1],elt$0=elt$1;continue}
                return 0;
               case 1:
                var match$0=kind[2],additional_items=match$0[4],es=kind[1];
                caml_call2(Stdlib_list[15],check,es);
                if(additional_items)
                 {var elt$2=additional_items[1],elt$0=elt$2;continue}
                return 0;
               case 2:
                var match$1=kind[2],additional_items$0=match$1[4],e=kind[1];
                check(e);
                if(additional_items$0)
                 {var elt$3=additional_items$0[1],elt$0=elt$3;continue}
                return 0;
               case 3:
                var es$0=kind[2];
                return caml_call2(Stdlib_list[15],check,es$0);
               case 4:
                var path=kind[1],_gN_=1 - _bl_(path,definitions);
                if(_gN_)
                 {var path$0=json_pointer_of_path(0,path);
                  throw [0,
                         Dangling_reference,
                         caml_call1(caml_call1(Uri[41],Uri[1]),[0,path$0])]}
                return _gN_;
               case 5:
                var id$1=kind[1];
                collected_id_refs[1] = [0,id$1,collected_id_refs[1]];
                return 0
               }
            return 0}}
        check(root);
        function _gG_(param){var root=param[2];return check(root)}
        caml_call2(Stdlib_list[15],_gG_,definitions);
        var _gH_=collected_id_refs[1];
        function _gI_(id)
         {var _gJ_=1 - caml_call2(Stdlib_list[45],id,collected_id_defs[1]);
          if(_gJ_)
           throw [0,Dangling_reference,caml_call2(Uri[41],Uri[1],[0,id])];
          return _gJ_}
        caml_call2(Stdlib_list[15],_gI_,_gH_);
        return collected_id_defs[1]}
      function create(root)
       {var ids=check_definitions(root,0);return [0,root,Uri[1],0,ids,0]}
      function root(param){var root=param[1];return root}
      function update(root,sch)
       {var ids=check_definitions(root,sch[3]);
        return [0,root,sch[2],sch[3],ids,sch[5]]}
      var
       sacc=create(element(2)),
       _gw_=Uri[1],
       self=[0,element([6,caml_call1(Uri[6],version)]),_gw_,0,0,0];
      function simplify(schema)
       {var res=[0,0];
        function collect(param)
         {var param$0=param;
          for(;;)
           {var kind=param$0[5];
            if(typeof kind !== "number")
             switch(kind[0])
              {case 0:
                var
                 match=kind[1],
                 schema_dependencies=match[6],
                 additional_properties=match[3],
                 pattern_properties=match[2],
                 properties=match[1],
                 _gD_=function(param){var e=param[2];return collect(e)};
                caml_call2(Stdlib_list[15],_gD_,properties);
                var _gE_=function(param){var e=param[2];return collect(e)};
                caml_call2(Stdlib_list[15],_gE_,pattern_properties);
                var _gF_=function(param){var e=param[2];return collect(e)};
                caml_call2(Stdlib_list[15],_gF_,schema_dependencies);
                if(additional_properties)
                 {var param$1=additional_properties[1],param$0=param$1;
                  continue}
                return 0;
               case 1:
                var match$0=kind[2],additional_items=match$0[4],es=kind[1];
                caml_call2(Stdlib_list[15],collect,es);
                if(additional_items)
                 {var param$2=additional_items[1],param$0=param$2;continue}
                return 0;
               case 2:
                var match$1=kind[2],additional_items$0=match$1[4],e=kind[1];
                collect(e);
                if(additional_items$0)
                 {var param$3=additional_items$0[1],param$0=param$3;continue}
                return 0;
               case 3:
                var es$0=kind[2];
                return caml_call2(Stdlib_list[15],collect,es$0);
               case 4:
                var path=kind[1],def=_bk_(path,schema[3]);
                res[1] = insert_definition(path,def,res[1]);
                return 0
               }
            return 0}}
        collect(schema[1]);
        return [0,schema[1],schema[2],res[1],schema[4],schema[5]]}
      function definition_path_of_name(opt,name)
       {if(opt)
         var sth=opt[1],definitions_path=sth;
        else
         var definitions_path=cst_definitions$1;
        try
         {var val=caml_string_get(name,0)}
        catch(_gC_){throw [0,Bad_reference,name]}
        var
         name$0=
          47 === val?name:caml_call2(Stdlib[28],definitions_path,name);
        return path_of_json_pointer(_bC_,name$0)}
      function find_definition(definitions_path,name,schema)
       {var path=definition_path_of_name(definitions_path,name);
        return _bk_(path,schema[3])}
      function definition_ref(definitions_path,name)
       {var path=definition_path_of_name(definitions_path,name);
        return element([4,path])}
      function definition_exists(definitions_path,name,schema)
       {var path=definition_path_of_name(definitions_path,name);
        return _bl_(path,schema[3])}
      function add_definition(definitions_path,name,elt,schema)
       {var
         path=definition_path_of_name(definitions_path,name),
         definitions=insert_definition(path,elt,schema[3]),
         _gB_=element([4,path]);
        return [0,
                [0,schema[1],schema[2],definitions,schema[4],schema[5]],
                _gB_]}
      function merge_definitions(param)
       {var sb=param[2],sa=param[1];
        function sorted_merge(rem)
         {if(rem)
           {var _gA_=rem[2];
            if(_gA_)
             {var
               tl=_gA_[2],
               b=_gA_[1],
               db=b[2],
               nb=b[1],
               a=rem[1],
               da=a[2],
               na=a[1];
              if(caml_equal(na,nb))
               {if(3 !== da[5] && 3 !== db[5] && ! eq_element(da,db))
                 throw [0,Duplicate_definition,na,da,db];
                return [0,[0,na,da],sorted_merge(tl)]}
              return [0,a,sorted_merge([0,b,tl])]}}
          return rem}
        var
         _gz_=caml_call2(Stdlib[37],sa[3],sb[3]),
         definitions=
          sorted_merge(caml_call2(Stdlib_list[51],caml_compare,_gz_));
        return [0,
                [0,sa[1],sa[2],definitions,sa[4],sa[5]],
                [0,sb[1],sb[2],definitions,sb[4],sb[5]]]}
      function combine(op,param)
       {var sacc$0=sacc,eacc=0,param$0=param;
        for(;;)
         {if(param$0)
           {var
             ss=param$0[2],
             s=param$0[1],
             match=merge_definitions([0,sacc$0,s]),
             s$0=match[2],
             sacc$1=match[1],
             eacc$0=[0,s$0[1],eacc],
             sacc$0=sacc$1,
             eacc=eacc$0,
             param$0=ss;
            continue}
          return update(element([3,op,eacc]),sacc$0)}}
      function is_nullable(param)
       {var ids=param[4],definitions=param[3],root=param[1];
        function nullable(param)
         {var param$0=param;
          for(;;)
           {var kind=param$0[5],switch$0=0;
            if(typeof kind === "number")
             switch(kind)
              {case 0:switch$0 = 1;break;case 3:break;default:return 1}
            else
             switch(kind[0])
              {case 3:
                var _gx_=kind[1];
                if(2 === _gx_)
                 {var elts=kind[2];
                  return caml_call2(Stdlib_list[29],nullable,elts)}
                if(! (3 <= _gx_))
                 {var elts$0=kind[2];
                  return caml_call2(Stdlib_list[30],nullable,elts$0)}
                var _gy_=kind[2];
                if(_gy_ && ! _gy_[2])
                 {var elt=_gy_[1];return 1 - nullable(elt)}
                break;
               case 4:
                var
                 path=kind[1],
                 param$1=caml_call2(Stdlib_list[41],path,definitions),
                 param$0=param$1;
                continue;
               case 5:
                var
                 id=kind[1],
                 param$2=caml_call2(Stdlib_list[41],id,ids),
                 param$0=param$2;
                continue;
               default:switch$0 = 1}
            if(switch$0)return 0;
            throw [0,Assert_failure,_bD_]}}
        return nullable(root)}
      var object_specs=[0,0,0,[0,element(2)],0,0,0,0];
      return [0,
              Query,
              to_json,
              unexpected,
              at_path,
              at_field,
              at_index,
              of_json,
              check_definitions,
              create,
              root,
              update,
              sacc,
              self,
              simplify,
              definition_path_of_name,
              find_definition,
              definition_ref,
              definition_exists,
              add_definition,
              merge_definitions,
              combine,
              is_nullable,
              array_specs,
              object_specs,
              string_specs,
              numeric_specs]}
    var
     include$0=Make$0(Ezjsonm),
     to_json=include$0[2],
     of_json=include$0[7],
     create=include$0[9],
     root=include$0[10],
     update=include$0[11],
     any=include$0[12],
     self=include$0[13],
     simplify=include$0[14],
     find_definition=include$0[16],
     definition_ref=include$0[17],
     definition_exists=include$0[18],
     add_definition=include$0[19],
     merge_definitions=include$0[20],
     combine=include$0[21],
     is_nullable=include$0[22],
     array_specs$0=include$0[23],
     object_specs=include$0[24],
     string_specs$0=include$0[25],
     numeric_specs$0=include$0[26],
     Json_schema=
      [0,
       element,
       create,
       root,
       update,
       self,
       any,
       combine,
       is_nullable,
       merge_definitions,
       simplify,
       add_definition,
       find_definition,
       definition_exists,
       definition_ref,
       array_specs$0,
       object_specs,
       string_specs$0,
       numeric_specs$0,
       to_json,
       of_json,
       pp$0,
       Cannot_parse,
       Dangling_reference,
       Bad_reference,
       Unexpected,
       Duplicate_definition,
       print_error$0,
       function(_gt_){var _gu_=Make$0(_gt_);return [0,_gu_[2],_gu_[7]]}];
    caml_register_global(463,Json_schema,"Json_schema");
    var
     Unexpected$0=[248,cst_Json_encoding_Unexpected,caml_fresh_oo_id(0)],
     No_case_matched=[248,cst_Json_encoding_No_case_matc,caml_fresh_oo_id(0)],
     Bad_array_size=[248,cst_Json_encoding_Bad_array_si,caml_fresh_oo_id(0)],
     Missing_field=[248,cst_Json_encoding_Missing_fiel,caml_fresh_oo_id(0)],
     Unexpected_field=[248,cst_Json_encoding_Unexpected_f,caml_fresh_oo_id(0)],
     Bad_schema=[248,cst_Json_encoding_Bad_schema,caml_fresh_oo_id(0)],
     Cannot_destruct=[248,cst_Json_encoding_Cannot_destr,caml_fresh_oo_id(0)];
    function unexpected(kind,expected)
     {if(typeof kind === "number")
       var kind$0=cst_null$1;
      else
       {var _gp_=kind[1];
        if(65 === _gp_)
         var _gq_=kind[2]?cst_array$2:cst_empty_array$0,_gr_=_gq_;
        else
         if(365180284 <= _gp_)
          var _gr_=737456202 <= _gp_?cst_boolean$1:cst_number$2;
         else
          if(79 <= _gp_)
           var _gs_=kind[2]?cst_object$4:cst_empty_object$0,_gr_=_gs_;
          else
           var _gr_=cst_string$4;
        var kind$0=_gr_}
      return [0,Cannot_destruct,[0,0,[0,Unexpected$0,kind$0,expected]]]}
    function Make$1(Repr)
     {function construct(enc,v)
       {function construct(enc)
         {var enc$0=enc;
          for(;;)
           if(typeof enc$0 === "number")
            switch(enc$0)
             {case 0:
               return function(param){return caml_call1(Repr[2],870828711)};
              case 1:return function(param){return caml_call1(Repr[2],_bE_)};
              case 2:return function(param){return caml_call1(Repr[2],_bF_)};
              case 3:
               return function(b){return caml_call1(Repr[2],[0,737456202,b])};
              default:
               return function(s){return caml_call1(Repr[2],[0,-976970511,s])}}
           else
            switch(enc$0[0])
             {case 0:
               var t=enc$0[1];
               return function(param)
                {if(param){var v=param[1];return caml_call1(construct(t),v)}
                 return caml_call1(Repr[2],870828711)};
              case 1:
               var str=enc$0[1];
               return function(param)
                {return caml_call1(Repr[2],[0,-976970511,str])};
              case 2:
               var
                match=enc$0[1],
                upper_bound=match[5],
                lower_bound=match[4],
                to_float=match[3],
                int_name=match[1];
               return function(i)
                {var
                  _gk_=caml_lessthan(i,lower_bound),
                  _gl_=_gk_ || caml_greaterthan(i,upper_bound);
                 if(_gl_)
                  {var
                    _gm_=caml_call2(Stdlib[28],int_name,cst_out_of_range),
                    _gn_=caml_call2(Stdlib[28],cst_Json_encoding_construct,_gm_);
                   caml_call1(Stdlib[1],_gn_)}
                 var _go_=[0,365180284,caml_call1(to_float,i)];
                 return caml_call1(Repr[2],_go_)};
              case 3:
               var _f4_=enc$0[1];
               if(_f4_)
                {var
                  match$0=_f4_[1],
                  maximum=match$0[3],
                  minimum=match$0[2],
                  float_name=match$0[1],
                  _f5_=caml_call2(Stdlib[28],float_name,cst_out_of_range$0),
                  err=
                   caml_call2(Stdlib[28],cst_Json_encoding_construct$0,_f5_);
                 return function(float$0)
                  {var
                    _gi_=float$0 < minimum?1:0,
                    _gj_=_gi_ || (maximum < float$0?1:0);
                   if(_gj_)caml_call1(Stdlib[1],err);
                   return caml_call1(Repr[2],[0,365180284,float$0])}}
               return function(float$0)
                {return caml_call1(Repr[2],[0,365180284,float$0])};
              case 4:
               var
                t$0=enc$0[1],
                w=function(v){return caml_call1(construct(t$0),v)};
               return function(arr)
                {var
                  _gg_=caml_call2(Stdlib_array[15],w,arr),
                  _gh_=[0,65,caml_call1(Stdlib_array[11],_gg_)];
                 return caml_call1(Repr[2],_gh_)};
              case 5:
               var _f6_=enc$0[1];
               switch(_f6_[0])
                {case 0:
                  var t$1=_f6_[2],n=_f6_[1];
                  return function(v)
                   {var _ge_=[0,79,[0,[0,n,caml_call1(construct(t$1),v)],0]];
                    return caml_call1(Repr[2],_ge_)};
                 case 1:
                  var t$2=_f6_[2],n$0=_f6_[1];
                  return function(param)
                   {if(param)
                     {var
                       v=param[1],
                       _gd_=[0,79,[0,[0,n$0,caml_call1(construct(t$2),v)],0]];
                      return caml_call1(Repr[2],_gd_)}
                    return caml_call1(Repr[2],_bG_)};
                 default:
                  var d=_f6_[5],t$3=_f6_[2],n$1=_f6_[1];
                  return function(v)
                   {var
                     _gf_=
                      caml_notequal(v,d)
                       ?[0,[0,n$1,caml_call1(construct(t$3),v)],0]
                       :0;
                    return caml_call1(Repr[2],[0,79,_gf_])}}
              case 6:
               var o2=enc$0[2],o1=enc$0[1];
               return function(param)
                {var
                  v2=param[2],
                  v1=param[1],
                  _ga_=caml_call1(construct(o1),v1),
                  match=caml_call1(Repr[1],_ga_),
                  _gb_=caml_call1(construct(o2),v2),
                  match$0=caml_call1(Repr[1],_gb_);
                 if(typeof match === "number")
                  {if(870828711 === match)870828711 === match$0}
                 else
                  if
                   (79
                    ===
                    match[1]
                    &&
                    typeof match$0
                    !==
                    "number"
                    &&
                    79
                    ===
                    match$0[1])
                   {var
                     l2=match$0[2],
                     l1=match[2],
                     _gc_=[0,79,caml_call2(Stdlib[37],l1,l2)];
                    return caml_call1(Repr[2],_gc_)}
                 return caml_call1(Stdlib[1],cst_Json_encoding_construct_co)};
              case 7:
               var t$4=enc$0[1];
               return function(v)
                {var _f$_=[0,65,[0,caml_call1(construct(t$4),v),0]];
                 return caml_call1(Repr[2],_f$_)};
              case 8:
               var o2$0=enc$0[2],o1$0=enc$0[1];
               return function(param)
                {var
                  v2=param[2],
                  v1=param[1],
                  _f8_=caml_call1(construct(o1$0),v1),
                  match=caml_call1(Repr[1],_f8_),
                  _f9_=caml_call1(construct(o2$0),v2),
                  match$0=caml_call1(Repr[1],_f9_);
                 if
                  (typeof match
                   !==
                   "number"
                   &&
                   65
                   ===
                   match[1]
                   &&
                   typeof match$0
                   !==
                   "number"
                   &&
                   65
                   ===
                   match$0[1])
                  {var
                    l2=match$0[2],
                    l1=match[2],
                    _f__=[0,65,caml_call2(Stdlib[37],l1,l2)];
                   return caml_call1(Repr[2],_f__)}
                 return caml_call1(Stdlib[1],cst_Json_encoding_construct_co$0)};
              case 9:
               var match$1=enc$0[1],write=match$1[1];
               return function(j){return caml_call2(write,Repr,j)};
              case 10:
               var t$5=enc$0[3],ffrom=enc$0[1];
               return function(v)
                {var _f7_=caml_call1(ffrom,v);
                 return caml_call1(construct(t$5),_f7_)};
              case 11:var enc$1=enc$0[4],enc$0=enc$1;continue;
              case 12:
               var self=enc$0[4],enc$2=caml_call1(self,enc$0),enc$0=enc$2;
               continue;
              default:
               var cases=enc$0[1];
               return function(v)
                {var param=cases;
                 for(;;)
                  {if(param)
                    {var
                      rest=param[2],
                      match=param[1],
                      proj=match[4],
                      encoding=match[1],
                      match$0=caml_call1(proj,v);
                     if(match$0)
                      {var v$0=match$0[1];
                       return caml_call1(construct(encoding),v$0)}
                     var param=rest;
                     continue}
                   return caml_call1
                           (Stdlib[1],cst_Json_encoding_construct_co$1)}}}}
        return caml_call1(construct(enc),v)}
      function destruct(enc)
       {var enc$0=enc;
        for(;;)
         if(typeof enc$0 === "number")
          switch(enc$0)
           {case 0:
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(870828711 === k)return 0;
               throw unexpected(k,cst_null$2)};
            case 1:
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number" && 79 === k[1])
                {var _fT_=k[2];
                 if(! _fT_)return 0;
                 if(! _fT_[2])
                  {var match=_fT_[1],f=match[1];
                   throw [0,Cannot_destruct,[0,0,[0,Unexpected_field,f]]]}}
               throw unexpected(k,cst_an_empty_object)};
            case 2:return function(v){caml_call1(Repr[1],v);return 0};
            case 3:
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number" && 737456202 === k[1])
                {var b=k[2];return b}
               throw unexpected(k,cst_boolean$2)};
            default:
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number" && -976970511 === k[1])
                {var s=k[2];return s}
               throw unexpected(k,cst_string$5)}}
         else
          switch(enc$0[0])
           {case 0:
             var t=enc$0[1];
             return function(v)
              {var match=caml_call1(Repr[1],v);
               return 870828711 === match?0:[0,caml_call1(destruct(t),v)]};
            case 1:
             var str=enc$0[1];
             return function(v)
              {var x=caml_call1(Repr[1],v);
               if(typeof x !== "number" && -976970511 === x[1])
                {var s=x[2];if(caml_string_equal(s,str))return 0}
               throw unexpected(x,str)};
            case 2:
             var
              match=enc$0[1],
              upper_bound=match[5],
              lower_bound=match[4],
              to_float=match[3],
              of_float=match[2],
              int_name=match[1],
              lower_bound$0=caml_call1(to_float,lower_bound),
              upper_bound$0=caml_call1(to_float,upper_bound);
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number" && 365180284 === k[1])
                {var
                  v$0=k[2],
                  match=caml_modf_float(v$0),
                  v$1=match[2],
                  rest=match[1];
                 if(rest != 0.)
                  {var
                    _fZ_=
                     caml_call2
                      (Stdlib[28],int_name,cst_cannot_have_a_fractional_p),
                    exn=[0,Stdlib[7],_fZ_];
                   throw [0,Cannot_destruct,[0,0,exn]]}
                 var
                  _f0_=v$1 < lower_bound$0?1:0,
                  _f1_=_f0_ || (upper_bound$0 < v$1?1:0);
                 if(_f1_)
                  {var
                    _f2_=caml_call2(Stdlib[28],int_name,cst_out_of_range$1),
                    exn$0=[0,Stdlib[7],_f2_];
                   throw [0,Cannot_destruct,[0,0,exn$0]]}
                 return caml_call1(of_float,v$1)}
               throw unexpected(k,cst_number$3)};
            case 3:
             var _fS_=enc$0[1];
             if(_fS_)
              {var
                match$0=_fS_[1],
                maximum=match$0[3],
                minimum=match$0[2],
                float_name=match$0[1];
               return function(v)
                {var k=caml_call1(Repr[1],v);
                 if(typeof k !== "number" && 365180284 === k[1])
                  {var f=k[2];
                   if(! (f < minimum) && ! (maximum < f))return f;
                   var
                    _fY_=caml_call2(Stdlib[28],float_name,cst_out_of_range$2),
                    exn=[0,Stdlib[7],_fY_];
                   throw [0,Cannot_destruct,[0,0,exn]]}
                 throw unexpected(k,cst_float)}}
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number" && 365180284 === k[1])
                {var f=k[2];return f}
               throw unexpected(k,cst_float$0)};
            case 4:
             var t$0=enc$0[1];
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number")
                {var _fU_=k[1];
                 if(65 === _fU_)
                  {var
                    cells=k[2],
                    _fV_=caml_call1(Stdlib_array[12],cells),
                    _fW_=
                     function(i,cell)
                      {try
                        {var _fX_=caml_call1(destruct(t$0),cell);return _fX_}
                       catch(exn)
                        {exn = caml_wrap_exception(exn);
                         if(exn[1] === Cannot_destruct)
                          {var match=exn[2],err=match[2],path=match[1];
                           throw [0,Cannot_destruct,[0,[0,[0,-784200974,i],path],err]]}
                         throw exn}};
                   return caml_call2(Stdlib_array[16],_fW_,_fV_)}
                 if(79 === _fU_ && ! k[2])return [0]}
               throw unexpected(k,cst_array$3)};
            case 5:
             var d=destruct_obj(enc$0);
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number" && 79 === k[1])
                {var
                  fields=k[2],
                  match=caml_call1(d,fields),
                  ign=match[3],
                  rest=match[2],
                  r=match[1];
                 if(rest)
                  {var match$0=rest[1],field=match$0[1];
                   if(! ign)throw [0,Unexpected_field,field]}
                 return r}
               throw unexpected(k,cst_object$5)};
            case 6:
             var d$0=destruct_obj(enc$0);
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number" && 79 === k[1])
                {var
                  fields=k[2],
                  match=caml_call1(d$0,fields),
                  ign=match[3],
                  rest=match[2],
                  r=match[1];
                 if(rest)
                  {var match$0=rest[1],field=match$0[1];
                   if(! ign)throw [0,Unexpected_field,field]}
                 return r}
               throw unexpected(k,cst_object$6)};
            case 7:
             var match$1=destruct_tup(0,enc$0),i=match$1[2],r=match$1[1];
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number" && 65 === k[1])
                {var
                  cells=k[2],
                  cells$0=caml_call1(Stdlib_array[12],cells),
                  len=cells$0.length - 1;
                 if(i !== cells$0.length - 1)
                  throw [0,Cannot_destruct,[0,0,[0,Bad_array_size,len,i]]];
                 return caml_call1(r,cells$0)}
               throw unexpected(k,cst_array$4)};
            case 8:
             var match$2=destruct_tup(0,enc$0),i$0=match$2[2],r$0=match$2[1];
             return function(v)
              {var k=caml_call1(Repr[1],v);
               if(typeof k !== "number" && 65 === k[1])
                {var
                  cells=k[2],
                  cells$0=caml_call1(Stdlib_array[12],cells),
                  len=cells$0.length - 1;
                 if(i$0 !== cells$0.length - 1)
                  throw [0,Cannot_destruct,[0,0,[0,Bad_array_size,len,i$0]]];
                 return caml_call1(r$0,cells$0)}
               throw unexpected(k,cst_array$5)};
            case 9:
             var match$3=enc$0[1],read=match$3[2];
             return caml_call1(read,Repr);
            case 10:
             var t$1=enc$0[3],fto=enc$0[2];
             return function(v)
              {return caml_call1(fto,caml_call1(destruct(t$1),v))};
            case 11:var enc$1=enc$0[4],enc$0=enc$1;continue;
            case 12:
             var self=enc$0[4],enc$2=caml_call1(self,enc$0),enc$0=enc$2;
             continue;
            default:
             var cases=enc$0[1];
             return function(v)
              {function do_cases(errs,param)
                {var errs$0=errs,param$0=param;
                 for(;;)
                  {if(param$0)
                    {var
                      rest=param$0[2],
                      match=param$0[1],
                      inj=match[5],
                      encoding=match[1];
                     try
                      {var _f3_=caml_call1(inj,caml_call1(destruct(encoding),v));
                       return _f3_}
                     catch(err)
                      {err = caml_wrap_exception(err);
                       var errs$1=[0,err,errs$0],errs$0=errs$1,param$0=rest;
                       continue}}
                   throw [0,
                          Cannot_destruct,
                          [0,0,[0,No_case_matched,caml_call1(Stdlib_list[9],errs$0)]]]}}
               return do_cases(0,cases)}}}
      function destruct_tup(i,t)
       {var t$0=t;
        for(;;)
         {if(typeof t$0 !== "number")
           switch(t$0[0])
            {case 7:
              var t$1=t$0[1],_fO_=i + 1 | 0;
              return [0,
                      function(arr)
                       {try
                         {var
                           _fQ_=runtime.caml_check_bound(arr,i)[1 + i],
                           _fR_=caml_call1(destruct(t$1),_fQ_);
                          return _fR_}
                        catch(exn)
                         {exn = caml_wrap_exception(exn);
                          if(exn[1] === Cannot_destruct)
                           {var match=exn[2],err=match[2],path=match[1];
                            throw [0,Cannot_destruct,[0,[0,[0,-784200974,i],path],err]]}
                          throw exn}},
                      _fO_];
             case 8:
              var
               t2=t$0[2],
               t1=t$0[1],
               match=destruct_tup(i,t1),
               i$0=match[2],
               r1=match[1],
               match$0=destruct_tup(i$0,t2),
               i$1=match$0[2],
               r2=match$0[1];
              return [0,
                      function(arr)
                       {var _fP_=caml_call1(r2,arr);
                        return [0,caml_call1(r1,arr),_fP_]},
                      i$1];
             case 10:
              var
               t$2=t$0[3],
               fto=t$0[2],
               match$1=destruct_tup(i,t$2),
               i$2=match$1[2],
               r=match$1[1];
              return [0,
                      function(arr){return caml_call1(fto,caml_call1(r,arr))},
                      i$2];
             case 11:var t$3=t$0[4],t$0=t$3;continue;
             case 12:var self=t$0[4],t$4=caml_call1(self,t$0),t$0=t$4;continue
             }
          return caml_call1(Stdlib[1],cst_Json_encoding_destruct_con)}}
      function destruct_obj(t)
       {var t$0=t;
        for(;;)
         {var
           assoc=
            function(acc,n,param)
             {var acc$0=acc,param$0=param;
              for(;;)
               {if(param$0)
                 {var oth=param$0[1],rest=param$0[2],v=oth[2],f=oth[1];
                  if(caml_equal(n,f))
                   return [0,v,caml_call2(Stdlib[37],acc$0,rest)];
                  var
                   param$1=param$0[2],
                   acc$1=[0,oth,acc$0],
                   acc$0=acc$1,
                   param$0=param$1;
                  continue}
                throw Stdlib[8]}};
          if(typeof t$0 === "number")
           switch(t$0)
            {case 1:return function(fields){return [0,0,fields,0]};
             case 2:return function(fields){return [0,0,fields,1]}
             }
          else
           switch(t$0[0])
            {case 5:
              var _fJ_=t$0[1];
              switch(_fJ_[0])
               {case 0:
                 var t$1=_fJ_[2],n=_fJ_[1];
                 return function(fields)
                  {try
                    {var
                      match$0=assoc(0,n,fields),
                      rest=match$0[2],
                      v=match$0[1],
                      _fM_=[0,caml_call1(destruct(t$1),v),rest,0];
                     return _fM_}
                   catch(exn)
                    {exn = caml_wrap_exception(exn);
                     if(exn === Stdlib[8])
                      throw [0,Cannot_destruct,[0,0,[0,Missing_field,n]]];
                     if(exn[1] === Cannot_destruct)
                      {var match=exn[2],err=match[2],path=match[1];
                       throw [0,Cannot_destruct,[0,[0,[0,331416730,n],path],err]]}
                     throw exn}};
                case 1:
                 var t$2=_fJ_[2],n$0=_fJ_[1];
                 return function(fields)
                  {try
                    {var
                      match$0=assoc(0,n$0,fields),
                      rest=match$0[2],
                      v=match$0[1],
                      _fL_=[0,[0,caml_call1(destruct(t$2),v)],rest,0];
                     return _fL_}
                   catch(exn)
                    {exn = caml_wrap_exception(exn);
                     if(exn === Stdlib[8])return [0,0,fields,0];
                     if(exn[1] === Cannot_destruct)
                      {var match=exn[2],err=match[2],path=match[1];
                       throw [0,Cannot_destruct,[0,[0,[0,331416730,n$0],path],err]]}
                     throw exn}};
                default:
                 var d=_fJ_[5],t$3=_fJ_[2],n$1=_fJ_[1];
                 return function(fields)
                  {try
                    {var
                      match$0=assoc(0,n$1,fields),
                      rest=match$0[2],
                      v=match$0[1],
                      _fN_=[0,caml_call1(destruct(t$3),v),rest,0];
                     return _fN_}
                   catch(exn)
                    {exn = caml_wrap_exception(exn);
                     if(exn === Stdlib[8])return [0,d,fields,0];
                     if(exn[1] === Cannot_destruct)
                      {var match=exn[2],err=match[2],path=match[1];
                       throw [0,Cannot_destruct,[0,[0,[0,331416730,n$1],path],err]]}
                     throw exn}}}
             case 6:
              var o2=t$0[2],o1=t$0[1],d1=destruct_obj(o1),d2=destruct_obj(o2);
              return function(fields)
               {var
                 match=caml_call1(d1,fields),
                 ign1=match[3],
                 rest=match[2],
                 r1=match[1],
                 match$0=caml_call1(d2,rest),
                 ign2=match$0[3],
                 rest$0=match$0[2],
                 r2=match$0[1],
                 ign1$0=ign1 || ign2;
                return [0,[0,r1,r2],rest$0,ign1$0]};
             case 10:
              var t$4=t$0[3],fto=t$0[2],d$0=destruct_obj(t$4);
              return function(fields)
               {var
                 match=caml_call1(d$0,fields),
                 ign=match[3],
                 rest=match[2],
                 r=match[1];
                return [0,caml_call1(fto,r),rest,ign]};
             case 11:var t$5=t$0[4],t$0=t$5;continue;
             case 12:
              var self=t$0[4],t$6=caml_call1(self,t$0),t$0=t$6;continue;
             case 13:
              var cases=t$0[1];
              return function(fields)
               {function do_cases(errs,param)
                 {var errs$0=errs,param$0=param;
                  for(;;)
                   {if(param$0)
                     {var
                       rest=param$0[2],
                       match=param$0[1],
                       inj=match[5],
                       encoding=match[1];
                      try
                       {var
                         match$0=caml_call1(destruct_obj(encoding),fields),
                         ign=match$0[3],
                         rest$0=match$0[2],
                         r=match$0[1],
                         _fK_=[0,caml_call1(inj,r),rest$0,ign];
                        return _fK_}
                      catch(err)
                       {err = caml_wrap_exception(err);
                        var errs$1=[0,err,errs$0],errs$0=errs$1,param$0=rest;
                        continue}}
                    throw [0,
                           Cannot_destruct,
                           [0,0,[0,No_case_matched,caml_call1(Stdlib_list[9],errs$0)]]]}}
                return do_cases(0,cases)}
             }
          return caml_call1(Stdlib[1],cst_Json_encoding_destruct_con$0)}}
      function custom(write,read,schema)
       {function read$0(Repr_f,repr)
         {return caml_call1(read,convert(Repr_f,Repr,repr))}
        function write$0(Repr_f,v)
         {return convert(Repr,Repr_f,caml_call1(write,v))}
        return [9,[0,write$0,read$0],schema]}
      return [0,construct,destruct,custom]}
    var Ezjsonm_encoding=Make$1(Ezjsonm);
    function patch_description(title,description,elt)
     {return title
              ?description
                ?[0,title,description,elt[3],elt[4],elt[5],elt[6],elt[7]]
                :[0,title,elt[2],elt[3],elt[4],elt[5],elt[6],elt[7]]
              :description
                ?[0,elt[1],description,elt[3],elt[4],elt[5],elt[6],elt[7]]
                :elt}
    function schema(definitions_path,encoding)
     {var sch=[0,any];
      function prod(l1,l2)
       {if(l1)
         {var
           es=l1[2],
           match=l1[1],
           b1=match[2],
           l1$0=match[1],
           _fG_=prod(es,l2),
           _fH_=
            function(param)
             {var b2=param[2],l2=param[1],b1$0=b1 || b2;
              return [0,caml_call2(Stdlib[37],l1$0,l2),b1$0]},
           _fI_=caml_call2(Stdlib_list[17],_fH_,l2);
          return caml_call2(Stdlib[37],_fI_,_fG_)}
        return 0}
      function object_schema(enc)
       {var enc$0=enc;
        for(;;)
         {if(typeof enc$0 === "number")
           switch(enc$0){case 1:return _bH_;case 2:return _bI_}
          else
           switch(enc$0[0])
            {case 5:
              var _fB_=enc$0[1];
              switch(_fB_[0])
               {case 0:
                 var description=_fB_[4],title=_fB_[3],t=_fB_[2],n=_fB_[1];
                 return [0,
                         [0,
                          [0,
                           [0,n,patch_description(title,description,schema(t)),1,0],
                           0],
                          0],
                         0];
                case 1:
                 var
                  description$0=_fB_[4],
                  title$0=_fB_[3],
                  t$0=_fB_[2],
                  n$0=_fB_[1];
                 return [0,
                         [0,
                          [0,
                           [0,
                            n$0,
                            patch_description(title$0,description$0,schema(t$0)),
                            0,
                            0],
                           0],
                          0],
                         0];
                default:
                 var
                  d=_fB_[5],
                  description$1=_fB_[4],
                  title$1=_fB_[3],
                  t$1=_fB_[2],
                  n$1=_fB_[1],
                  d$0=[0,Ezjsonm,caml_call2(Ezjsonm_encoding[1],t$1,d)];
                 return [0,
                         [0,
                          [0,
                           [0,
                            n$1,
                            patch_description(title$1,description$1,schema(t$1)),
                            0,
                            [0,d$0]],
                           0],
                          0],
                         0]}
             case 6:
              var o2=enc$0[2],o1=enc$0[1],_fC_=object_schema(o2);
              return prod(object_schema(o1),_fC_);
             case 10:
              if(! enc$0[4]){var enc$1=enc$0[3],enc$0=enc$1;continue}break;
             case 11:var enc$2=enc$0[4],enc$0=enc$2;continue;
             case 12:
              var self=enc$0[4],enc$3=caml_call1(self,enc$0),enc$0=enc$3;
              continue;
             case 13:
              var _fD_=enc$0[1];
              if(_fD_)
               {var
                 _fE_=function(param){var o=param[1];return object_schema(o)},
                 _fF_=caml_call2(Stdlib_list[17],_fE_,_fD_);
                return caml_call1(Stdlib_list[14],_fF_)}
              return caml_call1(Stdlib[1],cst_Json_encoding_schema_empty)
             }
          return caml_call1(Stdlib[1],cst_Json_encoding_schema_conse)}}
      function array_schema(enc)
       {var enc$0=enc;
        for(;;)
         {if(typeof enc$0 !== "number")
           switch(enc$0[0])
            {case 7:var t=enc$0[1];return [0,schema(t),0];
             case 8:
              var
               t2=enc$0[2],
               t1=enc$0[1],
               _fz_=array_schema(t2),
               _fA_=array_schema(t1);
              return caml_call2(Stdlib[37],_fA_,_fz_);
             case 10:
              if(! enc$0[4]){var enc$1=enc$0[3],enc$0=enc$1;continue}break;
             case 11:var enc$2=enc$0[4],enc$0=enc$2;continue;
             case 12:
              var self=enc$0[4],enc$3=caml_call1(self,enc$0),enc$0=enc$3;
              continue
             }
          return caml_call1(Stdlib[1],cst_Json_encoding_schema_conse$0)}}
      function schema(o)
       {var o$0=o;
        for(;;)
         if(typeof o$0 === "number")
          switch(o$0)
           {case 0:return element(1);
            case 1:
             return element
                     ([0,
                       [0,
                        object_specs[1],
                        object_specs[2],
                        0,
                        object_specs[4],
                        object_specs[5],
                        object_specs[6],
                        object_specs[7]]]);
            case 2:return element(2);
            case 3:return element(0);
            default:return element([7,string_specs$0])}
         else
          switch(o$0[0])
           {case 0:
             var t=o$0[1],_fk_=[0,element(1),0];
             return element([3,1,[0,schema(t),_fk_]]);
            case 1:
             var
              str=o$0[1],
              init=element([7,string_specs$0]),
              _fl_=init[7],
              _fm_=init[6],
              _fn_=init[5],
              _fo_=[0,[0,to_any([0,-976970511,str]),0]];
             return [0,init[1],init[2],init[3],_fo_,_fn_,_fm_,_fl_];
            case 2:
             var
              match=o$0[1],
              upper_bound=match[5],
              lower_bound=match[4],
              to_float=match[3],
              minimum=[0,[0,caml_call1(to_float,lower_bound),672226188]],
              maximum=[0,[0,caml_call1(to_float,upper_bound),672226188]];
             return element([8,[0,0,minimum,maximum]]);
            case 3:
             var _fp_=o$0[1];
             if(_fp_)
              {var match$0=_fp_[1],maximum$0=match$0[3],minimum$0=match$0[2];
               return element
                       ([9,
                         [0,
                          0,
                          [0,[0,minimum$0,672226188]],
                          [0,[0,maximum$0,672226188]]]])}
             return element([9,numeric_specs$0]);
            case 4:
             var t$0=o$0[1];return element([2,schema(t$0),array_specs$0]);
            case 5:
             var more=object_schema(o$0);
             if(more && ! more[2])
              {var
                match$1=more[1],
                ext=match$1[2],
                properties=match$1[1],
                additional_properties=ext?[0,element(2)]:0;
               return element
                       ([0,
                         [0,
                          properties,
                          object_specs[2],
                          additional_properties,
                          object_specs[4],
                          object_specs[5],
                          object_specs[6],
                          object_specs[7]]])}
             var
              _fq_=
               function(param)
                {var
                  ext=param[2],
                  properties=param[1],
                  additional_properties=ext?[0,element(2)]:0;
                 return element
                         ([0,
                           [0,
                            properties,
                            object_specs[2],
                            additional_properties,
                            object_specs[4],
                            object_specs[5],
                            object_specs[6],
                            object_specs[7]]])},
              elements=caml_call2(Stdlib_list[17],_fq_,more);
             return element([3,1,elements]);
            case 6:
             var more$0=object_schema(o$0);
             if(more$0 && ! more$0[2])
              {var
                match$2=more$0[1],
                ext$0=match$2[2],
                properties$0=match$2[1],
                additional_properties$0=ext$0?[0,element(2)]:0;
               return element
                       ([0,
                         [0,
                          properties$0,
                          object_specs[2],
                          additional_properties$0,
                          object_specs[4],
                          object_specs[5],
                          object_specs[6],
                          object_specs[7]]])}
             var
              _fr_=
               function(param)
                {var
                  ext=param[2],
                  properties=param[1],
                  additional_properties=ext?[0,element(2)]:0;
                 return element
                         ([0,
                           [0,
                            properties,
                            object_specs[2],
                            additional_properties,
                            object_specs[4],
                            object_specs[5],
                            object_specs[6],
                            object_specs[7]]])},
              elements$0=caml_call2(Stdlib_list[17],_fr_,more$0);
             return element([3,1,elements$0]);
            case 7:return element([1,array_schema(o$0),array_specs$0]);
            case 8:return element([1,array_schema(o$0),array_specs$0]);
            case 9:
             var s=o$0[2];
             sch[1] = caml_call1(merge_definitions,[0,sch[1],s])[1];
             return caml_call1(root,s);
            case 10:
             var _fs_=o$0[4],_ft_=o$0[3];
             if(_fs_)
              {var s$0=_fs_[1];
               sch[1] = caml_call1(merge_definitions,[0,sch[1],s$0])[1];
               return caml_call1(root,s$0)}
             var o$0=_ft_;
             continue;
            case 11:
             var
              encoding=o$0[4],
              description=o$0[3],
              title=o$0[2],
              name=o$0[1],
              schema$0=patch_description(title,description,schema(encoding)),
              match$3=
               caml_call4
                (add_definition,definitions_path,name,schema$0,sch[1]),
              def=match$3[2],
              s$1=match$3[1];
             sch[1] = caml_call1(merge_definitions,[0,sch[1],s$1])[1];
             return def;
            case 12:
             var f=o$0[4],description$0=o$0[3],title$0=o$0[2],name$0=o$0[1];
             if(caml_call3(definition_exists,definitions_path,name$0,sch[1]))
              var
               _fu_=sch[1],
               fake_schema=
                caml_call2
                 (update,
                  caml_call2(definition_ref,definitions_path,name$0),
                  _fu_);
             else
              var
               _fw_=sch[1],
               match$5=
                caml_call4
                 (add_definition,definitions_path,name$0,element(3),_fw_),
               elt=match$5[2],
               sch$0=match$5[1],
               fake_schema=caml_call2(update,elt,sch$0);
             var
              _fv_=function(param){throw [0,Assert_failure,_bJ_]},
              fake_self=
               [9,
                [0,function(param,_fy_){throw [0,Assert_failure,_bK_]},_fv_],
                fake_schema],
              root$0=
               patch_description
                (title$0,description$0,schema(caml_call1(f,fake_self))),
              match$4=
               caml_call4
                (add_definition,definitions_path,name$0,root$0,sch[1]),
              def$0=match$4[2],
              nsch=match$4[1];
             sch[1] = nsch;
             return def$0;
            default:
             var
              cases=o$0[1],
              _fx_=
               function(param)
                {var description=param[3],title=param[2],encoding=param[1];
                 return patch_description(title,description,schema(encoding))},
              elements$1=caml_call2(Stdlib_list[17],_fx_,cases);
             return element([3,1,elements$1])}}
      var schema$0=schema(encoding);
      return caml_call2(update,schema$0,sch[1])}
    function req(title,description,n,t){return [0,n,t,title,description]}
    function opt(title,description,n,t){return [1,n,t,title,description]}
    function dft(title,description,n,t,d){return [2,n,t,title,description,d]}
    function mu(name,title,description,self)
     {return [12,name,title,description,self]}
    var null$0=0,_bL_=1073741823,_bM_=-1073741824;
    function _bN_(_fj_){return _fj_}
    var int$0=[2,[0,cst_int,function(_fi_){return _fi_ | 0},_bN_,_bM_,_bL_]];
    function ranged_int(lower_bound,upper_bound,name)
     {var _fc_=64 === Stdlib_sys[9]?1:0;
      if(_fc_)
       var
        _fd_=lower_bound < -1073741824?1:0,
        _fe_=_fd_ || (1073741823 < upper_bound?1:0);
      else
       var _fe_=_fc_;
      if(_fe_)caml_call1(Stdlib[1],cst_Json_encoding_ranged_int_b);
      function _ff_(_fh_){return _fh_}
      return [2,
              [0,
               name,
               function(_fg_){return _fg_ | 0},
               _ff_,
               lower_bound,
               upper_bound]]}
    var
     int53=
      [2,
       [0,
        cst_int53,
        caml_int64_of_float,
        caml_int64_to_float,
        caml_int64_neg(caml_int64_shift_left(_bP_,53)),
        caml_int64_shift_left(_bO_,53)]];
    function ranged_int53(lower_bound,upper_bound,name)
     {var
       _fa_=
        caml_lessthan
         (lower_bound,caml_int64_neg(caml_int64_shift_left(_bQ_,53))),
       _fb_=
        _fa_
        ||
        caml_greaterthan(upper_bound,caml_int64_shift_left(_bR_,53));
      if(_fb_)caml_call1(Stdlib[1],cst_Json_encoding_ranged_int53);
      return [2,
              [0,
               name,
               caml_int64_of_float,
               caml_int64_to_float,
               lower_bound,
               upper_bound]]}
    var _bS_=Stdlib_int32[9],_bT_=Stdlib_int32[10];
    function _bU_(_e$_){return _e$_}
    var
     int32=
      [2,[0,cst_int32,function(_e__){return _e__ | 0},_bU_,_bT_,_bS_]];
    function ranged_int32(lower_bound,upper_bound,name)
     {function _e7_(_e9_){return _e9_}
      return [2,
              [0,
               name,
               function(_e8_){return _e8_ | 0},
               _e7_,
               lower_bound,
               upper_bound]]}
    function ranged_float(minimum,maximum,float_name)
     {return [3,[0,[0,float_name,minimum,maximum]]]}
    var string=4;
    function conv(ffrom,fto,schema,t){return [10,ffrom,fto,t,schema]}
    var bytes=[10,Stdlib_bytes[6],Stdlib_bytes[5],string,0],bool=3;
    function array(t){return [4,t]}
    function obj1(f1){return [5,f1]}
    function obj2(f1,f2){return [6,[5,f1],[5,f2]]}
    function obj3(f1,f2,f3)
     {var _e4_=[6,[5,f1],[6,[5,f2],[5,f3]]],_e5_=0;
      function _e6_(param)
       {var match=param[2],c=match[2],b=match[1],a=param[1];return [0,a,b,c]}
      return [10,
              function(param)
               {var c=param[3],b=param[2],a=param[1];return [0,a,[0,b,c]]},
              _e6_,
              _e4_,
              _e5_]}
    function obj4(f1,f2,f3,f4)
     {var _e0_=[6,[5,f1],[6,[5,f2],[6,[5,f3],[5,f4]]]],_e1_=0;
      function _e2_(param)
       {var
         _e3_=param[2],
         match=_e3_[2],
         d=match[2],
         c=match[1],
         b=_e3_[1],
         a=param[1];
        return [0,a,b,c,d]}
      return [10,
              function(param)
               {var d=param[4],c=param[3],b=param[2],a=param[1];
                return [0,a,[0,b,[0,c,d]]]},
              _e2_,
              _e0_,
              _e1_]}
    function obj5(f1,f2,f3,f4,f5)
     {var _eV_=[6,[5,f1],[6,[5,f2],[6,[5,f3],[6,[5,f4],[5,f5]]]]],_eW_=0;
      function _eX_(param)
       {var
         _eY_=param[2],
         _eZ_=_eY_[2],
         match=_eZ_[2],
         e=match[2],
         d=match[1],
         c=_eZ_[1],
         b=_eY_[1],
         a=param[1];
        return [0,a,b,c,d,e]}
      return [10,
              function(param)
               {var e=param[5],d=param[4],c=param[3],b=param[2],a=param[1];
                return [0,a,[0,b,[0,c,[0,d,e]]]]},
              _eX_,
              _eV_,
              _eW_]}
    function obj6(f1,f2,f3,f4,f5,f6)
     {var
       _eP_=[6,[5,f1],[6,[5,f2],[6,[5,f3],[6,[5,f4],[6,[5,f5],[5,f6]]]]]],
       _eQ_=0;
      function _eR_(param)
       {var
         _eS_=param[2],
         _eT_=_eS_[2],
         _eU_=_eT_[2],
         match=_eU_[2],
         f=match[2],
         e=match[1],
         d=_eU_[1],
         c=_eT_[1],
         b=_eS_[1],
         a=param[1];
        return [0,a,b,c,d,e,f]}
      return [10,
              function(param)
               {var
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,f]]]]]},
              _eR_,
              _eP_,
              _eQ_]}
    function obj7(f1,f2,f3,f4,f5,f6,f7)
     {var
       rest=[6,[5,f6],[5,f7]],
       _eI_=[6,[5,f1],[6,[5,f2],[6,[5,f3],[6,[5,f4],[6,[5,f5],rest]]]]],
       _eJ_=0;
      function _eK_(param)
       {var
         _eL_=param[2],
         _eM_=_eL_[2],
         _eN_=_eM_[2],
         _eO_=_eN_[2],
         match=_eO_[2],
         g=match[2],
         f=match[1],
         e=_eO_[1],
         d=_eN_[1],
         c=_eM_[1],
         b=_eL_[1],
         a=param[1];
        return [0,a,b,c,d,e,f,g]}
      return [10,
              function(param)
               {var
                 g=param[7],
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,[0,f,g]]]]]]},
              _eK_,
              _eI_,
              _eJ_]}
    function obj8(f1,f2,f3,f4,f5,f6,f7,f8)
     {var
       rest=[6,[5,f6],[6,[5,f7],[5,f8]]],
       _eA_=[6,[5,f1],[6,[5,f2],[6,[5,f3],[6,[5,f4],[6,[5,f5],rest]]]]],
       _eB_=0;
      function _eC_(param)
       {var
         _eD_=param[2],
         _eE_=_eD_[2],
         _eF_=_eE_[2],
         _eG_=_eF_[2],
         _eH_=_eG_[2],
         match=_eH_[2],
         h=match[2],
         g=match[1],
         f=_eH_[1],
         e=_eG_[1],
         d=_eF_[1],
         c=_eE_[1],
         b=_eD_[1],
         a=param[1];
        return [0,a,b,c,d,e,f,g,h]}
      return [10,
              function(param)
               {var
                 h=param[8],
                 g=param[7],
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,[0,f,[0,g,h]]]]]]]},
              _eC_,
              _eA_,
              _eB_]}
    function obj9(f1,f2,f3,f4,f5,f6,f7,f8,f9)
     {var
       rest=[6,[5,f6],[6,[5,f7],[6,[5,f8],[5,f9]]]],
       _er_=[6,[5,f1],[6,[5,f2],[6,[5,f3],[6,[5,f4],[6,[5,f5],rest]]]]],
       _es_=0;
      function _et_(param)
       {var
         _eu_=param[2],
         _ev_=_eu_[2],
         _ew_=_ev_[2],
         _ex_=_ew_[2],
         _ey_=_ex_[2],
         _ez_=_ey_[2],
         match=_ez_[2],
         i=match[2],
         h=match[1],
         g=_ez_[1],
         f=_ey_[1],
         e=_ex_[1],
         d=_ew_[1],
         c=_ev_[1],
         b=_eu_[1],
         a=param[1];
        return [0,a,b,c,d,e,f,g,h,i]}
      return [10,
              function(param)
               {var
                 i=param[9],
                 h=param[8],
                 g=param[7],
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,[0,f,[0,g,[0,h,i]]]]]]]]},
              _et_,
              _er_,
              _es_]}
    function obj10(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10)
     {var
       rest=[6,[5,f6],[6,[5,f7],[6,[5,f8],[6,[5,f9],[5,f10]]]]],
       _eh_=[6,[5,f1],[6,[5,f2],[6,[5,f3],[6,[5,f4],[6,[5,f5],rest]]]]],
       _ei_=0;
      function _ej_(param)
       {var
         _ek_=param[2],
         _el_=_ek_[2],
         _em_=_el_[2],
         _en_=_em_[2],
         _eo_=_en_[2],
         _ep_=_eo_[2],
         _eq_=_ep_[2],
         match=_eq_[2],
         j=match[2],
         i=match[1],
         h=_eq_[1],
         g=_ep_[1],
         f=_eo_[1],
         e=_en_[1],
         d=_em_[1],
         c=_el_[1],
         b=_ek_[1],
         a=param[1];
        return [0,a,b,c,d,e,f,g,h,i,j]}
      return [10,
              function(param)
               {var
                 j=param[10],
                 i=param[9],
                 h=param[8],
                 g=param[7],
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,[0,f,[0,g,[0,h,[0,i,j]]]]]]]]]},
              _ej_,
              _eh_,
              _ei_]}
    function tup1(f1){return [7,f1]}
    function tup2(f1,f2){return [8,[7,f1],[7,f2]]}
    function tup3(f1,f2,f3)
     {var _ee_=[8,[7,f1],[8,[7,f2],[7,f3]]],_ef_=0;
      function _eg_(param)
       {var match=param[2],c=match[2],b=match[1],a=param[1];return [0,a,b,c]}
      return [10,
              function(param)
               {var c=param[3],b=param[2],a=param[1];return [0,a,[0,b,c]]},
              _eg_,
              _ee_,
              _ef_]}
    function tup4(f1,f2,f3,f4)
     {var _ea_=[8,[7,f1],[8,[7,f2],[8,[7,f3],[7,f4]]]],_eb_=0;
      function _ec_(param)
       {var
         _ed_=param[2],
         match=_ed_[2],
         d=match[2],
         c=match[1],
         b=_ed_[1],
         a=param[1];
        return [0,a,b,c,d]}
      return [10,
              function(param)
               {var d=param[4],c=param[3],b=param[2],a=param[1];
                return [0,a,[0,b,[0,c,d]]]},
              _ec_,
              _ea_,
              _eb_]}
    function tup5(f1,f2,f3,f4,f5)
     {var _d7_=[8,[7,f1],[8,[7,f2],[8,[7,f3],[8,[7,f4],[7,f5]]]]],_d8_=0;
      function _d9_(param)
       {var
         _d__=param[2],
         _d$_=_d__[2],
         match=_d$_[2],
         e=match[2],
         d=match[1],
         c=_d$_[1],
         b=_d__[1],
         a=param[1];
        return [0,a,b,c,d,e]}
      return [10,
              function(param)
               {var e=param[5],d=param[4],c=param[3],b=param[2],a=param[1];
                return [0,a,[0,b,[0,c,[0,d,e]]]]},
              _d9_,
              _d7_,
              _d8_]}
    function tup6(f1,f2,f3,f4,f5,f6)
     {var
       _d1_=[8,[7,f1],[8,[7,f2],[8,[7,f3],[8,[7,f4],[8,[7,f5],[7,f6]]]]]],
       _d2_=0;
      function _d3_(param)
       {var
         _d4_=param[2],
         _d5_=_d4_[2],
         _d6_=_d5_[2],
         match=_d6_[2],
         f=match[2],
         e=match[1],
         d=_d6_[1],
         c=_d5_[1],
         b=_d4_[1],
         a=param[1];
        return [0,a,b,c,d,e,f]}
      return [10,
              function(param)
               {var
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,f]]]]]},
              _d3_,
              _d1_,
              _d2_]}
    function tup7(f1,f2,f3,f4,f5,f6,f7)
     {var
       rest=[8,[7,f6],[7,f7]],
       _dU_=[8,[7,f1],[8,[7,f2],[8,[7,f3],[8,[7,f4],[8,[7,f5],rest]]]]],
       _dV_=0;
      function _dW_(param)
       {var
         _dX_=param[2],
         _dY_=_dX_[2],
         _dZ_=_dY_[2],
         _d0_=_dZ_[2],
         match=_d0_[2],
         g=match[2],
         f=match[1],
         e=_d0_[1],
         d=_dZ_[1],
         c=_dY_[1],
         b=_dX_[1],
         a=param[1];
        return [0,a,b,c,d,e,f,g]}
      return [10,
              function(param)
               {var
                 g=param[7],
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,[0,f,g]]]]]]},
              _dW_,
              _dU_,
              _dV_]}
    function tup8(f1,f2,f3,f4,f5,f6,f7,f8)
     {var
       rest=[8,[7,f6],[8,[7,f7],[7,f8]]],
       _dM_=[8,[7,f1],[8,[7,f2],[8,[7,f3],[8,[7,f4],[8,[7,f5],rest]]]]],
       _dN_=0;
      function _dO_(param)
       {var
         _dP_=param[2],
         _dQ_=_dP_[2],
         _dR_=_dQ_[2],
         _dS_=_dR_[2],
         _dT_=_dS_[2],
         match=_dT_[2],
         h=match[2],
         g=match[1],
         f=_dT_[1],
         e=_dS_[1],
         d=_dR_[1],
         c=_dQ_[1],
         b=_dP_[1],
         a=param[1];
        return [0,a,b,c,d,e,f,g,h]}
      return [10,
              function(param)
               {var
                 h=param[8],
                 g=param[7],
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,[0,f,[0,g,h]]]]]]]},
              _dO_,
              _dM_,
              _dN_]}
    function tup9(f1,f2,f3,f4,f5,f6,f7,f8,f9)
     {var
       rest=[8,[7,f6],[8,[7,f7],[8,[7,f8],[7,f9]]]],
       _dD_=[8,[7,f1],[8,[7,f2],[8,[7,f3],[8,[7,f4],[8,[7,f5],rest]]]]],
       _dE_=0;
      function _dF_(param)
       {var
         _dG_=param[2],
         _dH_=_dG_[2],
         _dI_=_dH_[2],
         _dJ_=_dI_[2],
         _dK_=_dJ_[2],
         _dL_=_dK_[2],
         match=_dL_[2],
         i=match[2],
         h=match[1],
         g=_dL_[1],
         f=_dK_[1],
         e=_dJ_[1],
         d=_dI_[1],
         c=_dH_[1],
         b=_dG_[1],
         a=param[1];
        return [0,a,b,c,d,e,f,g,h,i]}
      return [10,
              function(param)
               {var
                 i=param[9],
                 h=param[8],
                 g=param[7],
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,[0,f,[0,g,[0,h,i]]]]]]]]},
              _dF_,
              _dD_,
              _dE_]}
    function tup10(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10)
     {var
       rest=[8,[7,f6],[8,[7,f7],[8,[7,f8],[8,[7,f9],[7,f10]]]]],
       _dt_=[8,[7,f1],[8,[7,f2],[8,[7,f3],[8,[7,f4],[8,[7,f5],rest]]]]],
       _du_=0;
      function _dv_(param)
       {var
         _dw_=param[2],
         _dx_=_dw_[2],
         _dy_=_dx_[2],
         _dz_=_dy_[2],
         _dA_=_dz_[2],
         _dB_=_dA_[2],
         _dC_=_dB_[2],
         match=_dC_[2],
         j=match[2],
         i=match[1],
         h=_dC_[1],
         g=_dB_[1],
         f=_dA_[1],
         e=_dz_[1],
         d=_dy_[1],
         c=_dx_[1],
         b=_dw_[1],
         a=param[1];
        return [0,a,b,c,d,e,f,g,h,i,j]}
      return [10,
              function(param)
               {var
                 j=param[10],
                 i=param[9],
                 h=param[8],
                 g=param[7],
                 f=param[6],
                 e=param[5],
                 d=param[4],
                 c=param[3],
                 b=param[2],
                 a=param[1];
                return [0,a,[0,b,[0,c,[0,d,[0,e,[0,f,[0,g,[0,h,[0,i,j]]]]]]]]]},
              _dv_,
              _dt_,
              _du_]}
    function repr_agnostic_custom(param,schema)
     {var read=param[2],write=param[1];return [9,[0,write,read],schema]}
    function constant(s){return [1,s]}
    function string_enum(cases)
     {function _de_(param){var s=param[1];return [0,Ezjsonm,[0,-976970511,s]]}
      var
       enum$0=caml_call2(Stdlib_list[17],_de_,cases),
       _df_=element([7,specs]),
       schema=
        caml_call2
         (update,
          [0,_df_[1],_df_[2],_df_[3],[0,enum$0],_df_[5],_df_[6],_df_[7]],
          any),
       len=caml_call1(Stdlib_list[1],cases),
       mcases=caml_call2(Stdlib_hashtbl[1],0,len),
       rcases=caml_call2(Stdlib_hashtbl[1],0,len);
      function _dg_(x)
       {var _ds_=caml_call2(Stdlib[28],x[1],cst$7);
        return caml_call2(Stdlib[28],cst$8,_ds_)}
      var
       _dh_=caml_call2(Stdlib_list[17],_dg_,cases),
       cases_str=caml_call2(Stdlib_string[7],cst$9,_dh_);
      function _di_(param)
       {var c=param[2],s=param[1];
        if(caml_call2(Stdlib_hashtbl[9],mcases,s))
         caml_call1(Stdlib[1],cst_Json_encoding_string_enum_);
        caml_call3(Stdlib_hashtbl[5],mcases,s,c);
        return caml_call3(Stdlib_hashtbl[5],rcases,c,s)}
      caml_call2(Stdlib_list[15],_di_,cases);
      var _dj_=[0,schema];
      function _dk_(s)
       {try
         {var _do_=caml_call2(Stdlib_hashtbl[6],mcases,s);return _do_}
        catch(_dp_)
         {_dp_ = caml_wrap_exception(_dp_);
          if(_dp_ === Stdlib[8])
           {var
             orpat=
              function(ppf,param)
               {if(param)
                 {var _dq_=param[1][1],_dr_=param[2];
                  if(_dr_)
                   {if(_dr_[2])
                     {var rem=param[2];
                      return caml_call5
                              (Stdlib_format[123],ppf,_bV_,_dq_,orpat,rem)}
                    var match=_dr_[1],last=match[1];
                    return caml_call4(Stdlib_format[123],ppf,_bW_,_dq_,last)}
                  return caml_call3(Stdlib_format[123],ppf,_bX_,_dq_)}
                throw [0,Assert_failure,_bY_]},
             unexpected=caml_call2(Stdlib_format[127],_bZ_,s),
             expected=caml_call3(Stdlib_format[127],_b0_,orpat,cases);
            throw [0,
                   Cannot_destruct,
                   [0,0,[0,Unexpected$0,unexpected,expected]]]}
          throw _dp_}}
      return [10,
              function(v)
               {try
                 {var _dm_=caml_call2(Stdlib_hashtbl[6],rcases,v);return _dm_}
                catch(_dn_)
                 {_dn_ = caml_wrap_exception(_dn_);
                  if(_dn_ === Stdlib[8])
                   {var _dl_=caml_call2(Stdlib_format[126],_b1_,cases_str);
                    return caml_call1(Stdlib[1],_dl_)}
                  throw _dn_}},
              _dk_,
              string,
              _dj_]}
    function def(id,title,description,encoding)
     {return [11,id,title,description,encoding]}
    function assoc(t)
     {var
       s=schema(0,t),
       _c4_=object_specs[7],
       _c5_=object_specs[6],
       _c6_=object_specs[5],
       _c7_=object_specs[4],
       _c8_=[0,caml_call1(root,s)],
       _c9_=
        caml_call2
         (update,
          element
           ([0,[0,object_specs[1],object_specs[2],_c8_,_c7_,_c6_,_c5_,_c4_]]),
          s);
      function _c__(v)
       {if(typeof v !== "number" && 79 === v[1])
         {var
           l=v[2],
           destruct=
            function(n,t,v)
             {try
               {var _dc_=caml_call2(Ezjsonm_encoding[2],t,v);return _dc_}
              catch(_dd_)
               {_dd_ = caml_wrap_exception(_dd_);
                if(_dd_[1] === Cannot_destruct)
                 {var match=_dd_[2],exn=match[2],p=match[1];
                  throw [0,Cannot_destruct,[0,[0,[0,331416730,n],p],exn]]}
                throw _dd_}},
           _db_=
            function(param)
             {var v=param[2],n=param[1];return [0,n,destruct(n,t,v)]};
          return caml_call2(Stdlib_list[17],_db_,l)}
        throw unexpected(v,cst_asssociative_object)}
      function _c$_(l)
       {function _da_(param)
         {var v=param[2],n=param[1];
          return [0,n,caml_call2(Ezjsonm_encoding[1],t,v)]}
        return [0,79,caml_call2(Stdlib_list[17],_da_,l)]}
      return caml_call3(Ezjsonm_encoding[3],_c$_,_c__,_c9_)}
    function is_nullable$0(enc)
     {var enc$0=enc;
      for(;;)
       if(typeof enc$0 === "number")
        switch(enc$0)
         {case 0:return 1;
          case 1:return 0;
          case 2:return 1;
          case 3:return 0;
          default:return 0}
       else
        switch(enc$0[0])
         {case 0:return 1;
          case 1:return 0;
          case 2:return 0;
          case 3:return 0;
          case 4:return 0;
          case 5:return 0;
          case 6:return 0;
          case 7:return 0;
          case 8:return 0;
          case 9:var sch=enc$0[2];return caml_call1(is_nullable,sch);
          case 10:var enc$1=enc$0[3],enc$0=enc$1;continue;
          case 11:var enc$2=enc$0[4],enc$0=enc$2;continue;
          case 12:
           var self=enc$0[4],enc$3=caml_call1(self,enc$0),enc$0=enc$3;
           continue;
          default:
           var
            cases=enc$0[1],
            _c3_=function(param){var t=param[1];return is_nullable$0(t)};
           return caml_call2(Stdlib_list[30],_c3_,cases)}}
    function option(t)
     {if(is_nullable$0(t))
       caml_call1(Stdlib[1],cst_Json_encoding_option_canno);
      return [0,t]}
    function read(repr,v){return [0,repr,v]}
    function write(repr,v){return any_to_repr(repr,v)}
    var any_value=[9,[0,write,read],any];
    function read$0(repr,v){return convert(repr,Ezjsonm,v)}
    function write$0(repr,v){return convert(Ezjsonm,repr,v)}
    var any_ezjson_value=[9,[0,write$0,read$0],any];
    function read$1(Repr,v)
     {var k=caml_call1(Repr[1],v);
      if(typeof k !== "number")
       {var _c2_=k[1],switch$0=0;
        if(65 === _c2_ || 79 === _c2_)switch$0 = 1;
        if(switch$0)return [0,Repr,v]}
      throw unexpected(k,cst_array_or_object)}
    function write$1(repr,v){return any_to_repr(repr,v)}
    var any_document=[9,[0,write$1,read$1],any];
    function _b2_(j)
     {try
       {var _c1_=caml_call1(of_json,j);return _c1_}
      catch(err)
       {err = caml_wrap_exception(err);
        throw [0,Cannot_destruct,[0,0,[0,Bad_schema,err]]]}}
    var any_schema=caml_call3(Ezjsonm_encoding[3],to_json,_b2_,self);
    function merge_tups(t1,t2)
     {function is_tup(enc)
       {var enc$0=enc;
        for(;;)
         {if(typeof enc$0 !== "number")
           switch(enc$0[0])
            {case 7:return 1;
             case 8:return 1;
             case 10:
              if(! enc$0[4]){var enc$1=enc$0[3],enc$0=enc$1;continue}break;
             case 11:var enc$2=enc$0[4],enc$0=enc$2;continue;
             case 12:
              var self=enc$0[4],enc$3=caml_call1(self,enc$0),enc$0=enc$3;
              continue
             }
          return 0}}
      if(is_tup(t1) && is_tup(t2))return [8,t1,t2];
      return caml_call1(Stdlib[1],cst_Json_encoding_merge_tups)}
    function list(t){return [10,Stdlib_array[12],Stdlib_array[11],[4,t],0]}
    function merge_objs(o1,o2)
     {function is_obj(enc)
       {var enc$0=enc;
        for(;;)
         {if(typeof enc$0 === "number")
           switch(enc$0){case 1:return 1;case 2:return 1}
          else
           switch(enc$0[0])
            {case 5:return 1;
             case 6:return 1;
             case 10:
              if(! enc$0[4]){var enc$1=enc$0[3],enc$0=enc$1;continue}break;
             case 11:var enc$2=enc$0[4],enc$0=enc$2;continue;
             case 12:
              var self=enc$0[4],enc$3=caml_call1(self,enc$0),enc$0=enc$3;
              continue;
             case 13:
              var
               cases=enc$0[1],
               _c0_=function(param){var o=param[1];return is_obj(o)};
              return caml_call2(Stdlib_list[29],_c0_,cases)
             }
          return 0}}
      if(is_obj(o1) && is_obj(o2))return [6,o1,o2];
      return caml_call1(Stdlib[1],cst_Json_encoding_merge_objs)}
    var empty=1,unit=2;
    function case$0(title,description,encoding,proj,inj)
     {return [0,encoding,title,description,proj,inj]}
    function union(cases)
     {return cases?[13,cases]:caml_call1(Stdlib[1],cst_Json_encoding_union)}
    function print_error$1(print_unknown,ppf,exn)
     {var exn$0=exn;
      for(;;)
       {if(exn$0[1] === Cannot_destruct)
         {var _cl_=exn$0[2],_cm_=_cl_[1];
          if(! _cm_){var exn$4=_cl_[2],exn$0=exn$4;continue}
          var _cn_=_cl_[2];
          if(_cn_[1] === Unexpected$0)
           {var
             ex=_cn_[3],
             unex=_cn_[2],
             _co_=
              function(_cY_,_cZ_)
               {return print_path_as_json_path(_b3_,_cY_,_cZ_)};
            return caml_call6(Stdlib_format[123],ppf,_b4_,_co_,_cm_,unex,ex)}
          if(_cn_[1] === No_case_matched)
           {var
             errs=_cn_[2],
             _cp_=
              function(_cW_,_cX_)
               {return print_error$1(print_unknown,_cW_,_cX_)},
             _cq_=caml_call2(Stdlib_format[119],0,_cp_),
             _cr_=
              function(_cU_,_cV_)
               {return print_path_as_json_path(_b5_,_cU_,_cV_)};
            return caml_call6(Stdlib_format[123],ppf,_b6_,_cr_,_cm_,_cq_,errs)}
          if(_cn_[1] === Bad_array_size)
           {var
             ex$0=_cn_[3],
             unex$0=_cn_[2],
             _cs_=
              function(_cS_,_cT_)
               {return print_path_as_json_path(_b7_,_cS_,_cT_)};
            return caml_call6
                    (Stdlib_format[123],ppf,_b8_,_cs_,_cm_,unex$0,ex$0)}
          if(_cn_[1] === Missing_field)
           {var
             n=_cn_[2],
             _ct_=
              function(_cQ_,_cR_)
               {return print_path_as_json_path(_b9_,_cQ_,_cR_)};
            return caml_call5(Stdlib_format[123],ppf,_b__,_ct_,_cm_,n)}
          if(_cn_[1] === Unexpected_field)
           {var
             n$0=_cn_[2],
             _cu_=
              function(_cO_,_cP_)
               {return print_path_as_json_path(_b$_,_cO_,_cP_)};
            return caml_call5(Stdlib_format[123],ppf,_ca_,_cu_,_cm_,n$0)}
          if(_cn_[1] === Bad_schema)
           {var
             exn$1=_cn_[2],
             _cv_=
              function(_cM_,_cN_)
               {return print_error$1(print_unknown,_cM_,_cN_)},
             _cw_=
              function(_cK_,_cL_)
               {return print_path_as_json_path(_cb_,_cK_,_cL_)};
            return caml_call6
                    (Stdlib_format[123],ppf,_cc_,_cw_,_cm_,_cv_,exn$1)}}
        else
         if(exn$0[1] === Unexpected$0)
          {var ex$2=exn$0[3],unex$2=exn$0[2];
           return caml_call4(Stdlib_format[123],ppf,_ck_,unex$2,ex$2)}
        if(exn$0[1] === No_case_matched)
         {var
           errs$0=exn$0[2],
           _cx_=
            function(_cI_,_cJ_){return print_error$1(print_unknown,_cI_,_cJ_)},
           _cy_=caml_call2(Stdlib_format[119],0,_cx_);
          return caml_call4(Stdlib_format[123],ppf,_cd_,_cy_,errs$0)}
        if(exn$0[1] === Bad_array_size)
         {var ex$1=exn$0[3],unex$1=exn$0[2];
          return caml_call4(Stdlib_format[123],ppf,_ce_,unex$1,ex$1)}
        if(exn$0[1] === Missing_field)
         {var n$1=exn$0[2];return caml_call3(Stdlib_format[123],ppf,_cf_,n$1)}
        if(exn$0[1] === Unexpected_field)
         {var n$2=exn$0[2];return caml_call3(Stdlib_format[123],ppf,_cg_,n$2)}
        if(exn$0[1] === Bad_schema)
         {var
           exn$2=exn$0[2],
           _cz_=
            function(_cG_,_cH_){return print_error$1(print_unknown,_cG_,_cH_)};
          return caml_call4(Stdlib_format[123],ppf,_ch_,_cz_,exn$2)}
        if(exn$0[1] === Cannot_destruct)
         {var
           match=exn$0[2],
           exn$3=match[2],
           path=match[1],
           _cA_=
            function(_cE_,_cF_){return print_error$1(print_unknown,_cE_,_cF_)},
           _cB_=
            function(_cC_,_cD_)
             {return print_path_as_json_path(_ci_,_cC_,_cD_)};
          return caml_call6(Stdlib_format[123],ppf,_cj_,_cB_,path,_cA_,exn$3)}
        return print_error$0(print_unknown,ppf,exn$0)}}
    var
     construct=Ezjsonm_encoding[1],
     destruct=Ezjsonm_encoding[2],
     custom=Ezjsonm_encoding[3],
     Json_encoding=
      [0,
       construct,
       destruct,
       unit,
       null$0,
       empty,
       int$0,
       int32,
       int53,
       ranged_int,
       ranged_int32,
       ranged_int53,
       bool,
       string,
       string_enum,
       constant,
       bytes,
       float$0,
       ranged_float,
       option,
       req,
       opt,
       dft,
       obj1,
       obj2,
       obj3,
       obj4,
       obj5,
       obj6,
       obj7,
       obj8,
       obj9,
       obj10,
       merge_objs,
       array,
       list,
       assoc,
       tup1,
       tup2,
       tup3,
       tup4,
       tup5,
       tup6,
       tup7,
       tup8,
       tup9,
       tup10,
       merge_tups,
       case$0,
       union,
       custom,
       conv,
       mu,
       any_ezjson_value,
       any_document,
       any_schema,
       schema,
       def,
       Cannot_destruct,
       Unexpected$0,
       No_case_matched,
       Bad_array_size,
       Missing_field,
       Unexpected_field,
       Bad_schema,
       print_error$1,
       Make$1,
       repr_agnostic_custom,
       any_value,
       is_nullable$0];
    caml_register_global(469,Json_encoding,"Json_encoding");
    return}
  (function(){return this}()));


//# 1 "../../.js/ocplib-endian/ocplib_endian.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_bswap16=runtime.caml_bswap16,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_bytes_set16=runtime.caml_bytes_set16,
     caml_bytes_set32=runtime.caml_bytes_set32,
     caml_bytes_set64=runtime.caml_bytes_set64,
     caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get,
     caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
     caml_int32_bits_of_float=runtime.caml_int32_bits_of_float,
     caml_int32_bswap=runtime.caml_int32_bswap,
     caml_int32_float_of_bits=runtime.caml_int32_float_of_bits,
     caml_int64_bits_of_float=runtime.caml_int64_bits_of_float,
     caml_int64_bswap=runtime.caml_int64_bswap,
     caml_int64_float_of_bits=runtime.caml_int64_float_of_bits,
     caml_register_global=runtime.caml_register_global,
     caml_string_get=runtime.caml_string_get,
     caml_string_get16=runtime.caml_string_get16,
     caml_string_get32=runtime.caml_string_get32,
     caml_string_get64=runtime.caml_string_get64,
     caml_string_unsafe_get=runtime.caml_string_unsafe_get,
     global_data=runtime.caml_get_global_data(),
     Stdlib_sys=global_data.Stdlib__sys,
     _a_=caml_string_get,
     _b_=caml_bytes_set,
     _c_=caml_string_unsafe_get;
    function _d_(_gx_,_gw_,_gv_)
     {caml_bytes_unsafe_set(_gx_,_gw_,_gv_);return 0}
    var _e_=caml_string_get;
    function _f_(_gs_,_gr_)
     {var _gt_=Stdlib_sys[9] - 9 | 0,_gu_=Stdlib_sys[9] - 9 | 0;
      return caml_string_get(_gs_,_gr_) << _gu_ >> _gt_}
    var _g_=caml_bytes_set,_h_=caml_string_unsafe_get;
    function _i_(_gq_,_gp_)
     {return caml_string_unsafe_get(_gq_,_gp_)
             <<
             (Stdlib_sys[9] - 9 | 0)
             >>
             (Stdlib_sys[9] - 9 | 0)}
    function _j_(_go_,_gn_,_gm_){return _d_(_go_,_gn_,_gm_)}
    function _k_(_gl_,_gk_)
     {return Stdlib_sys[11]
              ?caml_string_get16(_gl_,_gk_)
              :caml_bswap16(caml_string_get16(_gl_,_gk_))}
    function _l_(_gh_,_gg_)
     {var _gi_=Stdlib_sys[9] - 17 | 0,_gj_=Stdlib_sys[9] - 17 | 0;
      return _k_(_gh_,_gg_) << _gj_ >> _gi_}
    function _m_(_gf_,_ge_)
     {return Stdlib_sys[11]
              ?caml_string_get32(_gf_,_ge_)
              :caml_int32_bswap(caml_string_get32(_gf_,_ge_))}
    function _n_(_gd_,_gc_)
     {return Stdlib_sys[11]
              ?caml_string_get64(_gd_,_gc_)
              :caml_int64_bswap(caml_string_get64(_gd_,_gc_))}
    function _o_(_gb_,_ga_,_f$_)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(_gb_,_ga_,_f$_)
              :caml_bytes_set16(_gb_,_ga_,caml_bswap16(_f$_))}
    function _p_(_f__,_f9_,_f8_)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(_f__,_f9_,_f8_)
              :caml_bytes_set32(_f__,_f9_,caml_int32_bswap(_f8_))}
    function _q_(_f7_,_f6_,_f5_)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(_f7_,_f6_,_f5_)
              :caml_bytes_set64(_f7_,_f6_,caml_int64_bswap(_f5_))}
    function _r_(_f4_,_f3_){return caml_int32_float_of_bits(_m_(_f4_,_f3_))}
    function _s_(_f2_,_f1_){return caml_int64_float_of_bits(_n_(_f2_,_f1_))}
    function _t_(_f0_,_fZ_,_fY_)
     {return _p_(_f0_,_fZ_,caml_int32_bits_of_float(_fY_))}
    function _u_(_fX_,_fW_,_fV_)
     {return _q_(_fX_,_fW_,caml_int64_bits_of_float(_fV_))}
    function _v_(_fU_,_fT_)
     {return Stdlib_sys[11]
              ?caml_string_get16(_fU_,_fT_)
              :caml_bswap16(caml_string_get16(_fU_,_fT_))}
    function _w_(_fQ_,_fP_)
     {var _fR_=Stdlib_sys[9] - 17 | 0,_fS_=Stdlib_sys[9] - 17 | 0;
      return _v_(_fQ_,_fP_) << _fS_ >> _fR_}
    function _x_(_fO_,_fN_)
     {return Stdlib_sys[11]
              ?caml_string_get32(_fO_,_fN_)
              :caml_int32_bswap(caml_string_get32(_fO_,_fN_))}
    function _y_(_fM_,_fL_)
     {return Stdlib_sys[11]
              ?caml_string_get64(_fM_,_fL_)
              :caml_int64_bswap(caml_string_get64(_fM_,_fL_))}
    function _z_(_fK_,_fJ_,_fI_)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(_fK_,_fJ_,_fI_)
              :caml_bytes_set16(_fK_,_fJ_,caml_bswap16(_fI_))}
    function _A_(_fH_,_fG_,_fF_)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(_fH_,_fG_,_fF_)
              :caml_bytes_set32(_fH_,_fG_,caml_int32_bswap(_fF_))}
    function _B_(_fE_,_fD_,_fC_)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(_fE_,_fD_,_fC_)
              :caml_bytes_set64(_fE_,_fD_,caml_int64_bswap(_fC_))}
    function _C_(_fB_,_fA_){return caml_int32_float_of_bits(_x_(_fB_,_fA_))}
    function _D_(_fz_,_fy_){return caml_int64_float_of_bits(_y_(_fz_,_fy_))}
    function _E_(_fx_,_fw_,_fv_)
     {return _A_(_fx_,_fw_,caml_int32_bits_of_float(_fv_))}
    function _F_(_fu_,_ft_,_fs_)
     {return _B_(_fu_,_ft_,caml_int64_bits_of_float(_fs_))}
    function _G_(_fr_,_fq_)
     {return Stdlib_sys[11]
              ?caml_bswap16(caml_string_get16(_fr_,_fq_))
              :caml_string_get16(_fr_,_fq_)}
    function _H_(_fn_,_fm_)
     {var _fo_=Stdlib_sys[9] - 17 | 0,_fp_=Stdlib_sys[9] - 17 | 0;
      return _G_(_fn_,_fm_) << _fp_ >> _fo_}
    function _I_(_fl_,_fk_)
     {return Stdlib_sys[11]
              ?caml_int32_bswap(caml_string_get32(_fl_,_fk_))
              :caml_string_get32(_fl_,_fk_)}
    function _J_(_fj_,_fi_)
     {return Stdlib_sys[11]
              ?caml_int64_bswap(caml_string_get64(_fj_,_fi_))
              :caml_string_get64(_fj_,_fi_)}
    function _K_(_fh_,_fg_,_ff_)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(_fh_,_fg_,caml_bswap16(_ff_))
              :caml_bytes_set16(_fh_,_fg_,_ff_)}
    function _L_(_fe_,_fd_,_fc_)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(_fe_,_fd_,caml_int32_bswap(_fc_))
              :caml_bytes_set32(_fe_,_fd_,_fc_)}
    function _M_(_fb_,_fa_,_e$_)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(_fb_,_fa_,caml_int64_bswap(_e$_))
              :caml_bytes_set64(_fb_,_fa_,_e$_)}
    function _N_(_e__,_e9_){return caml_int32_float_of_bits(_I_(_e__,_e9_))}
    function _O_(_e8_,_e7_){return caml_int64_float_of_bits(_J_(_e8_,_e7_))}
    function _P_(_e6_,_e5_,_e4_)
     {return _L_(_e6_,_e5_,caml_int32_bits_of_float(_e4_))}
    function _Q_(_e3_,_e2_,_e1_)
     {return _M_(_e3_,_e2_,caml_int64_bits_of_float(_e1_))}
    function _R_(_e0_,_eZ_)
     {return Stdlib_sys[11]
              ?caml_bswap16(caml_string_get16(_e0_,_eZ_))
              :caml_string_get16(_e0_,_eZ_)}
    function _S_(_eW_,_eV_)
     {var _eX_=Stdlib_sys[9] - 17 | 0,_eY_=Stdlib_sys[9] - 17 | 0;
      return _R_(_eW_,_eV_) << _eY_ >> _eX_}
    function _T_(_eU_,_eT_)
     {return Stdlib_sys[11]
              ?caml_int32_bswap(caml_string_get32(_eU_,_eT_))
              :caml_string_get32(_eU_,_eT_)}
    function _U_(_eS_,_eR_)
     {return Stdlib_sys[11]
              ?caml_int64_bswap(caml_string_get64(_eS_,_eR_))
              :caml_string_get64(_eS_,_eR_)}
    function _V_(_eQ_,_eP_,_eO_)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(_eQ_,_eP_,caml_bswap16(_eO_))
              :caml_bytes_set16(_eQ_,_eP_,_eO_)}
    function _W_(_eN_,_eM_,_eL_)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(_eN_,_eM_,caml_int32_bswap(_eL_))
              :caml_bytes_set32(_eN_,_eM_,_eL_)}
    function _X_(_eK_,_eJ_,_eI_)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(_eK_,_eJ_,caml_int64_bswap(_eI_))
              :caml_bytes_set64(_eK_,_eJ_,_eI_)}
    function _Y_(_eH_,_eG_){return caml_int32_float_of_bits(_T_(_eH_,_eG_))}
    function _Z_(_eF_,_eE_){return caml_int64_float_of_bits(_U_(_eF_,_eE_))}
    function ___(_eD_,_eC_,_eB_)
     {return _W_(_eD_,_eC_,caml_int32_bits_of_float(_eB_))}
    function _$_(_eA_,_ez_,_ey_)
     {return _X_(_eA_,_ez_,caml_int64_bits_of_float(_ey_))}
    var _aa_=caml_string_get16;
    function _ab_(_ev_,_eu_)
     {var _ew_=Stdlib_sys[9] - 17 | 0,_ex_=Stdlib_sys[9] - 17 | 0;
      return caml_string_get16(_ev_,_eu_) << _ex_ >> _ew_}
    var
     _ac_=caml_string_get32,
     _ad_=caml_string_get64,
     _ae_=caml_bytes_set16,
     _af_=caml_bytes_set32,
     _ag_=caml_bytes_set64;
    function _ah_(_et_,_es_)
     {return caml_int32_float_of_bits(caml_string_get32(_et_,_es_))}
    function _ai_(_er_,_eq_)
     {return caml_int64_float_of_bits(caml_string_get64(_er_,_eq_))}
    function _aj_(_ep_,_eo_,_en_)
     {return caml_bytes_set32(_ep_,_eo_,caml_int32_bits_of_float(_en_))}
    function _ak_(_em_,_el_,_ek_)
     {return caml_bytes_set64(_em_,_el_,caml_int64_bits_of_float(_ek_))}
    var _al_=caml_string_get16;
    function _am_(_eh_,_eg_)
     {var _ei_=Stdlib_sys[9] - 17 | 0,_ej_=Stdlib_sys[9] - 17 | 0;
      return caml_string_get16(_eh_,_eg_) << _ej_ >> _ei_}
    var
     _an_=caml_string_get32,
     _ao_=caml_string_get64,
     _ap_=caml_bytes_set16,
     _aq_=caml_bytes_set32,
     _ar_=caml_bytes_set64;
    function _as_(_ef_,_ee_)
     {return caml_int32_float_of_bits(caml_string_get32(_ef_,_ee_))}
    function _at_(_ed_,_ec_)
     {return caml_int64_float_of_bits(caml_string_get64(_ed_,_ec_))}
    function _au_(_eb_,_ea_,_d$_)
     {return caml_bytes_set32(_eb_,_ea_,caml_int32_bits_of_float(_d$_))}
    var
     EndianString=
      [0,
       [0,_a_,_e_,_f_,_k_,_l_,_m_,_n_,_r_,_s_,_b_,_g_,_o_,_p_,_q_,_t_,_u_],
       [0,_c_,_h_,_i_,_v_,_w_,_x_,_y_,_C_,_D_,_d_,_j_,_z_,_A_,_B_,_E_,_F_],
       [0,_a_,_e_,_f_,_G_,_H_,_I_,_J_,_N_,_O_,_b_,_g_,_K_,_L_,_M_,_P_,_Q_],
       [0,_c_,_h_,_i_,_R_,_S_,_T_,_U_,_Y_,_Z_,_d_,_j_,_V_,_W_,_X_,___,_$_],
       [0,
        _a_,
        _e_,
        _f_,
        _aa_,
        _ab_,
        _ac_,
        _ad_,
        _ah_,
        _ai_,
        _b_,
        _g_,
        _ae_,
        _af_,
        _ag_,
        _aj_,
        _ak_],
       [0,
        _c_,
        _h_,
        _i_,
        _al_,
        _am_,
        _an_,
        _ao_,
        _as_,
        _at_,
        _d_,
        _j_,
        _ap_,
        _aq_,
        _ar_,
        _au_,
        function(_d__,_d9_,_d8_)
         {return caml_bytes_set64(_d__,_d9_,caml_int64_bits_of_float(_d8_))}]];
    caml_register_global(1,EndianString,"EndianString");
    var _av_=caml_bytes_get,_aw_=caml_bytes_set,_ax_=caml_bytes_unsafe_get;
    function _ay_(_d7_,_d6_,_d5_)
     {caml_bytes_unsafe_set(_d7_,_d6_,_d5_);return 0}
    var _az_=caml_bytes_get;
    function _aA_(_d2_,_d1_)
     {var _d3_=Stdlib_sys[9] - 9 | 0,_d4_=Stdlib_sys[9] - 9 | 0;
      return caml_bytes_get(_d2_,_d1_) << _d4_ >> _d3_}
    var _aB_=caml_bytes_set,_aC_=caml_bytes_unsafe_get;
    function _aD_(_d0_,_dZ_)
     {return caml_bytes_unsafe_get(_d0_,_dZ_)
             <<
             (Stdlib_sys[9] - 9 | 0)
             >>
             (Stdlib_sys[9] - 9 | 0)}
    function _aE_(_dY_,_dX_,_dW_){return _ay_(_dY_,_dX_,_dW_)}
    function _aF_(_dV_,_dU_)
     {return Stdlib_sys[11]
              ?caml_string_get16(_dV_,_dU_)
              :caml_bswap16(caml_string_get16(_dV_,_dU_))}
    function _aG_(_dR_,_dQ_)
     {var _dS_=Stdlib_sys[9] - 17 | 0,_dT_=Stdlib_sys[9] - 17 | 0;
      return _aF_(_dR_,_dQ_) << _dT_ >> _dS_}
    function _aH_(_dP_,_dO_)
     {return Stdlib_sys[11]
              ?caml_string_get32(_dP_,_dO_)
              :caml_int32_bswap(caml_string_get32(_dP_,_dO_))}
    function _aI_(_dN_,_dM_)
     {return Stdlib_sys[11]
              ?caml_string_get64(_dN_,_dM_)
              :caml_int64_bswap(caml_string_get64(_dN_,_dM_))}
    function _aJ_(_dL_,_dK_,_dJ_)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(_dL_,_dK_,_dJ_)
              :caml_bytes_set16(_dL_,_dK_,caml_bswap16(_dJ_))}
    function _aK_(_dI_,_dH_,_dG_)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(_dI_,_dH_,_dG_)
              :caml_bytes_set32(_dI_,_dH_,caml_int32_bswap(_dG_))}
    function _aL_(_dF_,_dE_,_dD_)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(_dF_,_dE_,_dD_)
              :caml_bytes_set64(_dF_,_dE_,caml_int64_bswap(_dD_))}
    function _aM_(_dC_,_dB_){return caml_int32_float_of_bits(_aH_(_dC_,_dB_))}
    function _aN_(_dA_,_dz_){return caml_int64_float_of_bits(_aI_(_dA_,_dz_))}
    function _aO_(_dy_,_dx_,_dw_)
     {return _aK_(_dy_,_dx_,caml_int32_bits_of_float(_dw_))}
    function _aP_(_dv_,_du_,_dt_)
     {return _aL_(_dv_,_du_,caml_int64_bits_of_float(_dt_))}
    function _aQ_(_ds_,_dr_)
     {return Stdlib_sys[11]
              ?caml_string_get16(_ds_,_dr_)
              :caml_bswap16(caml_string_get16(_ds_,_dr_))}
    function _aR_(_do_,_dn_)
     {var _dp_=Stdlib_sys[9] - 17 | 0,_dq_=Stdlib_sys[9] - 17 | 0;
      return _aQ_(_do_,_dn_) << _dq_ >> _dp_}
    function _aS_(_dm_,_dl_)
     {return Stdlib_sys[11]
              ?caml_string_get32(_dm_,_dl_)
              :caml_int32_bswap(caml_string_get32(_dm_,_dl_))}
    function _aT_(_dk_,_dj_)
     {return Stdlib_sys[11]
              ?caml_string_get64(_dk_,_dj_)
              :caml_int64_bswap(caml_string_get64(_dk_,_dj_))}
    function _aU_(_di_,_dh_,_dg_)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(_di_,_dh_,_dg_)
              :caml_bytes_set16(_di_,_dh_,caml_bswap16(_dg_))}
    function _aV_(_df_,_de_,_dd_)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(_df_,_de_,_dd_)
              :caml_bytes_set32(_df_,_de_,caml_int32_bswap(_dd_))}
    function _aW_(_dc_,_db_,_da_)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(_dc_,_db_,_da_)
              :caml_bytes_set64(_dc_,_db_,caml_int64_bswap(_da_))}
    function _aX_(_c$_,_c__){return caml_int32_float_of_bits(_aS_(_c$_,_c__))}
    function _aY_(_c9_,_c8_){return caml_int64_float_of_bits(_aT_(_c9_,_c8_))}
    function _aZ_(_c7_,_c6_,_c5_)
     {return _aV_(_c7_,_c6_,caml_int32_bits_of_float(_c5_))}
    function _a0_(_c4_,_c3_,_c2_)
     {return _aW_(_c4_,_c3_,caml_int64_bits_of_float(_c2_))}
    function _a1_(_c1_,_c0_)
     {return Stdlib_sys[11]
              ?caml_bswap16(caml_string_get16(_c1_,_c0_))
              :caml_string_get16(_c1_,_c0_)}
    function _a2_(_cX_,_cW_)
     {var _cY_=Stdlib_sys[9] - 17 | 0,_cZ_=Stdlib_sys[9] - 17 | 0;
      return _a1_(_cX_,_cW_) << _cZ_ >> _cY_}
    function _a3_(_cV_,_cU_)
     {return Stdlib_sys[11]
              ?caml_int32_bswap(caml_string_get32(_cV_,_cU_))
              :caml_string_get32(_cV_,_cU_)}
    function _a4_(_cT_,_cS_)
     {return Stdlib_sys[11]
              ?caml_int64_bswap(caml_string_get64(_cT_,_cS_))
              :caml_string_get64(_cT_,_cS_)}
    function _a5_(_cR_,_cQ_,_cP_)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(_cR_,_cQ_,caml_bswap16(_cP_))
              :caml_bytes_set16(_cR_,_cQ_,_cP_)}
    function _a6_(_cO_,_cN_,_cM_)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(_cO_,_cN_,caml_int32_bswap(_cM_))
              :caml_bytes_set32(_cO_,_cN_,_cM_)}
    function _a7_(_cL_,_cK_,_cJ_)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(_cL_,_cK_,caml_int64_bswap(_cJ_))
              :caml_bytes_set64(_cL_,_cK_,_cJ_)}
    function _a8_(_cI_,_cH_){return caml_int32_float_of_bits(_a3_(_cI_,_cH_))}
    function _a9_(_cG_,_cF_){return caml_int64_float_of_bits(_a4_(_cG_,_cF_))}
    function _a__(_cE_,_cD_,_cC_)
     {return _a6_(_cE_,_cD_,caml_int32_bits_of_float(_cC_))}
    function _a$_(_cB_,_cA_,_cz_)
     {return _a7_(_cB_,_cA_,caml_int64_bits_of_float(_cz_))}
    function _ba_(_cy_,_cx_)
     {return Stdlib_sys[11]
              ?caml_bswap16(caml_string_get16(_cy_,_cx_))
              :caml_string_get16(_cy_,_cx_)}
    function _bb_(_cu_,_ct_)
     {var _cv_=Stdlib_sys[9] - 17 | 0,_cw_=Stdlib_sys[9] - 17 | 0;
      return _ba_(_cu_,_ct_) << _cw_ >> _cv_}
    function _bc_(_cs_,_cr_)
     {return Stdlib_sys[11]
              ?caml_int32_bswap(caml_string_get32(_cs_,_cr_))
              :caml_string_get32(_cs_,_cr_)}
    function _bd_(_cq_,_cp_)
     {return Stdlib_sys[11]
              ?caml_int64_bswap(caml_string_get64(_cq_,_cp_))
              :caml_string_get64(_cq_,_cp_)}
    function _be_(_co_,_cn_,_cm_)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(_co_,_cn_,caml_bswap16(_cm_))
              :caml_bytes_set16(_co_,_cn_,_cm_)}
    function _bf_(_cl_,_ck_,_cj_)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(_cl_,_ck_,caml_int32_bswap(_cj_))
              :caml_bytes_set32(_cl_,_ck_,_cj_)}
    function _bg_(_ci_,_ch_,_cg_)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(_ci_,_ch_,caml_int64_bswap(_cg_))
              :caml_bytes_set64(_ci_,_ch_,_cg_)}
    function _bh_(_cf_,_ce_){return caml_int32_float_of_bits(_bc_(_cf_,_ce_))}
    function _bi_(_cd_,_cc_){return caml_int64_float_of_bits(_bd_(_cd_,_cc_))}
    function _bj_(_cb_,_ca_,_b$_)
     {return _bf_(_cb_,_ca_,caml_int32_bits_of_float(_b$_))}
    function _bk_(_b__,_b9_,_b8_)
     {return _bg_(_b__,_b9_,caml_int64_bits_of_float(_b8_))}
    var _bl_=caml_string_get16;
    function _bm_(_b5_,_b4_)
     {var _b6_=Stdlib_sys[9] - 17 | 0,_b7_=Stdlib_sys[9] - 17 | 0;
      return caml_string_get16(_b5_,_b4_) << _b7_ >> _b6_}
    var
     _bn_=caml_string_get32,
     _bo_=caml_string_get64,
     _bp_=caml_bytes_set16,
     _bq_=caml_bytes_set32,
     _br_=caml_bytes_set64;
    function _bs_(_b3_,_b2_)
     {return caml_int32_float_of_bits(caml_string_get32(_b3_,_b2_))}
    function _bt_(_b1_,_b0_)
     {return caml_int64_float_of_bits(caml_string_get64(_b1_,_b0_))}
    function _bu_(_bZ_,_bY_,_bX_)
     {return caml_bytes_set32(_bZ_,_bY_,caml_int32_bits_of_float(_bX_))}
    function _bv_(_bW_,_bV_,_bU_)
     {return caml_bytes_set64(_bW_,_bV_,caml_int64_bits_of_float(_bU_))}
    var _bw_=caml_string_get16;
    function _bx_(_bR_,_bQ_)
     {var _bS_=Stdlib_sys[9] - 17 | 0,_bT_=Stdlib_sys[9] - 17 | 0;
      return caml_string_get16(_bR_,_bQ_) << _bT_ >> _bS_}
    var
     _by_=caml_string_get32,
     _bz_=caml_string_get64,
     _bA_=caml_bytes_set16,
     _bB_=caml_bytes_set32,
     _bC_=caml_bytes_set64;
    function _bD_(_bP_,_bO_)
     {return caml_int32_float_of_bits(caml_string_get32(_bP_,_bO_))}
    function _bE_(_bN_,_bM_)
     {return caml_int64_float_of_bits(caml_string_get64(_bN_,_bM_))}
    function _bF_(_bL_,_bK_,_bJ_)
     {return caml_bytes_set32(_bL_,_bK_,caml_int32_bits_of_float(_bJ_))}
    var
     EndianBytes=
      [0,
       [0,
        _av_,
        _az_,
        _aA_,
        _aF_,
        _aG_,
        _aH_,
        _aI_,
        _aM_,
        _aN_,
        _aw_,
        _aB_,
        _aJ_,
        _aK_,
        _aL_,
        _aO_,
        _aP_],
       [0,
        _ax_,
        _aC_,
        _aD_,
        _aQ_,
        _aR_,
        _aS_,
        _aT_,
        _aX_,
        _aY_,
        _ay_,
        _aE_,
        _aU_,
        _aV_,
        _aW_,
        _aZ_,
        _a0_],
       [0,
        _av_,
        _az_,
        _aA_,
        _a1_,
        _a2_,
        _a3_,
        _a4_,
        _a8_,
        _a9_,
        _aw_,
        _aB_,
        _a5_,
        _a6_,
        _a7_,
        _a__,
        _a$_],
       [0,
        _ax_,
        _aC_,
        _aD_,
        _ba_,
        _bb_,
        _bc_,
        _bd_,
        _bh_,
        _bi_,
        _ay_,
        _aE_,
        _be_,
        _bf_,
        _bg_,
        _bj_,
        _bk_],
       [0,
        _av_,
        _az_,
        _aA_,
        _bl_,
        _bm_,
        _bn_,
        _bo_,
        _bs_,
        _bt_,
        _aw_,
        _aB_,
        _bp_,
        _bq_,
        _br_,
        _bu_,
        _bv_],
       [0,
        _ax_,
        _aC_,
        _aD_,
        _bw_,
        _bx_,
        _by_,
        _bz_,
        _bD_,
        _bE_,
        _ay_,
        _aE_,
        _bA_,
        _bB_,
        _bC_,
        _bF_,
        function(_bI_,_bH_,_bG_)
         {return caml_bytes_set64(_bI_,_bH_,caml_int64_bits_of_float(_bG_))}]];
    caml_register_global(2,EndianBytes,"EndianBytes");
    return}
  (function(){return this}()));


//# 1 "../../.js/json-data-encoding-bson/json_data_encoding_bson.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Json_repr_bson_to_bytes=
      caml_string_of_jsbytes("Json_repr.bson_to_bytes"),
     cst_Json_repr_bson_Repr_Bson_d=
      caml_string_of_jsbytes("Json_repr_bson.Repr.Bson_decoding_error"),
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib=global_data.Stdlib,
     EndianBytes=global_data.EndianBytes,
     Stdlib_format=global_data.Stdlib__format,
     Json_repr=global_data.Json_repr,
     Json_encoding=global_data.Json_encoding,
     Json_query=global_data.Json_query,
     Bson_decoding_error=
      [248,cst_Json_repr_bson_Repr_Bson_d,runtime.caml_fresh_oo_id(0)],
     _v_=[0,0,0],
     _m_=
      [0,
       [11,caml_string_of_jsbytes("invalid field names for array field"),0],
       caml_string_of_jsbytes("invalid field names for array field")],
     _n_=
      [0,
       [11,caml_string_of_jsbytes("early terminator"),0],
       caml_string_of_jsbytes("early terminator")],
     _r_=[0,870828711],
     _o_=
      [0,
       [11,
        caml_string_of_jsbytes("unknown tag (0x"),
        [4,8,[0,2,2],0,[12,41,0]]],
       caml_string_of_jsbytes("unknown tag (0x%02X)")],
     _p_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("not enough data, subdocument size tag expected (4 bytes)"),
        0],
       caml_string_of_jsbytes
        ("not enough data, subdocument size tag expected (4 bytes)")],
     _q_=
      [0,
       [11,
        caml_string_of_jsbytes("not enough data, subdocument expected ("),
        [4,0,0,0,[11,caml_string_of_jsbytes(" bytes)"),0]]],
       caml_string_of_jsbytes
        ("not enough data, subdocument expected (%d bytes)")],
     _h_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("not enough data, field name terminator expected (0x00)"),
        0],
       caml_string_of_jsbytes
        ("not enough data, field name terminator expected (0x00)")],
     _f_=
      [0,
       [11,
        caml_string_of_jsbytes("not enough data, bool expected (1 byte)"),
        0],
       caml_string_of_jsbytes("not enough data, bool expected (1 byte)")],
     _g_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid bool value (0x"),
        [4,8,[0,2,2],0,[12,41,0]]],
       caml_string_of_jsbytes("invalid bool value (0x%02X)")],
     _b_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("not enough data, string size tag expected (4 bytes)"),
        0],
       caml_string_of_jsbytes
        ("not enough data, string size tag expected (4 bytes)")],
     _c_=
      [0,
       [11,
        caml_string_of_jsbytes("not enough data, string expected ("),
        [4,0,0,0,[11,caml_string_of_jsbytes(" bytes)"),0]]],
       caml_string_of_jsbytes("not enough data, string expected (%d bytes)")],
     _d_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("not enough data, string terminator expected (0x00)"),
        0],
       caml_string_of_jsbytes
        ("not enough data, string terminator expected (0x00)")],
     _e_=
      [0,
       [11,caml_string_of_jsbytes("string terminator expected (0x00)"),0],
       caml_string_of_jsbytes("string terminator expected (0x00)")],
     _a_=
      [0,
       [11,
        caml_string_of_jsbytes("not enough data, double expected (8 bytes)"),
        0],
       caml_string_of_jsbytes("not enough data, double expected (8 bytes)")],
     _i_=
      [0,
       [11,
        caml_string_of_jsbytes("not enough data for size and terminator"),
        0],
       caml_string_of_jsbytes("not enough data for size and terminator")],
     _j_=
      [0,
       [11,caml_string_of_jsbytes("size tag inconsistent with actual data"),0],
       caml_string_of_jsbytes("size tag inconsistent with actual data")],
     _k_=[0,79,0],
     _l_=
      [0,
       [11,caml_string_of_jsbytes("early terminator"),0],
       caml_string_of_jsbytes("early terminator")],
     _s_=
      [0,
       [11,
        caml_string_of_jsbytes("unknown immediate tag (0x"),
        [4,8,[0,2,2],0,[12,41,0]]],
       caml_string_of_jsbytes("unknown immediate tag (0x%02X)")],
     _t_=
      [0,
       [11,
        caml_string_of_jsbytes("not enough data, terminator expected (0x00)"),
        0],
       caml_string_of_jsbytes("not enough data, terminator expected (0x00)")],
     _u_=
      [0,
       [11,caml_string_of_jsbytes("terminator expected (0x00)"),0],
       caml_string_of_jsbytes("terminator expected (0x00)")];
    function view(root)
     {var ___=root[1];
      if(1 === ___[0])
       {var
         serialized=___[1],
         array_field=serialized[4],
         length=serialized[3],
         offset=serialized[2],
         buffer=serialized[1],
         offset$0=[0,offset],
         length$0=[0,length],
         error=
          function(fmt)
           {function _ac_(msg)
             {throw [0,Bson_decoding_error,msg,buffer,offset$0[1]]}
            return caml_call2(Stdlib_format[133],_ac_,fmt)},
         box=function(node){return [0,node,0,root[3]]},
         skip=
          function(n)
           {offset$0[1] = offset$0[1] + n | 0;
            length$0[1] = length$0[1] - n | 0;
            return 0},
         read_float=
          function(param)
           {if(length$0[1] < 8)error(_a_);
            var res=caml_call2(EndianBytes[4][9],buffer,offset$0[1]);
            skip(8);
            return res},
         read_string=
          function(param)
           {if(length$0[1] < 4)error(_b_);
            var
             strlen=
              caml_call2(EndianBytes[4][6],buffer,offset$0[1]) - 1 | 0;
            skip(4);
            if(length$0[1] < strlen)caml_call1(error(_c_),strlen);
            var res=caml_call3(Stdlib_bytes[8],buffer,offset$0[1],strlen);
            skip(strlen);
            if(length$0[1] < 1)error(_d_);
            if(0 !== caml_call2(EndianBytes[4][3],buffer,offset$0[1]))
             error(_e_);
            skip(1);
            return res},
         read_bool=
          function(param)
           {if(length$0[1] < 1)error(_f_);
            var
             byte$0=caml_call2(EndianBytes[4][3],buffer,offset$0[1]),
             res=0 === byte$0?0:1 === byte$0?1:caml_call1(error(_g_),byte$0);
            skip(1);
            return res},
         read_field_name=
          function(param)
           {var len=0;
            for(;;)
             {if(0 === length$0[1])error(_h_);
              var match=caml_call2(EndianBytes[4][3],buffer,offset$0[1]);
              if(0 === match)
               {skip(- len | 0);
                var res=caml_call3(Stdlib_bytes[8],buffer,offset$0[1],len);
                skip(len + 1 | 0);
                return res}
              skip(1);
              var len$0=len + 1 | 0,len=len$0;
              continue}};
        if(length$0[1] < 5)error(_i_);
        var size=caml_call2(EndianBytes[4][6],buffer,offset$0[1]);
        if(size !== length$0[1])error(_j_);
        skip(4);
        var tag=caml_call2(EndianBytes[4][3],buffer,offset$0[1]);
        if(0 === tag)
         var deserialized$0=1 === length$0[1]?_k_:error(_l_);
        else
         {var switch$0=0;
          if(root[2] || ! (128 === (tag & 240)))
           switch$0 = 1;
          else
           {skip(1);
            var tag$0=tag & 15,switcher=tag$0 - 1 | 0,switch$1=0;
            if(! (9 < switcher >>> 0))
             {var switch$2=0;
              switch(switcher)
               {case 0:var _$_=[0,365180284,read_float(0)];break;
                case 1:var _$_=[0,-976970511,read_string(0)];break;
                case 7:var _$_=[0,737456202,read_bool(0)];break;
                case 9:var _$_=870828711;break;
                default:switch$2 = 1}
              if(! switch$2){var res=_$_;switch$1 = 1}}
            if(! switch$1)var res=caml_call1(error(_s_),tag$0);
            if(1 !== length$0[1])error(_t_);
            if(0 !== caml_call2(EndianBytes[4][3],buffer,offset$0[1]))
             error(_u_);
            skip(1);
            var deserialized$0=res}
          if(switch$0)
           var
            loop=
             function(acc)
              {var acc$0=acc;
               for(;;)
                {var tag=caml_call2(EndianBytes[4][3],buffer,offset$0[1]);
                 if(0 === tag)
                  {if(1 === length$0[1])
                    {if(array_field)
                      try
                       {var
                         to_array=
                          function(acc,i,param)
                           {var acc$0=acc,i$0=i,param$0=param;
                            for(;;)
                             {if(param$0)
                               {var
                                 rest=param$0[2],
                                 match=param$0[1],
                                 bson=match[2],
                                 name=match[1];
                                if
                                 (runtime.caml_string_equal(name,caml_call1(Stdlib[33],i$0)))
                                 {var
                                   i$1=i$0 + 1 | 0,
                                   acc$1=[0,bson,acc$0],
                                   acc$0=acc$1,
                                   i$0=i$1,
                                   param$0=rest;
                                  continue}
                                throw Stdlib[3]}
                              return [0,65,caml_call1(Stdlib_list[9],acc$0)]}},
                         _aa_=to_array(0,0,caml_call1(Stdlib_list[9],acc$0));
                        return _aa_}
                      catch(_ab_)
                       {_ab_ = caml_wrap_exception(_ab_);
                        if(_ab_ === Stdlib[3])return error(_m_);
                        throw _ab_}
                     return [0,79,caml_call1(Stdlib_list[9],acc$0)]}
                   return error(_n_)}
                 skip(1);
                 var switcher=tag - 1 | 0;
                 if(! (9 < switcher >>> 0))
                  switch(switcher)
                   {case 0:
                     var
                      name=read_field_name(0),
                      acc$1=
                       [0,[0,name,box([0,[0,365180284,read_float(0)]])],acc$0],
                      acc$0=acc$1;
                     continue;
                    case 1:
                     var
                      name$0=read_field_name(0),
                      acc$2=
                       [0,[0,name$0,box([0,[0,-976970511,read_string(0)]])],acc$0],
                      acc$0=acc$2;
                     continue;
                    case 7:
                     var
                      name$2=read_field_name(0),
                      acc$4=
                       [0,[0,name$2,box([0,[0,737456202,read_bool(0)]])],acc$0],
                      acc$0=acc$4;
                     continue;
                    case 9:
                     var
                      name$3=read_field_name(0),
                      acc$5=[0,[0,name$3,box(_r_)],acc$0],
                      acc$0=acc$5;
                     continue;
                    case 2:
                    case 3:
                     var name$1=read_field_name(0);
                     if(length$0[1] < 4)error(_p_);
                     var doclen=caml_call2(EndianBytes[4][6],buffer,offset$0[1]);
                     if(length$0[1] < doclen)caml_call1(error(_q_),doclen);
                     var serialized=[0,buffer,offset$0[1],doclen,4 === tag?1:0];
                     skip(doclen);
                     var
                      acc$3=[0,[0,name$1,box([1,serialized])],acc$0],
                      acc$0=acc$3;
                     continue
                    }
                 return caml_call1(error(_o_),tag)}},
            deserialized$0=loop(0)}
        root[1] = root[3]?[2,deserialized$0,serialized]:[0,deserialized$0];
        return deserialized$0}
      var deserialized=___[1];
      return deserialized}
    function repr(deserialized){return [0,[0,deserialized],0,1]}
    var repr_uid=caml_call1(Json_repr[1],0);
    function bson_to_bytes(opt,_B_,bson)
     {if(opt)var sth=opt[1],cache=sth;else var cache=1;
      if(_B_)var sth$0=_B_[1],conforming=sth$0;else var conforming=0;
      var _A_=bson[1];
      switch(_A_[0])
       {case 0:
         var
          compute_size=
           function(bson)
            {var _Q_=bson[1];
             switch(_Q_[0])
              {case 0:
                var deserialized=_Q_[1];
                if(typeof deserialized === "number")return 6;
                var _R_=deserialized[1];
                if(65 === _R_)
                 {var
                   cells=deserialized[2],
                   _S_=
                    function(param,bson)
                     {var i=param[2],acc=param[1],match=view(bson);
                      if(typeof match === "number")
                       var self=0;
                      else
                       {var _Y_=match[1];
                        if(365180284 <= _Y_)
                         var _Z_=737456202 <= _Y_?1:8;
                        else
                         if(65 <= _Y_)
                          var _Z_=compute_size(bson);
                         else
                          var
                           str=match[2],
                           _Z_=(4 + caml_ml_string_length(str) | 0) + 1 | 0;
                        var self=_Z_}
                      var acc$0=0,i$0=i,_X_=i + 1 | 0;
                      for(;;)
                       {if(9 < i$0)
                         {var
                           i$1=i$0 / 10 | 0,
                           acc$1=1 + acc$0 | 0,
                           acc$0=acc$1,
                           i$0=i$1;
                          continue}
                        return [0,
                                (((acc + 1 | 0) + (1 + acc$0 | 0) | 0) + 1 | 0) + self | 0,
                                _X_]}},
                   match=caml_call3(Stdlib_list[22],_S_,_v_,cells),
                   acc=match[1];
                  return (4 + acc | 0) + 1 | 0}
                if(365180284 <= _R_)return 737456202 <= _R_?7:14;
                if(79 <= _R_)
                 {var
                   fields=deserialized[2],
                   _T_=0,
                   _U_=
                    function(acc,param)
                     {var bson=param[2],name=param[1],match=view(bson);
                      if(typeof match === "number")
                       var self=0;
                      else
                       {var _V_=match[1];
                        if(365180284 <= _V_)
                         var _W_=737456202 <= _V_?1:8;
                        else
                         if(65 <= _V_)
                          var _W_=compute_size(bson);
                         else
                          var
                           str=match[2],
                           _W_=(4 + caml_ml_string_length(str) | 0) + 1 | 0;
                        var self=_W_}
                      return (((acc + 1 | 0) + caml_ml_string_length(name) | 0)
                              +
                              1
                              |
                              0)
                             +
                             self
                             |
                             0},
                   acc$0=caml_call3(Stdlib_list[22],_U_,_T_,fields);
                  return (4 + acc$0 | 0) + 1 | 0}
                var str=deserialized[2];
                return ((9 + caml_ml_string_length(str) | 0) + 1 | 0) + 1 | 0;
               case 1:var length=_Q_[1][3];break;
               default:var length=_Q_[2][3]}
             return length},
          computed_size=compute_size(bson),
          result=runtime.caml_create_bytes(computed_size),
          pos=[0,0],
          symbol=function(r,i){r[1] = r[1] + i | 0;return 0},
          reserve_size_stamp=
           function(param)
            {var offset=pos[1];
             symbol(pos,4);
             return function(param)
              {caml_call3(EndianBytes[4][11],result,pos[1],0);
               symbol(pos,1);
               var size=pos[1] - offset | 0;
               return caml_call3(EndianBytes[4][13],result,offset,size)}},
          serialize=
           function(conforming,bson)
            {var _H_=bson[1];
             switch(_H_[0])
              {case 0:
                var deserialized=_H_[1],offset=pos[1],switch$0=0;
                if(typeof deserialized === "number")
                 {if(870828711 !== deserialized)switch$0 = 1}
                else
                 {var _F_=deserialized[1];
                  if(66 <= _F_)
                   {if(365180284 !== _F_ && 737456202 !== _F_)switch$0 = 1}
                  else
                   if(-976970511 !== _F_ && ! (65 <= _F_))switch$0 = 1}
                if(! switch$0 && conforming)
                 throw [0,Stdlib[6],cst_Json_repr_bson_to_bytes];
                if(typeof deserialized === "number")
                 {var update_size_stamp=reserve_size_stamp(0);
                  caml_call3(EndianBytes[4][11],result,pos[1],138);
                  symbol(pos,1);
                  caml_call1(update_size_stamp,0)}
                else
                 {var _C_=deserialized[1];
                  if(365180284 <= _C_)
                   if(737456202 <= _C_)
                    {var
                      b=deserialized[2],
                      update_size_stamp$0=reserve_size_stamp(0);
                     caml_call3(EndianBytes[4][11],result,pos[1],136);
                     symbol(pos,1);
                     var _D_=b?1:0;
                     caml_call3(EndianBytes[4][11],result,pos[1],_D_);
                     symbol(pos,1);
                     caml_call1(update_size_stamp$0,0)}
                   else
                    {var
                      f=deserialized[2],
                      update_size_stamp$1=reserve_size_stamp(0);
                     caml_call3(EndianBytes[4][11],result,pos[1],129);
                     symbol(pos,1);
                     caml_call3(EndianBytes[4][16],result,pos[1],f);
                     symbol(pos,8);
                     caml_call1(update_size_stamp$1,0)}
                  else
                   if(65 <= _C_)
                    {if(79 <= deserialized[1])
                      var fields=deserialized[2],fields$0=fields;
                     else
                      var
                       cells=deserialized[2],
                       _E_=function(i,v){return [0,caml_call1(Stdlib[33],i),v]},
                       fields$0=caml_call2(Stdlib_list[18],_E_,cells);
                     var
                      update_size_stamp$2=reserve_size_stamp(0),
                      _G_=
                       function(param)
                        {var bson=param[2],name=param[1],match=view(bson);
                         if(typeof match === "number")
                          var _L_=10;
                         else
                          var
                           _O_=match[1],
                           _P_=
                            65 === _O_
                             ?4
                             :365180284 <= _O_?737456202 <= _O_?8:1:79 <= _O_?3:2,
                           _L_=_P_;
                         caml_call3(EndianBytes[4][11],result,pos[1],_L_);
                         symbol(pos,1);
                         var strlen=caml_ml_string_length(name);
                         caml_call5(Stdlib_bytes[12],name,0,result,pos[1],strlen);
                         symbol(pos,strlen);
                         caml_call3(EndianBytes[4][11],result,pos[1],0);
                         symbol(pos,1);
                         var match$0=view(bson);
                         if(typeof match$0 === "number")return 0;
                         var _M_=match$0[1];
                         if(365180284 <= _M_)
                          {if(737456202 <= _M_)
                            {var b=match$0[2],_N_=b?1:0;
                             caml_call3(EndianBytes[4][11],result,pos[1],_N_);
                             return symbol(pos,1)}
                           var f=match$0[2];
                           caml_call3(EndianBytes[4][16],result,pos[1],f);
                           return symbol(pos,8)}
                         if(65 <= _M_)return serialize(0,bson);
                         var str=match$0[2],strlen$0=caml_ml_string_length(str);
                         caml_call3
                          (EndianBytes[4][13],result,pos[1],strlen$0 + 1 | 0);
                         symbol(pos,4);
                         caml_call5(Stdlib_bytes[12],str,0,result,pos[1],strlen$0);
                         symbol(pos,strlen$0);
                         caml_call3(EndianBytes[4][11],result,pos[1],0);
                         return symbol(pos,1)};
                     caml_call2(Stdlib_list[15],_G_,fields$0);
                     caml_call1(update_size_stamp$2,0)}
                   else
                    {var
                      str=deserialized[2],
                      update_size_stamp$3=reserve_size_stamp(0);
                     caml_call3(EndianBytes[4][11],result,pos[1],130);
                     symbol(pos,1);
                     var strlen=caml_ml_string_length(str);
                     caml_call3(EndianBytes[4][13],result,pos[1],strlen + 1 | 0);
                     symbol(pos,4);
                     caml_call5(Stdlib_bytes[12],str,0,result,pos[1],strlen);
                     symbol(pos,strlen);
                     caml_call3(EndianBytes[4][11],result,pos[1],0);
                     symbol(pos,1);
                     caml_call1(update_size_stamp$3,0)}}
                var length=pos[1] - offset | 0;
                if(cache)
                 {var switch$1=0;
                  if
                   (typeof deserialized !== "number" && 65 === deserialized[1])
                   {var array_field=1;switch$1 = 1}
                  if(! switch$1)var array_field=0;
                  var serialized=[0,result,offset,length,array_field];
                  bson[1] = [2,deserialized,serialized];
                  var _I_=0}
                else
                 var _I_=cache;
                return _I_;
               case 1:
                var _J_=_H_[1],length$0=_J_[3],offset$0=_J_[2],buffer=_J_[1];
                break;
               default:
                var _K_=_H_[2],length$0=_K_[3],offset$0=_K_[2],buffer=_K_[1]}
             caml_call5
              (Stdlib_bytes[11],buffer,offset$0,result,pos[1],length$0);
             pos[1] = pos[1] + length$0 | 0;
             return 0};
         serialize(conforming,bson);
         return result;
        case 1:var serialized=_A_[1];break;
        default:var serialized=_A_[2]}
      if
       (0
        ===
        serialized[2]
        &&
        serialized[3]
        ===
        caml_ml_bytes_length(serialized[1]))
       return serialized[1];
      return caml_call3
              (Stdlib_bytes[7],serialized[1],serialized[2],serialized[3])}
    function bytes_to_bson(opt,_x_,_w_,copy,buffer)
     {if(opt)var sth=opt[1],laziness=sth;else var laziness=1;
      if(_x_)var sth$0=_x_[1],cache=sth$0;else var cache=1;
      if(_w_)var sth$1=_w_[1],conforming=sth$1;else var conforming=0;
      var
       buffer$0=copy?caml_call1(Stdlib_bytes[4],buffer):buffer,
       serialized=[0,buffer$0,0,caml_ml_bytes_length(buffer$0),0],
       root=[0,[1,serialized],conforming,cache];
      function traverse(bson)
       {var match=view(bson);
        if(typeof match !== "number")
         {var _y_=match[1];
          if(65 === _y_)
           {var cells=match[2];
            return caml_call2(Stdlib_list[15],traverse,cells)}
          if(79 === _y_)
           {var
             fields=match[2],
             _z_=function(param){var bson=param[2];return traverse(bson)};
            return caml_call2(Stdlib_list[15],_z_,fields)}}
        return 0}
      if(1 - laziness)traverse(root);
      return root}
    var
     Json_encoding$0=caml_call1(Json_encoding[66],[0,view,repr,repr_uid]),
     Json_query$0=caml_call1(Json_query[14],[0,view,repr,repr_uid]),
     Json_repr_bson=
      [0,
       [0,view,repr,repr_uid],
       Json_encoding$0,
       Json_query$0,
       bson_to_bytes,
       Bson_decoding_error,
       bytes_to_bson];
    runtime.caml_register_global(32,Json_repr_bson,"Json_repr_bson");
    return}
  (function(){return this}()));


//# 1 "../../.js/zarith/zarith.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_equal=runtime.caml_equal,
     caml_int64_to_float=runtime.caml_int64_to_float,
     caml_ldexp_float=runtime.caml_ldexp_float,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Z_log2up=caml_string_of_jsbytes("Z.log2up"),
     cst_Z_log2=caml_string_of_jsbytes("Z.log2"),
     cst_Z_signed_extract_negative_=
      caml_string_of_jsbytes("Z.signed_extract: negative bit offset"),
     cst_Z_signed_extract_nonpositi=
      caml_string_of_jsbytes("Z.signed_extract: nonpositive bit length"),
     cst_Z_testbit=caml_string_of_jsbytes("Z.testbit"),
     cst_Z_Overflow=caml_string_of_jsbytes("Z.Overflow"),
     cst_ml_z_overflow=caml_string_of_jsbytes("ml_z_overflow"),
     cst_d=caml_string_of_jsbytes("%d"),
     cst_1_10=caml_string_of_jsbytes("1.10"),
     cst_impossible_case$0=caml_string_of_jsbytes("impossible case"),
     cst_impossible_case=caml_string_of_jsbytes("impossible case"),
     cst_0=caml_string_of_jsbytes("0"),
     cst_inf$2=caml_string_of_jsbytes("+inf"),
     cst_inf$3=caml_string_of_jsbytes("-inf"),
     cst_undef$0=caml_string_of_jsbytes("undef"),
     cst$2=caml_string_of_jsbytes("/"),
     cst_Q_of_string_scientific_not=
      caml_string_of_jsbytes
       ("Q.of_string: scientific notations have to be in decimal or hexadecimal"),
     cst_Q_of_string=caml_string_of_jsbytes("Q.of_string"),
     cst=caml_string_of_jsbytes(""),
     cst_inf=caml_string_of_jsbytes("inf"),
     cst_inf$0=caml_string_of_jsbytes("+inf"),
     cst_inf$1=caml_string_of_jsbytes("-inf"),
     cst_undef=caml_string_of_jsbytes("undef"),
     cst_0b=caml_string_of_jsbytes("0b"),
     cst_0o=caml_string_of_jsbytes("0o"),
     cst_0x=caml_string_of_jsbytes("0x"),
     cst$1=caml_string_of_jsbytes("-"),
     cst$0=caml_string_of_jsbytes("-"),
     cst_int64_of_big_int=caml_string_of_jsbytes("int64_of_big_int"),
     cst_nativeint_of_big_int=caml_string_of_jsbytes("nativeint_of_big_int"),
     cst_int32_of_big_int=caml_string_of_jsbytes("int32_of_big_int"),
     cst_int_of_big_int=caml_string_of_jsbytes("int_of_big_int"),
     cst_power_big_int_positive_big=
      caml_string_of_jsbytes("power_big_int_positive_big_int"),
     cst_power_int_positive_big_int=
      caml_string_of_jsbytes("power_int_positive_big_int"),
     cst_power_big_int_positive_int=
      caml_string_of_jsbytes("power_big_int_positive_int"),
     cst_power_int_positive_int=
      caml_string_of_jsbytes("power_int_positive_int"),
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib=global_data.Stdlib,
     Stdlib_callback=global_data.Stdlib__callback,
     Stdlib_string=global_data.Stdlib__string,
     _a_=[248,cst_Z_Overflow,runtime.caml_fresh_oo_id(0)];
    runtime.ml_z_init(0);
    runtime.ml_z_install_frametable(0);
    caml_call2(Stdlib_callback[2],cst_ml_z_overflow,_a_);
    var
     _b_=runtime.ml_z_of_int(0),
     _c_=runtime.ml_z_of_int(1),
     _d_=runtime.ml_z_of_int(-1),
     _A_=runtime.caml_int64_create_lo_mi_hi(1,0,0);
    function _e_(_gm_,_gl_)
     {return 0 < runtime.ml_z_compare(_gm_,_gl_)?_gl_:_gm_}
    function _f_(_gk_,_gj_)
     {return 0 <= runtime.ml_z_compare(_gk_,_gj_)?_gk_:_gj_}
    function _g_(_gi_,_gh_){return runtime.ml_z_compare(_gi_,_gh_) <= 0?1:0}
    function _h_(_gg_,_gf_){return 0 <= runtime.ml_z_compare(_gg_,_gf_)?1:0}
    function _i_(_ge_,_gd_){return runtime.ml_z_compare(_ge_,_gd_) < 0?1:0}
    function _j_(_gc_,_gb_){return 0 < runtime.ml_z_compare(_gc_,_gb_)?1:0}
    function _k_(_ga_){return runtime.ml_z_format(cst_d,_ga_)}
    function _l_(_f$_)
     {return runtime.ml_z_of_substring_base
              (0,_f$_,0,caml_ml_string_length(_f$_))}
    function _m_(_f8_,_f9_,_f__)
     {return runtime.ml_z_of_substring_base(0,_f8_,_f9_,_f__)}
    function _n_(_f7_,_f6_)
     {return runtime.ml_z_of_substring_base
              (_f7_,_f6_,0,caml_ml_string_length(_f6_))}
    function _o_(_f0_,_fZ_)
     {var _f1_=runtime.ml_z_div_rem(_f0_,_fZ_),_f2_=_f1_[2],_f3_=_f1_[1];
      if(0 <= runtime.ml_z_sign(_f2_))return [0,_f3_,_f2_];
      if(0 <= runtime.ml_z_sign(_fZ_))
       {var _f4_=runtime.ml_z_add(_f2_,_fZ_);
        return [0,runtime.ml_z_pred(_f3_),_f4_]}
      var _f5_=runtime.ml_z_sub(_f2_,_fZ_);
      return [0,runtime.ml_z_succ(_f3_),_f5_]}
    function _p_(_fY_,_fX_)
     {return 0 <= runtime.ml_z_sign(_fX_)
              ?runtime.ml_z_fdiv(_fY_,_fX_)
              :runtime.ml_z_cdiv(_fY_,_fX_)}
    function _q_(_fV_,_fU_)
     {var _fW_=runtime.ml_z_rem(_fV_,_fU_);
      return 0 <= runtime.ml_z_sign(_fW_)
              ?_fW_
              :runtime.ml_z_add(_fW_,runtime.ml_z_abs(_fU_))}
    function _r_(_fM_,_fL_)
     {var
       _fN_=runtime.ml_z_sign(_fM_),
       _fO_=runtime.ml_z_sign(_fL_),
       _fP_=_fN_ + 1 | 0;
      if(! (2 < _fP_ >>> 0))
       switch(_fP_)
        {case 0:if(0 === _fO_)return [0,runtime.ml_z_neg(_fM_),_d_,_b_];break;
         case 1:
          var _fT_=_fO_ + 1 | 0;
          if(! (2 < _fT_ >>> 0))
           switch(_fT_)
            {case 0:return [0,runtime.ml_z_neg(_fL_),_b_,_d_];
             case 1:return [0,_b_,_b_,_b_];
             default:return [0,_fL_,_b_,_c_]}
          break;
         default:if(0 === _fO_)return [0,_fM_,_c_,_b_]}
      var
       _fQ_=runtime.ml_z_gcdext_intern(_fM_,_fL_),
       _fR_=_fQ_[2],
       _fS_=_fQ_[1];
      return _fQ_[3]
              ?[0,
                _fS_,
                _fR_,
                runtime.ml_z_div
                 (runtime.ml_z_sub(_fS_,runtime.ml_z_mul(_fM_,_fR_)),_fL_)]
              :[0,
                _fS_,
                runtime.ml_z_div
                 (runtime.ml_z_sub(_fS_,runtime.ml_z_mul(_fL_,_fR_)),_fM_),
                _fR_]}
    function _s_(_fK_,_fJ_)
     {if(! caml_equal(_fK_,_b_) && ! caml_equal(_fJ_,_b_))
       return runtime.ml_z_abs
               (runtime.ml_z_mul
                 (runtime.ml_z_divexact(_fK_,runtime.ml_z_gcd(_fK_,_fJ_)),
                  _fJ_));
      return _b_}
    function _t_(_fI_,_fH_)
     {return 0 <= _fH_
              ?runtime.ml_z_testbit(_fI_,_fH_)
              :caml_call1(Stdlib[1],cst_Z_testbit)}
    function _u_(_fG_){return runtime.ml_z_testbit(_fG_,0)}
    function _v_(_fF_){return 1 - runtime.ml_z_testbit(_fF_,0)}
    function _w_(_fE_,_fD_,_fC_)
     {if(_fD_ < 0)caml_call1(Stdlib[1],cst_Z_signed_extract_negative_);
      if(_fC_ < 1)caml_call1(Stdlib[1],cst_Z_signed_extract_nonpositi);
      return _t_(_fE_,(_fD_ + _fC_ | 0) - 1 | 0)
              ?runtime.ml_z_lognot
                (runtime.ml_z_extract(runtime.ml_z_lognot(_fE_),_fD_,_fC_))
              :runtime.ml_z_extract(_fE_,_fD_,_fC_)}
    function _x_(_fB_)
     {return 0 < runtime.ml_z_sign(_fB_)
              ?runtime.ml_z_numbits(_fB_) - 1 | 0
              :caml_call1(Stdlib[1],cst_Z_log2)}
    function _y_(_fA_)
     {return 0 < runtime.ml_z_sign(_fA_)
              ?runtime.ml_z_numbits(runtime.ml_z_pred(_fA_))
              :caml_call1(Stdlib[1],cst_Z_log2up)}
    function _z_(_fx_,_fw_)
     {var
       _fy_=runtime.ml_z_to_int64(_fx_),
       _fz_=_fw_?_fy_:runtime.caml_int64_or(_fy_,_A_);
      return caml_int64_to_float(_fz_)}
    function _B_(_fs_)
     {if(typeof _fs_ === "number")return _fs_;
      var _ft_=runtime.ml_z_numbits(_fs_);
      if(63 < _ft_)
       {var _fu_=_ft_ - 55 | 0,_fv_=runtime.ml_z_shift_right(_fs_,_fu_);
        return caml_ldexp_float
                (_z_
                  (_fv_,
                   runtime.ml_z_equal(_fs_,runtime.ml_z_shift_left(_fv_,_fu_))),
                 _fu_)}
      return caml_int64_to_float(runtime.ml_z_to_int64(_fs_))}
    function _C_(_fq_){var _fr_=_k_(_fq_);return caml_call1(Stdlib[42],_fr_)}
    function _D_(_fo_,_fn_)
     {var _fp_=_k_(_fn_);return caml_call2(Stdlib[66],_fo_,_fp_)}
    function _E_(_fm_,_fl_){return _k_(_fl_)}
    function _F_(_fj_,_fi_)
     {var _fk_=_k_(_fi_);return caml_call2(Stdlib_buffer[14],_fj_,_fk_)}
    function _G_(_fg_,_ff_)
     {var _fh_=_k_(_ff_);return caml_call2(Stdlib_format[13],_fg_,_fh_)}
    function _H_(_fe_){return _fe_}
    function _I_(_fd_,_fc_){return runtime.ml_z_equal(_fd_,_fc_)}
    var
     Z=
      [0,
       _a_,
       _b_,
       _c_,
       _d_,
       _l_,
       _m_,
       _n_,
       _o_,
       _p_,
       _q_,
       _t_,
       _B_,
       _k_,
       _C_,
       _D_,
       _E_,
       _F_,
       _G_,
       _g_,
       _h_,
       _i_,
       _j_,
       _e_,
       _f_,
       _v_,
       _u_,
       _r_,
       _s_,
       _x_,
       _y_,
       _w_,
       _H_,
       [0,
        _I_,
        _i_,
        _j_,
        _g_,
        _h_,
        function(_fb_,_fa_){return 1 - runtime.ml_z_equal(_fb_,_fa_)}],
       cst_1_10,
       _z_];
    caml_register_global(42,Z,"Z");
    function _J_(_e9_,_e8_)
     {if(_e9_ !== _b_ && _e8_ !== _c_)
       {var _e__=runtime.ml_z_gcd(_e9_,_e8_);
        if(_e__ === _c_)return [0,_e9_,_e8_];
        var _e$_=runtime.ml_z_divexact(_e8_,_e__);
        return [0,runtime.ml_z_divexact(_e9_,_e__),_e$_]}
      return [0,_e9_,_c_]}
    function _K_(_e5_,_e4_)
     {var _e6_=runtime.ml_z_sign(_e4_);
      if(0 === _e6_)
       return [0,runtime.ml_z_of_int(runtime.ml_z_sign(_e5_)),_b_];
      if(0 < _e6_)return _J_(_e5_,_e4_);
      var _e7_=runtime.ml_z_neg(_e4_);
      return _J_(runtime.ml_z_neg(_e5_),_e7_)}
    function _L_(_e3_){return [0,_e3_,_c_]}
    function _M_(_e2_){return _L_(runtime.ml_z_of_int(_e2_))}
    function _N_(_e1_){return _L_(runtime.ml_z_of_int32(_e1_))}
    function _O_(_e0_){return _L_(runtime.ml_z_of_int64(_e0_))}
    function _P_(_eZ_){return _L_(runtime.ml_z_of_nativeint(_eZ_))}
    function _Q_(_eX_,_eW_)
     {var _eY_=runtime.ml_z_of_int(_eW_);
      return _K_(runtime.ml_z_of_int(_eX_),_eY_)}
    var
     _R_=_L_(_b_),
     _S_=_L_(_c_),
     _U_=[0,_c_,_b_],
     _V_=[0,_d_,_b_],
     _W_=[0,_b_,_b_],
     _T_=_L_(_d_);
    function _X_(_eS_)
     {if(_eS_ == Stdlib[22])return _U_;
      if(_eS_ == Stdlib[23])return _V_;
      if(4 === runtime.caml_classify_float(_eS_))return _W_;
      var
       _eT_=runtime.caml_frexp_float(_eS_),
       _eU_=_eT_[2] - 53 | 0,
       _eV_=runtime.ml_z_of_float(caml_ldexp_float(_eT_[1],53));
      return 0 <= _eU_
              ?_L_(runtime.ml_z_shift_left(_eV_,_eU_))
              :_J_(_eV_,runtime.ml_z_shift_left(_c_,- _eU_ | 0))}
    function _Y_(_ef_)
     {function _eg_(_eR_,_eQ_){return _L_(_n_(_eR_,_eQ_))}
      function _eh_(_eF_,_eE_,_eD_)
       {try
         {var
           _eH_=caml_call2(Stdlib_string[14],_eE_,46),
           _eI_=(caml_ml_string_length(_eE_) - _eH_ | 0) - 1 | 0,
           _eJ_=caml_call3(Stdlib_string[4],_eE_,_eH_ + 1 | 0,_eI_),
           _eK_=caml_call3(Stdlib_string[4],_eE_,0,_eH_),
           _eL_=caml_call2(Stdlib[28],_eK_,_eJ_);
          if(_eD_ < _eI_)
           var
            _eM_=runtime.ml_z_pow(runtime.ml_z_of_int(_eF_),_eI_ - _eD_ | 0),
            _eN_=_K_(_n_(_eF_,_eL_),_eM_);
          else
           var
            _eO_=caml_call2(Stdlib_string[1],_eD_ - _eI_ | 0,48),
            _eN_=_eg_(_eF_,caml_call2(Stdlib[28],_eL_,_eO_));
          return _eN_}
        catch(_eP_)
         {_eP_ = caml_wrap_exception(_eP_);
          if(_eP_ === Stdlib[8])
           {var _eG_=caml_call2(Stdlib_string[1],_eD_,48);
            return _eg_(_eF_,caml_call2(Stdlib[28],_eE_,_eG_))}
          throw _eP_}}
      if(caml_string_equal(_ef_,cst))return _R_;
      if
       (!
        caml_string_equal(_ef_,cst_inf)
        &&
        !
        caml_string_equal(_ef_,cst_inf$0))
       {if(caml_string_equal(_ef_,cst_inf$1))return _V_;
        if(caml_string_equal(_ef_,cst_undef))return _W_;
        try
         {var
           _ex_=caml_call2(Stdlib_string[14],_ef_,47),
           _ey_=
            runtime.ml_z_of_substring_base
             (0,
              _ef_,
              _ex_ + 1 | 0,
              (caml_ml_string_length(_ef_) - _ex_ | 0) - 1 | 0),
           _ez_=_K_(runtime.ml_z_of_substring_base(0,_ef_,0,_ex_),_ey_);
          return _ez_}
        catch(_eA_)
         {_eA_ = caml_wrap_exception(_eA_);
          if(_eA_ === Stdlib[8])
           {var _ei_=runtime.caml_string_get(_ef_,0),switch$0=0;
            if(43 !== _ei_ && 45 !== _ei_){var _ej_=[0,43,_ef_];switch$0 = 1}
            if(! switch$0)
             var
              _ej_=
               [0,
                _ei_,
                caml_call3
                 (Stdlib_string[4],_ef_,1,caml_ml_string_length(_ef_) - 1 | 0)];
            var _ek_=_ej_[2],_el_=_ej_[1];
            if(2 <= caml_ml_string_length(_ek_))
             var
              _em_=caml_call3(Stdlib_string[4],_ek_,0,2),
              _en_=
               caml_string_notequal(_em_,cst_0b)
                ?caml_string_notequal(_em_,cst_0o)
                  ?caml_string_notequal(_em_,cst_0x)
                    ?[0,10,_ek_]
                    :[0,
                      16,
                      caml_call3
                       (Stdlib_string[4],
                        _ek_,
                        2,
                        caml_ml_string_length(_ek_) - 2 | 0)]
                  :[0,
                    8,
                    caml_call3
                     (Stdlib_string[4],
                      _ek_,
                      2,
                      caml_ml_string_length(_ek_) - 2 | 0)]
                :[0,
                  2,
                  caml_call3
                   (Stdlib_string[4],
                    _ek_,
                    2,
                    caml_ml_string_length(_ek_) - 2 | 0)],
              _eo_=_en_;
            else
             var _eo_=[0,10,_ek_];
            var _ep_=_eo_[2],_eq_=_eo_[1],_er_=[0,0];
            try
             {var
               _ev_=
                function(_eC_)
                 {_er_[1]++;
                  var switch$0=0;
                  if(81 <= _eC_)
                   {if(101 === _eC_)
                     switch$0 = 1;
                    else
                     if(112 === _eC_)switch$0 = 2}
                  else
                   if(69 === _eC_)switch$0 = 1;else if(80 <= _eC_)switch$0 = 2;
                  switch(switch$0)
                   {case 0:return 0;
                    case 1:
                     if(10 === _eq_)throw Stdlib[3];
                     return 16 === _eq_
                             ?0
                             :caml_call1(Stdlib[1],cst_Q_of_string_scientific_not);
                    default:
                     if(16 === _eq_)throw Stdlib[3];
                     return caml_call1(Stdlib[1],cst_Q_of_string)}};
              caml_call2(Stdlib_string[8],_ev_,_ep_);
              var
               _ew_=
                43 === _el_
                 ?_eh_(_eq_,_ep_,0)
                 :_eh_(_eq_,caml_call2(Stdlib[28],cst$1,_ep_),0);
              return _ew_}
            catch(_eB_)
             {_eB_ = caml_wrap_exception(_eB_);
              if(_eB_ === Stdlib[3])
               {var
                 _es_=caml_call3(Stdlib_string[4],_ep_,0,_er_[1] - 1 | 0),
                 _et_=
                  _n_
                   (_eq_,
                    caml_call3
                     (Stdlib_string[4],
                      _ep_,
                      _er_[1],
                      caml_ml_string_length(_ep_) - _er_[1] | 0));
                if(43 === _el_)
                 return _eh_(_eq_,_es_,runtime.ml_z_to_int(_et_));
                var _eu_=runtime.ml_z_to_int(_et_);
                return _eh_(_eq_,caml_call2(Stdlib[28],cst$0,_es_),_eu_)}
              throw _eB_}}
          throw _eA_}}
      return _U_}
    function _Z_(_ed_)
     {if(_ed_[2] === _b_)
       {var _ee_=runtime.ml_z_sign(_ed_[1]) + 1 | 0;
        if(! (2 < _ee_ >>> 0))
         switch(_ee_){case 0:return 2;case 1:break;default:return 1}
        return 3}
      return _ed_[1] === _b_?0:4}
    function ___(_ec_){return _ec_[2] !== _b_?1:0}
    function _$_(_eb_){return _eb_[1]}
    function _aa_(_ea_){return _ea_[2]}
    function _ab_(_d$_){return runtime.ml_z_sign(_d$_[1])}
    function _ac_(_d7_,_d6_)
     {var _d8_=runtime.ml_z_equal(_d7_[1],_d6_[1]);
      if(_d8_)
       var
        _d9_=runtime.ml_z_equal(_d7_[2],_d6_[2]),
        _d__=_d9_?3 !== _Z_(_d7_)?1:0:_d9_;
      else
       var _d__=_d8_;
      return _d__}
    function _ad_(_d0_,_dZ_)
     {var _d1_=_Z_(_d0_),_d2_=_Z_(_dZ_),switch$0=0;
      switch(_d1_)
       {case 1:
         var _d5_=_d2_ - 1 | 0;
         if(! (2 < _d5_ >>> 0))
          switch(_d5_)
           {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1}
         break;
        case 2:
         if(1 === _d2_)
          switch$0 = 1;
         else
          if(_d2_)
           switch(_d2_ - 2 | 0)
            {case 1:switch$0 = 1;break;case 2:break;default:switch$0 = 2}
         break;
        case 3:if(3 !== _d2_)return -1;switch$0 = 2;break;
        default:switch$0 = 1}
      var switch$1=0;
      switch(switch$0)
       {case 1:
         var _d3_=_d2_ - 1 | 0;
         if(! (2 < _d3_ >>> 0))
          switch(_d3_)
           {case 0:switch$1 = 1;break;case 1:break;default:return 1}
         break;
        case 0:break;
        default:return 0}
      if(! switch$1)
       {var switch$2=0;
        if(! (4 <= _d1_))
         switch(_d1_)
          {case 0:break;case 2:switch$2 = 1;break;default:switch$2 = 2}
        var switch$3=0;
        switch(switch$2)
         {case 0:
           if(2 !== _d2_)
            {if(caml_equal(_d0_[2],_dZ_[2]))
              return runtime.ml_z_compare(_d0_[1],_dZ_[1]);
             var _d4_=runtime.ml_z_mul(_dZ_[1],_d0_[2]);
             return runtime.ml_z_compare
                     (runtime.ml_z_mul(_d0_[1],_dZ_[2]),_d4_)}
           switch$3 = 1;
           break;
          case 1:break;
          default:switch$3 = 1}
        if(switch$3)return 1}
      return -1}
    function _ae_(_dY_,_dX_){return 0 < _ad_(_dY_,_dX_)?_dX_:_dY_}
    function _af_(_dW_,_dV_){return 0 <= _ad_(_dW_,_dV_)?_dW_:_dV_}
    function _ag_(_dQ_,_dP_)
     {var _dR_=_Z_(_dQ_),_dS_=_Z_(_dP_);
      if(3 !== _dR_)
       {var _dT_=_dS_ - 1 | 0,switch$0=0;
        if(! (2 < _dT_ >>> 0))
         switch(_dT_)
          {case 0:switch$0 = 2;break;case 1:break;default:switch$0 = 1}
        var switch$1=0;
        switch(switch$0)
         {case 0:
           var switch$2=0;
           if(! (4 <= _dR_))
            switch(_dR_)
             {case 0:break;
              case 2:switch$1 = 1;switch$2 = 2;break;
              default:switch$2 = 1}
           var switch$3=0;
           switch(switch$2)
            {case 2:switch$3 = 1;break;
             case 0:
              if(2 !== _dS_)
               {if(caml_equal(_dQ_[2],_dP_[2]))return _g_(_dQ_[1],_dP_[1]);
                var _dU_=runtime.ml_z_mul(_dP_[1],_dQ_[2]);
                return _g_(runtime.ml_z_mul(_dQ_[1],_dP_[2]),_dU_)}
              break
             }
           if(! switch$3)return 0;
           break;
          case 1:break;
          default:switch$1 = 1}
        if(switch$1)return 1}
      return 0}
    function _ah_(_dL_,_dK_)
     {var _dM_=_Z_(_dL_),_dN_=_Z_(_dK_);
      if(3 !== _dM_)
       {var switch$0=0;
        if(2 <= _dN_)
         switch(_dN_ - 2 | 0)
          {case 2:break;case 1:switch$0 = 1;break;default:switch$0 = 2}
        var switch$1=0;
        switch(switch$0)
         {case 0:
           var switch$2=0;
           if(! (4 <= _dM_))
            switch(_dM_)
             {case 0:break;
              case 1:switch$1 = 1;switch$2 = 2;break;
              default:switch$2 = 1}
           var switch$3=0;
           switch(switch$2)
            {case 2:switch$3 = 1;break;
             case 0:
              if(1 !== _dN_)
               {if(caml_equal(_dL_[2],_dK_[2]))return _i_(_dL_[1],_dK_[1]);
                var _dO_=runtime.ml_z_mul(_dK_[1],_dL_[2]);
                return _i_(runtime.ml_z_mul(_dL_[1],_dK_[2]),_dO_)}
              break
             }
           if(! switch$3)return 1;
           break;
          case 1:break;
          default:switch$1 = 1}
        if(switch$1)return 0}
      return 0}
    function _ai_(_dJ_,_dI_){return _ag_(_dI_,_dJ_)}
    function _aj_(_dH_,_dG_){return _ah_(_dG_,_dH_)}
    function _ak_(_dC_)
     {switch(_Z_(_dC_))
       {case 0:return cst_0;
        case 1:return cst_inf$2;
        case 2:return cst_inf$3;
        case 3:return cst_undef$0;
        default:
         if(runtime.ml_z_equal(_dC_[2],_c_))return _k_(_dC_[1]);
         var
          _dD_=_k_(_dC_[2]),
          _dE_=caml_call2(Stdlib[28],cst$2,_dD_),
          _dF_=_k_(_dC_[1]);
         return caml_call2(Stdlib[28],_dF_,_dE_)}}
    function _al_(_dB_){return runtime.ml_z_div(_dB_[1],_dB_[2])}
    function _am_(_dA_){return runtime.ml_z_to_int(_al_(_dA_))}
    function _an_(_dz_){return runtime.ml_z_to_int32(_al_(_dz_))}
    function _ao_(_dy_){return runtime.ml_z_to_int64(_al_(_dy_))}
    function _ap_(_dx_){return runtime.ml_z_to_nativeint(_al_(_dx_))}
    function _aq_(_dm_)
     {switch(_Z_(_dm_))
       {case 0:return 0.;
        case 1:return Stdlib[22];
        case 2:return Stdlib[23];
        case 3:return Stdlib[24];
        default:
         var
          _dn_=_dm_[1],
          _do_=_dm_[2],
          _dp_=runtime.ml_z_numbits(_dn_),
          _dq_=runtime.ml_z_numbits(_do_);
         if(! (53 < _dp_) && ! (53 < _dq_))
          {var _dw_=caml_int64_to_float(runtime.ml_z_to_int64(_do_));
           return caml_int64_to_float(runtime.ml_z_to_int64(_dn_)) / _dw_}
         var _dr_=55 - (_dp_ - _dq_ | 0) | 0;
         if(0 <= _dr_)
          var _dt_=_do_,_ds_=runtime.ml_z_shift_left(_dn_,_dr_);
         else
          var _dt_=runtime.ml_z_shift_left(_do_,- _dr_ | 0),_ds_=_dn_;
         var _du_=_o_(_ds_,_dt_),_dv_=0 === runtime.ml_z_sign(_du_[2])?1:0;
         return caml_ldexp_float(_z_(_du_[1],_dv_),- _dr_ | 0)}}
    function _ar_(_dk_)
     {var _dl_=_dk_[2];return [0,runtime.ml_z_neg(_dk_[1]),_dl_]}
    function _as_(_di_)
     {var _dj_=_di_[2];return [0,runtime.ml_z_abs(_di_[1]),_dj_]}
    function _at_(_de_,_dd_,_dc_)
     {if(_dd_[2] === _dc_[2])
       {var _df_=_dd_[2];return _J_(caml_call2(_de_,_dd_[1],_dc_[1]),_df_)}
      var
       _dg_=runtime.ml_z_mul(_dd_[2],_dc_[2]),
       _dh_=runtime.ml_z_mul(_dc_[1],_dd_[2]);
      return _J_(caml_call2(_de_,runtime.ml_z_mul(_dd_[1],_dc_[2]),_dh_),_dg_)}
    function _au_(_c9_,_c8_)
     {if(_c9_[2] !== _b_ && _c8_[2] !== _b_)
       return _at_
               (function(_db_,_da_){return runtime.ml_z_add(_db_,_da_)},
                _c9_,
                _c8_);
      var _c__=_Z_(_c9_),_c$_=_Z_(_c8_),switch$0=0;
      switch(_c__)
       {case 0:return _c8_;
        case 1:
         switch(_c$_)
          {case 2:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1}
         break;
        case 2:
         switch(_c$_)
          {case 2:switch$0 = 2;break;
           case 1:switch$0 = 3;break;
           case 4:switch$0 = 4;break
           }
         break;
        case 4:
         switch(_c$_)
          {case 4:return caml_call1(Stdlib[2],cst_impossible_case);
           case 0:
           case 3:break;
           default:switch$0 = 2}
         break
        }
      var switch$1=0;
      switch(switch$0)
       {case 0:if(3 === _c$_)switch$1 = 1;else if(! _c$_)return _c9_;break;
        case 1:break;
        case 2:switch$1 = 2 <= _c$_?3:2;break;
        case 3:return _W_;
        default:switch$1 = 3}
      var switch$2=0;
      switch(switch$1)
       {case 0:if(! (3 <= _c__))switch$2 = 1;break;
        case 1:break;
        case 2:switch$2 = 1;break;
        default:return _V_}
      return switch$2?_U_:_W_}
    function _av_(_c3_,_c2_)
     {if(_c3_[2] !== _b_ && _c2_[2] !== _b_)
       return _at_
               (function(_c7_,_c6_){return runtime.ml_z_sub(_c7_,_c6_)},
                _c3_,
                _c2_);
      var _c4_=_Z_(_c3_),_c5_=_Z_(_c2_),switch$0=0;
      switch(_c4_)
       {case 0:return _ar_(_c2_);
        case 1:
         switch(_c5_)
          {case 1:switch$0 = 3;break;case 0:case 3:break;default:switch$0 = 1}
         break;
        case 2:
         switch(_c5_)
          {case 1:switch$0 = 2;break;
           case 2:switch$0 = 3;break;
           case 4:switch$0 = 4;break
           }
         break;
        case 4:
         switch(_c5_)
          {case 4:return caml_call1(Stdlib[2],cst_impossible_case$0);
           case 0:
           case 3:break;
           default:switch$0 = 2}
         break
        }
      var switch$1=0;
      switch(switch$0)
       {case 0:if(3 === _c5_)switch$1 = 1;else if(! _c5_)return _c3_;break;
        case 1:break;
        case 2:switch$1 = 2 <= _c5_?2:3;break;
        case 3:return _W_;
        default:switch$1 = 3}
      var switch$2=0;
      switch(switch$1)
       {case 0:if(! (3 <= _c4_))switch$2 = 1;break;
        case 1:break;
        case 2:switch$2 = 1;break;
        default:return _V_}
      return switch$2?_U_:_W_}
    function _aw_(_cZ_,_cY_)
     {if(_cZ_[2] !== _b_ && _cY_[2] !== _b_)
       {var _c1_=runtime.ml_z_mul(_cZ_[2],_cY_[2]);
        return _J_(runtime.ml_z_mul(_cZ_[1],_cY_[1]),_c1_)}
      var _c0_=runtime.ml_z_sign(_cY_[1]);
      return [0,
              runtime.ml_z_of_int
               (runtime.caml_mul(runtime.ml_z_sign(_cZ_[1]),_c0_)),
              _b_]}
    function _ax_(_cV_)
     {var _cW_=runtime.ml_z_sign(_cV_[1]) + 1 | 0;
      if(! (2 < _cW_ >>> 0))
       switch(_cW_)
        {case 0:
          var _cX_=runtime.ml_z_neg(_cV_[1]);
          return [0,runtime.ml_z_neg(_cV_[2]),_cX_];
         case 1:break;
         default:return [0,_cV_[2],_cV_[1]]}
      return _cV_[2] === _b_?_W_:_U_}
    function _ay_(_cT_,_cS_)
     {if(0 <= runtime.ml_z_sign(_cS_[1]))
       return _aw_(_cT_,[0,_cS_[2],_cS_[1]]);
      var _cU_=runtime.ml_z_neg(_cS_[1]);
      return _aw_(_cT_,[0,runtime.ml_z_neg(_cS_[2]),_cU_])}
    function _az_(_cQ_,_cP_)
     {if(_cQ_[2] === _b_)return _cQ_;
      var _cR_=_cQ_[2];
      return _J_(runtime.ml_z_shift_left(_cQ_[1],_cP_),_cR_)}
    function _aA_(_cN_,_cM_)
     {if(_cN_[2] === _b_)return _cN_;
      var _cO_=runtime.ml_z_shift_left(_cN_[2],_cM_);
      return _J_(_cN_[1],_cO_)}
    function _aB_(_cK_)
     {var _cL_=_ak_(_cK_);return caml_call1(Stdlib[42],_cL_)}
    function _aC_(_cI_,_cH_)
     {var _cJ_=_ak_(_cH_);return caml_call2(Stdlib[66],_cI_,_cJ_)}
    function _aD_(_cG_,_cF_){return _ak_(_cF_)}
    function _aE_(_cD_,_cC_)
     {var _cE_=_ak_(_cC_);return caml_call2(Stdlib_buffer[14],_cD_,_cE_)}
    function _aF_(_cA_,_cz_)
     {var _cB_=_ak_(_cz_);return caml_call2(Stdlib_format[13],_cA_,_cB_)}
    function _aG_(_cy_){return _cy_}
    var
     Q=
      [0,
       _K_,
       _R_,
       _S_,
       _T_,
       _U_,
       _V_,
       _W_,
       _L_,
       _M_,
       _N_,
       _O_,
       _P_,
       _Q_,
       _X_,
       _Y_,
       _$_,
       _aa_,
       _Z_,
       ___,
       _ab_,
       _ad_,
       _ac_,
       _ae_,
       _af_,
       _ag_,
       _ai_,
       _ah_,
       _aj_,
       _al_,
       _am_,
       _an_,
       _ao_,
       _ap_,
       _ak_,
       _aq_,
       _ar_,
       _as_,
       _au_,
       _av_,
       _aw_,
       _ax_,
       _ay_,
       _az_,
       _aA_,
       _aB_,
       _aC_,
       _aD_,
       _aE_,
       _aF_,
       _ar_,
       _aG_,
       _au_,
       _av_,
       _aw_,
       _ay_,
       _az_,
       _aA_,
       _M_,
       _Q_,
       _L_,
       _K_,
       _ac_,
       _ah_,
       _aj_,
       _ag_,
       _ai_,
       function(_cx_,_cw_){return 1 - _ac_(_cx_,_cw_)}];
    caml_register_global(44,Q,"Q");
    function _aH_(_cv_){return runtime.ml_z_neg(_cv_)}
    function _aI_(_cu_){return runtime.ml_z_abs(_cu_)}
    function _aJ_(_ct_,_cs_){return runtime.ml_z_add(_ct_,_cs_)}
    function _aK_(_cr_){return runtime.ml_z_succ(_cr_)}
    function _aL_(_cq_,_cp_)
     {return runtime.ml_z_add(runtime.ml_z_of_int(_cq_),_cp_)}
    function _aM_(_co_,_cn_){return runtime.ml_z_sub(_co_,_cn_)}
    function _aN_(_cm_){return runtime.ml_z_pred(_cm_)}
    function _aO_(_cl_,_ck_){return runtime.ml_z_mul(_cl_,_ck_)}
    function _aP_(_cj_,_ci_)
     {return runtime.ml_z_mul(runtime.ml_z_of_int(_cj_),_ci_)}
    function _aQ_(_ch_){return runtime.ml_z_mul(_ch_,_ch_)}
    function _aR_(_cg_){return runtime.ml_z_sqrt(_cg_)}
    function _aS_(_cf_,_ce_){return runtime.ml_z_gcd(_cf_,_ce_)}
    function _aT_(_cd_,_cc_){return runtime.ml_z_pow(_cd_,_cc_)}
    function _aU_(_cb_,_ca_)
     {return runtime.ml_z_pow(_cb_,runtime.ml_z_to_int(_ca_))}
    function _aV_(_b$_,_b__)
     {if(_b__ < 0)throw [0,Stdlib[6],cst_power_int_positive_int];
      return runtime.ml_z_pow(runtime.ml_z_of_int(_b$_),_b__)}
    function _aW_(_b9_,_b8_)
     {if(_b8_ < 0)throw [0,Stdlib[6],cst_power_big_int_positive_int];
      return runtime.ml_z_pow(_b9_,_b8_)}
    function _aX_(_b7_,_b6_)
     {if(runtime.ml_z_sign(_b6_) < 0)
       throw [0,Stdlib[6],cst_power_int_positive_big_int];
      return _aU_(runtime.ml_z_of_int(_b7_),_b6_)}
    function _aY_(_b5_,_b4_)
     {if(runtime.ml_z_sign(_b4_) < 0)
       throw [0,Stdlib[6],cst_power_big_int_positive_big];
      return _aU_(_b5_,_b4_)}
    function _aZ_(_b3_){return runtime.ml_z_sign(_b3_)}
    function _a0_(_b2_,_b1_){return runtime.ml_z_compare(_b2_,_b1_)}
    function _a1_(_b0_,_bZ_){return runtime.ml_z_equal(_b0_,_bZ_)}
    function _a2_(_bY_,_bX_){return runtime.ml_z_compare(_bY_,_bX_) <= 0?1:0}
    function _a3_(_bW_,_bV_){return 0 <= runtime.ml_z_compare(_bW_,_bV_)?1:0}
    function _a4_(_bU_,_bT_){return runtime.ml_z_compare(_bU_,_bT_) < 0?1:0}
    function _a5_(_bS_,_bR_){return 0 < runtime.ml_z_compare(_bS_,_bR_)?1:0}
    function _a6_(_bQ_){return runtime.ml_z_size(_bQ_)}
    function _a7_(_bP_){return runtime.ml_z_of_int(_bP_)}
    function _a8_(_bO_){return runtime.ml_z_fits_int(_bO_)}
    function _a9_(_bL_)
     {try
       {var _bM_=runtime.ml_z_to_int(_bL_);return _bM_}
      catch(_bN_)
       {_bN_ = caml_wrap_exception(_bN_);
        if(_bN_ === _a_)return caml_call1(Stdlib[2],cst_int_of_big_int);
        throw _bN_}}
    function _a__(_bK_){return runtime.ml_z_of_int32(_bK_)}
    function _a$_(_bJ_){return runtime.ml_z_of_nativeint(_bJ_)}
    function _ba_(_bI_){return runtime.ml_z_of_int64(_bI_)}
    function _bb_(_bF_)
     {try
       {var _bG_=runtime.ml_z_to_int32(_bF_);return _bG_}
      catch(_bH_)
       {_bH_ = caml_wrap_exception(_bH_);
        if(_bH_ === _a_)return caml_call1(Stdlib[2],cst_int32_of_big_int);
        throw _bH_}}
    function _bc_(_bC_)
     {try
       {var _bD_=runtime.ml_z_to_nativeint(_bC_);return _bD_}
      catch(_bE_)
       {_bE_ = caml_wrap_exception(_bE_);
        if(_bE_ === _a_)return caml_call1(Stdlib[2],cst_nativeint_of_big_int);
        throw _bE_}}
    function _bd_(_bz_)
     {try
       {var _bA_=runtime.ml_z_to_int64(_bz_);return _bA_}
      catch(_bB_)
       {_bB_ = caml_wrap_exception(_bB_);
        if(_bB_ === _a_)return caml_call1(Stdlib[2],cst_int64_of_big_int);
        throw _bB_}}
    function _be_(_by_,_bx_){return runtime.ml_z_logand(_by_,_bx_)}
    function _bf_(_bw_,_bv_){return runtime.ml_z_logor(_bw_,_bv_)}
    function _bg_(_bu_,_bt_){return runtime.ml_z_logxor(_bu_,_bt_)}
    function _bh_(_bs_,_br_){return runtime.ml_z_shift_left(_bs_,_br_)}
    function _bi_(_bq_,_bp_){return runtime.ml_z_shift_right(_bq_,_bp_)}
    function _bj_(_bo_,_bn_){return runtime.ml_z_shift_right_trunc(_bo_,_bn_)}
    var
     Big_int_Z=
      [0,
       _b_,
       _c_,
       _aH_,
       _aI_,
       _aJ_,
       _aK_,
       _aL_,
       _aM_,
       _aN_,
       _aO_,
       _aP_,
       _aQ_,
       _aR_,
       _o_,
       _p_,
       _q_,
       _aS_,
       _aT_,
       _aU_,
       _aV_,
       _aW_,
       _aX_,
       _aY_,
       _aZ_,
       _a0_,
       _a1_,
       _a2_,
       _a3_,
       _a4_,
       _a5_,
       _f_,
       _e_,
       _a6_,
       _k_,
       _l_,
       _a7_,
       _a8_,
       _a9_,
       _a__,
       _a$_,
       _ba_,
       _bb_,
       _bc_,
       _bd_,
       _B_,
       _be_,
       _bf_,
       _bg_,
       _bh_,
       _bi_,
       _bj_,
       function(_bm_,_bl_,_bk_){return runtime.ml_z_extract(_bm_,_bl_,_bk_)}];
    caml_register_global(45,Big_int_Z,"Big_int_Z");
    return}
  (function(){return this}()));


//# 1 "../../.js/uutf/uutf.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_blit_bytes=runtime.caml_blit_bytes,
     caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get,
     caml_check_bound=runtime.caml_check_bound,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_string_compare=runtime.caml_string_compare,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_UTF_8$0=caml_string_of_jsbytes("UTF-8"),
     cst_US_ASCII$0=caml_string_of_jsbytes("US-ASCII"),
     cst_ISO_8859_1$1=caml_string_of_jsbytes("ISO-8859-1"),
     cst_UTF_16$0=caml_string_of_jsbytes("UTF-16"),
     cst_UTF_16LE$0=caml_string_of_jsbytes("UTF-16LE"),
     cst_UTF_16BE$0=caml_string_of_jsbytes("UTF-16BE"),
     cst_ISO646_US=caml_string_of_jsbytes("ISO646-US"),
     cst_CSISOLATIN1=caml_string_of_jsbytes("CSISOLATIN1"),
     cst_ANSI_X3_4_1968=caml_string_of_jsbytes("ANSI_X3.4-1968"),
     cst_ANSI_X3_4_1986=caml_string_of_jsbytes("ANSI_X3.4-1986"),
     cst_ASCII=caml_string_of_jsbytes("ASCII"),
     cst_CP367=caml_string_of_jsbytes("CP367"),
     cst_CP819=caml_string_of_jsbytes("CP819"),
     cst_CSASCII=caml_string_of_jsbytes("CSASCII"),
     cst_IBM367=caml_string_of_jsbytes("IBM367"),
     cst_IBM819=caml_string_of_jsbytes("IBM819"),
     cst_ISO_8859_1$0=caml_string_of_jsbytes("ISO-8859-1"),
     cst_ISO_IR_100=caml_string_of_jsbytes("ISO-IR-100"),
     cst_ISO_IR_6=caml_string_of_jsbytes("ISO-IR-6"),
     cst_US=caml_string_of_jsbytes("US"),
     cst_ISO_646_IRV_1991=caml_string_of_jsbytes("ISO_646.IRV:1991"),
     cst_ISO_8859_1=caml_string_of_jsbytes("ISO_8859-1"),
     cst_ISO_8859_1_1987=caml_string_of_jsbytes("ISO_8859-1:1987"),
     cst_L1=caml_string_of_jsbytes("L1"),
     cst_LATIN1=caml_string_of_jsbytes("LATIN1"),
     cst_US_ASCII=caml_string_of_jsbytes("US-ASCII"),
     cst_UTF_16=caml_string_of_jsbytes("UTF-16"),
     cst_UTF_16BE=caml_string_of_jsbytes("UTF-16BE"),
     cst_UTF_16LE=caml_string_of_jsbytes("UTF-16LE"),
     cst_UTF_8=caml_string_of_jsbytes("UTF-8"),
     cst_expected_Await_encode=
      caml_string_of_jsbytes("expected `Await encode"),
     Stdlib_uchar=global_data.Stdlib__uchar,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib=global_data.Stdlib,
     Assert_failure=global_data.Assert_failure,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_format=global_data.Stdlib__format,
     _a_=Stdlib_format[123],
     _B_=[0,caml_string_of_jsbytes("src/uutf.ml"),364,9],
     _u_=
      [0,
       [11,caml_string_of_jsbytes("`Await"),0],
       caml_string_of_jsbytes("`Await")],
     _v_=
      [0,[11,caml_string_of_jsbytes("`End"),0],caml_string_of_jsbytes("`End")],
     _w_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,caml_string_of_jsbytes("`Uchar U+"),[4,8,[0,2,4],0,[17,0,0]]]],
       caml_string_of_jsbytes("@[`Uchar U+%04X@]")],
     _x_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,caml_string_of_jsbytes("`Malformed ("),0]],
       caml_string_of_jsbytes("@[`Malformed (")],
     _y_=[0,[4,8,[0,2,2],0,0],caml_string_of_jsbytes("%02X")],
     _A_=[0,[12,32,[4,8,[0,2,2],0,0]],caml_string_of_jsbytes(" %02X")],
     _z_=[0,[12,41,[17,0,0]],caml_string_of_jsbytes(")@]")],
     _p_=[0,-211555818,3299808],
     _k_=[0,-211558048,3299808],
     _q_=[0,684370880,3299808],
     _o_=[0,684370880,427938126],
     _l_=[0,-211558048,427938126],
     _m_=[0,caml_string_of_jsbytes("src/uutf.ml"),154,55],
     _n_=[0,684370880,427938126],
     _r_=[0,caml_string_of_jsbytes("src/uutf.ml"),153,55],
     _s_=[0,caml_string_of_jsbytes("src/uutf.ml"),155,55],
     _t_=[0,684370880,3455931],
     _j_=[0,caml_string_of_jsbytes("src/uutf.ml"),121,9],
     _c_=[0,684370880],
     _d_=[0,-211555818],
     _e_=[0,-211558048],
     _f_=[0,143365725],
     _g_=[0,423112016],
     _h_=[0,338302576],
     _b_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid bounds (index "),
        [4,0,0,0,[11,caml_string_of_jsbytes(", length "),[4,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes("invalid bounds (index %d, length %d)")],
     _i_=
      [0,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       2,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       3,
       4,
       4,
       4,
       4,
       4,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0,
       0];
    function invalid_bounds(j,l)
     {var _aF_=caml_call3(Stdlib_printf[4],_b_,j,l);
      return caml_call1(Stdlib[1],_aF_)}
    function unsafe_set_byte(s,j,byte$0)
     {runtime.caml_bytes_unsafe_set(s,j,byte$0);return 0}
    var
     u_bom=caml_call1(Stdlib_uchar[9],65279),
     u_rep=caml_call1(Stdlib_uchar[9],65533);
    function encoding_of_string(s)
     {var
       match=caml_call1(Stdlib_string[25],s),
       _aD_=caml_string_compare(match,cst_ISO646_US),
       switch$1=0;
      if(0 <= _aD_)
       {if(0 < _aD_)
         {var switch$0=caml_string_compare(match,cst_US);
          if(0 <= switch$0)
           {if(0 < switch$0 && caml_string_notequal(match,cst_US_ASCII))
             {if(! caml_string_notequal(match,cst_UTF_16))return _f_;
              if(! caml_string_notequal(match,cst_UTF_16BE))return _e_;
              if(! caml_string_notequal(match,cst_UTF_16LE))return _d_;
              if(! caml_string_notequal(match,cst_UTF_8))return _c_;
              switch$1 = 2}}
          else
           if(caml_string_notequal(match,cst_ISO_646_IRV_1991))
            if
             (caml_string_notequal(match,cst_ISO_8859_1)
              &&
              caml_string_notequal(match,cst_ISO_8859_1_1987)
              &&
              caml_string_notequal(match,cst_L1)
              &&
              caml_string_notequal(match,cst_LATIN1))
             switch$1 = 2;
            else
             switch$1 = 1}}
      else
       {var _aE_=caml_string_compare(match,cst_CSISOLATIN1);
        if(0 <= _aE_)
         if(0 < _aE_)
          {if(caml_string_notequal(match,cst_IBM367))
            if
             (caml_string_notequal(match,cst_IBM819)
              &&
              caml_string_notequal(match,cst_ISO_8859_1$0)
              &&
              caml_string_notequal(match,cst_ISO_IR_100))
             {if(caml_string_notequal(match,cst_ISO_IR_6))switch$1 = 2}
            else
             switch$1 = 1}
         else
          switch$1 = 1;
        else
         if
          (caml_string_notequal(match,cst_ANSI_X3_4_1968)
           &&
           caml_string_notequal(match,cst_ANSI_X3_4_1986)
           &&
           caml_string_notequal(match,cst_ASCII)
           &&
           caml_string_notequal(match,cst_CP367))
          if(caml_string_notequal(match,cst_CP819))
           {if(caml_string_notequal(match,cst_CSASCII))switch$1 = 2}
          else
           switch$1 = 1}
      switch(switch$1){case 2:return 0;case 0:return _g_;default:return _h_}}
    function encoding_to_string(param)
     {return 143365725 <= param
              ?423112016 <= param
                ?684370880 <= param?cst_UTF_8$0:cst_US_ASCII$0
                :338302576 <= param?cst_ISO_8859_1$1:cst_UTF_16$0
              :-211555818 <= param?cst_UTF_16LE$0:cst_UTF_16BE$0}
    function malformed(s,j,l)
     {return [0,659980059,caml_call3(Stdlib_bytes[8],s,j,l)]}
    function malformed_pair(be,hi,s,j,l)
     {var bs1=caml_call3(Stdlib_bytes[7],s,j,l),bs0=caml_create_bytes(2);
      if(be)var j1=1,j0=0;else var j1=0,j0=1;
      unsafe_set_byte(bs0,j0,hi >>> 8 | 0);
      unsafe_set_byte(bs0,j1,hi & 255);
      var _aC_=caml_call2(Stdlib_bytes[14],bs0,bs1);
      return [0,659980059,caml_call1(Stdlib_bytes[42],_aC_)]}
    var utf_8_len=_i_.slice();
    function r_utf_8(s,j,l)
     {function uchar(c){return [0,852405675,caml_call1(Stdlib_uchar[9],c)]}
      var switcher=l - 1 | 0;
      if(3 < switcher >>> 0)throw [0,Assert_failure,_j_];
      switch(switcher)
       {case 0:return uchar(caml_bytes_unsafe_get(s,j));
        case 1:
         var
          b0=caml_bytes_unsafe_get(s,j),
          b1=caml_bytes_unsafe_get(s,j + 1 | 0);
         return 2 === (b1 >>> 6 | 0)
                 ?uchar((b0 & 31) << 6 | b1 & 63)
                 :malformed(s,j,l);
        case 2:
         var
          b0$0=caml_bytes_unsafe_get(s,j),
          b1$0=caml_bytes_unsafe_get(s,j + 1 | 0),
          b2=caml_bytes_unsafe_get(s,j + 2 | 0),
          c=(b0$0 & 15) << 12 | (b1$0 & 63) << 6 | b2 & 63;
         if(2 === (b2 >>> 6 | 0))
          {if(224 === b0$0)
            {if(160 <= b1$0 && ! (191 < b1$0))return uchar(c);
             return malformed(s,j,l)}
           if(237 === b0$0)
            {if(128 <= b1$0 && ! (159 < b1$0))return uchar(c);
             return malformed(s,j,l)}
           return 2 === (b1$0 >>> 6 | 0)?uchar(c):malformed(s,j,l)}
         return malformed(s,j,l);
        default:
         var
          b0$1=caml_bytes_unsafe_get(s,j),
          b1$1=caml_bytes_unsafe_get(s,j + 1 | 0),
          b2$0=caml_bytes_unsafe_get(s,j + 2 | 0),
          b3=caml_bytes_unsafe_get(s,j + 3 | 0),
          c$0=
           (b0$1 & 7)
           <<
           18
           |
           (b1$1 & 63)
           <<
           12
           |
           (b2$0 & 63)
           <<
           6
           |
           b3
           &
           63;
         if(2 === (b3 >>> 6 | 0) && 2 === (b2$0 >>> 6 | 0))
          {if(240 === b0$1)
            {if(144 <= b1$1 && ! (191 < b1$1))return uchar(c$0);
             return malformed(s,j,l)}
           if(244 === b0$1)
            {if(128 <= b1$1 && ! (143 < b1$1))return uchar(c$0);
             return malformed(s,j,l)}
           return 2 === (b1$1 >>> 6 | 0)?uchar(c$0):malformed(s,j,l)}
         return malformed(s,j,l)}}
    function r_utf_16(s,j0,j1)
     {var
       b0=caml_bytes_unsafe_get(s,j0),
       b1=caml_bytes_unsafe_get(s,j1),
       u=b0 << 8 | b1;
      if(55296 <= u && ! (57343 < u))
       return 56319 < u
               ?malformed(s,caml_call2(Stdlib[16],j0,j1),2)
               :[0,16161,u];
      return [0,852405675,caml_call1(Stdlib_uchar[9],u)]}
    function r_utf_16_lo(hi,s,j0,j1)
     {var
       b0=caml_bytes_unsafe_get(s,j0),
       b1=caml_bytes_unsafe_get(s,j1),
       lo=b0 << 8 | b1;
      if(56320 <= lo && ! (57343 < lo))
       return [0,
               852405675,
               caml_call1
                (Stdlib_uchar[9],((hi & 1023) << 10 | lo & 1023) + 65536 | 0)];
      return malformed_pair(j0 < j1?1:0,hi,s,caml_call2(Stdlib[16],j0,j1),2)}
    function r_encoding(s,j,l)
     {function some(i){return i < l?[0,caml_bytes_unsafe_get(s,j + i | 0)]:0}
      var match=some(0),match$0=some(1),match$1=some(2);
      if(match)
       {var _aB_=match[1],switch$0=0;
        if(240 <= _aB_)
         if(254 === _aB_)
          {if(match$0){if(255 === match$0[1])return _k_;switch$0 = 1}}
         else
          if(255 === _aB_)
           {if(match$0){if(254 === match$0[1])return _p_;switch$0 = 1}}
          else
           switch$0 = 1;
        else
         if(0 === _aB_)
          {if(match$0)
            {var p=match$0[1];
             if(0 < p)return [0,-211558048,[0,605782321,p]];
             switch$0 = 1}}
         else
          if(239 <= _aB_)
           {if(match$0)
             if(187 === match$0[1])
              {if(match$1 && 191 === match$1[1])return _q_}
             else
              switch$0 = 1}
          else
           switch$0 = 1;
        if(switch$0 && match$0 && 0 === match$0[1] && 0 < _aB_)
         return [0,-211555818,[0,605782321,_aB_]];
        if(0 === caml_check_bound(utf_8_len,_aB_)[1 + _aB_])
         {if(match$0)return _l_;
          if(match$1)throw [0,Assert_failure,_m_];
          return _n_}
        return _o_}
      if(match$0)throw [0,Assert_failure,_r_];
      if(match$1)throw [0,Assert_failure,_s_];
      return _t_}
    function pp_decode(ppf,param)
     {if(typeof param === "number")
       return 1006505782 <= param
               ?caml_call2(_a_,ppf,_u_)
               :caml_call2(_a_,ppf,_v_);
      if(852405675 <= param[1])
       {var u=param[2];
        return caml_call3(_a_,ppf,_w_,caml_call1(Stdlib_uchar[10],u))}
      var bs=param[2],l=caml_ml_string_length(bs);
      caml_call2(_a_,ppf,_x_);
      if(0 < l)caml_call3(_a_,ppf,_y_,caml_string_get(bs,0));
      var _az_=l - 1 | 0,_ay_=1;
      if(! (_az_ < 1))
       {var i=_ay_;
        for(;;)
         {caml_call3(_a_,ppf,_A_,caml_string_get(bs,i));
          var _aA_=i + 1 | 0;
          if(_az_ !== i){var i=_aA_;continue}
          break}}
      return caml_call2(_a_,ppf,_z_)}
    function i_rem(d){return (d[7] - d[6] | 0) + 1 | 0}
    function eoi(d)
     {d[5] = Stdlib_bytes[3];d[6] = 0;d[7] = Stdlib[20];return 0}
    function src(d,s,j,l)
     {if(0 <= j && 0 <= l && ! (caml_ml_bytes_length(s) < (j + l | 0)))
       return 0 === l?eoi(d):(d[5] = s,d[6] = j,d[7] = (j + l | 0) - 1 | 0,0);
      return invalid_bounds(j,l)}
    function refill(k,d)
     {var _ax_=d[1];
      if(typeof _ax_ === "number"){d[18] = k;return 1006505782}
      if(438511779 <= _ax_[1])
       {var
         ic=_ax_[2],
         rc=caml_call4(Stdlib[84],ic,d[5],0,caml_ml_bytes_length(d[5]));
        src(d,d[5],0,rc);
        return caml_call1(k,d)}
      eoi(d);
      return caml_call1(k,d)}
    function t_need(d,need){d[9] = 0;d[10] = need;return 0}
    function t_fill(k,d)
     {function blit(d,l)
       {caml_blit_bytes(d[5],d[6],d[8],d[9],l);
        d[6] = d[6] + l | 0;
        d[9] = d[9] + l | 0;
        return 0}
      var rem=i_rem(d);
      if(0 <= rem)
       {var need=d[10] - d[9] | 0;
        return rem < need
                ?(blit(d,rem),refill(function(_aw_){return t_fill(k,_aw_)},d))
                :(blit(d,need),caml_call1(k,d))}
      return caml_call1(k,d)}
    function ret(k,v,byte_count,d)
     {d[18] = k;d[15] = d[15] + byte_count | 0;return caml_call2(d[17],d,v)}
    function decode_us_ascii(d)
     {var rem=i_rem(d);
      if(0 < rem)
       {var j=d[6];
        d[6] = d[6] + 1 | 0;
        var
         _au_=d[5],
         b0=caml_bytes_unsafe_get(_au_,j),
         _at_=1,
         _av_=
          127 < b0
           ?malformed(_au_,j,1)
           :[0,852405675,caml_call1(Stdlib_uchar[9],b0)];
        return ret(decode_us_ascii,_av_,_at_,d)}
      return 0 <= rem?refill(decode_us_ascii,d):3455931}
    function decode_iso_8859_1(d)
     {var rem=i_rem(d);
      if(0 < rem)
       {var j=d[6];
        d[6] = d[6] + 1 | 0;
        return ret
                (decode_iso_8859_1,
                 [0,
                  852405675,
                  caml_call1(Stdlib_uchar[9],caml_bytes_unsafe_get(d[5],j))],
                 1,
                 d)}
      return 0 <= rem?refill(decode_iso_8859_1,d):3455931}
    function t_decode_utf_8(d)
     {if(d[9] < d[10])
       {var _ar_=d[9];return ret(decode_utf_8,malformed(d[8],0,d[9]),_ar_,d)}
      var _as_=d[9];
      return ret(decode_utf_8,r_utf_8(d[8],0,d[9]),_as_,d)}
    function decode_utf_8(d)
     {var rem=i_rem(d);
      if(0 < rem)
       {var need=utf_8_len[1 + caml_bytes_unsafe_get(d[5],d[6])];
        if(rem < need){t_need(d,need);return t_fill(t_decode_utf_8,d)}
        var j=d[6];
        return 0 === need
                ?(d[6]
                  =
                  d[6]
                  +
                  1
                  |
                  0,
                  ret(decode_utf_8,malformed(d[5],j,1),1,d))
                :(d[6]
                  =
                  d[6]
                  +
                  need
                  |
                  0,
                  ret(decode_utf_8,r_utf_8(d[5],j,need),need,d))}
      return 0 <= rem?refill(decode_utf_8,d):3455931}
    function t_decode_utf_16be_lo(hi,d)
     {var bcount=d[9] + 2 | 0;
      return d[9] < d[10]
              ?ret(decode_utf_16be,malformed_pair(1,hi,d[8],0,d[9]),bcount,d)
              :ret(decode_utf_16be,r_utf_16_lo(hi,d[8],0,1),bcount,d)}
    function decode_utf_16be_lo(v,d)
     {if(659980059 <= v[1])return ret(decode_utf_16be,v,2,d);
      var hi=v[2],rem=i_rem(d);
      if(2 <= rem)
       {var j=d[6];
        d[6] = d[6] + 2 | 0;
        return ret(decode_utf_16be,r_utf_16_lo(hi,d[5],j,j + 1 | 0),4,d)}
      t_need(d,2);
      return t_fill(function(_aq_){return t_decode_utf_16be_lo(hi,_aq_)},d)}
    function t_decode_utf_16be(d)
     {if(d[9] < d[10])
       {var _ap_=d[9];
        return ret(decode_utf_16be,malformed(d[8],0,d[9]),_ap_,d)}
      return decode_utf_16be_lo(r_utf_16(d[8],0,1),d)}
    function decode_utf_16be(d)
     {var rem=i_rem(d);
      if(0 < rem)
       {if(2 <= rem)
         {var j=d[6];
          d[6] = d[6] + 2 | 0;
          return decode_utf_16be_lo(r_utf_16(d[5],j,j + 1 | 0),d)}
        t_need(d,2);
        return t_fill(t_decode_utf_16be,d)}
      return 0 <= rem?refill(decode_utf_16be,d):3455931}
    function t_decode_utf_16_lo(hi,d)
     {var bcount=d[9] + 2 | 0;
      return d[9] < d[10]
              ?ret(decode_utf_16,malformed_pair(0,hi,d[8],0,d[9]),bcount,d)
              :ret(decode_utf_16,r_utf_16_lo(hi,d[8],1,0),bcount,d)}
    function decode_utf_16le_lo(v,d)
     {if(659980059 <= v[1])return ret(decode_utf_16,v,2,d);
      var hi=v[2],rem=i_rem(d);
      if(2 <= rem)
       {var j=d[6];
        d[6] = d[6] + 2 | 0;
        return ret(decode_utf_16,r_utf_16_lo(hi,d[5],j + 1 | 0,j),4,d)}
      t_need(d,2);
      return t_fill(function(_ao_){return t_decode_utf_16_lo(hi,_ao_)},d)}
    function t_decode_utf_16(d)
     {if(d[9] < d[10])
       {var _an_=d[9];return ret(decode_utf_16,malformed(d[8],0,d[9]),_an_,d)}
      return decode_utf_16le_lo(r_utf_16(d[8],1,0),d)}
    function decode_utf_16(d)
     {var rem=i_rem(d);
      if(0 < rem)
       {if(2 <= rem)
         {var j=d[6];
          d[6] = d[6] + 2 | 0;
          return decode_utf_16le_lo(r_utf_16(d[5],j + 1 | 0,j),d)}
        t_need(d,2);
        return t_fill(t_decode_utf_16,d)}
      return 0 <= rem?refill(decode_utf_16,d):3455931}
    function guessed_utf_16(d,be,v)
     {if(be)
       var
        j1=1,
        j0=0,
        t_decode_utf_16_lo$0=t_decode_utf_16be_lo,
        t_decode_utf_16$0=t_decode_utf_16be,
        decode_utf_16$0=decode_utf_16be;
      else
       var
        j1=0,
        j0=1,
        t_decode_utf_16_lo$0=t_decode_utf_16_lo,
        t_decode_utf_16$0=t_decode_utf_16,
        decode_utf_16$0=decode_utf_16;
      function b3(k,d)
       {return 3 <= d[9]
                ?(d[10]
                  =
                  2,
                  d[9]
                  =
                  1,
                  unsafe_set_byte(d[8],0,caml_bytes_unsafe_get(d[8],2)),
                  t_fill(k,d))
                :decode_utf_16$0(d)}
      if(typeof v === "number")
       {if(427938126 <= v)
         {var v$0=r_utf_16(d[8],j0,j1);
          if(659980059 <= v$0[1])
           {var _ad_=2;
            return ret
                    (function(_am_){return b3(t_decode_utf_16$0,_am_)},
                     v$0,
                     _ad_,
                     d)}
          var hi=v$0[2];
          if(3 <= d[9])
           return b3(function(_al_){return t_decode_utf_16_lo$0(hi,_al_)},d);
          var _ae_=d[9];
          return ret
                  (decode_utf_16$0,
                   malformed_pair(be,hi,Stdlib_bytes[3],0,0),
                   _ae_,
                   d)}
        var _af_=2,_ag_=[0,852405675,u_bom];
        return ret
                (function(_ak_){return b3(t_decode_utf_16$0,_ak_)},
                 _ag_,
                 _af_,
                 d)}
      var u=v[2],_ah_=2,_ai_=[0,852405675,caml_call1(Stdlib_uchar[9],u)];
      return ret
              (function(_aj_){return b3(t_decode_utf_16$0,_aj_)},_ai_,_ah_,d)}
    function k(d)
     {function setup(d)
       {var match=r_encoding(d[8],0,d[9]),_ac_=match[1];
        if(-211555818 === _ac_)
         {var r=match[2];
          d[2] = -211555818;
          d[18] = decode_utf_16;
          return guessed_utf_16(d,0,r)}
        if(684370880 <= _ac_)
         {var r$0=match[2];
          d[2] = 684370880;
          d[18] = decode_utf_8;
          if(3455931 === r$0)return 3455931;
          if(427938126 <= r$0)
           {var
             b3=
              function(d)
               {var
                 b3=caml_bytes_unsafe_get(d[8],2),
                 n=caml_check_bound(utf_8_len,b3)[1 + b3];
                return 0 === n
                        ?ret(decode_utf_8,malformed(d[8],2,1),1,d)
                        :(d[10]
                          =
                          n,
                          d[9]
                          =
                          1,
                          unsafe_set_byte(d[8],0,b3),
                          t_fill(t_decode_utf_8,d))},
             b2=
              function(d)
               {var
                 b2=caml_bytes_unsafe_get(d[8],1),
                 b3$0=2 < d[9]?b3:decode_utf_8,
                 n=caml_check_bound(utf_8_len,b2)[1 + b2];
                if(0 === n)return ret(b3$0,malformed(d[8],1,1),1,d);
                if(1 === n)return ret(b3$0,r_utf_8(d[8],1,1),1,d);
                d[10] = n;
                unsafe_set_byte(d[8],0,b2);
                if(3 <= d[9])
                 {d[9] = 2;
                  unsafe_set_byte(d[8],1,caml_bytes_unsafe_get(d[8],2))}
                else
                 d[9] = 1;
                return t_fill(t_decode_utf_8,d)},
             b1=caml_bytes_unsafe_get(d[8],0),
             b2$0=1 < d[9]?b2:decode_utf_8,
             n=caml_check_bound(utf_8_len,b1)[1 + b1];
            if(4 < n >>> 0)throw [0,Assert_failure,_B_];
            switch(n)
             {case 0:return ret(b2$0,malformed(d[8],0,1),1,d);
              case 1:return ret(b2$0,r_utf_8(d[8],0,1),1,d);
              case 2:
               return 2 <= d[9]
                       ?3 <= d[9]
                         ?ret(b3,r_utf_8(d[8],0,2),2,d)
                         :ret(decode_utf_8,r_utf_8(d[8],0,2),2,d)
                       :ret(decode_utf_8,malformed(d[8],0,1),1,d);
              case 3:
               if(3 <= d[9])return ret(decode_utf_8,r_utf_8(d[8],0,3),3,d);
               var _aa_=d[9];
               return ret(decode_utf_8,malformed(d[8],0,d[9]),_aa_,d);
              default:
               if(3 <= d[9]){d[10] = 4;return t_fill(t_decode_utf_8,d)}
               var _ab_=d[9];
               return ret(decode_utf_8,malformed(d[8],0,d[9]),_ab_,d)}}
          return ret(decode_utf_8,[0,852405675,u_bom],3,d)}
        var r$1=match[2];
        d[2] = -211558048;
        d[18] = decode_utf_16be;
        return guessed_utf_16(d,1,r$1)}
      t_need(d,3);
      return t_fill(setup,d)}
    function nline(d){d[14] = 0;d[13] = d[13] + 1 | 0;return 0}
    function ncol(d){d[14] = d[14] + 1 | 0;return 0}
    function ncount(d){d[16] = d[16] + 1 | 0;return 0}
    function cr(d,b){d[12] = b;return 0}
    function pp(d,v)
     {if(852405675 <= v[1])
       {var
         u=v[2],
         match=caml_call1(Stdlib_uchar[10],u),
         _$_=match - 133 | 0,
         switch$0=0;
        if(8100 < _$_ >>> 0)
         {var switcher=_$_ + 123 | 0;
          if(! (3 < switcher >>> 0))
           switch(switcher)
            {case 0:
              var last_cr=d[12];
              cr(d,0);
              ncount(d);
              return last_cr?v:(nline(d),v);
             case 1:break;
             case 2:switch$0 = 1;break;
             default:cr(d,1);ncount(d);nline(d);return v}}
        else
         if(8097 < (_$_ - 1 | 0) >>> 0)switch$0 = 1;
        return switch$0
                ?(cr(d,0),ncount(d),nline(d),v)
                :(cr(d,0),ncount(d),ncol(d),v)}
      cr(d,0);
      ncount(d);
      ncol(d);
      return v}
    function pp_nln_readline(d,v)
     {if(852405675 <= v[1])
       {var
         u=v[2],
         match=caml_call1(Stdlib_uchar[10],u),
         ___=match - 133 | 0,
         switch$0=0;
        if(8100 < ___ >>> 0)
         {var switcher=___ + 123 | 0;
          if(! (3 < switcher >>> 0))
           switch(switcher)
            {case 0:
              var last_cr=d[12];
              cr(d,0);
              return last_cr
                      ?caml_call1(d[18],d)
                      :(ncount(d),nline(d),[0,852405675,d[4]]);
             case 1:break;
             case 2:switch$0 = 1;break;
             default:cr(d,1);ncount(d);nline(d);return [0,852405675,d[4]]}}
        else
         if(8097 < (___ - 1 | 0) >>> 0)switch$0 = 1;
        return switch$0
                ?(cr(d,0),ncount(d),nline(d),[0,852405675,d[4]])
                :(cr(d,0),ncount(d),ncol(d),v)}
      cr(d,0);
      ncount(d);
      ncol(d);
      return v}
    function pp_nln_nlf(d,v)
     {if(852405675 <= v[1])
       {var u=v[2],match=caml_call1(Stdlib_uchar[10],u),switch$0=0;
        if(14 <= match)
         {if(8232 <= match)
           {if(! (8234 <= match))switch$0 = 1}
          else
           if(133 === match)
            {cr(d,0);ncount(d);nline(d);return [0,852405675,d[4]]}}
        else
         if(10 <= match)
          {var switcher=match - 10 | 0;
           switch(switcher)
            {case 0:
              var last_cr=d[12];
              cr(d,0);
              return last_cr
                      ?caml_call1(d[18],d)
                      :(ncount(d),nline(d),[0,852405675,d[4]]);
             case 1:break;
             case 2:switch$0 = 1;break;
             default:cr(d,1);ncount(d);nline(d);return [0,852405675,d[4]]}}
        return switch$0
                ?(cr(d,0),ncount(d),nline(d),v)
                :(cr(d,0),ncount(d),ncol(d),v)}
      cr(d,0);
      ncount(d);
      ncol(d);
      return v}
    function pp_nln_ascii(d,v)
     {if(852405675 <= v[1])
       {var
         u=v[2],
         match=caml_call1(Stdlib_uchar[10],u),
         _Z_=match - 133 | 0,
         switch$0=0;
        if(8100 < _Z_ >>> 0)
         {var switcher=_Z_ + 123 | 0;
          if(! (3 < switcher >>> 0))
           switch(switcher)
            {case 0:
              var last_cr=d[12];
              cr(d,0);
              return last_cr
                      ?caml_call1(d[18],d)
                      :(ncount(d),nline(d),[0,852405675,d[4]]);
             case 1:break;
             case 2:switch$0 = 1;break;
             default:cr(d,1);ncount(d);nline(d);return [0,852405675,d[4]]}}
        else
         if(8097 < (_Z_ - 1 | 0) >>> 0)switch$0 = 1;
        return switch$0
                ?(cr(d,0),ncount(d),nline(d),v)
                :(cr(d,0),ncount(d),ncol(d),v)}
      cr(d,0);
      ncount(d);
      ncol(d);
      return v}
    function decode_fun(param)
     {return 143365725 <= param
              ?423112016 <= param
                ?684370880 <= param?decode_utf_8:decode_us_ascii
                :338302576 <= param?decode_iso_8859_1:decode_utf_16be
              :-211555818 <= param?decode_utf_16:decode_utf_16be}
    function decoder(nln,encoding,src)
     {if(nln)
       {var _X_=nln[1],_Y_=_X_[1];
        if(3895880 === _Y_)
         var nl=_X_[2],nl$0=nl,pp$0=pp_nln_nlf;
        else
         if(605782321 <= _Y_)
          var nl$1=_X_[2],nl$0=nl$1,pp$0=pp_nln_ascii;
         else
          var nl$2=_X_[2],nl$0=nl$2,pp$0=pp_nln_readline}
      else
       var nl$3=caml_call1(Stdlib_uchar[9],10),nl$0=nl$3,pp$0=pp;
      if(encoding)
       var e=encoding[1],k$0=decode_fun(e),encoding$0=e;
      else
       var k$0=k,encoding$0=684370880;
      if(typeof src === "number")
       var i_max=0,i_pos=1,i=Stdlib_bytes[3];
      else
       if(438511779 <= src[1])
        var i_max=0,i_pos=1,i=caml_create_bytes(65536);
       else
        var
         s=src[2],
         i_max$0=caml_ml_string_length(s) - 1 | 0,
         i$0=caml_call1(Stdlib_bytes[43],s),
         i_max=i_max$0,
         i_pos=0,
         i=i$0;
      var utf16=143365725 === encoding$0?1:0;
      return [0,
              src,
              encoding$0,
              nln,
              nl$0,
              i,
              i_pos,
              i_max,
              caml_create_bytes(4),
              0,
              0,
              0,
              0,
              1,
              0,
              0,
              0,
              function(d,v)
               {if(852405675 <= v[1])
                 {var u=v[2],match=caml_call1(Stdlib_uchar[10],u);
                  if(65279 === match)
                   {if(utf16){d[2] = -211558048;d[18] = decode_utf_16be}
                    d[11] = 1;
                    d[17] = pp$0;
                    return caml_call1(d[18],d)}
                  if(65534 === match && utf16)
                   {d[2] = -211555818;
                    d[18] = decode_utf_16;
                    d[11] = 1;
                    d[17] = pp$0;
                    return caml_call1(d[18],d)}
                  d[11] = 0;
                  d[17] = pp$0;
                  return caml_call2(d[17],d,v)}
                d[11] = 0;
                d[17] = pp$0;
                return caml_call2(d[17],d,v)},
              k$0]}
    function decode(d){return caml_call1(d[18],d)}
    function decoder_line(d){return d[13]}
    function decoder_col(d){return d[14]}
    function decoder_byte_count(d){return d[15]}
    function decoder_count(d){return d[16]}
    function decoder_removed_bom(d){return d[11]}
    function decoder_src(d){return d[1]}
    function decoder_nln(d){return d[3]}
    function decoder_encoding(d){return d[2]}
    function set_decoder_encoding(d,e)
     {d[2] = e;d[18] = decode_fun(e);return 0}
    function o_rem(e){return (e[5] - e[4] | 0) + 1 | 0}
    function dst(e,s,j,l)
     {var _U_=j < 0?1:0;
      if(_U_)
       var _V_=_U_;
      else
       var
        _W_=l < 0?1:0,
        _V_=_W_ || (caml_ml_bytes_length(s) < (j + l | 0)?1:0);
      if(_V_)invalid_bounds(j,l);
      e[3] = s;
      e[4] = j;
      e[5] = (j + l | 0) - 1 | 0;
      return 0}
    function flush(k,e)
     {var _T_=e[1];
      if(typeof _T_ === "number")
       {e[9]
        =
        function(e,param)
         {if(typeof param === "number" && 1006505782 <= param)
           return caml_call1(k,e);
          return caml_call1(Stdlib[1],cst_expected_Await_encode)};
        return 939392865}
      if(438511779 <= _T_[1])
       {var oc=_T_[2];
        caml_call4(Stdlib[68],oc,e[3],0,e[4]);
        e[4] = 0;
        return caml_call1(k,e)}
      var b=_T_[2],o=caml_call1(Stdlib_bytes[42],e[3]);
      caml_call4(Stdlib_buffer[16],b,o,0,e[4]);
      e[4] = 0;
      return caml_call1(k,e)}
    function t_range(e,max){e[7] = 0;e[8] = max;return 0}
    function t_flush(k,e)
     {function blit(e,l)
       {caml_blit_bytes(e[6],e[7],e[3],e[4],l);
        e[4] = e[4] + l | 0;
        e[7] = e[7] + l | 0;
        return 0}
      var rem=o_rem(e),len=(e[8] - e[7] | 0) + 1 | 0;
      return rem < len
              ?(blit(e,rem),flush(function(_S_){return t_flush(k,_S_)},e))
              :(blit(e,len),caml_call1(k,e))}
    function encode_utf_8(e,v)
     {function k(e){e[9] = encode_utf_8;return 17724}
      if(typeof v === "number")return 1006505782 <= v?k(e):flush(k,e);
      var u=v[2],u$0=caml_call1(Stdlib_uchar[10],u),rem=o_rem(e);
      if(127 < u$0)
       {if(2047 < u$0)
         {if(65535 < u$0)
           {if(4 <= rem)
             {var j=e[4];e[4] = e[4] + 4 | 0;var k$0=k,j$0=j,s=e[3]}
            else
             {t_range(e,3);
              var
               _M_=function(_R_){return t_flush(k,_R_)},
               k$0=_M_,
               j$0=0,
               s=e[6]}
            unsafe_set_byte(s,j$0,240 | u$0 >>> 18 | 0);
            unsafe_set_byte(s,j$0 + 1 | 0,128 | (u$0 >>> 12 | 0) & 63);
            unsafe_set_byte(s,j$0 + 2 | 0,128 | (u$0 >>> 6 | 0) & 63);
            unsafe_set_byte(s,j$0 + 3 | 0,128 | u$0 & 63);
            return k$0(e)}
          if(3 <= rem)
           {var j$1=e[4];e[4] = e[4] + 3 | 0;var k$1=k,j$2=j$1,s$0=e[3]}
          else
           {t_range(e,2);
            var
             _N_=function(_Q_){return t_flush(k,_Q_)},
             k$1=_N_,
             j$2=0,
             s$0=e[6]}
          unsafe_set_byte(s$0,j$2,224 | u$0 >>> 12 | 0);
          unsafe_set_byte(s$0,j$2 + 1 | 0,128 | (u$0 >>> 6 | 0) & 63);
          unsafe_set_byte(s$0,j$2 + 2 | 0,128 | u$0 & 63);
          return k$1(e)}
        if(2 <= rem)
         {var j$3=e[4];e[4] = e[4] + 2 | 0;var k$2=k,j$4=j$3,s$1=e[3]}
        else
         {t_range(e,1);
          var _O_=function(_P_){return t_flush(k,_P_)},k$2=_O_,j$4=0,s$1=e[6]}
        unsafe_set_byte(s$1,j$4,192 | u$0 >>> 6 | 0);
        unsafe_set_byte(s$1,j$4 + 1 | 0,128 | u$0 & 63);
        return k$2(e)}
      return 1 <= rem
              ?(unsafe_set_byte(e[3],e[4],u$0),e[4] = e[4] + 1 | 0,k(e))
              :flush(function(e){return encode_utf_8(e,v)},e)}
    function encode_utf_16be(e,v)
     {function k(e){e[9] = encode_utf_16be;return 17724}
      if(typeof v === "number")return 1006505782 <= v?k(e):flush(k,e);
      var u=v[2],u$0=caml_call1(Stdlib_uchar[10],u),rem=o_rem(e);
      if(65536 <= u$0)
       {if(4 <= rem)
         {var j=e[4];e[4] = e[4] + 4 | 0;var k$0=k,j$0=j,s=e[3]}
        else
         {t_range(e,3);
          var _I_=function(_L_){return t_flush(k,_L_)},k$0=_I_,j$0=0,s=e[6]}
        var
         u$1=u$0 - 65536 | 0,
         hi=55296 | u$1 >>> 10 | 0,
         lo=56320 | u$1 & 1023;
        unsafe_set_byte(s,j$0,hi >>> 8 | 0);
        unsafe_set_byte(s,j$0 + 1 | 0,hi & 255);
        unsafe_set_byte(s,j$0 + 2 | 0,lo >>> 8 | 0);
        unsafe_set_byte(s,j$0 + 3 | 0,lo & 255);
        return k$0(e)}
      if(2 <= rem)
       {var j$1=e[4];e[4] = e[4] + 2 | 0;var k$1=k,j$2=j$1,s$0=e[3]}
      else
       {t_range(e,1);
        var _J_=function(_K_){return t_flush(k,_K_)},k$1=_J_,j$2=0,s$0=e[6]}
      unsafe_set_byte(s$0,j$2,u$0 >>> 8 | 0);
      unsafe_set_byte(s$0,j$2 + 1 | 0,u$0 & 255);
      return k$1(e)}
    function encode_utf_16le(e,v)
     {function k(e){e[9] = encode_utf_16le;return 17724}
      if(typeof v === "number")return 1006505782 <= v?k(e):flush(k,e);
      var u=v[2],u$0=caml_call1(Stdlib_uchar[10],u),rem=o_rem(e);
      if(65536 <= u$0)
       {if(4 <= rem)
         {var j=e[4];e[4] = e[4] + 4 | 0;var k$0=k,j$0=j,s=e[3]}
        else
         {t_range(e,3);
          var _E_=function(_H_){return t_flush(k,_H_)},k$0=_E_,j$0=0,s=e[6]}
        var
         u$1=u$0 - 65536 | 0,
         hi=55296 | u$1 >>> 10 | 0,
         lo=56320 | u$1 & 1023;
        unsafe_set_byte(s,j$0,hi & 255);
        unsafe_set_byte(s,j$0 + 1 | 0,hi >>> 8 | 0);
        unsafe_set_byte(s,j$0 + 2 | 0,lo & 255);
        unsafe_set_byte(s,j$0 + 3 | 0,lo >>> 8 | 0);
        return k$0(e)}
      if(2 <= rem)
       {var j$1=e[4];e[4] = e[4] + 2 | 0;var k$1=k,j$2=j$1,s$0=e[3]}
      else
       {t_range(e,1);
        var _F_=function(_G_){return t_flush(k,_G_)},k$1=_F_,j$2=0,s$0=e[6]}
      unsafe_set_byte(s$0,j$2,u$0 & 255);
      unsafe_set_byte(s$0,j$2 + 1 | 0,u$0 >>> 8 | 0);
      return k$1(e)}
    function encoder(encoding,dst)
     {if(typeof dst === "number")
       var o_max=0,o_pos=1,o=Stdlib_bytes[3];
      else
       var o$0=caml_create_bytes(65536),o_max=65535,o_pos=0,o=o$0;
      var
       _D_=
        143365725 <= encoding
         ?684370880 <= encoding?encode_utf_8:encode_utf_16be
         :-211555818 <= encoding?encode_utf_16le:encode_utf_16be;
      return [0,dst,encoding,o,o_pos,o_max,caml_create_bytes(4),1,0,_D_]}
    function encode(e,v){return caml_call2(e[9],e,v)}
    function encoder_encoding(e){return e[2]}
    function encoder_dst(e){return e[1]}
    var Manual=[0,src,dst,o_rem];
    function encoding_guess(s)
     {var
       s$0=caml_call1(Stdlib_bytes[43],s),
       match=
        r_encoding(s$0,0,caml_call2(Stdlib[17],caml_ml_bytes_length(s$0),3)),
       _C_=match[1];
      if(-211555818 === _C_)
       {var d=match[2];return [0,-211555818,3299808 === d?1:0]}
      if(684370880 <= _C_)
       {var d$0=match[2];return [0,684370880,3299808 === d$0?1:0]}
      var d$1=match[2];
      return [0,-211558048,3299808 === d$1?1:0]}
    function fold_utf_8(opt,len,f,acc,s)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if(len)
       var l=len[1],len$0=l;
      else
       var len$0=caml_ml_string_length(s) - pos | 0;
      var
       last=(pos + len$0 | 0) - 1 | 0,
       s$0=caml_call1(Stdlib_bytes[43],s),
       acc$0=acc,
       i=pos;
      for(;;)
       {if(last < i)return acc$0;
        var need=utf_8_len[1 + caml_bytes_unsafe_get(s$0,i)];
        if(0 === need)
         {var
           i$0=i + 1 | 0,
           acc$1=caml_call3(f,acc$0,i,malformed(s$0,i,1)),
           acc$0=acc$1,
           i=i$0;
          continue}
        var rem=(last - i | 0) + 1 | 0;
        if(rem < need)return caml_call3(f,acc$0,i,malformed(s$0,i,rem));
        var
         i$1=i + need | 0,
         acc$2=caml_call3(f,acc$0,i,r_utf_8(s$0,i,need)),
         acc$0=acc$2,
         i=i$1;
        continue}}
    function fold_utf_16be(opt,len,f,acc,s)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if(len)
       var l=len[1],len$0=l;
      else
       var len$0=caml_ml_string_length(s) - pos | 0;
      var
       last=(pos + len$0 | 0) - 1 | 0,
       s$0=caml_call1(Stdlib_bytes[43],s),
       acc$0=acc,
       i=pos;
      for(;;)
       {if(last < i)return acc$0;
        var rem=(last - i | 0) + 1 | 0;
        if(2 <= rem)
         {var v=r_utf_16(s$0,i,i + 1 | 0);
          if(659980059 <= v[1])
           {var i$0=i + 2 | 0,acc$1=caml_call3(f,acc$0,i,v),acc$0=acc$1,i=i$0;
            continue}
          var hi=v[2];
          if(4 <= rem)
           {var
             i$1=i + 4 | 0,
             acc$2=
              caml_call3(f,acc$0,i,r_utf_16_lo(hi,s$0,i + 2 | 0,i + 3 | 0)),
             acc$0=acc$2,
             i=i$1;
            continue}
          return caml_call3(f,acc$0,i,malformed(s$0,i,rem))}
        return caml_call3(f,acc$0,i,malformed(s$0,i,1))}}
    function fold_utf_16le(opt,len,f,acc,s)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      if(len)
       var l=len[1],len$0=l;
      else
       var len$0=caml_ml_string_length(s) - pos | 0;
      var
       last=(pos + len$0 | 0) - 1 | 0,
       s$0=caml_call1(Stdlib_bytes[43],s),
       acc$0=acc,
       i=pos;
      for(;;)
       {if(last < i)return acc$0;
        var rem=(last - i | 0) + 1 | 0;
        if(2 <= rem)
         {var v=r_utf_16(s$0,i + 1 | 0,i);
          if(659980059 <= v[1])
           {var i$0=i + 2 | 0,acc$1=caml_call3(f,acc$0,i,v),acc$0=acc$1,i=i$0;
            continue}
          var hi=v[2];
          if(4 <= rem)
           {var
             i$1=i + 4 | 0,
             acc$2=
              caml_call3(f,acc$0,i,r_utf_16_lo(hi,s$0,i + 3 | 0,i + 2 | 0)),
             acc$0=acc$2,
             i=i$1;
            continue}
          return caml_call3(f,acc$0,i,malformed(s$0,i,rem))}
        return caml_call3(f,acc$0,i,malformed(s$0,i,1))}}
    var String=[0,encoding_guess,fold_utf_8,fold_utf_16be,fold_utf_16le];
    function add_utf_8(b,u)
     {var u$0=caml_call1(Stdlib_uchar[10],u);
      function w(byte$0){return caml_call2(Stdlib_buffer[10],b,byte$0)}
      return 127 < u$0
              ?2047 < u$0
                ?65535 < u$0
                  ?(w(240 | u$0 >>> 18 | 0),
                    w(128 | (u$0 >>> 12 | 0) & 63),
                    w(128 | (u$0 >>> 6 | 0) & 63),
                    w(128 | u$0 & 63))
                  :(w(224 | u$0 >>> 12 | 0),
                    w(128 | (u$0 >>> 6 | 0) & 63),
                    w(128 | u$0 & 63))
                :(w(192 | u$0 >>> 6 | 0),w(128 | u$0 & 63))
              :w(u$0)}
    function add_utf_16be(b,u)
     {var u$0=caml_call1(Stdlib_uchar[10],u);
      function w(byte$0){return caml_call2(Stdlib_buffer[10],b,byte$0)}
      if(65536 <= u$0)
       {var
         u$1=u$0 - 65536 | 0,
         hi=55296 | u$1 >>> 10 | 0,
         lo=56320 | u$1 & 1023;
        w(hi >>> 8 | 0);
        w(hi & 255);
        w(lo >>> 8 | 0);
        return w(lo & 255)}
      w(u$0 >>> 8 | 0);
      return w(u$0 & 255)}
    function add_utf_16le(b,u)
     {var u$0=caml_call1(Stdlib_uchar[10],u);
      function w(byte$0){return caml_call2(Stdlib_buffer[10],b,byte$0)}
      if(65536 <= u$0)
       {var
         u$1=u$0 - 65536 | 0,
         hi=55296 | u$1 >>> 10 | 0,
         lo=56320 | u$1 & 1023;
        w(hi & 255);
        w(hi >>> 8 | 0);
        w(lo & 255);
        return w(lo >>> 8 | 0)}
      w(u$0 & 255);
      return w(u$0 >>> 8 | 0)}
    var
     Buffer=[0,add_utf_8,add_utf_16be,add_utf_16le],
     Uutf=
      [0,
       u_bom,
       u_rep,
       encoding_of_string,
       encoding_to_string,
       decoder,
       decode,
       decoder_encoding,
       set_decoder_encoding,
       decoder_line,
       decoder_col,
       decoder_byte_count,
       decoder_count,
       decoder_removed_bom,
       decoder_src,
       decoder_nln,
       pp_decode,
       encoder,
       encode,
       encoder_encoding,
       encoder_dst,
       Manual,
       String,
       Buffer];
    runtime.caml_register_global(66,Uutf,"Uutf");
    return}
  (function(){return this}()));


//# 1 "../../.js/jsonm/jsonm.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_false=caml_string_of_jsbytes("false"),
     cst_null=caml_string_of_jsbytes("null"),
     cst_true=caml_string_of_jsbytes("true"),
     cst_u00=caml_string_of_jsbytes("\\u00"),
     cst$0=caml_string_of_jsbytes("\\\\"),
     cst=caml_string_of_jsbytes('\\"'),
     cst_n=caml_string_of_jsbytes("\\n"),
     cst$1=caml_string_of_jsbytes("//"),
     cst$2=caml_string_of_jsbytes("*/"),
     cst$3=caml_string_of_jsbytes("/*"),
     cst_null$0=caml_string_of_jsbytes("null"),
     cst_true$0=caml_string_of_jsbytes("true"),
     cst_false$0=caml_string_of_jsbytes("false"),
     cst_Lexeme_Ae=caml_string_of_jsbytes("`Lexeme `Ae"),
     cst_Lexeme_Oe=caml_string_of_jsbytes("`Lexeme `Oe"),
     cst_Lexeme_Null_Bool_Float_Str=
      caml_string_of_jsbytes
       ("`Lexeme (`Null | `Bool _ | `Float _ | `String _ | `As | `Os)"),
     cst_Lexeme_Name_Oe=caml_string_of_jsbytes("`Lexeme (`Name _ | `Oe)"),
     cst_any_Lexeme_but_Name_or_Oe=
      caml_string_of_jsbytes("any `Lexeme but `Name or `Oe"),
     cst_any_Lexeme_but_Name_Oe_or_=
      caml_string_of_jsbytes("any `Lexeme but `Name, `Oe or `Ae"),
     cst_End=caml_string_of_jsbytes("`End"),
     cst_Await=caml_string_of_jsbytes("`Await"),
     partial=
      [17,
       [0,caml_string_of_jsbytes("@ "),1,0],
       [11,caml_string_of_jsbytes("stream"),[17,0,0]]],
     partial$0=[17,[0,caml_string_of_jsbytes("@ "),1,0],[12,40,0]],
     partial$1=
      [11,
       caml_string_of_jsbytes("('\"'"),
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,
         caml_string_of_jsbytes("or"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,caml_string_of_jsbytes("'}')"),[17,0,0]]]]]],
     partial$2=[0,caml_string_of_jsbytes("@ "),1,0],
     partial$3=
      [11,
       caml_string_of_jsbytes("(','"),
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,
         caml_string_of_jsbytes("or"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,caml_string_of_jsbytes("'}')"),[17,0,0]]]]]],
     partial$4=[0,caml_string_of_jsbytes("@ "),1,0],
     partial$5=
      [11,
       caml_string_of_jsbytes("or"),
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,caml_string_of_jsbytes("']')"),[17,0,0]]]],
     partial$6=[0,caml_string_of_jsbytes("@ "),1,0],
     partial$7=
      [11,
       caml_string_of_jsbytes("(','"),
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,
         caml_string_of_jsbytes("or"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,caml_string_of_jsbytes("']')"),[17,0,0]]]]]],
     partial$8=[0,caml_string_of_jsbytes("@ "),1,0],
     partial$9=
      [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,40,[15,[12,41,[17,0,0]]]]],
     err_bom=[0,106380200,-543455433],
     err_unclosed_comment=[0,106380200,[0,-364210971,-826170817]],
     err_unclosed_string=[0,106380200,[0,-364210971,-976970511]],
     err_unclosed_arr=[0,106380200,[0,-364210971,14610]],
     err_unclosed_obj=[0,106380200,[0,-364210971,17732]],
     err_exp_comment=[0,106380200,[0,434236056,-826170817]],
     err_exp_value=[0,106380200,[0,434236056,-991563951]],
     err_exp_name=[0,106380200,[0,434236056,869834347]],
     err_exp_nsep=[0,106380200,[0,434236056,713199754]],
     err_exp_arr_fst=[0,106380200,[0,434236056,[0,726711616,1]]],
     err_exp_arr_nxt=[0,106380200,[0,434236056,[0,726711616,0]]],
     err_exp_obj_fst=[0,106380200,[0,434236056,[0,881518886,1]]],
     err_exp_obj_nxt=[0,106380200,[0,434236056,[0,881518886,0]]],
     err_exp_json=[0,106380200,[0,434236056,826371656]],
     err_exp_eoi=[0,106380200,[0,434236056,3456159]],
     Uutf=global_data.Uutf,
     Stdlib_uchar=global_data.Stdlib__uchar,
     Stdlib=global_data.Stdlib,
     Assert_failure=global_data.Assert_failure,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_format=global_data.Stdlib__format,
     _a_=Stdlib_format[123],
     _$_=[0,-633954146,[0,737456202,1]],
     _aa_=[0,-633954146,870828711],
     _ab_=[0,-633954146,[0,737456202,0]],
     _ad_=[0,-633954146,14610],
     _ac_=[0,-633954146,17732],
     _ag_=[0,caml_string_of_jsbytes("src/jsonm.ml"),398,27],
     _ak_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _aj_=
      [0,
       [15,[11,caml_string_of_jsbytes(" encoded but expected "),[2,0,0]]],
       caml_string_of_jsbytes("%a encoded but expected %s")],
     _ai_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid bounds (index "),
        [4,0,0,0,[11,caml_string_of_jsbytes(", length "),[4,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes("invalid bounds (index %d, length %d)")],
     _ah_=[0,caml_string_of_jsbytes("src/jsonm.ml"),404,29],
     _af_=[0,-633954146,17718],
     _ae_=[0,-633954146,14596],
     ___=[0,caml_string_of_jsbytes("src/jsonm.ml"),212,8],
     _Z_=[0,caml_string_of_jsbytes("src/jsonm.ml"),205,45],
     _W_=[0,[11,caml_string_of_jsbytes("`S"),0],caml_string_of_jsbytes("`S")],
     _X_=[0,[11,caml_string_of_jsbytes("`M"),0],caml_string_of_jsbytes("`M")],
     _R_=
      [0,
       [11,caml_string_of_jsbytes("`Await"),0],
       caml_string_of_jsbytes("`Await")],
     _S_=
      [0,[11,caml_string_of_jsbytes("`End"),0],caml_string_of_jsbytes("`End")],
     _T_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("`Error "),
         [18,
          [1,[0,0,caml_string_of_jsbytes("")]],
          [12,40,[15,[12,41,[17,0,[17,0,0]]]]]]]],
       caml_string_of_jsbytes("@[`Error @[(%a)@]@]")],
     _U_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("`White "),
         [18,[1,[0,0,caml_string_of_jsbytes("")]],[3,0,[17,0,[17,0,0]]]]]],
       caml_string_of_jsbytes("@[`White @[%S@]@]")],
     _V_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("`Lexeme "),
         [18,
          [1,[0,0,caml_string_of_jsbytes("")]],
          [12,40,[15,[12,41,[17,0,[17,0,0]]]]]]]],
       caml_string_of_jsbytes("@[`Lexeme @[(%a)@]@]")],
     _Y_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("`Comment "),
         [18,
          [1,[0,0,caml_string_of_jsbytes("")]],
          [12,
           40,
           [15,
            [11,caml_string_of_jsbytes(", "),[3,0,[12,41,[17,0,[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes("@[`Comment @[(%a, %S)@]@]")],
     _n_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("illegal"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,
           caml_string_of_jsbytes("initial"),
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [11,
             caml_string_of_jsbytes("BOM"),
             [17,
              [0,caml_string_of_jsbytes("@ "),1,0],
              [11,
               caml_string_of_jsbytes("in"),
               [17,
                [0,caml_string_of_jsbytes("@ "),1,0],
                [11,caml_string_of_jsbytes("character"),partial]]]]]]]]]],
       caml_string_of_jsbytes
        ("@[illegal@ initial@ BOM@ in@ character@ stream@]")],
     _o_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("illegal"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,
           caml_string_of_jsbytes("escape,"),
           [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]]],
       caml_string_of_jsbytes("@[illegal@ escape,@ ")],
     _q_=
      [0,
       [15,
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("not"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,
            caml_string_of_jsbytes("an"),
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("escaped"),
              [17,
               [0,caml_string_of_jsbytes("@ "),1,0],
               [11,caml_string_of_jsbytes("character"),[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes("%a@ not@ an@ escaped@ character@]")],
     _r_=
      [0,
       [15,
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("lone"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,
            caml_string_of_jsbytes("low"),
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,caml_string_of_jsbytes("surrogate"),[17,0,0]]]]]]]],
       caml_string_of_jsbytes("%a@ lone@ low@ surrogate@]")],
     _s_=
      [0,
       [15,
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("lone"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,
            caml_string_of_jsbytes("high"),
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,caml_string_of_jsbytes("surrogate"),[17,0,0]]]]]]]],
       caml_string_of_jsbytes("%a@ lone@ high@ surrogate@]")],
     _t_=
      [0,
       [15,
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("not"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [12,
            97,
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("hex"),
              [17,
               [0,caml_string_of_jsbytes("@ "),1,0],
               [11,caml_string_of_jsbytes("digit"),[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes("%a@ not@ a@ hex@ digit@]")],
     _p_=
      [0,
       [15,
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("not"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [12,
            97,
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("low"),
              [17,
               [0,caml_string_of_jsbytes("@ "),1,0],
               [11,caml_string_of_jsbytes("surrogate"),[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes("%a@ not@ a@ low@ surrogate@]")],
     _u_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("illegal"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,
           caml_string_of_jsbytes("bytes"),
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [11,
             caml_string_of_jsbytes("in"),
             [17,
              [0,caml_string_of_jsbytes("@ "),1,0],
              [11,
               caml_string_of_jsbytes("character"),
               [17,
                [0,caml_string_of_jsbytes("@ "),1,0],
                [11,caml_string_of_jsbytes("stream"),partial$0]]]]]]]]]],
       caml_string_of_jsbytes("@[illegal@ bytes@ in@ character@ stream@ (")],
     _v_=[0,[4,8,[0,2,2],0,0],caml_string_of_jsbytes("%02X")],
     _x_=[0,[12,32,[4,8,[0,2,2],0,0]],caml_string_of_jsbytes(" %02X")],
     _w_=[0,[12,41,[17,0,0]],caml_string_of_jsbytes(")@]")],
     _y_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("expected"),
         [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]],
       caml_string_of_jsbytes("@[expected@ ")],
     _z_=
      [0,
       [11,
        caml_string_of_jsbytes("member"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,caml_string_of_jsbytes("name"),[17,0,0]]]],
       caml_string_of_jsbytes("member@ name@]")],
     _A_=
      [0,
       [11,
        caml_string_of_jsbytes("JSON"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,caml_string_of_jsbytes("text (JSON value)"),[17,0,0]]]],
       caml_string_of_jsbytes("JSON@ text (JSON value)@]")],
     _B_=
      [0,
       [11,
        caml_string_of_jsbytes("name"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("separator"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,caml_string_of_jsbytes("(':')"),[17,0,0]]]]]],
       caml_string_of_jsbytes("name@ separator@ (':')@]")],
     _C_=
      [0,
       [11,
        caml_string_of_jsbytes("end"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("of"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,caml_string_of_jsbytes("input"),[17,0,0]]]]]],
       caml_string_of_jsbytes("end@ of@ input@]")],
     _D_=
      [0,
       [11,
        caml_string_of_jsbytes("JavaScript"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,caml_string_of_jsbytes("comment"),[17,0,0]]]],
       caml_string_of_jsbytes("JavaScript@ comment@]")],
     _E_=
      [0,
       [11,
        caml_string_of_jsbytes("JSON"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,caml_string_of_jsbytes("value"),[17,0,0]]]],
       caml_string_of_jsbytes("JSON@ value@]")],
     _F_=
      [0,
       [11,
        caml_string_of_jsbytes("member"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("name"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,
            caml_string_of_jsbytes("or"),
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("object"),
              [17,
               [0,caml_string_of_jsbytes("@ "),1,0],
               [11,caml_string_of_jsbytes("end"),[17,partial$2,partial$1]]]]]]]]]],
       caml_string_of_jsbytes
        ("member@ name@ or@ object@ end@ ('\"'@ or@ '}')@]")],
     _G_=
      [0,
       [11,
        caml_string_of_jsbytes("value"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("separator"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,
            caml_string_of_jsbytes("or"),
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("object"),
              [17,
               [0,caml_string_of_jsbytes("@ "),1,0],
               [11,caml_string_of_jsbytes("end"),[17,partial$4,partial$3]]]]]]]]]],
       caml_string_of_jsbytes
        ("value@ separator@ or@ object@ end@ (','@ or@ '}')@]")],
     _H_=
      [0,
       [11,
        caml_string_of_jsbytes("value"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("or"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,
            caml_string_of_jsbytes("array"),
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("end"),
              [17,
               [0,caml_string_of_jsbytes("@ "),1,0],
               [11,caml_string_of_jsbytes("(value"),[17,partial$6,partial$5]]]]]]]]]],
       caml_string_of_jsbytes("value@ or@ array@ end@ (value@ or@ ']')@]")],
     _I_=
      [0,
       [11,
        caml_string_of_jsbytes("value"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("separator"),
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,
            caml_string_of_jsbytes("or"),
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("array"),
              [17,
               [0,caml_string_of_jsbytes("@ "),1,0],
               [11,caml_string_of_jsbytes("end"),[17,partial$8,partial$7]]]]]]]]]],
       caml_string_of_jsbytes
        ("value@ separator@ or@ array@ end@ (','@ or@ ']')@]")],
     _J_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("illegal"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,
           caml_string_of_jsbytes("number"),
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [12,40,[2,0,[12,41,[17,0,0]]]]]]]]],
       caml_string_of_jsbytes("@[illegal@ number@ (%s)@]")],
     _P_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("illegal"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,
           caml_string_of_jsbytes("literal"),
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [12,40,[2,0,[12,41,[17,0,0]]]]]]]]],
       caml_string_of_jsbytes("@[illegal@ literal@ (%s)@]")],
     _Q_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("illegal"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,
           caml_string_of_jsbytes("character"),
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [11,
             caml_string_of_jsbytes("in"),
             [17,
              [0,caml_string_of_jsbytes("@ "),1,0],
              [11,
               caml_string_of_jsbytes("JSON"),
               [17,
                [0,caml_string_of_jsbytes("@ "),1,0],
                [11,caml_string_of_jsbytes("string"),partial$9]]]]]]]]]],
       caml_string_of_jsbytes
        ("@[illegal@ character@ in@ JSON@ string@ (%a)@]")],
     _K_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("unclosed"),
         [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]],
       caml_string_of_jsbytes("@[unclosed@ ")],
     _L_=
      [0,
       [11,caml_string_of_jsbytes("object"),[17,0,0]],
       caml_string_of_jsbytes("object@]")],
     _M_=
      [0,
       [11,caml_string_of_jsbytes("array"),[17,0,0]],
       caml_string_of_jsbytes("array@]")],
     _N_=
      [0,
       [11,caml_string_of_jsbytes("comment"),[17,0,0]],
       caml_string_of_jsbytes("comment@]")],
     _O_=
      [0,
       [11,caml_string_of_jsbytes("string"),[17,0,0]],
       caml_string_of_jsbytes("string@]")],
     _m_=
      [0,
       [12,39,[2,0,[11,caml_string_of_jsbytes("' ("),[15,[12,41,0]]]]],
       caml_string_of_jsbytes("'%s' (%a)")],
     _l_=
      [0,
       [11,caml_string_of_jsbytes("U+"),[4,8,[0,2,4],0,0]],
       caml_string_of_jsbytes("U+%04X")],
     _d_=
      [0,
       [11,caml_string_of_jsbytes("`Null"),0],
       caml_string_of_jsbytes("`Null")],
     _e_=
      [0,[11,caml_string_of_jsbytes("`Os"),0],caml_string_of_jsbytes("`Os")],
     _f_=
      [0,[11,caml_string_of_jsbytes("`Oe"),0],caml_string_of_jsbytes("`Oe")],
     _g_=
      [0,[11,caml_string_of_jsbytes("`Ae"),0],caml_string_of_jsbytes("`Ae")],
     _c_=
      [0,[11,caml_string_of_jsbytes("`As"),0],caml_string_of_jsbytes("`As")],
     _h_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,caml_string_of_jsbytes("`Name "),[3,0,[17,0,0]]]],
       caml_string_of_jsbytes("@[`Name %S@]")],
     _i_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,caml_string_of_jsbytes("`Bool "),[9,0,[17,0,0]]]],
       caml_string_of_jsbytes("@[`Bool %b@]")],
     _j_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,caml_string_of_jsbytes("`Float "),[2,0,[17,0,0]]]],
       caml_string_of_jsbytes("@[`Float %s@]")],
     _k_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,caml_string_of_jsbytes("`String "),[3,0,[17,0,0]]]],
       caml_string_of_jsbytes("@[`String %S@]")];
    function unsafe_blit(s,soff,d,doff)
     {var _dn_=caml_call1(Stdlib_bytes[43],s);
      return function(_do_)
       {return runtime.caml_blit_bytes(_dn_,soff,d,doff,_do_)}}
    function unsafe_set_byte(s,j,byte$0)
     {runtime.caml_bytes_unsafe_set(s,j,byte$0);return 0}
    var
     _b_=Stdlib[19],
     ux_soi=Stdlib[19] - 1 | 0,
     u_rep=caml_call1(Stdlib_uchar[10],Uutf[2]),
     u_nl=10,
     u_sp=32,
     u_quot=34,
     u_lbrack=91,
     u_rbrack=93,
     u_lbrace=123,
     u_rbrace=125,
     u_colon=58,
     u_comma=44,
     u_slash=47,
     u_bslash=92,
     u_times=42;
    function is_white(param)
     {var switch$0=0;
      if(11 <= param)
       {if(32 === param)switch$0 = 1}
      else
       if(9 <= param)switch$0 = 1;
      return switch$0?1:0}
    function is_val_sep(param)
     {var switch$0=0;
      if(44 <= param)
       {var _dm_=param - 45 | 0;
        if(79 < _dm_ >>> 0)
         {if(! (81 <= _dm_))switch$0 = 1}
        else
         if(48 === _dm_)switch$0 = 1}
      else
       if(11 <= param)
        {if(32 === param)switch$0 = 1}
       else
        if(9 <= param)switch$0 = 1;
      return switch$0?1:0}
    function pp_lexeme(ppf,param)
     {if(typeof param === "number")
       return 14610 === param
               ?caml_call2(_a_,ppf,_c_)
               :17732 <= param
                 ?870828711 <= param
                   ?caml_call2(_a_,ppf,_d_)
                   :caml_call2(_a_,ppf,_e_)
                 :17718 <= param
                   ?caml_call2(_a_,ppf,_f_)
                   :caml_call2(_a_,ppf,_g_);
      var _dl_=param[1];
      if(737456202 <= _dl_)
       {if(869834347 <= _dl_){var s=param[2];return caml_call3(_a_,ppf,_h_,s)}
        var b=param[2];
        return caml_call3(_a_,ppf,_i_,b)}
      if(365180284 <= _dl_)
       {var f=param[2];
        return caml_call3(_a_,ppf,_j_,caml_call1(Stdlib[35],f))}
      var s$0=param[2];
      return caml_call3(_a_,ppf,_k_,s$0)}
    function err_lone_hi(p)
     {return [0,106380200,[0,992790154,[0,225181919,p]]]}
    function err_number(s){return [0,106380200,[0,30214610,s]]}
    function pp_cp(ppf,u){return caml_call3(_a_,ppf,_l_,u)}
    function pp_uchar(ppf,u)
     {if(31 < caml_call1(Stdlib_uchar[10],u))
       {var b=caml_call1(Stdlib_buffer[1],4);
        caml_call2(Uutf[23][1],b,u);
        var _dk_=caml_call1(Stdlib_uchar[10],u);
        return caml_call5
                (_a_,ppf,_m_,caml_call1(Stdlib_buffer[2],b),pp_cp,_dk_)}
      return pp_cp(ppf,caml_call1(Stdlib_uchar[10],u))}
    function pp_error(ppf,param)
     {if(typeof param === "number")return caml_call2(_a_,ppf,_n_);
      var _df_=param[1];
      if(30214610 <= _df_)
       {if(732461442 <= _df_)
         {if(992790154 <= _df_)
           {var r=param[2];
            caml_call2(_a_,ppf,_o_);
            var _dg_=r[1];
            if(153884648 === _dg_)
             {var p=r[2];return caml_call4(_a_,ppf,_p_,pp_cp,p)}
            if(429931233 <= _dg_)
             {if(508493173 <= _dg_)
               {var u=r[2];return caml_call4(_a_,ppf,_q_,pp_uchar,u)}
              var p$0=r[2];
              return caml_call4(_a_,ppf,_r_,pp_cp,p$0)}
            if(225181919 <= _dg_)
             {var p$1=r[2];return caml_call4(_a_,ppf,_s_,pp_cp,p$1)}
            var u$0=r[2];
            return caml_call4(_a_,ppf,_t_,pp_uchar,u$0)}
          var bs=param[2],l=caml_ml_string_length(bs);
          caml_call2(_a_,ppf,_u_);
          if(0 < l)caml_call3(_a_,ppf,_v_,caml_string_get(bs,0));
          var _di_=l - 1 | 0,_dh_=1;
          if(! (_di_ < 1))
           {var i=_dh_;
            for(;;)
             {caml_call3(_a_,ppf,_x_,caml_string_get(bs,i));
              var _dj_=i + 1 | 0;
              if(_di_ !== i){var i=_dj_;continue}
              break}}
          return caml_call2(_a_,ppf,_w_)}
        if(434236056 <= _df_)
         {var r$0=param[2];
          caml_call2(_a_,ppf,_y_);
          return typeof r$0 === "number"
                  ?3456159 <= r$0
                    ?826371656 <= r$0
                      ?869834347 <= r$0
                        ?caml_call2(_a_,ppf,_z_)
                        :caml_call2(_a_,ppf,_A_)
                      :713199754 <= r$0
                        ?caml_call2(_a_,ppf,_B_)
                        :caml_call2(_a_,ppf,_C_)
                    :-826170817 <= r$0
                      ?caml_call2(_a_,ppf,_D_)
                      :caml_call2(_a_,ppf,_E_)
                  :881518886 <= r$0[1]
                    ?r$0[2]?caml_call2(_a_,ppf,_F_):caml_call2(_a_,ppf,_G_)
                    :r$0[2]?caml_call2(_a_,ppf,_H_):caml_call2(_a_,ppf,_I_)}
        var n=param[2];
        return caml_call3(_a_,ppf,_J_,n)}
      if(-364210971 === _df_)
       {var r$1=param[2];
        caml_call2(_a_,ppf,_K_);
        return 14610 <= r$1
                ?17732 <= r$1?caml_call2(_a_,ppf,_L_):caml_call2(_a_,ppf,_M_)
                :-826170817 <= r$1
                  ?caml_call2(_a_,ppf,_N_)
                  :caml_call2(_a_,ppf,_O_)}
      if(-67383738 <= _df_)
       {var l$0=param[2];return caml_call3(_a_,ppf,_P_,l$0)}
      var u$1=param[2];
      return caml_call4(_a_,ppf,_Q_,pp_uchar,u$1)}
    function pp_decode(ppf,param)
     {if(typeof param === "number")
       return 1006505782 <= param
               ?caml_call2(_a_,ppf,_R_)
               :caml_call2(_a_,ppf,_S_);
      var _de_=param[1];
      if(-588596599 <= _de_)
       {if(106380200 <= _de_)
         {var e=param[2];return caml_call4(_a_,ppf,_T_,pp_error,e)}
        var s=param[2];
        return caml_call3(_a_,ppf,_U_,s)}
      if(-633954146 <= _de_)
       {var l=param[2];return caml_call4(_a_,ppf,_V_,pp_lexeme,l)}
      var match=param[2],s$0=match[2],style=match[1];
      function pr_style(ppf,param)
       {return 83 <= param?caml_call2(_a_,ppf,_W_):caml_call2(_a_,ppf,_X_)}
      return caml_call5(_a_,ppf,_Y_,pr_style,style,s$0)}
    function baddc(d,c)
     {var _dd_=caml_call1(Stdlib_uchar[9],c);
      return caml_call2(Uutf[23][1],d[2],_dd_)}
    function badd(d)
     {var _dc_=caml_call1(Stdlib_uchar[9],d[8]);
      return caml_call2(Uutf[23][1],d[2],_dc_)}
    function buf(d)
     {var t=caml_call1(Stdlib_buffer[2],d[2]);
      caml_call1(Stdlib_buffer[8],d[2]);
      return t}
    function dpos(d)
     {var _db_=caml_call1(Uutf[10],d[1]);
      return [0,caml_call1(Uutf[9],d[1]),_db_]}
    function spos(d)
     {d[4] = caml_call1(Uutf[9],d[1]);
      d[5] = caml_call1(Uutf[10],d[1]);
      return 0}
    function epos(d)
     {d[6] = caml_call1(Uutf[9],d[1]);
      d[7] = caml_call1(Uutf[10],d[1]);
      return 0}
    function stack_range(d)
     {var _da_=d[9];
      if(_da_)
       {var match=_da_[1][2],c=match[2],l=match[1];
        d[4] = l;
        d[5] = c;
        return epos(d)}
      throw [0,Assert_failure,_Z_]}
    function dpop(d)
     {spos(d);
      epos(d);
      var _c__=d[9];
      if(_c__)
       {var _c$_=_c__[2];
        return _c$_
                ?17732 <= _c$_[1][1]
                  ?(d[10] = 1,d[9] = _c$_,0)
                  :(d[10] = 0,d[9] = _c$_,0)
                :(d[10] = 0,d[9] = 0,0)}
      throw [0,Assert_failure,___]}
    function k(d){return 3455931}
    function ret(v,k,d){d[12] = k;return v}
    function readc(k,d)
     {var match=caml_call1(Uutf[6],d[1]);
      if(typeof match === "number")
       return 1006505782 <= match
               ?ret(1006505782,function(_c9_){return readc(k,_c9_)},d)
               :(d[8] = _b_,caml_call1(k,d));
      if(852405675 <= match[1])
       {var u=match[2];
        d[8] = caml_call1(Stdlib_uchar[10],u);
        return caml_call1(k,d)}
      var bs=match[2];
      d[8] = u_rep;
      epos(d);
      return ret([0,106380200,[0,732461442,bs]],k,d)}
    function r_scomment(k,d)
     {if(d[8] !== 10 && d[8] !== _b_)
       {badd(d);return readc(function(_c8_){return r_scomment(k,_c8_)},d)}
      epos(d);
      function _c6_(_c7_){return readc(k,_c7_)}
      return ret([0,-826170817,[0,83,buf(d)]],_c6_,d)}
    function r_mcomment(closing,k$0,d)
     {if(d[8] === _b_){epos(d);return ret(err_unclosed_comment,k,d)}
      if(closing)
       {if(d[8] === 47)
         {epos(d);
          var _cW_=function(_c5_){return readc(k$0,_c5_)};
          return ret([0,-826170817,[0,77,buf(d)]],_cW_,d)}
        if(d[8] === 42)
         {badd(d);
          var _cX_=1;
          return readc(function(_c4_){return r_mcomment(_cX_,k$0,_c4_)},d)}
        baddc(d,u_times);
        badd(d);
        var _cY_=0;
        return readc(function(_c3_){return r_mcomment(_cY_,k$0,_c3_)},d)}
      if(d[8] === 42)
       {var _cZ_=1;
        return readc(function(_c2_){return r_mcomment(_cZ_,k$0,_c2_)},d)}
      badd(d);
      var _c0_=0;
      return readc(function(_c1_){return r_mcomment(_c0_,k$0,_c1_)},d)}
    function r_ws_uncut(k,d)
     {return is_white(d[8])
              ?(epos(d),
                badd(d),
                readc(function(_cV_){return r_ws_uncut(k,_cV_)},d))
              :ret([0,-588596599,buf(d)],k,d)}
    function r_white_uncut(k,d)
     {if(is_white(d[8]))
       {spos(d);
        return r_ws_uncut(function(_cU_){return r_white_uncut(k,_cU_)},d)}
      if(d[8] === 47)
       {spos(d);
        var k$0=function(_cT_){return r_white_uncut(k,_cT_)};
        return readc
                (function(d)
                  {if(d[8] === 47)
                    return readc(function(_cS_){return r_scomment(k$0,_cS_)},d);
                   if(d[8] === 42)
                    {var _cQ_=0;
                     return readc
                             (function(_cR_){return r_mcomment(_cQ_,k$0,_cR_)},d)}
                   epos(d);
                   return ret(err_exp_comment,k$0,d)},
                 d)}
      return caml_call1(k,d)}
    function r_ws(k,d)
     {return is_white(d[8])
              ?readc(function(_cP_){return r_ws(k,_cP_)},d)
              :caml_call1(k,d)}
    function r_white(k,d){return d[3]?r_white_uncut(k,d):r_ws(k,d)}
    function r_u_escape(hi,u,count,k,d)
     {function error(err,k,d){baddc(d,u_rep);return ret(err,k,d)}
      if(0 < count)
       {var _cD_=d[8],_cx_=48 <= _cD_?1:0,_cy_=_cx_?_cD_ <= 57?1:0:_cx_;
        if(_cy_)
         var _cz_=_cy_;
        else
         {var _cA_=65 <= _cD_?1:0,_cB_=_cA_?_cD_ <= 70?1:0:_cA_;
          if(_cB_)
           var _cz_=_cB_;
          else
           var _cC_=97 <= _cD_?1:0,_cz_=_cC_?_cD_ <= 102?1:0:_cC_}
        if(_cz_)
         {var
           _cE_=57 < d[8]?70 < d[8]?d[8] - 87 | 0:d[8] - 55 | 0:d[8] - 48 | 0,
           u$0=(u * 16 | 0) + _cE_ | 0;
          epos(d);
          var _cF_=count - 1 | 0;
          return readc
                  (function(_cO_){return r_u_escape(hi,u$0,_cF_,k,_cO_)},d)}
        epos(d);
        var _cG_=function(_cN_){return readc(k,_cN_)};
        return error
                ([0,
                  106380200,
                  [0,
                   992790154,
                   [0,-542918501,caml_call1(Stdlib_uchar[8],d[8])]]],
                 _cG_,
                 d)}
      if(hi)
       {var hi$0=hi[1];
        if(56320 <= u && ! (57343 < u))
         {var u$1=((hi$0 & 1023) << 10 | u & 1023) + 65536 | 0;
          baddc(d,u$1);
          return caml_call1(k,d)}
        return error([0,106380200,[0,992790154,[0,153884648,u]]],k,d)}
      if(55296 <= u && ! (57343 < u))
       return 56319 < u
               ?error([0,106380200,[0,992790154,[0,429931233,u]]],k,d)
               :d[8] !== 92
                 ?error(err_lone_hi(u),k,d)
                 :readc
                   (function(d)
                     {if(117 === d[8])
                       {var _cH_=4,_cI_=0,_cJ_=[0,u];
                        return readc
                                (function(_cM_){return r_u_escape(_cJ_,_cI_,_cH_,k,_cM_)},d)}
                      function _cK_(_cL_){return r_escape(k,_cL_)}
                      return error(err_lone_hi(u),_cK_,d)},
                    d);
      baddc(d,u);
      return caml_call1(k,d)}
    function r_escape(k,d)
     {var _cq_=d[8];
      if(34 === _cq_){baddc(d,u_quot);return readc(k,d)}
      if(92 <= _cq_)
       {if(! (118 <= _cq_))
         {var switcher=_cq_ - 92 | 0;
          switch(switcher)
           {case 0:baddc(d,u_bslash);return readc(k,d);
            case 6:baddc(d,8);return readc(k,d);
            case 10:baddc(d,12);return readc(k,d);
            case 18:baddc(d,u_nl);return readc(k,d);
            case 22:baddc(d,13);return readc(k,d);
            case 24:baddc(d,9);return readc(k,d);
            case 25:
             var _cs_=4,_ct_=0,_cu_=0;
             return readc
                     (function(_cw_){return r_u_escape(_cu_,_ct_,_cs_,k,_cw_)},d)
            }}}
      else
       if(47 === _cq_){baddc(d,u_slash);return readc(k,d)}
      epos(d);
      baddc(d,u_rep);
      function _cr_(_cv_){return readc(k,_cv_)}
      return ret
              ([0,
                106380200,
                [0,992790154,[0,508493173,caml_call1(Stdlib_uchar[8],_cq_)]]],
               _cr_,
               d)}
    function r_string(k$0,d)
     {if(d[8] === _b_){epos(d);return ret(err_unclosed_string,k,d)}
      var _ch_=d[8],_ce_=_ch_ <= 31?1:0;
      if(_ce_)
       var _cf_=_ce_;
      else
       var _cg_=34 === _ch_?1:0,_cf_=_cg_ || (92 === _ch_?1:0);
      if(_cf_)
       {if(d[8] === 34){epos(d);return readc(k$0,d)}
        if(d[8] === 92)
         {var _ci_=function(_cp_){return r_string(k$0,_cp_)};
          return readc(function(_co_){return r_escape(_ci_,_co_)},d)}
        epos(d);
        baddc(d,u_rep);
        var
         _cj_=function(_cn_){return r_string(k$0,_cn_)},
         _ck_=function(_cm_){return readc(_cj_,_cm_)};
        return ret
                ([0,106380200,[0,-635137946,caml_call1(Stdlib_uchar[8],d[8])]],
                 _ck_,
                 d)}
      badd(d);
      return readc(function(_cl_){return r_string(k$0,_cl_)},d)}
    function r_float(k,d)
     {if(! is_val_sep(d[8]) && d[8] !== _b_)
       {epos(d);
        badd(d);
        return readc(function(_cd_){return r_float(k,_cd_)},d)}
      var s=buf(d);
      try
       {var
         _cb_=
          ret
           ([0,-633954146,[0,365180284,runtime.caml_float_of_string(s)]],k,d);
        return _cb_}
      catch(_cc_)
       {_cc_ = caml_wrap_exception(_cc_);
        if(_cc_[1] === Stdlib[7])return ret(err_number(s),k,d);
        throw _cc_}}
    function r_literal(k,d)
     {if(! is_val_sep(d[8]) && d[8] !== _b_)
       {epos(d);
        badd(d);
        return readc(function(_ca_){return r_literal(k,_ca_)},d)}
      var s=buf(d);
      return caml_string_notequal(s,cst_false)
              ?caml_string_notequal(s,cst_null)
                ?caml_string_notequal(s,cst_true)
                  ?ret([0,106380200,[0,-67383738,s]],k,d)
                  :ret(_$_,k,d)
                :ret(_aa_,k,d)
              :ret(_ab_,k,d)}
    function r_value(err,k,d)
     {var _b5_=d[8],switch$0=0;
      if(103 <= _b5_)
       {var switcher=_b5_ - 110 | 0;
        if(6 < switcher >>> 0)
         {if(13 === switcher)
           {spos(d);
            epos(d);
            d[11] = 1;
            d[10] = 1;
            var _b6_=d[9];
            d[9] = [0,[0,17732,dpos(d)],_b6_];
            return ret(_ac_,function(_b9_){return readc(k,_b9_)},d)}}
        else
         if(4 < (switcher - 1 | 0) >>> 0)switch$0 = 1}
      else
       {if(34 === _b5_)
         {spos(d);
          var
           _b7_=
            function(d){return ret([0,-633954146,[0,-976970511,buf(d)]],k,d)};
          return readc(function(_b$_){return r_string(_b7_,_b$_)},d)}
        if(91 === _b5_)
         {spos(d);
          epos(d);
          d[11] = 1;
          var _b8_=d[9];
          d[9] = [0,[0,14610,dpos(d)],_b8_];
          return ret(_ad_,function(_b__){return readc(k,_b__)},d)}
        if(102 <= _b5_)switch$0 = 1}
      if(switch$0){spos(d);return r_literal(k,d)}
      var _b3_=48 <= _b5_?1:0,_b4_=_b3_?_b5_ <= 57?1:0:_b3_;
      if(! _b4_ && _b5_ !== 45)return caml_call2(err,k,d);
      spos(d);
      return r_float(k,d)}
    function discard_to(c1,c2,err,k,d)
     {if(d[8] !== c1 && d[8] !== c2 && d[8] !== _b_)
       {epos(d);
        return readc(function(_b2_){return discard_to(c1,c2,err,k,_b2_)},d)}
      return ret(err,k,d)}
    function nxmem(err,k,d)
     {spos(d);d[10] = 1;return discard_to(u_comma,u_rbrace,err,k,d)}
    function k$0(d)
     {var _bG_=d[9];
      return _bG_
              ?17732 <= _bG_[1][1]
                ?d[10]
                  ?r_white
                    (function(d)
                      {function r_name(err,k,d)
                        {if(d[8] !== 34)return nxmem(err,k,d);
                         spos(d);
                         function _bL_(d)
                          {return ret([0,-633954146,[0,869834347,buf(d)]],k,d)}
                         return readc(function(_bM_){return r_string(_bL_,_bM_)},d)}
                       var last_start=d[11];
                       d[11] = 0;
                       d[10] = 0;
                       if(d[8] === _b_)
                        {stack_range(d);return ret(err_unclosed_obj,k,d)}
                       if(d[8] === 125)
                        {dpop(d);
                         return ret(_af_,function(_bK_){return readc(k$0,_bK_)},d)}
                       if(last_start)return r_name(err_exp_obj_fst,k$0,d);
                       if(d[8] === 44)
                        {var
                          _bH_=
                           function(_bJ_){return r_name(err_exp_name,k$0,_bJ_)};
                         return readc(function(_bI_){return r_white(_bH_,_bI_)},d)}
                       return nxmem(err_exp_obj_nxt,k$0,d)},
                     d)
                  :r_white
                    (function(d)
                      {d[10] = 1;
                       if(d[8] === 58)
                        {var
                          _bN_=
                           function(_bR_,_bS_){return nxmem(err_exp_value,_bR_,_bS_)},
                          _bO_=function(_bQ_){return r_value(_bN_,k$0,_bQ_)};
                         return readc(function(_bP_){return r_white(_bO_,_bP_)},d)}
                       return nxmem(err_exp_nsep,k$0,d)},
                     d)
                :r_white
                  (function(d)
                    {function nxval(err,k,d)
                      {spos(d);return discard_to(u_comma,u_rbrack,err,k,d)}
                     var last_start=d[11];
                     d[11] = 0;
                     if(d[8] === _b_)
                      {stack_range(d);return ret(err_unclosed_arr,k,d)}
                     if(d[8] === 93)
                      {dpop(d);
                       return ret(_ae_,function(_b1_){return readc(k$0,_b1_)},d)}
                     if(last_start)
                      return r_value
                              (function(_bZ_,_b0_)
                                {return nxval(err_exp_arr_fst,_bZ_,_b0_)},
                               k$0,
                               d);
                     if(d[8] === 44)
                      {var
                        _bT_=
                         function(_bX_,_bY_){return nxval(err_exp_value,_bX_,_bY_)},
                        _bU_=function(_bW_){return r_value(_bT_,k$0,_bW_)};
                       return readc(function(_bV_){return r_white(_bU_,_bV_)},d)}
                     return nxval(err_exp_arr_nxt,k$0,d)},
                   d)
              :r_white
                (function(d)
                  {return d[8] === _b_
                           ?ret(3455931,k,d)
                           :(spos(d),discard_to(_b_,_b_,err_exp_eoi,k,d))},
                 d)}
    function discard_to_white(err,k,d)
     {if(! is_white(d[8]) && d[8] !== _b_)
       {epos(d);
        return readc(function(_bF_){return discard_to_white(err,k,_bF_)},d)}
      return ret(err,k,d)}
    function r_json(k,d)
     {function err(k,d)
       {spos(d);
        function _bC_(_bE_){return r_json(k,_bE_)}
        return discard_to_white
                (err_exp_json,function(_bD_){return r_white(_bC_,_bD_)},d)}
      return d[8] !== _b_?r_value(err,k,d):ret(err_exp_json,k,d)}
    function r_start(d)
     {function _bz_(_bB_){return r_json(k$0,_bB_)}
      function k(_bA_){return r_white(_bz_,_bA_)}
      return readc
              (function(d)
                {return caml_call1(Uutf[13],d[1])?ret(err_bom,k,d):k(d)},
               d)}
    var nln=[0,605782321,caml_call1(Stdlib_uchar[9],10)];
    function decoder(encoding,src)
     {var u=caml_call3(Uutf[5],[0,nln],encoding,src);
      return [0,
              u,
              caml_call1(Stdlib_buffer[1],1024),
              0,
              1,
              0,
              1,
              0,
              ux_soi,
              0,
              0,
              0,
              r_start]}
    function decode_uncut(d){d[3] = 1;return caml_call1(d[12],d)}
    function decode(d)
     {d[3] = 0;
      var v=caml_call1(d[12],d);
      if(typeof v !== "number")
       {var _by_=v[1];
        if(-633954146 !== _by_ && ! (106380200 <= _by_))
         throw [0,Assert_failure,_ag_]}
      return v}
    function decoder_src(d){return caml_call1(Uutf[14],d[1])}
    function decoded_range(d){return [0,[0,d[4],d[5]],[0,d[6],d[7]]]}
    function decoder_encoding(d)
     {var enc=caml_call1(Uutf[7],d[1]);
      if(338302576 <= enc && ! (684370880 <= enc))
       throw [0,Assert_failure,_ah_];
      return enc}
    function invalid_arg(fmt)
     {var
       b=caml_call1(Stdlib_buffer[1],20),
       ppf=caml_call1(Stdlib_format[107],b);
      function k(ppf)
       {caml_call2(Stdlib_format[36],ppf,0);
        var _bx_=caml_call1(Stdlib_buffer[2],b);
        return caml_call1(Stdlib[1],_bx_)}
      return caml_call3(Stdlib_format[130],k,ppf,fmt)}
    function expect(e,v){return caml_call3(invalid_arg(_aj_),pp_decode,v,e)}
    function o_rem(e){return (e[5] - e[4] | 0) + 1 | 0}
    function dst(e,s,j,l)
     {var _bu_=j < 0?1:0;
      if(_bu_)
       var _bv_=_bu_;
      else
       var
        _bw_=l < 0?1:0,
        _bv_=_bw_ || (runtime.caml_ml_bytes_length(s) < (j + l | 0)?1:0);
      if(_bv_)caml_call2(invalid_arg(_ai_),j,l);
      e[3] = s;
      e[4] = j;
      e[5] = (j + l | 0) - 1 | 0;
      return 0}
    function flush(k,e)
     {var _bt_=e[1];
      if(typeof _bt_ === "number")
       {e[11]
        =
        function(e,v)
         {return 1006505782 === v?caml_call1(k,e):expect(cst_Await,v)};
        return 939392865}
      if(438511779 <= _bt_[1])
       {var oc=_bt_[2];
        caml_call4(Stdlib[68],oc,e[3],0,e[4]);
        e[4] = 0;
        return caml_call1(k,e)}
      var b=_bt_[2],o=caml_call1(Stdlib_bytes[42],e[3]);
      caml_call4(Stdlib_buffer[16],b,o,0,e[4]);
      e[4] = 0;
      return caml_call1(k,e)}
    function writeb(b,k,e)
     {return e[5] < e[4]
              ?flush(function(_bs_){return writeb(b,k,_bs_)},e)
              :(unsafe_set_byte(e[3],e[4],b),
                e[4]
                =
                e[4]
                +
                1
                |
                0,
                caml_call1(k,e))}
    function writes(s,j,l,k,e)
     {var rem=o_rem(e);
      if(l <= rem)
       {caml_call1(unsafe_blit(s,j,e[3],e[4]),l);
        e[4] = e[4] + l | 0;
        return caml_call1(k,e)}
      caml_call1(unsafe_blit(s,j,e[3],e[4]),rem);
      e[4] = e[4] + rem | 0;
      var _bp_=l - rem | 0,_bq_=j + rem | 0;
      return flush(function(_br_){return writes(s,_bq_,_bp_,k,_br_)},e)}
    function writebuf(j,l,k,e)
     {var rem=o_rem(e);
      if(l <= rem)
       {caml_call5(Stdlib_buffer[5],e[6],j,e[3],e[4],l);
        e[4] = e[4] + l | 0;
        return caml_call1(k,e)}
      caml_call5(Stdlib_buffer[5],e[6],j,e[3],e[4],rem);
      e[4] = e[4] + rem | 0;
      var _bm_=l - rem | 0,_bn_=j + rem | 0;
      return flush(function(_bo_){return writebuf(_bn_,_bm_,k,_bo_)},e)}
    function w_indent(k,e)
     {function loop(indent,k,e)
       {function spaces(e,indent)
         {var max=(e[4] + indent | 0) - 1 | 0,_bk_=e[4];
          if(! (max < _bk_))
           {var j=_bk_;
            for(;;)
             {unsafe_set_byte(e[3],j,u_sp);
              var _bl_=j + 1 | 0;
              if(max !== j){var j=_bl_;continue}
              break}}
          e[4] = max + 1 | 0;
          return 0}
        var rem=o_rem(e);
        if(rem < indent)
         {spaces(e,rem);
          var _bi_=indent - rem | 0;
          return flush(function(_bj_){return loop(_bi_,k,_bj_)},e)}
        spaces(e,indent);
        return caml_call1(k,e)}
      return loop(e[8] * 2 | 0,k,e)}
    function w_json_string(s,k,e)
     {function loop(s,j,pos,max,k,e)
       {var pos$0=pos;
        for(;;)
         {if(max < pos$0)
           return max < j?caml_call1(k,e):writes(s,j,pos$0 - j | 0,k,e);
          var
           next=pos$0 + 1 | 0,
           escape$0=
            function(pos,next)
             {function escape(esc)
               {function _bd_(_bh_){return loop(s,next,next,max,k,_bh_)}
                var _be_=2,_bf_=0;
                return writes
                        (s,
                         j,
                         pos - j | 0,
                         function(_bg_){return writes(esc,_bf_,_be_,_bd_,_bg_)},
                         e)}
              return escape},
           escape=escape$0(pos$0,next),
           c=runtime.caml_string_unsafe_get(s,pos$0);
          if(10 === c)return escape(cst_n);
          if(34 === c)return escape(cst);
          if(92 === c)return escape(cst$0);
          if(31 < c){var pos$0=next;continue}
          var
           hex=function(d){return 10 <= d?65 + (d - 10 | 0) | 0:48 + d | 0},
           _a4_=function(_bc_){return loop(s,next,next,max,k,_bc_)},
           _a5_=hex(c & 15),
           _a6_=function(_bb_){return writeb(_a5_,_a4_,_bb_)},
           _a7_=hex(c >>> 4 | 0),
           _a8_=function(_ba_){return writeb(_a7_,_a6_,_ba_)},
           _a9_=4,
           _a__=0;
          return writes
                  (s,
                   j,
                   pos$0 - j | 0,
                   function(_a$_){return writes(cst_u00,_a__,_a9_,_a8_,_a$_)},
                   e)}}
      function _aY_(_a3_){return writeb(u_quot,k,_a3_)}
      var _aZ_=caml_ml_string_length(s) - 1 | 0,_a0_=0,_a1_=0;
      return writeb
              (u_quot,
               function(_a2_){return loop(s,_a1_,_a0_,_aZ_,_aY_,_a2_)},
               e)}
    function w_name(n,k,e)
     {e[10] = 0;
      e[9] = 0;
      return w_json_string(n,function(_aX_){return writeb(u_colon,k,_aX_)},e)}
    function w_value(in_obj,l,k,e)
     {if(typeof l === "number")
       {if(17732 <= l)
         return 870828711 <= l
                 ?(e[10] = 0,e[9] = in_obj,writes(cst_null$0,0,4,k,e))
                 :(e[10]
                   =
                   1,
                   e[9]
                   =
                   1,
                   e[8]
                   =
                   e[8]
                   +
                   1
                   |
                   0,
                   e[7]
                   =
                   [0,17732,e[7]],
                   writeb(u_lbrace,k,e));
        if(14610 === l)
         {e[10] = 1;
          e[9] = 0;
          e[8] = e[8] + 1 | 0;
          e[7] = [0,14610,e[7]];
          return writeb(u_lbrack,k,e)}}
      else
       {var _aW_=l[1];
        if(! (737456202 <= _aW_))
         {if(365180284 <= _aW_)
           {var f=l[2];
            e[10] = 0;
            e[9] = in_obj;
            caml_call1(Stdlib_buffer[8],e[6]);
            caml_call3(Stdlib_printf[5],e[6],_ak_,f);
            return writebuf(0,caml_call1(Stdlib_buffer[7],e[6]),k,e)}
          var s=l[2];
          e[10] = 0;
          e[9] = in_obj;
          return w_json_string(s,k,e)}
        if(! (869834347 <= _aW_))
         {var b=l[2];
          e[10] = 0;
          e[9] = in_obj;
          return b?writes(cst_true$0,0,4,k,e):writes(cst_false$0,0,5,k,e)}}
      return in_obj
              ?expect(cst_any_Lexeme_but_Name_Oe_or_,[0,-633954146,l])
              :expect(cst_any_Lexeme_but_Name_or_Oe,[0,-633954146,l])}
    function encode(k,e,v)
     {if(typeof v === "number")
       {if(1006505782 <= v)return 17724;
        if(0 === e[7])return flush(k,e);
        var
         lstart=caml_call1(Stdlib_list[5],e[7]),
         _ap_=14610 === lstart?cst_Lexeme_Ae:cst_Lexeme_Oe;
        return expect(_ap_,v)}
      var _as_=v[1];
      if(-633954146 === _as_)
       {var l=v[2];
        if(0 === e[7])return expect(cst_End,[0,-633954146,l]);
        var
         epop=
          function(e)
           {e[10] = 0;
            e[8] = e[8] - 1 | 0;
            e[7] = caml_call1(Stdlib_list[6],e[7]);
            var _aV_=e[7];
            if(_aV_ && 17732 === _aV_[1]){e[9] = 1;return 0}
            e[9] = 0;
            return 0},
         match=caml_call1(Stdlib_list[5],e[7]);
        if(17732 <= match)
         {if(e[9])
           {if(typeof l === "number")
             {if(17718 === l)
               {if(! e[2] && ! e[10])
                 {epop(e);
                  var _aq_=function(_aO_){return writeb(u_rbrace,k,_aO_)};
                  return writeb
                          (u_nl,function(_aN_){return w_indent(_aq_,_aN_)},e)}
                epop(e);
                return writeb(u_rbrace,k,e)}}
            else
             if(869834347 === l[1])
              {var
                n=l[2],
                name=
                 function(n,k,e)
                  {if(e[2])return w_name(n,k,e);
                   function _aQ_(_aU_){return writeb(u_sp,k,_aU_)}
                   function _aR_(_aT_){return w_name(n,_aQ_,_aT_)}
                   return writeb
                           (u_nl,function(_aS_){return w_indent(_aR_,_aS_)},e)};
               return e[10]
                       ?name(n,k,e)
                       :writeb(u_comma,function(_aP_){return name(n,k,_aP_)},e)}
            return expect(cst_Lexeme_Name_Oe,[0,-633954146,l])}
          return w_value(1,l,k,e)}
        if(14596 === l)
         {if(! e[2] && ! e[10])
           {epop(e);
            var _ar_=function(_aM_){return writeb(u_rbrack,k,_aM_)};
            return writeb(u_nl,function(_aL_){return w_indent(_ar_,_aL_)},e)}
          epop(e);
          return writeb(u_rbrack,k,e)}
        var
         value=
          function(l,k,e)
           {if(e[2])return w_value(0,l,k,e);
            var _aH_=0;
            function _aI_(_aK_){return w_value(_aH_,l,k,_aK_)}
            return writeb(u_nl,function(_aJ_){return w_indent(_aI_,_aJ_)},e)};
        return e[10]
                ?value(l,k,e)
                :writeb(u_comma,function(_aG_){return value(l,k,_aG_)},e)}
      if(-588596599 <= _as_)
       {var w=v[2];return writes(w,0,caml_ml_string_length(w),k,e)}
      var _at_=v[2];
      if(83 <= _at_[1])
       {var
         c=_at_[2],
         _au_=function(_aF_){return writeb(u_nl,k,_aF_)},
         _av_=caml_ml_string_length(c),
         _aw_=0;
        return writes
                (cst$1,
                 0,
                 2,
                 function(_aE_){return writes(c,_aw_,_av_,_au_,_aE_)},
                 e)}
      var c$0=_at_[2],_ax_=2,_ay_=0;
      function _az_(_aD_){return writes(cst$2,_ay_,_ax_,k,_aD_)}
      var _aA_=caml_ml_string_length(c$0),_aB_=0;
      return writes
              (cst$3,
               0,
               2,
               function(_aC_){return writes(c$0,_aB_,_aA_,_az_,_aC_)},
               e)}
    function encode_loop(e)
     {e[11] = function(_an_,_ao_){return encode(encode_loop,_an_,_ao_)};
      return 17724}
    function encode_json(e,v)
     {if(typeof v === "number")
       {if(1006505782 <= v)return 17724}
      else
       {if(-633954146 !== v[1])
         return encode(function(e){e[11] = encode_json;return 17724},e,v);
        var _al_=v[2],switch$0=0;
        if(typeof _al_ === "number")
         {if(14610 !== _al_ && 17732 !== _al_ && 870828711 !== _al_)
           switch$0 = 1}
        else
         {var _am_=_al_[1];
          if(-976970511 !== _am_ && 365180284 !== _am_ && 737456202 !== _am_)
           switch$0 = 1}
        if(! switch$0)return w_value(0,_al_,encode_loop,e)}
      return expect(cst_Lexeme_Null_Bool_Float_Str,v)}
    function encoder(opt,dst)
     {if(opt)var sth=opt[1],minify=sth;else var minify=1;
      if(typeof dst === "number")
       var o_max=0,o_pos=1,o=Stdlib_bytes[3];
      else
       var o$0=runtime.caml_create_bytes(65536),o_max=65535,o_pos=0,o=o$0;
      return [0,
              dst,
              minify,
              o,
              o_pos,
              o_max,
              caml_call1(Stdlib_buffer[1],30),
              0,
              0,
              0,
              0,
              encode_json]}
    function encode$0(e,v){return caml_call2(e[11],e,v)}
    function encoder_dst(e){return e[1]}
    function encoder_minify(e){return e[2]}
    function src(d){return caml_call1(Uutf[21][1],d[1])}
    var Manual=[0,src,dst,o_rem];
    function encode$1(e,v){return caml_call2(e[11],e,v)}
    var
     Uncut=[0,decode_uncut,pp_decode,encode$1],
     Jsonm=
      [0,
       pp_lexeme,
       pp_error,
       decoder,
       decode,
       decoded_range,
       decoder_encoding,
       decoder_src,
       encoder,
       encode$0,
       encoder_dst,
       encoder_minify,
       Manual,
       Uncut];
    runtime.caml_register_global(108,Jsonm,"Jsonm");
    return}
  (function(){return this}()));


//# 1 "../../.js/bigarray-compat/bigarray_compat.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     global_data=runtime.caml_get_global_data(),
     Stdlib_bigarray=global_data.Stdlib__bigarray,
     float32=Stdlib_bigarray[1],
     float64=Stdlib_bigarray[2],
     complex32=Stdlib_bigarray[3],
     complex64=Stdlib_bigarray[4],
     int8_signed=Stdlib_bigarray[5],
     int8_unsigned=Stdlib_bigarray[6],
     int16_signed=Stdlib_bigarray[7],
     int16_unsigned=Stdlib_bigarray[8],
     int$0=Stdlib_bigarray[9],
     int32=Stdlib_bigarray[10],
     int64=Stdlib_bigarray[11],
     nativeint=Stdlib_bigarray[12],
     char$0=Stdlib_bigarray[13],
     kind_size_in_bytes=Stdlib_bigarray[14],
     c_layout=Stdlib_bigarray[15],
     fortran_layout=Stdlib_bigarray[16],
     Genarray=Stdlib_bigarray[17],
     Array0=Stdlib_bigarray[18],
     Array1=Stdlib_bigarray[19],
     Array2=Stdlib_bigarray[20],
     Array3=Stdlib_bigarray[21],
     array0_of_genarray=Stdlib_bigarray[22],
     array1_of_genarray=Stdlib_bigarray[23],
     array2_of_genarray=Stdlib_bigarray[24],
     array3_of_genarray=Stdlib_bigarray[25],
     reshape=Stdlib_bigarray[26],
     reshape_0=Stdlib_bigarray[27],
     reshape_1=Stdlib_bigarray[28],
     reshape_2=Stdlib_bigarray[29],
     reshape_3=Stdlib_bigarray[30],
     Bigarray_compat=
      [0,
       float32,
       float64,
       complex32,
       complex64,
       int8_signed,
       int8_unsigned,
       int16_signed,
       int16_unsigned,
       int$0,
       int32,
       int64,
       nativeint,
       char$0,
       kind_size_in_bytes,
       c_layout,
       fortran_layout,
       Genarray,
       Array0,
       Array1,
       Array2,
       Array3,
       array0_of_genarray,
       array1_of_genarray,
       array2_of_genarray,
       array3_of_genarray,
       reshape,
       reshape_0,
       reshape_1,
       reshape_2,
       reshape_3];
    runtime.caml_register_global(1,Bigarray_compat,"Bigarray_compat");
    return}
  (function(){return this}()));


//# 1 "../../.js/cstruct/cstruct.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_ba_dim_1=runtime.caml_ba_dim_1,
     caml_ba_get_1=runtime.caml_ba_get_1,
     caml_ba_set_1=runtime.caml_ba_set_1,
     caml_blit_bigstring_to_string=runtime.caml_blit_bigstring_to_string,
     caml_blit_string_to_bigstring=runtime.caml_blit_string_to_bigstring,
     caml_bswap16=runtime.caml_bswap16,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_int32_bswap=runtime.caml_int32_bswap,
     caml_int64_bswap=runtime.caml_int64_bswap,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Cstruct_concat=caml_string_of_jsbytes("Cstruct.concat"),
     cst_Cstruct_copyv=caml_string_of_jsbytes("Cstruct.copyv"),
     cst_Cstruct_lenv=caml_string_of_jsbytes("Cstruct.lenv"),
     cst_LE$4=caml_string_of_jsbytes("LE"),
     cst_LE$3=caml_string_of_jsbytes("LE"),
     cst_LE$2=caml_string_of_jsbytes("LE"),
     cst_LE$1=caml_string_of_jsbytes("LE"),
     cst_LE$0=caml_string_of_jsbytes("LE"),
     cst_LE=caml_string_of_jsbytes("LE"),
     cst_BE$4=caml_string_of_jsbytes("BE"),
     cst_BE$3=caml_string_of_jsbytes("BE"),
     cst_BE$2=caml_string_of_jsbytes("BE"),
     cst_BE$1=caml_string_of_jsbytes("BE"),
     cst_BE$0=caml_string_of_jsbytes("BE"),
     cst_BE=caml_string_of_jsbytes("BE"),
     cst_get_uint64=caml_string_of_jsbytes(".get_uint64"),
     cst_get_uint32=caml_string_of_jsbytes(".get_uint32"),
     cst_get_uint16=caml_string_of_jsbytes(".get_uint16"),
     cst_set_uint64=caml_string_of_jsbytes(".set_uint64"),
     cst_set_uint32=caml_string_of_jsbytes(".set_uint32"),
     cst_set_uint16=caml_string_of_jsbytes(".set_uint16"),
     cst_get_char=caml_string_of_jsbytes("get_char"),
     cst_get_uint8=caml_string_of_jsbytes("get_uint8"),
     cst_set_char=caml_string_of_jsbytes("set_char"),
     cst_set_uint8=caml_string_of_jsbytes("set_uint8"),
     cst_check_alignment_must_be_po=
      caml_string_of_jsbytes("check_alignment must be positive integer"),
     cst_Cstruct_Cap_concat=caml_string_of_jsbytes("Cstruct.Cap.concat"),
     Stdlib=global_data.Stdlib,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_sys=global_data.Stdlib__sys,
     Assert_failure=global_data.Assert_failure,
     Stdlib_char=global_data.Stdlib__char,
     Bigarray_compat=global_data.Bigarray_compat,
     Stdlib_buffer=global_data.Stdlib__buffer,
     _E_=[0,[17,3,[15,[17,4,0]]],caml_string_of_jsbytes("@\n%a@.")],
     _B_=
      [0,
       [17,[0,caml_string_of_jsbytes("@;"),1,0],0],
       caml_string_of_jsbytes("@;")],
     _A_=[0,[12,32,0],caml_string_of_jsbytes(" ")],
     _z_=[0,[11,caml_string_of_jsbytes("  "),0],caml_string_of_jsbytes("  ")],
     _C_=[0,[15,[4,6,0,[0,2],[15,0]]],caml_string_of_jsbytes("%a%.2x%a")],
     _x_=
      [0,
       [11,
        caml_string_of_jsbytes("of_hex: invalid character at pos "),
        [4,0,0,0,[11,caml_string_of_jsbytes(": "),[1,0]]]],
       caml_string_of_jsbytes("of_hex: invalid character at pos %d: %C")],
     _y_=
      [0,
       [11,caml_string_of_jsbytes("of_hex: odd numbers of characters"),0],
       caml_string_of_jsbytes("of_hex: odd numbers of characters")],
     _u_=
      [0,
       [11,
        caml_string_of_jsbytes("ERROR: t.off+t.len="),
        [4,0,0,0,[12,32,[15,[12,10,[10,0]]]]]],
       caml_string_of_jsbytes("ERROR: t.off+t.len=%d %a\n%!")],
     _v_=[0,caml_string_of_jsbytes("lib/cstruct.ml"),128,4],
     _w_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _t_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.iter "),
        [15,
         [11,
          caml_string_of_jsbytes(" i="),
          [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]],
       caml_string_of_jsbytes("Cstruct.iter %a i=%d len=%d")],
     _s_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.split "),
        [15,
         [11,
          caml_string_of_jsbytes(" start="),
          [4,0,0,0,[11,caml_string_of_jsbytes(" off="),[4,0,0,0,0]]]]]],
       caml_string_of_jsbytes("Cstruct.split %a start=%d off=%d")],
     _r_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid bounds in Cstruct."),
        [2,
         0,
         [12,
          32,
          [15,
           [11,
            caml_string_of_jsbytes(" off="),
            [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes("invalid bounds in Cstruct.%s %a off=%d len=%d")],
     _q_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.blit_to_bytes src="),
        [15,
         [11,
          caml_string_of_jsbytes(" dst="),
          [15,
           [11,
            caml_string_of_jsbytes(" dst-off="),
            [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes
        ("Cstruct.blit_to_bytes src=%a dst=%a dst-off=%d len=%d")],
     _p_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.blit_to_bytes src="),
        [15,
         [11,
          caml_string_of_jsbytes(" dst="),
          [15,
           [11,
            caml_string_of_jsbytes(" src-off="),
            [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes
        ("Cstruct.blit_to_bytes src=%a dst=%a src-off=%d len=%d")],
     _o_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.blit_from_bytes src="),
        [15,
         [11,
          caml_string_of_jsbytes(" dst="),
          [15,
           [11,
            caml_string_of_jsbytes(" dst-off="),
            [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes
        ("Cstruct.blit_from_bytes src=%a dst=%a dst-off=%d len=%d")],
     _n_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.blit_from_bytes src="),
        [15,
         [11,
          caml_string_of_jsbytes(" dst="),
          [15,
           [11,
            caml_string_of_jsbytes(" src-off="),
            [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes
        ("Cstruct.blit_from_bytes src=%a dst=%a src-off=%d len=%d")],
     _m_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.blit_from_string src="),
        [15,
         [11,
          caml_string_of_jsbytes(" dst="),
          [15,
           [11,
            caml_string_of_jsbytes(" dst-off="),
            [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes
        ("Cstruct.blit_from_string src=%a dst=%a dst-off=%d len=%d")],
     _l_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.blit_from_string src="),
        [15,
         [11,
          caml_string_of_jsbytes(" dst="),
          [15,
           [11,
            caml_string_of_jsbytes(" src-off="),
            [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes
        ("Cstruct.blit_from_string src=%a dst=%a src-off=%d len=%d")],
     _k_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.blit src="),
        [15,
         [11,
          caml_string_of_jsbytes(" dst="),
          [15,
           [11,
            caml_string_of_jsbytes(" dst-off="),
            [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes("Cstruct.blit src=%a dst=%a dst-off=%d len=%d")],
     _j_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.blit src="),
        [15,
         [11,
          caml_string_of_jsbytes(" dst="),
          [15,
           [11,
            caml_string_of_jsbytes(" src-off="),
            [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes("Cstruct.blit src=%a dst=%a src-off=%d len=%d")],
     _i_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.copy "),
        [15,
         [11,
          caml_string_of_jsbytes(" off="),
          [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]],
       caml_string_of_jsbytes("Cstruct.copy %a off=%d len=%d")],
     _h_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.add_len "),
        [15,[12,32,[4,0,0,0,0]]]],
       caml_string_of_jsbytes("Cstruct.add_len %a %d")],
     _g_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.set_len "),
        [15,[12,32,[4,0,0,0,0]]]],
       caml_string_of_jsbytes("Cstruct.set_len %a %d")],
     _f_=
      [0,
       [11,caml_string_of_jsbytes("Cstruct.shift "),[15,[12,32,[4,0,0,0,0]]]],
       caml_string_of_jsbytes("Cstruct.shift %a %d")],
     _e_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.sub: "),
        [15,
         [11,
          caml_string_of_jsbytes(" off="),
          [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]]]],
       caml_string_of_jsbytes("Cstruct.sub: %a off=%d len=%d")],
     _d_=
      [0,
       [11,
        caml_string_of_jsbytes("Cstruct.of_bigarray off="),
        [4,0,0,0,[11,caml_string_of_jsbytes(" len="),[4,0,0,0,0]]]],
       caml_string_of_jsbytes("Cstruct.of_bigarray off=%d len=%d")],
     _c_=[0,[12,91,[4,0,0,0,[12,93,0]]],caml_string_of_jsbytes("[%d]")],
     _b_=[0,[12,91,[4,0,0,0,[12,93,0]]],caml_string_of_jsbytes("[%d]")],
     _a_=
      [0,
       [12,
        91,
        [4,
         0,
         0,
         0,
         [12,
          44,
          [4,0,0,0,[11,caml_string_of_jsbytes("]("),[4,0,0,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("[%d,%d](%d)")],
     _D_=[0,[17,3,[15,[17,4,0]]],caml_string_of_jsbytes("@\n%a@.")],
     _F_=[0,caml_string_of_jsbytes("lib/cstruct_cap.ml"),82,2];
    function pp_t(ppf,t)
     {var _ak_=caml_ba_dim_1(t[1]);
      return caml_call5(Stdlib_format[123],ppf,_a_,t[2],t[3],_ak_)}
    function string_t(ppf,str)
     {return caml_call3(Stdlib_format[123],ppf,_b_,caml_ml_string_length(str))}
    function bytes_t(ppf,str)
     {return caml_call3(Stdlib_format[123],ppf,_c_,caml_ml_bytes_length(str))}
    function err(fmt)
     {var
       b=caml_call1(Stdlib_buffer[1],20),
       ppf=caml_call1(Stdlib_format[107],b);
      function k(ppf)
       {caml_call2(Stdlib_format[36],ppf,0);
        var _aj_=caml_call1(Stdlib_buffer[2],b);
        return caml_call1(Stdlib[1],_aj_)}
      return caml_call3(Stdlib_format[130],k,ppf,fmt)}
    function err_invalid_bounds(f){return caml_call2(err(_r_),f,pp_t)}
    function err_split(t){return caml_call2(err(_s_),pp_t,t)}
    function err_iter(t){return caml_call2(err(_t_),pp_t,t)}
    function of_bigarray(opt,len,buffer)
     {if(opt)var sth=opt[1],off=sth;else var off=0;
      var dim=caml_ba_dim_1(buffer);
      if(len)var len$0=len[1],len$1=len$0;else var len$1=dim - off | 0;
      if
       (0
        <=
        off
        &&
        0
        <=
        len$1
        &&
        0
        <=
        (off + len$1 | 0)
        &&
        !
        (dim < (off + len$1 | 0)))
       return [0,buffer,off,len$1];
      return caml_call1(caml_call1(err(_d_),off),len$1)}
    function to_bigarray(buffer)
     {return runtime.caml_ba_sub(buffer[1],buffer[2],buffer[3])}
    function create_unsafe(len)
     {var
       buffer=
        caml_call3
         (Bigarray_compat[19][1],Bigarray_compat[13],Bigarray_compat[15],len);
      return [0,buffer,0,len]}
    function check_bounds(t,len)
     {var _ah_=0 <= len?1:0,_ai_=_ah_?len <= caml_ba_dim_1(t[1])?1:0:_ah_;
      return _ai_}
    var empty=create_unsafe(0);
    function check_alignment(t,alignment)
     {return 0 < alignment
              ?runtime.caml_check_alignment_bigstring(t[1],t[2],alignment)
              :caml_call1(Stdlib[1],cst_check_alignment_must_be_po)}
    function byte$0(i){return caml_call1(Stdlib_char[1],i)}
    function byte_to_int(b){return b}
    function debug(t)
     {var max_len=caml_ba_dim_1(t[1]);
      if(! (max_len < (t[2] + t[3] | 0)) && 0 <= t[3] && 0 <= t[2])
       return caml_call3(Stdlib_format[127],_w_,pp_t,t);
      caml_call4(Stdlib_format[124],_u_,t[2] + t[3] | 0,pp_t,t);
      throw [0,Assert_failure,_v_]}
    function sub(t,off,len)
     {var
       new_start=t[2] + off | 0,
       new_end=new_start + len | 0,
       old_end=t[2] + t[3] | 0;
      if(t[2] <= new_start && new_end <= old_end && new_start <= new_end)
       return [0,t[1],new_start,len];
      return caml_call2(caml_call2(err(_e_),pp_t,t),off,len)}
    function shift(t,amount)
     {var off=t[2] + amount | 0,len=t[3] - amount | 0;
      if(0 <= amount && ! (t[3] < amount) && check_bounds(t,off + len | 0))
       return [0,t[1],off,len];
      return caml_call1(caml_call2(err(_f_),pp_t,t),amount)}
    function set_len(t,len)
     {if(0 <= len && check_bounds(t,t[2] + len | 0))return [0,t[1],t[2],len];
      return caml_call1(caml_call2(err(_g_),pp_t,t),len)}
    function add_len(t,len)
     {var len$0=t[3] + len | 0;
      if(0 <= len$0 && check_bounds(t,t[2] + len$0 | 0))
       return [0,t[1],t[2],len$0];
      return caml_call1(caml_call2(err(_h_),pp_t,t),len$0)}
    function copy(src,srcoff,len)
     {if(0 <= len && 0 <= srcoff && ! ((src[3] - srcoff | 0) < len))
       {var b=caml_create_bytes(len);
        caml_blit_bigstring_to_string(src[1],src[2] + srcoff | 0,b,0,len);
        return caml_call1(Stdlib_bytes[42],b)}
      return caml_call2(caml_call2(err(_i_),pp_t,src),srcoff,len)}
    function blit(src,srcoff,dst,dstoff,len)
     {if(0 <= len && 0 <= srcoff && ! ((src[3] - srcoff | 0) < len))
       {if(0 <= dstoff && ! ((dst[3] - dstoff | 0) < len))
         return runtime.caml_blit_bigstring_to_bigstring
                 (src[1],src[2] + srcoff | 0,dst[1],dst[2] + dstoff | 0,len);
        return caml_call2(caml_call4(err(_k_),pp_t,src,pp_t,dst),dstoff,len)}
      return caml_call2(caml_call4(err(_j_),pp_t,src,pp_t,dst),srcoff,len)}
    function blit_from_string(src,srcoff,dst,dstoff,len)
     {if
       (0
        <=
        len
        &&
        0
        <=
        srcoff
        &&
        0
        <=
        dstoff
        &&
        !
        ((caml_ml_string_length(src) - srcoff | 0) < len))
       return (dst[3] - dstoff | 0) < len
               ?caml_call2
                 (caml_call4(err(_m_),string_t,src,pp_t,dst),dstoff,len)
               :caml_blit_string_to_bigstring
                 (src,srcoff,dst[1],dst[2] + dstoff | 0,len);
      return caml_call2(caml_call4(err(_l_),string_t,src,pp_t,dst),srcoff,len)}
    function blit_from_bytes(src,srcoff,dst,dstoff,len)
     {if
       (0
        <=
        len
        &&
        0
        <=
        srcoff
        &&
        0
        <=
        dstoff
        &&
        !
        ((caml_ml_bytes_length(src) - srcoff | 0) < len))
       return (dst[3] - dstoff | 0) < len
               ?caml_call2
                 (caml_call4(err(_o_),bytes_t,src,pp_t,dst),dstoff,len)
               :caml_blit_string_to_bigstring
                 (src,srcoff,dst[1],dst[2] + dstoff | 0,len);
      return caml_call2(caml_call4(err(_n_),bytes_t,src,pp_t,dst),srcoff,len)}
    function blit_to_string(src,srcoff,dst,dstoff,len)
     {if
       (0
        <=
        len
        &&
        0
        <=
        srcoff
        &&
        0
        <=
        dstoff
        &&
        !
        ((src[3] - srcoff | 0) < len))
       return (caml_ml_bytes_length(dst) - dstoff | 0) < len
               ?caml_call2
                 (caml_call4(err(_q_),pp_t,src,bytes_t,dst),dstoff,len)
               :caml_blit_bigstring_to_string
                 (src[1],src[2] + srcoff | 0,dst,dstoff,len);
      return caml_call2(caml_call4(err(_p_),pp_t,src,bytes_t,dst),srcoff,len)}
    function compare(t1,t2)
     {var l1=t1[3],l2=t2[3],r=runtime.caml_int_compare(l1,l2);
      if(0 === r)
       {var r$0=runtime.caml_compare_bigstring(t1[1],t1[2],t2[1],t2[2],l1);
        return 0 === r$0?0:0 <= r$0?1:-1}
      return r}
    function equal(t1,t2){return 0 === compare(t1,t2)?1:0}
    function memset(t,x){return runtime.caml_fill_bigstring(t[1],t[2],t[3],x)}
    function create(len){var t=create_unsafe(len);memset(t,0);return t}
    function set_uint8(t,i,c)
     {if(! (t[3] <= i) && 0 <= i)return caml_ba_set_1(t[1],t[2] + i | 0,c);
      return caml_call3(err_invalid_bounds(cst_set_uint8),t,i,1)}
    function set_char(t,i,c)
     {if(! (t[3] <= i) && 0 <= i)return caml_ba_set_1(t[1],t[2] + i | 0,c);
      return caml_call3(err_invalid_bounds(cst_set_char),t,i,1)}
    function get_uint8(t,i)
     {if(! (t[3] <= i) && 0 <= i)return caml_ba_get_1(t[1],t[2] + i | 0);
      return caml_call3(err_invalid_bounds(cst_get_uint8),t,i,1)}
    function get_char(t,i)
     {if(! (t[3] <= i) && 0 <= i)return caml_ba_get_1(t[1],t[2] + i | 0);
      return caml_call3(err_invalid_bounds(cst_get_char),t,i,1)}
    function set_uint16(swap,p,t,i,c)
     {if(! ((t[3] - 2 | 0) < i) && 0 <= i)
       {var _ag_=swap?caml_bswap16(c):c;
        return runtime.caml_ba_uint8_set16(t[1],t[2] + i | 0,_ag_)}
      return caml_call3
              (err_invalid_bounds(caml_call2(Stdlib[28],p,cst_set_uint16)),
               t,
               i,
               2)}
    function set_uint32(swap,p,t,i,c)
     {if(! ((t[3] - 4 | 0) < i) && 0 <= i)
       {var _af_=swap?caml_int32_bswap(c):c;
        return runtime.caml_ba_uint8_set32(t[1],t[2] + i | 0,_af_)}
      return caml_call3
              (err_invalid_bounds(caml_call2(Stdlib[28],p,cst_set_uint32)),
               t,
               i,
               4)}
    function set_uint64(swap,p,t,i,c)
     {if(! ((t[3] - 8 | 0) < i) && 0 <= i)
       {var _ae_=swap?caml_int64_bswap(c):c;
        return runtime.caml_ba_uint8_set64(t[1],t[2] + i | 0,_ae_)}
      return caml_call3
              (err_invalid_bounds(caml_call2(Stdlib[28],p,cst_set_uint64)),
               t,
               i,
               8)}
    function get_uint16(swap,p,t,i)
     {if(! ((t[3] - 2 | 0) < i) && 0 <= i)
       {var r=runtime.caml_ba_uint8_get16(t[1],t[2] + i | 0);
        return swap?caml_bswap16(r):r}
      return caml_call3
              (err_invalid_bounds(caml_call2(Stdlib[28],p,cst_get_uint16)),
               t,
               i,
               2)}
    function get_uint32(swap,p,t,i)
     {if(! ((t[3] - 4 | 0) < i) && 0 <= i)
       {var r=runtime.caml_ba_uint8_get32(t[1],t[2] + i | 0);
        return swap?caml_int32_bswap(r):r}
      return caml_call3
              (err_invalid_bounds(caml_call2(Stdlib[28],p,cst_get_uint32)),
               t,
               i,
               4)}
    function get_uint64(swap,p,t,i)
     {if(! ((t[3] - 8 | 0) < i) && 0 <= i)
       {var r=runtime.caml_ba_uint8_get64(t[1],t[2] + i | 0);
        return swap?caml_int64_bswap(r):r}
      return caml_call3
              (err_invalid_bounds(caml_call2(Stdlib[28],p,cst_get_uint64)),
               t,
               i,
               8)}
    function set_uint16$0(t,i,c)
     {return set_uint16(1 - Stdlib_sys[11],cst_BE,t,i,c)}
    function set_uint32$0(t,i,c)
     {return set_uint32(1 - Stdlib_sys[11],cst_BE$0,t,i,c)}
    function set_uint64$0(t,i,c)
     {return set_uint64(1 - Stdlib_sys[11],cst_BE$1,t,i,c)}
    function get_uint16$0(t,i)
     {return get_uint16(1 - Stdlib_sys[11],cst_BE$2,t,i)}
    function get_uint32$0(t,i)
     {return get_uint32(1 - Stdlib_sys[11],cst_BE$3,t,i)}
    function get_uint64$0(t,i)
     {return get_uint64(1 - Stdlib_sys[11],cst_BE$4,t,i)}
    function set_uint16$1(t,i,c)
     {return set_uint16(Stdlib_sys[11],cst_LE,t,i,c)}
    function set_uint32$1(t,i,c)
     {return set_uint32(Stdlib_sys[11],cst_LE$0,t,i,c)}
    function set_uint64$1(t,i,c)
     {return set_uint64(Stdlib_sys[11],cst_LE$1,t,i,c)}
    function get_uint16$1(t,i){return get_uint16(Stdlib_sys[11],cst_LE$2,t,i)}
    function get_uint32$1(t,i){return get_uint32(Stdlib_sys[11],cst_LE$3,t,i)}
    function get_uint64$1(t,i){return get_uint64(Stdlib_sys[11],cst_LE$4,t,i)}
    function length(t){return t[3]}
    function sum_lengths(caller,l)
     {var acc=0,param=l;
      for(;;)
       {if(param)
         {var t=param[2],h=param[1],acc$0=h[3] + acc | 0;
          if(acc$0 < acc)return caml_call1(Stdlib[1],caller);
          var acc=acc$0,param=t;
          continue}
        return acc}}
    function lenv(l){return sum_lengths(cst_Cstruct_lenv,l)}
    function copyv(ts)
     {var
       sz=sum_lengths(cst_Cstruct_copyv,ts),
       dst=caml_create_bytes(sz),
       _ac_=0;
      function _ad_(off,src)
       {var x=src[3];
        caml_blit_bigstring_to_string(src[1],src[2],dst,off,x);
        return off + x | 0}
      caml_call3(Stdlib_list[22],_ad_,_ac_,ts);
      return caml_call1(Stdlib_bytes[42],dst)}
    function fillv(param,dst)
     {var dst$0=dst,n=0,param$0=param;
      for(;;)
       {if(param$0)
         {var tl=param$0[2],hd=param$0[1],avail=dst$0[3],first=hd[3];
          if(first <= avail)
           {blit(hd,0,dst$0,0,first);
            var
             n$0=n + first | 0,
             dst$1=shift(dst$0,first),
             dst$0=dst$1,
             n=n$0,
             param$0=tl;
            continue}
          blit(hd,0,dst$0,0,avail);
          var rest_hd=shift(hd,avail);
          return [0,n + avail | 0,[0,rest_hd,tl]]}
        return [0,n,0]}}
    function to_bytes(t)
     {var sz=t[3],b=caml_create_bytes(sz);
      caml_blit_bigstring_to_string(t[1],t[2],b,0,sz);
      return b}
    function to_string(t)
     {var _ab_=to_bytes(t);return caml_call1(Stdlib_bytes[42],_ab_)}
    function of_data_abstract(blitfun,lenfun,allocator,opt,len,buf)
     {if(opt)var sth=opt[1],off=sth;else var off=0;
      if(len)
       var len$0=len[1],buflen=len$0;
      else
       var buflen=caml_call1(lenfun,buf);
      if(allocator)
       {var fn=allocator[1],c=caml_call1(fn,buflen);
        caml_call5(blitfun,buf,off,c,0,buflen);
        return set_len(c,buflen)}
      var c$0=create_unsafe(buflen);
      caml_call5(blitfun,buf,off,c$0,0,buflen);
      return c$0}
    function of_string(allocator,off,len,buf)
     {return of_data_abstract
              (blit_from_string,caml_ml_string_length,allocator,off,len,buf)}
    function of_bytes(allocator,off,len,buf)
     {return of_data_abstract
              (blit_from_bytes,caml_ml_bytes_length,allocator,off,len,buf)}
    function of_hex(str)
     {var
       z=[0,create_unsafe(caml_ml_string_length(str) >>> 1 | 0),0,0,0],
       st=[0,z];
      function _W_(char$0)
       {var
         _Z_=st[1],
         acc=_Z_[4],
         p=_Z_[3],
         i=_Z_[2],
         cs=_Z_[1],
         p$0=p + 1 | 0,
         _$_=char$0 - 9 | 0,
         switch$0=0;
        if(4 < _$_ >>> 0)
         {if(23 === _$_)switch$0 = 1}
        else
         if(1 < (_$_ - 2 | 0) >>> 0)switch$0 = 1;
        var _aa_=switch$0?1:0;
        if(_aa_)
         var ___=[0,cs,i,p$0,acc];
        else
         {var switch$1=0;
          if(65 <= char$0)
           if(97 <= char$0)
            if(103 <= char$0)switch$1 = 1;else var match=char$0 - 87 | 0;
           else
            if(71 <= char$0)switch$1 = 1;else var match=char$0 - 55 | 0;
          else
           {var switcher=char$0 - 48 | 0;
            if(9 < switcher >>> 0)switch$1 = 1;else var match=char$0 - 48 | 0}
          if(switch$1)
           var match=caml_call4(Stdlib_format[133],Stdlib[1],_x_,p,char$0);
          if(acc)
           {var y=acc[1];
            set_uint8(cs,i,match | y);
            var ___=[0,cs,i + 1 | 0,p$0,0]}
          else
           var ___=[0,cs,i,p$0,[0,match << 4]]}
        st[1] = ___;
        return 0}
      caml_call2(Stdlib_string[8],_W_,str);
      var _X_=st[1],_Y_=_X_[1];
      if(_X_[4])return caml_call2(Stdlib_format[133],Stdlib[1],_y_);
      var i=_X_[2];
      return sub(_Y_,0,i)}
    function hexdump_pp(fmt,t)
     {function before(fmt,param)
       {return 0 === param
                ?0
                :8 === param
                  ?caml_call2(Stdlib_format[123],fmt,_z_)
                  :caml_call2(Stdlib_format[123],fmt,_A_)}
      function after(fmt,param)
       {return 15 === param?caml_call2(Stdlib_format[123],fmt,_B_):0}
      caml_call2(Stdlib_format[7],fmt,0);
      var _U_=t[3] - 1 | 0,_T_=0;
      if(! (_U_ < 0))
       {var i=_T_;
        for(;;)
         {var column=i % 16 | 0,c=caml_ba_get_1(t[1],t[2] + i | 0);
          caml_call7(Stdlib_format[123],fmt,_C_,before,column,c,after,column);
          var _V_=i + 1 | 0;
          if(_U_ !== i){var i=_V_;continue}
          break}}
      return caml_call2(Stdlib_format[3],fmt,0)}
    var hexdump=caml_call2(Stdlib_format[124],_D_,hexdump_pp);
    function hexdump_to_buffer(buf,t)
     {var f=caml_call1(Stdlib_format[107],buf);
      return caml_call4(Stdlib_format[123],f,_E_,hexdump_pp,t)}
    function split(opt,t,off)
     {if(opt)var sth=opt[1],start=sth;else var start=0;
      try
       {var
         header=sub(t,start,off),
         body=sub(t,start + off | 0,(t[3] - off | 0) - start | 0),
         _R_=[0,header,body];
        return _R_}
      catch(_S_)
       {_S_ = caml_wrap_exception(_S_);
        if(_S_[1] === Stdlib[6])return caml_call2(err_split(t),start,off);
        throw _S_}}
    function iter(lenfn,pfn,t)
     {var body=[0,[0,t]],i=[0,0];
      return function(param)
       {var _N_=body[1];
        if(_N_)
         {var buf=_N_[1];
          if(0 === buf[3]){body[1] = 0;return 0}
          var match=caml_call1(lenfn,buf);
          if(match)
           {var plen=match[1];
            i[1]++;
            try
             {var _P_=split(0,buf,plen),match$0=_P_}
            catch(_Q_)
             {_Q_ = caml_wrap_exception(_Q_);
              if(_Q_[1] !== Stdlib[6])throw _Q_;
              var _O_=i[1],match$0=caml_call2(err_iter(buf),_O_,plen)}
            var rest=match$0[2],p=match$0[1];
            body[1] = [0,rest];
            return [0,caml_call1(pfn,p)]}
          body[1] = 0;
          return 0}
        return 0}}
    function fold(f,next,acc)
     {var acc$0=acc;
      for(;;)
       {var match=caml_call1(next,0);
        if(match)
         {var v=match[1],acc$1=caml_call2(f,acc$0,v),acc$0=acc$1;continue}
        return acc$0}}
    function append(cs1,cs2)
     {var l1=cs1[3],l2=cs2[3],cs=create_unsafe(l1 + l2 | 0);
      blit(cs1,0,cs,0,l1);
      blit(cs2,0,cs,l1,l2);
      return cs}
    function concat(css)
     {if(css)
       {if(css[2])
         {var
           result=create_unsafe(sum_lengths(cst_Cstruct_concat,css)),
           aux=
            function(off,cs)
             {var n=cs[3];blit(cs,0,result,off,n);return off + n | 0};
          caml_call3(Stdlib_list[22],aux,0,css);
          return result}
        var cs=css[1];
        return cs}
      return create_unsafe(0)}
    function rev(t)
     {var n=t[3],out=create_unsafe(n),_L_=n - 1 | 0,_K_=0;
      if(! (_L_ < 0))
       {var i_src=_K_;
        for(;;)
         {var byte$0=get_uint8(t,i_src),i_dst=(n - 1 | 0) - i_src | 0;
          set_uint8(out,i_dst,byte$0);
          var _M_=i_src + 1 | 0;
          if(_L_ !== i_src){var i_src=_M_;continue}
          break}}
      return out}
    var
     LE=
      [0,
       get_uint16$1,
       get_uint32$1,
       get_uint64$1,
       set_uint16$1,
       set_uint32$1,
       set_uint64$1],
     BE=
      [0,
       get_uint16$0,
       get_uint32$0,
       get_uint64$0,
       set_uint16$0,
       set_uint32$0,
       set_uint64$0],
     include=
      [0,
       byte$0,
       empty,
       of_bigarray,
       to_bigarray,
       create,
       create_unsafe,
       of_string,
       of_bytes,
       of_hex,
       equal,
       compare,
       byte_to_int,
       check_bounds,
       check_alignment,
       get_char,
       get_uint8,
       set_char,
       set_uint8,
       sub,
       shift,
       copy,
       blit,
       blit_from_string,
       blit_from_bytes,
       blit_to_string,
       blit_to_string,
       memset,
       length,
       set_len,
       add_len,
       split,
       to_string,
       to_bytes,
       hexdump,
       hexdump_to_buffer,
       hexdump_pp,
       debug,
       BE,
       LE,
       lenv,
       copyv,
       fillv,
       iter,
       fold,
       append,
       concat,
       rev,
       sum_lengths];
    caml_register_global(69,include,"Cstruct");
    function of_string$0(off,len,x){return of_string(0,off,len,x)}
    function of_bytes$0(off,len,x){return of_bytes(0,off,len,x)}
    function to_string$0(opt,len,t)
     {if(opt)var sth=opt[1],off=sth;else var off=0;
      if(len)var len$0=len[1],len$1=len$0;else var len$1=t[3] - off | 0;
      return copy(t,off,len$1)}
    function to_bytes$0(opt,len,t)
     {if(opt)var sth=opt[1],off=sth;else var off=0;
      if(len)var len$0=len[1],len$1=len$0;else var len$1=t[3] - off | 0;
      var _J_=copy(t,off,len$1);
      return caml_call1(Stdlib_bytes[43],_J_)}
    function pp(ppf,t){return hexdump_pp(ppf,t)}
    function blit$0(src,src_off,dst,dst_off,len)
     {return blit(src,src_off,dst,dst_off,len)}
    function blit_from_string$0(src,src_off,dst,dst_off,len)
     {return blit_from_string(src,src_off,dst,dst_off,len)}
    function blit_from_bytes$0(src,src_off,dst,dst_off,len)
     {return blit_from_bytes(src,src_off,dst,dst_off,len)}
    function blit_to_bytes(src,src_off,dst,dst_off,len)
     {return blit_to_string(src,src_off,dst,dst_off,len)}
    function sub$0(t,off,len){return sub(t,off,len)}
    function concat$0(vss)
     {var res=create_unsafe(sum_lengths(cst_Cstruct_Cap_concat,vss));
      function go(off,v)
       {var len=v[3];blit(v,0,res,off,len);return off + len | 0}
      var len=caml_call3(Stdlib_list[22],go,0,vss);
      if(len === res[3])return res;
      throw [0,Assert_failure,_F_]}
    function _G_(_I_){return _I_}
    var
     Cstruct_cap=
      [0,
       create,
       create_unsafe,
       function(_H_){return _H_},
       _G_,
       of_string$0,
       of_bytes$0,
       of_hex,
       to_bigarray,
       equal,
       compare,
       check_alignment,
       get_char,
       get_uint8,
       set_char,
       set_uint8,
       sub$0,
       shift,
       to_string$0,
       to_bytes$0,
       blit$0,
       blit_from_string$0,
       blit_from_bytes$0,
       blit_to_bytes,
       memset,
       length,
       split,
       pp,
       BE,
       LE,
       lenv,
       copyv,
       fillv,
       iter,
       fold,
       append,
       concat$0,
       rev];
    caml_register_global(70,Cstruct_cap,"Cstruct_cap");
    return}
  (function(){return this}()));


//# 1 "../../.js/hex/hex.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_ba_get_1=runtime.caml_ba_get_1,
     caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_string_get=runtime.caml_string_get,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_string_unsafe_get=runtime.caml_string_unsafe_get;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    var
     global_data=runtime.caml_get_global_data(),
     cst$2=caml_string_of_jsbytes("."),
     cst$1=caml_string_of_jsbytes("  "),
     cst$3=caml_string_of_jsbytes("\n"),
     cst=caml_string_of_jsbytes(""),
     hexa=caml_string_of_jsbytes("0123456789abcdef"),
     hexa1=
      caml_string_of_jsbytes
       ("0000000000000000111111111111111122222222222222223333333333333333444444444444444455555555555555556666666666666666777777777777777788888888888888889999999999999999aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccccddddddddddddddddeeeeeeeeeeeeeeeeffffffffffffffff"),
     hexa2=
      caml_string_of_jsbytes
       ("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"),
     cst$0=caml_string_of_jsbytes(""),
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_string=global_data.Stdlib__string,
     Bigarray_compat=global_data.Bigarray_compat,
     Cstruct=global_data.Cstruct,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib=global_data.Stdlib,
     _h_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _e_=[0,[0,0],caml_string_of_jsbytes("%c")],
     _c_=
      [0,
       [4,0,0,[0,8],[11,caml_string_of_jsbytes(": "),0]],
       caml_string_of_jsbytes("%.8d: ")],
     _f_=[0,[12,32,0],caml_string_of_jsbytes(" ")],
     _g_=[0,[0,0],caml_string_of_jsbytes("%c")],
     _d_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _b_=
      [0,
       [11,caml_string_of_jsbytes("hex conversion: invalid hex string"),0],
       caml_string_of_jsbytes("hex conversion: invalid hex string")],
     _a_=
      [0,
       [11,
        caml_string_of_jsbytes("Hex.to_char: "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" is an invalid char"),0]]],
       caml_string_of_jsbytes("Hex.to_char: %d is an invalid char")];
    function invalid_arg(fmt)
     {function _M_(str){throw [0,Stdlib[6],str]}
      return caml_call2(Stdlib_printf[9],_M_,fmt)}
    function of_char(x)
     {var _L_=caml_string_get(hexa,x & 15);
      return [0,caml_string_get(hexa,x >>> 4 | 0),_L_]}
    function to_char(x,y)
     {function code(c)
       {if(65 <= c)
         {if(97 <= c)
           {if(! (103 <= c))return c - 87 | 0}
          else
           if(! (71 <= c))return c - 55 | 0}
        else
         {var switcher=c - 48 | 0;if(! (9 < switcher >>> 0))return c - 48 | 0}
        return caml_call1(invalid_arg(_a_),c)}
      var _J_=code(y),_K_=(code(x) << 4) + _J_ | 0;
      return caml_call1(Stdlib_char[1],_K_)}
    function of_helper(ignore,next,len)
     {var buf=caml_call1(Stdlib_buffer[1],len),_H_=len - 1 | 0,_G_=0;
      if(! (_H_ < 0))
       {var i=_G_;
        for(;;)
         {var c=caml_call1(next,i);
          if(! caml_call2(Stdlib_list[33],c,ignore))
           {var match=of_char(c),y=match[2],x=match[1];
            caml_call2(Stdlib_buffer[10],buf,x);
            caml_call2(Stdlib_buffer[10],buf,y)}
          var _I_=i + 1 | 0;
          if(_H_ !== i){var i=_I_;continue}
          break}}
      return [0,3603131,caml_call1(Stdlib_buffer[2],buf)]}
    function of_string(ignore,s)
     {if(ignore)
       {var ignore$0=ignore[1],_F_=caml_ml_string_length(s);
        return of_helper
                (ignore$0,function(i){return caml_string_get(s,i)},_F_)}
      var
       len=caml_ml_string_length(s),
       buf=caml_create_bytes(len * 2 | 0),
       _D_=len - 1 | 0,
       _C_=0;
      if(! (_D_ < 0))
       {var i=_C_;
        for(;;)
         {caml_bytes_unsafe_set
           (buf,
            i * 2 | 0,
            caml_string_unsafe_get(hexa1,caml_string_unsafe_get(s,i)));
          caml_bytes_unsafe_set
           (buf,
            (i * 2 | 0) + 1 | 0,
            caml_string_unsafe_get(hexa2,caml_string_unsafe_get(s,i)));
          var _E_=i + 1 | 0;
          if(_D_ !== i){var i=_E_;continue}
          break}}
      return [0,3603131,caml_call1(Stdlib_bytes[6],buf)]}
    function of_bytes(ignore,b)
     {return of_string(ignore,caml_call1(Stdlib_bytes[6],b))}
    function to_helper(empty_return,create,set,param)
     {var s=param[2];
      if(runtime.caml_string_equal(s,cst))return empty_return;
      var n=caml_ml_string_length(s),buf=caml_call1(create,n / 2 | 0),i=0,j=1;
      for(;;)
       {if(! (n <= i))
         {if(! (n <= j))
           {var _B_=caml_string_get(s,j);
            caml_call3(set,buf,i / 2 | 0,to_char(caml_string_get(s,i),_B_));
            var j$0=j + 2 | 0,i$0=j + 1 | 0,i=i$0,j=j$0;
            continue}
          invalid_arg(_b_)}
        return buf}}
    function to_bytes(hex)
     {return to_helper
              (Stdlib_bytes[3],caml_create_bytes,runtime.caml_bytes_set,hex)}
    function to_string(hex)
     {var _A_=to_bytes(hex);return caml_call1(Stdlib_bytes[6],_A_)}
    function of_cstruct(opt,cs)
     {if(opt)var sth=opt[1],ignore=sth;else var ignore=0;
      var _z_=cs[3];
      return of_helper
              (ignore,
               function(i){return caml_ba_get_1(cs[1],cs[2] + i | 0)},
               _z_)}
    var empty_cstruct=caml_call4(Cstruct[7],0,0,0,cst$0);
    function to_cstruct(hex)
     {return to_helper(empty_cstruct,Cstruct[5],Cstruct[17],hex)}
    function of_bigstring(opt,buf)
     {if(opt)var sth=opt[1],ignore=sth;else var ignore=0;
      var _x_=runtime.caml_ba_dim_1(buf);
      return of_helper
              (ignore,function(_y_){return caml_ba_get_1(buf,_y_)},_x_)}
    function to_bigstring(hex)
     {var
       _w_=
        caml_call2
         (Bigarray_compat[19][1],Bigarray_compat[13],Bigarray_compat[15]);
      return to_helper(empty_cstruct[1],_w_,runtime.caml_ba_set_1,hex)}
    function hexdump_s(opt,_j_,param)
     {var s=param[2];
      if(opt)
       var sth=opt[1],print_row_numbers=sth;
      else
       var print_row_numbers=1;
      if(_j_)var sth$0=_j_[1],print_chars=sth$0;else var print_chars=1;
      var
       buf=caml_call1(Stdlib_buffer[1],caml_ml_string_length(s) * 4 | 0),
       hex_len=32;
      function symbol(buf,s){return caml_call2(Stdlib_buffer[14],buf,s)}
      var
       n=caml_ml_string_length(s),
       _k_=0 === (n % 32 | 0)?0:1,
       rows=(n / 32 | 0) + _k_ | 0,
       _m_=rows - 1 | 0,
       _l_=0;
      if(! (_m_ < 0))
       {var row=_l_;
        for(;;)
         {var last_row=row === (rows - 1 | 0)?1:0;
          if(print_row_numbers)
           symbol(buf,caml_call2(Stdlib_printf[4],_c_,row));
          if(last_row)
           var
            rem=n % 32 | 0,
            hex_len$0=0 === rem?hex_len:rem,
            row_len=hex_len$0;
          else
           var row_len=hex_len;
          var _o_=row_len - 1 | 0,_n_=0;
          if(! (_o_ < 0))
           {var i$1=_n_;
            for(;;)
             {var _s_=0 === (i$1 % 4 | 0)?1:0,_t_=_s_?0 !== i$1?1:0:_s_;
              if(_t_)symbol(buf,caml_call1(Stdlib_printf[4],_f_));
              var i$2=i$1 + (row * 32 | 0) | 0,_u_=caml_string_get(s,i$2);
              symbol(buf,caml_call2(Stdlib_printf[4],_g_,_u_));
              var _v_=i$1 + 1 | 0;
              if(_o_ !== i$1){var i$1=_v_;continue}
              break}}
          if(last_row)
           {var
             missed_chars=32 - row_len | 0,
             pad=missed_chars + (missed_chars / 4 | 0) | 0,
             _p_=caml_call2(Stdlib_string[1],pad,32);
            symbol(buf,caml_call2(Stdlib_printf[4],_d_,_p_))}
          if(print_chars)
           {symbol(buf,cst$1);
            var i=0,j=1;
            for(;;)
             {if(! ((row_len - 2 | 0) < i))
               {var
                 pos=i + (row * 32 | 0) | 0,
                 pos$0=pos + 1 | 0,
                 _q_=caml_string_get(s,pos$0),
                 c=to_char(caml_string_get(s,pos),_q_),
                 switcher=c - 9 | 0;
                if(1 < switcher >>> 0)
                 symbol(buf,caml_call2(Stdlib_printf[4],_e_,c));
                else
                 symbol(buf,cst$2);
                var j$0=j + 2 | 0,i$0=j + 1 | 0,i=i$0,j=j$0;
                continue}
              break}}
          symbol(buf,cst$3);
          var _r_=row + 1 | 0;
          if(_m_ !== row){var row=_r_;continue}
          break}}
      return caml_call1(Stdlib_buffer[2],buf)}
    function hexdump(print_row_numbers,print_chars,hex)
     {var _i_=hexdump_s(print_row_numbers,print_chars,hex);
      return caml_call2(Stdlib_printf[2],_h_,_i_)}
    function pp(ppf,param)
     {var hex=param[2];return caml_call2(Stdlib_format[13],ppf,hex)}
    function show(param){var hex=param[2];return hex}
    var
     Hex=
      [0,
       of_char,
       to_char,
       of_string,
       to_string,
       of_bytes,
       to_bytes,
       of_cstruct,
       to_cstruct,
       of_bigstring,
       to_bigstring,
       hexdump,
       hexdump_s,
       pp,
       show];
    runtime.caml_register_global(26,Hex,"Hex");
    return}
  (function(){return this}()));


//# 1 "../../.js/unix/unix.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_check_bound=runtime.caml_check_bound,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_sys_exit=runtime.caml_sys_exit,
     caml_wrap_exception=runtime.caml_wrap_exception,
     unix_inet_addr_of_string=runtime.unix_inet_addr_of_string;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_close_process_full=caml_string_of_jsbytes("close_process_full"),
     cst_close_process=caml_string_of_jsbytes("close_process"),
     cst_close_process_out=caml_string_of_jsbytes("close_process_out"),
     cst_close_process_in=caml_string_of_jsbytes("close_process_in"),
     cst_process_full_pid=caml_string_of_jsbytes("process_full_pid"),
     cst_process_pid=caml_string_of_jsbytes("process_pid"),
     cst_process_out_pid=caml_string_of_jsbytes("process_out_pid"),
     cst_process_in_pid=caml_string_of_jsbytes("process_in_pid"),
     cst$9=caml_string_of_jsbytes(""),
     cst_c$0=caml_string_of_jsbytes("-c"),
     cst_c=caml_string_of_jsbytes("-c"),
     cst$8=caml_string_of_jsbytes(""),
     cst_udp$1=caml_string_of_jsbytes("udp"),
     cst_tcp$1=caml_string_of_jsbytes("tcp"),
     cst$5=caml_string_of_jsbytes(""),
     cst$7=caml_string_of_jsbytes(""),
     cst_tcp=caml_string_of_jsbytes("tcp"),
     cst_udp=caml_string_of_jsbytes("udp"),
     cst_udp$0=caml_string_of_jsbytes("udp"),
     cst_tcp$0=caml_string_of_jsbytes("tcp"),
     cst$6=caml_string_of_jsbytes(""),
     cst_0_0_0_0$0=caml_string_of_jsbytes("0.0.0.0"),
     cst_127_0_0_1$0=caml_string_of_jsbytes("127.0.0.1"),
     cst_Unix_sendto=caml_string_of_jsbytes("Unix.sendto"),
     cst_Unix_send=caml_string_of_jsbytes("Unix.send"),
     cst_Unix_recvfrom=caml_string_of_jsbytes("Unix.recvfrom"),
     cst_Unix_recv=caml_string_of_jsbytes("Unix.recv"),
     cst_Unix_single_write=caml_string_of_jsbytes("Unix.single_write"),
     cst_Unix_write=caml_string_of_jsbytes("Unix.write"),
     cst_Unix_read=caml_string_of_jsbytes("Unix.read"),
     cst$4=caml_string_of_jsbytes(""),
     cst_execvpe=caml_string_of_jsbytes("execvpe"),
     cst_PATH=caml_string_of_jsbytes("PATH"),
     cst_bin_usr_bin=caml_string_of_jsbytes("/bin:/usr/bin"),
     cst$1=caml_string_of_jsbytes(': "'),
     cst_failed=caml_string_of_jsbytes('" failed'),
     cst_on=caml_string_of_jsbytes(' on "'),
     cst$2=caml_string_of_jsbytes('"'),
     cst$3=caml_string_of_jsbytes(": "),
     cst_E2BIG=caml_string_of_jsbytes("E2BIG"),
     cst_EACCES=caml_string_of_jsbytes("EACCES"),
     cst_EAGAIN=caml_string_of_jsbytes("EAGAIN"),
     cst_EBADF=caml_string_of_jsbytes("EBADF"),
     cst_EBUSY=caml_string_of_jsbytes("EBUSY"),
     cst_ECHILD=caml_string_of_jsbytes("ECHILD"),
     cst_EDEADLK=caml_string_of_jsbytes("EDEADLK"),
     cst_EDOM=caml_string_of_jsbytes("EDOM"),
     cst_EEXIST=caml_string_of_jsbytes("EEXIST"),
     cst_EFAULT=caml_string_of_jsbytes("EFAULT"),
     cst_EFBIG=caml_string_of_jsbytes("EFBIG"),
     cst_EINTR=caml_string_of_jsbytes("EINTR"),
     cst_EINVAL=caml_string_of_jsbytes("EINVAL"),
     cst_EIO=caml_string_of_jsbytes("EIO"),
     cst_EISDIR=caml_string_of_jsbytes("EISDIR"),
     cst_EMFILE=caml_string_of_jsbytes("EMFILE"),
     cst_EMLINK=caml_string_of_jsbytes("EMLINK"),
     cst_ENAMETOOLONG=caml_string_of_jsbytes("ENAMETOOLONG"),
     cst_ENFILE=caml_string_of_jsbytes("ENFILE"),
     cst_ENODEV=caml_string_of_jsbytes("ENODEV"),
     cst_ENOENT=caml_string_of_jsbytes("ENOENT"),
     cst_ENOEXEC=caml_string_of_jsbytes("ENOEXEC"),
     cst_ENOLCK=caml_string_of_jsbytes("ENOLCK"),
     cst_ENOMEM=caml_string_of_jsbytes("ENOMEM"),
     cst_ENOSPC=caml_string_of_jsbytes("ENOSPC"),
     cst_ENOSYS=caml_string_of_jsbytes("ENOSYS"),
     cst_ENOTDIR=caml_string_of_jsbytes("ENOTDIR"),
     cst_ENOTEMPTY=caml_string_of_jsbytes("ENOTEMPTY"),
     cst_ENOTTY=caml_string_of_jsbytes("ENOTTY"),
     cst_ENXIO=caml_string_of_jsbytes("ENXIO"),
     cst_EPERM=caml_string_of_jsbytes("EPERM"),
     cst_EPIPE=caml_string_of_jsbytes("EPIPE"),
     cst_ERANGE=caml_string_of_jsbytes("ERANGE"),
     cst_EROFS=caml_string_of_jsbytes("EROFS"),
     cst_ESPIPE=caml_string_of_jsbytes("ESPIPE"),
     cst_ESRCH=caml_string_of_jsbytes("ESRCH"),
     cst_EXDEV=caml_string_of_jsbytes("EXDEV"),
     cst_EWOULDBLOCK=caml_string_of_jsbytes("EWOULDBLOCK"),
     cst_EINPROGRESS=caml_string_of_jsbytes("EINPROGRESS"),
     cst_EALREADY=caml_string_of_jsbytes("EALREADY"),
     cst_ENOTSOCK=caml_string_of_jsbytes("ENOTSOCK"),
     cst_EDESTADDRREQ=caml_string_of_jsbytes("EDESTADDRREQ"),
     cst_EMSGSIZE=caml_string_of_jsbytes("EMSGSIZE"),
     cst_EPROTOTYPE=caml_string_of_jsbytes("EPROTOTYPE"),
     cst_ENOPROTOOPT=caml_string_of_jsbytes("ENOPROTOOPT"),
     cst_EPROTONOSUPPORT=caml_string_of_jsbytes("EPROTONOSUPPORT"),
     cst_ESOCKTNOSUPPORT=caml_string_of_jsbytes("ESOCKTNOSUPPORT"),
     cst_EOPNOTSUPP=caml_string_of_jsbytes("EOPNOTSUPP"),
     cst_EPFNOSUPPORT=caml_string_of_jsbytes("EPFNOSUPPORT"),
     cst_EAFNOSUPPORT=caml_string_of_jsbytes("EAFNOSUPPORT"),
     cst_EADDRINUSE=caml_string_of_jsbytes("EADDRINUSE"),
     cst_EADDRNOTAVAIL=caml_string_of_jsbytes("EADDRNOTAVAIL"),
     cst_ENETDOWN=caml_string_of_jsbytes("ENETDOWN"),
     cst_ENETUNREACH=caml_string_of_jsbytes("ENETUNREACH"),
     cst_ENETRESET=caml_string_of_jsbytes("ENETRESET"),
     cst_ECONNABORTED=caml_string_of_jsbytes("ECONNABORTED"),
     cst_ECONNRESET=caml_string_of_jsbytes("ECONNRESET"),
     cst_ENOBUFS=caml_string_of_jsbytes("ENOBUFS"),
     cst_EISCONN=caml_string_of_jsbytes("EISCONN"),
     cst_ENOTCONN=caml_string_of_jsbytes("ENOTCONN"),
     cst_ESHUTDOWN=caml_string_of_jsbytes("ESHUTDOWN"),
     cst_ETOOMANYREFS=caml_string_of_jsbytes("ETOOMANYREFS"),
     cst_ETIMEDOUT=caml_string_of_jsbytes("ETIMEDOUT"),
     cst_ECONNREFUSED=caml_string_of_jsbytes("ECONNREFUSED"),
     cst_EHOSTDOWN=caml_string_of_jsbytes("EHOSTDOWN"),
     cst_EHOSTUNREACH=caml_string_of_jsbytes("EHOSTUNREACH"),
     cst_ELOOP=caml_string_of_jsbytes("ELOOP"),
     cst_EOVERFLOW=caml_string_of_jsbytes("EOVERFLOW"),
     shell=caml_string_of_jsbytes("/bin/sh"),
     cst_Unix_Unix_error=caml_string_of_jsbytes("Unix.Unix_error"),
     cst=caml_string_of_jsbytes(""),
     cst$0=caml_string_of_jsbytes(""),
     cst_Unix_Unix_error$0=caml_string_of_jsbytes("Unix.Unix_error"),
     cst_0_0_0_0=caml_string_of_jsbytes("0.0.0.0"),
     cst_127_0_0_1=caml_string_of_jsbytes("127.0.0.1"),
     cst$10=caml_string_of_jsbytes("::"),
     cst_1=caml_string_of_jsbytes("::1"),
     Stdlib=global_data.Stdlib,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_int=global_data.Stdlib__int,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_filename=global_data.Stdlib__filename,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_callback=global_data.Stdlib__callback,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Unix_error=[248,cst_Unix_Unix_error,runtime.caml_fresh_oo_id(0)];
    caml_call2
     (Stdlib_callback[2],cst_Unix_Unix_error$0,[0,Unix_error,0,cst$0,cst]);
    var
     _p_=[0,1],
     _q_=[0,1],
     _o_=[0,1],
     _l_=[0,1],
     _m_=[0,1],
     _n_=[0,1],
     _j_=[0,1],
     _k_=[0,1],
     _i_=[0,1],
     _h_=[0,1],
     _e_=[0,0],
     _f_=[0,0],
     _g_=[0,0],
     _d_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _c_=
      [0,
       [11,caml_string_of_jsbytes("EUNKNOWNERR "),[4,0,0,0,0]],
       caml_string_of_jsbytes("EUNKNOWNERR %d")],
     _b_=
      [0,
       [11,
        caml_string_of_jsbytes("Unix.Unix_error(Unix."),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [3,0,[11,caml_string_of_jsbytes(", "),[3,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("Unix.Unix_error(Unix.%s, %S, %S)")];
    function _a_(param)
     {if(param[1] === Unix_error)
       {var s=param[4],s$0=param[3],e=param[2];
        if(typeof e === "number")
         {var _dC_=e;
          if(34 <= _dC_)
           switch(_dC_)
            {case 34:var msg=cst_ESPIPE;break;
             case 35:var msg=cst_ESRCH;break;
             case 36:var msg=cst_EXDEV;break;
             case 37:var msg=cst_EWOULDBLOCK;break;
             case 38:var msg=cst_EINPROGRESS;break;
             case 39:var msg=cst_EALREADY;break;
             case 40:var msg=cst_ENOTSOCK;break;
             case 41:var msg=cst_EDESTADDRREQ;break;
             case 42:var msg=cst_EMSGSIZE;break;
             case 43:var msg=cst_EPROTOTYPE;break;
             case 44:var msg=cst_ENOPROTOOPT;break;
             case 45:var msg=cst_EPROTONOSUPPORT;break;
             case 46:var msg=cst_ESOCKTNOSUPPORT;break;
             case 47:var msg=cst_EOPNOTSUPP;break;
             case 48:var msg=cst_EPFNOSUPPORT;break;
             case 49:var msg=cst_EAFNOSUPPORT;break;
             case 50:var msg=cst_EADDRINUSE;break;
             case 51:var msg=cst_EADDRNOTAVAIL;break;
             case 52:var msg=cst_ENETDOWN;break;
             case 53:var msg=cst_ENETUNREACH;break;
             case 54:var msg=cst_ENETRESET;break;
             case 55:var msg=cst_ECONNABORTED;break;
             case 56:var msg=cst_ECONNRESET;break;
             case 57:var msg=cst_ENOBUFS;break;
             case 58:var msg=cst_EISCONN;break;
             case 59:var msg=cst_ENOTCONN;break;
             case 60:var msg=cst_ESHUTDOWN;break;
             case 61:var msg=cst_ETOOMANYREFS;break;
             case 62:var msg=cst_ETIMEDOUT;break;
             case 63:var msg=cst_ECONNREFUSED;break;
             case 64:var msg=cst_EHOSTDOWN;break;
             case 65:var msg=cst_EHOSTUNREACH;break;
             case 66:var msg=cst_ELOOP;break;
             default:var msg=cst_EOVERFLOW}
          else
           switch(_dC_)
            {case 0:var msg=cst_E2BIG;break;
             case 1:var msg=cst_EACCES;break;
             case 2:var msg=cst_EAGAIN;break;
             case 3:var msg=cst_EBADF;break;
             case 4:var msg=cst_EBUSY;break;
             case 5:var msg=cst_ECHILD;break;
             case 6:var msg=cst_EDEADLK;break;
             case 7:var msg=cst_EDOM;break;
             case 8:var msg=cst_EEXIST;break;
             case 9:var msg=cst_EFAULT;break;
             case 10:var msg=cst_EFBIG;break;
             case 11:var msg=cst_EINTR;break;
             case 12:var msg=cst_EINVAL;break;
             case 13:var msg=cst_EIO;break;
             case 14:var msg=cst_EISDIR;break;
             case 15:var msg=cst_EMFILE;break;
             case 16:var msg=cst_EMLINK;break;
             case 17:var msg=cst_ENAMETOOLONG;break;
             case 18:var msg=cst_ENFILE;break;
             case 19:var msg=cst_ENODEV;break;
             case 20:var msg=cst_ENOENT;break;
             case 21:var msg=cst_ENOEXEC;break;
             case 22:var msg=cst_ENOLCK;break;
             case 23:var msg=cst_ENOMEM;break;
             case 24:var msg=cst_ENOSPC;break;
             case 25:var msg=cst_ENOSYS;break;
             case 26:var msg=cst_ENOTDIR;break;
             case 27:var msg=cst_ENOTEMPTY;break;
             case 28:var msg=cst_ENOTTY;break;
             case 29:var msg=cst_ENXIO;break;
             case 30:var msg=cst_EPERM;break;
             case 31:var msg=cst_EPIPE;break;
             case 32:var msg=cst_ERANGE;break;
             default:var msg=cst_EROFS}}
        else
         var x=e[1],msg=caml_call2(Stdlib_printf[4],_c_,x);
        return [0,caml_call4(Stdlib_printf[4],_b_,msg,s$0,s)]}
      return 0}
    caml_call1(Stdlib_printexc[9],_a_);
    function handle_unix_error(f,arg)
     {try
       {var _dB_=caml_call1(f,arg);return _dB_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Unix_error)
         {var
           arg$0=exn[4],
           fun_name=exn[3],
           err=exn[2],
           _dz_=caml_check_bound(runtime.caml_sys_argv(0),0)[1];
          caml_call1(Stdlib[49],_dz_);
          caml_call1(Stdlib[49],cst$1);
          caml_call1(Stdlib[49],fun_name);
          caml_call1(Stdlib[49],cst_failed);
          if(0 < caml_ml_string_length(arg$0))
           {caml_call1(Stdlib[49],cst_on);
            caml_call1(Stdlib[49],arg$0);
            caml_call1(Stdlib[49],cst$2)}
          caml_call1(Stdlib[49],cst$3);
          var _dA_=runtime.unix_error_message(err);
          caml_call1(Stdlib[53],_dA_);
          return caml_call1(Stdlib[99],2)}
        throw exn}}
    function execvpe(name,args,env)
     {try
       {var _dt_=runtime.unix_execvpe(name,args,env);return _dt_}
      catch(_du_)
       {_du_ = caml_wrap_exception(_du_);
        if(_du_[1] === Unix_error)
         {var _ds_=_du_[2];
          if(typeof _ds_ === "number" && 25 === _ds_)
           {var
             exec=
              function(file)
               {try
                 {var _dx_=runtime.unix_execve(file,args,env);return _dx_}
                catch(_dy_)
                 {_dy_ = caml_wrap_exception(_dy_);
                  if(_dy_[1] === Unix_error)
                   {var _dw_=_dy_[2];
                    if(typeof _dw_ === "number" && 21 === _dw_)
                     {var
                       argc=args.length - 1,
                       args$0=
                        0 === argc
                         ?args
                         :caml_call3(Stdlib_array[7],args,1,argc - 1 | 0),
                       new_args=caml_call2(Stdlib_array[5],[0,shell,file],args$0);
                      return runtime.unix_execve
                              (caml_check_bound(new_args,0)[1],new_args,env)}}
                  throw _dy_}};
            if(caml_call2(Stdlib_string[22],name,47))return exec(name);
            try
             {var _dr_=runtime.caml_sys_unsafe_getenv(cst_PATH),_dq_=_dr_}
            catch(_dv_)
             {_dv_ = caml_wrap_exception(_dv_);
              if(_dv_ !== Stdlib[8])throw _dv_;
              var _dq_=cst_bin_usr_bin}
            var
             param$0=caml_call2(Stdlib_string[35],58,_dq_),
             eacces=0,
             param=param$0;
            for(;;)
             {if(param)
               {var
                 rem=param[2],
                 dir=param[1],
                 dir$0=caml_string_equal(dir,cst$4)?Stdlib_filename[1]:dir;
                try
                 {var _do_=exec(caml_call2(Stdlib_filename[4],dir$0,name));
                  return _do_}
                catch(exn)
                 {exn = caml_wrap_exception(exn);
                  if(exn[1] === Unix_error)
                   {var err=exn[2];
                    if(typeof err === "number")
                     {var _dn_=err - 62 | 0,switch$0=0;
                      if(4 < _dn_ >>> 0)
                       {if(! (-35 <= _dn_))
                         {var switcher=_dn_ + 62 | 0;
                          switch(switcher)
                           {case 1:var eacces=1,param=rem;continue;
                            case 14:
                            case 17:
                            case 19:
                            case 20:
                            case 26:switch$0 = 1;break
                            }}}
                      else
                       if(2 < (_dn_ - 1 | 0) >>> 0)switch$0 = 1;
                      if(switch$0){var param=rem;continue}}
                    throw exn}
                  throw exn}}
              var _dp_=eacces?1:20;
              throw [0,Unix_error,_dp_,cst_execvpe,name]}}}
        throw _du_}}
    var stdin=0,stdout=1,stderr=2;
    function read(fd,buf,ofs,len)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_bytes_length(buf) - len | 0) < ofs))
       return runtime.unix_read(fd,buf,ofs,len);
      return caml_call1(Stdlib[1],cst_Unix_read)}
    function write(fd,buf,ofs,len)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_bytes_length(buf) - len | 0) < ofs))
       return runtime.unix_write(fd,buf,ofs,len);
      return caml_call1(Stdlib[1],cst_Unix_write)}
    function single_write(fd,buf,ofs,len)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_bytes_length(buf) - len | 0) < ofs))
       return runtime.unix_single_write(fd,buf,ofs,len);
      return caml_call1(Stdlib[1],cst_Unix_single_write)}
    function write_substring(fd,buf,ofs,len)
     {return write(fd,caml_call1(Stdlib_bytes[43],buf),ofs,len)}
    function single_write_substring(fd,buf,ofs,len)
     {return single_write(fd,caml_call1(Stdlib_bytes[43],buf),ofs,len)}
    function map_file(fd,opt,kind,layout,shared,dims)
     {if(opt)var sth=opt[1],pos=sth;else var pos=_d_;
      return runtime.caml_unix_map_file_bytecode
              (fd,kind,layout,shared,dims,pos)}
    function pause(param)
     {var sigs=runtime.unix_sigprocmask(1,0);
      return runtime.unix_sigsuspend(sigs)}
    function sleep(duration){return runtime.unix_sleep(duration)}
    var
     inet_addr_any=unix_inet_addr_of_string(cst_0_0_0_0),
     inet_addr_loopback=unix_inet_addr_of_string(cst_127_0_0_1);
    try
     {var _A_=unix_inet_addr_of_string(cst$10),inet_addr_any$0=_A_}
    catch(_dm_)
     {_dm_ = caml_wrap_exception(_dm_);
      if(_dm_[1] !== Stdlib[7])throw _dm_;
      var inet_addr_any$0=inet_addr_any}
    try
     {var _z_=unix_inet_addr_of_string(cst_1),inet6_addr_loopback=_z_}
    catch(_dl_)
     {_dl_ = caml_wrap_exception(_dl_);
      if(_dl_[1] !== Stdlib[7])throw _dl_;
      var inet6_addr_loopback=inet_addr_loopback}
    function domain_of_sockaddr(param)
     {if(0 === param[0])return 0;
      var a=param[1];
      return 16 === caml_ml_string_length(a)?2:1}
    function recv(fd,buf,ofs,len,flags)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_bytes_length(buf) - len | 0) < ofs))
       return runtime.unix_recv(fd,buf,ofs,len,flags);
      return caml_call1(Stdlib[1],cst_Unix_recv)}
    function recvfrom(fd,buf,ofs,len,flags)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_bytes_length(buf) - len | 0) < ofs))
       return runtime.unix_recvfrom(fd,buf,ofs,len,flags);
      return caml_call1(Stdlib[1],cst_Unix_recvfrom)}
    function send(fd,buf,ofs,len,flags)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_bytes_length(buf) - len | 0) < ofs))
       return runtime.unix_send(fd,buf,ofs,len,flags);
      return caml_call1(Stdlib[1],cst_Unix_send)}
    function sendto(fd,buf,ofs,len,flags,addr)
     {if
       (0
        <=
        ofs
        &&
        0
        <=
        len
        &&
        !
        ((caml_ml_bytes_length(buf) - len | 0) < ofs))
       return runtime.unix_sendto(fd,buf,ofs,len,flags,addr);
      return caml_call1(Stdlib[1],cst_Unix_sendto)}
    function send_substring(fd,buf,ofs,len,flags)
     {return send(fd,caml_call1(Stdlib_bytes[43],buf),ofs,len,flags)}
    function sendto_substring(fd,buf,ofs,len,flags,addr)
     {return sendto(fd,caml_call1(Stdlib_bytes[43],buf),ofs,len,flags,addr)}
    function getsockopt(fd,opt){return runtime.unix_getsockopt(0,fd,opt)}
    function setsockopt(fd,opt,v){return runtime.unix_setsockopt(0,fd,opt,v)}
    function getsockopt_int(fd,opt){return runtime.unix_getsockopt(1,fd,opt)}
    function setsockopt_int(fd,opt,v)
     {return runtime.unix_setsockopt(1,fd,opt,v)}
    function getsockopt_optint(fd,opt)
     {return runtime.unix_getsockopt(2,fd,opt)}
    function setsockopt_optint(fd,opt,v)
     {return runtime.unix_setsockopt(2,fd,opt,v)}
    function getsockopt_float(fd,opt)
     {return runtime.unix_getsockopt(3,fd,opt)}
    function setsockopt_float(fd,opt,v)
     {return runtime.unix_setsockopt(3,fd,opt,v)}
    function getsockopt_error(fd){return runtime.unix_getsockopt(4,fd,0)}
    function getaddrinfo(node,service,opts)
     {try
       {var
         _db_=runtime.unix_getaddrinfo(node,service,opts),
         _dc_=caml_call1(Stdlib_list[9],_db_);
        return _dc_}
      catch(_dd_)
       {_dd_ = caml_wrap_exception(_dd_);
        if(_dd_[1] === Stdlib[6])
         {var
           opt_socktype=[0,0],
           opt_protocol=[0,0],
           opt_passive=[0,0],
           _c0_=
            function(param)
             {if(typeof param === "number")
               {if(2 === param){opt_passive[1] = 1;return 0}}
              else
               switch(param[0])
                {case 1:var s=param[1];opt_socktype[1] = [0,s];return 0;
                 case 2:var p=param[1];opt_protocol[1] = p;return 0
                 }
              return 0};
          caml_call2(Stdlib_list[15],_c0_,opts);
          var
           get_port=
            function(ty,kind)
             {if(caml_string_equal(service,cst$5))return [0,[0,ty,0],0];
              try
               {var _di_=[0,[0,ty,runtime.caml_int_of_string(service)],0];
                return _di_}
              catch(_dj_)
               {_dj_ = caml_wrap_exception(_dj_);
                if(_dj_[1] === Stdlib[7])
                 try
                  {var
                    _dh_=
                     [0,[0,ty,runtime.unix_getservbyname(service,kind)[3]],0];
                   return _dh_}
                 catch(_dk_)
                  {_dk_ = caml_wrap_exception(_dk_);
                   if(_dk_ === Stdlib[8])return 0;
                   throw _dk_}
                throw _dj_}},
           _c1_=opt_socktype[1];
          if(_c1_)
           var
            _c2_=_c1_[1],
            _c3_=
             1 === _c2_
              ?get_port(1,cst_udp)
              :_c2_
                ?caml_string_equal(service,cst$7)?[0,[0,_c2_,0],0]:0
                :get_port(0,cst_tcp),
            ports=_c3_;
          else
           var
            _c$_=get_port(1,cst_udp$0),
            _da_=get_port(0,cst_tcp$0),
            ports=caml_call2(Stdlib[37],_da_,_c$_);
          if(caml_string_equal(node,cst$6))
           var
            addresses=
             caml_call2(Stdlib_list[33],2,opts)
              ?[0,[0,inet_addr_any,cst_0_0_0_0$0],0]
              :[0,[0,inet_addr_loopback,cst_127_0_0_1$0],0];
          else
           try
            {var
              _c__=[0,[0,unix_inet_addr_of_string(node),node],0],
              addresses=_c__}
           catch(_df_)
            {_df_ = caml_wrap_exception(_df_);
             if(_df_[1] !== Stdlib[7])throw _df_;
             try
              {var
                he=runtime.unix_gethostbyname(node),
                _c7_=caml_call1(Stdlib_array[11],he[4]),
                _c8_=function(a){return [0,a,he[1]]},
                _c9_=caml_call2(Stdlib_list[17],_c8_,_c7_),
                _c6_=_c9_}
             catch(_dg_)
              {_dg_ = caml_wrap_exception(_dg_);
               if(_dg_ !== Stdlib[8])throw _dg_;
               var _c6_=0}
             var addresses=_c6_}
          var
           _c4_=
            function(param)
             {var port=param[2],ty=param[1];
              function _de_(param)
               {var name=param[2],addr=param[1];
                return [0,1,ty,opt_protocol[1],[1,addr,port],name]}
              return caml_call2(Stdlib_list[17],_de_,addresses)},
           _c5_=caml_call2(Stdlib_list[17],_c4_,ports);
          return caml_call1(Stdlib_list[14],_c5_)}
        throw _dd_}}
    function getnameinfo(addr,opts)
     {try
       {var _cW_=runtime.unix_getnameinfo(addr,opts);return _cW_}
      catch(_cX_)
       {_cX_ = caml_wrap_exception(_cX_);
        if(_cX_[1] === Stdlib[6])
         {if(0 === addr[0]){var f=addr[1];return [0,cst$8,f]}
          var p=addr[2],a=addr[1];
          try
           {if(caml_call2(Stdlib_list[33],1,opts))throw Stdlib[8];
            var _cV_=runtime.unix_gethostbyaddr(a)[1],hostname=_cV_}
          catch(_cZ_)
           {_cZ_ = caml_wrap_exception(_cZ_);
            if(_cZ_ !== Stdlib[8])throw _cZ_;
            if(caml_call2(Stdlib_list[33],2,opts))throw Stdlib[8];
            var hostname=runtime.unix_string_of_inet_addr(a)}
          try
           {if(caml_call2(Stdlib_list[33],3,opts))throw Stdlib[8];
            var
             kind=caml_call2(Stdlib_list[33],4,opts)?cst_udp$1:cst_tcp$1,
             _cU_=runtime.unix_getservbyport(p,kind)[1],
             service=_cU_}
          catch(_cY_)
           {_cY_ = caml_wrap_exception(_cY_);
            if(_cY_ !== Stdlib[8])throw _cY_;
            var service=caml_call1(Stdlib_int[10],p)}
          return [0,hostname,service]}
        throw _cX_}}
    function waitpid_non_intr(pid)
     {for(;;)
       try
        {var _cS_=runtime.unix_waitpid(0,pid);return _cS_}
       catch(_cT_)
        {_cT_ = caml_wrap_exception(_cT_);
         if(_cT_[1] === Unix_error)
          {var _cR_=_cT_[2];
           if(typeof _cR_ === "number" && 11 === _cR_)continue}
         throw _cT_}}
    function system(cmd)
     {var id=runtime.unix_fork(0);
      if(0 === id)
       try
        {var _cP_=runtime.unix_execv(shell,[0,shell,cst_c,cmd]);return _cP_}
       catch(_cQ_){return caml_sys_exit(127)}
      return waitpid_non_intr(id)[2]}
    function file_descr_not_standard(fd)
     {var fd$0=fd;
      for(;;)
       {if(3 <= fd$0)return fd$0;
        var fd$1=runtime.unix_dup(0,fd$0),fd$0=fd$1;
        continue}}
    function safe_close(fd)
     {try
       {var _cN_=runtime.unix_close(fd);return _cN_}
      catch(_cO_)
       {_cO_ = caml_wrap_exception(_cO_);
        if(_cO_[1] === Unix_error)return 0;
        throw _cO_}}
    function perform_redirections(new_stdin,new_stdout,new_stderr)
     {var
       new_stdin$0=file_descr_not_standard(new_stdin),
       new_stdout$0=file_descr_not_standard(new_stdout),
       new_stderr$0=file_descr_not_standard(new_stderr);
      runtime.unix_dup2(_e_,new_stdin$0,0);
      runtime.unix_dup2(_f_,new_stdout$0,1);
      runtime.unix_dup2(_g_,new_stderr$0,2);
      safe_close(new_stdin$0);
      safe_close(new_stdout$0);
      return safe_close(new_stderr$0)}
    function create_process(cmd,args,new_stdin,new_stdout,new_stderr)
     {var id=runtime.unix_fork(0);
      if(0 === id)
       try
        {perform_redirections(new_stdin,new_stdout,new_stderr);
         var _cL_=runtime.unix_execvp(cmd,args);
         return _cL_}
       catch(_cM_){return caml_sys_exit(127)}
      return id}
    function create_process_env(cmd,args,env,new_stdin,new_stdout,new_stderr)
     {var id=runtime.unix_fork(0);
      if(0 === id)
       try
        {perform_redirections(new_stdin,new_stdout,new_stderr);
         var _cJ_=execvpe(cmd,args,env);
         return _cJ_}
       catch(_cK_){return caml_sys_exit(127)}
      return id}
    var popen_processes=caml_call2(Stdlib_hashtbl[1],0,7);
    function open_proc(prog,args,envopt,proc,input,output,error)
     {var id=runtime.unix_fork(0);
      if(0 === id)
       {perform_redirections(input,output,error);
        try
         {if(envopt)
           var env=envopt[1],_cH_=runtime.unix_execve(prog,args,env);
          else
           var _cH_=runtime.unix_execv(prog,args);
          return _cH_}
        catch(_cI_){return caml_sys_exit(127)}}
      return caml_call3(Stdlib_hashtbl[5],popen_processes,proc,id)}
    function open_process_args_in(prog,args)
     {var
       match=runtime.unix_pipe(_h_,0),
       in_write=match[2],
       in_read=match[1],
       inchan=runtime.unix_inchannel_of_filedescr(in_read);
      try
       {open_proc(prog,args,0,[1,inchan],stdin,in_write,stderr)}
      catch(e)
       {e = caml_wrap_exception(e);
        caml_call1(Stdlib[93],inchan);
        runtime.unix_close(in_write);
        throw e}
      runtime.unix_close(in_write);
      return inchan}
    function open_process_args_out(prog,args)
     {var
       match=runtime.unix_pipe(_i_,0),
       out_write=match[2],
       out_read=match[1],
       outchan=runtime.unix_outchannel_of_filedescr(out_write);
      try
       {open_proc(prog,args,0,[2,outchan],out_read,stdout,stderr)}
      catch(e)
       {e = caml_wrap_exception(e);
        caml_call1(Stdlib[76],outchan);
        runtime.unix_close(out_read);
        throw e}
      runtime.unix_close(out_read);
      return outchan}
    function open_process_args(prog,args)
     {var match=runtime.unix_pipe(_j_,0),in_write=match[2],in_read=match[1];
      try
       {var match$0=runtime.unix_pipe(_k_,0)}
      catch(e)
       {e = caml_wrap_exception(e);
        runtime.unix_close(in_read);
        runtime.unix_close(in_write);
        throw e}
      var
       out_write=match$0[2],
       out_read=match$0[1],
       inchan=runtime.unix_inchannel_of_filedescr(in_read),
       outchan=runtime.unix_outchannel_of_filedescr(out_write);
      try
       {open_proc(prog,args,0,[0,inchan,outchan],out_read,in_write,stderr)}
      catch(e)
       {e = caml_wrap_exception(e);
        runtime.unix_close(out_read);
        runtime.unix_close(out_write);
        runtime.unix_close(in_read);
        runtime.unix_close(in_write);
        throw e}
      runtime.unix_close(out_read);
      runtime.unix_close(in_write);
      return [0,inchan,outchan]}
    function open_process_args_full(prog,args,env)
     {var match=runtime.unix_pipe(_l_,0),in_write=match[2],in_read=match[1];
      try
       {var match$0=runtime.unix_pipe(_m_,0)}
      catch(e)
       {e = caml_wrap_exception(e);
        runtime.unix_close(in_read);
        runtime.unix_close(in_write);
        throw e}
      var out_write=match$0[2],out_read=match$0[1];
      try
       {var match$1=runtime.unix_pipe(_n_,0)}
      catch(e)
       {e = caml_wrap_exception(e);
        runtime.unix_close(in_read);
        runtime.unix_close(in_write);
        runtime.unix_close(out_read);
        runtime.unix_close(out_write);
        throw e}
      var
       err_write=match$1[2],
       err_read=match$1[1],
       inchan=runtime.unix_inchannel_of_filedescr(in_read),
       outchan=runtime.unix_outchannel_of_filedescr(out_write),
       errchan=runtime.unix_inchannel_of_filedescr(err_read);
      try
       {open_proc
         (prog,
          args,
          [0,env],
          [3,inchan,outchan,errchan],
          out_read,
          in_write,
          err_write)}
      catch(e)
       {e = caml_wrap_exception(e);
        runtime.unix_close(out_read);
        runtime.unix_close(out_write);
        runtime.unix_close(in_read);
        runtime.unix_close(in_write);
        runtime.unix_close(err_read);
        runtime.unix_close(err_write);
        throw e}
      runtime.unix_close(out_read);
      runtime.unix_close(in_write);
      runtime.unix_close(err_write);
      return [0,inchan,outchan,errchan]}
    function open_process_shell(fn,cmd)
     {return caml_call2(fn,shell,[0,shell,cst_c$0,cmd])}
    function open_process_in(cmd)
     {return open_process_shell(open_process_args_in,cmd)}
    function open_process_out(cmd)
     {return open_process_shell(open_process_args_out,cmd)}
    function open_process(cmd)
     {return open_process_shell(open_process_args,cmd)}
    function open_process_full(cmd)
     {return open_process_shell(open_process_args_full,cmd)}
    function find_proc_id(fun_name,proc)
     {try
       {var _cF_=caml_call2(Stdlib_hashtbl[6],popen_processes,proc);
        return _cF_}
      catch(_cG_)
       {_cG_ = caml_wrap_exception(_cG_);
        if(_cG_ === Stdlib[8])throw [0,Unix_error,3,fun_name,cst$9];
        throw _cG_}}
    function remove_proc_id(proc)
     {return caml_call2(Stdlib_hashtbl[10],popen_processes,proc)}
    function process_in_pid(inchan)
     {return find_proc_id(cst_process_in_pid,[1,inchan])}
    function process_out_pid(outchan)
     {return find_proc_id(cst_process_out_pid,[2,outchan])}
    function process_pid(param)
     {var outchan=param[2],inchan=param[1];
      return find_proc_id(cst_process_pid,[0,inchan,outchan])}
    function process_full_pid(param)
     {var errchan=param[3],outchan=param[2],inchan=param[1];
      return find_proc_id(cst_process_full_pid,[3,inchan,outchan,errchan])}
    function close_process_in(inchan)
     {var proc=[1,inchan],pid=find_proc_id(cst_close_process_in,proc);
      remove_proc_id(proc);
      caml_call1(Stdlib[93],inchan);
      return waitpid_non_intr(pid)[2]}
    function close_process_out(outchan)
     {var proc=[2,outchan],pid=find_proc_id(cst_close_process_out,proc);
      remove_proc_id(proc);
      try
       {caml_call1(Stdlib[76],outchan)}
      catch(_cE_)
       {_cE_ = caml_wrap_exception(_cE_);if(_cE_[1] !== Stdlib[11])throw _cE_}
      return waitpid_non_intr(pid)[2]}
    function close_process(param)
     {var
       outchan=param[2],
       inchan=param[1],
       proc=[0,inchan,outchan],
       pid=find_proc_id(cst_close_process,proc);
      remove_proc_id(proc);
      caml_call1(Stdlib[93],inchan);
      try
       {caml_call1(Stdlib[76],outchan)}
      catch(_cD_)
       {_cD_ = caml_wrap_exception(_cD_);if(_cD_[1] !== Stdlib[11])throw _cD_}
      return waitpid_non_intr(pid)[2]}
    function close_process_full(param)
     {var
       errchan=param[3],
       outchan=param[2],
       inchan=param[1],
       proc=[3,inchan,outchan,errchan],
       pid=find_proc_id(cst_close_process_full,proc);
      remove_proc_id(proc);
      caml_call1(Stdlib[93],inchan);
      try
       {caml_call1(Stdlib[76],outchan)}
      catch(_cC_)
       {_cC_ = caml_wrap_exception(_cC_);if(_cC_[1] !== Stdlib[11])throw _cC_}
      caml_call1(Stdlib[93],errchan);
      return waitpid_non_intr(pid)[2]}
    function open_connection(sockaddr)
     {var sock=runtime.unix_socket(_o_,domain_of_sockaddr(sockaddr),0,0);
      try
       {runtime.unix_connect(sock,sockaddr);
        var
         _cA_=runtime.unix_outchannel_of_filedescr(sock),
         _cB_=[0,runtime.unix_inchannel_of_filedescr(sock),_cA_];
        return _cB_}
      catch(exn)
       {exn = caml_wrap_exception(exn);runtime.unix_close(sock);throw exn}}
    function shutdown_connection(inchan)
     {return runtime.unix_shutdown(runtime.caml_channel_descriptor(inchan),1)}
    function accept_non_intr(s)
     {for(;;)
       try
        {var _cy_=runtime.unix_accept(_p_,s);return _cy_}
       catch(_cz_)
        {_cz_ = caml_wrap_exception(_cz_);
         if(_cz_[1] === Unix_error)
          {var _cx_=_cz_[2];
           if(typeof _cx_ === "number" && 11 === _cx_)continue}
         throw _cz_}}
    function establish_server(server_fun,sockaddr)
     {var sock=runtime.unix_socket(_q_,domain_of_sockaddr(sockaddr),0,0);
      runtime.unix_setsockopt(0,sock,2,1);
      runtime.unix_bind(sock,sockaddr);
      runtime.unix_listen(sock,5);
      for(;;)
       {var match=accept_non_intr(sock),s=match[1],id=runtime.unix_fork(0);
        if(0 === id)
         {if(0 !== runtime.unix_fork(0))caml_sys_exit(0);
          runtime.unix_close(sock);
          var
           inchan=runtime.unix_inchannel_of_filedescr(s),
           outchan=runtime.unix_outchannel_of_filedescr(s);
          caml_call2(server_fun,inchan,outchan);
          caml_call1(Stdlib[99],0)}
        else
         {runtime.unix_close(s);waitpid_non_intr(id)}
        continue}}
    function setsid(_cw_){return runtime.unix_setsid(_cw_)}
    function tcflow(_cv_,_cu_){return runtime.unix_tcflow(_cv_,_cu_)}
    function tcflush(_ct_,_cs_){return runtime.unix_tcflush(_ct_,_cs_)}
    function tcdrain(_cr_){return runtime.unix_tcdrain(_cr_)}
    function tcsendbreak(_cq_,_cp_)
     {return runtime.unix_tcsendbreak(_cq_,_cp_)}
    function tcsetattr(_co_,_cn_,_cm_)
     {return runtime.unix_tcsetattr(_co_,_cn_,_cm_)}
    function tcgetattr(_cl_){return runtime.unix_tcgetattr(_cl_)}
    function getservbyport(_ck_,_cj_)
     {return runtime.unix_getservbyport(_ck_,_cj_)}
    function getservbyname(_ci_,_ch_)
     {return runtime.unix_getservbyname(_ci_,_ch_)}
    function getprotobynumber(_cg_)
     {return runtime.unix_getprotobynumber(_cg_)}
    function getprotobyname(_cf_){return runtime.unix_getprotobyname(_cf_)}
    function gethostbyaddr(_ce_){return runtime.unix_gethostbyaddr(_ce_)}
    function gethostbyname(_cd_){return runtime.unix_gethostbyname(_cd_)}
    function gethostname(_cc_){return runtime.unix_gethostname(_cc_)}
    function getpeername(_cb_){return runtime.unix_getpeername(_cb_)}
    function getsockname(_ca_){return runtime.unix_getsockname(_ca_)}
    function shutdown(_b$_,_b__){return runtime.unix_shutdown(_b$_,_b__)}
    function listen(_b9_,_b8_){return runtime.unix_listen(_b9_,_b8_)}
    function connect(_b7_,_b6_){return runtime.unix_connect(_b7_,_b6_)}
    function bind(_b5_,_b4_){return runtime.unix_bind(_b5_,_b4_)}
    function accept(_b3_,_b2_){return runtime.unix_accept(_b3_,_b2_)}
    function socketpair(_b1_,_b0_,_bZ_,_bY_)
     {return runtime.unix_socketpair(_b1_,_b0_,_bZ_,_bY_)}
    function socket(_bX_,_bW_,_bV_,_bU_)
     {return runtime.unix_socket(_bX_,_bW_,_bV_,_bU_)}
    function string_of_inet_addr(_bT_)
     {return runtime.unix_string_of_inet_addr(_bT_)}
    function inet_addr_of_string(_bS_){return unix_inet_addr_of_string(_bS_)}
    function getgrgid(_bR_){return runtime.unix_getgrgid(_bR_)}
    function getpwuid(_bQ_){return runtime.unix_getpwuid(_bQ_)}
    function getgrnam(_bP_){return runtime.unix_getgrnam(_bP_)}
    function getpwnam(_bO_){return runtime.unix_getpwnam(_bO_)}
    function getlogin(_bN_){return runtime.unix_getlogin(_bN_)}
    function initgroups(_bM_,_bL_){return runtime.unix_initgroups(_bM_,_bL_)}
    function setgroups(_bK_){return runtime.unix_setgroups(_bK_)}
    function getgroups(_bJ_){return runtime.unix_getgroups(_bJ_)}
    function setgid(_bI_){return runtime.unix_setgid(_bI_)}
    function getegid(_bH_){return runtime.unix_getegid(_bH_)}
    function getgid(_bG_){return runtime.unix_getgid(_bG_)}
    function setuid(_bF_){return runtime.unix_setuid(_bF_)}
    function geteuid(_bE_){return runtime.unix_geteuid(_bE_)}
    function getuid(_bD_){return runtime.unix_getuid(_bD_)}
    function setitimer(_bC_,_bB_){return runtime.unix_setitimer(_bC_,_bB_)}
    function getitimer(_bA_){return runtime.unix_getitimer(_bA_)}
    function utimes(_bz_,_by_,_bx_)
     {return runtime.unix_utimes(_bz_,_by_,_bx_)}
    function times(_bw_){return runtime.unix_times(_bw_)}
    function _r_(_bv_){return runtime.unix_sleep(_bv_)}
    function alarm(_bu_){return runtime.unix_alarm(_bu_)}
    var
     mktime=runtime.unix_mktime,
     localtime=runtime.unix_localtime,
     gmtime=runtime.unix_gmtime;
    function gettimeofday(_bt_){return runtime.unix_gettimeofday(_bt_)}
    function time(_bs_){return runtime.unix_time(_bs_)}
    function sigsuspend(_br_){return runtime.unix_sigsuspend(_br_)}
    function sigpending(_bq_){return runtime.unix_sigpending(_bq_)}
    function sigprocmask(_bp_,_bo_)
     {return runtime.unix_sigprocmask(_bp_,_bo_)}
    function kill(_bn_,_bm_){return runtime.unix_kill(_bn_,_bm_)}
    function lockf(_bl_,_bk_,_bj_){return runtime.unix_lockf(_bl_,_bk_,_bj_)}
    function select(_bi_,_bh_,_bg_,_bf_)
     {return runtime.unix_select(_bi_,_bh_,_bg_,_bf_)}
    function readlink(_be_){return runtime.unix_readlink(_be_)}
    function has_symlink(_bd_){return runtime.unix_has_symlink(_bd_)}
    function symlink(_bc_,_bb_,_ba_)
     {return runtime.unix_symlink(_bc_,_bb_,_ba_)}
    function mkfifo(_a$_,_a__){return runtime.unix_mkfifo(_a$_,_a__)}
    function pipe(_a9_,_a8_){return runtime.unix_pipe(_a9_,_a8_)}
    function closedir(_a7_){return runtime.unix_closedir(_a7_)}
    function rewinddir(_a6_){return runtime.unix_rewinddir(_a6_)}
    function readdir(_a5_){return runtime.unix_readdir(_a5_)}
    function opendir(_a4_){return runtime.unix_opendir(_a4_)}
    function chroot(_a3_){return runtime.unix_chroot(_a3_)}
    function getcwd(_a2_){return runtime.unix_getcwd(_a2_)}
    function chdir(_a1_){return runtime.unix_chdir(_a1_)}
    function rmdir(_a0_){return runtime.unix_rmdir(_a0_)}
    function mkdir(_aZ_,_aY_){return runtime.unix_mkdir(_aZ_,_aY_)}
    function clear_close_on_exec(_aX_)
     {return runtime.unix_clear_close_on_exec(_aX_)}
    function set_close_on_exec(_aW_)
     {return runtime.unix_set_close_on_exec(_aW_)}
    function clear_nonblock(_aV_){return runtime.unix_clear_nonblock(_aV_)}
    function set_nonblock(_aU_){return runtime.unix_set_nonblock(_aU_)}
    function dup2(_aT_,_aS_,_aR_){return runtime.unix_dup2(_aT_,_aS_,_aR_)}
    function dup(_aQ_,_aP_){return runtime.unix_dup(_aQ_,_aP_)}
    function access(_aO_,_aN_){return runtime.unix_access(_aO_,_aN_)}
    function umask(_aM_){return runtime.unix_umask(_aM_)}
    function fchown(_aL_,_aK_,_aJ_)
     {return runtime.unix_fchown(_aL_,_aK_,_aJ_)}
    function chown(_aI_,_aH_,_aG_){return runtime.unix_chown(_aI_,_aH_,_aG_)}
    function fchmod(_aF_,_aE_){return runtime.unix_fchmod(_aF_,_aE_)}
    function chmod(_aD_,_aC_){return runtime.unix_chmod(_aD_,_aC_)}
    function link(_aB_,_aA_,_az_){return runtime.unix_link(_aB_,_aA_,_az_)}
    function rename(_ay_,_ax_){return runtime.unix_rename(_ay_,_ax_)}
    function unlink(_aw_){return runtime.unix_unlink(_aw_)}
    function _s_(_av_){return runtime.unix_fstat_64(_av_)}
    function _t_(_au_){return runtime.unix_lstat_64(_au_)}
    function _u_(_at_){return runtime.unix_stat_64(_at_)}
    function _v_(_as_,_ar_){return runtime.unix_ftruncate_64(_as_,_ar_)}
    function _w_(_aq_,_ap_){return runtime.unix_truncate_64(_aq_,_ap_)}
    var
     LargeFile=
      [0,
       function(_ao_,_an_,_am_){return runtime.unix_lseek_64(_ao_,_an_,_am_)},
       _w_,
       _v_,
       _u_,
       _t_,
       _s_],
     isatty=runtime.unix_isatty;
    function fstat(_al_){return runtime.unix_fstat(_al_)}
    function lstat(_ak_){return runtime.unix_lstat(_ak_)}
    function stat(_aj_){return runtime.unix_stat(_aj_)}
    function ftruncate(_ai_,_ah_){return runtime.unix_ftruncate(_ai_,_ah_)}
    function truncate(_ag_,_af_){return runtime.unix_truncate(_ag_,_af_)}
    function lseek(_ae_,_ad_,_ac_){return runtime.unix_lseek(_ae_,_ad_,_ac_)}
    function descr_of_out_channel(_ab_)
     {return runtime.caml_channel_descriptor(_ab_)}
    function descr_of_in_channel(_aa_)
     {return runtime.caml_channel_descriptor(_aa_)}
    function out_channel_of_descr(_$_)
     {return runtime.unix_outchannel_of_filedescr(_$_)}
    function in_channel_of_descr(___)
     {return runtime.unix_inchannel_of_filedescr(___)}
    function _x_(_Z_){return runtime.unix_fsync(_Z_)}
    function close(_Y_){return runtime.unix_close(_Y_)}
    function openfile(_X_,_W_,_V_){return runtime.unix_open(_X_,_W_,_V_)}
    function nice(_U_){return runtime.unix_nice(_U_)}
    function getppid(_T_){return runtime.unix_getppid(_T_)}
    function getpid(_S_){return runtime.unix_getpid(_S_)}
    function waitpid(_R_,_Q_){return runtime.unix_waitpid(_R_,_Q_)}
    function wait(_P_){return runtime.unix_wait(_P_)}
    function fork(_O_){return runtime.unix_fork(_O_)}
    function execvp(_N_,_M_){return runtime.unix_execvp(_N_,_M_)}
    function execve(_L_,_K_,_J_){return runtime.unix_execve(_L_,_K_,_J_)}
    function execv(_I_,_H_){return runtime.unix_execv(_I_,_H_)}
    function putenv(_G_,_F_){return runtime.unix_putenv(_G_,_F_)}
    function unsafe_getenv(_E_){return runtime.caml_sys_unsafe_getenv(_E_)}
    var getenv=runtime.caml_sys_getenv;
    function _y_(_D_){return runtime.unix_environment_unsafe(_D_)}
    function environment(_C_){return runtime.unix_environment(_C_)}
    function error_message(_B_){return runtime.unix_error_message(_B_)}
    var
     include=
      [0,
       Unix_error,
       error_message,
       handle_unix_error,
       environment,
       _y_,
       getenv,
       unsafe_getenv,
       putenv,
       execv,
       execve,
       execvp,
       execvpe,
       fork,
       wait,
       waitpid,
       system,
       getpid,
       getppid,
       nice,
       stdin,
       stdout,
       stderr,
       openfile,
       close,
       _x_,
       read,
       write,
       single_write,
       write_substring,
       single_write_substring,
       in_channel_of_descr,
       out_channel_of_descr,
       descr_of_in_channel,
       descr_of_out_channel,
       lseek,
       truncate,
       ftruncate,
       stat,
       lstat,
       fstat,
       isatty,
       LargeFile,
       map_file,
       unlink,
       rename,
       link,
       chmod,
       fchmod,
       chown,
       fchown,
       umask,
       access,
       dup,
       dup2,
       set_nonblock,
       clear_nonblock,
       set_close_on_exec,
       clear_close_on_exec,
       mkdir,
       rmdir,
       chdir,
       getcwd,
       chroot,
       opendir,
       readdir,
       rewinddir,
       closedir,
       pipe,
       mkfifo,
       create_process,
       create_process_env,
       open_process_in,
       open_process_out,
       open_process,
       open_process_full,
       open_process_args_in,
       open_process_args_out,
       open_process_args,
       open_process_args_full,
       process_in_pid,
       process_out_pid,
       process_pid,
       process_full_pid,
       close_process_in,
       close_process_out,
       close_process,
       close_process_full,
       symlink,
       has_symlink,
       readlink,
       select,
       lockf,
       kill,
       sigprocmask,
       sigpending,
       sigsuspend,
       pause,
       time,
       gettimeofday,
       gmtime,
       localtime,
       mktime,
       alarm,
       sleep,
       _r_,
       times,
       utimes,
       getitimer,
       setitimer,
       getuid,
       geteuid,
       setuid,
       getgid,
       getegid,
       setgid,
       getgroups,
       setgroups,
       initgroups,
       getlogin,
       getpwnam,
       getgrnam,
       getpwuid,
       getgrgid,
       inet_addr_of_string,
       string_of_inet_addr,
       inet_addr_any,
       inet_addr_loopback,
       inet_addr_any$0,
       inet6_addr_loopback,
       socket,
       domain_of_sockaddr,
       socketpair,
       accept,
       bind,
       connect,
       listen,
       shutdown,
       getsockname,
       getpeername,
       recv,
       recvfrom,
       send,
       send_substring,
       sendto,
       sendto_substring,
       getsockopt,
       setsockopt,
       getsockopt_int,
       setsockopt_int,
       getsockopt_optint,
       setsockopt_optint,
       getsockopt_float,
       setsockopt_float,
       getsockopt_error,
       open_connection,
       shutdown_connection,
       establish_server,
       gethostname,
       gethostbyname,
       gethostbyaddr,
       getprotobyname,
       getprotobynumber,
       getservbyname,
       getservbyport,
       getaddrinfo,
       getnameinfo,
       tcgetattr,
       tcsetattr,
       tcsendbreak,
       tcdrain,
       tcflush,
       tcflow,
       setsid];
    caml_register_global(143,include,"Unix");
    var
     UnixLabels=
      [0,
       Unix_error,
       error_message,
       handle_unix_error,
       environment,
       getenv,
       unsafe_getenv,
       putenv,
       execv,
       execve,
       execvp,
       execvpe,
       fork,
       wait,
       waitpid,
       system,
       getpid,
       getppid,
       nice,
       stdin,
       stdout,
       stderr,
       openfile,
       close,
       read,
       write,
       single_write,
       write_substring,
       single_write_substring,
       in_channel_of_descr,
       out_channel_of_descr,
       descr_of_in_channel,
       descr_of_out_channel,
       lseek,
       truncate,
       ftruncate,
       stat,
       lstat,
       fstat,
       isatty,
       LargeFile,
       map_file,
       unlink,
       rename,
       link,
       chmod,
       fchmod,
       chown,
       fchown,
       umask,
       access,
       dup,
       dup2,
       set_nonblock,
       clear_nonblock,
       set_close_on_exec,
       clear_close_on_exec,
       mkdir,
       rmdir,
       chdir,
       getcwd,
       chroot,
       opendir,
       readdir,
       rewinddir,
       closedir,
       pipe,
       mkfifo,
       create_process,
       create_process_env,
       open_process_in,
       open_process_out,
       open_process,
       open_process_full,
       open_process_args_in,
       open_process_args_out,
       open_process_args,
       open_process_args_full,
       close_process_in,
       close_process_out,
       close_process,
       close_process_full,
       symlink,
       has_symlink,
       readlink,
       select,
       lockf,
       kill,
       sigprocmask,
       sigpending,
       sigsuspend,
       pause,
       time,
       gettimeofday,
       gmtime,
       localtime,
       mktime,
       alarm,
       sleep,
       times,
       utimes,
       getitimer,
       setitimer,
       getuid,
       geteuid,
       setuid,
       getgid,
       getegid,
       setgid,
       getgroups,
       setgroups,
       initgroups,
       getlogin,
       getpwnam,
       getgrnam,
       getpwuid,
       getgrgid,
       inet_addr_of_string,
       string_of_inet_addr,
       inet_addr_any,
       inet_addr_loopback,
       inet_addr_any$0,
       inet6_addr_loopback,
       socket,
       domain_of_sockaddr,
       socketpair,
       accept,
       bind,
       connect,
       listen,
       shutdown,
       getsockname,
       getpeername,
       recv,
       recvfrom,
       send,
       send_substring,
       sendto,
       sendto_substring,
       getsockopt,
       setsockopt,
       getsockopt_int,
       setsockopt_int,
       getsockopt_optint,
       setsockopt_optint,
       getsockopt_float,
       setsockopt_float,
       getsockopt_error,
       open_connection,
       shutdown_connection,
       establish_server,
       gethostname,
       gethostbyname,
       gethostbyaddr,
       getprotobyname,
       getprotobynumber,
       getservbyname,
       getservbyport,
       getaddrinfo,
       getnameinfo,
       tcgetattr,
       tcsetattr,
       tcsendbreak,
       tcdrain,
       tcflush,
       tcflow,
       setsid];
    caml_register_global(144,UnixLabels,"UnixLabels");
    return}
  (function(){return this}()));


//# 1 "../../.js/bigarray/bigarray.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     global_data=runtime.caml_get_global_data(),
     Stdlib_bigarray=global_data.Stdlib__bigarray,
     float32=Stdlib_bigarray[1],
     float64=Stdlib_bigarray[2],
     complex32=Stdlib_bigarray[3],
     complex64=Stdlib_bigarray[4],
     int8_signed=Stdlib_bigarray[5],
     int8_unsigned=Stdlib_bigarray[6],
     int16_signed=Stdlib_bigarray[7],
     int16_unsigned=Stdlib_bigarray[8],
     int$0=Stdlib_bigarray[9],
     int32=Stdlib_bigarray[10],
     int64=Stdlib_bigarray[11],
     nativeint=Stdlib_bigarray[12],
     char$0=Stdlib_bigarray[13],
     kind_size_in_bytes=Stdlib_bigarray[14],
     c_layout=Stdlib_bigarray[15],
     fortran_layout=Stdlib_bigarray[16],
     array0_of_genarray=Stdlib_bigarray[22],
     array1_of_genarray=Stdlib_bigarray[23],
     array2_of_genarray=Stdlib_bigarray[24],
     array3_of_genarray=Stdlib_bigarray[25],
     reshape=Stdlib_bigarray[26],
     reshape_0=Stdlib_bigarray[27],
     reshape_1=Stdlib_bigarray[28],
     reshape_2=Stdlib_bigarray[29],
     reshape_3=Stdlib_bigarray[30],
     Bigarray=
      [0,
       float32,
       float64,
       complex32,
       complex64,
       int8_signed,
       int8_unsigned,
       int16_signed,
       int16_unsigned,
       int$0,
       int32,
       int64,
       nativeint,
       char$0,
       kind_size_in_bytes,
       c_layout,
       fortran_layout,
       array0_of_genarray,
       array1_of_genarray,
       array2_of_genarray,
       array3_of_genarray,
       reshape,
       reshape_0,
       reshape_1,
       reshape_2,
       reshape_3];
    runtime.caml_register_global(1,Bigarray,"Bigarray");
    return}
  (function(){return this}()));


//# 1 "../../.js/sexplib/sexplib.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_ba_dim_1=runtime.caml_ba_dim_1,
     caml_ba_get_1=runtime.caml_ba_get_1,
     caml_ba_set_1=runtime.caml_ba_set_1,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_equal=runtime.caml_equal,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_string_unsafe_get=runtime.caml_string_unsafe_get,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    function caml_call8(f,a0,a1,a2,a3,a4,a5,a6,a7)
     {return f.length == 8
              ?f(a0,a1,a2,a3,a4,a5,a6,a7)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7])}
    function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8)
     {return f.length == 9
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])}
    function caml_call10(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
     {return f.length == 10
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9])}
    var
     global_data=runtime.caml_get_global_data(),
     zero=[0,0,0],
     origin=[0,1,1],
     cst_parser=caml_string_of_jsbytes("parser"),
     what=caml_string_of_jsbytes("sexp"),
     yylhs=
      caml_string_of_jsbytes
       ("\xff\xff\x01\0\x01\0\x06\0\x06\0\x06\0\x06\0\b\0\b\0\x05\0\x05\0\x02\0\x02\0\x02\0\x02\0\x07\0\x07\0\x07\0\x07\0\x04\0\x04\0\x03\0\x03\0\0\0\0\0\0\0\0\0"),
     yylen=
      caml_string_of_jsbytes
       ("\x02\0\x02\0\x01\0\x01\0\x02\0\x03\0\x01\0\x02\0\x03\0\x01\0\x02\0\x01\0\x02\0\x01\0\x02\0\x01\0\x01\0\x02\0\x02\0\x02\0\x01\0\x02\0\x01\0\x02\0\x02\0\x02\0\x02\0"),
     yydefred=
      caml_string_of_jsbytes
       ("\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\x03\0\0\0\0\0\x17\0\0\0\x02\0\t\0\r\0\x18\0\0\0\x0b\0\x16\0\x19\0\x0f\0\0\0\x10\0\x14\0\x1a\0\0\0\x04\0\0\0\0\0\x07\0\x01\0\n\0\x0e\0\f\0\x15\0\x11\0\x12\0\x13\0\x05\0\b\0"),
     yydgoto=
      caml_string_of_jsbytes
       ("\x05\0\n\0\x0f\0\x13\0\x18\0\x0b\0\x14\0\x15\0\r\0"),
     yysindex=
      caml_string_of_jsbytes
       ('(\0"\xff\x01\0\x06\0\x0b\0\0\0\0\0\0\0:\xff"\xff\0\0"\xff\0\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\0\0\x15\0\0\0\0\0\0\0\x1a\0\0\0?\xff"\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'),
     yyrindex=
      caml_string_of_jsbytes
       ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
     yygindex=
      caml_string_of_jsbytes("\0\0\0\0\0\0\0\0\0\0\xfe\xff\x03\0\x05\0\x1d\0"),
     yytable=
      caml_string_of_jsbytes
       ("\x10\0\x0e\0\0\0\0\0\f\0\x11\0\x12\0\x1c\0\0\0\x19\0\0\0\x17\0\x1d\0\x1b\0\x1e\0\0\0 \0\0\0\0\0!\0\0\0\"\0\0\0\0\0#\0\0\0%\0\0\0#\0\0\0#\0'\0\x16\0\x16\0\x06\0\x07\0\b\0\x16\0\t\0\0\0\x1f\0\x01\0\x02\0\x03\0\x04\0\x1f\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0$\0\x1f\0\x06\0\x07\0\b\0\x1a\0\t\0\x06\0\x07\0\b\0&\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\x07\0\b\0\0\0\t\0\x06\0\x07\0\b\0\0\0\t\0\x06\0\x07\0\b\0\0\0\t\0\x06\0\x07\0\b\0\0\0\t\0\x06\0\x07\0\b\0\0\0\t\0\x06\0\x07\0\b\0\0\0\t\0"),
     yycheck=
      caml_string_of_jsbytes
       ("\x02\0\0\0\xff\xff\xff\xff\x01\0\x02\0\0\0\t\0\xff\xff\x04\0\xff\xff\0\0\t\0\b\0\x0b\0\xff\xff\0\0\xff\xff\xff\xff\x10\0\xff\xff\0\0\xff\xff\xff\xff\x15\0\xff\xff\0\0\xff\xff\x19\0\xff\xff\x1b\0\x1c\0\x03\0\x04\0\0\x01\x01\x01\x02\x01\b\0\x04\x01\xff\xff\x0b\0\x01\0\x02\0\x03\0\x04\0\x10\0\xff\xff\xff\xff\xff\xff\xff\xff\x15\0\xff\xff\xff\xff\xff\xff\x19\0\xff\xff\x1b\0\x1c\0\0\x01\x01\x01\x02\x01\x03\x01\x04\x01\0\x01\x01\x01\x02\x01\x03\x01\x04\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x01\x01\x01\x02\x01\xff\xff\x04\x01\0\x01\x01\x01\x02\x01\xff\xff\x04\x01\0\x01\x01\x01\x02\x01\xff\xff\x04\x01\0\x01\x01\x01\x02\x01\xff\xff\x04\x01\0\x01\x01\x01\x02\x01\xff\xff\x04\x01\0\x01\x01\x01\x02\x01\xff\xff\x04\x01"),
     yynames_const=caml_string_of_jsbytes("LPAREN\0RPAREN\0EOF\0HASH_SEMI\0"),
     yynames_block=caml_string_of_jsbytes("STRING\0"),
     cst_parser$0=caml_string_of_jsbytes("parser"),
     what$0=caml_string_of_jsbytes("sexp"),
     yylhs$0=
      caml_string_of_jsbytes
       ("\xff\xff\x06\0\x06\0\x06\0\b\0\b\0\t\0\t\0\n\0\n\0\x07\0\x07\0\x01\0\x02\0\x02\0\x0b\0\x0b\0\x05\0\x05\0\x03\0\x03\0\x04\0\0\0\0\0\0\0\0\0\0\0"),
     yylen$0=
      caml_string_of_jsbytes
       ("\x02\0\x01\0\x03\0\x01\0\x01\0\x03\0\0\0\x02\0\x01\0\x01\0\0\0\x02\0\x01\0\x01\0\x01\0\x01\0\x02\0\x02\0\x01\0\x02\0\x01\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0"),
     yydefred$0=
      caml_string_of_jsbytes
       ("\0\0\0\0\0\0\0\0\n\0\0\0\0\0\x03\0\x01\0\x04\0\n\0\x06\0\x16\0\b\0\t\0\f\0\x0e\0\r\0\x17\0\x14\0\x0f\0\x18\0\0\0\x19\0\0\0\x12\0\x1a\0\0\0\0\0\0\0\x13\0\x10\0\x15\0\x0b\0\x11\0\x02\0\x05\0\x07\0"),
     yydgoto$0=
      caml_string_of_jsbytes
       ("\x06\0\x14\0\x12\0\x15\0\x17\0\x1a\0\r\0\x18\0\x0e\0\x1d\0\x0f\0\x16\0"),
     yysindex$0=
      caml_string_of_jsbytes
       ("%\0\t\xff\x01\0\x07\0\0\0\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x13\0\0\0\x19\0\0\0\0\0\x1f\0 \xff\t\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
     yyrindex$0=
      caml_string_of_jsbytes
       ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
     yygindex$0=
      caml_string_of_jsbytes
       ("\0\0\x02\0\0\0\0\0\0\0\0\0\xe3\xff\xfb\xff\xeb\xff\0\0\xea\xff\n\0"),
     yytable$0=
      caml_string_of_jsbytes
       ('$\0\x10\0!\0\f\0\x11\0\x1c\0!\0\x13\0%\0\x07\0\b\0\t\0\n\0\x19\0\x0b\0\x1b\0\0\0\0\0\0\0\x1e\0\0\0\0\0\0\0\0\0\x1f\0 \0\0\0\0\0\0\0\x1f\0\0\0"\0\x07\0\b\0\t\0\n\0#\0\x0b\0\x01\0\x02\0\x03\0\x04\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\b\0\t\0\n\0\0\0\x0b\0\x07\0\b\0\t\0\n\0\0\0\x0b\0\x07\0\b\0\t\0\n\0\0\0\x0b\0\x07\0\b\0\t\0\n\0\0\0\x0b\0\x07\0\b\0\t\0\n\0\0\0\x0b\0\x07\0\b\0\t\0\n\0\0\0\x0b\0'),
     yycheck$0=
      caml_string_of_jsbytes
       ("\x1d\0\0\0\x18\0\x01\0\x02\0\n\0\x1c\0\0\0\x1d\0\0\x01\x01\x01\x02\x01\x03\x01\0\0\x05\x01\x05\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\x16\0\0\0\xff\xff\xff\xff\xff\xff\x1b\0\xff\xff\0\0\0\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x01\0\x02\0\x03\0\x04\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x01\x01\x01\x02\x01\x03\x01\xff\xff\x05\x01\0\x01\x01\x01\x02\x01\x03\x01\xff\xff\x05\x01\0\x01\x01\x01\x02\x01\x03\x01\xff\xff\x05\x01\0\x01\x01\x01\x02\x01\x03\x01\xff\xff\x05\x01\0\x01\x01\x01\x02\x01\x03\x01\xff\xff\x05\x01\0\x01\x01\x01\x02\x01\x03\x01\xff\xff\x05\x01"),
     yynames_const$0=
      caml_string_of_jsbytes("LPAREN\0RPAREN\0EOF\0HASH_SEMI\0"),
     yynames_block$0=caml_string_of_jsbytes("STRING\0COMMENT\0"),
     cst_illegal_end_of_comment=
      caml_string_of_jsbytes("illegal end of comment"),
     cst_comment_tokens_in_unquoted=
      caml_string_of_jsbytes("comment tokens in unquoted atom"),
     ocaml_lex_tables=
      [0,
       caml_string_of_jsbytes
        ("\0\0\xf4\xff\n\0+\x005\0\xfa\xff\xfb\xff\xfc\xff\x01\0\x06\0\x06\0\xff\xffV\0\xf8\xff\xf9\xff`\0\x81\0\x8b\0\xac\0\xb6\0\xdc\0\xe6\0\x07\x01\xf7\xff\x11\x012\x01<\x01]\x01g\x01\x88\x01\x92\x01\xb5\x01\xbf\x01\xe0\x01\xea\x01\x0b\x02%\0\xf6\xffP\0\xf8\xff\x17\x02\xff\xff\xf9\xff9\x02!\x02\xfc\xff\x07\0\x10\0\x11\0p\x02\xfb\xff\x90\x02\xfa\xffQ\0\xfa\xff\xfd\xffz\0\xff\xff\xa6\0\x82\x01\xfc\xff\xfb\xff\xad\x01\xfb\x01"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\n\0\n\0\n\0\xff\xff\xff\xff\xff\xff\x02\0\x01\0\xff\xff\xff\xff\n\0\xff\xff\xff\xff\t\0\n\0\t\0\t\0\t\0\t\0\t\0\n\0\xff\xff\t\0\n\0\t\0\t\0\t\0\t\0\t\0\n\0\n\0\t\0\t\0\t\0\xff\xff\xff\xff\b\0\xff\xff\xff\xff\xff\xff\xff\xff\x06\0\x06\0\xff\xff\x06\0\x01\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
       caml_string_of_jsbytes
        ('\x02\0\0\0\x02\0\x02\0\x02\0\0\0\0\0\0\0\b\0\xff\xff\xff\xff\0\0\x02\0\0\0\0\0\x14\0\x02\0\x12\0\x12\0\x12\0\x14\0\x14\0\x02\0\0\0\x1d\0\x02\0\x1b\0\x1b\0\x1b\0\x1d\0\x1d\0\x02\0\x02\0"\0"\0"\0&\0\0\0&\0\0\0*\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\x008\0\0\0\0\x008\0\0\x008\x008\0\0\0\0\x008\x008\0'),
       caml_string_of_jsbytes
        ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\x0b\0\xff\xff\t\0\n\0\xff\xff\t\0\x0b\x000\0\t\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0/\x000\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\x05\0\x04\0\0\0\0\0\t\0\0\0\x07\0\x06\0\xff\xff\0\0\xff\xff \0\0\0'\0/\x000\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\b\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0)\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\x17\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\f\0\0\0\xff\xff9\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\x0e\0\0\0\xff\xff7\0;\0\0\0\xff\xff\0\0\xff\xff\x10\0\0\0\0\0\x03\0\0\0\xff\xff\xff\xff\xff\xff(\0\xff\xff\x13\0\xff\xff\0\0\x1f\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff?\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\x10\0\0\0\0\0\x16\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\0\0\x009\0\r\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\x007\0=\0\0\0\0\0\xff\xff:\0\xff\xff\x13\0\0\0\0\0\x0f\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\x13\0\0\0\0\0\x0f\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0>\0\0\0\0\0\0\0\0\0\0\0\xff\xff\x11\0\xff\xff\x15\0\x01\0\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x15\0\xff\xff\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff:\0\0\0\0\0%\0\0\0\xff\xff\x11\0\xff\xff\x18\0\xff\xff\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x18\0\xff\xff\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\0\0\xff\xff6\0\xff\xff\0\0\xff\xff\x1a\0\xff\xff\0\0\x0f\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\x1a\0\xff\xff\0\0\x11\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\0\0\xff\xff\x1a\0\xff\xff\0\0\x19\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\x1a\0\xff\xff9\0\x1c\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\x007\0;\0\xff\xff\0\0\xff\xff\0\0\xff\xff\x18\0\xff\xff\0\0\x19\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\x1a\0\xff\xff\xff\xff\x1c\0\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff#\0\x1c\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff \0\x1c\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\0\0<\0\0\0\xff\xff\0\0\xff\xff#\0\x1e\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff#\0\x1e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\xff\xff?\0\0\0\0\0/\0\0\0\0\0.\0\xff\xff\0\0\0\0\0\0>\0\0\0\xff\xff\0\0\xff\xff#\0\0\0\0\0\x1f\0\xff\xff\xff\xff\xff\xff\0\0\0\0-\0\0\0-\0\0\0!\0\xff\xff\0\0-\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff,\0,\0,\0,\0,\0,\0,\0,\0,\0,\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\0\0\0!\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\0\xff\xff\0\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\0-\0\0\0\0\0\0\0\xff\xff\0\0-\x003\x003\x003\x003\x003\x003\0\0\0\0\0\xff\xff\0\0\0\0-\0\0\0!\0\xff\xff-\0\0\0-\0\0\0\0\0\0\0+\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\x003\x003\x003\x003\x003\x003\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\0\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff4\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x004\x004\x004\x004\x004\x004\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x004\x004\x004\x004\x004\x004\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
       caml_string_of_jsbytes
        ('\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\b\0\0\0\0\0\b\0\t\0\n\0.\0\t\0\x02\0\x02\0\xff\xff\x02\0\x02\0\xff\xff/\x000\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\t\0\xff\xff\0\0\0\0\x02\0\xff\xff\x02\0\x02\0\xff\xff$\0/\x000\0\x02\0\x02\0\x03\0\x03\0\xff\xff\x03\0\x03\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\x04\0\x04\0\xff\xff\x04\0\x04\0\xff\xff\xff\xff\x02\0\xff\xff$\0\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x04\0\xff\xff\x04\0\x04\0\xff\xff&\x005\0\xff\xff\x04\0\x04\0\f\0\f\0\xff\xff\f\0\f\0\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\x0f\0\x0f\0\xff\xff\x0f\0\x0f\0\xff\xff\xff\xff\x04\0\xff\xff&\x005\x005\0\xff\xff\f\0\xff\xff\f\0\f\0\xff\xff\xff\xff\0\0\xff\xff\f\0\f\0\x0f\0$\0\x0f\0\x0f\x008\0\xff\xff\x02\0\xff\xff\x0f\0\x0f\0\x10\0\x10\0\xff\xff\x10\0\x10\0\xff\xff\xff\xff\f\0\xff\xff\xff\xff\x11\0\x11\0\xff\xff\x11\0\x11\0\xff\xff\xff\xff\x0f\x008\x008\0\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x10\0\x10\0\xff\xff\xff\xff\x03\0\xff\xff\x10\0\x10\0\x11\0&\0\x11\0\x11\0\xff\xff:\0\x04\0\xff\xff\x11\0\x11\0\x12\0\x12\0\xff\xff\x12\0\x12\0\xff\xff\xff\xff\x10\0\xff\xff\xff\xff\x13\0\x13\0\xff\xff\x13\0\x13\0\xff\xff\xff\xff\x11\0\xff\xff:\0:\0\xff\xff\xff\xff\x12\x005\0\x12\0\x12\0\xff\xff\xff\xff\f\0\xff\xff\x12\0\x12\0\x13\0\xff\xff\x13\0\x13\0\xff\xff\xff\xff\x0f\0\xff\xff\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\0\x14\0\x12\0\x14\0\x14\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\0\x15\0\x13\0\x15\0\x15\0\xff\xff\xff\xff8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\0\x10\0\x14\0\x14\0\0\0\b\0\xff\xff\xff\xff\x14\0\x14\0\x15\0\x11\0\x15\0\x15\0\x02\0\xff\xff\xff\xff\xff\xff\x15\0\x15\0\x16\0\x16\0\xff\xff\x16\0\x16\0\xff\xff\xff\xff\x14\0\xff\xff\xff\xff\x18\0\x18\0\xff\xff\x18\0\x18\0\xff\xff\xff\xff\x15\0:\0\xff\xff\xff\xff$\0\xff\xff\x16\0\x12\0\x16\0\x16\0\x03\0\xff\xff\xff\xff\xff\xff\x16\0\x16\0\x18\0\x13\0\x18\0\x18\0\x04\0\xff\xff\xff\xff\xff\xff\x18\0\x18\0\x19\0\x19\0\xff\xff\x19\0\x19\0\xff\xff\xff\xff\x16\0\xff\xff\xff\xff\x1a\0\x1a\0\xff\xff\x1a\0\x1a\0\xff\xff\xff\xff\x18\0\xff\xff\xff\xff\xff\xff&\x005\0\x19\0\xff\xff\x19\0\x19\0\f\0\xff\xff\x14\0\xff\xff\x19\0\x19\0\x1a\0\xff\xff\x1a\0\x1a\0\x0f\0\xff\xff\x15\0\xff\xff\x1a\0\x1a\0\x1b\0\x1b\0\xff\xff\x1b\0\x1b\0\xff\xff\xff\xff\x19\0\xff\xff\xff\xff\x1c\0\x1c\0\xff\xff\x1c\0\x1c\0\xff\xff\xff\xff\x1a\0\xff\xff\xff\xff8\0\xff\xff\xff\xff\x1b\0\xff\xff\x1b\0\x1b\0\x10\0\xff\xff\x16\0\xff\xff\x1b\0\x1b\0\x1c\0\xff\xff\x1c\0\x1c\0\x11\0;\0\x18\0\xff\xff\x1c\0\x1c\0\x1d\0\x1d\0\xff\xff\x1d\0\x1d\0\xff\xff\xff\xff\x1b\0\xff\xff\xff\xff\x1e\0\x1e\0\xff\xff\x1e\0\x1e\0\xff\xff\xff\xff\x1c\0\xff\xff;\0;\0:\0\xff\xff\x1d\0\xff\xff\x1d\0\x1d\0\x12\0\xff\xff\x19\0\xff\xff\x1d\0\x1d\0\x1e\0\xff\xff\x1e\0\x1e\0\x13\0>\0\x1a\0\xff\xff\x1e\0\x1e\0\xff\xff\xff\xff\x1f\0\x1f\0\xff\xff\x1f\0\x1f\0\x1d\0\xff\xff\xff\xff\xff\xff\xff\xff \0 \0\xff\xff \0 \0\x1e\0\xff\xff>\0>\0\xff\xff\xff\xff\xff\xff\xff\xff\x1f\0\xff\xff\x1f\0\x1f\0\x1b\0\xff\xff\xff\xff\x14\0\x1f\0\x1f\0 \0\xff\xff \0 \0\x1c\0\xff\xff\xff\xff\x15\0 \0 \0!\0!\0\xff\xff!\0!\0\xff\xff\xff\xff\x1f\0\xff\xff\xff\xff"\0"\0\xff\xff"\0"\0\xff\xff\xff\xff \0\xff\xff\xff\xff\xff\xff;\0\xff\xff!\0\xff\xff!\0!\0\x1d\0?\0\xff\xff\x16\0!\0!\0"\0\xff\xff"\0"\0\x1e\0\xff\xff\xff\xff\x18\0"\0"\0#\0#\0\xff\xff#\0#\0\xff\xff\xff\xff!\0\xff\xff?\0?\0\xff\xff\xff\xff(\0\xff\xff\xff\xff(\0"\0\xff\xff\xff\xff\xff\xff>\0\xff\xff#\0\xff\xff#\0#\0\xff\xff\xff\xff\x1f\0\x19\0#\0#\0\xff\xff\xff\xff(\0\xff\xff(\0\xff\xff \0\x1a\0\xff\xff(\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff#\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0\xff\xff!\0\x1b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"\0\x1c\0\xff\xff+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0(\0\xff\xff\xff\xff\xff\xff?\0\xff\xff(\0+\0+\0+\0+\0+\0+\0\xff\xff\xff\xff;\0\xff\xff\xff\xff(\0\xff\xff#\0\x1d\0(\0\xff\xff(\0\xff\xff\xff\xff\xff\xff(\0\xff\xff\xff\xff\x1e\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff+\0+\0+\0+\0+\0+\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\0\xff\xff\xff\xff\xff\xff>\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff \x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff3\x003\x003\x003\x003\x003\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff!\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff3\x003\x003\x003\x003\x003\0\xff\xff\xff\xff\xff\xff\xff\xff?\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff#\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff(\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes("")],
     cst_Sexplib_Sexp_subst_found_s=
      caml_string_of_jsbytes
       ("Sexplib.Sexp.subst_found: short list when position requested"),
     cst_Sexplib_Sexp_subst_found_a=
      caml_string_of_jsbytes
       ("Sexplib.Sexp.subst_found: atom when position requested"),
     cst_Annotated_of_bigstring=
      caml_string_of_jsbytes("Annotated.of_bigstring"),
     cst$5=caml_string_of_jsbytes(" "),
     cst_Annotated_of_string=caml_string_of_jsbytes("Annotated.of_string"),
     cst$4=caml_string_of_jsbytes(" "),
     cst_additional_incomplete_data=
      caml_string_of_jsbytes("additional incomplete data"),
     cst$3=caml_string_of_jsbytes(" "),
     cst_of_bigstring=caml_string_of_jsbytes("of_bigstring"),
     cst$2=caml_string_of_jsbytes(" "),
     cst_of_string=caml_string_of_jsbytes("of_string"),
     cst$1=caml_string_of_jsbytes(" "),
     cst_Sexplib_Sexp_input_rev_sex=
      caml_string_of_jsbytes
       ("Sexplib.Sexp.input_rev_sexps: reached EOF while in state "),
     cst$0=caml_string_of_jsbytes(" "),
     cst_Sexplib_Sexp_parser_contin=
      caml_string_of_jsbytes("Sexplib.Sexp: parser continuation called twice"),
     cst_parse_pos_0=caml_string_of_jsbytes("parse: pos < 0"),
     cst_parse_len_0=caml_string_of_jsbytes("parse: len < 0"),
     cst_parse_pos_len_str_len=
      caml_string_of_jsbytes("parse: pos + len > str_len"),
     cst_Parsing_toplevel_whitespac=
      caml_string_of_jsbytes("Parsing_toplevel_whitespace"),
     cst_Parsing_nested_whitespace=
      caml_string_of_jsbytes("Parsing_nested_whitespace"),
     cst_Parsing_atom=caml_string_of_jsbytes("Parsing_atom"),
     cst_Parsing_list=caml_string_of_jsbytes("Parsing_list"),
     cst_Parsing_sexp_comment=caml_string_of_jsbytes("Parsing_sexp_comment"),
     cst_Parsing_block_comment=caml_string_of_jsbytes("Parsing_block_comment"),
     cst_Sexplib_Sexp_Parse_pos_cre=
      caml_string_of_jsbytes("Sexplib.Sexp.Parse_pos.create: "),
     cst_text_line_1=caml_string_of_jsbytes("text_line < 1"),
     cst_text_char_0=caml_string_of_jsbytes("text_char < 0"),
     cst_global_offset_0=caml_string_of_jsbytes("global_offset < 0"),
     cst_buf_pos_0=caml_string_of_jsbytes("buf_pos < 0"),
     cst=caml_string_of_jsbytes("\n"),
     cst_tmp=caml_string_of_jsbytes("tmp"),
     cst_Sexplib_Pre_sexp_Annot_Con=
      caml_string_of_jsbytes("Sexplib__Pre_sexp.Annot.Conv_exn"),
     cst_Sexplib_Pre_sexp_Annot_Ann=
      caml_string_of_jsbytes("Sexplib__Pre_sexp.Annot.Annot_sexp"),
     cst_Sexplib_Pre_sexp_Parse_err=
      caml_string_of_jsbytes("Sexplib__Pre_sexp.Parse_error"),
     cst_Sexplib_Pre_sexp_Parser_ou=
      caml_string_of_jsbytes
       ("Sexplib__Pre_sexp.Parser_output.Bare_sexp.Found"),
     cst_Sexplib_Pre_sexp_Parser_ou$0=
      caml_string_of_jsbytes
       ("Sexplib__Pre_sexp.Parser_output.Annotated_sexp.Found"),
     gen_load_sexp_loc=caml_string_of_jsbytes("Sexplib.Sexp.gen_load_sexp"),
     cst_Sexplib_Pre_sexp_Of_string=
      caml_string_of_jsbytes("Sexplib__Pre_sexp.Of_string_conv_exn.E"),
     unit=[1,0],
     cst$6=caml_string_of_jsbytes(""),
     cst$7=caml_string_of_jsbytes("#;"),
     cst_float_mat_of_sexp_not_enou=
      caml_string_of_jsbytes("float_mat_of_sexp: not enough data"),
     cst_float_mat_of_sexp_list_nee=
      caml_string_of_jsbytes("float_mat_of_sexp: list needed"),
     cst_float_mat_of_sexp_list_too=
      caml_string_of_jsbytes("float_mat_of_sexp: list too short"),
     cst_float_mat_of_sexp_too_much=
      caml_string_of_jsbytes("float_mat_of_sexp: too much data"),
     cst_float_vec_of_sexp_list_nee=
      caml_string_of_jsbytes("float_vec_of_sexp: list needed"),
     cst_bigstring_of_sexp_atom_nee=
      caml_string_of_jsbytes("bigstring_of_sexp: atom needed"),
     cst_EOF_reading_index=caml_string_of_jsbytes("EOF reading index"),
     cst_empty_index=caml_string_of_jsbytes("empty index"),
     cst_double=caml_string_of_jsbytes("double '.'"),
     cst_EOF_after_escape=caml_string_of_jsbytes("EOF after escape"),
     cst_path_empty=caml_string_of_jsbytes("path empty"),
     cst_Path_parse=caml_string_of_jsbytes("Path.parse: "),
     cst_extract_rec=caml_string_of_jsbytes("extract_rec"),
     cst_extract_match=caml_string_of_jsbytes("extract_match"),
     cst_extract_match$0=caml_string_of_jsbytes("extract_match"),
     cst_Path_extract_match_unexpec=
      caml_string_of_jsbytes
       ("Path.extract_match: unexpected nested list in: "),
     cst_extract_pos=caml_string_of_jsbytes("extract_pos"),
     cst_extract_pos$0=caml_string_of_jsbytes("extract_pos"),
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_parsing=global_data.Stdlib__parsing,
     Stdlib=global_data.Stdlib,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_lexing=global_data.Stdlib__lexing,
     Stdlib_char=global_data.Stdlib__char,
     Assert_failure=global_data.Assert_failure,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Parsexp_Parser_automaton=global_data.Parsexp__Parser_automaton,
     Parsexp_Positions=global_data.Parsexp__Positions,
     include$2=global_data.Sexplib0__Sexp_conv,
     Stdlib_random=global_data.Stdlib__random,
     Sexplib0_Sexp=global_data.Sexplib0__Sexp,
     Parsexp=global_data.Parsexp,
     Stdlib_bigarray=global_data.Stdlib__bigarray,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Stdlib_lazy=global_data.Stdlib__lazy,
     Stdlib_obj=global_data.Stdlib__obj,
     Sexplib0_Sexp_conv_error=global_data.Sexplib0__Sexp_conv_error,
     Sexplib=[0];
    caml_register_global(145,Sexplib,"Sexplib");
    var Sexplib_Type=[0];
    caml_register_global(146,Sexplib_Type,"Sexplib__Type");
    var
     _a_=[0,[4,0,0,0,[12,58,[4,0,0,0,0]]],caml_string_of_jsbytes("%d:%d")],
     _e_=[0,caml_string_of_jsbytes("Atom")],
     _f_=[0,caml_string_of_jsbytes("List")],
     _g_=[0,caml_string_of_jsbytes("Sexp")],
     _h_=[0,caml_string_of_jsbytes("Comment")],
     _i_=[0,caml_string_of_jsbytes("Plain_comment")],
     _j_=[0,caml_string_of_jsbytes("Sexp_comment")],
     _d_=[1,0],
     _J_=[1,0],
     _k_=
      [0,
       [11,
        caml_string_of_jsbytes("Sexplib.Parser: failed to parse line "),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" char "),
          [4,0,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]]],
       caml_string_of_jsbytes
        ("Sexplib.Parser: failed to parse line %d char %d: %s")],
     _l_=[0,258,259,0,260,0],
     _N_=
      [0,
       [11,
        caml_string_of_jsbytes("Sexplib.Parser: failed to parse line "),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" char "),
          [4,0,0,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]]],
       caml_string_of_jsbytes
        ("Sexplib.Parser: failed to parse line %d char %d: %s")],
     _O_=[0,259,260,0,261,0],
     _ao_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Sexplib.Lexer.scan_string: illegal escape at line "),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" char "),
          [4,0,0,0,[11,caml_string_of_jsbytes(": `\\"),[0,[0,[0,[12,39,0]]]]]]]]],
       caml_string_of_jsbytes
        ("Sexplib.Lexer.scan_string: illegal escape at line %d char %d: `\\%c%c%c'")],
     _ap_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Sexplib.Lexer.scan_string: unterminated string at line "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" char "),[4,0,0,0,0]]]],
       caml_string_of_jsbytes
        ("Sexplib.Lexer.scan_string: unterminated string at line %d char %d")],
     _aq_=[0,caml_string_of_jsbytes("src/lexer.mll"),234,16],
     _ar_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Sexplib.Lexer.scan_block_comment: unterminated block comment at line "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" char "),[4,0,0,0,0]]]],
       caml_string_of_jsbytes
        ("Sexplib.Lexer.scan_block_comment: unterminated block comment at line %d char %d")],
     _as_=[0,caml_string_of_jsbytes("src/lexer.mll"),239,16],
     _an_=
      [0,
       [11,
        caml_string_of_jsbytes("Sexplib.Lexer.main: "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" at line "),
          [4,0,0,0,[11,caml_string_of_jsbytes(" char "),[4,0,0,0,0]]]]]],
       caml_string_of_jsbytes("Sexplib.Lexer.main: %s at line %d char %d")],
     _aZ_=[0,caml_string_of_jsbytes("src/pre_sexp.ml"),796,15],
     _aX_=
      [0,
       [2,0,[12,58,[4,0,0,0,[12,58,[4,0,0,0,0]]]]],
       caml_string_of_jsbytes("%s:%d:%d")],
     _aV_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(": more than one S-expression in file "),
         [2,0,0]]],
       caml_string_of_jsbytes("%s: more than one S-expression in file %s")],
     _aW_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(": "),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(" in state "),
           [2,0,[11,caml_string_of_jsbytes(" loading file "),[2,0,0]]]]]]],
       caml_string_of_jsbytes("%s: %s in state %s loading file %s")],
     _aU_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(": EOF in "),
         [2,0,[11,caml_string_of_jsbytes(" while in state "),[2,0,0]]]]],
       caml_string_of_jsbytes("%s: EOF in %s while in state %s")],
     _aR_=
      [0,
       [11,
        caml_string_of_jsbytes("Sexplib.Sexp."),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (": got multiple S-expressions where only one was expected."),
          0]]],
       caml_string_of_jsbytes
        ("Sexplib.Sexp.%s: got multiple S-expressions where only one was expected.")],
     _aS_=
      [0,
       [11,
        caml_string_of_jsbytes("Sexplib.Sexp."),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (": S-expression followed by data at position "),
          [4,0,0,0,[11,caml_string_of_jsbytes("..."),0]]]]],
       caml_string_of_jsbytes
        ("Sexplib.Sexp.%s: S-expression followed by data at position %d...")],
     _aT_=
      [0,
       [11,
        caml_string_of_jsbytes("Sexplib.Sexp."),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": incomplete S-expression while in state "),
          [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]]]],
       caml_string_of_jsbytes
        ("Sexplib.Sexp.%s: incomplete S-expression while in state %s: %s")],
     _aP_=[0,0],
     _aH_=[0,caml_string_of_jsbytes("buf_pos")],
     _aI_=[0,caml_string_of_jsbytes("global_offset")],
     _aJ_=[0,caml_string_of_jsbytes("text_char")],
     _aK_=[0,caml_string_of_jsbytes("text_line")],
     _aL_=[0,caml_string_of_jsbytes("err_msg")],
     _aM_=[0,caml_string_of_jsbytes("Sexplib.Sexp.Parse_error")],
     _aN_=[0,caml_string_of_jsbytes("src/pre_sexp.ml"),295,13],
     _aE_=[0,caml_string_of_jsbytes("src/pre_sexp.ml"),210,8],
     _aB_=[0,caml_string_of_jsbytes("Result")],
     _aC_=[0,caml_string_of_jsbytes("Error")],
     _az_=[0,caml_string_of_jsbytes("src/pre_sexp.ml"),167,15],
     _av_=[0,caml_string_of_jsbytes("containing_sexp")],
     _aw_=[0,caml_string_of_jsbytes("invalid_sexp")],
     _ax_=[0,[0,caml_string_of_jsbytes("Of_sexp_error")],0],
     _au_=[0,1,[0,3,[0,5,[0,7,0]]]],
     _at_=[0,[2,0,[4,6,[0,2,6],0,[2,0,0]]],caml_string_of_jsbytes("%s%06x%s")],
     _aA_=[0,0],
     _aF_=[0,0],
     _aO_=[0,0],
     _a0_=[0,0],
     _a1_=[0,caml_string_of_jsbytes("src/sexp_with_layout.ml"),106,4],
     _bS_=
      [0,
       [11,
        caml_string_of_jsbytes("of_string failed on "),
        [2,0,[11,caml_string_of_jsbytes(" with "),[2,0,0]]]],
       caml_string_of_jsbytes("of_string failed on %s with %s")],
     _bW_=
      [0,
       [11,caml_string_of_jsbytes("illegal character in index: "),[0,0]],
       caml_string_of_jsbytes("illegal character in index: %c")],
     _bX_=
      [0,
       [11,caml_string_of_jsbytes("'.' expected; got '"),[0,[12,39,0]]],
       caml_string_of_jsbytes("'.' expected; got '%c'")],
     _bV_=
      [0,
       [11,
        caml_string_of_jsbytes('Path.extract_rec: key "'),
        [2,0,[11,caml_string_of_jsbytes('" not found in: '),[2,0,0]]]],
       caml_string_of_jsbytes('Path.extract_rec: key "%s" not found in: %s')],
     _bU_=
      [0,
       [11,
        caml_string_of_jsbytes("Path."),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": illegal index "),
          [4,0,0,0,[11,caml_string_of_jsbytes(" in: "),[2,0,0]]]]]],
       caml_string_of_jsbytes("Path.%s: illegal index %d in: %s")],
     _bT_=
      [0,
       [11,
        caml_string_of_jsbytes("Path."),
        [2,0,[11,caml_string_of_jsbytes(": illegal atom: "),[2,0,0]]]],
       caml_string_of_jsbytes("Path.%s: illegal atom: %s")];
    function sexp_of_t(param)
     {var col=param[2],row=param[1];
      return [0,caml_call3(Stdlib_printf[4],_a_,row,col)]}
    function add(t1,t2){return [0,t1[1] + t2[1] | 0,t1[2] + t2[2] | 0]}
    function sub(t1,t2){return [0,t1[1] - t2[1] | 0,t1[2] - t2[2] | 0]}
    function geq(t1,t2)
     {var
       c2=t2[2],
       r2=t2[1],
       c1=t1[2],
       r1=t1[1],
       _e0_=r1 === r2?c1 - c2 | 0:r1 - r2 | 0;
      return 0 <= _e0_?1:0}
    function of_lexing(param)
     {var pos_cnum=param[4],pos_bol=param[3],pos_lnum=param[2];
      return [0,pos_lnum,(pos_cnum - pos_bol | 0) + 1 | 0]}
    var
     _b_=[0,sexp_of_t,origin,of_lexing,sub,add,sub,geq],
     _c_=[0,sexp_of_t,zero,add,sub],
     Sexplib_Src_pos=[0,_c_,_b_];
    caml_register_global(148,Sexplib_Src_pos,"Sexplib__Src_pos");
    function map(t,f)
     {var _eZ_=caml_call2(Stdlib_list[19],f,t);
      return caml_call1(Stdlib_list[9],_eZ_)}
    function Make(Pos)
     {var T=[0],of_pos=Pos[1];
      function of_list(of_a,xs){return [1,map(xs,of_a)]}
      function of_t(param)
       {if(0 === param[0])
         {var v3=param[3],v2=param[2],v1=param[1],_eV_=0;
          if(v3)var x=v3[1],_eW_=[1,[0,[0,x],0]];else var _eW_=_d_;
          return [1,
                  [0,_e_,[0,caml_call1(of_pos,v1),[0,[0,v2],[0,_eW_,_eV_]]]]]}
        var
         v3$0=param[3],
         v2$0=param[2],
         v1$0=param[1],
         _eX_=[0,caml_call1(of_pos,v3$0),0],
         _eY_=[0,of_list(of_t_or_comment,v2$0),_eX_];
        return [1,[0,_f_,[0,caml_call1(of_pos,v1$0),_eY_]]]}
      function of_t_or_comment(param)
       {if(0 === param[0]){var t=param[1];return [1,[0,_g_,[0,of_t(t),0]]]}
        var c=param[1];
        return [1,[0,_h_,[0,of_comment(c),0]]]}
      function of_comment(param)
       {if(0 === param[0])
         {var v2=param[2],v1=param[1];
          return [1,[0,_i_,[0,caml_call1(of_pos,v1),[0,[0,v2],0]]]]}
        var
         v3=param[3],
         v2$0=param[2],
         v1$0=param[1],
         _eT_=[0,of_t(v3),0],
         _eU_=[0,of_list(of_comment,v2$0),_eT_];
        return [1,[0,_j_,[0,caml_call1(of_pos,v1$0),_eU_]]]}
      var
       To_sexp=[0,of_t,of_comment,of_t_or_comment],
       sexp_of_t=To_sexp[1],
       sexp_of_comment=To_sexp[2],
       sexp_of_t_or_comment=To_sexp[3];
      return [0,T,To_sexp,sexp_of_t,sexp_of_comment,sexp_of_t_or_comment]}
    var
     include=Make([0,_c_[1]]),
     sexp_of_t$0=include[3],
     sexp_of_comment=include[4],
     sexp_of_t_or_comment=include[5],
     Parsed=Make([0,_b_[1]]);
    function rel(outer_p,p){return caml_call2(_b_[4],p,outer_p)}
    function aux_t(outer_p,param)
     {if(0 === param[0])
       {var sopt=param[3],s=param[2],pos=param[1];
        return [0,rel(outer_p,pos),s,sopt]}
      var
       end_pos=param[3],
       tocs=param[2],
       start_pos=param[1],
       _eR_=rel(outer_p,end_pos),
       _eS_=map(tocs,function(toc){return aux_toc(start_pos,toc)});
      return [1,rel(outer_p,start_pos),_eS_,_eR_]}
    function aux_toc(outer_p,param)
     {if(0 === param[0]){var t=param[1];return [0,aux_t(outer_p,t)]}
      var c=param[1];
      return [1,aux_c(outer_p,c)]}
    function aux_c(outer_p,param)
     {if(0 === param[0])
       {var txt=param[2],pos=param[1];return [0,rel(outer_p,pos),txt]}
      var
       t=param[3],
       cs=param[2],
       pos$0=param[1],
       _eP_=aux_t(outer_p,t),
       _eQ_=map(cs,function(c){return aux_c(outer_p,c)});
      return [1,rel(outer_p,pos$0),_eQ_,_eP_]}
    function relativize(toc){return aux_toc(_b_[2],toc)}
    var Parsed$0=[0,Parsed[3],Parsed[4],Parsed[5]];
    function Make$0(_eO_){return [0]}
    var
     include$0=
      [0,
       Make$0,
       Parsed$0,
       sexp_of_t$0,
       sexp_of_comment,
       sexp_of_t_or_comment,
       relativize];
    caml_register_global(150,include$0,"Sexplib__Type_with_layout");
    var yytransl_const=_l_.slice(),yytransl_block=[0,257,0],yytablesize=286;
    function _m_(caml_parser_env)
     {var _eN_=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      throw [0,Stdlib_parsing[12],_eN_]}
    function _n_(caml_parser_env)
     {var _eM_=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      throw [0,Stdlib_parsing[12],_eM_]}
    function _o_(caml_parser_env)
     {var _eL_=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      throw [0,Stdlib_parsing[12],_eL_]}
    function _p_(caml_parser_env)
     {var _eK_=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      throw [0,Stdlib_parsing[12],_eK_]}
    function _q_(caml_parser_env){return 0}
    function _r_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1);
      return caml_call1(Stdlib_list[9],_1)}
    function _s_(caml_parser_env){return 0}
    function _t_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1);return _1}
    function _u_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1);
      caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return _1}
    function _v_(caml_parser_env)
     {var
       _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1),
       _2=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return [0,_2,_1]}
    function _w_(caml_parser_env)
     {caml_call2(Stdlib_parsing[14],caml_parser_env,0);return 0}
    function _x_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,0);return [0,_1,0]}
    function _y_(caml_parser_env)
     {caml_call2(Stdlib_parsing[14],caml_parser_env,1);return 0}
    function _z_(caml_parser_env){return 0}
    function _A_(caml_parser_env)
     {caml_call2(Stdlib_parsing[14],caml_parser_env,1);
      var _2=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return [0,_2]}
    function _B_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,0);return [0,_1]}
    function _C_(caml_parser_env)
     {caml_call2(Stdlib_parsing[14],caml_parser_env,1);
      caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return 0}
    function _D_(caml_parser_env)
     {caml_call2(Stdlib_parsing[14],caml_parser_env,0);return 0}
    function _E_(caml_parser_env)
     {caml_call2(Stdlib_parsing[14],caml_parser_env,1);
      caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return 0}
    function _F_(caml_parser_env)
     {caml_call2(Stdlib_parsing[14],caml_parser_env,0);return 0}
    function _G_(caml_parser_env)
     {var
       pos=caml_call1(Stdlib_parsing[5],0),
       msg=caml_call4(Stdlib_printf[4],_k_,pos[2],pos[4] - pos[3] | 0,what);
      return caml_call1(Stdlib[2],msg)}
    function _H_(caml_parser_env)
     {var _2=caml_call2(Stdlib_parsing[14],caml_parser_env,1);
      return [1,caml_call1(Stdlib_list[9],_2)]}
    function _I_(caml_parser_env){return _J_}
    function _K_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,0);return [0,_1]}
    function _L_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,0);return _1}
    function _M_(caml_parser_env)
     {caml_call2(Stdlib_parsing[14],caml_parser_env,1);
      var _2=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return _2}
    var
     yyact=
      [0,
       function(param){return caml_call1(Stdlib[2],cst_parser)},
       _M_,
       _L_,
       _K_,
       _I_,
       _H_,
       _G_,
       _F_,
       _E_,
       _D_,
       _C_,
       _B_,
       _A_,
       _z_,
       _y_,
       _x_,
       _w_,
       _v_,
       _u_,
       _t_,
       _s_,
       _r_,
       _q_,
       _p_,
       _o_,
       _n_,
       _m_],
     yytables=
      [0,
       yyact,
       yytransl_const,
       yytransl_block,
       yylhs,
       yylen,
       yydefred,
       yydgoto,
       yysindex,
       yyrindex,
       yygindex,
       yytablesize,
       yytable,
       yycheck,
       Stdlib_parsing[16],
       yynames_const,
       yynames_block];
    function sexp(lexfun,lexbuf)
     {return caml_call4(Stdlib_parsing[13],yytables,1,lexfun,lexbuf)}
    function sexp_opt(lexfun,lexbuf)
     {return caml_call4(Stdlib_parsing[13],yytables,2,lexfun,lexbuf)}
    function sexps(lexfun,lexbuf)
     {return caml_call4(Stdlib_parsing[13],yytables,3,lexfun,lexbuf)}
    function rev_sexps(lexfun,lexbuf)
     {return caml_call4(Stdlib_parsing[13],yytables,4,lexfun,lexbuf)}
    var Sexplib_Parser=[0,sexp,sexp_opt,sexps,rev_sexps];
    caml_register_global(153,Sexplib_Parser,"Sexplib__Parser");
    var coerce=_b_[3];
    function start_pos(param)
     {return caml_call1(coerce,caml_call1(Stdlib_parsing[5],0))}
    var
     yytransl_const$0=_O_.slice(),
     yytransl_block$0=[0,257,258,0],
     yytablesize$0=292;
    function _P_(caml_parser_env)
     {var _eJ_=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      throw [0,Stdlib_parsing[12],_eJ_]}
    function _Q_(caml_parser_env)
     {var _eI_=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      throw [0,Stdlib_parsing[12],_eI_]}
    function _R_(caml_parser_env)
     {var _eH_=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      throw [0,Stdlib_parsing[12],_eH_]}
    function _S_(caml_parser_env)
     {var _eG_=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      throw [0,Stdlib_parsing[12],_eG_]}
    function _T_(caml_parser_env)
     {var _eF_=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      throw [0,Stdlib_parsing[12],_eF_]}
    function _U_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1);
      return caml_call1(Stdlib_list[9],_1)}
    function _V_(caml_parser_env){return 0}
    function _W_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1);
      return caml_call1(Stdlib_list[9],_1)}
    function _X_(caml_parser_env){return 0}
    function _Y_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1);return _1}
    function _Z_(caml_parser_env)
     {var
       _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1),
       _2=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return [0,_2,_1]}
    function ___(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,0);return [0,_1,0]}
    function _$_(caml_parser_env){return 0}
    function _aa_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,0);return [0,_1]}
    function _ab_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return relativize(_1)}
    function _ac_(caml_parser_env)
     {var
       _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1),
       _2=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return [0,_2,_1]}
    function _ad_(caml_parser_env){return 0}
    function _ae_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,0);return [1,_1]}
    function _af_(caml_parser_env)
     {var _1=caml_call2(Stdlib_parsing[14],caml_parser_env,0);return [0,_1]}
    function _ag_(caml_parser_env)
     {var
       _1=caml_call2(Stdlib_parsing[14],caml_parser_env,1),
       _2=caml_call2(Stdlib_parsing[14],caml_parser_env,0);
      return [0,_2,_1]}
    function _ah_(caml_parser_env){return 0}
    function _ai_(caml_parser_env)
     {var
       _2=caml_call2(Stdlib_parsing[14],caml_parser_env,1),
       t=caml_call2(Stdlib_parsing[14],caml_parser_env,0),
       cs=caml_call1(Stdlib_list[9],_2);
      return [1,start_pos(0),cs,t]}
    function _aj_(caml_parser_env)
     {var
       param=caml_call2(Stdlib_parsing[14],caml_parser_env,0),
       pos_opt=param[2],
       x=param[1];
      if(pos_opt)
       var pos=pos_opt[1],pos$0=caml_call1(coerce,pos);
      else
       var pos$0=start_pos(0);
      return [0,pos$0,x]}
    function _ak_(caml_parser_env)
     {var
       pos=caml_call1(Stdlib_parsing[5],0),
       msg=caml_call4(Stdlib_printf[4],_N_,pos[2],pos[4] - pos[3] | 0,what$0);
      return caml_call1(Stdlib[2],msg)}
    function _al_(caml_parser_env)
     {var
       _2=caml_call2(Stdlib_parsing[14],caml_parser_env,1),
       ts=caml_call1(Stdlib_list[9],_2),
       p=caml_call1(Stdlib_parsing[6],0),
       _eE_=caml_call1(coerce,[0,p[1],p[2],p[3],p[4] - 1 | 0]);
      return [1,start_pos(0),ts,_eE_]}
    function _am_(caml_parser_env)
     {var
       param=caml_call2(Stdlib_parsing[14],caml_parser_env,0),
       y=param[2],
       x=param[1];
      if(y)
       var
        match=y[1],
        x$0=match[2],
        pos=match[1],
        y$0=[0,x$0],
        y$1=y$0,
        pos$0=caml_call1(coerce,pos);
      else
       var y$2=[0,x],pos$1=start_pos(0),y$1=y$2,pos$0=pos$1;
      return [0,pos$0,x,y$1]}
    var
     yyact$0=
      [0,
       function(param){return caml_call1(Stdlib[2],cst_parser$0)},
       _am_,
       _al_,
       _ak_,
       _aj_,
       _ai_,
       _ah_,
       _ag_,
       _af_,
       _ae_,
       _ad_,
       _ac_,
       _ab_,
       _aa_,
       _$_,
       ___,
       _Z_,
       _Y_,
       _X_,
       _W_,
       _V_,
       _U_,
       _T_,
       _S_,
       _R_,
       _Q_,
       _P_],
     yytables$0=
      [0,
       yyact$0,
       yytransl_const$0,
       yytransl_block$0,
       yylhs$0,
       yylen$0,
       yydefred$0,
       yydgoto$0,
       yysindex$0,
       yyrindex$0,
       yygindex$0,
       yytablesize$0,
       yytable$0,
       yycheck$0,
       Stdlib_parsing[16],
       yynames_const$0,
       yynames_block$0];
    function sexp$0(lexfun,lexbuf)
     {return caml_call4(Stdlib_parsing[13],yytables$0,1,lexfun,lexbuf)}
    function sexp_opt$0(lexfun,lexbuf)
     {return caml_call4(Stdlib_parsing[13],yytables$0,2,lexfun,lexbuf)}
    function sexps$0(lexfun,lexbuf)
     {return caml_call4(Stdlib_parsing[13],yytables$0,3,lexfun,lexbuf)}
    function sexps_abs(lexfun,lexbuf)
     {return caml_call4(Stdlib_parsing[13],yytables$0,4,lexfun,lexbuf)}
    function rev_sexps$0(lexfun,lexbuf)
     {return caml_call4(Stdlib_parsing[13],yytables$0,5,lexfun,lexbuf)}
    var
     Sexplib_Parser_with_layout=
      [0,sexp$0,sexp_opt$0,sexps$0,sexps_abs,rev_sexps$0];
    caml_register_global
     (154,Sexplib_Parser_with_layout,"Sexplib__Parser_with_layout");
    var lf=10;
    function found_newline(lexbuf)
     {var lex_curr_p=lexbuf[12];
      return function(diff)
       {lexbuf[12]
        =
        [0,
         lex_curr_p[1],
         lex_curr_p[2] + 1 | 0,
         lex_curr_p[4] - diff | 0,
         lex_curr_p[4]];
        return 0}}
    function lexeme_len(param)
     {var lex_start_pos=param[5],lex_curr_pos=param[6];
      return lex_curr_pos - lex_start_pos | 0}
    function main_failure(lexbuf,msg)
     {var
       match=caml_call1(Stdlib_lexing[10],lexbuf),
       pos_cnum=match[4],
       pos_bol=match[3],
       pos_lnum=match[2],
       msg$0=
        caml_call4(Stdlib_printf[4],_an_,msg,pos_lnum,pos_cnum - pos_bol | 0);
      return caml_call1(Stdlib[2],msg$0)}
    function Make$1(X)
     {function _ey_(buf,lexbuf)
       {a:
        for(;;)
         {var ocaml_lex_state=0;
          for(;;)
           {var
             ocaml_lex_state$0=
              caml_call3
               (Stdlib_lexing[18],ocaml_lex_tables,ocaml_lex_state,lexbuf);
            if(11 < ocaml_lex_state$0 >>> 0)
             {caml_call1(lexbuf[1],lexbuf);
              var ocaml_lex_state=ocaml_lex_state$0;
              continue}
            switch(ocaml_lex_state$0)
             {case 0:caml_call1(found_newline(lexbuf),0);continue a;
              case 1:continue a;
              case 2:
               var
                text=
                 caml_call3(Stdlib_lexing[14],lexbuf,lexbuf[5],lexbuf[6]);
               return caml_call4(X[2][7],text,_ey_,buf,lexbuf);
              case 3:return X[2][1];
              case 4:return X[2][2];
              case 5:
               var pos=caml_call1(Stdlib_lexing[10],lexbuf);
               caml_call2(X[1][4],buf,lexbuf);
               scan_string(buf,pos,lexbuf);
               var tok=caml_call2(X[2][6],pos,buf);
               caml_call1(X[1][5],buf);
               return tok;
              case 6:return X[2][5];
              case 7:
               var pos$0=caml_call1(Stdlib_lexing[10],lexbuf);
               caml_call2(X[1][4],buf,lexbuf);
               var locs=[0,pos$0,0],locs$0=locs;
               b:
               for(;;)
                {var ocaml_lex_state$1=53;
                 for(;;)
                  {var
                    ocaml_lex_state$2=
                     caml_call3
                      (Stdlib_lexing[18],
                       ocaml_lex_tables,
                       ocaml_lex_state$1,
                       lexbuf);
                   if(5 < ocaml_lex_state$2 >>> 0)
                    {caml_call1(lexbuf[1],lexbuf);
                     var ocaml_lex_state$1=ocaml_lex_state$2;
                     continue}
                   switch(ocaml_lex_state$2)
                    {case 0:
                      caml_call2(X[1][4],buf,lexbuf);
                      caml_call1(found_newline(lexbuf),0);
                      continue b;
                     case 1:caml_call2(X[1][4],buf,lexbuf);continue b;
                     case 2:
                      caml_call2(X[1][4],buf,lexbuf);
                      var
                       cur=caml_call1(Stdlib_lexing[11],lexbuf),
                       start=[0,cur[1],cur[2],cur[3],cur[4] - 1 | 0];
                      scan_string(buf,start,lexbuf);
                      continue b;
                     case 3:
                      caml_call2(X[1][4],buf,lexbuf);
                      var
                       cur$0=caml_call1(Stdlib_lexing[11],lexbuf),
                       start$0=[0,cur$0[1],cur$0[2],cur$0[3],cur$0[4] - 2 | 0],
                       locs$1=[0,start$0,locs$0],
                       locs$0=locs$1;
                      continue b;
                     case 4:
                      caml_call2(X[1][4],buf,lexbuf);
                      if(! locs$0)throw [0,Assert_failure,_aq_];
                      var _eD_=locs$0[2];
                      if(_eD_){var locs$0=_eD_;continue b}
                      break;
                     default:
                      if(! locs$0)throw [0,Assert_failure,_as_];
                      var
                       match=locs$0[1],
                       pos_cnum=match[4],
                       pos_bol=match[3],
                       pos_lnum=match[2],
                       msg=
                        caml_call3
                         (Stdlib_printf[4],_ar_,pos_lnum,pos_cnum - pos_bol | 0);
                      caml_call1(Stdlib[2],msg)}
                   var tok$0=caml_call4(X[2][8],pos$0,_ey_,buf,lexbuf);
                   caml_call1(X[1][5],buf);
                   return tok$0}}
              case 8:return main_failure(lexbuf,cst_illegal_end_of_comment);
              case 9:
               return main_failure(lexbuf,cst_comment_tokens_in_unquoted);
              case 10:
               var
                str=
                 caml_call3(Stdlib_lexing[14],lexbuf,lexbuf[5],lexbuf[6]);
               return caml_call1(X[2][4],str);
              default:return X[2][3]}}}}
      function scan_string(buf,start,lexbuf)
       {a:
        for(;;)
         {var ocaml_lex_state=36;
          for(;;)
           {var
             ocaml_lex_state$0=
              caml_call3
               (Stdlib_lexing[18],ocaml_lex_tables,ocaml_lex_state,lexbuf);
            if(9 < ocaml_lex_state$0 >>> 0)
             {caml_call1(lexbuf[1],lexbuf);
              var ocaml_lex_state=ocaml_lex_state$0;
              continue}
            switch(ocaml_lex_state$0)
             {case 0:caml_call2(X[1][4],buf,lexbuf);return 0;
              case 1:
               var len=lexeme_len(lexbuf) - 2 | 0;
               caml_call1(found_newline(lexbuf),len);
               caml_call2(X[1][4],buf,lexbuf);
               continue a;
              case 2:
               var len$0=lexeme_len(lexbuf) - 3 | 0;
               caml_call1(found_newline(lexbuf),len$0);
               caml_call2(X[1][4],buf,lexbuf);
               continue a;
              case 3:
               var
                c=caml_call2(Stdlib_lexing[16],lexbuf,lexbuf[5] + 1 | 0),
                switch$0=0;
               if(110 <= c)
                if(117 <= c)
                 switch$0 = 1;
                else
                 {var switcher=c - 110 | 0;
                  switch(switcher)
                   {case 0:var _eA_=10;break;
                    case 4:var _eA_=13;break;
                    case 6:var _eA_=9;break;
                    default:switch$0 = 1}}
               else
                if(98 === c)var _eA_=8;else switch$0 = 1;
               if(switch$0)var _eA_=c;
               caml_call2(X[1][2],buf,_eA_);
               caml_call2(X[1][4],buf,lexbuf);
               continue a;
              case 4:
               var
                c1=caml_call2(Stdlib_lexing[16],lexbuf,lexbuf[5] + 1 | 0),
                c2=caml_call2(Stdlib_lexing[16],lexbuf,lexbuf[5] + 2 | 0),
                c3=caml_call2(Stdlib_lexing[16],lexbuf,lexbuf[5] + 3 | 0),
                v=
                 ((100 * (c1 - 48 | 0) | 0) + (10 * (c2 - 48 | 0) | 0) | 0)
                 +
                 (c3 - 48 | 0)
                 |
                 0;
               if(255 < v)
                {var
                  match=caml_call1(Stdlib_lexing[11],lexbuf),
                  pos_cnum=match[4],
                  pos_bol=match[3],
                  pos_lnum=match[2],
                  msg=
                   caml_call6
                    (Stdlib_printf[4],
                     _ao_,
                     pos_lnum,
                     (pos_cnum - pos_bol | 0) - 3 | 0,
                     c1,
                     c2,
                     c3);
                 caml_call1(Stdlib[2],msg)}
               var _eB_=caml_call1(Stdlib_char[1],v);
               caml_call2(X[1][2],buf,_eB_);
               caml_call2(X[1][4],buf,lexbuf);
               continue a;
              case 5:
               var
                d1=caml_call2(Stdlib_lexing[16],lexbuf,lexbuf[5] + 2 | 0),
                c2$0=caml_call2(Stdlib_lexing[16],lexbuf,lexbuf[5] + 3 | 0),
                val1=97 <= d1?d1 - 87 | 0:65 <= d1?d1 - 55 | 0:d1 - 48 | 0,
                val2=
                 97 <= c2$0
                  ?c2$0 - 87 | 0
                  :65 <= c2$0?c2$0 - 55 | 0:c2$0 - 48 | 0,
                v$0=(val1 * 16 | 0) + val2 | 0,
                _eC_=caml_call1(Stdlib_char[1],v$0);
               caml_call2(X[1][2],buf,_eC_);
               caml_call2(X[1][4],buf,lexbuf);
               continue a;
              case 6:
               var c$0=caml_call2(Stdlib_lexing[16],lexbuf,lexbuf[5] + 1 | 0);
               caml_call2(X[1][2],buf,92);
               caml_call2(X[1][2],buf,c$0);
               caml_call2(X[1][4],buf,lexbuf);
               continue a;
              case 7:
               caml_call1(found_newline(lexbuf),0);
               caml_call2(X[1][2],buf,lf);
               caml_call2(X[1][4],buf,lexbuf);
               continue a;
              case 8:
               var ofs=lexbuf[5],len$1=lexbuf[6] - ofs | 0;
               caml_call4(X[1][3],buf,lexbuf[2],ofs,len$1);
               caml_call2(X[1][4],buf,lexbuf);
               continue a;
              default:
               var
                msg$0=
                 caml_call3
                  (Stdlib_printf[4],_ap_,start[2],start[4] - start[3] | 0);
               return caml_call1(Stdlib[2],msg$0)}}}}
      function main(buf)
       {if(buf)
         {var buf$0=buf[1];
          caml_call1(Stdlib_buffer[8],buf$0);
          var buf$1=caml_call1(X[1][6],buf$0)}
        else
         var buf$1=caml_call1(X[1][1],64);
        return function(_ez_){return _ey_(buf$1,_ez_)}}
      return [0,main]}
    var
     create=Stdlib_buffer[1],
     clear=Stdlib_buffer[8],
     add_char=Stdlib_buffer[10],
     add_subbytes=Stdlib_buffer[17];
    function add_lexeme(param,_ex_){return 0}
    function of_buffer(b){return b}
    var eof=2,lparen=0,rparen=1,hash_semi=3;
    function simple_string(x){return [0,x]}
    function quoted_string(param,buf)
     {return [0,caml_call1(Stdlib_buffer[2],buf)]}
    function block_comment(pos,main,buf,lexbuf)
     {return caml_call2(main,buf,lexbuf)}
    function comment(text,main,buf,lexbuf){return caml_call2(main,buf,lexbuf)}
    var
     Vanilla=
      Make$1
       ([0,
         [0,create,add_char,add_subbytes,add_lexeme,clear,of_buffer],
         [0,
          lparen,
          rparen,
          eof,
          simple_string,
          hash_semi,
          quoted_string,
          comment,
          block_comment]]);
    function create$0(n)
     {var _ew_=caml_call1(Stdlib_buffer[1],n);
      return [0,caml_call1(Stdlib_buffer[1],n),_ew_]}
    function of_buffer$0(contents)
     {return [0,contents,caml_call1(Stdlib_buffer[1],64)]}
    function add_char$0(t,ch){return caml_call2(Stdlib_buffer[10],t[1],ch)}
    function add_subbytes$0(t,str,ofs,len)
     {return caml_call4(Stdlib_buffer[17],t[1],str,ofs,len)}
    function add_lexeme$0(t,lexbuf)
     {var _ev_=caml_call1(Stdlib_lexing[6],lexbuf);
      return caml_call2(Stdlib_buffer[14],t[2],_ev_)}
    function clear$0(t)
     {caml_call1(Stdlib_buffer[8],t[2]);
      return caml_call1(Stdlib_buffer[8],t[1])}
    var eof$0=2,lparen$0=0,rparen$0=1,hash_semi$0=3;
    function simple_string$0(x){return [0,[0,x,0]]}
    function quoted_string$0(pos,param)
     {var
       lexeme=param[2],
       contents=param[1],
       _eu_=[0,[0,pos,caml_call1(Stdlib_buffer[2],lexeme)]];
      return [0,[0,caml_call1(Stdlib_buffer[2],contents),_eu_]]}
    function block_comment$0(pos,param,_et_,lexbuf)
     {var lexeme=_et_[2];
      return [1,[0,caml_call1(Stdlib_buffer[2],lexeme),[0,pos]]]}
    function comment$0(text,param,buf,lexbuf){return [1,[0,text,0]]}
    var
     With_layout=
      Make$1
       ([0,
         [0,
          create$0,
          add_char$0,
          add_subbytes$0,
          add_lexeme$0,
          clear$0,
          of_buffer$0],
         [0,
          lparen$0,
          rparen$0,
          eof$0,
          simple_string$0,
          hash_semi$0,
          quoted_string$0,
          comment$0,
          block_comment$0]]),
     main=Vanilla[1],
     main$0=With_layout[1],
     Sexplib_Lexer=[0,main,main$0];
    caml_register_global(159,Sexplib_Lexer,"Sexplib__Lexer");
    var
     of_int_style=Sexplib0_Sexp[17],
     of_float_style=Sexplib0_Sexp[16],
     to_string=Sexplib0_Sexp[15],
     to_string_mach=Sexplib0_Sexp[14],
     to_string_hum=Sexplib0_Sexp[13],
     pp=Sexplib0_Sexp[12],
     pp_mach=Sexplib0_Sexp[11],
     pp_hum_indent=Sexplib0_Sexp[10],
     pp_hum=Sexplib0_Sexp[9],
     default_indent=Sexplib0_Sexp[8],
     message=Sexplib0_Sexp[7],
     Of_sexp_error=Sexplib0_Sexp[6],
     Not_found_s=Sexplib0_Sexp[5],
     compare=Sexplib0_Sexp[4],
     equal=Sexplib0_Sexp[3],
     include$1=Sexplib0_Sexp[18],
     size=include$1[1],
     buffer=include$1[2],
     to_buffer=include$1[3],
     to_buffer_hum=include$1[4],
     to_buffer_mach=include$1[5],
     to_buffer_gen=include$1[6],
     mach_maybe_esc_str=include$1[7],
     must_escape=include$1[8],
     esc_str=include$1[9];
    function with_new_buffer(oc,f)
     {var buf=caml_call1(buffer,0);
      caml_call1(f,buf);
      return caml_call2(Stdlib_buffer[21],oc,buf)}
    function output_hum(oc,sexp)
     {return with_new_buffer
              (oc,function(buf){return caml_call3(to_buffer_hum,buf,0,sexp)})}
    function output_hum_indent(indent,oc,sexp)
     {return with_new_buffer
              (oc,
               function(buf)
                {return caml_call3(to_buffer_hum,buf,[0,indent],sexp)})}
    function output(oc,sexp)
     {return with_new_buffer
              (oc,function(buf){return caml_call2(to_buffer_mach,buf,sexp)})}
    var prng=[0,0];
    function temp_file_name(prefix,suffix)
     {var _es_=prng[1];
      if(_es_)
       var v=_es_[1],rand_state=v;
      else
       {var ret=caml_call1(Stdlib_random[11][2],0);
        prng[1] = [0,ret];
        var rand_state=ret}
      var rnd=caml_call1(Stdlib_random[11][4],rand_state) & 16777215;
      return caml_call4(Stdlib_printf[4],_at_,prefix,rnd,suffix)}
    function open_temp_file(opt,prefix,suffix)
     {if(opt)var sth=opt[1],perm=sth;else var perm=438;
      function try_name(counter)
       {var counter$0=counter;
        for(;;)
         {var name=temp_file_name(prefix,suffix);
          try
           {var oc=caml_call3(Stdlib[62],_au_,perm,name),_er_=[0,name,oc];
            return _er_}
          catch(e)
           {e = caml_wrap_exception(e);
            if(e[1] === Stdlib[11])
             {if(1000 <= counter$0)throw e;
              var counter$1=counter$0 + 1 | 0,counter$0=counter$1;
              continue}
            throw e}}}
      return try_name(0)}
    var Tmp_file=[0,prng,temp_file_name,open_temp_file];
    function save_of_output(perm,output_function,file,sexp)
     {var
       match=caml_call3(Tmp_file[3],perm,file,cst_tmp),
       oc=match[2],
       tmp_name=match[1];
      try
       {caml_call2(output_function,oc,sexp);caml_call1(Stdlib[76],oc)}
      catch(e)
       {e = caml_wrap_exception(e);
        caml_call1(Stdlib[77],oc);
        try {runtime.caml_sys_remove(tmp_name)}catch(_eq_){}
        throw e}
      return runtime.caml_sys_rename(tmp_name,file)}
    function output_sexp_nl(do_output,oc,sexp)
     {caml_call2(do_output,oc,sexp);return caml_call2(Stdlib[66],oc,cst)}
    function save_hum(perm,file,sexp)
     {return save_of_output
              (perm,
               function(_eo_,_ep_)
                {return output_sexp_nl(output_hum,_eo_,_ep_)},
               file,
               sexp)}
    function save(perm,file,sexp)
     {return save_of_output(perm,output,file,sexp)}
    function output_sexps_nl(do_output,oc,sexps)
     {function _em_(_en_){return output_sexp_nl(do_output,oc,_en_)}
      return caml_call2(Stdlib_list[15],_em_,sexps)}
    function save_sexps_hum(perm,file,sexps)
     {return save_of_output
              (perm,
               function(_ek_,_el_)
                {return output_sexps_nl(output_hum,_ek_,_el_)},
               file,
               sexps)}
    function save_sexps(perm,file,sexps)
     {return save_of_output
              (perm,
               function(_ei_,_ej_){return output_sexps_nl(output,_ei_,_ej_)},
               file,
               sexps)}
    function scan_sexp(buf,lexbuf){return sexp(caml_call1(main,buf),lexbuf)}
    function scan_sexp_opt(buf,lexbuf)
     {return sexp_opt(caml_call1(main,buf),lexbuf)}
    function scan_sexps(buf,lexbuf){return sexps(caml_call1(main,buf),lexbuf)}
    function scan_rev_sexps(buf,lexbuf)
     {return rev_sexps(caml_call1(main,buf),lexbuf)}
    function get_main_buf(buf)
     {if(buf)
       var buf$0=buf[1],buf$1=buf$0;
      else
       var buf$1=caml_call1(Stdlib_buffer[1],128);
      return caml_call1(main,[0,buf$1])}
    function scan_fold_sexps(buf,f,acc,lexbuf)
     {var main=get_main_buf(buf),acc$0=acc;
      for(;;)
       {var match=sexp_opt(main,lexbuf);
        if(match)
         {var sexp=match[1],acc$1=caml_call2(f,acc$0,sexp),acc$0=acc$1;
          continue}
        return acc$0}}
    function scan_iter_sexps(buf,f,lexbuf)
     {var _eh_=0;
      return scan_fold_sexps
              (buf,
               function(param,sexp){return caml_call1(f,sexp)},
               _eh_,
               lexbuf)}
    function scan_sexps_conv(buf,f,lexbuf)
     {function coll(acc,sexp){return [0,caml_call1(f,sexp),acc]}
      var _eg_=scan_fold_sexps(buf,coll,0,lexbuf);
      return caml_call1(Stdlib_list[9],_eg_)}
    function sexp_conversion_error_message
     (containing_sexp,location,invalid_sexp,param,exn)
     {var _d9_=0;
      if(containing_sexp)
       var x=containing_sexp[1],_d__=[0,[1,[0,_av_,[0,x,0]]],0];
      else
       var _d__=0;
      var _d$_=[0,_d__,_d9_];
      if(invalid_sexp)
       var x$0=invalid_sexp[1],_ea_=[0,[1,[0,_aw_,[0,x$0,0]]],0];
      else
       var _ea_=0;
      var _eb_=[0,_ea_,_d$_],_ec_=0;
      if(exn[1] === Stdlib[7])
       var x$1=exn[2],_ed_=[0,x$1];
      else
       var _ed_=caml_call1(include$2[49],exn);
      var _ee_=[0,[0,_ed_,_ec_],_eb_];
      if(location)var x$2=location[1],_ef_=[0,[0,x$2],0];else var _ef_=0;
      return [1,caml_call1(Stdlib_list[13],[0,_ax_,[0,_ef_,_ee_]])]}
    var Conv_exn=[248,cst_Sexplib_Pre_sexp_Annot_Con,caml_fresh_oo_id(0)];
    function _ay_(param)
     {if(param[1] === Conv_exn)
       {var exn=param[3],location=param[2];
        return sexp_conversion_error_message(0,[0,location],0,0,exn)}
      throw [0,Assert_failure,_az_]}
    caml_call3(include$2[51][2],_aA_,Conv_exn,_ay_);
    function get_sexp(param)
     {var sexp=0 === param[0]?param[2]:param[3];return sexp}
    function get_range(param){var range=param[1];return range}
    function sexp_of_conv(sexp_of_a,param)
     {if(1025039613 <= param[1])
       {var a=param[2];return [1,[0,_aB_,[0,caml_call1(sexp_of_a,a),0]]]}
      var match=param[2],t=match[2],exn=match[1],_d8_=[0,get_sexp(t),0];
      return [1,[0,_aC_,[0,[1,[0,caml_call1(include$2[49],exn),_d8_]],0]]]}
    var Annot_sexp=[248,cst_Sexplib_Pre_sexp_Annot_Ann,caml_fresh_oo_id(0)];
    function find_sexp(annot_sexp,sexp)
     {function loop(annot_sexp)
       {var sub_sexp=0 === annot_sexp[0]?annot_sexp[2]:annot_sexp[3];
        if(sexp === sub_sexp)throw [0,Annot_sexp,annot_sexp];
        if(0 === annot_sexp[0])return 0;
        var annots=annot_sexp[2];
        return caml_call2(Stdlib_list[15],loop,annots)}
      try
       {loop(annot_sexp);var _d7_=0;return _d7_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Annot_sexp){var res=exn[2];return [0,res]}
        throw exn}}
    var
     Annot=
      [0,Conv_exn,get_sexp,get_range,sexp_of_conv,Annot_sexp,find_sexp];
    function _aD_(param)
     {if(param[1] === Of_sexp_error)
       {var _d6_=param[2];
        if(_d6_[1] === Annot[1])
         {var invalid_sexp=param[3],exn=_d6_[3],location=_d6_[2];
          return sexp_conversion_error_message
                  (0,[0,location],[0,invalid_sexp],0,exn)}
        var invalid_sexp$0=param[3];
        return sexp_conversion_error_message(0,0,[0,invalid_sexp$0],0,_d6_)}
      throw [0,Assert_failure,_aE_]}
    caml_call3(include$2[51][2],_aF_,Of_sexp_error,_aD_);
    function create$1(opt,_d4_,_d3_,_d2_,param)
     {if(opt)var sth=opt[1],text_line=sth;else var text_line=1;
      if(_d4_)var sth$0=_d4_[1],text_char=sth$0;else var text_char=0;
      if(_d3_)var sth$1=_d3_[1],buf_pos=sth$1;else var buf_pos=0;
      if(_d2_)var sth$2=_d2_[1],global_offset=sth$2;else var global_offset=0;
      function fail(msg)
       {var _d5_=caml_call2(Stdlib[28],cst_Sexplib_Sexp_Parse_pos_cre,msg);
        return caml_call1(Stdlib[2],_d5_)}
      return 1 <= text_line
              ?0 <= text_char
                ?0 <= global_offset
                  ?0 <= buf_pos
                    ?[0,text_line,text_char,global_offset,buf_pos]
                    :fail(cst_buf_pos_0)
                  :fail(cst_global_offset_0)
                :fail(cst_text_char_0)
              :fail(cst_text_line_1)}
    function with_buf_pos(t,buf_pos){return [0,t[1],t[2],t[3],buf_pos]}
    var Parse_pos=[0,create$1,with_buf_pos];
    function to_string$0(param)
     {switch(param)
       {case 0:return cst_Parsing_toplevel_whitespac;
        case 1:return cst_Parsing_nested_whitespace;
        case 2:return cst_Parsing_atom;
        case 3:return cst_Parsing_list;
        case 4:return cst_Parsing_sexp_comment;
        default:return cst_Parsing_block_comment}}
    var
     Cont_state=[0,to_string$0],
     Parse_error=[248,cst_Sexplib_Pre_sexp_Parse_err,caml_fresh_oo_id(0)];
    function _aG_(param)
     {if(param[1] === Parse_error)
       {var
         pe=param[2],
         match=pe[2],
         ppos=match[2][1],
         _dY_=[0,[1,[0,_aH_,[0,caml_call1(include$2[10],ppos[4]),0]]],0],
         _dZ_=[0,[1,[0,_aI_,[0,caml_call1(include$2[10],ppos[3]),0]]],_dY_],
         _d0_=[0,[1,[0,_aJ_,[0,caml_call1(include$2[10],ppos[2]),0]]],_dZ_],
         _d1_=[0,[1,[0,_aK_,[0,caml_call1(include$2[10],ppos[1]),0]]],_d0_];
        return [1,[0,_aM_,[0,[1,[0,[1,[0,_aL_,[0,[0,pe[1]],0]]],_d1_]],0]]]}
      throw [0,Assert_failure,_aN_]}
    caml_call3(include$2[51][2],_aO_,Parse_error,_aG_);
    function annotate_sexp(sexp,iter)
     {if(0 === sexp[0])
       {var
         start_pos=caml_call2(Parsexp_Positions[17][3],iter,0),
         end_pos=caml_call2(Parsexp_Positions[17][3],iter,0);
        return [0,[0,start_pos,end_pos],sexp]}
      var l=sexp[1],start_pos$0=caml_call2(Parsexp_Positions[17][3],iter,0);
      function _dW_(sexp){return annotate_sexp(sexp,iter)}
      var
       _dX_=caml_call2(Stdlib_list[19],_dW_,l),
       annot=caml_call1(Stdlib_list[9],_dX_),
       end_pos$0=caml_call2(Parsexp_Positions[17][3],iter,0);
      return [1,[0,start_pos$0,end_pos$0],annot,sexp]}
    var Found=[248,cst_Sexplib_Pre_sexp_Parser_ou,caml_fresh_oo_id(0)];
    function raise_found(state,sexp){throw [0,Found,sexp]}
    var Found$0=[248,cst_Sexplib_Pre_sexp_Parser_ou$0,caml_fresh_oo_id(0)];
    function raise_found$0(state,param)
     {var
       positions=param[2],
       sexp=param[1],
       annot=
        annotate_sexp(sexp,caml_call1(Parsexp_Positions[17][1],positions));
      throw [0,Found$0,annot]}
    var
     Parser_output=
      [0,
       [0,Parsexp[5],Found,raise_found],
       [0,Parsexp[8],Found$0,raise_found$0]];
    function Make_parser(T)
     {function parse_pos_of_state(state,buf_pos)
       {var
         _dU_=caml_call1(T[1][1][2],state),
         _dV_=caml_call1(T[1][1][4],state);
        return [0,caml_call1(T[1][1][3],state),_dV_,_dU_,buf_pos]}
      function check_str_bounds(pos,len,str)
       {if(pos < 0)caml_call1(Stdlib[1],cst_parse_pos_0);
        if(len < 0)caml_call1(Stdlib[1],cst_parse_len_0);
        var str_len=caml_call1(T[4],str),pos_len=pos + len | 0;
        if(str_len < pos_len)caml_call1(Stdlib[1],cst_parse_pos_len_str_len);
        return pos_len - 1 | 0}
      function handle_parsexp_error(state,pos,e)
       {var
         msg=caml_call1(Parsexp_Parser_automaton[15][3],e),
         match=caml_call1(Parsexp_Parser_automaton[15][4],e);
        if(434889564 <= match)
         {var
           parse_state=[0,parse_pos_of_state(state,pos)],
           parse_error=[0,msg,[0,925483562,parse_state]];
          throw [0,Parse_error,parse_error]}
        return caml_call1(Stdlib[2],msg)}
      function mk_cont_state(state,stack)
       {var used_ref=[0,0];
        function parse_fun(pos,len,str)
         {return used_ref[1]
                  ?caml_call1(Stdlib[2],cst_Sexplib_Sexp_parser_contin)
                  :(used_ref[1] = 1,run_feed_loop(state,stack,pos,len,str))}
        var cont_state=caml_call1(T[1][1][9],state);
        return [1,cont_state,parse_fun]}
      function run_feed_loop(state,stack,pos,len,str)
       {var
         max_pos=check_str_bounds(pos,len,str),
         previous_offset=caml_call1(T[1][1][2],state);
        try
         {var stack$0=caml_call5(T[5],state,stack,str,max_pos,pos)}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === T[2])
           {var
             result=exn[2],
             offset=caml_call1(T[1][1][2],state),
             next_pos=pos + (offset - previous_offset | 0) | 0;
            return [0,result,parse_pos_of_state(state,next_pos)]}
          if(exn[1] === Parsexp_Parser_automaton[16])
           {var err=exn[2];
            return handle_parsexp_error
                    (state,
                     pos
                     +
                     (caml_call1(T[1][1][2],state) - previous_offset | 0)
                     |
                     0,
                     err)}
          throw exn}
        return mk_cont_state(state,stack$0)}
      function parse(opt,len,str)
       {if(opt)
         var sth=opt[1],parse_pos=sth;
        else
         var parse_pos=caml_call5(Parse_pos[1],0,0,0,0,0);
        var
         text_line=parse_pos[1],
         text_char=parse_pos[2],
         global_offset=parse_pos[3],
         buf_pos=parse_pos[4],
         pos=[0,text_line,text_char,global_offset],
         state=caml_call3(T[1][1][8],[0,pos],_aP_,T[3]),
         stack=T[1][2][1];
        if(len)
         var x=len[1],len$0=x;
        else
         var len$0=caml_call1(T[4],str) - buf_pos | 0;
        return run_feed_loop(state,stack,buf_pos,len$0,str)}
      return [0,parse]}
    var
     include$3=Parser_output[1],
     Impl=include$3[1],
     Found$1=include$3[2],
     raise_found$1=include$3[3],
     length=caml_ml_string_length;
    function unsafe_feed_loop(state,stack,str,max_pos,pos)
     {var stack$0=stack,pos$0=pos;
      for(;;)
       {if(pos$0 <= max_pos)
         {var
           stack$1=
            caml_call3
             (Impl[3],state,caml_string_unsafe_get(str,pos$0),stack$0),
           pos$1=pos$0 + 1 | 0,
           stack$0=stack$1,
           pos$0=pos$1;
          continue}
        return stack$0}}
    var
     String_single_sexp=
      Make_parser([0,Impl,Found$1,raise_found$1,length,unsafe_feed_loop]),
     parse_str=String_single_sexp[1],
     parse=String_single_sexp[1],
     include$4=Parser_output[2],
     Impl$0=include$4[1],
     Found$2=include$4[2],
     raise_found$2=include$4[3],
     length$0=caml_ml_string_length;
    function unsafe_feed_loop$0(state,stack,str,max_pos,pos)
     {var stack$0=stack,pos$0=pos;
      for(;;)
       {if(pos$0 <= max_pos)
         {var
           stack$1=
            caml_call3
             (Impl$0[3],state,caml_string_unsafe_get(str,pos$0),stack$0),
           pos$1=pos$0 + 1 | 0,
           stack$0=stack$1,
           pos$0=pos$1;
          continue}
        return stack$0}}
    var
     String_single_annot=
      Make_parser
       ([0,Impl$0,Found$2,raise_found$2,length$0,unsafe_feed_loop$0]),
     parse_str_annot=String_single_annot[1],
     include$5=Parser_output[1],
     Impl$1=include$5[1],
     Found$3=include$5[2],
     raise_found$3=include$5[3],
     length$1=caml_ba_dim_1;
    function unsafe_feed_loop$1(state,stack,str,max_pos,pos)
     {var stack$0=stack,pos$0=pos;
      for(;;)
       {if(pos$0 <= max_pos)
         {var
           _dT_=caml_ba_get_1(str,pos$0),
           stack$1=caml_call3(Impl$1[3],state,_dT_,stack$0),
           pos$1=pos$0 + 1 | 0,
           stack$0=stack$1,
           pos$0=pos$1;
          continue}
        return stack$0}}
    var
     Bigstring_single_sexp=
      Make_parser
       ([0,Impl$1,Found$3,raise_found$3,length$1,unsafe_feed_loop$1]),
     parse_bigstring=Bigstring_single_sexp[1],
     include$6=Parser_output[2],
     Impl$2=include$6[1],
     Found$4=include$6[2],
     raise_found$4=include$6[3],
     length$2=caml_ba_dim_1;
    function unsafe_feed_loop$2(state,stack,str,max_pos,pos)
     {var stack$0=stack,pos$0=pos;
      for(;;)
       {if(pos$0 <= max_pos)
         {var
           _dS_=caml_ba_get_1(str,pos$0),
           stack$1=caml_call3(Impl$2[3],state,_dS_,stack$0),
           pos$1=pos$0 + 1 | 0,
           stack$0=stack$1,
           pos$0=pos$1;
          continue}
        return stack$0}}
    var
     Bigstring_single_annot=
      Make_parser
       ([0,Impl$2,Found$4,raise_found$4,length$2,unsafe_feed_loop$2]),
     _aQ_=Bigstring_single_annot[1];
    function mk_this_parse(parse_pos,my_parse)
     {return function(pos,len,str)
       {if(parse_pos)
         {var parse_pos$0=parse_pos[1];
          parse_pos$0[4] = pos;
          var parse_pos$1=parse_pos$0}
        else
         var parse_pos$1=caml_call5(Parse_pos[1],0,0,[0,pos],0,0);
        return caml_call3(my_parse,[0,parse_pos$1],[0,len],str)}}
    function feed_end_of_input(this_parse,ws_buf)
     {var match=caml_call3(this_parse,0,1,ws_buf);
      if(0 === match[0]){var sexp=match[1];return [0,sexp]}
      var cont_state=match[1];
      return [1,cont_state]}
    function gen_input_sexp(my_parse,parse_pos,ic)
     {var buf=caml_create_bytes(1);
      function loop(this_parse)
       {var this_parse$0=this_parse;
        for(;;)
         {try
           {var c=caml_call1(Stdlib[82],ic)}
          catch(_dR_)
           {_dR_ = caml_wrap_exception(_dR_);
            if(_dR_ === Stdlib[12])
             {var match=feed_end_of_input(this_parse$0,cst$0);
              if(0 === match[0]){var sexp=match[1];return sexp}
              throw Stdlib[12]}
            throw _dR_;
            var _dQ_=_dR_}
          caml_bytes_set(buf,0,c);
          var
           match$0=
            caml_call3(this_parse$0,0,1,caml_call1(Stdlib_bytes[42],buf));
          if(0 === match$0[0]){var sexp$0=match$0[1];return sexp$0}
          var this_parse$1=match$0[2],this_parse$0=this_parse$1;
          continue}}
      return loop(mk_this_parse(parse_pos,my_parse))}
    function input_sexp(parse_pos,ic)
     {return gen_input_sexp(parse,parse_pos,ic)}
    function gen_input_rev_sexps(my_parse,ws_buf,parse_pos,opt,ic)
     {if(opt)var sth=opt[1],buf=sth;else var buf=caml_create_bytes(8192);
      var
       rev_sexps_ref=[0,0],
       buf_len=caml_ml_bytes_length(buf),
       len$3=caml_call4(Stdlib[84],ic,buf,0,buf_len),
       this_parse$2=mk_this_parse(parse_pos,my_parse),
       this_parse=this_parse$2,
       pos=0,
       len=len$3;
      for(;;)
       {if(0 < len)
         {var
           match=
            caml_call3(this_parse,pos,len,caml_call1(Stdlib_bytes[42],buf));
          if(0 === match[0])
           {var parse_pos$0=match[2],sexp=match[1],buf_pos=parse_pos$0[4];
            rev_sexps_ref[1] = [0,sexp,rev_sexps_ref[1]];
            var
             n_parsed=buf_pos - pos | 0,
             this_parse$0=mk_this_parse([0,parse_pos$0],my_parse);
            if(n_parsed === len)
             {var
               len$0=caml_call4(Stdlib[84],ic,buf,0,buf_len),
               this_parse=this_parse$0,
               pos=0,
               len=len$0;
              continue}
            var
             len$1=len - n_parsed | 0,
             this_parse=this_parse$0,
             pos=buf_pos,
             len=len$1;
            continue}
          var
           this_parse$1=match[2],
           len$2=caml_call4(Stdlib[84],ic,buf,0,buf_len),
           this_parse=this_parse$1,
           pos=0,
           len=len$2;
          continue}
        var match$0=feed_end_of_input(this_parse,ws_buf);
        if(0 === match$0[0])
         {var sexp$0=match$0[1];return [0,sexp$0,rev_sexps_ref[1]]}
        var _dN_=match$0[1];
        if(_dN_)
         {var
           _dO_=caml_call1(Cont_state[1],_dN_),
           _dP_=caml_call2(Stdlib[28],cst_Sexplib_Sexp_input_rev_sex,_dO_);
          return caml_call1(Stdlib[2],_dP_)}
        return rev_sexps_ref[1]}}
    function input_rev_sexps(parse_pos,buf,ic)
     {return gen_input_rev_sexps(parse,cst$1,parse_pos,buf,ic)}
    function input_sexps(parse_pos,buf,ic)
     {var _dM_=input_rev_sexps(parse_pos,buf,ic);
      return caml_call1(Stdlib_list[9],_dM_)}
    function of_string_bigstring(loc,my_parse,ws_buf,get_len,get_sub,str)
     {var match=caml_call3(my_parse,0,0,str);
      if(0 === match[0])
       {var
         parse_pos=match[2],
         sexp=match[1],
         match$0=caml_call3(my_parse,[0,parse_pos],0,str);
        if(0 === match$0[0])
         {var _dI_=caml_call2(Stdlib_format[126],_aR_,loc);
          return caml_call1(Stdlib[2],_dI_)}
        if(match$0[1])
         {var _dJ_=caml_call3(Stdlib_format[126],_aS_,loc,parse_pos[4]);
          return caml_call1(Stdlib[2],_dJ_)}
        return sexp}
      var this_parse=match[2],match$1=feed_end_of_input(this_parse,ws_buf);
      if(0 === match$1[0]){var sexp$0=match$1[1];return sexp$0}
      var
       cont_state=match$1[1],
       cont_state_str=caml_call1(Cont_state[1],cont_state),
       _dK_=caml_call3(get_sub,str,0,caml_call1(get_len,str)),
       _dL_=caml_call4(Stdlib_format[126],_aT_,loc,cont_state_str,_dK_);
      return caml_call1(Stdlib[2],_dL_)}
    function of_string(str)
     {return of_string_bigstring
              (cst_of_string,
               parse,
               cst$2,
               caml_ml_string_length,
               Stdlib_string[4],
               str)}
    function get_bstr_sub_str(bstr,pos,len)
     {var str=caml_create_bytes(len),_dG_=len - 1 | 0,_dF_=0;
      if(! (_dG_ < 0))
       {var i=_dF_;
        for(;;)
         {caml_bytes_set(str,i,caml_ba_get_1(bstr,pos + i | 0));
          var _dH_=i + 1 | 0;
          if(_dG_ !== i){var i=_dH_;continue}
          break}}
      return caml_call1(Stdlib_bytes[42],str)}
    var
     bstr_ws_buf=
      caml_call3
       (Stdlib_bigarray[19][1],Stdlib_bigarray[13],Stdlib_bigarray[15],1);
    caml_ba_set_1(bstr_ws_buf,0,32);
    function of_bigstring(bstr)
     {return of_string_bigstring
              (cst_of_bigstring,
               parse_bigstring,
               bstr_ws_buf,
               caml_ba_dim_1,
               get_bstr_sub_str,
               bstr)}
    function gen_load_rev_sexps(input_rev_sexps,buf,file)
     {var ic=caml_call1(Stdlib[79],file);
      try
       {var sexps=caml_call3(input_rev_sexps,0,buf,ic);
        caml_call1(Stdlib[93],ic);
        return sexps}
      catch(exc)
       {exc = caml_wrap_exception(exc);caml_call1(Stdlib[94],ic);throw exc}}
    function load_rev_sexps(buf,file)
     {return gen_load_rev_sexps(input_rev_sexps,buf,file)}
    function load_sexps(buf,file)
     {var _dE_=load_rev_sexps(buf,file);
      return caml_call1(Stdlib_list[9],_dE_)}
    function gen_load_sexp(my_parse,opt,_dy_,file)
     {if(opt)var sth=opt[1],strict=sth;else var strict=1;
      if(_dy_)
       var sth$0=_dy_[1],buf=sth$0;
      else
       var buf=caml_create_bytes(8192);
      var buf_len=caml_ml_bytes_length(buf),ic=caml_call1(Stdlib[79],file);
      function loop(this_parse)
       {var this_parse$0=this_parse;
        for(;;)
         {var len=caml_call4(Stdlib[84],ic,buf,0,buf_len);
          if(0 === len)
           {var match=feed_end_of_input(this_parse$0,cst$3);
            if(0 === match[0]){var sexp=match[1];return sexp}
            var
             cont_state=match[1],
             _dz_=caml_call1(Cont_state[1],cont_state),
             _dA_=
              caml_call4(Stdlib_format[126],_aU_,gen_load_sexp_loc,file,_dz_);
            return caml_call1(Stdlib[2],_dA_)}
          var
           match$0=
            caml_call3(this_parse$0,0,len,caml_call1(Stdlib_bytes[42],buf));
          if(0 === match$0[0])
           {var sexp$0=match$0[1],parse_pos=match$0[2],buf_pos=parse_pos[4];
            if(strict)
             {var
               this_parse$3=mk_this_parse([0,parse_pos],my_parse),
               len$2=len - buf_pos | 0,
               this_parse$1=this_parse$3,
               pos=buf_pos,
               len$0=len$2;
              for(;;)
               {var
                 match$1=
                  caml_call3
                   (this_parse$1,pos,len$0,caml_call1(Stdlib_bytes[42],buf));
                if(0 === match$1[0])
                 {var
                   _dB_=
                    caml_call3(Stdlib_format[126],_aV_,gen_load_sexp_loc,file);
                  return caml_call1(Stdlib[2],_dB_)}
                var
                 this_parse$2=match$1[2],
                 cont_state$0=match$1[1],
                 len$1=caml_call4(Stdlib[84],ic,buf,0,buf_len);
                if(0 < len$1)
                 {var this_parse$1=this_parse$2,pos=0,len$0=len$1;continue}
                if(0 === cont_state$0)return sexp$0;
                var
                 _dC_=caml_call1(Cont_state[1],cont_state$0),
                 _dD_=
                  caml_call5
                   (Stdlib_format[126],
                    _aW_,
                    gen_load_sexp_loc,
                    cst_additional_incomplete_data,
                    _dC_,
                    file);
                return caml_call1(Stdlib[2],_dD_)}}
            return sexp$0}
          var this_parse$4=match$0[2],this_parse$0=this_parse$4;
          continue}}
      try
       {var sexp=loop(mk_this_parse(0,my_parse));
        caml_call1(Stdlib[93],ic);
        return sexp}
      catch(exc)
       {exc = caml_wrap_exception(exc);caml_call1(Stdlib[94],ic);throw exc}}
    function load_sexp(strict,buf,file)
     {return gen_load_sexp(parse,strict,buf,file)}
    var
     Conv_exn$0=Annot[1],
     get_sexp$0=Annot[2],
     get_range$0=Annot[3],
     sexp_of_conv$0=Annot[4],
     Annot_sexp$0=Annot[5],
     find_sexp$0=Annot[6];
    function input_rev_sexps$0(parse_pos,buf,ic)
     {return gen_input_rev_sexps(parse_str_annot,cst$4,parse_pos,buf,ic)}
    function input_sexp$0(parse_pos,ic)
     {return gen_input_sexp(parse_str_annot,parse_pos,ic)}
    function input_sexps$0(parse_pos,buf,ic)
     {var _dx_=input_rev_sexps$0(parse_pos,buf,ic);
      return caml_call1(Stdlib_list[9],_dx_)}
    function of_string$0(str)
     {return of_string_bigstring
              (cst_Annotated_of_string,
               parse_str_annot,
               cst$5,
               caml_ml_string_length,
               Stdlib_string[4],
               str)}
    function of_bigstring$0(bstr)
     {return of_string_bigstring
              (cst_Annotated_of_bigstring,
               _aQ_,
               bstr_ws_buf,
               caml_ba_dim_1,
               get_bstr_sub_str,
               bstr)}
    function load_rev_sexps$0(buf,file)
     {return gen_load_rev_sexps(input_rev_sexps$0,buf,file)}
    function load_sexps$0(buf,file)
     {var _dw_=load_rev_sexps$0(buf,file);
      return caml_call1(Stdlib_list[9],_dw_)}
    function load_sexp$0(strict,buf,file)
     {return gen_load_sexp(parse_str_annot,strict,buf,file)}
    function conv(f,annot_sexp)
     {var sexp=caml_call1(get_sexp$0,annot_sexp);
      try
       {var _dv_=[0,1025039613,caml_call1(f,sexp)];return _dv_}
      catch(e)
       {e = caml_wrap_exception(e);
        if(e[1] === Of_sexp_error)
         {var
           bad_sexp=e[3],
           exc=e[2],
           match=caml_call2(find_sexp$0,annot_sexp,bad_sexp);
          if(match)
           {var bad_annot_sexp=match[1];
            return [0,106380200,[0,exc,bad_annot_sexp]]}
          throw e}
        throw e}}
    function get_conv_exn(file,exc,annot_sexp)
     {var
       range=caml_call1(get_range$0,annot_sexp),
       match=range[1],
       col=match[2],
       line=match[1],
       loc=caml_call4(Stdlib_format[126],_aX_,file,line,col),
       _du_=caml_call1(get_sexp$0,annot_sexp);
      return [0,Of_sexp_error,[0,Annot[1],loc,exc],_du_]}
    var
     Annotated=
      [0,
       Conv_exn$0,
       get_sexp$0,
       get_range$0,
       sexp_of_conv$0,
       Annot_sexp$0,
       find_sexp$0,
       parse_str_annot,
       _aQ_,
       input_rev_sexps$0,
       input_sexp$0,
       input_sexps$0,
       of_string$0,
       of_bigstring$0,
       load_rev_sexps$0,
       load_sexps$0,
       load_sexp$0,
       conv,
       get_conv_exn];
    function load_sexp_conv(opt,_dq_,file,f)
     {if(opt)var sth=opt[1],strict=sth;else var strict=1;
      if(_dq_)
       var sth$0=_dq_[1],buf=sth$0;
      else
       var buf=caml_create_bytes(8192);
      var sexp=load_sexp([0,strict],[0,buf],file);
      try
       {var _ds_=[0,1025039613,caml_call1(f,sexp)];return _ds_}
      catch(_dt_)
       {_dt_ = caml_wrap_exception(_dt_);
        if(_dt_[1] === Of_sexp_error)
         {var _dr_=caml_call3(Annotated[16],[0,strict],[0,buf],file);
          return caml_call2(Annotated[17],f,_dr_)}
        throw _dt_}}
    function raise_conv_exn(file,param)
     {if(1025039613 <= param[1]){var res=param[2];return res}
      var match=param[2],annot_sexp=match[2],exc=match[1];
      throw caml_call3(Annotated[18],file,exc,annot_sexp)}
    function load_sexp_conv_exn(strict,buf,file,f)
     {return raise_conv_exn(file,load_sexp_conv(strict,buf,file,f))}
    function load_sexps_conv(opt,file,f)
     {if(opt)var sth=opt[1],buf=sth;else var buf=caml_create_bytes(8192);
      var rev_sexps=load_rev_sexps([0,buf],file);
      try
       {var
         _do_=function(sexp){return [0,1025039613,caml_call1(f,sexp)]},
         _dp_=caml_call2(Stdlib_list[19],_do_,rev_sexps);
        return _dp_}
      catch(e)
       {e = caml_wrap_exception(e);
        if(e[1] === Of_sexp_error)
         {var rev_annot_sexps=caml_call2(Annotated[14],[0,buf],file);
          if(rev_annot_sexps)
           {var
             _dn_=
              function(annot_sexp)
               {return caml_call2(Annotated[17],f,annot_sexp)};
            return caml_call2(Stdlib_list[19],_dn_,rev_annot_sexps)}
          throw e}
        throw e}}
    function load_sexps_conv_exn(opt,file,f)
     {if(opt)var sth=opt[1],buf=sth;else var buf=caml_create_bytes(8192);
      var rev_sexps=load_rev_sexps([0,buf],file);
      try
       {var _dm_=caml_call2(Stdlib_list[19],f,rev_sexps);return _dm_}
      catch(e)
       {e = caml_wrap_exception(e);
        if(e[1] === Of_sexp_error)
         {var rev_annot_sexps=caml_call2(Annotated[14],[0,buf],file);
          if(rev_annot_sexps)
           {var
             _dl_=
              function(annot_sexp)
               {return raise_conv_exn
                        (file,caml_call2(Annotated[17],f,annot_sexp))};
            return caml_call2(Stdlib_list[19],_dl_,rev_annot_sexps)}
          throw e}
        throw e}}
    function gen_of_string_conv(of_string,annot_of_string,str,f)
     {var sexp=caml_call1(of_string,str);
      try
       {var _dj_=[0,1025039613,caml_call1(f,sexp)];return _dj_}
      catch(_dk_)
       {_dk_ = caml_wrap_exception(_dk_);
        if(_dk_[1] === Of_sexp_error)
         {var _di_=caml_call1(annot_of_string,str);
          return caml_call2(Annotated[17],f,_di_)}
        throw _dk_}}
    function of_string_conv(str,f)
     {return gen_of_string_conv(of_string,Annotated[12],str,f)}
    function of_bigstring_conv(bstr,f)
     {return gen_of_string_conv(of_bigstring,Annotated[13],bstr,f)}
    var E=[248,cst_Sexplib_Pre_sexp_Of_string,caml_fresh_oo_id(0)];
    function _aY_(param)
     {if(param[1] === E)
       {var osce=param[2];
        return sexp_conversion_error_message
                ([0,osce[2]],0,[0,osce[3]],0,osce[1])}
      throw [0,Assert_failure,_aZ_]}
    caml_call3(include$2[51][2],_a0_,E,_aY_);
    var Of_string_conv_exn=[0,E];
    function gen_of_string_conv_exn(of_string,str,f)
     {var sexp=caml_call1(of_string,str);
      try
       {var _dh_=caml_call1(f,sexp);return _dh_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Of_sexp_error)
         {var sub_sexp=exn[3],exc=exn[2];
          throw [0,Of_string_conv_exn[1],[0,exc,sexp,sub_sexp]]}
        throw exn}}
    function of_string_conv_exn(str,f)
     {return gen_of_string_conv_exn(of_string,str,f)}
    function of_bigstring_conv_exn(bstr,f)
     {return gen_of_string_conv_exn(of_bigstring,bstr,f)}
    function is_unit(param){if(1 === param[0] && ! param[1])return 1;return 0}
    function search_physical(sexp,contained)
     {if(sexp === contained)return 398750242;
      if(0 === sexp[0])return -358247754;
      var lst=sexp[1],i=0,param=lst;
      for(;;)
       {if(param)
         {var t=param[2],h=param[1],res=search_physical(h,contained);
          if(typeof res === "number" && ! (398750242 <= res))
           {var i$0=i + 1 | 0,i=i$0,param=t;continue}
          return [0,4003188,[0,i,res]]}
        return -358247754}}
    function subst_found(sexp,subst,param)
     {if(typeof param === "number")return subst;
      var match=param[2],found=match[2],pos=match[1];
      if(0 === sexp[0])
       return caml_call1(Stdlib[2],cst_Sexplib_Sexp_subst_found_a);
      var lst=sexp[1],acc=0,pos$0=pos,param$0=lst;
      for(;;)
       {if(param$0)
         {var h=param$0[1],t=param$0[2];
          if(0 === pos$0)
           {var t$0=param$0[2],_dg_=[0,subst_found(h,subst,found),t$0];
            return [1,caml_call2(Stdlib_list[12],acc,_dg_)]}
          var
           pos$1=pos$0 - 1 | 0,
           acc$0=[0,h,acc],
           acc=acc$0,
           pos$0=pos$1,
           param$0=t;
          continue}
        return caml_call1(Stdlib[2],cst_Sexplib_Sexp_subst_found_s)}}
    var
     include$7=
      [0,
       equal,
       compare,
       Not_found_s,
       Of_sexp_error,
       message,
       default_indent,
       pp_hum,
       pp_hum_indent,
       pp_mach,
       pp,
       to_string_hum,
       to_string_mach,
       to_string,
       of_float_style,
       of_int_style,
       size,
       buffer,
       to_buffer,
       to_buffer_hum,
       to_buffer_mach,
       to_buffer_gen,
       mach_maybe_esc_str,
       must_escape,
       esc_str,
       with_new_buffer,
       output_hum,
       output_hum_indent,
       output,
       output,
       Tmp_file,
       save_of_output,
       output_sexp_nl,
       save_hum,
       save,
       save,
       output_sexps_nl,
       save_sexps_hum,
       save_sexps,
       save_sexps,
       scan_sexp,
       scan_sexp_opt,
       scan_sexps,
       scan_rev_sexps,
       get_main_buf,
       scan_fold_sexps,
       scan_iter_sexps,
       scan_sexps_conv,
       sexp_conversion_error_message,
       Annot,
       Parse_pos,
       Cont_state,
       Parse_error,
       Parser_output,
       Make_parser,
       String_single_sexp,
       parse_str,
       parse,
       String_single_annot,
       parse_str_annot,
       Bigstring_single_sexp,
       parse_bigstring,
       Bigstring_single_annot,
       _aQ_,
       mk_this_parse,
       feed_end_of_input,
       gen_input_sexp,
       input_sexp,
       gen_input_rev_sexps,
       input_rev_sexps,
       input_sexps,
       of_string_bigstring,
       of_string,
       get_bstr_sub_str,
       bstr_ws_buf,
       of_bigstring,
       gen_load_rev_sexps,
       load_rev_sexps,
       load_sexps,
       gen_load_sexp_loc,
       gen_load_sexp,
       load_sexp,
       Annotated,
       load_sexp_conv,
       raise_conv_exn,
       load_sexp_conv_exn,
       load_sexps_conv,
       load_sexps_conv_exn,
       gen_of_string_conv,
       of_string_conv,
       of_bigstring_conv,
       Of_string_conv_exn,
       gen_of_string_conv_exn,
       of_string_conv_exn,
       of_bigstring_conv_exn,
       unit,
       is_unit,
       search_physical,
       subst_found];
    caml_register_global(170,include$7,"Sexplib__Pre_sexp");
    function iter(t,f){return caml_call2(Stdlib_list[15],f,t)}
    function map$0(t,f)
     {var _df_=caml_call2(Stdlib_list[19],f,t);
      return caml_call1(Stdlib_list[9],_df_)}
    var List=[0,iter,map$0],sexp_of_pos=_c_[1],Lexer=[0,main$0];
    function return$0(a,putc,st){return a}
    function bind(m,f,putc,st)
     {return caml_call3(f,caml_call2(m,putc,st),putc,st)}
    function run(putc,m){return caml_call2(m,putc,[0,_c_[2],_b_[2],0,0])}
    function emit_char(putc,st,c)
     {var match=st[2],col=match[2],row=match[1];
      caml_call1(putc,c);
      return 10 === c
              ?(st[2] = [0,1 + row | 0,1],0)
              :(st[2] = [0,row,1 + col | 0],0)}
    function emit_string(putc,st,str)
     {var n=caml_ml_string_length(str),_dd_=n - 1 | 0,_dc_=0;
      if(! (_dd_ < 0))
       {var i=_dc_;
        for(;;)
         {emit_char(putc,st,caml_string_get(str,i));
          var _de_=i + 1 | 0;
          if(_dd_ !== i){var i=_de_;continue}
          break}}
      return 0}
    function emit_chars(putc,st,c,n)
     {return emit_string(putc,st,caml_call2(Stdlib_string[1],n,c))}
    function advance(putc,anchor,st,delta,unescaped_atom,line_comment)
     {var
       _c9_=st[1],
       _c__=caml_call2(_b_[5],anchor,delta),
       new_pos=caml_call2(_b_[5],_c__,_c9_);
      if(unescaped_atom)
       {var _c$_=st[3];
        if(_c$_)
         var
          match=_c$_[1],
          prev_unescaped=match[2],
          immed_after=match[1],
          _da_=caml_equal(new_pos,immed_after),
          prev_unescaped$0=_da_?prev_unescaped:_da_,
          prev_unescaped$1=prev_unescaped$0;
        else
         var prev_unescaped$1=0;
        var need_to_leave_room_between_two=prev_unescaped$1}
      else
       var need_to_leave_room_between_two=unescaped_atom;
      var
       need_to_clear_line_comment=new_pos[1] === st[4]?1:0,
       _db_=1 - caml_call2(_b_[7],new_pos,st[2]),
       need_to_reposition=
        _db_
        ||
        need_to_clear_line_comment
        ||
        need_to_leave_room_between_two;
      if(need_to_reposition)
       var
        new_row=1 + st[2][1] | 0,
        row_delta=new_row - new_pos[1] | 0,
        new_pos$0=[0,new_row,new_pos[2]],
        row_delta$0=row_delta;
      else
       var new_pos$0=new_pos,row_delta$0=0;
      if(st[2][1] < new_pos$0[1])
       {var n=new_pos$0[1] - st[2][1] | 0;emit_chars(putc,st,10,n)}
      if(st[2][2] < new_pos$0[2])
       {var n$0=new_pos$0[2] - st[2][2] | 0;emit_chars(putc,st,32,n$0)}
      if(caml_equal(new_pos$0,st[2]))
       {if(line_comment)st[4] = st[2][1];
        st[1] = [0,st[1][1] + row_delta$0 | 0,st[1][2]];
        return 0}
      throw [0,Assert_failure,_a1_]}
    function render_t(putc,anchor,st,t)
     {if(0 === t[0])
       {var fmt_text=t[3],text=t[2],delta=t[1],switch$0=0;
        if(fmt_text)
         {var _c7_=fmt_text[1];
          if(runtime.caml_string_notequal(_c7_,cst$6))
           {var fmt_text$0=_c7_;switch$0 = 1}}
        if(! switch$0)var fmt_text$0=caml_call1(mach_maybe_esc_str,text);
        var unescaped=34 !== caml_string_get(fmt_text$0,0)?1:0;
        advance(putc,anchor,st,delta,unescaped,0);
        emit_string(putc,st,fmt_text$0);
        st[3] = [0,[0,st[2],unescaped]];
        return 0}
      var end_delta=t[3],tocs=t[2],start_delta=t[1];
      advance(putc,anchor,st,start_delta,0,0);
      var child_anchor=caml_call2(_b_[6],st[2],st[1]);
      emit_char(putc,st,40);
      function _c8_(toc){return render_toc(putc,child_anchor,st,toc)}
      caml_call2(List[1],tocs,_c8_);
      advance(putc,anchor,st,end_delta,0,0);
      emit_char(putc,st,41);
      return 0}
    function render_c(putc,anchor,st,param)
     {if(0 === param[0])
       {var
         text=param[2],
         delta=param[1],
         _c4_=0 < caml_ml_string_length(text)?1:0,
         line_comment=_c4_?59 === caml_string_get(text,0)?1:0:_c4_;
        advance(putc,anchor,st,delta,0,line_comment);
        return emit_string(putc,st,text)}
      var t=param[3],cs=param[2],delta$0=param[1];
      advance(putc,anchor,st,delta$0,0,0);
      emit_string(putc,st,cst$7);
      function _c5_(_c6_){return render_c(putc,anchor,st,_c6_)}
      caml_call2(List[1],cs,_c5_);
      return render_t(putc,anchor,st,t)}
    function render_toc(putc,anchor,st,param)
     {if(0 === param[0]){var t=param[1];return render_t(putc,anchor,st,t)}
      var c=param[1];
      return render_c(putc,anchor,st,c)}
    function render(asexp,putc,st){return render_toc(putc,_b_[2],st,asexp)}
    var
     Render=
      [0,
       return$0,
       bind,
       run,
       emit_char,
       emit_string,
       emit_chars,
       advance,
       render_t,
       render_toc,
       render_c,
       render,
       render];
    function forget_t$0(counter,t,k)
     {if(0 === t[0]){var x=t[2];return caml_call1(k,[0,x])}
      var tocs=t[2];
      function _c3_(xs){return caml_call1(k,[1,xs])}
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return forget_tocs$0(counter$0,tocs,_c3_)}
      return caml_trampoline_return(forget_tocs$0,[0,tocs,_c3_])}
    function forget_tocs$0(counter,tocs,k)
     {if(tocs)
       {var
         tocs$0=tocs[2],
         toc=tocs[1],
         _c2_=
          function(param)
           {if(param)
             {var x=param[1];
              return forget_tocs
                      (tocs$0,function(xs){return caml_call1(k,[0,x,xs])})}
            return forget_tocs(tocs$0,k)};
        if(counter < 50)
         {var counter$0=counter + 1 | 0;
          return forget_toc$0(counter$0,toc,_c2_)}
        return caml_trampoline_return(forget_toc$0,[0,toc,_c2_])}
      return caml_call1(k,0)}
    function forget_toc$0(counter,toc,k)
     {if(0 === toc[0])
       {var t=toc[1],_c1_=function(x){return caml_call1(k,[0,x])};
        if(counter < 50)
         {var counter$0=counter + 1 | 0;return forget_t$0(counter$0,t,_c1_)}
        return caml_trampoline_return(forget_t$0,[0,t,_c1_])}
      return caml_call1(k,0)}
    function forget_t(t,k){return caml_trampoline(forget_t$0(0,t,k))}
    function forget_tocs(tocs,k)
     {return caml_trampoline(forget_tocs$0(0,tocs,k))}
    function forget_toc(toc,k){return caml_trampoline(forget_toc$0(0,toc,k))}
    var Cps=[0,forget_t,forget_toc,forget_tocs];
    function t(x){function _c0_(y){return y}return caml_call2(Cps[1],x,_c0_)}
    function t_or_comment(x)
     {function _cZ_(y){return y}return caml_call2(Cps[2],x,_cZ_)}
    function t_or_comments(x)
     {function _cY_(y){return y}return caml_call2(Cps[3],x,_cY_)}
    var
     Forget=[0,Cps,t,t_or_comment,t_or_comments],
     Sexplib_Sexp_with_layout=
      [0,
       List,
       Make$0,
       Parsed$0,
       sexp_of_t$0,
       sexp_of_comment,
       sexp_of_t_or_comment,
       relativize,
       sexp_of_pos,
       Lexer,
       Render,
       Forget];
    caml_register_global
     (171,Sexplib_Sexp_with_layout,"Sexplib__Sexp_with_layout");
    var
     _a2_=
      [0,
       sexp_of_pos,
       sexp_of_t$0,
       sexp_of_comment,
       sexp_of_t_or_comment,
       [0,Forget[2],Forget[3],Forget[4]],
       [0,Render[1],Render[2],Render[12],Render[3]],
       [0,sexp$0,sexp_opt$0,sexps$0,rev_sexps$0,sexps_abs],
       Lexer];
    function _a3_(_cX_){return _cX_}
    function _a4_(_cW_){return _cW_}
    var
     Sexplib_Sexp=
      [0,
       compare,
       equal,
       default_indent,
       size,
       scan_sexp,
       scan_sexps,
       scan_rev_sexps,
       scan_sexp_opt,
       scan_iter_sexps,
       scan_fold_sexps,
       scan_sexps_conv,
       Parse_pos,
       Cont_state,
       [0,
        Annotated[4],
        Annotated[1],
        Annotated[2],
        Annotated[3],
        Annotated[6],
        Annotated[7],
        Annotated[8],
        Annotated[10],
        Annotated[11],
        Annotated[9],
        Annotated[16],
        Annotated[15],
        Annotated[14],
        Annotated[12],
        Annotated[13],
        Annotated[17],
        Annotated[18]],
       Parse_error,
       parse,
       parse_bigstring,
       input_sexp,
       input_sexps,
       input_rev_sexps,
       load_sexp,
       load_sexps,
       load_rev_sexps,
       load_sexp_conv,
       load_sexp_conv_exn,
       load_sexps_conv,
       load_sexps_conv_exn,
       output_hum,
       output_hum_indent,
       output,
       output,
       save_hum,
       save,
       save,
       save_sexps_hum,
       save_sexps,
       save_sexps,
       pp_hum,
       pp_hum_indent,
       pp_mach,
       pp,
       Of_string_conv_exn,
       of_string,
       of_string_conv,
       of_string_conv_exn,
       of_bigstring,
       of_bigstring_conv,
       of_bigstring_conv_exn,
       to_string_hum,
       to_string_mach,
       to_string,
       to_buffer_hum,
       to_buffer_mach,
       to_buffer,
       to_buffer_gen,
       unit,
       is_unit,
       _a4_,
       _a3_,
       search_physical,
       subst_found,
       _a2_];
    caml_register_global(172,Sexplib_Sexp,"Sexplib__Sexp");
    var Sexplib_Sexp_intf=[0];
    caml_register_global(173,Sexplib_Sexp_intf,"Sexplib__Sexp_intf");
    var
     _a9_=include$2[5],
     _a__=include$2[6],
     _a$_=include$2[7],
     _bb_=include$2[9],
     _bc_=include$2[10],
     _bd_=include$2[11],
     _be_=include$2[12],
     _bf_=include$2[13],
     _bg_=include$2[14],
     _bh_=include$2[15],
     _bi_=include$2[16],
     _bj_=include$2[17],
     _bm_=include$2[20],
     _bn_=include$2[21],
     _bo_=include$2[22],
     _bt_=include$2[27],
     _bv_=include$2[29],
     _bw_=include$2[30],
     _bx_=include$2[31],
     _bz_=include$2[33],
     _bA_=include$2[34],
     _bB_=include$2[35],
     _bC_=include$2[36],
     _bD_=include$2[37],
     _bE_=include$2[38],
     _bF_=include$2[39],
     _bG_=include$2[40],
     _bH_=include$2[41],
     _bK_=include$2[44],
     _bL_=include$2[45],
     _bM_=include$2[46],
     _bP_=include$2[49],
     _bR_=include$2[51],
     _a5_=include$2[1],
     _a6_=include$2[2],
     _a7_=include$2[3],
     _a8_=include$2[4],
     _ba_=include$2[8],
     _bk_=include$2[18],
     _bl_=include$2[19],
     _bp_=include$2[23],
     _bq_=include$2[24],
     _br_=include$2[25],
     _bs_=include$2[26],
     _bu_=include$2[28],
     _by_=include$2[32],
     _bI_=include$2[42],
     _bJ_=include$2[43],
     _bN_=include$2[47],
     _bO_=include$2[48],
     _bQ_=include$2[50];
    function sexp_of_float_vec(vec)
     {var lst_ref=[0,0],_cT_=caml_ba_dim_1(vec);
      if(! (_cT_ < 1))
       {var i=_cT_;
        for(;;)
         {var _cU_=lst_ref[1];
          lst_ref[1] = [0,caml_call1(_bd_,caml_ba_get_1(vec,i)),_cU_];
          var _cV_=i - 1 | 0;
          if(1 !== i){var i=_cV_;continue}
          break}}
      return [1,lst_ref[1]]}
    function sexp_of_bigstring(bstr)
     {var
       n=caml_ba_dim_1(bstr),
       str=caml_create_bytes(n),
       _cR_=n - 1 | 0,
       _cQ_=0;
      if(! (_cR_ < 0))
       {var i=_cQ_;
        for(;;)
         {caml_bytes_set(str,i,caml_ba_get_1(bstr,i));
          var _cS_=i + 1 | 0;
          if(_cR_ !== i){var i=_cS_;continue}
          break}}
      return [0,caml_call1(Stdlib_bytes[42],str)]}
    function sexp_of_float32_vec(vec){return sexp_of_float_vec(vec)}
    function sexp_of_float64_vec(vec){return sexp_of_float_vec(vec)}
    function sexp_of_vec(vec){return sexp_of_float_vec(vec)}
    function sexp_of_float_mat(mat)
     {var m=caml_ba_dim_1(mat),n=runtime.caml_ba_dim_2(mat),lst_ref=[0,0];
      if(! (n < 1))
       {var col=n;
        for(;;)
         {var vec=caml_call2(Stdlib_bigarray[20][5],mat,col);
          if(! (m < 1))
           {var row=m;
            for(;;)
             {var _cO_=lst_ref[1];
              lst_ref[1] = [0,caml_call1(_bd_,caml_ba_get_1(vec,row)),_cO_];
              var _cP_=row - 1 | 0;
              if(1 !== row){var row=_cP_;continue}
              break}}
          var _cN_=col - 1 | 0;
          if(1 !== col){var col=_cN_;continue}
          break}}
      var _cL_=lst_ref[1],_cM_=[0,caml_call1(_bc_,n),_cL_];
      return [1,[0,caml_call1(_bc_,m),_cM_]]}
    function sexp_of_float32_mat(mat){return sexp_of_float_mat(mat)}
    function sexp_of_float64_mat(mat){return sexp_of_float_mat(mat)}
    function sexp_of_mat(mat){return sexp_of_float_mat(mat)}
    function bigstring_of_sexp(sexp)
     {if(0 === sexp[0])
       {var
         str=sexp[1],
         len=caml_ml_string_length(str),
         bstr=
          caml_call3
           (Stdlib_bigarray[19][1],
            Stdlib_bigarray[13],
            Stdlib_bigarray[15],
            len),
         _cJ_=len - 1 | 0,
         _cI_=0;
        if(! (_cJ_ < 0))
         {var i=_cI_;
          for(;;)
           {caml_ba_set_1(bstr,i,caml_string_get(str,i));
            var _cK_=i + 1 | 0;
            if(_cJ_ !== i){var i=_cK_;continue}
            break}}
        return bstr}
      return caml_call2(_bt_,cst_bigstring_of_sexp_atom_nee,sexp)}
    function float_vec_of_sexp(empty_float_vec,create_float_vec,sexp)
     {if(0 === sexp[0])
       return caml_call2(_bt_,cst_float_vec_of_sexp_list_nee,sexp);
      var _cH_=sexp[1];
      if(_cH_)
       {var
         len=caml_call1(Stdlib_list[1],_cH_),
         res=caml_call1(create_float_vec,len),
         i=1,
         param=_cH_;
        for(;;)
         {if(param)
           {var t=param[2],h=param[1];
            caml_ba_set_1(res,i,caml_call1(_bB_,h));
            var i$0=i + 1 | 0,i=i$0,param=t;
            continue}
          return res}}
      return empty_float_vec}
    var
     create_float32_vec=
      caml_call2
       (Stdlib_bigarray[19][1],Stdlib_bigarray[1],Stdlib_bigarray[16]),
     create_float64_vec=
      caml_call2
       (Stdlib_bigarray[19][1],Stdlib_bigarray[2],Stdlib_bigarray[16]),
     empty_float32_vec=caml_call1(create_float32_vec,0),
     empty_float64_vec=caml_call1(create_float64_vec,0);
    function float32_vec_of_sexp(_cG_)
     {return float_vec_of_sexp(empty_float32_vec,create_float32_vec,_cG_)}
    function float64_vec_of_sexp(_cF_)
     {return float_vec_of_sexp(empty_float64_vec,create_float64_vec,_cF_)}
    function vec_of_sexp(_cE_)
     {return float_vec_of_sexp(empty_float64_vec,create_float64_vec,_cE_)}
    function check_too_much_data(sexp,data,res)
     {return 0 === data
              ?res
              :caml_call2(_bt_,cst_float_mat_of_sexp_too_much,sexp)}
    function float_mat_of_sexp(create_float_mat,sexp)
     {if(0 === sexp[0])
       return caml_call2(_bt_,cst_float_mat_of_sexp_list_nee,sexp);
      var _cC_=sexp[1];
      if(_cC_)
       {var _cD_=_cC_[2];
        if(_cD_)
         {var
           data=_cD_[2],
           sn=_cD_[1],
           sm=_cC_[1],
           m=caml_call1(_bA_,sm),
           n=caml_call1(_bA_,sn),
           res=caml_call2(create_float_mat,m,n);
          if(0 !== m && 0 !== n)
           {var col=1,data$0=data;
            a:
            for(;;)
             {var
               vec=caml_call2(Stdlib_bigarray[20][5],res,col),
               row=1,
               param=data$0;
              for(;;)
               {if(param)
                 {var t=param[2],h=param[1];
                  caml_ba_set_1(vec,row,caml_call1(_bB_,h));
                  if(row === m)
                   {if(col === n)return check_too_much_data(sexp,t,res);
                    var col$0=col + 1 | 0,col=col$0,data$0=t;
                    continue a}
                  var row$0=row + 1 | 0,row=row$0,param=t;
                  continue}
                return caml_call2(_bt_,cst_float_mat_of_sexp_not_enou,sexp)}}}
          return check_too_much_data(sexp,data,res)}}
      return caml_call2(_bt_,cst_float_mat_of_sexp_list_too,sexp)}
    var
     create_float32_mat=
      caml_call2
       (Stdlib_bigarray[20][1],Stdlib_bigarray[1],Stdlib_bigarray[16]),
     create_float64_mat=
      caml_call2
       (Stdlib_bigarray[20][1],Stdlib_bigarray[2],Stdlib_bigarray[16]);
    function float32_mat_of_sexp(_cB_)
     {return float_mat_of_sexp(create_float32_mat,_cB_)}
    function float64_mat_of_sexp(_cA_)
     {return float_mat_of_sexp(create_float64_mat,_cA_)}
    function mat_of_sexp(_cz_)
     {return float_mat_of_sexp(create_float64_mat,_cz_)}
    function string_of_of_sexp_of(to_sexp,x)
     {return caml_call1(to_string,caml_call1(to_sexp,x))}
    function of_string_of_of_sexp(of_sexp,s)
     {try
       {var sexp=of_string(s),_cy_=caml_call1(of_sexp,sexp);return _cy_}
      catch(e)
       {e = caml_wrap_exception(e);
        var
         _cw_=caml_call2(to_string_hum,0,caml_call1(_bP_,e)),
         _cx_=caml_call3(Stdlib_printf[4],_bS_,s,_cw_);
        return caml_call1(Stdlib[2],_cx_)}}
    var
     Sexplib_Conv=
      [0,
       _a5_,
       _a6_,
       _a7_,
       _a8_,
       _a9_,
       _a__,
       _a$_,
       _ba_,
       _bb_,
       _bc_,
       _bd_,
       _be_,
       _bf_,
       _bg_,
       _bh_,
       _bi_,
       _bj_,
       _bk_,
       _bl_,
       _bm_,
       _bn_,
       _bo_,
       _bp_,
       _bq_,
       _br_,
       _bs_,
       _bt_,
       _bu_,
       _bv_,
       _bw_,
       _bx_,
       _by_,
       _bz_,
       _bA_,
       _bB_,
       _bC_,
       _bD_,
       _bE_,
       _bF_,
       _bG_,
       _bH_,
       _bI_,
       _bJ_,
       _bK_,
       _bL_,
       _bM_,
       _bN_,
       _bO_,
       _bP_,
       _bQ_,
       _bR_,
       sexp_of_bigstring,
       sexp_of_float32_vec,
       sexp_of_float64_vec,
       sexp_of_vec,
       sexp_of_float32_mat,
       sexp_of_float64_mat,
       sexp_of_mat,
       string_of_of_sexp_of,
       bigstring_of_sexp,
       float32_vec_of_sexp,
       float64_vec_of_sexp,
       vec_of_sexp,
       float32_mat_of_sexp,
       float64_mat_of_sexp,
       mat_of_sexp,
       of_string_of_of_sexp];
    caml_register_global(174,Sexplib_Conv,"Sexplib__Conv");
    var
     create$2=Stdlib_hashtbl[1],
     clear$1=Stdlib_hashtbl[2],
     reset=Stdlib_hashtbl[3],
     copy=Stdlib_hashtbl[4],
     add$0=Stdlib_hashtbl[5],
     find=Stdlib_hashtbl[6],
     find_opt=Stdlib_hashtbl[7],
     find_all=Stdlib_hashtbl[8],
     mem=Stdlib_hashtbl[9],
     remove=Stdlib_hashtbl[10],
     replace=Stdlib_hashtbl[11],
     iter$0=Stdlib_hashtbl[12],
     filter_map_inplace=Stdlib_hashtbl[13],
     fold=Stdlib_hashtbl[14],
     length$3=Stdlib_hashtbl[15],
     randomize=Stdlib_hashtbl[16],
     is_randomized=Stdlib_hashtbl[17],
     stats=Stdlib_hashtbl[18],
     to_seq=Stdlib_hashtbl[19],
     to_seq_keys=Stdlib_hashtbl[20],
     to_seq_values=Stdlib_hashtbl[21],
     add_seq=Stdlib_hashtbl[22],
     replace_seq=Stdlib_hashtbl[23],
     of_seq=Stdlib_hashtbl[24],
     Make$2=Stdlib_hashtbl[25],
     MakeSeeded=Stdlib_hashtbl[26],
     hash=Stdlib_hashtbl[27],
     seeded_hash=Stdlib_hashtbl[28],
     hash_param=Stdlib_hashtbl[29],
     seeded_hash_param=Stdlib_hashtbl[30],
     Hashtbl=
      [0,
       create$2,
       clear$1,
       reset,
       copy,
       add$0,
       find,
       find_opt,
       find_all,
       mem,
       remove,
       replace,
       iter$0,
       filter_map_inplace,
       fold,
       length$3,
       randomize,
       is_randomized,
       stats,
       to_seq,
       to_seq_keys,
       to_seq_values,
       add_seq,
       replace_seq,
       of_seq,
       Make$2,
       MakeSeeded,
       hash,
       seeded_hash,
       hash_param,
       seeded_hash_param,
       _bo_,
       _bM_],
     Undefined=Stdlib_lazy[1],
     force_val=Stdlib_lazy[2],
     from_fun=Stdlib_lazy[3],
     from_val=Stdlib_lazy[4],
     is_val=Stdlib_lazy[5],
     lazy_from_fun=Stdlib_lazy[6],
     lazy_from_val=Stdlib_lazy[7],
     lazy_is_val=Stdlib_lazy[8],
     Lazy=
      [0,
       Undefined,
       force_val,
       from_fun,
       from_val,
       is_val,
       lazy_from_fun,
       lazy_from_val,
       lazy_is_val,
       _bG_,
       _bi_],
     Sexplib_Std=
      [0,
       Hashtbl,
       Lazy,
       _a9_,
       _bv_,
       _a__,
       _bw_,
       _a$_,
       _bx_,
       _bb_,
       _bz_,
       _bc_,
       _bA_,
       _bd_,
       _bB_,
       _be_,
       _bC_,
       _bf_,
       _bD_,
       _bg_,
       _bE_,
       _bh_,
       _bF_,
       _bi_,
       _bG_,
       _bj_,
       _bH_,
       _bm_,
       _bK_,
       _bn_,
       _bL_,
       _bP_];
    caml_register_global(177,Sexplib_Std,"Sexplib__Std");
    function illegal_atom(loc,sexp)
     {var
       _cu_=caml_call1(to_string,sexp),
       _cv_=caml_call3(Stdlib_format[126],_bT_,loc,_cu_);
      return caml_call1(Stdlib[2],_cv_)}
    function extract_pos_lst(loc,sexp,ix,param)
     {var acc=0,n=ix,param$0=param;
      for(;;)
       {if(param$0)
         {var t=param$0[2],h=param$0[1];
          if(0 === n)
           {var
             subst=
              function(param)
               {if(param)
                 {var x=param[1];
                  return caml_call2(Stdlib_list[12],acc,[0,x,t])}
                return caml_call2(Stdlib_list[12],acc,t)};
            return [0,subst,h]}
          var n$0=n - 1 | 0,acc$0=[0,h,acc],acc=acc$0,n=n$0,param$0=t;
          continue}
        var
         sexp_str=caml_call1(to_string,sexp),
         _ct_=caml_call4(Stdlib_format[126],_bU_,loc,ix,sexp_str);
        return caml_call1(Stdlib[2],_ct_)}}
    function extract_pos(n,sexp)
     {if(0 === sexp[0])return illegal_atom(cst_extract_pos,sexp);
      var
       lst=sexp[1],
       match=extract_pos_lst(cst_extract_pos$0,sexp,n,lst),
       el=match[2],
       subst=match[1];
      return [0,function(x){return [1,caml_call1(subst,x)]},el]}
    function extract_match(tag,arg_ix,sexp)
     {if(0 === sexp[0])return illegal_atom(cst_extract_match,sexp);
      var _cq_=sexp[1];
      if(_cq_)
       {var _cr_=_cq_[1];
        if(0 === _cr_[0])
         {var args=_cq_[2],str=_cr_[1];
          if(caml_string_equal(str,tag))
           {var
             match=extract_pos_lst(cst_extract_match$0,[1,args],arg_ix,args),
             el=match[2],
             subst=match[1];
            return [0,
                    function(maybe_x)
                     {return [1,[0,_cr_,caml_call1(subst,maybe_x)]]},
                    el]}}}
      var
       sexp_str=caml_call1(to_string,sexp),
       _cs_=caml_call2(Stdlib[28],cst_Path_extract_match_unexpec,sexp_str);
      return caml_call1(Stdlib[2],_cs_)}
    function extract_rec(key,sexp)
     {if(0 === sexp[0])return illegal_atom(cst_extract_rec,sexp);
      var lst=sexp[1],acc=0,param=lst;
      for(;;)
       {if(param)
         {var _cl_=param[1];
          if(1 === _cl_[0])
           {var _cm_=_cl_[1];
            if(_cm_)
             {var _cn_=_cm_[1];
              if(0 === _cn_[0])
               {var _co_=_cm_[2];
                if(_co_ && ! _co_[2])
                 {var rest=param[2],v=_co_[1],str=_cn_[1];
                  if(caml_string_equal(str,key))
                   {var
                     subst=
                      function(x)
                       {return [1,
                                caml_call2
                                 (Stdlib_list[12],acc,[0,[1,[0,_cn_,[0,x,0]]],rest])]};
                    return [0,subst,v]}}}}}
          var param$0=param[2],acc$0=[0,_cl_,acc],acc=acc$0,param=param$0;
          continue}
        var
         sexp_str=caml_call1(to_string,sexp),
         _cp_=caml_call3(Stdlib_format[126],_bV_,key,sexp_str);
        return caml_call1(Stdlib[2],_cp_)}}
    function id(x){return x}
    function subst_option(param,rest)
     {var
       el=param[2],
       sup_subst=param[1],
       match=subst_path(el,rest),
       sub_el=match[2],
       sub_subst=match[1];
      function subst(x)
       {return caml_call1(sup_subst,[0,caml_call1(sub_subst,x)])}
      return [0,subst,sub_el]}
    function subst_path(sexp,param)
     {if(param)
       {var _ck_=param[1];
        switch(_ck_[0])
         {case 0:
           var t=param[2],n=_ck_[1];
           return subst_option(extract_pos(n,sexp),t);
          case 1:
           var t$0=param[2],arg_ix=_ck_[2],tag=_ck_[1];
           return subst_option(extract_match(tag,arg_ix,sexp),t$0);
          default:
           var
            rest=param[2],
            key=_ck_[1],
            match=extract_rec(key,sexp),
            el=match[2],
            rec_subst=match[1],
            match$0=subst_path(el,rest),
            sub_el=match$0[2],
            sub_subst=match$0[1],
            subst=
             function(x){return caml_call1(rec_subst,caml_call1(sub_subst,x))};
           return [0,subst,sub_el]}}
      return [0,id,sexp]}
    function implode(param)
     {var
       len=caml_call1(Stdlib_list[1],param),
       str=caml_create_bytes(len),
       ix=0,
       param$0=param;
      for(;;)
       {if(param$0)
         {var t=param$0[2],h=param$0[1];
          caml_bytes_set(str,ix,h);
          var ix$0=ix + 1 | 0,ix=ix$0,param$0=t;
          continue}
        return caml_call1(Stdlib_bytes[42],str)}}
    function fail_parse(msg)
     {var _cj_=caml_call2(Stdlib[28],cst_Path_parse,msg);
      return caml_call1(Stdlib[2],_cj_)}
    function parse$0(str)
     {var len=caml_ml_string_length(str);
      if(0 === len)return fail_parse(cst_path_empty);
      var acc=0,dot_ix=0;
      a:
      for(;;)
       {var c=caml_string_get(str,dot_ix);
        if(46 === c)
         {var ix=dot_ix + 1 | 0;
          if(ix === len)return caml_call1(Stdlib_list[9],acc);
          var acc$0=acc,str_acc=0,ix$0=ix;
          for(;;)
           {if(ix$0 === len)
             {var _ci_=[0,[2,implode(caml_call1(Stdlib_list[9],str_acc))],0];
              return caml_call2(Stdlib_list[12],acc$0,_ci_)}
            var c$0=caml_string_get(str,ix$0),switcher=c$0 - 91 | 0;
            if(1 < switcher >>> 0)
             {if(-45 === switcher)
               {if(0 === str_acc)fail_parse(cst_double);
                var
                 path_el=[2,implode(caml_call1(Stdlib_list[9],str_acc))],
                 ix$1=ix$0 + 1 | 0,
                 acc$1=[0,path_el,acc$0],
                 acc$0=acc$1,
                 str_acc=0,
                 ix$0=ix$1;
                continue}
              var
               ix$2=ix$0 + 1 | 0,
               str_acc$0=[0,c$0,str_acc],
               str_acc=str_acc$0,
               ix$0=ix$2;
              continue}
            if(switcher)
             {var ix1=ix$0 + 1 | 0;
              if(ix1 === len)return fail_parse(cst_EOF_after_escape);
              var
               ix$3=ix$0 + 1 | 0,
               str_acc$1=[0,caml_string_get(str,ix1),str_acc],
               str_acc=str_acc$1,
               ix$0=ix$3;
              continue}
            var ix$7=ix$0 + 1 | 0,index_acc=0,ix$4=ix$7;
            for(;;)
             {if(ix$4 === len)return fail_parse(cst_EOF_reading_index);
              var c$1=caml_string_get(str,ix$4);
              if(58 <= c$1)
               {if(93 === c$1)
                 {if(index_acc)
                   {var
                     index_acc$0=index_acc[1],
                     path_el$0=
                      0 === str_acc
                       ?[0,index_acc$0]
                       :[1,implode(caml_call1(Stdlib_list[9],str_acc)),index_acc$0],
                     dot_ix$0=ix$4 + 1 | 0;
                    if(dot_ix$0 === len)
                     return caml_call2(Stdlib_list[12],acc$0,[0,path_el$0,0]);
                    var acc$2=[0,path_el$0,acc$0],acc=acc$2,dot_ix=dot_ix$0;
                    continue a}
                  return fail_parse(cst_empty_index)}}
              else
               if(48 <= c$1)
                {if(index_acc)
                  {var
                    index_acc$1=index_acc[1],
                    index_acc$2=[0,((10 * index_acc$1 | 0) + c$1 | 0) - 48 | 0],
                    ix$5=ix$4 + 1 | 0,
                    index_acc=index_acc$2,
                    ix$4=ix$5;
                   continue}
                 var
                  ix$6=ix$4 + 1 | 0,
                  index_acc$3=[0,c$1 - 48 | 0],
                  index_acc=index_acc$3,
                  ix$4=ix$6;
                 continue}
              return fail_parse(caml_call2(Stdlib_format[126],_bW_,c$1))}}}
        return fail_parse(caml_call2(Stdlib_format[126],_bX_,c))}}
    function get_subst(path,match,sexp)
     {if(path)
       var path$0=path[1],path$1=path$0;
      else
       if(match)var str=match[1],path$1=parse$0(str);else var path$1=0;
      return subst_path(sexp,path$1)}
    function get(path,str,sexp){return get_subst(path,str,sexp)[2]}
    function replace$0(path,str,sexp,subst)
     {var match=get_subst(path,str,sexp),subst_fun=match[1];
      return caml_call1(subst_fun,subst)}
    function replace_no_path(str,sexp,subst)
     {return replace$0(0,[0,str],sexp,subst)}
    var
     Sexplib_Path=
      [0,
       parse$0,
       get,
       replace$0,
       replace_no_path,
       subst_path,
       extract_pos,
       extract_match,
       extract_rec];
    caml_register_global(178,Sexplib_Path,"Sexplib__Path");
    var of_val=Stdlib_obj[22];
    function register(exc,exc_name)
     {function _cg_(exc){return [0,exc_name]}
      var _ch_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_ch_,_cg_)}
    function register1(make_exc,exc_name,sexp_of_arg1)
     {var exc=caml_call1(make_exc,0);
      function _ce_(exc)
       {var sexp1=caml_call1(sexp_of_arg1,exc[2]);
        return [1,[0,[0,exc_name],[0,sexp1,0]]]}
      var _cf_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_cf_,_ce_)}
    function register2(make_exc,exc_name,sexp_of_arg1,sexp_of_arg2)
     {var exc=caml_call2(make_exc,0,0);
      function _cc_(repr)
       {var
         sexp1=caml_call1(sexp_of_arg1,repr[2]),
         sexp2=caml_call1(sexp_of_arg2,repr[3]);
        return [1,[0,[0,exc_name],[0,sexp1,[0,sexp2,0]]]]}
      var _cd_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_cd_,_cc_)}
    function register3
     (make_exc,exc_name,sexp_of_arg1,sexp_of_arg2,sexp_of_arg3)
     {var exc=caml_call3(make_exc,0,0,0);
      function _ca_(repr)
       {var
         sexp1=caml_call1(sexp_of_arg1,repr[2]),
         sexp2=caml_call1(sexp_of_arg2,repr[3]),
         sexp3=caml_call1(sexp_of_arg3,repr[4]);
        return [1,[0,[0,exc_name],[0,sexp1,[0,sexp2,[0,sexp3,0]]]]]}
      var _cb_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_cb_,_ca_)}
    function register4
     (make_exc,exc_name,sexp_of_arg1,sexp_of_arg2,sexp_of_arg3,sexp_of_arg4)
     {var exc=caml_call4(make_exc,0,0,0,0);
      function _b__(repr)
       {var
         sexp1=caml_call1(sexp_of_arg1,repr[2]),
         sexp2=caml_call1(sexp_of_arg2,repr[3]),
         sexp3=caml_call1(sexp_of_arg3,repr[4]),
         sexp4=caml_call1(sexp_of_arg4,repr[5]);
        return [1,[0,[0,exc_name],[0,sexp1,[0,sexp2,[0,sexp3,[0,sexp4,0]]]]]]}
      var _b$_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_b$_,_b__)}
    function register5
     (make_exc,
      exc_name,
      sexp_of_arg1,
      sexp_of_arg2,
      sexp_of_arg3,
      sexp_of_arg4,
      sexp_of_arg5)
     {var exc=caml_call5(make_exc,0,0,0,0,0);
      function _b8_(repr)
       {var
         sexp1=caml_call1(sexp_of_arg1,repr[2]),
         sexp2=caml_call1(sexp_of_arg2,repr[3]),
         sexp3=caml_call1(sexp_of_arg3,repr[4]),
         sexp4=caml_call1(sexp_of_arg4,repr[5]),
         sexp5=caml_call1(sexp_of_arg5,repr[6]);
        return [1,
                [0,
                 [0,exc_name],
                 [0,sexp1,[0,sexp2,[0,sexp3,[0,sexp4,[0,sexp5,0]]]]]]]}
      var _b9_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_b9_,_b8_)}
    function register6
     (make_exc,
      exc_name,
      sexp_of_arg1,
      sexp_of_arg2,
      sexp_of_arg3,
      sexp_of_arg4,
      sexp_of_arg5,
      sexp_of_arg6)
     {var exc=caml_call6(make_exc,0,0,0,0,0,0);
      function _b6_(repr)
       {var
         sexp1=caml_call1(sexp_of_arg1,repr[2]),
         sexp2=caml_call1(sexp_of_arg2,repr[3]),
         sexp3=caml_call1(sexp_of_arg3,repr[4]),
         sexp4=caml_call1(sexp_of_arg4,repr[5]),
         sexp5=caml_call1(sexp_of_arg5,repr[6]),
         sexp6=caml_call1(sexp_of_arg6,repr[7]);
        return [1,
                [0,
                 [0,exc_name],
                 [0,sexp1,[0,sexp2,[0,sexp3,[0,sexp4,[0,sexp5,[0,sexp6,0]]]]]]]]}
      var _b7_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_b7_,_b6_)}
    function register7
     (make_exc,
      exc_name,
      sexp_of_arg1,
      sexp_of_arg2,
      sexp_of_arg3,
      sexp_of_arg4,
      sexp_of_arg5,
      sexp_of_arg6,
      sexp_of_arg7)
     {var exc=caml_call7(make_exc,0,0,0,0,0,0,0);
      function _b4_(repr)
       {var
         sexp1=caml_call1(sexp_of_arg1,repr[2]),
         sexp2=caml_call1(sexp_of_arg2,repr[3]),
         sexp3=caml_call1(sexp_of_arg3,repr[4]),
         sexp4=caml_call1(sexp_of_arg4,repr[5]),
         sexp5=caml_call1(sexp_of_arg5,repr[6]),
         sexp6=caml_call1(sexp_of_arg6,repr[7]),
         sexp7=caml_call1(sexp_of_arg7,repr[8]);
        return [1,
                [0,
                 [0,exc_name],
                 [0,
                  sexp1,
                  [0,
                   sexp2,
                   [0,sexp3,[0,sexp4,[0,sexp5,[0,sexp6,[0,sexp7,0]]]]]]]]]}
      var _b5_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_b5_,_b4_)}
    function register8
     (make_exc,
      exc_name,
      sexp_of_arg1,
      sexp_of_arg2,
      sexp_of_arg3,
      sexp_of_arg4,
      sexp_of_arg5,
      sexp_of_arg6,
      sexp_of_arg7,
      sexp_of_arg8)
     {var exc=caml_call8(make_exc,0,0,0,0,0,0,0,0);
      function _b2_(repr)
       {var
         sexp1=caml_call1(sexp_of_arg1,repr[2]),
         sexp2=caml_call1(sexp_of_arg2,repr[3]),
         sexp3=caml_call1(sexp_of_arg3,repr[4]),
         sexp4=caml_call1(sexp_of_arg4,repr[5]),
         sexp5=caml_call1(sexp_of_arg5,repr[6]),
         sexp6=caml_call1(sexp_of_arg6,repr[7]),
         sexp7=caml_call1(sexp_of_arg7,repr[8]),
         sexp8=caml_call1(sexp_of_arg8,repr[9]);
        return [1,
                [0,
                 [0,exc_name],
                 [0,
                  sexp1,
                  [0,
                   sexp2,
                   [0,
                    sexp3,
                    [0,sexp4,[0,sexp5,[0,sexp6,[0,sexp7,[0,sexp8,0]]]]]]]]]]}
      var _b3_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_b3_,_b2_)}
    function register9
     (make_exc,
      exc_name,
      sexp_of_arg1,
      sexp_of_arg2,
      sexp_of_arg3,
      sexp_of_arg4,
      sexp_of_arg5,
      sexp_of_arg6,
      sexp_of_arg7,
      sexp_of_arg8,
      sexp_of_arg9)
     {var exc=caml_call9(make_exc,0,0,0,0,0,0,0,0,0);
      function _b0_(repr)
       {var
         sexp1=caml_call1(sexp_of_arg1,repr[2]),
         sexp2=caml_call1(sexp_of_arg2,repr[3]),
         sexp3=caml_call1(sexp_of_arg3,repr[4]),
         sexp4=caml_call1(sexp_of_arg4,repr[5]),
         sexp5=caml_call1(sexp_of_arg5,repr[6]),
         sexp6=caml_call1(sexp_of_arg6,repr[7]),
         sexp7=caml_call1(sexp_of_arg7,repr[8]),
         sexp8=caml_call1(sexp_of_arg8,repr[9]),
         sexp9=caml_call1(sexp_of_arg9,repr[10]);
        return [1,
                [0,
                 [0,exc_name],
                 [0,
                  sexp1,
                  [0,
                   sexp2,
                   [0,
                    sexp3,
                    [0,
                     sexp4,
                     [0,sexp5,[0,sexp6,[0,sexp7,[0,sexp8,[0,sexp9,0]]]]]]]]]]]}
      var _b1_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_b1_,_b0_)}
    function register10
     (make_exc,
      exc_name,
      sexp_of_arg1,
      sexp_of_arg2,
      sexp_of_arg3,
      sexp_of_arg4,
      sexp_of_arg5,
      sexp_of_arg6,
      sexp_of_arg7,
      sexp_of_arg8,
      sexp_of_arg9,
      sexp_of_arg10)
     {var exc=caml_call10(make_exc,0,0,0,0,0,0,0,0,0,0);
      function _bY_(repr)
       {var
         sexp1=caml_call1(sexp_of_arg1,repr[2]),
         sexp2=caml_call1(sexp_of_arg2,repr[3]),
         sexp3=caml_call1(sexp_of_arg3,repr[4]),
         sexp4=caml_call1(sexp_of_arg4,repr[5]),
         sexp5=caml_call1(sexp_of_arg5,repr[6]),
         sexp6=caml_call1(sexp_of_arg6,repr[7]),
         sexp7=caml_call1(sexp_of_arg7,repr[8]),
         sexp8=caml_call1(sexp_of_arg8,repr[9]),
         sexp9=caml_call1(sexp_of_arg9,repr[10]),
         sexp10=caml_call1(sexp_of_arg10,repr[11]);
        return [1,
                [0,
                 [0,exc_name],
                 [0,
                  sexp1,
                  [0,
                   sexp2,
                   [0,
                    sexp3,
                    [0,
                     sexp4,
                     [0,
                      sexp5,
                      [0,sexp6,[0,sexp7,[0,sexp8,[0,sexp9,[0,sexp10,0]]]]]]]]]]]]}
      var _bZ_=caml_call1(of_val,exc);
      return caml_call3(_bR_[2],0,_bZ_,_bY_)}
    var
     Sexplib_Exn_magic=
      [0,
       register,
       register1,
       register2,
       register3,
       register4,
       register5,
       register6,
       register7,
       register8,
       register9,
       register10];
    caml_register_global(180,Sexplib_Exn_magic,"Sexplib__Exn_magic");
    var
     Of_sexp_error$0=Sexplib0_Sexp_conv_error[1],
     tuple_of_size_n_expected=Sexplib0_Sexp_conv_error[2],
     stag_no_args=Sexplib0_Sexp_conv_error[3],
     stag_incorrect_n_args=Sexplib0_Sexp_conv_error[4],
     stag_takes_args=Sexplib0_Sexp_conv_error[5],
     nested_list_invalid_sum=Sexplib0_Sexp_conv_error[6],
     empty_list_invalid_sum=Sexplib0_Sexp_conv_error[7],
     unexpected_stag=Sexplib0_Sexp_conv_error[8],
     record_only_pairs_expected=Sexplib0_Sexp_conv_error[9],
     record_superfluous_fields=Sexplib0_Sexp_conv_error[10],
     record_duplicate_fields=Sexplib0_Sexp_conv_error[11],
     record_extra_fields=Sexplib0_Sexp_conv_error[12],
     record_get_undefined_loop=Sexplib0_Sexp_conv_error[13],
     record_undefined_elements=Sexplib0_Sexp_conv_error[14],
     record_list_instead_atom=Sexplib0_Sexp_conv_error[15],
     record_poly_field_value=Sexplib0_Sexp_conv_error[16],
     No_variant_match=Sexplib0_Sexp_conv_error[17],
     no_variant_match=Sexplib0_Sexp_conv_error[18],
     no_matching_variant_found=Sexplib0_Sexp_conv_error[19],
     ptag_no_args=Sexplib0_Sexp_conv_error[20],
     ptag_incorrect_n_args=Sexplib0_Sexp_conv_error[21],
     ptag_takes_args=Sexplib0_Sexp_conv_error[22],
     nested_list_invalid_poly_var=Sexplib0_Sexp_conv_error[23],
     empty_list_invalid_poly_var=Sexplib0_Sexp_conv_error[24],
     silly_type=Sexplib0_Sexp_conv_error[25],
     empty_type=Sexplib0_Sexp_conv_error[26],
     Sexplib_Conv_error=
      [0,
       Of_sexp_error$0,
       tuple_of_size_n_expected,
       stag_no_args,
       stag_incorrect_n_args,
       stag_takes_args,
       nested_list_invalid_sum,
       empty_list_invalid_sum,
       unexpected_stag,
       record_only_pairs_expected,
       record_superfluous_fields,
       record_duplicate_fields,
       record_extra_fields,
       record_get_undefined_loop,
       record_undefined_elements,
       record_list_instead_atom,
       record_poly_field_value,
       No_variant_match,
       no_variant_match,
       no_matching_variant_found,
       ptag_no_args,
       ptag_incorrect_n_args,
       ptag_takes_args,
       nested_list_invalid_poly_var,
       empty_list_invalid_poly_var,
       silly_type,
       empty_type];
    caml_register_global(182,Sexplib_Conv_error,"Sexplib__Conv_error");
    return}
  (function(){return this}()));


//# 1 "../../.js/ezjsonm/ezjsonm.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Ezjsonm_t_of_sexp_encounte=
      caml_string_of_jsbytes
       ("Ezjsonm: t_of_sexp encountered a value (fragment) rather than a t"),
     cst_hex$0=caml_string_of_jsbytes("hex"),
     cst_hex=caml_string_of_jsbytes("hex"),
     cst_Ezjsonm_Escape=caml_string_of_jsbytes("Ezjsonm.Escape"),
     cst_Ezjsonm_Parse_error=caml_string_of_jsbytes("Ezjsonm.Parse_error"),
     cst_Ezjsonm_Not_utf8=caml_string_of_jsbytes("Ezjsonm.Not_utf8"),
     Stdlib=global_data.Stdlib,
     Hex=global_data.Hex,
     Uutf=global_data.Uutf,
     Assert_failure=global_data.Assert_failure,
     Stdlib_format=global_data.Stdlib__format,
     Jsonm=global_data.Jsonm,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_list=global_data.Stdlib__list,
     _t_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.to_sexp"),0],
       caml_string_of_jsbytes("Ezjsonm.to_sexp")],
     _s_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.decode_string_exn"),0],
       caml_string_of_jsbytes("Ezjsonm.decode_string_exn")],
     _r_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_triple"),0],
       caml_string_of_jsbytes("Ezjsonm.get_triple")],
     _q_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_pair"),0],
       caml_string_of_jsbytes("Ezjsonm.get_pair")],
     _p_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_dict"),0],
       caml_string_of_jsbytes("Ezjsonm.get_dict")],
     _o_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_option"),0],
       caml_string_of_jsbytes("Ezjsonm.get_option")],
     _n_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_list"),0],
       caml_string_of_jsbytes("Ezjsonm.get_list")],
     _m_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_float"),0],
       caml_string_of_jsbytes("Ezjsonm.get_float")],
     _l_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_int64"),0],
       caml_string_of_jsbytes("Ezjsonm.get_int64")],
     _k_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_int32"),0],
       caml_string_of_jsbytes("Ezjsonm.get_int32")],
     _j_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_int"),0],
       caml_string_of_jsbytes("Ezjsonm.get_int")],
     _i_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_string"),0],
       caml_string_of_jsbytes("Ezjsonm.get_string")],
     _h_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_bool"),0],
       caml_string_of_jsbytes("Ezjsonm.get_bool")],
     _g_=
      [0,
       [11,caml_string_of_jsbytes("Ezjsonm.get_unit"),0],
       caml_string_of_jsbytes("Ezjsonm.get_unit")],
     _f_=[0,caml_string_of_jsbytes("lib/ezjsonm.ml"),134,9],
     _e_=
      [0,
       [11,caml_string_of_jsbytes("JSON.of_buffer "),[2,0,0]],
       caml_string_of_jsbytes("JSON.of_buffer %s")],
     _d_=
      [0,
       [11,caml_string_of_jsbytes("Not unwrappable"),0],
       caml_string_of_jsbytes("Not unwrappable")],
     _b_=[0,caml_string_of_jsbytes("lib/ezjsonm.ml"),56,11],
     _c_=[0,caml_string_of_jsbytes("lib/ezjsonm.ml"),63,17],
     _a_=[0,caml_string_of_jsbytes("lib/ezjsonm.ml"),47,19];
    function value(t){return t}
    var
     Escape=[248,cst_Ezjsonm_Escape,caml_fresh_oo_id(0)],
     rev=Stdlib_list[9],
     rev_append=Stdlib_list[12],
     rev_map=Stdlib_list[19],
     assoc=Stdlib_list[41],
     mem_assoc=Stdlib_list[45];
    function map(f,l){return caml_call1(rev,caml_call2(rev_map,f,l))}
    function json_of_src(src)
     {var d=caml_call2(Jsonm[3],0,src);
      function dec(param)
       {var match=caml_call1(Jsonm[4],d);
        if(typeof match === "number")throw [0,Assert_failure,_a_];
        if(106380200 <= match[1])
         {var e=match[2];throw [0,Escape,caml_call1(Jsonm[5],d),e]}
        var l=match[2];
        return l}
      function value$0(counter,v,k)
       {var switch$0=0;
        if(typeof v === "number")
         {if(14610 === v)
           {var _ag_=0;
            if(counter < 50)
             {var counter$1=counter + 1 | 0;return arr$0(counter$1,_ag_,k)}
            return caml_trampoline_return(arr$0,[0,_ag_,k])}
          if(17732 === v)
           {var _ah_=0;
            if(counter < 50)
             {var counter$0=counter + 1 | 0;return obj$0(counter$0,_ah_,k)}
            return caml_trampoline_return(obj$0,[0,_ah_,k])}
          if(870828711 !== v)switch$0 = 1}
        else
         {var _ai_=v[1];
          if(-976970511 !== _ai_ && 365180284 !== _ai_ && 737456202 !== _ai_)
           switch$0 = 1}
        if(switch$0)throw [0,Assert_failure,_b_];
        return caml_call1(k,v)}
      function arr$0(counter,vs,k)
       {var v=dec(0);
        if(14596 === v)return caml_call1(k,[0,65,caml_call1(rev,vs)]);
        function _af_(v){return arr([0,v,vs],k)}
        if(counter < 50)
         {var counter$0=counter + 1 | 0;return value$0(counter$0,v,_af_)}
        return caml_trampoline_return(value$0,[0,v,_af_])}
      function obj$0(counter,ms,k)
       {var match=dec(0);
        if(typeof match === "number")
         {if(17718 === match)return caml_call1(k,[0,79,caml_call1(rev,ms)])}
        else
         if(869834347 === match[1])
          {var
            n=match[2],
            _ad_=function(v){return obj([0,[0,n,v],ms],k)},
            _ae_=dec(0);
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return value$0(counter$0,_ae_,_ad_)}
           return caml_trampoline_return(value$0,[0,_ae_,_ad_])}
        throw [0,Assert_failure,_c_]}
      function value(v,k){return caml_trampoline(value$0(0,v,k))}
      function arr(vs,k){return caml_trampoline(arr$0(0,vs,k))}
      function obj(ms,k){return caml_trampoline(obj$0(0,ms,k))}
      try
       {var _ab_=function(x){return x},_ac_=[0,824773160,value(dec(0),_ab_)];
        return _ac_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Escape)
         {var e=exn[3],r=exn[2];return [0,106380200,[0,r,e]]}
        throw exn}}
    function value_to_dst(opt,dst,json)
     {if(opt)var sth=opt[1],minify=sth;else var minify=1;
      function enc(e,l){caml_call2(Jsonm[9],e,[0,-633954146,l]);return 0}
      function value$0(counter,v,k,e)
       {if(typeof v !== "number")
         {var _aa_=v[1];
          if(65 <= _aa_ && ! (365180284 <= _aa_))
           {if(79 <= v[1])
             {var ms=v[2];
              enc(e,17732);
              if(counter < 50)
               {var counter$0=counter + 1 | 0;
                return obj_ms$0(counter$0,ms,k,e)}
              return caml_trampoline_return(obj_ms$0,[0,ms,k,e])}
            var vs=v[2];
            enc(e,14610);
            if(counter < 50)
             {var counter$1=counter + 1 | 0;return arr_vs$0(counter$1,vs,k,e)}
            return caml_trampoline_return(arr_vs$0,[0,vs,k,e])}}
        enc(e,v);
        return caml_call1(k,e)}
      function arr_vs$0(counter,vs,k,e)
       {if(vs)
         {var vs$0=vs[2],v=vs[1],___=function(_$_){return arr_vs(vs$0,k,_$_)};
          if(counter < 50)
           {var counter$0=counter + 1 | 0;return value$0(counter$0,v,___,e)}
          return caml_trampoline_return(value$0,[0,v,___,e])}
        enc(e,14596);
        return caml_call1(k,e)}
      function obj_ms$0(counter,ms,k,e)
       {if(ms)
         {var ms$0=ms[2],match=ms[1],v=match[2],n=match[1];
          enc(e,[0,869834347,n]);
          var _Y_=function(_Z_){return obj_ms(ms$0,k,_Z_)};
          if(counter < 50)
           {var counter$0=counter + 1 | 0;return value$0(counter$0,v,_Y_,e)}
          return caml_trampoline_return(value$0,[0,v,_Y_,e])}
        enc(e,17718);
        return caml_call1(k,e)}
      function value(v,k,e){return caml_trampoline(value$0(0,v,k,e))}
      function arr_vs(vs,k,e){return caml_trampoline(arr_vs$0(0,vs,k,e))}
      function obj_ms(ms,k,e){return caml_trampoline(obj_ms$0(0,ms,k,e))}
      var e=caml_call2(Jsonm[8],[0,minify],dst);
      function finish(e){caml_call2(Jsonm[9],e,3455931);return 0}
      return value(json,finish,e)}
    function value_to_buffer(minify,buf,json)
     {return value_to_dst(minify,[0,86585632,buf],json)}
    function to_buffer(minify,buf,json)
     {return value_to_buffer(minify,buf,json)}
    function value_to_string(minify,json)
     {var buf=caml_call1(Stdlib_buffer[1],1024);
      value_to_buffer(minify,buf,json);
      return caml_call1(Stdlib_buffer[2],buf)}
    function to_string(minify,json){return value_to_string(minify,json)}
    function value_to_channel(minify,oc,json)
     {return value_to_dst(minify,[0,438511779,oc],json)}
    function to_channel(minify,oc,json)
     {return value_to_channel(minify,oc,json)}
    var Parse_error=[248,cst_Ezjsonm_Parse_error,caml_fresh_oo_id(0)];
    function parse_error(t,fmt)
     {function _X_(msg){throw [0,Parse_error,t,msg]}
      return caml_call2(Stdlib_printf[11],_X_,fmt)}
    function wrap(t){return [0,65,[0,t,0]]}
    function unwrap(v)
     {if(typeof v !== "number" && 65 === v[1])
       {var _W_=v[2];if(_W_ && ! _W_[2]){var t=_W_[1];return t}}
      return parse_error(v,_d_)}
    function value_from_src(src)
     {var match=json_of_src(src);
      if(824773160 <= match[1]){var t=match[2];return t}
      var match$0=match[2],e=match$0[2];
      caml_call2(Jsonm[2],Stdlib_format[109],e);
      var _V_=caml_call1(Stdlib_format[110],0);
      return caml_call1(parse_error(870828711,_e_),_V_)}
    function value_from_string(str){return value_from_src([0,-976970511,str])}
    function value_from_channel(chan)
     {return value_from_src([0,438511779,chan])}
    function ensure_document(t)
     {if(typeof t !== "number")
       {var _U_=t[1],switch$0=0;
        if(65 === _U_ || 79 === _U_)switch$0 = 1;
        if(switch$0)return t}
      throw [0,Assert_failure,_f_]}
    function from_string(str){return ensure_document(value_from_string(str))}
    function from_channel(chan)
     {return ensure_document(value_from_channel(chan))}
    function unit(param){return 870828711}
    function get_unit(j){return 870828711 === j?0:parse_error(j,_g_)}
    function bool(b){return [0,737456202,b]}
    function get_bool(j)
     {if(typeof j !== "number" && 737456202 === j[1]){var b=j[2];return b}
      return parse_error(j,_h_)}
    function string(s){return [0,-976970511,s]}
    function get_string(j)
     {if(typeof j !== "number" && -976970511 === j[1]){var s=j[2];return s}
      return parse_error(j,_i_)}
    function int$0(i){return [0,365180284,i]}
    function int32(i){return [0,365180284,i]}
    function int64(i){return [0,365180284,runtime.caml_int64_to_float(i)]}
    function get_int(j)
     {if(typeof j !== "number" && 365180284 === j[1]){var f=j[2];return f | 0}
      return parse_error(j,_j_)}
    function get_int32(j)
     {if(typeof j !== "number" && 365180284 === j[1]){var f=j[2];return f | 0}
      return parse_error(j,_k_)}
    function get_int64(j)
     {if(typeof j !== "number" && 365180284 === j[1])
       {var f=j[2];return runtime.caml_int64_of_float(f)}
      return parse_error(j,_l_)}
    function float$0(f){return [0,365180284,f]}
    function get_float(j)
     {if(typeof j !== "number" && 365180284 === j[1]){var f=j[2];return f}
      return parse_error(j,_m_)}
    function list(fn,l){return [0,65,map(fn,l)]}
    function get_list(fn,j)
     {if(typeof j !== "number" && 65 === j[1]){var ks=j[2];return map(fn,ks)}
      return parse_error(j,_n_)}
    function strings(strings){return list(string,strings)}
    function get_strings(_T_){return get_list(get_string,_T_)}
    function option(fn,param)
     {if(param){var x=param[1];return [0,65,[0,caml_call1(fn,x),0]]}
      return 870828711}
    function get_option(fn,j)
     {if(typeof j === "number")
       {if(870828711 === j)return 0}
      else
       if(65 === j[1])
        {var _S_=j[2];
         if(_S_ && ! _S_[2]){var j$0=_S_[1];return [0,caml_call1(fn,j$0)]}}
      return parse_error(j,_o_)}
    function dict(d){return [0,79,d]}
    function get_dict(j)
     {if(typeof j !== "number" && 79 === j[1]){var d=j[2];return d}
      return parse_error(j,_p_)}
    function pair(fk,fv,param)
     {var v=param[2],k=param[1],_R_=[0,caml_call1(fv,v),0];
      return [0,65,[0,caml_call1(fk,k),_R_]]}
    function get_pair(fk,fv,j)
     {if(typeof j !== "number" && 65 === j[1])
       {var _O_=j[2];
        if(_O_)
         {var _P_=_O_[2];
          if(_P_ && ! _P_[2])
           {var v=_P_[1],k=_O_[1],_Q_=caml_call1(fv,v);
            return [0,caml_call1(fk,k),_Q_]}}}
      return parse_error(j,_q_)}
    function triple(fa,fb,fc,param)
     {var
       c=param[3],
       b=param[2],
       a=param[1],
       _M_=[0,caml_call1(fc,c),0],
       _N_=[0,caml_call1(fb,b),_M_];
      return [0,65,[0,caml_call1(fa,a),_N_]]}
    function get_triple(fa,fb,fc,j)
     {if(typeof j !== "number" && 65 === j[1])
       {var _H_=j[2];
        if(_H_)
         {var _I_=_H_[2];
          if(_I_)
           {var _J_=_I_[2];
            if(_J_ && ! _J_[2])
             {var
               c=_J_[1],
               b=_I_[1],
               a=_H_[1],
               _K_=caml_call1(fc,c),
               _L_=caml_call1(fb,b);
              return [0,caml_call1(fa,a),_L_,_K_]}}}}
      return parse_error(j,_r_)}
    function mem(j,p)
     {var j$0=j,p$0=p;
      for(;;)
       {if(p$0)
         {if(typeof j$0 !== "number" && 79 === j$0[1])
           {var o=j$0[2],tl=p$0[2],h=p$0[1],_G_=caml_call2(mem_assoc,h,o);
            if(_G_){var j$1=caml_call2(assoc,h,o),j$0=j$1,p$0=tl;continue}
            return _G_}
          return 0}
        return 1}}
    function find(j,p)
     {var j$0=j,p$0=p;
      for(;;)
       {if(p$0)
         {if(typeof j$0 !== "number" && 79 === j$0[1])
           {var
             o=j$0[2],
             tl=p$0[2],
             h=p$0[1],
             j$1=caml_call2(assoc,h,o),
             j$0=j$1,
             p$0=tl;
            continue}
          throw Stdlib[8]}
        return j$0}}
    function map$0(f,t,path)
     {function aux(t,param$0)
       {if(param$0)
         {var tl=param$0[2],h=param$0[1];
          if(typeof t !== "number" && 79 === t[1])
           {var d=t[2],f$0=function(t){return aux(t,tl)},acc=0,param=d;
            for(;;)
             {if(param)
               {var dict=param[2],e=param[1],j=e[2],l=e[1];
                if(! runtime.caml_equal(l,h))
                 {var acc$0=[0,e,acc],acc=acc$0,param=dict;continue}
                var match=f$0(j);
                if(match)
                 var
                  j$0=match[1],
                  _F_=caml_call2(rev_append,acc,[0,[0,l,j$0],dict]);
                else
                 var _F_=caml_call2(rev_append,acc,dict)}
              else
               {var match$0=f$0(870828711);
                if(match$0)
                 var
                  j$1=match$0[1],
                  _F_=caml_call2(rev_append,acc,[0,[0,h,j$1],0]);
                else
                 var _F_=caml_call1(rev,acc)}
              return [0,[0,79,_F_]]}}
          return 0}
        return caml_call1(f,t)}
      var match=aux(t,path);
      if(match){var j=match[1];return j}
      throw Stdlib[8]}
    function update(t,path,v){return map$0(function(param){return v},t,path)}
    var Not_utf8=[248,cst_Ezjsonm_Not_utf8,caml_fresh_oo_id(0)];
    function is_valid_utf8(str)
     {try
       {var
         _z_=0,
         _A_=
          function(param,_E_,_D_)
           {if(typeof _D_ !== "number" && 659980059 === _D_[1])throw Not_utf8;
            return 0};
        caml_call5(Uutf[22][2],0,0,_A_,_z_,str);
        var _B_=1;
        return _B_}
      catch(_C_)
       {_C_ = caml_wrap_exception(_C_);if(_C_ === Not_utf8)return 0;throw _C_}}
    function encode_string(str)
     {if(is_valid_utf8(str))return string(str);
      var match=caml_call2(Hex[3],0,str),h=match[2];
      return [0,79,[0,[0,cst_hex,string(h)],0]]}
    function decode_string(param)
     {if(typeof param !== "number")
       {var _v_=param[1];
        if(-976970511 === _v_){var str=param[2];return [0,str]}
        if(79 === _v_)
         {var _w_=param[2];
          if(_w_)
           {var _x_=_w_[1];
            if(! runtime.caml_string_notequal(_x_[1],cst_hex$0))
             {var _y_=_x_[2];
              if(typeof _y_ !== "number" && -976970511 === _y_[1] && ! _w_[2])
               {var str$0=_y_[2];
                return [0,caml_call1(Hex[4],[0,3603131,str$0])]}}}}}
      return 0}
    function decode_string_exn(j)
     {var match=decode_string(j);
      if(match){var s=match[1];return s}
      return parse_error(j,_s_)}
    function of_sexp(param)
     {if(0 === param[0]){var x=param[1];return encode_string(x)}
      var l=param[1];
      return list(of_sexp,l)}
    function t_of_sexp(s)
     {var match=of_sexp(s);
      if(typeof match !== "number")
       {var _u_=match[1];
        if(65 === _u_){var x=match[2];return [0,65,x]}
        if(79 === _u_){var x$0=match[2];return [0,79,x$0]}}
      return caml_call1(Stdlib[2],cst_Ezjsonm_t_of_sexp_encounte)}
    function to_sexp(json)
     {var match=decode_string(json);
      if(match){var s=match[1];return [0,s]}
      if(typeof json !== "number" && 65 === json[1])
       {var l=json[2];return [1,map(to_sexp,l)]}
      return parse_error(json,_t_)}
    function sexp_of_t(t){return to_sexp(t)}
    var
     Ezjsonm=
      [0,
       value,
       wrap,
       unwrap,
       from_channel,
       from_string,
       value_from_channel,
       value_from_string,
       value_from_src,
       to_channel,
       to_buffer,
       to_string,
       value_to_channel,
       value_to_buffer,
       value_to_string,
       value_to_dst,
       unit,
       bool,
       string,
       strings,
       int$0,
       int32,
       int64,
       float$0,
       list,
       option,
       dict,
       pair,
       triple,
       Parse_error,
       get_unit,
       get_bool,
       get_string,
       get_strings,
       get_int,
       get_int32,
       get_int64,
       get_float,
       get_list,
       get_option,
       get_dict,
       get_pair,
       get_triple,
       mem,
       find,
       update,
       map$0,
       encode_string,
       decode_string,
       decode_string_exn,
       to_sexp,
       to_sexp,
       sexp_of_t,
       of_sexp,
       of_sexp,
       t_of_sexp,
       parse_error];
    runtime.caml_register_global(35,Ezjsonm,"Ezjsonm");
    return}
  (function(){return this}()));


//# 1 "../../.js/data-encoding/data_encoding.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_bswap16=runtime.caml_bswap16,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_get16=runtime.caml_bytes_get16,
     caml_bytes_get32=runtime.caml_bytes_get32,
     caml_bytes_get64=runtime.caml_bytes_get64,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_bytes_set16=runtime.caml_bytes_set16,
     caml_bytes_set32=runtime.caml_bytes_set32,
     caml_bytes_set64=runtime.caml_bytes_set64,
     caml_check_bound=runtime.caml_check_bound,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_equal=runtime.caml_equal,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_int32_bswap=runtime.caml_int32_bswap,
     caml_int64_bswap=runtime.caml_int64_bswap,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_mul=runtime.caml_mul,
     caml_register_global=runtime.caml_register_global,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    function caml_call8(f,a0,a1,a2,a3,a4,a5,a6,a7)
     {return f.length == 8
              ?f(a0,a1,a2,a3,a4,a5,a6,a7)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7])}
    function caml_call10(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
     {return f.length == 10
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Result=caml_string_of_jsbytes("Result"),
     cst_Ok=caml_string_of_jsbytes("Ok"),
     cst_Data_encoding_option_canno=
      caml_string_of_jsbytes
       ("Data_encoding.option: cannot nest nullable encodings"),
     cst_None=caml_string_of_jsbytes("None"),
     cst_Some=caml_string_of_jsbytes("Some"),
     cst_Data_encoding_union_empty_=
      caml_string_of_jsbytes("Data_encoding.union: empty list of cases."),
     cst_Tezos_serial_Encoding_merg=
      caml_string_of_jsbytes("Tezos_serial.Encoding.merge_tups"),
     cst_tuples=caml_string_of_jsbytes("tuples"),
     cst_Json_encoding_merge_objs=
      caml_string_of_jsbytes("Json_encoding.merge_objs"),
     cst_objects=caml_string_of_jsbytes("objects"),
     cst_data_encoding_string_enum_=
      caml_string_of_jsbytes
       ("data_encoding.string_enum: cannot have a single case, use constant instead"),
     cst_data_encoding_string_enum_$0=
      caml_string_of_jsbytes
       ("data_encoding.string_enum: cannot have zero cases"),
     cst_Data_encoding_ranged_int=
      caml_string_of_jsbytes("Data_encoding.ranged_int"),
     cst_a_list=caml_string_of_jsbytes("a list"),
     cst_a_list$0=caml_string_of_jsbytes("a list"),
     cst_an_array=caml_string_of_jsbytes("an array"),
     cst_an_array$0=caml_string_of_jsbytes("an array"),
     cst_Cannot_create_a_padding_of=
      caml_string_of_jsbytes
       ("Cannot create a padding of negative or null fixed length."),
     cst_Cannot_pad_non_fixed_size_=
      caml_string_of_jsbytes("Cannot pad non-fixed size encoding"),
     cst_Cannot_create_a_byte_encod=
      caml_string_of_jsbytes
       ("Cannot create a byte encoding of negative or null fixed length."),
     cst_Cannot_create_a_string_enc=
      caml_string_of_jsbytes
       ("Cannot create a string encoding of negative or null fixed length."),
     eta=[4,-1027682724],
     eta$0=[3,-1027682724],
     cst_Variable=caml_string_of_jsbytes("Variable"),
     cst_kind$11=caml_string_of_jsbytes("kind"),
     cst_Variable$0=caml_string_of_jsbytes("Variable"),
     cst_Dynamic=caml_string_of_jsbytes("Dynamic"),
     cst_kind$12=caml_string_of_jsbytes("kind"),
     cst_Dynamic$0=caml_string_of_jsbytes("Dynamic"),
     cst_Padding=caml_string_of_jsbytes("Padding"),
     cst_kind=caml_string_of_jsbytes("kind"),
     cst_Padding$0=caml_string_of_jsbytes("Padding"),
     cst_Ref=caml_string_of_jsbytes("Ref"),
     cst_kind$0=caml_string_of_jsbytes("kind"),
     cst_name=caml_string_of_jsbytes("name"),
     cst_Ref$0=caml_string_of_jsbytes("Ref"),
     cst_max_length=caml_string_of_jsbytes("max_length"),
     cst_Seq=caml_string_of_jsbytes("Seq"),
     cst_kind$1=caml_string_of_jsbytes("kind"),
     cst_layout=caml_string_of_jsbytes("layout"),
     cst_Seq$0=caml_string_of_jsbytes("Seq"),
     cst_Enum=caml_string_of_jsbytes("Enum"),
     cst_kind$2=caml_string_of_jsbytes("kind"),
     cst_reference=caml_string_of_jsbytes("reference"),
     cst_size=caml_string_of_jsbytes("size"),
     cst_Enum$0=caml_string_of_jsbytes("Enum"),
     cst_String=caml_string_of_jsbytes("String"),
     cst_kind$3=caml_string_of_jsbytes("kind"),
     cst_String$0=caml_string_of_jsbytes("String"),
     cst_Bytes=caml_string_of_jsbytes("Bytes"),
     cst_kind$4=caml_string_of_jsbytes("kind"),
     cst_Bytes$0=caml_string_of_jsbytes("Bytes"),
     cst_Float=caml_string_of_jsbytes("Float"),
     cst_kind$5=caml_string_of_jsbytes("kind"),
     cst_Float$0=caml_string_of_jsbytes("Float"),
     cst_RangedFloat=caml_string_of_jsbytes("RangedFloat"),
     cst_kind$6=caml_string_of_jsbytes("kind"),
     cst_max=caml_string_of_jsbytes("max"),
     cst_min=caml_string_of_jsbytes("min"),
     cst_RangedFloat$0=caml_string_of_jsbytes("RangedFloat"),
     cst_RangedInt=caml_string_of_jsbytes("RangedInt"),
     cst_kind$7=caml_string_of_jsbytes("kind"),
     cst_max$0=caml_string_of_jsbytes("max"),
     cst_min$0=caml_string_of_jsbytes("min"),
     cst_RangedInt$0=caml_string_of_jsbytes("RangedInt"),
     cst_Bool=caml_string_of_jsbytes("Bool"),
     cst_kind$8=caml_string_of_jsbytes("kind"),
     cst_Bool$0=caml_string_of_jsbytes("Bool"),
     cst_Int=caml_string_of_jsbytes("Int"),
     cst_kind$9=caml_string_of_jsbytes("kind"),
     cst_size$0=caml_string_of_jsbytes("size"),
     cst_Int$0=caml_string_of_jsbytes("Int"),
     cst_Zero_width=caml_string_of_jsbytes("Zero_width"),
     cst_kind$10=caml_string_of_jsbytes("kind"),
     cst_Zero_width$0=caml_string_of_jsbytes("Zero_width"),
     cst_Unnamed_field=caml_string_of_jsbytes("Unnamed field "),
     cst_16_bit=caml_string_of_jsbytes("16-bit"),
     cst_8_bit=caml_string_of_jsbytes("8-bit"),
     cst_unsigned_30_bit_integer=
      caml_string_of_jsbytes("unsigned 30-bit integer"),
     cst_unsigned_16_bit_integer=
      caml_string_of_jsbytes("unsigned 16-bit integer"),
     cst_unsigned_8_bit_integer=
      caml_string_of_jsbytes("unsigned 8-bit integer"),
     cst_signed_8_bit_integer=caml_string_of_jsbytes("signed 8-bit integer"),
     cst_signed_64_bit_integer=caml_string_of_jsbytes("signed 64-bit integer"),
     cst_signed_32_bit_integer=caml_string_of_jsbytes("signed 32-bit integer"),
     cst_signed_31_bit_integer=caml_string_of_jsbytes("signed 31-bit integer"),
     cst_signed_16_bit_integer=caml_string_of_jsbytes("signed 16-bit integer"),
     cst=caml_string_of_jsbytes(""),
     cst_s=caml_string_of_jsbytes("s"),
     binary_table_headers=
      [0,
       caml_string_of_jsbytes("Name"),
       [0,
        caml_string_of_jsbytes("Size"),
        [0,caml_string_of_jsbytes("Contents"),0]]],
     enum_headers=
      [0,
       caml_string_of_jsbytes("Case number"),
       [0,caml_string_of_jsbytes("Encoded string"),0]],
     cst_description=caml_string_of_jsbytes("description"),
     cst_title=caml_string_of_jsbytes("title"),
     integer_cases=
      [0,
       [0,caml_string_of_jsbytes("Int16"),-783416972],
       [0,
        [0,caml_string_of_jsbytes("Int8"),815034505],
        [0,
         [0,caml_string_of_jsbytes("Uint16"),980827423],
         [0,[0,caml_string_of_jsbytes("Uint8"),919245630],0]]]],
     cst_layout$0=caml_string_of_jsbytes("layout"),
     cst_Float$1=caml_string_of_jsbytes("Float"),
     cst_kind$13=caml_string_of_jsbytes("kind"),
     cst_size$1=caml_string_of_jsbytes("size"),
     cst_Fixed=caml_string_of_jsbytes("Fixed"),
     cst_schema_kind=caml_string_of_jsbytes("schema.kind"),
     cst_name$0=caml_string_of_jsbytes("name"),
     cst_option_indicator=caml_string_of_jsbytes("option_indicator"),
     cst_kind$14=caml_string_of_jsbytes("kind"),
     cst_Optional_field=caml_string_of_jsbytes("Optional_field"),
     cst_size$2=caml_string_of_jsbytes("size"),
     cst_num_fields=caml_string_of_jsbytes("num_fields"),
     cst_name$1=caml_string_of_jsbytes("name"),
     cst_dyn=caml_string_of_jsbytes("dyn"),
     cst_kind$15=caml_string_of_jsbytes("kind"),
     cst_Dynamic_field=caml_string_of_jsbytes("Dynamic_field"),
     cst_data_kind=caml_string_of_jsbytes("data_kind"),
     cst_anon=caml_string_of_jsbytes("anon"),
     cst_kind$16=caml_string_of_jsbytes("kind"),
     cst_layout$1=caml_string_of_jsbytes("layout"),
     cst_Anonymous_field=caml_string_of_jsbytes("Anonymous_field"),
     cst_named=caml_string_of_jsbytes("named"),
     cst_kind$17=caml_string_of_jsbytes("kind"),
     cst_data_kind$0=caml_string_of_jsbytes("data_kind"),
     cst_layout$2=caml_string_of_jsbytes("layout"),
     cst_name$2=caml_string_of_jsbytes("name"),
     cst_Named_field=caml_string_of_jsbytes("Named_field"),
     cst_schema_field=caml_string_of_jsbytes("schema.field"),
     cst_cases=caml_string_of_jsbytes("cases"),
     cst_size$3=caml_string_of_jsbytes("size"),
     cst_Int_enum=caml_string_of_jsbytes("Int_enum"),
     cst_name$3=caml_string_of_jsbytes("name"),
     cst_fields=caml_string_of_jsbytes("fields"),
     cst_tag=caml_string_of_jsbytes("tag"),
     cst_union_case=caml_string_of_jsbytes("union case"),
     cst_cases$0=caml_string_of_jsbytes("cases"),
     cst_kind$18=caml_string_of_jsbytes("kind"),
     cst_tag_size=caml_string_of_jsbytes("tag_size"),
     cst_Cases=caml_string_of_jsbytes("Cases"),
     cst_fields$0=caml_string_of_jsbytes("fields"),
     cst_Obj=caml_string_of_jsbytes("Obj"),
     cst_encoding=caml_string_of_jsbytes("encoding"),
     cst_description$0=caml_string_of_jsbytes("description"),
     cst_fields$1=caml_string_of_jsbytes("fields"),
     cst_toplevel=caml_string_of_jsbytes("toplevel"),
     cst_Tag=caml_string_of_jsbytes("Tag"),
     cst_padding=caml_string_of_jsbytes("padding"),
     cst_X=caml_string_of_jsbytes("X_"),
     cst$0=caml_string_of_jsbytes(""),
     cst$1=caml_string_of_jsbytes(""),
     z_reference_name=caml_string_of_jsbytes("Z.t"),
     z_reference_description=
      caml_string_of_jsbytes
       ("A variable length sequence of bytes, encoding a Zarith number. Each byte has a running unary size bit: the most significant bit of each byte tells is this is the last byte in the sequence (0) or if there is more to read (1). The second most significant bit of the first byte is reserved for the sign (positive if zero). Size and sign bits ignored, data is then the binary representation of the absolute value of the number in little endian order."),
     z_encoding=[0,[0,[0,caml_string_of_jsbytes("Z.t"),57067359,3],0]],
     n_reference_name=caml_string_of_jsbytes("N.t"),
     n_reference_description=
      caml_string_of_jsbytes
       ("A variable length sequence of bytes, encoding a Zarith number. Each byte has a running unary size bit: the most significant bit of each byte tells is this is the last byte in the sequence (0) or if there is more to read (1). Size bits ignored, data is then the binary representation of the absolute value of the number in little endian order."),
     n_encoding=[0,[0,[0,caml_string_of_jsbytes("N.t"),57067359,3],0]],
     cst_Array_too_long=caml_string_of_jsbytes("Array too long"),
     cst_List_too_long=caml_string_of_jsbytes("List too long"),
     cst_Size_limit_exceeded=caml_string_of_jsbytes("Size limit exceeded"),
     cst_Trailing_zero=caml_string_of_jsbytes("Trailing zero"),
     cst_max$1=caml_string_of_jsbytes("max"),
     cst_v=caml_string_of_jsbytes("v"),
     cst_min$1=caml_string_of_jsbytes("min"),
     cst_Invalid_float=caml_string_of_jsbytes("Invalid float"),
     cst_max$2=caml_string_of_jsbytes("max"),
     cst_v$0=caml_string_of_jsbytes("v"),
     cst_min$2=caml_string_of_jsbytes("min"),
     cst_Invalid_int=caml_string_of_jsbytes("Invalid int"),
     cst_Invalid_size=caml_string_of_jsbytes("Invalid size"),
     cst_Unexpected_tag=caml_string_of_jsbytes("Unexpected tag"),
     cst_No_case_matched=caml_string_of_jsbytes("No case matched"),
     cst_Extra_bytes=caml_string_of_jsbytes("Extra bytes"),
     cst_Not_enough_data=caml_string_of_jsbytes("Not enough data"),
     cst_Data_encoding_Binary_error=
      caml_string_of_jsbytes("Data_encoding__Binary_error.Read_error"),
     cst_Array_too_long$0=caml_string_of_jsbytes("Array too long"),
     cst_List_too_long$0=caml_string_of_jsbytes("List too long"),
     cst_Invalid_natural=caml_string_of_jsbytes("Invalid natural"),
     cst_found=caml_string_of_jsbytes("found"),
     cst_expected=caml_string_of_jsbytes("expected"),
     cst_Invalid_string_length=caml_string_of_jsbytes("Invalid string length"),
     cst_found$0=caml_string_of_jsbytes("found"),
     cst_expected$0=caml_string_of_jsbytes("expected"),
     cst_Invalid_bytes_length=caml_string_of_jsbytes("Invalid bytes length"),
     cst_max$3=caml_string_of_jsbytes("max"),
     cst_v$1=caml_string_of_jsbytes("v"),
     cst_min$3=caml_string_of_jsbytes("min"),
     cst_Invalid_float$0=caml_string_of_jsbytes("Invalid float"),
     cst_max$4=caml_string_of_jsbytes("max"),
     cst_v$2=caml_string_of_jsbytes("v"),
     cst_min$4=caml_string_of_jsbytes("min"),
     cst_Invalid_int$0=caml_string_of_jsbytes("Invalid int"),
     cst_No_case_matched$0=caml_string_of_jsbytes("No case matched"),
     cst_Size_limit_exceeded$0=caml_string_of_jsbytes("Size limit exceeded"),
     cst_Data_encoding_Binary_error$0=
      caml_string_of_jsbytes("Data_encoding__Binary_error.Write_error"),
     cst_Data_encoding_Binary_fixed=
      caml_string_of_jsbytes("Data_encoding.Binary.fixed_length_exn"),
     cst_int8=caml_string_of_jsbytes("int8"),
     cst_uint8=caml_string_of_jsbytes("uint8"),
     cst_int16=caml_string_of_jsbytes("int16"),
     cst_uint16=caml_string_of_jsbytes("uint16"),
     cst_rangedInt=caml_string_of_jsbytes("rangedInt"),
     cst_rangedFloat=caml_string_of_jsbytes("rangedFloat"),
     cst$4=caml_string_of_jsbytes("]"),
     cst$5=caml_string_of_jsbytes("["),
     cst$2=caml_string_of_jsbytes("\n"),
     cst$3=caml_string_of_jsbytes(""),
     cst_negative_natural$0=caml_string_of_jsbytes("negative natural"),
     cst_negative_natural=caml_string_of_jsbytes("negative natural"),
     cst_Data_encoding_Json_Parse_e=
      caml_string_of_jsbytes("Data_encoding__Json.Parse_error"),
     cst_int64=caml_string_of_jsbytes("int64"),
     cst_positive_bignum=caml_string_of_jsbytes("positive_bignum"),
     cst_bignum=caml_string_of_jsbytes("bignum"),
     cst_byte=caml_string_of_jsbytes("byte"),
     cst_invalid_utf8_string=caml_string_of_jsbytes("invalid_utf8_string"),
     cst_unistring=caml_string_of_jsbytes("unistring"),
     cst_Data_encoding_Registration=
      caml_string_of_jsbytes
       ("Data_encoding.Registration.register: non def(in)ed encoding"),
     cst_Data_encoding_Binary_strea=
      caml_string_of_jsbytes("Data_encoding__Binary_stream.Need_more_data"),
     cst_Data_encoding_Binary_read_=
      caml_string_of_jsbytes
       ("Data_encoding.Binary.read_stream: variable encoding"),
     cst_oversized_string$2=caml_string_of_jsbytes("oversized string"),
     cst_oversized_string$1=caml_string_of_jsbytes("oversized string"),
     cst_oversized_string$0=caml_string_of_jsbytes("oversized string"),
     cst_oversized_string=caml_string_of_jsbytes("oversized string"),
     Assert_failure=global_data.Assert_failure,
     Stdlib_list=global_data.Stdlib__list,
     include=global_data.Json_encoding,
     Stdlib=global_data.Stdlib,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Z=global_data.Z,
     Json_repr_bson=global_data.Json_repr_bson,
     Json_repr=global_data.Json_repr,
     Ezjsonm=global_data.Ezjsonm,
     Stdlib_char=global_data.Stdlib__char,
     Uutf=global_data.Uutf,
     Stdlib_int64=global_data.Stdlib__int64,
     Json_schema=global_data.Json_schema,
     Hex=global_data.Hex,
     Stdlib_map=global_data.Stdlib__map,
     Data_encoding=[0];
    caml_register_global(424,Data_encoding,"Data_encoding__");
    var
     _a_=[0,caml_string_of_jsbytes("src/binary_size.ml"),69,2],
     _e_=[0,332360020,0],
     _f_=[0,332360020,0],
     _g_=[0,332360020,0],
     _h_=[0,332360020,0],
     _i_=[0,caml_string_of_jsbytes("src/encoding.ml"),245,8],
     _x_=[0,0],
     _y_=[0,1],
     _z_=[0,919245630],
     _t_=[0,0],
     _u_=[0,0],
     _v_=[0,1],
     _w_=[0,919245630],
     _r_=
      [0,
       [11,
        caml_string_of_jsbytes("The tag "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" appears twice in an union."),0]]],
       caml_string_of_jsbytes("The tag %d appears twice in an union.")],
     _s_=
      [0,
       [11,
        caml_string_of_jsbytes("The tag "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" is invalid."),0]]],
       caml_string_of_jsbytes("The tag %d is invalid.")],
     _k_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Cannot insert potentially zero-sized element in "),
        [2,0,[12,46,0]]],
       caml_string_of_jsbytes
        ("Cannot insert potentially zero-sized element in %s.")],
     _j_=
      [0,
       [11,
        caml_string_of_jsbytes("Cannot insert variable length element in "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (". You should wrap the contents using Data_encoding.dynamic_size."),
          0]]],
       caml_string_of_jsbytes
        ("Cannot insert variable length element in %s. You should wrap the contents using Data_encoding.dynamic_size.")],
     _d_=[0,caml_string_of_jsbytes("src/encoding.ml"),72,8],
     _b_=
      [0,
       [11,
        caml_string_of_jsbytes("Cannot merge two "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (" when the left element is of variable length and the right one of dynamic length. You should use the reverse order, or wrap the second one with Data_encoding.dynamic_size."),
          0]]],
       caml_string_of_jsbytes
        ("Cannot merge two %s when the left element is of variable length and the right one of dynamic length. You should use the reverse order, or wrap the second one with Data_encoding.dynamic_size.")],
     _c_=
      [0,
       [11,
        caml_string_of_jsbytes("Cannot merge two "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (" with variable length. You should wrap one of them with Data_encoding.dynamic_size."),
          0]]],
       caml_string_of_jsbytes
        ("Cannot merge two %s with variable length. You should wrap one of them with Data_encoding.dynamic_size.")],
     _C_=[0,919245630],
     _A_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".v"),[4,0,0,0,0]]],
       caml_string_of_jsbytes("%s.v%d")],
     _B_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" version "),[4,0,0,0,0]]],
       caml_string_of_jsbytes("%s version %d")],
     _a5_=[0,0],
     _a0_=[0,0],
     _a1_=[0,1],
     _a6_=[0,0],
     _aV_=[0,0],
     _aS_=[0,0],
     _aO_=[0,0],
     _aM_=[0,0],
     _aK_=[0,0],
     _aF_=[0,0],
     _aG_=[0,11],
     _aH_=[0,10],
     _aI_=[0,9],
     _aJ_=[0,8],
     _aL_=[0,7],
     _aN_=[0,6],
     _aP_=[0,5],
     _aQ_=[0,4],
     _aR_=[0,3],
     _aT_=[0,2],
     _aU_=[0,1],
     _aW_=[0,0],
     _ay_=[0,[17,3,0],caml_string_of_jsbytes("@\n")],
     _ax_=[0,[15,[15,[15,0]]],caml_string_of_jsbytes("%a%a%a")],
     _aw_=[0,caml_string_of_jsbytes(""),0],
     _az_=[0,[15,[17,3,[15,0]]],caml_string_of_jsbytes("%a@\n%a")],
     _au_=[0,[17,3,0],caml_string_of_jsbytes("@\n")],
     _at_=[0,[15,[15,[15,0]]],caml_string_of_jsbytes("%a%a%a")],
     _av_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _as_=[0,[2,0,[17,3,[17,3,0]]],caml_string_of_jsbytes("%s@\n@\n")],
     _aq_=[0,[17,3,0],caml_string_of_jsbytes("@\n")],
     _ap_=[0,[15,[17,3,[15,0]]],caml_string_of_jsbytes("%a@\n%a")],
     _an_=[0,[15,[12,43,0]],caml_string_of_jsbytes("%a+")],
     _ao_=[0,[12,43,[15,0]],caml_string_of_jsbytes("+%a")],
     _al_=
      [0,
       [12,32,[2,0,[15,[11,caml_string_of_jsbytes(" |"),0]]]],
       caml_string_of_jsbytes(" %s%a |")],
     _am_=[0,[12,124,[15,0]],caml_string_of_jsbytes("|%a")],
     _ar_=
      [0,
       [15,[17,3,[15,[17,3,[15,[17,3,[15,[17,3,[17,3,0]]]]]]]]],
       caml_string_of_jsbytes("%a@\n%a@\n%a@\n%a@\n@\n")],
     _ak_=
      [0,
       [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],[2,0,[17,3,[17,3,0]]]]],
       caml_string_of_jsbytes("%s@ %s@\n@\n")],
     _H_=
      [0,
       [11,caml_string_of_jsbytes("boolean (0 for false, 255 for true)"),0],
       caml_string_of_jsbytes("boolean (0 for false, 255 for true)")],
     _I_=
      [0,
       [11,caml_string_of_jsbytes("double-precision floating-point number"),0],
       caml_string_of_jsbytes("double-precision floating-point number")],
     _J_=
      [0,
       [11,caml_string_of_jsbytes("bytes"),0],
       caml_string_of_jsbytes("bytes")],
     _K_=
      [0,
       [11,caml_string_of_jsbytes("bytes"),0],
       caml_string_of_jsbytes("bytes")],
     _L_=
      [0,
       [11,caml_string_of_jsbytes("padding"),0],
       caml_string_of_jsbytes("padding")],
     _M_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _O_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(" in the range "),
         [4,0,0,0,[11,caml_string_of_jsbytes(" to "),[4,0,0,0,0]]]]],
       caml_string_of_jsbytes("%a in the range %d to %d")],
     _N_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(" in the range "),
         [4,
          0,
          0,
          0,
          [11,
           caml_string_of_jsbytes(" to "),
           [4,
            0,
            0,
            0,
            [11,caml_string_of_jsbytes(" (shifted by "),[4,0,0,0,[12,41,0]]]]]]]],
       caml_string_of_jsbytes("%a in the range %d to %d (shifted by %d)")],
     _P_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("double-precision floating-point number, in the range "),
        [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(" to "),[8,[0,0,0],0,0,0]]]],
       caml_string_of_jsbytes
        ("double-precision floating-point number, in the range %f to %f")],
     _Q_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(" encoding an enumeration (see "),
         [2,0,[12,41,0]]]],
       caml_string_of_jsbytes("%a encoding an enumeration (see %s)")],
     _R_=
      [0,
       [11,caml_string_of_jsbytes("sequence of "),0],
       caml_string_of_jsbytes("sequence of ")],
     _S_=
      [0,
       [11,caml_string_of_jsbytes("at most "),[4,0,0,0,[12,32,0]]],
       caml_string_of_jsbytes("at most %d ")],
     _T_=[0,[12,36,[2,0,0]],caml_string_of_jsbytes("$%s")],
     _U_=[0,[12,36,[2,0,0]],caml_string_of_jsbytes("$%s")],
     _ag_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" (tag "),[4,0,0,0,[12,41,0]]]],
       caml_string_of_jsbytes("%s (tag %d)")],
     _ah_=
      [0,
       [11,caml_string_of_jsbytes("Tag "),[4,0,0,0,0]],
       caml_string_of_jsbytes("Tag %d")],
     _ai_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" ("),
         [15,
          [11,
           caml_string_of_jsbytes(", "),
           [15,[11,caml_string_of_jsbytes(" tag)"),0]]]]]],
       caml_string_of_jsbytes("%s (%a, %a tag)")],
     _aj_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" (Enumeration: "),
         [15,[11,caml_string_of_jsbytes("):"),0]]]],
       caml_string_of_jsbytes("%s (Enumeration: %a):")],
     _X_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Y_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Z_=[0,[15,0],caml_string_of_jsbytes("%a")],
     ___=
      [0,
       [11,caml_string_of_jsbytes('# bytes in field "'),[2,0,[12,34,0]]],
       caml_string_of_jsbytes('# bytes in field "%s"')],
     _ab_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ac_=
      [0,
       [11,caml_string_of_jsbytes("# bytes in next field"),0],
       caml_string_of_jsbytes("# bytes in next field")],
     _$_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aa_=
      [0,
       [11,
        caml_string_of_jsbytes("# bytes in next "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" fields"),0]]],
       caml_string_of_jsbytes("# bytes in next %d fields")],
     _ad_=[0,332360020,1],
     _ae_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _af_=
      [0,
       [11,caml_string_of_jsbytes('? presence of field "'),[2,0,[12,34,0]]],
       caml_string_of_jsbytes('? presence of field "%s"')],
     _W_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _V_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _G_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _D_=
      [0,
       [11,caml_string_of_jsbytes("Determined from data"),0],
       caml_string_of_jsbytes("Determined from data")],
     _E_=
      [0,
       [11,caml_string_of_jsbytes("Variable"),0],
       caml_string_of_jsbytes("Variable")],
     _F_=
      [0,
       [4,0,0,0,[11,caml_string_of_jsbytes(" byte"),[2,0,0]]],
       caml_string_of_jsbytes("%d byte%s")],
     _aD_=[0,caml_string_of_jsbytes("Int32"),-783416530],
     _aE_=[0,caml_string_of_jsbytes("Int64"),-783415859],
     _a__=[0,2],
     _a$_=
      [0,
       [0,caml_string_of_jsbytes("Uint30"),980827863],
       [0,
        [0,caml_string_of_jsbytes("Uint16"),980827423],
        [0,[0,caml_string_of_jsbytes("Uint8"),919245630],0]]],
     _bd_=[0,3],
     _bi_=[0,2],
     _bm_=[0,1],
     _bq_=[0,0],
     _br_=
      [0,
       [0,caml_string_of_jsbytes("Uint16"),980827423],
       [0,[0,caml_string_of_jsbytes("Uint8"),919245630],0]],
     _bv_=[0,2],
     _bC_=[0,1],
     _bG_=[0,0],
     _bI_=[0,[1,[0,332360020,0],0],0],
     _bJ_=[0,[1,[0,332360020,0],0],0],
     _bK_=[0,[1,[0,332360020,0],0],0],
     _bL_=[0,[1,[0,332360020,0],0],0],
     _bM_=[0,815034505],
     _bN_=[0,919245630],
     _bO_=[0,-783416972],
     _bP_=[0,980827423],
     _bQ_=[0,-783416530],
     _bR_=[0,-783415859],
     _bS_=[0,0],
     _dg_=
      [0,
       [11,caml_string_of_jsbytes("Size limit exceeded"),0],
       caml_string_of_jsbytes("Size limit exceeded")],
     _dh_=
      [0,
       [11,caml_string_of_jsbytes("No case matched"),0],
       caml_string_of_jsbytes("No case matched")],
     _di_=
      [0,
       [11,caml_string_of_jsbytes("Negative natural"),0],
       caml_string_of_jsbytes("Negative natural")],
     _dj_=
      [0,
       [11,caml_string_of_jsbytes("List length limit exceeded"),0],
       caml_string_of_jsbytes("List length limit exceeded")],
     _dk_=
      [0,
       [11,caml_string_of_jsbytes("Array length limit exceeded"),0],
       caml_string_of_jsbytes("Array length limit exceeded")],
     _dl_=
      [0,
       [11,
        caml_string_of_jsbytes("Invalid int ("),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" <= "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(" <= "),
            [4,0,0,0,[11,caml_string_of_jsbytes(") "),0]]]]]]],
       caml_string_of_jsbytes("Invalid int (%d <= %d <= %d) ")],
     _dm_=
      [0,
       [11,
        caml_string_of_jsbytes("Invalid float ("),
        [8,
         [0,0,0],
         0,
         0,
         [11,
          caml_string_of_jsbytes(" <= "),
          [8,
           [0,0,0],
           0,
           0,
           [11,
            caml_string_of_jsbytes(" <= "),
            [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") "),0]]]]]]],
       caml_string_of_jsbytes("Invalid float (%f <= %f <= %f) ")],
     _dn_=
      [0,
       [11,
        caml_string_of_jsbytes("Invalid bytes length (expected: "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" ; found "),[4,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes
        ("Invalid bytes length (expected: %d ; found %d)")],
     _do_=
      [0,
       [11,
        caml_string_of_jsbytes("Invalid string length (expected: "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" ; found "),[4,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes
        ("Invalid string length (expected: %d ; found %d)")],
     _de_=[0,0],
     _da_=[0,0],
     _cS_=[0,0],
     _cO_=[0,0],
     _cK_=[0,0],
     _cx_=
      [0,
       [11,caml_string_of_jsbytes("Not enough data"),0],
       caml_string_of_jsbytes("Not enough data")],
     _cy_=
      [0,
       [11,caml_string_of_jsbytes("Extra bytes"),0],
       caml_string_of_jsbytes("Extra bytes")],
     _cz_=
      [0,
       [11,caml_string_of_jsbytes("No case matched"),0],
       caml_string_of_jsbytes("No case matched")],
     _cA_=
      [0,
       [11,caml_string_of_jsbytes("Trailing zero in Z"),0],
       caml_string_of_jsbytes("Trailing zero in Z")],
     _cB_=
      [0,
       [11,caml_string_of_jsbytes("Size limit exceeded"),0],
       caml_string_of_jsbytes("Size limit exceeded")],
     _cC_=
      [0,
       [11,caml_string_of_jsbytes("List length limit exceeded"),0],
       caml_string_of_jsbytes("List length limit exceeded")],
     _cD_=
      [0,
       [11,caml_string_of_jsbytes("Array length limit exceeded"),0],
       caml_string_of_jsbytes("Array length limit exceeded")],
     _cE_=
      [0,
       [11,caml_string_of_jsbytes("Unexpected tag "),[4,0,0,0,0]],
       caml_string_of_jsbytes("Unexpected tag %d")],
     _cF_=
      [0,
       [11,caml_string_of_jsbytes("Invalid size "),[4,0,0,0,0]],
       caml_string_of_jsbytes("Invalid size %d")],
     _cG_=
      [0,
       [11,
        caml_string_of_jsbytes("Invalid int ("),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" <= "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(" <= "),
            [4,0,0,0,[11,caml_string_of_jsbytes(") "),0]]]]]]],
       caml_string_of_jsbytes("Invalid int (%d <= %d <= %d) ")],
     _cH_=
      [0,
       [11,
        caml_string_of_jsbytes("Invalid float ("),
        [8,
         [0,0,0],
         0,
         0,
         [11,
          caml_string_of_jsbytes(" <= "),
          [8,
           [0,0,0],
           0,
           0,
           [11,
            caml_string_of_jsbytes(" <= "),
            [8,[0,0,0],0,0,[11,caml_string_of_jsbytes(") "),0]]]]]]],
       caml_string_of_jsbytes("Invalid float (%f <= %f <= %f) ")],
     _cv_=[0,0],
     _cr_=[0,0],
     _cn_=[0,0],
     _b7_=[0,0],
     _b3_=[0,0],
     _bZ_=[0,0],
     _bV_=[0,0],
     _bW_=[0,10],
     _b0_=[0,9],
     _b4_=[0,8],
     _b8_=[0,7],
     _ca_=[0,6],
     _ce_=[0,5],
     _ch_=[0,4],
     _ck_=[0,3],
     _co_=[0,2],
     _cs_=[0,1],
     _cw_=[0,0],
     _cL_=[0,8],
     _cP_=[0,7],
     _cT_=[0,6],
     _cX_=[0,5],
     _c1_=[0,4],
     _c5_=[0,3],
     _c9_=[0,2],
     _db_=[0,1],
     _df_=[0,0],
     _dr_=[0,caml_string_of_jsbytes("src/binary_reader.ml"),324,18],
     _du_=[0,caml_string_of_jsbytes("src/binary_reader.ml"),355,6],
     _dt_=[0,caml_string_of_jsbytes("src/binary_reader.ml"),358,6],
     _ds_=[0,caml_string_of_jsbytes("src/binary_reader.ml"),361,6],
     _dB_=[0,caml_string_of_jsbytes("src/binary_writer.ml"),355,47],
     _ee_=
      [0,
       [11,caml_string_of_jsbytes("string (len "),[4,0,0,0,[12,41,0]]],
       caml_string_of_jsbytes("string (len %d)")],
     _ef_=
      [0,
       [11,caml_string_of_jsbytes("string (len "),[4,0,0,0,[12,41,0]]],
       caml_string_of_jsbytes("string (len %d)")],
     _ec_=
      [0,
       [11,caml_string_of_jsbytes("string (len "),[4,0,0,0,[12,41,0]]],
       caml_string_of_jsbytes("string (len %d)")],
     _ed_=
      [0,
       [11,caml_string_of_jsbytes("string (len "),[4,0,0,0,[12,41,0]]],
       caml_string_of_jsbytes("string (len %d)")],
     _er_=[1,caml_string_of_jsbytes("Malformed value")],
     _eq_=[0,[15,[2,0,0]],caml_string_of_jsbytes("%a%s")],
     _dH_=
      [0,caml_string_of_jsbytes("Decimal representation of 64 bit integers")],
     _dI_=[0,caml_string_of_jsbytes("64 bit integers")],
     _dO_=
      [0,
       caml_string_of_jsbytes
        ("Decimal representation of a positive big number")],
     _dP_=[0,caml_string_of_jsbytes("Positive big number")],
     _dR_=[0,caml_string_of_jsbytes("Decimal representation of a big number")],
     _dS_=[0,caml_string_of_jsbytes("Big number")],
     _dT_=
      [0,0,0,0,0,[7,[0,[0,caml_string_of_jsbytes("^[a-zA-Z0-9]+$")],0,0]],0,0],
     _ea_=
      [0,
       caml_string_of_jsbytes
        ("Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.")],
     _eb_=[0,caml_string_of_jsbytes("Universal string representation")],
     _ey_=
      [0,
       [11,
        caml_string_of_jsbytes("Encoding "),
        [2,0,[11,caml_string_of_jsbytes(" previously registered"),0]]],
       caml_string_of_jsbytes("Encoding %s previously registered")],
     _ew_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ex_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _eu_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ev_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ez_=[0,caml_string_of_jsbytes("src/binary_stream.ml"),60,2],
     _eF_=[0,caml_string_of_jsbytes("src/binary_stream_reader.ml"),425,18],
     _eD_=[0,0],
     _eE_=[2,1],
     _eC_=[0,caml_string_of_jsbytes("src/binary_stream_reader.ml"),271,2],
     _eG_=[0,caml_string_of_jsbytes("src/binary_stream_reader.ml"),447,6],
     _eK_=[0,0],
     _eL_=[0,caml_string_of_jsbytes("src/binary_stream_reader.ml"),475,8],
     _eJ_=[0,0],
     _eM_=[0,caml_string_of_jsbytes("src/binary_stream_reader.ml"),471,8],
     _eI_=[2,0],
     _eH_=[0,caml_string_of_jsbytes("src/binary_stream_reader.ml"),478,6],
     _eA_=[2,2],
     bool=1,
     int8=1,
     uint8=1,
     char$0=1,
     int16=2,
     uint16=2,
     uint30=4,
     uint32=4,
     uint64=8,
     int31=4,
     int32=4,
     int64=8,
     float$0=8;
    function tag_size(param){return 980827423 <= param?uint16:uint8}
    function unsigned_range_to_size(max)
     {if(0 <= max)return 255 < max?65535 < max?980827863:980827423:919245630;
      throw [0,Assert_failure,_a_]}
    function integer_to_size(param)
     {return 815034505 <= param
              ?980827423 <= param
                ?980827863 <= param?uint30:uint16
                :919245630 <= param?uint8:int8
              :-783416531 <= param?int31:int16}
    function max_int(param)
     {if(815034505 <= param)
       {if(! (980827423 <= param))return 919245630 <= param?255:127;
        if(! (980827863 <= param))return 65535}
      else
       if(! (-783416531 <= param))return 32767;
      return 1073741823}
    function min_int(param)
     {return 815034505 <= param
              ?919245630 <= param?0:-128
              :-783416531 <= param?-1073741824:-32768}
    function range_to_size(minimum,maximum)
     {if(0 <= minimum)return unsigned_range_to_size(maximum - minimum | 0);
      if(-128 <= minimum && ! (127 < maximum))return 815034505;
      if(-32768 <= minimum && ! (32767 < maximum))return -783416972;
      return -783416531}
    function enum_size(arr){return unsigned_range_to_size(arr.length - 1)}
    var
     Data_encoding_Binary_size=
      [0,
       bool,
       int8,
       uint8,
       char$0,
       int16,
       uint16,
       uint30,
       uint32,
       uint64,
       int31,
       int32,
       int64,
       float$0,
       tag_size,
       integer_to_size,
       min_int,
       max_int,
       range_to_size,
       unsigned_range_to_size,
       enum_size];
    caml_register_global
     (426,Data_encoding_Binary_size,"Data_encoding__Binary_size");
    function combine(name,k1,match)
     {var switch$0=0;
      if(typeof k1 === "number")
       {if(57067359 <= k1)
         {if(typeof match === "number")
           {if(57067359 === match)switch$0 = 1}
          else
           if(332360020 === match[1])switch$0 = 1}
        else
         if(typeof match === "number")
          return 57067359 <= match
                  ?caml_call3(Stdlib_printf[9],Stdlib[1],_b_,name)
                  :caml_call3(Stdlib_printf[9],Stdlib[1],_c_,name)}
      else
       {var _nk_=k1[2];
        if(typeof match === "number")
         {if(57067359 === match)switch$0 = 1}
        else
         if(332360020 === match[1])
          {var n2=match[2];return [0,332360020,_nk_ + n2 | 0]}}
      return switch$0?57067359:-1027682724}
    function merge(k1,match)
     {var switch$0=0;
      if(typeof k1 === "number")
       {if(57067359 <= k1)
         {if(typeof match === "number")
           {if(57067359 === match)switch$0 = 1}
          else
           if(332360020 === match[1])switch$0 = 1}
        else
         if(typeof match === "number")57067359 <= match}
      else
       {var _nj_=k1[2];
        if(typeof match === "number")
         {if(57067359 === match)switch$0 = 1}
        else
         if(332360020 === match[1])
          {var n2=match[2];return _nj_ === n2?[0,332360020,_nj_]:57067359}}
      return switch$0?57067359:-1027682724}
    function merge_list(sz,param)
     {if(param)
       {var ks=param[2],k=param[1],k$0=caml_call3(Stdlib_list[22],merge,k,ks);
        if(typeof k$0 !== "number" && 332360020 === k$0[1])
         {var n=k$0[2];return [0,332360020,n + tag_size(sz) | 0]}
        return k$0}
      throw [0,Assert_failure,_d_]}
    var Kind=[0,combine,merge,merge_list];
    function classify$0(counter,e)
     {var _ni_=e[1];
      if(counter < 50)
       {var counter$0=counter + 1 | 0;return classify_desc$0(counter$0,_ni_)}
      return caml_trampoline_return(classify_desc$0,[0,_ni_])}
    function classify_desc$0(counter,e)
     {if(typeof e === "number")
       switch(e)
        {case 0:return _e_;
         case 1:return _f_;
         case 2:return _g_;
         case 3:return [0,332360020,bool];
         case 4:return [0,332360020,int8];
         case 5:return [0,332360020,uint8];
         case 6:return [0,332360020,int16];
         case 7:return [0,332360020,uint16];
         case 8:return [0,332360020,int31];
         case 9:return [0,332360020,int32];
         case 10:return [0,332360020,int64];
         case 11:return 57067359;
         case 12:return 57067359;
         default:return [0,332360020,float$0]}
      else
       switch(e[0])
        {case 0:return _h_;
         case 1:
          var maximum=e[2],minimum=e[1];
          return [0,332360020,integer_to_size(range_to_size(minimum,maximum))];
         case 2:return [0,332360020,float$0];
         case 3:var kind=e[1];return kind;
         case 4:var kind$0=e[1];return kind$0;
         case 5:
          var
           match=e[1],
           encoding=match[1],
           n=e[2],
           match$0=classify_desc(encoding);
          if(typeof match$0 !== "number" && 332360020 === match$0[1])
           {var m=match$0[2];return [0,332360020,n + m | 0]}
          throw [0,Assert_failure,_i_];
         case 6:
          var cases=e[2];
          return [0,332360020,integer_to_size(enum_size(cases))];
         case 7:return -1027682724;
         case 8:return -1027682724;
         case 9:
          var _ng_=e[1];
          switch(_ng_[0])
           {case 0:
             var encoding$0=_ng_[2];
             if(counter < 50)
              {var counter$0=counter + 1 | 0;
               return classify$0(counter$0,encoding$0)}
             return caml_trampoline_return(classify$0,[0,encoding$0]);
            case 1:var kind$1=_ng_[2];return kind$1;
            default:
             var encoding$1=_ng_[2];
             if(counter < 50)
              {var counter$1=counter + 1 | 0;
               return classify$0(counter$1,encoding$1)}
             return caml_trampoline_return(classify$0,[0,encoding$1])}
         case 10:var kind$2=e[1];return kind$2;
         case 11:
          var encoding$2=e[1];
          if(counter < 50)
           {var counter$2=counter + 1 | 0;
            return classify$0(counter$2,encoding$2)}
          return caml_trampoline_return(classify$0,[0,encoding$2]);
         case 12:var kind$3=e[1];return kind$3;
         case 13:var kind$4=e[1];return kind$4;
         case 14:var kind$5=e[1];return kind$5;
         case 15:
          var encoding$3=e[3];
          if(counter < 50)
           {var counter$3=counter + 1 | 0;
            return classify$0(counter$3,encoding$3)}
          return caml_trampoline_return(classify$0,[0,encoding$3]);
         case 16:
          var encoding$4=e[4];
          if(counter < 50)
           {var counter$4=counter + 1 | 0;
            return classify$0(counter$4,encoding$4)}
          return caml_trampoline_return(classify$0,[0,encoding$4]);
         case 17:
          var encoding$5=e[1];
          if(counter < 50)
           {var counter$5=counter + 1 | 0;
            return classify$0(counter$5,encoding$5)}
          return caml_trampoline_return(classify$0,[0,encoding$5]);
         case 18:return 57067359;
         case 19:
          var encoding$6=e[2];
          if(counter < 50)
           {var counter$6=counter + 1 | 0;
            return classify$0(counter$6,encoding$6)}
          return caml_trampoline_return(classify$0,[0,encoding$6]);
         default:
          var f=e[1],_nh_=caml_call1(f,0);
          if(counter < 50)
           {var counter$7=counter + 1 | 0;return classify$0(counter$7,_nh_)}
          return caml_trampoline_return(classify$0,[0,_nh_])}}
    function classify(e){return caml_trampoline(classify$0(0,e))}
    function classify_desc(e){return caml_trampoline(classify_desc$0(0,e))}
    function make(json_encoding,encoding){return [0,encoding,json_encoding]}
    function string(n)
     {if(n <= 0)caml_call1(Stdlib[1],cst_Cannot_create_a_string_enc);
      var eta=[4,[0,332360020,n]];
      return [0,eta,0]}
    function bytes(n)
     {if(n <= 0)caml_call1(Stdlib[1],cst_Cannot_create_a_byte_encod);
      var eta=[3,[0,332360020,n]];
      return [0,eta,0]}
    function add_padding(e,n)
     {if(n <= 0)caml_call1(Stdlib[1],cst_Cannot_create_a_padding_of);
      var match=classify(e);
      if(typeof match !== "number" && 332360020 === match[1])
       {var eta=[5,e,n];return [0,eta,0]}
      return caml_call1(Stdlib[1],cst_Cannot_pad_non_fixed_size_)}
    var Fixed=[0,string,bytes,add_padding];
    function is_zeroable(e)
     {var e$0=e;
      for(;;)
       {var _nc_=e$0[1];
        if(typeof _nc_ === "number")
         switch(_nc_)
          {case 0:return 1;
           case 1:return 1;
           case 2:return 1;
           case 3:return 0;
           case 4:return 0;
           case 5:return 0;
           case 6:return 0;
           case 7:return 0;
           case 8:return 0;
           case 9:return 0;
           case 10:return 0;
           case 11:return 0;
           case 12:return 0;
           default:return 0}
        else
         switch(_nc_[0])
          {case 0:return 1;
           case 1:return 0;
           case 2:return 0;
           case 3:return 0;
           case 4:return 0;
           case 5:return 0;
           case 6:return 0;
           case 7:return 1;
           case 8:return 1;
           case 9:
            var _nd_=_nc_[1];
            switch(_nd_[0])
             {case 0:var e$1=_nd_[2],e$0=e$1;continue;
              case 1:return -1027682724 === _nd_[2]?1:0;
              default:var e$2=_nd_[2],e$0=e$2;continue}
           case 10:
            var right=_nc_[3],left=_nc_[2],_ne_=is_zeroable(left);
            if(_ne_){var e$0=right;continue}
            return _ne_;
           case 11:var e$3=_nc_[1],e$0=e$3;continue;
           case 12:
            var right$0=_nc_[3],left$0=_nc_[2],_nf_=is_zeroable(left$0);
            if(_nf_){var e$0=right$0;continue}
            return _nf_;
           case 13:return 0;
           case 14:
            if(57067359 <= _nc_[1])return 0;
            var fix=_nc_[5],e$4=caml_call1(fix,e$0),e$0=e$4;
            continue;
           case 15:var e$5=_nc_[3],e$0=e$5;continue;
           case 16:var e$6=_nc_[4],e$0=e$6;continue;
           case 17:var e$7=_nc_[1],e$0=e$7;continue;
           case 18:return 0;
           case 19:var e$8=_nc_[2],e$0=e$8;continue;
           default:var f=_nc_[1],e$9=caml_call1(f,0),e$0=e$9;continue}}}
    var string$0=[0,eta,0],bytes$0=[0,eta$0,0];
    function check_not_variable(name,e)
     {var match=classify(e);
      if(typeof match === "number" && ! (57067359 <= match))
       return caml_call3(Stdlib_printf[9],Stdlib[1],_j_,name);
      return 0}
    function check_not_zeroable(name,e)
     {return is_zeroable(e)?caml_call3(Stdlib_printf[9],Stdlib[1],_k_,name):0}
    function array(match,e)
     {check_not_variable(cst_an_array,e);
      check_not_zeroable(cst_an_array$0,e);
      var eta=[7,match,e],encoding=[0,eta,0],_nb_=classify(e);
      if(typeof _nb_ !== "number" && 332360020 === _nb_[1] && match)
       {var
         max_length=match[1],
         n=_nb_[2],
         limit=caml_mul(n,max_length),
         eta$0=[19,limit,encoding];
        return [0,eta$0,0]}
      return encoding}
    function list(match,e)
     {check_not_variable(cst_a_list,e);
      check_not_zeroable(cst_a_list$0,e);
      var eta=[8,match,e],encoding=[0,eta,0],_na_=classify(e);
      if(typeof _na_ !== "number" && 332360020 === _na_[1] && match)
       {var
         max_length=match[1],
         n=_na_[2],
         limit=caml_mul(n,max_length),
         eta$0=[19,limit,encoding];
        return [0,eta$0,0]}
      return encoding}
    function dynamic_size(opt,e)
     {if(opt)var sth=opt[1],kind=sth;else var kind=980827863;
      var eta=[18,kind,e];
      return [0,eta,0]}
    function check_size(limit,encoding)
     {var eta=[19,limit,encoding];return [0,eta,0]}
    function delayed(f){var eta=[20,f];return [0,eta,0]}
    var null$0=[0,0,0],empty=[0,1,0],unit=[0,2,0];
    function constant(s){var eta=[0,s];return [0,eta,0]}
    var
     bool$0=[0,3,0],
     int8$0=[0,4,0],
     uint8$0=[0,5,0],
     int16$0=[0,6,0],
     uint16$0=[0,7,0],
     int31$0=[0,8,0],
     int32$0=[0,9,0];
    function ranged_int(minimum,maximum)
     {var
       minimum$0=caml_call2(Stdlib[16],minimum,maximum),
       maximum$0=caml_call2(Stdlib[17],minimum,maximum),
       _m__=minimum$0 < -1073741824?1:0,
       _m$_=_m__ || (1073741823 < maximum$0?1:0);
      if(_m$_)caml_call1(Stdlib[1],cst_Data_encoding_ranged_int);
      var eta=[1,minimum$0,maximum$0];
      return [0,eta,0]}
    function ranged_float(minimum,maximum)
     {var
       minimum$0=caml_call2(Stdlib[16],minimum,maximum),
       maximum$0=caml_call2(Stdlib[17],minimum,maximum),
       eta=[2,minimum$0,maximum$0];
      return [0,eta,0]}
    var
     int64$0=[0,10,0],
     n=[0,11,0],
     z=[0,12,0],
     float$1=[0,13,0],
     string$1=dynamic_size(0,string$0),
     bytes$1=dynamic_size(0,bytes$0);
    function array$0(max_length,e){return dynamic_size(0,array(max_length,e))}
    function list$0(max_length,e){return dynamic_size(0,list(max_length,e))}
    function string_enum(cases)
     {if(cases)
       {if(cases[2])
         {var
           _m6_=function(_m9_){return _m9_[2]},
           _m7_=caml_call2(Stdlib_list[17],_m6_,cases),
           arr=caml_call1(Stdlib_array[12],_m7_),
           tbl=caml_call2(Stdlib_hashtbl[1],0,arr.length - 1),
           _m8_=
            function(ind,param)
             {var a=param[2],str=param[1];
              return caml_call3(Stdlib_hashtbl[5],tbl,a,[0,str,ind])};
          caml_call2(Stdlib_list[16],_m8_,cases);
          var eta=[6,tbl,arr];
          return [0,eta,0]}
        return caml_call1(Stdlib[1],cst_data_encoding_string_enum_)}
      return caml_call1(Stdlib[1],cst_data_encoding_string_enum_$0)}
    function conv(proj,inj,schema,encoding)
     {var eta=[15,proj,inj,encoding,schema];return [0,eta,0]}
    function def(id,title,description,encoding)
     {var eta=[16,id,title,description,encoding];return [0,eta,0]}
    function req(title,description,n,t){return [0,n,t,title,description]}
    function opt(title,description,n,encoding)
     {var match=classify(encoding),switch$0=0;
      if(typeof match === "number" && ! (57067359 <= match))
       {var kind=-1027682724;switch$0 = 1}
      if(! switch$0)var kind=57067359;
      return [1,n,kind,encoding,title,description]}
    function varopt(title,description,n,encoding)
     {return [1,n,-1027682724,encoding,title,description]}
    function dft(title,description,n,t,d){return [2,n,t,d,title,description]}
    function raw_splitted(json,binary)
     {var eta=[17,binary,json,0,0];return [0,eta,0]}
    function is_obj(e)
     {var e$0=e;
      for(;;)
       {var _m4_=e$0[1];
        if(typeof _m4_ === "number")
         switch(_m4_){case 1:return 1;case 2:return 1}
        else
         switch(_m4_[0])
          {case 9:return 1;
           case 10:return 1;
           case 13:
            var
             cases=_m4_[3],
             _m5_=function(param){var e=param[3];return is_obj(e)};
            return caml_call2(Stdlib_list[29],_m5_,cases);
           case 14:var fix=_m4_[5],e$1=caml_call1(fix,e$0),e$0=e$1;continue;
           case 15:var e$2=_m4_[3],e$0=e$2;continue;
           case 16:var e$3=_m4_[4],e$0=e$3;continue;
           case 17:var is_obj$0=_m4_[3];return is_obj$0;
           case 18:var e$4=_m4_[2],e$0=e$4;continue;
           case 20:var f=_m4_[1],e$5=caml_call1(f,0),e$0=e$5;continue
           }
        return 0}}
    function is_tup(e)
     {var e$0=e;
      for(;;)
       {var _m2_=e$0[1];
        if(typeof _m2_ !== "number")
         switch(_m2_[0])
          {case 11:return 1;
           case 12:return 1;
           case 13:
            var
             cases=_m2_[3],
             _m3_=function(param){var e=param[3];return is_tup(e)};
            return caml_call2(Stdlib_list[29],_m3_,cases);
           case 14:var fix=_m2_[5],e$1=caml_call1(fix,e$0),e$0=e$1;continue;
           case 15:var e$2=_m2_[3],e$0=e$2;continue;
           case 16:var e$3=_m2_[4],e$0=e$3;continue;
           case 17:var is_tup$0=_m2_[4];return is_tup$0;
           case 18:var e$4=_m2_[2],e$0=e$4;continue;
           case 20:var f=_m2_[1],e$5=caml_call1(f,0),e$0=e$5;continue
           }
        return 0}}
    function raw_merge_objs(left,right)
     {var
       _m0_=classify(right),
       _m1_=classify(left),
       kind=caml_call3(Kind[1],cst_objects,_m1_,_m0_),
       eta=[10,kind,left,right];
      return [0,eta,0]}
    function obj1(f1){var eta=[9,f1];return [0,eta,0]}
    function obj2(f2,f1)
     {var _mZ_=obj1(f1);return raw_merge_objs(obj1(f2),_mZ_)}
    function _l_(f3,f2,f1)
     {var _mY_=obj2(f2,f1);return raw_merge_objs(obj1(f3),_mY_)}
    function _m_(f4,f3,f2,f1)
     {var _mX_=obj2(f2,f1);return raw_merge_objs(obj2(f4,f3),_mX_)}
    function _n_(f8,f7,f6,f5,f4,f3,f2,f1)
     {var _mW_=_m_(f4,f3,f2,f1);return raw_merge_objs(_m_(f8,f7,f6,f5),_mW_)}
    function merge_objs(o1,o2)
     {if(is_obj(o1) && is_obj(o2))return raw_merge_objs(o1,o2);
      return caml_call1(Stdlib[1],cst_Json_encoding_merge_objs)}
    function raw_merge_tups(left,right)
     {var
       _mU_=classify(right),
       _mV_=classify(left),
       kind=caml_call3(Kind[1],cst_tuples,_mV_,_mU_),
       eta=[12,kind,left,right];
      return [0,eta,0]}
    function tup1(e1){var eta=[11,e1];return [0,eta,0]}
    function tup2(e2,e1)
     {var _mT_=tup1(e1);return raw_merge_tups(tup1(e2),_mT_)}
    function _o_(e3,e2,e1)
     {var _mS_=tup2(e2,e1);return raw_merge_tups(tup1(e3),_mS_)}
    function _p_(e4,e3,e2,e1)
     {var _mR_=tup2(e2,e1);return raw_merge_tups(tup2(e4,e3),_mR_)}
    function _q_(e8,e7,e6,e5,e4,e3,e2,e1)
     {var _mQ_=_p_(e4,e3,e2,e1);return raw_merge_tups(_p_(e8,e7,e6,e5),_mQ_)}
    function merge_tups(t1,t2)
     {if(is_tup(t1) && is_tup(t2))return raw_merge_tups(t1,t2);
      return caml_call1(Stdlib[1],cst_Tezos_serial_Encoding_merg)}
    function conv3(ty)
     {var _mO_=0;
      function _mP_(param)
       {var match=param[2],a=match[2],b=match[1],c=param[1];return [0,c,b,a]}
      return conv
              (function(param)
                {var a=param[3],b=param[2],c=param[1];return [0,c,[0,b,a]]},
               _mP_,
               _mO_,
               ty)}
    function obj3(f3,f2,f1){return conv3(_l_(f3,f2,f1))}
    function tup3(f3,f2,f1){return conv3(_o_(f3,f2,f1))}
    function conv4(ty)
     {var _mL_=0;
      function _mM_(param)
       {var
         _mN_=param[2],
         a=_mN_[2],
         b=_mN_[1],
         match=param[1],
         c=match[2],
         d=match[1];
        return [0,d,c,b,a]}
      return conv
              (function(param)
                {var a=param[4],b=param[3],c=param[2],d=param[1];
                 return [0,[0,d,c],[0,b,a]]},
               _mM_,
               _mL_,
               ty)}
    function obj4(f4,f3,f2,f1){return conv4(_m_(f4,f3,f2,f1))}
    function tup4(f4,f3,f2,f1){return conv4(_p_(f4,f3,f2,f1))}
    function conv5(ty)
     {var _mH_=0;
      function _mI_(param)
       {var
         _mJ_=param[2],
         _mK_=_mJ_[2],
         a=_mK_[2],
         b=_mK_[1],
         match=_mJ_[1],
         c=match[2],
         d=match[1],
         e=param[1];
        return [0,e,d,c,b,a]}
      return conv
              (function(param)
                {var a=param[5],b=param[4],c=param[3],d=param[2],e=param[1];
                 return [0,e,[0,[0,d,c],[0,b,a]]]},
               _mI_,
               _mH_,
               ty)}
    function obj5(f5,f4,f3,f2,f1)
     {var _mG_=_m_(f4,f3,f2,f1);return conv5(raw_merge_objs(obj1(f5),_mG_))}
    function tup5(f5,f4,f3,f2,f1)
     {var _mF_=_p_(f4,f3,f2,f1);return conv5(raw_merge_tups(tup1(f5),_mF_))}
    function conv6(ty)
     {var _mA_=0;
      function _mB_(param)
       {var
         _mC_=param[2],
         _mD_=_mC_[2],
         a=_mD_[2],
         b=_mD_[1],
         _mE_=_mC_[1],
         c=_mE_[2],
         d=_mE_[1],
         match=param[1],
         e=match[2],
         f=match[1];
        return [0,f,e,d,c,b,a]}
      return conv
              (function(param)
                {var
                  a=param[6],
                  b=param[5],
                  c=param[4],
                  d=param[3],
                  e=param[2],
                  f=param[1];
                 return [0,[0,f,e],[0,[0,d,c],[0,b,a]]]},
               _mB_,
               _mA_,
               ty)}
    function obj6(f6,f5,f4,f3,f2,f1)
     {var _mz_=_m_(f4,f3,f2,f1);
      return conv6(raw_merge_objs(obj2(f6,f5),_mz_))}
    function tup6(f6,f5,f4,f3,f2,f1)
     {var _my_=_p_(f4,f3,f2,f1);
      return conv6(raw_merge_tups(tup2(f6,f5),_my_))}
    function conv7(ty)
     {var _ms_=0;
      function _mt_(param)
       {var
         _mu_=param[2],
         _mv_=_mu_[2],
         a=_mv_[2],
         b=_mv_[1],
         _mw_=_mu_[1],
         c=_mw_[2],
         d=_mw_[1],
         _mx_=param[1],
         match=_mx_[2],
         e=match[2],
         f=match[1],
         g=_mx_[1];
        return [0,g,f,e,d,c,b,a]}
      return conv
              (function(param)
                {var
                  a=param[7],
                  b=param[6],
                  c=param[5],
                  d=param[4],
                  e=param[3],
                  f=param[2],
                  g=param[1];
                 return [0,[0,g,[0,f,e]],[0,[0,d,c],[0,b,a]]]},
               _mt_,
               _ms_,
               ty)}
    function obj7(f7,f6,f5,f4,f3,f2,f1)
     {var _mr_=_m_(f4,f3,f2,f1);
      return conv7(raw_merge_objs(_l_(f7,f6,f5),_mr_))}
    function tup7(f7,f6,f5,f4,f3,f2,f1)
     {var _mq_=_p_(f4,f3,f2,f1);
      return conv7(raw_merge_tups(_o_(f7,f6,f5),_mq_))}
    function conv8(ty)
     {var _mj_=0;
      function _mk_(param)
       {var
         _ml_=param[2],
         _mm_=_ml_[2],
         a=_mm_[2],
         b=_mm_[1],
         _mn_=_ml_[1],
         c=_mn_[2],
         d=_mn_[1],
         _mo_=param[1],
         _mp_=_mo_[2],
         e=_mp_[2],
         f=_mp_[1],
         match=_mo_[1],
         g=match[2],
         h=match[1];
        return [0,h,g,f,e,d,c,b,a]}
      return conv
              (function(param)
                {var
                  a=param[8],
                  b=param[7],
                  c=param[6],
                  d=param[5],
                  e=param[4],
                  f=param[3],
                  g=param[2],
                  h=param[1];
                 return [0,[0,[0,h,g],[0,f,e]],[0,[0,d,c],[0,b,a]]]},
               _mk_,
               _mj_,
               ty)}
    function obj8(f8,f7,f6,f5,f4,f3,f2,f1)
     {return conv8(_n_(f8,f7,f6,f5,f4,f3,f2,f1))}
    function tup8(f8,f7,f6,f5,f4,f3,f2,f1)
     {return conv8(_q_(f8,f7,f6,f5,f4,f3,f2,f1))}
    function conv9(ty)
     {var _mb_=0;
      function _mc_(param)
       {var
         _md_=param[2],
         _me_=_md_[2],
         _mf_=_me_[2],
         a=_mf_[2],
         b=_mf_[1],
         _mg_=_me_[1],
         c=_mg_[2],
         d=_mg_[1],
         _mh_=_md_[1],
         _mi_=_mh_[2],
         e=_mi_[2],
         f=_mi_[1],
         match=_mh_[1],
         g=match[2],
         h=match[1],
         i=param[1];
        return [0,i,h,g,f,e,d,c,b,a]}
      return conv
              (function(param)
                {var
                  a=param[9],
                  b=param[8],
                  c=param[7],
                  d=param[6],
                  e=param[5],
                  f=param[4],
                  g=param[3],
                  h=param[2],
                  i=param[1];
                 return [0,i,[0,[0,[0,h,g],[0,f,e]],[0,[0,d,c],[0,b,a]]]]},
               _mc_,
               _mb_,
               ty)}
    function obj9(f9,f8,f7,f6,f5,f4,f3,f2,f1)
     {var _ma_=_n_(f8,f7,f6,f5,f4,f3,f2,f1);
      return conv9(raw_merge_objs(obj1(f9),_ma_))}
    function tup9(f9,f8,f7,f6,f5,f4,f3,f2,f1)
     {var _l$_=_q_(f8,f7,f6,f5,f4,f3,f2,f1);
      return conv9(raw_merge_tups(tup1(f9),_l$_))}
    function conv10(ty)
     {var _l2_=0;
      function _l3_(param)
       {var
         _l4_=param[2],
         _l5_=_l4_[2],
         _l6_=_l5_[2],
         a=_l6_[2],
         b=_l6_[1],
         _l7_=_l5_[1],
         c=_l7_[2],
         d=_l7_[1],
         _l8_=_l4_[1],
         _l9_=_l8_[2],
         e=_l9_[2],
         f=_l9_[1],
         _l__=_l8_[1],
         g=_l__[2],
         h=_l__[1],
         match=param[1],
         i=match[2],
         j=match[1];
        return [0,j,i,h,g,f,e,d,c,b,a]}
      return conv
              (function(param)
                {var
                  a=param[10],
                  b=param[9],
                  c=param[8],
                  d=param[7],
                  e=param[6],
                  f=param[5],
                  g=param[4],
                  h=param[3],
                  i=param[2],
                  j=param[1];
                 return [0,
                         [0,j,i],
                         [0,[0,[0,h,g],[0,f,e]],[0,[0,d,c],[0,b,a]]]]},
               _l3_,
               _l2_,
               ty)}
    function obj10(f10,f9,f8,f7,f6,f5,f4,f3,f2,f1)
     {var _l1_=_n_(f8,f7,f6,f5,f4,f3,f2,f1);
      return conv10(raw_merge_objs(obj2(f10,f9),_l1_))}
    function tup10(f10,f9,f8,f7,f6,f5,f4,f3,f2,f1)
     {var _l0_=_q_(f8,f7,f6,f5,f4,f3,f2,f1);
      return conv10(raw_merge_tups(tup2(f10,f9),_l0_))}
    function union(opt,cases)
     {if(opt)var sth=opt[1],tag_size=sth;else var tag_size=919245630;
      if(0 === cases)caml_call1(Stdlib[1],cst_Data_encoding_union_empty_);
      var max_tag=980827423 <= tag_size?65536:256,_lV_=0;
      function _lW_(others,param)
       {var tag=param[6];
        if(tag)
         {var tag$0=tag[1];
          if(caml_call2(Stdlib_list[33],tag$0,others))
           caml_call3(Stdlib_format[134],Stdlib[1],_r_,tag$0);
          var _lY_=tag$0 < 0?1:0,_lZ_=_lY_ || (max_tag <= tag$0?1:0);
          if(_lZ_)caml_call3(Stdlib_format[134],Stdlib[1],_s_,tag$0);
          return [0,tag$0,others]}
        return others}
      caml_call3(Stdlib_list[22],_lW_,_lV_,cases);
      function _lX_(param){var encoding=param[3];return classify(encoding)}
      var
       kinds=caml_call2(Stdlib_list[17],_lX_,cases),
       kind=caml_call2(Kind[3],tag_size,kinds),
       eta=[13,kind,tag_size,cases];
      return [0,eta,0]}
    function case$0(title,description,tag,encoding,proj,inj)
     {return [0,title,description,encoding,proj,inj,tag]}
    function is_nullable(e)
     {var e$0=e;
      for(;;)
       {var _lT_=e$0[1];
        if(typeof _lT_ === "number")
         switch(_lT_)
          {case 0:return 1;
           case 1:return 0;
           case 2:return 1;
           case 3:return 0;
           case 4:return 0;
           case 5:return 0;
           case 6:return 0;
           case 7:return 0;
           case 8:return 0;
           case 9:return 0;
           case 10:return 0;
           case 11:return 0;
           case 12:return 0;
           default:return 0}
        else
         switch(_lT_[0])
          {case 0:return 0;
           case 1:return 0;
           case 2:return 0;
           case 3:return 0;
           case 4:return 0;
           case 5:var e$1=_lT_[1],e$0=e$1;continue;
           case 6:return 0;
           case 7:return 0;
           case 8:return 0;
           case 9:return 0;
           case 10:return 0;
           case 11:return 0;
           case 12:return 0;
           case 13:
            var
             cases=_lT_[3],
             _lU_=function(param){var e=param[3];return is_nullable(e)};
            return caml_call2(Stdlib_list[30],_lU_,cases);
           case 14:var fix=_lT_[5],e$2=caml_call1(fix,e$0),e$0=e$2;continue;
           case 15:var e$3=_lT_[3],e$0=e$3;continue;
           case 16:var e$4=_lT_[4],e$0=e$4;continue;
           case 17:
            var json_encoding=_lT_[2];
            return caml_call1(include[69],json_encoding);
           case 18:var e$5=_lT_[2],e$0=e$5;continue;
           case 19:var e$6=_lT_[2],e$0=e$6;continue;
           default:return 1}}}
    function option(ty)
     {if(is_nullable(ty))caml_call1(Stdlib[1],cst_Data_encoding_option_canno);
      var _lP_=0;
      function _lQ_(param){return 0}
      var
       _lR_=
        [0,
         [0,cst_None,0,null$0,function(param){return param?0:_t_},_lQ_,_u_],
         _lP_];
      function _lS_(x){return [0,x]}
      return union
              (_w_,[0,[0,cst_Some,0,ty,function(x){return x},_lS_,_v_],_lR_])}
    function mu(name,title,description,fix)
     {try
       {var
         _lM_=[14,57067359,name,title,description,fix],
         precursor$0=function(eta){return [0,eta,0]}(_lM_),
         match=classify(caml_call1(fix,precursor$0));
        if(typeof match === "number" && ! (57067359 <= match))throw Stdlib[3];
        var _lN_=57067359,kind=_lN_}
      catch(_lO_)
       {_lO_ = caml_wrap_exception(_lO_);
        _lO_ === Stdlib[3];
        var
         _lK_=[14,-1027682724,name,title,description,fix],
         precursor=function(eta){return [0,eta,0]}(_lK_);
        classify(caml_call1(fix,precursor));
        var kind=-1027682724}
      var _lL_=[14,kind,name,title,description,fix];
      return function(eta){return [0,eta,0]}(_lL_)}
    function result(ok_enc,error_enc)
     {var _lG_=0;
      function _lH_(x){return [1,x]}
      var
       _lI_=
        [0,
         [0,
          cst_Result,
          0,
          error_enc,
          function(param)
           {if(0 === param[0])return 0;var x=param[1];return [0,x]},
          _lH_,
          _x_],
         _lG_];
      function _lJ_(x){return [0,x]}
      return union
              (_z_,
               [0,
                [0,
                 cst_Ok,
                 0,
                 ok_enc,
                 function(param)
                  {if(0 === param[0]){var x=param[1];return [0,x]}return 0},
                 _lJ_,
                 _y_],
                _lI_])}
    var
     Variable=[0,string$0,bytes$0,array,list],
     include$0=
      [0,
       Kind,
       make,
       null$0,
       empty,
       unit,
       constant,
       int8$0,
       uint8$0,
       int16$0,
       uint16$0,
       int31$0,
       int32$0,
       int64$0,
       n,
       z,
       ranged_int,
       ranged_float,
       bool$0,
       string$1,
       bytes$1,
       float$1,
       option,
       result,
       string_enum,
       is_obj,
       is_tup,
       Fixed,
       Variable,
       dynamic_size,
       check_size,
       delayed,
       req,
       opt,
       varopt,
       dft,
       obj1,
       obj2,
       obj3,
       obj4,
       obj5,
       obj6,
       obj7,
       obj8,
       obj9,
       obj10,
       tup1,
       tup2,
       tup3,
       tup4,
       tup5,
       tup6,
       tup7,
       tup8,
       tup9,
       tup10,
       merge_objs,
       merge_tups,
       array$0,
       list$0,
       case$0,
       union,
       def,
       conv,
       mu,
       classify,
       classify_desc,
       raw_splitted];
    caml_register_global(434,include$0,"Data_encoding__Encoding");
    function version_case(enc,choose,wrap,name,nth)
     {var _lF_=obj1([0,caml_call3(Stdlib_printf[4],_A_,name,nth),enc,0,0]);
      return [0,
              caml_call3(Stdlib_printf[4],_B_,name,nth),
              0,
              _lF_,
              choose,
              wrap,
              0]}
    function make_encoding(name,l)
     {function _lE_(nth,f){return caml_call2(f,name,nth)}
      return union(_C_,caml_call2(Stdlib_list[18],_lE_,l))}
    function first_version(e){return [0,e]}
    function next_version(encoding,upgrade,previous)
     {return [1,previous,encoding,upgrade]}
    function encoding(name,version)
     {if(0 === version[0])
       {var
         e=version[1],
         _ll_=0,
         _lm_=function(x){return x},
         _ln_=function(x){return [0,x]};
        return make_encoding
                (name,
                 [0,
                  function(_lC_,_lD_)
                   {return version_case(e,_ln_,_lm_,_lC_,_lD_)},
                  _ll_])}
      var upgrade=version[3],encoding=version[2],previous=version[1];
      function mk_nones(upgr,param)
       {if(0 === param[0])
         {var
           e=param[1],
           _lt_=0,
           _lu_=function(x){return caml_call1(upgr,x)},
           _lv_=function(param){return 0};
          return [0,
                  function(_lA_,_lB_)
                   {return version_case(e,_lv_,_lu_,_lA_,_lB_)},
                  _lt_]}
        var
         upgrade=param[3],
         encoding=param[2],
         previous=param[1],
         others=
          mk_nones
           (function(x){return caml_call1(upgr,caml_call1(upgrade,x))},
            previous);
        function _lw_(x){return caml_call1(upgr,x)}
        function _lx_(param){return 0}
        return [0,
                function(_ly_,_lz_)
                 {return version_case(encoding,_lx_,_lw_,_ly_,_lz_)},
                others]}
      var nones=mk_nones(upgrade,previous);
      function _lo_(x){return x}
      function _lp_(x){return [0,x]}
      var
       _lq_=
        [0,
         function(_lr_,_ls_)
          {return version_case(encoding,_lp_,_lo_,_lr_,_ls_)},
         nones],
       cases=caml_call1(Stdlib_list[9],_lq_);
      return make_encoding(name,cases)}
    var Data_encoding_With_version=[0,first_version,next_version,encoding];
    caml_register_global
     (435,Data_encoding_With_version,"Data_encoding__With_version");
    function get_int8(b,i)
     {var _lj_=Stdlib_sys[10] - 8 | 0,_lk_=Stdlib_sys[10] - 8 | 0;
      return caml_bytes_get(b,i) << _lk_ >> _lj_}
    function get_uint16_le(b,i)
     {return Stdlib_sys[11]
              ?caml_bswap16(caml_bytes_get16(b,i))
              :caml_bytes_get16(b,i)}
    function get_uint16(b,i)
     {return Stdlib_sys[11]
              ?caml_bytes_get16(b,i)
              :caml_bswap16(caml_bytes_get16(b,i))}
    function get_int16_ne(b,i)
     {var _lh_=Stdlib_sys[10] - 16 | 0,_li_=Stdlib_sys[10] - 16 | 0;
      return caml_bytes_get16(b,i) << _li_ >> _lh_}
    function get_int16_le(b,i)
     {var _lf_=Stdlib_sys[10] - 16 | 0,_lg_=Stdlib_sys[10] - 16 | 0;
      return get_uint16_le(b,i) << _lg_ >> _lf_}
    function get_int16(b,i)
     {var _ld_=Stdlib_sys[10] - 16 | 0,_le_=Stdlib_sys[10] - 16 | 0;
      return get_uint16(b,i) << _le_ >> _ld_}
    function get_int32_le(b,i)
     {return Stdlib_sys[11]
              ?caml_int32_bswap(caml_bytes_get32(b,i))
              :caml_bytes_get32(b,i)}
    function get_int32(b,i)
     {return Stdlib_sys[11]
              ?caml_bytes_get32(b,i)
              :caml_int32_bswap(caml_bytes_get32(b,i))}
    function get_int64_le(b,i)
     {return Stdlib_sys[11]
              ?caml_int64_bswap(caml_bytes_get64(b,i))
              :caml_bytes_get64(b,i)}
    function get_int64(b,i)
     {return Stdlib_sys[11]
              ?caml_bytes_get64(b,i)
              :caml_int64_bswap(caml_bytes_get64(b,i))}
    function set_int16_le(b,i,x)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(b,i,caml_bswap16(x))
              :caml_bytes_set16(b,i,x)}
    function set_int16(b,i,x)
     {return Stdlib_sys[11]
              ?caml_bytes_set16(b,i,x)
              :caml_bytes_set16(b,i,caml_bswap16(x))}
    function set_int32_le(b,i,x)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(b,i,caml_int32_bswap(x))
              :caml_bytes_set32(b,i,x)}
    function set_int32(b,i,x)
     {return Stdlib_sys[11]
              ?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[11]
              ?caml_bytes_set64(b,i,caml_int64_bswap(x))
              :caml_bytes_set64(b,i,x)}
    function set_int64(b,i,x)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(b,i,x)
              :caml_bytes_set64(b,i,caml_int64_bswap(x))}
    var
     set_uint8=caml_bytes_set,
     set_uint16_ne=caml_bytes_set16,
     Data_encoding_Bytes_encodings=
      [0,
       get_int8,
       get_uint16_le,
       get_uint16,
       get_int16_ne,
       get_int16_le,
       get_int16,
       get_int32_le,
       get_int32,
       get_int64_le,
       get_int64,
       set_int16_le,
       set_int16,
       set_int32_le,
       set_int32,
       set_int64_le,
       set_int64,
       set_uint8,
       set_uint16_ne,
       set_int16,
       set_int16_le];
    caml_register_global
     (437,Data_encoding_Bytes_encodings,"Data_encoding__Bytes_encodings");
    var set_int8=caml_bytes_set,get_uint8=caml_bytes_get;
    function get_double(buff,i)
     {return runtime.caml_int64_float_of_bits(get_int64(buff,i))}
    function set_double(buff,i,v)
     {return set_int64(buff,i,runtime.caml_int64_bits_of_float(v))}
    var
     Data_encoding_TzEndian=
      [0,
       get_int32,
       set_int32,
       set_int8,
       get_int8,
       set_int16,
       get_int16,
       set_int64,
       get_int64,
       get_uint8,
       get_uint16,
       set_double,
       get_double];
    caml_register_global(438,Data_encoding_TzEndian,"Data_encoding__TzEndian");
    function filter_map(f,l)
     {var _la_=0;
      function _lb_(acc,x$0)
       {var x$1=caml_call1(f,x$0);
        if(x$1){var x=x$1[1];return [0,x,acc]}
        return acc}
      var _lc_=caml_call3(Stdlib_list[22],_lb_,_la_,l);
      return caml_call1(Stdlib_list[9],_lc_)}
    function pp_size(ppf,param)
     {if(typeof param === "number")
       return 57067359 <= param
               ?caml_call2(Stdlib_format[123],ppf,_D_)
               :caml_call2(Stdlib_format[123],ppf,_E_);
      var size=param[2],_k$_=1 === size?cst:cst_s;
      return caml_call4(Stdlib_format[123],ppf,_F_,size,_k$_)}
    function pp_int(ppf,int$0)
     {var
       _k__=
        815034505 <= int$0
         ?980827423 <= int$0
           ?980827863 <= int$0
             ?cst_unsigned_30_bit_integer
             :cst_unsigned_16_bit_integer
           :919245630 <= int$0
             ?cst_unsigned_8_bit_integer
             :cst_signed_8_bit_integer
         :-783416530 <= int$0
           ?-783415859 <= int$0
             ?cst_signed_64_bit_integer
             :cst_signed_32_bit_integer
           :-783416531 <= int$0
             ?cst_signed_31_bit_integer
             :cst_signed_16_bit_integer;
      return caml_call3(Stdlib_format[123],ppf,_G_,_k__)}
    function pp_layout(ppf,param)
     {var param$0=param;
      for(;;)
       if(typeof param$0 === "number")
        switch(param$0)
         {case 0:return 0;
          case 1:return caml_call2(Stdlib_format[123],ppf,_H_);
          case 2:return caml_call2(Stdlib_format[123],ppf,_I_);
          case 3:return caml_call2(Stdlib_format[123],ppf,_J_);
          case 4:return caml_call2(Stdlib_format[123],ppf,_K_);
          default:return caml_call2(Stdlib_format[123],ppf,_L_)}
       else
        switch(param$0[0])
         {case 0:
           var integer=param$0[1];
           return caml_call4(Stdlib_format[123],ppf,_M_,pp_int,integer);
          case 1:
           var minimum=param$0[1],maximum=param$0[2];
           if(0 < minimum)
            {var maximum$0=param$0[2],_k8_=range_to_size(minimum,maximum$0);
             return caml_call7
                     (Stdlib_format[123],
                      ppf,
                      _N_,
                      pp_int,
                      _k8_,
                      minimum,
                      maximum$0,
                      minimum)}
           var _k9_=range_to_size(minimum,maximum);
           return caml_call6
                   (Stdlib_format[123],ppf,_O_,pp_int,_k9_,minimum,maximum);
          case 2:
           var maximum$1=param$0[2],minimum$0=param$0[1];
           return caml_call4(Stdlib_format[123],ppf,_P_,minimum$0,maximum$1);
          case 3:
           var reference=param$0[2],size=param$0[1];
           return caml_call5(Stdlib_format[123],ppf,_Q_,pp_int,size,reference);
          case 4:
           var len=param$0[2],data=param$0[1];
           caml_call2(Stdlib_format[123],ppf,_R_);
           if(len)
            {var len$0=len[1];caml_call3(Stdlib_format[123],ppf,_S_,len$0)}
           if(typeof data !== "number" && 5 === data[0])
            {var reference$0=data[1];
             return caml_call3(Stdlib_format[123],ppf,_T_,reference$0)}
           var param$0=data;
           continue;
          default:
           var reference$1=param$0[1];
           return caml_call3(Stdlib_format[123],ppf,_U_,reference$1)}}
    function pp_tag_size(ppf,tag)
     {var _k7_=980827423 <= tag?cst_16_bit:cst_8_bit;
      return caml_call3(Stdlib_format[123],ppf,_V_,_k7_)}
    function field_descr(param)
     {var
       reference=[0,0],
       string_of_layout=caml_call2(Stdlib_format[127],_W_,pp_layout);
      return function(param)
       {switch(param[0])
         {case 0:
           var
            desc=param[3],
            kind=param[2],
            name=param[1],
            _kR_=[0,caml_call1(string_of_layout,desc),0];
           return [0,
                   [0,
                    name,
                    [0,caml_call3(Stdlib_format[127],_X_,pp_size,kind),_kR_]]];
          case 1:
           var desc$0=param[2],kind$0=param[1],switch$0=0;
           if
            (typeof kind$0
             !==
             "number"
             &&
             332360020
             ===
             kind$0[1]
             &&
             0
             ===
             kind$0[2])
            {var _kS_=1;switch$0 = 1}
           if(! switch$0)var _kS_=0;
           if(_kS_)return 0;
           var
            _kT_=[0,caml_call1(string_of_layout,desc$0),0],
            _kU_=[0,caml_call3(Stdlib_format[127],_Y_,pp_size,kind$0),_kT_],
            value=reference[1];
           reference[1] = value + 1 | 0;
           var _kQ_=caml_call1(Stdlib[33],value);
           return [0,[0,caml_call2(Stdlib[28],cst_Unnamed_field,_kQ_),_kU_]];
          case 2:
           var _kV_=param[1];
           if(_kV_)
            {if(1 === param[2])
              {var
                size=param[3],
                name$0=_kV_[1],
                _kW_=[0,caml_call1(string_of_layout,[0,size]),0],
                _kX_=[0,332360020,integer_to_size(size)],
                _kY_=[0,caml_call3(Stdlib_format[127],_Z_,pp_size,_kX_),_kW_];
               return [0,[0,caml_call2(Stdlib_format[127],___,name$0),_kY_]]}}
           else
            if(1 === param[2])
             {var
               size$1=param[3],
               _k2_=[0,caml_call1(string_of_layout,[0,size$1]),0],
               _k3_=[0,332360020,integer_to_size(size$1)],
               _k4_=[0,caml_call3(Stdlib_format[127],_ab_,pp_size,_k3_),_k2_];
              return [0,[0,caml_call1(Stdlib_format[127],_ac_),_k4_]]}
           var
            size$0=param[3],
            i=param[2],
            _kZ_=[0,caml_call1(string_of_layout,[0,size$0]),0],
            _k0_=[0,332360020,integer_to_size(size$0)],
            _k1_=[0,caml_call3(Stdlib_format[127],_$_,pp_size,_k0_),_kZ_];
           return [0,[0,caml_call2(Stdlib_format[127],_aa_,i),_k1_]];
          default:
           var
            name$1=param[1],
            _k5_=[0,caml_call1(string_of_layout,1),0],
            _k6_=[0,caml_call3(Stdlib_format[127],_ae_,pp_size,_ad_),_k5_];
           return [0,[0,caml_call2(Stdlib_format[127],_af_,name$1),_k6_]]}}}
    function toplevel(param)
     {var encoding=param[2],descr=param[1];
      switch(encoding[0])
       {case 0:
         var fields=encoding[1];
         return [0,
                 descr,
                 [0,
                  [0,binary_table_headers,filter_map(field_descr(0),fields)]]];
        case 1:
         var
          cases=encoding[3],
          tag_size=encoding[2],
          kind=encoding[1],
          _kH_=
           function(param)
            {var
              fields=param[3],
              name=param[2],
              tag=param[1],
              _kN_=[0,binary_table_headers,filter_map(field_descr(0),fields)],
              _kO_=0;
             if(name)
              var
               name$0=name[1],
               _kP_=caml_call3(Stdlib_format[127],_ag_,name$0,tag);
             else
              var _kP_=caml_call2(Stdlib_format[127],_ah_,tag);
             return [0,[0,_kP_,_kO_],_kN_]},
          _kI_=[1,tag_size,caml_call2(Stdlib_list[17],_kH_,cases)],
          _kJ_=descr[2];
         return [0,
                 [0,
                  caml_call6
                   (Stdlib_format[127],
                    _ai_,
                    descr[1],
                    pp_size,
                    kind,
                    pp_tag_size,
                    tag_size),
                  _kJ_],
                 _kI_];
        default:
         var
          cases$0=encoding[2],
          size=encoding[1],
          _kK_=
           function(param)
            {var str=param[2],num=param[1];
             return [0,caml_call1(Stdlib[33],num),[0,str,0]]},
          _kL_=[0,[0,enum_headers,caml_call2(Stdlib_list[17],_kK_,cases$0)]],
          _kM_=descr[2];
         return [0,
                 [0,
                  caml_call4(Stdlib_format[127],_aj_,descr[1],pp_int,size),
                  _kM_],
                 _kL_]}}
    function pad(char$0,ppf,n)
     {var n$0=n;
      for(;;)
       {if(0 === n$0)return 0;
        caml_call2(Stdlib_format[21],ppf,char$0);
        var n$1=n$0 - 1 | 0,n$0=n$1;
        continue}}
    function pp_title(level,ppf,title)
     {var char$0=1 === level?42:2 === level?61:96;
      function _kG_(param){return char$0}
      var sub=caml_call2(Stdlib_string[10],_kG_,title);
      return caml_call4(Stdlib_format[123],ppf,_ak_,title,sub)}
    function pp_table(ppf,param)
     {var
       body=param[2],
       headers=param[1],
       _j$_=caml_call2(Stdlib_list[17],caml_ml_string_length,headers);
      function _ka_(len,str)
       {return caml_call2(Stdlib[17],caml_ml_string_length(str),len)}
      var
       _kb_=caml_call1(Stdlib_list[25],_ka_),
       max_widths=caml_call3(Stdlib_list[22],_kb_,_j$_,body);
      function pp_row(pad_char,ppf)
       {function _kA_(ppf)
         {function _kB_(width,str)
           {var _kC_=width - caml_ml_string_length(str) | 0;
            function _kD_(_kE_,_kF_){return pad(pad_char,_kE_,_kF_)}
            return caml_call5(Stdlib_format[123],ppf,_al_,str,_kD_,_kC_)}
          return caml_call2(Stdlib_list[24],_kB_,max_widths)}
        return caml_call3(Stdlib_format[123],ppf,_am_,_kA_)}
      function pp_line(c,ppf)
       {function _ku_(ppf)
         {function _kv_(width,str)
           {var _kw_=width + 2 | 0;
            function _kx_(_ky_,_kz_){return pad(c,_ky_,_kz_)}
            return caml_call4(Stdlib_format[123],ppf,_an_,_kx_,_kw_)}
          return caml_call2(Stdlib_list[24],_kv_,max_widths)}
        return caml_call3(Stdlib_format[123],ppf,_ao_,_ku_)}
      function _kc_(ppf,s)
       {var _ko_=45;
        function _kp_(_kt_){return pp_line(_ko_,_kt_)}
        var _kq_=32;
        function _kr_(_ks_){return pp_row(_kq_,_ks_)}
        return caml_call6(Stdlib_format[123],ppf,_ap_,_kr_,s,_kp_,s)}
      var
       _kd_=
        [0,
         function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_aq_)}],
       _ke_=caml_call2(Stdlib_format[119],_kd_,_kc_),
       _kf_=61;
      function _kg_(_kn_){return pp_line(_kf_,_kn_)}
      var _kh_=32;
      function _ki_(_km_){return pp_row(_kh_,_km_)}
      var _kj_=45;
      function _kk_(_kl_){return pp_line(_kj_,_kl_)}
      return caml_call10
              (Stdlib_format[123],
               ppf,
               _ar_,
               _kk_,
               headers,
               _ki_,
               headers,
               _kg_,
               headers,
               _ke_,
               body)}
    function pp_option_nl(ppf,param)
     {if(param)
       {var s=param[1];return caml_call3(Stdlib_format[123],ppf,_as_,s)}
      return 0}
    function pp_toplevel(ppf,param)
     {if(0 === param[0]){var table=param[1];return pp_table(ppf,table)}
      var tables=param[2];
      function _j2_(ppf)
       {function _j3_(ppf,param)
         {var
           table=param[2],
           descr=param[1],
           _j5_=descr[2],
           _j6_=descr[1],
           _j7_=2;
          function _j8_(_j9_,_j__){return pp_title(_j7_,_j9_,_j__)}
          return caml_call8
                  (Stdlib_format[123],
                   ppf,
                   _at_,
                   _j8_,
                   _j6_,
                   pp_option_nl,
                   _j5_,
                   pp_table,
                   table)}
        var
         _j4_=
          [0,
           function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_au_)}];
        return caml_call3(Stdlib_format[119],_j4_,_j3_,ppf)}
      return caml_call4(Stdlib_format[123],ppf,_av_,_j2_,tables)}
    function pp(ppf,param)
     {var
       fields=param[2],
       toplevel$0=param[1],
       match=toplevel([0,_aw_,toplevel$0]),
       toplevel$1=match[2],
       _jS_=caml_call2(Stdlib_list[17],toplevel,fields);
      function _jT_(ppf,param)
       {var
         toplevel=param[2],
         descr=param[1],
         _jW_=descr[2],
         _jX_=descr[1],
         _jY_=1;
        function _jZ_(_j0_,_j1_){return pp_title(_jY_,_j0_,_j1_)}
        return caml_call8
                (Stdlib_format[123],
                 ppf,
                 _ax_,
                 _jZ_,
                 _jX_,
                 pp_option_nl,
                 _jW_,
                 pp_toplevel,
                 toplevel)}
      var
       _jU_=
        [0,
         function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_ay_)}],
       _jV_=caml_call2(Stdlib_format[119],_jU_,_jT_);
      return caml_call6
              (Stdlib_format[123],ppf,_az_,pp_toplevel,toplevel$1,_jV_,_jS_)}
    var
     _aA_=obj2([0,cst_title,string$1,0,0],opt(0,0,cst_description,string$1)),
     _aB_=0;
    function _aC_(param)
     {var description=param[2],title=param[1];return [0,title,description]}
    var
     description_encoding=
      conv
       (function(param)
         {var description=param[2],title=param[1];
          return [0,title,description]},
        _aC_,
        _aB_,
        _aA_),
     integer_encoding=string_enum(integer_cases),
     integer_extended_encoding=string_enum([0,_aE_,[0,_aD_,integer_cases]]),
     layout_encoding=
      mu
       (cst_layout$0,
        0,
        0,
        function(layout)
         {var _jh_=0;
          function _ji_(param){return 5}
          function _jj_(param)
           {if(typeof param === "number" && 5 <= param)return _aF_;return 0}
          var
           _jk_=
            [0,
             [0,
              cst_Padding$0,
              0,
              obj1([0,cst_kind,constant(cst_Padding),0,0]),
              _jj_,
              _ji_,
              _aG_],
             _jh_];
          function _jl_(param){var name=param[1];return [5,name]}
          function _jm_(param)
           {if(typeof param !== "number" && 5 === param[0])
             {var layout=param[1];return [0,[0,layout,0]]}
            return 0}
          var
           _jn_=
            [0,
             [0,
              cst_Ref$0,
              0,
              obj2
               ([0,cst_name,string$1,0,0],
                [0,cst_kind$0,constant(cst_Ref),0,0]),
              _jm_,
              _jl_,
              _aH_],
             _jk_];
          function _jo_(param)
           {var len=param[3],layout=param[1];return [4,layout,len]}
          function _jp_(param)
           {if(typeof param !== "number" && 4 === param[0])
             {var len=param[2],layout=param[1];return [0,[0,layout,0,len]]}
            return 0}
          var
           _jq_=opt(0,0,cst_max_length,int31$0),
           _jr_=
            [0,
             [0,
              cst_Seq$0,
              0,
              obj3
               ([0,cst_layout,layout,0,0],
                [0,cst_kind$1,constant(cst_Seq),0,0],
                _jq_),
              _jp_,
              _jo_,
              _aI_],
             _jn_];
          function _js_(param)
           {var cases=param[2],size=param[1];return [3,size,cases]}
          function _jt_(param)
           {if(typeof param !== "number" && 3 === param[0])
             {var cases=param[2],size=param[1];return [0,[0,size,cases,0]]}
            return 0}
          var
           _ju_=
            [0,
             [0,
              cst_Enum$0,
              0,
              obj3
               ([0,cst_size,integer_encoding,0,0],
                [0,cst_reference,string$1,0,0],
                [0,cst_kind$2,constant(cst_Enum),0,0]),
              _jt_,
              _js_,
              _aJ_],
             _jr_];
          function _jv_(param){return 4}
          function _jw_(param)
           {if(typeof param === "number" && 4 === param)return _aK_;return 0}
          var
           _jx_=
            [0,
             [0,
              cst_String$0,
              0,
              obj1([0,cst_kind$3,constant(cst_String),0,0]),
              _jw_,
              _jv_,
              _aL_],
             _ju_];
          function _jy_(param){return 3}
          function _jz_(param)
           {if(typeof param === "number" && 3 === param)return _aM_;return 0}
          var
           _jA_=
            [0,
             [0,
              cst_Bytes$0,
              0,
              obj1([0,cst_kind$4,constant(cst_Bytes),0,0]),
              _jz_,
              _jy_,
              _aN_],
             _jx_];
          function _jB_(param){return 2}
          function _jC_(param)
           {if(typeof param === "number" && 2 === param)return _aO_;return 0}
          var
           _jD_=
            [0,
             [0,
              cst_Float$0,
              0,
              obj1([0,cst_kind$5,constant(cst_Float),0,0]),
              _jC_,
              _jB_,
              _aP_],
             _jA_];
          function _jE_(param)
           {var max=param[2],min=param[1];return [2,min,max]}
          function _jF_(param)
           {if(typeof param !== "number" && 2 === param[0])
             {var max=param[2],min=param[1];return [0,[0,min,max,0]]}
            return 0}
          var
           _jG_=
            [0,
             [0,
              cst_RangedFloat$0,
              0,
              obj3
               ([0,cst_min,float$1,0,0],
                [0,cst_max,float$1,0,0],
                [0,cst_kind$6,constant(cst_RangedFloat),0,0]),
              _jF_,
              _jE_,
              _aQ_],
             _jD_];
          function _jH_(param)
           {var max=param[2],min=param[1];return [1,min,max]}
          function _jI_(param)
           {if(typeof param !== "number" && 1 === param[0])
             {var max=param[2],min=param[1];return [0,[0,min,max,0]]}
            return 0}
          var
           _jJ_=
            [0,
             [0,
              cst_RangedInt$0,
              0,
              obj3
               ([0,cst_min$0,int31$0,0,0],
                [0,cst_max$0,int31$0,0,0],
                [0,cst_kind$7,constant(cst_RangedInt),0,0]),
              _jI_,
              _jH_,
              _aR_],
             _jG_];
          function _jK_(param){return 1}
          function _jL_(param)
           {if(typeof param === "number" && 1 === param)return _aS_;return 0}
          var
           _jM_=
            [0,
             [0,
              cst_Bool$0,
              0,
              obj1([0,cst_kind$8,constant(cst_Bool),0,0]),
              _jL_,
              _jK_,
              _aT_],
             _jJ_];
          function _jN_(param){var integer=param[1];return [0,integer]}
          function _jO_(param)
           {if(typeof param !== "number" && 0 === param[0])
             {var integer=param[1];return [0,[0,integer,0]]}
            return 0}
          var
           _jP_=
            [0,
             [0,
              cst_Int$0,
              0,
              obj2
               ([0,cst_size$0,integer_extended_encoding,0,0],
                [0,cst_kind$9,constant(cst_Int),0,0]),
              _jO_,
              _jN_,
              _aU_],
             _jM_];
          function _jQ_(param){return 0}
          function _jR_(param)
           {if(typeof param === "number" && ! param)return _aV_;return 0}
          return union
                  (0,
                   [0,
                    [0,
                     cst_Zero_width$0,
                     0,
                     obj1([0,cst_kind$10,constant(cst_Zero_width),0,0]),
                     _jR_,
                     _jQ_,
                     _aW_],
                    _jP_])}),
     _aX_=0;
    function _aY_(param){return -1027682724}
    function _aZ_(param){return -1027682724 === param?_a0_:0}
    var
     _a2_=
      [0,
       [0,
        cst_Variable$0,
        0,
        obj1([0,cst_kind$11,constant(cst_Variable),0,0]),
        _aZ_,
        _aY_,
        _a1_],
       _aX_];
    function _a3_(param){return 57067359}
    function _a4_(param){return 57067359 === param?_a5_:0}
    var
     _a7_=
      [0,
       [0,
        cst_Dynamic$0,
        0,
        obj1([0,cst_kind$12,constant(cst_Dynamic),0,0]),
        _a4_,
        _a3_,
        _a6_],
       _a2_];
    function _a8_(param){var n=param[1];return [0,332360020,n]}
    function _a9_(param)
     {if(typeof param !== "number" && 332360020 === param[1])
       {var n=param[2];return [0,[0,n,0]]}
      return 0}
    var
     eta$1=
      union
       (0,
        [0,
         [0,
          cst_Fixed,
          0,
          obj2
           ([0,cst_size$1,int31$0,0,0],
            [0,cst_kind$13,constant(cst_Float$1),0,0]),
          _a9_,
          _a8_,
          _a__],
         _a7_]),
     kind_t_encoding=def(cst_schema_kind,0,0,eta$1),
     unsigned_integer_encoding=string_enum(_a$_),
     dynamic_layout_encoding=dynamic_size(0,layout_encoding),
     _ba_=0;
    function _bb_(param){var s=param[2];return [3,s]}
    function _bc_(param)
     {if(3 === param[0]){var s=param[1];return [0,[0,0,s]]}return 0}
    var
     _be_=
      [0,
       [0,
        cst_Optional_field,
        0,
        obj2
         ([0,cst_kind$14,constant(cst_option_indicator),0,0],
          [0,cst_name$0,string$1,0,0]),
        _bc_,
        _bb_,
        _bd_],
       _ba_];
    function _bf_(param)
     {var size=param[4],i=param[3],name=param[2];return [2,name,i,size]}
    function _bg_(param)
     {if(2 === param[0])
       {var size=param[3],i=param[2],name=param[1];
        return [0,[0,0,name,i,size]]}
      return 0}
    var
     _bh_=opt(0,0,cst_name$1,string$1),
     _bj_=
      [0,
       [0,
        cst_Dynamic_field,
        0,
        obj4
         ([0,cst_kind$15,constant(cst_dyn),0,0],
          _bh_,
          [0,cst_num_fields,int31$0,0,0],
          [0,cst_size$2,unsigned_integer_encoding,0,0]),
        _bg_,
        _bf_,
        _bi_],
       _be_];
    function _bk_(param)
     {var layout=param[3],kind=param[1];return [1,layout,kind]}
    function _bl_(param)
     {if(1 === param[0])
       {var layout=param[2],kind=param[1];return [0,[0,layout,0,kind]]}
      return 0}
    var
     _bn_=
      [0,
       [0,
        cst_Anonymous_field,
        0,
        obj3
         ([0,cst_layout$1,dynamic_layout_encoding,0,0],
          [0,cst_kind$16,constant(cst_anon),0,0],
          [0,cst_data_kind,kind_t_encoding,0,0]),
        _bl_,
        _bk_,
        _bm_],
       _bj_];
    function _bo_(param)
     {var layout=param[3],kind=param[2],name=param[1];
      return [0,name,layout,kind]}
    function _bp_(param)
     {if(0 === param[0])
       {var layout=param[3],kind=param[2],name=param[1];
        return [0,[0,name,layout,kind,0]]}
      return 0}
    var
     eta$2=
      union
       (0,
        [0,
         [0,
          cst_Named_field,
          0,
          obj4
           ([0,cst_name$2,string$1,0,0],
            [0,cst_layout$2,dynamic_layout_encoding,0,0],
            [0,cst_data_kind$0,kind_t_encoding,0,0],
            [0,cst_kind$17,constant(cst_named),0,0]),
          _bp_,
          _bo_,
          _bq_],
         _bn_]),
     field_descr_encoding=def(cst_schema_field,0,0,eta$2),
     tag_size_encoding=string_enum(_br_),
     _bs_=0;
    function _bt_(param)
     {var cases=param[2],size=param[1];return [2,size,cases]}
    function _bu_(param)
     {if(2 === param[0])
       {var cases=param[2],size=param[1];return [0,[0,size,cases]]}
      return 0}
    var
     _bw_=
      [0,
       [0,
        cst_Int_enum,
        0,
        obj2
         ([0,cst_size$3,integer_encoding,0,0],
          [0,cst_cases,list$0(0,tup2(int31$0,string$1)),0,0]),
        _bu_,
        _bt_,
        _bv_],
       _bs_];
    function _bx_(param)
     {var cases=param[3],kind=param[2],tag_size=param[1];
      return [1,kind,tag_size,cases]}
    function _by_(param)
     {if(1 === param[0])
       {var cases=param[3],tag_size=param[2],kind=param[1];
        return [0,[0,tag_size,kind,cases]]}
      return 0}
    var
     _bz_=opt(0,0,cst_name$3,string$1),
     eta$3=
      obj3
       ([0,cst_tag,int31$0,0,0],
        [0,cst_fields,list$0(0,dynamic_size(0,field_descr_encoding)),0,0],
        _bz_);
    function _bA_(param)
     {var name=param[3],fields=param[2],tag=param[1];
      return [0,tag,name,fields]}
    var
     eta$5=
      conv
       (function(param)
         {var fields=param[3],name=param[2],tag=param[1];
          return [0,tag,fields,name]},
        _bA_,
        0,
        eta$3),
     _bB_=[0,cst_cases$0,list$0(0,def(cst_union_case,0,0,eta$5)),0,0],
     _bD_=
      [0,
       [0,
        cst_Cases,
        0,
        obj3
         ([0,cst_tag_size,tag_size_encoding,0,0],
          [0,cst_kind$18,dynamic_size(0,kind_t_encoding),0,0],
          _bB_),
        _by_,
        _bx_,
        _bC_],
       _bw_];
    function _bE_(fields){return [0,fields]}
    function _bF_(param)
     {if(0 === param[0]){var fields=param[1];return [0,fields]}return 0}
    var
     binary_description_encoding=
      union
       (0,
        [0,
         [0,
          cst_Obj,
          0,
          obj1
           ([0,
             cst_fields$0,
             list$0(0,dynamic_size(0,field_descr_encoding)),
             0,
             0]),
          _bF_,
          _bE_,
          _bG_],
         _bD_]),
     eta$4=
      obj2
       ([0,cst_toplevel,binary_description_encoding,0,0],
        [0,
         cst_fields$1,
         list$0
          (0,
           obj2
            ([0,cst_description$0,description_encoding,0,0],
             [0,cst_encoding,binary_description_encoding,0,0])),
         0,
         0]);
    function _bH_(param)
     {var fields=param[2],toplevel=param[1];return [0,toplevel,fields]}
    var
     encoding$0=
      conv
       (function(param)
         {var fields=param[2],toplevel=param[1];return [0,toplevel,fields]},
        _bH_,
        0,
        eta$4),
     Data_encoding_Binary_schema=[0,pp,encoding$0];
    caml_register_global
     (440,Data_encoding_Binary_schema,"Data_encoding__Binary_schema");
    function add(t,x){return caml_call3(Stdlib_hashtbl[11],t,x[1],[1,x])}
    function find(tbl,key)
     {var key$0=key;
      for(;;)
       {var match=caml_call2(Stdlib_hashtbl[6],tbl,key$0);
        if(0 === match[0]){var key$1=match[1],key$0=key$1;continue}
        var desc=match[1];
        return desc}}
    function union$0(tbl,new_cannonical,existing)
     {add(tbl,new_cannonical);
      var root=find(tbl,existing);
      return runtime.caml_string_equal(root[1],new_cannonical[1])
              ?0
              :caml_call3
                (Stdlib_hashtbl[11],tbl,root[1],[0,new_cannonical[1]])}
    function dedup_canonicalize(uf)
     {var tbl=caml_call2(Stdlib_hashtbl[1],0,100),acc=0,prev_len=0;
      return function(param$0)
       {var prev_len$0=prev_len,acc$0=acc,param=param$0;
        for(;;)
         {if(param)
           {var
             tl=param[2],
             match=param[1],
             layout=match[2],
             name=match[1],
             match$0=caml_call2(Stdlib_hashtbl[7],tbl,layout);
            if(match$0)
             {var original_desc=match$0[1];
              union$0(uf,original_desc,name);
              var param=tl;
              continue}
            var desc=find(uf,name);
            caml_call3(Stdlib_hashtbl[5],tbl,layout,desc);
            var acc$1=[0,[0,desc[1],layout],acc$0],acc$0=acc$1,param=tl;
            continue}
          var
           _jc_=
            function(param)
             {var layout=param[2],desc=param[1];
              function fixup_layout(enc)
               {if(typeof enc !== "number")
                 switch(enc[0])
                  {case 3:
                    var name=enc[2],i=enc[1];return [3,i,find(uf,name)[1]];
                   case 4:
                    var len=enc[2],layout=enc[1];
                    return [4,fixup_layout(layout),len];
                   case 5:var s=enc[1];return [5,find(uf,s)[1]]
                   }
                return enc}
              function field(field)
               {switch(field[0])
                 {case 0:
                   var layout=field[3],kind=field[2],name=field[1];
                   return [0,name,kind,fixup_layout(layout)];
                  case 1:
                   var layout$0=field[2],kind$0=field[1];
                   return [1,kind$0,fixup_layout(layout$0)];
                  default:return field}}
              switch(layout[0])
               {case 0:
                 var
                  fields=layout[1],
                  _jg_=[0,caml_call2(Stdlib_list[17],field,fields)];
                 break;
                case 1:
                 var
                  cases=layout[3],
                  _je_=
                   function(param)
                    {var fields=param[3],name=param[2],i=param[1];
                     return [0,i,name,caml_call2(Stdlib_list[17],field,fields)]},
                  _jf_=caml_call2(Stdlib_list[17],_je_,cases),
                  _jg_=[1,layout[1],layout[2],_jf_];
                 break;
                default:var _jg_=layout}
              return [0,desc,_jg_]},
           fixedup=caml_call2(Stdlib_list[17],_jc_,acc$0);
          if(caml_call1(Stdlib_list[1],fixedup) === prev_len$0)
           {var
             _jd_=
              function(param)
               {var layout=param[2],name=param[1];
                return [0,find(uf,name),layout]};
            return caml_call2(Stdlib_list[17],_jd_,fixedup)}
          caml_call1(Stdlib_hashtbl[2],tbl);
          var
           prev_len$1=caml_call1(Stdlib_list[1],fixedup),
           prev_len$0=prev_len$1,
           acc$0=0,
           param=fixedup;
          continue}}}
    function describe(encoding)
     {var uf=caml_call2(Stdlib_hashtbl[1],0,128);
      function uf_add_name(title){return add(uf,[0,title,0])}
      function add_reference(name,description,param)
       {var descriptions=param[1];
        return [0,[0,[0,name,description],descriptions]]}
      var x=[0,-1];
      function may_new_reference(param)
       {if(param){var name$0=param[1];uf_add_name(name$0);return name$0}
        x[1] = x[1] + 1 | 0;
        var
         _jb_=caml_call1(Stdlib[33],x[1]),
         name=caml_call2(Stdlib[28],cst_X,_jb_);
        uf_add_name(name);
        return name}
      function union(ref_name,recursives,references,kind,size,cases)
       {var _i4_=0;
        function _i5_(acc,case$0)
         {var _ja_=case$0[6];
          if(_ja_){var tag=_ja_[1];return [0,[0,tag,case$0],acc]}
          return acc}
        var _i6_=caml_call3(Stdlib_list[22],_i5_,_i4_,cases);
        function _i7_(param,_i$_)
         {var t2=_i$_[1],t1=param[1];return runtime.caml_int_compare(t1,t2)}
        var
         cases$0=caml_call2(Stdlib_list[51],_i7_,_i6_),
         tag_field=[0,cst_Tag,[0,332360020,tag_size(size)],[0,size]],
         _i8_=[0,0,references];
        function _i9_(param,_i__)
         {var
           match=param[2],
           references=_i__[2],
           cases=_i__[1],
           tag=param[1],
           match$0=fields(0,recursives,references,match[3][1]),
           references$0=match$0[2],
           fields$0=match$0[1];
          return [0,
                  [0,[0,tag,[0,match[1]],[0,tag_field,fields$0]],cases],
                  references$0]}
        var
         match=caml_call3(Stdlib_list[23],_i9_,cases$0,_i8_),
         references$0=match[2],
         cases$1=match[1],
         name=may_new_reference(ref_name),
         references$1=add_reference(name,[1,kind,size,cases$1],references$0);
        return [0,name,references$1]}
      function describe(description,title,name,recursives,references,encoding)
       {var new_cannonical=[0,title,description];
        add(uf,new_cannonical);
        var
         match=layout(0,recursives,references,encoding),
         references$0=match[2],
         layout$0=match[1];
        if(typeof layout$0 !== "number" && 5 === layout$0[0])
         {var ref_name=layout$0[1];
          union$0(uf,new_cannonical,ref_name);
          return [0,ref_name,references$0]}
        add(uf,new_cannonical);
        return [0,
                name,
                add_reference
                 (name,
                  [0,[0,[1,classify_desc(encoding),layout$0],0]],
                  references$0)]}
      function enum$0(tbl,encoding_array)
       {function _iZ_(i){return i}
        var _i0_=caml_call2(Stdlib_list[10],encoding_array.length - 1,_iZ_);
        function _i1_(i)
         {var _i3_=caml_check_bound(encoding_array,i)[1 + i];
          return [0,i,caml_call2(Stdlib_hashtbl[6],tbl,_i3_)[1]]}
        var _i2_=caml_call2(Stdlib_list[17],_i1_,_i0_);
        return [0,range_to_size(0,encoding_array.length - 1),_i2_]}
      function fields(ref_name$2,recursives,references$2,encoding$6)
       {var ref_name$3=ref_name$2,encoding$7=encoding$6;
        for(;;)
         if(typeof encoding$7 === "number")
          switch(encoding$7)
           {case 0:return [0,_bI_,references$2];
            case 1:return [0,_bJ_,references$2];
            case 2:return [0,_bK_,references$2];
            case 3:
             var
              match$6=layout(0,recursives,references$2,encoding$7),
              references$3=match$6[2],
              layout$3=match$6[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$3],0],
                     references$3];
            case 4:
             var
              match$7=layout(0,recursives,references$2,encoding$7),
              references$4=match$7[2],
              layout$4=match$7[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$4],0],
                     references$4];
            case 5:
             var
              match$8=layout(0,recursives,references$2,encoding$7),
              references$5=match$8[2],
              layout$5=match$8[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$5],0],
                     references$5];
            case 6:
             var
              match$9=layout(0,recursives,references$2,encoding$7),
              references$6=match$9[2],
              layout$6=match$9[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$6],0],
                     references$6];
            case 7:
             var
              match$10=layout(0,recursives,references$2,encoding$7),
              references$7=match$10[2],
              layout$7=match$10[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$7],0],
                     references$7];
            case 8:
             var
              match$11=layout(0,recursives,references$2,encoding$7),
              references$8=match$11[2],
              layout$8=match$11[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$8],0],
                     references$8];
            case 9:
             var
              match$12=layout(0,recursives,references$2,encoding$7),
              references$9=match$12[2],
              layout$9=match$12[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$9],0],
                     references$9];
            case 10:
             var
              match$13=layout(0,recursives,references$2,encoding$7),
              references$10=match$13[2],
              layout$10=match$13[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$10],0],
                     references$10];
            case 11:
             var
              match$14=layout(0,recursives,references$2,encoding$7),
              references$11=match$14[2],
              layout$11=match$14[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$11],0],
                     references$11];
            case 12:
             var
              match$15=layout(0,recursives,references$2,encoding$7),
              references$12=match$15[2],
              layout$12=match$15[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$12],0],
                     references$12];
            default:
             var
              match$16=layout(0,recursives,references$2,encoding$7),
              references$13=match$16[2],
              layout$13=match$16[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$13],0],
                     references$13]}
         else
          switch(encoding$7[0])
           {case 0:return [0,_bL_,references$2];
            case 1:
             var
              match$17=layout(0,recursives,references$2,encoding$7),
              references$14=match$17[2],
              layout$14=match$17[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$14],0],
                     references$14];
            case 2:
             var
              match$18=layout(0,recursives,references$2,encoding$7),
              references$15=match$18[2],
              layout$15=match$18[1];
             return [0,
                     [0,[1,classify_desc(encoding$7),layout$15],0],
                     references$15];
            case 3:
             var kind$1=encoding$7[1];
             return [0,[0,[1,kind$1,3],0],references$2];
            case 4:
             var kind$2=encoding$7[1];
             return [0,[0,[1,kind$2,4],0],references$2];
            case 5:
             var
              match$19=encoding$7[1],
              e=match$19[1],
              n=encoding$7[2],
              match$20=fields(ref_name$3,recursives,references$2,e),
              references$16=match$20[2],
              fields$0=match$20[1];
             return [0,
                     caml_call2
                      (Stdlib[37],
                       fields$0,
                       [0,[0,cst_padding,[0,332360020,n],5],0]),
                     references$16];
            case 6:
             var
              encoding_array=encoding$7[2],
              tbl=encoding$7[1],
              match$21=enum$0(tbl,encoding_array),
              cases=match$21[2],
              size=match$21[1],
              name$0=may_new_reference(ref_name$3),
              _iY_=add_reference(name$0,[2,size,cases],references$2);
             return [0,[0,[1,classify_desc(encoding$7),[5,name$0]],0],_iY_];
            case 7:
             var
              match$22=encoding$7[2],
              encoding$8=match$22[1],
              len=encoding$7[1],
              match$23=layout(0,recursives,references$2,encoding$8),
              references$17=match$23[2],
              layout$16=match$23[1];
             return [0,[0,[1,-1027682724,[4,layout$16,len]],0],references$17];
            case 8:
             var
              match$24=encoding$7[2],
              encoding$9=match$24[1],
              len$0=encoding$7[1],
              match$25=layout(0,recursives,references$2,encoding$9),
              references$18=match$25[2],
              layout$17=match$25[1];
             return [0,
                     [0,[1,-1027682724,[4,layout$17,len$0]],0],
                     references$18];
            case 9:
             var field$0=encoding$7[1];
             if(1 === field$0[0])
              {var _iX_=field$0[1];
               if(57067359 <= field$0[2])
                {var
                  match$2=field$0[3],
                  encoding$4=match$2[1],
                  match$3=layout(0,recursives,references$2,encoding$4),
                  references$0=match$3[2],
                  layout$1=match$3[1];
                 return [0,
                         [0,
                          [3,_iX_],
                          [0,[0,_iX_,classify_desc(encoding$4),layout$1],0]],
                         references$0]}
               var
                match$4=field$0[3],
                encoding$5=match$4[1],
                match$5=layout(0,recursives,references$2,encoding$5),
                references$1=match$5[2],
                layout$2=match$5[1];
               return [0,[0,[0,_iX_,-1027682724,layout$2],0],references$1]}
             var
              match=field$0[2],
              encoding$3=match[1],
              name=field$0[1],
              ref_name=0,
              enc=encoding$3;
             for(;;)
              {var switch$0=0;
               if(typeof enc !== "number")
                switch(enc[0])
                 {case 15:
                   var encoding=enc[3],enc$0=encoding[1],enc=enc$0;continue;
                  case 16:
                   var
                    encoding$0=enc[4],
                    ref_name$0=enc[1],
                    enc$1=encoding$0[1],
                    ref_name$1=[0,ref_name$0],
                    ref_name=ref_name$1,
                    enc=enc$1;
                   continue;
                  case 17:
                   var encoding$1=enc[1],enc$2=encoding$1[1],enc=enc$2;
                   continue;
                  case 18:
                   var
                    encoding$2=enc[2],
                    kind=enc[1],
                    _iW_=[0,[0,kind],ref_name,[0,encoding$2[1]]];
                   switch$0 = 1;
                   break;
                  case 20:
                   var f=enc[1],enc$3=caml_call1(f,0)[1],enc=enc$3;continue
                  }
               if(! switch$0)var _iW_=[0,0,ref_name,[0,enc]];
               var
                match$0=_iW_[3],
                field=match$0[1],
                dynamics=_iW_[1],
                match$1=layout(ref_name,recursives,references$2,field),
                references=match$1[2],
                layout$0=match$1[1];
               if(0 === layout$0)return [0,0,references];
               var field_descr=[0,name,classify_desc(field),layout$0];
               if(dynamics)
                {var kind$0=dynamics[1];
                 return [0,
                         [0,[2,ref_name,1,kind$0],[0,field_descr,0]],
                         references]}
               return [0,[0,field_descr,0],references]}
            case 10:
             var
              right=encoding$7[3],
              left=encoding$7[2],
              match$26=fields(0,recursives,references$2,left[1]),
              references$19=match$26[2],
              left_fields=match$26[1],
              match$27=fields(0,recursives,references$19,right[1]),
              references$20=match$27[2],
              right_fields=match$27[1];
             return [0,
                     caml_call2(Stdlib[37],left_fields,right_fields),
                     references$20];
            case 11:
             var
              match$28=encoding$7[1],
              encoding$10=match$28[1],
              match$29=layout(ref_name$3,recursives,references$2,encoding$10),
              references$21=match$29[2],
              layout$18=match$29[1];
             return 0 === layout$18
                     ?[0,0,references$21]
                     :[0,
                       [0,[1,classify_desc(encoding$10),layout$18],0],
                       references$21];
            case 12:
             var
              right$0=encoding$7[3],
              left$0=encoding$7[2],
              match$30=fields(0,recursives,references$2,left$0[1]),
              references$22=match$30[2],
              fields1=match$30[1],
              match$31=fields(0,recursives,references$22,right$0[1]),
              references$23=match$31[2],
              fields2=match$31[1];
             return [0,caml_call2(Stdlib[37],fields1,fields2),references$23];
            case 13:
             var
              cases$0=encoding$7[3],
              tag_size=encoding$7[2],
              kind$3=encoding$7[1],
              match$32=
               union(0,recursives,references$2,kind$3,tag_size,cases$0),
              references$24=match$32[2],
              name$1=match$32[1];
             return [0,[0,[1,kind$3,[5,name$1]],0],references$24];
            case 14:
             var
              fix=encoding$7[5],
              description=encoding$7[4],
              title=encoding$7[3],
              name$2=encoding$7[2],
              kind$4=encoding$7[1];
             if(title)
              var title$0=title[1],title$1=title$0;
             else
              var title$1=name$2;
             if(caml_call2(Stdlib_list[33],name$2,recursives))
              return [0,[0,[1,kind$4,[5,name$2]],0],references$2];
             var
              match$33=caml_call1(fix,[0,encoding$7,0]),
              encoding$11=match$33[1],
              match$34=
               describe
                (description,
                 title$1,
                 name$2,
                 [0,name$2,recursives],
                 references$2,
                 encoding$11),
              references$25=match$34[2],
              name$3=match$34[1];
             return [0,[0,[1,kind$4,[5,name$3]],0],references$25];
            case 15:
             var
              encoding$12=encoding$7[3],
              encoding$13=encoding$12[1],
              encoding$7=encoding$13;
             continue;
            case 16:
             var
              encoding$14=encoding$7[4],
              name$4=encoding$7[1],
              encoding$15=encoding$14[1],
              ref_name$4=[0,name$4],
              ref_name$3=ref_name$4,
              encoding$7=encoding$15;
             continue;
            case 17:
             var
              encoding$16=encoding$7[1],
              encoding$17=encoding$16[1],
              encoding$7=encoding$17;
             continue;
            case 18:
             var
              encoding$18=encoding$7[2],
              kind$5=encoding$7[1],
              match$35=fields(0,recursives,references$2,encoding$18[1]),
              refs=match$35[2],
              fields$1=match$35[1];
             return [0,
                     [0,
                      [2,0,caml_call1(Stdlib_list[1],fields$1),kind$5],
                      fields$1],
                     refs];
            case 19:
             var
              encoding$19=encoding$7[2],
              encoding$20=encoding$19[1],
              encoding$7=encoding$20;
             continue;
            default:
             var
              func=encoding$7[1],
              encoding$21=caml_call1(func,0)[1],
              encoding$7=encoding$21;
             continue}}
      function layout(ref_name,recursives,references,enc)
       {var ref_name$0=ref_name,enc$0=enc;
        for(;;)
         if(typeof enc$0 === "number")
          switch(enc$0)
           {case 0:return [0,0,references];
            case 1:return [0,0,references];
            case 2:return [0,0,references];
            case 3:return [0,1,references];
            case 4:return [0,_bM_,references];
            case 5:return [0,_bN_,references];
            case 6:return [0,_bO_,references];
            case 7:return [0,_bP_,references];
            case 8:return [0,[1,-1073741824,1073741823],references];
            case 9:return [0,_bQ_,references];
            case 10:return [0,_bR_,references];
            case 11:
             var descriptions$0=references[1];
             add(uf,[0,n_reference_name,[0,n_reference_description]]);
             return [0,
                     [5,n_reference_name],
                     [0,[0,[0,n_reference_name,n_encoding],descriptions$0]]];
            case 12:
             var descriptions=references[1];
             add(uf,[0,z_reference_name,[0,z_reference_description]]);
             return [0,
                     [5,z_reference_name],
                     [0,[0,[0,z_reference_name,z_encoding],descriptions]]];
            default:return [0,2,references]}
         else
          switch(enc$0[0])
           {case 0:return [0,0,references];
            case 1:
             var maximum=enc$0[2],minimum=enc$0[1];
             return [0,[1,minimum,maximum],references];
            case 2:
             var maximum$0=enc$0[2],minimum$0=enc$0[1];
             return [0,[2,minimum$0,maximum$0],references];
            case 3:return [0,3,references];
            case 4:return [0,4,references];
            case 5:
             var
              name=may_new_reference(ref_name$0),
              match=fields(0,recursives,references,enc$0),
              references$0=match[2],
              fields$0=match[1],
              references$1=add_reference(name,[0,fields$0],references$0);
             return [0,[5,name],references$1];
            case 6:
             var
              encoding_array=enc$0[2],
              tbl=enc$0[1],
              name$0=may_new_reference(ref_name$0),
              match$0=enum$0(tbl,encoding_array),
              cases=match$0[2],
              size=match$0[1],
              references$2=add_reference(name$0,[2,size,cases],references);
             return [0,[3,size,name$0],references$2];
            case 7:
             var
              data=enc$0[2],
              len=enc$0[1],
              match$1=layout(0,recursives,references,data[1]),
              references$3=match$1[2],
              descr=match$1[1];
             return [0,[4,descr,len],references$3];
            case 8:
             var
              data$0=enc$0[2],
              len$0=enc$0[1],
              match$2=layout(0,recursives,references,data$0[1]),
              references$4=match$2[2],
              layout$0=match$2[1];
             return [0,[4,layout$0,len$0],references$4];
            case 9:
             var _iV_=enc$0[1];
             if(1 === _iV_[0])
              {var
                name$1=may_new_reference(ref_name$0),
                match$4=fields(0,recursives,references,enc$0),
                references$5=match$4[2],
                fields$1=match$4[1],
                references$6=add_reference(name$1,[0,fields$1],references$5);
               return [0,[5,name$1],references$6]}
             var match$3=_iV_[2],enc$1=match$3[1],enc$0=enc$1;
             continue;
            case 10:
             var
              right=enc$0[3],
              left=enc$0[2],
              name$2=may_new_reference(ref_name$0),
              match$5=fields(0,recursives,references,left[1]),
              references$7=match$5[2],
              fields1=match$5[1],
              match$6=fields(0,recursives,references$7,right[1]),
              references$8=match$6[2],
              fields2=match$6[1],
              references$9=
               add_reference
                (name$2,
                 [0,caml_call2(Stdlib[37],fields1,fields2)],
                 references$8);
             return [0,[5,name$2],references$9];
            case 11:
             var match$7=enc$0[1],enc$2=match$7[1],enc$0=enc$2;continue;
            case 12:
             var
              name$3=may_new_reference(ref_name$0),
              match$8=fields(0,recursives,references,enc$0),
              references$10=match$8[2],
              fields$2=match$8[1],
              references$11=add_reference(name$3,[0,fields$2],references$10);
             return [0,[5,name$3],references$11];
            case 13:
             var
              cases$0=enc$0[3],
              tag_size=enc$0[2],
              kind=enc$0[1],
              match$9=
               union(ref_name$0,recursives,references,kind,tag_size,cases$0),
              references$12=match$9[2],
              name$4=match$9[1];
             return [0,[5,name$4],references$12];
            case 14:
             var
              fix=enc$0[5],
              description=enc$0[4],
              title=enc$0[3],
              name$5=enc$0[2];
             if(title)
              var title$0=title[1],title$1=title$0;
             else
              var title$1=name$5;
             if(caml_call2(Stdlib_list[33],name$5,recursives))
              return [0,[5,name$5],references];
             var
              match$10=caml_call1(fix,[0,enc$0,0]),
              encoding=match$10[1],
              match$11=
               describe
                (description,
                 title$1,
                 name$5,
                 [0,name$5,recursives],
                 references,
                 encoding),
              references$13=match$11[2],
              name$6=match$11[1];
             return [0,[5,name$6],references$13];
            case 15:
             var encoding$0=enc$0[3],enc$3=encoding$0[1],enc$0=enc$3;continue;
            case 16:
             var
              encoding$1=enc$0[4],
              name$7=enc$0[1],
              enc$4=encoding$1[1],
              ref_name$1=[0,name$7],
              ref_name$0=ref_name$1,
              enc$0=enc$4;
             continue;
            case 17:
             var encoding$2=enc$0[1],enc$5=encoding$2[1],enc$0=enc$5;continue;
            case 18:
             var
              name$8=may_new_reference(ref_name$0),
              match$12=fields(0,recursives,references,enc$0),
              references$14=match$12[2],
              fields$3=match$12[1];
             add(uf,[0,name$8,0]);
             return [0,
                     [5,name$8],
                     add_reference(name$8,[0,fields$3],references$14)];
            case 19:
             var encoding$3=enc$0[2],enc$6=encoding$3[1],enc$0=enc$6;continue;
            default:
             var func=enc$0[1],enc$7=caml_call1(func,0)[1],enc$0=enc$7;
             continue}}
      var
       match=fields(0,0,_bS_,encoding[1]),
       references=match[2],
       fields$0=match[1];
      uf_add_name(cst$0);
      var
       _iO_=caml_call1(dedup_canonicalize(uf),[0,[0,cst$1,[0,fields$0]],0]),
       match$0=caml_call1(Stdlib_list[5],_iO_),
       toplevel=match$0[2],
       _iP_=references[1];
      function _iQ_(param)
       {var encoding=param[2],name=param[1];
        if(0 === encoding[0])
         {var _iS_=encoding[1];
          if(_iS_)
           {var _iT_=_iS_[1];
            if(1 === _iT_[0])
             {var _iU_=_iT_[2],switch$0=0;
              if(typeof _iU_ === "number" || ! (5 === _iU_[0]))
               switch$0 = 1;
              else
               if(! _iS_[2])
                {var reference=_iU_[1];
                 union$0(uf,find(uf,name),reference);
                 return 0}}}}
        return 1}
      var
       filtered=caml_call2(Stdlib_list[38],_iQ_,_iP_),
       _iR_=caml_call1(dedup_canonicalize(uf),filtered),
       fields$1=caml_call1(Stdlib_list[9],_iR_);
      return [0,toplevel,fields$1]}
    var Data_encoding_Binary_descripti=[0,describe];
    caml_register_global
     (441,Data_encoding_Binary_descripti,"Data_encoding__Binary_description");
    var _bT_=0;
    function _bU_(param){return 6}
    var
     _bX_=
      [0,
       [0,
        cst_Array_too_long,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 6 <= param)return _bV_;return 0},
        _bU_,
        _bW_],
       _bT_];
    function _bY_(param){return 5}
    var
     _b1_=
      [0,
       [0,
        cst_List_too_long,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 5 === param)return _bZ_;return 0},
        _bY_,
        _b0_],
       _bX_];
    function _b2_(param){return 4}
    var
     _b5_=
      [0,
       [0,
        cst_Size_limit_exceeded,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 4 === param)return _b3_;return 0},
        _b2_,
        _b4_],
       _b1_];
    function _b6_(param){return 3}
    var
     _b9_=
      [0,
       [0,
        cst_Trailing_zero,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 3 === param)return _b7_;return 0},
        _b6_,
        _b8_],
       _b5_];
    function _b__(param)
     {var max=param[3],v=param[2],min=param[1];return [3,min,v,max]}
    function _b$_(param)
     {if(typeof param !== "number" && 3 === param[0])
       {var max=param[3],v=param[2],min=param[1];return [0,[0,min,v,max]]}
      return 0}
    var
     _cb_=
      [0,
       [0,
        cst_Invalid_float,
        0,
        obj3
         ([0,cst_min$1,float$1,0,0],
          [0,cst_v,float$1,0,0],
          [0,cst_max$1,float$1,0,0]),
        _b$_,
        _b__,
        _ca_],
       _b9_];
    function _cc_(param)
     {var max=param[3],v=param[2],min=param[1];return [2,min,v,max]}
    function _cd_(param)
     {if(typeof param !== "number" && 2 === param[0])
       {var max=param[3],v=param[2],min=param[1];return [0,[0,min,v,max]]}
      return 0}
    var
     _cf_=
      [0,
       [0,
        cst_Invalid_int,
        0,
        obj3
         ([0,cst_min$2,int31$0,0,0],
          [0,cst_v$0,int31$0,0,0],
          [0,cst_max$2,int31$0,0,0]),
        _cd_,
        _cc_,
        _ce_],
       _cb_];
    function _cg_(i){return [1,i]}
    var
     _ci_=
      [0,
       [0,
        cst_Invalid_size,
        0,
        int31$0,
        function(param)
         {if(typeof param !== "number" && 1 === param[0])
           {var i=param[1];return [0,i]}
          return 0},
        _cg_,
        _ch_],
       _cf_];
    function _cj_(i){return [0,i]}
    var
     _cl_=
      [0,
       [0,
        cst_Unexpected_tag,
        0,
        int31$0,
        function(param)
         {if(typeof param !== "number" && 0 === param[0])
           {var i=param[1];return [0,i]}
          return 0},
        _cj_,
        _ck_],
       _ci_];
    function _cm_(param){return 2}
    var
     _cp_=
      [0,
       [0,
        cst_No_case_matched,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 2 === param)return _cn_;return 0},
        _cm_,
        _co_],
       _cl_];
    function _cq_(param){return 1}
    var
     _ct_=
      [0,
       [0,
        cst_Extra_bytes,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 1 === param)return _cr_;return 0},
        _cq_,
        _cs_],
       _cp_];
    function _cu_(param){return 0}
    var
     read_error_encoding=
      union
       (0,
        [0,
         [0,
          cst_Not_enough_data,
          0,
          empty,
          function(param)
           {if(typeof param === "number" && ! param)return _cv_;return 0},
          _cu_,
          _cw_],
         _ct_]);
    function pp_read_error(ppf,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[123],ppf,_cx_);
         case 1:return caml_call2(Stdlib_format[123],ppf,_cy_);
         case 2:return caml_call2(Stdlib_format[123],ppf,_cz_);
         case 3:return caml_call2(Stdlib_format[123],ppf,_cA_);
         case 4:return caml_call2(Stdlib_format[123],ppf,_cB_);
         case 5:return caml_call2(Stdlib_format[123],ppf,_cC_);
         default:return caml_call2(Stdlib_format[123],ppf,_cD_)}
      else
       switch(param[0])
        {case 0:
          var tag=param[1];return caml_call3(Stdlib_format[123],ppf,_cE_,tag);
         case 1:
          var sz=param[1];return caml_call3(Stdlib_format[123],ppf,_cF_,sz);
         case 2:
          var max=param[3],v=param[2],min=param[1];
          return caml_call5(Stdlib_format[123],ppf,_cG_,min,v,max);
         default:
          var max$0=param[3],v$0=param[2],min$0=param[1];
          return caml_call5(Stdlib_format[123],ppf,_cH_,min$0,v$0,max$0)}}
    var
     Read_error=[248,cst_Data_encoding_Binary_error,caml_fresh_oo_id(0)],
     _cI_=0;
    function _cJ_(param){return 4}
    var
     _cM_=
      [0,
       [0,
        cst_Array_too_long$0,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 4 <= param)return _cK_;return 0},
        _cJ_,
        _cL_],
       _cI_];
    function _cN_(param){return 3}
    var
     _cQ_=
      [0,
       [0,
        cst_List_too_long$0,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 3 === param)return _cO_;return 0},
        _cN_,
        _cP_],
       _cM_];
    function _cR_(param){return 2}
    var
     _cU_=
      [0,
       [0,
        cst_Invalid_natural,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 2 === param)return _cS_;return 0},
        _cR_,
        _cT_],
       _cQ_];
    function _cV_(param)
     {var found=param[2],expected=param[1];return [2,expected,found]}
    function _cW_(param)
     {if(typeof param !== "number" && 3 === param[0])
       {var found=param[2],expected=param[1];return [0,[0,expected,found]]}
      return 0}
    var
     _cY_=
      [0,
       [0,
        cst_Invalid_string_length,
        0,
        obj2([0,cst_expected,int31$0,0,0],[0,cst_found,int31$0,0,0]),
        _cW_,
        _cV_,
        _cX_],
       _cU_];
    function _cZ_(param)
     {var found=param[2],expected=param[1];return [2,expected,found]}
    function _c0_(param)
     {if(typeof param !== "number" && 2 === param[0])
       {var found=param[2],expected=param[1];return [0,[0,expected,found]]}
      return 0}
    var
     _c2_=
      [0,
       [0,
        cst_Invalid_bytes_length,
        0,
        obj2([0,cst_expected$0,int31$0,0,0],[0,cst_found$0,int31$0,0,0]),
        _c0_,
        _cZ_,
        _c1_],
       _cY_];
    function _c3_(param)
     {var max=param[3],v=param[2],min=param[1];return [1,min,v,max]}
    function _c4_(param)
     {if(typeof param !== "number" && 1 === param[0])
       {var max=param[3],v=param[2],min=param[1];return [0,[0,min,v,max]]}
      return 0}
    var
     _c6_=
      [0,
       [0,
        cst_Invalid_float$0,
        0,
        obj3
         ([0,cst_min$3,float$1,0,0],
          [0,cst_v$1,float$1,0,0],
          [0,cst_max$3,float$1,0,0]),
        _c4_,
        _c3_,
        _c5_],
       _c2_];
    function _c7_(param)
     {var max=param[3],v=param[2],min=param[1];return [0,min,v,max]}
    function _c8_(param)
     {if(typeof param !== "number" && 0 === param[0])
       {var max=param[3],v=param[2],min=param[1];return [0,[0,min,v,max]]}
      return 0}
    var
     _c__=
      [0,
       [0,
        cst_Invalid_int$0,
        0,
        obj3
         ([0,cst_min$4,int31$0,0,0],
          [0,cst_v$2,int31$0,0,0],
          [0,cst_max$4,int31$0,0,0]),
        _c8_,
        _c7_,
        _c9_],
       _c6_];
    function _c$_(param){return 1}
    var
     _dc_=
      [0,
       [0,
        cst_No_case_matched$0,
        0,
        empty,
        function(param)
         {if(typeof param === "number" && 1 === param)return _da_;return 0},
        _c$_,
        _db_],
       _c__];
    function _dd_(param){return 0}
    var
     write_error_encoding=
      union
       (0,
        [0,
         [0,
          cst_Size_limit_exceeded$0,
          0,
          empty,
          function(param)
           {if(typeof param === "number" && ! param)return _de_;return 0},
          _dd_,
          _df_],
         _dc_]);
    function pp_write_error(ppf,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[123],ppf,_dg_);
         case 1:return caml_call2(Stdlib_format[123],ppf,_dh_);
         case 2:return caml_call2(Stdlib_format[123],ppf,_di_);
         case 3:return caml_call2(Stdlib_format[123],ppf,_dj_);
         default:return caml_call2(Stdlib_format[123],ppf,_dk_)}
      else
       switch(param[0])
        {case 0:
          var max=param[3],v=param[2],min=param[1];
          return caml_call5(Stdlib_format[123],ppf,_dl_,min,v,max);
         case 1:
          var max$0=param[3],v$0=param[2],min$0=param[1];
          return caml_call5(Stdlib_format[123],ppf,_dm_,min$0,v$0,max$0);
         case 2:
          var found=param[2],expected=param[1];
          return caml_call4(Stdlib_format[123],ppf,_dn_,expected,found);
         default:
          var found$0=param[2],expected$0=param[1];
          return caml_call4(Stdlib_format[123],ppf,_do_,expected$0,found$0)}}
    var
     Write_error=[248,cst_Data_encoding_Binary_error$0,caml_fresh_oo_id(0)],
     Data_encoding_Binary_error=
      [0,
       Read_error,
       read_error_encoding,
       pp_read_error,
       write_error_encoding,
       pp_write_error,
       Write_error];
    caml_register_global
     (442,Data_encoding_Binary_error,"Data_encoding__Binary_error");
    function raise(e){throw [0,Read_error,e]}
    function check_allowed_bytes(state,size)
     {var _iN_=state[4];
      if(_iN_){var len=_iN_[1];return len < size?raise(4):[0,len - size | 0]}
      return 0}
    function check_remaining_bytes(state,size)
     {if(state[3] < size)raise(0);return state[3] - size | 0}
    function read_atom(size,conv,state)
     {var offset=state[2];
      state[3] = check_remaining_bytes(state,size);
      state[4] = check_allowed_bytes(state,size);
      state[2] = state[2] + size | 0;
      return caml_call2(conv,state[1],offset)}
    function uint8$1(_iM_){return read_atom(uint8,get_uint8,_iM_)}
    function uint16$1(_iL_){return read_atom(int16,get_uint16,_iL_)}
    function int8$1(_iK_){return read_atom(int8,get_int8,_iK_)}
    function int16$1(_iJ_){return read_atom(int16,get_int16,_iJ_)}
    function int32$1(_iI_){return read_atom(int32,get_int32,_iI_)}
    function int64$1(_iH_){return read_atom(int64,get_int64,_iH_)}
    function float$2(_iG_){return read_atom(float$0,get_double,_iG_)}
    function bool$1(state){return 0 !== int8$1(state)?1:0}
    function _dp_(buffer,ofs)
     {var v=get_int32(buffer,ofs);if(v < 0)raise([2,0,v,1073741823]);return v}
    function uint30$0(_iF_){return read_atom(uint30,_dp_,_iF_)}
    function _dq_(buffer,ofs){return get_int32(buffer,ofs)}
    function int31$1(_iE_){return read_atom(int31,_dq_,_iE_)}
    function int$0(param)
     {return 815034505 <= param
              ?980827423 <= param
                ?980827863 <= param?uint30$0:uint16$1
                :919245630 <= param?uint8$1:int8$1
              :-783416531 <= param?int31$1:int16$1}
    function ranged_int$0(minimum,maximum,state)
     {var
       match=range_to_size(minimum,maximum),
       read_int=
        815034505 <= match
         ?980827423 <= match
           ?980827863 <= match?uint30$0:uint16$1
           :919245630 <= match?uint8$1:int8$1
         :-783416531 <= match?int31$1:int16$1,
       ranged=read_int(state),
       ranged$0=0 < minimum?ranged + minimum | 0:ranged,
       _iC_=minimum <= ranged$0?1:0,
       _iD_=_iC_?ranged$0 <= maximum?1:0:_iC_;
      if(1 - _iD_)raise([2,minimum,ranged$0,maximum]);
      return ranged$0}
    function ranged_float$0(minimum,maximum,state)
     {var
       ranged=float$2(state),
       _iA_=minimum <= ranged?1:0,
       _iB_=_iA_?ranged <= maximum?1:0:_iA_;
      if(1 - _iB_)raise([3,minimum,ranged,maximum]);
      return ranged}
    function read_z(res,value,bit_in_value,state)
     {var value$0=value,bit_in_value$0=bit_in_value;
      for(;;)
       {var
         byte$0=uint8$1(state),
         value$1=value$0 | (byte$0 & 127) << bit_in_value$0,
         bit_in_value$1=bit_in_value$0 + 7 | 0;
        if(8 <= bit_in_value$1)
         {caml_call2(Stdlib_buffer[10],res,value$1 & 255);
          var
           value$2=value$1 >>> 8 | 0,
           bit_in_value$2=bit_in_value$1 - 8 | 0,
           value$3=value$2,
           bit_in_value$3=bit_in_value$2}
        else
         var value$3=value$1,bit_in_value$3=bit_in_value$1;
        if(128 === (byte$0 & 128))
         {var value$0=value$3,bit_in_value$0=bit_in_value$3;continue}
        if(0 < bit_in_value$3)caml_call2(Stdlib_buffer[10],res,value$3);
        if(0 === byte$0)raise(3);
        return runtime.ml_z_of_bits(caml_call1(Stdlib_buffer[2],res))}}
    function n$0(state)
     {var first=uint8$1(state),first_value=first & 127;
      return 128 === (first & 128)
              ?read_z(caml_call1(Stdlib_buffer[1],100),first_value,7,state)
              :runtime.ml_z_of_int(first_value)}
    function z$0(state)
     {var
       first=uint8$1(state),
       first_value=first & 63,
       sign=0 !== (first & 64)?1:0;
      if(128 === (first & 128))
       {var n=read_z(caml_call1(Stdlib_buffer[1],100),first_value,6,state);
        return sign?runtime.ml_z_neg(n):n}
      var n$0=runtime.ml_z_of_int(first_value);
      return sign?runtime.ml_z_neg(n$0):n$0}
    function string_enum$0(arr,state)
     {var
       match=enum_size(arr),
       read_index=
        980827423 === match?uint16$1:980827863 <= match?uint30$0:uint8$1,
       index=read_index(state);
      if(arr.length - 1 <= index)raise(2);
      return caml_check_bound(arr,index)[1 + index]}
    function fixed_length_bytes(length)
     {function _iy_(buf,ofs)
       {return caml_call3(Stdlib_bytes[7],buf,ofs,length)}
      return function(_iz_){return read_atom(length,_iy_,_iz_)}}
    function fixed_length_string(length)
     {function _iw_(buf,ofs)
       {return caml_call3(Stdlib_bytes[8],buf,ofs,length)}
      return function(_ix_){return read_atom(length,_iw_,_ix_)}}
    function tag(param){return 980827423 <= param?uint16$1:uint8$1}
    function read_list(error,max_length,e,state)
     {var max_length$0=max_length,acc=0;
      for(;;)
       {if(0 === state[3])return caml_call1(Stdlib_list[9],acc);
        if(0 === max_length$0)return raise(error);
        var
         v=read_rec(e,state),
         acc$0=[0,v,acc],
         max_length$1=max_length$0 - 1 | 0,
         max_length$0=max_length$1,
         acc=acc$0;
        continue}}
    function read_variable_pair(e1,e2,state)
     {var match=classify(e1),match$0=classify(e2),switch$0=0;
      if(typeof match === "number" && ! (57067359 <= match))
       {if(typeof match$0 !== "number" && 332360020 === match$0[1])
         {var n=match$0[2];
          if(state[3] < n)raise(0);
          state[3] = state[3] - n | 0;
          var left$0=read_rec(e1,state);
          if(0 === state[3])
           {state[3] = n;
            var right$0=read_rec(e2,state);
            if(0 === state[3])return [0,left$0,right$0];
            throw [0,Assert_failure,_dt_]}
          throw [0,Assert_failure,_du_]}}
      else
       switch$0 = 1;
      if(switch$0 && -1027682724 === match$0)
       {var left=read_rec(e1,state),right=read_rec(e2,state);
        return [0,left,right]}
      throw [0,Assert_failure,_ds_]}
    function read_rec(e,state)
     {var e$0=e;
      for(;;)
       {var _ik_=e$0[1];
        if(typeof _ik_ === "number")
         switch(_ik_)
          {case 0:return 0;
           case 1:return 0;
           case 2:return 0;
           case 3:return bool$1(state);
           case 4:return int8$1(state);
           case 5:return uint8$1(state);
           case 6:return int16$1(state);
           case 7:return uint16$1(state);
           case 8:return int31$1(state);
           case 9:return int32$1(state);
           case 10:return int64$1(state);
           case 11:return n$0(state);
           case 12:return z$0(state);
           default:return float$2(state)}
        else
         switch(_ik_[0])
          {case 0:return 0;
           case 1:
            var maximum=_ik_[2],minimum=_ik_[1];
            return ranged_int$0(minimum,maximum,state);
           case 2:
            var maximum$0=_ik_[2],minimum$0=_ik_[1];
            return ranged_float$0(minimum$0,maximum$0,state);
           case 3:
            var _il_=_ik_[1];
            if(typeof _il_ === "number")
             return caml_call1(fixed_length_bytes(state[3]),state);
            var n=_il_[2];
            return caml_call1(fixed_length_bytes(n),state);
           case 4:
            var _im_=_ik_[1];
            if(typeof _im_ === "number")
             return caml_call1(fixed_length_string(state[3]),state);
            var n$1=_im_[2];
            return caml_call1(fixed_length_string(n$1),state);
           case 5:
            var n$2=_ik_[2],e$1=_ik_[1],v=read_rec(e$1,state);
            caml_call1(fixed_length_string(n$2),state);
            return v;
           case 6:var arr=_ik_[2];return string_enum$0(arr,state);
           case 7:
            var e$2=_ik_[2],max_length=_ik_[1];
            if(max_length)
             var l=max_length[1],max_length$0=l;
            else
             var max_length$0=Stdlib[19];
            var l$0=read_list(5,max_length$0,e$2,state);
            return caml_call1(Stdlib_array[12],l$0);
           case 8:
            var e$3=_ik_[2],max_length$1=_ik_[1];
            if(max_length$1)
             var l$1=max_length$1[1],max_length$2=l$1;
            else
             var max_length$2=Stdlib[19];
            return read_list(6,max_length$2,e$3,state);
           case 9:
            var _in_=_ik_[1];
            switch(_in_[0])
             {case 0:var e$4=_in_[2],e$0=e$4;continue;
              case 1:
               if(57067359 <= _in_[2])
                {var e$5=_in_[3],present=bool$1(state);
                 return present?[0,read_rec(e$5,state)]:0}
               var e$6=_in_[3];
               return 0 === state[3]?0:[0,read_rec(e$6,state)];
              default:var e$7=_in_[2],e$0=e$7;continue}
           case 10:
            var _io_=_ik_[1];
            if(typeof _io_ === "number")
             {if(57067359 <= _io_)
               {var
                 right=_ik_[3],
                 left=_ik_[2],
                 left$0=read_rec(left,state),
                 right$0=read_rec(right,state);
                return [0,left$0,right$0]}
              var right$1=_ik_[3],left$1=_ik_[2];
              return read_variable_pair(left$1,right$1,state)}
            var right$2=_ik_[3],left$2=_ik_[2],sz=_io_[2];
            check_remaining_bytes(state,sz);
            check_allowed_bytes(state,sz);
            var left$3=read_rec(left$2,state),right$3=read_rec(right$2,state);
            return [0,left$3,right$3];
           case 11:var e$8=_ik_[1],e$0=e$8;continue;
           case 12:
            var _ip_=_ik_[1];
            if(typeof _ip_ === "number")
             {if(57067359 <= _ip_)
               {var
                 right$4=_ik_[3],
                 left$4=_ik_[2],
                 left$5=read_rec(left$4,state),
                 right$5=read_rec(right$4,state);
                return [0,left$5,right$5]}
              var right$6=_ik_[3],left$6=_ik_[2];
              return read_variable_pair(left$6,right$6,state)}
            var right$7=_ik_[3],left$7=_ik_[2],sz$0=_ip_[2];
            check_remaining_bytes(state,sz$0);
            check_allowed_bytes(state,sz$0);
            var left$8=read_rec(left$7,state),right$8=read_rec(right$7,state);
            return [0,left$8,right$8];
           case 13:
            var
             cases=_ik_[3],
             tag_size=_ik_[2],
             ctag=caml_call1(tag(tag_size),state);
            try
             {var
               _iq_=
                function(param)
                 {var _iv_=param[6];
                  if(_iv_){var tag=_iv_[1];return tag === ctag?1:0}
                  return 0},
               _ir_=caml_call2(Stdlib_list[35],_iq_,cases),
               match=_ir_}
            catch(_iu_)
             {_iu_ = caml_wrap_exception(_iu_);
              if(_iu_ !== Stdlib[8])throw _iu_;
              var match=raise([0,ctag])}
            var inj=match[5],encoding=match[3];
            return caml_call1(inj,read_rec(encoding,state));
           case 14:var fix=_ik_[5],e$9=caml_call1(fix,e$0),e$0=e$9;continue;
           case 15:
            var encoding$0=_ik_[3],inj$0=_ik_[2];
            return caml_call1(inj$0,read_rec(encoding$0,state));
           case 16:var e$10=_ik_[4],e$0=e$10;continue;
           case 17:var e$11=_ik_[1],e$0=e$11;continue;
           case 18:
            var
             e$12=_ik_[2],
             kind=_ik_[1],
             sz$1=caml_call1(int$0(kind),state),
             remaining=check_remaining_bytes(state,sz$1);
            state[3] = sz$1;
            check_allowed_bytes(state,sz$1);
            var v$0=read_rec(e$12,state);
            if(0 !== state[3])raise(1);
            state[3] = remaining;
            return v$0;
           case 19:
            var
             e$13=_ik_[2],
             limit=_ik_[1],
             old_allowed_bytes=state[4],
             _is_=state[4];
            if(_is_)
             var
              current_limit=_is_[1],
              limit$0=caml_call2(Stdlib[16],current_limit,limit);
            else
             var limit$0=limit;
            state[4] = [0,limit$0];
            var v$1=read_rec(e$13,state);
            if(old_allowed_bytes)
             {var old_limit=old_allowed_bytes[1],_it_=state[4];
              if(! _it_)throw [0,Assert_failure,_dr_];
              var
               remaining$0=_it_[1],
               read=limit$0 - remaining$0 | 0,
               allowed_bytes=[0,old_limit - read | 0]}
            else
             var allowed_bytes=0;
            state[4] = allowed_bytes;
            return v$1;
           default:var f=_ik_[1],e$14=caml_call1(f,0),e$0=e$14;continue}}}
    function read_exn(encoding,buffer,ofs,len)
     {var state=[0,buffer,ofs,len,0],v=read_rec(encoding,state);
      return [0,state[2],v]}
    function read(encoding,buffer,ofs,len)
     {try
       {var _ij_=[0,read_exn(encoding,buffer,ofs,len)];return _ij_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Read_error){var err=exn[2];return [1,err]}
        throw exn}}
    function read_opt(encoding,buffer,ofs,len)
     {try
       {var _ih_=[0,read_exn(encoding,buffer,ofs,len)];return _ih_}
      catch(_ii_)
       {_ii_ = caml_wrap_exception(_ii_);
        if(_ii_[1] === Read_error)return 0;
        throw _ii_}}
    function of_bytes_exn(encoding,buffer)
     {var
       len=caml_ml_bytes_length(buffer),
       state=[0,buffer,0,len,0],
       v=read_rec(encoding,state);
      if(state[2] !== len)raise(1);
      return v}
    function of_bytes(encoding,buffer)
     {try
       {var _ig_=[0,of_bytes_exn(encoding,buffer)];return _ig_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Read_error){var err=exn[2];return [1,err]}
        throw exn}}
    function of_bytes_opt(encoding,buffer)
     {try
       {var _ie_=[0,of_bytes_exn(encoding,buffer)];return _ie_}
      catch(_if_)
       {_if_ = caml_wrap_exception(_if_);
        if(_if_[1] === Read_error)return 0;
        throw _if_}}
    var
     Data_encoding_Binary_reader=
      [0,read,read_opt,read_exn,of_bytes,of_bytes_opt,of_bytes_exn];
    caml_register_global
     (445,Data_encoding_Binary_reader,"Data_encoding__Binary_reader");
    function n_length(value)
     {var bits=runtime.ml_z_numbits(value);
      return 0 === bits?1:(bits + 6 | 0) / 7 | 0}
    function z_length(value)
     {return ((runtime.ml_z_numbits(value) + 1 | 0) + 6 | 0) / 7 | 0}
    function length(e,value)
     {var e$0=e,value$0=value;
      for(;;)
       {var _hV_=e$0[1];
        if(typeof _hV_ === "number")
         switch(_hV_)
          {case 0:return 0;
           case 1:return 0;
           case 2:return 0;
           case 3:return bool;
           case 4:return int8;
           case 5:return uint8;
           case 6:return int16;
           case 7:return uint16;
           case 8:return int31;
           case 9:return int32;
           case 10:return int64;
           case 11:return n_length(value$0);
           case 12:return z_length(value$0);
           default:return float$0}
        else
         switch(_hV_[0])
          {case 0:return 0;
           case 1:
            var maximum=_hV_[2],minimum=_hV_[1];
            return integer_to_size(range_to_size(minimum,maximum));
           case 2:return float$0;
           case 3:
            var _hW_=_hV_[1];
            if(typeof _hW_ === "number")return caml_ml_bytes_length(value$0);
            var n=_hW_[2];
            return n;
           case 4:
            var _hX_=_hV_[1];
            if(typeof _hX_ === "number")return caml_ml_string_length(value$0);
            var n$0=_hX_[2];
            return n$0;
           case 5:
            var n$1=_hV_[2],e$1=_hV_[1];return length(e$1,value$0) + n$1 | 0;
           case 6:var arr=_hV_[2];return integer_to_size(enum_size(arr));
           case 7:
            var _hY_=_hV_[1];
            if(_hY_)
             {var max_length=_hY_[1];
              if(max_length < value$0.length - 1)throw [0,Write_error,4]}
            var
             e$2=_hV_[2],
             _hZ_=0,
             _h0_=function(acc,v){return length(e$2,v) + acc | 0};
            return caml_call3(Stdlib_array[17],_h0_,_hZ_,value$0);
           case 8:
            var _h1_=_hV_[1];
            if(_h1_)
             {var max_length$0=_h1_[1];
              if(max_length$0 < caml_call1(Stdlib_list[1],value$0))
               throw [0,Write_error,3]}
            var
             e$3=_hV_[2],
             _h2_=0,
             _h3_=function(acc,v){return length(e$3,v) + acc | 0};
            return caml_call3(Stdlib_list[22],_h3_,_h2_,value$0);
           case 9:
            var _h4_=_hV_[1];
            switch(_h4_[0])
             {case 0:var e$4=_h4_[2],e$0=e$4;continue;
              case 1:
               if(57067359 <= _h4_[2])
                {var e$5=_h4_[3];
                 if(value$0)
                  {var value$1=value$0[1];return 1 + length(e$5,value$1) | 0}
                 return 1}
               var e$6=_h4_[3];
               if(value$0)
                {var value$2=value$0[1],e$0=e$6,value$0=value$2;continue}
               return 0;
              default:var e$7=_h4_[2],e$0=e$7;continue}
           case 10:
            var _h5_=_hV_[1];
            if(typeof _h5_ === "number")
             {if(57067359 <= _h5_)
               {var
                 right=_hV_[3],
                 left=_hV_[2],
                 v2=value$0[2],
                 v1=value$0[1],
                 _h6_=length(right,v2);
                return length(left,v1) + _h6_ | 0}
              var
               right$0=_hV_[3],
               left$0=_hV_[2],
               v2$0=value$0[2],
               v1$0=value$0[1],
               _h7_=length(right$0,v2$0);
              return length(left$0,v1$0) + _h7_ | 0}
            var n$2=_h5_[2];
            return n$2;
           case 11:var e$8=_hV_[1],e$0=e$8;continue;
           case 12:
            var _h8_=_hV_[1];
            if(typeof _h8_ === "number")
             {if(57067359 <= _h8_)
               {var
                 right$1=_hV_[3],
                 left$1=_hV_[2],
                 v2$1=value$0[2],
                 v1$1=value$0[1],
                 _h9_=length(right$1,v2$1);
                return length(left$1,v1$1) + _h9_ | 0}
              var
               right$2=_hV_[3],
               left$2=_hV_[2],
               v2$2=value$0[2],
               v1$2=value$0[1],
               _h__=length(right$2,v2$2);
              return length(left$2,v1$2) + _h__ | 0}
            var n$3=_h8_[2];
            return n$3;
           case 13:
            var _h$_=_hV_[1];
            if(typeof _h$_ === "number")
             {if(57067359 <= _h$_)
               {var cases=_hV_[3],tag_size$0=_hV_[2],param=cases;
                for(;;)
                 {if(param)
                   {var _ia_=param[1];
                    if(_ia_[6])
                     {var
                       tl=param[2],
                       proj=_ia_[4],
                       e$9=_ia_[3],
                       match=caml_call1(proj,value$0);
                      if(match)
                       {var value$3=match[1],_ib_=length(e$9,value$3);
                        return tag_size(tag_size$0) + _ib_ | 0}
                      var param=tl;
                      continue}
                    var param$0=param[2],param=param$0;
                    continue}
                  throw [0,Write_error,1]}}
              var cases$0=_hV_[3],tag_size$1=_hV_[2],param$1=cases$0;
              for(;;)
               {if(param$1)
                 {var _ic_=param$1[1];
                  if(_ic_[6])
                   {var
                     tl$0=param$1[2],
                     proj$0=_ic_[4],
                     e$10=_ic_[3],
                     match$0=caml_call1(proj$0,value$0);
                    if(match$0)
                     {var value$4=match$0[1],_id_=length(e$10,value$4);
                      return tag_size(tag_size$1) + _id_ | 0}
                    var param$1=tl$0;
                    continue}
                  var param$2=param$1[2],param$1=param$2;
                  continue}
                throw [0,Write_error,1]}}
            var n$4=_h$_[2];
            return n$4;
           case 14:
            if(57067359 <= _hV_[1])
             {var fix=_hV_[5],e$11=caml_call1(fix,e$0),e$0=e$11;continue}
            var fix$0=_hV_[5],e$12=caml_call1(fix$0,e$0),e$0=e$12;
            continue;
           case 15:
            var
             e$13=_hV_[3],
             proj$1=_hV_[1],
             value$5=caml_call1(proj$1,value$0),
             e$0=e$13,
             value$0=value$5;
            continue;
           case 16:var e$14=_hV_[4],e$0=e$14;continue;
           case 17:var e$15=_hV_[1],e$0=e$15;continue;
           case 18:
            var e$16=_hV_[2],kind=_hV_[1],length$0=length(e$16,value$0);
            return integer_to_size(kind) + length$0 | 0;
           case 19:
            var e$17=_hV_[2],limit=_hV_[1],length$1=length(e$17,value$0);
            if(limit < length$1)throw [0,Write_error,0];
            return length$1;
           default:var f=_hV_[1],e$18=caml_call1(f,0),e$0=e$18;continue}}}
    function fixed_length(e)
     {var match=classify(e);
      if(typeof match === "number")return 0;
      var n=match[2];
      return [0,n]}
    function fixed_length_exn(e)
     {var match=fixed_length(e);
      if(match){var n=match[1];return n}
      return caml_call1(Stdlib[1],cst_Data_encoding_Binary_fixed)}
    var
     Data_encoding_Binary_length=
      [0,length,fixed_length,fixed_length_exn,z_length,n_length];
    caml_register_global
     (446,Data_encoding_Binary_length,"Data_encoding__Binary_length");
    function raise$0(error){throw [0,Write_error,error]}
    function may_resize(state,size)
     {var _hU_=state[3];
      if(_hU_)
       {var len=_hU_[1];
        if(len < size)raise$0(0);else state[3] = [0,len - size | 0]}
      var buffer_len=caml_ml_bytes_length(state[1]);
      if((buffer_len - state[2] | 0) < size)
       {var
         new_buffer=
          caml_create_bytes
           (caml_call2(Stdlib[17],2 * buffer_len | 0,buffer_len + size | 0));
        caml_call5(Stdlib_bytes[11],state[1],0,new_buffer,0,state[2]);
        state[1] = new_buffer}
      state[2] = state[2] + size | 0;
      return 0}
    function check_int_range(min,v,max)
     {var _hS_=v < min?1:0,_hT_=_hS_ || (max < v?1:0);
      return _hT_?raise$0([0,min,v,max]):_hT_}
    function set_int(kind,buffer,ofs,v)
     {if(-783416531 !== kind)
       {var switch$0=0;
        if(980827423 <= kind)
         {if(! (980827863 <= kind))switch$0 = 1}
        else
         {if(-783416971 <= kind)return caml_bytes_set(buffer,ofs,v);
          switch$0 = 1}
        if(switch$0)return set_int16(buffer,ofs,v)}
      return set_int32(buffer,ofs,v)}
    function int$1(kind,state,v)
     {var _hR_=max_int(kind);
      check_int_range(min_int(kind),v,_hR_);
      var ofs=state[2];
      may_resize(state,integer_to_size(kind));
      return set_int(kind,state[1],ofs,v)}
    var _dv_=815034505;
    function int8$2(_hP_,_hQ_){return int$1(_dv_,_hP_,_hQ_)}
    var _dw_=919245630;
    function uint8$2(_hN_,_hO_){return int$1(_dw_,_hN_,_hO_)}
    var _dx_=-783416972;
    function int16$2(_hL_,_hM_){return int$1(_dx_,_hL_,_hM_)}
    var _dy_=980827423;
    function uint16$2(_hJ_,_hK_){return int$1(_dy_,_hJ_,_hK_)}
    var _dz_=980827863;
    function uint30$1(_hH_,_hI_){return int$1(_dz_,_hH_,_hI_)}
    var _dA_=-783416531;
    function int31$2(_hF_,_hG_){return int$1(_dA_,_hF_,_hG_)}
    function bool$2(state,v){var _hE_=v?255:0;return uint8$2(state,_hE_)}
    function float$3(state,v)
     {var ofs=state[2];
      may_resize(state,float$0);
      return set_double(state[1],ofs,v)}
    function string_enum$1(tbl,arr,state,v)
     {try
       {var _hC_=caml_call2(Stdlib_hashtbl[6],tbl,v)[2],value=_hC_}
      catch(_hD_)
       {_hD_ = caml_wrap_exception(_hD_);
        if(_hD_ !== Stdlib[8])throw _hD_;
        var value=raise$0(1)}
      var match=enum_size(arr);
      return 980827423 === match
              ?uint16$2(state,value)
              :980827863 <= match?uint30$1(state,value):uint8$2(state,value)}
    function fixed_kind_bytes(length,state,s)
     {if(caml_ml_bytes_length(s) !== length)
       raise$0([2,length,caml_ml_bytes_length(s)]);
      var ofs=state[2];
      may_resize(state,length);
      return caml_call5(Stdlib_bytes[11],s,0,state[1],ofs,length)}
    function fixed_kind_string(length,state,s)
     {if(caml_ml_string_length(s) !== length)
       raise$0([3,length,caml_ml_string_length(s)]);
      var ofs=state[2];
      may_resize(state,length);
      return caml_call5(Stdlib_bytes[12],s,0,state[1],ofs,length)}
    function write_with_limit(limit,e,state,value)
     {var old_limit=state[3],_hA_=state[3];
      if(_hA_)
       var
        old_limit$0=_hA_[1],
        limit$0=caml_call2(Stdlib[16],old_limit$0,limit);
      else
       var limit$0=limit;
      state[3] = [0,limit$0];
      write_rec(e,state,value);
      if(old_limit)
       {var old_limit$1=old_limit[1],_hB_=state[3];
        if(_hB_)
         {var len=_hB_[1],read=limit$0 - len | 0;
          state[3] = [0,old_limit$1 - read | 0];
          return 0}
        throw [0,Assert_failure,_dB_]}
      state[3] = 0;
      return 0}
    function write_rec(e,state,value)
     {var e$0=e,value$0=value;
      a:
      for(;;)
       {var _hk_=e$0[1];
        if(typeof _hk_ === "number")
         switch(_hk_)
          {case 0:return 0;
           case 1:return 0;
           case 2:return 0;
           case 3:return bool$2(state,value$0);
           case 4:return int8$2(state,value$0);
           case 5:return uint8$2(state,value$0);
           case 6:return int16$2(state,value$0);
           case 7:return uint16$2(state,value$0);
           case 8:return int31$2(state,value$0);
           case 9:
            var ofs=state[2];
            may_resize(state,int32);
            return set_int32(state[1],ofs,value$0);
           case 10:
            var ofs$0=state[2];
            may_resize(state,int64);
            return set_int64(state[1],ofs$0,value$0);
           case 11:
            if(runtime.ml_z_sign(value$0) < 0)raise$0(2);
            if(runtime.ml_z_equal(value$0,Z[2]))return uint8$2(state,0);
            var
             bits=runtime.ml_z_numbits(value$0),
             length=n_length(value$0),
             offset=state[2];
            may_resize(state,length);
            var _g$_=length - 1 | 0,_g__=0;
            if(! (_g$_ < 0))
             {var i=_g__;
              for(;;)
               {var
                 pos=i * 7 | 0,
                 chunk_len=i === (length - 1 | 0)?bits - pos | 0:7,
                 _g9_=
                  runtime.ml_z_to_int
                   (runtime.ml_z_extract(value$0,pos,chunk_len)),
                 _ha_=i === (length - 1 | 0)?0:128;
                caml_bytes_set(state[1],offset + i | 0,_ha_ | _g9_);
                var _hb_=i + 1 | 0;
                if(_g$_ !== i){var i=_hb_;continue}
                break}}
            return 0;
           case 12:
            var
             sign=runtime.ml_z_sign(value$0) < 0?1:0,
             bits$0=runtime.ml_z_numbits(value$0);
            if(runtime.ml_z_equal(value$0,Z[2]))return uint8$2(state,0);
            var
             v$0=runtime.ml_z_abs(value$0),
             get_chunk=
              function(pos,len)
               {return runtime.ml_z_to_int(runtime.ml_z_extract(v$0,pos,len))},
             length$0=z_length(v$0),
             offset$0=state[2];
            may_resize(state,length$0);
            var _hc_=get_chunk(0,6),_hd_=6 < bits$0?128:0,_he_=sign?64:0;
            caml_bytes_set(state[1],offset$0,_he_ | _hd_ | _hc_);
            var _hg_=length$0 - 1 | 0,_hf_=1;
            if(! (_hg_ < 1))
             {var i$0=_hf_;
              for(;;)
               {var
                 pos$0=6 + ((i$0 - 1 | 0) * 7 | 0) | 0,
                 chunk_len$0=i$0 === (length$0 - 1 | 0)?bits$0 - pos$0 | 0:7,
                 _hh_=get_chunk(pos$0,chunk_len$0),
                 _hi_=i$0 === (length$0 - 1 | 0)?0:128;
                caml_bytes_set(state[1],offset$0 + i$0 | 0,_hi_ | _hh_);
                var _hj_=i$0 + 1 | 0;
                if(_hg_ !== i$0){var i$0=_hj_;continue}
                break}}
            return 0;
           default:return float$3(state,value$0)}
        else
         switch(_hk_[0])
          {case 0:return 0;
           case 1:
            var maximum=_hk_[2],minimum=_hk_[1];
            check_int_range(minimum,value$0,maximum);
            var
             v=0 <= minimum?value$0 - minimum | 0:value$0,
             match=range_to_size(minimum,maximum);
            return 815034505 <= match
                    ?980827423 <= match
                      ?980827863 <= match?uint30$1(state,v):uint16$2(state,v)
                      :919245630 <= match?uint8$2(state,v):int8$2(state,v)
                    :-783416531 <= match?int31$2(state,v):int16$2(state,v);
           case 2:
            var
             maximum$0=_hk_[2],
             minimum$0=_hk_[1],
             _g7_=value$0 < minimum$0?1:0,
             _g8_=_g7_ || (maximum$0 < value$0?1:0);
            if(_g8_)raise$0([1,minimum$0,value$0,maximum$0]);
            return float$3(state,value$0);
           case 3:
            var _hl_=_hk_[1];
            if(typeof _hl_ === "number")
             {var length$1=caml_ml_bytes_length(value$0);
              return fixed_kind_bytes(length$1,state,value$0)}
            var n=_hl_[2];
            return fixed_kind_bytes(n,state,value$0);
           case 4:
            var _hm_=_hk_[1];
            if(typeof _hm_ === "number")
             {var length$2=caml_ml_string_length(value$0);
              return fixed_kind_string(length$2,state,value$0)}
            var n$0=_hm_[2];
            return fixed_kind_string(n$0,state,value$0);
           case 5:
            var n$1=_hk_[2],e$1=_hk_[1];
            write_rec(e$1,state,value$0);
            return fixed_kind_string
                    (n$1,state,caml_call2(Stdlib_string[1],n$1,0));
           case 6:
            var arr=_hk_[2],tbl=_hk_[1];
            return string_enum$1(tbl,arr,state,value$0);
           case 7:
            var _hn_=_hk_[1];
            if(_hn_)
             {var max_length=_hn_[1];
              if(max_length < value$0.length - 1)return raise$0(4)}
            var
             e$2=_hk_[2],
             _ho_=function(_hz_){return write_rec(e$2,state,_hz_)};
            return caml_call2(Stdlib_array[13],_ho_,value$0);
           case 8:
            var _hp_=_hk_[1];
            if(_hp_)
             {var max_length$0=_hp_[1];
              if(max_length$0 < caml_call1(Stdlib_list[1],value$0))
               return raise$0(3)}
            var
             e$3=_hk_[2],
             _hq_=function(_hy_){return write_rec(e$3,state,_hy_)};
            return caml_call2(Stdlib_list[15],_hq_,value$0);
           case 9:
            var _hr_=_hk_[1];
            switch(_hr_[0])
             {case 0:var e$4=_hr_[2],e$0=e$4;continue;
              case 1:
               if(57067359 <= _hr_[2])
                {var e$5=_hr_[3];
                 if(value$0)
                  {var value$1=value$0[1];
                   bool$2(state,1);
                   var e$0=e$5,value$0=value$1;
                   continue}
                 return bool$2(state,0)}
               var e$6=_hr_[3];
               if(value$0)
                {var value$2=value$0[1],e$0=e$6,value$0=value$2;continue}
               return 0;
              default:var e$7=_hr_[2],e$0=e$7;continue}
           case 10:
            var right=_hk_[3],left=_hk_[2],v2=value$0[2],v1=value$0[1];
            write_rec(left,state,v1);
            var e$0=right,value$0=v2;
            continue;
           case 11:var e$8=_hk_[1],e$0=e$8;continue;
           case 12:
            var
             right$0=_hk_[3],
             left$0=_hk_[2],
             v2$0=value$0[2],
             v1$0=value$0[1];
            write_rec(left$0,state,v1$0);
            var e$0=right$0,value$0=v2$0;
            continue;
           case 13:
            var cases=_hk_[3],tag_size=_hk_[2],param=cases;
            for(;;)
             {if(param)
               {var _hs_=param[1],_ht_=_hs_[6],_hu_=_hs_[4],_hv_=_hs_[3];
                if(_ht_)
                 {var
                   tl=param[2],
                   tag=_ht_[1],
                   match$0=caml_call1(_hu_,value$0);
                  if(match$0)
                   {var
                     value$3=match$0[1],
                     _hx_=980827423 <= tag_size?uint16$2:uint8$2;
                    _hx_(state,tag);
                    var e$0=_hv_,value$0=value$3;
                    continue a}
                  var param=tl;
                  continue}
                var param$0=param[2],param=param$0;
                continue}
              return raise$0(1)}
           case 14:var fix=_hk_[5],e$9=caml_call1(fix,e$0),e$0=e$9;continue;
           case 15:
            var
             e$10=_hk_[3],
             proj=_hk_[1],
             value$4=caml_call1(proj,value$0),
             e$0=e$10,
             value$0=value$4;
            continue;
           case 16:var e$11=_hk_[4],e$0=e$11;continue;
           case 17:var e$12=_hk_[1],e$0=e$12;continue;
           case 18:
            var e$13=_hk_[2],kind=_hk_[1],initial_offset=state[2];
            int$1(kind,state,0);
            write_with_limit(max_int(kind),e$13,state,value$0);
            var _hw_=integer_to_size(kind);
            return set_int
                    (kind,
                     state[1],
                     initial_offset,
                     (state[2] - initial_offset | 0) - _hw_ | 0);
           case 19:
            var e$14=_hk_[2],limit=_hk_[1];
            return write_with_limit(limit,e$14,state,value$0);
           default:var f=_hk_[1],e$15=caml_call1(f,0),e$0=e$15;continue}}}
    function write_exn(e,v,buffer,offset,len)
     {var state=[0,buffer,offset,[0,len]];
      write_rec(e,state,v);
      return state[2]}
    function write(e,v,buffer,offset,len)
     {try
       {var _g6_=[0,write_exn(e,v,buffer,offset,len)];return _g6_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Write_error){var err=exn[2];return [1,err]}
        throw exn}}
    function write_opt(e,v,buffer,offset,len)
     {try
       {var _g4_=[0,write_exn(e,v,buffer,offset,len)];return _g4_}
      catch(_g5_)
       {_g5_ = caml_wrap_exception(_g5_);
        if(_g5_[1] === Write_error)return 0;
        throw _g5_}}
    function to_bytes_exn(opt,e,v)
     {if(opt)var sth=opt[1],buffer_size=sth;else var buffer_size=128;
      var match=classify(e);
      if(typeof match === "number")
       {var state=[0,caml_create_bytes(buffer_size),0,0];
        write_rec(e,state,v);
        return caml_call3(Stdlib_bytes[7],state[1],0,state[2])}
      var n=match[2],state$0=[0,caml_create_bytes(n),0,[0,n]];
      write_rec(e,state$0,v);
      return state$0[1]}
    function to_bytes_opt(buffer_size,e,v)
     {try
       {var _g2_=[0,to_bytes_exn(buffer_size,e,v)];return _g2_}
      catch(_g3_)
       {_g3_ = caml_wrap_exception(_g3_);
        if(_g3_[1] === Write_error)return 0;
        throw _g3_}}
    function to_bytes(buffer_size,e,v)
     {try
       {var _g1_=[0,to_bytes_exn(buffer_size,e,v)];return _g1_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Write_error){var err=exn[2];return [1,err]}
        throw exn}}
    var
     Data_encoding_Binary_writer=
      [0,write,write_opt,write_exn,to_bytes,to_bytes_opt,to_bytes_exn];
    caml_register_global
     (448,Data_encoding_Binary_writer,"Data_encoding__Binary_writer");
    var Parse_error=[248,cst_Data_encoding_Json_Parse_e,caml_fresh_oo_id(0)];
    function wrap_error(f,str)
     {try
       {var _g0_=caml_call1(f,str);return _g0_}
      catch(exn)
       {exn = caml_wrap_exception(exn);throw [0,include[58],[0,0,exn]]}}
    var _dC_=include[13],_dD_=0,_dE_=runtime.caml_int64_of_string;
    function _dF_(_gZ_){return wrap_error(_dE_,_gZ_)}
    var
     _dG_=caml_call4(include[51],Stdlib_int64[14],_dF_,_dD_,_dC_),
     int64_encoding=caml_call4(include[57],cst_int64,_dI_,_dH_,_dG_),
     _dJ_=include[13],
     _dK_=0;
    function _dL_(s)
     {var n=caml_call1(Z[5],s);
      if(runtime.ml_z_sign(n) < 0)
       throw [0,include[58],[0,0,[0,Stdlib[7],cst_negative_natural]]];
      return n}
    function _dM_(z)
     {if(runtime.ml_z_sign(z) < 0)
       caml_call1(Stdlib[1],cst_negative_natural$0);
      return caml_call1(Z[13],z)}
    var
     _dN_=caml_call4(include[51],_dM_,_dL_,_dK_,_dJ_),
     n_encoding$0=caml_call4(include[57],cst_positive_bignum,_dP_,_dO_,_dN_),
     _dQ_=caml_call4(include[51],Z[13],Z[5],0,include[13]),
     z_encoding$0=caml_call4(include[57],cst_bignum,_dS_,_dR_,_dQ_),
     schema=caml_call1(Json_schema[2],_dT_),
     _dU_=include[13],
     _dV_=0;
    function _dW_(h){return [0,3603131,h]}
    function _dX_(param){var h=param[2];return h}
    var
     _dY_=caml_call4(include[51],_dX_,_dW_,_dV_,_dU_),
     _dZ_=[0,schema],
     _d0_=Hex[6];
    function _d1_(_gY_){return wrap_error(_d0_,_gY_)}
    var arg=Hex[5];
    function _d2_(eta){return caml_call2(arg,0,eta)}
    var bytes_jsont=caml_call4(include[51],_d2_,_d1_,_dZ_,_dY_);
    function _d3_(s){return s}
    function _d4_(s)
     {var _gW_=1;
      function _gX_(valid,pos,param){return 852405675 <= param[1]?valid:0}
      return caml_call5(Uutf[22][2],0,0,_gX_,_gW_,s)?[0,s]:0}
    var utf8_case=caml_call5(include[48],0,0,include[13],_d4_,_d3_);
    function _d5_(a)
     {function _gU_(i)
       {var _gV_=caml_check_bound(a,i)[1 + i];
        return caml_call1(Stdlib_char[1],_gV_)}
      return caml_call2(Stdlib_string[2],a.length - 1,_gU_)}
    function _d6_(s)
     {function _gT_(i){return runtime.caml_string_get(s,i)}
      return [0,caml_call2(Stdlib_array[2],caml_ml_string_length(s),_gT_)]}
    var
     _d7_=caml_call3(include[9],0,255,cst_byte),
     _d8_=caml_call1(include[34],_d7_),
     _d9_=caml_call4(include[20],0,0,cst_invalid_utf8_string,_d8_),
     _d__=caml_call1(include[23],_d9_),
     obj_case=caml_call5(include[48],0,0,_d__,_d6_,_d5_),
     _d$_=caml_call1(include[49],[0,utf8_case,[0,obj_case,0]]),
     raw_string_encoding=caml_call4(include[57],cst_unistring,_eb_,_ea_,_d$_);
    function lift_union_in_pair(b,p,e1,e2)
     {var e1$0=lift_union(e1),e2$0=lift_union(e2),_gL_=e2$0[1];
      if(typeof _gL_ !== "number" && 13 === _gL_[0])
       {var
         cases$0=_gL_[3],
         tag_size$0=_gL_[2],
         _gO_=
          function(param)
           {var
             tag=param[6],
             inj=param[5],
             proj=param[4],
             e2=param[3],
             description=param[2],
             title=param[1];
            function _gR_(param)
             {var y=param[2],x=param[1];return [0,x,caml_call1(inj,y)]}
            function _gS_(param)
             {var y=param[2],x=param[1],match=caml_call1(proj,y);
              if(match){var y$0=match[1];return [0,[0,x,y$0]]}
              return 0}
            return [0,
                    title,
                    description,
                    lift_union_in_pair(b,p,e1$0,e2),
                    _gS_,
                    _gR_,
                    tag]},
         eta$0=
          [13,57067359,tag_size$0,caml_call2(Stdlib_list[17],_gO_,cases$0)];
        return [0,eta$0,0]}
      var _gM_=e1$0[1];
      if(typeof _gM_ !== "number" && 13 === _gM_[0])
       {var
         cases=_gM_[3],
         tag_size=_gM_[2],
         _gN_=
          function(param)
           {var
             tag=param[6],
             inj=param[5],
             proj=param[4],
             e1=param[3],
             description=param[2],
             title=param[1];
            function _gP_(param)
             {var y=param[2],x=param[1];return [0,caml_call1(inj,x),y]}
            function _gQ_(param)
             {var y=param[2],x=param[1],match=caml_call1(proj,x);
              if(match){var x$0=match[1];return [0,[0,x$0,y]]}
              return 0}
            return [0,
                    title,
                    description,
                    lift_union_in_pair(b,p,e1,e2$0),
                    _gQ_,
                    _gP_,
                    tag]},
         eta=[13,57067359,tag_size,caml_call2(Stdlib_list[17],_gN_,cases)];
        return [0,eta,0]}
      return caml_call3(b[1],p,e1$0,e2$0)}
    function lift_union(e)
     {var _gH_=e[1];
      if(typeof _gH_ !== "number")
       switch(_gH_[0])
        {case 10:
          var right=_gH_[3],left=_gH_[2],kind=_gH_[1];
          return lift_union_in_pair
                  ([0,
                    function(kind,left,right)
                     {var eta=[10,kind,left,right];return [0,eta,0]}],
                   kind,
                   left,
                   right);
         case 12:
          var right$0=_gH_[3],left$0=_gH_[2],kind$0=_gH_[1];
          return lift_union_in_pair
                  ([0,
                    function(kind,left,right)
                     {var eta=[12,kind,left,right];return [0,eta,0]}],
                   kind$0,
                   left$0,
                   right$0);
         case 15:
          var
           schema=_gH_[4],
           e$0=_gH_[3],
           inj=_gH_[2],
           proj=_gH_[1],
           e$1=lift_union(e$0),
           _gI_=e$1[1];
          if(typeof _gI_ !== "number" && 13 === _gI_[0])
           {var
             cases=_gI_[3],
             tag_size=_gI_[2],
             kind$1=_gI_[1],
             _gJ_=
              function(param)
               {var
                 tag=param[6],
                 inj$0=param[5],
                 proj$0=param[4],
                 encoding=param[3],
                 description=param[2],
                 title=param[1];
                function _gK_(x){return caml_call1(inj,caml_call1(inj$0,x))}
                return [0,
                        title,
                        description,
                        encoding,
                        function(x){return caml_call1(proj$0,caml_call1(proj,x))},
                        _gK_,
                        tag]},
             eta$0=[13,kind$1,tag_size,caml_call2(Stdlib_list[17],_gJ_,cases)];
            return [0,eta$0,0]}
          var eta=[15,proj,inj,e$1,schema];
          return [0,eta,0]
         }
      return e}
    function case_json(param)
     {var
       inj=param[5],
       proj=param[4],
       e=param[3],
       description=param[2],
       title=param[1],
       _gG_=convert(e);
      return caml_call5(include[48],[0,title],description,_gG_,proj,inj)}
    function convert(e$9)
     {var _gA_=e$9[2];
      if(_gA_){var json_encoding$0=_gA_[1];return json_encoding$0}
      var _gB_=lift_union(e$9)[1];
      if(typeof _gB_ === "number")
       switch(_gB_)
        {case 0:var json_encoding$1=include[4];break;
         case 1:var json_encoding$1=include[5];break;
         case 2:var json_encoding$1=include[3];break;
         case 3:var json_encoding$1=include[12];break;
         case 4:
          var json_encoding$1=caml_call3(include[9],-128,127,cst_int8);break;
         case 5:
          var json_encoding$1=caml_call3(include[9],0,255,cst_uint8);break;
         case 6:
          var json_encoding$1=caml_call3(include[9],-32768,32767,cst_int16);
          break;
         case 7:
          var json_encoding$1=caml_call3(include[9],0,65535,cst_uint16);break;
         case 8:var json_encoding$1=include[6];break;
         case 9:var json_encoding$1=include[7];break;
         case 10:var json_encoding$1=int64_encoding;break;
         case 11:var json_encoding$1=n_encoding$0;break;
         case 12:var json_encoding$1=z_encoding$0;break;
         default:var json_encoding$1=include[17]}
      else
       switch(_gB_[0])
        {case 0:var s=_gB_[1],json_encoding$1=caml_call1(include[15],s);break;
         case 1:
          var
           maximum=_gB_[2],
           minimum=_gB_[1],
           json_encoding$1=
            caml_call3(include[9],minimum,maximum,cst_rangedInt);
          break;
         case 2:
          var
           maximum$0=_gB_[2],
           minimum$0=_gB_[1],
           json_encoding$1=
            caml_call3(include[18],minimum$0,maximum$0,cst_rangedFloat);
          break;
         case 3:
          var _gg_=_gB_[1],switch$0=0;
          if(typeof _gg_ === "number" || ! (332360020 === _gg_[1]))
           switch$0 = 1;
          else
           var
            expected=_gg_[2],
            check=
             function(s)
              {var found=caml_ml_bytes_length(s);
               if(found !== expected)
                {var
                  _gE_=caml_call2(Stdlib_format[127],_ec_,expected),
                  _gF_=caml_call2(Stdlib_format[127],_ed_,found);
                 throw [0,include[58],[0,0,[0,include[59],_gF_,_gE_]]]}
               return s},
            json_encoding$1=caml_call4(include[51],check,check,0,bytes_jsont);
          if(switch$0)var json_encoding$1=bytes_jsont;
          break;
         case 4:
          var _gh_=_gB_[1],switch$1=0;
          if(typeof _gh_ === "number" || ! (332360020 === _gh_[1]))
           switch$1 = 1;
          else
           var
            expected$0=_gh_[2],
            check$0=
             function(s)
              {var found=caml_ml_string_length(s);
               if(found !== expected$0)
                {var
                  _gC_=caml_call2(Stdlib_format[127],_ee_,expected$0),
                  _gD_=caml_call2(Stdlib_format[127],_ef_,found);
                 throw [0,include[58],[0,0,[0,include[59],_gD_,_gC_]]]}
               return s},
            json_encoding$1=
             caml_call4(include[51],check$0,check$0,0,raw_string_encoding);
          if(switch$1)var json_encoding$1=raw_string_encoding;
          break;
         case 5:var e=_gB_[1],json_encoding$1=convert(e);break;
         case 6:
          var
           tbl=_gB_[1],
           _gi_=0,
           _gj_=
            function(a,param,acc){var str=param[1];return [0,[0,str,a],acc]},
           _gk_=caml_call3(Stdlib_hashtbl[14],_gj_,tbl,_gi_),
           json_encoding$1=caml_call1(include[14],_gk_);
          break;
         case 7:
          var
           e$0=_gB_[2],
           _gl_=convert(e$0),
           json_encoding$1=caml_call1(include[34],_gl_);
          break;
         case 8:
          var
           e$1=_gB_[2],
           _gm_=convert(e$1),
           json_encoding$1=caml_call1(include[35],_gm_);
          break;
         case 9:
          var f=_gB_[1];
          switch(f[0])
           {case 0:
             var
              description$0=f[4],
              title$0=f[3],
              e$6=f[2],
              name$0=f[1],
              _gx_=convert(e$6),
              _gn_=caml_call4(include[20],title$0,description$0,name$0,_gx_);
             break;
            case 1:
             var
              description$1=f[5],
              title$1=f[4],
              e$7=f[3],
              name$1=f[1],
              _gy_=convert(e$7),
              _gn_=caml_call4(include[21],title$1,description$1,name$1,_gy_);
             break;
            default:
             var
              description$2=f[5],
              title$2=f[4],
              d=f[3],
              e$8=f[2],
              name$2=f[1],
              _gz_=convert(e$8),
              _gn_=caml_call5(include[22],title$2,description$2,name$2,_gz_,d)}
          var json_encoding$1=caml_call1(include[23],_gn_);
          break;
         case 10:
          var
           right=_gB_[3],
           left=_gB_[2],
           _go_=convert(right),
           _gp_=convert(left),
           json_encoding$1=caml_call2(include[33],_gp_,_go_);
          break;
         case 11:
          var
           e$2=_gB_[1],
           _gq_=convert(e$2),
           json_encoding$1=caml_call1(include[37],_gq_);
          break;
         case 12:
          var
           right$0=_gB_[3],
           left$0=_gB_[2],
           _gr_=convert(right$0),
           _gs_=convert(left$0),
           json_encoding$1=caml_call2(include[47],_gs_,_gr_);
          break;
         case 13:
          var
           cases=_gB_[3],
           _gt_=caml_call2(Stdlib_list[17],case_json,cases),
           json_encoding$1=caml_call1(include[49],_gt_);
          break;
         case 14:
          var
           fix=_gB_[5],
           name=_gB_[2],
           _gu_=
            function(json_encoding)
             {return convert(caml_call1(fix,[0,_gB_,[0,json_encoding]]))},
           json_encoding$1=caml_call4(include[52],name,0,0,_gu_);
          break;
         case 15:
          var
           schema=_gB_[4],
           e$3=_gB_[3],
           inj=_gB_[2],
           proj=_gB_[1],
           _gv_=convert(e$3),
           json_encoding$1=caml_call4(include[51],proj,inj,schema,_gv_);
          break;
         case 16:
          var
           e$4=_gB_[4],
           description=_gB_[3],
           title=_gB_[2],
           id=_gB_[1],
           _gw_=convert(e$4),
           json_encoding$1=caml_call4(include[57],id,title,description,_gw_);
          break;
         case 17:
          var json_encoding=_gB_[2],json_encoding$1=json_encoding;break;
         case 18:var e$5=_gB_[2],json_encoding$1=convert(e$5);break;
         case 19:var encoding=_gB_[2],json_encoding$1=convert(encoding);break;
         default:var f$0=_gB_[1],json_encoding$1=convert(caml_call1(f$0,0))}
      e$9[2] = [0,json_encoding$1];
      return json_encoding$1}
    var
     _ej_=include[58],
     _ek_=include[59],
     _el_=include[60],
     _em_=include[61],
     _en_=include[62],
     _eo_=include[63],
     _ep_=include[65],
     _eg_=include[1],
     _eh_=include[2],
     _ei_=include[56];
    function construct(e,v){return caml_call2(_eg_,convert(e),v)}
    function destruct(e,v){return caml_call2(_eh_,convert(e),v)}
    function schema$0(definitions_path,e)
     {return caml_call2(_ei_,definitions_path,convert(e))}
    function cannot_destruct(fmt)
     {function _gf_(msg){throw [0,_ej_,[0,0,[0,Stdlib[7],msg]]]}
      return caml_call2(Stdlib_format[134],_gf_,fmt)}
    function to_string(opt,minify,j)
     {if(opt)var sth=opt[1],newline=sth;else var newline=0;
      var
       _gd_=newline?cst$2:cst$3,
       _ge_=caml_call3(Json_repr[3],minify,0,Json_repr[4]);
      return caml_call4(Stdlib_format[127],_eq_,_ge_,j,_gd_)}
    var pp$0=caml_call3(Json_repr[3],0,0,Json_repr[4]);
    function from_string(s)
     {try
       {var
         _ga_=caml_call2(Stdlib[28],s,cst$4),
         _gb_=caml_call2(Stdlib[28],cst$5,_ga_),
         val=caml_call1(Ezjsonm[5],_gb_)}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Ezjsonm[29]){var msg=exn[3];return [1,msg]}
        throw exn}
      if(typeof val !== "number" && 65 === val[1])
       {var _gc_=val[2];
        if(_gc_ && ! _gc_[2]){var json=_gc_[1];return [0,json]}}
      return _er_}
    var _es_=0;
    function _et_(s)
     {try
       {var
         _f8_=caml_call1(Stdlib_bytes[5],s),
         _f9_=Json_repr_bson[6],
         _f__=
          function(eta){return caml_call1(caml_call4(_f9_,0,0,0,0),eta)}(_f8_),
         _f$_=caml_call3(Json_repr[2],Json_repr_bson[1],Json_repr[4],_f__);
        return _f$_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Json_repr_bson[5])
         {var msg=exn[2];throw [0,Parse_error,msg]}
        throw exn}}
    var
     binary=
      conv
       (function(json)
         {var
           eta=caml_call3(Json_repr[2],Json_repr[4],Json_repr_bson[1],json),
           arg=Json_repr_bson[4],
           _f7_=caml_call3(arg,0,0,eta);
          return caml_call1(Stdlib_bytes[6],_f7_)},
        _et_,
        _es_,
        string$1),
     json=include[53],
     json$0=raw_splitted(json,binary),
     json_schema=conv(Json_schema[19],Json_schema[20],0,json$0),
     Data_encoding_Json=
      [0,
       convert,
       schema$0,
       json$0,
       json_schema,
       construct,
       destruct,
       _ej_,
       _ek_,
       _el_,
       _em_,
       _en_,
       _eo_,
       _ep_,
       cannot_destruct,
       wrap_error,
       from_string,
       to_string,
       pp$0,
       bytes_jsont];
    caml_register_global(457,Data_encoding_Json,"Data_encoding__Json");
    var
     EncodingTable=caml_call1(Stdlib_map[1],[0,Stdlib_string[33]]),
     table=[0,EncodingTable[1]];
    function description(param){var description=param[2];return description}
    function json_schema$0(param)
     {var encoding=param[1],json_schema=schema$0(0,encoding);
      return json_schema}
    function binary_schema(param)
     {var encoding=param[1],binary_schema=describe(encoding);
      return binary_schema}
    function json_pretty_printer(param,fmt,json)
     {var pp=param[3],encoding=param[1];
      if(pp)
       {var pp$1=pp[1],json$0=destruct(encoding,json);
        return caml_call4(Stdlib_format[123],fmt,_eu_,pp$1,json$0)}
      return caml_call4(Stdlib_format[123],fmt,_ev_,pp$0,json)}
    function binary_pretty_printer(param,fmt,bytes)
     {var pp=param[3],encoding=param[1],data=of_bytes_exn(encoding,bytes);
      if(pp)
       {var pp$1=pp[1];
        return caml_call4(Stdlib_format[123],fmt,_ew_,pp$1,data)}
      var json=construct(encoding,data);
      return caml_call4(Stdlib_format[123],fmt,_ex_,pp$0,json)}
    function register(pp,encoding$0)
     {var param=encoding$0;
      for(;;)
       {var encoding=param[1],switch$0=0;
        if(typeof encoding !== "number")
         switch(encoding[0])
          {case 16:
            var
             description=encoding[3],
             id=encoding[1],
             match=[0,[0,id,description]];
            switch$0 = 2;
            break;
           case 17:var param$0=encoding[1];switch$0 = 1;break;
           case 18:
           case 19:var param$0=encoding[2];switch$0 = 1;break
           }
        switch(switch$0)
         {case 0:var match=0;break;case 1:var param=param$0;continue}
        if(match)
         {var
           match$0=match[1],
           description$0=match$0[2],
           id$0=match$0[1],
           _f5_=table[1],
           _f6_=
            function(param)
             {if(param)
               return caml_call3(Stdlib_format[134],Stdlib[1],_ey_,id$0);
              var record=[0,encoding$0,description$0,pp];
              return [0,record]};
          table[1] = caml_call3(EncodingTable[5],id$0,_f6_,_f5_);
          return 0}
        return caml_call1(Stdlib[1],cst_Data_encoding_Registration)}}
    function find$0(id){return caml_call2(EncodingTable[28],id,table[1])}
    function list$1(param){return caml_call1(EncodingTable[19],table[1])}
    function bytes_of_json(param,json)
     {var encoding=param[1],data=destruct(encoding,json);
      return to_bytes_opt(0,encoding,data)}
    function json_of_bytes(param,bytes)
     {var encoding=param[1],match=of_bytes_opt(encoding,bytes);
      if(match){var v=match[1];return [0,construct(encoding,v)]}
      return 0}
    var
     Data_encoding_Registration=
      [0,
       binary_schema,
       json_schema$0,
       description,
       json_pretty_printer,
       binary_pretty_printer,
       register,
       find$0,
       list$1,
       bytes_of_json,
       json_of_bytes];
    caml_register_global
     (459,Data_encoding_Registration,"Data_encoding__Registration");
    function is_empty(param){var unread=param[4];return 0 === unread?1:0}
    function of_buffer(current){return [0,current,0,0,current[3]]}
    var
     buffer=caml_create_bytes(0),
     len=caml_ml_bytes_length(buffer),
     empty$0=of_buffer([0,buffer,0,len]);
    function push(buffer,stream)
     {return [0,
              stream[1],
              stream[2],
              [0,buffer,stream[3]],
              stream[4] + caml_ml_bytes_length(buffer) | 0]}
    var
     Need_more_data=
      [248,cst_Data_encoding_Binary_strea,caml_fresh_oo_id(0)];
    function read$0(stream,len)
     {if(stream[4] < len)throw Need_more_data;
      if(len <= stream[1][3])
       {var _f3_=stream[1];
        if(len <= _f3_[3])
         {var
           current=[0,_f3_[1],_f3_[2] + len | 0,_f3_[3] - len | 0],
           res=[0,_f3_[1],_f3_[2],len];
          return [0,res,[0,current,stream[2],stream[3],stream[4] - len | 0]]}
        throw [0,Assert_failure,_ez_]}
      var res$0=[0,caml_create_bytes(len),0,len];
      caml_call5
       (Stdlib_bytes[11],stream[1][1],stream[1][2],res$0[1],0,stream[1][3]);
      var ofs=stream[1][3],pending_rev=stream[3],param=stream[2];
      for(;;)
       {if(param)
         {var
           pending=param[2],
           buffer=param[1],
           _f4_=caml_ml_bytes_length(buffer),
           to_read=len - ofs | 0;
          if(to_read <= _f4_)
           {caml_call5(Stdlib_bytes[11],buffer,0,res$0[1],ofs,to_read);
            return [0,
                    res$0,
                    [0,
                     [0,buffer,to_read,_f4_ - to_read | 0],
                     pending,
                     pending_rev,
                     stream[4] - len | 0]]}
          caml_call5(Stdlib_bytes[11],buffer,0,res$0[1],ofs,_f4_);
          var ofs$0=ofs + _f4_ | 0,ofs=ofs$0,param=pending;
          continue}
        var
         param$0=caml_call1(Stdlib_list[9],pending_rev),
         pending_rev=0,
         param=param$0;
        continue}}
    var
     Data_encoding_Binary_stream=
      [0,Need_more_data,is_empty,empty$0,of_buffer,read$0,push];
    caml_register_global
     (460,Data_encoding_Binary_stream,"Data_encoding__Binary_stream");
    function raise$1(e){throw [0,Read_error,e]}
    function check_remaining_bytes$0(state,size)
     {var _f2_=state[2];
      if(_f2_)
       {var len=_f2_[1];return len < size?raise$1(0):[0,len - size | 0]}
      return 0}
    function check_allowed_bytes$0(state,size)
     {var _f1_=state[3];
      if(_f1_)
       {var len=_f1_[1];return len < size?raise$1(4):[0,len - size | 0]}
      return 0}
    function read_atom$0(resume,size,conv,state,k)
     {try
       {var
         remaining_bytes=check_remaining_bytes$0(state,size),
         allowed_bytes=check_allowed_bytes$0(state,size),
         match=read$0(state[1],size),
         stream=match[2],
         res=match[1],
         _f0_=[0,stream,remaining_bytes,allowed_bytes,state[4] + size | 0],
         v=[0,caml_call2(conv,res[1],res[2]),_f0_]}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Read_error){var error=exn[2];return [2,error]}
        if(exn === Need_more_data)return [1,resume];
        throw exn}
      return caml_call1(k,v)}
    function uint8$3(r)
     {return function(_fY_,_fZ_)
       {return read_atom$0(r,uint8,get_uint8,_fY_,_fZ_)}}
    function uint16$3(r)
     {return function(_fW_,_fX_)
       {return read_atom$0(r,int16,get_uint16,_fW_,_fX_)}}
    function int8$3(r)
     {return function(_fU_,_fV_)
       {return read_atom$0(r,int8,get_int8,_fU_,_fV_)}}
    function int16$3(r)
     {return function(_fS_,_fT_)
       {return read_atom$0(r,int16,get_int16,_fS_,_fT_)}}
    function float$4(r)
     {return function(_fQ_,_fR_)
       {return read_atom$0(r,float$0,get_double,_fQ_,_fR_)}}
    function bool$3(resume,state,k)
     {function _fP_(param)
       {var state=param[2],v=param[1];
        return caml_call1(k,[0,0 !== v?1:0,state])}
      return caml_call2(int8$3(resume),state,_fP_)}
    function uint30$2(r)
     {function _fM_(buffer,ofs)
       {var v=get_int32(buffer,ofs);
        if(v < 0)raise$1([2,0,v,1073741823]);
        return v}
      return function(_fN_,_fO_){return read_atom$0(r,uint30,_fM_,_fN_,_fO_)}}
    function int31$3(r)
     {function _fJ_(buffer,ofs){return get_int32(buffer,ofs)}
      return function(_fK_,_fL_){return read_atom$0(r,int31,_fJ_,_fK_,_fL_)}}
    function read_z$0(res,value,bit_in_value,state,k)
     {function resume(buffer)
       {var stream=push(buffer,state[1]);
        return read_z$0
                (res,
                 value,
                 bit_in_value,
                 [0,stream,state[2],state[3],state[4]],
                 k)}
      function _fI_(param)
       {var
         state=param[2],
         byte$0=param[1],
         value$0=value | (byte$0 & 127) << bit_in_value,
         bit_in_value$0=bit_in_value + 7 | 0;
        if(8 <= bit_in_value$0)
         {caml_call2(Stdlib_buffer[10],res,value$0 & 255);
          var
           value$1=value$0 >>> 8 | 0,
           bit_in_value$1=bit_in_value$0 - 8 | 0,
           value$2=value$1,
           bit_in_value$2=bit_in_value$1}
        else
         var value$2=value$0,bit_in_value$2=bit_in_value$0;
        if(128 === (byte$0 & 128))
         return read_z$0(res,value$2,bit_in_value$2,state,k);
        if(0 < bit_in_value$2)caml_call2(Stdlib_buffer[10],res,value$2);
        if(0 === byte$0)raise$1(3);
        return caml_call1
                (k,
                 [0,
                  runtime.ml_z_of_bits(caml_call1(Stdlib_buffer[2],res)),
                  state])}
      return caml_call2(uint8$3(resume),state,_fI_)}
    function fixed_length_bytes$0(length,r)
     {function _fF_(buf,ofs)
       {return caml_call3(Stdlib_bytes[7],buf,ofs,length)}
      return function(_fG_,_fH_){return read_atom$0(r,length,_fF_,_fG_,_fH_)}}
    function fixed_length_string$0(length,r)
     {function _fC_(buf,ofs)
       {return caml_call3(Stdlib_bytes[8],buf,ofs,length)}
      return function(_fD_,_fE_){return read_atom$0(r,length,_fC_,_fD_,_fE_)}}
    function skip(n,state,k)
     {function resume(buffer)
       {var stream=push(buffer,state[1]);
        try
         {var _fB_=skip(n,[0,stream,state[2],state[3],state[4]],k);
          return _fB_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Read_error){var err=exn[2];return [2,err]}
          throw exn}}
      function _fA_(param){var state=param[2];return caml_call1(k,state)}
      return caml_call2(fixed_length_string$0(n,resume),state,_fA_)}
    function read_list$0(error,max_length,e,state,k)
     {function loop(state,acc,max_length)
       {var size=remaining_bytes(state);
        return 0 === size
                ?caml_call1(k,[0,caml_call1(Stdlib_list[9],acc),state])
                :0 === max_length
                  ?raise$1(error)
                  :_eB_
                    (0,
                     e,
                     state,
                     function(param)
                      {var state=param[2],v=param[1];
                       return loop(state,[0,v,acc],max_length - 1 | 0)})}
      return loop(state,0,max_length)}
    function _eN_(counter,whole,e,state,k)
     {var whole$0=whole,e$0=e,state$0=state,k$0=k;
      for(;;)
       {var
         resume$0=
          function(k,state,e,whole)
           {function resume(buffer)
             {var stream=push(buffer,state[1]);
              try
               {var
                 _fz_=
                  _eB_(whole,e,[0,stream,state[2],state[3],state[4]],k);
                return _fz_}
              catch(exn)
               {exn = caml_wrap_exception(exn);
                if(exn[1] === Read_error){var err=exn[2];return [2,err]}
                throw exn}}
            return resume},
         resume=resume$0(k$0,state$0,e$0,whole$0);
        if(-1027682724 === classify(e$0) && 0 === state$0[2])
         throw [0,Assert_failure,_eC_];
        var _fh_=e$0[1];
        if(typeof _fh_ === "number")
         switch(_fh_)
          {case 0:return caml_call1(k$0,[0,0,state$0]);
           case 1:return caml_call1(k$0,[0,0,state$0]);
           case 2:return caml_call1(k$0,[0,0,state$0]);
           case 3:return bool$3(resume,state$0,k$0);
           case 4:return caml_call2(int8$3(resume),state$0,k$0);
           case 5:return caml_call2(uint8$3(resume),state$0,k$0);
           case 6:return caml_call2(int16$3(resume),state$0,k$0);
           case 7:return caml_call2(uint16$3(resume),state$0,k$0);
           case 8:return caml_call2(int31$3(resume),state$0,k$0);
           case 9:return read_atom$0(resume,int32,get_int32,state$0,k$0);
           case 10:return read_atom$0(resume,int64,get_int64,state$0,k$0);
           case 11:
            var
             _fe_=
              function(param)
               {var state=param[2],first=param[1],first_value=first & 127;
                return 128 === (first & 128)
                        ?read_z$0
                          (caml_call1(Stdlib_buffer[1],100),first_value,7,state,k$0)
                        :caml_call1(k$0,[0,runtime.ml_z_of_int(first_value),state])};
            return caml_call2(uint8$3(resume),state$0,_fe_);
           case 12:
            var
             _ff_=
              function(param)
               {var
                 state=param[2],
                 first=param[1],
                 first_value=first & 63,
                 sign=0 !== (first & 64)?1:0;
                if(128 === (first & 128))
                 {var
                   _ft_=
                    function(param)
                     {var
                       state=param[2],
                       n=param[1],
                       _fv_=sign?runtime.ml_z_neg(n):n;
                      return caml_call1(k$0,[0,_fv_,state])};
                  return read_z$0
                          (caml_call1(Stdlib_buffer[1],100),first_value,6,state,_ft_)}
                var
                 n=runtime.ml_z_of_int(first_value),
                 _fu_=sign?runtime.ml_z_neg(n):n;
                return caml_call1(k$0,[0,_fu_,state])};
            return caml_call2(uint8$3(resume),state$0,_ff_);
           default:return caml_call2(float$4(resume),state$0,k$0)}
        else
         switch(_fh_[0])
          {case 0:return caml_call1(k$0,[0,0,state$0]);
           case 1:
            var
             maximum=_fh_[2],
             minimum=_fh_[1],
             match=range_to_size(minimum,maximum),
             read_int=
              815034505 <= match
               ?980827423 <= match
                 ?980827863 <= match?uint30$2:uint16$3
                 :919245630 <= match?uint8$3:int8$3
               :-783416531 <= match?int31$3:int16$3,
             _fc_=
              function(param)
               {var
                 state=param[2],
                 ranged=param[1],
                 ranged$0=0 < minimum?ranged + minimum | 0:ranged;
                if(minimum <= ranged$0 && ranged$0 <= maximum)
                 return caml_call1(k$0,[0,ranged$0,state]);
                return [2,[2,minimum,ranged$0,maximum]]};
            return caml_call2(read_int(resume),state$0,_fc_);
           case 2:
            var
             maximum$0=_fh_[2],
             minimum$0=_fh_[1],
             _fd_=
              function(param)
               {var state=param[2],ranged=param[1];
                if(minimum$0 <= ranged && ranged <= maximum$0)
                 return caml_call1(k$0,[0,ranged,state]);
                return [2,[3,minimum$0,ranged,maximum$0]]};
            return caml_call2(float$4(resume),state$0,_fd_);
           case 3:
            var _fi_=_fh_[1];
            if(typeof _fi_ === "number")
             {var size=remaining_bytes(state$0);
              return caml_call2(fixed_length_bytes$0(size,resume),state$0,k$0)}
            var n=_fi_[2];
            return caml_call2(fixed_length_bytes$0(n,resume),state$0,k$0);
           case 4:
            var _fj_=_fh_[1];
            if(typeof _fj_ === "number")
             {var size$0=remaining_bytes(state$0);
              return caml_call2
                      (fixed_length_string$0(size$0,resume),state$0,k$0)}
            var n$0=_fj_[2];
            return caml_call2(fixed_length_string$0(n$0,resume),state$0,k$0);
           case 5:
            var
             n$1=_fh_[2],
             e$1=_fh_[1],
             k$9=
              function(k,n)
               {function k$0(param)
                 {var state=param[2],v=param[1];
                  return skip
                          (n,state,function(state){return caml_call1(k,[0,v,state])})}
                return k$0},
             k$1=k$9(k$0,n$1),
             whole$0=0,
             e$0=e$1,
             k$0=k$1;
            continue;
           case 6:
            var
             arr=_fh_[2],
             match$0=enum_size(arr),
             read_index=
              980827423 === match$0
               ?uint16$3
               :980827863 <= match$0?uint30$2:uint8$3,
             _fg_=
              function(param)
               {var state=param[2],index=param[1];
                return arr.length - 1 <= index
                        ?_eA_
                        :caml_call1
                          (k$0,[0,caml_check_bound(arr,index)[1 + index],state])};
            return caml_call2(read_index(resume),state$0,_fg_);
           case 7:
            var e$2=_fh_[2],max_length=_fh_[1];
            if(max_length)
             var l=max_length[1],max_length$0=l;
            else
             var max_length$0=Stdlib[19];
            return read_list$0
                    (6,
                     max_length$0,
                     e$2,
                     state$0,
                     function(param)
                      {var state=param[2],l=param[1];
                       return caml_call1
                               (k$0,[0,caml_call1(Stdlib_array[12],l),state])});
           case 8:
            var e$3=_fh_[2],max_length$1=_fh_[1];
            if(max_length$1)
             var l$0=max_length$1[1],max_length$2=l$0;
            else
             var max_length$2=Stdlib[19];
            return read_list$0(5,max_length$2,e$3,state$0,k$0);
           case 9:
            var _fk_=_fh_[1];
            switch(_fk_[0])
             {case 0:var e$4=_fk_[2],e$0=e$4;continue;
              case 1:
               if(57067359 <= _fk_[2])
                {var e$5=_fk_[3];
                 return bool$3
                         (resume,
                          state$0,
                          function(param)
                           {var state=param[2],present=param[1];
                            return present
                                    ?_eB_
                                      (whole$0,
                                       e$5,
                                       state,
                                       function(param)
                                        {var state=param[2],v=param[1];
                                         return caml_call1(k$0,[0,[0,v],state])})
                                    :caml_call1(k$0,[0,0,state])})}
               var e$6=_fk_[3],size$1=remaining_bytes(state$0);
               if(0 === size$1)return caml_call1(k$0,[0,0,state$0]);
               var
                k$10=
                 function(k)
                  {function k$0(param)
                    {var state=param[2],v=param[1];
                     return caml_call1(k,[0,[0,v],state])}
                   return k$0},
                k$2=k$10(k$0),
                e$0=e$6,
                k$0=k$2;
               continue;
              default:var e$7=_fk_[2],e$0=e$7;continue}
           case 10:
            var _fl_=_fh_[1];
            if(typeof _fl_ === "number")
             {if(57067359 <= _fl_)
               {var
                 right=_fh_[3],
                 e$8=_fh_[2],
                 k$11=
                  function(k,whole,right)
                   {function k$0(param)
                     {var state=param[2],left=param[1];
                      return _eB_
                              (whole,
                               right,
                               state,
                               function(param)
                                {var state=param[2],right=param[1];
                                 return caml_call1(k,[0,[0,left,right],state])})}
                    return k$0},
                 k$3=k$11(k$0,whole$0,right),
                 whole$0=0,
                 e$0=e$8,
                 k$0=k$3;
                continue}
              var right$0=_fh_[3],left=_fh_[2];
              if(counter < 50)
               {var counter$0=counter + 1 | 0;
                return read_variable_pair$0
                        (counter$0,left,right$0,state$0,k$0)}
              return caml_trampoline_return
                      (read_variable_pair$0,[0,left,right$0,state$0,k$0])}
            var right$1=_fh_[3],left$0=_fh_[2],sz=_fl_[2];
            check_remaining_bytes$0(state$0,sz);
            check_allowed_bytes$0(state$0,sz);
            var
             k$12=
              function(k,whole,right)
               {function k$0(param)
                 {var state=param[2],left=param[1];
                  return _eB_
                          (whole,
                           right,
                           state,
                           function(param)
                            {var state=param[2],right=param[1];
                             return caml_call1(k,[0,[0,left,right],state])})}
                return k$0},
             k$4=k$12(k$0,whole$0,right$1),
             whole$0=0,
             e$0=left$0,
             k$0=k$4;
            continue;
           case 11:var e$9=_fh_[1],e$0=e$9;continue;
           case 12:
            var _fm_=_fh_[1];
            if(typeof _fm_ === "number")
             {if(57067359 <= _fm_)
               {var
                 right$2=_fh_[3],
                 e$10=_fh_[2],
                 k$13=
                  function(k,whole,right)
                   {function k$0(param)
                     {var state=param[2],left=param[1];
                      return _eB_
                              (whole,
                               right,
                               state,
                               function(param)
                                {var state=param[2],right=param[1];
                                 return caml_call1(k,[0,[0,left,right],state])})}
                    return k$0},
                 k$5=k$13(k$0,whole$0,right$2),
                 whole$0=0,
                 e$0=e$10,
                 k$0=k$5;
                continue}
              var right$3=_fh_[3],left$1=_fh_[2];
              if(counter < 50)
               {var counter$1=counter + 1 | 0;
                return read_variable_pair$0
                        (counter$1,left$1,right$3,state$0,k$0)}
              return caml_trampoline_return
                      (read_variable_pair$0,[0,left$1,right$3,state$0,k$0])}
            var right$4=_fh_[3],left$2=_fh_[2],sz$0=_fm_[2];
            check_remaining_bytes$0(state$0,sz$0);
            check_allowed_bytes$0(state$0,sz$0);
            var
             k$14=
              function(k,whole,right)
               {function k$0(param)
                 {var state=param[2],left=param[1];
                  return _eB_
                          (whole,
                           right,
                           state,
                           function(param)
                            {var state=param[2],right=param[1];
                             return caml_call1(k,[0,[0,left,right],state])})}
                return k$0},
             k$6=k$14(k$0,whole$0,right$4),
             whole$0=0,
             e$0=left$2,
             k$0=k$6;
            continue;
           case 13:
            var
             cases=_fh_[3],
             tag_size=_fh_[2],
             _fn_=
              function(param)
               {var state=param[2],ctag=param[1];
                function _fx_(param)
                 {var _fy_=param[6];
                  if(_fy_){var tag=_fy_[1];return tag === ctag?1:0}
                  return 0}
                var match=caml_call2(Stdlib_list[36],_fx_,cases);
                if(match)
                 {var match$0=match[1],inj=match$0[5],encoding=match$0[3];
                  return _eB_
                          (whole$0,
                           encoding,
                           state,
                           function(param)
                            {var state=param[2],v=param[1];
                             return caml_call1(k$0,[0,caml_call1(inj,v),state])})}
                return [2,[0,ctag]]},
             _fr_=980827423 <= tag_size?uint16$3:uint8$3;
            return caml_call2(_fr_(resume),state$0,_fn_);
           case 14:var fix=_fh_[5],e$11=caml_call1(fix,e$0),e$0=e$11;continue;
           case 15:
            var
             e$12=_fh_[3],
             inj=_fh_[2],
             k$15=
              function(k,inj)
               {function k$0(param)
                 {var state=param[2],v=param[1];
                  return caml_call1(k,[0,caml_call1(inj,v),state])}
                return k$0},
             k$7=k$15(k$0,inj),
             e$0=e$12,
             k$0=k$7;
            continue;
           case 16:var e$13=_fh_[4],e$0=e$13;continue;
           case 17:var e$14=_fh_[1],e$0=e$14;continue;
           case 18:
            var
             e$15=_fh_[2],
             kind=_fh_[1],
             _fo_=
              function(param)
               {var
                 state=param[2],
                 sz=param[1],
                 remaining=check_remaining_bytes$0(state,sz),
                 state$0=[0,state[1],[0,sz],state[3],state[4]];
                check_allowed_bytes$0(state$0,sz);
                return _eB_
                        (1,
                         e$15,
                         state$0,
                         function(param)
                          {var state=param[2],v=param[1];
                           return runtime.caml_notequal(state[2],_eD_)
                                   ?_eE_
                                   :caml_call1
                                     (k$0,[0,v,[0,state[1],remaining,state[3],state[4]]])})},
             _fs_=
              815034505 <= kind
               ?980827423 <= kind
                 ?980827863 <= kind?uint30$2:uint16$3
                 :919245630 <= kind?uint8$3:int8$3
               :-783416531 <= kind?int31$3:int16$3;
            return caml_call2(_fs_(resume),state$0,_fo_);
           case 19:
            var
             e$16=_fh_[2],
             limit=_fh_[1],
             old_allowed_bytes=state$0[3],
             _fp_=state$0[3];
            if(_fp_)
             var
              current_limit=_fp_[1],
              limit$0=caml_call2(Stdlib[16],current_limit,limit);
            else
             var limit$0=limit;
            var _fq_=state$0[2],switch$0=0;
            if(_fq_)
             {var remaining=_fq_[1],switch$1=0;
              if(whole$0 && limit$0 < remaining)
               {raise$1(4);switch$0 = 1;switch$1 = 1}}
            var
             state$1=[0,state$0[1],state$0[2],[0,limit$0],state$0[4]],
             k$16=
              function(k,old_allowed_bytes,limit)
               {function k$0(param)
                 {var state=param[2],v=param[1];
                  if(old_allowed_bytes)
                   {var old_limit=old_allowed_bytes[1],_fw_=state[3];
                    if(! _fw_)throw [0,Assert_failure,_eF_];
                    var
                     remaining=_fw_[1],
                     read=limit - remaining | 0,
                     allowed_bytes=[0,old_limit - read | 0]}
                  else
                   var allowed_bytes=0;
                  return caml_call1
                          (k,[0,v,[0,state[1],state[2],allowed_bytes,state[4]]])}
                return k$0},
             k$8=k$16(k$0,old_allowed_bytes,limit$0),
             e$0=e$16,
             state$0=state$1,
             k$0=k$8;
            continue;
           default:var f=_fh_[1],e$17=caml_call1(f,0),e$0=e$17;continue}}}
    function read_variable_pair$0(counter,e1,e2,state,k)
     {var
       size=remaining_bytes(state),
       match=classify(e1),
       match$0=classify(e2),
       switch$0=0;
      if(typeof match === "number" && ! (57067359 <= match))
       {if(typeof match$0 !== "number" && 332360020 === match$0[1])
         {var n=match$0[2];
          if(size < n)return _eI_;
          var
           state$0=[0,state[1],[0,size - n | 0],state[3],state[4]],
           _fa_=
            function(param)
             {var state=param[2],left=param[1];
              if(caml_equal(state[2],_eJ_))
               {var state$0=[0,state[1],[0,n],state[3],state[4]];
                return _eB_
                        (1,
                         e2,
                         state$0,
                         function(param)
                          {var state=param[2],right=param[1];
                           if(caml_equal(state[2],_eK_))
                            return caml_call1(k,[0,[0,left,right],state]);
                           throw [0,Assert_failure,_eL_]})}
              throw [0,Assert_failure,_eM_]},
           _fb_=1;
          if(counter < 50)
           {var counter$0=counter + 1 | 0;
            return _eN_(counter$0,_fb_,e1,state$0,_fa_)}
          return caml_trampoline_return(_eN_,[0,_fb_,e1,state$0,_fa_])}}
      else
       switch$0 = 1;
      if(switch$0 && -1027682724 === match$0)
       {var
         _e__=
          function(param)
           {var state=param[2],left=param[1];
            return _eB_
                    (1,
                     e2,
                     state,
                     function(param)
                      {var state=param[2],right=param[1];
                       return caml_call1(k,[0,[0,left,right],state])})},
         _e$_=0;
        if(counter < 50)
         {var counter$1=counter + 1 | 0;
          return _eN_(counter$1,_e$_,e1,state,_e__)}
        return caml_trampoline_return(_eN_,[0,_e$_,e1,state,_e__])}
      throw [0,Assert_failure,_eH_]}
    function _eB_(whole,e,state,k)
     {return caml_trampoline(_eN_(0,whole,e,state,k))}
    function remaining_bytes(param)
     {var remaining_bytes=param[2];
      if(remaining_bytes){var len=remaining_bytes[1];return len}
      throw [0,Assert_failure,_eG_]}
    function read_rec$0(e,state,k)
     {try
       {var _e9_=_eB_(0,e,state,k);return _e9_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Read_error){var err=exn[2];return [2,err]}
        throw exn}}
    function success(param)
     {var state=param[2],v=param[1];return [0,v,state[4],state[1]]}
    function read_stream(opt,encoding)
     {if(opt)var sth=opt[1],init=sth;else var init=empty$0;
      var match=classify(encoding);
      if(typeof match === "number" && ! (57067359 <= match))
       return caml_call1(Stdlib[1],cst_Data_encoding_Binary_read_);
      var state=[0,init,0,0,0];
      return read_rec$0(encoding,state,success)}
    var include$1=[0,read_stream];
    caml_register_global(461,include$1,"Data_encoding__Binary_stream_reader");
    function construct$0(e,v)
     {var _e8_=convert(e);return caml_call2(Json_repr_bson[2][1],_e8_,v)}
    function destruct$0(e,v)
     {var _e7_=convert(e);return caml_call2(Json_repr_bson[2][2],_e7_,v)}
    var Data_encoding_Bson=[0,construct$0,destruct$0];
    caml_register_global(462,Data_encoding_Bson,"Data_encoding__Bson");
    function splitted(json,binary){return raw_splitted(convert(json),binary)}
    function assoc(enc)
     {var
       _e6_=convert(enc),
       json=caml_call1(include[36],_e6_),
       binary=list$0(0,tup2(string$1,enc));
      return raw_splitted(json,binary)}
    function string$2(length)
     {var
       kind=unsigned_range_to_size(length),
       _e0_=dynamic_size([0,kind],Variable[1]),
       _e1_=check_size(length + integer_to_size(kind) | 0,_e0_),
       _e2_=include[13],
       _e3_=0;
      function _e4_(s)
       {if(length < caml_ml_string_length(s))
         throw [0,include[58],[0,0,[0,Stdlib[6],cst_oversized_string]]];
        return s}
      function _e5_(s)
       {if(length < caml_ml_string_length(s))
         caml_call1(Stdlib[1],cst_oversized_string$0);
        return s}
      return raw_splitted(caml_call4(include[51],_e5_,_e4_,_e3_,_e2_),_e1_)}
    function bytes$2(length)
     {var
       kind=unsigned_range_to_size(length),
       _eV_=dynamic_size([0,kind],Variable[2]),
       _eW_=check_size(length + integer_to_size(kind) | 0,_eV_),
       _eX_=0;
      function _eY_(s)
       {if(length < caml_ml_bytes_length(s))
         throw [0,include[58],[0,0,[0,Stdlib[6],cst_oversized_string$1]]];
        return s}
      function _eZ_(s)
       {if(length < caml_ml_bytes_length(s))
         caml_call1(Stdlib[1],cst_oversized_string$2);
        return s}
      return raw_splitted
              (caml_call4(include[51],_eZ_,_eY_,_eX_,bytes_jsont),_eW_)}
    var Bounded=[0,string$2,bytes$2];
    function force_decode(le)
     {var _eU_=le[1];
      switch(_eU_[0])
       {case 0:var value=_eU_[1];return [0,value];
        case 1:
         var bytes=_eU_[1],match=of_bytes_opt(le[2],bytes);
         if(match){var expr=match[1];le[1] = [2,bytes,expr];return [0,expr]}
         return 0;
        default:var value$0=_eU_[2];return [0,value$0]}}
    function force_bytes(le)
     {var _eT_=le[1];
      switch(_eT_[0])
       {case 0:
         var value=_eT_[1],bytes=to_bytes_exn(0,le[2],value);
         le[1] = [2,bytes,value];
         return bytes;
        case 1:var bytes$0=_eT_[1];return bytes$0;
        default:var bytes$1=_eT_[1];return bytes$1}}
    function lazy_encoding(encoding)
     {var
       _eQ_=0,
       binary=
        conv
         (force_bytes,
          function(bytes){return [0,[1,bytes],encoding]},
          _eQ_,
          bytes$1),
       _eR_=0;
      function _eS_(value){return [0,[0,value],encoding]}
      var
       json=
        conv
         (function(le)
           {var match=force_decode(le);
            if(match){var r=match[1];return r}
            throw Stdlib[3]},
          _eS_,
          _eR_,
          encoding);
      return splitted(json,binary)}
    function make_lazy(encoding,value){return [0,[0,value],encoding]}
    function apply_lazy(fun_value,fun_bytes,fun_combine,le)
     {var _eO_=le[1];
      switch(_eO_[0])
       {case 0:var value=_eO_[1];return caml_call1(fun_value,value);
        case 1:var bytes=_eO_[1];return caml_call1(fun_bytes,bytes);
        default:
         var
          value$0=_eO_[2],
          bytes$0=_eO_[1],
          _eP_=caml_call1(fun_bytes,bytes$0);
         return caml_call2(fun_combine,caml_call1(fun_value,value$0),_eP_)}}
    var
     Data_encoding$0=
      [0,
       [0,
        null$0,
        empty,
        unit,
        constant,
        int8$0,
        uint8$0,
        int16$0,
        uint16$0,
        int31$0,
        int32$0,
        int64$0,
        ranged_int,
        z,
        n,
        float$1,
        ranged_float,
        bool$0,
        string$1,
        bytes$1,
        option,
        result,
        array$0,
        list$0,
        conv,
        assoc,
        req,
        opt,
        varopt,
        dft,
        obj1,
        obj2,
        obj3,
        obj4,
        obj5,
        obj6,
        obj7,
        obj8,
        obj9,
        obj10,
        merge_objs,
        tup1,
        tup2,
        tup3,
        tup4,
        tup5,
        tup6,
        tup7,
        tup8,
        tup9,
        tup10,
        merge_tups,
        case$0,
        union,
        is_obj,
        is_tup,
        classify,
        string_enum,
        Fixed,
        Variable,
        Bounded,
        dynamic_size,
        check_size,
        delayed,
        splitted,
        mu,
        def,
        lazy_encoding,
        force_decode,
        force_bytes,
        make_lazy,
        apply_lazy],
       null$0,
       empty,
       unit,
       constant,
       int8$0,
       uint8$0,
       int16$0,
       uint16$0,
       int31$0,
       int32$0,
       int64$0,
       ranged_int,
       z,
       n,
       float$1,
       ranged_float,
       bool$0,
       string$1,
       bytes$1,
       option,
       result,
       array$0,
       list$0,
       conv,
       assoc,
       req,
       opt,
       varopt,
       dft,
       obj1,
       obj2,
       obj3,
       obj4,
       obj5,
       obj6,
       obj7,
       obj8,
       obj9,
       obj10,
       merge_objs,
       tup1,
       tup2,
       tup3,
       tup4,
       tup5,
       tup6,
       tup7,
       tup8,
       tup9,
       tup10,
       merge_tups,
       case$0,
       union,
       is_obj,
       is_tup,
       classify,
       string_enum,
       Fixed,
       Variable,
       Bounded,
       dynamic_size,
       check_size,
       delayed,
       splitted,
       mu,
       def,
       lazy_encoding,
       force_decode,
       force_bytes,
       make_lazy,
       apply_lazy,
       Data_encoding_With_version,
       [0,
        json$0,
        json_schema,
        convert,
        schema$0,
        construct,
        destruct,
        _ej_,
        _ek_,
        _el_,
        _em_,
        _en_,
        _eo_,
        _ep_,
        cannot_destruct,
        wrap_error,
        from_string,
        to_string,
        pp$0],
       Data_encoding_Bson,
       Data_encoding_Binary_schema,
       [0,
        Read_error,
        pp_read_error,
        read_error_encoding,
        pp_write_error,
        write_error_encoding,
        Write_error,
        length,
        fixed_length,
        fixed_length_exn,
        read,
        read_opt,
        read_exn,
        read_stream,
        write,
        write_opt,
        write_exn,
        of_bytes,
        of_bytes_opt,
        of_bytes_exn,
        to_bytes,
        to_bytes_opt,
        to_bytes_exn,
        describe],
       json$0,
       json_schema,
       Data_encoding_Registration];
    caml_register_global(463,Data_encoding$0,"Data_encoding");
    return}
  (function(){return this}()));


//# 1 "../../.js/result/result.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     global_data=runtime.caml_get_global_data(),
     Stdlib_result=global_data.Stdlib__result,
     ok=Stdlib_result[1],
     error=Stdlib_result[2],
     value=Stdlib_result[3],
     get_ok=Stdlib_result[4],
     get_error=Stdlib_result[5],
     bind=Stdlib_result[6],
     join=Stdlib_result[7],
     map=Stdlib_result[8],
     map_error=Stdlib_result[9],
     fold=Stdlib_result[10],
     iter=Stdlib_result[11],
     iter_error=Stdlib_result[12],
     is_ok=Stdlib_result[13],
     is_error=Stdlib_result[14],
     equal=Stdlib_result[15],
     compare=Stdlib_result[16],
     to_option=Stdlib_result[17],
     to_list=Stdlib_result[18],
     to_seq=Stdlib_result[19],
     Result=
      [0,
       ok,
       error,
       value,
       get_ok,
       get_error,
       bind,
       join,
       map,
       map_error,
       fold,
       iter,
       iter_error,
       is_ok,
       is_error,
       equal,
       compare,
       to_option,
       to_list,
       to_seq];
    runtime.caml_register_global(1,Result,"Result");
    return}
  (function(){return this}()));


//# 1 "../../.js/lwt/lwt.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_obj_tag=runtime.caml_obj_tag,
     caml_register_global=runtime.caml_register_global,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_update_dummy=runtime.caml_update_dummy,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Lwt_sequence_Empty=caml_string_of_jsbytes("Lwt_sequence.Empty"),
     cst_Lwt_nchoose_split_would_re=
      caml_string_of_jsbytes
       ("Lwt.nchoose_split [] would return a promise that is pending forever"),
     cst_Lwt_npick_would_return_a_p=
      caml_string_of_jsbytes
       ("Lwt.npick [] would return a promise that is pending forever"),
     cst_Lwt_nchoose_would_return_a=
      caml_string_of_jsbytes
       ("Lwt.nchoose [] would return a promise that is pending forever"),
     cst_Lwt_pick_would_return_a_pr=
      caml_string_of_jsbytes
       ("Lwt.pick [] would return a promise that is pending forever"),
     cst_Lwt_choose_would_return_a_=
      caml_string_of_jsbytes
       ("Lwt.choose [] would return a promise that is pending forever"),
     cst_wakeup_later_exn=caml_string_of_jsbytes("wakeup_later_exn"),
     cst_wakeup_later=caml_string_of_jsbytes("wakeup_later"),
     cst_wakeup_later_result=caml_string_of_jsbytes("wakeup_later_result"),
     cst_wakeup_exn=caml_string_of_jsbytes("wakeup_exn"),
     cst_wakeup=caml_string_of_jsbytes("wakeup"),
     cst_wakeup_result=caml_string_of_jsbytes("wakeup_result"),
     cst_Fatal_error_exception=
      caml_string_of_jsbytes("Fatal error: exception "),
     cst_Lwt_Resolution_loop_Cancel=
      caml_string_of_jsbytes("Lwt.Resolution_loop.Canceled"),
     cst_Lwt_switch_Off=caml_string_of_jsbytes("Lwt_switch.Off"),
     cst$3=caml_string_of_jsbytes("    "),
     cst$4=caml_string_of_jsbytes("   "),
     cst$5=caml_string_of_jsbytes(" |"),
     cst_Lwt_stream_parse=caml_string_of_jsbytes("Lwt_stream.parse"),
     cst_Lwt_stream_create_bounded=
      caml_string_of_jsbytes("Lwt_stream.create_bounded"),
     cst_Lwt_stream_bounded_push_re=
      caml_string_of_jsbytes("Lwt_stream.bounded_push#resize"),
     cst=caml_string_of_jsbytes(""),
     cst$0=caml_string_of_jsbytes(""),
     cst$1=caml_string_of_jsbytes(""),
     cst$2=caml_string_of_jsbytes(""),
     cst_Lwt_stream_clone=caml_string_of_jsbytes("Lwt_stream.clone"),
     shared=
      [0,
       caml_string_of_jsbytes("blocked"),
       caml_string_of_jsbytes("close"),
       caml_string_of_jsbytes("push"),
       caml_string_of_jsbytes("count"),
       caml_string_of_jsbytes("size"),
       caml_string_of_jsbytes("set_reference"),
       caml_string_of_jsbytes("resize"),
       caml_string_of_jsbytes("closed")],
     cst_Lwt_stream_Closed=caml_string_of_jsbytes("Lwt_stream.Closed"),
     cst_Lwt_stream_Full=caml_string_of_jsbytes("Lwt_stream.Full"),
     cst_Lwt_stream_Empty=caml_string_of_jsbytes("Lwt_stream.Empty"),
     Stdlib=global_data.Stdlib,
     Assert_failure=global_data.Assert_failure,
     Stdlib_list=global_data.Stdlib__list,
     CamlinternalLazy=global_data.CamlinternalLazy,
     Stdlib_random=global_data.Stdlib__random,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_queue=global_data.Stdlib__queue,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Stdlib_map=global_data.Stdlib__map,
     Stdlib_buffer=global_data.Stdlib__buffer,
     CamlinternalOO=global_data.CamlinternalOO,
     Stdlib_string=global_data.Stdlib__string,
     Empty=[248,cst_Lwt_sequence_Empty,caml_fresh_oo_id(0)],
     _O_=[0,caml_string_of_jsbytes("src/core/lwt.ml"),2621,6],
     _P_=[0,caml_string_of_jsbytes("src/core/lwt.ml"),2641,6],
     _U_=[0,0],
     _V_=[0,0],
     _T_=[0,0],
     _S_=[0,0],
     _R_=[0,0],
     _Q_=[0,0],
     _N_=[0,caml_string_of_jsbytes("src/core/lwt.ml"),2595,18],
     _M_=[0,caml_string_of_jsbytes("src/core/lwt.ml"),2582,13],
     _L_=[0,0],
     _K_=[0,0],
     _I_=[0,1],
     _J_=[0,1],
     _G_=[0,1],
     _H_=[0,1],
     _F_=[0,1],
     _E_=[0,1],
     _C_=[0,0],
     _D_=[0,1],
     _A_=[0,1],
     _B_=[0,1],
     _y_=[0,1],
     _z_=[0,1],
     _w_=[0,0],
     _x_=[0,1],
     _u_=[0,0],
     _v_=[0,1],
     _r_=[0,0],
     _s_=[0,0],
     _t_=[0,1],
     _p_=[0,0],
     _q_=[0,1],
     _n_=[0,0],
     _o_=[0,1],
     _l_=[0,0],
     _m_=[0,0],
     _k_=[0,0],
     _j_=[0,0],
     _i_=[0,0],
     _f_=
      [0,
       [11,caml_string_of_jsbytes("Lwt."),[2,0,0]],
       caml_string_of_jsbytes("Lwt.%s")],
     _g_=
      [0,
       [11,caml_string_of_jsbytes("Lwt."),[2,0,0]],
       caml_string_of_jsbytes("Lwt.%s")],
     _h_=[0,1],
     _c_=
      [0,
       [11,caml_string_of_jsbytes("Lwt."),[2,0,0]],
       caml_string_of_jsbytes("Lwt.%s")],
     _d_=
      [0,
       [11,caml_string_of_jsbytes("Lwt."),[2,0,0]],
       caml_string_of_jsbytes("Lwt.%s")],
     _e_=[0,0],
     _a_=[0,caml_string_of_jsbytes("src/core/lwt.ml"),994,23],
     _b_=[0,caml_string_of_jsbytes("src/core/lwt.ml"),995,22],
     _ab_=[0,[4,6,[0,2,2],0,[12,32,0]],caml_string_of_jsbytes("%02x ")],
     _aa_=
      [0,
       [4,6,[0,2,8],0,[11,caml_string_of_jsbytes("|  "),0]],
       caml_string_of_jsbytes("%08x|  ")],
     _$_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Lwt_stream.iter_n: max_concurrency must be > 0, "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" given"),0]]],
       caml_string_of_jsbytes
        ("Lwt_stream.iter_n: max_concurrency must be > 0, %d given")],
     _Y_=[0,caml_string_of_jsbytes("closed")],
     _Z_=
      [0,
       caml_string_of_jsbytes("size"),
       caml_string_of_jsbytes("set_reference"),
       caml_string_of_jsbytes("resize"),
       caml_string_of_jsbytes("push"),
       caml_string_of_jsbytes("count"),
       caml_string_of_jsbytes("closed"),
       caml_string_of_jsbytes("close"),
       caml_string_of_jsbytes("blocked"),
       caml_string_of_jsbytes("*dummy method*")],
     _ac_=[0,caml_string_of_jsbytes("src/core/lwt_result.ml"),77,14],
     _ad_=[0,caml_string_of_jsbytes("src/core/lwt_pqueue.ml"),81,15];
    function get(node){return node[3]}
    function set(node,data){node[3] = data;return 0}
    function remove(node)
     {var
       _gO_=node[4],
       _gP_=
        _gO_?(node[4] = 0,node[1][2] = node[2],node[2][1] = node[1],0):_gO_;
      return _gP_}
    function create(param)
     {var seq=[];caml_update_dummy(seq,[0,seq,seq]);return seq}
    function is_empty(seq){return seq[2] === seq?1:0}
    function length(seq)
     {var curr=seq[2],len=0;
      for(;;)
       {if(curr === seq)return len;
        var len$0=len + 1 | 0,curr$0=curr[2],curr=curr$0,len=len$0;
        continue}}
    function add_l(data,seq)
     {var node=[0,seq,seq[2],data,1];
      seq[2][1] = node;
      seq[2] = node;
      return node}
    function add_r(data,seq)
     {var node=[0,seq[1],seq,data,1];
      seq[1][2] = node;
      seq[1] = node;
      return node}
    function take_l(seq)
     {if(is_empty(seq))throw Empty;
      var node=seq[2];
      remove(node);
      return node[3]}
    function take_r(seq)
     {if(is_empty(seq))throw Empty;
      var node=seq[1];
      remove(node);
      return node[3]}
    function take_opt_l(seq)
     {if(is_empty(seq))return 0;
      var node=seq[2];
      remove(node);
      return [0,node[3]]}
    function take_opt_r(seq)
     {if(is_empty(seq))return 0;
      var node=seq[1];
      remove(node);
      return [0,node[3]]}
    function transfer_l(s1,s2)
     {s2[2][1] = s1[1];
      s1[1][2] = s2[2];
      s2[2] = s1[2];
      s1[2][1] = s2;
      s1[1] = s1;
      s1[2] = s1;
      return 0}
    function transfer_r(s1,s2)
     {s2[1][2] = s1[2];
      s1[2][1] = s2[1];
      s2[1] = s1[1];
      s1[1][2] = s2;
      s1[1] = s1;
      s1[2] = s1;
      return 0}
    function iter_l(f,seq)
     {var curr=seq[2];
      for(;;)
       {var _gN_=curr !== seq?1:0;
        if(_gN_)
         {if(curr[4])caml_call1(f,curr[3]);
          var curr$0=curr[2],curr=curr$0;
          continue}
        return _gN_}}
    function iter_r(f,seq)
     {var curr=seq[1];
      for(;;)
       {var _gM_=curr !== seq?1:0;
        if(_gM_)
         {if(curr[4])caml_call1(f,curr[3]);
          var curr$0=curr[1],curr=curr$0;
          continue}
        return _gM_}}
    function iter_node_l(f,seq)
     {var curr=seq[2];
      for(;;)
       {var _gL_=curr !== seq?1:0;
        if(_gL_)
         {if(curr[4])caml_call1(f,curr);
          var curr$0=curr[2],curr=curr$0;
          continue}
        return _gL_}}
    function iter_node_r(f,seq)
     {var curr=seq[1];
      for(;;)
       {var _gK_=curr !== seq?1:0;
        if(_gK_)
         {if(curr[4])caml_call1(f,curr);
          var curr$0=curr[1],curr=curr$0;
          continue}
        return _gK_}}
    function fold_l(f,seq,acc)
     {var curr=seq[2],acc$0=acc;
      for(;;)
       {if(curr === seq)return acc$0;
        if(curr[4])
         {var
           acc$1=caml_call2(f,curr[3],acc$0),
           curr$0=curr[2],
           curr=curr$0,
           acc$0=acc$1;
          continue}
        var curr$1=curr[2],curr=curr$1;
        continue}}
    function fold_r(f,seq,acc)
     {var curr=seq[1],acc$0=acc;
      for(;;)
       {if(curr === seq)return acc$0;
        if(curr[4])
         {var
           acc$1=caml_call2(f,curr[3],acc$0),
           curr$0=curr[1],
           curr=curr$0,
           acc$0=acc$1;
          continue}
        var curr$1=curr[1],curr=curr$1;
        continue}}
    function find_node_l(f,seq)
     {var curr=seq[2];
      for(;;)
       {if(curr !== seq)
         {if(curr[4])
           {if(caml_call1(f,curr[3]))return curr;
            var curr$0=curr[2],curr=curr$0;
            continue}
          var curr$1=curr[2],curr=curr$1;
          continue}
        throw Stdlib[8]}}
    function find_node_r(f,seq)
     {var curr=seq[1];
      for(;;)
       {if(curr !== seq)
         {if(curr[4])
           {if(caml_call1(f,curr[3]))return curr;
            var curr$0=curr[1],curr=curr$0;
            continue}
          var curr$1=curr[1],curr=curr$1;
          continue}
        throw Stdlib[8]}}
    function find_node_opt_l(f,seq)
     {try
       {var _gI_=[0,find_node_l(f,seq)];return _gI_}
      catch(_gJ_)
       {_gJ_ = caml_wrap_exception(_gJ_);
        if(_gJ_ === Stdlib[8])return 0;
        throw _gJ_}}
    function find_node_opt_r(f,seq)
     {try
       {var _gG_=[0,find_node_r(f,seq)];return _gG_}
      catch(_gH_)
       {_gH_ = caml_wrap_exception(_gH_);
        if(_gH_ === Stdlib[8])return 0;
        throw _gH_}}
    var
     Lwt_sequence=
      [0,
       get,
       set,
       remove,
       create,
       is_empty,
       length,
       add_l,
       add_r,
       Empty,
       take_l,
       take_r,
       take_opt_l,
       take_opt_r,
       transfer_l,
       transfer_r,
       iter_l,
       iter_r,
       iter_node_l,
       iter_node_r,
       fold_l,
       fold_r,
       find_node_opt_l,
       find_node_opt_r,
       find_node_l,
       find_node_r];
    caml_register_global(86,Lwt_sequence,"Lwt_sequence");
    var
     compare=runtime.caml_compare,
     Storage_map=caml_call1(Stdlib_map[1],[0,compare]);
    function state_of_result(param)
     {if(0 === param[0]){var x=param[1];return [0,x]}
      var exn=param[1];
      return [1,exn]}
    function underlying(p)
     {var _gF_=p[1];
      switch(_gF_[0])
       {case 0:return p;
        case 1:return p;
        case 2:return p;
        default:
         var p$0=_gF_[1],p$1=underlying(p$0);
         if(1 - (p$1 === p$0?1:0))p[1] = [3,p$1];
         return p$1}}
    function set_promise_state(p,state){p[1] = state;return p}
    var next_key_id=[0,0];
    function new_key(param)
     {var id=next_key_id[1];next_key_id[1] = id + 1 | 0;return [0,id,0]}
    var current_storage=[0,Storage_map[1]];
    function get$0(key)
     {if(caml_call2(Storage_map[3],key[1],current_storage[1]))
       {var refresh=caml_call2(Storage_map[27],key[1],current_storage[1]);
        caml_call1(refresh,0);
        var value=key[2];
        key[2] = 0;
        return value}
      return 0}
    function with_value(key,value,f)
     {if(value)
       var
        refresh=function(param){key[2] = value;return 0},
        new_storage=
         caml_call3(Storage_map[4],key[1],refresh,current_storage[1]);
      else
       var new_storage=caml_call2(Storage_map[7],key[1],current_storage[1]);
      var saved_storage=current_storage[1];
      current_storage[1] = new_storage;
      try
       {var result=caml_call1(f,0);
        current_storage[1] = saved_storage;
        return result}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        current_storage[1] = saved_storage;
        throw exn}}
    function concat_regular_callbacks(l1,l2)
     {return typeof l1 === "number"?l2:typeof l2 === "number"?l1:[0,l1,l2]}
    function clean_up_callback_cells(callbacks)
     {if(typeof callbacks !== "number")
       switch(callbacks[0])
        {case 0:
          var
           l2=callbacks[2],
           l1=callbacks[1],
           l1$0=clean_up_callback_cells(l1),
           l2$0=clean_up_callback_cells(l2);
          return concat_regular_callbacks(l1$0,l2$0);
         case 2:if(! callbacks[1][1])return 0;break
         }
      return callbacks}
    function clear_explicitly_removable_cal(cell,ps)
     {cell[1] = 0;
      function _gC_(p)
       {var _gD_=underlying(p)[1];
        switch(_gD_[0])
         {case 1:return 0;
          case 2:
           var callbacks=_gD_[1],_gE_=callbacks[1];
           if(typeof _gE_ !== "number" && 2 === _gE_[0])
            {callbacks[1] = 0;return 0}
           var cleanups_deferred=callbacks[4] + 1 | 0;
           return 42 < cleanups_deferred
                   ?(callbacks[4]
                     =
                     0,
                     callbacks[1]
                     =
                     clean_up_callback_cells(callbacks[1]),
                     0)
                   :(callbacks[4] = cleanups_deferred,0);
          default:return 0}}
      return caml_call2(Stdlib_list[15],_gC_,ps)}
    function add_regular_callback_list_node(callbacks,node)
     {var
       _gB_=callbacks[1],
       node$0=typeof _gB_ === "number"?node:[0,node,_gB_];
      callbacks[1] = node$0;
      return 0}
    function add_implicitly_removed_callbac(callbacks,f)
     {return add_regular_callback_list_node(callbacks,[1,f])}
    function add_explicitly_removable_callb(ps,f)
     {var
       cell=[],
       self_removing_callback_wrapper=
        function _gA_(_gz_){return _gA_.fun(_gz_)};
      caml_update_dummy(cell,[0,[0,self_removing_callback_wrapper]]);
      caml_update_dummy
       (self_removing_callback_wrapper,
        function(result)
         {clear_explicitly_removable_cal(cell,ps);return caml_call1(f,result)});
      var node=[2,cell];
      function _gx_(p)
       {var _gy_=underlying(p)[1];
        switch(_gy_[0])
         {case 1:throw [0,Assert_failure,_b_];
          case 2:
           var callbacks=_gy_[1];
           return add_regular_callback_list_node(callbacks,node);
          default:throw [0,Assert_failure,_a_]}}
      caml_call2(Stdlib_list[15],_gx_,ps);
      return cell}
    function add_explicitly_removable_callb$0(ps,f)
     {add_explicitly_removable_callb(ps,f);return 0}
    function add_cancel_callback(callbacks,f)
     {var
       node=[1,current_storage[1],f],
       node$0=typeof callbacks[2] === "number"?node:[0,node,callbacks[2]];
      callbacks[2] = node$0;
      return 0}
    var
     async_exception_hook=
      [0,
       function(exn)
        {caml_call1(Stdlib[49],cst_Fatal_error_exception);
         var _gw_=caml_call1(Stdlib_printexc[1],exn);
         caml_call1(Stdlib[49],_gw_);
         caml_call1(Stdlib[48],10);
         caml_call1(Stdlib_printexc[5],Stdlib[40]);
         caml_call1(Stdlib[63],Stdlib[40]);
         return caml_call1(Stdlib[99],2)}];
    function handle_with_async_exception_ho(f,v)
     {try
       {var _gv_=caml_call1(f,v);return _gv_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        return caml_call1(async_exception_hook[1],exn)}}
    var Canceled=[248,cst_Lwt_Resolution_loop_Cancel,caml_fresh_oo_id(0)];
    function run_callbacks(callbacks,result)
     {if(1 === result[0])
       var _gt_=result[1] === Canceled?1:0,is_canceled=_gt_;
      else
       var is_canceled=0;
      if(is_canceled)
       {var
         _gr_=callbacks[2],
         iter_callback_list$2=
          function(counter,fs,rest)
           {var fs$0=fs,rest$0=rest;
            for(;;)
             if(typeof fs$0 === "number")
              {if(counter < 50)
                {var counter$0=counter + 1 | 0;
                 return iter_list$0(counter$0,rest$0)}
               return caml_trampoline_return(iter_list$0,[0,rest$0])}
             else
              switch(fs$0[0])
               {case 0:
                 var
                  fs$1=fs$0[2],
                  fs$2=fs$0[1],
                  rest$1=[0,fs$1,rest$0],
                  fs$0=fs$2,
                  rest$0=rest$1;
                 continue;
                case 1:
                 var f=fs$0[2],storage=fs$0[1];
                 current_storage[1] = storage;
                 handle_with_async_exception_ho(f,0);
                 if(counter < 50)
                  {var counter$1=counter + 1 | 0;
                   return iter_list$0(counter$1,rest$0)}
                 return caml_trampoline_return(iter_list$0,[0,rest$0]);
                default:
                 var node=fs$0[1];
                 remove(node);
                 if(counter < 50)
                  {var counter$2=counter + 1 | 0;
                   return iter_list$0(counter$2,rest$0)}
                 return caml_trampoline_return(iter_list$0,[0,rest$0])}},
         iter_list$0=
          function(counter,rest)
           {if(rest)
             {var rest$0=rest[2],fs=rest[1];
              if(counter < 50)
               {var counter$0=counter + 1 | 0;
                return iter_callback_list$2(counter$0,fs,rest$0)}
              return caml_trampoline_return
                      (iter_callback_list$2,[0,fs,rest$0])}
            return 0},
         iter_callback_list=
          function(fs,rest)
           {return caml_trampoline(iter_callback_list$2(0,fs,rest))};
        iter_callback_list(_gr_,0)}
      var _gs_=callbacks[1];
      function iter_callback_list$1(counter,fs,rest)
       {var fs$0=fs,rest$0=rest;
        for(;;)
         if(typeof fs$0 === "number")
          {if(counter < 50)
            {var counter$0=counter + 1 | 0;return iter_list(counter$0,rest$0)}
           return caml_trampoline_return(iter_list,[0,rest$0])}
         else
          switch(fs$0[0])
           {case 0:
             var
              fs$1=fs$0[2],
              fs$2=fs$0[1],
              rest$1=[0,fs$1,rest$0],
              fs$0=fs$2,
              rest$0=rest$1;
             continue;
            case 1:
             var f=fs$0[1];
             caml_call1(f,result);
             if(counter < 50)
              {var counter$1=counter + 1 | 0;
               return iter_list(counter$1,rest$0)}
             return caml_trampoline_return(iter_list,[0,rest$0]);
            default:
             var _gu_=fs$0[1][1];
             if(_gu_)
              {var f$0=_gu_[1];
               caml_call1(f$0,result);
               if(counter < 50)
                {var counter$2=counter + 1 | 0;
                 return iter_list(counter$2,rest$0)}
               return caml_trampoline_return(iter_list,[0,rest$0])}
             if(counter < 50)
              {var counter$3=counter + 1 | 0;
               return iter_list(counter$3,rest$0)}
             return caml_trampoline_return(iter_list,[0,rest$0])}}
      function iter_list(counter,rest)
       {if(rest)
         {var rest$0=rest[2],fs=rest[1];
          if(counter < 50)
           {var counter$0=counter + 1 | 0;
            return iter_callback_list$1(counter$0,fs,rest$0)}
          return caml_trampoline_return(iter_callback_list$1,[0,fs,rest$0])}
        return 0}
      function iter_callback_list$0(fs,rest)
       {return caml_trampoline(iter_callback_list$1(0,fs,rest))}
      return iter_callback_list$0(_gs_,0)}
    var
     current_callback_nesting_depth=[0,0],
     deferred_callbacks=caml_call1(Stdlib_queue[2],0),
     default_maximum_callback_nesti=42;
    function leave_resolution_loop(storage_snapshot)
     {if(1 === current_callback_nesting_depth[1])
       for(;;)
        {if(! caml_call1(Stdlib_queue[13],deferred_callbacks))
          {var
            match=caml_call1(Stdlib_queue[7],deferred_callbacks),
            result=match[2],
            callbacks=match[1];
           run_callbacks(callbacks,result);
           continue}
         break}
      current_callback_nesting_depth[1]
      =
      current_callback_nesting_depth[1]
      -
      1
      |
      0;
      current_storage[1] = storage_snapshot;
      return 0}
    function run_in_resolution_loop(f)
     {current_callback_nesting_depth[1]
      =
      current_callback_nesting_depth[1]
      +
      1
      |
      0;
      var storage_snapshot=current_storage[1],result=caml_call1(f,0);
      leave_resolution_loop(storage_snapshot);
      return result}
    function abandon_wakeups(param)
     {var _gq_=0 !== current_callback_nesting_depth[1]?1:0;
      return _gq_?leave_resolution_loop(Storage_map[1]):_gq_}
    function run_callbacks_or_defer_them(opt,_gp_,callbacks,result)
     {if(opt)var sth=opt[1],allow_deferring=sth;else var allow_deferring=1;
      if(_gp_)
       var sth$0=_gp_[1],maximum_callback_nesting_depth=sth$0;
      else
       var maximum_callback_nesting_depth=default_maximum_callback_nesti;
      var
       should_defer=
        allow_deferring
         ?maximum_callback_nesting_depth <= current_callback_nesting_depth[1]
           ?1
           :0
         :allow_deferring;
      return should_defer
              ?caml_call2
                (Stdlib_queue[4],[0,callbacks,result],deferred_callbacks)
              :run_in_resolution_loop
                (function(param){return run_callbacks(callbacks,result)})}
    function resolve(allow_deferring,maximum_callback_nesting_depth,p,result)
     {var match=p[1],callbacks=match[1],p$0=set_promise_state(p,result);
      run_callbacks_or_defer_them
       (allow_deferring,maximum_callback_nesting_depth,callbacks,result);
      return p$0}
    function run_callback_or_defer_it(opt,f,if_deferred)
     {if(opt)
       var sth=opt[1],run_immediately_and_ensure_tai=sth;
      else
       var run_immediately_and_ensure_tai=0;
      if(run_immediately_and_ensure_tai)return caml_call1(f,0);
      var should_defer=42 <= current_callback_nesting_depth[1]?1:0;
      if(should_defer)
       {var
         match=caml_call1(if_deferred,0),
         deferred_result=match[3],
         deferred_callback=match[2],
         immediate_result=match[1],
         deferred_record=[0,[1,deferred_callback],0,0,0];
        caml_call2
         (Stdlib_queue[4],
          [0,deferred_record,deferred_result],
          deferred_callbacks);
        return immediate_result}
      return run_in_resolution_loop(function(param){return caml_call1(f,0)})}
    function wakeup_general(api_function_name,p,result)
     {var p$0=underlying(p),_go_=p$0[1];
      switch(_go_[0])
       {case 1:
         return _go_[1] === Canceled
                 ?0
                 :caml_call3(Stdlib_printf[9],Stdlib[1],_d_,api_function_name);
        case 2:
         var result$0=state_of_result(result);
         resolve(_e_,0,p$0,result$0);
         return 0;
        default:
         return caml_call3(Stdlib_printf[9],Stdlib[1],_c_,api_function_name)}}
    function wakeup_result(r,result)
     {return wakeup_general(cst_wakeup_result,r,result)}
    function wakeup(r,v){return wakeup_general(cst_wakeup,r,[0,v])}
    function wakeup_exn(r,exn)
     {return wakeup_general(cst_wakeup_exn,r,[1,exn])}
    function wakeup_later_general(api_function_name,p,result)
     {var p$0=underlying(p),_gn_=p$0[1];
      switch(_gn_[0])
       {case 1:
         return _gn_[1] === Canceled
                 ?0
                 :caml_call3(Stdlib_printf[9],Stdlib[1],_g_,api_function_name);
        case 2:
         var result$0=state_of_result(result);
         resolve(0,_h_,p$0,result$0);
         return 0;
        default:
         return caml_call3(Stdlib_printf[9],Stdlib[1],_f_,api_function_name)}}
    function wakeup_later_result(r,result)
     {return wakeup_later_general(cst_wakeup_later_result,r,result)}
    function wakeup_later(r,v)
     {return wakeup_later_general(cst_wakeup_later,r,[0,v])}
    function wakeup_later_exn(r,exn)
     {return wakeup_later_general(cst_wakeup_later_exn,r,[1,exn])}
    function cancel(match)
     {var canceled_result=[1,Canceled];
      function cancel_and_collect_callbacks(callbacks_accumulator,p)
       {var p$0=p;
        for(;;)
         {var p$1=underlying(p$0),_gl_=p$1[1];
          switch(_gl_[0])
           {case 1:return callbacks_accumulator;
            case 2:
             var callbacks=_gl_[1],_gm_=callbacks[3];
             if(typeof _gm_ === "number")
              return 0 === _gm_
                      ?callbacks_accumulator
                      :(set_promise_state(p$1,canceled_result),
                        [0,callbacks,callbacks_accumulator]);
             else
              {if(0 === _gm_[0]){var p$2=_gm_[1],p$0=p$2;continue}
               var ps=_gm_[1];
               return caml_call3
                       (Stdlib_list[22],
                        cancel_and_collect_callbacks,
                        callbacks_accumulator,
                        ps)}
            default:return callbacks_accumulator}}}
      var callbacks=cancel_and_collect_callbacks(0,match);
      function _gk_(param)
       {return run_callbacks_or_defer_them(_i_,0,param,canceled_result)}
      return caml_call2(Stdlib_list[15],_gk_,callbacks)}
    function lift(v){return [0,[0,v]]}
    function of_result(result){return [0,state_of_result(result)]}
    function fail(exn){return [0,[1,exn]]}
    var return_unit=lift(0),return_none=lift(0);
    function return_some(x){return lift([0,x])}
    var acc=lift(0),return_true=lift(1),return_false=lift(0);
    function return_ok(x){return lift([0,x])}
    function return_error(x){return lift([1,x])}
    function fail_with(msg){return [0,[1,[0,Stdlib[7],msg]]]}
    function fail_invalid_arg(msg){return [0,[1,[0,Stdlib[6],msg]]]}
    function new_pending(how_to_cancel)
     {var state=[2,[0,0,0,how_to_cancel,0]];return [0,state]}
    function wait(param){var p=new_pending(0);return [0,p,p]}
    function task(param){var p=new_pending(1);return [0,p,p]}
    function waiter_of_wakener(r){return r}
    function add_task_r(sequence)
     {var
       p=new_pending(1),
       node=add_r(p,sequence),
       match=p[1],
       callbacks=match[1];
      callbacks[2] = [2,node];
      return p}
    function add_task_l(sequence)
     {var
       p=new_pending(1),
       node=add_l(p,sequence),
       match=p[1],
       callbacks=match[1];
      callbacks[2] = [2,node];
      return p}
    function protected$0(p)
     {switch(underlying(p)[1][0])
       {case 1:return p;
        case 2:
         var
          p$0=new_pending(1),
          f=
           function(p_result)
            {var p=underlying(p$0);resolve(_j_,0,p,p_result);return 0},
          ps=[0,p,0],
          cell=add_explicitly_removable_callb(ps,f),
          remove_the_callback=
           function(param){return clear_explicitly_removable_cal(cell,ps)},
          match=p$0[1],
          p_callbacks=match[1];
         add_cancel_callback(p_callbacks,remove_the_callback);
         return p$0;
        default:return p}}
    function no_cancel(p)
     {var _gj_=underlying(p)[1];
      switch(_gj_[0])
       {case 1:return p;
        case 2:
         var
          p_callbacks=_gj_[1],
          p$0=new_pending(0),
          callback=
           function(p_result)
            {var p=underlying(p$0);resolve(_k_,0,p,p_result);return 0};
         add_implicitly_removed_callbac(p_callbacks,callback);
         return p$0;
        default:return p}}
    function make_into_proxy(outer_promise,user_provided_promise)
     {var p=underlying(user_provided_promise);
      if(p === outer_promise)return p;
      var _gi_=p[1];
      switch(_gi_[0])
       {case 1:return resolve(_m_,0,outer_promise,p[1]);
        case 2:
         var
          p_callbacks=_gi_[1],
          match=outer_promise[1],
          outer_callbacks=match[1],
          regular_callbacks=
           concat_regular_callbacks(outer_callbacks[1],p_callbacks[1]),
          cleanups_deferred=outer_callbacks[4] + p_callbacks[4] | 0;
         if(42 < cleanups_deferred)
          var
           cleanups_deferred$0=0,
           regular_callbacks$0=clean_up_callback_cells(regular_callbacks);
         else
          var
           cleanups_deferred$0=cleanups_deferred,
           regular_callbacks$0=regular_callbacks;
         var
          _gg_=p_callbacks[2],
          _gh_=outer_callbacks[2],
          cancel_callbacks=
           typeof _gh_ === "number"
            ?_gg_
            :typeof _gg_ === "number"?_gh_:[0,_gh_,_gg_];
         outer_callbacks[1] = regular_callbacks$0;
         outer_callbacks[2] = cancel_callbacks;
         outer_callbacks[4] = cleanups_deferred$0;
         outer_callbacks[3] = p_callbacks[3];
         set_promise_state(p,[3,outer_promise]);
         return outer_promise;
        default:return resolve(_l_,0,outer_promise,p[1])}}
    function symbol_bind(p,f)
     {var p$0=underlying(p);
      function create_result_promise_and_call(param)
       {var p=new_pending([0,p$0]),saved_storage=current_storage[1];
        function callback(p_result)
         {if(1 === p_result[0])
           {var p$2=underlying(p);resolve(_n_,0,p$2,p_result);return 0}
          var v=p_result[1];
          current_storage[1] = saved_storage;
          try
           {var _gf_=caml_call1(f,v),p$0=_gf_}
          catch(exn){exn = caml_wrap_exception(exn);var p$0=fail(exn)}
          var p$1=underlying(p);
          make_into_proxy(p$1,p$0);
          return 0}
        return [0,p,callback]}
      var _gd_=p$0[1];
      switch(_gd_[0])
       {case 1:return [0,_gd_];
        case 2:
         var
          p_callbacks=_gd_[1],
          match=create_result_promise_and_call(0),
          callback=match[2],
          p$1=match[1];
         add_implicitly_removed_callbac(p_callbacks,callback);
         return p$1;
        default:
         var
          v=_gd_[1],
          _ge_=
           function(param)
            {var
              match=create_result_promise_and_call(0),
              callback=match[2],
              p=match[1];
             return [0,p,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_o_,function(param){return caml_call1(f,v)},_ge_)}}
    function backtrace_bind(add_loc,p,f)
     {var p$0=underlying(p);
      function create_result_promise_and_call(param)
       {var p=new_pending([0,p$0]),saved_storage=current_storage[1];
        function callback(p_result)
         {if(1 === p_result[0])
           {var exn=p_result[1],p$2=underlying(p);
            resolve(_p_,0,p$2,[1,caml_call1(add_loc,exn)]);
            return 0}
          var v=p_result[1];
          current_storage[1] = saved_storage;
          try
           {var _gc_=caml_call1(f,v),p$0=_gc_}
          catch(exn)
           {exn = caml_wrap_exception(exn);
            var p$0=fail(caml_call1(add_loc,exn))}
          var p$1=underlying(p);
          make_into_proxy(p$1,p$0);
          return 0}
        return [0,p,callback]}
      var _ga_=p$0[1];
      switch(_ga_[0])
       {case 1:var exn=_ga_[1];return [0,[1,caml_call1(add_loc,exn)]];
        case 2:
         var
          p_callbacks=_ga_[1],
          match=create_result_promise_and_call(0),
          callback=match[2],
          p$1=match[1];
         add_implicitly_removed_callbac(p_callbacks,callback);
         return p$1;
        default:
         var
          v=_ga_[1],
          _gb_=
           function(param)
            {var
              match=create_result_promise_and_call(0),
              callback=match[2],
              p=match[1];
             return [0,p,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_q_,function(param){return caml_call1(f,v)},_gb_)}}
    function symbol(f,p)
     {var p$0=underlying(p);
      function create_result_promise_and_call(param)
       {var p=new_pending([0,p$0]),saved_storage=current_storage[1];
        function callback(p_result)
         {if(1 === p_result[0])
           {var p$1=underlying(p);resolve(_s_,0,p$1,p_result);return 0}
          var v=p_result[1];
          current_storage[1] = saved_storage;
          try
           {var _f$_=[0,caml_call1(f,v)],p_result$0=_f$_}
          catch(exn){exn = caml_wrap_exception(exn);var p_result$0=[1,exn]}
          var p$0=underlying(p);
          resolve(_r_,0,p$0,p_result$0);
          return 0}
        return [0,p,callback]}
      var _f7_=p$0[1];
      switch(_f7_[0])
       {case 1:return [0,_f7_];
        case 2:
         var
          p_callbacks=_f7_[1],
          match=create_result_promise_and_call(0),
          callback=match[2],
          p$1=match[1];
         add_implicitly_removed_callbac(p_callbacks,callback);
         return p$1;
        default:
         var
          v=_f7_[1],
          _f8_=
           function(param)
            {var
              match=create_result_promise_and_call(0),
              callback=match[2],
              p=match[1];
             return [0,p,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_t_,
                  function(param)
                   {try
                     {var _f__=[0,caml_call1(f,v)],_f9_=_f__}
                    catch(exn){exn = caml_wrap_exception(exn);var _f9_=[1,exn]}
                    return [0,_f9_]},
                  _f8_)}}
    function catch$0(f,h)
     {try
       {var _f5_=caml_call1(f,0),p=_f5_}
      catch(exn){exn = caml_wrap_exception(exn);var p=fail(exn)}
      var p$0=underlying(p);
      function create_result_promise_and_call(param)
       {var p=new_pending([0,p$0]),saved_storage=current_storage[1];
        function callback(p_result)
         {if(1 === p_result[0])
           {var exn=p_result[1];
            current_storage[1] = saved_storage;
            try
             {var _f6_=caml_call1(h,exn),p$1=_f6_}
            catch(exn){exn = caml_wrap_exception(exn);var p$1=fail(exn)}
            var p$2=underlying(p);
            make_into_proxy(p$2,p$1);
            return 0}
          var p$0=underlying(p);
          resolve(_u_,0,p$0,p_result);
          return 0}
        return [0,p,callback]}
      var _f3_=p$0[1];
      switch(_f3_[0])
       {case 1:
         var
          exn=_f3_[1],
          _f4_=
           function(param)
            {var
              match=create_result_promise_and_call(0),
              callback=match[2],
              p=match[1];
             return [0,p,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_v_,function(param){return caml_call1(h,exn)},_f4_);
        case 2:
         var
          p_callbacks=_f3_[1],
          match=create_result_promise_and_call(0),
          callback=match[2],
          p$1=match[1];
         add_implicitly_removed_callbac(p_callbacks,callback);
         return p$1;
        default:return p$0}}
    function backtrace_catch(add_loc,f,h)
     {try
       {var _f1_=caml_call1(f,0),p=_f1_}
      catch(exn){exn = caml_wrap_exception(exn);var p=fail(exn)}
      var p$0=underlying(p);
      function create_result_promise_and_call(param)
       {var p=new_pending([0,p$0]),saved_storage=current_storage[1];
        function callback(p_result)
         {if(1 === p_result[0])
           {var exn=p_result[1];
            current_storage[1] = saved_storage;
            try
             {var _f2_=caml_call1(h,exn),p$1=_f2_}
            catch(exn)
             {exn = caml_wrap_exception(exn);
              var p$1=fail(caml_call1(add_loc,exn))}
            var p$2=underlying(p);
            make_into_proxy(p$2,p$1);
            return 0}
          var p$0=underlying(p);
          resolve(_w_,0,p$0,p_result);
          return 0}
        return [0,p,callback]}
      var _fZ_=p$0[1];
      switch(_fZ_[0])
       {case 1:
         var
          exn=_fZ_[1],
          _f0_=
           function(param)
            {var
              match=create_result_promise_and_call(0),
              callback=match[2],
              p=match[1];
             return [0,p,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_x_,
                  function(param)
                   {return caml_call1(h,caml_call1(add_loc,exn))},
                  _f0_);
        case 2:
         var
          p_callbacks=_fZ_[1],
          match=create_result_promise_and_call(0),
          callback=match[2],
          p$1=match[1];
         add_implicitly_removed_callbac(p_callbacks,callback);
         return p$1;
        default:return p$0}}
    function try_bind(f$0,f,h)
     {try
       {var _fW_=caml_call1(f$0,0),p=_fW_}
      catch(exn){exn = caml_wrap_exception(exn);var p=fail(exn)}
      var p$0=underlying(p);
      function create_result_promise_and_call(param)
       {var p=new_pending([0,p$0]),saved_storage=current_storage[1];
        function callback(p_result)
         {if(1 === p_result[0])
           {var exn=p_result[1];
            current_storage[1] = saved_storage;
            try
             {var _fY_=caml_call1(h,exn),p$2=_fY_}
            catch(exn){exn = caml_wrap_exception(exn);var p$2=fail(exn)}
            var p$3=underlying(p);
            make_into_proxy(p$3,p$2);
            return 0}
          var v=p_result[1];
          current_storage[1] = saved_storage;
          try
           {var _fX_=caml_call1(f,v),p$0=_fX_}
          catch(exn){exn = caml_wrap_exception(exn);var p$0=fail(exn)}
          var p$1=underlying(p);
          make_into_proxy(p$1,p$0);
          return 0}
        return [0,p,callback]}
      var _fT_=p$0[1];
      switch(_fT_[0])
       {case 1:
         var
          exn=_fT_[1],
          _fV_=
           function(param)
            {var
              match=create_result_promise_and_call(0),
              callback=match[2],
              p=match[1];
             return [0,p,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_z_,function(param){return caml_call1(h,exn)},_fV_);
        case 2:
         var
          p_callbacks=_fT_[1],
          match=create_result_promise_and_call(0),
          callback=match[2],
          p$1=match[1];
         add_implicitly_removed_callbac(p_callbacks,callback);
         return p$1;
        default:
         var
          v=_fT_[1],
          _fU_=
           function(param)
            {var
              match=create_result_promise_and_call(0),
              callback=match[2],
              p=match[1];
             return [0,p,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_y_,function(param){return caml_call1(f,v)},_fU_)}}
    function backtrace_try_bind(add_loc,f$0,f,h)
     {try
       {var _fQ_=caml_call1(f$0,0),p=_fQ_}
      catch(exn){exn = caml_wrap_exception(exn);var p=fail(exn)}
      var p$0=underlying(p);
      function create_result_promise_and_call(param)
       {var p=new_pending([0,p$0]),saved_storage=current_storage[1];
        function callback(p_result)
         {if(1 === p_result[0])
           {var exn=p_result[1];
            current_storage[1] = saved_storage;
            try
             {var _fS_=caml_call1(h,exn),p$2=_fS_}
            catch(exn)
             {exn = caml_wrap_exception(exn);
              var p$2=fail(caml_call1(add_loc,exn))}
            var p$3=underlying(p);
            make_into_proxy(p$3,p$2);
            return 0}
          var v=p_result[1];
          current_storage[1] = saved_storage;
          try
           {var _fR_=caml_call1(f,v),p$0=_fR_}
          catch(exn)
           {exn = caml_wrap_exception(exn);
            var p$0=fail(caml_call1(add_loc,exn))}
          var p$1=underlying(p);
          make_into_proxy(p$1,p$0);
          return 0}
        return [0,p,callback]}
      var _fN_=p$0[1];
      switch(_fN_[0])
       {case 1:
         var
          exn=_fN_[1],
          _fP_=
           function(param)
            {var
              match=create_result_promise_and_call(0),
              callback=match[2],
              p=match[1];
             return [0,p,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_B_,
                  function(param)
                   {return caml_call1(h,caml_call1(add_loc,exn))},
                  _fP_);
        case 2:
         var
          p_callbacks=_fN_[1],
          match=create_result_promise_and_call(0),
          callback=match[2],
          p$1=match[1];
         add_implicitly_removed_callbac(p_callbacks,callback);
         return p$1;
        default:
         var
          v=_fN_[1],
          _fO_=
           function(param)
            {var
              match=create_result_promise_and_call(0),
              callback=match[2],
              p=match[1];
             return [0,p,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_A_,function(param){return caml_call1(f,v)},_fO_)}}
    function finalize(f$0,f)
     {function _fK_(e)
       {function _fM_(param){return fail(e)}
        return symbol_bind(caml_call1(f,0),_fM_)}
      return try_bind
              (f$0,
               function(x)
                {function _fL_(param){return lift(x)}
                 return symbol_bind(caml_call1(f,0),_fL_)},
               _fK_)}
    function backtrace_finalize(add_loc,f$0,f)
     {function _fH_(e)
       {function _fJ_(param){return fail(caml_call1(add_loc,e))}
        return symbol_bind(caml_call1(f,0),_fJ_)}
      return backtrace_try_bind
              (add_loc,
               f$0,
               function(x)
                {function _fI_(param){return lift(x)}
                 return symbol_bind(caml_call1(f,0),_fI_)},
               _fH_)}
    function on_cancel(p,f)
     {var p$0=underlying(p),_fF_=p$0[1];
      switch(_fF_[0])
       {case 1:
         if(_fF_[1] === Canceled)
          {var
            _fG_=
             function(param)
              {return [0,
                       0,
                       function(param){return handle_with_async_exception_ho(f,0)},
                       _C_]};
           return run_callback_or_defer_it
                   (_D_,
                    function(param){return handle_with_async_exception_ho(f,0)},
                    _fG_)}
         return 0;
        case 2:var callbacks=_fF_[1];return add_cancel_callback(callbacks,f);
        default:return 0}}
    function on_success(p,f)
     {var p$0=underlying(p);
      function callback_if_deferred(param)
       {var saved_storage=current_storage[1];
        return function(result)
         {if(1 === result[0])return 0;
          var v=result[1];
          current_storage[1] = saved_storage;
          return handle_with_async_exception_ho(f,v)}}
      var _fD_=p$0[1];
      switch(_fD_[0])
       {case 1:return 0;
        case 2:
         var p_callbacks=_fD_[1],callback=callback_if_deferred(0);
         return add_implicitly_removed_callbac(p_callbacks,callback);
        default:
         var
          v=_fD_[1],
          _fE_=
           function(param)
            {var callback=callback_if_deferred(0);
             return [0,0,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_E_,
                  function(param){return handle_with_async_exception_ho(f,v)},
                  _fE_)}}
    function on_failure(p,f)
     {var p$0=underlying(p);
      function callback_if_deferred(param)
       {var saved_storage=current_storage[1];
        return function(result)
         {if(1 === result[0])
           {var exn=result[1];
            current_storage[1] = saved_storage;
            return handle_with_async_exception_ho(f,exn)}
          return 0}}
      var _fB_=p$0[1];
      switch(_fB_[0])
       {case 1:
         var
          exn=_fB_[1],
          _fC_=
           function(param)
            {var callback=callback_if_deferred(0);
             return [0,0,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_F_,
                  function(param)
                   {return handle_with_async_exception_ho(f,exn)},
                  _fC_);
        case 2:
         var p_callbacks=_fB_[1],callback=callback_if_deferred(0);
         return add_implicitly_removed_callbac(p_callbacks,callback);
        default:return 0}}
    function on_termination(p,f)
     {var p$0=underlying(p);
      function callback_if_deferred(param)
       {var saved_storage=current_storage[1];
        return function(result)
         {current_storage[1] = saved_storage;
          return handle_with_async_exception_ho(f,0)}}
      var _fy_=p$0[1];
      switch(_fy_[0])
       {case 1:
         var
          _fA_=
           function(param)
            {var callback=callback_if_deferred(0);
             return [0,0,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_H_,
                  function(param){return handle_with_async_exception_ho(f,0)},
                  _fA_);
        case 2:
         var p_callbacks=_fy_[1],callback=callback_if_deferred(0);
         return add_implicitly_removed_callbac(p_callbacks,callback);
        default:
         var
          _fz_=
           function(param)
            {var callback=callback_if_deferred(0);
             return [0,0,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_G_,
                  function(param){return handle_with_async_exception_ho(f,0)},
                  _fz_)}}
    function on_any(p,f,g)
     {var p$0=underlying(p);
      function callback_if_deferred(param)
       {var saved_storage=current_storage[1];
        return function(result)
         {if(1 === result[0])
           {var exn=result[1];
            current_storage[1] = saved_storage;
            return handle_with_async_exception_ho(g,exn)}
          var v=result[1];
          current_storage[1] = saved_storage;
          return handle_with_async_exception_ho(f,v)}}
      var _fv_=p$0[1];
      switch(_fv_[0])
       {case 1:
         var
          exn=_fv_[1],
          _fx_=
           function(param)
            {var callback=callback_if_deferred(0);
             return [0,0,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_J_,
                  function(param)
                   {return handle_with_async_exception_ho(g,exn)},
                  _fx_);
        case 2:
         var p_callbacks=_fv_[1],callback=callback_if_deferred(0);
         return add_implicitly_removed_callbac(p_callbacks,callback);
        default:
         var
          v=_fv_[1],
          _fw_=
           function(param)
            {var callback=callback_if_deferred(0);
             return [0,0,callback,p$0[1]]};
         return run_callback_or_defer_it
                 (_I_,
                  function(param){return handle_with_async_exception_ho(f,v)},
                  _fw_)}}
    function async(f)
     {try
       {var _fu_=caml_call1(f,0),p=_fu_}
      catch(exn){exn = caml_wrap_exception(exn);var p=fail(exn)}
      var _ft_=underlying(p)[1];
      switch(_ft_[0])
       {case 1:var exn=_ft_[1];return caml_call1(async_exception_hook[1],exn);
        case 2:
         var
          p_callbacks=_ft_[1],
          callback=
           function(result)
            {if(1 === result[0])
              {var exn=result[1];
               return caml_call1(async_exception_hook[1],exn)}
             return 0};
         return add_implicitly_removed_callbac(p_callbacks,callback);
        default:return 0}}
    function ignore_result(p)
     {var _fs_=underlying(p)[1];
      switch(_fs_[0])
       {case 1:var exn=_fs_[1];throw exn;
        case 2:
         var
          p_callbacks=_fs_[1],
          callback=
           function(result)
            {if(1 === result[0])
              {var exn=result[1];
               return caml_call1(async_exception_hook[1],exn)}
             return 0};
         return add_implicitly_removed_callbac(p_callbacks,callback);
        default:return 0}}
    function join(ps)
     {var
       p=new_pending([1,ps]),
       number_pending_in_ps=[0,0],
       join_result=[0,_K_];
      function callback(new_result)
       {if(1 === new_result[0] && 1 !== join_result[1][0])
         join_result[1] = new_result;
        number_pending_in_ps[1] = number_pending_in_ps[1] - 1 | 0;
        var _fp_=0 === number_pending_in_ps[1]?1:0;
        if(_fp_)
         {var p$0=underlying(p),_fq_=join_result[1];
          resolve(_L_,0,underlying(p$0),_fq_);
          var _fr_=0}
        else
         var _fr_=_fp_;
        return _fr_}
      var ps$0=ps;
      for(;;)
       {if(ps$0)
         {var ps$1=ps$0[2],p$0=ps$0[1],_fo_=underlying(p$0)[1];
          switch(_fo_[0])
           {case 1:
             if(1 !== join_result[1][0])join_result[1] = _fo_;
             var ps$0=ps$1;
             continue;
            case 2:
             var p_callbacks=_fo_[1];
             number_pending_in_ps[1] = number_pending_in_ps[1] + 1 | 0;
             add_implicitly_removed_callbac(p_callbacks,callback);
             var ps$0=ps$1;
             continue;
            default:var ps$0=ps$1;continue}}
        return 0 === number_pending_in_ps[1]?[0,join_result[1]]:p}}
    function both(p1,p2)
     {var
       v1=[0,0],
       v2=[0,0],
       p1$0=symbol_bind(p1,function(v){v1[1] = [0,v];return return_unit}),
       p2$0=symbol_bind(p2,function(v){v2[1] = [0,v];return return_unit}),
       _fl_=join([0,p1$0,[0,p2$0,0]]);
      return symbol
              (function(param)
                {var _fm_=v1[1],_fn_=v2[1];
                 if(_fm_ && _fn_)
                  {var v2$0=_fn_[1],v1$0=_fm_[1];return [0,v1$0,v2$0]}
                 throw [0,Assert_failure,_M_]},
               _fl_)}
    function all(ps)
     {var vs=runtime.caml_make_vect(caml_call1(Stdlib_list[1],ps),0);
      function _fh_(index,p)
       {return symbol_bind
                (p,
                 function(v)
                  {runtime.caml_check_bound(vs,index)[1 + index] = [0,v];
                   return return_unit})}
      var _fi_=join(caml_call2(Stdlib_list[18],_fh_,ps));
      return symbol
              (function(param)
                {function _fj_(v)
                  {if(v){var v$0=v[1];return v$0}throw [0,Assert_failure,_N_]}
                 var _fk_=caml_call2(Stdlib_array[15],_fj_,vs);
                 return caml_call1(Stdlib_array[11],_fk_)},
               _fi_)}
    function count_resolved_promises_in(ps)
     {function accumulate(total,p)
       {switch(underlying(p)[1][0])
         {case 1:return total + 1 | 0;
          case 2:return total;
          default:return total + 1 | 0}}
      return caml_call3(Stdlib_list[22],accumulate,0,ps)}
    function nth_resolved(ps,n)
     {var ps$0=ps,n$0=n;
      for(;;)
       {if(ps$0)
         {var ps$1=ps$0[2],p=ps$0[1];
          switch(underlying(p)[1][0])
           {case 1:
             if(0 < n$0){var n$2=n$0 - 1 | 0,ps$0=ps$1,n$0=n$2;continue}
             return p;
            case 2:var ps$0=ps$1;continue;
            default:
             if(0 < n$0){var n$1=n$0 - 1 | 0,ps$0=ps$1,n$0=n$1;continue}
             return p}}
        throw [0,Assert_failure,_O_]}}
    function nth_resolved_and_cancel_pendin(ps,n)
     {var ps$0=ps,n$0=n;
      for(;;)
       {if(ps$0)
         {var ps$1=ps$0[2],p=ps$0[1];
          switch(underlying(p)[1][0])
           {case 1:
             if(0 < n$0){var n$2=n$0 - 1 | 0,ps$0=ps$1,n$0=n$2;continue}
             caml_call2(Stdlib_list[15],cancel,ps$1);
             return p;
            case 2:cancel(p);var ps$0=ps$1;continue;
            default:
             if(0 < n$0){var n$1=n$0 - 1 | 0,ps$0=ps$1,n$0=n$1;continue}
             caml_call2(Stdlib_list[15],cancel,ps$1);
             return p}}
        throw [0,Assert_failure,_P_]}}
    var
     prng=
      [246,function(_fg_){return caml_call1(Stdlib_random[11][1],[0])}];
    function choose(ps)
     {if(0 === ps)caml_call1(Stdlib[1],cst_Lwt_choose_would_return_a_);
      var n=count_resolved_promises_in(ps);
      if(0 === n)
       {var
         p=new_pending([1,ps]),
         callback=
          function(result)
           {var p$0=underlying(p);resolve(_Q_,0,p$0,result);return 0};
        add_explicitly_removable_callb$0(ps,callback);
        return p}
      if(1 === n)return nth_resolved(ps,0);
      var
       _fe_=caml_obj_tag(prng),
       _ff_=
        250 === _fe_
         ?prng[1]
         :246 === _fe_?caml_call1(CamlinternalLazy[2],prng):prng;
      return nth_resolved(ps,caml_call2(Stdlib_random[11][5],_ff_,n))}
    function pick(ps)
     {if(0 === ps)caml_call1(Stdlib[1],cst_Lwt_pick_would_return_a_pr);
      var n=count_resolved_promises_in(ps);
      if(0 === n)
       {var
         p=new_pending([1,ps]),
         callback=
          function(result)
           {caml_call2(Stdlib_list[15],cancel,ps);
            var p$0=underlying(p);
            resolve(_R_,0,p$0,result);
            return 0};
        add_explicitly_removable_callb$0(ps,callback);
        return p}
      if(1 === n)return nth_resolved_and_cancel_pendin(ps,0);
      var
       _fc_=caml_obj_tag(prng),
       _fd_=
        250 === _fc_
         ?prng[1]
         :246 === _fc_?caml_call1(CamlinternalLazy[2],prng):prng;
      return nth_resolved_and_cancel_pendin
              (ps,caml_call2(Stdlib_random[11][5],_fd_,n))}
    function collect_fulfilled_promises_aft(results,ps)
     {var results$0=results,ps$0=ps;
      for(;;)
       {if(ps$0)
         {var ps$1=ps$0[2],p=ps$0[1],_fb_=underlying(p)[1];
          switch(_fb_[0])
           {case 1:return _fb_;
            case 2:var ps$0=ps$1;continue;
            default:
             var
              v=_fb_[1],
              results$1=[0,v,results$0],
              results$0=results$1,
              ps$0=ps$1;
             continue}}
        return [0,caml_call1(Stdlib_list[9],results$0)]}}
    function nchoose(ps)
     {if(0 === ps)caml_call1(Stdlib[1],cst_Lwt_nchoose_would_return_a);
      var ps$2=ps;
      for(;;)
       {if(ps$2)
         {var ps$3=ps$2[2],p$0=ps$2[1],_fa_=underlying(p$0)[1];
          switch(_fa_[0])
           {case 1:return [0,_fa_];
            case 2:var ps$2=ps$3;continue;
            default:
             var v$0=_fa_[1],acc$1=[0,v$0,0],acc=acc$1,ps$0=ps$3;
             for(;;)
              {if(ps$0)
                {var ps$1=ps$0[2],p=ps$0[1],_e$_=underlying(p)[1];
                 switch(_e$_[0])
                  {case 1:return [0,_e$_];
                   case 2:var ps$0=ps$1;continue;
                   default:
                    var v=_e$_[1],acc$0=[0,v,acc],acc=acc$0,ps$0=ps$1;continue}}
               return lift(caml_call1(Stdlib_list[9],acc))}}}
        var
         p$1=new_pending([1,ps]),
         callback=
          function(result)
           {var
             p=underlying(p$1),
             result$0=collect_fulfilled_promises_aft(0,ps);
            resolve(_S_,0,p,result$0);
            return 0};
        add_explicitly_removable_callb$0(ps,callback);
        return p$1}}
    function npick(ps)
     {if(0 === ps)caml_call1(Stdlib[1],cst_Lwt_npick_would_return_a_p);
      var ps$2=ps;
      for(;;)
       {if(ps$2)
         {var ps$3=ps$2[2],p$0=ps$2[1],_e__=underlying(p$0)[1];
          switch(_e__[0])
           {case 1:caml_call2(Stdlib_list[15],cancel,ps);return [0,_e__];
            case 2:var ps$2=ps$3;continue;
            default:
             var v$0=_e__[1],acc$1=[0,v$0,0],acc=acc$1,ps$0=ps$3;
             for(;;)
              {if(ps$0)
                {var ps$1=ps$0[2],p=ps$0[1],_e9_=underlying(p)[1];
                 switch(_e9_[0])
                  {case 1:
                    caml_call2(Stdlib_list[15],cancel,ps);return [0,_e9_];
                   case 2:var ps$0=ps$1;continue;
                   default:
                    var v=_e9_[1],acc$0=[0,v,acc],acc=acc$0,ps$0=ps$1;continue}}
               caml_call2(Stdlib_list[15],cancel,ps);
               return lift(caml_call1(Stdlib_list[9],acc))}}}
        var
         p$1=new_pending([1,ps]),
         callback=
          function(result)
           {var
             p=underlying(p$1),
             result$0=collect_fulfilled_promises_aft(0,ps);
            caml_call2(Stdlib_list[15],cancel,ps);
            resolve(_T_,0,p,result$0);
            return 0};
        add_explicitly_removable_callb$0(ps,callback);
        return p$1}}
    function nchoose_split(ps)
     {if(0 === ps)caml_call1(Stdlib[1],cst_Lwt_nchoose_split_would_re);
      var pending_acc=0,ps$2=ps;
      for(;;)
       {if(ps$2)
         {var ps$3=ps$2[2],p$0=ps$2[1],_e6_=underlying(p$0)[1];
          switch(_e6_[0])
           {case 1:return [0,_e6_];
            case 2:
             var
              pending_acc$0=[0,p$0,pending_acc],
              pending_acc=pending_acc$0,
              ps$2=ps$3;
             continue;
            default:
             var
              v$0=_e6_[1],
              results$1=[0,v$0,0],
              results=results$1,
              pending=pending_acc,
              ps$0=ps$3;
             for(;;)
              {if(ps$0)
                {var ps$1=ps$0[2],p=ps$0[1],_e5_=underlying(p)[1];
                 switch(_e5_[0])
                  {case 1:return [0,_e5_];
                   case 2:
                    var pending$0=[0,p,pending],pending=pending$0,ps$0=ps$1;
                    continue;
                   default:
                    var
                     v=_e5_[1],
                     results$0=[0,v,results],
                     results=results$0,
                     ps$0=ps$1;
                    continue}}
               return lift([0,caml_call1(Stdlib_list[9],results),pending])}}}
        var
         p$1=new_pending([1,ps]),
         callback=
          function(result)
           {var to_resolve=underlying(p$1),fulfilled=0,pending=0,ps$0=ps;
            for(;;)
             {if(ps$0)
               {var ps$1=ps$0[2],p=ps$0[1],_e7_=underlying(p)[1];
                switch(_e7_[0])
                 {case 1:resolve(_U_,0,to_resolve,_e7_);break;
                  case 2:
                   var pending$0=[0,p,pending],pending=pending$0,ps$0=ps$1;
                   continue;
                  default:
                   var
                    v=_e7_[1],
                    fulfilled$0=[0,v,fulfilled],
                    fulfilled=fulfilled$0,
                    ps$0=ps$1;
                   continue}}
              else
               {var _e8_=caml_call1(Stdlib_list[9],pending);
                resolve
                 (_V_,
                  0,
                  to_resolve,
                  [0,[0,caml_call1(Stdlib_list[9],fulfilled),_e8_]])}
              return 0}};
        add_explicitly_removable_callb$0(ps,callback);
        return p$1}}
    function state(p)
     {var _e4_=underlying(p)[1];
      switch(_e4_[0])
       {case 1:var exn=_e4_[1];return [1,exn];
        case 2:return 0;
        default:var v=_e4_[1];return [0,v]}}
    function debug_state_is(expected_state,p)
     {return lift(runtime.caml_equal(state(p),expected_state))}
    function is_sleeping(p)
     {switch(underlying(p)[1][0])
       {case 1:return 0;case 2:return 1;default:return 0}}
    function poll(p)
     {var _e3_=underlying(p)[1];
      switch(_e3_[0])
       {case 1:var e=_e3_[1];throw e;
        case 2:return 0;
        default:var v=_e3_[1];return [0,v]}}
    function apply(f,x)
     {try
       {var _e2_=caml_call1(f,x);return _e2_}
      catch(exn){exn = caml_wrap_exception(exn);return fail(exn)}}
    function wrap(f)
     {try
       {var _e1_=lift(caml_call1(f,0));return _e1_}
      catch(exn){exn = caml_wrap_exception(exn);return fail(exn)}}
    function wrap1(f,x1)
     {try
       {var _e0_=lift(caml_call1(f,x1));return _e0_}
      catch(exn){exn = caml_wrap_exception(exn);return fail(exn)}}
    function wrap2(f,x1,x2)
     {try
       {var _eZ_=lift(caml_call2(f,x1,x2));return _eZ_}
      catch(exn){exn = caml_wrap_exception(exn);return fail(exn)}}
    function wrap3(f,x1,x2,x3)
     {try
       {var _eY_=lift(caml_call3(f,x1,x2,x3));return _eY_}
      catch(exn){exn = caml_wrap_exception(exn);return fail(exn)}}
    function wrap4(f,x1,x2,x3,x4)
     {try
       {var _eX_=lift(caml_call4(f,x1,x2,x3,x4));return _eX_}
      catch(exn){exn = caml_wrap_exception(exn);return fail(exn)}}
    function wrap5(f,x1,x2,x3,x4,x5)
     {try
       {var _eW_=lift(caml_call5(f,x1,x2,x3,x4,x5));return _eW_}
      catch(exn){exn = caml_wrap_exception(exn);return fail(exn)}}
    function wrap6(f,x1,x2,x3,x4,x5,x6)
     {try
       {var _eV_=lift(caml_call6(f,x1,x2,x3,x4,x5,x6));return _eV_}
      catch(exn){exn = caml_wrap_exception(exn);return fail(exn)}}
    function wrap7(f,x1,x2,x3,x4,x5,x6,x7)
     {try
       {var _eU_=lift(caml_call7(f,x1,x2,x3,x4,x5,x6,x7));return _eU_}
      catch(exn){exn = caml_wrap_exception(exn);return fail(exn)}}
    var pause_hook=[0,function(_eT_){return 0}],paused=create(0),_W_=[0,0];
    function pause(param)
     {var p=add_task_r(paused);
      _W_[1]++;
      caml_call1(pause_hook[1],_W_[1]);
      return p}
    function wakeup_paused(param)
     {if(is_empty(paused)){_W_[1] = 0;return 0}
      var tmp=create(0);
      transfer_r(paused,tmp);
      _W_[1] = 0;
      return iter_l(function(r){return wakeup(r,0)},tmp)}
    function register_pause_notifier(f){pause_hook[1] = f;return 0}
    function paused_count(param){return _W_[1]}
    function symbol$0(f,p){return symbol_bind(p,f)}
    function symbol$1(p,f){return symbol(f,p)}
    function symbol$2(p$0,p){return join([0,p$0,[0,p,0]])}
    function symbol$3(p$0,p){return choose([0,p$0,[0,p,0]])}
    function map(t,f){return symbol(f,t)}
    function bind(t,f){return symbol_bind(t,f)}
    var Open_on_rhs=[0],Let_syntax=[0,lift,map,bind,both,Open_on_rhs];
    function let$0(x,f){return symbol(f,x)}
    var Syntax=[0,symbol_bind,both,let$0,both];
    function make_value(v){return [0,v]}
    function make_error(exn){return [1,exn]}
    var
     _X_=[0,symbol_bind,symbol$1,symbol$2,symbol$3,symbol$0,symbol,Let_syntax],
     Lwt=
      [0,
       wait,
       wakeup_later,
       wakeup_later_exn,
       lift,
       fail,
       symbol_bind,
       catch$0,
       finalize,
       try_bind,
       async,
       async_exception_hook,
       both,
       join,
       all,
       pick,
       choose,
       npick,
       nchoose,
       nchoose_split,
       Canceled,
       task,
       cancel,
       on_cancel,
       protected$0,
       no_cancel,
       symbol,
       on_success,
       on_failure,
       on_termination,
       on_any,
       _X_,
       Syntax,
       return_unit,
       return_none,
       acc,
       return_true,
       return_false,
       of_result,
       wakeup_later_result,
       state,
       new_key,
       get$0,
       with_value,
       wakeup,
       wakeup_exn,
       wakeup_result,
       make_value,
       make_error,
       waiter_of_wakener,
       add_task_r,
       add_task_l,
       pause,
       wakeup_paused,
       paused_count,
       register_pause_notifier,
       wrap,
       wrap1,
       wrap2,
       wrap3,
       wrap4,
       wrap5,
       wrap6,
       wrap7,
       return_some,
       return_ok,
       return_error,
       fail_with,
       fail_invalid_arg,
       symbol_bind,
       symbol$1,
       symbol$3,
       symbol$2,
       symbol$0,
       symbol,
       is_sleeping,
       ignore_result,
       poll,
       apply,
       backtrace_bind,
       backtrace_catch,
       backtrace_finalize,
       backtrace_try_bind,
       abandon_wakeups,
       debug_state_is];
    caml_register_global(96,Lwt,"Lwt");
    var Off=[248,cst_Lwt_switch_Off,caml_fresh_oo_id(0)];
    function create$0(param){return [0,[0,[0,0]]]}
    function is_on(switch$0){return switch$0[1]?1:0}
    function check(param){if(param && ! param[1][1])throw Off;return 0}
    function add_hook(switch$0,hook)
     {if(switch$0)
       {var _eS_=switch$0[1][1];
        if(_eS_){var os=_eS_[1];os[1] = [0,hook,os[1]];return 0}
        throw Off}
      return 0}
    function add_hook_or_exec(switch$0,hook)
     {if(switch$0)
       {var _eR_=switch$0[1][1];
        if(_eR_){var os=_eR_[1];os[1] = [0,hook,os[1]];return return_unit}
        return caml_call1(hook,0)}
      return return_unit}
    function turn_off(switch$0)
     {var _eP_=switch$0[1];
      if(_eP_)
       {var match=_eP_[1],hooks=match[1];
        switch$0[1] = 0;
        var _eQ_=function(hook){return apply(hook,0)};
        return join(caml_call2(Stdlib_list[17],_eQ_,hooks))}
      return return_unit}
    function with_switch(fn)
     {var switch$0=create$0(0);
      function _eO_(param){return turn_off(switch$0)}
      return finalize(function(param){return caml_call1(fn,switch$0)},_eO_)}
    var
     Lwt_switch=
      [0,
       create$0,
       with_switch,
       is_on,
       turn_off,
       Off,
       check,
       add_hook,
       add_hook_or_exec];
    caml_register_global(97,Lwt_switch,"Lwt_switch");
    var
     Closed=[248,cst_Lwt_stream_Closed,caml_fresh_oo_id(0)],
     Full=[248,cst_Lwt_stream_Full,caml_fresh_oo_id(0)],
     Empty$0=[248,cst_Lwt_stream_Empty,caml_fresh_oo_id(0)];
    function new_node(param)
     {var node=[];caml_update_dummy(node,[0,node,0]);return node}
    function clone(s)
     {if(3 === s[1][0])caml_call1(Stdlib[1],cst_Lwt_stream_clone);
      return [0,s[1],s[2],s[3],s[4]]}
    function from_source(source)
     {var last=new_node(0),match=wait(0),close=match[2];
      return [0,source,close,last,[0,last]]}
    function from(f){return from_source([0,[0,f,return_unit]])}
    function from_direct(f){return from_source([1,f])}
    function closed(s){return s[2]}
    function is_closed(s){return 1 - is_sleeping(s[2])}
    function on_terminate(s,f)
     {return async(function(param){return caml_call2(_X_[2],s[2],f)})}
    function enqueue(e,last)
     {var _eN_=last[1],new_last=new_node(0);
      _eN_[2] = e;
      _eN_[1] = new_last;
      last[1] = new_last;
      return 0}
    function enqueue$0(e,s){return enqueue(e,s[4])}
    function create_with_reference(param)
     {var
       match=wait(0),
       push_signal_resolver=match[2],
       push_signal=match[1],
       push_signal_resolver$0=[0,push_signal_resolver],
       source=[0,push_signal,0,0],
       t=from_source([2,source]),
       close=t[2],
       last=t[4];
      function push(x)
       {if(1 - is_sleeping(close))throw Closed;
        enqueue(x,last);
        if(source[2])
         {source[2] = 0;
          var
           old_push_signal_resolver=push_signal_resolver$0[1],
           match=wait(0),
           new_push_signal_resolver=match[2],
           new_waiter=match[1];
          source[1] = new_waiter;
          push_signal_resolver$0[1] = new_push_signal_resolver;
          wakeup_later(old_push_signal_resolver,0)}
        var _eM_=0 === x?1:0;
        return _eM_?wakeup(close,0):_eM_}
      return [0,t,push,function(x){source[3] = x;return 0}]}
    function of_seq(s)
     {var s$0=[0,s];
      function get(param)
       {var match=caml_call1(s$0[1],0);
        if(match){var s=match[2],elt=match[1];s$0[1] = s;return [0,elt]}
        return 0}
      return from_direct(get)}
    function create$1(param)
     {var match=create_with_reference(0),push=match[2],source=match[1];
      return [0,source,push]}
    function of_iter(iter,i)
     {var match=create$1(0),push=match[2],stream=match[1];
      caml_call2(iter,function(x){return caml_call1(push,[0,x])},i);
      caml_call1(push,0);
      return stream}
    function of_list(l){return of_iter(Stdlib_list[15],l)}
    function of_array(a){return of_iter(Stdlib_array[13],a)}
    function of_string(s){return of_iter(Stdlib_string[8],s)}
    function notify_pusher(info,last)
     {enqueue(info[5],last);
      info[5] = 0;
      var old_wakener=info[7],match=task(0),wakener=match[2],waiter=match[1];
      info[6] = waiter;
      info[7] = wakener;
      return wakeup_later(old_wakener,0)}
    function ___(_ed_)
     {var
       _ee_=caml_call2(CamlinternalOO[3],_ed_,cst),
       _ef_=caml_call2(CamlinternalOO[3],_ed_,cst$0),
       _eg_=caml_call2(CamlinternalOO[3],_ed_,cst$1),
       _eh_=caml_call2(CamlinternalOO[3],_ed_,cst$2),
       _ei_=caml_call3(CamlinternalOO[4],_ed_,_Z_,_Y_),
       _er_=_ei_[10],
       _ej_=_ei_[1],
       _ek_=_ei_[2],
       _el_=_ei_[3],
       _em_=_ei_[4],
       _en_=_ei_[5],
       _eo_=_ei_[6],
       _ep_=_ei_[7],
       _eq_=_ei_[8];
      function _es_(self_1,x){self_1[1 + _ee_][8] = x;return 0}
      function _et_(self_1){return self_1[1 + _er_]}
      function _eu_(self_1){return 0 !== self_1[1 + _ee_][5]?1:0}
      function _ev_(self_1){return self_1[1 + _ee_][4]}
      function _ew_(self_1)
       {var _eK_=1 - self_1[1 + _er_];
        if(_eK_)
         {self_1[1 + _er_] = 1;
          var _eL_=self_1[1 + _eg_][1],new_last=new_node(0);
          _eL_[2] = 0;
          _eL_[1] = new_last;
          self_1[1 + _eg_][1] = new_last;
          if(0 !== self_1[1 + _ee_][5])
           {self_1[1 + _ee_][5] = 0;
            wakeup_later_exn(self_1[1 + _ee_][7],Closed)}
          if(self_1[1 + _ee_][2])
           {self_1[1 + _ee_][2] = 0;
            var old_wakener=self_1[1 + _ef_][1];
            wakeup_later(old_wakener,0)}
          return wakeup(self_1[1 + _eh_],0)}
        return _eK_}
      function _ex_(self_1,x)
       {if(self_1[1 + _er_])return fail(Closed);
        if(0 === self_1[1 + _ee_][5])
         {if(self_1[1 + _ee_][3] <= self_1[1 + _ee_][4])
           {self_1[1 + _ee_][5] = [0,x];
            var
             _eJ_=
              function(exn)
               {if(exn === Canceled)
                 {self_1[1 + _ee_][5] = 0;
                  var match=task(0),wakener=match[2],waiter=match[1];
                  self_1[1 + _ee_][6] = waiter;
                  self_1[1 + _ee_][7] = wakener;
                  return fail(exn)}
                return fail(exn)};
            return catch$0(function(param){return self_1[1 + _ee_][6]},_eJ_)}
          enqueue([0,x],self_1[1 + _eg_]);
          self_1[1 + _ee_][4] = self_1[1 + _ee_][4] + 1 | 0;
          if(self_1[1 + _ee_][2])
           {self_1[1 + _ee_][2] = 0;
            var
             old_wakener=self_1[1 + _ef_][1],
             match=wait(0),
             new_wakener=match[2],
             new_waiter=match[1];
            self_1[1 + _ee_][1] = new_waiter;
            self_1[1 + _ef_][1] = new_wakener;
            wakeup_later(old_wakener,0)}
          return return_unit}
        return fail(Full)}
      function _ey_(self_1,size)
       {if(size < 0)caml_call1(Stdlib[1],cst_Lwt_stream_bounded_push_re);
        self_1[1 + _ee_][3] = size;
        var
         _eH_=self_1[1 + _ee_][4] < self_1[1 + _ee_][3]?1:0,
         _eI_=_eH_?0 !== self_1[1 + _ee_][5]?1:0:_eH_;
        return _eI_
                ?(self_1[1 + _ee_][4]
                  =
                  self_1[1 + _ee_][4]
                  +
                  1
                  |
                  0,
                  notify_pusher(self_1[1 + _ee_],self_1[1 + _eg_]))
                :_eI_}
      var
       _ez_=
        [0,
         _ej_,
         function(self_1){return self_1[1 + _ee_][3]},
         _el_,
         _ey_,
         _em_,
         _ex_,
         _ep_,
         _ew_,
         _en_,
         _ev_,
         _eq_,
         _eu_,
         _eo_,
         _et_,
         _ek_,
         _es_];
      caml_call2(CamlinternalOO[11],_ed_,_ez_);
      return function(_eF_,_eE_,_eD_,_eC_,_eB_,_eA_)
       {var _eG_=caml_call2(CamlinternalOO[24],_eE_,_ed_);
        _eG_[1 + _eh_] = _eA_;
        _eG_[1 + _eg_] = _eB_;
        _eG_[1 + _ef_] = _eC_;
        _eG_[1 + _ee_] = _eD_;
        _eG_[1 + _er_] = 0;
        return _eG_}}
    var bounded_push_impl=caml_call2(CamlinternalOO[19],shared,___);
    function create_bounded(size)
     {if(size < 0)caml_call1(Stdlib[1],cst_Lwt_stream_create_bounded);
      var
       match=wait(0),
       wakener=match[2],
       waiter=match[1],
       match$0=task(0),
       push_wakener=match$0[2],
       push_waiter=match$0[1],
       wakener_cell=[0,wakener],
       info=[0,waiter,0,size,0,0,push_waiter,push_wakener,0],
       t=from_source([3,info]);
      return [0,
              t,
              caml_call5(bounded_push_impl[1],0,info,wakener_cell,t[4],t[2])]}
    function feed(s)
     {var _ea_=s[1];
      switch(_ea_[0])
       {case 0:
         var from=_ea_[1];
         if(is_sleeping(from[2]))return protected$0(from[2]);
         var
          _eb_=
           function(x)
            {enqueue$0(x,s);if(0 === x)wakeup(s[2],0);return return_unit},
          _ec_=caml_call1(from[1],0),
          thread=caml_call2(_X_[1],_ec_,_eb_);
         from[2] = thread;
         return protected$0(thread);
        case 1:
         var f=_ea_[1],x=caml_call1(f,0);
         enqueue$0(x,s);
         if(0 === x)wakeup(s[2],0);
         return return_unit;
        case 2:var push=_ea_[1];push[2] = 1;return protected$0(push[1]);
        default:var push$0=_ea_[1];push$0[2] = 1;return protected$0(push$0[1])}}
    function consume(s,node)
     {var _d__=node === s[3]?1:0;
      if(_d__)
       {s[3] = node[1];
        var _d$_=s[1];
        if(3 === _d$_[0])
         {var info=_d$_[1];
          return 0 === info[5]
                  ?(info[4] = info[4] - 1 | 0,0)
                  :notify_pusher(info,s[4])}
        return 0}
      return _d__}
    function peek_rec(s,node)
     {if(node === s[4][1])
       {var _d8_=function(param){return peek_rec(s,node)},_d9_=feed(s);
        return caml_call2(_X_[1],_d9_,_d8_)}
      return lift(node[2])}
    function peek(s){return peek_rec(s,s[3])}
    function npeek_rec(node,acc,n,s)
     {var node$0=node,acc$0=acc,n$0=n;
      for(;;)
       {if(0 < n$0)
         {if(node$0 === s[4][1])
           {var
             _d5_=function(param){return npeek_rec(node$0,acc$0,n$0,s)},
             _d6_=feed(s);
            return caml_call2(_X_[1],_d6_,_d5_)}
          var _d7_=node$0[2];
          if(_d7_)
           {var
             x=_d7_[1],
             n$1=n$0 - 1 | 0,
             acc$1=[0,x,acc$0],
             node$1=node$0[1],
             node$0=node$1,
             acc$0=acc$1,
             n$0=n$1;
            continue}
          return lift(caml_call1(Stdlib_list[9],acc$0))}
        return lift(caml_call1(Stdlib_list[9],acc$0))}}
    function npeek(n,s){return npeek_rec(s[3],0,n,s)}
    function get_rec(s,node)
     {if(node === s[4][1])
       {var _d3_=function(param){return get_rec(s,node)},_d4_=feed(s);
        return caml_call2(_X_[1],_d4_,_d3_)}
      if(0 !== node[2])consume(s,node);
      return lift(node[2])}
    function get$1(s){return get_rec(s,s[3])}
    function get_exn_rec(s,node)
     {if(node === s[4][1])
       {var
         _d0_=function(exn){return lift([0,[1,exn]])},
         _d1_=function(param){return get_exn_rec(s,node)};
        return try_bind(function(param){return feed(s)},_d1_,_d0_)}
      var _d2_=node[2];
      if(_d2_){var value=_d2_[1];consume(s,node);return lift([0,[0,value]])}
      return return_none}
    function map_exn(s)
     {return from(function(param){return get_exn_rec(s,s[3])})}
    function get_exn_rec$0(s,node)
     {if(node === s[4][1])
       {var
         _dX_=function(exn){return lift([0,[1,exn]])},
         _dY_=function(param){return get_exn_rec$0(s,node)};
        return try_bind(function(param){return feed(s)},_dY_,_dX_)}
      var _dZ_=node[2];
      if(_dZ_){var value=_dZ_[1];consume(s,node);return lift([0,[0,value]])}
      return return_none}
    function wrap_exn(s)
     {return from(function(param){return get_exn_rec$0(s,s[3])})}
    function nget_rec(node,acc,n,s)
     {var node$0=node,acc$0=acc,n$0=n;
      for(;;)
       {if(0 < n$0)
         {if(node$0 === s[4][1])
           {var
             _dU_=function(param){return nget_rec(node$0,acc$0,n$0,s)},
             _dV_=feed(s);
            return caml_call2(_X_[1],_dV_,_dU_)}
          var _dW_=s[3][2];
          if(_dW_)
           {var x=_dW_[1];
            consume(s,node$0);
            var
             n$1=n$0 - 1 | 0,
             acc$1=[0,x,acc$0],
             node$1=node$0[1],
             node$0=node$1,
             acc$0=acc$1,
             n$0=n$1;
            continue}
          return lift(caml_call1(Stdlib_list[9],acc$0))}
        return lift(caml_call1(Stdlib_list[9],acc$0))}}
    function nget(n,s){return nget_rec(s[3],0,n,s)}
    function get_while_rec(node,acc,f,s)
     {var node$0=node,acc$0=acc;
      for(;;)
       {if(node$0 === s[4][1])
         {var
           _dR_=function(param){return get_while_rec(node$0,acc$0,f,s)},
           _dS_=feed(s);
          return caml_call2(_X_[1],_dS_,_dR_)}
        var _dT_=node$0[2];
        if(_dT_)
         {var x=_dT_[1],test=caml_call1(f,x);
          if(test)
           {consume(s,node$0);
            var acc$1=[0,x,acc$0],node$1=node$0[1],node$0=node$1,acc$0=acc$1;
            continue}
          return lift(caml_call1(Stdlib_list[9],acc$0))}
        return lift(caml_call1(Stdlib_list[9],acc$0))}}
    function get_while(f,s){return get_while_rec(s[3],0,f,s)}
    function get_while_s_rec(node,acc,f,s)
     {if(node === s[4][1])
       {var
         _dM_=function(param){return get_while_s_rec(node,acc,f,s)},
         _dN_=feed(s);
        return caml_call2(_X_[1],_dN_,_dM_)}
      var _dO_=node[2];
      if(_dO_)
       {var
         x=_dO_[1],
         _dP_=
          function(param)
           {return param
                    ?(consume(s,node),get_while_s_rec(node[1],[0,x,acc],f,s))
                    :lift(caml_call1(Stdlib_list[9],acc))},
         _dQ_=caml_call1(f,x);
        return caml_call2(_X_[1],_dQ_,_dP_)}
      return lift(caml_call1(Stdlib_list[9],acc))}
    function get_while_s(f,s){return get_while_s_rec(s[3],0,f,s)}
    function next_rec(s,node)
     {if(node === s[4][1])
       {var _dJ_=function(param){return next_rec(s,node)},_dK_=feed(s);
        return caml_call2(_X_[1],_dK_,_dJ_)}
      var _dL_=node[2];
      if(_dL_){var x=_dL_[1];consume(s,node);return lift(x)}
      return fail(Empty$0)}
    function next(s){return next_rec(s,s[3])}
    function last_new_rec(node,x,s)
     {var node$0=node,x$0=x;
      for(;;)
       {if(node$0 === s[4][1])
         {var thread=feed(s),match=state(thread);
          if(typeof match === "number")
           return lift(x$0);
          else
           {if(0 === match[0])continue;var exn=match[1];return fail(exn)}}
        var _dI_=node$0[2];
        if(_dI_)
         {var x$1=_dI_[1];
          consume(s,node$0);
          var node$1=node$0[1],node$0=node$1,x$0=x$1;
          continue}
        return lift(x$0)}}
    function last_new(s)
     {var node=s[3];
      if(node === s[4][1])
       {var thread=next(s),match=state(thread);
        if(typeof match !== "number" && 0 === match[0])
         {var x=match[1];return last_new_rec(node,x,s)}
        return thread}
      var _dH_=node[2];
      if(_dH_)
       {var x$0=_dH_[1];consume(s,node);return last_new_rec(node[1],x$0,s)}
      return fail(Empty$0)}
    function to_list_rec(node,acc,s)
     {var node$0=node,acc$0=acc;
      for(;;)
       {if(node$0 === s[4][1])
         {var
           _dE_=function(param){return to_list_rec(node$0,acc$0,s)},
           _dF_=feed(s);
          return caml_call2(_X_[1],_dF_,_dE_)}
        var _dG_=node$0[2];
        if(_dG_)
         {var x=_dG_[1];
          consume(s,node$0);
          var acc$1=[0,x,acc$0],node$1=node$0[1],node$0=node$1,acc$0=acc$1;
          continue}
        return lift(caml_call1(Stdlib_list[9],acc$0))}}
    function to_list(s){return to_list_rec(s[3],0,s)}
    function to_string_rec(node,buf,s)
     {var node$0=node;
      for(;;)
       {if(node$0 === s[4][1])
         {var
           _dB_=function(param){return to_string_rec(node$0,buf,s)},
           _dC_=feed(s);
          return caml_call2(_X_[1],_dC_,_dB_)}
        var _dD_=node$0[2];
        if(_dD_)
         {var x=_dD_[1];
          consume(s,node$0);
          caml_call2(Stdlib_buffer[10],buf,x);
          var node$1=node$0[1],node$0=node$1;
          continue}
        return lift(caml_call1(Stdlib_buffer[2],buf))}}
    function to_string(s)
     {var _dA_=caml_call1(Stdlib_buffer[1],128);
      return to_string_rec(s[3],_dA_,s)}
    function junk(s)
     {var node=s[3];
      if(node === s[4][1])
       {var
         _dy_=
          function(param){if(0 !== node[2])consume(s,node);return return_unit},
         _dz_=feed(s);
        return caml_call2(_X_[1],_dz_,_dy_)}
      if(0 !== node[2])consume(s,node);
      return return_unit}
    function njunk_rec(node,n,s)
     {var node$0=node,n$0=n;
      for(;;)
       {if(0 < n$0)
         {if(node$0 === s[4][1])
           {var
             _dw_=function(param){return njunk_rec(node$0,n$0,s)},
             _dx_=feed(s);
            return caml_call2(_X_[1],_dx_,_dw_)}
          if(node$0[2])
           {consume(s,node$0);
            var n$1=n$0 - 1 | 0,node$1=node$0[1],node$0=node$1,n$0=n$1;
            continue}
          return return_unit}
        return return_unit}}
    function njunk(n,s){return njunk_rec(s[3],n,s)}
    function junk_while_rec(node,f,s)
     {var node$0=node;
      for(;;)
       {if(node$0 === s[4][1])
         {var
           _dt_=function(param){return junk_while_rec(node$0,f,s)},
           _du_=feed(s);
          return caml_call2(_X_[1],_du_,_dt_)}
        var _dv_=node$0[2];
        if(_dv_)
         {var x=_dv_[1],test=caml_call1(f,x);
          if(test)
           {consume(s,node$0);var node$1=node$0[1],node$0=node$1;continue}
          return return_unit}
        return return_unit}}
    function junk_while(f,s){return junk_while_rec(s[3],f,s)}
    function junk_while_s_rec(node,f,s)
     {if(node === s[4][1])
       {var
         _do_=function(param){return junk_while_s_rec(node,f,s)},
         _dp_=feed(s);
        return caml_call2(_X_[1],_dp_,_do_)}
      var _dq_=node[2];
      if(_dq_)
       {var
         x=_dq_[1],
         _dr_=
          function(param)
           {return param
                    ?(consume(s,node),junk_while_s_rec(node[1],f,s))
                    :return_unit},
         _ds_=caml_call1(f,x);
        return caml_call2(_X_[1],_ds_,_dr_)}
      return return_unit}
    function junk_while_s(f,s){return junk_while_s_rec(s[3],f,s)}
    function junk_old(s)
     {var node=s[3];
      for(;;)
       {if(node === s[4][1])
         {var thread=feed(s),match=state(thread);
          if(typeof match === "number")
           return return_unit;
          else
           {if(0 === match[0])continue;var exn=match[1];return fail(exn)}}
        if(node[2]){consume(s,node);var node$0=node[1],node=node$0;continue}
        return return_unit}}
    function get_available(s)
     {var node=s[3],acc=0;
      for(;;)
       {if(node === s[4][1])
         {var thread=feed(s),match=state(thread);
          if(typeof match === "number")
           return caml_call1(Stdlib_list[9],acc);
          else
           {if(0 === match[0])continue;var exn=match[1];throw exn}}
        var _dn_=node[2];
        if(_dn_)
         {var x=_dn_[1];
          consume(s,node);
          var acc$0=[0,x,acc],node$0=node[1],node=node$0,acc=acc$0;
          continue}
        return caml_call1(Stdlib_list[9],acc)}}
    function get_available_up_to(n$1,s)
     {var node=s[3],acc=0,n=n$1;
      for(;;)
       {if(0 < n)
         {if(node === s[4][1])
           {var thread=feed(s),match=state(thread);
            if(typeof match === "number")
             return caml_call1(Stdlib_list[9],acc);
            else
             {if(0 === match[0])continue;var exn=match[1];throw exn}}
          var _dm_=s[3][2];
          if(_dm_)
           {var x=_dm_[1];
            consume(s,node);
            var
             n$0=n - 1 | 0,
             acc$0=[0,x,acc],
             node$0=node[1],
             node=node$0,
             acc=acc$0,
             n=n$0;
            continue}
          return caml_call1(Stdlib_list[9],acc)}
        return caml_call1(Stdlib_list[9],acc)}}
    function is_empty$0(s)
     {if(s[3] === s[4][1])
       {var _dk_=function(param){return is_empty$0(s)},_dl_=feed(s);
        return caml_call2(_X_[1],_dl_,_dk_)}
      return lift(0 === s[3][2]?1:0)}
    function map$0(f,s)
     {return from
              (function(param)
                {function _di_(param)
                  {if(param)
                    {var x=param[1],x$0=caml_call1(f,x);return [0,x$0]}
                   return 0}
                 var _dj_=get$1(s);
                 return caml_call2(_X_[2],_dj_,_di_)})}
    function map_s(f,s)
     {return from
              (function(param)
                {function _de_(param)
                  {if(param)
                    {var
                      x=param[1],
                      _dg_=function(x){return [0,x]},
                      _dh_=caml_call1(f,x);
                     return caml_call2(_X_[2],_dh_,_dg_)}
                   return return_none}
                 var _df_=get$1(s);
                 return caml_call2(_X_[1],_df_,_de_)})}
    function filter(f,s)
     {function next(param)
       {var t=get$1(s);
        function _dd_(param)
         {if(param){var x=param[1],test=caml_call1(f,x);return test?t:next(0)}
          return return_none}
        return caml_call2(_X_[1],t,_dd_)}
      return from(next)}
    function filter_s(f,s)
     {function next(param)
       {var t=get$1(s);
        function _da_(param)
         {if(param)
           {var
             x=param[1],
             _db_=function(param){return param?t:next(0)},
             _dc_=caml_call1(f,x);
            return caml_call2(_X_[1],_dc_,_db_)}
          return t}
        return caml_call2(_X_[1],t,_da_)}
      return from(next)}
    function filter_map(f,s)
     {function next(param)
       {function _c__(param)
         {if(param)
           {var x=param[1],x$0=caml_call1(f,x);return x$0?lift(x$0):next(0)}
          return return_none}
        var _c$_=get$1(s);
        return caml_call2(_X_[1],_c$_,_c__)}
      return from(next)}
    function filter_map_s(f,s)
     {function next(param)
       {function _c7_(param)
         {if(param)
           {var
             x=param[1],
             t=caml_call1(f,x),
             _c9_=function(param){return param?t:next(0)};
            return caml_call2(_X_[1],t,_c9_)}
          return return_none}
        var _c8_=get$1(s);
        return caml_call2(_X_[1],_c8_,_c7_)}
      return from(next)}
    function map_list(f,s)
     {var pendings=[0,0];
      function next(param)
       {var _c4_=pendings[1];
        if(_c4_){var l=_c4_[2],x=_c4_[1];pendings[1] = l;return lift([0,x])}
        function _c5_(param)
         {if(param)
           {var x=param[1],l=caml_call1(f,x);pendings[1] = l;return next(0)}
          return return_none}
        var _c6_=get$1(s);
        return caml_call2(_X_[1],_c6_,_c5_)}
      return from(next)}
    function map_list_s(f,s)
     {var pendings=[0,0];
      function next(param)
       {var _cZ_=pendings[1];
        if(_cZ_){var l=_cZ_[2],x=_cZ_[1];pendings[1] = l;return lift([0,x])}
        function _c0_(param)
         {if(param)
           {var
             x=param[1],
             _c2_=function(l){pendings[1] = l;return next(0)},
             _c3_=caml_call1(f,x);
            return caml_call2(_X_[1],_c3_,_c2_)}
          return return_none}
        var _c1_=get$1(s);
        return caml_call2(_X_[1],_c1_,_c0_)}
      return from(next)}
    function flatten(s){return map_list(function(l){return l},s)}
    function fold_rec(node,f,s,acc)
     {var node$0=node,acc$0=acc;
      for(;;)
       {if(node$0 === s[4][1])
         {var
           _cW_=function(param){return fold_rec(node$0,f,s,acc$0)},
           _cX_=feed(s);
          return caml_call2(_X_[1],_cX_,_cW_)}
        var _cY_=node$0[2];
        if(_cY_)
         {var x=_cY_[1];
          consume(s,node$0);
          var
           acc$1=caml_call2(f,x,acc$0),
           node$1=node$0[1],
           node$0=node$1,
           acc$0=acc$1;
          continue}
        return lift(acc$0)}}
    function fold(f,s,acc){return fold_rec(s[3],f,s,acc)}
    function fold_s_rec(node,f,s,acc)
     {if(node === s[4][1])
       {var
         _cR_=function(param){return fold_s_rec(node,f,s,acc)},
         _cS_=feed(s);
        return caml_call2(_X_[1],_cS_,_cR_)}
      var _cT_=node[2];
      if(_cT_)
       {var x=_cT_[1];
        consume(s,node);
        var
         _cU_=function(acc){return fold_s_rec(node[1],f,s,acc)},
         _cV_=caml_call2(f,x,acc);
        return caml_call2(_X_[1],_cV_,_cU_)}
      return lift(acc)}
    function fold_s(f,s,acc){return fold_s_rec(s[3],f,s,acc)}
    function iter_rec(node,f,s)
     {var node$0=node;
      for(;;)
       {if(node$0 === s[4][1])
         {var _cO_=function(param){return iter_rec(node$0,f,s)},_cP_=feed(s);
          return caml_call2(_X_[1],_cP_,_cO_)}
        var _cQ_=node$0[2];
        if(_cQ_)
         {var x=_cQ_[1];
          consume(s,node$0);
          caml_call1(f,x);
          var node$1=node$0[1],node$0=node$1;
          continue}
        return return_unit}}
    function iter(f,s){return iter_rec(s[3],f,s)}
    function iter_s_rec(node,f,s)
     {if(node === s[4][1])
       {var _cJ_=function(param){return iter_s_rec(node,f,s)},_cK_=feed(s);
        return caml_call2(_X_[1],_cK_,_cJ_)}
      var _cL_=node[2];
      if(_cL_)
       {var x=_cL_[1];
        consume(s,node);
        var
         _cM_=function(param){return iter_s_rec(node[1],f,s)},
         _cN_=caml_call1(f,x);
        return caml_call2(_X_[1],_cN_,_cM_)}
      return return_unit}
    function iter_s(f,s){return iter_s_rec(s[3],f,s)}
    function iter_p_rec(node,f,s)
     {if(node === s[4][1])
       {var _cF_=function(param){return iter_p_rec(node,f,s)},_cG_=feed(s);
        return caml_call2(_X_[1],_cG_,_cF_)}
      var _cH_=node[2];
      if(_cH_)
       {var x=_cH_[1];
        consume(s,node);
        var
         res=caml_call1(f,x),
         rest=iter_p_rec(node[1],f,s),
         _cI_=function(param){return rest};
        return caml_call2(_X_[1],res,_cI_)}
      return return_unit}
    function iter_p(f,s){return iter_p_rec(s[3],f,s)}
    function iter_n(opt,f,stream)
     {if(opt)var sth=opt[1],max_concurrency=sth;else var max_concurrency=1;
      if(max_concurrency <= 0)
       {var message=caml_call2(Stdlib_printf[4],_$_,max_concurrency);
        caml_call1(Stdlib[1],message)}
      function loop(running,available)
       {function _cz_(param)
         {var available=param[2],running=param[1];
          function _cD_(param)
           {if(param)
             {var elt=param[1];
              return loop([0,caml_call1(f,elt),running],available - 1 | 0)}
            return join(running)}
          var _cE_=get$1(stream);
          return caml_call2(_X_[1],_cE_,_cD_)}
        if(0 < available)
         var _cA_=lift([0,running,available]);
        else
         var
          _cB_=
           function(param)
            {var running=param[2],complete=param[1];
             return lift
                     ([0,
                       running,
                       available + caml_call1(Stdlib_list[1],complete) | 0])},
          _cC_=nchoose_split(running),
          _cA_=caml_call2(_X_[1],_cC_,_cB_);
        return caml_call2(_X_[1],_cA_,_cz_)}
      return loop(0,max_concurrency)}
    function find_rec(node,f,s)
     {var node$0=node;
      for(;;)
       {if(node$0 === s[4][1])
         {var _cw_=function(param){return find_rec(node$0,f,s)},_cx_=feed(s);
          return caml_call2(_X_[1],_cx_,_cw_)}
        var _cy_=node$0[2];
        if(_cy_)
         {var x=_cy_[1];
          consume(s,node$0);
          var test=caml_call1(f,x);
          if(test)return lift(_cy_);
          var node$1=node$0[1],node$0=node$1;
          continue}
        return return_none}}
    function find(f,s){return find_rec(s[3],f,s)}
    function find_s_rec(node,f,s)
     {if(node === s[4][1])
       {var _cr_=function(param){return find_s_rec(node,f,s)},_cs_=feed(s);
        return caml_call2(_X_[1],_cs_,_cr_)}
      var _ct_=node[2];
      if(_ct_)
       {var x=_ct_[1];
        consume(s,node);
        var
         _cu_=function(param){return param?lift(_ct_):find_s_rec(node[1],f,s)},
         _cv_=caml_call1(f,x);
        return caml_call2(_X_[1],_cv_,_cu_)}
      return return_none}
    function find_s(f,s){return find_s_rec(s[3],f,s)}
    function find_map_rec(node,f,s)
     {var node$0=node;
      for(;;)
       {if(node$0 === s[4][1])
         {var
           _co_=function(param){return find_map_rec(node$0,f,s)},
           _cp_=feed(s);
          return caml_call2(_X_[1],_cp_,_co_)}
        var _cq_=node$0[2];
        if(_cq_)
         {var x=_cq_[1];
          consume(s,node$0);
          var x$0=caml_call1(f,x);
          if(0 === x$0){var node$1=node$0[1],node$0=node$1;continue}
          return lift(x$0)}
        return return_none}}
    function find_map(f,s){return find_map_rec(s[3],f,s)}
    function find_map_s_rec(node,f,s)
     {if(node === s[4][1])
       {var
         _ck_=function(param){return find_map_s_rec(node,f,s)},
         _cl_=feed(s);
        return caml_call2(_X_[1],_cl_,_ck_)}
      var _cm_=node[2];
      if(_cm_)
       {var x=_cm_[1];
        consume(s,node);
        var
         t=caml_call1(f,x),
         _cn_=function(param){return param?t:find_map_s_rec(node[1],f,s)};
        return caml_call2(_X_[1],t,_cn_)}
      return return_none}
    function find_map_s(f,s){return find_map_s_rec(s[3],f,s)}
    function combine(s1,s2)
     {function next(param)
       {var t1=get$1(s1),t2=get$1(s2);
        function _ci_(n1)
         {function _cj_(match)
           {if(n1 && match)
             {var x2=match[1],x1=n1[1];return lift([0,[0,x1,x2]])}
            return return_none}
          return caml_call2(_X_[1],t2,_cj_)}
        return caml_call2(_X_[1],t1,_ci_)}
      return from(next)}
    function append(s1,s2)
     {var current_s=[0,s1];
      function next(param)
       {var t=get$1(current_s[1]);
        function _ch_(param)
         {return param
                  ?t
                  :current_s[1] === s2?return_none:(current_s[1] = s2,next(0))}
        return caml_call2(_X_[1],t,_ch_)}
      return from(next)}
    function concat(s_top)
     {var current_s=[0,from(function(param){return return_none})];
      function next(param)
       {var t=get$1(current_s[1]);
        function _ce_(param)
         {if(param)return t;
          function _cf_(param)
           {if(param){var s=param[1];current_s[1] = s;return next(0)}
            return return_none}
          var _cg_=get$1(s_top);
          return caml_call2(_X_[1],_cg_,_cf_)}
        return caml_call2(_X_[1],t,_ce_)}
      return from(next)}
    function choose$0(streams)
     {function source(s)
       {function _cc_(x){return [0,s,x]}
        var _cd_=get$1(s);
        return [0,s,caml_call2(_X_[2],_cd_,_cc_)]}
      var streams$0=[0,caml_call2(Stdlib_list[17],source,streams)];
      function next(param)
       {var _b9_=streams$0[1];
        if(_b9_)
         {var
           _b__=
            function(param)
             {var x=param[2],s=param[1],l=caml_call2(Stdlib_list[48],s,_b9_);
              return x
                      ?(streams$0[1] = [0,source(s),l],lift(x))
                      :(streams$0[1] = l,next(0))},
           _b$_=function(_cb_){return _cb_[2]},
           _ca_=choose(caml_call2(Stdlib_list[17],_b$_,_b9_));
          return caml_call2(_X_[1],_ca_,_b__)}
        return return_none}
      return from(next)}
    function parse(s,f)
     {if(3 === s[1][0])caml_call1(Stdlib[1],cst_Lwt_stream_parse);
      var node=s[3];
      function _b8_(exn){s[3] = node;return fail(exn)}
      return catch$0(function(param){return caml_call1(f,s)},_b8_)}
    function hexdump(stream)
     {var buf=caml_call1(Stdlib_buffer[1],80),num=[0,0];
      return from
              (function(param)
                {function _b4_(l)
                  {if(l)
                    {caml_call1(Stdlib_buffer[8],buf);
                     caml_call3(Stdlib_printf[5],buf,_aa_,num[1]);
                     num[1] = num[1] + 16 | 0;
                     var pos=0,param=l;
                     for(;;)
                      {if(param)
                        {var l$0=param[2],x=param[1];
                         if(8 === pos)caml_call2(Stdlib_buffer[10],buf,32);
                         caml_call3(Stdlib_printf[5],buf,_ab_,x);
                         var pos$0=pos + 1 | 0,pos=pos$0,param=l$0;
                         continue}
                       var pos$1=pos;
                       for(;;)
                        {if(pos$1 < 16)
                          {if(8 === pos$1)
                            caml_call2(Stdlib_buffer[14],buf,cst$3);
                           else
                            caml_call2(Stdlib_buffer[14],buf,cst$4);
                           var pos$2=pos$1 + 1 | 0,pos$1=pos$2;
                           continue}
                         caml_call2(Stdlib_buffer[14],buf,cst$5);
                         var
                          _b6_=
                           function(ch)
                            {var switch$0=0;
                             if(32 <= ch && ! (126 < ch)){var _b7_=ch;switch$0 = 1}
                             if(! switch$0)var _b7_=46;
                             return caml_call2(Stdlib_buffer[10],buf,_b7_)};
                         caml_call2(Stdlib_list[15],_b6_,l);
                         caml_call2(Stdlib_buffer[10],buf,124);
                         return lift([0,caml_call1(Stdlib_buffer[2],buf)])}}}
                   return return_none}
                 var _b5_=nget(16,stream);
                 return caml_call2(_X_[1],_b5_,_b4_)})}
    var
     Lwt_stream=
      [0,
       from,
       from_direct,
       Closed,
       create$1,
       create_with_reference,
       Full,
       create_bounded,
       of_seq,
       of_list,
       of_array,
       of_string,
       clone,
       to_list,
       to_string,
       Empty$0,
       peek,
       npeek,
       get$1,
       nget,
       get_while,
       get_while_s,
       next,
       last_new,
       junk,
       njunk,
       junk_while,
       junk_while_s,
       junk_old,
       get_available,
       get_available_up_to,
       is_empty$0,
       is_closed,
       closed,
       on_terminate,
       on_terminate,
       choose$0,
       map$0,
       map_s,
       filter,
       filter_s,
       filter_map,
       filter_map_s,
       map_list,
       map_list_s,
       fold,
       fold_s,
       iter,
       iter_p,
       iter_s,
       iter_n,
       find,
       find_s,
       find_map,
       find_map_s,
       combine,
       append,
       concat,
       flatten,
       wrap_exn,
       parse,
       hexdump,
       map_exn];
    caml_register_global(101,Lwt_stream,"Lwt_stream");
    function return$0(x){return lift([0,x])}
    function fail$0(e){return lift([1,e])}
    function ok(x){return symbol(function(y){return [0,y]},x)}
    function map$1(f,e)
     {return symbol
              (function(param)
                {if(0 === param[0]){var x=param[1];return [0,caml_call1(f,x)]}
                 var e=param[1];
                 return [1,e]},
               e)}
    function map_err(f,e)
     {return symbol
              (function(param)
                {if(0 === param[0]){var x=param[1];return [0,x]}
                 var e=param[1];
                 return [1,caml_call1(f,e)]},
               e)}
    function catch$1(e){return catch$0(function(param){return ok(e)},fail$0)}
    function get_exn(e)
     {return symbol_bind
              (e,
               function(param)
                {if(0 === param[0]){var x=param[1];return lift(x)}
                 var e=param[1];
                 return fail(e)})}
    function symbol_bind$0(e,f)
     {return symbol_bind
              (e,
               function(param)
                {if(0 === param[0]){var x=param[1];return caml_call1(f,x)}
                 var e=param[1];
                 return lift([1,e])})}
    function bind_lwt(e,f)
     {return symbol_bind
              (e,
               function(param)
                {if(0 === param[0]){var x=param[1];return ok(caml_call1(f,x))}
                 var e=param[1];
                 return fail$0(e)})}
    function bind_result(e,f)
     {return symbol
              (function(param)
                {if(0 === param[0]){var x=param[1];return caml_call1(f,x)}
                 var e=param[1];
                 return [1,e]},
               e)}
    function bind_lwt_err(e,f)
     {return symbol_bind
              (e,
               function(param)
                {if(0 === param[0]){var x=param[1];return return$0(x)}
                 var e=param[1];
                 return symbol_bind(caml_call1(f,e),fail$0)})}
    function both$0(a,b)
     {var s=[0,0];
      function set_once(e){return s[1]?0:(s[1] = [0,e],0)}
      var b$0=map_err(set_once,b),a$0=map_err(set_once,a),_bZ_=both(a$0,b$0);
      return symbol
              (function(param)
                {var _b0_=param[1];
                 if(0 === _b0_[0])
                  {var _b1_=param[2],_b2_=_b0_[1];
                   if(0 === _b1_[0]){var y=_b1_[1];return [0,[0,_b2_,y]]}}
                 var _b3_=s[1];
                 if(_b3_){var e=_b3_[1];return [1,e]}
                 throw [0,Assert_failure,_ac_]},
               _bZ_)}
    function symbol$4(e,f){return map$1(f,e)}
    function let$1(x,f){return map$1(f,x)}
    var
     Syntax$0=[0,symbol_bind$0,both$0,let$1,both$0],
     Lwt_result=
      [0,
       return$0,
       fail$0,
       lift,
       ok,
       catch$1,
       get_exn,
       map$1,
       map_err,
       symbol_bind$0,
       bind_lwt,
       bind_lwt_err,
       bind_result,
       both$0,
       [0,symbol$4,symbol_bind$0],
       Syntax$0,
       symbol$4,
       symbol_bind$0];
    caml_register_global(102,Lwt_result,"Lwt_result");
    function Make(Ord)
     {function link(t1,t2)
       {var
         c2=t2[3],
         r2=t2[2],
         x2=t2[1],
         c1=t1[3],
         r1=t1[2],
         x1=t1[1],
         c=caml_call2(Ord[1],x1,x2);
        return 0 < c?[0,x2,r2 + 1 | 0,[0,t1,c2]]:[0,x1,r1 + 1 | 0,[0,t2,c1]]}
      function ins(t,ts)
       {var t$0=t,ts$0=ts;
        for(;;)
         {if(ts$0)
           {var t$1=ts$0[1];
            if(t$0[2] < t$1[2])return [0,t$0,ts$0];
            var ts$1=ts$0[2],t$2=link(t$0,t$1),t$0=t$2,ts$0=ts$1;
            continue}
          return [0,t$0,0]}}
      var empty=0;
      function is_empty(ts){return 0 === ts?1:0}
      function add(x,ts){return ins([0,x,0,0],ts)}
      function union(ts$0,ts)
       {if(ts$0)
         {if(ts)
           {var ts2=ts[2],t2=ts[1],ts1=ts$0[2],t1=ts$0[1];
            if(t1[2] < t2[2])return [0,t1,union(ts1,[0,t2,ts2])];
            if(t2[2] < t1[2])return [0,t2,union([0,t1,ts1],ts2)];
            var _bY_=union(ts1,ts2);
            return ins(link(t1,t2),_bY_)}
          return ts$0}
        return ts}
      function find_min(param)
       {if(param)
         {var _bX_=param[1];
          if(param[2])
           {var ts=param[2],x=find_min(ts),c=caml_call2(Ord[1],_bX_[1],x);
            return 0 <= c?x:_bX_[1]}
          return _bX_[1]}
        throw Stdlib[8]}
      function lookup_min(param)
       {if(param)
         {var _bW_=param[1];
          if(param[2])
           {var ts=param[2],result=lookup_min(ts);
            if(result)
             {var x=result[1],c=caml_call2(Ord[1],_bW_[1],x);
              return 0 <= c?result:[0,_bW_[1]]}
            return 0}
          return [0,_bW_[1]]}
        return 0}
      function get_min(param)
       {if(param)
         {var _bV_=param[1];
          if(param[2])
           {var
             ts=param[2],
             match=get_min(ts),
             ts$0=match[2],
             t=match[1],
             c=caml_call2(Ord[1],_bV_[1],t[1]);
            return 0 <= c?[0,t,[0,_bV_,ts$0]]:[0,_bV_,ts]}
          return [0,_bV_,0]}
        throw [0,Assert_failure,_ad_]}
      function remove_min(ts)
       {if(ts)
         {var _bU_=get_min(ts),ts$0=_bU_[2],match=_bU_[1],c=match[3];
          return union(caml_call1(Stdlib_list[9],c),ts$0)}
        throw Stdlib[8]}
      function size(l)
       {var _bS_=0;
        function _bT_(s,t){var tl=t[3];return s + (1 + size(tl) | 0) | 0}
        return caml_call3(Stdlib_list[22],_bT_,_bS_,l)}
      return [0,empty,is_empty,add,union,find_min,lookup_min,remove_min,size]}
    var Lwt_pqueue=[0,Make];
    caml_register_global(103,Lwt_pqueue,"Lwt_pqueue");
    function tail_recursive_map(f,l)
     {var _bR_=caml_call2(Stdlib_list[19],f,l);
      return caml_call1(Stdlib_list[9],_bR_)}
    function tail_recursive_mapi(f,param)
     {var acc=0,i=0,param$0=param;
      for(;;)
       {if(param$0)
         {var
           tl=param$0[2],
           hd=param$0[1],
           i$0=i + 1 | 0,
           acc$0=[0,caml_call2(f,i,hd),acc],
           acc=acc$0,
           i=i$0,
           param$0=tl;
          continue}
        return caml_call1(Stdlib_list[9],acc)}}
    function iter_s$0(f,l)
     {if(l)
       {var
         l$0=l[2],
         x=l[1],
         _bP_=function(param){return iter_s$0(f,l$0)},
         _bQ_=apply(f,x);
        return caml_call2(_X_[1],_bQ_,_bP_)}
      return return_unit}
    function iter_p$0(f,l)
     {var ts=tail_recursive_map(function(_bO_){return apply(f,_bO_)},l);
      return join(ts)}
    function _ae_(i,f,l)
     {if(l)
       {var
         l$0=l[2],
         x=l[1],
         _bM_=function(param){return _ae_(i + 1 | 0,f,l$0)},
         _bN_=apply(caml_call1(f,i),x);
        return caml_call2(_X_[1],_bN_,_bM_)}
      return return_unit}
    function iteri_s(f,l){return _ae_(0,f,l)}
    function iteri_p(f,l)
     {function f$0(i)
       {var _bK_=caml_call1(f,i);
        return function(_bL_){return apply(_bK_,_bL_)}}
      var ts=tail_recursive_mapi(f$0,l);
      return join(ts)}
    function map_s$0(f,l)
     {function inner(acc,param)
       {if(param)
         {var
           tl=param[2],
           hd=param[1],
           _bI_=function(r){return inner([0,r,acc],tl)},
           _bJ_=apply(f,hd);
          return caml_call2(_X_[1],_bJ_,_bI_)}
        return lift(caml_call1(Stdlib_list[9],acc))}
      return inner(0,l)}
    function collect(acc,param)
     {if(param)
       {var
         ts=param[2],
         t=param[1],
         _bH_=function(i){return collect([0,i,acc],ts)};
        return caml_call2(_X_[1],t,_bH_)}
      return lift(caml_call1(Stdlib_list[9],acc))}
    function map_p(f,l)
     {var ts=tail_recursive_map(function(_bG_){return apply(f,_bG_)},l);
      return collect(0,ts)}
    function filter_map_s$0(f,l)
     {function inner(acc,param)
       {if(param)
         {var
           tl=param[2],
           hd=param[1],
           _bE_=
            function(param)
             {if(param){var v=param[1];return inner([0,v,acc],tl)}
              return inner(acc,tl)},
           _bF_=apply(f,hd);
          return caml_call2(_X_[1],_bF_,_bE_)}
        return lift(caml_call1(Stdlib_list[9],acc))}
      return inner(0,l)}
    function filter_map_p(f,l)
     {function collect_optional(acc,param)
       {if(param)
         {var
           ts=param[2],
           t=param[1],
           _bD_=
            function(param)
             {if(param){var v=param[1];return collect_optional([0,v,acc],ts)}
              return collect_optional(acc,ts)};
          return caml_call2(_X_[1],t,_bD_)}
        return lift(caml_call1(Stdlib_list[9],acc))}
      var ts=tail_recursive_map(function(_bC_){return apply(f,_bC_)},l);
      return collect_optional(0,ts)}
    function mapi_s(f,l)
     {function inner(acc,i,param)
       {if(param)
         {var
           tl=param[2],
           hd=param[1],
           _bA_=function(v){return inner([0,v,acc],i + 1 | 0,tl)},
           _bB_=apply(caml_call1(f,i),hd);
          return caml_call2(_X_[1],_bB_,_bA_)}
        return lift(caml_call1(Stdlib_list[9],acc))}
      return inner(0,0,l)}
    function mapi_p(f,l)
     {function f$0(i)
       {var _by_=caml_call1(f,i);
        return function(_bz_){return apply(_by_,_bz_)}}
      var ts=tail_recursive_mapi(f$0,l);
      return collect(0,ts)}
    function rev_map_append_s(acc,f,l)
     {if(l)
       {var
         l$0=l[2],
         x=l[1],
         _bw_=function(x){return rev_map_append_s([0,x,acc],f,l$0)},
         _bx_=apply(f,x);
        return caml_call2(_X_[1],_bx_,_bw_)}
      return lift(acc)}
    function rev_map_s(f,l){return rev_map_append_s(0,f,l)}
    function rev_map_p(f,l$1)
     {var acc$0=acc,l=l$1;
      for(;;)
       {if(l)
         {var
           l$0=l[2],
           x=l[1],
           _bt_=
            function(acc)
              {return function(x)
                {function _bv_(l){return [0,x,l]}
                 return caml_call2(_X_[2],acc,_bv_)}}
             (acc$0),
           _bu_=apply(f,x),
           acc$1=caml_call2(_X_[1],_bu_,_bt_),
           acc$0=acc$1,
           l=l$0;
          continue}
        return acc$0}}
    function fold_left_s(f,acc,l)
     {if(l)
       {var
         l$0=l[2],
         x=l[1],
         _br_=function(acc){return fold_left_s(f,acc,l$0)},
         _bs_=apply(caml_call1(f,acc),x);
        return caml_call2(_X_[1],_bs_,_br_)}
      return lift(acc)}
    function fold_right_s(f,l,acc)
     {function inner(f,a,param)
       {if(param)
         {var
           tl=param[2],
           hd=param[1],
           _bp_=function(a){return inner(f,a,tl)},
           _bq_=apply(caml_call1(f,hd),a);
          return caml_call2(_X_[1],_bq_,_bp_)}
        return lift(a)}
      return inner(f,acc,caml_call1(Stdlib_list[9],l))}
    function for_all_s(f,l)
     {if(l)
       {var
         l$0=l[2],
         x=l[1],
         _bn_=function(param){return param?for_all_s(f,l$0):return_false},
         _bo_=apply(f,x);
        return caml_call2(_X_[1],_bo_,_bn_)}
      return return_true}
    function for_all_p(f,l)
     {function _bk_(bl)
       {function _bm_(x){return x}
        return lift(caml_call2(Stdlib_list[29],_bm_,bl))}
      var _bl_=map_p(f,l);
      return caml_call2(_X_[1],_bl_,_bk_)}
    function exists_s(f,l)
     {if(l)
       {var
         l$0=l[2],
         x=l[1],
         _bi_=function(param){return param?return_true:exists_s(f,l$0)},
         _bj_=apply(f,x);
        return caml_call2(_X_[1],_bj_,_bi_)}
      return return_false}
    function exists_p(f,l)
     {function _bf_(bl)
       {function _bh_(x){return x}
        return lift(caml_call2(Stdlib_list[30],_bh_,bl))}
      var _bg_=map_p(f,l);
      return caml_call2(_X_[1],_bg_,_bf_)}
    function find_s$0(f,l)
     {if(l)
       {var
         l$0=l[2],
         x=l[1],
         _bd_=function(param){return param?lift(x):find_s$0(f,l$0)},
         _be_=apply(f,x);
        return caml_call2(_X_[1],_be_,_bd_)}
      return fail(Stdlib[8])}
    function optionalize(f,x)
     {function _bb_(b){return b?lift([0,x]):lift(0)}
      var _bc_=caml_call1(f,x);
      return caml_call2(_X_[1],_bc_,_bb_)}
    function filter_s$0(f,l)
     {return filter_map_s$0(function(_ba_){return optionalize(f,_ba_)},l)}
    function filter_p(f,l)
     {return filter_map_p(function(_a$_){return optionalize(f,_a$_)},l)}
    function partition_s(f,l)
     {function inner(acc1,acc2,param)
       {if(param)
         {var
           tl=param[2],
           hd=param[1],
           _a8_=
            function(b)
             {return b?inner([0,hd,acc1],acc2,tl):inner(acc1,[0,hd,acc2],tl)},
           _a9_=apply(f,hd);
          return caml_call2(_X_[1],_a9_,_a8_)}
        var _a__=caml_call1(Stdlib_list[9],acc2);
        return lift([0,caml_call1(Stdlib_list[9],acc1),_a__])}
      return inner(0,0,l)}
    function partition_p(f,l)
     {function g(x)
       {function _a6_(b){return lift([0,b,x])}
        var _a7_=apply(f,x);
        return caml_call2(_X_[1],_a7_,_a6_)}
      function _aX_(tl)
       {function _aZ_(_a5_){return _a5_[1]}
        var
         _a0_=caml_call2(Stdlib_list[38],_aZ_,tl),
         group1=tail_recursive_map(function(_a4_){return _a4_[2]},_a0_);
        function _a1_(x){return 1 - x[1]}
        var
         _a2_=caml_call2(Stdlib_list[38],_a1_,tl),
         group2=tail_recursive_map(function(_a3_){return _a3_[2]},_a2_);
        return lift([0,group1,group2])}
      var _aY_=map_p(g,l);
      return caml_call2(_X_[1],_aY_,_aX_)}
    var
     Lwt_list=
      [0,
       iter_s$0,
       iter_p$0,
       iteri_s,
       iteri_p,
       map_s$0,
       map_p,
       mapi_s,
       mapi_p,
       rev_map_s,
       rev_map_p,
       fold_left_s,
       fold_right_s,
       for_all_s,
       for_all_p,
       exists_s,
       exists_p,
       find_s$0,
       filter_s$0,
       filter_p,
       filter_map_s$0,
       filter_map_p,
       partition_s,
       partition_p];
    caml_register_global(104,Lwt_list,"Lwt_list");
    function create$2(m,opt,_aV_,_aU_,create$0)
     {if(opt)
       var sth=opt[1],validate=sth;
      else
       var validate=function(param){return return_true};
      if(_aV_)
       var sth$0=_aV_[1],check=sth$0;
      else
       var check=function(param,f){return caml_call1(f,1)};
      if(_aU_)
       var sth$1=_aU_[1],dispose=sth$1;
      else
       var dispose=function(param){return return_unit};
      var _aW_=create(0);
      return [0,
              create$0,
              check,
              validate,
              dispose,
              [0,[0,0]],
              m,
              0,
              caml_call1(Stdlib_queue[2],0),
              _aW_]}
    function create_member(p)
     {function _aT_(exn){p[7] = p[7] - 1 | 0;return fail(exn)}
      return catch$0
              (function(param){p[7] = p[7] + 1 | 0;return caml_call1(p[1],0)},
               _aT_)}
    function release(p,c)
     {var match=take_opt_l(p[9]);
      if(match){var wakener=match[1];return wakeup_later(wakener,c)}
      return caml_call2(Stdlib_queue[4],c,p[8])}
    function dispose(p,c)
     {function _aR_(param){p[7] = p[7] - 1 | 0;return return_unit}
      var _aS_=caml_call1(p[4],c);
      return caml_call2(_X_[1],_aS_,_aR_)}
    function validate_and_return(p,c)
     {function _aJ_(e)
       {function _aN_(param)
         {var match=take_opt_l(p[9]);
          if(match)
           {var
             wakener=match[1],
             _aP_=function(exn){return wakeup_later_exn(wakener,exn)},
             _aQ_=function(c){return wakeup_later(wakener,c)};
            on_any(apply(p[1],0),_aQ_,_aP_)}
          return fail(e)}
        var _aO_=dispose(p,c);
        return caml_call2(_X_[1],_aO_,_aN_)}
      function _aK_(param)
       {if(param)return lift(c);
        function _aL_(param){return create_member(p)}
        var _aM_=dispose(p,c);
        return caml_call2(_X_[1],_aM_,_aL_)}
      return try_bind(function(param){return caml_call1(p[3],c)},_aK_,_aJ_)}
    function use(p,f)
     {function _ay_(c)
       {var cleared=p[5][1];
        function _aB_(e)
         {function _aG_(param){return fail(e)}
          var ok=[0,0],_aH_=cleared[1];
          function _aF_(result){ok[1] = result;return 0}
          caml_call2(p[2],c,_aF_);
          var switch$0=0;
          if(! _aH_ && ok[1]){release(p,c);var _aI_=return_unit;switch$0 = 1}
          if(! switch$0)var _aI_=dispose(p,c);
          return caml_call2(_X_[1],_aI_,_aG_)}
        var promise=catch$0(function(param){return caml_call1(f,c)},_aB_);
        function _aC_(param)
         {if(cleared[1])
           {var _aD_=function(param){return promise},_aE_=dispose(p,c);
            return caml_call2(_X_[1],_aE_,_aD_)}
          release(p,c);
          return promise}
        return caml_call2(_X_[1],promise,_aC_)}
      if(caml_call1(Stdlib_queue[13],p[8]))
       if(p[7] < p[6])
        var _az_=create_member(p);
       else
        var
         _aw_=function(_aA_){return validate_and_return(p,_aA_)},
         _ax_=add_task_r(p[9]),
         _az_=caml_call2(_X_[1],_ax_,_aw_);
      else
       var c=caml_call1(Stdlib_queue[5],p[8]),_az_=validate_and_return(p,c);
      return caml_call2(_X_[1],_az_,_ay_)}
    function clear(p)
     {var _as_=p[8],_at_=0;
      function _au_(l,element){return [0,element,l]}
      var elements=caml_call3(Stdlib_queue[16],_au_,_at_,_as_);
      caml_call1(Stdlib_queue[11],p[8]);
      var old_cleared=p[5][1];
      old_cleared[1] = 1;
      p[5][1] = [0,0];
      return iter_s$0(function(_av_){return dispose(p,_av_)},elements)}
    function wait_queue_length(p){return length(p[9])}
    var Lwt_pool=[0,create$2,use,clear,wait_queue_length];
    caml_register_global(105,Lwt_pool,"Lwt_pool");
    function create_empty(param)
     {var _ar_=create(0);return [0,0,create(0),_ar_]}
    function create$3(v){var _aq_=create(0);return [0,[0,v],create(0),_aq_]}
    function put(mvar,v)
     {if(mvar[1])
       {var match=task(0),w=match[2],res=match[1],node=add_r([0,v,w],mvar[2]);
        on_cancel(res,function(param){return remove(node)});
        return res}
      var match$0=take_opt_l(mvar[3]);
      if(match$0){var w$0=match$0[1];wakeup_later(w$0,v)}else mvar[1] = [0,v];
      return return_unit}
    function take_available(mvar)
     {var _ap_=mvar[1];
      if(_ap_)
       {var v$0=_ap_[1],match=take_opt_l(mvar[2]);
        if(match)
         {var match$0=match[1],w=match$0[2],v=match$0[1];
          mvar[1] = [0,v];
          wakeup_later(w,0)}
        else
         mvar[1] = 0;
        return [0,v$0]}
      return 0}
    function take(mvar)
     {var match=take_available(mvar);
      if(match){var v=match[1];return lift(v)}
      return add_task_r(mvar[3])}
    function is_empty$1(mvar){return mvar[1]?0:1}
    var Lwt_mvar=[0,create$3,create_empty,put,take,take_available,is_empty$1];
    caml_register_global(106,Lwt_mvar,"Lwt_mvar");
    function create$4(param){return [0,0,create(0)]}
    function lock(m){return m[1]?add_task_r(m[2]):(m[1] = 1,return_unit)}
    function unlock(m)
     {var _ao_=m[1];
      return _ao_
              ?is_empty(m[2])?(m[1] = 0,0):wakeup_later(take_l(m[2]),0)
              :_ao_}
    function with_lock(m,f)
     {function _am_(param)
       {return finalize(f,function(param){unlock(m);return return_unit})}
      var _an_=lock(m);
      return caml_call2(_X_[1],_an_,_am_)}
    function is_locked(m){return m[1]}
    function is_empty$2(m){return is_empty(m[2])}
    var Lwt_mutex=[0,create$4,lock,unlock,is_locked,is_empty$2,with_lock];
    caml_register_global(107,Lwt_mutex,"Lwt_mutex");
    function wait$0(mutex,cvar)
     {var waiter=add_task_r(cvar);
      if(mutex){var m=mutex[1];unlock(m)}
      function _al_(param)
       {if(mutex){var m=mutex[1];return lock(m)}return return_unit}
      return finalize(function(param){return waiter},_al_)}
    function signal(cvar,arg)
     {try
       {var _aj_=wakeup_later(take_l(cvar),arg);return _aj_}
      catch(_ak_)
       {_ak_ = caml_wrap_exception(_ak_);
        if(_ak_ === Empty)return 0;
        throw _ak_}}
    function broadcast(cvar,arg)
     {var _ah_=0,wakeners=fold_r(function(x,l){return [0,x,l]},cvar,_ah_);
      iter_node_l(remove,cvar);
      function _ai_(wakener){return wakeup_later(wakener,arg)}
      return caml_call2(Stdlib_list[15],_ai_,wakeners)}
    function broadcast_exn(cvar,exn)
     {var _af_=0,wakeners=fold_r(function(x,l){return [0,x,l]},cvar,_af_);
      iter_node_l(remove,cvar);
      function _ag_(wakener){return wakeup_later_exn(wakener,exn)}
      return caml_call2(Stdlib_list[15],_ag_,wakeners)}
    var Lwt_condition=[0,create,wait$0,signal,broadcast,broadcast_exn];
    caml_register_global(108,Lwt_condition,"Lwt_condition");
    return}
  (function(){return this}()));


//# 1 "../../.js/tezos-stdlib/tezos_stdlib.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_compare=runtime.caml_compare,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_equal=runtime.caml_equal,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_int64_and=runtime.caml_int64_and,
     caml_int64_or=runtime.caml_int64_or,
     caml_int64_shift_left=runtime.caml_int64_shift_left,
     caml_int64_shift_right_unsigne=runtime.caml_int64_shift_right_unsigned,
     caml_int64_xor=runtime.caml_int64_xor,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_notequal=runtime.caml_notequal,
     caml_register_global=runtime.caml_register_global,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_None=caml_string_of_jsbytes("None"),
     cst_Utils_select=caml_string_of_jsbytes("Utils.select"),
     cst_Utils_Bounded_create=
      caml_string_of_jsbytes("Utils.Bounded(_).create"),
     cst_Utils_rev_sub_n_must_be_no=
      caml_string_of_jsbytes("Utils.rev_sub: `n` must be non-negative."),
     cst_undocumented=caml_string_of_jsbytes("undocumented"),
     cst_Tezos_stdlib_Tag_Def_X_Me=
      caml_string_of_jsbytes("Tezos_stdlib.Tag.Def(X).Me"),
     cst_Tezos_stdlib_Lwt_pipe_Clos=
      caml_string_of_jsbytes("Tezos_stdlib.Lwt_pipe.Closed"),
     cst_Tezos_stdlib_Lwt_dropbox_C=
      caml_string_of_jsbytes("Tezos_stdlib.Lwt_dropbox.Closed"),
     zero=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     zero$0=
      [0,
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(0,0,0)],
     one=
      [0,
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(1,0,0)],
     cst_Circular_buffer_read_len_l=
      caml_string_of_jsbytes("Circular_buffer.read: len > (length data)."),
     cst_Circular_buffer_read_negat=
      caml_string_of_jsbytes("Circular_buffer.read: negative length."),
     cst_Circular_buffer_write_writ=
      caml_string_of_jsbytes
       ("Circular_buffer.write: written more bytes than maxlen"),
     cst_Circular_buffer_write_nega=
      caml_string_of_jsbytes("Circular_buffer.write: negative length."),
     Assert_failure=global_data.Assert_failure,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib=global_data.Stdlib,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_set=global_data.Stdlib__set,
     Stdlib_map=global_data.Stdlib__map,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_option=global_data.Stdlib__option,
     Stdlib_random=global_data.Stdlib__random,
     Stdlib_filename=global_data.Stdlib__filename,
     Stdlib_obj=global_data.Stdlib__obj,
     Lwt=global_data.Lwt,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Stdlib_printf=global_data.Stdlib__printf,
     Lwt_condition=global_data.Lwt_condition,
     Stdlib_queue=global_data.Stdlib__queue,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib_int32=global_data.Stdlib__int32,
     Stdlib_int64=global_data.Stdlib__int64,
     Stdlib_ephemeron=global_data.Stdlib__ephemeron,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Stdlib_weak=global_data.Stdlib__weak,
     Tezos_stdlib=[0];
    caml_register_global(36,Tezos_stdlib,"Tezos_stdlib");
    var
     _a_=[0,caml_string_of_jsbytes("src/lib_stdlib/utils.ml"),46,6],
     _c_=[0,caml_string_of_jsbytes("src/lib_stdlib/tzList.ml"),145,10],
     _b_=[0,caml_string_of_jsbytes("src/lib_stdlib/tzList.ml"),82,10],
     _h_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<1>"),0],
          caml_string_of_jsbytes("<1>")]],
        [12,123,0]],
       caml_string_of_jsbytes("@[<1>{")],
     _i_=[0,[12,125,[17,0,0]],caml_string_of_jsbytes("}@]")],
     _g_=
      [0,
       [11,
        caml_string_of_jsbytes("tag named "),
        [2,0,[11,caml_string_of_jsbytes(" not found in set"),0]]],
       caml_string_of_jsbytes("tag named %s not found in set")],
     _f_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<1>"),0],
          caml_string_of_jsbytes("<1>")]],
        [12,
         40,
         [15,
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [18,
            [1,[0,0,caml_string_of_jsbytes("")]],
            [15,[17,0,[12,41,[17,0,0]]]]]]]]],
       caml_string_of_jsbytes("@[<1>(%a@ @[%a@])@]")],
     _e_=
      [0,
       [11,caml_string_of_jsbytes("tag:"),[2,0,0]],
       caml_string_of_jsbytes("tag:%s")],
     _d_=[0,0],
     _j_=
      [0,
       [11,caml_string_of_jsbytes("Exception: "),[2,0,0]],
       caml_string_of_jsbytes("Exception: %s")],
     _E_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _F_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _C_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _D_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _A_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _B_=runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65535),
     _x_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _y_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _z_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _I_=[0,caml_string_of_jsbytes("src/lib_stdlib/circular_buffer.ml"),278,6];
    function symbol(i,j)
     {function _dH_(x){return x + i | 0}
      return caml_call2(Stdlib_list[10],(j - i | 0) + 1 | 0,_dH_)}
    var Infix=[0,symbol];
    function cut(opt,sz,bytes)
     {if(opt)var sth=opt[1],copy=sth;else var copy=0;
      var length=caml_ml_bytes_length(bytes);
      if(length <= sz)return [0,bytes,0];
      var
       may_copy=copy?Stdlib_bytes[4]:function(t){return t},
       nb_full=runtime.caml_div(length,sz),
       curr_upper_limit=runtime.caml_mul(nb_full,sz),
       acc=
        curr_upper_limit === length
         ?0
         :[0,
           caml_call1
            (may_copy,
             caml_call3
              (Stdlib_bytes[7],
               bytes,
               curr_upper_limit,
               length - curr_upper_limit | 0)),
           0],
       curr_upper_limit$0=curr_upper_limit,
       acc$0=acc;
      for(;;)
       {var start=curr_upper_limit$0 - sz | 0;
        if(0 <= start)
         {var
           acc$1=
            [0,
             caml_call1(may_copy,caml_call3(Stdlib_bytes[7],bytes,start,sz)),
             acc$0];
          if(0 === start)return acc$1;
          var curr_upper_limit$0=start,acc$0=acc$1;
          continue}
        throw [0,Assert_failure,_a_]}}
    var Tezos_stdlib_Utils=[0,Infix,cut];
    caml_register_global(40,Tezos_stdlib_Utils,"Tezos_stdlib__Utils");
    var
     Set=caml_call1(Stdlib_set[1],[0,Stdlib_string[33]]),
     Map=caml_call1(Stdlib_map[1],[0,Stdlib_string[33]]);
    function split(delim,opt,_dC_,path)
     {if(opt)var sth=opt[1],dup=sth;else var dup=1;
      if(_dC_)var sth$0=_dC_[1],limit=sth$0;else var limit=Stdlib[19];
      var l=caml_ml_string_length(path);
      function do_slashes$0(counter,acc,limit,i)
       {var i$0=i;
        for(;;)
         {if(l <= i$0)return caml_call1(Stdlib_list[9],acc);
          if(caml_string_get(path,i$0) === delim)
           {if(dup){var i$1=i$0 + 1 | 0,i$0=i$1;continue}
            var _dG_=i$0 + 1 | 0;
            if(counter < 50)
             {var counter$0=counter + 1 | 0;
              return do_split(counter$0,acc,limit,_dG_)}
            return caml_trampoline_return(do_split,[0,acc,limit,_dG_])}
          if(counter < 50)
           {var counter$1=counter + 1 | 0;
            return do_split(counter$1,acc,limit,i$0)}
          return caml_trampoline_return(do_split,[0,acc,limit,i$0])}}
      function do_split(counter,acc,limit,i)
       {if(0 < limit)
         {var limit$0=limit - 1 | 0,j=i;
          for(;;)
           {if(l <= j)
             {if(i === j)return caml_call1(Stdlib_list[9],acc);
              var _dE_=[0,caml_call3(Stdlib_string[4],path,i,j - i | 0),acc];
              return caml_call1(Stdlib_list[9],_dE_)}
            if(caml_string_get(path,j) === delim)
             {var _dF_=[0,caml_call3(Stdlib_string[4],path,i,j - i | 0),acc];
              if(counter < 50)
               {var counter$0=counter + 1 | 0;
                return do_slashes$0(counter$0,_dF_,limit$0,j)}
              return caml_trampoline_return(do_slashes$0,[0,_dF_,limit$0,j])}
            var j$0=j + 1 | 0,j=j$0;
            continue}}
        if(i === l)return caml_call1(Stdlib_list[9],acc);
        var _dD_=[0,caml_call3(Stdlib_string[4],path,i,l - i | 0),acc];
        return caml_call1(Stdlib_list[9],_dD_)}
      function do_slashes(acc,limit,i)
       {return caml_trampoline(do_slashes$0(0,acc,limit,i))}
      return 0 < limit?do_slashes(0,limit,0):[0,path,0]}
    function split_path(path){return split(47,0,0,path)}
    function has_prefix(prefix,s)
     {var
       x=caml_ml_string_length(prefix),
       n=caml_ml_string_length(s),
       _dA_=x <= n?1:0,
       _dB_=
        _dA_?caml_string_equal(caml_call3(Stdlib_string[4],s,0,x),prefix):_dA_;
      return _dB_}
    function remove_prefix(prefix,s)
     {var x=caml_ml_string_length(prefix),n=caml_ml_string_length(s);
      if
       (x
        <=
        n
        &&
        caml_string_equal(caml_call3(Stdlib_string[4],s,0,x),prefix))
       return [0,caml_call3(Stdlib_string[4],s,x,n - x | 0)];
      return 0}
    function common_prefix(s1,s2)
     {var
       last=
        caml_call2
         (Stdlib[16],caml_ml_string_length(s1),caml_ml_string_length(s2)),
       i=0;
      for(;;)
       {if(last <= i)return last;
        var _dz_=caml_string_get(s2,i);
        if(caml_string_get(s1,i) === _dz_){var i$0=i + 1 | 0,i=i$0;continue}
        return i}}
    function mem_char(s,c){return 0 !== caml_call2(Stdlib_string[15],s,c)?1:0}
    function fold_left(f,init,s)
     {var acc=[0,init];
      function _dy_(c){acc[1] = caml_call2(f,acc[1],c);return 0}
      caml_call2(Stdlib_string[8],_dy_,s);
      return acc[1]}
    function is_hex(s)
     {var len=caml_ml_string_length(s),_dt_=0 === (len % 2 | 0)?1:0;
      if(_dt_)
       try
        {var
          _du_=
           function(param)
            {var _dx_=param - 48 | 0,switch$0=0;
             if(22 < _dx_ >>> 0)
              {if(! (5 < (_dx_ - 49 | 0) >>> 0))switch$0 = 1}
             else
              if(6 < (_dx_ - 10 | 0) >>> 0)switch$0 = 1;
             if(switch$0)return 0;
             throw Stdlib[3]};
         caml_call2(Stdlib_string[8],_du_,s);
         var _dv_=1;
         return _dv_}
       catch(_dw_)
        {_dw_ = caml_wrap_exception(_dw_);
         if(_dw_ === Stdlib[3])return 0;
         throw _dw_}
      return _dt_}
    var
     Tezos_stdlib_TzString=
      [0,
       Set,
       Map,
       split_path,
       split,
       has_prefix,
       remove_prefix,
       common_prefix,
       mem_char,
       fold_left,
       is_hex];
    caml_register_global(45,Tezos_stdlib_TzString,"Tezos_stdlib__TzString");
    function symbol_bind(x,f){return caml_call2(Stdlib_option[5],x,f)}
    function symbol_map(x,f){return caml_call2(Stdlib_option[7],f,x)}
    function unopt_exn(err,param){if(param){var x=param[1];return x}throw err}
    function unopt_assert(param,_dp_)
     {var _dq_=param[3],_dr_=param[2],_ds_=param[1];
      if(_dp_){var v=_dp_[1];return v}
      throw [0,Stdlib[5],[0,_ds_,_dr_,_dq_]]}
    function first_some(a,b){return a?a:b}
    function pp(opt,pp,fmt,param)
     {if(opt)var sth=opt[1],default$0=sth;else var default$0=cst_None;
      if(param){var value=param[1];return caml_call2(pp,fmt,value)}
      return caml_call2(Stdlib_format[120],fmt,default$0)}
    var
     Tezos_stdlib_TzOption=
      [0,symbol_bind,symbol_map,unopt_exn,unopt_assert,first_some,pp];
    caml_register_global(48,Tezos_stdlib_TzOption,"Tezos_stdlib__TzOption");
    function may_cons(xs,x){if(x){var x$0=x[1];return [0,x$0,xs]}return xs}
    function rev_sub(l,n)
     {if(n < 0)caml_call1(Stdlib[1],cst_Utils_rev_sub_n_must_be_no);
      var acc=0,l$0=l,n$0=n;
      for(;;)
       {if(0 === n$0)return acc;
        if(l$0)
         {var
           l$1=l$0[2],
           hd=l$0[1],
           n$1=n$0 - 1 | 0,
           acc$0=[0,hd,acc],
           acc=acc$0,
           l$0=l$1,
           n$0=n$1;
          continue}
        return acc}}
    function sub(l,n)
     {var _do_=rev_sub(l,n);return caml_call1(Stdlib_list[9],_do_)}
    function hd_opt(param){if(param){var h=param[1];return [0,h]}return 0}
    function last_exn(param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var _dn_=param$0[1];
          if(param$0[2]){var param$1=param$0[2],param$0=param$1;continue}
          return _dn_}
        throw Stdlib[8]}}
    function merge_filter2(opt,_dd_,_dc_,l1,l2)
     {if(opt)var sth=opt[1],finalize=sth;else var finalize=Stdlib_list[9];
      if(_dd_)var sth$0=_dd_[1],compare=sth$0;else var compare=caml_compare;
      if(_dc_)var sth$1=_dc_[1],f=sth$1;else var f=first_some;
      var
       sort=caml_call1(Stdlib_list[51],compare),
       _dm_=caml_call1(sort,l2),
       param$3=[0,caml_call1(sort,l1),_dm_],
       acc=0,
       param=param$3;
      for(;;)
       {var _de_=param[1];
        if(_de_)
         {var _df_=param[2];
          if(_df_)
           {var t2=_df_[2],h2=_df_[1],t1=_de_[2],h1=_de_[1];
            if(0 < caml_call2(compare,h1,h2))
             {var
               param$0=[0,_de_,t2],
               acc$0=may_cons(acc,caml_call2(f,0,[0,h2])),
               acc=acc$0,
               param=param$0;
              continue}
            if(0 <= caml_call2(compare,h1,h2))
             {var
               param$1=[0,t1,t2],
               acc$1=may_cons(acc,caml_call2(f,[0,h1],[0,h2])),
               acc=acc$1,
               param=param$1;
              continue}
            var
             param$2=[0,t1,_df_],
             acc$2=may_cons(acc,caml_call2(f,[0,h1],0)),
             acc=acc$2,
             param=param$2;
            continue}
          var
           _dg_=function(x1){return caml_call2(f,[0,x1],0)},
           _dh_=caml_call2(Stdlib_list[20],_dg_,_de_),
           _di_=caml_call1(finalize,acc);
          return caml_call2(Stdlib[37],_di_,_dh_)}
        if(param[2])
         {var
           r2=param[2],
           _dj_=function(x2){return caml_call2(f,0,[0,x2])},
           _dk_=caml_call2(Stdlib_list[20],_dj_,r2),
           _dl_=caml_call1(finalize,acc);
          return caml_call2(Stdlib[37],_dl_,_dk_)}
        return caml_call1(finalize,acc)}}
    function merge2(finalize,compare,opt,l1,l2)
     {if(opt)var sth=opt[1],f=sth;else var f=function(x1$0,x1){return x1$0};
      return merge_filter2
              (finalize,
               compare,
               [0,
                function(x1,match)
                 {if(x1)
                   {var _db_=x1[1];
                    if(match){var x2=match[1];return [0,caml_call2(f,_db_,x2)]}
                    return [0,_db_]}
                  if(match){var x2$0=match[1];return [0,x2$0]}
                  throw [0,Assert_failure,_b_]}],
               l1,
               l2)}
    function remove(nb,l)
     {var nb$0=nb,l$0=l;
      for(;;)
       {if(l$0)
         {if(0 < nb$0)
           {var l$1=l$0[2],nb$1=nb$0 - 1 | 0,nb$0=nb$1,l$0=l$1;continue}
          return l$0}
        return 0}}
    function repeat(n,x){return 0 < n?[0,x,repeat(n - 1 | 0,x)]:0}
    function split_n(n,rem)
     {var acc=0,n$0=n,rem$0=rem;
      for(;;)
       {if(rem$0)
         {if(0 < n$0)
           {var
             rem$1=rem$0[2],
             x=rem$0[1],
             n$1=n$0 - 1 | 0,
             acc$0=[0,x,acc],
             acc=acc$0,
             n$0=n$1,
             rem$0=rem$1;
            continue}
          return [0,caml_call1(Stdlib_list[9],acc),rem$0]}
        return [0,rem,0]}}
    function Bounded(E)
     {function create(bound)
       {if(bound <= 0)caml_call1(Stdlib[1],cst_Utils_Bounded_create);
        return [0,bound,0,0]}
      function push(x,ys)
       {if(ys)
         {var xs=ys[2],y=ys[1];
          return 0 < caml_call2(E[1],x,y)?[0,y,push(x,xs)]:[0,x,ys]}
        return [0,x,0]}
      function insert(x,t)
       {if(t[2] < t[1]){t[2] = t[2] + 1 | 0;t[3] = push(x,t[3]);return 0}
        var _c__=t[3];
        if(_c__)
         {var
           tl=_c__[2],
           hd=_c__[1],
           _c$_=caml_call2(E[1],hd,x) < 0?1:0,
           _da_=_c$_?(t[3] = push(x,tl),0):_c$_;
          return _da_}
        throw [0,Assert_failure,_c_]}
      function get(param){var data=param[3];return data}
      return [0,create,insert,get]}
    function take_n(compare,n,l)
     {if(compare)
       {var
         compare$0=compare[1],
         B=Bounded([0,compare$0]),
         t=caml_call1(B[1],n),
         _c9_=function(x){return caml_call2(B[2],x,t)};
        caml_call2(Stdlib_list[15],_c9_,l);
        return caml_call1(B[3],t)}
      return split_n(n,l)[1]}
    function select(n,param)
     {var n$0=n,acc=0,param$0=param;
      for(;;)
       {if(param$0)
         {var x=param$0[1],xs=param$0[2];
          if(0 < n$0)
           {var
             param$1=param$0[2],
             acc$0=[0,x,acc],
             n$1=n$0 - 1 | 0,
             n$0=n$1,
             acc=acc$0,
             param$0=param$1;
            continue}
          return [0,x,caml_call2(Stdlib_list[12],acc,xs)]}
        return caml_call1(Stdlib[1],cst_Utils_select)}}
    function shift(param)
     {if(param)
       {var tl=param[2],hd=param[1];return caml_call2(Stdlib[37],tl,[0,hd,0])}
      return 0}
    function product(a,b)
     {if(a)
       {var
         tl=a[2],
         hd=a[1],
         _c6_=product(tl,b),
         _c7_=function(x){return [0,hd,x]},
         _c8_=caml_call2(Stdlib_list[17],_c7_,b);
        return caml_call2(Stdlib[37],_c8_,_c6_)}
      return 0}
    function shuffle(l)
     {function _cZ_(d){return [0,caml_call1(Stdlib_random[4],0),d]}
      var _c0_=caml_call2(Stdlib_list[17],_cZ_,l);
      function _c1_(param,_c5_)
       {var y=_c5_[1],x=param[1];return runtime.caml_int_compare(x,y)}
      var _c2_=caml_call2(Stdlib_list[51],_c1_,_c0_);
      function _c3_(_c4_){return _c4_[2]}
      return caml_call2(Stdlib_list[17],_c3_,_c2_)}
    function index_of(opt,item,list)
     {if(opt)var sth=opt[1],compare=sth;else var compare=caml_compare;
      var index=0,param=list;
      for(;;)
       {if(param)
         {var tail=param[2],head=param[1];
          if(0 === caml_call2(compare,head,item))return [0,index];
          var index$0=index + 1 | 0,index=index$0,param=tail;
          continue}
        return 0}}
    var
     Tezos_stdlib_TzList=
      [0,
       remove,
       repeat,
       shift,
       product,
       take_n,
       split_n,
       Bounded,
       select,
       rev_sub,
       sub,
       hd_opt,
       last_exn,
       merge_filter2,
       merge2,
       shuffle,
       index_of];
    caml_register_global(50,Tezos_stdlib_TzList,"Tezos_stdlib__TzList");
    var
     symbol$0=Stdlib_filename[4],
     Infix$0=[0,symbol$0],
     Tezos_stdlib_TzFilename=[0,Infix$0];
    caml_register_global
     (52,Tezos_stdlib_TzFilename,"Tezos_stdlib__TzFilename");
    var
     set_int32=Stdlib_bytes[70],
     get_int32=Stdlib_bytes[56],
     set_int8=Stdlib_bytes[62],
     get_int8=Stdlib_bytes[48],
     set_int16=Stdlib_bytes[67],
     get_int16=Stdlib_bytes[53],
     set_int64=Stdlib_bytes[73],
     get_int64=Stdlib_bytes[59],
     set_uint8=Stdlib_bytes[61],
     get_uint8=Stdlib_bytes[47],
     set_uint16=Stdlib_bytes[64],
     get_uint16=Stdlib_bytes[50];
    function get_double(buff,i)
     {return runtime.caml_int64_float_of_bits
              (caml_call2(Stdlib_bytes[59],buff,i))}
    function set_double(buff,i,v)
     {return caml_call3
              (Stdlib_bytes[73],buff,i,runtime.caml_int64_bits_of_float(v))}
    var
     Tezos_stdlib_TzEndian=
      [0,
       get_int32,
       set_int32,
       set_int8,
       get_int8,
       set_int16,
       get_int16,
       set_int64,
       get_int64,
       get_uint8,
       set_uint8,
       get_uint16,
       set_uint16,
       set_double,
       get_double];
    caml_register_global(53,Tezos_stdlib_TzEndian,"Tezos_stdlib__TzEndian");
    function def(opt,name,pp)
     {if(opt)var sth=opt[1],doc=sth;else var doc=cst_undocumented;
      var
       Me=[248,cst_Tezos_stdlib_Tag_Def_X_Me,caml_fresh_oo_id(0)],
       _cY_=caml_call1(Stdlib_obj[21][1],Me),
       uid=caml_call1(Stdlib_obj[21][3],_cY_);
      return [0,name,doc,pp,0,Me,uid]}
    function name(d){return d[1]}
    function doc(d){return d[2]}
    function printer(d){return d[3]}
    function pp_def(ppf,d){return caml_call3(Stdlib_format[123],ppf,_e_,d[1])}
    function compare(param,_cX_)
     {var k1=_cX_[1],k0=param[1];return caml_compare([0,k0[5]],[0,k1[5]])}
    var Key=[0,compare],TagSet=caml_call1(Stdlib_map[1],Key);
    function pp$0(ppf,param)
     {var v=param[2],tag=param[1];
      return caml_call6(Stdlib_format[123],ppf,_f_,pp_def,tag,tag[3],v)}
    function option_map(f,param)
     {if(param){var v=param[1];return [0,caml_call1(f,v)]}return 0}
    function option_bind(f,param)
     {if(param){var v=param[1];return caml_call1(f,v)}return 0}
    function reveal(tag,param)
     {var v=param[2],another=param[1],match=tag[5] === another[5]?_d_:0;
      return match?[0,v]:0}
    function unveil(tag)
     {function _cU_(_cW_){return reveal(tag,_cW_)}
      return function(_cV_){return option_bind(_cU_,_cV_)}}
    function veil(tag)
     {function _cR_(_cT_){return [0,tag,_cT_]}
      return function(_cS_){return option_map(_cR_,_cS_)}}
    var empty=TagSet[1],is_empty=TagSet[2];
    function mem(tag){return caml_call1(TagSet[3],[0,tag])}
    function add(tag,v){return caml_call2(TagSet[4],[0,tag],[0,tag,v])}
    function update(tag,f)
     {function _cP_(b)
       {var _cQ_=caml_call1(f,caml_call1(unveil(tag),b));
        return caml_call1(veil(tag),_cQ_)}
      return caml_call2(TagSet[5],[0,tag],_cP_)}
    function singleton(tag,v){return caml_call2(TagSet[6],[0,tag],[0,tag,v])}
    function remove$0(tag){return caml_call1(TagSet[7],[0,tag])}
    function merge(f)
     {function _cL_(param,a,b)
       {var
         tag=param[1],
         _cM_=caml_call1(unveil(tag),b),
         _cN_=caml_call1(unveil(tag),a),
         _cO_=caml_call3(f[1],tag,_cN_,_cM_);
        return caml_call1(veil(tag),_cO_)}
      return caml_call1(TagSet[8],_cL_)}
    function union(f)
     {return merge
              ([0,
                function(tag,a,b)
                 {if(a)
                   {var _cK_=a[1];
                    if(b){var bb=b[1];return [0,caml_call3(f[1],tag,_cK_,bb)]}
                    return a}
                  return b}])}
    function iter(f)
     {function _cJ_(param){return f}return caml_call1(TagSet[12],_cJ_)}
    function fold(f)
     {function _cI_(param){return f}return caml_call1(TagSet[13],_cI_)}
    function for_all(p)
     {function _cH_(param){return p}return caml_call1(TagSet[14],_cH_)}
    function exists(p)
     {function _cG_(param){return p}return caml_call1(TagSet[15],_cG_)}
    function filter(p)
     {function _cF_(param){return p}return caml_call1(TagSet[16],_cF_)}
    function partition(p)
     {function _cE_(param){return p}return caml_call1(TagSet[17],_cE_)}
    var cardinal=TagSet[18];
    function min_binding(s){return caml_call1(TagSet[20],s)[2]}
    function min_binding_opt(s)
     {var _cC_=caml_call1(TagSet[21],s);
      return option_map(function(_cD_){return _cD_[2]},_cC_)}
    function max_binding(s){return caml_call1(TagSet[22],s)[2]}
    function max_binding_opt(s)
     {var _cA_=caml_call1(TagSet[23],s);
      return option_map(function(_cB_){return _cB_[2]},_cA_)}
    function choose(s){return caml_call1(TagSet[24],s)[2]}
    function choose_opt(s)
     {var _cy_=caml_call1(TagSet[25],s);
      return option_map(function(_cz_){return _cz_[2]},_cy_)}
    function split$0(tag,s)
     {var
       param=caml_call2(TagSet[26],[0,tag],s),
       r=param[3],
       m=param[2],
       l=param[1];
      return [0,l,caml_call1(unveil(tag),m),r]}
    function find(tag,s)
     {var _cw_=caml_call2(TagSet[28],[0,tag],s);
      return option_bind(function(_cx_){return reveal(tag,_cx_)},_cw_)}
    function find_opt(tag,s)
     {var _cu_=caml_call2(TagSet[28],[0,tag],s);
      return option_bind(function(_cv_){return reveal(tag,_cv_)},_cu_)}
    function get(tag,s)
     {var param=find_opt(tag,s);
      if(param){var v=param[1];return v}
      var _ct_=caml_call2(Stdlib_format[127],_g_,tag[1]);
      return caml_call1(Stdlib[1],_ct_)}
    function find_first(p,s){return caml_call2(TagSet[29],p,s)[2]}
    function find_first_opt(p,s)
     {var _cr_=caml_call2(TagSet[30],p,s);
      return option_map(function(_cs_){return _cs_[2]},_cr_)}
    function find_last(p,s){return caml_call2(TagSet[31],p,s)[2]}
    function find_last_opt(p,s)
     {var _cp_=caml_call2(TagSet[32],p,s);
      return option_map(function(_cq_){return _cq_[2]},_cp_)}
    var map=TagSet[33],mapi=TagSet[33];
    function pp_set(ppf,s)
     {caml_call2(Stdlib_format[123],ppf,_h_);
      var _cl_=caml_call1(TagSet[19],s);
      function _cm_(_co_){return _co_[2]}
      var _cn_=caml_call2(Stdlib_list[17],_cm_,_cl_);
      caml_call4(Stdlib_format[119],0,pp$0,ppf,_cn_);
      return caml_call2(Stdlib_format[123],ppf,_i_)}
    function a(tag,v){return [0,[0,tag,v]]}
    function s(tag,v){return [1,[0,tag,v]]}
    function t(tag,v){return [2,[0,tag,v]]}
    function symbol$1(f,param)
     {switch(param[0])
       {case 0:
         var match=param[1],v=match[2],tag=match[1];
         return function(opt)
          {if(opt)var sth=opt[1],tags=sth;else var tags=empty;
           var _ck_=tag[3];
           return caml_call3(f,[0,caml_call1(add(tag,v),tags)],_ck_,v)};
        case 1:
         var match$0=param[1],v$0=match$0[2],tag$0=match$0[1];
         return function(opt)
          {if(opt)var sth=opt[1],tags=sth;else var tags=empty;
           return caml_call2(f,[0,caml_call1(add(tag$0,v$0),tags)],v$0)};
        default:
         var match$1=param[1],v$1=match$1[2],tag$1=match$1[1];
         return function(opt)
          {if(opt)var sth=opt[1],tags=sth;else var tags=empty;
           return caml_call1(f,[0,caml_call1(add(tag$1,v$1),tags)])}}}
    var
     Tezos_stdlib_Tag=
      [0,
       def,
       name,
       doc,
       printer,
       pp_def,
       pp$0,
       [0],
       empty,
       is_empty,
       mem,
       add,
       update,
       singleton,
       remove$0,
       remove$0,
       merge,
       union,
       iter,
       fold,
       for_all,
       exists,
       filter,
       partition,
       cardinal,
       min_binding,
       min_binding_opt,
       max_binding,
       max_binding_opt,
       choose,
       choose_opt,
       split$0,
       find_opt,
       find,
       get,
       find_first,
       find_first_opt,
       find_last,
       find_last_opt,
       map,
       mapi,
       pp_set,
       [0,a,s,t,symbol$1]];
    caml_register_global(55,Tezos_stdlib_Tag,"Tezos_stdlib__Tag");
    var Tezos_stdlib_Memory=[0];
    caml_register_global(56,Tezos_stdlib_Memory,"Tezos_stdlib__Memory");
    function may(f){return caml_call2(Stdlib_option[8],Lwt[33],f)}
    function never_ending(param){return caml_call1(Lwt[1],0)[1]}
    function worker(name,on_event,run,cancel)
     {var match=caml_call1(Lwt[1],0),stopper=match[2],stop=match[1];
      function fail(e)
       {function _ci_(param)
         {var _cj_=caml_call1(Stdlib_printexc[1],e);
          return caml_call2
                  (on_event,
                   name,
                   [0,479410653,caml_call2(Stdlib_printf[4],_j_,_cj_)])}
        return caml_call2(Lwt[8],_ci_,cancel)}
      function _cb_(param)
       {var p=caml_call2(Lwt[7],run,fail),_ce_=caml_call1(Lwt[44],stopper);
        caml_call2(Lwt[29],p,_ce_);
        function _cf_(param)
         {function _cg_(param){return Lwt[33]}
          function _ch_(param){return caml_call2(on_event,name,61323482)}
          return caml_call2(Lwt[7],_ch_,_cg_)}
        return caml_call2(Lwt[31][1],stop,_cf_)}
      var
       _cc_=caml_call2(on_event,name,40653089),
       _cd_=caml_call2(Lwt[31][1],_cc_,_cb_);
      return caml_call1(Lwt[25],_cd_)}
    function fold_left_s_n(n,f,acc,l)
     {if(0 === n)return caml_call1(Lwt[4],[0,acc,l]);
      if(l)
       {var
         l$0=l[2],
         x=l[1],
         _b$_=function(acc){return fold_left_s_n(n - 1 | 0,f,acc,l$0)},
         _ca_=caml_call2(f,acc,x);
        return caml_call2(Lwt[31][1],_ca_,_b$_)}
      return caml_call1(Lwt[4],[0,acc,0])}
    function dont_wait(handler,f)
     {var p=caml_call2(Lwt[78],f,0);return caml_call2(Lwt[28],p,handler)}
    var
     Tezos_stdlib_Lwt_utils=
      [0,may,never_ending,worker,fold_left_s_n,dont_wait];
    caml_register_global(60,Tezos_stdlib_Lwt_utils,"Tezos_stdlib__Lwt_utils");
    function is_closed(param){var closed=param[5];return closed}
    var push_overhead=4 * (Stdlib_sys[9] / 8 | 0) | 0;
    function create(size,param)
     {if(size)
       var
        match=size[1],
        compute_size=match[2],
        max_size=match[1],
        compute_size$0=compute_size,
        max_size$0=max_size;
      else
       var
        compute_size$1=function(param){return 0},
        compute_size$0=compute_size$1,
        max_size$0=Stdlib[19];
      var _b__=caml_call1(Lwt_condition[1],0);
      return [0,
              caml_call1(Stdlib_queue[2],0),
              0,
              max_size$0,
              compute_size$0,
              0,
              0,
              0,
              _b__]}
    function notify_push(q)
     {var _b9_=q[6];
      if(_b9_)
       {var match=_b9_[1],w=match[2];q[6] = 0;return caml_call2(Lwt[2],w,0)}
      return 0}
    function notify_pop(q)
     {var _b8_=q[7];
      if(_b8_)
       {var match=_b8_[1],w=match[2];q[7] = 0;return caml_call2(Lwt[2],w,0)}
      return 0}
    function wait_push(q)
     {var _b7_=q[6];
      if(_b7_){var match=_b7_[1],t=match[1];return caml_call1(Lwt[24],t)}
      var match$0=caml_call1(Lwt[1],0),wakener=match$0[2],waiter=match$0[1];
      q[6] = [0,[0,waiter,wakener]];
      return caml_call1(Lwt[24],waiter)}
    function length(param)
     {var queue=param[1];return caml_call1(Stdlib_queue[14],queue)}
    function is_empty$0(param)
     {var queue=param[1];return caml_call1(Stdlib_queue[13],queue)}
    function empty$0(q)
     {if(is_empty$0(q))return Lwt[33];
      function _b5_(param){return empty$0(q)}
      var _b6_=caml_call2(Lwt_condition[2],0,q[8]);
      return caml_call2(Lwt[31][1],_b6_,_b5_)}
    var Closed=[248,cst_Tezos_stdlib_Lwt_pipe_Clos,caml_fresh_oo_id(0)];
    function push(q)
     {var
       queue=q[1],
       current_size=q[2],
       compute_size=q[4],
       max_size=q[3],
       closed=q[5];
      return function(elt)
       {var elt_size=caml_call1(compute_size,elt);
        if(closed)return caml_call1(Lwt[5],Closed);
        if
         (!
          ((current_size + elt_size | 0) < max_size)
          &&
          !
          caml_call1(Stdlib_queue[13],queue))
         {var _b3_=function(param){return caml_call1(push(q),elt)},_b2_=q[7];
          if(_b2_)
           var match=_b2_[1],t=match[1],_b4_=caml_call1(Lwt[24],t);
          else
           {var
             match$0=caml_call1(Lwt[1],0),
             wakener=match$0[2],
             waiter=match$0[1];
            q[7] = [0,[0,waiter,wakener]];
            var _b4_=caml_call1(Lwt[24],waiter)}
          return caml_call2(Lwt[31][1],_b4_,_b3_)}
        caml_call2(Stdlib_queue[4],[0,elt_size,elt],queue);
        q[2] = current_size + elt_size | 0;
        notify_push(q);
        return Lwt[33]}}
    function push_now(q)
     {var
       queue=q[1],
       current_size=q[2],
       compute_size=q[4],
       max_size=q[3],
       closed=q[5];
      return function(elt)
       {if(closed)throw Closed;
        var
         elt_size=caml_call1(compute_size,elt),
         _bZ_=(current_size + elt_size | 0) < max_size?1:0,
         _b0_=_bZ_ || caml_call1(Stdlib_queue[13],queue),
         _b1_=
          _b0_
           ?(caml_call2(Stdlib_queue[4],[0,elt_size,elt],queue),
             q[2]
             =
             current_size
             +
             elt_size
             |
             0,
             notify_push(q),
             1)
           :_b0_;
        return _b1_}}
    function pop(q)
     {var queue=q[1],current_size=q[2],closed=q[5],empty=q[8];
      if(caml_call1(Stdlib_queue[13],queue))
       {if(closed)return caml_call1(Lwt[5],Closed);
        var _bX_=function(param){return pop(q)},_bY_=wait_push(q);
        return caml_call2(Lwt[31][1],_bY_,_bX_)}
      var
       match=caml_call1(Stdlib_queue[7],queue),
       elt=match[2],
       elt_size=match[1];
      notify_pop(q);
      q[2] = current_size - elt_size | 0;
      if(0 === caml_call1(Stdlib_queue[14],queue))
       caml_call2(Lwt_condition[3],empty,0);
      return caml_call1(Lwt[4],elt)}
    function pop_with_timeout(timeout,q)
     {if(caml_call1(Stdlib_queue[13],q[1]))
       {if(caml_call1(Lwt[75],timeout))
         {if(q[5])
           {caml_call1(Lwt[22],timeout);return caml_call1(Lwt[5],Closed)}
          var
           waiter=wait_push(q),
           _bS_=function(param){return pop_with_timeout(timeout,q)},
           _bT_=[0,timeout,[0,caml_call1(Lwt[24],waiter),0]],
           _bU_=caml_call1(Lwt[15],_bT_);
          return caml_call2(Lwt[31][1],_bU_,_bS_)}
        return Lwt[34]}
      caml_call1(Lwt[22],timeout);
      var _bV_=Lwt[64],_bW_=pop(q);
      return caml_call2(Lwt[31][1],_bW_,_bV_)}
    function peek(q)
     {var queue=q[1],closed=q[5];
      if(caml_call1(Stdlib_queue[13],queue))
       {if(closed)return caml_call1(Lwt[5],Closed);
        var _bQ_=function(param){return peek(q)},_bR_=wait_push(q);
        return caml_call2(Lwt[31][1],_bR_,_bQ_)}
      var match=caml_call1(Stdlib_queue[8],queue),elt=match[2];
      return caml_call1(Lwt[4],elt)}
    function peek_all(param)
     {var queue=param[1],closed=param[5];
      if(closed)return 0;
      var _bN_=0;
      function _bO_(acc,param){var e=param[2];return [0,e,acc]}
      var _bP_=caml_call3(Stdlib_queue[16],_bO_,_bN_,queue);
      return caml_call1(Stdlib_list[9],_bP_)}
    function pop_now(q)
     {var
       queue=q[1],
       current_size=q[2],
       closed=q[5],
       empty=q[8],
       _bK_=caml_call1(Stdlib_queue[13],queue),
       closed$0=_bK_?closed:_bK_;
      if(closed$0)throw Closed;
      var _bL_=caml_call1(Stdlib_queue[6],queue);
      function _bM_(param)
       {var elt=param[2],elt_size=param[1];
        if(0 === caml_call1(Stdlib_queue[14],queue))
         caml_call2(Lwt_condition[3],empty,0);
        q[2] = current_size - elt_size | 0;
        notify_pop(q);
        return elt}
      return caml_call2(Stdlib_option[7],_bM_,_bL_)}
    function pop_all_loop(q,acc)
     {var acc$0=acc;
      for(;;)
       {var match=pop_now(q);
        if(match){var e=match[1],acc$1=[0,e,acc$0],acc$0=acc$1;continue}
        return caml_call1(Stdlib_list[9],acc$0)}}
    function pop_all(q)
     {function _bH_(e)
       {var _bJ_=pop_all_loop(q,[0,e,0]);return caml_call1(Lwt[4],_bJ_)}
      var _bI_=pop(q);
      return caml_call2(Lwt[31][1],_bI_,_bH_)}
    function pop_all_now(q){return pop_all_loop(q,0)}
    function close(q)
     {var _bG_=1 - q[5];
      return _bG_?(q[5] = 1,notify_push(q),notify_pop(q)):_bG_}
    var
     Tezos_stdlib_Lwt_pipe=
      [0,
       create,
       push,
       pop,
       pop_with_timeout,
       pop_all,
       pop_all_now,
       peek,
       peek_all,
       push_now,
       pop_now,
       length,
       is_empty$0,
       empty$0,
       Closed,
       close,
       is_closed,
       push_overhead];
    caml_register_global(64,Tezos_stdlib_Lwt_pipe,"Tezos_stdlib__Lwt_pipe");
    var Closed$0=[248,cst_Tezos_stdlib_Lwt_dropbox_C,caml_fresh_oo_id(0)];
    function create$0(param){return [0,0,0,0]}
    function notify_put(dropbox)
     {var _bF_=dropbox[3];
      if(_bF_)
       {var match=_bF_[1],wakener=match[2];
        dropbox[3] = 0;
        return caml_call2(Lwt[2],wakener,0)}
      return 0}
    function put(dropbox,elt)
     {if(dropbox[2])throw Closed$0;
      dropbox[1] = [0,elt];
      return notify_put(dropbox)}
    function peek$0(dropbox){if(dropbox[2])throw Closed$0;return dropbox[1]}
    function close$0(dropbox)
     {var _bE_=1 - dropbox[2];
      return _bE_?(dropbox[2] = 1,notify_put(dropbox)):_bE_}
    function wait_put(timeout,dropbox)
     {var _bB_=dropbox[3];
      if(_bB_)
       {var
         match=_bB_[1],
         waiter=match[1],
         _bC_=[0,timeout,[0,caml_call1(Lwt[24],waiter),0]];
        return caml_call1(Lwt[15],_bC_)}
      var match$0=caml_call1(Lwt[1],0),wakener=match$0[2],waiter$0=match$0[1];
      dropbox[3] = [0,[0,waiter$0,wakener]];
      var _bD_=[0,timeout,[0,caml_call1(Lwt[24],waiter$0),0]];
      return caml_call1(Lwt[15],_bD_)}
    function take(dropbox)
     {var _by_=dropbox[1];
      if(_by_){var elt=_by_[1];dropbox[1] = 0;return caml_call1(Lwt[4],elt)}
      if(dropbox[2])return caml_call1(Lwt[5],Closed$0);
      function _bz_(param){return take(dropbox)}
      var _bA_=wait_put(never_ending(0),dropbox);
      return caml_call2(Lwt[31][1],_bA_,_bz_)}
    function take_with_timeout(timeout,dropbox)
     {var _bv_=dropbox[1];
      if(_bv_)
       {var elt=_bv_[1];
        caml_call1(Lwt[22],timeout);
        dropbox[1] = 0;
        return caml_call1(Lwt[64],elt)}
      if(caml_call1(Lwt[75],timeout))
       {if(dropbox[2])return caml_call1(Lwt[5],Closed$0);
        var
         _bw_=function(param){return take_with_timeout(timeout,dropbox)},
         _bx_=wait_put(timeout,dropbox);
        return caml_call2(Lwt[31][1],_bx_,_bw_)}
      return Lwt[34]}
    var
     Tezos_stdlib_Lwt_dropbox=
      [0,Closed$0,create$0,put,take,take_with_timeout,peek$0,close$0];
    caml_register_global
     (65,Tezos_stdlib_Lwt_dropbox,"Tezos_stdlib__Lwt_dropbox");
    function Make(P)
     {var compare=P[1];
      function symbol(a,b){return 0 === caml_call2(compare,a,b)?1:0}
      function symbol$0(a,b){return 0 !== caml_call2(compare,a,b)?1:0}
      function symbol$1(a,b){return caml_call2(compare,a,b) < 0?1:0}
      function symbol$2(a,b){return caml_call2(compare,a,b) <= 0?1:0}
      function symbol$3(a,b){return 0 <= caml_call2(compare,a,b)?1:0}
      function symbol$4(a,b){return 0 < caml_call2(compare,a,b)?1:0}
      function max(x,y){return symbol$3(x,y)?x:y}
      function min(x,y){return symbol$2(x,y)?x:y}
      return [0,
              compare,
              symbol,
              symbol$0,
              symbol$1,
              symbol$2,
              symbol$3,
              symbol$4,
              symbol,
              max,
              min]}
    var
     Char=Make([0,Stdlib_char[7]]),
     compare$0=caml_compare,
     Bool=Make([0,compare$0]);
    function equal(_bu_,_bt_){return _bu_ === _bt_?1:0}
    function max(x,y){return y <= x?x:y}
    function min(x,y){return x <= y?x:y}
    var Int32=Make([0,Stdlib_int32[15]]),Int64=Make([0,Stdlib_int64[15]]);
    function MakeUnsigned(Int,Z)
     {function compare(va,vb)
       {return caml_call2(Int[5],va,Z[1])
                ?caml_call2(Int[5],vb,Z[1])?caml_call2(Int[7],va,vb):-1
                :caml_call2(Int[5],vb,Z[1])?1:caml_call2(Int[7],va,vb)}
      var symbol=caml_equal,symbol$0=caml_notequal;
      function symbol$1(a,b)
       {if(caml_call2(Int[4],Z[1],a))
         {var _br_=caml_call2(Int[3],a,b);
          return _br_?_br_:caml_call2(Int[3],b,Z[1])}
        var _bs_=caml_call2(Int[3],b,Z[1]);
        return _bs_?caml_call2(Int[3],a,b):_bs_}
      function symbol$2(a,b)
       {if(caml_call2(Int[4],Z[1],a))
         {var _bp_=caml_call2(Int[4],a,b);
          return _bp_?_bp_:caml_call2(Int[3],b,Z[1])}
        var _bq_=caml_call2(Int[3],b,Z[1]);
        return _bq_?caml_call2(Int[4],a,b):_bq_}
      function symbol$3(a,b){return symbol$2(b,a)}
      function symbol$4(a,b){return symbol$1(b,a)}
      function max(x,y){return symbol$3(x,y)?x:y}
      function min(x,y){return symbol$2(x,y)?x:y}
      return [0,
              compare,
              symbol,
              symbol$0,
              symbol$1,
              symbol$2,
              symbol$3,
              symbol$4,
              symbol,
              max,
              min]}
    var
     Uint32=
      MakeUnsigned
       ([0,
         Int32[2],
         Int32[3],
         Int32[4],
         Int32[5],
         Int32[6],
         Int32[7],
         Int32[1],
         Int32[8],
         Int32[9],
         Int32[10]],
        [0,0]),
     Uint64=
      MakeUnsigned
       ([0,
         Int64[2],
         Int64[3],
         Int64[4],
         Int64[5],
         Int64[6],
         Int64[7],
         Int64[1],
         Int64[8],
         Int64[9],
         Int64[10]],
        [0,zero]),
     compare$1=caml_compare,
     Float=Make([0,compare$1]),
     String=Make([0,Stdlib_string[33]]),
     Bytes=Make([0,Stdlib_bytes[40]]),
     Z=Make([0,function(_bo_,_bn_){return runtime.ml_z_compare(_bo_,_bn_)}]);
    function _k_(P)
     {function compare(xs,ys)
       {if(xs)
         {if(ys){var y=ys[1],x=xs[1];return caml_call2(P[1],x,y)}return 1}
        return ys?-1:0}
      var _bm_=Make([0,compare]);
      return [0,
              _bm_[2],
              _bm_[3],
              _bm_[4],
              _bm_[5],
              _bm_[6],
              _bm_[7],
              _bm_[1],
              _bm_[8],
              _bm_[9],
              _bm_[10]]}
    function _l_(P)
     {function compare(xs,ys)
       {var xs$0=xs,ys$0=ys;
        for(;;)
         {if(xs$0)
           {if(ys$0)
             {var
               ys$1=ys$0[2],
               y=ys$0[1],
               xs$1=xs$0[2],
               x=xs$0[1],
               hd=caml_call2(P[1],x,y);
              if(0 === hd){var xs$0=xs$1,ys$0=ys$1;continue}
              return hd}
            return 1}
          return ys$0?-1:0}}
      var _bl_=Make([0,compare]);
      return [0,
              _bl_[2],
              _bl_[3],
              _bl_[4],
              _bl_[5],
              _bl_[6],
              _bl_[7],
              _bl_[1],
              _bl_[8],
              _bl_[9],
              _bl_[10]]}
    var
     _q_=
      [0,
       Uint64[2],
       Uint64[3],
       Uint64[4],
       Uint64[5],
       Uint64[6],
       Uint64[7],
       Uint64[1],
       Uint64[8],
       Uint64[9],
       Uint64[10]],
     _m_=[0,Z[2],Z[3],Z[4],Z[5],Z[6],Z[7],Z[1],Z[8],Z[9],Z[10]],
     _n_=
      [0,
       Bytes[2],
       Bytes[3],
       Bytes[4],
       Bytes[5],
       Bytes[6],
       Bytes[7],
       Bytes[1],
       Bytes[8],
       Bytes[9],
       Bytes[10]],
     _o_=
      [0,
       String[2],
       String[3],
       String[4],
       String[5],
       String[6],
       String[7],
       String[1],
       String[8],
       String[9],
       String[10]],
     _p_=
      [0,
       Float[2],
       Float[3],
       Float[4],
       Float[5],
       Float[6],
       Float[7],
       Float[1],
       Float[8],
       Float[9],
       Float[10]],
     _r_=
      [0,
       Int64[2],
       Int64[3],
       Int64[4],
       Int64[5],
       Int64[6],
       Int64[7],
       Int64[1],
       Int64[8],
       Int64[9],
       Int64[10]],
     _s_=
      [0,
       Uint32[2],
       Uint32[3],
       Uint32[4],
       Uint32[5],
       Uint32[6],
       Uint32[7],
       Uint32[1],
       Uint32[8],
       Uint32[9],
       Uint32[10]],
     _t_=
      [0,
       Int32[2],
       Int32[3],
       Int32[4],
       Int32[5],
       Int32[6],
       Int32[7],
       Int32[1],
       Int32[8],
       Int32[9],
       Int32[10]],
     _u_=[0,max,min,equal],
     _v_=
      [0,
       Bool[2],
       Bool[3],
       Bool[4],
       Bool[5],
       Bool[6],
       Bool[7],
       Bool[1],
       Bool[8],
       Bool[9],
       Bool[10]],
     _w_=
      [0,
       Char[2],
       Char[3],
       Char[4],
       Char[5],
       Char[6],
       Char[7],
       Char[1],
       Char[8],
       Char[9],
       Char[10]],
     Tezos_stdlib_Compare=
      [0,
       function(_bj_)
        {var _bk_=Make(_bj_);
         return [0,
                 _bk_[2],
                 _bk_[3],
                 _bk_[4],
                 _bk_[5],
                 _bk_[6],
                 _bk_[7],
                 _bk_[1],
                 _bk_[8],
                 _bk_[9],
                 _bk_[10]]},
       _w_,
       _v_,
       _u_,
       _t_,
       _s_,
       _r_,
       _q_,
       _p_,
       _o_,
       _n_,
       _m_,
       _l_,
       _k_];
    caml_register_global(70,Tezos_stdlib_Compare,"Tezos_stdlib__Compare");
    var h3=[0,0,0,0],h4=[0,0,0,0,0];
    function hash(v){return caml_call1(Stdlib_hashtbl[27],v)}
    function lnot(param)
     {var b=param[2],a=param[1],_bi_=caml_call1(Stdlib_int64[11],b);
      return [0,caml_call1(Stdlib_int64[11],a),_bi_]}
    function land(param,_bh_)
     {var b2=_bh_[2],a2=_bh_[1],b1=param[2],a1=param[1];
      return [0,caml_int64_and(a1,a2),caml_int64_and(b1,b2)]}
    function lxor(param,_bg_)
     {var b2=_bg_[2],a2=_bg_[1],b1=param[2],a1=param[1];
      return [0,caml_int64_xor(a1,a2),caml_int64_xor(b1,b2)]}
    function lor(param,_bf_)
     {var b2=_bf_[2],a2=_bf_[1],b1=param[2],a1=param[1];
      return [0,caml_int64_or(a1,a2),caml_int64_or(b1,b2)]}
    function less_than(param,_be_)
     {var
       b2=_be_[2],
       a2=_be_[1],
       b1=param[2],
       a1=param[1],
       cmp_a=caml_call2(_q_[7],a1,a2);
      return 0 === cmp_a?caml_call2(_q_[3],b1,b2):cmp_a < 0?1:0}
    function equal$0(param,_bb_)
     {var
       b2=_bb_[2],
       a2=_bb_[1],
       b1=param[2],
       a1=param[1],
       _bc_=caml_equal(a1,a2),
       _bd_=_bc_?caml_equal(b1,b2):_bc_;
      return _bd_}
    function highest_bit_int64(x)
     {var
       x$0=caml_int64_or(x,caml_int64_shift_right_unsigne(x,1)),
       x$1=caml_int64_or(x$0,caml_int64_shift_right_unsigne(x$0,2)),
       x$2=caml_int64_or(x$1,caml_int64_shift_right_unsigne(x$1,4)),
       x$3=caml_int64_or(x$2,caml_int64_shift_right_unsigne(x$2,8)),
       x$4=caml_int64_or(x$3,caml_int64_shift_right_unsigne(x$3,16)),
       x$5=caml_int64_or(x$4,caml_int64_shift_right_unsigne(x$4,32));
      return runtime.caml_int64_sub(x$5,caml_int64_shift_right_unsigne(x$5,1))}
    function highest_bit(param)
     {var b=param[2],a=param[1];
      return caml_notequal(a,_x_)
              ?[0,highest_bit_int64(a),_y_]
              :[0,_z_,highest_bit_int64(b)]}
    function pred(param)
     {var b=param[2],a=param[1];
      return caml_notequal(b,_A_)
              ?[0,a,caml_call1(Stdlib_int64[7],b)]
              :[0,caml_call1(Stdlib_int64[7],a),_B_]}
    function power_2(n)
     {return 64 <= n
              ?[0,caml_int64_shift_left(_D_,n - 64 | 0),_C_]
              :[0,_F_,caml_int64_shift_left(_E_,n)]}
    var
     Int2_64=
      [0,
       lnot,
       land,
       lxor,
       lor,
       pred,
       less_than,
       highest_bit,
       equal$0,
       hash,
       zero$0,
       one,
       power_2];
    function BE_gen_prefix(Bits)
     {var _a6_=Bits[8],_a4_=Bits[8],_a5_=Bits[8];
      function hash_key(x){return caml_call1(Bits[9],x)}
      function hash_mask(x){return caml_call1(Bits[9],x)}
      function hash_prefix(x){return caml_call1(Bits[9],x)}
      var full_length_mask=caml_call1(Bits[1],Bits[10]);
      function strictly_shorter_mask(m1,m2){return caml_call2(Bits[6],m1,m2)}
      function select_bit(prefix,mask)
       {var
         _a__=caml_call1(Bits[1],mask),
         discriminant=caml_call1(Bits[7],_a__),
         _a$_=Bits[10],
         _ba_=caml_call2(Bits[2],prefix,discriminant);
        return 1 - caml_call2(Bits[8],_ba_,_a$_)}
      function apply_mask(prefix,mask){return caml_call2(Bits[2],prefix,mask)}
      function match_prefix(key,prefix,mask)
       {return caml_call2(_a6_,apply_mask(key,mask),prefix)}
      function common_mask(p0,p1)
       {var
         _a7_=caml_call2(Bits[3],p0,p1),
         discriminant=caml_call1(Bits[7],_a7_),
         _a8_=caml_call1(Bits[5],discriminant),
         _a9_=caml_call2(Bits[4],discriminant,_a8_);
        return caml_call1(Bits[1],_a9_)}
      function key_prefix(x){return x}
      function prefix_key(p,m){return p}
      function compare_prefix(m1,p1,m2,p2)
       {var
         min_mask=caml_call2(Bits[2],m1,m2),
         applied_p1=caml_call2(Bits[2],p1,min_mask),
         applied_p2=caml_call2(Bits[2],p2,min_mask);
        return caml_equal(applied_p1,applied_p2)
                ?runtime.caml_greaterthan(m1,m2)
                  ?1
                  :runtime.caml_lessthan(m1,m2)?2:0
                :3}
      return [0,
              _a4_,
              _a5_,
              _a6_,
              hash_key,
              hash_mask,
              hash_prefix,
              full_length_mask,
              strictly_shorter_mask,
              key_prefix,
              prefix_key,
              match_prefix,
              select_bit,
              common_mask,
              apply_mask,
              compare_prefix]}
    function equal_key(_a3_,_a2_){return _a3_ === _a2_?1:0}
    function equal_mask(_a1_,_a0_){return _a1_ === _a0_?1:0}
    function equal_prefix(_aZ_,_aY_){return _aZ_ === _aY_?1:0}
    function hash_key(x){return x}
    function hash_mask(x){return x}
    function hash_prefix(x){return x}
    var full_length_mask=-1;
    function strictly_shorter_mask(m1,m2){return m1 < m2?1:0}
    function select_bit(prefix,mask)
     {var discriminant=mask + 1 | 0;return 0 !== (prefix & discriminant)?1:0}
    function apply_mask(prefix,mask){return prefix & mask}
    function match_prefix(key,prefix,mask){return (key & mask) === prefix?1:0}
    function common_mask(p0,p1){var x=p0 ^ p1;return (x & (- x | 0)) - 1 | 0}
    function key_prefix(x){return x}
    function prefix_key(p,m){return p}
    function compare_prefix(m1,p1,m2,p2)
     {var min_mask=m1 & m2,applied_p1=p1 & min_mask,applied_p2=p2 & min_mask;
      return applied_p1 === applied_p2?m1 < m2?1:m2 < m1?2:0:3}
    var
     LE_prefix=
      [0,
       equal_key,
       equal_mask,
       equal_prefix,
       hash_key,
       hash_mask,
       hash_prefix,
       full_length_mask,
       strictly_shorter_mask,
       key_prefix,
       prefix_key,
       match_prefix,
       select_bit,
       common_mask,
       apply_mask,
       compare_prefix],
     lnot$0=Stdlib[21];
    function land$0(_aX_,_aW_){return _aX_ & _aW_}
    function lxor$0(_aV_,_aU_){return _aV_ ^ _aU_}
    function lor$0(_aT_,_aS_){return _aT_ | _aS_}
    function pred$0(_aR_){return _aR_ - 1 | 0}
    var less_than$0=runtime.caml_lessequal;
    function highest_bit$0(x)
     {var
       x$0=x | x >>> 1 | 0,
       x$1=x$0 | x$0 >>> 2 | 0,
       x$2=x$1 | x$1 >>> 4 | 0,
       x$3=x$2 | x$2 >>> 8 | 0,
       x$4=x$3 | x$3 >>> 16 | 0,
       x$5=32 < Stdlib_sys[9]?x$4 | x$4 >>> 32 | 0:x$4;
      return x$5 - (x$5 >>> 1 | 0) | 0}
    var equal$1=caml_equal,hash$0=Stdlib_hashtbl[27],zero$1=0,one$0=1;
    function power_2$0(n){return 1 << n}
    function Make$0(P,V)
     {function id(param)
       {if(typeof param !== "number" && 0 !== param[0])
         {var id$0=param[1];return id$0}
        var id=param[1];
        return id}
      function set_id(n,id)
       {if(typeof n !== "number" && 0 !== n[0]){n[1] = id;return 0}
        n[1] = id;
        return 0}
      function equal(t1,match)
       {var switch$0=0;
        if(typeof t1 !== "number" && 0 !== t1[0])
         {var _aJ_=t1[5],_aK_=t1[4],_aL_=t1[3],_aM_=t1[2];
          if(typeof match !== "number" && 0 !== match[0])
           {var
             f2=match[5],
             t2=match[4],
             p2$0=match[3],
             m2$0=match[2],
             _aN_=caml_call2(P[3],_aL_,p2$0);
            if(_aN_)
             {var _aO_=caml_call2(P[2],_aM_,m2$0);
              if(_aO_)
               var _aP_=_aK_ === t2?1:0,_aQ_=_aP_?_aJ_ === f2?1:0:_aP_;
              else
               var _aQ_=_aO_}
            else
             var _aQ_=_aN_;
            return _aQ_}
          switch$0 = 1}
        if(! switch$0)
         {var switch$1=0,_aD_=t1[4],_aE_=t1[3],_aF_=t1[2];
          if(typeof match !== "number" && 0 !== match[0])switch$1 = 1;
          if(! switch$1)
           {var
             v2=match[4],
             p2=match[3],
             m2=match[2],
             _aG_=caml_call2(P[1],_aE_,p2);
            if(_aG_)
             {var _aH_=caml_call2(P[2],_aF_,m2);
              if(_aH_)return caml_call2(V[1],_aD_,v2);
              var _aI_=_aH_}
            else
             var _aI_=_aG_;
            return _aI_}}
        return 0}
      function hash(param)
       {if(typeof param !== "number" && 0 !== param[0])
         {var
           false$0=param[5],
           true$0=param[4],
           prefix=param[3],
           mask$0=param[2],
           x4=id(false$0),
           x3$0=id(true$0),
           x2$0=caml_call1(P[6],prefix),
           x1$0=caml_call1(P[5],mask$0);
          h4[1] = x1$0;
          h4[2] = x2$0;
          h4[3] = x3$0;
          h4[4] = x4;
          return caml_call1(Stdlib_hashtbl[27],h4)}
        var
         value=param[4],
         key=param[3],
         mask=param[2],
         x3=caml_call1(P[5],mask),
         x2=caml_call1(V[2],value),
         x1=caml_call1(P[4],key);
        h3[1] = x1;
        h3[2] = x2;
        h3[3] = x3;
        return caml_call1(Stdlib_hashtbl[27],h3)}
      var
       Tree=[0,equal,hash],
       WeakTreeTbl=caml_call1(Stdlib_weak[9],Tree),
       weak_tree_tbl=caml_call1(WeakTreeTbl[1],10),
       r=[0,0];
      function next(param){r[1]++;return r[1]}
      function leaf(key,mask,value)
       {var
         l=[0,0,mask,key,value],
         match=caml_call2(WeakTreeTbl[7],weak_tree_tbl,l);
        if(match){var l$0=match[1];return l$0}
        set_id(l,next(0));
        caml_call2(WeakTreeTbl[4],weak_tree_tbl,l);
        return l}
      function node(prefix,mask,true$0,false$0)
       {var
         l=[1,0,mask,prefix,true$0,false$0],
         match=caml_call2(WeakTreeTbl[7],weak_tree_tbl,l);
        if(match){var l$0=match[1];return l$0}
        set_id(l,next(0));
        caml_call2(WeakTreeTbl[4],weak_tree_tbl,l);
        return l}
      var empty=0;
      function equal$0(x,y){return x === y?1:0}
      var T=[0,leaf,node,empty,equal$0,equal$0,id];
      function equal$1(t1,t2)
       {return typeof t1 === "number"
                ?typeof t2 === "number"?1:0 === t2[0]?0:0
                :0 === t1[0]
                  ?typeof t2 === "number"
                    ?0
                    :0 === t2[0]?caml_call2(T[4],t1,t2):caml_call2(T[4],t1,t2)
                  :typeof t2 === "number"
                    ?0
                    :0 === t2[0]?caml_call2(T[4],t1,t2):caml_call2(T[4],t1,t2)}
      function select_key_bit(k,m)
       {var _aC_=caml_call1(P[9],k);return caml_call2(P[12],_aC_,m)}
      function matching_key(k1,k2,mask)
       {var
         _aA_=caml_call1(P[9],k1),
         p1=caml_call2(P[14],_aA_,mask),
         _aB_=caml_call1(P[9],k2),
         p2=caml_call2(P[14],_aB_,mask);
        return caml_call2(P[3],p1,p2)}
      function find_ne(k,t)
       {var t$0=t;
        for(;;)
         {if(typeof t$0 !== "number" && 0 !== t$0[0])
           {var
             false$0=t$0[5],
             true$0=t$0[4],
             mask$0=t$0[2],
             t$1=select_key_bit(k,mask$0)?true$0:false$0,
             t$0=t$1;
            continue}
          var value=t$0[4],key=t$0[3],mask=t$0[2];
          return matching_key(key,k,mask)?[0,value]:0}}
      function singleton(key,value,mask)
       {return caml_call3(T[1],key,mask,value)}
      function join(mask,p0,t0,p1,t1)
       {var
         c_mask=caml_call2(P[13],p0,p1),
         mask$0=caml_call2(P[8],c_mask,mask)?c_mask:mask,
         prefix=caml_call2(P[14],p1,mask$0);
        if(caml_call2(P[12],p0,mask$0))
         var false$0=t1,true$0=t0;
        else
         var false$0=t0,true$0=t1;
        return caml_call4(T[2],prefix,mask$0,true$0,false$0)}
      function rebuild_ne_branch
       (node,prefix,mask,node_true,node_false,true$0,false$0)
       {if
         (caml_call2(T[5],node_true,true$0)
          &&
          caml_call2(T[5],node_false,false$0))
         return node;
        return caml_call4(T[2],prefix,mask,true$0,false$0)}
      function add_ne(combine,key,value,opt,t)
       {if(opt)var sth=opt[1],mask=sth;else var mask=P[7];
        if(typeof t !== "number" && 0 !== t[0])
         {if(caml_call3(P[11],key,t[3],t[2]))
           {if(select_key_bit(key,t[2]))
             var
              _ax_=t[5],
              false$0=_ax_,
              true$0=add_ne(combine,key,value,[0,mask],t[4]);
            else
             var
              false$1=add_ne(combine,key,value,[0,mask],t[5]),
              false$0=false$1,
              true$0=t[4];
            return rebuild_ne_branch(t,t[3],t[2],t[4],t[5],true$0,false$0)}
          var _ay_=t[3],_az_=caml_call3(T[1],key,mask,value);
          return join(mask,caml_call1(P[9],key),_az_,_ay_,t)}
        if(caml_call2(P[1],key,t[3]) && caml_call2(P[2],t[2],P[7]))
         {if(value === t[4])return t;
          var _aq_=caml_call2(combine,value,t[4]);
          return caml_call3(T[1],key,mask,_aq_)}
        if(caml_call2(P[8],t[2],mask))
         {var _ar_=t[2],_as_=caml_call1(P[9],t[3]);
          if(caml_call3(P[11],key,_as_,_ar_))return t}
        if(caml_call2(P[8],mask,t[2]))
         {var _at_=caml_call1(P[9],key);
          if(caml_call3(P[11],t[3],_at_,mask))
           {var _au_=caml_call2(combine,value,t[4]);
            return caml_call3(T[1],key,mask,_au_)}}
        var _av_=caml_call1(P[9],t[3]),_aw_=caml_call3(T[1],key,mask,value);
        return join(mask,caml_call1(P[9],key),_aw_,_av_,t)}
      var empty$0=T[3];
      function rebuild_branch
       (node,prefix,mask,node_true,node_false,true$0,match)
       {if(typeof true$0 === "number")
         return typeof match === "number"?empty$0:match;
        else
         if(0 === true$0[0])
          {if(typeof match !== "number")
            return 0 === match[0]
                    ?rebuild_ne_branch
                      (node,prefix,mask,node_true,node_false,true$0,match)
                    :rebuild_ne_branch
                      (node,prefix,mask,node_true,node_false,true$0,match)}
         else
          if(typeof match !== "number")
           return 0 === match[0]
                   ?rebuild_ne_branch
                     (node,prefix,mask,node_true,node_false,true$0,match)
                   :rebuild_ne_branch
                     (node,prefix,mask,node_true,node_false,true$0,match);
        return true$0}
      function remove_ne(key,t)
       {if(typeof t !== "number" && 0 !== t[0])
         {if(caml_call3(P[11],key,t[3],t[2]))
           {if(select_key_bit(key,t[2]))
             var _ap_=t[5],false$0=_ap_,true$0=remove_ne(key,t[4]);
            else
             var false$1=remove_ne(key,t[5]),false$0=false$1,true$0=t[4];
            return rebuild_branch(t,t[3],t[2],t[4],t[5],true$0,false$0)}
          return t}
        return matching_key(t[3],key,t[2])?T[3]:t}
      function remove(key,t)
       {return typeof t === "number"
                ?empty$0
                :0 === t[0]?remove_ne(key,t):remove_ne(key,t)}
      function remove_prefix_ne(key,mask,t)
       {if(typeof t !== "number" && 0 !== t[0])
         {var
           _al_=t[3],
           _am_=t[2],
           _an_=caml_call1(P[9],key),
           match=caml_call4(P[15],mask,_an_,_am_,_al_);
          switch(match)
           {case 0:return T[3];
            case 1:return T[3];
            case 2:
             if(select_key_bit(key,t[2]))
              var
               _ao_=t[5],
               false$0=_ao_,
               true$0=remove_prefix_ne(key,mask,t[4]);
             else
              var
               false$1=remove_prefix_ne(key,mask,t[5]),
               false$0=false$1,
               true$0=t[4];
             return rebuild_branch(t,t[3],t[2],t[4],t[5],true$0,false$0);
            default:return t}}
        return matching_key(key,t[3],mask)?T[3]:t}
      function remove_prefix(key,mask,t)
       {return typeof t === "number"
                ?empty$0
                :0 === t[0]
                  ?remove_prefix_ne(key,mask,t)
                  :remove_prefix_ne(key,mask,t)}
      function remove_ne_exact(key,t)
       {if(typeof t !== "number" && 0 !== t[0])
         {if(caml_call3(P[11],key,t[3],t[2]))
           {if(select_key_bit(key,t[2]))
             var _ak_=t[5],false$0=_ak_,true$0=remove_ne_exact(key,t[4]);
            else
             var
              false$1=remove_ne_exact(key,t[5]),
              false$0=false$1,
              true$0=t[4];
            return rebuild_branch(t,t[3],t[2],t[4],t[5],true$0,false$0)}
          return t}
        if(caml_call2(P[1],t[3],key) && caml_call2(P[2],t[2],P[7]))
         return T[3];
        return t}
      function remove_exact(key,t)
       {return typeof t === "number"
                ?empty$0
                :0 === t[0]?remove_ne_exact(key,t):remove_ne_exact(key,t)}
      function replace_subtree_ne(key,id,value,t)
       {if(typeof t !== "number" && 0 !== t[0])
         {if(t[1] === id)
           {var _ah_=t[2],_ai_=caml_call2(P[10],t[3],t[2]);
            return caml_call3(T[1],_ai_,_ah_,value)}
          if(caml_call3(P[11],key,t[3],t[2]))
           {if(select_key_bit(key,t[2]))
             var
              _aj_=t[5],
              false$0=_aj_,
              true$0=replace_subtree_ne(key,id,value,t[4]);
            else
             var
              false$1=replace_subtree_ne(key,id,value,t[5]),
              false$0=false$1,
              true$0=t[4];
            return rebuild_ne_branch(t,t[3],t[2],t[4],t[5],true$0,false$0)}
          return t}
        return t[1] === id?caml_call3(T[1],t[3],t[2],value):t}
      function replace_subtree(replaced,value,t)
       {function replace_subtree_aux(key,id,value,t)
         {return typeof t === "number"
                  ?empty$0
                  :0 === t[0]
                    ?replace_subtree_ne(key,id,value,t)
                    :replace_subtree_ne(key,id,value,t)}
        if(typeof replaced === "number")
         return t;
        else
         {if(0 === replaced[0])
           return replace_subtree_aux(replaced[3],replaced[1],value,t);
          var _ag_=replaced[1];
          return replace_subtree_aux
                  (caml_call2(P[10],replaced[3],replaced[2]),_ag_,value,t)}}
      function fold_ne(f,t,acc)
       {var t$0=t,acc$0=acc;
        for(;;)
         {if(typeof t$0 !== "number" && 0 !== t$0[0])
           {var acc$1=fold_ne(f,t$0[5],acc$0),t$1=t$0[4],t$0=t$1,acc$0=acc$1;
            continue}
          var value=t$0[4],key=t$0[3],mask=t$0[2];
          return caml_call4(f,key,mask,value,acc$0)}}
      function fold(f,t,acc)
       {return typeof t === "number"
                ?acc
                :0 === t[0]?fold_ne(f,t,acc):fold_ne(f,t,acc)}
      var hash$0=T[6];
      function equal$2(t1,t2)
       {var _af_=caml_call1(T[6],t2);return caml_call1(T[6],t1) === _af_?1:0}
      var
       T_id=[0,hash$0,equal$2],
       Map_cache=caml_call1(Stdlib_ephemeron[1][14],[0,T_id[2],T_id[1]]);
      function Map_Reduce(M)
       {var cache=caml_call1(Map_cache[1],10);
        function map_reduce_ne(t)
         {var match=caml_call2(Map_cache[8],cache,t);
          if(match){var v=match[1];return v}
          var switch$0=0;
          if(typeof t !== "number" && 0 !== t[0])
           {var
             v_true=map_reduce_ne(t[4]),
             v_false=map_reduce_ne(t[5]),
             v$0=caml_call3(M[3],t,v_true,v_false);
            switch$0 = 1}
          if(! switch$0)var v$0=caml_call3(M[2],t,t[3],t[4]);
          caml_call3(Map_cache[5],cache,t,v$0);
          return v$0}
        function run(t)
         {return typeof t === "number"
                  ?M[1]
                  :0 === t[0]?map_reduce_ne(t):map_reduce_ne(t)}
        function filter_ne(f,node)
         {var result=map_reduce_ne(node);
          if(caml_call1(f,result))return node;
          if(typeof node !== "number" && 0 !== node[0])
           {var true$0=filter_ne(f,node[4]),false$0=filter_ne(f,node[5]);
            return rebuild_branch
                    (node,node[3],node[2],node[4],node[5],true$0,false$0)}
          return empty$0}
        function filter(f,t)
         {return typeof t === "number"
                  ?empty$0
                  :0 === t[0]?filter_ne(f,t):filter_ne(f,t)}
        return [0,cache,map_reduce_ne,run,filter_ne,filter]}
      function mem(key$0,param$1)
       {var param=param$1;
        for(;;)
         if(typeof param === "number")
          return 0;
         else
          {if(0 === param[0])
            {var key=param[3],mask=param[2];
             return matching_key(key,key$0,mask)}
           var
            false$0=param[5],
            true$0=param[4],
            mask$0=param[2],
            param$0=select_key_bit(key$0,mask$0)?true$0:false$0,
            param=param$0;
           continue}}
      function mem_exact(key$0,param$1)
       {var param=param$1;
        for(;;)
         if(typeof param === "number")
          return 0;
         else
          {if(0 === param[0])
            {var key=param[3],mask=param[2],_ae_=caml_call2(P[1],key$0,key);
             return _ae_?caml_call2(P[2],mask,P[7]):_ae_}
           var
            false$0=param[5],
            true$0=param[4],
            mask$0=param[2],
            param$0=select_key_bit(key$0,mask$0)?true$0:false$0,
            param=param$0;
           continue}}
      function find(key,param)
       {return typeof param === "number"
                ?0
                :0 === param[0]?find_ne(key,param):find_ne(key,param)}
      function singleton$0(key,value,mask){return singleton(key,value,mask)}
      function add(combine,key,value,mask$0,param)
       {if(mask$0)var sth=mask$0[1],mask=sth;else var mask=P[7];
        return typeof param === "number"
                ?singleton(key,value,mask)
                :0 === param[0]
                  ?add_ne(combine,key,value,[0,mask],param)
                  :add_ne(combine,key,value,[0,mask],param)}
      return [0,
              T,
              equal$1,
              select_key_bit,
              matching_key,
              find_ne,
              join,
              rebuild_ne_branch,
              add_ne,
              empty$0,
              rebuild_branch,
              remove_ne,
              remove,
              remove_prefix_ne,
              remove_prefix,
              remove_ne_exact,
              remove_exact,
              replace_subtree_ne,
              replace_subtree,
              fold_ne,
              fold,
              T_id,
              Map_cache,
              Map_Reduce,
              mem,
              mem_exact,
              find,
              singleton$0,
              add]}
    function _G_(___)
     {var _ab_=Make$0(BE_gen_prefix(Int2_64),___),_$_=_ab_[23];
      function _aa_(_ac_)
       {var _ad_=caml_call1(_$_,_ac_);return [0,_ad_[3],_ad_[5]]}
      return [0,
              _ab_[2],
              _ab_[9],
              _ab_[27],
              _ab_[28],
              _ab_[12],
              _ab_[16],
              _ab_[14],
              _ab_[24],
              _ab_[25],
              _ab_[26],
              _ab_[18],
              _ab_[20],
              _aa_]}
    function _H_(_U_)
     {var
       _X_=
        Make$0
         (BE_gen_prefix
           ([0,
             lnot$0,
             land$0,
             lxor$0,
             lor$0,
             pred$0,
             less_than$0,
             highest_bit$0,
             equal$1,
             hash$0,
             zero$1,
             one$0,
             power_2$0]),
          _U_),
       _V_=_X_[23];
      function _W_(_Y_){var _Z_=caml_call1(_V_,_Y_);return [0,_Z_[3],_Z_[5]]}
      return [0,
              _X_[2],
              _X_[9],
              _X_[27],
              _X_[28],
              _X_[12],
              _X_[16],
              _X_[14],
              _X_[24],
              _X_[25],
              _X_[26],
              _X_[18],
              _X_[20],
              _W_]}
    var
     Tezos_stdlib_HashPtree=
      [0,
       Int2_64,
       function(_O_)
        {var _R_=Make$0(LE_prefix,_O_),_P_=_R_[23];
         function _Q_(_S_)
          {var _T_=caml_call1(_P_,_S_);return [0,_T_[3],_T_[5]]}
         return [0,
                 _R_[2],
                 _R_[9],
                 _R_[27],
                 _R_[28],
                 _R_[12],
                 _R_[16],
                 _R_[14],
                 _R_[24],
                 _R_[25],
                 _R_[26],
                 _R_[18],
                 _R_[20],
                 _Q_]},
       _H_,
       _G_];
    caml_register_global(74,Tezos_stdlib_HashPtree,"Tezos_stdlib__HashPtree");
    function create$1(opt,_N_,param)
     {if(opt)var sth=opt[1],maxlength=sth;else var maxlength=32768;
      if(_N_)
       var sth$0=_N_[1],fresh_buf_size=sth$0;
      else
       var fresh_buf_size=2000;
      return [0,caml_create_bytes(maxlength),fresh_buf_size,0,0,0]}
    function write(maxlen,fill_using,t)
     {if(maxlen < 0)caml_call1(Stdlib[1],cst_Circular_buffer_write_nega);
      if(0 === maxlen)return caml_call1(Lwt[4],[0,t[4],0,t[1]]);
      var _J_=t[3] === t[4]?1:0,_K_=_J_?1 - t[5]:_J_;
      if(_K_){t[3] = 0;t[4] = 0}
      var switch$0=0;
      if(t[3] < t[4])
       switch$0 = 1;
      else
       {var switch$1=0;
        if(t[3] === t[4] && ! t[5]){switch$0 = 1;switch$1 = 1}
        if(! switch$1)
         var
          match=
           t[4] < t[3]
            ?(t[4] + maxlen | 0) <= t[3]
              ?[0,t[1],t[4]]
              :[0,caml_create_bytes(t[2]),0]
            :[0,caml_create_bytes(t[2]),0]}
      if(switch$0)
       var
        match=
         (t[4] + maxlen | 0) <= caml_ml_bytes_length(t[1])
          ?[0,t[1],t[4]]
          :maxlen <= t[3]?[0,t[1],0]:[0,caml_create_bytes(t[2]),0];
      var
       offset=match[2],
       buf=match[1],
       maxlen$0=buf === t[1]?maxlen:caml_call2(Stdlib[16],t[2],maxlen);
      function _L_(written)
       {if(maxlen$0 < written)
         caml_call1(Stdlib[1],cst_Circular_buffer_write_writ);
        if(t[1] === buf)
         {t[4] = written + offset | 0;if(t[4] === t[3])t[5] = 1}
        return caml_call1(Lwt[4],[0,offset,written,buf])}
      var _M_=caml_call3(fill_using,buf,offset,maxlen$0);
      return caml_call2(Lwt[69],_M_,_L_)}
    function read(data,opt,t,into,offset)
     {if(opt)var sth=opt[1],len=sth;else var len=data[2];
      if(data[2] < len)caml_call1(Stdlib[1],cst_Circular_buffer_read_len_l);
      if(len < 0)caml_call1(Stdlib[1],cst_Circular_buffer_read_negat);
      if(0 === len && 0 === data[2])return 0;
      if(0 === len)return [0,data];
      caml_call5(Stdlib_bytes[11],data[3],data[1],into,offset,len);
      if(data[3] === t[1])
       {t[5] = 0;
        t[3] = data[1] + len | 0;
        if(! (t[3] <= caml_ml_bytes_length(t[1])))throw [0,Assert_failure,_I_]}
      return len === data[2]
              ?0
              :[0,[0,data[1] + len | 0,data[2] - len | 0,data[3]]]}
    function length$0(param){var length=param[2];return length}
    var Tezos_stdlib_Circular_buffer=[0,create$1,write,read,length$0];
    caml_register_global
     (75,Tezos_stdlib_Circular_buffer,"Tezos_stdlib__Circular_buffer");
    return}
  (function(){return this}()));


//# 1 "../../.js/lwt-canceler/lwt_canceler.cma.js"
(function(joo_global_object)
   {"use strict";
    var runtime=joo_global_object.jsoo_runtime;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    var
     global_data=runtime.caml_get_global_data(),
     Lwt=global_data.Lwt,
     Lwt_condition=global_data.Lwt_condition;
    function create(param)
     {var
       cancellation=caml_call1(Lwt_condition[1],0),
       cancellation_complete=caml_call1(Lwt_condition[1],0),
       _c_=0,
       _d_=0;
      return [0,
              cancellation,
              cancellation_complete,
              function(param){return Lwt[33]},
              _d_,
              _c_]}
    function cancel(st)
     {if(st[5])return Lwt[33];
      if(st[4])return caml_call2(Lwt_condition[2],0,st[2]);
      st[4] = 1;
      caml_call2(Lwt_condition[4],st[1],0);
      function _b_(param)
       {st[5] = 1;caml_call2(Lwt_condition[4],st[2],0);return Lwt[33]}
      return caml_call2(Lwt[8],st[3],_b_)}
    function on_cancel(st,cb)
     {var hook=st[3];
      st[3]
      =
      function(param)
       {var _a_=caml_call1(hook,0);return caml_call2(Lwt[31][1],_a_,cb)};
      return 0}
    function cancellation(st)
     {return st[4]?Lwt[33]:caml_call2(Lwt_condition[2],0,st[1])}
    function canceled(st){return st[4]}
    var Lwt_canceler=[0,create,cancel,cancellation,on_cancel,canceled];
    runtime.caml_register_global(2,Lwt_canceler,"Lwt_canceler");
    return}
  (function(){return this}()));


//# 1 "../../.js/tezos-error-monad/tezos_error_monad.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_register_global=runtime.caml_register_global,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call8(f,a0,a1,a2,a3,a4,a5,a6,a7)
     {return f.length == 8
              ?f(a0,a1,a2,a3,a4,a5,a6,a7)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7])}
    var
     global_data=runtime.caml_get_global_data(),
     partial=[17,4,0],
     cst_permanent=caml_string_of_jsbytes("permanent"),
     cst_branch=caml_string_of_jsbytes("branch"),
     cst_temporary=caml_string_of_jsbytes("temporary"),
     cst_error=caml_string_of_jsbytes("error"),
     cst_result=caml_string_of_jsbytes("result"),
     cst_Error=caml_string_of_jsbytes("Error"),
     cst_Ok=caml_string_of_jsbytes("Ok"),
     cst_Error_monad_map2_s=caml_string_of_jsbytes("Error_monad.map2_s"),
     cst_Error_monad_map2=caml_string_of_jsbytes("Error_monad.map2"),
     cst_Error_monad_iter2_p=caml_string_of_jsbytes("Error_monad.iter2_p"),
     cst_Error_monad_iteri2_p=caml_string_of_jsbytes("Error_monad.iteri2_p"),
     cst_Error_monad_mapi2=caml_string_of_jsbytes("Error_monad.mapi2"),
     cst_Error_monad_mapi2_s=caml_string_of_jsbytes("Error_monad.mapi2_s"),
     ok_unit=[0,0],
     ok_none=[0,0],
     ok_nil=[0,0],
     ok_true=[0,1],
     ok_false=[0,0],
     cst_id$0=caml_string_of_jsbytes("id"),
     cst_kind$0=caml_string_of_jsbytes("kind"),
     cst_ignore_wrapped_error_when_=
      caml_string_of_jsbytes("ignore wrapped error when serializing"),
     cst_ignore_wrapped_error_when_$0=
      caml_string_of_jsbytes("ignore wrapped error when deserializing"),
     cst_Was_the_error_registered=
      caml_string_of_jsbytes(". Was the error registered?"),
     cst_Unclassified_error=caml_string_of_jsbytes("Unclassified error: "),
     partial$0=[15,[17,0,0]],
     cst_permanent$0=caml_string_of_jsbytes("permanent"),
     cst_branch$0=caml_string_of_jsbytes("branch"),
     cst_temporary$0=caml_string_of_jsbytes("temporary"),
     cst$0=caml_string_of_jsbytes(""),
     cst=caml_string_of_jsbytes(""),
     cst_error$0=caml_string_of_jsbytes("error"),
     cst_error$2=caml_string_of_jsbytes("error"),
     cst_Tezos_error_monad_Core_mak=
      caml_string_of_jsbytes
       ("Tezos_error_monad.Core_maker.Make(Prefix).Unclassified"),
     id=caml_string_of_jsbytes(""),
     category=[0,-103274127],
     title=caml_string_of_jsbytes("Generic error"),
     description=caml_string_of_jsbytes("An unclassified error"),
     cst_error$1=caml_string_of_jsbytes("error"),
     cst_generic=caml_string_of_jsbytes("generic"),
     cst_kind=caml_string_of_jsbytes("kind"),
     cst_generic_error=caml_string_of_jsbytes("generic_error"),
     cst_Generic_error=caml_string_of_jsbytes("Generic error"),
     cst_Tezos_error_monad_Core_mak$0=
      caml_string_of_jsbytes
       ("Tezos_error_monad.Core_maker.Make(Prefix).Unregistered_error"),
     id$0=caml_string_of_jsbytes(""),
     category$0=[0,-103274127],
     cst_Unregistered_error=caml_string_of_jsbytes("Unregistered error"),
     cst$1=caml_string_of_jsbytes(""),
     cst$2=caml_string_of_jsbytes(""),
     cst_data=caml_string_of_jsbytes("data"),
     cst_description=caml_string_of_jsbytes("description"),
     cst_id=caml_string_of_jsbytes("id"),
     id$1=caml_string_of_jsbytes(""),
     cst_The_request_has_timed_out=
      caml_string_of_jsbytes("The request has timed out"),
     cst_The_promise_was_unexpected=
      caml_string_of_jsbytes("The promise was unexpectedly canceled"),
     cst_Tezos_error_monad_Error_mo=
      caml_string_of_jsbytes("Tezos_error_monad.Error_monad.Exn"),
     cst_msg=caml_string_of_jsbytes("msg"),
     cst_Exception_safely_wrapped_i=
      caml_string_of_jsbytes("Exception safely wrapped in an error"),
     cst_Exception=caml_string_of_jsbytes("Exception"),
     cst_failure=caml_string_of_jsbytes("failure"),
     cst_Tezos_error_monad_Error_mo$0=
      caml_string_of_jsbytes("Tezos_error_monad.Error_monad.Canceled"),
     cst_Canceled=caml_string_of_jsbytes("Canceled"),
     cst_Canceled$0=caml_string_of_jsbytes("Canceled"),
     cst_utils_Canceled=caml_string_of_jsbytes("utils.Canceled"),
     cst_A_promise_was_unexpectedly=
      caml_string_of_jsbytes("A promise was unexpectedly canceled"),
     cst_Canceled$1=caml_string_of_jsbytes("Canceled"),
     cst_canceled=caml_string_of_jsbytes("canceled"),
     cst_Tezos_error_monad_Error_mo$1=
      caml_string_of_jsbytes("Tezos_error_monad.Error_monad.Timeout"),
     cst_Timeout=caml_string_of_jsbytes("Timeout"),
     cst_Timeout$0=caml_string_of_jsbytes("Timeout"),
     cst_utils_Timeout=caml_string_of_jsbytes("utils.Timeout"),
     cst_errs=caml_string_of_jsbytes("errs"),
     Data_encoding=global_data.Data_encoding,
     Assert_failure=global_data.Assert_failure,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_format=global_data.Stdlib__format,
     Lwt=global_data.Lwt,
     Stdlib=global_data.Stdlib,
     Tezos_stdlib_Lwt_utils=global_data.Tezos_stdlib__Lwt_utils,
     Stdlib_option=global_data.Stdlib__option,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_obj=global_data.Stdlib__obj,
     Json_schema=global_data.Json_schema,
     Json_repr=global_data.Json_repr,
     Lwt_canceler=global_data.Lwt_canceler,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Tezos_stdlib_Tag=global_data.Tezos_stdlib__Tag,
     Tezos_error_monad=[0];
    caml_register_global(90,Tezos_error_monad,"Tezos_error_monad");
    var
     _d_=[0,caml_string_of_jsbytes("src/lib_error_monad/TzTrace.ml"),53,6],
     _a_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("Error:"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [15,
           [12,
            44,
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("trace:"),
              [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,partial]]]]]]]]]],
       caml_string_of_jsbytes("@[<v 2>Error:@ %a,@ trace:@ %a@]@.")],
     _b_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("Error:"),
         [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,[17,4,0]]]]]],
       caml_string_of_jsbytes("@[<v 2>Error:@ %a@]@.")],
     _c_=[0,caml_string_of_jsbytes("src/lib_error_monad/TzTrace.ml"),39,6],
     _e_=[0,1],
     _f_=[0,0],
     _g_=[0,919245630],
     _o_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("An unspecified error happened, the component that threw it did not provide a specific trace. This should be reported."),
        0],
       caml_string_of_jsbytes
        ("An unspecified error happened, the component that threw it did not provide a specific trace. This should be reported.")],
     _n_=
      [0,caml_string_of_jsbytes("src/lib_error_monad/core_maker.ml"),408,22],
     _m_=[0,0,0],
     _l_=
      [0,
       [11,
        caml_string_of_jsbytes('Specified encoding for "'),
        [2,
         0,
         [2,
          0,
          [11,
           caml_string_of_jsbytes
            ('" is not an object, but error encodings must be objects.'),
           0]]]],
       caml_string_of_jsbytes
        ('Specified encoding for "%s%s" is not an object, but error encodings must be objects.')],
     _k_=
      [0,
       [11,
        caml_string_of_jsbytes("register_error_kind: duplicate error name: "),
        [2,0,0]],
       caml_string_of_jsbytes("register_error_kind: duplicate error name: %s")],
     _j_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("Unregistered error:"),
         [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]],
       caml_string_of_jsbytes("@[<v 2>Unregistered error:@ %a@]")],
     _i_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<h 0>"),0],
          caml_string_of_jsbytes("<h 0>")]],
        [15,[17,0,0]]],
       caml_string_of_jsbytes("@[<h 0>%a@]")],
     _h_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [11,
         caml_string_of_jsbytes("category : "),
         [2,
          0,
          [11,
           caml_string_of_jsbytes("\nid : "),
           [2,
            0,
            [11,
             caml_string_of_jsbytes("\ntitle : "),
             [2,
              0,
              [11,
               caml_string_of_jsbytes("\ndescription : "),
               [2,0,[11,caml_string_of_jsbytes("\nschema : "),partial$0]]]]]]]]]],
       caml_string_of_jsbytes
        ("@[<v 2>category : %s\nid : %s\ntitle : %s\ndescription : %s\nschema : %a@]")],
     _D_=[0,0],
     _z_=[0,0],
     _w_=[0,0],
     _t_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<h 0>"),0],
          caml_string_of_jsbytes("<h 0>")]],
        [15,[17,0,0]]],
       caml_string_of_jsbytes("@[<h 0>%a@]")],
     _F_=[0,caml_string_of_jsbytes("Errors")];
    function make(err){return [0,err,0]}
    function cons(err,trace){return [0,err,trace]}
    function conp(trace$0,trace){return trace$0}
    function pp_print(pp_error,ppf,errors)
     {if(errors)
       {var _b__=errors[1];
        if(errors[2])
         {var
           _b$_=caml_call1(Stdlib_list[9],errors),
           _ca_=caml_call2(Stdlib_format[119],0,pp_error);
          return caml_call6
                  (Stdlib_format[123],ppf,_a_,pp_error,_b__,_ca_,_b$_)}
        return caml_call4(Stdlib_format[123],ppf,_b_,pp_error,_b__)}
      throw [0,Assert_failure,_c_]}
    function pp_print_top(pp_error,fmt,param)
     {if(param){var error=param[1];return caml_call2(pp_error,fmt,error)}
      throw [0,Assert_failure,_d_]}
    function encoding(error_encoding)
     {return caml_call2(Data_encoding[24],0,error_encoding)}
    var
     fold=Stdlib_list[22],
     Tezos_error_monad_TzTrace=
      [0,make,cons,conp,pp_print,pp_print_top,encoding,fold];
    caml_register_global
     (95,Tezos_error_monad_TzTrace,"Tezos_error_monad__TzTrace");
    function string_of_category(param)
     {return -103274127 === param
              ?cst_temporary
              :950914574 <= param?cst_permanent:cst_branch}
    function combine_category(c1,c2)
     {var switch$0=0;
      if(-103274127 === c1)
       {if(-103274127 === c2)return -103274127}
      else
       if(950914574 === c1)switch$0 = 1;
      if(! switch$0)
       {var switch$1=0;
        if(-944934206 === c2 || 950914574 !== c2)switch$1 = 1;
        if(switch$1)return -944934206}
      return 950914574}
    var Tezos_error_monad_Sig=[0,string_of_category,combine_category];
    caml_register_global(96,Tezos_error_monad_Sig,"Tezos_error_monad__Sig");
    function Make(Error,Trace,_bY_)
     {var trace_encoding=caml_call1(Trace[6],Error[1]);
      function result_encoding(a_encoding)
       {var
         _b1_=caml_call4(Data_encoding[27],0,0,cst_error,trace_encoding),
         trace_encoding$0=caml_call1(Data_encoding[31],_b1_),
         _b2_=caml_call4(Data_encoding[27],0,0,cst_result,a_encoding),
         a_encoding$0=caml_call1(Data_encoding[31],_b2_),
         _b3_=0;
        function _b4_(x){return [1,x]}
        function _b5_(param)
         {if(0 === param[0])return 0;var x=param[1];return [0,x]}
        var
         _b6_=
          [0,
           caml_call6
            (Data_encoding[53],cst_Error,0,_e_,trace_encoding$0,_b5_,_b4_),
           _b3_];
        function _b7_(res){return [0,res]}
        function _b8_(param)
         {if(0 === param[0]){var x=param[1];return [0,x]}return 0}
        var
         _b9_=
          [0,
           caml_call6(Data_encoding[53],cst_Ok,0,_f_,a_encoding$0,_b8_,_b7_),
           _b6_];
        return caml_call2(Data_encoding[54],_g_,_b9_)}
      var
       pp_print_error=caml_call1(Trace[4],Error[2]),
       pp_print_error_first=caml_call1(Trace[5],Error[2]);
      function classify_errors(trace)
       {var _bZ_=-103274127;
        function _b0_(c,e){return combine_category(c,caml_call1(Error[5],e))}
        return caml_call3(Trace[7],_b0_,_bZ_,trace)}
      return [0,
              classify_errors,
              pp_print_error,
              pp_print_error_first,
              trace_encoding,
              result_encoding]}
    var Tezos_error_monad_Monad_ext_ma=[0,Make];
    caml_register_global
     (97,Tezos_error_monad_Monad_ext_ma,"Tezos_error_monad__Monad_ext_maker");
    function Make$0(Trace)
     {var _a5_=Lwt[69];
      function ok(v){return [0,v]}
      function ok_some(x){return [0,[0,x]]}
      function error(s){return [1,caml_call1(Trace[1],s)]}
      function return$0(v){return caml_call1(Lwt[65],v)}
      var
       return_unit=caml_call1(Lwt[4],ok_unit),
       return_none=caml_call1(Lwt[4],ok_none);
      function return_some(x){return caml_call1(Lwt[4],[0,[0,x]])}
      var
       return_nil=caml_call1(Lwt[4],ok_nil),
       return_true=caml_call1(Lwt[4],ok_true),
       return_false=caml_call1(Lwt[4],ok_false);
      function fail(s)
       {var _bX_=caml_call1(Trace[1],s);return caml_call1(Lwt[66],_bX_)}
      function symbol(v,f)
       {if(0 === v[0]){var v$0=v[1];return caml_call1(f,v$0)}return v}
      function symbol$0(v,f)
       {return caml_call2
                (_a5_,
                 v,
                 function(err)
                  {if(0 === err[0]){var v=err[1];return caml_call1(f,v)}
                   return caml_call1(Lwt[4],err)})}
      function symbol$1(v,f)
       {if(0 === v[0]){var v$0=v[1];return caml_call1(f,v$0)}
        return caml_call1(Lwt[4],v)}
      function symbol$2(v,f)
       {if(0 === v[0])
         {var v$0=v[1],_bW_=Lwt[65];
          return caml_call2(_a5_,caml_call1(f,v$0),_bW_)}
        return caml_call1(Lwt[4],v)}
      function symbol$3(v,f)
       {return symbol$0
                (v,
                 function(v)
                  {var _bV_=caml_call1(f,v);return caml_call1(Lwt[65],_bV_)})}
      var symbol$4=Lwt[70];
      function symbol$5(v,f)
       {return symbol(v,function(v){return [0,caml_call1(f,v)]})}
      function map(f,l)
       {if(l)
         {var
           t=l[2],
           h=l[1],
           _bT_=
            function(rh)
             {function _bU_(rt){return [0,[0,rh,rt]]}
              return symbol(map(f,t),_bU_)};
          return symbol(caml_call1(f,h),_bT_)}
        return ok_nil}
      function mapi(f,l)
       {function mapi(f,i,l)
         {if(l)
           {var
             t=l[2],
             h=l[1],
             _bR_=
              function(rh)
               {function _bS_(rt){return [0,[0,rh,rt]]}
                return symbol(mapi(f,i + 1 | 0,t),_bS_)};
            return symbol(caml_call2(f,i,h),_bR_)}
          return ok_nil}
        return mapi(f,0,l)}
      function map_s(f,l)
       {if(l)
         {var
           t=l[2],
           h=l[1],
           _bP_=
            function(rh)
             {function _bQ_(rt){return return$0([0,rh,rt])}
              return symbol$0(map_s(f,t),_bQ_)};
          return symbol$0(caml_call1(f,h),_bP_)}
        return return_nil}
      function mapi_s(f,l)
       {function mapi_s(f,i,l)
         {if(l)
           {var
             t=l[2],
             h=l[1],
             _bN_=
              function(rh)
               {function _bO_(rt){return return$0([0,rh,rt])}
                return symbol$0(mapi_s(f,i + 1 | 0,t),_bO_)};
            return symbol$0(caml_call2(f,i,h),_bN_)}
          return return_nil}
        return mapi_s(f,0,l)}
      function rev_map_append_s(acc,f,param)
       {if(param)
         {var
           tl=param[2],
           hd=param[1],
           _bM_=function(v){return rev_map_append_s([0,v,acc],f,tl)};
          return symbol$0(caml_call1(f,hd),_bM_)}
        return return$0(acc)}
      function rev_map_s(f,l){return rev_map_append_s(0,f,l)}
      function map_p(f,l)
       {if(l)
         {var l$0=l[2],x=l[1],tx=caml_call1(f,x),tl=map_p(f,l$0);
          return caml_call2
                  (_a5_,
                   tx,
                   function(x)
                    {return caml_call2
                             (_a5_,
                              tl,
                              function(match)
                               {if(0 === x[0])
                                 {var _bJ_=x[1];
                                  if(0 === match[0])
                                   {var l=match[1];return caml_call1(Lwt[65],[0,_bJ_,l])}
                                  var trace=match[1]}
                                else
                                 {var _bK_=x[1];
                                  if(0 !== match[0])
                                   {var trace2=match[1],_bL_=caml_call2(Trace[3],_bK_,trace2);
                                    return caml_call1(Lwt[66],_bL_)}
                                  var trace=_bK_}
                                return caml_call1(Lwt[66],trace)})})}
        return return_nil}
      function mapi_p(f,l)
       {function mapi_p(f,i,l)
         {if(l)
           {var
             l$0=l[2],
             x=l[1],
             tx=caml_call2(f,i,x),
             tl=mapi_p(f,i + 1 | 0,l$0);
            return caml_call2
                    (_a5_,
                     tx,
                     function(x)
                      {return caml_call2
                               (_a5_,
                                tl,
                                function(match)
                                 {if(0 === x[0])
                                   {var _bG_=x[1];
                                    if(0 === match[0])
                                     {var l=match[1];return caml_call1(Lwt[65],[0,_bG_,l])}
                                    var trace=match[1]}
                                  else
                                   {var _bH_=x[1];
                                    if(0 !== match[0])
                                     {var trace2=match[1],_bI_=caml_call2(Trace[3],_bH_,trace2);
                                      return caml_call1(Lwt[66],_bI_)}
                                    var trace=_bH_}
                                  return caml_call1(Lwt[66],trace)})})}
          return return_nil}
        return mapi_p(f,0,l)}
      function map2_s(f,l1,l2)
       {if(l1)
         {if(l2)
           {var
             t2=l2[2],
             h2=l2[1],
             t1=l1[2],
             h1=l1[1],
             _bE_=
              function(rh)
               {function _bF_(rt){return return$0([0,rh,rt])}
                return symbol$0(map2_s(f,t1,t2),_bF_)};
            return symbol$0(caml_call2(f,h1,h2),_bE_)}}
        else
         if(! l2)return return_nil;
        return caml_call1(Stdlib[1],cst_Error_monad_map2_s)}
      function mapi2_s(f,l1,l2)
       {function mapi2_s(i,f,l1,l2)
         {if(l1)
           {if(l2)
             {var
               t2=l2[2],
               h2=l2[1],
               t1=l1[2],
               h1=l1[1],
               _bC_=
                function(rh)
                 {function _bD_(rt){return return$0([0,rh,rt])}
                  return symbol$0(mapi2_s(i + 1 | 0,f,t1,t2),_bD_)};
              return symbol$0(caml_call3(f,i,h1,h2),_bC_)}}
          else
           if(! l2)return return_nil;
          return caml_call1(Stdlib[1],cst_Error_monad_mapi2_s)}
        return mapi2_s(0,f,l1,l2)}
      function map2(f,l1,l2)
       {if(l1)
         {if(l2)
           {var
             t2=l2[2],
             h2=l2[1],
             t1=l1[2],
             h1=l1[1],
             _bA_=
              function(rh)
               {function _bB_(rt){return [0,[0,rh,rt]]}
                return symbol(map2(f,t1,t2),_bB_)};
            return symbol(caml_call2(f,h1,h2),_bA_)}}
        else
         if(! l2)return ok_nil;
        return caml_call1(Stdlib[1],cst_Error_monad_map2)}
      function mapi2(f,l1,l2)
       {function mapi2(i,f,l1,l2)
         {if(l1)
           {if(l2)
             {var
               t2=l2[2],
               h2=l2[1],
               t1=l1[2],
               h1=l1[1],
               _by_=
                function(rh)
                 {function _bz_(rt){return [0,[0,rh,rt]]}
                  return symbol(mapi2(i + 1 | 0,f,t1,t2),_bz_)};
              return symbol(caml_call3(f,i,h1,h2),_by_)}}
          else
           if(! l2)return ok_nil;
          return caml_call1(Stdlib[1],cst_Error_monad_mapi2)}
        return mapi2(0,f,l1,l2)}
      function filter_map_s(f,l)
       {if(l)
         {var
           t=l[2],
           h=l[1],
           _bw_=
            function(param)
             {if(param)
               {var rh=param[1],_bx_=function(rt){return return$0([0,rh,rt])};
                return symbol$0(filter_map_s(f,t),_bx_)}
              return filter_map_s(f,t)};
          return symbol$0(caml_call1(f,h),_bw_)}
        return return_nil}
      function filter_map_p(f,l)
       {if(l)
         {var t=l[2],h=l[1],th=caml_call1(f,h),tt=filter_map_p(f,t);
          return symbol$0
                  (th,
                   function(param)
                    {if(param)
                      {var rh=param[1];
                       return symbol$0(tt,function(rt){return return$0([0,rh,rt])})}
                     return tt})}
        return return_nil}
      function filter(f,l)
       {if(l)
         {var
           t=l[2],
           h=l[1],
           _bu_=
            function(param)
             {if(param)
               {var _bv_=function(t){return [0,[0,h,t]]};
                return symbol(filter(f,t),_bv_)}
              return filter(f,t)};
          return symbol(caml_call1(f,h),_bu_)}
        return ok_nil}
      function filter_s(f,l)
       {if(l)
         {var
           t=l[2],
           h=l[1],
           _bs_=
            function(param)
             {if(param)
               {var _bt_=function(t){return return$0([0,h,t])};
                return symbol$0(filter_s(f,t),_bt_)}
              return filter_s(f,t)};
          return symbol$0(caml_call1(f,h),_bs_)}
        return return_nil}
      function filter_p(f,l)
       {if(l)
         {var t=l[2],h=l[1],jh=caml_call1(f,h),t$0=filter_p(f,t);
          return symbol$0
                  (jh,
                   function(param)
                    {return param
                             ?symbol$0(t$0,function(t){return return$0([0,h,t])})
                             :t$0})}
        return return_nil}
      function iter(f,l)
       {if(l)
         {var t=l[2],h=l[1],_br_=function(param){return iter(f,t)};
          return symbol(caml_call1(f,h),_br_)}
        return ok_unit}
      function iter_s(f,l)
       {if(l)
         {var t=l[2],h=l[1],_bq_=function(param){return iter_s(f,t)};
          return symbol$0(caml_call1(f,h),_bq_)}
        return return_unit}
      function iter_p(f,l)
       {if(l)
         {var l$0=l[2],x=l[1],tx=caml_call1(f,x),tl=iter_p(f,l$0);
          return caml_call2
                  (_a5_,
                   tx,
                   function(tx_res)
                    {return caml_call2
                             (_a5_,
                              tl,
                              function(match)
                               {if(0 === tx_res[0])
                                 {if(0 === match[0])return caml_call1(Lwt[65],0);
                                  var trace=match[1]}
                                else
                                 {var _bo_=tx_res[1];
                                  if(0 !== match[0])
                                   {var trace2=match[1],_bp_=caml_call2(Trace[3],_bo_,trace2);
                                    return caml_call1(Lwt[66],_bp_)}
                                  var trace=_bo_}
                                return caml_call1(Lwt[66],trace)})})}
        return return_unit}
      function iteri_p(f,l)
       {function iteri_p(i,f,l)
         {if(l)
           {var
             l$0=l[2],
             x=l[1],
             tx=caml_call2(f,i,x),
             tl=iteri_p(i + 1 | 0,f,l$0);
            return caml_call2
                    (_a5_,
                     tx,
                     function(tx_res)
                      {return caml_call2
                               (_a5_,
                                tl,
                                function(match)
                                 {if(0 === tx_res[0])
                                   {if(0 === match[0])return caml_call1(Lwt[4],ok_unit);
                                    var trace=match[1]}
                                  else
                                   {var _bm_=tx_res[1];
                                    if(0 !== match[0])
                                     {var trace2=match[1],_bn_=caml_call2(Trace[3],_bm_,trace2);
                                      return caml_call1(Lwt[66],_bn_)}
                                    var trace=_bm_}
                                  return caml_call1(Lwt[66],trace)})})}
          return return_unit}
        return iteri_p(0,f,l)}
      function iter2_p(f,l1,l2)
       {if(l1)
         {if(l2)
           {var
             l2$0=l2[2],
             x2=l2[1],
             l1$0=l1[2],
             x1=l1[1],
             tx=caml_call2(f,x1,x2),
             tl=iter2_p(f,l1$0,l2$0);
            return caml_call2
                    (_a5_,
                     tx,
                     function(tx_res)
                      {return caml_call2
                               (_a5_,
                                tl,
                                function(match)
                                 {if(0 === tx_res[0])
                                   {if(0 === match[0])return caml_call1(Lwt[65],0);
                                    var trace=match[1]}
                                  else
                                   {var _bk_=tx_res[1];
                                    if(0 !== match[0])
                                     {var trace2=match[1],_bl_=caml_call2(Trace[3],_bk_,trace2);
                                      return caml_call1(Lwt[66],_bl_)}
                                    var trace=_bk_}
                                  return caml_call1(Lwt[66],trace)})})}}
        else
         if(! l2)return return_unit;
        return caml_call1(Stdlib[1],cst_Error_monad_iter2_p)}
      function iteri2_p(f,l1,l2)
       {function iteri2_p(i,f,l1,l2)
         {if(l1)
           {if(l2)
             {var
               l2$0=l2[2],
               x2=l2[1],
               l1$0=l1[2],
               x1=l1[1],
               tx=caml_call3(f,i,x1,x2),
               tl=iteri2_p(i + 1 | 0,f,l1$0,l2$0);
              return caml_call2
                      (_a5_,
                       tx,
                       function(tx_res)
                        {return caml_call2
                                 (_a5_,
                                  tl,
                                  function(match)
                                   {if(0 === tx_res[0])
                                     {if(0 === match[0])return caml_call1(Lwt[65],0);
                                      var trace=match[1]}
                                    else
                                     {var _bi_=tx_res[1];
                                      if(0 !== match[0])
                                       {var trace2=match[1],_bj_=caml_call2(Trace[3],_bi_,trace2);
                                        return caml_call1(Lwt[66],_bj_)}
                                      var trace=_bi_}
                                    return caml_call1(Lwt[66],trace)})})}}
          else
           if(! l2)return return_unit;
          return caml_call1(Stdlib[1],cst_Error_monad_iteri2_p)}
        return iteri2_p(0,f,l1,l2)}
      function fold_left_s(f,init,l)
       {if(l)
         {var t=l[2],h=l[1],_bh_=function(acc){return fold_left_s(f,acc,t)};
          return symbol$0(caml_call2(f,init,h),_bh_)}
        return return$0(init)}
      function fold_right_s(f,l,init)
       {if(l)
         {var t=l[2],h=l[1],_bg_=function(acc){return caml_call2(f,h,acc)};
          return symbol$0(fold_right_s(f,t,init),_bg_)}
        return return$0(init)}
      var join_p=Lwt[13],all_p=Lwt[14],both_p=Lwt[12];
      function join_e_errors(trace_acc,param)
       {var trace_acc$0=trace_acc,param$0=param;
        for(;;)
         {if(param$0)
           {var _bf_=param$0[1];
            if(0 === _bf_[0]){var param$1=param$0[2],param$0=param$1;continue}
            var
             ts=param$0[2],
             trace=_bf_[1],
             trace_acc$1=caml_call2(Trace[3],trace_acc$0,trace),
             trace_acc$0=trace_acc$1,
             param$0=ts;
            continue}
          return [1,trace_acc$0]}}
      function join_e(param)
       {var param$0=param;
        for(;;)
         {if(param$0)
           {var _be_=param$0[1];
            if(0 === _be_[0]){var param$1=param$0[2],param$0=param$1;continue}
            var ts=param$0[2],trace=_be_[1];
            return join_e_errors(trace,ts)}
          return ok_unit}}
      function all_e(param)
       {var acc=0,param$0=param;
        for(;;)
         {if(param$0)
           {var _bd_=param$0[1];
            if(0 === _bd_[0])
             {var
               param$1=param$0[2],
               v=_bd_[1],
               acc$0=[0,v,acc],
               acc=acc$0,
               param$0=param$1;
              continue}
            var ts=param$0[2],trace=_bd_[1];
            return join_e_errors(trace,ts)}
          return [0,caml_call1(Stdlib_list[9],acc)]}}
      function both_e(a,match)
       {if(0 === a[0])
         {var _bb_=a[1];
          if(0 === match[0]){var b=match[1];return [0,[0,_bb_,b]]}
          var err=match[1]}
        else
         {var _bc_=a[1];
          if(0 !== match[0])
           {var errb=match[1];return [1,caml_call2(Trace[3],_bc_,errb)]}
          var err=_bc_}
        return [1,err]}
      function join_ep(ts)
       {return caml_call2(symbol$4,caml_call1(all_p,ts),join_e)}
      function all_ep(ts)
       {return caml_call2(symbol$4,caml_call1(all_p,ts),all_e)}
      function both_ep(a,b)
       {function _ba_(param){var b=param[2],a=param[1];return both_e(a,b)}
        return caml_call2(symbol$4,caml_call2(both_p,a,b),_ba_)}
      function record_trace(err,result)
       {if(0 === result[0])return result;
        var trace=result[1];
        return [1,caml_call2(Trace[2],err,trace)]}
      function trace(err,f)
       {return caml_call2
                (_a5_,
                 f,
                 function(ok)
                  {if(0 === ok[0])return caml_call1(Lwt[4],ok);
                   var trace=ok[1],_a$_=caml_call2(Trace[2],err,trace);
                   return caml_call1(Lwt[66],_a$_)})}
      function record_trace_eval(mk_err,ok)
       {if(0 === ok[0])return ok;
        var trace=ok[1];
        function _a__(err){return [1,caml_call2(Trace[2],err,trace)]}
        return symbol(caml_call1(mk_err,0),_a__)}
      function trace_eval(mk_err,f)
       {return caml_call2
                (_a5_,
                 f,
                 function(ok)
                  {if(0 === ok[0])return caml_call1(Lwt[4],ok);
                   var trace=ok[1];
                   function _a8_(err)
                    {var _a9_=caml_call2(Trace[2],err,trace);
                     return caml_call1(Lwt[66],_a9_)}
                   return symbol$0(caml_call1(mk_err,0),_a8_)})}
      function error_unless(cond,exn){return cond?ok_unit:error(exn)}
      function error_when(cond,exn){return cond?error(exn):ok_unit}
      function fail_unless(cond,exn){return cond?return_unit:fail(exn)}
      function fail_when(cond,exn){return cond?fail(exn):return_unit}
      function unless(cond,f){return cond?return_unit:caml_call1(f,0)}
      function when(cond,f){return cond?caml_call1(f,0):return_unit}
      function dont_wait(exc_handler,err_handler,f)
       {function _a6_(param)
         {function _a7_(param)
           {if(0 === param[0])return Lwt[33];
            var trace=param[1];
            caml_call1(err_handler,trace);
            return Lwt[33]}
          return caml_call2(_a5_,caml_call1(f,0),_a7_)}
        return caml_call2(Tezos_stdlib_Lwt_utils[5],exc_handler,_a6_)}
      return [0,
              ok,
              ok_unit,
              ok_none,
              ok_some,
              ok_nil,
              ok_true,
              ok_false,
              return$0,
              return_unit,
              return_none,
              return_some,
              return_nil,
              return_true,
              return_false,
              error,
              fail,
              _a5_,
              symbol$4,
              symbol,
              symbol$5,
              symbol$0,
              symbol$3,
              symbol$1,
              symbol$2,
              record_trace,
              trace,
              record_trace_eval,
              trace_eval,
              error_unless,
              error_when,
              fail_unless,
              fail_when,
              unless,
              when,
              dont_wait,
              iter,
              iter_s,
              iter_p,
              iteri_p,
              iter2_p,
              iteri2_p,
              map,
              mapi,
              map_s,
              rev_map_s,
              map_p,
              mapi_s,
              mapi_p,
              map2,
              mapi2,
              map2_s,
              mapi2_s,
              filter_map_s,
              filter_map_p,
              filter,
              filter_s,
              filter_p,
              fold_left_s,
              fold_right_s,
              join_p,
              all_p,
              both_p,
              join_e,
              all_e,
              both_e,
              join_ep,
              all_ep,
              both_ep]}
    var Tezos_error_monad_Monad_maker=[0,Make$0];
    caml_register_global
     (101,Tezos_error_monad_Monad_maker,"Tezos_error_monad__Monad_maker");
    var set_error_encoding_cache_dirty=[0,function(param){return 0}];
    function Make$1(Prefix)
     {var
       error_encoding_name=
        caml_string_equal(Prefix[1],cst)
         ?cst_error$0
         :caml_call2(Stdlib[28],Prefix[1],cst_error$2),
       error_kinds=[0,0],
       has_recursive_error=[0,0];
      function get_registered_errors(param)
       {var _aS_=error_kinds[1];
        function _aT_(param)
         {var _aV_=param[1];
          if(runtime.caml_string_notequal(_aV_,cst$0))
           {var _aW_=param[5],_aX_=param[3],_aY_=param[2];
            if(0 === _aW_[0])
             {var encoding_case=param[6],category=_aW_[1];
              if(0 === encoding_case[0])
               {var
                 encoding_case$0=encoding_case[1],
                 _aZ_=caml_call2(Data_encoding[54],0,[0,encoding_case$0,0]);
                return [0,
                        [0,
                         category,
                         _aV_,
                         _aY_,
                         _aX_,
                         caml_call2(Data_encoding[74][4],0,_aZ_)],
                        0]}
              var
               make_encoding_case=encoding_case[1],
               _a0_=0,
               eta=
                function(error_encoding)
                 {var
                   _a4_=
                    [0,caml_call1(make_encoding_case,error_encoding),0];
                  return caml_call2(Data_encoding[54],0,_a4_)},
               arg=caml_call1(Data_encoding[66],error_encoding_name),
               _a1_=caml_call3(arg,0,0,eta);
              return [0,
                      [0,
                       category,
                       _aV_,
                       _aY_,
                       _aX_,
                       caml_call2(Data_encoding[74][4],0,_a1_)],
                      _a0_]}
            var
             WEM=_aW_[1],
             _a2_=caml_call1(WEM[11],0),
             _a3_=
              function(param)
               {var
                 schema=param[5],
                 description=param[4],
                 title=param[3],
                 id=param[2],
                 category=param[1];
                return [0,category,id,title,description,schema]};
            return caml_call2(Stdlib_list[17],_a3_,_a2_)}
          return 0}
        var _aU_=caml_call2(Stdlib_list[17],_aT_,_aS_);
        return caml_call1(Stdlib_list[14],_aU_)}
      var error_encoding_cache=[0,0],cont=set_error_encoding_cache_dirty[1];
      set_error_encoding_cache_dirty[1]
      =
      function(param){caml_call1(cont,0);error_encoding_cache[1] = 0;return 0};
      function string_of_category(param)
       {return -103274127 === param
                ?cst_temporary$0
                :950914574 <= param?cst_permanent$0:cst_branch$0}
      function pp_info(ppf,param)
       {var
         schema=param[5],
         description=param[4],
         title=param[3],
         id=param[2],
         category=param[1],
         _aP_=caml_call1(Json_schema[19],schema),
         _aQ_=caml_call3(Json_repr[3],0,0,Json_repr[4]),
         _aR_=string_of_category(category);
        return caml_call8
                (Stdlib_format[123],
                 ppf,
                 _h_,
                 _aR_,
                 id,
                 title,
                 description,
                 _aQ_,
                 _aP_)}
      var
       Unclassified=
        [248,cst_Tezos_error_monad_Core_mak,caml_fresh_oo_id(0)];
      function to_error(msg){return [0,Unclassified,msg]}
      function from_error(error)
       {if(error[1] === Unclassified){var msg=error[2];return [0,msg]}
        var
         _aN_=caml_call1(Stdlib_obj[21][1],error),
         msg$0=caml_call1(Stdlib_obj[21][2],_aN_),
         _aO_=caml_call2(Stdlib[28],msg$0,cst_Was_the_error_registered);
        return [0,caml_call2(Stdlib[28],cst_Unclassified_error,_aO_)]}
      var
       ___=caml_call4(Data_encoding[27],0,0,cst_error$1,Data_encoding[19]),
       _$_=caml_call1(Data_encoding[5],cst_generic),
       _aa_=caml_call4(Data_encoding[27],0,0,cst_kind,_$_),
       eta=caml_call2(Data_encoding[32],_aa_,___);
      function _ab_(param){var x=param[2];return x}
      function _ac_(x){return [0,0,x]}
      var
       arg=caml_call2(Data_encoding[25],_ac_,_ab_),
       _ad_=caml_call2(arg,0,eta),
       _ae_=
        caml_call4
         (Data_encoding[67],cst_generic_error,[0,title],[0,description],_ad_),
       encoding_case=
        caml_call6
         (Data_encoding[53],cst_Generic_error,0,0,_ae_,from_error,to_error),
       encoding_case$0=[0,encoding_case];
      function pp(ppf,s)
       {return caml_call4(Stdlib_format[123],ppf,_i_,Stdlib_format[120],s)}
      error_kinds[1]
      =
      [0,
       [0,id,title,description,from_error,category,encoding_case$0,pp],
       error_kinds[1]];
      var
       Unregistered_error=
        [248,cst_Tezos_error_monad_Core_mak$0,caml_fresh_oo_id(0)];
      function to_error$0(msg){return [0,Unregistered_error,msg]}
      function from_error$0(param)
       {if(param[1] === Unregistered_error){var json=param[2];return [0,json]}
        return 0}
      var
       encoding_case$1=
        caml_call6
         (Data_encoding[53],
          cst_Unregistered_error,
          0,
          0,
          Data_encoding[78],
          from_error$0,
          to_error$0),
       encoding_case$2=[0,encoding_case$1];
      function pp$0(ppf,json)
       {return caml_call4
                (Stdlib_format[123],ppf,_j_,Data_encoding[74][18],json)}
      error_kinds[1]
      =
      [0,
       [0,id$0,cst$2,cst$1,from_error$0,category$0,encoding_case$2,pp$0],
       error_kinds[1]];
      function prepare_registration(new_id)
       {caml_call1(set_error_encoding_cache_dirty[1],0);
        var name=caml_call2(Stdlib[28],Prefix[1],new_id),_aK_=error_kinds[1];
        function _aL_(param)
         {var id=param[1];return caml_string_equal(name,id)}
        if(caml_call2(Stdlib_list[30],_aL_,_aK_))
         {var _aM_=caml_call2(Stdlib_printf[4],_k_,name);
          caml_call1(Stdlib[1],_aM_)}
        return name}
      function register_wrapped_error_kind(WEM,id,title,description)
       {var name=prepare_registration(id);
        function unwrap(err)
         {var res=caml_call1(WEM[12],err);
          if(res)
           {var _aJ_=res[1];
            if(_aJ_[1] === WEM[6])return 0;
            if(_aJ_[1] === WEM[7])return 0}
          return res}
        function wrap(err)
         {return err[1] === WEM[6]
                  ?caml_call1(Stdlib[2],cst_ignore_wrapped_error_when_)
                  :err[1] === WEM[7]
                    ?caml_call1(Stdlib[2],cst_ignore_wrapped_error_when_$0)
                    :caml_call1(WEM[13],err)}
        var
         encoding_case=
          [0,caml_call6(Data_encoding[53],name,0,0,WEM[1],unwrap,wrap)];
        error_kinds[1]
        =
        [0,
         [0,name,title,description,WEM[12],[1,WEM],encoding_case,WEM[2]],
         error_kinds[1]];
        return 0}
      function add_kind_and_id
       (category,name,title,description,encoding,from_error,to_error)
       {if(1 - caml_call1(Data_encoding[55],encoding))
         {var _ay_=caml_call3(Stdlib_printf[4],_l_,Prefix[1],name);
          caml_call1(Stdlib[1],_ay_)}
        var
         _az_=caml_call1(Data_encoding[5],name),
         _aA_=caml_call4(Data_encoding[27],0,0,cst_id$0,_az_),
         _aB_=string_of_category(category),
         _aC_=caml_call1(Data_encoding[5],_aB_),
         _aD_=caml_call4(Data_encoding[27],0,0,cst_kind$0,_aC_),
         _aE_=caml_call2(Data_encoding[32],_aD_,_aA_),
         with_id_and_kind_encoding=caml_call2(Data_encoding[41],_aE_,encoding),
         _aF_=0;
        function _aG_(param){var x=param[2];return x}
        function _aH_(x){return [0,_m_,x]}
        var
         _aI_=
          caml_call4
           (Data_encoding[25],_aH_,_aG_,_aF_,with_id_and_kind_encoding);
        return caml_call6
                (Data_encoding[53],
                 title,
                 [0,description],
                 0,
                 _aI_,
                 from_error,
                 to_error)}
      function register_error_kind
       (category,id,title,description,pp,encoding,from_error,to_error)
       {var
         id$0=prepare_registration(id),
         encoding_case=
          [0,
           add_kind_and_id
            (category,id$0,title,description,encoding,from_error,to_error)],
         _as_=error_kinds[1];
        function _at_(ppf,data)
         {var
           _au_=caml_call4(Data_encoding[27],0,0,cst_data,encoding),
           _av_=
            caml_call4
             (Data_encoding[27],0,0,cst_description,Data_encoding[19]),
           _aw_=caml_call4(Data_encoding[27],0,0,cst_id,Data_encoding[19]),
           pp_encoding=caml_call3(Data_encoding[33],_aw_,_av_,_au_),
           eta=
            caml_call2
             (Data_encoding[74][5],pp_encoding,[0,id$0,description,data]),
           arg=Data_encoding[74][17],
           _ax_=caml_call3(arg,0,0,eta);
          return caml_call2(Stdlib_format[13],ppf,_ax_)}
        error_kinds[1]
        =
        [0,
         [0,
          id$0,
          title,
          description,
          from_error,
          [0,category],
          encoding_case,
          caml_call2(Stdlib_option[3],pp,_at_)],
         _as_];
        return 0}
      function register_recursive_error_kind
       (category,id,title,description,pp,make_encoding,from_error,to_error)
       {var
         name=prepare_registration(id),
         encoding_case=
          [1,
           function(error_encoding)
            {var encoding=caml_call1(make_encoding,error_encoding);
             return add_kind_and_id
                     (category,
                      name,
                      title,
                      description,
                      encoding,
                      from_error,
                      to_error)}];
        has_recursive_error[1] = 1;
        error_kinds[1]
        =
        [0,
         [0,name,title,description,from_error,[0,category],encoding_case,pp],
         error_kinds[1]];
        return 0}
      function error_encoding(param)
       {var _af_=error_encoding_cache[1];
        if(_af_){var encoding=_af_[1];return encoding}
        if(has_recursive_error[1])
         var
          eta=
           function(error_encoding)
            {var _am_=error_kinds[1];
             function _an_(param)
              {var encoding_case=param[6];
               if(0 === encoding_case[0])
                {var case$0=encoding_case[1];return case$0}
               var make=encoding_case[1];
               return caml_call1(make,error_encoding)}
             var
              cases=caml_call2(Stdlib_list[17],_an_,_am_),
              union_encoding=caml_call2(Data_encoding[54],0,cases),
              _ao_=Data_encoding[78],
              _ap_=caml_call1(Data_encoding[74][6],union_encoding),
              _aq_=caml_call1(Data_encoding[74][5],union_encoding),
              _ar_=caml_call4(Data_encoding[25],_aq_,_ap_,0,_ao_),
              eta=caml_call2(Data_encoding[65],union_encoding,_ar_),
              arg=Data_encoding[62];
             return caml_call2(arg,0,eta)},
          arg=caml_call1(Data_encoding[66],error_encoding_name),
          encoding$0=caml_call3(arg,0,0,eta);
        else
         var
          _ag_=error_kinds[1],
          _ah_=
           function(param)
            {var encoding_case=param[6];
             if(0 === encoding_case[0])
              {var case$0=encoding_case[1];return case$0}
             throw [0,Assert_failure,_n_]},
          cases=caml_call2(Stdlib_list[17],_ah_,_ag_),
          union_encoding=caml_call2(Data_encoding[54],0,cases),
          _ai_=Data_encoding[78],
          _aj_=caml_call1(Data_encoding[74][6],union_encoding),
          _ak_=caml_call1(Data_encoding[74][5],union_encoding),
          _al_=caml_call4(Data_encoding[25],_ak_,_aj_,0,_ai_),
          eta$0=caml_call2(Data_encoding[65],union_encoding,_al_),
          arg$0=Data_encoding[62],
          encoding$0=caml_call2(arg$0,0,eta$0);
        error_encoding_cache[1] = [0,encoding$0];
        return encoding$0}
      var error_encoding$0=caml_call1(Data_encoding[64],error_encoding);
      function json_of_error(error)
       {return caml_call2(Data_encoding[74][5],error_encoding$0,error)}
      function error_of_json(json)
       {return caml_call2(Data_encoding[74][6],error_encoding$0,json)}
      function classify_error(e)
       {var param=error_kinds[1];
        for(;;)
         {if(param)
           {var
             rest=param[2],
             match=param[1],
             category=match[5],
             from_error=match[4],
             match$0=caml_call1(from_error,e);
            if(match$0)
             {if(0 === category[0])
               {var error_category=category[1];return error_category}
              var WEM=category[1],match$1=caml_call1(WEM[12],e);
              if(match$1){var e$0=match$1[1];return caml_call1(WEM[5],e$0)}
              var param=rest;
              continue}
            var param=rest;
            continue}
          return -103274127}}
      function pp$1(ppf,error)
       {var param=error_kinds[1];
        for(;;)
         {if(param)
           {var
             errors=param[2],
             match=param[1],
             pp=match[7],
             from_error=match[4],
             match$0=caml_call1(from_error,error);
            if(match$0){var x=match$0[1];return caml_call2(pp,ppf,x)}
            var param=errors;
            continue}
          return caml_call2(Stdlib_format[123],ppf,_o_)}}
      return [0,
              error_encoding$0,
              pp$1,
              register_error_kind,
              register_recursive_error_kind,
              classify_error,
              Unclassified,
              Unregistered_error,
              json_of_error,
              error_of_json,
              pp_info,
              get_registered_errors,
              register_wrapped_error_kind]}
    var Tezos_error_monad_Core_maker=[0,Make$1];
    caml_register_global
     (107,Tezos_error_monad_Core_maker,"Tezos_error_monad__Core_maker");
    var
     include=Make$1([0,id$1]),
     error_encoding=include[1],
     pp=include[2],
     register_error_kind=include[3],
     register_recursive_error_kind=include[4],
     classify_error=include[5],
     Unclassified=include[6],
     Unregistered_error=include[7],
     json_of_error=include[8],
     error_of_json=include[9],
     pp_info=include[10],
     get_registered_errors=include[11],
     register_wrapped_error_kind=include[12],
     Tezos_error_monad_TzCore=
      [0,
       error_encoding,
       pp,
       register_error_kind,
       register_recursive_error_kind,
       classify_error,
       Unclassified,
       Unregistered_error,
       json_of_error,
       error_of_json,
       pp_info,
       get_registered_errors,
       register_wrapped_error_kind];
    caml_register_global
     (108,Tezos_error_monad_TzCore,"Tezos_error_monad__TzCore");
    var
     Monad=Make$0(Tezos_error_monad_TzTrace),
     ok=Monad[1],
     ok_unit$0=Monad[2],
     ok_none$0=Monad[3],
     ok_some=Monad[4],
     ok_nil$0=Monad[5],
     ok_true$0=Monad[6],
     ok_false$0=Monad[7],
     return$0=Monad[8],
     return_unit=Monad[9],
     return_none=Monad[10],
     return_some=Monad[11],
     return_nil=Monad[12],
     return_true=Monad[13],
     return_false=Monad[14],
     error=Monad[15],
     fail=Monad[16],
     symbol_bind=Monad[17],
     symbol=Monad[18],
     symbol$0=Monad[19],
     symbol$1=Monad[20],
     symbol$2=Monad[21],
     symbol$3=Monad[22],
     symbol$4=Monad[23],
     symbol$5=Monad[24],
     record_trace=Monad[25],
     trace=Monad[26],
     record_trace_eval=Monad[27],
     trace_eval=Monad[28],
     error_unless=Monad[29],
     error_when=Monad[30],
     fail_unless=Monad[31],
     fail_when=Monad[32],
     unless=Monad[33],
     when=Monad[34],
     dont_wait=Monad[35],
     iter=Monad[36],
     iter_s=Monad[37],
     iter_p=Monad[38],
     iteri_p=Monad[39],
     iter2_p=Monad[40],
     iteri2_p=Monad[41],
     map=Monad[42],
     mapi=Monad[43],
     map_s=Monad[44],
     rev_map_s=Monad[45],
     map_p=Monad[46],
     mapi_s=Monad[47],
     mapi_p=Monad[48],
     map2=Monad[49],
     mapi2=Monad[50],
     map2_s=Monad[51],
     mapi2_s=Monad[52],
     filter_map_s=Monad[53],
     filter_map_p=Monad[54],
     filter=Monad[55],
     filter_s=Monad[56],
     filter_p=Monad[57],
     fold_left_s=Monad[58],
     fold_right_s=Monad[59],
     join_p=Monad[60],
     all_p=Monad[61],
     both_p=Monad[62],
     join_e=Monad[63],
     all_e=Monad[64],
     both_e=Monad[65],
     join_ep=Monad[66],
     all_ep=Monad[67],
     both_ep=Monad[68],
     include$1=
      Make
       ([0,
         error_encoding,
         pp,
         register_error_kind,
         register_recursive_error_kind,
         classify_error,
         Unclassified,
         Unregistered_error,
         json_of_error,
         error_of_json,
         pp_info,
         get_registered_errors],
        Tezos_error_monad_TzTrace,
        Monad),
     classify_errors=include$1[1],
     pp_print_error=include$1[2],
     pp_print_error_first=include$1[3],
     trace_encoding=include$1[4],
     result_encoding=include$1[5],
     include$0=
      [0,
       ok,
       ok_unit$0,
       ok_none$0,
       ok_some,
       ok_nil$0,
       ok_true$0,
       ok_false$0,
       return$0,
       return_unit,
       return_none,
       return_some,
       return_nil,
       return_true,
       return_false,
       error,
       fail,
       symbol_bind,
       symbol,
       symbol$0,
       symbol$1,
       symbol$2,
       symbol$3,
       symbol$4,
       symbol$5,
       record_trace,
       trace,
       record_trace_eval,
       trace_eval,
       error_unless,
       error_when,
       fail_unless,
       fail_when,
       unless,
       when,
       dont_wait,
       iter,
       iter_s,
       iter_p,
       iteri_p,
       iter2_p,
       iteri2_p,
       map,
       mapi,
       map_s,
       rev_map_s,
       map_p,
       mapi_s,
       mapi_p,
       map2,
       mapi2,
       map2_s,
       mapi2_s,
       filter_map_s,
       filter_map_p,
       filter,
       filter_s,
       filter_p,
       fold_left_s,
       fold_right_s,
       join_p,
       all_p,
       both_p,
       join_e,
       all_e,
       both_e,
       join_ep,
       all_ep,
       both_ep,
       classify_errors,
       pp_print_error,
       pp_print_error_first,
       trace_encoding,
       result_encoding];
    caml_register_global(109,include$0,"Tezos_error_monad__TzMonad");
    var Exn=[248,cst_Tezos_error_monad_Error_mo,caml_fresh_oo_id(0)];
    function _p_(msg){return [0,Exn,[0,Stdlib[7],msg]]}
    function _q_(param)
     {if(param[1] === Exn)
       {var _Z_=param[2];
        if(_Z_[1] === Stdlib[7]){var msg=_Z_[2];return [0,msg]}
        return [0,caml_call1(Stdlib_printexc[1],_Z_)]}
      return 0}
    var
     _r_=caml_call4(Data_encoding[27],0,0,cst_msg,Data_encoding[19]),
     _s_=caml_call1(Data_encoding[31],_r_);
    caml_call8
     (register_error_kind,
      -103274127,
      cst_failure,
      cst_Exception,
      cst_Exception_safely_wrapped_i,
      [0,
       function(ppf,s)
        {return caml_call4(Stdlib_format[123],ppf,_t_,Stdlib_format[120],s)}],
      _s_,
      _q_,
      _p_);
    function generic_error(fmt)
     {function _Y_(s){return caml_call1(error,[0,Exn,[0,Stdlib[7],s]])}
      return caml_call2(Stdlib_format[134],_Y_,fmt)}
    function failwith(fmt)
     {function _X_(s){return caml_call1(fail,[0,Exn,[0,Stdlib[7],s]])}
      return caml_call2(Stdlib_format[134],_X_,fmt)}
    function error_exn(s)
     {return [1,caml_call1(Tezos_error_monad_TzTrace[1],[0,Exn,s])]}
    function trace_exn(exn,f){return caml_call2(trace,[0,Exn,exn],f)}
    function generic_trace(fmt)
     {function _U_(str)
       {var _V_=[0,Stdlib[7],str];
        return function(_W_){return trace_exn(_V_,_W_)}}
      return caml_call2(Stdlib_format[134],_U_,fmt)}
    function record_trace_exn(exn,f)
     {return caml_call2(record_trace,[0,Exn,exn],f)}
    function failure(fmt)
     {function _T_(str){return [0,Exn,[0,Stdlib[7],str]]}
      return caml_call2(Stdlib_format[134],_T_,fmt)}
    function pp_exn(ppf,exn){return caml_call2(pp,ppf,[0,Exn,exn])}
    var Canceled=[248,cst_Tezos_error_monad_Error_mo$0,caml_fresh_oo_id(0)];
    function _u_(param){return Canceled}
    function _v_(param){return param === Canceled?_w_:0}
    caml_call8
     (register_error_kind,
      -103274127,
      cst_utils_Canceled,
      cst_Canceled$0,
      cst_Canceled,
      0,
      Data_encoding[4],
      _v_,
      _u_);
    function _x_(param){return Canceled}
    function _y_(param){return param === Canceled?_z_:0}
    var _A_=Data_encoding[4];
    caml_call8
     (register_error_kind,
      -103274127,
      cst_canceled,
      cst_Canceled$1,
      cst_A_promise_was_unexpectedly,
      [0,
       function(f,param)
        {return caml_call2(Stdlib_format[13],f,cst_The_promise_was_unexpected)}],
      _A_,
      _y_,
      _x_);
    function protect(on_error,canceler,t)
     {if(canceler)
       {var
         canceler$0=canceler[1],
         _L_=function(param){return caml_call1(fail,Canceled)},
         cancellation=
          caml_call2(symbol_bind,caml_call1(Lwt_canceler[3],canceler$0),_L_),
         _M_=0,
         _N_=function(exn){return caml_call1(fail,[0,Exn,exn])},
         _O_=[0,cancellation,[0,caml_call2(Lwt[7],t,_N_),_M_]],
         res$0=caml_call1(Lwt[15],_O_);
        return caml_call2
                (symbol_bind,
                 res$0,
                 function(param)
                  {if(0 === param[0])return res$0;
                   var
                    trace=param[1],
                    trace$0=
                     caml_call1(Lwt_canceler[5],canceler$0)
                      ?caml_call1(Tezos_error_monad_TzTrace[1],Canceled)
                      :trace;
                   if(on_error)
                    {var
                      on_error$0=on_error[1],
                      _R_=function(exn){return caml_call1(fail,[0,Exn,exn])},
                      _S_=function(param){return caml_call1(on_error$0,trace$0)};
                     return caml_call2(Lwt[7],_S_,_R_)}
                   return caml_call1(Lwt[66],trace$0)})}
      function _K_(exn){return caml_call1(fail,[0,Exn,exn])}
      var res=caml_call2(Lwt[7],t,_K_);
      return caml_call2
              (symbol_bind,
               res,
               function(param)
                {if(0 === param[0])return res;
                 var trace=param[1];
                 if(on_error)
                  {var
                    on_error$0=on_error[1],
                    _P_=function(exn){return caml_call1(fail,[0,Exn,exn])},
                    _Q_=function(param){return caml_call1(on_error$0,trace)};
                   return caml_call2(Lwt[7],_Q_,_P_)}
                 return res})}
    var Timeout=[248,cst_Tezos_error_monad_Error_mo$1,caml_fresh_oo_id(0)];
    function _B_(param){return Timeout}
    function _C_(param){return param === Timeout?_D_:0}
    var _E_=Data_encoding[4];
    caml_call8
     (register_error_kind,
      -103274127,
      cst_utils_Timeout,
      cst_Timeout$0,
      cst_Timeout,
      [0,
       function(f,param)
        {return caml_call2(Stdlib_format[13],f,cst_The_request_has_timed_out)}],
      _E_,
      _C_,
      _B_);
    function with_timeout(opt,timeout,f)
     {if(opt)
       var sth=opt[1],canceler=sth;
      else
       var canceler=caml_call1(Lwt_canceler[1],0);
      var target=caml_call1(f,canceler);
      function _G_(param)
       {if(0 === caml_call1(Lwt[40],target))
         {var _J_=function(param){return caml_call1(fail,Timeout)};
          return caml_call2
                  (symbol_bind,caml_call1(Lwt_canceler[2],canceler),_J_)}
        caml_call1(Lwt[22],timeout);
        return target}
      var
       _H_=0,
       _I_=
        [0,
         timeout,
         [0,caml_call2(symbol,target,function(param){return 0}),_H_]];
      return caml_call2(symbol_bind,caml_call1(Lwt[16],_I_),_G_)}
    var
     errs_tag=caml_call3(Tezos_stdlib_Tag[1],_F_,cst_errs,pp_print_error),
     Tezos_error_monad_Error_monad=
      [0,
       error_encoding,
       pp,
       register_error_kind,
       register_recursive_error_kind,
       classify_error,
       Unclassified,
       Unregistered_error,
       json_of_error,
       error_of_json,
       pp_info,
       get_registered_errors,
       register_wrapped_error_kind,
       Tezos_error_monad_TzTrace,
       ok,
       ok_unit$0,
       ok_none$0,
       ok_some,
       ok_nil$0,
       ok_true$0,
       ok_false$0,
       return$0,
       return_unit,
       return_none,
       return_some,
       return_nil,
       return_true,
       return_false,
       error,
       fail,
       symbol_bind,
       symbol,
       symbol$0,
       symbol$1,
       symbol$2,
       symbol$3,
       symbol$4,
       symbol$5,
       record_trace,
       trace,
       record_trace_eval,
       trace_eval,
       error_unless,
       error_when,
       fail_unless,
       fail_when,
       unless,
       when,
       dont_wait,
       iter,
       iter_s,
       iter_p,
       iteri_p,
       iter2_p,
       iteri2_p,
       map,
       mapi,
       map_s,
       rev_map_s,
       map_p,
       mapi_s,
       mapi_p,
       map2,
       mapi2,
       map2_s,
       mapi2_s,
       filter_map_s,
       filter_map_p,
       filter,
       filter_s,
       filter_p,
       fold_left_s,
       fold_right_s,
       join_p,
       all_p,
       both_p,
       join_e,
       all_e,
       both_e,
       join_ep,
       all_ep,
       both_ep,
       classify_errors,
       pp_print_error,
       pp_print_error_first,
       trace_encoding,
       result_encoding,
       generic_error,
       failwith,
       error_exn,
       record_trace_exn,
       trace_exn,
       generic_trace,
       pp_exn,
       failure,
       Exn,
       Canceled,
       protect,
       Timeout,
       with_timeout,
       errs_tag];
    caml_register_global
     (113,Tezos_error_monad_Error_monad,"Tezos_error_monad__Error_monad");
    return}
  (function(){return this}()));


//# 1 "../../.js/tezos-micheline/tezos_micheline.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call8(f,a0,a1,a2,a3,a4,a5,a6,a7)
     {return f.length == 8
              ?f(a0,a1,a2,a3,a4,a5,a6,a7)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_locations=caml_string_of_jsbytes("locations"),
     cst_expression$0=caml_string_of_jsbytes("expression"),
     cst_annots$0=caml_string_of_jsbytes("annots"),
     cst_arg2=caml_string_of_jsbytes("arg2"),
     cst_arg1=caml_string_of_jsbytes("arg1"),
     cst_prim$0=caml_string_of_jsbytes("prim"),
     cst_Prim_2_args_annot=caml_string_of_jsbytes("Prim (2 args + annot)"),
     cst_arg2$0=caml_string_of_jsbytes("arg2"),
     cst_arg1$0=caml_string_of_jsbytes("arg1"),
     cst_prim$1=caml_string_of_jsbytes("prim"),
     cst_Prim_2_args_no_annot=
      caml_string_of_jsbytes("Prim (2 args, no annot)"),
     cst_annots$1=caml_string_of_jsbytes("annots"),
     cst_arg=caml_string_of_jsbytes("arg"),
     cst_prim$2=caml_string_of_jsbytes("prim"),
     cst_Prim_1_arg_annot=caml_string_of_jsbytes("Prim (1 arg + annot)"),
     cst_arg$0=caml_string_of_jsbytes("arg"),
     cst_prim$3=caml_string_of_jsbytes("prim"),
     cst_Prim_1_arg_no_annot=caml_string_of_jsbytes("Prim (1 arg, no annot)"),
     cst_annots$2=caml_string_of_jsbytes("annots"),
     cst_prim$4=caml_string_of_jsbytes("prim"),
     cst_Prim_no_args_annot=caml_string_of_jsbytes("Prim (no args + annot)"),
     cst_prim$5=caml_string_of_jsbytes("prim"),
     cst_Prim_no_args_annot$0=caml_string_of_jsbytes("Prim (no args, annot)"),
     cst_annots=caml_string_of_jsbytes("annots"),
     cst_args=caml_string_of_jsbytes("args"),
     cst_prim=caml_string_of_jsbytes("prim"),
     cst_Generic_prim_any_number_of=
      caml_string_of_jsbytes
       ("Generic prim (any number of args with or without annot)"),
     cst_Oversized_annotation=caml_string_of_jsbytes("Oversized annotation"),
     cst=caml_string_of_jsbytes(""),
     cst$0=caml_string_of_jsbytes(" "),
     cst_Invalid_annotation_string_=
      caml_string_of_jsbytes
       ("Invalid annotation string, must be a sequence of valid annotations with spaces"),
     cst_Sequence=caml_string_of_jsbytes("Sequence"),
     cst_Bytes=caml_string_of_jsbytes("Bytes"),
     cst_String=caml_string_of_jsbytes("String"),
     cst_Int=caml_string_of_jsbytes("Int"),
     cst_int=caml_string_of_jsbytes("int"),
     cst_string=caml_string_of_jsbytes("string"),
     cst_bytes=caml_string_of_jsbytes("bytes"),
     cst$1=caml_string_of_jsbytes(" "),
     cst_expression=caml_string_of_jsbytes(".expression"),
     cst_micheline=caml_string_of_jsbytes("micheline."),
     cst_micheline_location=caml_string_of_jsbytes("micheline.location"),
     cst$2=caml_string_of_jsbytes(" "),
     cst_0=caml_string_of_jsbytes("0"),
     cst$3=caml_string_of_jsbytes("/"),
     cst$4=caml_string_of_jsbytes(""),
     cst$5=caml_string_of_jsbytes("\\"),
     cst$6=caml_string_of_jsbytes("\b"),
     cst$7=caml_string_of_jsbytes("\n"),
     cst$8=caml_string_of_jsbytes("\r"),
     cst$9=caml_string_of_jsbytes("\t"),
     cst$10=caml_string_of_jsbytes('"'),
     point_zero=[0,0,0,0,0],
     cst_byte=caml_string_of_jsbytes("byte"),
     cst_point=caml_string_of_jsbytes("point"),
     cst_column=caml_string_of_jsbytes("column"),
     cst_line=caml_string_of_jsbytes("line"),
     cst_stop=caml_string_of_jsbytes("stop"),
     cst_start=caml_string_of_jsbytes("start"),
     cst_ident=caml_string_of_jsbytes("ident"),
     cst_Ident=caml_string_of_jsbytes("Ident"),
     cst_bytes$0=caml_string_of_jsbytes("bytes"),
     cst_Bytes$0=caml_string_of_jsbytes("Bytes"),
     cst_punctuation=caml_string_of_jsbytes("punctuation"),
     cst_Punctuation=caml_string_of_jsbytes("Punctuation"),
     cst_end_of_line=caml_string_of_jsbytes("end_of_line"),
     cst_comment=caml_string_of_jsbytes("comment"),
     cst_Comment=caml_string_of_jsbytes("Comment"),
     cst_annot=caml_string_of_jsbytes("annot"),
     cst_Annot=caml_string_of_jsbytes("Annot"),
     cst_int$0=caml_string_of_jsbytes("int"),
     cst_Int$0=caml_string_of_jsbytes("Int"),
     cst_string$0=caml_string_of_jsbytes("string"),
     cst_String$0=caml_string_of_jsbytes("String"),
     cst_Tezos_micheline_Micheline_=
      caml_string_of_jsbytes
       ("Tezos_micheline.Micheline_parser.Invalid_utf8_sequence"),
     cst_Tezos_micheline_Micheline_$0=
      caml_string_of_jsbytes
       ("Tezos_micheline.Micheline_parser.Unexpected_character"),
     cst_Tezos_micheline_Micheline_$1=
      caml_string_of_jsbytes
       ("Tezos_micheline.Micheline_parser.Undefined_escape_sequence"),
     cst_Tezos_micheline_Micheline_$2=
      caml_string_of_jsbytes
       ("Tezos_micheline.Micheline_parser.Missing_break_after_number"),
     cst_Tezos_micheline_Micheline_$3=
      caml_string_of_jsbytes
       ("Tezos_micheline.Micheline_parser.Unterminated_string"),
     cst_Tezos_micheline_Micheline_$4=
      caml_string_of_jsbytes
       ("Tezos_micheline.Micheline_parser.Unterminated_integer"),
     cst_Tezos_micheline_Micheline_$5=
      caml_string_of_jsbytes
       ("Tezos_micheline.Micheline_parser.Odd_lengthed_bytes"),
     cst_Tezos_micheline_Micheline_$6=
      caml_string_of_jsbytes
       ("Tezos_micheline.Micheline_parser.Unterminated_comment"),
     cst_Tezos_micheline_Micheline_$7=
      caml_string_of_jsbytes
       ("Tezos_micheline.Micheline_parser.Annotation_length"),
     cst_generic=caml_string_of_jsbytes("generic"),
     cst_Tezos_micheline_Micheline_$8=
      caml_string_of_jsbytes("Tezos_micheline.Micheline_parser.Unclosed"),
     cst_Tezos_micheline_Micheline_$9=
      caml_string_of_jsbytes("Tezos_micheline.Micheline_parser.Unexpected"),
     cst_Tezos_micheline_Micheline_$10=
      caml_string_of_jsbytes("Tezos_micheline.Micheline_parser.Extra"),
     cst_Tezos_micheline_Micheline_$11=
      caml_string_of_jsbytes("Tezos_micheline.Micheline_parser.Misaligned"),
     cst_Tezos_micheline_Micheline_$12=
      caml_string_of_jsbytes("Tezos_micheline.Micheline_parser.Empty"),
     cst_sequence=caml_string_of_jsbytes("sequence"),
     cst_point$0=caml_string_of_jsbytes("point"),
     cst_While_parsing_a_piece_of_M=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, a sequence of bytes that is not valid UTF-8 was encountered."),
     cst_Micheline_parser_error_inv=
      caml_string_of_jsbytes("Micheline parser error: invalid UTF-8 sequence"),
     cst_micheline_parse_error_inva=
      caml_string_of_jsbytes("micheline.parse_error.invalid_utf8_sequence"),
     cst_character=caml_string_of_jsbytes("character"),
     cst_point$1=caml_string_of_jsbytes("point"),
     cst_While_parsing_a_piece_of_M$0=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, an unexpected character was encountered."),
     cst_Micheline_parser_error_une=
      caml_string_of_jsbytes("Micheline parser error: unexpected character"),
     cst_micheline_parse_error_unex=
      caml_string_of_jsbytes("micheline.parse_error.unexpected_character"),
     cst_sequence$0=caml_string_of_jsbytes("sequence"),
     cst_point$2=caml_string_of_jsbytes("point"),
     cst_While_parsing_a_piece_of_M$1=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, an unexpected escape sequence was encountered in a string."),
     cst_Micheline_parser_error_und=
      caml_string_of_jsbytes
       ("Micheline parser error: undefined escape sequence"),
     cst_micheline_parse_error_unde=
      caml_string_of_jsbytes
       ("micheline.parse_error.undefined_escape_sequence"),
     cst_point$3=caml_string_of_jsbytes("point"),
     cst_While_parsing_a_piece_of_M$2=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, a number was not visually separated from its follower token, leading to misreadability."),
     cst_Micheline_parser_error_mis=
      caml_string_of_jsbytes
       ("Micheline parser error: missing break after number"),
     cst_micheline_parse_error_miss=
      caml_string_of_jsbytes
       ("micheline.parse_error.missing_break_after_number"),
     cst_location=caml_string_of_jsbytes("location"),
     cst_While_parsing_a_piece_of_M$3=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, a string was not terminated."),
     cst_Micheline_parser_error_unt=
      caml_string_of_jsbytes("Micheline parser error: unterminated string"),
     cst_micheline_parse_error_unte=
      caml_string_of_jsbytes("micheline.parse_error.unterminated_string"),
     cst_location$0=caml_string_of_jsbytes("location"),
     cst_While_parsing_a_piece_of_M$4=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, an integer was not terminated."),
     cst_Micheline_parser_error_unt$0=
      caml_string_of_jsbytes("Micheline parser error: unterminated integer"),
     cst_micheline_parse_error_unte$0=
      caml_string_of_jsbytes("micheline.parse_error.unterminated_integer"),
     cst_location$1=caml_string_of_jsbytes("location"),
     cst_While_parsing_a_piece_of_M$5=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, the length of a byte sequence (0x...) was not a multiple of two, leaving a trailing half byte."),
     cst_Micheline_parser_error_odd=
      caml_string_of_jsbytes("Micheline parser error: odd lengthed bytes"),
     cst_micheline_parse_error_odd_=
      caml_string_of_jsbytes("micheline.parse_error.odd_lengthed_bytes"),
     cst_location$2=caml_string_of_jsbytes("location"),
     cst_While_parsing_a_piece_of_M$6=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, a commentX was not terminated."),
     cst_Micheline_parser_error_unt$1=
      caml_string_of_jsbytes("Micheline parser error: unterminated comment"),
     cst_micheline_parse_error_unte$1=
      caml_string_of_jsbytes("micheline.parse_error.unterminated_comment"),
     cst_location$3=caml_string_of_jsbytes("location"),
     cst_Micheline_parser_error_ann=
      caml_string_of_jsbytes
       ("Micheline parser error: annotation exceeds max length"),
     cst_micheline_parse_error_anno=
      caml_string_of_jsbytes
       ("micheline.parse_error.annotation_exceeds_max_length"),
     cst_token=caml_string_of_jsbytes("token"),
     cst_location$4=caml_string_of_jsbytes("location"),
     cst_While_parsing_a_piece_of_M$7=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, a parenthesis or a brace was unclosed."),
     cst_Micheline_parser_error_unc=
      caml_string_of_jsbytes("Micheline parser error: unclosed token"),
     cst_micheline_parse_error_uncl=
      caml_string_of_jsbytes("micheline.parse_error.unclosed_token"),
     cst_token$0=caml_string_of_jsbytes("token"),
     cst_location$5=caml_string_of_jsbytes("location"),
     cst_While_parsing_a_piece_of_M$8=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, an unexpected token was encountered."),
     cst_Micheline_parser_error_une$0=
      caml_string_of_jsbytes("Micheline parser error: unexpected token"),
     cst_micheline_parse_error_unex$0=
      caml_string_of_jsbytes("micheline.parse_error.unexpected_token"),
     cst_token$1=caml_string_of_jsbytes("token"),
     cst_location$6=caml_string_of_jsbytes("location"),
     cst_While_parsing_a_piece_of_M$9=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, an extra semi colon or parenthesis was encountered."),
     cst_Micheline_parser_error_ext=
      caml_string_of_jsbytes("Micheline parser error: extra token"),
     cst_micheline_parse_error_extr=
      caml_string_of_jsbytes("micheline.parse_error.extra_token"),
     cst_expression$1=caml_string_of_jsbytes("expression"),
     cst_While_parsing_a_piece_of_M$10=
      caml_string_of_jsbytes
       ("While parsing a piece of Micheline source, an expression was not aligned with its siblings of the same mother application or sequence."),
     cst_Micheline_parser_error_mis$0=
      caml_string_of_jsbytes("Micheline parser error: misaligned node"),
     cst_micheline_parse_error_misa=
      caml_string_of_jsbytes("micheline.parse_error.misaligned_node"),
     cst_Tried_to_interpret_an_empt=
      caml_string_of_jsbytes
       ("Tried to interpret an empty piece or Micheline source as a single expression."),
     cst_Micheline_parser_error_emp=
      caml_string_of_jsbytes("Micheline parser error: empty_expression"),
     cst_micheline_parse_error_empt=
      caml_string_of_jsbytes("micheline.parse_error.empty_expression"),
     Stdlib_list=global_data.Stdlib__list,
     Data_encoding=global_data.Data_encoding,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib=global_data.Stdlib,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_format=global_data.Stdlib__format,
     Z=global_data.Z,
     Hex=global_data.Hex,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Assert_failure=global_data.Assert_failure,
     Tezos_error_monad_Error_monad=global_data.Tezos_error_monad__Error_monad,
     Uutf=global_data.Uutf,
     Stdlib_uchar=global_data.Stdlib__uchar,
     Tezos_micheline=[0];
    caml_register_global(258,Tezos_micheline,"Tezos_micheline");
    var
     canonical_location_encoding=
      caml_call4
       (Data_encoding[67],
        cst_micheline_location,
        [0,
         caml_string_of_jsbytes
          ("Canonical location in a Micheline expression")],
        [0,
         caml_string_of_jsbytes
          ("The location of a node in a Micheline expression tree in prefix order, with zero being the root and adding one for every basic node, sequence and primitive application.")],
        Data_encoding[10]),
     _a_=[0,10],
     _b_=[0,9],
     _c_=[0,8],
     _d_=[0,7],
     _e_=[0,6],
     _f_=[0,5],
     _g_=[0,4],
     _h_=[0,3],
     _i_=[0,2],
     _j_=[0,1],
     _k_=[0,0],
     _l_=[0,919245630],
     _m_=[0,919245630],
     _P_=
      [0,
       [11,
        caml_string_of_jsbytes(" ;"),
        [17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(" ;@ ")],
     _A_=
      [0,
       [2,0,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,0]]],
       caml_string_of_jsbytes("%s@ %a")],
     _B_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _C_=
      [0,
       [15,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,0]]],
       caml_string_of_jsbytes("%a@ %a")],
     _D_=
      [0,
       [11,
        caml_string_of_jsbytes("0x"),
        [15,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,0]]]],
       caml_string_of_jsbytes("0x%a@ %a")],
     _E_=
      [0,
       [11,caml_string_of_jsbytes("0x"),[15,0]],
       caml_string_of_jsbytes("0x%a")],
     _F_=
      [0,
       [2,
        0,
        [12,
         32,
         [18,
          [1,
           [0,
            [11,caml_string_of_jsbytes("<h>"),0],
            caml_string_of_jsbytes("<h>")]],
          [15,[17,0,0]]]]],
       caml_string_of_jsbytes("%s @[<h>%a@]")],
     _K_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _M_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<h>"),0],
          caml_string_of_jsbytes("<h>")]],
        [2,0,[12,32,[15,[17,0,0]]]]],
       caml_string_of_jsbytes("@[<h>%s %a@]")],
     _L_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,
         caml_string_of_jsbytes("/* "),
         [2,0,[11,caml_string_of_jsbytes(" */"),0]]]],
       caml_string_of_jsbytes("@ /* %s */")],
     _G_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _J_=
      [0,
       [2,
        0,
        [12,
         32,
         [18,
          [1,
           [0,
            [11,caml_string_of_jsbytes("<v 0>"),0],
            caml_string_of_jsbytes("<v 0>")]],
          [15,[17,0,0]]]]],
       caml_string_of_jsbytes("%s @[<v 0>%a@]")],
     _I_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v 2>"),0],
          caml_string_of_jsbytes("<v 2>")]],
        [2,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]],
       caml_string_of_jsbytes("@[<v 2>%s@,%a@]")],
     _H_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,0]],
       caml_string_of_jsbytes("@ %a")],
     _T_=[0,[11,caml_string_of_jsbytes("{}"),0],caml_string_of_jsbytes("{}")],
     _S_=
      [0,
       [11,
        caml_string_of_jsbytes("{ "),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<h 0>"),0],
           caml_string_of_jsbytes("<h 0>")]],
         0]],
       caml_string_of_jsbytes("{ @[<h 0>")],
     _N_=
      [0,
       [11,
        caml_string_of_jsbytes("{ "),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<v 0>"),0],
           caml_string_of_jsbytes("<v 0>")]],
         0]],
       caml_string_of_jsbytes("{ @[<v 0>")],
     _O_=
      [0,
       [15,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes("%a@ ")],
     _R_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Q_=
      [0,
       [17,0,[11,caml_string_of_jsbytes(" }"),0]],
       caml_string_of_jsbytes("@] }")],
     _U_=[0,[12,40,[15,[12,41,0]]],caml_string_of_jsbytes("(%a)")],
     _V_=[0,[10,0],caml_string_of_jsbytes("%!")],
     _x_=[0,0,0],
     _s_=
      [0,[11,caml_string_of_jsbytes("\\b"),0],caml_string_of_jsbytes("\\b")],
     _t_=
      [0,[11,caml_string_of_jsbytes("\\t"),0],caml_string_of_jsbytes("\\t")],
     _u_=
      [0,[11,caml_string_of_jsbytes("\\n"),0],caml_string_of_jsbytes("\\n")],
     _v_=
      [0,[11,caml_string_of_jsbytes("\\r"),0],caml_string_of_jsbytes("\\r")],
     _q_=
      [0,[11,caml_string_of_jsbytes("\\\\"),0],caml_string_of_jsbytes("\\\\")],
     _p_=
      [0,[11,caml_string_of_jsbytes('\\"'),0],caml_string_of_jsbytes('\\"')],
     _r_=[0,[0,0],caml_string_of_jsbytes("%c")],
     _o_=[0,[12,34,0],caml_string_of_jsbytes('"')],
     _w_=[0,[12,34,0],caml_string_of_jsbytes('"')],
     _n_=
      [0,
       [11,
        caml_string_of_jsbytes("/* "),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<h>"),0],
           caml_string_of_jsbytes("<h>")]],
         [15,[17,0,[11,caml_string_of_jsbytes(" */"),0]]]]],
       caml_string_of_jsbytes("/* @[<h>%a@] */")],
     _bf_=[0,0],
     _be_=[0,1],
     _bg_=[0,0],
     _bi_=[0,0],
     _ba_=
      [0,
       caml_string_of_jsbytes("src/lib_micheline/micheline_parser.ml"),
       541,
       6],
     _bd_=[0,0],
     _bb_=[0,0],
     _bc_=[0,0],
     _bh_=[0,0],
     _c1_=
      [0,
       [11,caml_string_of_jsbytes("empty expression"),0],
       caml_string_of_jsbytes("empty expression")],
     _cZ_=[0,0],
     _cV_=
      [0,
       [15,[11,caml_string_of_jsbytes(", misaligned expression"),0]],
       caml_string_of_jsbytes("%a, misaligned expression")],
     _cP_=
      [0,
       [15,[11,caml_string_of_jsbytes(", extra "),[15,0]]],
       caml_string_of_jsbytes("%a, extra %a")],
     _cI_=
      [0,
       [15,[11,caml_string_of_jsbytes(", unexpected "),[15,0]]],
       caml_string_of_jsbytes("%a, unexpected %a")],
     _cB_=
      [0,
       [15,[11,caml_string_of_jsbytes(", unclosed "),[15,0]]],
       caml_string_of_jsbytes("%a, unclosed %a")],
     _cs_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(", annotation exceeded maximum length ("),
         [4,0,0,0,[11,caml_string_of_jsbytes(" chars)"),0]]]],
       caml_string_of_jsbytes
        ("%a, annotation exceeded maximum length (%d chars)")],
     _cm_=
      [0,
       [15,[11,caml_string_of_jsbytes(", unterminated comment"),0]],
       caml_string_of_jsbytes("%a, unterminated comment")],
     _cg_=
      [0,
       [15,[11,caml_string_of_jsbytes(", odd_lengthed bytes"),0]],
       caml_string_of_jsbytes("%a, odd_lengthed bytes")],
     _ca_=
      [0,
       [15,[11,caml_string_of_jsbytes(", unterminated integer"),0]],
       caml_string_of_jsbytes("%a, unterminated integer")],
     _b6_=
      [0,
       [15,[11,caml_string_of_jsbytes(", unterminated string"),0]],
       caml_string_of_jsbytes("%a, unterminated string")],
     _b0_=
      [0,
       [15,[11,caml_string_of_jsbytes(", missing break after number"),0]],
       caml_string_of_jsbytes("%a, missing break after number")],
     _bU_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(', undefined escape sequence "'),
         [2,0,[12,34,0]]]],
       caml_string_of_jsbytes('%a, undefined escape sequence "%s"')],
     _bN_=
      [0,
       [15,[11,caml_string_of_jsbytes(", unexpected character "),[2,0,0]]],
       caml_string_of_jsbytes("%a, unexpected character %s")],
     _bG_=
      [0,
       [15,[11,caml_string_of_jsbytes(", invalid UTF-8 sequence "),[3,0,0]]],
       caml_string_of_jsbytes("%a, invalid UTF-8 sequence %S")],
     _by_=
      [0,
       [11,
        caml_string_of_jsbytes("At line "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" character "),[4,0,0,0,0]]]],
       caml_string_of_jsbytes("At line %d character %d")],
     _bz_=
      [0,
       [11,
        caml_string_of_jsbytes("At line "),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" characters "),
          [4,0,0,0,[11,caml_string_of_jsbytes(" to "),[4,0,0,0,0]]]]]],
       caml_string_of_jsbytes("At line %d characters %d to %d")],
     _bA_=
      [0,
       [11,
        caml_string_of_jsbytes("From line "),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" character "),
          [4,
           0,
           0,
           0,
           [11,
            caml_string_of_jsbytes(" to line "),
            [4,0,0,0,[11,caml_string_of_jsbytes(" character "),[4,0,0,0,0]]]]]]]],
       caml_string_of_jsbytes
        ("From line %d character %d to line %d character %d")],
     _bp_=
      [0,
       [11,caml_string_of_jsbytes("semi colon"),0],
       caml_string_of_jsbytes("semi colon")],
     _bs_=
      [0,
       [11,caml_string_of_jsbytes("string constant"),0],
       caml_string_of_jsbytes("string constant")],
     _bt_=
      [0,
       [11,caml_string_of_jsbytes("bytes constant"),0],
       caml_string_of_jsbytes("bytes constant")],
     _bu_=
      [0,
       [11,caml_string_of_jsbytes("integer constant"),0],
       caml_string_of_jsbytes("integer constant")],
     _bv_=
      [0,
       [11,caml_string_of_jsbytes("identifier"),0],
       caml_string_of_jsbytes("identifier")],
     _bw_=
      [0,
       [11,caml_string_of_jsbytes("annotation"),0],
       caml_string_of_jsbytes("annotation")],
     _bq_=
      [0,
       [11,caml_string_of_jsbytes("parenthesis"),0],
       caml_string_of_jsbytes("parenthesis")],
     _br_=
      [0,
       [11,caml_string_of_jsbytes("curly brace"),0],
       caml_string_of_jsbytes("curly brace")],
     _bx_=
      [0,
       [11,caml_string_of_jsbytes("comment"),0],
       caml_string_of_jsbytes("comment")],
     _bo_=
      [0,
       [11,
        caml_string_of_jsbytes("At line "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" character "),[4,0,0,0,0]]]],
       caml_string_of_jsbytes("At line %d character %d")],
     _bn_=[0,[0,0],0],
     _bm_=[0,[1,0],0],
     _bl_=[0,[1,0],0],
     _bj_=[0,[1,0],0],
     _bk_=
      [0,
       caml_string_of_jsbytes("src/lib_micheline/micheline_parser.ml"),
       776,
       6],
     _a8_=
      [0,
       caml_string_of_jsbytes("src/lib_micheline/micheline_parser.ml"),
       497,
       6],
     _a9_=
      [0,
       caml_string_of_jsbytes("src/lib_micheline/micheline_parser.ml"),
       493,
       6],
     _a__=
      [0,
       caml_string_of_jsbytes("src/lib_micheline/micheline_parser.ml"),
       495,
       6],
     _a$_=
      [0,
       caml_string_of_jsbytes("src/lib_micheline/micheline_parser.ml"),
       491,
       6],
     _a7_=
      [0,
       caml_string_of_jsbytes("src/lib_micheline/micheline_parser.ml"),
       484,
       30],
     _a3_=
      [0,
       caml_string_of_jsbytes("src/lib_micheline/micheline_parser.ml"),
       176,
       12],
     _a6_=[2,caml_string_of_jsbytes("0")],
     _a5_=[2,caml_string_of_jsbytes("0")],
     _a4_=[2,caml_string_of_jsbytes("0")],
     _a2_=[0,684370880],
     _an_=[0,6],
     _at_=[0,5],
     _ax_=
      [0,
       [0,caml_string_of_jsbytes("("),1],
       [0,
        [0,caml_string_of_jsbytes(")"),2],
        [0,
         [0,caml_string_of_jsbytes("{"),3],
         [0,
          [0,caml_string_of_jsbytes("}"),4],
          [0,[0,caml_string_of_jsbytes(";"),0],0]]]]],
     _aB_=[0,4],
     _aI_=[0,3],
     _aO_=[0,2],
     _aU_=[0,1],
     _a0_=[0,0],
     _cu_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("While parsing a piece of Micheline source, an annotation exceeded the maximum length ("),
        [4,0,0,0,[11,caml_string_of_jsbytes(")."),0]]],
       caml_string_of_jsbytes
        ("While parsing a piece of Micheline source, an annotation exceeded the maximum length (%d).")];
    function location(param)
     {switch(param[0])
       {case 0:var loc=param[1];return loc;
        case 1:var loc$0=param[1];return loc$0;
        case 2:var loc$1=param[1];return loc$1;
        case 3:var loc$2=param[1];return loc$2;
        default:var loc$3=param[1];return loc$3}}
    function annotations(param)
     {switch(param[0])
       {case 0:return 0;
        case 1:return 0;
        case 2:return 0;
        case 3:var annots=param[4];return annots;
        default:return 0}}
    function root(param){var expr=param[1];return expr}
    function strip_locations(root)
     {var id=[0,-1];
      function strip_locations(l)
       {id[1]++;
        var _hn_=id[1];
        switch(l[0])
         {case 0:var v=l[2];return [0,_hn_,v];
          case 1:var v$0=l[2];return [1,_hn_,v$0];
          case 2:var v$1=l[2];return [2,_hn_,v$1];
          case 3:
           var annots=l[4],seq=l[3],name=l[2];
           return [3,
                   _hn_,
                   name,
                   caml_call2(Stdlib_list[17],strip_locations,seq),
                   annots];
          default:
           var seq$0=l[2];
           return [4,_hn_,caml_call2(Stdlib_list[17],strip_locations,seq$0)]}}
      return [0,strip_locations(root)]}
    function extract_locations(root)
     {var id=[0,-1],loc_table=[0,0];
      function strip_locations(l)
       {id[1]++;
        var _hm_=id[1];
        switch(l[0])
         {case 0:
           var v=l[2],loc=l[1];
           loc_table[1] = [0,[0,_hm_,loc],loc_table[1]];
           return [0,_hm_,v];
          case 1:
           var v$0=l[2],loc$0=l[1];
           loc_table[1] = [0,[0,_hm_,loc$0],loc_table[1]];
           return [1,_hm_,v$0];
          case 2:
           var v$1=l[2],loc$1=l[1];
           loc_table[1] = [0,[0,_hm_,loc$1],loc_table[1]];
           return [2,_hm_,v$1];
          case 3:
           var annots=l[4],seq=l[3],name=l[2],loc$2=l[1];
           loc_table[1] = [0,[0,_hm_,loc$2],loc_table[1]];
           return [3,
                   _hm_,
                   name,
                   caml_call2(Stdlib_list[17],strip_locations,seq),
                   annots];
          default:
           var seq$0=l[2],loc$3=l[1];
           loc_table[1] = [0,[0,_hm_,loc$3],loc_table[1]];
           return [4,_hm_,caml_call2(Stdlib_list[17],strip_locations,seq$0)]}}
      var stripped=strip_locations(root);
      return [0,[0,stripped],caml_call1(Stdlib_list[9],loc_table[1])]}
    function inject_locations(lookup,param)
     {var root=param[1];
      function inject_locations(l)
       {switch(l[0])
         {case 0:var v=l[2],loc=l[1];return [0,caml_call1(lookup,loc),v];
          case 1:
           var v$0=l[2],loc$0=l[1];return [1,caml_call1(lookup,loc$0),v$0];
          case 2:
           var v$1=l[2],loc$1=l[1];return [2,caml_call1(lookup,loc$1),v$1];
          case 3:
           var
            annots=l[4],
            seq=l[3],
            name=l[2],
            loc$2=l[1],
            _hk_=caml_call2(Stdlib_list[17],inject_locations,seq);
           return [3,caml_call1(lookup,loc$2),name,_hk_,annots];
          default:
           var
            seq$0=l[2],
            loc$3=l[1],
            _hl_=caml_call2(Stdlib_list[17],inject_locations,seq$0);
           return [4,caml_call1(lookup,loc$3),_hl_]}}
      return inject_locations(root)}
    function map(f,param)
     {var expr=param[1];
      function map_node(f,node)
       {switch(node[0])
         {case 3:
           var
            annots=node[4],
            seq=node[3],
            name=node[2],
            loc=node[1],
            _hf_=function(_hj_){return map_node(f,_hj_)},
            _hg_=caml_call2(Stdlib_list[17],_hf_,seq);
           return [3,loc,caml_call1(f,name),_hg_,annots];
          case 4:
           var
            seq$0=node[2],
            loc$0=node[1],
            _hh_=function(_hi_){return map_node(f,_hi_)};
           return [4,loc$0,caml_call2(Stdlib_list[17],_hh_,seq$0)];
          default:return node}}
      return [0,map_node(f,expr)]}
    function map_node(fl,fp,param)
     {switch(param[0])
       {case 0:var v=param[2],loc=param[1];return [0,caml_call1(fl,loc),v];
        case 1:
         var v$0=param[2],loc$0=param[1];return [1,caml_call1(fl,loc$0),v$0];
        case 2:
         var v$1=param[2],loc$1=param[1];return [2,caml_call1(fl,loc$1),v$1];
        case 3:
         var
          annots=param[4],
          seq=param[3],
          name=param[2],
          loc$2=param[1],
          _g__=function(_hd_){return map_node(fl,fp,_hd_)},
          _g$_=caml_call2(Stdlib_list[17],_g__,seq),
          _ha_=caml_call1(fp,name);
         return [3,caml_call1(fl,loc$2),_ha_,_g$_,annots];
        default:
         var
          seq$0=param[2],
          loc$3=param[1],
          _hb_=function(_he_){return map_node(fl,fp,_he_)},
          _hc_=caml_call2(Stdlib_list[17],_hb_,seq$0);
         return [4,caml_call1(fl,loc$3),_hc_]}}
    function internal_canonical_encoding(semantics,variant,prim_encoding)
     {var
       _fL_=caml_call4(Data_encoding[27],0,0,cst_int,Data_encoding[14]),
       int_encoding=caml_call1(Data_encoding[31],_fL_),
       _fM_=caml_call4(Data_encoding[27],0,0,cst_string,Data_encoding[19]),
       string_encoding=caml_call1(Data_encoding[31],_fM_),
       _fN_=caml_call4(Data_encoding[27],0,0,cst_bytes,Data_encoding[20]),
       bytes_encoding=caml_call1(Data_encoding[31],_fN_);
      function int_encoding$0(tag)
       {function _g8_(v){return [0,0,v]}
        function _g9_(param)
         {if(0 === param[0]){var v=param[2];return [0,v]}return 0}
        return caml_call6
                (Data_encoding[53],cst_Int,0,tag,int_encoding,_g9_,_g8_)}
      function string_encoding$0(tag)
       {function _g6_(v){return [1,0,v]}
        function _g7_(param)
         {if(1 === param[0]){var v=param[2];return [0,v]}return 0}
        return caml_call6
                (Data_encoding[53],cst_String,0,tag,string_encoding,_g7_,_g6_)}
      function bytes_encoding$0(tag)
       {function _g4_(v){return [2,0,v]}
        function _g5_(param)
         {if(2 === param[0]){var v=param[2];return [0,v]}return 0}
        return caml_call6
                (Data_encoding[53],cst_Bytes,0,tag,bytes_encoding,_g5_,_g4_)}
      function seq_encoding(tag,expr_encoding)
       {function _g1_(args){return [4,0,args]}
        function _g2_(param)
         {if(4 === param[0]){var v=param[2];return [0,v]}return 0}
        var _g3_=caml_call2(Data_encoding[24],0,expr_encoding);
        return caml_call6(Data_encoding[53],cst_Sequence,0,tag,_g3_,_g2_,_g1_)}
      function split(s)
       {if(runtime.caml_string_equal(s,cst) && 0 !== semantics)return 0;
        var annots=caml_call2(Stdlib_string[35],32,s);
        function _gZ_(a)
         {var _g0_=255 < caml_ml_string_length(a)?1:0;
          return _g0_?caml_call1(Stdlib[2],cst_Oversized_annotation):_g0_}
        caml_call2(Stdlib_list[15],_gZ_,annots);
        if
         (runtime.caml_string_notequal
           (caml_call2(Stdlib_string[7],cst$0,annots),s))
         caml_call1(Stdlib[2],cst_Invalid_annotation_string_);
        return annots}
      var
       _fO_=Data_encoding[19],
       _fP_=caml_call1(Stdlib_string[7],cst$1),
       _fQ_=caml_call4(Data_encoding[25],_fP_,split,0,_fO_),
       _fR_=caml_call1(Data_encoding[61][1],255),
       _fS_=caml_call2(Data_encoding[24],0,_fR_),
       annots_encoding=caml_call2(Data_encoding[65],_fS_,_fQ_);
      function application_encoding(tag,expr_encoding)
       {function _gS_(param)
         {var annots=param[3],args=param[2],prim=param[1];
          return [3,0,prim,args,annots]}
        function _gT_(param)
         {if(3 === param[0])
           {var annots=param[4],args=param[3],prim=param[2];
            return [0,[0,prim,args,annots]]}
          return 0}
        var
         _gU_=caml_call5(Data_encoding[30],0,0,cst_annots,annots_encoding,0),
         _gV_=caml_call2(Data_encoding[24],0,expr_encoding),
         _gW_=caml_call5(Data_encoding[30],0,0,cst_args,_gV_,0),
         _gX_=caml_call4(Data_encoding[27],0,0,cst_prim,prim_encoding),
         _gY_=caml_call3(Data_encoding[33],_gX_,_gW_,_gU_);
        return caml_call6
                (Data_encoding[53],
                 cst_Generic_prim_any_number_of,
                 0,
                 tag,
                 _gY_,
                 _gT_,
                 _gS_)}
      function _fT_(expr_encoding)
       {var
         _fZ_=[0,bytes_encoding$0(_a_),0],
         _f0_=[0,application_encoding(_b_,expr_encoding),_fZ_];
        function _f1_(param)
         {var annots=param[4],arg2=param[3],arg1=param[2],prim=param[1];
          return [3,0,prim,[0,arg1,[0,arg2,0]],annots]}
        function _f2_(param)
         {if(3 === param[0])
           {var _gQ_=param[3];
            if(_gQ_)
             {var _gR_=_gQ_[2];
              if(_gR_ && ! _gR_[2])
               {var annots=param[4],arg2=_gR_[1],arg1=_gQ_[1],prim=param[2];
                return [0,[0,prim,arg1,arg2,annots]]}}}
          return 0}
        var
         _f3_=caml_call4(Data_encoding[27],0,0,cst_annots$0,annots_encoding),
         _f4_=caml_call4(Data_encoding[27],0,0,cst_arg2,expr_encoding),
         _f5_=caml_call4(Data_encoding[27],0,0,cst_arg1,expr_encoding),
         _f6_=caml_call4(Data_encoding[27],0,0,cst_prim$0,prim_encoding),
         _f7_=caml_call4(Data_encoding[34],_f6_,_f5_,_f4_,_f3_),
         _f8_=
          [0,
           caml_call6
            (Data_encoding[53],cst_Prim_2_args_annot,0,_c_,_f7_,_f2_,_f1_),
           _f0_];
        function _f9_(param)
         {var arg2=param[3],arg1=param[2],prim=param[1];
          return [3,0,prim,[0,arg1,[0,arg2,0]],0]}
        function _f__(param)
         {if(3 === param[0])
           {var _gO_=param[3];
            if(_gO_)
             {var _gP_=_gO_[2];
              if(_gP_ && ! _gP_[2] && ! param[4])
               {var arg2=_gP_[1],arg1=_gO_[1],prim=param[2];
                return [0,[0,prim,arg1,arg2]]}}}
          return 0}
        var
         _f$_=caml_call4(Data_encoding[27],0,0,cst_arg2$0,expr_encoding),
         _ga_=caml_call4(Data_encoding[27],0,0,cst_arg1$0,expr_encoding),
         _gb_=caml_call4(Data_encoding[27],0,0,cst_prim$1,prim_encoding),
         _gc_=caml_call3(Data_encoding[33],_gb_,_ga_,_f$_),
         _gd_=
          [0,
           caml_call6
            (Data_encoding[53],cst_Prim_2_args_no_annot,0,_d_,_gc_,_f__,_f9_),
           _f8_];
        function _ge_(param)
         {var annots=param[3],arg=param[2],prim=param[1];
          return [3,0,prim,[0,arg,0],annots]}
        function _gf_(param)
         {if(3 === param[0])
           {var _gN_=param[3];
            if(_gN_ && ! _gN_[2])
             {var annots=param[4],arg=_gN_[1],prim=param[2];
              return [0,[0,prim,arg,annots]]}}
          return 0}
        var
         _gg_=caml_call4(Data_encoding[27],0,0,cst_annots$1,annots_encoding),
         _gh_=caml_call4(Data_encoding[27],0,0,cst_arg,expr_encoding),
         _gi_=caml_call4(Data_encoding[27],0,0,cst_prim$2,prim_encoding),
         _gj_=caml_call3(Data_encoding[33],_gi_,_gh_,_gg_),
         _gk_=
          [0,
           caml_call6
            (Data_encoding[53],cst_Prim_1_arg_annot,0,_e_,_gj_,_gf_,_ge_),
           _gd_];
        function _gl_(param)
         {var arg=param[2],prim=param[1];return [3,0,prim,[0,arg,0],0]}
        function _gm_(param)
         {if(3 === param[0])
           {var _gM_=param[3];
            if(_gM_ && ! _gM_[2] && ! param[4])
             {var arg=_gM_[1],v=param[2];return [0,[0,v,arg]]}}
          return 0}
        var
         _gn_=caml_call4(Data_encoding[27],0,0,cst_arg$0,expr_encoding),
         _go_=caml_call4(Data_encoding[27],0,0,cst_prim$3,prim_encoding),
         _gp_=caml_call2(Data_encoding[32],_go_,_gn_),
         _gq_=
          [0,
           caml_call6
            (Data_encoding[53],cst_Prim_1_arg_no_annot,0,_f_,_gp_,_gm_,_gl_),
           _gk_];
        function _gr_(param)
         {var annots=param[2],prim=param[1];return [3,0,prim,0,annots]}
        function _gs_(param)
         {if(3 === param[0] && ! param[3])
           {var annots=param[4],v=param[2];return [0,[0,v,annots]]}
          return 0}
        var
         _gt_=caml_call4(Data_encoding[27],0,0,cst_annots$2,annots_encoding),
         _gu_=caml_call4(Data_encoding[27],0,0,cst_prim$4,prim_encoding),
         _gv_=caml_call2(Data_encoding[32],_gu_,_gt_),
         _gw_=
          [0,
           caml_call6
            (Data_encoding[53],cst_Prim_no_args_annot,0,_g_,_gv_,_gs_,_gr_),
           _gq_];
        function _gx_(v){return [3,0,v,0,0]}
        function _gy_(param)
         {if(3 === param[0] && ! param[3] && ! param[4])
           {var v=param[2];return [0,v]}
          return 0}
        var
         _gz_=caml_call4(Data_encoding[27],0,0,cst_prim$5,prim_encoding),
         _gA_=caml_call1(Data_encoding[31],_gz_),
         _gB_=
          [0,
           caml_call6
            (Data_encoding[53],cst_Prim_no_args_annot$0,0,_h_,_gA_,_gy_,_gx_),
           _gw_],
         _gC_=[0,seq_encoding(_i_,expr_encoding),_gB_],
         _gD_=[0,string_encoding$0(_j_),_gC_],
         _gE_=[0,int_encoding$0(_k_),_gD_],
         _gF_=caml_call2(Data_encoding[54],_l_,_gE_),
         _gG_=[0,application_encoding(0,expr_encoding),0],
         _gH_=[0,seq_encoding(0,expr_encoding),_gG_],
         _gI_=[0,bytes_encoding$0(0),_gH_],
         _gJ_=[0,string_encoding$0(0),_gI_],
         _gK_=[0,int_encoding$0(0),_gJ_],
         _gL_=caml_call2(Data_encoding[54],_m_,_gK_);
        return caml_call2(Data_encoding[65],_gL_,_gF_)}
      var
       _fU_=caml_call2(Stdlib[28],variant,cst_expression),
       _fV_=caml_call2(Stdlib[28],cst_micheline,_fU_),
       node_encoding=caml_call4(Data_encoding[66],_fV_,0,0,_fT_),
       _fW_=0;
      function _fX_(node){return strip_locations(node)}
      function _fY_(param){var node=param[1];return node}
      return caml_call4(Data_encoding[25],_fY_,_fX_,_fW_,node_encoding)}
    function canonical_encoding(variant,prim_encoding)
     {return internal_canonical_encoding(1,variant,prim_encoding)}
    function canonical_encoding_v1(variant,prim_encoding)
     {return internal_canonical_encoding(1,variant,prim_encoding)}
    function canonical_encoding_v0(variant,prim_encoding)
     {return internal_canonical_encoding(0,variant,prim_encoding)}
    function table_encoding(variant,location_encoding,prim_encoding)
     {var
       _fD_=caml_call2(Data_encoding[24],0,location_encoding),
       _fE_=caml_call4(Data_encoding[27],0,0,cst_locations,_fD_),
       _fF_=canonical_encoding(variant,prim_encoding),
       _fG_=caml_call4(Data_encoding[27],0,0,cst_expression$0,_fF_),
       _fH_=caml_call2(Data_encoding[32],_fG_,_fE_),
       _fI_=0;
      function _fJ_(param)
       {var
         table=param[2],
         canon=param[1],
         table$0=caml_call1(Stdlib_array[12],table);
        return inject_locations
                (function(i)
                  {return runtime.caml_check_bound(table$0,i)[1 + i]},
                 canon)}
      function _fK_(node)
       {var
         match=extract_locations(node),
         assoc=match[2],
         canon=match[1],
         match$0=caml_call1(Stdlib_list[49],assoc),
         table=match$0[2];
        return [0,canon,table]}
      return caml_call4(Data_encoding[25],_fK_,_fJ_,_fI_,_fH_)}
    function erased_encoding(variant,default_location,prim_encoding)
     {var _fz_=canonical_encoding(variant,prim_encoding),_fA_=0;
      function _fB_(canon)
       {return inject_locations
                (function(param){return default_location},canon)}
      function _fC_(node){return strip_locations(node)}
      return caml_call4(Data_encoding[25],_fC_,_fB_,_fA_,_fz_)}
    var
     Tezos_micheline_Micheline=
      [0,
       table_encoding,
       erased_encoding,
       location,
       annotations,
       canonical_location_encoding,
       canonical_encoding,
       canonical_encoding_v0,
       canonical_encoding_v1,
       strip_locations,
       root,
       extract_locations,
       inject_locations,
       map,
       map_node];
    caml_register_global
     (264,Tezos_micheline_Micheline,"Tezos_micheline__Micheline");
    function printable(opt,map_prim,expr)
     {if(opt)
       var sth=opt[1],comment=sth;
      else
       var comment=function(param){return 0};
      function map_loc(loc){return [0,caml_call1(comment,loc)]}
      return map_node(map_loc,map_prim,expr[1])}
    function print_comment(ppf,text)
     {return caml_call4(Stdlib_format[123],ppf,_n_,Stdlib_format[120],text)}
    function print_string(ppf,text)
     {caml_call2(Stdlib_format[123],ppf,_o_);
      function _fy_(c)
       {if(34 === c)return caml_call2(Stdlib_format[123],ppf,_p_);
        if(92 === c)return caml_call2(Stdlib_format[123],ppf,_q_);
        if(! (14 <= c))
         switch(c)
          {case 8:return caml_call2(Stdlib_format[123],ppf,_s_);
           case 9:return caml_call2(Stdlib_format[123],ppf,_t_);
           case 10:return caml_call2(Stdlib_format[123],ppf,_u_);
           case 13:return caml_call2(Stdlib_format[123],ppf,_v_)
           }
        return caml_call3(Stdlib_format[123],ppf,_r_,c)}
      caml_call2(Stdlib_string[8],_fy_,text);
      return caml_call2(Stdlib_format[123],ppf,_w_)}
    var
     print_annotations=
      caml_call2(Stdlib_format[119],[0,Stdlib_format[25]],Stdlib_format[13]);
    function preformat(root)
     {function preformat_loc(param)
       {var _fx_=param[1];
        if(_fx_)
         {var text=_fx_[1];
          return [0,
                  caml_call2(Stdlib_string[22],text,10),
                  caml_ml_string_length(text) + 1 | 0]}
        return _x_}
      function preformat_expr(param)
       {switch(param[0])
         {case 0:
           var
            value=param[2],
            loc=param[1],
            match=preformat_loc(loc),
            csz=match[2],
            cml=match[1];
           return [0,
                   [0,
                    cml,
                    caml_ml_string_length(caml_call1(Z[13],value)) + csz | 0,
                    loc],
                   value];
          case 1:
           var
            value$0=param[2],
            loc$0=param[1],
            match$0=preformat_loc(loc$0),
            csz$0=match$0[2],
            cml$0=match$0[1];
           return [1,
                   [0,cml$0,caml_ml_string_length(value$0) + csz$0 | 0,loc$0],
                   value$0];
          case 2:
           var
            value$1=param[2],
            loc$1=param[1],
            match$1=preformat_loc(loc$1),
            csz$1=match$1[2],
            cml$1=match$1[1];
           return [2,
                   [0,
                    cml$1,
                    ((runtime.caml_ml_bytes_length(value$1) * 2 | 0) + 2 | 0)
                    +
                    csz$1
                    |
                    0,
                    loc$1],
                   value$1];
          case 3:
           var
            annots=param[4],
            items=param[3],
            name=param[2],
            loc$2=param[1],
            match$2=preformat_loc(loc$2),
            csz$2=match$2[2],
            cml$2=match$2[1],
            asz=
             annots
              ?caml_ml_string_length
                (caml_call2(Stdlib_string[7],cst$2,annots))
               +
               2
               |
               0
              :0,
            items$0=caml_call2(Stdlib_list[17],preformat_expr,items),
            _fr_=[0,cml$2,(caml_ml_string_length(name) + csz$2 | 0) + asz | 0],
            _fs_=
             function(param,e)
              {var
                tsz=param[2],
                tml=param[1],
                match=location(e),
                sz=match[2],
                ml=match[1],
                _fv_=(tsz + 1 | 0) + sz | 0,
                tml$0=tml || ml;
               return [0,tml$0,_fv_]},
            match$3=caml_call3(Stdlib_list[22],_fs_,_fr_,items$0),
            sz=match$3[2],
            ml=match$3[1];
           return [3,[0,ml,sz,loc$2],name,items$0,annots];
          default:
           var
            items$1=param[2],
            loc$3=param[1],
            match$4=preformat_loc(loc$3),
            csz$3=match$4[2],
            cml$3=match$4[1],
            items$2=caml_call2(Stdlib_list[17],preformat_expr,items$1),
            _ft_=[0,cml$3,4 + csz$3 | 0],
            _fu_=
             function(param,e)
              {var
                tsz=param[2],
                tml=param[1],
                match=location(e),
                sz=match[2],
                ml=match[1],
                _fw_=(tsz + 3 | 0) + sz | 0,
                tml$0=tml || ml;
               return [0,tml$0,_fw_]},
            match$5=caml_call3(Stdlib_list[22],_fu_,_ft_,items$2),
            sz$0=match$5[2],
            ml$0=match$5[1];
           return [4,[0,ml$0,sz$0,loc$3],items$2]}}
      return preformat_expr(root)}
    function _y_(ppf,param)
     {switch(param[0])
       {case 0:
         var value=param[2],match=param[1][3],comment=match[1];
         if(comment)
          {var comment$0=comment[1],_fd_=caml_call1(Z[13],value);
           return caml_call5
                   (Stdlib_format[123],ppf,_A_,_fd_,print_comment,comment$0)}
         var _fe_=caml_call1(Z[13],value);
         return caml_call3(Stdlib_format[123],ppf,_B_,_fe_);
        case 1:
         var value$0=param[2],match$0=param[1][3],comment$1=match$0[1];
         if(comment$1)
          {var comment$2=comment$1[1];
           return caml_call6
                   (Stdlib_format[123],
                    ppf,
                    _C_,
                    print_string,
                    value$0,
                    print_comment,
                    comment$2)}
         return print_string(ppf,value$0);
        case 2:
         var value$1=param[2],match$1=param[1][3],comment$3=match$1[1];
         if(comment$3)
          {var comment$4=comment$3[1],_ff_=caml_call2(Hex[5],0,value$1);
           return caml_call6
                   (Stdlib_format[123],
                    ppf,
                    _D_,
                    Hex[13],
                    _ff_,
                    print_comment,
                    comment$4)}
         var _fg_=caml_call2(Hex[5],0,value$1);
         return caml_call4(Stdlib_format[123],ppf,_E_,Hex[13],_fg_);
        case 3:
         var
          annot=param[4],
          args=param[3],
          name=param[2],
          _fh_=param[1],
          match$2=_fh_[3],
          comment$5=match$2[1],
          s=_fh_[2],
          ml=_fh_[1],
          name$0=
           annot
            ?caml_call4(Stdlib_format[127],_F_,name,print_annotations,annot)
            :name;
         if(! ml && ! (80 <= s))
          {if(0 === args)
            caml_call3(Stdlib_format[123],ppf,_K_,name$0);
           else
            {var
              _fk_=
               caml_call2(Stdlib_format[119],[0,Stdlib_format[25]],_z_);
             caml_call5(Stdlib_format[123],ppf,_M_,name$0,_fk_,args)}
           if(comment$5)
            {var text=comment$5[1];
             return caml_call3(Stdlib_format[123],ppf,_L_,text)}
           return 0}
         if(0 === args)
          caml_call3(Stdlib_format[123],ppf,_G_,name$0);
         else
          if(4 < caml_ml_string_length(name$0))
           {var _fi_=caml_call2(Stdlib_format[119],0,_z_);
            caml_call5(Stdlib_format[123],ppf,_I_,name$0,_fi_,args)}
          else
           {var _fj_=caml_call2(Stdlib_format[119],0,_z_);
            caml_call5(Stdlib_format[123],ppf,_J_,name$0,_fj_,args)}
         if(comment$5)
          {var comment$6=comment$5[1];
           return caml_call4
                   (Stdlib_format[123],ppf,_H_,print_comment,comment$6)}
         return 0;
        default:
         var _fl_=param[1],_fm_=_fl_[3][1],_fn_=_fl_[2],_fo_=_fl_[1];
         if(! _fm_ && ! param[2])
          return caml_call2(Stdlib_format[123],ppf,_T_);
         var items=param[2],switch$0=0;
         if(! _fo_ && ! (80 <= _fn_))
          {caml_call2(Stdlib_format[123],ppf,_S_);switch$0 = 1}
         if(! switch$0)caml_call2(Stdlib_format[123],ppf,_N_);
         if(_fm_)
          {var _fp_=_fm_[1];
           if(items)
            caml_call4(Stdlib_format[123],ppf,_O_,print_comment,_fp_);
           else
            caml_call4(Stdlib_format[123],ppf,_R_,print_comment,_fp_)}
         var
          _fq_=
           [0,
            function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_P_)}];
         caml_call4(Stdlib_format[119],_fq_,_y_,ppf,items);
         return caml_call2(Stdlib_format[123],ppf,_Q_)}}
    function _z_(ppf,expr)
     {if(3 === expr[0])
       {var switch$0=0;
        if(expr[3] || expr[4])switch$0 = 1;
        if(switch$0)return caml_call4(Stdlib_format[123],ppf,_U_,_y_,expr)}
      return _y_(ppf,expr)}
    function with_unbounded_formatter(ppf,f,x)
     {var
       buf=caml_call1(Stdlib_buffer[1],10000),
       sppf=caml_call1(Stdlib_format[107],buf);
      caml_call2(Stdlib_format[40],sppf,199999);
      caml_call2(Stdlib_format[44],sppf,99999);
      caml_call2(Stdlib_format[55],sppf,99999);
      caml_call2(f,sppf,x);
      caml_call2(Stdlib_format[123],sppf,_V_);
      var
       _fc_=caml_call1(Stdlib_buffer[2],buf),
       lines=caml_call2(Stdlib_string[35],10,_fc_);
      return caml_call4
              (Stdlib_format[119],
               [0,Stdlib_format[32]],
               Stdlib_format[13],
               ppf,
               lines)}
    function print_expr_unwrapped(ppf,expr)
     {return with_unbounded_formatter(ppf,_y_,preformat(expr))}
    function print_expr(ppf,expr)
     {return with_unbounded_formatter(ppf,_z_,preformat(expr))}
    var
     Tezos_micheline_Micheline_prin=
      [0,print_string,print_expr,print_expr_unwrapped,printable];
    caml_register_global
     (269,Tezos_micheline_Micheline_prin,"Tezos_micheline__Micheline_printer");
    var
     _W_=caml_call4(Data_encoding[27],0,0,cst_byte,Data_encoding[9]),
     _X_=caml_call4(Data_encoding[27],0,0,cst_point,Data_encoding[9]),
     _Y_=caml_call4(Data_encoding[27],0,0,cst_column,Data_encoding[9]),
     _Z_=caml_call4(Data_encoding[27],0,0,cst_line,Data_encoding[9]),
     ___=caml_call4(Data_encoding[34],_Z_,_Y_,_X_,_W_),
     _$_=0;
    function _aa_(param)
     {var byte$0=param[4],point=param[3],column=param[2],line=param[1];
      return [0,point,byte$0,line,column]}
    function _ab_(param)
     {var column=param[4],line=param[3],byte$0=param[2],point=param[1];
      return [0,line,column,point,byte$0]}
    var
     point_encoding=caml_call4(Data_encoding[25],_ab_,_aa_,_$_,___),
     location_zero=[0,point_zero,point_zero],
     _ac_=caml_call4(Data_encoding[27],0,0,cst_stop,point_encoding),
     _ad_=caml_call4(Data_encoding[27],0,0,cst_start,point_encoding),
     _ae_=caml_call2(Data_encoding[32],_ad_,_ac_),
     _af_=0;
    function _ag_(param)
     {var stop=param[2],start=param[1];return [0,start,stop]}
    function _ah_(param)
     {var stop=param[2],start=param[1];return [0,start,stop]}
    var
     location_encoding=caml_call4(Data_encoding[25],_ah_,_ag_,_af_,_ae_),
     _ai_=0;
    function _aj_(s){return [3,s]}
    function _ak_(param)
     {if(typeof param !== "number" && 3 === param[0])
       {var s=param[1];return [0,s]}
      return 0}
    var
     _al_=caml_call4(Data_encoding[27],0,0,cst_ident,Data_encoding[19]),
     _am_=caml_call1(Data_encoding[31],_al_),
     _ao_=
      [0,caml_call6(Data_encoding[53],cst_Ident,0,_an_,_am_,_ak_,_aj_),_ai_];
    function _ap_(s){return [1,s]}
    function _aq_(param)
     {if(typeof param !== "number" && 1 === param[0])
       {var s=param[1];return [0,s]}
      return 0}
    var
     _ar_=caml_call4(Data_encoding[27],0,0,cst_bytes$0,Data_encoding[19]),
     _as_=caml_call1(Data_encoding[31],_ar_),
     _au_=
      [0,caml_call6(Data_encoding[53],cst_Bytes$0,0,_at_,_as_,_aq_,_ap_),_ao_];
    function _av_(t){return t}
    function _aw_(t){return [0,t]}
    var
     _ay_=caml_call1(Data_encoding[58],_ax_),
     _az_=caml_call4(Data_encoding[27],0,0,cst_punctuation,_ay_),
     _aA_=caml_call1(Data_encoding[31],_az_),
     _aC_=
      [0,
       caml_call6(Data_encoding[53],cst_Punctuation,0,_aB_,_aA_,_aw_,_av_),
       _au_];
    function _aD_(param){var _fb_=param[1];return param[2]?[6,_fb_]:[5,_fb_]}
    function _aE_(param)
     {if(typeof param !== "number")
       switch(param[0])
        {case 5:var s=param[1];return [0,[0,s,0]];
         case 6:var s$0=param[1];return [0,[0,s$0,1]]
         }
      return 0}
    var
     _aF_=
      caml_call5(Data_encoding[30],0,0,cst_end_of_line,Data_encoding[18],0),
     _aG_=caml_call4(Data_encoding[27],0,0,cst_comment,Data_encoding[19]),
     _aH_=caml_call2(Data_encoding[32],_aG_,_aF_),
     _aJ_=
      [0,caml_call6(Data_encoding[53],cst_Comment,0,_aI_,_aH_,_aE_,_aD_),_aC_];
    function _aK_(s){return [4,s]}
    function _aL_(param)
     {if(typeof param !== "number" && 4 === param[0])
       {var s=param[1];return [0,s]}
      return 0}
    var
     _aM_=caml_call4(Data_encoding[27],0,0,cst_annot,Data_encoding[19]),
     _aN_=caml_call1(Data_encoding[31],_aM_),
     _aP_=
      [0,caml_call6(Data_encoding[53],cst_Annot,0,_aO_,_aN_,_aL_,_aK_),_aJ_];
    function _aQ_(s){return [2,s]}
    function _aR_(param)
     {if(typeof param !== "number" && 2 === param[0])
       {var s=param[1];return [0,s]}
      return 0}
    var
     _aS_=caml_call4(Data_encoding[27],0,0,cst_int$0,Data_encoding[19]),
     _aT_=caml_call1(Data_encoding[31],_aS_),
     _aV_=
      [0,caml_call6(Data_encoding[53],cst_Int$0,0,_aU_,_aT_,_aR_,_aQ_),_aP_];
    function _aW_(s){return [0,s]}
    function _aX_(param)
     {if(typeof param !== "number" && 0 === param[0])
       {var s=param[1];return [0,s]}
      return 0}
    var
     _aY_=caml_call4(Data_encoding[27],0,0,cst_string$0,Data_encoding[19]),
     _aZ_=caml_call1(Data_encoding[31],_aY_),
     _a1_=
      [0,
       caml_call6(Data_encoding[53],cst_String$0,0,_a0_,_aZ_,_aX_,_aW_),
       _aV_],
     token_value_encoding=caml_call2(Data_encoding[54],0,_a1_),
     Invalid_utf8_sequence=
      [248,cst_Tezos_micheline_Micheline_,caml_fresh_oo_id(0)],
     Unexpected_character=
      [248,cst_Tezos_micheline_Micheline_$0,caml_fresh_oo_id(0)],
     Undefined_escape_sequence=
      [248,cst_Tezos_micheline_Micheline_$1,caml_fresh_oo_id(0)],
     Missing_break_after_number=
      [248,cst_Tezos_micheline_Micheline_$2,caml_fresh_oo_id(0)],
     Unterminated_string=
      [248,cst_Tezos_micheline_Micheline_$3,caml_fresh_oo_id(0)],
     Unterminated_integer=
      [248,cst_Tezos_micheline_Micheline_$4,caml_fresh_oo_id(0)],
     Odd_lengthed_bytes=
      [248,cst_Tezos_micheline_Micheline_$5,caml_fresh_oo_id(0)],
     Unterminated_comment=
      [248,cst_Tezos_micheline_Micheline_$6,caml_fresh_oo_id(0)],
     Annotation_length=
      [248,cst_Tezos_micheline_Micheline_$7,caml_fresh_oo_id(0)],
     max_annot_length=255;
    function tokenize(source)
     {var decoder=caml_call3(Uutf[5],0,_a2_,[0,-976970511,source]);
      function here(param)
       {var
         _e__=caml_call1(Uutf[10],decoder),
         _e$_=caml_call1(Uutf[9],decoder),
         _fa_=caml_call1(Uutf[11],decoder);
        return [0,caml_call1(Uutf[12],decoder),_fa_,_e$_,_e__]}
      function tok(start,stop,token){return [0,token,[0,start,stop]]}
      var stack=[0,0],errors=[0,0];
      function next(param)
       {for(;;)
         {var _e9_=stack[1];
          if(_e9_)
           {var charlocs=_e9_[2],charloc=_e9_[1];
            stack[1] = charlocs;
            return charloc}
          var loc=here(0),other=caml_call1(Uutf[6],decoder);
          if(typeof other === "number")
           {if(1006505782 <= other)throw [0,Assert_failure,_a3_]}
          else
           if(! (852405675 <= other[1]))
            {var s=other[2];
             errors[1] = [0,[0,Invalid_utf8_sequence,loc,s],errors[1]];
             continue}
          return [0,other,loc]}}
      function back(charloc){stack[1] = [0,charloc,stack[1]];return 0}
      function uchar_to_char(c)
       {return caml_call1(Stdlib_uchar[11],c)
                ?[0,caml_call1(Stdlib_uchar[13],c)]
                :0}
      function allowed_ident_char(c)
       {var match=uchar_to_char(c);
        if(match)
         {var _e8_=match[1],switch$0=0;
          if(91 <= _e8_)
           {if(97 <= _e8_)
             {if(! (123 <= _e8_))switch$0 = 1}
            else
             if(95 === _e8_)switch$0 = 1}
          else
           if(58 <= _e8_)
            {if(65 <= _e8_)switch$0 = 1}
           else
            if(48 <= _e8_)switch$0 = 1;
          if(switch$0)return 1}
        return 0}
      function allowed_annot_char(c)
       {var match=uchar_to_char(c);
        if(match)
         {var _e6_=match[1],switch$0=0;
          if(58 <= _e6_)
           {var _e7_=_e6_ - 91 | 0;
            if(5 < _e7_ >>> 0)
             {if(! (58 < (_e7_ + 27 | 0) >>> 0))switch$0 = 1}
            else
             if(4 === _e7_)switch$0 = 1}
          else
           if(46 <= _e6_)
            {if(47 !== _e6_)switch$0 = 1}
           else
            if(37 === _e6_)switch$0 = 1;
          if(switch$0)return 1}
        return 0}
      function skip$0(counter,acc)
       {var acc$0=acc;
        a:
        for(;;)
         {var _eJ_=next(0),_eK_=_eJ_[1];
          if(typeof _eK_ === "number")return caml_call1(Stdlib_list[9],acc$0);
          var start=_eJ_[2],c=_eK_[2],match=uchar_to_char(c);
          if(match)
           {var _eL_=match[1],switch$0=0;
            if(91 <= _eL_)
             {if(123 <= _eL_)
               {if(! (126 <= _eL_))
                 {var switcher=_eL_ - 123 | 0;
                  switch(switcher)
                   {case 0:
                     var acc$1=[0,tok(start,here(0),3),acc$0],acc$0=acc$1;
                     continue;
                    case 1:break;
                    default:
                     var acc$2=[0,tok(start,here(0),4),acc$0],acc$0=acc$2;
                     continue}}}
              else
               if(97 <= _eL_)switch$0 = 1}
            else
             if(10 <= _eL_)
              if(65 <= _eL_)
               switch$0 = 1;
              else
               {var switcher$0=_eL_ - 10 | 0;
                switch(switcher$0)
                 {case 24:
                   var sacc=0;
                   for(;;)
                    {var
                      tok$2=
                       function(start,sacc)
                        {function tok$0(param)
                          {var
                            _e4_=caml_call1(Stdlib_list[9],sacc),
                            _e5_=[0,caml_call2(Stdlib_string[7],cst$4,_e4_)];
                           return tok(start,here(0),_e5_)}
                         return tok$0},
                      tok$0=tok$2(start,sacc),
                      _eQ_=next(0),
                      _eR_=_eQ_[1];
                     if(typeof _eR_ === "number")
                      {var stop$1=_eQ_[2];
                       errors[1]
                       =
                       [0,[0,Unterminated_string,[0,start,stop$1]],errors[1]];
                       var acc$6=[0,tok$0(0),acc$0],acc$0=acc$6;
                       continue a}
                     var stop$2=_eQ_[2],c$2=_eR_[2],match$1=uchar_to_char(c$2);
                     if(match$1)
                      {var _eS_=match$1[1];
                       if(14 <= _eS_)
                        {if(34 === _eS_)
                          {var acc$7=[0,tok$0(0),acc$0],acc$0=acc$7;continue a}
                         if(92 === _eS_)
                          {var _eT_=next(0),_eU_=_eT_[1];
                           if(typeof _eU_ === "number")
                            {var stop$3=_eT_[2];
                             errors[1]
                             =
                             [0,[0,Unterminated_string,[0,start,stop$3]],errors[1]];
                             var acc$8=[0,tok$0(0),acc$0],acc$0=acc$8;
                             continue a}
                           var loc=_eT_[2],c$3=_eU_[2],match$2=uchar_to_char(c$3);
                           if(match$2)
                            {var _eV_=match$2[1];
                             if(92 <= _eV_)
                              {if(! (117 <= _eV_))
                                {var switcher$1=_eV_ - 92 | 0;
                                 switch(switcher$1)
                                  {case 0:var sacc$0=[0,cst$5,sacc],sacc=sacc$0;continue;
                                   case 6:var sacc$1=[0,cst$6,sacc],sacc=sacc$1;continue;
                                   case 18:var sacc$2=[0,cst$7,sacc],sacc=sacc$2;continue;
                                   case 22:var sacc$3=[0,cst$8,sacc],sacc=sacc$3;continue;
                                   case 24:var sacc$4=[0,cst$9,sacc],sacc=sacc$4;continue
                                   }}}
                             else
                              if(34 === _eV_)
                               {var sacc$5=[0,cst$10,sacc],sacc=sacc$5;continue}}
                           var
                            byte$1=caml_call1(Uutf[11],decoder),
                            s$0=
                             caml_call3
                              (Stdlib_string[4],source,loc[2],byte$1 - loc[2] | 0);
                           errors[1]
                           =
                           [0,[0,Undefined_escape_sequence,loc,s$0],errors[1]];
                           continue}}
                       else
                        {var switch$1=0;
                         if(10 === _eS_ || 13 <= _eS_)switch$1 = 1;
                         if(switch$1)
                          {errors[1]
                           =
                           [0,[0,Unterminated_string,[0,start,stop$2]],errors[1]];
                           var acc$9=[0,tok$0(0),acc$0],acc$0=acc$9;
                           continue a}}}
                     var
                      byte$2=caml_call1(Uutf[11],decoder),
                      s$1=
                       caml_call3
                        (Stdlib_string[4],source,stop$2[2],byte$2 - stop$2[2] | 0),
                      sacc$6=[0,s$1,sacc],
                      sacc=sacc$6;
                     continue}
                  case 25:
                   for(;;)
                    {var
                      tok$3=
                       function(start)
                        {function tok$0(stop)
                          {var
                            text=
                             caml_call3
                              (Stdlib_string[4],source,start[2],stop[2] - start[2] | 0);
                           return tok(start,stop,[6,text])}
                         return tok$0},
                      tok$1=tok$3(start),
                      other$1=next(0),
                      _e3_=other$1[1];
                     if(typeof _e3_ !== "number" && 852405675 === _e3_[1])
                      {var
                        stop$7=other$1[2],
                        c$7=_e3_[2],
                        match$4=uchar_to_char(c$7);
                       if(match$4 && 10 === match$4[1])
                        {var acc$13=[0,tok$1(stop$7),acc$0],acc$0=acc$13;continue a}
                       continue}
                     var stop$6=other$1[2];
                     back(other$1);
                     var acc$12=[0,tok$1(stop$6),acc$0],acc$0=acc$12;
                     continue a}
                  case 30:
                   var acc$3=[0,tok(start,here(0),1),acc$0],acc$0=acc$3;
                   continue;
                  case 31:
                   var acc$4=[0,tok(start,here(0),2),acc$0],acc$0=acc$4;
                   continue;
                  case 35:
                   var first=next(0),_eM_=first[1];
                   if(typeof _eM_ === "number")
                    {var stop=first[2];
                     errors[1]
                     =
                     [0,[0,Unterminated_integer,[0,start,stop]],errors[1]];
                     return caml_call1(Stdlib_list[9],acc$0)}
                   var stop$0=first[2],c$0=_eM_[2],match$0=uchar_to_char(c$0);
                   if(match$0)
                    {var _eN_=match$0[1];
                     if(49 <= _eN_)
                      {if(! (58 <= _eN_))
                        {if(counter < 50)
                          {var counter$2=counter + 1 | 0;
                           return integer(counter$2,acc$0,start)}
                         return caml_trampoline_return(integer,[0,acc$0,start])}}
                     else
                      if(48 <= _eN_)
                       {if(counter < 50)
                         {var counter$4=counter + 1 | 0;
                          return base(counter$4,acc$0,start)}
                        return caml_trampoline_return(base,[0,acc$0,start])}}
                   errors[1]
                   =
                   [0,[0,Unterminated_integer,[0,start,stop$0]],errors[1]];
                   back(first);
                   continue;
                  case 37:
                   var charloc=next(0),_eO_=charloc[1];
                   if(typeof _eO_ !== "number")
                    {var c$1=_eO_[2],_eP_=caml_call1(Stdlib_uchar[12],42);
                     if(caml_call2(Stdlib_uchar[15],c$1,_eP_))
                      {var lvl=0;
                       for(;;)
                        {var _eW_=next(0),_eX_=_eW_[1];
                         if(typeof _eX_ === "number")
                          {var stop$4=_eW_[2];
                           errors[1]
                           =
                           [0,[0,Unterminated_comment,[0,start,stop$4]],errors[1]];
                           var
                            text=
                             caml_call3
                              (Stdlib_string[4],source,start[2],stop$4[2] - start[2] | 0),
                            acc$10=[0,tok(start,stop$4,[5,text]),acc$0],
                            acc$0=acc$10;
                           continue a}
                         var c$4=_eX_[2],match$3=uchar_to_char(c$4);
                         if(match$3)
                          {var _eY_=match$3[1];
                           if(42 === _eY_)
                            {var other=next(0),_eZ_=other[1];
                             if(typeof _eZ_ !== "number" && 852405675 === _eZ_[1])
                              {var c$5=_eZ_[2],_e0_=caml_call1(Stdlib_uchar[12],47);
                               if(caml_call2(Stdlib_uchar[15],c$5,_e0_))
                                {if(0 === lvl)
                                  {var
                                    stop$5=here(0),
                                    text$0=
                                     caml_call3
                                      (Stdlib_string[4],source,start[2],stop$5[2] - start[2] | 0),
                                    acc$11=[0,tok(start,stop$5,[5,text$0]),acc$0],
                                    acc$0=acc$11;
                                   continue a}
                                 var lvl$0=lvl - 1 | 0,lvl=lvl$0;
                                 continue}}
                             back(other);
                             continue}
                           if(47 === _eY_)
                            {var other$0=next(0),_e1_=other$0[1];
                             if(typeof _e1_ !== "number" && 852405675 === _e1_[1])
                              {var c$6=_e1_[2],_e2_=caml_call1(Stdlib_uchar[12],42);
                               if(caml_call2(Stdlib_uchar[15],c$6,_e2_))
                                {var lvl$1=lvl + 1 | 0,lvl=lvl$1;continue}}
                             back(other$0);
                             continue}}
                         continue}}}
                   errors[1]
                   =
                   [0,[0,Unexpected_character,start,cst$3],errors[1]];
                   back(charloc);
                   continue;
                  case 38:
                   if(counter < 50)
                    {var counter$5=counter + 1 | 0;
                     return base(counter$5,acc$0,start)}
                   return caml_trampoline_return(base,[0,acc$0,start]);
                  case 49:
                   var acc$5=[0,tok(start,here(0),0),acc$0],acc$0=acc$5;
                   continue;
                  case 0:
                  case 22:continue;
                  case 23:
                  case 26:
                  case 27:
                  case 28:
                  case 48:
                  case 53:
                  case 54:
                   var
                    ret$0=
                     function(str,stop)
                      {if(255 < caml_ml_string_length(str))
                        errors[1]
                        =
                        [0,[0,Annotation_length,[0,start,stop]],errors[1]];
                       return [4,str]};
                   if(counter < 50)
                    {var counter$1=counter + 1 | 0;
                     return generic_ident
                             (counter$1,allowed_annot_char,acc$0,start,ret$0)}
                   return caml_trampoline_return
                           (generic_ident,[0,allowed_annot_char,acc$0,start,ret$0]);
                  case 39:
                  case 40:
                  case 41:
                  case 42:
                  case 43:
                  case 44:
                  case 45:
                  case 46:
                  case 47:
                   if(counter < 50)
                    {var counter$3=counter + 1 | 0;
                     return integer(counter$3,acc$0,start)}
                   return caml_trampoline_return(integer,[0,acc$0,start])
                  }}
            if(switch$0)
             {var ret=function(s,param){return [3,s]};
              if(counter < 50)
               {var counter$0=counter + 1 | 0;
                return generic_ident
                        (counter$0,allowed_ident_char,acc$0,start,ret)}
              return caml_trampoline_return
                      (generic_ident,[0,allowed_ident_char,acc$0,start,ret])}}
          var
           byte$0=caml_call1(Uutf[11],decoder),
           s=
            caml_call3(Stdlib_string[4],source,start[2],byte$0 - start[2] | 0);
          errors[1] = [0,[0,Unexpected_character,start,s],errors[1]];
          continue}}
      function base(counter,acc,start)
       {var charloc=next(0),_eA_=charloc[1];
        if(typeof _eA_ !== "number" && 852405675 === _eA_[1])
         {var stop$0=charloc[2],c=_eA_[2],match=uchar_to_char(c);
          if(match)
           {var _eC_=match[1],switch$0=0;
            if(91 <= _eC_)
             {var switcher=_eC_ - 97 | 0;
              if(! (25 < switcher >>> 0))
               {if(23 === switcher)
                 for(;;)
                  {var
                    tok$0=
                     function(stop)
                      {var
                        value=
                         caml_call3
                          (Stdlib_string[4],source,start[2],stop[2] - start[2] | 0);
                       return tok(start,stop,[1,value])},
                    charloc$0=next(0),
                    _eF_=charloc$0[1];
                   if(typeof _eF_ === "number")
                    {var stop$1=charloc$0[2];
                     back(charloc$0);
                     var _eG_=[0,tok$0(stop$1),acc];
                     if(counter < 50)
                      {var counter$5=counter + 1 | 0;
                       return skip$0(counter$5,_eG_)}
                     return caml_trampoline_return(skip$0,[0,_eG_])}
                   var
                    stop$2=charloc$0[2],
                    c$0=_eF_[2],
                    match$0=caml_call1(Stdlib_uchar[13],c$0),
                    switch$1=0;
                   if(71 <= match$0)
                    {var switcher$0=match$0 - 91 | 0;
                     if(11 < switcher$0 >>> 0)
                      {if(! (32 <= switcher$0))
                        {errors[1]
                         =
                         [0,[0,Missing_break_after_number,stop$2],errors[1]];
                         back(charloc$0);
                         var _eH_=[0,tok$0(stop$2),acc];
                         if(counter < 50)
                          {var counter$4=counter + 1 | 0;
                           return skip$0(counter$4,_eH_)}
                         return caml_trampoline_return(skip$0,[0,_eH_])}}
                     else
                      if(6 <= switcher$0)switch$1 = 1}
                   else
                    if(58 <= match$0)
                     {if(65 <= match$0)switch$1 = 1}
                    else
                     if(48 <= match$0)switch$1 = 1;
                   if(switch$1)continue;
                   back(charloc$0);
                   var _eI_=[0,tok$0(stop$2),acc];
                   if(counter < 50)
                    {var counter$6=counter + 1 | 0;
                     return skip$0(counter$6,_eI_)}
                   return caml_trampoline_return(skip$0,[0,_eI_])}
                switch$0 = 1}}
            else
             if(58 <= _eC_)
              {if(65 <= _eC_)switch$0 = 1}
             else
              if(48 <= _eC_)
               {if(counter < 50)
                 {var counter$0=counter + 1 | 0;
                  return integer(counter$0,acc,start)}
                return caml_trampoline_return(integer,[0,acc,start])}
            if(switch$0)
             {errors[1] = [0,[0,Missing_break_after_number,stop$0],errors[1]];
              back(charloc);
              var _eE_=[0,tok(start,stop$0,_a6_),acc];
              if(counter < 50)
               {var counter$1=counter + 1 | 0;return skip$0(counter$1,_eE_)}
              return caml_trampoline_return(skip$0,[0,_eE_])}}
          back(charloc);
          var _eD_=[0,tok(start,stop$0,_a5_),acc];
          if(counter < 50)
           {var counter$2=counter + 1 | 0;return skip$0(counter$2,_eD_)}
          return caml_trampoline_return(skip$0,[0,_eD_])}
        var stop=charloc[2];
        back(charloc);
        var _eB_=[0,tok(start,stop,_a4_),acc];
        if(counter < 50)
         {var counter$3=counter + 1 | 0;return skip$0(counter$3,_eB_)}
        return caml_trampoline_return(skip$0,[0,_eB_])}
      function integer(counter,acc,start)
       {for(;;)
         {var
           tok$0=
            function(stop)
             {var
               value=
                caml_call3
                 (Stdlib_string[4],source,start[2],stop[2] - start[2] | 0);
              return tok(start,stop,[2,value])},
           charloc=next(0),
           _ev_=charloc[1];
          if(typeof _ev_ === "number")
           {var stop=charloc[2];
            back(charloc);
            var _ew_=[0,tok$0(stop),acc];
            if(counter < 50)
             {var counter$1=counter + 1 | 0;return skip$0(counter$1,_ew_)}
            return caml_trampoline_return(skip$0,[0,_ew_])}
          var
           stop$0=charloc[2],
           c=_ev_[2],
           match=caml_call1(Stdlib_uchar[13],c),
           _ey_=match - 65 | 0;
          if(57 < _ey_ >>> 0)
           {var switcher=_ey_ + 17 | 0;if(! (9 < switcher >>> 0))continue}
          else
           {var switcher$0=_ey_ - 26 | 0;
            if(5 < switcher$0 >>> 0)
             {errors[1] = [0,[0,Missing_break_after_number,stop$0],errors[1]];
              back(charloc);
              var _ex_=[0,tok$0(stop$0),acc];
              if(counter < 50)
               {var counter$0=counter + 1 | 0;return skip$0(counter$0,_ex_)}
              return caml_trampoline_return(skip$0,[0,_ex_])}}
          back(charloc);
          var _ez_=[0,tok$0(stop$0),acc];
          if(counter < 50)
           {var counter$2=counter + 1 | 0;return skip$0(counter$2,_ez_)}
          return caml_trampoline_return(skip$0,[0,_ez_])}}
      function generic_ident(counter,allow_char,acc,start,ret)
       {for(;;)
         {var
           tok$0=
            function(stop)
             {var
               name=
                caml_call3
                 (Stdlib_string[4],source,start[2],stop[2] - start[2] | 0);
              return tok(start,stop,caml_call2(ret,name,stop))},
           charloc=next(0),
           _es_=charloc[1];
          if(typeof _es_ !== "number" && 852405675 === _es_[1])
           {var stop$0=charloc[2],c=_es_[2];
            if(caml_call1(allow_char,c))continue;
            back(charloc);
            var _eu_=[0,tok$0(stop$0),acc];
            if(counter < 50)
             {var counter$0=counter + 1 | 0;return skip$0(counter$0,_eu_)}
            return caml_trampoline_return(skip$0,[0,_eu_])}
          var stop=charloc[2];
          back(charloc);
          var _et_=[0,tok$0(stop),acc];
          if(counter < 50)
           {var counter$1=counter + 1 | 0;return skip$0(counter$1,_et_)}
          return caml_trampoline_return(skip$0,[0,_et_])}}
      function skip(acc){return caml_trampoline(skip$0(0,acc))}
      var tokens=skip(0);
      return [0,tokens,caml_call1(Stdlib_list[9],errors[1])]}
    var
     node_encoding=
      table_encoding(cst_generic,location_encoding,Data_encoding[19]);
    function min_point(param)
     {if(param){var match=param[1][1],start=match[1];return start}
      return point_zero}
    function max_point(param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var _er_=param$0[2],_eq_=param$0[1];
          if(_er_){var param$0=_er_;continue}
          var match=_eq_[1],stop=match[2];
          return stop}
        return point_zero}}
    function pop_mode(param)
     {if(param){var rest=param[2];return rest}throw [0,Assert_failure,_a7_]}
    function fill_mode(result,param)
     {if(param)
       {var _en_=param[1];
        switch(_en_[0])
         {case 0:
           var _eo_=_en_[1];
           if(param[2])throw [0,Assert_failure,_a8_];
           return [0,[0,[0,result,_eo_]],0];
          case 1:
           var _ep_=_en_[1];
           if(param[2])throw [0,Assert_failure,_a9_];
           if(_ep_)throw [0,Assert_failure,_a__];
           return [0,[1,[0,result]],0];
          case 2:
           var rest=param[2],exprs=_en_[2],token=_en_[1];
           return [0,[2,token,[0,result,exprs]],rest];
          case 3:
           var
            rest$0=param[2],
            annot=_en_[4],
            exprs$0=_en_[3],
            name=_en_[2],
            start=_en_[1];
           return [0,[3,start,name,[0,result,exprs$0],annot],rest$0];
          default:
           var
            rest$1=param[2],
            annot$0=_en_[4],
            exprs$1=_en_[3],
            name$0=_en_[2],
            token$0=_en_[1];
           return [0,[4,token$0,name$0,[0,result,exprs$1],annot$0],rest$1]}}
      throw [0,Assert_failure,_a$_]}
    var
     Unclosed=[248,cst_Tezos_micheline_Micheline_$8,caml_fresh_oo_id(0)],
     Unexpected=[248,cst_Tezos_micheline_Micheline_$9,caml_fresh_oo_id(0)],
     Extra=[248,cst_Tezos_micheline_Micheline_$10,caml_fresh_oo_id(0)],
     Misaligned=[248,cst_Tezos_micheline_Micheline_$11,caml_fresh_oo_id(0)],
     Empty=[248,cst_Tezos_micheline_Micheline_$12,caml_fresh_oo_id(0)];
    function annots(rest)
     {if(rest)
       {var _em_=rest[1][1];
        if(typeof _em_ !== "number" && 4 === _em_[0])
         {var
           rest$0=rest[2],
           annot=_em_[1],
           match=annots(rest$0),
           rest$1=match[2],
           annots$0=match[1];
          return [0,[0,annot,annots$0],rest$1]}}
      return [0,0,rest]}
    function parse(opt,errors,tokens,stack)
     {var opt$0=opt,errors$0=errors,tokens$0=tokens,stack$0=stack;
      for(;;)
       {if(opt$0)var sth=opt$0[1],check=sth;else var check=1;
        if(stack$0)
         {var _dh_=stack$0[1],switch$0=0;
          switch(_dh_[0])
           {case 0:
             var _di_=_dh_[1];
             if(_di_)
              {var _dj_=_di_[1];
               if(4 === _dj_[0] && ! _di_[2] && ! stack$0[2] && ! tokens$0)
                {var
                  exprs$0=_dj_[2],
                  errors$9=check?do_check(_bf_,errors$0,_dj_):errors$0;
                 return [0,exprs$0,caml_call1(Stdlib_list[9],errors$9)]}}
             if(stack$0[2])
              switch$0 = 1;
             else
              {if(! tokens$0)
                {var
                  exprs=caml_call1(Stdlib_list[9],_di_),
                  _dQ_=max_point(exprs),
                  loc$4=[0,min_point(exprs),_dQ_],
                  expr$2=[4,loc$4,exprs],
                  errors$8=check?do_check(_be_,errors$0,expr$2):errors$0;
                 return [0,exprs,caml_call1(Stdlib_list[9],errors$8)]}
               var _dk_=tokens$0[1],_dl_=_dk_[1],switch$1=0;
               if(typeof _dl_ === "number" && 3 !== _dl_ && _dl_)
                {var tokens$4=tokens$0[2],token$1=_dk_;switch$1 = 1}
               if(! switch$1)switch$0 = 2}
             break;
            case 1:
             var _dR_=_dh_[1];
             if(stack$0[2])
              switch$0 = 1;
             else
              {if(_dR_)
                {var _dS_=_dR_[1];
                 if(tokens$0)
                  {var
                    tokens$7=tokens$0[2],
                    token$3=tokens$0[1],
                    errors$10=[0,[0,Unexpected,token$3],errors$0],
                    opt$13=[0,check],
                    opt$0=opt$13,
                    errors$0=errors$10,
                    tokens$0=tokens$7;
                   continue}
                 return [0,[0,_dS_,0],caml_call1(Stdlib_list[9],errors$0)]}
               if(! tokens$0)
                {var
                  errors$12=[0,Empty,errors$0],
                  ghost=[0,point_zero,point_zero];
                 return [0,
                         [0,[4,ghost,0],0],
                         caml_call1(Stdlib_list[9],errors$12)]}
               var _dT_=tokens$0[1],_dU_=_dT_[1];
               if(typeof _dU_ === "number" && ! (3 === _dU_))
                {var tokens$8=tokens$0[2],token$4=_dT_;switch$0 = 3}
               else
                switch$0 = 2}
             break;
            case 2:
             var switch$2=0,_dV_=_dh_[1];
             if(tokens$0)
              {var _dW_=tokens$0[1],_dX_=_dW_[1];
               if(typeof _dX_ === "number")
                {var _dY_=_dh_[2],_dZ_=_dV_[2][1];
                 switch(_dX_)
                  {case 4:
                    var
                     rest$6=tokens$0[2],
                     match$0=_dW_[2],
                     stop=match$0[2],
                     exprs$1=caml_call1(Stdlib_list[9],_dY_),
                     expr$3=[4,[0,_dZ_,stop],exprs$1],
                     errors$13=check?do_check(_bg_,errors$0,expr$3):errors$0,
                     stack$7=fill_mode(expr$3,pop_mode(stack$0)),
                     opt$15=[0,check],
                     opt$0=opt$15,
                     errors$0=errors$13,
                     tokens$0=rest$6,
                     stack$0=stack$7;
                    continue;
                   case 0:
                   case 3:break;
                   default:var tokens$4=tokens$0[2],token$1=_dW_;switch$2 = 1}}}
             if(! switch$2)switch$0 = 2;
             break;
            case 3:
             var _d0_=_dh_[1],_d1_=stack$0[2];
             if(_d1_)
              {var switch$3=0;
               switch(_d1_[1][0])
                {case 0:
                  if(tokens$0)
                   {var _d2_=tokens$0[1],_d3_=_d2_[1];
                    if(typeof _d3_ === "number")
                     switch(_d3_)
                      {case 0:switch$3 = 1;break;
                       case 2:switch$3 = 3;break;
                       case 4:
                        var tokens$4=tokens$0[2],token$1=_d2_;switch$3 = 2;break
                       }}
                  else
                   switch$3 = 1;
                  break;
                 case 1:
                  if(tokens$0)
                   {var _eh_=tokens$0[1],_ei_=_eh_[1];
                    if(typeof _ei_ === "number" && 1 !== _ei_ && 3 !== _ei_)
                     {var tokens$8=tokens$0[2],token$4=_eh_;
                      switch$0 = 3;
                      switch$3 = 2}}
                  else
                   switch$3 = 1;
                  break;
                 case 2:switch$3 = 3;break;
                 default:switch$0 = 1;switch$3 = 2}
               var switch$4=0;
               switch(switch$3)
                {case 2:switch$4 = 2;break;
                 case 3:
                  if(tokens$0)
                   {var _ef_=tokens$0[1],_eg_=_ef_[1];
                    if(typeof _eg_ === "number" && 1 !== _eg_)
                     if(_eg_)
                      switch(_eg_ - 2 | 0)
                       {case 0:
                         var tokens$4=tokens$0[2],token$1=_ef_;switch$4 = 2;break;
                        case 1:break;
                        default:switch$4 = 1}
                     else
                      switch$4 = 1}
                  else
                   switch$4 = 1;
                  break;
                 case 1:switch$4 = 1;break
                 }
               var switch$5=0;
               switch(switch$4)
                {case 2:break;
                 case 1:
                  var
                   _d4_=_dh_[4],
                   _d5_=_dh_[3],
                   _d6_=_dh_[2],
                   _d7_=_d0_[2],
                   _d8_=_d0_[1];
                  if(2 === stack$0[2][1][0] && ! tokens$0)
                   switch$5 = 1;
                  else
                   {var
                     rest$7=tokens$0,
                     annot=_d4_,
                     exprs$2=_d5_,
                     name$1=_d6_,
                     stop$0=_d7_,
                     start=_d8_;
                    switch$0 = 4}
                  break;
                 default:switch$5 = 1}
               if(switch$5)switch$0 = 5}
             else
              switch$0 = 1;
             break;
            default:
             var _ej_=_dh_[1];
             if(stack$0[2])
              {var switch$6=0;
               if(tokens$0)
                {var _ek_=tokens$0[1][1],switch$7=0;
                 if(typeof _ek_ === "number" && 1 !== _ek_)
                  {var switch$8=0;
                   if(_ek_)
                    switch(_ek_ - 2 | 0)
                     {case 0:
                       var
                        _el_=_ej_[2],
                        rest$7=tokens$0[2],
                        annot=_dh_[4],
                        exprs$2=_dh_[3],
                        name$1=_dh_[2],
                        stop$0=_el_[2],
                        start=_el_[1];
                       switch$0 = 4;
                       switch$7 = 1;
                       switch$8 = 1;
                       break;
                      case 1:switch$8 = 1;break
                      }
                   if(! switch$8){switch$6 = 1;switch$7 = 1}}
                 if(! switch$7)switch$0 = 5}
               else
                switch$6 = 1;
               if(switch$6)
                {var
                  errors$16=[0,[0,Unclosed,_ej_],errors$0],
                  fake$0=[0,2,_ej_[2]],
                  tokens$9=[0,fake$0,tokens$0],
                  opt$20=[0,check],
                  opt$0=opt$20,
                  errors$0=errors$16,
                  tokens$0=tokens$9;
                 continue}}
             else
              switch$0 = 1}
          var switch$9=0;
          switch(switch$0)
           {case 2:
             if(tokens$0)
              {var _dm_=tokens$0[1],_dn_=_dm_[1],switch$10=0;
               if(typeof _dn_ === "number")
                switch(_dn_)
                 {case 0:switch$10 = 1;break;
                  case 3:switch$9 = 2;switch$10 = 2;break;
                  default:switch$10 = 2}
               else
                switch(_dn_[0])
                 {case 3:switch$10 = 1;break;
                  case 0:
                   var _dz_=tokens$0[2],switch$11=0,_dy_=_dn_[1],_dA_=_dm_[2];
                   if(_dz_)
                    {var _dB_=_dz_[1][1],switch$12=0;
                     if(typeof _dB_ === "number" && 2 < (_dB_ - 1 | 0) >>> 0)
                      switch$12 = 1;
                     if(! switch$12)switch$11 = 1}
                   if(! switch$11)
                    {var rest$2=_dz_,loc$1=_dA_,contents=_dy_;
                     switch$9 = 8;
                     switch$10 = 2}
                   break;
                  case 1:
                   var _dG_=tokens$0[2],switch$13=0,_dF_=_dn_[1],_dH_=_dm_[2];
                   if(_dG_)
                    {var _dI_=_dG_[1][1],switch$14=0;
                     if(typeof _dI_ === "number" && 2 < (_dI_ - 1 | 0) >>> 0)
                      switch$14 = 1;
                     if(! switch$14)switch$13 = 1}
                   if(! switch$13)
                    {var rest$4=_dG_,loc$2=_dH_,contents$0=_dF_;
                     switch$9 = 9;
                     switch$10 = 2}
                   break;
                  case 2:
                   var _dL_=tokens$0[2],switch$15=0,_dK_=_dn_[1],_dM_=_dm_[2];
                   if(_dL_)
                    {var _dN_=_dL_[1][1],switch$16=0;
                     if(typeof _dN_ === "number" && 2 < (_dN_ - 1 | 0) >>> 0)
                      {switch$15 = 1;switch$16 = 1}}
                   else
                    switch$15 = 1;
                   if(switch$15)
                    {var rest$5=_dL_,loc$3=_dM_,value=_dK_;
                     switch$9 = 7;
                     switch$10 = 2}
                   break;
                  default:switch$9 = 3;switch$10 = 2}
               switch(switch$10)
                {case 2:break;
                 case 1:
                  if(1 !== _dh_[0])
                   {var _do_=tokens$0[1],_dp_=_do_[1];
                    if(typeof _dp_ === "number")
                     {var _dq_=tokens$0[2];
                      if(_dq_)
                       {var _dr_=_dq_[1],_ds_=_dr_[1];
                        if(typeof _ds_ === "number" && ! _ds_)
                         {var
                           rem=_dq_[2],
                           errors$1=[0,[0,Extra,_dr_],errors$0],
                           tokens$2=[0,_do_,rem],
                           opt$2=[0,check],
                           opt$0=opt$2,
                           errors$0=errors$1,
                           tokens$0=tokens$2;
                          continue}}
                      var
                       tokens$1=tokens$0[2],
                       opt$1=[0,check],
                       opt$0=opt$1,
                       tokens$0=tokens$1;
                      continue}
                    var _dt_=tokens$0[2];
                    if(_dt_)
                     {var _du_=_dt_[1][1];
                      if(typeof _du_ !== "number" && 4 === _du_[0])
                       {var
                         loc$0=_do_[2],
                         name$0=_dp_[1],
                         match=annots(_dt_),
                         rest$0=match[2],
                         annots$0=match[1],
                         mode$0=[3,loc$0,name$0,0,annots$0],
                         stack$2=[0,mode$0,stack$0],
                         opt$5=[0,check],
                         opt$0=opt$5,
                         tokens$0=rest$0,
                         stack$0=stack$2;
                        continue}}}
                  var _dv_=tokens$0[1],_dw_=_dv_[1];
                  if(typeof _dw_ !== "number")
                   {var
                     rest=tokens$0[2],
                     loc=_dv_[2],
                     name=_dw_[1],
                     mode=[3,loc,name,0,0],
                     stack$1=[0,mode,stack$0],
                     opt$4=[0,check],
                     opt$0=opt$4,
                     tokens$0=rest,
                     stack$0=stack$1;
                    continue}
                  break;
                 default:
                  var _dC_=tokens$0[2];
                  if(_dC_)
                   {var _dD_=_dC_[1],switch$17=0,_dE_=_dD_[1];
                    if(typeof _dE_ === "number")
                     switch(_dE_){case 0:case 4:switch$17 = 1;break}
                    else
                     if(4 < _dE_[0])
                      {var rest$3=_dC_[2],token$2=_dm_;switch$9 = 5;switch$17 = 1}
                    if(! switch$17)
                     {var tokens$4=_dC_[2],token$1=_dD_;switch$9 = 1}}}}
             break;
            case 5:
             if(tokens$0)
              {var _d9_=tokens$0[1],_d__=_d9_[1];
               if(typeof _d__ === "number")
                switch(_d__)
                 {case 1:
                   var _d$_=tokens$0[2],switch$18=0;
                   if(_d$_)
                    {var _ea_=_d$_[1],_eb_=_ea_[1],switch$19=0;
                     if(typeof _eb_ === "number")
                      switch(_eb_)
                       {case 2:break;
                        case 1:
                        case 3:
                         var tokens$8=_d$_[2],token$4=_d9_;
                         switch$9 = 6;
                         switch$19 = 1;
                         break;
                        default:switch$18 = 1;switch$19 = 1}
                     else
                      switch(_eb_[0])
                       {case 3:
                         var _ec_=_eb_[1],_ed_=_d$_[2];
                         if(_ed_)
                          {var _ee_=_ed_[1][1];
                           if(typeof _ee_ !== "number" && 4 === _ee_[0])
                            {var
                              match$1=annots(_ed_),
                              rest$9=match$1[2],
                              annots$1=match$1[1],
                              mode$3=[4,_d9_,_ec_,0,annots$1],
                              stack$10=[0,mode$3,stack$0],
                              opt$18=[0,check],
                              opt$0=opt$18,
                              tokens$0=rest$9,
                              stack$0=stack$10;
                             continue}}
                         var
                          rest$8=_d$_[2],
                          mode$2=[4,_d9_,_ec_,0,0],
                          stack$9=[0,mode$2,stack$0],
                          opt$17=[0,check],
                          opt$0=opt$17,
                          tokens$0=rest$8,
                          stack$0=stack$9;
                         continue;
                        case 5:
                        case 6:
                         var rest$3=_d$_[2],token$2=_d9_;
                         switch$9 = 5;
                         switch$19 = 1;
                         break
                        }
                     if(! switch$19)
                      {var tokens$4=_d$_[2],token$1=_ea_;switch$9 = 1}}
                   else
                    switch$18 = 1;
                   if(switch$18){var tokens$4=_d$_,token$1=_d9_;switch$9 = 1}
                   break;
                  case 3:switch$9 = 2;break
                  }
               else
                switch(_d__[0])
                 {case 0:
                   var rest$2=tokens$0[2],loc$1=_d9_[2],contents=_d__[1];
                   switch$9 = 8;
                   break;
                  case 1:
                   var rest$4=tokens$0[2],loc$2=_d9_[2],contents$0=_d__[1];
                   switch$9 = 9;
                   break;
                  case 2:
                   var rest$5=tokens$0[2],loc$3=_d9_[2],value=_d__[1];
                   switch$9 = 7;
                   break;
                  case 3:
                   var
                    rest$10=tokens$0[2],
                    loc$5=_d9_[2],
                    name$2=_d__[1],
                    expr$5=[3,loc$5,name$2,0,0],
                    errors$15=check?do_check(_bi_,errors$0,expr$5):errors$0,
                    stack$11=fill_mode(expr$5,stack$0),
                    opt$19=[0,check],
                    opt$0=opt$19,
                    errors$0=errors$15,
                    tokens$0=rest$10,
                    stack$0=stack$11;
                   continue;
                  default:switch$9 = 3}}
             break;
            case 1:switch$9 = 4;break;
            case 3:switch$9 = 6;break;
            case 0:switch$9 = 1;break;
            default:
             var
              exprs$3=caml_call1(Stdlib_list[9],exprs$2),
              stop$1=0 === exprs$3?stop$0:max_point(exprs$3),
              expr$4=[3,[0,start,stop$1],name$1,exprs$3,annot],
              errors$14=check?do_check(_bh_,errors$0,expr$4):errors$0,
              stack$8=fill_mode(expr$4,pop_mode(stack$0)),
              opt$16=[0,check],
              opt$0=opt$16,
              errors$0=errors$14,
              tokens$0=rest$7,
              stack$0=stack$8;
             continue}
          var switch$20=0;
          switch(switch$9)
           {case 2:
             var
              rest$1=tokens$0[2],
              token$0=tokens$0[1],
              mode$1=[2,token$0,0],
              stack$3=[0,mode$1,stack$0],
              opt$6=[0,check],
              opt$0=opt$6,
              tokens$0=rest$1,
              stack$0=stack$3;
             continue;
            case 3:
             var _dO_=tokens$0[1],_dP_=_dO_[1];
             if(typeof _dP_ !== "number" && 4 < _dP_[0])
              {var
                tokens$6=tokens$0[2],
                opt$12=[0,check],
                opt$0=opt$12,
                tokens$0=tokens$6;
               continue}
             var tokens$4=tokens$0[2],token$1=_dO_;
             switch$20 = 1;
             break;
            case 0:
             var
              _dx_=stack$0[1],
              token=3 === _dx_[0]?stack$0[2][1][1]:_dx_[1],
              errors$2=[0,[0,Unclosed,token],errors$0],
              fake=[0,4,token[2]],
              tokens$3=[0,fake,tokens$0],
              opt$3=[0,check],
              opt$0=opt$3,
              errors$0=errors$2,
              tokens$0=tokens$3;
             continue;
            case 4:break;
            case 5:
             var
              tokens$5=[0,token$2,rest$3],
              opt$9=[0,check],
              opt$0=opt$9,
              tokens$0=tokens$5;
             continue;
            case 6:
             var
              errors$11=[0,[0,Unexpected,token$4],errors$0],
              opt$14=[0,check],
              opt$0=opt$14,
              errors$0=errors$11,
              tokens$0=tokens$8;
             continue;
            case 1:switch$20 = 1;break;
            case 7:
             var
              expr$1=[0,loc$3,caml_call1(Z[5],value)],
              errors$7=check?do_check(_bd_,errors$0,expr$1):errors$0,
              stack$6=fill_mode(expr$1,stack$0),
              opt$11=[0,check],
              opt$0=opt$11,
              errors$0=errors$7,
              tokens$0=rest$5,
              stack$0=stack$6;
             continue;
            case 8:
             var
              expr=[1,loc$1,contents],
              errors$3=check?do_check(_bb_,errors$0,expr):errors$0,
              stack$4=fill_mode(expr,stack$0),
              opt$7=[0,check],
              opt$0=opt$7,
              errors$0=errors$3,
              tokens$0=rest$2,
              stack$0=stack$4;
             continue;
            default:
             if(0 === (caml_ml_string_length(contents$0) % 2 | 0))
              var contents$1=contents$0,errors$5=errors$0;
             else
              var
               contents$1=caml_call2(Stdlib[28],contents$0,cst_0),
               errors$5=[0,[0,Odd_lengthed_bytes,loc$2],errors$0];
             var
              _dJ_=
               [0,
                3603131,
                caml_call3
                 (Stdlib_string[4],
                  contents$1,
                  2,
                  caml_ml_string_length(contents$1) - 2 | 0)],
              bytes=caml_call1(Hex[6],_dJ_),
              expr$0=[2,loc$2,bytes],
              errors$6=check?do_check(_bc_,errors$5,expr$0):errors$5,
              stack$5=fill_mode(expr$0,stack$0),
              opt$10=[0,check],
              opt$0=opt$10,
              errors$0=errors$6,
              tokens$0=rest$4,
              stack$0=stack$5;
             continue}
          if(switch$20)
           {var
             errors$4=[0,[0,Unexpected,token$1],errors$0],
             opt$8=[0,check],
             opt$0=opt$8,
             errors$0=errors$4,
             tokens$0=tokens$4;
            continue}}
        throw [0,Assert_failure,_ba_]}}
    function do_check(opt,errors,expr)
     {if(opt)var sth=opt[1],toplevel=sth;else var toplevel=0;
      var switch$0=0;
      switch(expr[0])
       {case 3:
         var _db_=expr[3];
         if(_db_)
          var
           _dc_=expr[1],
           rest=_db_[2],
           first=_db_[1],
           stop=_dc_[2],
           start=_dc_[1];
         else
          switch$0 = 1;
         break;
        case 4:
         var _dd_=expr[2],_de_=expr[1],_df_=_de_[2],_dg_=_de_[1];
         if(! _dd_)
          return _df_[4] <= _dg_[4]?[0,[0,Misaligned,expr],errors]:errors;
         var rest=_dd_[2],first=_dd_[1],stop=_df_,start=_dg_;
         break;
        default:switch$0 = 1}
      if(switch$0)return errors;
      var
       match=min_point([0,first,0]),
       first_column=match[4],
       first_line=match[3];
      if(stop[4] <= start[4])return [0,[0,Misaligned,expr],errors];
      if(! toplevel && first_column <= start[4])
       return [0,[0,Misaligned,expr],errors];
      var prev_start_line=first_line,errors$0=errors,param=rest;
      for(;;)
       {if(param)
         {var
           rest$0=param[2],
           expr$0=param[1],
           match$0=min_point([0,expr$0,0]),
           column=match$0[4],
           start_line=match$0[3],
           match$1=max_point([0,expr$0,0]),
           stop_line=match$1[3],
           switch$1=0;
          if(stop_line !== prev_start_line && column !== first_column)
           {var errors$1=[0,[0,Misaligned,expr$0],errors$0];switch$1 = 1}
          if(! switch$1)var errors$1=errors$0;
          var prev_start_line=start_line,errors$0=errors$1,param=rest$0;
          continue}
        return errors$0}}
    function parse_expression(check,tokens)
     {var switch$0=0;
      if(tokens)
       {var _c4_=tokens[1],_c5_=_c4_[1];
        if(typeof _c5_ === "number" && 1 === _c5_)
         {var _c6_=tokens[2];
          if(_c6_)
           {var _c7_=_c6_[1][1],switch$1=0;
            if(typeof _c7_ !== "number" && 3 === _c7_[0])
             {var _c9_=_c7_[1],_c__=_c6_[2],switch$2=0;
              if(_c__)
               {var _c$_=_c__[1][1],switch$3=0;
                if(typeof _c$_ !== "number" && 4 === _c$_[0])
                 {var
                   rest$0=_c__[2],
                   annot=_c$_[1],
                   match=annots(rest$0),
                   rest$1=match[2],
                   annots$0=match[1],
                   mode$0=[4,_c4_,_c9_,0,[0,annot,annots$0]],
                   _da_=parse(check,0,rest$1,[0,mode$0,_bm_]);
                  switch$2 = 1;
                  switch$3 = 1}}
              if(! switch$2)
               var
                rest=_c6_[2],
                mode=[4,_c4_,_c9_,0,0],
                _da_=parse(check,0,rest,[0,mode,_bl_]);
              var result=_da_;
              switch$0 = 1;
              switch$1 = 1}}}}
      if(! switch$0)var result=parse(check,0,tokens,_bj_);
      var _c8_=result[1];
      if(_c8_ && ! _c8_[2])
       {var errors=result[2],single=_c8_[1];return [0,single,errors]}
      throw [0,Assert_failure,_bk_]}
    function parse_toplevel(check,tokens){return parse(check,0,tokens,_bn_)}
    function print_point(ppf,param)
     {var column=param[4],line=param[3];
      return caml_call4(Stdlib_format[123],ppf,_bo_,line,column)}
    function print_token_kind(ppf,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[123],ppf,_bp_);
         case 1:
         case 2:return caml_call2(Stdlib_format[123],ppf,_bq_);
         default:return caml_call2(Stdlib_format[123],ppf,_br_)}
      else
       switch(param[0])
        {case 0:return caml_call2(Stdlib_format[123],ppf,_bs_);
         case 1:return caml_call2(Stdlib_format[123],ppf,_bt_);
         case 2:return caml_call2(Stdlib_format[123],ppf,_bu_);
         case 3:return caml_call2(Stdlib_format[123],ppf,_bv_);
         case 4:return caml_call2(Stdlib_format[123],ppf,_bw_);
         default:return caml_call2(Stdlib_format[123],ppf,_bx_)}}
    function print_location(ppf,loc)
     {return loc[1][3] === loc[2][3]
              ?loc[1][4] === loc[2][4]
                ?caml_call4(Stdlib_format[123],ppf,_by_,loc[1][3],loc[1][4])
                :caml_call5
                  (Stdlib_format[123],ppf,_bz_,loc[1][3],loc[1][4],loc[2][4])
              :caml_call6
                (Stdlib_format[123],
                 ppf,
                 _bA_,
                 loc[1][3],
                 loc[1][4],
                 loc[2][3],
                 loc[2][4])}
    function no_parsing_error(param)
     {var errors=param[2],ast=param[1];
      return errors
              ?[1,errors]
              :caml_call1(Tezos_error_monad_Error_monad[14],ast)}
    function _bB_(param)
     {var str=param[2],point=param[1];
      return [0,Invalid_utf8_sequence,point,str]}
    function _bC_(param)
     {if(param[1] === Invalid_utf8_sequence)
       {var str=param[3],point=param[2];return [0,[0,point,str]]}
      return 0}
    var
     _bD_=caml_call4(Data_encoding[27],0,0,cst_sequence,Data_encoding[19]),
     _bE_=caml_call4(Data_encoding[27],0,0,cst_point$0,point_encoding),
     _bF_=caml_call2(Data_encoding[32],_bE_,_bD_),
     _bH_=
      [0,
       function(ppf,param)
        {var str=param[2],point=param[1];
         return caml_call5(Stdlib_format[123],ppf,_bG_,print_point,point,str)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_inva,
      cst_Micheline_parser_error_inv,
      cst_While_parsing_a_piece_of_M,
      _bH_,
      _bF_,
      _bC_,
      _bB_);
    function _bI_(param)
     {var str=param[2],point=param[1];
      return [0,Unexpected_character,point,str]}
    function _bJ_(param)
     {if(param[1] === Unexpected_character)
       {var str=param[3],point=param[2];return [0,[0,point,str]]}
      return 0}
    var
     _bK_=caml_call4(Data_encoding[27],0,0,cst_character,Data_encoding[19]),
     _bL_=caml_call4(Data_encoding[27],0,0,cst_point$1,point_encoding),
     _bM_=caml_call2(Data_encoding[32],_bL_,_bK_),
     _bO_=
      [0,
       function(ppf,param)
        {var str=param[2],point=param[1];
         return caml_call5(Stdlib_format[123],ppf,_bN_,print_point,point,str)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_unex,
      cst_Micheline_parser_error_une,
      cst_While_parsing_a_piece_of_M$0,
      _bO_,
      _bM_,
      _bJ_,
      _bI_);
    function _bP_(param)
     {var str=param[2],point=param[1];
      return [0,Undefined_escape_sequence,point,str]}
    function _bQ_(param)
     {if(param[1] === Undefined_escape_sequence)
       {var str=param[3],point=param[2];return [0,[0,point,str]]}
      return 0}
    var
     _bR_=caml_call4(Data_encoding[27],0,0,cst_sequence$0,Data_encoding[19]),
     _bS_=caml_call4(Data_encoding[27],0,0,cst_point$2,point_encoding),
     _bT_=caml_call2(Data_encoding[32],_bS_,_bR_),
     _bV_=
      [0,
       function(ppf,param)
        {var str=param[2],point=param[1];
         return caml_call5(Stdlib_format[123],ppf,_bU_,print_point,point,str)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_unde,
      cst_Micheline_parser_error_und,
      cst_While_parsing_a_piece_of_M$1,
      _bV_,
      _bT_,
      _bQ_,
      _bP_);
    function _bW_(point){return [0,Missing_break_after_number,point]}
    function _bX_(param)
     {if(param[1] === Missing_break_after_number)
       {var point=param[2];return [0,point]}
      return 0}
    var
     _bY_=caml_call4(Data_encoding[27],0,0,cst_point$3,point_encoding),
     _bZ_=caml_call1(Data_encoding[31],_bY_),
     _b1_=
      [0,
       function(ppf,point)
        {return caml_call4(Stdlib_format[123],ppf,_b0_,print_point,point)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_miss,
      cst_Micheline_parser_error_mis,
      cst_While_parsing_a_piece_of_M$2,
      _b1_,
      _bZ_,
      _bX_,
      _bW_);
    function _b2_(loc){return [0,Unterminated_string,loc]}
    function _b3_(param)
     {if(param[1] === Unterminated_string){var loc=param[2];return [0,loc]}
      return 0}
    var
     _b4_=caml_call4(Data_encoding[27],0,0,cst_location,location_encoding),
     _b5_=caml_call1(Data_encoding[31],_b4_),
     _b7_=
      [0,
       function(ppf,loc)
        {return caml_call4(Stdlib_format[123],ppf,_b6_,print_location,loc)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_unte,
      cst_Micheline_parser_error_unt,
      cst_While_parsing_a_piece_of_M$3,
      _b7_,
      _b5_,
      _b3_,
      _b2_);
    function _b8_(loc){return [0,Unterminated_integer,loc]}
    function _b9_(param)
     {if(param[1] === Unterminated_integer){var loc=param[2];return [0,loc]}
      return 0}
    var
     _b__=caml_call4(Data_encoding[27],0,0,cst_location$0,location_encoding),
     _b$_=caml_call1(Data_encoding[31],_b__),
     _cb_=
      [0,
       function(ppf,loc)
        {return caml_call4(Stdlib_format[123],ppf,_ca_,print_location,loc)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_unte$0,
      cst_Micheline_parser_error_unt$0,
      cst_While_parsing_a_piece_of_M$4,
      _cb_,
      _b$_,
      _b9_,
      _b8_);
    function _cc_(loc){return [0,Odd_lengthed_bytes,loc]}
    function _cd_(param)
     {if(param[1] === Odd_lengthed_bytes){var loc=param[2];return [0,loc]}
      return 0}
    var
     _ce_=caml_call4(Data_encoding[27],0,0,cst_location$1,location_encoding),
     _cf_=caml_call1(Data_encoding[31],_ce_),
     _ch_=
      [0,
       function(ppf,loc)
        {return caml_call4(Stdlib_format[123],ppf,_cg_,print_location,loc)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_odd_,
      cst_Micheline_parser_error_odd,
      cst_While_parsing_a_piece_of_M$5,
      _ch_,
      _cf_,
      _cd_,
      _cc_);
    function _ci_(loc){return [0,Unterminated_comment,loc]}
    function _cj_(param)
     {if(param[1] === Unterminated_comment){var loc=param[2];return [0,loc]}
      return 0}
    var
     _ck_=caml_call4(Data_encoding[27],0,0,cst_location$2,location_encoding),
     _cl_=caml_call1(Data_encoding[31],_ck_),
     _cn_=
      [0,
       function(ppf,loc)
        {return caml_call4(Stdlib_format[123],ppf,_cm_,print_location,loc)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_unte$1,
      cst_Micheline_parser_error_unt$1,
      cst_While_parsing_a_piece_of_M$6,
      _cn_,
      _cl_,
      _cj_,
      _ci_);
    function _co_(loc){return [0,Annotation_length,loc]}
    function _cp_(param)
     {if(param[1] === Annotation_length){var loc=param[2];return [0,loc]}
      return 0}
    var
     _cq_=caml_call4(Data_encoding[27],0,0,cst_location$3,location_encoding),
     _cr_=caml_call1(Data_encoding[31],_cq_),
     _ct_=
      [0,
       function(ppf,loc)
        {return caml_call5
                 (Stdlib_format[123],
                  ppf,
                  _cs_,
                  print_location,
                  loc,
                  max_annot_length)}],
     _cv_=caml_call2(Stdlib_format[126],_cu_,max_annot_length);
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_anno,
      cst_Micheline_parser_error_ann,
      _cv_,
      _ct_,
      _cr_,
      _cp_,
      _co_);
    function _cw_(param)
     {var token=param[2],loc=param[1];return [0,Unclosed,[0,token,loc]]}
    function _cx_(param)
     {if(param[1] === Unclosed)
       {var match=param[2],loc=match[2],token=match[1];
        return [0,[0,loc,token]]}
      return 0}
    var
     _cy_=caml_call4(Data_encoding[27],0,0,cst_token,token_value_encoding),
     _cz_=caml_call4(Data_encoding[27],0,0,cst_location$4,location_encoding),
     _cA_=caml_call2(Data_encoding[32],_cz_,_cy_),
     _cC_=
      [0,
       function(ppf,param)
        {var token=param[2],loc=param[1];
         return caml_call6
                 (Stdlib_format[123],
                  ppf,
                  _cB_,
                  print_location,
                  loc,
                  print_token_kind,
                  token)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_uncl,
      cst_Micheline_parser_error_unc,
      cst_While_parsing_a_piece_of_M$7,
      _cC_,
      _cA_,
      _cx_,
      _cw_);
    function _cD_(param)
     {var token=param[2],loc=param[1];return [0,Unexpected,[0,token,loc]]}
    function _cE_(param)
     {if(param[1] === Unexpected)
       {var match=param[2],loc=match[2],token=match[1];
        return [0,[0,loc,token]]}
      return 0}
    var
     _cF_=caml_call4(Data_encoding[27],0,0,cst_token$0,token_value_encoding),
     _cG_=caml_call4(Data_encoding[27],0,0,cst_location$5,location_encoding),
     _cH_=caml_call2(Data_encoding[32],_cG_,_cF_),
     _cJ_=
      [0,
       function(ppf,param)
        {var token=param[2],loc=param[1];
         return caml_call6
                 (Stdlib_format[123],
                  ppf,
                  _cI_,
                  print_location,
                  loc,
                  print_token_kind,
                  token)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_unex$0,
      cst_Micheline_parser_error_une$0,
      cst_While_parsing_a_piece_of_M$8,
      _cJ_,
      _cH_,
      _cE_,
      _cD_);
    function _cK_(param)
     {var token=param[2],loc=param[1];return [0,Extra,[0,token,loc]]}
    function _cL_(param)
     {if(param[1] === Extra)
       {var match=param[2],loc=match[2],token=match[1];
        return [0,[0,loc,token]]}
      return 0}
    var
     _cM_=caml_call4(Data_encoding[27],0,0,cst_token$1,token_value_encoding),
     _cN_=caml_call4(Data_encoding[27],0,0,cst_location$6,location_encoding),
     _cO_=caml_call2(Data_encoding[32],_cN_,_cM_),
     _cQ_=
      [0,
       function(ppf,param)
        {var token=param[2],loc=param[1];
         return caml_call6
                 (Stdlib_format[123],
                  ppf,
                  _cP_,
                  print_location,
                  loc,
                  print_token_kind,
                  token)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_extr,
      cst_Micheline_parser_error_ext,
      cst_While_parsing_a_piece_of_M$9,
      _cQ_,
      _cO_,
      _cL_,
      _cK_);
    function _cR_(node){return [0,Misaligned,node]}
    function _cS_(param)
     {if(param[1] === Misaligned){var node=param[2];return [0,node]}return 0}
    var
     _cT_=caml_call4(Data_encoding[27],0,0,cst_expression$1,node_encoding),
     _cU_=caml_call1(Data_encoding[31],_cT_),
     _cW_=
      [0,
       function(ppf,node)
        {var _c3_=location(node);
         return caml_call4(Stdlib_format[123],ppf,_cV_,print_location,_c3_)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_misa,
      cst_Micheline_parser_error_mis$0,
      cst_While_parsing_a_piece_of_M$10,
      _cW_,
      _cU_,
      _cS_,
      _cR_);
    function _cX_(param){return Empty}
    function _cY_(param){return param === Empty?_cZ_:0}
    var
     _c0_=Data_encoding[3],
     _c2_=
      [0,function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_c1_)}];
    caml_call8
     (Tezos_error_monad_Error_monad[3],
      950914574,
      cst_micheline_parse_error_empt,
      cst_Micheline_parser_error_emp,
      cst_Tried_to_interpret_an_empt,
      _c2_,
      _c0_,
      _cY_,
      _cX_);
    var
     Tezos_micheline_Micheline_pars=
      [0,
       no_parsing_error,
       point_zero,
       location_zero,
       point_encoding,
       location_encoding,
       tokenize,
       min_point,
       max_point,
       max_annot_length,
       node_encoding,
       Invalid_utf8_sequence,
       Unexpected_character,
       Undefined_escape_sequence,
       Missing_break_after_number,
       Unterminated_string,
       Unterminated_integer,
       Odd_lengthed_bytes,
       Unterminated_comment,
       Unclosed,
       Unexpected,
       Extra,
       Misaligned,
       Empty,
       Annotation_length,
       parse_toplevel,
       parse_expression,
       print_location,
       print_point];
    caml_register_global
     (274,Tezos_micheline_Micheline_pars,"Tezos_micheline__Micheline_parser");
    return}
  (function(){return this}()));


//# 1 "../../.js/base58/base58.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_equal=runtime.caml_equal,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_string_get=runtime.caml_string_get,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Base58_Bitcoin_of_string_e$0=
      caml_string_of_jsbytes("Base58.Bitcoin.of_string_exn"),
     cst_Komodo_version_of_string_e=
      caml_string_of_jsbytes("Komodo.version_of_string_exn"),
     cst$6=caml_string_of_jsbytes("<"),
     cst_U=caml_string_of_jsbytes("U"),
     cst$7=caml_string_of_jsbytes("\x80"),
     cst_Base58_Bitcoin_of_string_e=
      caml_string_of_jsbytes("Base58.Bitcoin.of_string_exn"),
     cst_Base58_Bitcoin_t_of_bytes_=
      caml_string_of_jsbytes("Base58.Bitcoin.t_of_bytes: unknown version"),
     cst=caml_string_of_jsbytes("\0"),
     cst$0=caml_string_of_jsbytes("\x05"),
     cst_4=caml_string_of_jsbytes("4"),
     cst$1=caml_string_of_jsbytes("\x80"),
     cst$2=caml_string_of_jsbytes("\x04\x88\xad\xe4"),
     cst$3=caml_string_of_jsbytes("\x04\x88\xb2\x1e"),
     cst_o=caml_string_of_jsbytes("o"),
     cst$4=caml_string_of_jsbytes("\xc4"),
     cst$5=caml_string_of_jsbytes("\xef"),
     cst_5=caml_string_of_jsbytes("\x045\x83\x94"),
     cst_5$0=caml_string_of_jsbytes("\x045\x87\xcf"),
     cst_Base58_Tezos_of_string_exn=
      caml_string_of_jsbytes("Base58.Tezos.of_string_exn"),
     cst_Tezos_of_base58_exn_not_ba=
      caml_string_of_jsbytes("Tezos.of_base58_exn: not base58 data"),
     cst_Tezos_of_bytes_str_2=
      caml_string_of_jsbytes("Tezos.of_bytes: str < 2"),
     cst_block=caml_string_of_jsbytes("block"),
     cst_protocol=caml_string_of_jsbytes("protocol"),
     cst_operation=caml_string_of_jsbytes("operation"),
     cst_address=caml_string_of_jsbytes("address"),
     cst_signature=caml_string_of_jsbytes("signature"),
     cst_public_key=caml_string_of_jsbytes("public_key"),
     cst_peer=caml_string_of_jsbytes("peer"),
     cst_secret_key=caml_string_of_jsbytes("secret_key"),
     cst_Tezos_of_bytes_unknown_pre=
      caml_string_of_jsbytes("Tezos.of_bytes: unknown prefix"),
     cst_Base58_of_string_exn=caml_string_of_jsbytes("Base58.of_string_exn"),
     cst_Base58_safe_decode_exn=
      caml_string_of_jsbytes("Base58.safe_decode_exn"),
     cst_Invalid_data=caml_string_of_jsbytes("Invalid data"),
     cst_Base58_invalid_alphabet_le=
      caml_string_of_jsbytes("Base58: invalid alphabet (length)"),
     cst_123456789ABCDEFGHJKLMNPQRS=
      caml_string_of_jsbytes
       ("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"),
     cst_rpshnaf39wBUDNEGHJKLM4PQRS=
      caml_string_of_jsbytes
       ("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz"),
     cst_123456789abcdefghijkmnopqr=
      caml_string_of_jsbytes
       ("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"),
     block_hash=caml_string_of_jsbytes("\x014"),
     operation_hash=caml_string_of_jsbytes("\x05t"),
     protocol_hash=caml_string_of_jsbytes("\x02\xaa"),
     ed25519_public_key_hash=caml_string_of_jsbytes("\x06\xa1\x9f"),
     cryptobox_public_key_hash=caml_string_of_jsbytes("\x99g"),
     ed25519_public_key=caml_string_of_jsbytes("\r\x0f%\xd9"),
     ed25519_secret_key=caml_string_of_jsbytes("+\xf6N\x07"),
     ed25519_signature=caml_string_of_jsbytes("\t\xf5\xcd\x86\x12"),
     Stdlib_format=global_data.Stdlib__format,
     Stdlib=global_data.Stdlib,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_stringLabels=global_data.Stdlib__stringLabels,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Z=global_data.Z,
     Stdlib_set=global_data.Stdlib__set,
     Stdlib_map=global_data.Stdlib__map,
     zbase=runtime.ml_z_of_int(58),
     _e_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _d_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _c_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _b_=
      [0,
       [11,
        caml_string_of_jsbytes("Tezos.of_bytes: "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" must be "),
          [4,0,0,0,[11,caml_string_of_jsbytes(" bytes long"),0]]]]],
       caml_string_of_jsbytes("Tezos.of_bytes: %s must be %d bytes long")],
     _a_=
      [0,
       [11,
        caml_string_of_jsbytes("Base58: invalid alphabet (dup '"),
        [0,
         [11,
          caml_string_of_jsbytes("' "),
          [4,0,0,0,[12,32,[4,0,0,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("Base58: invalid alphabet (dup '%c' %d %d)")];
    function make(alphabet)
     {if(caml_ml_string_length(alphabet) !== 58)
       caml_call1(Stdlib[1],cst_Base58_invalid_alphabet_le);
      var
       str=caml_call2(Stdlib_bytes[1],256,255),
       _aj_=caml_ml_string_length(alphabet) - 1 | 0,
       _ai_=0;
      if(! (_aj_ < 0))
       {var i=_ai_;
        for(;;)
         {var char$0=caml_string_get(alphabet,i);
          if(255 !== caml_bytes_get(str,char$0))
           {var
             _ak_=caml_bytes_get(str,char$0),
             _al_=caml_call1(Stdlib[29],char$0);
            caml_call5(Stdlib_format[134],Stdlib[1],_a_,_al_,_ak_,i)}
          caml_bytes_set(str,char$0,caml_call1(Stdlib[29],i));
          var _am_=i + 1 | 0;
          if(_aj_ !== i){var i=_am_;continue}
          break}}
      return [0,alphabet,caml_call1(Stdlib_bytes[6],str)]}
    var
     bitcoin=make(cst_123456789ABCDEFGHJKLMNPQRS),
     ripple=make(cst_rpshnaf39wBUDNEGHJKLM4PQRS),
     flickr=make(cst_123456789abcdefghijkmnopqr);
    function count_trailing_char(s,c)
     {var len=caml_ml_string_length(s),i$1=len - 1 | 0,i=i$1;
      for(;;)
       {if(0 <= i)
         {if(caml_string_get(s,i) !== c)return (len - i | 0) - 1 | 0;
          var i$0=i - 1 | 0,i=i$0;
          continue}
        return len}}
    function checksum(Crypto,s)
     {var
       _ah_=caml_call1(Crypto[1],s),
       hash=caml_call1(Crypto[1],_ah_),
       res=caml_call2(Stdlib_bytes[1],4,0);
      caml_call5(Stdlib_bytes[12],hash,0,res,0,4);
      return caml_call1(Stdlib_bytes[42],res)}
    function compare(param,_ag_)
     {var t=_ag_[2],t$0=param[2];return caml_call2(Stdlib_string[33],t$0,t)}
    function equal(param,_af_)
     {var t=_af_[2],t$0=param[2];return caml_call2(Stdlib_string[34],t$0,t)}
    function pp(ppf,param)
     {var b58=param[2];return caml_call2(Stdlib_format[13],ppf,b58)}
    function of_bytes(alphabet,c,s$1)
     {var _ae_=checksum(c,s$1),s$2=caml_call2(Stdlib[28],s$1,_ae_);
      if(alphabet)var sth=alphabet[1],sth$0=sth;else var sth$0=bitcoin;
      var len=caml_ml_string_length(s$2);
      function _ac_(i){return caml_string_get(s$2,(len - i | 0) - 1 | 0)}
      var
       s=caml_call2(Stdlib_string[2],len,_ac_),
       zero=caml_string_get(sth$0[1],0),
       zeros=count_trailing_char(s,0),
       res_len=((len * 8 | 0) + 4 | 0) / 5 | 0,
       res=caml_call2(Stdlib_bytes[1],res_len,0),
       s$0=runtime.ml_z_of_bits(s);
      function loop(s)
       {if(caml_equal(s,Z[2]))return 0;
        var
         match=runtime.ml_z_div_rem(s,zbase),
         r=match[2],
         s$0=match[1],
         i=loop(s$0),
         x=runtime.ml_z_to_int(r),
         opt=[0,sth$0],
         alphabet=opt?sth$0:bitcoin;
        caml_bytes_set(res,i,caml_string_get(alphabet[1],x));
        return i + 1 | 0}
      var
       i=loop(s$0),
       res$0=caml_call3(Stdlib_bytes[8],res,0,i),
       _ad_=caml_call2(Stdlib_string[1],zeros,zero);
      return [0,163344596,caml_call2(Stdlib[28],_ad_,res$0)]}
    function to_bytes(alphabet$0,c$0,param)
     {var s$0=param[2];
      if(alphabet$0)var sth=alphabet$0[1],sth$0=sth;else var sth$0=bitcoin;
      var c=caml_string_get(sth$0[1],0),len=caml_ml_string_length(s$0),i=0;
      for(;;)
       {if(i === len)
         var zeros=len;
        else
         {if(caml_string_get(s$0,i) === c){var i$0=i + 1 | 0,i=i$0;continue}
          var zeros=i}
        var len$0=caml_ml_string_length(s$0),res=Z[2],i$1=zeros;
        for(;;)
         {if(i$1 === len$0)
           {var
             res$1=runtime.ml_z_to_bits(res),
             res_tzeros=count_trailing_char(res$1,0),
             len$1=caml_ml_string_length(res$1) - res_tzeros | 0,
             _$_=
              function(i)
               {return caml_string_get(res$1,(len$1 - i | 0) - 1 | 0)},
             _aa_=caml_call2(Stdlib_string[2],len$1,_$_),
             _ab_=caml_call2(Stdlib_string[1],zeros,0),
             s=caml_call2(Stdlib[28],_ab_,_aa_),
             len$2=caml_ml_string_length(s),
             msg=caml_call3(Stdlib_string[4],s,0,len$2 - 4 | 0),
             msg_hash=caml_call3(Stdlib_string[4],s,len$2 - 4 | 0,4);
            return runtime.caml_string_notequal(msg_hash,checksum(c$0,msg))
                    ?0
                    :[0,msg]}
          var
           x=caml_string_get(s$0,i$1),
           opt=[0,sth$0],
           alphabet=opt?sth$0:bitcoin,
           pos=caml_string_get(alphabet[2],x);
          if(255 === pos)caml_call1(Stdlib[2],cst_Invalid_data);
          var
           x$0=runtime.ml_z_of_int(pos),
           res$0=runtime.ml_z_add(x$0,runtime.ml_z_mul(res,zbase)),
           i$2=i$1 + 1 | 0,
           res=res$0,
           i$1=i$2;
          continue}}}
    function to_bytes_exn(alphabet,c,s)
     {var match=to_bytes(alphabet,c,s);
      if(match){var s$0=match[1];return s$0}
      return caml_call1(Stdlib[1],cst_Base58_safe_decode_exn)}
    function of_string(alphabet,c,str)
     {var match=to_bytes(alphabet,c,[0,163344596,str]);
      return match?[0,[0,163344596,str]]:0}
    function of_string_exn(alphabet,c,str)
     {var match=to_bytes(alphabet,c,[0,163344596,str]);
      return match
              ?[0,163344596,str]
              :caml_call1(Stdlib[1],cst_Base58_of_string_exn)}
    function to_string(param){var b58=param[2];return b58}
    function chars_of_string(str)
     {var chars=[0,0];
      function ___(c){chars[1] = [0,c,chars[1]];return 0}
      caml_call2(Stdlib_stringLabels[8],___,str);
      return caml_call1(Stdlib_list[9],chars[1])}
    function compare$0(param,_Z_)
     {var p2=_Z_[2],v2=_Z_[1],p1=param[2],v1=param[1];
      return v2 < v1?1:v1 < v2?-1:caml_call2(Stdlib_string[33],p1,p2)}
    var equal$0=caml_equal;
    function sub_or_fail(str,start,len,error_msg)
     {try
       {var _X_=caml_call3(Stdlib_string[4],str,start,len);return _X_}
      catch(_Y_)
       {var _W_=caml_call3(Stdlib_printf[4],_b_,error_msg,len - start | 0);
        return caml_call1(Stdlib[1],_W_)}}
    function t_of_bytes(bytes)
     {if(caml_ml_string_length(bytes) < 2)
       caml_call1(Stdlib[1],cst_Tezos_of_bytes_str_2);
      var match=chars_of_string(bytes);
      if(match)
       {var _F_=match[1];
        if(43 === _F_)
         {var _G_=match[2];
          if(_G_ && 246 === _G_[1])
           {var _H_=_G_[2];
            if(_H_ && 78 === _H_[1])
             {var _I_=_H_[2];
              if(_I_ && 7 === _I_[1])
               return [0,6,sub_or_fail(bytes,4,64,cst_secret_key)]}}}
        else
         if(153 === _F_)
          {var _J_=match[2];
           if(_J_ && 103 === _J_[1])
            return [0,4,sub_or_fail(bytes,2,16,cst_peer)]}
         else
          if(! (14 <= _F_))
           switch(_F_)
            {case 1:
              var _K_=match[2];
              if(_K_ && 52 === _K_[1])
               return [0,0,sub_or_fail(bytes,2,32,cst_block)];
              break;
             case 2:
              var _L_=match[2];
              if(_L_ && 170 === _L_[1])
               return [0,2,sub_or_fail(bytes,2,32,cst_protocol)];
              break;
             case 5:
              var _M_=match[2];
              if(_M_ && 116 === _M_[1])
               return [0,1,sub_or_fail(bytes,2,32,cst_operation)];
              break;
             case 6:
              var _N_=match[2];
              if(_N_ && 161 === _N_[1])
               {var _O_=_N_[2];
                if(_O_ && 159 === _O_[1])
                 return [0,3,sub_or_fail(bytes,3,20,cst_address)]}
              break;
             case 9:
              var _P_=match[2];
              if(_P_ && 245 === _P_[1])
               {var _Q_=_P_[2];
                if(_Q_ && 205 === _Q_[1])
                 {var _R_=_Q_[2];
                  if(_R_ && 134 === _R_[1])
                   {var _S_=_R_[2];
                    if(_S_ && 18 === _S_[1])
                     return [0,7,sub_or_fail(bytes,5,64,cst_signature)]}}}
              break;
             case 13:
              var _T_=match[2];
              if(_T_ && 15 === _T_[1])
               {var _U_=_T_[2];
                if(_U_ && 37 === _U_[1])
                 {var _V_=_U_[2];
                  if(_V_ && 217 === _V_[1])
                   return [0,5,sub_or_fail(bytes,4,32,cst_public_key)]}}
              break
             }}
      return caml_call1(Stdlib[1],cst_Tezos_of_bytes_unknown_pre)}
    function create(version,payload){return [0,version,payload]}
    function of_base58(c,b58)
     {var match=to_bytes(0,c,b58);
      if(match)
       {var bytes=match[1];
        try {var _D_=[0,t_of_bytes(bytes)];return _D_}catch(_E_){return 0}}
      return 0}
    function of_base58_exn(c,b58)
     {var match=to_bytes(0,c,b58);
      if(match){var bytes=match[1];return t_of_bytes(bytes)}
      return caml_call1(Stdlib[1],cst_Tezos_of_base58_exn_not_ba)}
    function to_base58(c,param)
     {var payload=param[2],version=param[1];
      switch(version)
       {case 0:var _C_=block_hash;break;
        case 1:var _C_=operation_hash;break;
        case 2:var _C_=protocol_hash;break;
        case 3:var _C_=ed25519_public_key_hash;break;
        case 4:var _C_=cryptobox_public_key_hash;break;
        case 5:var _C_=ed25519_public_key;break;
        case 6:var _C_=ed25519_secret_key;break;
        default:var _C_=ed25519_signature}
      return of_bytes(0,c,caml_call2(Stdlib[28],_C_,payload))}
    function of_string$0(c,str)
     {var match=of_string(0,c,str);
      if(match){var b58=match[1];return of_base58(c,b58)}
      return 0}
    function of_string_exn$0(c,str)
     {var match=of_string$0(c,str);
      if(match){var b58=match[1];return b58}
      return caml_call1(Stdlib[1],cst_Base58_Tezos_of_string_exn)}
    function to_string$0(c,t){return to_base58(c,t)[2]}
    function pp$0(c,ppf,t)
     {var _B_=to_string$0(c,t);
      return caml_call3(Stdlib_format[123],ppf,_c_,_B_)}
    var
     Set=caml_call1(Stdlib_set[1],[0,compare$0]),
     Map=caml_call1(Stdlib_map[1],[0,compare$0]);
    function compare$1(param,_A_)
     {var p2=_A_[2],v2=_A_[1],p1=param[2],v1=param[1];
      return runtime.caml_greaterthan(v1,v2)
              ?1
              :runtime.caml_lessthan(v1,v2)
                ?-1
                :caml_call2(Stdlib_string[33],p1,p2)}
    var equal$1=caml_equal;
    function create$0(version,payload){return [0,version,payload]}
    function of_base58_exn$0(c,b58)
     {var
       s=to_bytes_exn(0,c,b58),
       len=caml_ml_string_length(s),
       match=chars_of_string(s),
       switch$0=0;
      if(match)
       {var _p_=match[1];
        if(112 <= _p_)
         {if(128 === _p_)
           {var match$0=[0,3,caml_call3(Stdlib_string[4],s,1,len - 1 | 0)];
            switch$0 = 1}
          else
           if(196 === _p_)
            {var match$0=[0,7,caml_call3(Stdlib_string[4],s,1,len - 1 | 0)];
             switch$0 = 1}}
        else
         {var switcher=_p_ - 6 | 0;
          if(104 < switcher >>> 0)
           if(105 <= switcher)
            {var match$0=[0,6,caml_call3(Stdlib_string[4],s,1,len - 1 | 0)];
             switch$0 = 1}
           else
            {var switcher$0=switcher + 6 | 0;
             switch(switcher$0)
              {case 0:
                var
                 match$0=
                  [0,0,caml_call3(Stdlib_string[4],s,1,len - 1 | 0)];
                switch$0 = 1;
                break;
               case 4:
                var _q_=match[2];
                if(_q_)
                 {var _r_=_q_[1];
                  if(53 === _r_)
                   {var _s_=_q_[2];
                    if(_s_)
                     {var _t_=_s_[1];
                      if(131 === _t_)
                       {var _u_=_s_[2];
                        if(_u_ && 148 === _u_[1])
                         {var
                           match$0=
                            [0,9,caml_call3(Stdlib_string[4],s,4,len - 4 | 0)];
                          switch$0 = 1}}
                      else
                       if(135 === _t_)
                        {var _v_=_s_[2];
                         if(_v_ && 207 === _v_[1])
                          {var
                            match$0=
                             [0,10,caml_call3(Stdlib_string[4],s,4,len - 4 | 0)];
                           switch$0 = 1}}}}
                  else
                   if(136 === _r_)
                    {var _w_=_q_[2];
                     if(_w_)
                      {var _x_=_w_[1];
                       if(173 === _x_)
                        {var _y_=_w_[2];
                         if(_y_ && 228 === _y_[1])
                          {var
                            match$0=
                             [0,4,caml_call3(Stdlib_string[4],s,4,len - 4 | 0)];
                           switch$0 = 1}}
                       else
                        if(178 === _x_)
                         {var _z_=_w_[2];
                          if(_z_ && 30 === _z_[1])
                           {var
                             match$0=
                              [0,5,caml_call3(Stdlib_string[4],s,4,len - 4 | 0)];
                            switch$0 = 1}}}}}
                break;
               case 5:
                var
                 match$0=
                  [0,1,caml_call3(Stdlib_string[4],s,1,len - 1 | 0)];
                switch$0 = 1;
                break
               }}
          else
           if(46 === switcher)
            {var match$0=[0,2,caml_call3(Stdlib_string[4],s,1,len - 1 | 0)];
             switch$0 = 1}}}
      if(! switch$0)
       var match$0=caml_call1(Stdlib[1],cst_Base58_Bitcoin_t_of_bytes_);
      var payload=match$0[2],version=match$0[1];
      return [0,version,payload]}
    function of_base58$0(c,b58)
     {try {var _n_=[0,of_base58_exn$0(c,b58)];return _n_}catch(_o_){return 0}}
    function to_base58$0(c,param)
     {var payload=param[2],version=param[1];
      if(typeof version === "number")
       switch(version)
        {case 0:var _m_=cst;break;
         case 1:var _m_=cst$0;break;
         case 2:var _m_=cst_4;break;
         case 3:var _m_=cst$1;break;
         case 4:var _m_=cst$2;break;
         case 5:var _m_=cst$3;break;
         case 6:var _m_=cst_o;break;
         case 7:var _m_=cst$4;break;
         case 8:var _m_=cst$5;break;
         case 9:var _m_=cst_5;break;
         default:var _m_=cst_5$0}
      else
       var i=version[1],_m_=i;
      return of_bytes(0,c,caml_call2(Stdlib[28],_m_,payload))}
    function of_string$1(c,str)
     {var match=of_string(0,c,str);
      if(match){var b58=match[1];return of_base58$0(c,b58)}
      return 0}
    function of_string_exn$1(c,str)
     {var match=of_string$1(c,str);
      if(match){var b58=match[1];return b58}
      return caml_call1(Stdlib[1],cst_Base58_Bitcoin_of_string_e)}
    function to_string$1(c,t){return to_base58$0(c,t)[2]}
    function pp$1(c,ppf,t)
     {var _l_=to_string$1(c,t);
      return caml_call3(Stdlib_format[123],ppf,_d_,_l_)}
    var
     Set$0=caml_call1(Stdlib_set[1],[0,compare$1]),
     Map$0=caml_call1(Stdlib_map[1],[0,compare$1]);
    function compare$2(param,_k_)
     {var p2=_k_[2],v2=_k_[1],p1=param[2],v1=param[1];
      return v2 < v1?1:v1 < v2?-1:caml_call2(Stdlib_string[33],p1,p2)}
    var equal$2=caml_equal;
    function create$1(version,payload){return [0,version,payload]}
    function of_base58_exn$1(c,b58)
     {var
       s=to_bytes_exn(0,c,b58),
       len=caml_ml_string_length(s),
       match=chars_of_string(s),
       switch$0=0;
      if(match)
       {var _j_=match[1];
        if(60 === _j_)
         var match$0=[0,0,caml_call3(Stdlib_string[4],s,1,len - 1 | 0)];
        else
         if(85 === _j_)
          var match$0=[0,1,caml_call3(Stdlib_string[4],s,1,len - 1 | 0)];
         else
          if(128 === _j_)
           var match$0=[0,2,caml_call3(Stdlib_string[4],s,1,len - 1 | 0)];
          else
           switch$0 = 1}
      else
       switch$0 = 1;
      if(switch$0)
       var match$0=caml_call1(Stdlib[1],cst_Komodo_version_of_string_e);
      var payload=match$0[2],version=match$0[1];
      return [0,version,payload]}
    function of_base58$1(c,b58)
     {try {var _h_=[0,of_base58_exn$1(c,b58)];return _h_}catch(_i_){return 0}}
    function to_base58$1(c,param)
     {var payload=param[2],version=param[1];
      switch(version)
       {case 0:var _g_=cst$6;break;
        case 1:var _g_=cst_U;break;
        default:var _g_=cst$7}
      return of_bytes(0,c,caml_call2(Stdlib[28],_g_,payload))}
    function of_string$2(c,str)
     {var match=of_string(0,c,str);
      if(match){var b58=match[1];return of_base58$1(c,b58)}
      return 0}
    function of_string_exn$2(c,str)
     {var match=of_string$2(c,str);
      if(match){var b58=match[1];return b58}
      return caml_call1(Stdlib[1],cst_Base58_Bitcoin_of_string_e$0)}
    function to_string$2(c,t){return to_base58$1(c,t)[2]}
    function pp$2(c,ppf,t)
     {var _f_=to_string$2(c,t);
      return caml_call3(Stdlib_format[123],ppf,_e_,_f_)}
    var
     Set$1=caml_call1(Stdlib_set[1],[0,compare$2]),
     Map$1=caml_call1(Stdlib_map[1],[0,compare$2]),
     Set$2=caml_call1(Stdlib_set[1],[0,compare]),
     Map$2=caml_call1(Stdlib_map[1],[0,compare]),
     Base58=
      [0,
       [0,bitcoin,ripple,flickr,bitcoin],
       compare,
       equal,
       equal,
       pp,
       to_string,
       of_bytes,
       to_bytes,
       to_bytes_exn,
       of_string,
       of_string_exn,
       to_string,
       [0,
        compare$0,
        equal$0,
        equal$0,
        pp$0,
        to_string$0,
        create,
        of_base58,
        of_base58_exn,
        to_base58,
        of_string$0,
        of_string_exn$0,
        to_string$0,
        Set,
        Map],
       [0,
        compare$1,
        equal$1,
        equal$1,
        pp$1,
        to_string$1,
        create$0,
        of_base58$0,
        of_base58_exn$0,
        to_base58$0,
        of_string$1,
        of_string_exn$1,
        to_string$1,
        Set$0,
        Map$0],
       [0,
        compare$2,
        equal$2,
        equal$2,
        pp$2,
        to_string$2,
        create$1,
        of_base58$1,
        of_base58_exn$1,
        to_base58$1,
        of_string$2,
        of_string_exn$2,
        to_string$2,
        Set$1,
        Map$1],
       Set$2,
       Map$2];
    runtime.caml_register_global(60,Base58,"Base58");
    return}
  (function(){return this}()));


//# 1 "../../.js/eqaf/eqaf.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_string_get16=runtime.caml_string_get16,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_string_unsafe_get=runtime.caml_string_unsafe_get;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_compare_be_with_len=caml_string_of_jsbytes("compare_be_with_len"),
     cst_compare_le_with_len=caml_string_of_jsbytes("compare_le_with_len"),
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib=global_data.Stdlib;
    function equal(a,b)
     {var ln=caml_ml_string_length(a),bl=caml_ml_string_length(b);
      if(ln !== bl)return 0;
      var l1=ln >> 1,r=[0,0],_j_=l1 - 1 | 0,_i_=0;
      if(! (_j_ < 0))
       {var i=_i_;
        for(;;)
         {var
           _n_=caml_string_get16(b,i * 2 | 0),
           _o_=caml_string_get16(a,i * 2 | 0) ^ _n_;
          r[1] = r[1] | _o_;
          var _p_=i + 1 | 0;
          if(_j_ !== i){var i=_p_;continue}
          break}}
      var _l_=ln & 1,_k_=1;
      if(! (_l_ < 1))
       {var for$0=_k_;
        for(;;)
         {r[1]
          =
          r[1]
          |
          caml_string_unsafe_get(a,ln - 1 | 0)
          ^
          caml_string_unsafe_get(b,ln - 1 | 0);
          var _m_=for$0 + 1 | 0;
          if(_l_ !== for$0){var for$0=_m_;continue}
          break}}
      return 0 === r[1]?1:0}
    function sixteen_if_minus_one_or_less(n){return n >> Stdlib_sys[10] & 16}
    function eight_if_one_or_more(n){return (- n | 0) >> Stdlib_sys[10] & 8}
    function _a_(ln,a,b)
     {var r=[0,0],i=[0,ln - 1 | 0];
      for(;;)
       {if(0 <= i[1])
         {var
           xa=caml_string_unsafe_get(a,i[1]),
           xb=caml_string_unsafe_get(b,i[1]),
           c=xa - xb | 0,
           _f_=r[1],
           _g_=eight_if_one_or_more(c),
           _h_=(sixteen_if_minus_one_or_less(c) + _g_ | 0) >>> _f_ | 0;
          r[1] = r[1] | _h_;
          i[1] += -1;
          continue}
        return (r[1] & 8) - (r[1] & 16) | 0}}
    function compare_le_with_len(ln,a,b)
     {var al=caml_ml_string_length(a),bl=caml_ml_string_length(b);
      return 0 === ln
              ?0
              :0 === (al ^ ln | bl ^ ln)
                ?_a_(ln,a,b)
                :caml_call1(Stdlib[1],cst_compare_le_with_len)}
    function compare_le(a,b)
     {var al=caml_ml_string_length(a),bl=caml_ml_string_length(b);
      return al < bl?1:bl < al?-1:_a_(al,a,b)}
    function _b_(ln,a,b)
     {var r=[0,0],i=[0,0];
      for(;;)
       {if(i[1] < ln)
         {var
           xa=caml_string_unsafe_get(a,i[1]),
           xb=caml_string_unsafe_get(b,i[1]),
           c=xa - xb | 0,
           _c_=r[1],
           _d_=eight_if_one_or_more(c),
           _e_=(sixteen_if_minus_one_or_less(c) + _d_ | 0) >>> _c_ | 0;
          r[1] = r[1] | _e_;
          i[1]++;
          continue}
        return (r[1] & 8) - (r[1] & 16) | 0}}
    function compare_be_with_len(ln,a,b)
     {var al=caml_ml_string_length(a),bl=caml_ml_string_length(b);
      return 0 === ln
              ?0
              :0 === (al ^ ln | bl ^ ln)
                ?_b_(ln,a,b)
                :caml_call1(Stdlib[1],cst_compare_be_with_len)}
    function compare_be(a,b)
     {var al=caml_ml_string_length(a),bl=caml_ml_string_length(b);
      return al < bl?1:bl < al?-1:_b_(al,a,b)}
    function one_if_not_zero(n)
     {var n$0=- n | 0 | n;return n$0 >>> (Stdlib_sys[10] - 1 | 0) | 0}
    function zero_if_not_zero(n){return one_if_not_zero(n) - 1 | 0}
    function select_int(choose_b,a,b)
     {var mask=(- choose_b | 0 | choose_b) >> Stdlib_sys[10];
      return a & caml_call1(Stdlib[21],mask) | b & mask}
    var
     Eqaf=
      [0,
       equal,
       compare_be,
       compare_be_with_len,
       compare_le,
       compare_le_with_len,
       one_if_not_zero,
       zero_if_not_zero,
       select_int];
    runtime.caml_register_global(4,Eqaf,"Eqaf");
    return}
  (function(){return this}()));


//# 1 "../../.js/stdlib-shims/stdlib_shims.cma.js"
(function(joo_global_object)
   {"use strict";var runtime=joo_global_object.jsoo_runtime;return}
  (function(){return this}()));


//# 1 "../../.js/digestif.ocaml/digestif_ocaml.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_ba_dim_1=runtime.caml_ba_dim_1,
     caml_ba_get_1=runtime.caml_ba_get_1,
     caml_ba_set_1=runtime.caml_ba_set_1,
     caml_ba_sub=runtime.caml_ba_sub,
     caml_ba_uint8_get32=runtime.caml_ba_uint8_get32,
     caml_ba_uint8_get64=runtime.caml_ba_uint8_get64,
     caml_ba_uint8_set32=runtime.caml_ba_uint8_set32,
     caml_ba_uint8_set64=runtime.caml_ba_uint8_set64,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_bytes_set32=runtime.caml_bytes_set32,
     caml_bytes_set64=runtime.caml_bytes_set64,
     caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
     caml_check_bound=runtime.caml_check_bound,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_int32_bswap=runtime.caml_int32_bswap,
     caml_int64_add=runtime.caml_int64_add,
     caml_int64_and=runtime.caml_int64_and,
     caml_int64_bswap=runtime.caml_int64_bswap,
     caml_int64_of_int32=runtime.caml_int64_of_int32,
     caml_int64_or=runtime.caml_int64_or,
     caml_int64_shift_left=runtime.caml_int64_shift_left,
     caml_int64_shift_right=runtime.caml_int64_shift_right,
     caml_int64_shift_right_unsigne=runtime.caml_int64_shift_right_unsigned,
     caml_int64_to_int32=runtime.caml_int64_to_int32,
     caml_int64_xor=runtime.caml_int64_xor,
     caml_lessthan=runtime.caml_lessthan,
     caml_make_vect=runtime.caml_make_vect,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_get=runtime.caml_string_get,
     caml_string_get32=runtime.caml_string_get32,
     caml_string_get64=runtime.caml_string_get64,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Baijiu_Xor_xor_inrot_buffe=
      caml_string_of_jsbytes("Baijiu.Xor.xor_inrot: buffers to small"),
     cst_Baijiu_rmd160_Unsafe_Leave=
      caml_string_of_jsbytes("Baijiu_rmd160.Unsafe.Leave"),
     fmt=
      [0,
       [11,
        caml_string_of_jsbytes("Invalid digest_size:"),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" to make a BLAKE2{S,B} implementation"),
          0]]],
       caml_string_of_jsbytes
        ("Invalid digest_size:%d to make a BLAKE2{S,B} implementation")],
     cst_offset_out_of_bounds$0=caml_string_of_jsbytes("offset out of bounds"),
     cst_offset_out_of_bounds=caml_string_of_jsbytes("offset out of bounds"),
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_string=global_data.Stdlib__string,
     Bigarray_compat=global_data.Bigarray_compat,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib=global_data.Stdlib,
     Stdlib_nativeint=global_data.Stdlib__nativeint,
     Eqaf=global_data.Eqaf,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_char=global_data.Stdlib__char,
     Assert_failure=global_data.Assert_failure,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_int32=global_data.Stdlib__int32,
     Stdlib_int64=global_data.Stdlib__int64,
     Stdlib_list=global_data.Stdlib__list,
     _f_=
      [0,
       [11,caml_string_of_jsbytes("invalid hash size"),0],
       caml_string_of_jsbytes("invalid hash size")],
     _e_=[0,[4,6,[0,2,2],0,0],caml_string_of_jsbytes("%02x")],
     _c_=
      [0,
       [11,caml_string_of_jsbytes("Not enough hex value"),0],
       caml_string_of_jsbytes("Not enough hex value")],
     _d_=
      [0,
       [11,
        caml_string_of_jsbytes("Too much enough bytes (reach: "),
        [4,
         0,
         0,
         0,
         [11,caml_string_of_jsbytes(", expect: "),[4,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes("Too much enough bytes (reach: %d, expect: %d)")],
     _b_=
      [0,
       [11,caml_string_of_jsbytes("of_hex: odd number of hex characters"),0],
       caml_string_of_jsbytes("of_hex: odd number of hex characters")],
     _a_=
      [0,
       [11,caml_string_of_jsbytes("of_hex: "),[4,8,[0,2,2],0,0]],
       caml_string_of_jsbytes("of_hex: %02X")],
     _J_=[0,caml_string_of_jsbytes("src-ocaml/baijiu_blake2b.ml"),405,6],
     _F_=
      [0,
       [11,
        caml_string_of_jsbytes("out length can not be upper than "),
        [4,
         0,
         0,
         0,
         [11,caml_string_of_jsbytes(" (out length: "),[4,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes
        ("out length can not be upper than %d (out length: %d)")],
     _G_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _H_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _I_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _D_=runtime.caml_int64_create_lo_mi_hi(128,0,0),
     _E_=runtime.caml_int64_create_lo_mi_hi(128,0,0),
     _B_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _C_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _m_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _n_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _o_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _k_=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     _l_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _g_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
     _h_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
     _i_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
     _j_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(12372232,15099891,27145),
       runtime.caml_int64_create_lo_mi_hi(13281083,11437444,47975),
       runtime.caml_int64_create_lo_mi_hi(9762859,15954686,15470),
       runtime.caml_int64_create_lo_mi_hi(1914609,16071263,42319),
       runtime.caml_int64_create_lo_mi_hi(15106769,5406637,20750),
       runtime.caml_int64_create_lo_mi_hi(4090911,6851627,39685),
       runtime.caml_int64_create_lo_mi_hi(4308331,14265339,8067),
       runtime.caml_int64_create_lo_mi_hi(8266105,13441299,23520)],
     _p_=[0,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],
     _q_=[0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
     _r_=[0,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0],
     _s_=[0,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5],
     _t_=[0,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10],
     _u_=[0,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11],
     _v_=[0,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9],
     _w_=[0,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13],
     _x_=[0,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8],
     _y_=[0,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4],
     _z_=[0,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],
     _A_=[0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
     _Y_=[0,caml_string_of_jsbytes("src-ocaml/baijiu_blake2s.ml"),366,6],
     _X_=
      [0,
       [11,
        caml_string_of_jsbytes("out length can not be upper than "),
        [4,
         0,
         0,
         0,
         [11,caml_string_of_jsbytes(" (out length: "),[4,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes
        ("out length can not be upper than %d (out length: %d)")],
     _K_=[0,0,0,0,0,0,0,0,0],
     _L_=[0,0,0,0,0,0,0,0,0],
     _M_=
      [0,
       1779033703,
       -1150833019,
       1013904242,
       -1521486534,
       1359893119,
       -1694144372,
       528734635,
       1541459225],
     _N_=[0,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0],
     _O_=[0,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5],
     _P_=[0,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10],
     _Q_=[0,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11],
     _R_=[0,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9],
     _S_=[0,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13],
     _T_=[0,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8],
     _U_=[0,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4],
     _V_=[0,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],
     _W_=[0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
     _$_=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     ___=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     _Z_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aa_=[0,1732584193,-271733879,-1732584194,271733878,-1009589776],
     _ae_=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     _ad_=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     _ab_=[0,1732584193,-271733879,-1732584194,271733878,-1009589776],
     _ac_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aj_=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     _ai_=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     _af_=
      [0,
       1779033703,
       -1150833019,
       1013904242,
       -1521486534,
       1359893119,
       -1694144372,
       528734635,
       1541459225],
     _ag_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _ah_=
      [0,
       1116352408,
       1899447441,
       -1245643825,
       -373957723,
       961987163,
       1508970993,
       -1841331548,
       -1424204075,
       -670586216,
       310598401,
       607225278,
       1426881987,
       1925078388,
       -2132889090,
       -1680079193,
       -1046744716,
       -459576895,
       -272742522,
       264347078,
       604807628,
       770255983,
       1249150122,
       1555081692,
       1996064986,
       -1740746414,
       -1473132947,
       -1341970488,
       -1084653625,
       -958395405,
       -710438585,
       113926993,
       338241895,
       666307205,
       773529912,
       1294757372,
       1396182291,
       1695183700,
       1986661051,
       -2117940946,
       -1838011259,
       -1564481375,
       -1474664885,
       -1035236496,
       -949202525,
       -778901479,
       -694614492,
       -200395387,
       275423344,
       430227734,
       506948616,
       659060556,
       883997877,
       958139571,
       1322822218,
       1537002063,
       1747873779,
       1955562222,
       2024104815,
       -2067236844,
       -1933114872,
       -1866530822,
       -1538233109,
       -1090935817,
       -965641998],
     _ak_=
      [0,
       -1056596264,
       914150663,
       812702999,
       -150054599,
       -4191439,
       1750603025,
       1694076839,
       -1090891868],
     _al_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _as_=runtime.caml_int64_create_lo_mi_hi(6,0,0),
     _at_=runtime.caml_int64_create_lo_mi_hi(128,0,0),
     _ar_=runtime.caml_int64_create_lo_mi_hi(255,0,0),
     _am_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _an_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(1,0,0),
       runtime.caml_int64_create_lo_mi_hi(32898,0,0),
       runtime.caml_int64_create_lo_mi_hi(32906,0,32768),
       runtime.caml_int64_create_lo_mi_hi(32768,128,32768),
       runtime.caml_int64_create_lo_mi_hi(32907,0,0),
       runtime.caml_int64_create_lo_mi_hi(1,128,0),
       runtime.caml_int64_create_lo_mi_hi(32897,128,32768),
       runtime.caml_int64_create_lo_mi_hi(32777,0,32768),
       runtime.caml_int64_create_lo_mi_hi(138,0,0),
       runtime.caml_int64_create_lo_mi_hi(136,0,0),
       runtime.caml_int64_create_lo_mi_hi(32777,128,0),
       runtime.caml_int64_create_lo_mi_hi(10,128,0),
       runtime.caml_int64_create_lo_mi_hi(32907,128,0),
       runtime.caml_int64_create_lo_mi_hi(139,0,32768),
       runtime.caml_int64_create_lo_mi_hi(32905,0,32768),
       runtime.caml_int64_create_lo_mi_hi(32771,0,32768),
       runtime.caml_int64_create_lo_mi_hi(32770,0,32768),
       runtime.caml_int64_create_lo_mi_hi(128,0,32768),
       runtime.caml_int64_create_lo_mi_hi(32778,0,0),
       runtime.caml_int64_create_lo_mi_hi(10,128,32768),
       runtime.caml_int64_create_lo_mi_hi(32897,128,32768),
       runtime.caml_int64_create_lo_mi_hi(32896,0,32768),
       runtime.caml_int64_create_lo_mi_hi(1,128,0),
       runtime.caml_int64_create_lo_mi_hi(32776,128,32768)],
     _ao_=
      [0,1,3,6,10,15,21,28,36,45,55,2,14,27,41,56,8,25,43,62,18,39,61,20,44],
     _ap_=[0,10,7,11,17,18,3,5,16,8,21,24,4,15,23,19,13,12,2,20,14,22,9,6,1],
     _aq_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(16776960,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16711935,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(65535,16777215,65535),
       runtime.caml_int64_create_lo_mi_hi(16777215,16776960,65535),
       runtime.caml_int64_create_lo_mi_hi(16777215,16711935,65535),
       runtime.caml_int64_create_lo_mi_hi(16777215,65535,65535),
       runtime.caml_int64_create_lo_mi_hi(16777215,16777215,65280),
       runtime.caml_int64_create_lo_mi_hi(16777215,16777215,255)],
     _aC_=runtime.caml_int64_create_lo_mi_hi(127,0,0),
     _aB_=runtime.caml_int64_create_lo_mi_hi(127,0,0),
     _ay_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _az_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aA_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _au_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(12372232,15099891,27145),
       runtime.caml_int64_create_lo_mi_hi(13281083,11437444,47975),
       runtime.caml_int64_create_lo_mi_hi(9762859,15954686,15470),
       runtime.caml_int64_create_lo_mi_hi(1914609,16071263,42319),
       runtime.caml_int64_create_lo_mi_hi(15106769,5406637,20750),
       runtime.caml_int64_create_lo_mi_hi(4090911,6851627,39685),
       runtime.caml_int64_create_lo_mi_hi(4308331,14265339,8067),
       runtime.caml_int64_create_lo_mi_hi(8266105,13441299,23520)],
     _av_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aw_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _ax_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(2666018,3119319,17034),
       runtime.caml_int64_create_lo_mi_hi(15689165,4493603,28983),
       runtime.caml_int64_create_lo_mi_hi(5061423,16502764,46528),
       runtime.caml_int64_create_lo_mi_hi(9034684,14394753,59829),
       runtime.caml_int64_create_lo_mi_hi(4764984,12737523,14678),
       runtime.caml_int64_create_lo_mi_hi(380953,1175990,23025),
       runtime.caml_int64_create_lo_mi_hi(1658779,8561839,37439),
       runtime.caml_int64_create_lo_mi_hi(7176472,6215130,43804),
       runtime.caml_int64_create_lo_mi_hi(197186,11180195,55303),
       runtime.caml_int64_create_lo_mi_hi(7368638,5964101,4739),
       runtime.caml_int64_create_lo_mi_hi(14987916,8765006,9265),
       runtime.caml_int64_create_lo_mi_hi(16757986,8242133,21772),
       runtime.caml_int64_create_lo_mi_hi(8096111,6124786,29374),
       runtime.caml_int64_create_lo_mi_hi(1480369,11664955,32990),
       runtime.caml_int64_create_lo_mi_hi(13046325,436005,39900),
       runtime.caml_int64_create_lo_mi_hi(6891156,15824079,49563),
       runtime.caml_int64_create_lo_mi_hi(15813330,6930846,58523),
       runtime.caml_int64_create_lo_mi_hi(5187043,4687416,61374),
       runtime.caml_int64_create_lo_mi_hi(9229749,10339979,4033),
       runtime.caml_int64_create_lo_mi_hi(11312229,10603639,9228),
       runtime.caml_int64_create_lo_mi_hi(2818677,2912089,11753),
       runtime.caml_int64_create_lo_mi_hi(10937475,8694382,19060),
       runtime.caml_int64_create_lo_mi_hi(4324308,11132093,23728),
       runtime.caml_int64_create_lo_mi_hi(1135541,8968835,30457),
       runtime.caml_int64_create_lo_mi_hi(6741931,5329646,38974),
       runtime.caml_int64_create_lo_mi_hi(11809296,13004077,43057),
       runtime.caml_int64_create_lo_mi_hi(16458047,2607256,45059),
       runtime.caml_int64_create_lo_mi_hi(15666916,8374206,48985),
       runtime.caml_int64_create_lo_mi_hi(11046850,783165,50912),
       runtime.caml_int64_create_lo_mi_hi(698149,9521043,54695),
       runtime.caml_int64_create_lo_mi_hi(229999,6509024,1738),
       runtime.caml_int64_create_lo_mi_hi(945776,2713354,5161),
       runtime.caml_int64_create_lo_mi_hi(13774844,689478,10167),
       runtime.caml_int64_create_lo_mi_hi(2541862,2177116,11803),
       runtime.caml_int64_create_lo_mi_hi(12856045,7208026,19756),
       runtime.caml_int64_create_lo_mi_hi(9810911,856989,21304),
       runtime.caml_int64_create_lo_mi_hi(11494366,7558283,25866),
       runtime.caml_int64_create_lo_mi_hi(7844520,703292,30314),
       runtime.caml_int64_create_lo_mi_hi(15576806,13184583,33218),
       runtime.caml_int64_create_lo_mi_hi(8533307,2917652,37490),
       runtime.caml_int64_create_lo_mi_hi(15795044,15245644,41663),
       runtime.caml_int64_create_lo_mi_hi(4337665,6704060,43034),
       runtime.caml_int64_create_lo_mi_hi(16291729,9138384,49739),
       runtime.caml_int64_create_lo_mi_hi(5553712,5350150,51052),
       runtime.caml_int64_create_lo_mi_hi(15684120,15210966,53650),
       runtime.caml_int64_create_lo_mi_hi(6662416,402517,54937),
       runtime.caml_int64_create_lo_mi_hi(7413802,3507543,62478),
       runtime.caml_int64_create_lo_mi_hi(12308920,10514482,4202),
       runtime.caml_int64_create_lo_mi_hi(13816008,12654264,6564),
       runtime.caml_int64_create_lo_mi_hi(4303699,7080017,7735),
       runtime.caml_int64_create_lo_mi_hi(9366425,7818463,10056),
       runtime.caml_int64_create_lo_mi_hi(10176680,12367329,13488),
       runtime.caml_int64_create_lo_mi_hi(13195875,832453,14620),
       runtime.caml_int64_create_lo_mi_hi(4295371,11160291,20184),
       runtime.caml_int64_create_lo_mi_hi(6546291,13258615,23452),
       runtime.caml_int64_create_lo_mi_hi(11712675,7336918,26670),
       runtime.caml_int64_create_lo_mi_hi(15708924,8580701,29839),
       runtime.caml_int64_create_lo_mi_hi(1519456,6516547,30885),
       runtime.caml_int64_create_lo_mi_hi(15772530,7869601,33992),
       runtime.caml_int64_create_lo_mi_hi(6568428,133146,36039),
       runtime.caml_int64_create_lo_mi_hi(6495784,16775715,37054),
       runtime.caml_int64_create_lo_mi_hi(8568297,7138270,42064),
       runtime.caml_int64_create_lo_mi_hi(13007125,10745778,48889),
       runtime.caml_int64_create_lo_mi_hi(7492395,7926499,50801),
       runtime.caml_int64_create_lo_mi_hi(2515356,4116202,51751),
       runtime.caml_int64_create_lo_mi_hi(12632583,12109601,53638),
       runtime.caml_int64_create_lo_mi_hi(14740254,8246989,60122),
       runtime.caml_int64_create_lo_mi_hi(7262584,5210094,62845),
       runtime.caml_int64_create_lo_mi_hi(1535930,6793842,1776),
       runtime.caml_int64_create_lo_mi_hi(13146278,8242594,2659),
       runtime.caml_int64_create_lo_mi_hi(16321966,9962686,4415),
       runtime.caml_int64_create_lo_mi_hi(1853211,734483,7025),
       runtime.caml_int64_create_lo_mi_hi(294276,7861539,10459),
       runtime.caml_int64_create_lo_mi_hi(13051027,11238208,13002),
       runtime.caml_int64_create_lo_mi_hi(13221564,12454421,15518),
       runtime.caml_int64_create_lo_mi_hi(1051980,6800540,17181),
       runtime.caml_int64_create_lo_mi_hi(4080310,13942475,19653),
       runtime.caml_int64_create_lo_mi_hi(6651434,2727164,22911),
       runtime.caml_int64_create_lo_mi_hi(14088940,7318330,24523),
       runtime.caml_int64_create_lo_mi_hi(4675607,1674314,27716)],
     _aD_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(368344,10313153,52155),
       runtime.caml_int64_create_lo_mi_hi(8180999,2697782,25242),
       runtime.caml_int64_create_lo_mi_hi(7396631,88624,37209),
       runtime.caml_int64_create_lo_mi_hi(940345,15522039,5423),
       runtime.caml_int64_create_lo_mi_hi(12585777,2516991,26419),
       runtime.caml_int64_create_lo_mi_hi(5772561,4884328,36532),
       runtime.caml_int64_create_lo_mi_hi(16355239,3018084,56076),
       runtime.caml_int64_create_lo_mi_hi(16404388,4726206,18357)],
     _aE_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aF_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aS_=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     _aR_=runtime.caml_int64_create_lo_mi_hi(63,0,0),
     _aQ_=runtime.caml_int64_create_lo_mi_hi(255,0,0),
     _aP_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(12058959,13035655,6179),
       runtime.caml_int64_create_lo_mi_hi(7311698,13825401,13990),
       runtime.caml_int64_create_lo_mi_hi(817973,10194595,24764),
       runtime.caml_int64_create_lo_mi_hi(4980311,14139950,7648),
       runtime.caml_int64_create_lo_mi_hi(15747802,3663263,5495),
       runtime.caml_int64_create_lo_mi_hi(10513285,2689713,22729),
       runtime.caml_int64_create_lo_mi_hi(4064615,1111243,48477),
       runtime.caml_int64_create_lo_mi_hi(8230360,4295591,58407),
       runtime.caml_int64_create_lo_mi_hi(1525662,8152797,64494),
       runtime.caml_int64_create_lo_mi_hi(5931827,12519341,51757)],
     _aG_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aH_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(3201048,1622136,6240),
       runtime.caml_int64_create_lo_mi_hi(4597283,2295215,9100),
       runtime.caml_int64_create_lo_mi_hi(9550022,13008633,50751),
       runtime.caml_int64_create_lo_mi_hi(13499368,15209327,59527),
       runtime.caml_int64_create_lo_mi_hi(1297287,8866977,34598),
       runtime.caml_int64_create_lo_mi_hi(7147960,12101986,47322),
       runtime.caml_int64_create_lo_mi_hi(133377,67589,260),
       runtime.caml_int64_create_lo_mi_hi(10358095,5194350,20257),
       runtime.caml_int64_create_lo_mi_hi(7117622,3583470,14040),
       runtime.caml_int64_create_lo_mi_hi(5373862,10901764,42658),
       runtime.caml_int64_create_lo_mi_hi(12127442,13819581,53871),
       runtime.caml_int64_create_lo_mi_hi(16191221,16120582,62963),
       runtime.caml_int64_create_lo_mi_hi(15898233,7991168,31225),
       runtime.caml_int64_create_lo_mi_hi(14561391,7299022,28577),
       runtime.caml_int64_create_lo_mi_hi(4156817,9567471,37246),
       runtime.caml_int64_create_lo_mi_hi(10811474,5417479,21077),
       runtime.caml_int64_create_lo_mi_hi(12601184,6301693,24733),
       runtime.caml_int64_create_lo_mi_hi(6632892,12355958,48330),
       runtime.caml_int64_create_lo_mi_hi(2832283,10202317,39766),
       runtime.caml_int64_create_lo_mi_hi(101006,9307276,36354),
       runtime.caml_int64_create_lo_mi_hi(6017699,10711317,41910),
       runtime.caml_int64_create_lo_mi_hi(1600524,811068,3120),
       runtime.caml_int64_create_lo_mi_hi(16155771,8126346,31729),
       runtime.caml_int64_create_lo_mi_hi(6979637,3519969,13780),
       runtime.caml_int64_create_lo_mi_hi(3863837,1960041,7540),
       runtime.caml_int64_create_lo_mi_hi(14529504,14701383,57511),
       runtime.caml_int64_create_lo_mi_hi(11739607,14153388,55163),
       runtime.caml_int64_create_lo_mi_hi(10067138,12738285,49711),
       runtime.caml_int64_create_lo_mi_hi(6046510,3042710,11960),
       runtime.caml_int64_create_lo_mi_hi(9840971,4940410,19249),
       runtime.caml_int64_create_lo_mi_hi(14769662,16687905,65247),
       runtime.caml_int64_create_lo_mi_hi(11457879,5734934,22337),
       runtime.caml_int64_create_lo_mi_hi(2800917,1419329,5460),
       runtime.caml_int64_create_lo_mi_hi(15657079,7839670,30657),
       runtime.caml_int64_create_lo_mi_hi(7246391,3646955,14300),
       runtime.caml_int64_create_lo_mi_hi(14130917,15039318,58803),
       runtime.caml_int64_create_lo_mi_hi(2298783,10456281,40774),
       runtime.caml_int64_create_lo_mi_hi(16589808,15782679,61671),
       runtime.caml_int64_create_lo_mi_hi(9707594,4876927,18997),
       runtime.caml_int64_create_lo_mi_hi(11093210,14327445,55887),
       runtime.caml_int64_create_lo_mi_hi(11575896,5831205,22653),
       runtime.caml_int64_create_lo_mi_hi(9424841,13174474,51459),
       runtime.caml_int64_create_lo_mi_hi(5405737,2708877,10660),
       runtime.caml_int64_create_lo_mi_hi(1333770,675874,2600),
       runtime.caml_int64_create_lo_mi_hi(8343729,11657551,45566),
       runtime.caml_int64_create_lo_mi_hi(6146464,10512666,41146),
       runtime.caml_int64_create_lo_mi_hi(14029931,7045082,27569),
       runtime.caml_int64_create_lo_mi_hi(1563013,8740011,34094),
       runtime.caml_int64_create_lo_mi_hi(6765757,12419443,48590),
       runtime.caml_int64_create_lo_mi_hi(12226397,6148660,23913),
       runtime.caml_int64_create_lo_mi_hi(2134032,1081424,4160),
       runtime.caml_int64_create_lo_mi_hi(16058356,16052995,62711),
       runtime.caml_int64_create_lo_mi_hi(9166283,13309632,51979),
       runtime.caml_int64_create_lo_mi_hi(8180542,4124102,16120),
       runtime.caml_int64_create_lo_mi_hi(666885,337937,1300),
       runtime.caml_int64_create_lo_mi_hi(13531239,6758374,26497),
       runtime.caml_int64_create_lo_mi_hi(13998052,14971731,58551),
       runtime.caml_int64_create_lo_mi_hi(5112359,2565563,10140),
       runtime.caml_int64_create_lo_mi_hi(8549185,4272728,16665),
       runtime.caml_int64_create_lo_mi_hi(763787,9120925,35606),
       runtime.caml_int64_create_lo_mi_hi(5502631,10965249,42918),
       runtime.caml_int64_create_lo_mi_hi(16429693,8245140,32233),
       runtime.caml_int64_create_lo_mi_hi(3623317,9821435,38254),
       runtime.caml_int64_create_lo_mi_hi(11359960,14192287,55367),
       runtime.caml_int64_create_lo_mi_hi(15429883,16485168,64459),
       runtime.caml_int64_create_lo_mi_hi(12701166,15606641,61087),
       runtime.caml_int64_create_lo_mi_hi(16300924,8177553,31981),
       runtime.caml_int64_create_lo_mi_hi(13398374,6690787,26245),
       runtime.caml_int64_create_lo_mi_hi(10976221,14526094,56659),
       runtime.caml_int64_create_lo_mi_hi(3059479,1554507,5980),
       runtime.caml_int64_create_lo_mi_hi(9323847,4653638,18177),
       runtime.caml_int64_create_lo_mi_hi(2169502,10388700,40514),
       runtime.caml_int64_create_lo_mi_hi(9032906,13246149,51727),
       runtime.caml_int64_create_lo_mi_hi(5920813,2979225,11700),
       runtime.caml_int64_create_lo_mi_hi(6500031,12554617,49094),
       runtime.caml_int64_create_lo_mi_hi(933639,473115,1820),
       runtime.caml_int64_create_lo_mi_hi(4697261,11338019,44430),
       runtime.caml_int64_create_lo_mi_hi(11841626,5958191,23157),
       runtime.caml_int64_create_lo_mi_hi(1830787,8613045,33590),
       runtime.caml_int64_create_lo_mi_hi(6731315,3376639,13260),
       runtime.caml_int64_create_lo_mi_hi(12999779,6504434,25489),
       runtime.caml_int64_create_lo_mi_hi(266754,135178,520),
       runtime.caml_int64_create_lo_mi_hi(4821930,11155768,43666),
       runtime.caml_int64_create_lo_mi_hi(14868081,7450536,29145),
       runtime.caml_int64_create_lo_mi_hi(9291464,13110991,51207),
       runtime.caml_int64_create_lo_mi_hi(3330329,1689725,6500),
       runtime.caml_int64_create_lo_mi_hi(9583433,4813424,18745),
       runtime.caml_int64_create_lo_mi_hi(11493337,14255770,55619),
       runtime.caml_int64_create_lo_mi_hi(16331250,15909661,62191),
       runtime.caml_int64_create_lo_mi_hi(14395619,14895944,58283),
       runtime.caml_int64_create_lo_mi_hi(11975003,6021674,23409),
       runtime.caml_int64_create_lo_mi_hi(900232,8926354,34842),
       runtime.caml_int64_create_lo_mi_hi(2703002,10134728,39506),
       runtime.caml_int64_create_lo_mi_hi(4983590,2502078,9880),
       runtime.caml_int64_create_lo_mi_hi(6602546,3313146,13000),
       runtime.caml_int64_create_lo_mi_hi(8214960,11594058,45306),
       runtime.caml_int64_create_lo_mi_hi(13628137,15276906,59779),
       runtime.caml_int64_create_lo_mi_hi(1996559,1013811,3900),
       runtime.caml_int64_create_lo_mi_hi(12006357,14018214,54643),
       runtime.caml_int64_create_lo_mi_hi(1963136,8418490,32826),
       runtime.caml_int64_create_lo_mi_hi(6367166,12491132,48834),
       runtime.caml_int64_create_lo_mi_hi(8907725,13444830,52499),
       runtime.caml_int64_create_lo_mi_hi(6850868,3456484,13520),
       runtime.caml_int64_create_lo_mi_hi(9450056,4749941,18493),
       runtime.caml_int64_create_lo_mi_hi(14898431,16755492,65499),
       runtime.caml_int64_create_lo_mi_hi(16027002,8058767,31477),
       runtime.caml_int64_create_lo_mi_hi(4023440,9499882,36986),
       runtime.caml_int64_create_lo_mi_hi(12492127,6275646,24417),
       runtime.caml_int64_create_lo_mi_hi(4209952,2104736,8320),
       runtime.caml_int64_create_lo_mi_hi(13635432,6842325,26813),
       runtime.caml_int64_create_lo_mi_hi(3459610,1757298,6760),
       runtime.caml_int64_create_lo_mi_hi(4306862,11409708,44674),
       runtime.caml_int64_create_lo_mi_hi(7699892,11848030,46314),
       runtime.caml_int64_create_lo_mi_hi(11062868,5544473,21581),
       runtime.caml_int64_create_lo_mi_hi(3899283,9694437,37750),
       runtime.caml_int64_create_lo_mi_hi(4468514,2231722,8840),
       runtime.caml_int64_create_lo_mi_hi(13132644,6555625,25741),
       runtime.caml_int64_create_lo_mi_hi(16722673,15850258,61923),
       runtime.caml_int64_create_lo_mi_hi(15125619,7585698,29649),
       runtime.caml_int64_create_lo_mi_hi(2392594,1216602,4680),
       runtime.caml_int64_create_lo_mi_hi(8419904,4209245,16413),
       runtime.caml_int64_create_lo_mi_hi(1067016,540712,2080),
       runtime.caml_int64_create_lo_mi_hi(10196419,12801768,49963),
       runtime.caml_int64_create_lo_mi_hi(12967916,15479675,60567),
       runtime.caml_int64_create_lo_mi_hi(11226587,14390928,56139),
       runtime.caml_int64_create_lo_mi_hi(6275233,10576159,41406),
       runtime.caml_int64_create_lo_mi_hi(496013,9247875,36110),
       runtime.caml_int64_create_lo_mi_hi(8046653,4060617,15860),
       runtime.caml_int64_create_lo_mi_hi(3365783,9948401,38758),
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(8649167,13579988,53019),
       runtime.caml_int64_create_lo_mi_hi(5664299,2835847,11180),
       runtime.caml_int64_create_lo_mi_hi(15524214,7772083,30405),
       runtime.caml_int64_create_lo_mi_hi(1697410,8545456,33330),
       runtime.caml_int64_create_lo_mi_hi(11610326,14089897,54911),
       runtime.caml_int64_create_lo_mi_hi(3588891,1824887,7020),
       runtime.caml_int64_create_lo_mi_hi(7828661,11911515,46574),
       runtime.caml_int64_create_lo_mi_hi(4439727,11473193,44934),
       runtime.caml_int64_create_lo_mi_hi(13901162,6977503,27317),
       runtime.caml_int64_create_lo_mi_hi(10545744,5290509,20573),
       runtime.caml_int64_create_lo_mi_hi(9066309,4526668,17673),
       runtime.caml_int64_create_lo_mi_hi(16464115,15977240,62443),
       runtime.caml_int64_create_lo_mi_hi(6335792,3186160,12480),
       runtime.caml_int64_create_lo_mi_hi(12829935,15674228,61339),
       runtime.caml_int64_create_lo_mi_hi(8313407,4187587,16380),
       runtime.caml_int64_create_lo_mi_hi(11192149,5607964,21833),
       runtime.caml_int64_create_lo_mi_hi(5888930,10647824,41650),
       runtime.caml_int64_create_lo_mi_hi(13232618,15336293,60047),
       runtime.caml_int64_create_lo_mi_hi(13265509,6623212,25993),
       runtime.caml_int64_create_lo_mi_hi(6882234,12237160,47826),
       runtime.caml_int64_create_lo_mi_hi(6179375,3106195,12220),
       runtime.caml_int64_create_lo_mi_hi(10325696,12603111,49191),
       runtime.caml_int64_create_lo_mi_hi(10576094,14597761,56927),
       runtime.caml_int64_create_lo_mi_hi(3734556,1892460,7280),
       runtime.caml_int64_create_lo_mi_hi(15156989,16628526,64979),
       runtime.caml_int64_create_lo_mi_hi(10100557,5067364,19753),
       runtime.caml_int64_create_lo_mi_hi(3765906,9626848,37490),
       runtime.caml_int64_create_lo_mi_hi(15399541,7704508,30153),
       runtime.caml_int64_create_lo_mi_hi(800262,405534,1560),
       runtime.caml_int64_create_lo_mi_hi(634506,9053336,35346),
       runtime.caml_int64_create_lo_mi_hi(7949234,11729216,45810),
       runtime.caml_int64_create_lo_mi_hi(13731302,15098713,59071),
       runtime.caml_int64_create_lo_mi_hi(1867278,946230,3640),
       runtime.caml_int64_create_lo_mi_hi(4122399,2095203,8060),
       runtime.caml_int64_create_lo_mi_hi(12866914,6436855,25237),
       runtime.caml_int64_create_lo_mi_hi(11877076,13954723,54391),
       runtime.caml_int64_create_lo_mi_hi(5079464,11020594,43162),
       runtime.caml_int64_create_lo_mi_hi(3232406,9880820,38498),
       runtime.caml_int64_create_lo_mi_hi(15688441,16358202,63939),
       runtime.caml_int64_create_lo_mi_hi(9937861,12936950,50483),
       runtime.caml_int64_create_lo_mi_hi(4853797,2438577,9620),
       runtime.caml_int64_create_lo_mi_hi(11709273,5894688,22905),
       runtime.caml_int64_create_lo_mi_hi(1429636,8672430,33834),
       runtime.caml_int64_create_lo_mi_hi(14992754,7518119,29397),
       runtime.caml_int64_create_lo_mi_hi(7531577,3790301,14820),
       runtime.caml_int64_create_lo_mi_hi(9967180,5003873,19501),
       runtime.caml_int64_create_lo_mi_hi(12358750,6212155,24165),
       runtime.caml_int64_create_lo_mi_hi(15769464,7923589,30973),
       runtime.caml_int64_create_lo_mi_hi(7398712,3726808,14560),
       runtime.caml_int64_create_lo_mi_hi(366732,9180294,35850),
       runtime.caml_int64_create_lo_mi_hi(12523473,13747890,53603),
       runtime.caml_int64_create_lo_mi_hi(5760165,10830091,42414),
       runtime.caml_int64_create_lo_mi_hi(14262754,14828365,58031),
       runtime.caml_int64_create_lo_mi_hi(12734049,6369272,24985),
       runtime.caml_int64_create_lo_mi_hi(8078003,11792709,46070),
       runtime.caml_int64_create_lo_mi_hi(4338721,2168229,8580),
       runtime.caml_int64_create_lo_mi_hi(2427036,10261718,40010),
       runtime.caml_int64_create_lo_mi_hi(3993118,2027622,7800),
       runtime.caml_int64_create_lo_mi_hi(8806723,4399698,17169),
       runtime.caml_int64_create_lo_mi_hi(9679303,13072124,51003),
       runtime.caml_int64_create_lo_mi_hi(15028220,16560939,64727),
       runtime.caml_int64_create_lo_mi_hi(533508,270356,1040),
       runtime.caml_int64_create_lo_mi_hi(10675025,5353992,20825),
       runtime.caml_int64_create_lo_mi_hi(3089817,10075335,39262),
       runtime.caml_int64_create_lo_mi_hi(14295661,7163844,28073),
       runtime.caml_int64_create_lo_mi_hi(1729805,878649,3380),
       runtime.caml_int64_create_lo_mi_hi(15301114,16417589,64207),
       runtime.caml_int64_create_lo_mi_hi(10709471,14661252,57179),
       runtime.caml_int64_create_lo_mi_hi(16558462,8312731,32485),
       runtime.caml_int64_create_lo_mi_hi(4725028,2375092,9360),
       runtime.caml_int64_create_lo_mi_hi(7798331,3917271,15340),
       runtime.caml_int64_create_lo_mi_hi(4954795,11219261,43926),
       runtime.caml_int64_create_lo_mi_hi(8515790,13516497,52767),
       runtime.caml_int64_create_lo_mi_hi(2267409,1149013,4420),
       runtime.caml_int64_create_lo_mi_hi(230287,9374857,36614),
       runtime.caml_int64_create_lo_mi_hi(10224718,5130859,20005),
       runtime.caml_int64_create_lo_mi_hi(7562935,12046673,47078),
       runtime.caml_int64_create_lo_mi_hi(13361387,15403872,60299),
       runtime.caml_int64_create_lo_mi_hi(7913788,3997132,15600),
       runtime.caml_int64_create_lo_mi_hi(2096513,8486079,33086),
       runtime.caml_int64_create_lo_mi_hi(3489940,9753854,37994),
       runtime.caml_int64_create_lo_mi_hi(15932663,16247564,63483),
       runtime.caml_int64_create_lo_mi_hi(7280825,12165479,47582),
       runtime.caml_int64_create_lo_mi_hi(2525971,1284191,4940),
       runtime.caml_int64_create_lo_mi_hi(5787948,2915740,11440),
       runtime.caml_int64_create_lo_mi_hi(12256723,13883064,54123),
       runtime.caml_int64_create_lo_mi_hi(13864167,15166300,59323),
       runtime.caml_int64_create_lo_mi_hi(14432622,7231435,28325),
       runtime.caml_int64_create_lo_mi_hi(9808580,12873459,50231),
       runtime.caml_int64_create_lo_mi_hi(400131,202767,780),
       runtime.caml_int64_create_lo_mi_hi(11328598,5671443,22085),
       runtime.caml_int64_create_lo_mi_hi(8937028,4463177,17421),
       runtime.caml_int64_create_lo_mi_hi(16687231,8380318,32737),
       runtime.caml_int64_create_lo_mi_hi(5212329,11084087,43422),
       runtime.caml_int64_create_lo_mi_hi(5531434,2772354,10920),
       runtime.caml_int64_create_lo_mi_hi(7015099,12300653,48086),
       runtime.caml_int64_create_lo_mi_hi(10454977,12666594,49443),
       runtime.caml_int64_create_lo_mi_hi(10940755,5480962,21329),
       runtime.caml_int64_create_lo_mi_hi(10842844,14462603,56407),
       runtime.caml_int64_create_lo_mi_hi(1463051,743463,2860),
       runtime.caml_int64_create_lo_mi_hi(2556317,10329299,40270),
       runtime.caml_int64_create_lo_mi_hi(14166892,7096257,27821),
       runtime.caml_int64_create_lo_mi_hi(6464561,3249653,12740),
       runtime.caml_int64_create_lo_mi_hi(15266676,7636921,29901),
       runtime.caml_int64_create_lo_mi_hi(15799798,16179977,63231),
       runtime.caml_int64_create_lo_mi_hi(9194566,4590147,17925),
       runtime.caml_int64_create_lo_mi_hi(4564396,11274534,44170),
       runtime.caml_int64_create_lo_mi_hi(1029513,8993943,35102),
       runtime.caml_int64_create_lo_mi_hi(2667540,1351748,5200),
       runtime.caml_int64_create_lo_mi_hi(14662369,14768962,57763),
       runtime.caml_int64_create_lo_mi_hi(2926102,1486926,5720),
       runtime.caml_int64_create_lo_mi_hi(7665466,3853778,15080),
       runtime.caml_int64_create_lo_mi_hi(13764201,6909904,27065),
       runtime.caml_int64_create_lo_mi_hi(1196297,608301,2340),
       runtime.caml_int64_create_lo_mi_hi(14735216,7382957,28893),
       runtime.caml_int64_create_lo_mi_hi(7434166,11983188,46818),
       runtime.caml_int64_create_lo_mi_hi(12394192,13684407,53351),
       runtime.caml_int64_create_lo_mi_hi(13096685,15547262,60819),
       runtime.caml_int64_create_lo_mi_hi(8774348,13381339,52247),
       runtime.caml_int64_create_lo_mi_hi(8677442,4336215,16917),
       runtime.caml_int64_create_lo_mi_hi(2960536,10007746,39002),
       runtime.caml_int64_create_lo_mi_hi(5631396,10766606,42154),
       runtime.caml_int64_create_lo_mi_hi(5272872,2645384,10400),
       runtime.caml_int64_create_lo_mi_hi(12093020,6085169,23661),
       runtime.caml_int64_create_lo_mi_hi(15559672,16290623,63687),
       runtime.caml_int64_create_lo_mi_hi(1163910,8799396,34338)],
     _aI_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(14161944,12613680,24600),
       runtime.caml_int64_create_lo_mi_hi(2499363,372550,35875),
       runtime.caml_int64_create_lo_mi_hi(12109510,8321425,16326),
       runtime.caml_int64_create_lo_mi_hi(16509160,1273805,34792),
       runtime.caml_int64_create_lo_mi_hi(13338503,5021971,9863),
       runtime.caml_int64_create_lo_mi_hi(1161400,11100781,55992),
       runtime.caml_int64_create_lo_mi_hi(590081,525570,1025),
       runtime.caml_int64_create_lo_mi_hi(872271,4353694,8527),
       runtime.caml_int64_create_lo_mi_hi(10171958,11398764,55350),
       runtime.caml_int64_create_lo_mi_hi(16754342,5833809,41638),
       runtime.caml_int64_create_lo_mi_hi(840402,14597561,28626),
       runtime.caml_int64_create_lo_mi_hi(980469,16451319,62453),
       runtime.caml_int64_create_lo_mi_hi(9861497,15696114,63865),
       runtime.caml_int64_create_lo_mi_hi(3174255,6278878,41327),
       runtime.caml_int64_create_lo_mi_hi(7180689,16576319,32401),
       runtime.caml_int64_create_lo_mi_hi(16274002,11143076,21842),
       runtime.caml_int64_create_lo_mi_hi(4677728,2620864,40288),
       runtime.caml_int64_create_lo_mi_hi(3521724,9008741,51900),
       runtime.caml_int64_create_lo_mi_hi(3644315,11324715,22171),
       runtime.caml_int64_create_lo_mi_hi(9080462,297985,654),
       runtime.caml_int64_create_lo_mi_hi(13804451,7411035,46755),
       runtime.caml_int64_create_lo_mi_hi(7080972,6306840,12300),
       runtime.caml_int64_create_lo_mi_hi(8682363,16747254,61819),
       runtime.caml_int64_create_lo_mi_hi(8402229,11919722,54325),
       runtime.caml_int64_create_lo_mi_hi(16063773,15231290,29725),
       runtime.caml_int64_create_lo_mi_hi(11788512,5457885,42976),
       runtime.caml_int64_create_lo_mi_hi(2217943,16166067,31703),
       runtime.caml_int64_create_lo_mi_hi(10273474,6221209,12226),
       runtime.caml_int64_create_lo_mi_hi(4402734,7181916,47150),
       runtime.caml_int64_create_lo_mi_hi(2706251,6453910,12619),
       runtime.caml_int64_create_lo_mi_hi(6160126,10691041,57342),
       runtime.caml_int64_create_lo_mi_hi(13981527,8525486,16727),
       runtime.caml_int64_create_lo_mi_hi(12391701,11026730,21525),
       runtime.caml_int64_create_lo_mi_hi(15234935,10467054,49527),
       runtime.caml_int64_create_lo_mi_hi(9582391,10873710,56375),
       runtime.caml_int64_create_lo_mi_hi(10413541,8083159,46053),
       runtime.caml_int64_create_lo_mi_hi(1286047,9230627,18079),
       runtime.caml_int64_create_lo_mi_hi(2355440,13834237,59376),
       runtime.caml_int64_create_lo_mi_hi(2116170,6979476,13642),
       runtime.caml_int64_create_lo_mi_hi(4512474,10393001,20442),
       runtime.caml_int64_create_lo_mi_hi(10639448,16393648,32088),
       runtime.caml_int64_create_lo_mi_hi(13617609,445071,969),
       runtime.caml_int64_create_lo_mi_hi(8137001,5606738,42025),
       runtime.caml_int64_create_lo_mi_hi(5900810,5251604,10250),
       runtime.caml_int64_create_lo_mi_hi(5288369,14765951,65201),
       runtime.caml_int64_create_lo_mi_hi(13213856,6888029,47776),
       runtime.caml_int64_create_lo_mi_hi(1338219,8379094,45419),
       runtime.caml_int64_create_lo_mi_hi(14255493,6073111,11909),
       runtime.caml_int64_create_lo_mi_hi(3980733,8483687,52925),
       runtime.caml_int64_create_lo_mi_hi(9395549,13776058,26973),
       runtime.caml_int64_create_lo_mi_hi(9441296,8409120,16400),
       runtime.caml_int64_create_lo_mi_hi(521460,15926261,63476),
       runtime.caml_int64_create_lo_mi_hi(14535627,1491083,3019),
       runtime.caml_int64_create_lo_mi_hi(13844030,15582844,63550),
       runtime.caml_int64_create_lo_mi_hi(2950405,2625802,5125),
       runtime.caml_int64_create_lo_mi_hi(7890791,2090702,33127),
       runtime.caml_int64_create_lo_mi_hi(9954532,7558101,47076),
       runtime.caml_int64_create_lo_mi_hi(141095,2472782,39975),
       runtime.caml_int64_create_lo_mi_hi(7553345,3299458,6465),
       runtime.caml_int64_create_lo_mi_hi(10980235,2923787,5771),
       runtime.caml_int64_create_lo_mi_hi(16164775,5308755,42663),
       runtime.caml_int64_create_lo_mi_hi(11697533,13604090,59773),
       runtime.caml_int64_create_lo_mi_hi(4822421,14482231,28309),
       runtime.caml_int64_create_lo_mi_hi(5691608,9346989,18392),
       runtime.caml_int64_create_lo_mi_hi(7404539,9122027,52219),
       runtime.caml_int64_create_lo_mi_hi(13496046,2322881,40942),
       runtime.caml_int64_create_lo_mi_hi(12287100,13079032,60796),
       runtime.caml_int64_create_lo_mi_hi(7431782,1565644,34150),
       runtime.caml_int64_create_lo_mi_hi(8117725,10915495,21469),
       runtime.caml_int64_create_lo_mi_hi(11474711,12077870,23575),
       runtime.caml_int64_create_lo_mi_hi(4540231,149134,327),
       runtime.caml_int64_create_lo_mi_hi(1744542,8707105,17054),
       runtime.caml_int64_create_lo_mi_hi(13945546,2016649,4042),
       runtime.caml_int64_create_lo_mi_hi(5778733,7706970,46125),
       runtime.caml_int64_create_lo_mi_hi(3063743,9533795,50879),
       runtime.caml_int64_create_lo_mi_hi(4130567,3676942,7175),
       runtime.caml_int64_create_lo_mi_hi(11316653,74567,36525),
       runtime.caml_int64_create_lo_mi_hi(11557466,15347636,30042),
       runtime.caml_int64_create_lo_mi_hi(15696771,7124251,13955),
       runtime.caml_int64_create_lo_mi_hi(11940659,8781670,52275),
       runtime.caml_int64_create_lo_mi_hi(6054755,4190918,37219),
       runtime.caml_int64_create_lo_mi_hi(1180162,1051140,2050),
       runtime.caml_int64_create_lo_mi_hi(9677482,3749961,37546),
       runtime.caml_int64_create_lo_mi_hi(14578033,11512034,55665),
       runtime.caml_int64_create_lo_mi_hi(13027528,970637,1992),
       runtime.caml_int64_create_lo_mi_hi(13703449,13139250,25625),
       runtime.caml_int64_create_lo_mi_hi(3885385,7499922,14665),
       runtime.caml_int64_create_lo_mi_hi(6281689,8821423,17369),
       runtime.caml_int64_create_lo_mi_hi(3273458,12787193,61426),
       runtime.caml_int64_create_lo_mi_hi(11068387,4933851,44003),
       runtime.caml_int64_create_lo_mi_hi(12147547,14822070,29019),
       runtime.caml_int64_create_lo_mi_hi(12355720,3445261,6792),
       runtime.caml_int64_create_lo_mi_hi(4102810,10799145,21146),
       runtime.caml_int64_create_lo_mi_hi(730662,2997836,38950),
       runtime.caml_int64_create_lo_mi_hi(12530226,9304676,51250),
       runtime.caml_int64_create_lo_mi_hi(5877936,15288957,64176),
       runtime.caml_int64_create_lo_mi_hi(15919593,1796815,33769),
       runtime.caml_int64_create_lo_mi_hi(7802639,7877406,15375),
       runtime.caml_int64_create_lo_mi_hi(3397077,15115959,29653),
       runtime.caml_int64_create_lo_mi_hi(16023680,7649821,14976),
       runtime.caml_int64_create_lo_mi_hi(2604734,10058849,49854),
       runtime.caml_int64_create_lo_mi_hi(15453645,2547335,5069),
       runtime.caml_int64_create_lo_mi_hi(8991796,12444776,53300),
       runtime.caml_int64_create_lo_mi_hi(3295304,8025488,15688),
       runtime.caml_int64_create_lo_mi_hi(5570559,11216099,56319),
       runtime.caml_int64_create_lo_mi_hi(9271930,16224244,62842),
       runtime.caml_int64_create_lo_mi_hi(6590608,16050749,31376),
       runtime.caml_int64_create_lo_mi_hi(10313567,12730046,24927),
       runtime.caml_int64_create_lo_mi_hi(4005920,1941568,32800),
       runtime.caml_int64_create_lo_mi_hi(1009768,6804944,48488),
       runtime.caml_int64_create_lo_mi_hi(13244954,13660724,26650),
       runtime.caml_int64_create_lo_mi_hi(12037806,1649729,33454),
       runtime.caml_int64_create_lo_mi_hi(8238260,13196917,60084),
       runtime.caml_int64_create_lo_mi_hi(13522004,10099112,19796),
       runtime.caml_int64_create_lo_mi_hi(8360851,15525179,30355),
       runtime.caml_int64_create_lo_mi_hi(3088930,895556,34850),
       runtime.caml_int64_create_lo_mi_hi(6513764,518600,36196),
       runtime.caml_int64_create_lo_mi_hi(2814449,14357247,58353),
       runtime.caml_int64_create_lo_mi_hi(13398899,12559078,53619),
       runtime.caml_int64_create_lo_mi_hi(8524306,9460260,18450),
       runtime.caml_int64_create_lo_mi_hi(8011840,3825024,7488),
       runtime.caml_int64_create_lo_mi_hi(4720648,4204560,8200),
       runtime.caml_int64_create_lo_mi_hi(9814979,5695643,11203),
       runtime.caml_int64_create_lo_mi_hi(14675180,3374021,38892),
       runtime.caml_int64_create_lo_mi_hi(5102555,9867435,19419),
       runtime.caml_int64_create_lo_mi_hi(12624289,6365023,48801),
       runtime.caml_int64_create_lo_mi_hi(9538957,1868551,3725),
       runtime.caml_int64_create_lo_mi_hi(13122877,16107898,62525),
       runtime.caml_int64_create_lo_mi_hi(6002583,13431091,26263),
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(16371663,3593347,7119),
       runtime.caml_int64_create_lo_mi_hi(7220011,4556630,44075),
       runtime.caml_int64_create_lo_mi_hi(14775926,9941996,50550),
       runtime.caml_int64_create_lo_mi_hi(15106690,6598681,12930),
       runtime.caml_int64_create_lo_mi_hi(2676438,16689585,32726),
       runtime.caml_int64_create_lo_mi_hi(12786459,14186294,27675),
       runtime.caml_int64_create_lo_mi_hi(7648693,12671863,61109),
       runtime.caml_int64_create_lo_mi_hi(12496815,1124675,34479),
       runtime.caml_int64_create_lo_mi_hi(1927786,7856084,46442),
       runtime.caml_int64_create_lo_mi_hi(15355984,12193184,23888),
       runtime.caml_int64_create_lo_mi_hi(5719365,1199242,2373),
       runtime.caml_int64_create_lo_mi_hi(3732467,13310203,60403),
       runtime.caml_int64_create_lo_mi_hi(11350064,10350688,49200),
       runtime.caml_int64_create_lo_mi_hi(12906479,2847939,39919),
       runtime.caml_int64_create_lo_mi_hi(14303039,15057790,64575),
       runtime.caml_int64_create_lo_mi_hi(13063509,9575594,18773),
       runtime.caml_int64_create_lo_mi_hi(14394018,7934041,45730),
       runtime.caml_int64_create_lo_mi_hi(15330026,222665,36842),
       runtime.caml_int64_create_lo_mi_hi(6972773,1043658,35173),
       runtime.caml_int64_create_lo_mi_hi(244410,12150889,53946),
       runtime.caml_int64_create_lo_mi_hi(4861743,6656862,48175),
       runtime.caml_int64_create_lo_mi_hi(9355456,5171101,10176),
       runtime.caml_int64_create_lo_mi_hi(6348510,12485025,24542),
       runtime.caml_int64_create_lo_mi_hi(16522268,14707768,28700),
       runtime.caml_int64_create_lo_mi_hi(4652541,12267239,54269),
       runtime.caml_int64_create_lo_mi_hi(2051405,5399706,10573),
       runtime.caml_int64_create_lo_mi_hi(7770770,14999609,29330),
       runtime.caml_int64_create_lo_mi_hi(16414069,9420010,51573),
       runtime.caml_int64_create_lo_mi_hi(3540486,3153420,6150),
       runtime.caml_int64_create_lo_mi_hi(11438730,2398217,4746),
       runtime.caml_int64_create_lo_mi_hi(4960946,16334969,62130),
       runtime.caml_int64_create_lo_mi_hi(8775398,6511057,49126),
       runtime.caml_int64_create_lo_mi_hi(8261134,7353884,14350),
       runtime.caml_int64_create_lo_mi_hi(15146783,16278334,31775),
       runtime.caml_int64_create_lo_mi_hi(5595746,3667908,38242),
       runtime.caml_int64_create_lo_mi_hi(3855572,15639477,30676),
       runtime.caml_int64_create_lo_mi_hi(8497320,2699853,39592),
       runtime.caml_int64_create_lo_mi_hi(5412502,12907569,25238),
       runtime.caml_int64_create_lo_mi_hi(6486521,10173167,50169),
       runtime.caml_int64_create_lo_mi_hi(10732997,6747799,13253),
       runtime.caml_int64_create_lo_mi_hi(1058085,3518794,37925),
       runtime.caml_int64_create_lo_mi_hi(11229529,15868082,31065),
       runtime.caml_int64_create_lo_mi_hi(13665412,5549589,10884),
       runtime.caml_int64_create_lo_mi_hi(12939890,12036068,54642),
       runtime.caml_int64_create_lo_mi_hi(15481145,14015858,58425),
       runtime.caml_int64_create_lo_mi_hi(1461324,5923224,11596),
       runtime.caml_int64_create_lo_mi_hi(9723486,13253564,25950),
       runtime.caml_int64_create_lo_mi_hi(10451064,15173104,64888),
       runtime.caml_int64_create_lo_mi_hi(15022136,14538864,57400),
       runtime.caml_int64_create_lo_mi_hi(9997452,1345029,2700),
       runtime.caml_int64_create_lo_mi_hi(1561041,13021887,25553),
       runtime.caml_int64_create_lo_mi_hi(14984613,4262743,44709),
       runtime.caml_int64_create_lo_mi_hi(10609378,4410841,45026),
       runtime.caml_int64_create_lo_mi_hi(5136737,3143874,39265),
       runtime.caml_int64_create_lo_mi_hi(4371379,15811963,63155),
       runtime.caml_int64_create_lo_mi_hi(3416353,1418562,33825),
       runtime.caml_int64_create_lo_mi_hi(564380,9754149,19100),
       runtime.caml_int64_create_lo_mi_hi(15605278,15754812,30750),
       runtime.caml_int64_create_lo_mi_hi(6374211,2249350,4419),
       runtime.caml_int64_create_lo_mi_hi(11651015,7797907,15303),
       runtime.caml_int64_create_lo_mi_hi(5242108,11742181,55292),
       runtime.caml_int64_create_lo_mi_hi(2360324,2102280,4100),
       runtime.caml_int64_create_lo_mi_hi(14897489,11667618,22865),
       runtime.caml_int64_create_lo_mi_hi(2464153,12371759,24217),
       runtime.caml_int64_create_lo_mi_hi(2256237,5227738,43373),
       runtime.caml_int64_create_lo_mi_hi(6622477,6830362,13325),
       runtime.caml_int64_create_lo_mi_hi(7994106,8599017,53242),
       runtime.caml_int64_create_lo_mi_hi(6938591,11961507,23519),
       runtime.caml_int64_create_lo_mi_hi(11107966,14130172,58750),
       runtime.caml_int64_create_lo_mi_hi(1647652,4043848,36900),
       runtime.caml_int64_create_lo_mi_hi(16661307,12965750,60475),
       runtime.caml_int64_create_lo_mi_hi(10136491,3226955,38571),
       runtime.caml_int64_create_lo_mi_hi(15781582,4116865,8142),
       runtime.caml_int64_create_lo_mi_hi(10031377,8934690,17425),
       runtime.caml_int64_create_lo_mi_hi(8621967,821507,1679),
       runtime.caml_int64_create_lo_mi_hi(282190,4877212,9550),
       runtime.caml_int64_create_lo_mi_hi(6731703,13717875,59063),
       runtime.caml_int64_create_lo_mi_hi(14740459,745675,35819),
       runtime.caml_int64_create_lo_mi_hi(12663868,16632952,61500),
       runtime.caml_int64_create_lo_mi_hi(16613761,8175391,16001),
       runtime.caml_int64_create_lo_mi_hi(4232340,13958709,27284),
       runtime.caml_int64_create_lo_mi_hi(1898487,15404275,64503),
       runtime.caml_int64_create_lo_mi_hi(1620409,10577775,57017),
       runtime.caml_int64_create_lo_mi_hi(9114387,9985830,19475),
       runtime.caml_int64_create_lo_mi_hi(5319724,8232024,45100),
       runtime.caml_int64_create_lo_mi_hi(381907,14071995,27603),
       runtime.caml_int64_create_lo_mi_hi(9234407,7036115,48103),
       runtime.caml_int64_create_lo_mi_hi(3763822,5753820,42350),
       runtime.caml_int64_create_lo_mi_hi(11191492,7271317,14276),
       runtime.caml_int64_create_lo_mi_hi(1770243,1576710,3075),
       runtime.caml_int64_create_lo_mi_hi(14440022,9049004,17750),
       runtime.caml_int64_create_lo_mi_hi(6177860,1722760,3396),
       runtime.caml_int64_create_lo_mi_hi(10518399,14655230,57727),
       runtime.caml_int64_create_lo_mi_hi(8956329,2176847,40617),
       runtime.caml_int64_create_lo_mi_hi(6761002,5079636,43050),
       runtime.caml_int64_create_lo_mi_hi(703419,11627883,54971),
       runtime.caml_int64_create_lo_mi_hi(8896961,4645535,9153),
       runtime.caml_int64_create_lo_mi_hi(15815507,10617510,20819),
       runtime.caml_int64_create_lo_mi_hi(7527644,11439013,22492),
       runtime.caml_int64_create_lo_mi_hi(5442315,5777174,11275),
       runtime.caml_int64_create_lo_mi_hi(105885,10277671,20125),
       runtime.caml_int64_create_lo_mi_hi(2845804,4702680,44396),
       runtime.caml_int64_create_lo_mi_hi(10760497,9827682,50225),
       runtime.caml_int64_create_lo_mi_hi(15955060,8894952,52596),
       runtime.caml_int64_create_lo_mi_hi(1439478,14879217,65526),
       runtime.caml_int64_create_lo_mi_hi(4998726,672652,1350),
       runtime.caml_int64_create_lo_mi_hi(10857644,599621,35500),
       runtime.caml_int64_create_lo_mi_hi(11897225,3970831,7817),
       runtime.caml_int64_create_lo_mi_hi(11801620,10503208,20500),
       runtime.caml_int64_create_lo_mi_hi(12247521,5980895,41953),
       runtime.caml_int64_create_lo_mi_hi(10884630,11554348,22550),
       runtime.caml_int64_create_lo_mi_hi(16202298,13488756,59450),
       runtime.caml_int64_create_lo_mi_hi(420201,7327954,47465),
       runtime.caml_int64_create_lo_mi_hi(4262153,4730130,9225),
       runtime.caml_int64_create_lo_mi_hi(14119024,10989024,56688),
       runtime.caml_int64_create_lo_mi_hi(7321270,14242929,58038),
       runtime.caml_int64_create_lo_mi_hi(2019536,13547453,26576),
       runtime.caml_int64_create_lo_mi_hi(14085613,3899079,37869),
       runtime.caml_int64_create_lo_mi_hi(14863564,3070853,6092),
       runtime.caml_int64_create_lo_mi_hi(6832706,2774916,5442),
       runtime.caml_int64_create_lo_mi_hi(2922648,11846189,23192),
       runtime.caml_int64_create_lo_mi_hi(15574180,4787797,43684),
       runtime.caml_int64_create_lo_mi_hi(7677992,6129744,41000),
       runtime.caml_int64_create_lo_mi_hi(8805468,14299576,27996),
       runtime.caml_int64_create_lo_mi_hi(7076088,9650157,51192),
       runtime.caml_int64_create_lo_mi_hi(12748422,4498449,8838)],
     _aJ_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(1579104,7876824,6336),
       runtime.caml_int64_create_lo_mi_hi(2302860,11486758,8965),
       runtime.caml_int64_create_lo_mi_hi(13026879,16355768,50814),
       runtime.caml_int64_create_lo_mi_hi(15263879,7327227,59411),
       runtime.caml_int64_create_lo_mi_hi(8881958,10556363,34636),
       runtime.caml_int64_create_lo_mi_hi(12105946,6450449,47273),
       runtime.caml_int64_create_lo_mi_hi(65796,328201,264),
       runtime.caml_int64_create_lo_mi_hi(5197601,7249421,20290),
       runtime.caml_int64_create_lo_mi_hi(3552984,15625371,13997),
       runtime.caml_int64_create_lo_mi_hi(10921634,283135,42585),
       runtime.caml_int64_create_lo_mi_hi(13816431,12433676,53982),
       runtime.caml_int64_create_lo_mi_hi(16119283,456462,62971),
       runtime.caml_int64_create_lo_mi_hi(7961081,8450710,31215),
       runtime.caml_int64_create_lo_mi_hi(7303073,13557296,28511),
       runtime.caml_int64_create_lo_mi_hi(9539966,15679341,37372),
       runtime.caml_int64_create_lo_mi_hi(5395029,500984,21162),
       runtime.caml_int64_create_lo_mi_hi(6316189,16629831,24615),
       runtime.caml_int64_create_lo_mi_hi(12369098,7759157,48265),
       runtime.caml_int64_create_lo_mi_hi(10197846,13445943,39852),
       runtime.caml_int64_create_lo_mi_hi(9342466,9175434,36356),
       runtime.caml_int64_create_lo_mi_hi(10724278,1399762,41841),
       runtime.caml_int64_create_lo_mi_hi(789552,3938412,3168),
       runtime.caml_int64_create_lo_mi_hi(8092657,9107076,31743),
       runtime.caml_int64_create_lo_mi_hi(3487188,14772864,13749),
       runtime.caml_int64_create_lo_mi_hi(1908084,6896373,7656),
       runtime.caml_int64_create_lo_mi_hi(14737575,4709811,57427),
       runtime.caml_int64_create_lo_mi_hi(14145403,11318049,55286),
       runtime.caml_int64_create_lo_mi_hi(12763695,15571356,49758),
       runtime.caml_int64_create_lo_mi_hi(3026616,9854019,11885),
       runtime.caml_int64_create_lo_mi_hi(4934449,8033833,19298),
       runtime.caml_int64_create_lo_mi_hi(16711391,2220381,65187),
       runtime.caml_int64_create_lo_mi_hi(5723969,1486549,22402),
       runtime.caml_int64_create_lo_mi_hi(1381716,4270781,5544),
       runtime.caml_int64_create_lo_mi_hi(7829441,11988712,30623),
       runtime.caml_int64_create_lo_mi_hi(3618780,15429266,14245),
       runtime.caml_int64_create_lo_mi_hi(15066547,5691294,58747),
       runtime.caml_int64_create_lo_mi_hi(10460998,14230291,40844),
       runtime.caml_int64_create_lo_mi_hi(15790311,1572131,61651),
       runtime.caml_int64_create_lo_mi_hi(4868661,8360992,19050),
       runtime.caml_int64_create_lo_mi_hi(14342735,9808196,55966),
       runtime.caml_int64_create_lo_mi_hi(5789821,2470050,22778),
       runtime.caml_int64_create_lo_mi_hi(13224195,13275087,51462),
       runtime.caml_int64_create_lo_mi_hi(2697636,9261692,10581),
       runtime.caml_int64_create_lo_mi_hi(657960,2233434,2640),
       runtime.caml_int64_create_lo_mi_hi(11645438,5209936,45537),
       runtime.caml_int64_create_lo_mi_hi(10526906,1727945,41065),
       runtime.caml_int64_create_lo_mi_hi(7039921,14341652,27519),
       runtime.caml_int64_create_lo_mi_hi(8750382,11212761,34140),
       runtime.caml_int64_create_lo_mi_hi(12434894,7563068,48513),
       runtime.caml_int64_create_lo_mi_hi(6118761,3455631,24018),
       runtime.caml_int64_create_lo_mi_hi(1052736,5251216,4224),
       runtime.caml_int64_create_lo_mi_hi(16053495,259335,62707),
       runtime.caml_int64_create_lo_mi_hi(13355787,12618717,51990),
       runtime.caml_int64_create_lo_mi_hi(4079352,13008083,16109),
       runtime.caml_int64_create_lo_mi_hi(328980,1116717,1320),
       runtime.caml_int64_create_lo_mi_hi(6776705,15126136,26399),
       runtime.caml_int64_create_lo_mi_hi(15000759,5494167,58483),
       runtime.caml_int64_create_lo_mi_hi(2566044,12275202,10021),
       runtime.caml_int64_create_lo_mi_hi(4276505,5800563,16690),
       runtime.caml_int64_create_lo_mi_hi(9145110,10292135,35628),
       runtime.caml_int64_create_lo_mi_hi(10987430,87030,42833),
       runtime.caml_int64_create_lo_mi_hi(8224233,9763506,32207),
       runtime.caml_int64_create_lo_mi_hi(9803118,16463689,38364),
       runtime.caml_int64_create_lo_mi_hi(14211143,10464598,55438),
       runtime.caml_int64_create_lo_mi_hi(16513995,3206000,64395),
       runtime.caml_int64_create_lo_mi_hi(15658655,7455181,60963),
       runtime.caml_int64_create_lo_mi_hi(8158445,9566395,31943),
       runtime.caml_int64_create_lo_mi_hi(6710917,14929009,26135),
       runtime.caml_int64_create_lo_mi_hi(14540115,9348987,56742),
       runtime.caml_int64_create_lo_mi_hi(1513308,4927151,6072),
       runtime.caml_int64_create_lo_mi_hi(4671233,4623941,18178),
       runtime.caml_int64_create_lo_mi_hi(10395202,14426394,40580),
       runtime.caml_int64_create_lo_mi_hi(13289999,12945876,51742),
       runtime.caml_int64_create_lo_mi_hi(2960820,10050136,11637),
       runtime.caml_int64_create_lo_mi_hi(12566470,7955246,49041),
       runtime.caml_int64_create_lo_mi_hi(460572,1773119,1848),
       runtime.caml_int64_create_lo_mi_hi(11382158,2312108,44289),
       runtime.caml_int64_create_lo_mi_hi(5921397,3126448,23274),
       runtime.caml_int64_create_lo_mi_hi(8618806,11869167,33644),
       runtime.caml_int64_create_lo_mi_hi(3355596,16737974,13189),
       runtime.caml_int64_create_lo_mi_hi(6513553,15910492,25407),
       runtime.caml_int64_create_lo_mi_hi(131592,656402,528),
       runtime.caml_int64_create_lo_mi_hi(11184786,3688851,43577),
       runtime.caml_int64_create_lo_mi_hi(7434713,11068126,29103),
       runtime.caml_int64_create_lo_mi_hi(13158407,13602246,51214),
       runtime.caml_int64_create_lo_mi_hi(1644900,8205009,6600),
       runtime.caml_int64_create_lo_mi_hi(4802873,7377467,18802),
       runtime.caml_int64_create_lo_mi_hi(14276931,10137439,55686),
       runtime.caml_int64_create_lo_mi_hi(15921903,1964337,62147),
       runtime.caml_int64_create_lo_mi_hi(14934955,4774824,58187),
       runtime.caml_int64_create_lo_mi_hi(5987185,2799289,23522),
       runtime.caml_int64_create_lo_mi_hi(8947738,9571772,34868),
       runtime.caml_int64_create_lo_mi_hi(10132050,13117758,39588),
       runtime.caml_int64_create_lo_mi_hi(2500248,12471307,9773),
       runtime.caml_int64_create_lo_mi_hi(3289800,16409791,12941),
       runtime.caml_int64_create_lo_mi_hi(11579642,4881753,45289),
       runtime.caml_int64_create_lo_mi_hi(15329667,7000050,59675),
       runtime.caml_int64_create_lo_mi_hi(986940,3350135,3960),
       runtime.caml_int64_create_lo_mi_hi(14013811,10925875,54758),
       runtime.caml_int64_create_lo_mi_hi(8421434,12197364,32884),
       runtime.caml_int64_create_lo_mi_hi(12500674,8151335,48793),
       runtime.caml_int64_create_lo_mi_hi(13487379,14583787,52518),
       runtime.caml_int64_create_lo_mi_hi(3421392,14968969,13501),
       runtime.caml_int64_create_lo_mi_hi(4737085,7704626,18554),
       runtime.caml_int64_create_lo_mi_hi(16777179,2417492,65451),
       runtime.caml_int64_create_lo_mi_hi(8026869,9434253,31479),
       runtime.caml_int64_create_lo_mi_hi(9474170,15351140,37108),
       runtime.caml_int64_create_lo_mi_hi(6250337,4112029,24514),
       runtime.caml_int64_create_lo_mi_hi(2105472,10502205,8221),
       runtime.caml_int64_create_lo_mi_hi(6842557,14012431,26727),
       runtime.caml_int64_create_lo_mi_hi(1710696,7484618,6864),
       runtime.caml_int64_create_lo_mi_hi(11447938,2900407,44569),
       runtime.caml_int64_create_lo_mi_hi(11842794,6190461,46281),
       runtime.caml_int64_create_lo_mi_hi(5526605,1681614,21658),
       runtime.caml_int64_create_lo_mi_hi(9671542,15022975,37868),
       runtime.caml_int64_create_lo_mi_hi(2237064,11158575,8717),
       runtime.caml_int64_create_lo_mi_hi(6579341,15321187,25607),
       runtime.caml_int64_create_lo_mi_hi(15856099,1244970,61915),
       runtime.caml_int64_create_lo_mi_hi(7566289,10675916,29631),
       runtime.caml_int64_create_lo_mi_hi(1184328,5907586,4752),
       runtime.caml_int64_create_lo_mi_hi(4210717,6127738,16442),
       runtime.caml_int64_create_lo_mi_hi(526368,2625608,2112),
       runtime.caml_int64_create_lo_mi_hi(12829483,15244181,50006),
       runtime.caml_int64_create_lo_mi_hi(15527063,8111583,60467),
       runtime.caml_int64_create_lo_mi_hi(14408523,9481037,56214),
       runtime.caml_int64_create_lo_mi_hi(10592702,2056128,41313),
       runtime.caml_int64_create_lo_mi_hi(9276686,8587153,36124),
       runtime.caml_int64_create_lo_mi_hi(4013556,13204168,15861),
       runtime.caml_int64_create_lo_mi_hi(9934694,15807323,38860),
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(13618971,13927417,53046),
       runtime.caml_int64_create_lo_mi_hi(2829228,8869486,11077),
       runtime.caml_int64_create_lo_mi_hi(7763653,11791585,30359),
       runtime.caml_int64_create_lo_mi_hi(8553010,11540966,33380),
       runtime.caml_int64_create_lo_mi_hi(14079615,11120936,55038),
       runtime.caml_int64_create_lo_mi_hi(1776492,7812803,7128),
       runtime.caml_int64_create_lo_mi_hi(11908590,5994356,46529),
       runtime.caml_int64_create_lo_mi_hi(11513734,2704318,44817),
       runtime.caml_int64_create_lo_mi_hi(6974133,14668829,27255),
       runtime.caml_int64_create_lo_mi_hi(5263453,893162,20666),
       runtime.caml_int64_create_lo_mi_hi(4539657,5016151,17682),
       runtime.caml_int64_create_lo_mi_hi(15987691,1637176,62411),
       runtime.caml_int64_create_lo_mi_hi(3158208,15753389,12445),
       runtime.caml_int64_create_lo_mi_hi(15724443,7652292,61227),
       runtime.caml_int64_create_lo_mi_hi(4145148,12811994,16357),
       runtime.caml_int64_create_lo_mi_hi(5592393,1878727,21906),
       runtime.caml_int64_create_lo_mi_hi(10658482,1071579,41593),
       runtime.caml_int64_create_lo_mi_hi(15395471,6670825,59907),
       runtime.caml_int64_create_lo_mi_hi(6645129,15518314,25871),
       runtime.caml_int64_create_lo_mi_hi(12237522,6842627,47801),
       runtime.caml_int64_create_lo_mi_hi(3092412,9657930,12133),
       runtime.caml_int64_create_lo_mi_hi(12632103,15179150,49230),
       runtime.caml_int64_create_lo_mi_hi(14605919,8495456,57022),
       runtime.caml_int64_create_lo_mi_hi(1842288,7092476,7392),
       runtime.caml_int64_create_lo_mi_hi(16645587,3073862,64955),
       runtime.caml_int64_create_lo_mi_hi(5066025,6593055,19794),
       runtime.caml_int64_create_lo_mi_hi(9605746,14694774,37604),
       runtime.caml_int64_create_lo_mi_hi(7697865,12380922,30095),
       runtime.caml_int64_create_lo_mi_hi(394776,1969206,1584),
       runtime.caml_int64_create_lo_mi_hi(9079314,9963950,35364),
       runtime.caml_int64_create_lo_mi_hi(11711218,4225355,45817),
       runtime.caml_int64_create_lo_mi_hi(15132351,5886341,58979),
       runtime.caml_int64_create_lo_mi_hi(921144,3546238,3696),
       runtime.caml_int64_create_lo_mi_hi(2039676,6504167,8184),
       runtime.caml_int64_create_lo_mi_hi(6447765,16237653,25143),
       runtime.caml_int64_create_lo_mi_hi(13948023,10728762,54510),
       runtime.caml_int64_create_lo_mi_hi(11053210,3296641,43049),
       runtime.caml_int64_create_lo_mi_hi(9868898,16003410,38596),
       runtime.caml_int64_create_lo_mi_hi(16382403,3862370,63899),
       runtime.caml_int64_create_lo_mi_hi(12961075,16160675,50534),
       runtime.caml_int64_create_lo_mi_hi(2434452,11618832,9525),
       runtime.caml_int64_create_lo_mi_hi(5855609,2142891,23026),
       runtime.caml_int64_create_lo_mi_hi(8684586,11408848,33876),
       runtime.caml_int64_create_lo_mi_hi(7500501,11003077,29367),
       runtime.caml_int64_create_lo_mi_hi(3750372,14512876,14805),
       runtime.caml_int64_create_lo_mi_hi(5000237,6395926,19546),
       runtime.caml_int64_create_lo_mi_hi(6184549,3914900,24266),
       runtime.caml_int64_create_lo_mi_hi(7895293,8777887,30951),
       runtime.caml_int64_create_lo_mi_hi(3684576,14184677,14557),
       runtime.caml_int64_create_lo_mi_hi(9210890,8783256,35860),
       runtime.caml_int64_create_lo_mi_hi(13750627,11714327,53702),
       runtime.caml_int64_create_lo_mi_hi(10855854,743396,42305),
       runtime.caml_int64_create_lo_mi_hi(14869167,5101985,57923),
       runtime.caml_int64_create_lo_mi_hi(6381977,16302670,24879),
       runtime.caml_int64_create_lo_mi_hi(11777014,4553538,46065),
       runtime.caml_int64_create_lo_mi_hi(2171268,10830388,8469),
       runtime.caml_int64_create_lo_mi_hi(10263626,14034184,40084),
       runtime.caml_int64_create_lo_mi_hi(1973880,6700270,7920),
       runtime.caml_int64_create_lo_mi_hi(4408081,5408353,17186),
       runtime.caml_int64_create_lo_mi_hi(13092667,16552881,51062),
       runtime.caml_int64_create_lo_mi_hi(16579799,2876751,64691),
       runtime.caml_int64_create_lo_mi_hi(263184,1312804,1056),
       runtime.caml_int64_create_lo_mi_hi(5329241,565987,20914),
       runtime.caml_int64_create_lo_mi_hi(10066270,13053733,39356),
       runtime.caml_int64_create_lo_mi_hi(7171497,12900898,27983),
       runtime.caml_int64_create_lo_mi_hi(855348,3742309,3432),
       runtime.caml_int64_create_lo_mi_hi(16448207,3533177,64131),
       runtime.caml_int64_create_lo_mi_hi(14671707,8692585,57270),
       runtime.caml_int64_create_lo_mi_hi(8290021,10222761,32471),
       runtime.caml_int64_create_lo_mi_hi(2368656,11814937,9277),
       runtime.caml_int64_create_lo_mi_hi(3881964,14120702,15301),
       runtime.caml_int64_create_lo_mi_hi(11250582,4017050,43825),
       runtime.caml_int64_create_lo_mi_hi(13553183,13730288,52798),
       runtime.caml_int64_create_lo_mi_hi(1118532,5579417,4488),
       runtime.caml_int64_create_lo_mi_hi(9408262,8979331,36620),
       runtime.caml_int64_create_lo_mi_hi(5131813,7052292,20042),
       runtime.caml_int64_create_lo_mi_hi(12040166,5337958,47057),
       runtime.caml_int64_create_lo_mi_hi(15461259,6343648,60171),
       runtime.caml_int64_create_lo_mi_hi(3947760,13400257,15613),
       runtime.caml_int64_create_lo_mi_hi(8487230,12525565,33148),
       runtime.caml_int64_create_lo_mi_hi(9737322,16659776,38100),
       runtime.caml_int64_create_lo_mi_hi(16250875,848668,63467),
       runtime.caml_int64_create_lo_mi_hi(12171742,6778648,47521),
       runtime.caml_int64_create_lo_mi_hi(1250124,6235787,5016),
       runtime.caml_int64_create_lo_mi_hi(2895024,10246225,11389),
       runtime.caml_int64_create_lo_mi_hi(13882219,12106501,54230),
       runtime.caml_int64_create_lo_mi_hi(15198139,6083468,59243),
       runtime.caml_int64_create_lo_mi_hi(7237285,13360185,28247),
       runtime.caml_int64_create_lo_mi_hi(12895287,15963562,50286),
       runtime.caml_int64_create_lo_mi_hi(197388,984603,792),
       runtime.caml_int64_create_lo_mi_hi(5658181,1289436,22154),
       runtime.caml_int64_create_lo_mi_hi(4473869,4819038,17434),
       runtime.caml_int64_create_lo_mi_hi(8355809,10419872,32735),
       runtime.caml_int64_create_lo_mi_hi(11119006,3624840,43297),
       runtime.caml_int64_create_lo_mi_hi(2763432,8541287,10829),
       runtime.caml_int64_create_lo_mi_hi(12303318,7170826,48049),
       runtime.caml_int64_create_lo_mi_hi(12697891,14851975,49478),
       runtime.caml_int64_create_lo_mi_hi(5460817,173809,21410),
       runtime.caml_int64_create_lo_mi_hi(14474327,9151858,56494),
       runtime.caml_int64_create_lo_mi_hi(723756,2561619,2904),
       runtime.caml_int64_create_lo_mi_hi(10329422,13838081,40348),
       runtime.caml_int64_create_lo_mi_hi(7105709,12703787,27719),
       runtime.caml_int64_create_lo_mi_hi(3224004,16081572,12693),
       runtime.caml_int64_create_lo_mi_hi(7632077,12183795,29831),
       runtime.caml_int64_create_lo_mi_hi(16185087,651541,63203),
       runtime.caml_int64_create_lo_mi_hi(4605445,4426828,17930),
       runtime.caml_int64_create_lo_mi_hi(11316362,2508197,44041),
       runtime.caml_int64_create_lo_mi_hi(9013534,9899957,35132),
       runtime.caml_int64_create_lo_mi_hi(1315920,4466868,5280),
       runtime.caml_int64_create_lo_mi_hi(14803363,4382650,57691),
       runtime.caml_int64_create_lo_mi_hi(1447512,5123238,5808),
       runtime.caml_int64_create_lo_mi_hi(3816168,13792503,15053),
       runtime.caml_int64_create_lo_mi_hi(6908345,13685254,26991),
       runtime.caml_int64_create_lo_mi_hi(592164,2953793,2376),
       runtime.caml_int64_create_lo_mi_hi(7368925,11395287,28839),
       runtime.caml_int64_create_lo_mi_hi(11974370,5534063,46809),
       runtime.caml_int64_create_lo_mi_hi(13684839,12041502,53454),
       runtime.caml_int64_create_lo_mi_hi(15592851,8308694,60731),
       runtime.caml_int64_create_lo_mi_hi(13421591,14386658,52270),
       runtime.caml_int64_create_lo_mi_hi(4342293,5735528,16938),
       runtime.caml_int64_create_lo_mi_hi(10000474,12725548,39092),
       runtime.caml_int64_create_lo_mi_hi(10790058,939501,42057),
       runtime.caml_int64_create_lo_mi_hi(2631840,8933493,10333),
       runtime.caml_int64_create_lo_mi_hi(6052973,3258502,23770),
       runtime.caml_int64_create_lo_mi_hi(16316615,4189547,63635),
       runtime.caml_int64_create_lo_mi_hi(8816162,10752450,34372)],
     _aK_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(1597464,3201048,49272),
       runtime.caml_int64_create_lo_mi_hi(2329635,4597283,1455),
       runtime.caml_int64_create_lo_mi_hi(12992454,9550022,32505),
       runtime.caml_int64_create_lo_mi_hi(15239144,13499368,4975),
       runtime.caml_int64_create_lo_mi_hi(8857223,1297287,19617),
       runtime.caml_int64_create_lo_mi_hi(12114616,7147960,43362),
       runtime.caml_int64_create_lo_mi_hi(66561,133377,2053),
       runtime.caml_int64_create_lo_mi_hi(5185871,10358095,17006),
       runtime.caml_int64_create_lo_mi_hi(3594294,7117622,44526),
       runtime.caml_int64_create_lo_mi_hi(10920614,5373862,22788),
       runtime.caml_int64_create_lo_mi_hi(13791186,12127442,57021),
       runtime.caml_int64_create_lo_mi_hi(16118773,16191221,64262),
       runtime.caml_int64_create_lo_mi_hi(7993721,15898233,61312),
       runtime.caml_int64_create_lo_mi_hi(7315823,14561391,24526),
       runtime.caml_int64_create_lo_mi_hi(9535121,4156817,64751),
       runtime.caml_int64_create_lo_mi_hi(5395794,10811474,43527),
       runtime.caml_int64_create_lo_mi_hi(6331744,12601184,10237),
       runtime.caml_int64_create_lo_mi_hi(12372668,6632892,35190),
       runtime.caml_int64_create_lo_mi_hi(10180251,2832283,44237),
       runtime.caml_int64_create_lo_mi_hi(9306766,101006,1164),
       runtime.caml_int64_create_lo_mi_hi(10729123,6017699,28949),
       runtime.caml_int64_create_lo_mi_hi(798732,1600524,24636),
       runtime.caml_int64_create_lo_mi_hi(8122747,16155771,65418),
       runtime.caml_int64_create_lo_mi_hi(3527733,6979637,46561),
       runtime.caml_int64_create_lo_mi_hi(1930269,3863837,59497),
       runtime.caml_int64_create_lo_mi_hi(14723040,14529504,21319),
       runtime.caml_int64_create_lo_mi_hi(14121943,11739607,63148),
       runtime.caml_int64_create_lo_mi_hi(12726210,10067138,24301),
       runtime.caml_int64_create_lo_mi_hi(3061806,6046510,28054),
       runtime.caml_int64_create_lo_mi_hi(4927819,9840971,25210),
       runtime.caml_int64_create_lo_mi_hi(16703486,14769662,41761),
       runtime.caml_int64_create_lo_mi_hi(5718359,11457879,33302),
       runtime.caml_int64_create_lo_mi_hi(1397781,2800917,43073),
       runtime.caml_int64_create_lo_mi_hi(7848311,15657079,40886),
       runtime.caml_int64_create_lo_mi_hi(3660855,7246391,42475),
       runtime.caml_int64_create_lo_mi_hi(15053797,14130917,31574),
       runtime.caml_int64_create_lo_mi_hi(10438303,2298783,36057),
       runtime.caml_int64_create_lo_mi_hi(15788016,16589808,54039),
       runtime.caml_int64_create_lo_mi_hi(4863306,9707594,27263),
       runtime.caml_int64_create_lo_mi_hi(14307290,11093210,40597),
       runtime.caml_int64_create_lo_mi_hi(5799256,11575896,64037),
       runtime.caml_int64_create_lo_mi_hi(13173705,9424841,1738),
       runtime.caml_int64_create_lo_mi_hi(2729001,5405737,21901),
       runtime.caml_int64_create_lo_mi_hi(665610,1333770,20514),
       runtime.caml_int64_create_lo_mi_hi(11665073,8343729,57679),
       runtime.caml_int64_create_lo_mi_hi(10533536,6146464,26906),
       runtime.caml_int64_create_lo_mi_hi(7057771,14029931,32730),
       runtime.caml_int64_create_lo_mi_hi(8728197,1563013,23723),
       runtime.caml_int64_create_lo_mi_hi(12439229,6765757,33139),
       runtime.caml_int64_create_lo_mi_hi(6121821,12226397,53812),
       runtime.caml_int64_create_lo_mi_hi(1064976,2134032,32848),
       runtime.caml_int64_create_lo_mi_hi(16054260,16058356,62211),
       runtime.caml_int64_create_lo_mi_hi(13306827,9166283,5824),
       runtime.caml_int64_create_lo_mi_hi(4126782,8180542,60870),
       runtime.caml_int64_create_lo_mi_hi(332805,666885,10257),
       runtime.caml_int64_create_lo_mi_hi(6783335,13531239,8166),
       runtime.caml_int64_create_lo_mi_hi(14989284,13998052,29523),
       runtime.caml_int64_create_lo_mi_hi(2595879,5112359,9659),
       runtime.caml_int64_create_lo_mi_hi(4266305,8549185,12888),
       runtime.caml_int64_create_lo_mi_hi(9115275,763787,11421),
       runtime.caml_int64_create_lo_mi_hi(10987175,5502631,20737),
       runtime.caml_int64_create_lo_mi_hi(8251773,16429693,53140),
       runtime.caml_int64_create_lo_mi_hi(9793173,3623317,56571),
       runtime.caml_int64_create_lo_mi_hi(14174168,11359960,36511),
       runtime.caml_int64_create_lo_mi_hi(16501755,15429883,35632),
       runtime.caml_int64_create_lo_mi_hi(15638510,12701166,9073),
       runtime.caml_int64_create_lo_mi_hi(8187260,16300924,51089),
       runtime.caml_int64_create_lo_mi_hi(6718822,13398374,6115),
       runtime.caml_int64_create_lo_mi_hi(14504925,10976221,42638),
       runtime.caml_int64_create_lo_mi_hi(1530903,3059479,47179),
       runtime.caml_int64_create_lo_mi_hi(4653383,9323847,582),
       runtime.caml_int64_create_lo_mi_hi(10371742,2169502,34012),
       runtime.caml_int64_create_lo_mi_hi(13242314,9032906,7877),
       runtime.caml_int64_create_lo_mi_hi(2995245,5920813,30105),
       runtime.caml_int64_create_lo_mi_hi(12568255,6500031,37241),
       runtime.caml_int64_create_lo_mi_hi(465927,933639,14363),
       runtime.caml_int64_create_lo_mi_hi(11374253,4697261,291),
       runtime.caml_int64_create_lo_mi_hi(5928282,11841626,59951),
       runtime.caml_int64_create_lo_mi_hi(8599171,1830787,27829),
       runtime.caml_int64_create_lo_mi_hi(3394611,6731315,34303),
       runtime.caml_int64_create_lo_mi_hi(6525283,12999779,16370),
       runtime.caml_int64_create_lo_mi_hi(133122,266754,4106),
       runtime.caml_int64_create_lo_mi_hi(11178666,4821930,14648),
       runtime.caml_int64_create_lo_mi_hi(7461233,14868081,44968),
       runtime.caml_int64_create_lo_mi_hi(13109192,9291464,3791),
       runtime.caml_int64_create_lo_mi_hi(1664025,3330329,51325),
       runtime.caml_int64_create_lo_mi_hi(4798793,9583433,29296),
       runtime.caml_int64_create_lo_mi_hi(14238681,11493337,34458),
       runtime.caml_int64_create_lo_mi_hi(15921138,16331250,49949),
       runtime.caml_int64_create_lo_mi_hi(14920675,14395619,19272),
       runtime.caml_int64_create_lo_mi_hi(5992795,11975003,57898),
       runtime.caml_int64_create_lo_mi_hi(8919688,900232,13458),
       runtime.caml_int64_create_lo_mi_hi(10113690,2703002,42184),
       runtime.caml_int64_create_lo_mi_hi(2529318,4983590,11710),
       runtime.caml_int64_create_lo_mi_hi(3328050,6602546,36346),
       runtime.caml_int64_create_lo_mi_hi(11598512,8214960,59722),
       runtime.caml_int64_create_lo_mi_hi(15303657,13628137,7018),
       runtime.caml_int64_create_lo_mi_hi(998415,1996559,30771),
       runtime.caml_int64_create_lo_mi_hi(13988821,12006357,59046),
       runtime.caml_int64_create_lo_mi_hi(8403584,1963136,29882),
       runtime.caml_int64_create_lo_mi_hi(12501694,6367166,39292),
       runtime.caml_int64_create_lo_mi_hi(13439949,8907725,9950),
       runtime.caml_int64_create_lo_mi_hi(3461172,6850868,48612),
       runtime.caml_int64_create_lo_mi_hi(4734280,9450056,31349),
       runtime.caml_int64_create_lo_mi_hi(16767999,14898431,43812),
       runtime.caml_int64_create_lo_mi_hi(8058234,16027002,63375),
       runtime.caml_int64_create_lo_mi_hi(9468560,4023440,62698),
       runtime.caml_int64_create_lo_mi_hi(6250847,12492127,49726),
       runtime.caml_int64_create_lo_mi_hi(2129952,4209952,7584),
       runtime.caml_int64_create_lo_mi_hi(6864232,13635432,26581),
       runtime.caml_int64_create_lo_mi_hi(1730586,3459610,53362),
       runtime.caml_int64_create_lo_mi_hi(11436718,4306862,6444),
       runtime.caml_int64_create_lo_mi_hi(11856564,7699892,51550),
       runtime.caml_int64_create_lo_mi_hi(5524820,11062868,39449),
       runtime.caml_int64_create_lo_mi_hi(9664147,3899283,60645),
       runtime.caml_int64_create_lo_mi_hi(2263074,4468514,3498),
       runtime.caml_int64_create_lo_mi_hi(6589796,13132644,2025),
       runtime.caml_int64_create_lo_mi_hi(15852529,16722673,56082),
       runtime.caml_int64_create_lo_mi_hi(7590259,15125619,49058),
       runtime.caml_int64_create_lo_mi_hi(1198098,2392594,36954),
       runtime.caml_int64_create_lo_mi_hi(4201792,8419904,14941),
       runtime.caml_int64_create_lo_mi_hi(532488,1067016,16424),
       runtime.caml_int64_create_lo_mi_hi(12790723,10196419,22248),
       runtime.caml_int64_create_lo_mi_hi(15505388,12967916,13179),
       runtime.caml_int64_create_lo_mi_hi(14371803,11226587,38544),
       runtime.caml_int64_create_lo_mi_hi(10600097,6275233,24863),
       runtime.caml_int64_create_lo_mi_hi(9244301,496013,7299),
       runtime.caml_int64_create_lo_mi_hi(4060221,8046653,62921),
       runtime.caml_int64_create_lo_mi_hi(9922199,3365783,52465),
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(13573071,8649167,14036),
       runtime.caml_int64_create_lo_mi_hi(2862123,5664299,17799),
       runtime.caml_int64_create_lo_mi_hi(7783798,15524214,38835),
       runtime.caml_int64_create_lo_mi_hi(8532610,1697410,25776),
       runtime.caml_int64_create_lo_mi_hi(14057430,11610326,65193),
       runtime.caml_int64_create_lo_mi_hi(1797147,3588891,55415),
       runtime.caml_int64_create_lo_mi_hi(11923125,7828661,49499),
       runtime.caml_int64_create_lo_mi_hi(11503279,4439727,4393),
       runtime.caml_int64_create_lo_mi_hi(6993258,13901162,30687),
       runtime.caml_int64_create_lo_mi_hi(5266768,10545744,47629),
       runtime.caml_int64_create_lo_mi_hi(4524357,9066309,4684),
       runtime.caml_int64_create_lo_mi_hi(15985651,16464115,51992),
       runtime.caml_int64_create_lo_mi_hi(3194928,6335792,40432),
       runtime.caml_int64_create_lo_mi_hi(15703023,12829935,11124),
       runtime.caml_int64_create_lo_mi_hi(4193343,8313407,58819),
       runtime.caml_int64_create_lo_mi_hi(5589333,11192149,37404),
       runtime.caml_int64_create_lo_mi_hi(10662562,5888930,30992),
       runtime.caml_int64_create_lo_mi_hi(15372266,13232618,869),
       runtime.caml_int64_create_lo_mi_hi(6654309,13265509,4076),
       runtime.caml_int64_create_lo_mi_hi(12243642,6882234,47464),
       runtime.caml_int64_create_lo_mi_hi(3128367,6179375,26003),
       runtime.caml_int64_create_lo_mi_hi(12593088,10325696,20199),
       runtime.caml_int64_create_lo_mi_hi(14573534,10576094,48769),
       runtime.caml_int64_create_lo_mi_hi(1863708,3734556,57452),
       runtime.caml_int64_create_lo_mi_hi(16634877,15156989,47918),
       runtime.caml_int64_create_lo_mi_hi(5056845,10100557,21092),
       runtime.caml_int64_create_lo_mi_hi(9597586,3765906,58592),
       runtime.caml_int64_create_lo_mi_hi(7719285,15399541,36796),
       runtime.caml_int64_create_lo_mi_hi(399366,800262,12318),
       runtime.caml_int64_create_lo_mi_hi(9048714,634506,9368),
       runtime.caml_int64_create_lo_mi_hi(11727538,7949234,63808),
       runtime.caml_int64_create_lo_mi_hi(15122406,13731302,25433),
       runtime.caml_int64_create_lo_mi_hi(931854,1867278,28726),
       runtime.caml_int64_create_lo_mi_hi(2063391,4122399,63587),
       runtime.caml_int64_create_lo_mi_hi(6460770,12866914,14327),
       runtime.caml_int64_create_lo_mi_hi(13924308,11877076,61091),
       runtime.caml_int64_create_lo_mi_hi(11049640,5079464,10546),
       runtime.caml_int64_create_lo_mi_hi(9855638,3232406,50420),
       runtime.caml_int64_create_lo_mi_hi(16368633,15688441,39738),
       runtime.caml_int64_create_lo_mi_hi(12923845,9937861,26358),
       runtime.caml_int64_create_lo_mi_hi(2462757,4853797,13745),
       runtime.caml_int64_create_lo_mi_hi(5863769,11709273,61984),
       runtime.caml_int64_create_lo_mi_hi(8661636,1429636,21678),
       runtime.caml_int64_create_lo_mi_hi(7525746,14992754,47015),
       runtime.caml_int64_create_lo_mi_hi(3793977,7531577,54749),
       runtime.caml_int64_create_lo_mi_hi(4992332,9967180,23137),
       runtime.caml_int64_create_lo_mi_hi(6186334,12358750,51771),
       runtime.caml_int64_create_lo_mi_hi(7929208,15769464,59269),
       runtime.caml_int64_create_lo_mi_hi(3727416,7398712,56792),
       runtime.caml_int64_create_lo_mi_hi(9177740,366732,5254),
       runtime.caml_int64_create_lo_mi_hi(13722577,12523473,50866),
       runtime.caml_int64_create_lo_mi_hi(10858149,5760165,16651),
       runtime.caml_int64_create_lo_mi_hi(14856162,14262754,17229),
       runtime.caml_int64_create_lo_mi_hi(6396257,12734049,12280),
       runtime.caml_int64_create_lo_mi_hi(11794099,8078003,61765),
       runtime.caml_int64_create_lo_mi_hi(2196513,4338721,5541),
       runtime.caml_int64_create_lo_mi_hi(10242716,2427036,38102),
       runtime.caml_int64_create_lo_mi_hi(1996830,3993118,61542),
       runtime.caml_int64_create_lo_mi_hi(4395331,8806723,8786),
       runtime.caml_int64_create_lo_mi_hi(13056967,9679303,30460),
       runtime.caml_int64_create_lo_mi_hi(16570364,15028220,45867),
       runtime.caml_int64_create_lo_mi_hi(266244,533508,8212),
       runtime.caml_int64_create_lo_mi_hi(5331281,10675025,45576),
       runtime.caml_int64_create_lo_mi_hi(10051225,3089817,48327),
       runtime.caml_int64_create_lo_mi_hi(7186797,14295661,20420),
       runtime.caml_int64_create_lo_mi_hi(865293,1729805,26681),
       runtime.caml_int64_create_lo_mi_hi(16437242,15301114,33589),
       runtime.caml_int64_create_lo_mi_hi(14638047,10709471,46724),
       runtime.caml_int64_create_lo_mi_hi(8316286,16558462,55195),
       runtime.caml_int64_create_lo_mi_hi(2396196,4725028,15796),
       runtime.caml_int64_create_lo_mi_hi(3927099,7798331,50647),
       runtime.caml_int64_create_lo_mi_hi(11245227,4954795,12605),
       runtime.caml_int64_create_lo_mi_hi(13508558,8515790,16081),
       runtime.caml_int64_create_lo_mi_hi(1131537,2267409,34901),
       runtime.caml_int64_create_lo_mi_hi(9373327,230287,3209),
       runtime.caml_int64_create_lo_mi_hi(5121358,10224718,19051),
       runtime.caml_int64_create_lo_mi_hi(12052151,7562935,53585),
       runtime.caml_int64_create_lo_mi_hi(15436779,13361387,2912),
       runtime.caml_int64_create_lo_mi_hi(3993660,7913788,64972),
       runtime.caml_int64_create_lo_mi_hi(8470145,2096513,31935),
       runtime.caml_int64_create_lo_mi_hi(9726612,3489940,54526),
       runtime.caml_int64_create_lo_mi_hi(16251895,15932663,60172),
       runtime.caml_int64_create_lo_mi_hi(12181177,7280825,41319),
       runtime.caml_int64_create_lo_mi_hi(1264659,2525971,39007),
       runtime.caml_int64_create_lo_mi_hi(2928684,5787948,32156),
       runtime.caml_int64_create_lo_mi_hi(13855699,12256723,54968),
       runtime.caml_int64_create_lo_mi_hi(15186919,13864167,27484),
       runtime.caml_int64_create_lo_mi_hi(7251310,14432622,22475),
       runtime.caml_int64_create_lo_mi_hi(12859332,9808580,28403),
       runtime.caml_int64_create_lo_mi_hi(199683,400131,6159),
       runtime.caml_int64_create_lo_mi_hi(5653846,11328598,35347),
       runtime.caml_int64_create_lo_mi_hi(4459844,8937028,6729),
       runtime.caml_int64_create_lo_mi_hi(8380799,16687231,57246),
       runtime.caml_int64_create_lo_mi_hi(11116201,5212329,8503),
       runtime.caml_int64_create_lo_mi_hi(2795562,5531434,19842),
       runtime.caml_int64_create_lo_mi_hi(12310203,7015099,45421),
       runtime.caml_int64_create_lo_mi_hi(12657601,10454977,18146),
       runtime.caml_int64_create_lo_mi_hi(5460307,10940755,41474),
       runtime.caml_int64_create_lo_mi_hi(14440412,10842844,44683),
       runtime.caml_int64_create_lo_mi_hi(732171,1463051,22567),
       runtime.caml_int64_create_lo_mi_hi(10309277,2556317,40147),
       runtime.caml_int64_create_lo_mi_hi(7122284,14166892,18369),
       runtime.caml_int64_create_lo_mi_hi(3261489,6464561,38389),
       runtime.caml_int64_create_lo_mi_hi(7654772,15266676,34745),
       runtime.caml_int64_create_lo_mi_hi(16187382,15799798,58121),
       runtime.caml_int64_create_lo_mi_hi(4588870,9194566,2627),
       runtime.caml_int64_create_lo_mi_hi(11307692,4564396,2342),
       runtime.caml_int64_create_lo_mi_hi(8986249,1029513,15511),
       runtime.caml_int64_create_lo_mi_hi(1331220,2667540,41028),
       runtime.caml_int64_create_lo_mi_hi(14787553,14662369,23362),
       runtime.caml_int64_create_lo_mi_hi(1464342,2926102,45134),
       runtime.caml_int64_create_lo_mi_hi(3860538,7665466,52690),
       runtime.caml_int64_create_lo_mi_hi(6928745,13764201,28624),
       runtime.caml_int64_create_lo_mi_hi(599049,1196297,18477),
       runtime.caml_int64_create_lo_mi_hi(7396720,14735216,42925),
       runtime.caml_int64_create_lo_mi_hi(11985590,7434166,55636),
       runtime.caml_int64_create_lo_mi_hi(13658064,12394192,52919),
       runtime.caml_int64_create_lo_mi_hi(15569901,13096685,15230),
       runtime.caml_int64_create_lo_mi_hi(13375436,8774348,11995),
       runtime.caml_int64_create_lo_mi_hi(4330818,8677442,10839),
       runtime.caml_int64_create_lo_mi_hi(9984664,2960536,46274),
       runtime.caml_int64_create_lo_mi_hi(10791588,5631396,18702),
       runtime.caml_int64_create_lo_mi_hi(2662440,5272872,23944),
       runtime.caml_int64_create_lo_mi_hi(6057308,12093020,55857),
       runtime.caml_int64_create_lo_mi_hi(16304120,15559672,37695),
       runtime.caml_int64_create_lo_mi_hi(8790662,1163910,17572)],
     _aL_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(6297792,14161944,30768),
       runtime.caml_int64_create_lo_mi_hi(9184005,2499363,44870),
       runtime.caml_int64_create_lo_mi_hi(4179582,12109510,63889),
       runtime.caml_int64_create_lo_mi_hi(8906771,16509160,28621),
       runtime.caml_int64_create_lo_mi_hi(2525004,13338503,41235),
       runtime.caml_int64_create_lo_mi_hi(14334121,1161400,25197),
       runtime.caml_int64_create_lo_mi_hi(262408,590081,1282),
       runtime.caml_int64_create_lo_mi_hi(2182978,872271,28318),
       runtime.caml_int64_create_lo_mi_hi(14169773,10171958,61036),
       runtime.caml_int64_create_lo_mi_hi(10659417,16754342,1105),
       runtime.caml_int64_create_lo_mi_hi(7328478,840402,48569),
       runtime.caml_int64_create_lo_mi_hi(15988219,980469,1783),
       runtime.caml_int64_create_lo_mi_hi(16349679,9861497,33010),
       runtime.caml_int64_create_lo_mi_hi(10579807,3174255,52958),
       runtime.caml_int64_create_lo_mi_hi(8294908,7180689,61247),
       runtime.caml_int64_create_lo_mi_hi(5591722,16274002,1956),
       runtime.caml_int64_create_lo_mi_hi(10313767,4677728,64960),
       runtime.caml_int64_create_lo_mi_hi(13286537,3521724,30309),
       runtime.caml_int64_create_lo_mi_hi(5675948,3644315,52523),
       runtime.caml_int64_create_lo_mi_hi(167428,9080462,35841),
       runtime.caml_int64_create_lo_mi_hi(11969393,13804451,5467),
       runtime.caml_int64_create_lo_mi_hi(3148896,7080972,15384),
       runtime.caml_int64_create_lo_mi_hi(15825919,8682363,35574),
       runtime.caml_int64_create_lo_mi_hi(13907381,8402229,57706),
       runtime.caml_int64_create_lo_mi_hi(7609832,16063773,26938),
       runtime.caml_int64_create_lo_mi_hi(11001939,11788512,18397),
       runtime.caml_int64_create_lo_mi_hi(8116214,2217943,44211),
       runtime.caml_int64_create_lo_mi_hi(3129950,10273474,60825),
       runtime.caml_int64_create_lo_mi_hi(12070509,4402734,38492),
       runtime.caml_int64_create_lo_mi_hi(3230562,2706251,31382),
       runtime.caml_int64_create_lo_mi_hi(14679715,6160126,8673),
       runtime.caml_int64_create_lo_mi_hi(4282242,13981527,5806),
       runtime.caml_int64_create_lo_mi_hi(5510568,12391701,16682),
       runtime.caml_int64_create_lo_mi_hi(12679071,15234935,46830),
       runtime.caml_int64_create_lo_mi_hi(14432165,9582391,60270),
       runtime.caml_int64_create_lo_mi_hi(11789691,10413541,22231),
       runtime.caml_int64_create_lo_mi_hi(4628364,1286047,55587),
       runtime.caml_int64_create_lo_mi_hi(15200467,2355440,6141),
       runtime.caml_int64_create_lo_mi_hi(3492458,2116170,32660),
       runtime.caml_int64_create_lo_mi_hi(5233310,4512474,38313),
       runtime.caml_int64_create_lo_mi_hi(8214778,10639448,9648),
       runtime.caml_int64_create_lo_mi_hi(248070,13617609,51855),
       runtime.caml_int64_create_lo_mi_hi(10758485,8137001,36178),
       runtime.caml_int64_create_lo_mi_hi(2624080,5900810,8724),
       runtime.caml_int64_create_lo_mi_hi(16691681,5288369,20351),
       runtime.caml_int64_create_lo_mi_hi(12230761,13213856,6749),
       runtime.caml_int64_create_lo_mi_hi(11627391,1338219,56022),
       runtime.caml_int64_create_lo_mi_hi(3048796,14255493,43799),
       runtime.caml_int64_create_lo_mi_hi(13548929,3980733,29543),
       runtime.caml_int64_create_lo_mi_hi(6905298,9395549,13498),
       runtime.caml_int64_create_lo_mi_hi(4198528,9441296,20512),
       runtime.caml_int64_create_lo_mi_hi(16250099,521460,1013),
       runtime.caml_int64_create_lo_mi_hi(772886,14535627,49291),
       runtime.caml_int64_create_lo_mi_hi(16269037,13844030,50812),
       runtime.caml_int64_create_lo_mi_hi(1312040,2950405,4362),
       runtime.caml_int64_create_lo_mi_hi(8480543,7890791,59086),
       runtime.caml_int64_create_lo_mi_hi(12051571,9954532,21461),
       runtime.caml_int64_create_lo_mi_hi(10233637,141095,47950),
       runtime.caml_int64_create_lo_mi_hi(1655090,7553345,22658),
       runtime.caml_int64_create_lo_mi_hi(1477420,10980235,40203),
       runtime.caml_int64_create_lo_mi_hi(10921809,16164775,339),
       runtime.caml_int64_create_lo_mi_hi(15302095,11697533,38138),
       runtime.caml_int64_create_lo_mi_hi(7247324,4822421,64311),
       runtime.caml_int64_create_lo_mi_hi(4708494,5691608,40877),
       runtime.caml_int64_create_lo_mi_hi(13368203,7404539,12523),
       runtime.caml_int64_create_lo_mi_hi(10481187,13496046,29121),
       runtime.caml_int64_create_lo_mi_hi(15563975,12287100,37368),
       runtime.caml_int64_create_lo_mi_hi(8742423,7431782,58316),
       runtime.caml_int64_create_lo_mi_hi(5496230,8117725,36519),
       runtime.caml_int64_create_lo_mi_hi(6035384,11474711,19246),
       runtime.caml_int64_create_lo_mi_hi(83714,4540231,18062),
       runtime.caml_int64_create_lo_mi_hi(4365956,1744542,56353),
       runtime.caml_int64_create_lo_mi_hi(1034782,13945546,50569),
       runtime.caml_int64_create_lo_mi_hi(11808117,5778733,39258),
       runtime.caml_int64_create_lo_mi_hi(13025169,3063743,31075),
       runtime.caml_int64_create_lo_mi_hi(1836856,4130567,6926),
       runtime.caml_int64_create_lo_mi_hi(9350401,11316653,9031),
       runtime.caml_int64_create_lo_mi_hi(7690986,11557466,12212),
       runtime.caml_int64_create_lo_mi_hi(3572588,15696771,46363),
       runtime.caml_int64_create_lo_mi_hi(13382533,11940659,65382),
       runtime.caml_int64_create_lo_mi_hi(9528127,6054755,62150),
       runtime.caml_int64_create_lo_mi_hi(524816,1180162,2564),
       runtime.caml_int64_create_lo_mi_hi(9611833,9677482,14409),
       runtime.caml_int64_create_lo_mi_hi(14250415,14578033,43234),
       runtime.caml_int64_create_lo_mi_hi(509966,13027528,53133),
       runtime.caml_int64_create_lo_mi_hi(6560200,13703449,32050),
       runtime.caml_int64_create_lo_mi_hi(3754354,3885385,28818),
       runtime.caml_int64_create_lo_mi_hi(4446598,6281689,39599),
       runtime.caml_int64_create_lo_mi_hi(15725251,3273458,7673),
       runtime.caml_int64_create_lo_mi_hi(11264843,11068387,18651),
       runtime.caml_int64_create_lo_mi_hi(7429090,12147547,10934),
       runtime.caml_int64_create_lo_mi_hi(1738804,12355720,37389),
       runtime.caml_int64_create_lo_mi_hi(5413540,4102810,51241),
       runtime.caml_int64_create_lo_mi_hi(9971245,730662,48716),
       runtime.caml_int64_create_lo_mi_hi(13120141,12530226,64100),
       runtime.caml_int64_create_lo_mi_hi(16429289,5877936,19069),
       runtime.caml_int64_create_lo_mi_hi(8644891,15919593,27343),
       runtime.caml_int64_create_lo_mi_hi(3936120,7802639,13086),
       runtime.caml_int64_create_lo_mi_hi(7591398,3397077,42679),
       runtime.caml_int64_create_lo_mi_hi(3833972,16023680,47645),
       runtime.caml_int64_create_lo_mi_hi(12762777,2604734,31841),
       runtime.caml_int64_create_lo_mi_hi(1297702,15453645,56967),
       runtime.caml_int64_create_lo_mi_hi(13644989,8991796,58472),
       runtime.caml_int64_create_lo_mi_hi(4016250,3295304,30096),
       runtime.caml_int64_create_lo_mi_hi(14417835,5570559,9443),
       runtime.caml_int64_create_lo_mi_hi(16087799,9271930,36852),
       runtime.caml_int64_create_lo_mi_hi(8032500,6590608,59965),
       runtime.caml_int64_create_lo_mi_hi(6381506,10313567,16062),
       runtime.caml_int64_create_lo_mi_hi(8396829,4005920,41024),
       runtime.caml_int64_create_lo_mi_hi(12413031,1009768,54736),
       runtime.caml_int64_create_lo_mi_hi(6822608,13244954,29236),
       runtime.caml_int64_create_lo_mi_hi(8564249,12037806,11329),
       runtime.caml_int64_create_lo_mi_hi(15381705,8238260,24181),
       runtime.caml_int64_create_lo_mi_hi(5067930,13522004,6568),
       runtime.caml_int64_create_lo_mi_hi(7771116,8360851,58683),
       runtime.caml_int64_create_lo_mi_hi(8921613,3088930,43588),
       runtime.caml_int64_create_lo_mi_hi(9266183,6513764,59848),
       runtime.caml_int64_create_lo_mi_hi(14938587,2814449,4863),
       runtime.caml_int64_create_lo_mi_hi(13726655,13398899,41702),
       runtime.caml_int64_create_lo_mi_hi(4723344,8524306,23076),
       runtime.caml_int64_create_lo_mi_hi(1916986,8011840,23936),
       runtime.caml_int64_create_lo_mi_hi(2099264,4720648,10256),
       runtime.caml_int64_create_lo_mi_hi(2868054,9814979,59547),
       runtime.caml_int64_create_lo_mi_hi(9956403,14675180,31685),
       runtime.caml_int64_create_lo_mi_hi(4971414,5102555,37035),
       runtime.caml_int64_create_lo_mi_hi(12493153,12624289,8031),
       runtime.caml_int64_create_lo_mi_hi(953628,9538957,33543),
       runtime.caml_int64_create_lo_mi_hi(16006645,13122877,51578),
       runtime.caml_int64_create_lo_mi_hi(6723532,6002583,61747),
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(1822518,16371663,54403),
       runtime.caml_int64_create_lo_mi_hi(11283269,7220011,34646),
       runtime.caml_int64_create_lo_mi_hi(12940951,14775926,46060),
       runtime.caml_int64_create_lo_mi_hi(3310180,15106690,45081),
       runtime.caml_int64_create_lo_mi_hi(8378110,2676438,43441),
       runtime.caml_int64_create_lo_mi_hi(7085016,12786459,30518),
       runtime.caml_int64_create_lo_mi_hi(15644097,7648693,23415),
       runtime.caml_int64_create_lo_mi_hi(8826641,12496815,10563),
       runtime.caml_int64_create_lo_mi_hi(11889271,1927786,57300),
       runtime.caml_int64_create_lo_mi_hi(6115514,15355984,3488),
       runtime.caml_int64_create_lo_mi_hi(607506,5719365,19594),
       runtime.caml_int64_create_lo_mi_hi(15463371,3732467,6395),
       runtime.caml_int64_create_lo_mi_hi(12595357,11350064,61536),
       runtime.caml_int64_create_lo_mi_hi(10219307,12906479,29891),
       runtime.caml_int64_create_lo_mi_hi(16531429,14303039,50046),
       runtime.caml_int64_create_lo_mi_hi(4806034,13063509,7338),
       runtime.caml_int64_create_lo_mi_hi(11707001,14394018,4185),
       runtime.caml_int64_create_lo_mi_hi(9431555,15330026,26057),
       runtime.caml_int64_create_lo_mi_hi(9004303,6972773,60618),
       runtime.caml_int64_create_lo_mi_hi(13810361,244410,26729),
       runtime.caml_int64_create_lo_mi_hi(12332901,4861743,37726),
       runtime.caml_int64_create_lo_mi_hi(2605134,9355456,59293),
       runtime.caml_int64_create_lo_mi_hi(6282942,6348510,33185),
       runtime.caml_int64_create_lo_mi_hi(7347424,16522268,27704),
       runtime.caml_int64_create_lo_mi_hi(13893051,4652541,12007),
       runtime.caml_int64_create_lo_mi_hi(2706770,2051405,25754),
       runtime.caml_int64_create_lo_mi_hi(7508708,7770770,57401),
       runtime.caml_int64_create_lo_mi_hi(13202831,16414069,48362),
       runtime.caml_int64_create_lo_mi_hi(1574448,3540486,7692),
       runtime.caml_int64_create_lo_mi_hi(1215012,11438730,38921),
       runtime.caml_int64_create_lo_mi_hi(15905529,4960946,16505),
       runtime.caml_int64_create_lo_mi_hi(12576355,8775398,22993),
       runtime.caml_int64_create_lo_mi_hi(3673712,8261134,13852),
       runtime.caml_int64_create_lo_mi_hi(8134648,15146783,25406),
       runtime.caml_int64_create_lo_mi_hi(9790007,5595746,63428),
       runtime.caml_int64_create_lo_mi_hi(7853294,3855572,41909),
       runtime.caml_int64_create_lo_mi_hi(10135593,8497320,12877),
       runtime.caml_int64_create_lo_mi_hi(6461124,5412502,62513),
       runtime.caml_int64_create_lo_mi_hi(12843419,6486521,15087),
       runtime.caml_int64_create_lo_mi_hi(3392870,10732997,63127),
       runtime.caml_int64_create_lo_mi_hi(9708853,1058085,45386),
       runtime.caml_int64_create_lo_mi_hi(7952882,11229529,8370),
       runtime.caml_int64_create_lo_mi_hi(2786388,13665412,44565),
       runtime.caml_int64_create_lo_mi_hi(13988535,12939890,42980),
       runtime.caml_int64_create_lo_mi_hi(14957013,15481145,56690),
       runtime.caml_int64_create_lo_mi_hi(2968666,1461324,24984),
       runtime.caml_int64_create_lo_mi_hi(6643402,9723486,15292),
       runtime.caml_int64_create_lo_mi_hi(16611559,10451064,34288),
       runtime.caml_int64_create_lo_mi_hi(14694621,15022136,55408),
       runtime.caml_int64_create_lo_mi_hi(691220,9997452,34309),
       runtime.caml_int64_create_lo_mi_hi(6541766,1561041,45759),
       runtime.caml_int64_create_lo_mi_hi(11445569,14984613,2903),
       runtime.caml_int64_create_lo_mi_hi(11526723,10609378,19929),
       runtime.caml_int64_create_lo_mi_hi(10051887,5136737,63682),
       runtime.caml_int64_create_lo_mi_hi(16167921,4371379,17787),
       runtime.caml_int64_create_lo_mi_hi(8659221,3416353,42306),
       runtime.caml_int64_create_lo_mi_hi(4889748,564380,54821),
       runtime.caml_int64_create_lo_mi_hi(7872240,15605278,26172),
       runtime.caml_int64_create_lo_mi_hi(1131298,6374211,21126),
       runtime.caml_int64_create_lo_mi_hi(3917686,11651015,64659),
       runtime.caml_int64_create_lo_mi_hi(14154931,5242108,11237),
       runtime.caml_int64_create_lo_mi_hi(1049632,2360324,5128),
       runtime.caml_int64_create_lo_mi_hi(5853618,14897489,2210),
       runtime.caml_int64_create_lo_mi_hi(6199740,2464153,50991),
       runtime.caml_int64_create_lo_mi_hi(11103567,2256237,50394),
       runtime.caml_int64_create_lo_mi_hi(3411304,6622477,14618),
       runtime.caml_int64_create_lo_mi_hi(13630083,7994106,13801),
       runtime.caml_int64_create_lo_mi_hi(6021046,6938591,33955),
       runtime.caml_int64_create_lo_mi_hi(15040215,11107966,39932),
       runtime.caml_int64_create_lo_mi_hi(9446461,1647652,46152),
       runtime.caml_int64_create_lo_mi_hi(15481797,16661307,55158),
       runtime.caml_int64_create_lo_mi_hi(9874225,10136491,15691),
       runtime.caml_int64_create_lo_mi_hi(2084414,15781582,53633),
       runtime.caml_int64_create_lo_mi_hi(4460936,10031377,21794),
       runtime.caml_int64_create_lo_mi_hi(429836,8621967,35075),
       runtime.caml_int64_create_lo_mi_hi(2444874,282190,27548),
       runtime.caml_int64_create_lo_mi_hi(15120337,6731703,20851),
       runtime.caml_int64_create_lo_mi_hi(9169675,14740459,24779),
       runtime.caml_int64_create_lo_mi_hi(15744253,12663868,52344),
       runtime.caml_int64_create_lo_mi_hi(4096380,16613761,48927),
       runtime.caml_int64_create_lo_mi_hi(6984916,4232340,65077),
       runtime.caml_int64_create_lo_mi_hi(16513003,1898487,3315),
       runtime.caml_int64_create_lo_mi_hi(14596513,1620409,26479),
       runtime.caml_int64_create_lo_mi_hi(4985752,9114387,24358),
       runtime.caml_int64_create_lo_mi_hi(11545725,5319724,40024),
       runtime.caml_int64_create_lo_mi_hi(7066582,381907,47291),
       runtime.caml_int64_create_lo_mi_hi(12314475,9234407,23763),
       runtime.caml_int64_create_lo_mi_hi(10841687,3763822,52188),
       runtime.caml_int64_create_lo_mi_hi(3654766,11191492,62357),
       runtime.caml_int64_create_lo_mi_hi(787224,1770243,3846),
       runtime.caml_int64_create_lo_mi_hi(4544138,14440022,5036),
       runtime.caml_int64_create_lo_mi_hi(869402,6177860,18824),
       runtime.caml_int64_create_lo_mi_hi(14778335,10518399,40702),
       runtime.caml_int64_create_lo_mi_hi(10397985,8956329,14159),
       runtime.caml_int64_create_lo_mi_hi(11020877,6761002,33364),
       runtime.caml_int64_create_lo_mi_hi(14072753,703419,28011),
       runtime.caml_int64_create_lo_mi_hi(2343238,8896961,58015),
       runtime.caml_int64_create_lo_mi_hi(5329826,15815507,678),
       runtime.caml_int64_create_lo_mi_hi(5758126,7527644,35749),
       runtime.caml_int64_create_lo_mi_hi(2886488,5442315,10006),
       runtime.caml_int64_create_lo_mi_hi(5152156,105885,54055),
       runtime.caml_int64_create_lo_mi_hi(11365447,2845804,49624),
       runtime.caml_int64_create_lo_mi_hi(12857749,10760497,62818),
       runtime.caml_int64_create_lo_mi_hi(13464711,15955060,47592),
       runtime.caml_int64_create_lo_mi_hi(16774883,1439478,2545),
       runtime.caml_int64_create_lo_mi_hi(345610,4998726,17292),
       runtime.caml_int64_create_lo_mi_hi(9088009,10857644,9797),
       runtime.caml_int64_create_lo_mi_hi(2001212,11897225,38671),
       runtime.caml_int64_create_lo_mi_hi(5248160,11801620,17448),
       runtime.caml_int64_create_lo_mi_hi(10740059,12247521,17119),
       runtime.caml_int64_create_lo_mi_hi(5772976,10884630,20012),
       runtime.caml_int64_create_lo_mi_hi(15219405,16202298,53876),
       runtime.caml_int64_create_lo_mi_hi(12151151,420201,53458),
       runtime.caml_int64_create_lo_mi_hi(2361672,4262153,11538),
       runtime.caml_int64_create_lo_mi_hi(14512295,14119024,44512),
       runtime.caml_int64_create_lo_mi_hi(14857945,7321270,21617),
       runtime.caml_int64_create_lo_mi_hi(6803662,2019536,47037),
       runtime.caml_int64_create_lo_mi_hi(9694523,14085613,32455),
       runtime.caml_int64_create_lo_mi_hi(1559598,14863564,56197),
       runtime.caml_int64_create_lo_mi_hi(1393194,6832706,22404),
       runtime.caml_int64_create_lo_mi_hi(5937332,2922648,49709),
       runtime.caml_int64_create_lo_mi_hi(11183177,15574180,3669),
       runtime.caml_int64_create_lo_mi_hi(10496093,7677992,34896),
       runtime.caml_int64_create_lo_mi_hi(7167194,8805468,12728),
       runtime.caml_int64_create_lo_mi_hi(13105299,7076088,16365),
       runtime.caml_int64_create_lo_mi_hi(2262596,12748422,42001)],
     _aM_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(1622136,1579104,12504),
       runtime.caml_int64_create_lo_mi_hi(2295215,2302860,17958),
       runtime.caml_int64_create_lo_mi_hi(13008633,13026879,37304),
       runtime.caml_int64_create_lo_mi_hi(15209327,15263879,52731),
       runtime.caml_int64_create_lo_mi_hi(8866977,8881958,5067),
       runtime.caml_int64_create_lo_mi_hi(12101986,12105946,27921),
       runtime.caml_int64_create_lo_mi_hi(67589,65796,521),
       runtime.caml_int64_create_lo_mi_hi(5194350,5197601,40461),
       runtime.caml_int64_create_lo_mi_hi(3583470,3552984,27803),
       runtime.caml_int64_create_lo_mi_hi(10901764,10921634,20991),
       runtime.caml_int64_create_lo_mi_hi(13819581,13816431,47372),
       runtime.caml_int64_create_lo_mi_hi(16120582,16119283,63246),
       runtime.caml_int64_create_lo_mi_hi(7991168,7961081,62102),
       runtime.caml_int64_create_lo_mi_hi(7299022,7303073,56880),
       runtime.caml_int64_create_lo_mi_hi(9567471,9539966,16237),
       runtime.caml_int64_create_lo_mi_hi(5417479,5395029,42232),
       runtime.caml_int64_create_lo_mi_hi(6301693,6316189,49223),
       runtime.caml_int64_create_lo_mi_hi(12355958,12369098,25909),
       runtime.caml_int64_create_lo_mi_hi(10202317,10197846,11063),
       runtime.caml_int64_create_lo_mi_hi(9307276,9342466,394),
       runtime.caml_int64_create_lo_mi_hi(10711317,10724278,23506),
       runtime.caml_int64_create_lo_mi_hi(811068,789552,6252),
       runtime.caml_int64_create_lo_mi_hi(8126346,8092657,63108),
       runtime.caml_int64_create_lo_mi_hi(3519969,3487188,27264),
       runtime.caml_int64_create_lo_mi_hi(1960041,1908084,15093),
       runtime.caml_int64_create_lo_mi_hi(14701383,14737575,56755),
       runtime.caml_int64_create_lo_mi_hi(14153388,14145403,45857),
       runtime.caml_int64_create_lo_mi_hi(12738285,12763695,39324),
       runtime.caml_int64_create_lo_mi_hi(3042710,3026616,23619),
       runtime.caml_int64_create_lo_mi_hi(4940410,4934449,38441),
       runtime.caml_int64_create_lo_mi_hi(16687905,16711391,57693),
       runtime.caml_int64_create_lo_mi_hi(5734934,5723969,44757),
       runtime.caml_int64_create_lo_mi_hi(1419329,1381716,10941),
       runtime.caml_int64_create_lo_mi_hi(7839670,7829441,61160),
       runtime.caml_int64_create_lo_mi_hi(3646955,3618780,28306),
       runtime.caml_int64_create_lo_mi_hi(15039318,15066547,55198),
       runtime.caml_int64_create_lo_mi_hi(10456281,10460998,8979),
       runtime.caml_int64_create_lo_mi_hi(15782679,15790311,64803),
       runtime.caml_int64_create_lo_mi_hi(4876927,4868661,37920),
       runtime.caml_int64_create_lo_mi_hi(14327445,14342735,43332),
       runtime.caml_int64_create_lo_mi_hi(5831205,5789821,45218),
       runtime.caml_int64_create_lo_mi_hi(13174474,13224195,36815),
       runtime.caml_int64_create_lo_mi_hi(2708877,2697636,21116),
       runtime.caml_int64_create_lo_mi_hi(675874,657960,5210),
       runtime.caml_int64_create_lo_mi_hi(11657551,11645438,32592),
       runtime.caml_int64_create_lo_mi_hi(10512666,10526906,24009),
       runtime.caml_int64_create_lo_mi_hi(7045082,7039921,54804),
       runtime.caml_int64_create_lo_mi_hi(8740011,8750382,6105),
       runtime.caml_int64_create_lo_mi_hi(12419443,12434894,26428),
       runtime.caml_int64_create_lo_mi_hi(6148660,6118761,47759),
       runtime.caml_int64_create_lo_mi_hi(1081424,1052736,8336),
       runtime.caml_int64_create_lo_mi_hi(16052995,16053495,62727),
       runtime.caml_int64_create_lo_mi_hi(13309632,13355787,35805),
       runtime.caml_int64_create_lo_mi_hi(4124102,4079352,31955),
       runtime.caml_int64_create_lo_mi_hi(337937,328980,2605),
       runtime.caml_int64_create_lo_mi_hi(6758374,6776705,52856),
       runtime.caml_int64_create_lo_mi_hi(14971731,15000759,54679),
       runtime.caml_int64_create_lo_mi_hi(2565563,2566044,19970),
       runtime.caml_int64_create_lo_mi_hi(4272728,4276505,33395),
       runtime.caml_int64_create_lo_mi_hi(9120925,9145110,2983),
       runtime.caml_int64_create_lo_mi_hi(10965249,10987430,21494),
       runtime.caml_int64_create_lo_mi_hi(8245140,8224233,64178),
       runtime.caml_int64_create_lo_mi_hi(9821435,9803118,14153),
       runtime.caml_int64_create_lo_mi_hi(14192287,14211143,44374),
       runtime.caml_int64_create_lo_mi_hi(16485168,16513995,60272),
       runtime.caml_int64_create_lo_mi_hi(15606641,15658655,49613),
       runtime.caml_int64_create_lo_mi_hi(8177553,8158445,63675),
       runtime.caml_int64_create_lo_mi_hi(6690787,6710917,52337),
       runtime.caml_int64_create_lo_mi_hi(14526094,14540115,42875),
       runtime.caml_int64_create_lo_mi_hi(1554507,1513308,11951),
       runtime.caml_int64_create_lo_mi_hi(4653638,4671233,36421),
       runtime.caml_int64_create_lo_mi_hi(10388700,10395202,8474),
       runtime.caml_int64_create_lo_mi_hi(13246149,13289999,35284),
       runtime.caml_int64_create_lo_mi_hi(2979225,2960820,23128),
       runtime.caml_int64_create_lo_mi_hi(12554617,12566470,25390),
       runtime.caml_int64_create_lo_mi_hi(473115,460572,3647),
       runtime.caml_int64_create_lo_mi_hi(11338019,11382158,18348),
       runtime.caml_int64_create_lo_mi_hi(5958191,5921397,46256),
       runtime.caml_int64_create_lo_mi_hi(8613045,8618806,7151),
       runtime.caml_int64_create_lo_mi_hi(3376639,3355596,26294),
       runtime.caml_int64_create_lo_mi_hi(6504434,6513553,50780),
       runtime.caml_int64_create_lo_mi_hi(135178,131592,1042),
       runtime.caml_int64_create_lo_mi_hi(11155768,11184786,18835),
       runtime.caml_int64_create_lo_mi_hi(7450536,7434713,58078),
       runtime.caml_int64_create_lo_mi_hi(13110991,13158407,36294),
       runtime.caml_int64_create_lo_mi_hi(1689725,1644900,13009),
       runtime.caml_int64_create_lo_mi_hi(4813424,4802873,37435),
       runtime.caml_int64_create_lo_mi_hi(14255770,14276931,44895),
       runtime.caml_int64_create_lo_mi_hi(15909661,15921903,63793),
       runtime.caml_int64_create_lo_mi_hi(14895944,14934955,56232),
       runtime.caml_int64_create_lo_mi_hi(6021674,5987185,46777),
       runtime.caml_int64_create_lo_mi_hi(8926354,8947738,3516),
       runtime.caml_int64_create_lo_mi_hi(10134728,10132050,10558),
       runtime.caml_int64_create_lo_mi_hi(2502078,2500248,19467),
       runtime.caml_int64_create_lo_mi_hi(3313146,3289800,25791),
       runtime.caml_int64_create_lo_mi_hi(11594058,11579642,32089),
       runtime.caml_int64_create_lo_mi_hi(15276906,15329667,53234),
       runtime.caml_int64_create_lo_mi_hi(1013811,986940,7799),
       runtime.caml_int64_create_lo_mi_hi(14018214,14013811,46899),
       runtime.caml_int64_create_lo_mi_hi(8418490,8421434,7668),
       runtime.caml_int64_create_lo_mi_hi(12491132,12500674,24871),
       runtime.caml_int64_create_lo_mi_hi(13444830,13487379,34795),
       runtime.caml_int64_create_lo_mi_hi(3456484,3421392,26761),
       runtime.caml_int64_create_lo_mi_hi(4749941,4737085,36914),
       runtime.caml_int64_create_lo_mi_hi(16755492,16777179,58196),
       runtime.caml_int64_create_lo_mi_hi(8058767,8026869,62605),
       runtime.caml_int64_create_lo_mi_hi(9499882,9474170,15716),
       runtime.caml_int64_create_lo_mi_hi(6275646,6250337,48797),
       runtime.caml_int64_create_lo_mi_hi(2104736,2105472,16445),
       runtime.caml_int64_create_lo_mi_hi(6842325,6842557,53263),
       runtime.caml_int64_create_lo_mi_hi(1757298,1710696,13514),
       runtime.caml_int64_create_lo_mi_hi(11409708,11447938,16823),
       runtime.caml_int64_create_lo_mi_hi(11848030,11842794,30077),
       runtime.caml_int64_create_lo_mi_hi(5544473,5526605,43214),
       runtime.caml_int64_create_lo_mi_hi(9694437,9671542,15231),
       runtime.caml_int64_create_lo_mi_hi(2231722,2237064,17455),
       runtime.caml_int64_create_lo_mi_hi(6555625,6579341,51299),
       runtime.caml_int64_create_lo_mi_hi(15850258,15856099,65322),
       runtime.caml_int64_create_lo_mi_hi(7585698,7566289,59084),
       runtime.caml_int64_create_lo_mi_hi(1216602,1184328,9346),
       runtime.caml_int64_create_lo_mi_hi(4209245,4210717,32890),
       runtime.caml_int64_create_lo_mi_hi(540712,526368,4168),
       runtime.caml_int64_create_lo_mi_hi(12801768,12829483,39829),
       runtime.caml_int64_create_lo_mi_hi(15479675,15527063,50655),
       runtime.caml_int64_create_lo_mi_hi(14390928,14408523,43853),
       runtime.caml_int64_create_lo_mi_hi(10576159,10592702,24512),
       runtime.caml_int64_create_lo_mi_hi(9247875,9276686,1937),
       runtime.caml_int64_create_lo_mi_hi(4060617,4013556,31432),
       runtime.caml_int64_create_lo_mi_hi(9948401,9934694,13147),
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(13579988,13618971,33785),
       runtime.caml_int64_create_lo_mi_hi(2835847,2829228,22126),
       runtime.caml_int64_create_lo_mi_hi(7772083,7763653,60641),
       runtime.caml_int64_create_lo_mi_hi(8545456,8553010,6630),
       runtime.caml_int64_create_lo_mi_hi(14089897,14079615,45352),
       runtime.caml_int64_create_lo_mi_hi(1824887,1776492,14019),
       runtime.caml_int64_create_lo_mi_hi(11911515,11908590,30580),
       runtime.caml_int64_create_lo_mi_hi(11473193,11513734,17342),
       runtime.caml_int64_create_lo_mi_hi(6977503,6974133,54301),
       runtime.caml_int64_create_lo_mi_hi(5290509,5263453,41194),
       runtime.caml_int64_create_lo_mi_hi(4526668,4539657,35415),
       runtime.caml_int64_create_lo_mi_hi(15977240,15987691,64312),
       runtime.caml_int64_create_lo_mi_hi(3186160,3158208,24749),
       runtime.caml_int64_create_lo_mi_hi(15674228,15724443,50116),
       runtime.caml_int64_create_lo_mi_hi(4187587,4145148,32474),
       runtime.caml_int64_create_lo_mi_hi(5607964,5592393,43719),
       runtime.caml_int64_create_lo_mi_hi(10647824,10658482,23003),
       runtime.caml_int64_create_lo_mi_hi(15336293,15395471,51689),
       runtime.caml_int64_create_lo_mi_hi(6623212,6645129,51818),
       runtime.caml_int64_create_lo_mi_hi(12237160,12237522,26883),
       runtime.caml_int64_create_lo_mi_hi(3106195,3092412,24138),
       runtime.caml_int64_create_lo_mi_hi(12603111,12632103,40334),
       runtime.caml_int64_create_lo_mi_hi(14597761,14605919,41312),
       runtime.caml_int64_create_lo_mi_hi(1892460,1842288,14588),
       runtime.caml_int64_create_lo_mi_hi(16628526,16645587,59206),
       runtime.caml_int64_create_lo_mi_hi(5067364,5066025,39455),
       runtime.caml_int64_create_lo_mi_hi(9626848,9605746,14710),
       runtime.caml_int64_create_lo_mi_hi(7704508,7697865,60154),
       runtime.caml_int64_create_lo_mi_hi(405534,394776,3126),
       runtime.caml_int64_create_lo_mi_hi(9053336,9079314,2478),
       runtime.caml_int64_create_lo_mi_hi(11729216,11711218,31051),
       runtime.caml_int64_create_lo_mi_hi(15098713,15132351,53637),
       runtime.caml_int64_create_lo_mi_hi(946230,921144,7294),
       runtime.caml_int64_create_lo_mi_hi(2095203,2039676,16103),
       runtime.caml_int64_create_lo_mi_hi(6436855,6447765,50261),
       runtime.caml_int64_create_lo_mi_hi(13954723,13948023,46394),
       runtime.caml_int64_create_lo_mi_hi(11020594,11053210,19841),
       runtime.caml_int64_create_lo_mi_hi(9880820,9868898,12626),
       runtime.caml_int64_create_lo_mi_hi(16358202,16382403,61282),
       runtime.caml_int64_create_lo_mi_hi(12936950,12961075,38819),
       runtime.caml_int64_create_lo_mi_hi(2438577,2434452,18960),
       runtime.caml_int64_create_lo_mi_hi(5894688,5855609,45739),
       runtime.caml_int64_create_lo_mi_hi(8672430,8684586,5584),
       runtime.caml_int64_create_lo_mi_hi(7518119,7500501,58565),
       runtime.caml_int64_create_lo_mi_hi(3790301,3750372,29420),
       runtime.caml_int64_create_lo_mi_hi(5003873,5000237,38934),
       runtime.caml_int64_create_lo_mi_hi(6212155,6184549,48276),
       runtime.caml_int64_create_lo_mi_hi(7923589,7895293,61599),
       runtime.caml_int64_create_lo_mi_hi(3726808,3684576,28901),
       runtime.caml_int64_create_lo_mi_hi(9180294,9210890,1432),
       runtime.caml_int64_create_lo_mi_hi(13747890,13750627,48919),
       runtime.caml_int64_create_lo_mi_hi(10830091,10855854,22500),
       runtime.caml_int64_create_lo_mi_hi(14828365,14869167,55713),
       runtime.caml_int64_create_lo_mi_hi(6369272,6381977,49742),
       runtime.caml_int64_create_lo_mi_hi(11792709,11777014,31554),
       runtime.caml_int64_create_lo_mi_hi(2168229,2171268,16948),
       runtime.caml_int64_create_lo_mi_hi(10261718,10263626,9480),
       runtime.caml_int64_create_lo_mi_hi(2027622,1973880,15598),
       runtime.caml_int64_create_lo_mi_hi(4399698,4408081,34401),
       runtime.caml_int64_create_lo_mi_hi(13072124,13092667,37809),
       runtime.caml_int64_create_lo_mi_hi(16560939,16579799,58703),
       runtime.caml_int64_create_lo_mi_hi(270356,263184,2084),
       runtime.caml_int64_create_lo_mi_hi(5353992,5329241,41699),
       runtime.caml_int64_create_lo_mi_hi(10075335,10066270,12069),
       runtime.caml_int64_create_lo_mi_hi(7163844,7171497,55842),
       runtime.caml_int64_create_lo_mi_hi(878649,855348,6757),
       runtime.caml_int64_create_lo_mi_hi(16417589,16448207,59769),
       runtime.caml_int64_create_lo_mi_hi(14661252,14671707,41833),
       runtime.caml_int64_create_lo_mi_hi(8312731,8290021,64681),
       runtime.caml_int64_create_lo_mi_hi(2375092,2368656,18457),
       runtime.caml_int64_create_lo_mi_hi(3917271,3881964,30462),
       runtime.caml_int64_create_lo_mi_hi(11219261,11250582,19354),
       runtime.caml_int64_create_lo_mi_hi(13516497,13553183,33264),
       runtime.caml_int64_create_lo_mi_hi(1149013,1118532,8857),
       runtime.caml_int64_create_lo_mi_hi(9374857,9408262,899),
       runtime.caml_int64_create_lo_mi_hi(5130859,5131813,39940),
       runtime.caml_int64_create_lo_mi_hi(12046673,12040166,29542),
       runtime.caml_int64_create_lo_mi_hi(15403872,15461259,52192),
       runtime.caml_int64_create_lo_mi_hi(3997132,3947760,30913),
       runtime.caml_int64_create_lo_mi_hi(8486079,8487230,8189),
       runtime.caml_int64_create_lo_mi_hi(9753854,9737322,13632),
       runtime.caml_int64_create_lo_mi_hi(16247564,16250875,62236),
       runtime.caml_int64_create_lo_mi_hi(12165479,12171742,28440),
       runtime.caml_int64_create_lo_mi_hi(1284191,1250124,9867),
       runtime.caml_int64_create_lo_mi_hi(2915740,2895024,22609),
       runtime.caml_int64_create_lo_mi_hi(13883064,13882219,47877),
       runtime.caml_int64_create_lo_mi_hi(15166300,15198139,54156),
       runtime.caml_int64_create_lo_mi_hi(7231435,7237285,56377),
       runtime.caml_int64_create_lo_mi_hi(12873459,12895287,38314),
       runtime.caml_int64_create_lo_mi_hi(202767,197388,1563),
       runtime.caml_int64_create_lo_mi_hi(5671443,5658181,44252),
       runtime.caml_int64_create_lo_mi_hi(4463177,4473869,34910),
       runtime.caml_int64_create_lo_mi_hi(8380318,8355809,65184),
       runtime.caml_int64_create_lo_mi_hi(11084087,11119006,20360),
       runtime.caml_int64_create_lo_mi_hi(2772354,2763432,21607),
       runtime.caml_int64_create_lo_mi_hi(12300653,12303318,27402),
       runtime.caml_int64_create_lo_mi_hi(12666594,12697891,40839),
       runtime.caml_int64_create_lo_mi_hi(5480962,5460817,42737),
       runtime.caml_int64_create_lo_mi_hi(14462603,14474327,42354),
       runtime.caml_int64_create_lo_mi_hi(743463,723756,5715),
       runtime.caml_int64_create_lo_mi_hi(10329299,10329422,9985),
       runtime.caml_int64_create_lo_mi_hi(7096257,7105709,55339),
       runtime.caml_int64_create_lo_mi_hi(3249653,3224004,25252),
       runtime.caml_int64_create_lo_mi_hi(7636921,7632077,59635),
       runtime.caml_int64_create_lo_mi_hi(16179977,16185087,61717),
       runtime.caml_int64_create_lo_mi_hi(4590147,4605445,35916),
       runtime.caml_int64_create_lo_mi_hi(11274534,11316362,17829),
       runtime.caml_int64_create_lo_mi_hi(8993943,9013534,4021),
       runtime.caml_int64_create_lo_mi_hi(1351748,1315920,10420),
       runtime.caml_int64_create_lo_mi_hi(14768962,14803363,57274),
       runtime.caml_int64_create_lo_mi_hi(1486926,1447512,11430),
       runtime.caml_int64_create_lo_mi_hi(3853778,3816168,29943),
       runtime.caml_int64_create_lo_mi_hi(6909904,6908345,53766),
       runtime.caml_int64_create_lo_mi_hi(608301,592164,4673),
       runtime.caml_int64_create_lo_mi_hi(7382957,7368925,57559),
       runtime.caml_int64_create_lo_mi_hi(11983188,11974370,29039),
       runtime.caml_int64_create_lo_mi_hi(13684407,13684839,48414),
       runtime.caml_int64_create_lo_mi_hi(15547262,15592851,51158),
       runtime.caml_int64_create_lo_mi_hi(13381339,13421591,34274),
       runtime.caml_int64_create_lo_mi_hi(4336215,4342293,33896),
       runtime.caml_int64_create_lo_mi_hi(10007746,10000474,11564),
       runtime.caml_int64_create_lo_mi_hi(10766606,10790058,21997),
       runtime.caml_int64_create_lo_mi_hi(2645384,2631840,20597),
       runtime.caml_int64_create_lo_mi_hi(6085169,6052973,47238),
       runtime.caml_int64_create_lo_mi_hi(16290623,16316615,60779),
       runtime.caml_int64_create_lo_mi_hi(8799396,8816162,4546)],
     _aN_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(12613680,1597464,55320),
       runtime.caml_int64_create_lo_mi_hi(372550,2329635,9763),
       runtime.caml_int64_create_lo_mi_hi(8321425,12992454,47302),
       runtime.caml_int64_create_lo_mi_hi(1273805,15239144,64488),
       runtime.caml_int64_create_lo_mi_hi(5021971,8857223,52103),
       runtime.caml_int64_create_lo_mi_hi(11100781,12114616,4536),
       runtime.caml_int64_create_lo_mi_hi(525570,66561,2305),
       runtime.caml_int64_create_lo_mi_hi(4353694,5185871,3407),
       runtime.caml_int64_create_lo_mi_hi(11398764,3594294,39734),
       runtime.caml_int64_create_lo_mi_hi(5833809,10920614,65446),
       runtime.caml_int64_create_lo_mi_hi(14597561,13791186,3282),
       runtime.caml_int64_create_lo_mi_hi(16451319,16118773,3829),
       runtime.caml_int64_create_lo_mi_hi(15696114,7993721,38521),
       runtime.caml_int64_create_lo_mi_hi(6278878,7315823,12399),
       runtime.caml_int64_create_lo_mi_hi(16576319,9535121,28049),
       runtime.caml_int64_create_lo_mi_hi(11143076,5395794,63570),
       runtime.caml_int64_create_lo_mi_hi(2620864,6331744,18272),
       runtime.caml_int64_create_lo_mi_hi(9008741,12372668,13756),
       runtime.caml_int64_create_lo_mi_hi(11324715,10180251,14235),
       runtime.caml_int64_create_lo_mi_hi(297985,9306766,35470),
       runtime.caml_int64_create_lo_mi_hi(7411035,10729123,53923),
       runtime.caml_int64_create_lo_mi_hi(6306840,798732,27660),
       runtime.caml_int64_create_lo_mi_hi(16747254,8122747,33915),
       runtime.caml_int64_create_lo_mi_hi(11919722,3527733,32821),
       runtime.caml_int64_create_lo_mi_hi(15231290,1930269,62749),
       runtime.caml_int64_create_lo_mi_hi(5457885,14723040,46048),
       runtime.caml_int64_create_lo_mi_hi(16166067,14121943,8663),
       runtime.caml_int64_create_lo_mi_hi(6221209,12726210,40130),
       runtime.caml_int64_create_lo_mi_hi(7181916,3061806,17198),
       runtime.caml_int64_create_lo_mi_hi(6453910,4927819,10571),
       runtime.caml_int64_create_lo_mi_hi(10691041,16703486,24062),
       runtime.caml_int64_create_lo_mi_hi(8525486,5718359,54615),
       runtime.caml_int64_create_lo_mi_hi(11026730,1397781,48405),
       runtime.caml_int64_create_lo_mi_hi(10467054,7848311,59511),
       runtime.caml_int64_create_lo_mi_hi(10873710,3660855,37431),
       runtime.caml_int64_create_lo_mi_hi(8083159,15053797,40677),
       runtime.caml_int64_create_lo_mi_hi(9230627,10438303,5023),
       runtime.caml_int64_create_lo_mi_hi(13834237,15788016,9200),
       runtime.caml_int64_create_lo_mi_hi(6979476,4863306,8266),
       runtime.caml_int64_create_lo_mi_hi(10393001,14307290,17626),
       runtime.caml_int64_create_lo_mi_hi(16393648,5799256,41560),
       runtime.caml_int64_create_lo_mi_hi(445071,13173705,53193),
       runtime.caml_int64_create_lo_mi_hi(5606738,2729001,31785),
       runtime.caml_int64_create_lo_mi_hi(5251604,665610,23050),
       runtime.caml_int64_create_lo_mi_hi(14765951,11665073,20657),
       runtime.caml_int64_create_lo_mi_hi(6888029,10533536,51616),
       runtime.caml_int64_create_lo_mi_hi(8379094,7057771,5227),
       runtime.caml_int64_create_lo_mi_hi(6073111,8728197,55685),
       runtime.caml_int64_create_lo_mi_hi(8483687,12439229,15549),
       runtime.caml_int64_create_lo_mi_hi(13776058,6121821,36701),
       runtime.caml_int64_create_lo_mi_hi(8409120,1064976,36880),
       runtime.caml_int64_create_lo_mi_hi(15926261,16054260,2036),
       runtime.caml_int64_create_lo_mi_hi(1491083,13306827,56779),
       runtime.caml_int64_create_lo_mi_hi(15582844,4126782,54078),
       runtime.caml_int64_create_lo_mi_hi(2625802,332805,11525),
       runtime.caml_int64_create_lo_mi_hi(2090702,6783335,30823),
       runtime.caml_int64_create_lo_mi_hi(7558101,14989284,38884),
       runtime.caml_int64_create_lo_mi_hi(2472782,2595879,551),
       runtime.caml_int64_create_lo_mi_hi(3299458,4266305,29505),
       runtime.caml_int64_create_lo_mi_hi(2923787,9115275,42891),
       runtime.caml_int64_create_lo_mi_hi(5308755,10987175,63143),
       runtime.caml_int64_create_lo_mi_hi(13604090,8251773,45693),
       runtime.caml_int64_create_lo_mi_hi(14482231,9793173,18837),
       runtime.caml_int64_create_lo_mi_hi(9346989,14174168,22232),
       runtime.caml_int64_create_lo_mi_hi(9122027,16501755,28923),
       runtime.caml_int64_create_lo_mi_hi(2322881,15638510,52718),
       runtime.caml_int64_create_lo_mi_hi(13079032,8187260,47996),
       runtime.caml_int64_create_lo_mi_hi(1565644,6718822,29030),
       runtime.caml_int64_create_lo_mi_hi(10915495,14504925,31709),
       runtime.caml_int64_create_lo_mi_hi(12077870,1530903,44823),
       runtime.caml_int64_create_lo_mi_hi(149134,4653383,17735),
       runtime.caml_int64_create_lo_mi_hi(8707105,10371742,6814),
       runtime.caml_int64_create_lo_mi_hi(2016649,13242314,54474),
       runtime.caml_int64_create_lo_mi_hi(7706970,2995245,22573),
       runtime.caml_int64_create_lo_mi_hi(9533795,12568255,11967),
       runtime.caml_int64_create_lo_mi_hi(3676942,465927,16135),
       runtime.caml_int64_create_lo_mi_hi(74567,11374253,44205),
       runtime.caml_int64_create_lo_mi_hi(15347636,5928282,45146),
       runtime.caml_int64_create_lo_mi_hi(7124251,8599171,61315),
       runtime.caml_int64_create_lo_mi_hi(8781670,3394611,46643),
       runtime.caml_int64_create_lo_mi_hi(4190918,6525283,23651),
       runtime.caml_int64_create_lo_mi_hi(1051140,133122,4610),
       runtime.caml_int64_create_lo_mi_hi(3749961,11178666,37802),
       runtime.caml_int64_create_lo_mi_hi(11512034,7461233,56945),
       runtime.caml_int64_create_lo_mi_hi(970637,13109192,50888),
       runtime.caml_int64_create_lo_mi_hi(13139250,1664025,53529),
       runtime.caml_int64_create_lo_mi_hi(7499922,4798793,15177),
       runtime.caml_int64_create_lo_mi_hi(8821423,14238681,24537),
       runtime.caml_int64_create_lo_mi_hi(12787193,15921138,12786),
       runtime.caml_int64_create_lo_mi_hi(4933851,14920675,43235),
       runtime.caml_int64_create_lo_mi_hi(14822070,5992795,47451),
       runtime.caml_int64_create_lo_mi_hi(3445261,8919688,48264),
       runtime.caml_int64_create_lo_mi_hi(10799145,10113690,16026),
       runtime.caml_int64_create_lo_mi_hi(2997836,2529318,2854),
       runtime.caml_int64_create_lo_mi_hi(9304676,3328050,48946),
       runtime.caml_int64_create_lo_mi_hi(15288957,11598512,22960),
       runtime.caml_int64_create_lo_mi_hi(1796815,15303657,62185),
       runtime.caml_int64_create_lo_mi_hi(7877406,998415,30479),
       runtime.caml_int64_create_lo_mi_hi(15115959,13988821,13269),
       runtime.caml_int64_create_lo_mi_hi(7649821,8403584,62592),
       runtime.caml_int64_create_lo_mi_hi(10058849,12501694,10174),
       runtime.caml_int64_create_lo_mi_hi(2547335,13439949,60365),
       runtime.caml_int64_create_lo_mi_hi(12444776,3461172,35124),
       runtime.caml_int64_create_lo_mi_hi(8025488,4734280,12872),
       runtime.caml_int64_create_lo_mi_hi(11216099,16767999,21759),
       runtime.caml_int64_create_lo_mi_hi(16224244,8058234,36218),
       runtime.caml_int64_create_lo_mi_hi(16050749,9468560,25744),
       runtime.caml_int64_create_lo_mi_hi(12730046,6250847,40287),
       runtime.caml_int64_create_lo_mi_hi(1941568,2129952,15648),
       runtime.caml_int64_create_lo_mi_hi(6804944,6864232,3944),
       runtime.caml_int64_create_lo_mi_hi(13660724,1730586,51738),
       runtime.caml_int64_create_lo_mi_hi(1649729,11436718,47022),
       runtime.caml_int64_create_lo_mi_hi(13196917,11856564,32180),
       runtime.caml_int64_create_lo_mi_hi(10099112,5524820,52820),
       runtime.caml_int64_create_lo_mi_hi(15525179,9664147,32659),
       runtime.caml_int64_create_lo_mi_hi(895556,2263074,12066),
       runtime.caml_int64_create_lo_mi_hi(518600,6589796,25444),
       runtime.caml_int64_create_lo_mi_hi(14357247,15852529,10993),
       runtime.caml_int64_create_lo_mi_hi(12559078,7590259,52339),
       runtime.caml_int64_create_lo_mi_hi(9460260,1198098,33298),
       runtime.caml_int64_create_lo_mi_hi(3825024,4201792,31296),
       runtime.caml_int64_create_lo_mi_hi(4204560,532488,18440),
       runtime.caml_int64_create_lo_mi_hi(5695643,12790723,38339),
       runtime.caml_int64_create_lo_mi_hi(3374021,15505388,57324),
       runtime.caml_int64_create_lo_mi_hi(9867435,14371803,19931),
       runtime.caml_int64_create_lo_mi_hi(6365023,10600097,49313),
       runtime.caml_int64_create_lo_mi_hi(1868551,9244301,37261),
       runtime.caml_int64_create_lo_mi_hi(16107898,4060221,51261),
       runtime.caml_int64_create_lo_mi_hi(13431091,9922199,23447),
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(3593347,13573071,63951),
       runtime.caml_int64_create_lo_mi_hi(4556630,2862123,28203),
       runtime.caml_int64_create_lo_mi_hi(9941996,7783798,57718),
       runtime.caml_int64_create_lo_mi_hi(6598681,8532610,59010),
       runtime.caml_int64_create_lo_mi_hi(16689585,14057430,10454),
       runtime.caml_int64_create_lo_mi_hi(14186294,1797147,49947),
       runtime.caml_int64_create_lo_mi_hi(12671863,11923125,29877),
       runtime.caml_int64_create_lo_mi_hi(1124675,11503279,48815),
       runtime.caml_int64_create_lo_mi_hi(7856084,6993258,7530),
       runtime.caml_int64_create_lo_mi_hi(12193184,5266768,59984),
       runtime.caml_int64_create_lo_mi_hi(1199242,4524357,22341),
       runtime.caml_int64_create_lo_mi_hi(13310203,15985651,14579),
       runtime.caml_int64_create_lo_mi_hi(10350688,3194928,44336),
       runtime.caml_int64_create_lo_mi_hi(2847939,15703023,50415),
       runtime.caml_int64_create_lo_mi_hi(15057790,4193343,55871),
       runtime.caml_int64_create_lo_mi_hi(9575594,5589333,51029),
       runtime.caml_int64_create_lo_mi_hi(7934041,10662562,56226),
       runtime.caml_int64_create_lo_mi_hi(222665,15372266,59882),
       runtime.caml_int64_create_lo_mi_hi(1043658,6654309,27237),
       runtime.caml_int64_create_lo_mi_hi(12150889,12243642,954),
       runtime.caml_int64_create_lo_mi_hi(6656862,3128367,18991),
       runtime.caml_int64_create_lo_mi_hi(5171101,12593088,36544),
       runtime.caml_int64_create_lo_mi_hi(12485025,14573534,24798),
       runtime.caml_int64_create_lo_mi_hi(14707768,1863708,64540),
       runtime.caml_int64_create_lo_mi_hi(12267239,16634877,18173),
       runtime.caml_int64_create_lo_mi_hi(5399706,5056845,8013),
       runtime.caml_int64_create_lo_mi_hi(14999609,9597586,30354),
       runtime.caml_int64_create_lo_mi_hi(9420010,7719285,64117),
       runtime.caml_int64_create_lo_mi_hi(3153420,399366,13830),
       runtime.caml_int64_create_lo_mi_hi(2398217,9048714,44682),
       runtime.caml_int64_create_lo_mi_hi(16334969,11727538,19378),
       runtime.caml_int64_create_lo_mi_hi(6511057,15122406,34278),
       runtime.caml_int64_create_lo_mi_hi(7353884,931854,32270),
       runtime.caml_int64_create_lo_mi_hi(16278334,2063391,59167),
       runtime.caml_int64_create_lo_mi_hi(3667908,6460770,21858),
       runtime.caml_int64_create_lo_mi_hi(15639477,13924308,15060),
       runtime.caml_int64_create_lo_mi_hi(2699853,11049640,33192),
       runtime.caml_int64_create_lo_mi_hi(12907569,9855638,21142),
       runtime.caml_int64_create_lo_mi_hi(10173167,16368633,25337),
       runtime.caml_int64_create_lo_mi_hi(6747799,12923845,41925),
       runtime.caml_int64_create_lo_mi_hi(3518794,2462757,4133),
       runtime.caml_int64_create_lo_mi_hi(15868082,5863769,43865),
       runtime.caml_int64_create_lo_mi_hi(5549589,8661636,53380),
       runtime.caml_int64_create_lo_mi_hi(12036068,7525746,50546),
       runtime.caml_int64_create_lo_mi_hi(14015858,3793977,60473),
       runtime.caml_int64_create_lo_mi_hi(5923224,4992332,5708),
       runtime.caml_int64_create_lo_mi_hi(13253564,6186334,37982),
       runtime.caml_int64_create_lo_mi_hi(15173104,7929208,40824),
       runtime.caml_int64_create_lo_mi_hi(14538864,3727416,58680),
       runtime.caml_int64_create_lo_mi_hi(1345029,9177740,39052),
       runtime.caml_int64_create_lo_mi_hi(13021887,13722577,6097),
       runtime.caml_int64_create_lo_mi_hi(4262743,10858149,58533),
       runtime.caml_int64_create_lo_mi_hi(4410841,14856162,41442),
       runtime.caml_int64_create_lo_mi_hi(3143874,6396257,20065),
       runtime.caml_int64_create_lo_mi_hi(15811963,11794099,17075),
       runtime.caml_int64_create_lo_mi_hi(1418562,2196513,13345),
       runtime.caml_int64_create_lo_mi_hi(9754149,10242716,2204),
       runtime.caml_int64_create_lo_mi_hi(15754812,1996830,60958),
       runtime.caml_int64_create_lo_mi_hi(2249350,4395331,24899),
       runtime.caml_int64_create_lo_mi_hi(7797907,13056967,45511),
       runtime.caml_int64_create_lo_mi_hi(11742181,16570364,20476),
       runtime.caml_int64_create_lo_mi_hi(2102280,266244,9220),
       runtime.caml_int64_create_lo_mi_hi(11667618,5331281,58193),
       runtime.caml_int64_create_lo_mi_hi(12371759,10051225,9625),
       runtime.caml_int64_create_lo_mi_hi(5227738,7186797,8813),
       runtime.caml_int64_create_lo_mi_hi(6830362,865293,25869),
       runtime.caml_int64_create_lo_mi_hi(8599017,16437242,31226),
       runtime.caml_int64_create_lo_mi_hi(11961507,14638047,27103),
       runtime.caml_int64_create_lo_mi_hi(14130172,8316286,43390),
       runtime.caml_int64_create_lo_mi_hi(4043848,2396196,6436),
       runtime.caml_int64_create_lo_mi_hi(12965750,3927099,65083),
       runtime.caml_int64_create_lo_mi_hi(3226955,11245227,39595),
       runtime.caml_int64_create_lo_mi_hi(4116865,13508558,61646),
       runtime.caml_int64_create_lo_mi_hi(8934690,1131537,39185),
       runtime.caml_int64_create_lo_mi_hi(821507,9373327,33679),
       runtime.caml_int64_create_lo_mi_hi(4877212,5121358,1102),
       runtime.caml_int64_create_lo_mi_hi(13717875,12052151,26295),
       runtime.caml_int64_create_lo_mi_hi(745675,15436779,57579),
       runtime.caml_int64_create_lo_mi_hi(16632952,3993660,49468),
       runtime.caml_int64_create_lo_mi_hi(8175391,8470145,64897),
       runtime.caml_int64_create_lo_mi_hi(13958709,9726612,16532),
       runtime.caml_int64_create_lo_mi_hi(15404275,16251895,7415),
       runtime.caml_int64_create_lo_mi_hi(10577775,12181177,6329),
       runtime.caml_int64_create_lo_mi_hi(9985830,1264659,35603),
       runtime.caml_int64_create_lo_mi_hi(8232024,2928684,20780),
       runtime.caml_int64_create_lo_mi_hi(14071995,13855699,1491),
       runtime.caml_int64_create_lo_mi_hi(7036115,15186919,36071),
       runtime.caml_int64_create_lo_mi_hi(5753820,7251310,14702),
       runtime.caml_int64_create_lo_mi_hi(7271317,12859332,43716),
       runtime.caml_int64_create_lo_mi_hi(1576710,199683,6915),
       runtime.caml_int64_create_lo_mi_hi(9049004,5653846,56406),
       runtime.caml_int64_create_lo_mi_hi(1722760,4459844,24132),
       runtime.caml_int64_create_lo_mi_hi(14655230,8380799,41087),
       runtime.caml_int64_create_lo_mi_hi(2176847,11116201,34985),
       runtime.caml_int64_create_lo_mi_hi(5079636,2795562,26410),
       runtime.caml_int64_create_lo_mi_hi(11627883,12310203,2747),
       runtime.caml_int64_create_lo_mi_hi(4645535,12657601,34753),
       runtime.caml_int64_create_lo_mi_hi(10617510,5460307,61779),
       runtime.caml_int64_create_lo_mi_hi(11439013,14440412,29404),
       runtime.caml_int64_create_lo_mi_hi(5777174,732171,21259),
       runtime.caml_int64_create_lo_mi_hi(10277671,10309277,413),
       runtime.caml_int64_create_lo_mi_hi(4702680,7122284,11116),
       runtime.caml_int64_create_lo_mi_hi(9827682,3261489,42033),
       runtime.caml_int64_create_lo_mi_hi(8894952,7654772,62324),
       runtime.caml_int64_create_lo_mi_hi(14879217,16187382,5622),
       runtime.caml_int64_create_lo_mi_hi(672652,4588870,19526),
       runtime.caml_int64_create_lo_mi_hi(599621,11307692,42412),
       runtime.caml_int64_create_lo_mi_hi(3970831,8986249,46473),
       runtime.caml_int64_create_lo_mi_hi(10503208,1331220,46100),
       runtime.caml_int64_create_lo_mi_hi(5980895,14787553,47841),
       runtime.caml_int64_create_lo_mi_hi(11554348,1464342,42518),
       runtime.caml_int64_create_lo_mi_hi(13488756,3860538,63290),
       runtime.caml_int64_create_lo_mi_hi(7327954,6928745,1641),
       runtime.caml_int64_create_lo_mi_hi(4730130,599049,16649),
       runtime.caml_int64_create_lo_mi_hi(10989024,7396720,55152),
       runtime.caml_int64_create_lo_mi_hi(14242929,11985590,28598),
       runtime.caml_int64_create_lo_mi_hi(13547453,13658064,7888),
       runtime.caml_int64_create_lo_mi_hi(3899079,15569901,55021),
       runtime.caml_int64_create_lo_mi_hi(3070853,13375436,58060),
       runtime.caml_int64_create_lo_mi_hi(2774916,4330818,26690),
       runtime.caml_int64_create_lo_mi_hi(11846189,9984664,11416),
       runtime.caml_int64_create_lo_mi_hi(4787797,10791588,60836),
       runtime.caml_int64_create_lo_mi_hi(6129744,2662440,29992),
       runtime.caml_int64_create_lo_mi_hi(14299576,6057308,34396),
       runtime.caml_int64_create_lo_mi_hi(9650157,16304120,27640),
       runtime.caml_int64_create_lo_mi_hi(4498449,8790662,49798)],
     _aO_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(7876824,6297792,6168),
       runtime.caml_int64_create_lo_mi_hi(11486758,9184005,8995),
       runtime.caml_int64_create_lo_mi_hi(16355768,4179582,50886),
       runtime.caml_int64_create_lo_mi_hi(7327227,8906771,59624),
       runtime.caml_int64_create_lo_mi_hi(10556363,2525004,34695),
       runtime.caml_int64_create_lo_mi_hi(6450449,14334121,47288),
       runtime.caml_int64_create_lo_mi_hi(328201,262408,257),
       runtime.caml_int64_create_lo_mi_hi(7249421,2182978,20303),
       runtime.caml_int64_create_lo_mi_hi(15625371,14169773,13878),
       runtime.caml_int64_create_lo_mi_hi(283135,10659417,42662),
       runtime.caml_int64_create_lo_mi_hi(12433676,7328478,53970),
       runtime.caml_int64_create_lo_mi_hi(456462,15988219,62965),
       runtime.caml_int64_create_lo_mi_hi(8450710,16349679,31097),
       runtime.caml_int64_create_lo_mi_hi(13557296,10579807,28527),
       runtime.caml_int64_create_lo_mi_hi(15679341,8294908,37265),
       runtime.caml_int64_create_lo_mi_hi(500984,5591722,21074),
       runtime.caml_int64_create_lo_mi_hi(16629831,10313767,24672),
       runtime.caml_int64_create_lo_mi_hi(7759157,13286537,48316),
       runtime.caml_int64_create_lo_mi_hi(13445943,5675948,39835),
       runtime.caml_int64_create_lo_mi_hi(9175434,167428,36494),
       runtime.caml_int64_create_lo_mi_hi(1399762,11969393,41891),
       runtime.caml_int64_create_lo_mi_hi(3938412,3148896,3084),
       runtime.caml_int64_create_lo_mi_hi(9107076,15825919,31611),
       runtime.caml_int64_create_lo_mi_hi(14772864,13907381,13621),
       runtime.caml_int64_create_lo_mi_hi(6896373,7609832,7453),
       runtime.caml_int64_create_lo_mi_hi(4709811,11001939,57568),
       runtime.caml_int64_create_lo_mi_hi(11318049,8116214,55255),
       runtime.caml_int64_create_lo_mi_hi(15571356,3129950,49858),
       runtime.caml_int64_create_lo_mi_hi(9854019,12070509,11822),
       runtime.caml_int64_create_lo_mi_hi(8033833,3230562,19275),
       runtime.caml_int64_create_lo_mi_hi(2220381,14679715,65278),
       runtime.caml_int64_create_lo_mi_hi(1486549,4282242,22359),
       runtime.caml_int64_create_lo_mi_hi(4270781,5510568,5397),
       runtime.caml_int64_create_lo_mi_hi(11988712,12679071,30583),
       runtime.caml_int64_create_lo_mi_hi(15429266,14432165,14135),
       runtime.caml_int64_create_lo_mi_hi(5691294,11789691,58853),
       runtime.caml_int64_create_lo_mi_hi(14230291,4628364,40863),
       runtime.caml_int64_create_lo_mi_hi(1572131,15200467,61680),
       runtime.caml_int64_create_lo_mi_hi(8360992,3492458,19018),
       runtime.caml_int64_create_lo_mi_hi(9808196,5233310,56026),
       runtime.caml_int64_create_lo_mi_hi(2470050,8214778,22616),
       runtime.caml_int64_create_lo_mi_hi(13275087,248070,51657),
       runtime.caml_int64_create_lo_mi_hi(9261692,10758485,10537),
       runtime.caml_int64_create_lo_mi_hi(2233434,2624080,2570),
       runtime.caml_int64_create_lo_mi_hi(5209936,16691681,45489),
       runtime.caml_int64_create_lo_mi_hi(1727945,12230761,41120),
       runtime.caml_int64_create_lo_mi_hi(14341652,11627391,27499),
       runtime.caml_int64_create_lo_mi_hi(11212761,3048796,34181),
       runtime.caml_int64_create_lo_mi_hi(7563068,13548929,48573),
       runtime.caml_int64_create_lo_mi_hi(3455631,6905298,23901),
       runtime.caml_int64_create_lo_mi_hi(5251216,4198528,4112),
       runtime.caml_int64_create_lo_mi_hi(259335,16250099,62708),
       runtime.caml_int64_create_lo_mi_hi(12618717,772886,52171),
       runtime.caml_int64_create_lo_mi_hi(13008083,16269037,15934),
       runtime.caml_int64_create_lo_mi_hi(1116717,1312040,1285),
       runtime.caml_int64_create_lo_mi_hi(15126136,8480543,26471),
       runtime.caml_int64_create_lo_mi_hi(5494167,12051571,58596),
       runtime.caml_int64_create_lo_mi_hi(12275202,10233637,10023),
       runtime.caml_int64_create_lo_mi_hi(5800563,1655090,16705),
       runtime.caml_int64_create_lo_mi_hi(10292135,1477420,35723),
       runtime.caml_int64_create_lo_mi_hi(87030,10921809,42919),
       runtime.caml_int64_create_lo_mi_hi(9763506,15302095,32125),
       runtime.caml_int64_create_lo_mi_hi(16463689,7247324,38293),
       runtime.caml_int64_create_lo_mi_hi(10464598,4708494,55512),
       runtime.caml_int64_create_lo_mi_hi(3206000,13368203,64507),
       runtime.caml_int64_create_lo_mi_hi(7455181,10481187,61166),
       runtime.caml_int64_create_lo_mi_hi(9566395,15563975,31868),
       runtime.caml_int64_create_lo_mi_hi(14929009,8742423,26214),
       runtime.caml_int64_create_lo_mi_hi(9348987,5496230,56797),
       runtime.caml_int64_create_lo_mi_hi(4927151,6035384,5911),
       runtime.caml_int64_create_lo_mi_hi(4623941,83714,18247),
       runtime.caml_int64_create_lo_mi_hi(14426394,4365956,40606),
       runtime.caml_int64_create_lo_mi_hi(12945876,1034782,51914),
       runtime.caml_int64_create_lo_mi_hi(10050136,11808117,11565),
       runtime.caml_int64_create_lo_mi_hi(7955246,13025169,49087),
       runtime.caml_int64_create_lo_mi_hi(1773119,1836856,1799),
       runtime.caml_int64_create_lo_mi_hi(2312108,9350401,44461),
       runtime.caml_int64_create_lo_mi_hi(3126448,7690986,23130),
       runtime.caml_int64_create_lo_mi_hi(11869167,3572588,33667),
       runtime.caml_int64_create_lo_mi_hi(16737974,13382533,13107),
       runtime.caml_int64_create_lo_mi_hi(15910492,9528127,25443),
       runtime.caml_int64_create_lo_mi_hi(656402,524816,514),
       runtime.caml_int64_create_lo_mi_hi(3688851,9611833,43690),
       runtime.caml_int64_create_lo_mi_hi(11068126,14250415,29041),
       runtime.caml_int64_create_lo_mi_hi(13602246,509966,51400),
       runtime.caml_int64_create_lo_mi_hi(8205009,6560200,6425),
       runtime.caml_int64_create_lo_mi_hi(7377467,3754354,18761),
       runtime.caml_int64_create_lo_mi_hi(10137439,4446598,55769),
       runtime.caml_int64_create_lo_mi_hi(1964337,15725251,62194),
       runtime.caml_int64_create_lo_mi_hi(4774824,11264843,58339),
       runtime.caml_int64_create_lo_mi_hi(2799289,7429090,23387),
       runtime.caml_int64_create_lo_mi_hi(9571772,1738804,34952),
       runtime.caml_int64_create_lo_mi_hi(13117758,5413540,39578),
       runtime.caml_int64_create_lo_mi_hi(12471307,9971245,9766),
       runtime.caml_int64_create_lo_mi_hi(16409791,13120141,12850),
       runtime.caml_int64_create_lo_mi_hi(4881753,16429289,45232),
       runtime.caml_int64_create_lo_mi_hi(7000050,8644891,59881),
       runtime.caml_int64_create_lo_mi_hi(3350135,3936120,3855),
       runtime.caml_int64_create_lo_mi_hi(10925875,7591398,54741),
       runtime.caml_int64_create_lo_mi_hi(12197364,3833972,32896),
       runtime.caml_int64_create_lo_mi_hi(8151335,12762777,48830),
       runtime.caml_int64_create_lo_mi_hi(14583787,1297702,52685),
       runtime.caml_int64_create_lo_mi_hi(14968969,13644989,13364),
       runtime.caml_int64_create_lo_mi_hi(7704626,4016250,18504),
       runtime.caml_int64_create_lo_mi_hi(2417492,14417835,65535),
       runtime.caml_int64_create_lo_mi_hi(9434253,16087799,31354),
       runtime.caml_int64_create_lo_mi_hi(15351140,8032500,37008),
       runtime.caml_int64_create_lo_mi_hi(4112029,6381506,24415),
       runtime.caml_int64_create_lo_mi_hi(10502205,8396829,8224),
       runtime.caml_int64_create_lo_mi_hi(14012431,12413031,26728),
       runtime.caml_int64_create_lo_mi_hi(7484618,6822608,6682),
       runtime.caml_int64_create_lo_mi_hi(2900407,8564249,44718),
       runtime.caml_int64_create_lo_mi_hi(6190461,15381705,46260),
       runtime.caml_int64_create_lo_mi_hi(1681614,5067930,21588),
       runtime.caml_int64_create_lo_mi_hi(15022975,7771116,37779),
       runtime.caml_int64_create_lo_mi_hi(11158575,8921613,8738),
       runtime.caml_int64_create_lo_mi_hi(15321187,9266183,25700),
       runtime.caml_int64_create_lo_mi_hi(1244970,14938587,61937),
       runtime.caml_int64_create_lo_mi_hi(10675916,13726655,29555),
       runtime.caml_int64_create_lo_mi_hi(5907586,4723344,4626),
       runtime.caml_int64_create_lo_mi_hi(6127738,1916986,16448),
       runtime.caml_int64_create_lo_mi_hi(2625608,2099264,2056),
       runtime.caml_int64_create_lo_mi_hi(15244181,2868054,50115),
       runtime.caml_int64_create_lo_mi_hi(8111583,9956403,60652),
       runtime.caml_int64_create_lo_mi_hi(9481037,4971414,56283),
       runtime.caml_int64_create_lo_mi_hi(2056128,12493153,41377),
       runtime.caml_int64_create_lo_mi_hi(8587153,953628,36237),
       runtime.caml_int64_create_lo_mi_hi(13204168,16006645,15677),
       runtime.caml_int64_create_lo_mi_hi(15807323,6723532,38807),
       runtime.caml_int64_create_lo_mi_hi(0,0,0),
       runtime.caml_int64_create_lo_mi_hi(13927417,1822518,53199),
       runtime.caml_int64_create_lo_mi_hi(8869486,11283269,11051),
       runtime.caml_int64_create_lo_mi_hi(11791585,12940951,30326),
       runtime.caml_int64_create_lo_mi_hi(11540966,3310180,33410),
       runtime.caml_int64_create_lo_mi_hi(11120936,8378110,54998),
       runtime.caml_int64_create_lo_mi_hi(7812803,7085016,6939),
       runtime.caml_int64_create_lo_mi_hi(5994356,15644097,46517),
       runtime.caml_int64_create_lo_mi_hi(2704318,8826641,44975),
       runtime.caml_int64_create_lo_mi_hi(14668829,11889271,27242),
       runtime.caml_int64_create_lo_mi_hi(893162,6115514,20560),
       runtime.caml_int64_create_lo_mi_hi(5016151,607506,17733),
       runtime.caml_int64_create_lo_mi_hi(1637176,15463371,62451),
       runtime.caml_int64_create_lo_mi_hi(15753389,12595357,12336),
       runtime.caml_int64_create_lo_mi_hi(7652292,10219307,61423),
       runtime.caml_int64_create_lo_mi_hi(12811994,16531429,16191),
       runtime.caml_int64_create_lo_mi_hi(1878727,4806034,21845),
       runtime.caml_int64_create_lo_mi_hi(1071579,11707001,41634),
       runtime.caml_int64_create_lo_mi_hi(6670825,9431555,60138),
       runtime.caml_int64_create_lo_mi_hi(15518314,9004303,25957),
       runtime.caml_int64_create_lo_mi_hi(6842627,13810361,47802),
       runtime.caml_int64_create_lo_mi_hi(9657930,12332901,12079),
       runtime.caml_int64_create_lo_mi_hi(15179150,2605134,49344),
       runtime.caml_int64_create_lo_mi_hi(8495456,6282942,57054),
       runtime.caml_int64_create_lo_mi_hi(7092476,7347424,7196),
       runtime.caml_int64_create_lo_mi_hi(3073862,13893051,65021),
       runtime.caml_int64_create_lo_mi_hi(6593055,2706770,19789),
       runtime.caml_int64_create_lo_mi_hi(14694774,7508708,37522),
       runtime.caml_int64_create_lo_mi_hi(12380922,13202831,30069),
       runtime.caml_int64_create_lo_mi_hi(1969206,1574448,1542),
       runtime.caml_int64_create_lo_mi_hi(9963950,1215012,35466),
       runtime.caml_int64_create_lo_mi_hi(4225355,15905529,45746),
       runtime.caml_int64_create_lo_mi_hi(5886341,12576355,59110),
       runtime.caml_int64_create_lo_mi_hi(3546238,3673712,3598),
       runtime.caml_int64_create_lo_mi_hi(6504167,8134648,7967),
       runtime.caml_int64_create_lo_mi_hi(16237653,9790007,25186),
       runtime.caml_int64_create_lo_mi_hi(10728762,7853294,54484),
       runtime.caml_int64_create_lo_mi_hi(3296641,10135593,43176),
       runtime.caml_int64_create_lo_mi_hi(16003410,6461124,38550),
       runtime.caml_int64_create_lo_mi_hi(3862370,12843419,63993),
       runtime.caml_int64_create_lo_mi_hi(16160675,3392870,50629),
       runtime.caml_int64_create_lo_mi_hi(11618832,9708853,9509),
       runtime.caml_int64_create_lo_mi_hi(2142891,7952882,22873),
       runtime.caml_int64_create_lo_mi_hi(11408848,2786388,33924),
       runtime.caml_int64_create_lo_mi_hi(11003077,13988535,29298),
       runtime.caml_int64_create_lo_mi_hi(14512876,14957013,14649),
       runtime.caml_int64_create_lo_mi_hi(6395926,2968666,19532),
       runtime.caml_int64_create_lo_mi_hi(3914900,6643402,24158),
       runtime.caml_int64_create_lo_mi_hi(8777887,16611559,30840),
       runtime.caml_int64_create_lo_mi_hi(14184677,14694621,14392),
       runtime.caml_int64_create_lo_mi_hi(8783256,691220,35980),
       runtime.caml_int64_create_lo_mi_hi(11714327,6541766,53713),
       runtime.caml_int64_create_lo_mi_hi(743396,11445569,42405),
       runtime.caml_int64_create_lo_mi_hi(5101985,11526723,58082),
       runtime.caml_int64_create_lo_mi_hi(16302670,10051887,24929),
       runtime.caml_int64_create_lo_mi_hi(4553538,16167921,46003),
       runtime.caml_int64_create_lo_mi_hi(10830388,8659221,8481),
       runtime.caml_int64_create_lo_mi_hi(14034184,4889748,40092),
       runtime.caml_int64_create_lo_mi_hi(6700270,7872240,7710),
       runtime.caml_int64_create_lo_mi_hi(5408353,1131298,17219),
       runtime.caml_int64_create_lo_mi_hi(16552881,3917686,51143),
       runtime.caml_int64_create_lo_mi_hi(2876751,14154931,64764),
       runtime.caml_int64_create_lo_mi_hi(1312804,1049632,1028),
       runtime.caml_int64_create_lo_mi_hi(565987,5853618,20817),
       runtime.caml_int64_create_lo_mi_hi(13053733,6199740,39321),
       runtime.caml_int64_create_lo_mi_hi(12900898,11103567,28013),
       runtime.caml_int64_create_lo_mi_hi(3742309,3411304,3341),
       runtime.caml_int64_create_lo_mi_hi(3533177,13630083,64250),
       runtime.caml_int64_create_lo_mi_hi(8692585,6021046,57311),
       runtime.caml_int64_create_lo_mi_hi(10222761,15040215,32382),
       runtime.caml_int64_create_lo_mi_hi(11814937,9446461,9252),
       runtime.caml_int64_create_lo_mi_hi(14120702,15481797,15163),
       runtime.caml_int64_create_lo_mi_hi(4017050,9874225,43947),
       runtime.caml_int64_create_lo_mi_hi(13730288,2084414,52942),
       runtime.caml_int64_create_lo_mi_hi(5579417,4460936,4369),
       runtime.caml_int64_create_lo_mi_hi(8979331,429836,36751),
       runtime.caml_int64_create_lo_mi_hi(7052292,2444874,20046),
       runtime.caml_int64_create_lo_mi_hi(5337958,15120337,47031),
       runtime.caml_int64_create_lo_mi_hi(6343648,9169675,60395),
       runtime.caml_int64_create_lo_mi_hi(13400257,15744253,15420),
       runtime.caml_int64_create_lo_mi_hi(12525565,4096380,33153),
       runtime.caml_int64_create_lo_mi_hi(16659776,6984916,38036),
       runtime.caml_int64_create_lo_mi_hi(848668,16513003,63479),
       runtime.caml_int64_create_lo_mi_hi(6778648,14596513,47545),
       runtime.caml_int64_create_lo_mi_hi(6235787,4985752,4883),
       runtime.caml_int64_create_lo_mi_hi(10246225,11545725,11308),
       runtime.caml_int64_create_lo_mi_hi(12106501,7066582,54227),
       runtime.caml_int64_create_lo_mi_hi(6083468,12314475,59367),
       runtime.caml_int64_create_lo_mi_hi(13360185,10841687,28270),
       runtime.caml_int64_create_lo_mi_hi(15963562,3654766,50372),
       runtime.caml_int64_create_lo_mi_hi(984603,787224,771),
       runtime.caml_int64_create_lo_mi_hi(1289436,4544138,22102),
       runtime.caml_int64_create_lo_mi_hi(4819038,869402,17476),
       runtime.caml_int64_create_lo_mi_hi(10419872,14778335,32639),
       runtime.caml_int64_create_lo_mi_hi(3624840,10397985,43433),
       runtime.caml_int64_create_lo_mi_hi(8541287,11020877,10794),
       runtime.caml_int64_create_lo_mi_hi(7170826,14072753,48059),
       runtime.caml_int64_create_lo_mi_hi(14851975,2343238,49601),
       runtime.caml_int64_create_lo_mi_hi(173809,5329826,21331),
       runtime.caml_int64_create_lo_mi_hi(9151858,5758126,56540),
       runtime.caml_int64_create_lo_mi_hi(2561619,2886488,2827),
       runtime.caml_int64_create_lo_mi_hi(13838081,5152156,40349),
       runtime.caml_int64_create_lo_mi_hi(12703787,11365447,27756),
       runtime.caml_int64_create_lo_mi_hi(16081572,12857749,12593),
       runtime.caml_int64_create_lo_mi_hi(12183795,13464711,29812),
       runtime.caml_int64_create_lo_mi_hi(651541,16774883,63222),
       runtime.caml_int64_create_lo_mi_hi(4426828,345610,17990),
       runtime.caml_int64_create_lo_mi_hi(2508197,9088009,44204),
       runtime.caml_int64_create_lo_mi_hi(9899957,2001212,35209),
       runtime.caml_int64_create_lo_mi_hi(4466868,5248160,5140),
       runtime.caml_int64_create_lo_mi_hi(4382650,10740059,57825),
       runtime.caml_int64_create_lo_mi_hi(5123238,5772976,5654),
       runtime.caml_int64_create_lo_mi_hi(13792503,15219405,14906),
       runtime.caml_int64_create_lo_mi_hi(13685254,12151151,26985),
       runtime.caml_int64_create_lo_mi_hi(2953793,2361672,2313),
       runtime.caml_int64_create_lo_mi_hi(11395287,14512295,28784),
       runtime.caml_int64_create_lo_mi_hi(5534063,14857945,46774),
       runtime.caml_int64_create_lo_mi_hi(12041502,6803662,53456),
       runtime.caml_int64_create_lo_mi_hi(8308694,9694523,60909),
       runtime.caml_int64_create_lo_mi_hi(14386658,1559598,52428),
       runtime.caml_int64_create_lo_mi_hi(5735528,1393194,16962),
       runtime.caml_int64_create_lo_mi_hi(12725548,5937332,39064),
       runtime.caml_int64_create_lo_mi_hi(939501,11183177,42148),
       runtime.caml_int64_create_lo_mi_hi(8933493,10496093,10280),
       runtime.caml_int64_create_lo_mi_hi(3258502,7167194,23644),
       runtime.caml_int64_create_lo_mi_hi(4189547,13105299,63736),
       runtime.caml_int64_create_lo_mi_hi(10752450,2262596,34438)];
    function create(n)
     {return caml_call3(Bigarray_compat[19][1],12,Bigarray_compat[15],n)}
    var
     length=caml_ba_dim_1,
     sub=caml_ba_sub,
     empty=caml_call3(Bigarray_compat[19][1],12,Bigarray_compat[15],0),
     get=caml_ba_get_1;
    function copy(t)
     {var r=create(caml_ba_dim_1(t));runtime.caml_ba_blit(t,r);return r}
    function init(l,f)
     {var
       v=caml_call3(Bigarray_compat[19][1],12,Bigarray_compat[15],l),
       _pW_=l - 1 | 0,
       _pV_=0;
      if(! (_pW_ < 0))
       {var i=_pV_;
        for(;;)
         {caml_ba_set_1(v,i,caml_call1(f,i));
          var _pX_=i + 1 | 0;
          if(_pW_ !== i){var i=_pX_;continue}
          break}}
      return v}
    function unsafe_get_nat(s,i)
     {return 32 === Stdlib_sys[9]
              ?caml_ba_uint8_get32(s,i)
              :caml_int64_to_int32(caml_ba_uint8_get64(s,i))}
    function unsafe_set_nat(s,i,v)
     {return 32 === Stdlib_sys[9]
              ?caml_ba_uint8_set32(s,i,v)
              :caml_ba_uint8_set64(s,i,caml_int64_of_int32(v))}
    function to_string(v)
     {function _pS_(_pU_){return caml_ba_get_1(v,_pU_)}
      var _pT_=caml_ba_dim_1(v);
      return caml_call2(Stdlib_string[2],_pT_,_pS_)}
    function blit_from_bytes(src,src_off,dst,dst_off,len)
     {var _pQ_=len - 1 | 0,_pP_=0;
      if(! (_pQ_ < 0))
       {var i=_pP_;
        for(;;)
         {caml_ba_set_1
           (dst,dst_off + i | 0,caml_bytes_get(src,src_off + i | 0));
          var _pR_=i + 1 | 0;
          if(_pQ_ !== i){var i=_pR_;continue}
          break}}
      return 0}
    function cpu_to_be32(s,i,v)
     {return Stdlib_sys[11]
              ?caml_ba_uint8_set32(s,i,v)
              :caml_ba_uint8_set32(s,i,caml_int32_bswap(v))}
    function cpu_to_le32(s,i,v)
     {return Stdlib_sys[11]
              ?caml_ba_uint8_set32(s,i,caml_int32_bswap(v))
              :caml_ba_uint8_set32(s,i,v)}
    function cpu_to_be64(s,i,v)
     {return Stdlib_sys[11]
              ?caml_ba_uint8_set64(s,i,v)
              :caml_ba_uint8_set64(s,i,caml_int64_bswap(v))}
    function cpu_to_le64(s,i,v)
     {return Stdlib_sys[11]
              ?caml_ba_uint8_set64(s,i,caml_int64_bswap(v))
              :caml_ba_uint8_set64(s,i,v)}
    function be32_to_cpu(s,i)
     {return Stdlib_sys[11]
              ?caml_ba_uint8_get32(s,i)
              :caml_int32_bswap(caml_ba_uint8_get32(s,i))}
    function le32_to_cpu(s,i)
     {return Stdlib_sys[11]
              ?caml_int32_bswap(caml_ba_uint8_get32(s,i))
              :caml_ba_uint8_get32(s,i)}
    function be64_to_cpu(s,i)
     {return Stdlib_sys[11]
              ?caml_ba_uint8_get64(s,i)
              :caml_int64_bswap(caml_ba_uint8_get64(s,i))}
    function le64_to_cpu(s,i)
     {return Stdlib_sys[11]
              ?caml_int64_bswap(caml_ba_uint8_get64(s,i))
              :caml_ba_uint8_get64(s,i)}
    function benat_to_cpu(s,i)
     {return Stdlib_sys[11]
              ?unsafe_get_nat(s,i)
              :caml_int32_bswap(unsafe_get_nat(s,i))}
    function cpu_to_benat(s,i,v)
     {return Stdlib_sys[11]
              ?unsafe_set_nat(s,i,v)
              :unsafe_set_nat(s,i,caml_int32_bswap(v))}
    var
     Digestif_bi=
      [0,
       create,
       length,
       sub,
       empty,
       get,
       copy,
       init,
       unsafe_get_nat,
       unsafe_set_nat,
       to_string,
       blit_from_bytes,
       cpu_to_be32,
       cpu_to_le32,
       cpu_to_be64,
       cpu_to_le64,
       be32_to_cpu,
       le32_to_cpu,
       be64_to_cpu,
       le64_to_cpu,
       benat_to_cpu,
       cpu_to_benat];
    caml_register_global(233,Digestif_bi,"Digestif_bi");
    var
     make=Stdlib_bytes[1],
     init$0=Stdlib_bytes[2],
     empty$0=Stdlib_bytes[3],
     copy$0=Stdlib_bytes[4],
     of_string=Stdlib_bytes[5],
     to_string$0=Stdlib_bytes[6],
     sub$0=Stdlib_bytes[7],
     sub_string=Stdlib_bytes[8],
     extend=Stdlib_bytes[9],
     fill=Stdlib_bytes[10],
     blit=Stdlib_bytes[11],
     blit_string=Stdlib_bytes[12],
     concat=Stdlib_bytes[13],
     cat=Stdlib_bytes[14],
     iter=Stdlib_bytes[15],
     iteri=Stdlib_bytes[16],
     map=Stdlib_bytes[17],
     mapi=Stdlib_bytes[18],
     trim=Stdlib_bytes[19],
     escaped=Stdlib_bytes[20],
     index=Stdlib_bytes[21],
     index_opt=Stdlib_bytes[22],
     rindex=Stdlib_bytes[23],
     rindex_opt=Stdlib_bytes[24],
     index_from=Stdlib_bytes[25],
     index_from_opt=Stdlib_bytes[26],
     rindex_from=Stdlib_bytes[27],
     rindex_from_opt=Stdlib_bytes[28],
     contains=Stdlib_bytes[29],
     contains_from=Stdlib_bytes[30],
     rcontains_from=Stdlib_bytes[31],
     uppercase=Stdlib_bytes[32],
     lowercase=Stdlib_bytes[33],
     capitalize=Stdlib_bytes[34],
     uncapitalize=Stdlib_bytes[35],
     uppercase_ascii=Stdlib_bytes[36],
     lowercase_ascii=Stdlib_bytes[37],
     capitalize_ascii=Stdlib_bytes[38],
     uncapitalize_ascii=Stdlib_bytes[39],
     compare=Stdlib_bytes[40],
     equal=Stdlib_bytes[41],
     unsafe_to_string=Stdlib_bytes[42],
     unsafe_of_string=Stdlib_bytes[43],
     to_seq=Stdlib_bytes[44],
     to_seqi=Stdlib_bytes[45],
     of_seq=Stdlib_bytes[46],
     get_uint8=Stdlib_bytes[47],
     get_int8=Stdlib_bytes[48],
     get_uint16_ne=Stdlib_bytes[49],
     get_uint16_be=Stdlib_bytes[50],
     get_uint16_le=Stdlib_bytes[51],
     get_int16_ne=Stdlib_bytes[52],
     get_int16_be=Stdlib_bytes[53],
     get_int16_le=Stdlib_bytes[54],
     get_int32_ne=Stdlib_bytes[55],
     get_int32_be=Stdlib_bytes[56],
     get_int32_le=Stdlib_bytes[57],
     get_int64_ne=Stdlib_bytes[58],
     get_int64_be=Stdlib_bytes[59],
     get_int64_le=Stdlib_bytes[60],
     set_uint8=Stdlib_bytes[61],
     set_int8=Stdlib_bytes[62],
     set_uint16_ne=Stdlib_bytes[63],
     set_uint16_be=Stdlib_bytes[64],
     set_uint16_le=Stdlib_bytes[65],
     set_int16_ne=Stdlib_bytes[66],
     set_int16_be=Stdlib_bytes[67],
     set_int16_le=Stdlib_bytes[68],
     set_int32_ne=Stdlib_bytes[69],
     set_int32_be=Stdlib_bytes[70],
     set_int32_le=Stdlib_bytes[71],
     set_int64_ne=Stdlib_bytes[72],
     set_int64_be=Stdlib_bytes[73],
     set_int64_le=Stdlib_bytes[74];
    function unsafe_get_nat$0(s,i)
     {return 32 === Stdlib_sys[9]
              ?caml_string_get32(s,i)
              :caml_int64_to_int32(caml_string_get64(s,i))}
    function unsafe_set_nat$0(s,i,v)
     {return 32 === Stdlib_sys[9]
              ?caml_bytes_set32(s,i,v)
              :caml_bytes_set64(s,i,caml_int64_of_int32(v))}
    function blit_from_bigstring(src,src_off,dst,dst_off,len)
     {var _pN_=len - 1 | 0,_pM_=0;
      if(! (_pN_ < 0))
       {var i=_pM_;
        for(;;)
         {caml_bytes_set
           (dst,dst_off + i | 0,caml_ba_get_1(src,src_off + i | 0));
          var _pO_=i + 1 | 0;
          if(_pN_ !== i){var i=_pO_;continue}
          break}}
      return 0}
    function rpad(a,size,x)
     {var l=caml_ml_bytes_length(a),b=caml_create_bytes(size);
      caml_call5(blit,a,0,b,0,l);
      caml_call4(fill,b,l,size - l | 0,x);
      return b}
    function cpu_to_be32$0(s,i,v)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(s,i,v)
              :caml_bytes_set32(s,i,caml_int32_bswap(v))}
    function cpu_to_le32$0(s,i,v)
     {return Stdlib_sys[11]
              ?caml_bytes_set32(s,i,caml_int32_bswap(v))
              :caml_bytes_set32(s,i,v)}
    function cpu_to_be64$0(s,i,v)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(s,i,v)
              :caml_bytes_set64(s,i,caml_int64_bswap(v))}
    function cpu_to_le64$0(s,i,v)
     {return Stdlib_sys[11]
              ?caml_bytes_set64(s,i,caml_int64_bswap(v))
              :caml_bytes_set64(s,i,v)}
    function be32_to_cpu$0(s,i)
     {return Stdlib_sys[11]
              ?caml_string_get32(s,i)
              :caml_int32_bswap(caml_string_get32(s,i))}
    function le32_to_cpu$0(s,i)
     {return Stdlib_sys[11]
              ?caml_int32_bswap(caml_string_get32(s,i))
              :caml_string_get32(s,i)}
    function be64_to_cpu$0(s,i)
     {return Stdlib_sys[11]
              ?caml_string_get64(s,i)
              :caml_int64_bswap(caml_string_get64(s,i))}
    function le64_to_cpu$0(s,i)
     {return Stdlib_sys[11]
              ?caml_int64_bswap(caml_string_get64(s,i))
              :caml_string_get64(s,i)}
    function benat_to_cpu$0(s,i)
     {return Stdlib_sys[11]
              ?unsafe_get_nat$0(s,i)
              :caml_int32_bswap(unsafe_get_nat$0(s,i))}
    function cpu_to_benat$0(s,i,v)
     {return Stdlib_sys[11]
              ?unsafe_set_nat$0(s,i,v)
              :unsafe_set_nat$0(s,i,caml_int32_bswap(v))}
    var
     Digestif_by=
      [0,
       make,
       init$0,
       empty$0,
       copy$0,
       of_string,
       to_string$0,
       sub$0,
       sub_string,
       extend,
       fill,
       blit,
       blit_string,
       concat,
       cat,
       iter,
       iteri,
       map,
       mapi,
       trim,
       escaped,
       index,
       index_opt,
       rindex,
       rindex_opt,
       index_from,
       index_from_opt,
       rindex_from,
       rindex_from_opt,
       contains,
       contains_from,
       rcontains_from,
       uppercase,
       lowercase,
       capitalize,
       uncapitalize,
       uppercase_ascii,
       lowercase_ascii,
       capitalize_ascii,
       uncapitalize_ascii,
       compare,
       equal,
       unsafe_to_string,
       unsafe_of_string,
       to_seq,
       to_seqi,
       of_seq,
       get_uint8,
       get_int8,
       get_uint16_ne,
       get_uint16_be,
       get_uint16_le,
       get_int16_ne,
       get_int16_be,
       get_int16_le,
       get_int32_ne,
       get_int32_be,
       get_int32_le,
       get_int64_ne,
       get_int64_be,
       get_int64_le,
       set_uint8,
       set_int8,
       set_uint16_ne,
       set_uint16_be,
       set_uint16_le,
       set_int16_ne,
       set_int16_be,
       set_int16_le,
       set_int32_ne,
       set_int32_be,
       set_int32_le,
       set_int64_ne,
       set_int64_be,
       set_int64_le,
       unsafe_get_nat$0,
       unsafe_set_nat$0,
       blit_from_bigstring,
       rpad,
       cpu_to_be32$0,
       cpu_to_le32$0,
       cpu_to_be64$0,
       cpu_to_le64$0,
       be32_to_cpu$0,
       le32_to_cpu$0,
       be64_to_cpu$0,
       le64_to_cpu$0,
       benat_to_cpu$0,
       cpu_to_benat$0];
    caml_register_global(235,Digestif_by,"Digestif_by");
    var
     zero=Stdlib_nativeint[1],
     one=Stdlib_nativeint[2],
     minus_one=Stdlib_nativeint[3],
     unsigned_div=Stdlib_nativeint[4],
     unsigned_rem=Stdlib_nativeint[5],
     succ=Stdlib_nativeint[6],
     pred=Stdlib_nativeint[7],
     abs=Stdlib_nativeint[8],
     size=Stdlib_nativeint[9],
     max_int=Stdlib_nativeint[10],
     min_int=Stdlib_nativeint[11],
     lognot=Stdlib_nativeint[12],
     unsigned_to_int=Stdlib_nativeint[13],
     of_string_opt=Stdlib_nativeint[14],
     to_string$1=Stdlib_nativeint[15],
     compare$0=Stdlib_nativeint[16],
     unsigned_compare=Stdlib_nativeint[17],
     equal$0=Stdlib_nativeint[18];
    function lxor(_pL_,_pK_){return _pL_ ^ _pK_}
    var
     Nat=
      [0,
       zero,
       one,
       minus_one,
       unsigned_div,
       unsigned_rem,
       succ,
       pred,
       abs,
       size,
       max_int,
       min_int,
       lognot,
       unsigned_to_int,
       of_string_opt,
       to_string$1,
       compare$0,
       unsigned_compare,
       equal$0,
       lxor];
    function imin(a,b){return a < b?a:b}
    function Make(B)
     {var size_of_long=Stdlib_sys[9] / 8 | 0;
      function xor_into(a,b,n$0)
       {var _pJ_=caml_call1(B[1],b);
        if(imin(caml_call1(B[1],a),_pJ_) < n$0)
         throw [0,Stdlib[6],cst_Baijiu_Xor_xor_inrot_buffe];
        var n=[0,n$0],i=[0,0];
        for(;;)
         {if(size_of_long <= n[1])
           {var
             _pD_=caml_call2(B[4],a,i[1] | 0),
             _pE_=caml_call2(B[4],b,i[1] | 0),
             _pF_=caml_call2(Nat[19],_pE_,_pD_);
            caml_call3(B[5],b,i[1] | 0,_pF_);
            n[1] = n[1] - size_of_long | 0;
            i[1] = i[1] + size_of_long | 0;
            continue}
          for(;;)
           {if(0 < n[1])
             {var
               _pG_=caml_call2(B[4],b,i[1] | 0),
               _pH_=caml_call2(B[4],a,i[1] | 0),
               _pI_=caml_call2(Nat[19],_pH_,_pG_);
              caml_call3(B[5],b,i[1] | 0,_pI_);
              i[1]++;
              n[1] += -1;
              continue}
            return 0}}}
      function xor(a,b)
       {var
         _pB_=caml_call1(B[1],b),
         l=imin(caml_call1(B[1],a),_pB_),
         _pC_=caml_call3(B[2],b,0,l),
         r=caml_call1(B[3],_pC_);
        xor_into(a,r,l);
        return r}
      return [0,size_of_long,xor_into,xor]}
    var
     Bytes=
      Make
       ([0,caml_ml_bytes_length,sub$0,copy$0,benat_to_cpu$0,cpu_to_benat$0]),
     Bigstring=Make([0,length,sub,copy,benat_to_cpu,cpu_to_benat]),
     Xor=[0,Nat,imin,Make,Bytes,Bigstring];
    caml_register_global(238,Xor,"Xor");
    function Make$0(D)
     {function equal(a,b){return caml_call2(Eqaf[1],a,b)}
      function unsafe_compare(a,b){return caml_call2(Stdlib_string[33],a,b)}
      return [0,equal,unsafe_compare]}
    var Digestif_eq=[0,Make$0];
    caml_register_global(240,Digestif_eq,"Digestif_eq");
    function invalid_arg(fmt)
     {function _pA_(s){return caml_call1(Stdlib[1],s)}
      return caml_call2(Stdlib_format[133],_pA_,fmt)}
    function Make$1(D)
     {function to_hex(hash)
       {var res=caml_create_bytes(D[1] * 2 | 0);
        function chr(x)
         {return 9 < x >>> 0
                  ?caml_call1(Stdlib_char[1],97 + (x - 10 | 0) | 0)
                  :caml_call1(Stdlib_char[1],48 + x | 0)}
        var _py_=D[1] - 1 | 0,_px_=0;
        if(! (_py_ < 0))
         {var i=_px_;
          for(;;)
           {var v=caml_string_get(hash,i);
            caml_bytes_unsafe_set(res,i * 2 | 0,chr(v >>> 4 | 0));
            caml_bytes_unsafe_set(res,(i * 2 | 0) + 1 | 0,chr(v & 15));
            var _pz_=i + 1 | 0;
            if(_py_ !== i){var i=_pz_;continue}
            break}}
        return caml_call1(Stdlib_bytes[42],res)}
      function code(x)
       {if(65 <= x)
         {if(97 <= x)
           {if(! (103 <= x))return (x - 97 | 0) + 10 | 0}
          else
           if(! (71 <= x))return (x - 65 | 0) + 10 | 0}
        else
         {var switcher=x - 48 | 0;if(! (9 < switcher >>> 0))return x - 48 | 0}
        return caml_call1(invalid_arg(_a_),x)}
      function decode(chr1,chr2)
       {var _pv_=code(chr2),_pw_=code(chr1) << 4 | _pv_;
        return caml_call1(Stdlib_char[1],_pw_)}
      function of_hex(hex)
       {var offset=[0,0];
        function go(have_first,idx)
         {for(;;)
           {if(caml_ml_string_length(hex) <= (offset[1] + idx | 0))return 0;
            var
             chr1=caml_string_get(hex,offset[1] + idx | 0),
             _pu_=chr1 - 9 | 0,
             switch$0=0;
            if(4 < _pu_ >>> 0)
             {if(23 === _pu_)switch$0 = 1}
            else
             if(1 < (_pu_ - 2 | 0) >>> 0)switch$0 = 1;
            if(switch$0){offset[1]++;continue}
            if(have_first)return chr1;
            offset[1]++;
            var chr2=go(1,idx);
            return 0 === chr2?invalid_arg(_b_):decode(chr1,chr2)}}
        var _pr_=0;
        function _ps_(_pt_){return go(_pr_,_pt_)}
        return caml_call2(Stdlib_string[2],D[1],_ps_)}
      function of_hex_opt(hex)
       {try
         {var digest=of_hex(hex)}
        catch(_pq_)
         {_pq_ = caml_wrap_exception(_pq_);
          if(_pq_[1] === Stdlib[6])return 0;
          throw _pq_}
        return [0,digest]}
      function consistent_of_hex(str)
       {var offset=[0,0];
        function go(have_first,idx)
         {for(;;)
           {if(caml_ml_string_length(str) <= (offset[1] + idx | 0))
             return invalid_arg(_c_);
            var
             chr1=caml_string_get(str,offset[1] + idx | 0),
             _pp_=chr1 - 9 | 0,
             switch$0=0;
            if(4 < _pp_ >>> 0)
             {if(23 === _pp_)switch$0 = 1}
            else
             if(1 < (_pp_ - 2 | 0) >>> 0)switch$0 = 1;
            if(switch$0){offset[1]++;continue}
            if(have_first)return chr1;
            offset[1]++;
            var chr2=go(1,idx);
            return decode(chr1,chr2)}}
        var _pj_=0;
        function _pk_(_po_){return go(_pj_,_po_)}
        var res=caml_call2(Stdlib_string[2],D[1],_pk_);
        for(;;)
         {if((D[1] + offset[1] | 0) < caml_ml_string_length(str))
           {var
             param=caml_string_get(str,offset[1] + (D[1] * 2 | 0) | 0),
             _pl_=param - 9 | 0,
             switch$0=0;
            if(4 < _pl_ >>> 0)
             {if(23 === _pl_)switch$0 = 1}
            else
             if(1 < (_pl_ - 2 | 0) >>> 0)switch$0 = 1;
            var _pm_=switch$0?1:0;
            if(_pm_){offset[1]++;continue}}
          if((offset[1] + D[1] | 0) === caml_ml_string_length(str))return res;
          var _pn_=offset[1] + (D[1] * 2 | 0) | 0;
          return caml_call2(invalid_arg(_d_),_pn_,caml_ml_string_length(str))}}
      function consistent_of_hex_opt(hex)
       {try
         {var digest=consistent_of_hex(hex)}
        catch(_pi_)
         {_pi_ = caml_wrap_exception(_pi_);
          if(_pi_[1] === Stdlib[6])return 0;
          throw _pi_}
        return [0,digest]}
      function pp(ppf,hash)
       {var _pf_=D[1] - 1 | 0,_pe_=0;
        if(! (_pf_ < 0))
         {var i=_pe_;
          for(;;)
           {var _pg_=caml_string_get(hash,i);
            caml_call3(Stdlib_format[123],ppf,_e_,_pg_);
            var _ph_=i + 1 | 0;
            if(_pf_ !== i){var i=_ph_;continue}
            break}}
        return 0}
      function of_raw_string(x)
       {return caml_ml_string_length(x) !== D[1]?invalid_arg(_f_):x}
      function of_raw_string_opt(x)
       {try
         {var digest=of_raw_string(x)}
        catch(_pd_)
         {_pd_ = caml_wrap_exception(_pd_);
          if(_pd_[1] === Stdlib[6])return 0;
          throw _pd_}
        return [0,digest]}
      function to_raw_string(x){return x}
      return [0,
              to_hex,
              code,
              decode,
              of_hex,
              of_hex_opt,
              consistent_of_hex,
              consistent_of_hex_opt,
              pp,
              of_raw_string,
              of_raw_string_opt,
              to_raw_string]}
    var Digestif_conv=[0,invalid_arg,Make$1];
    caml_register_global(243,Digestif_conv,"Digestif_conv");
    function failwith(fmt)
     {return caml_call2(Stdlib_format[134],Stdlib[2],fmt)}
    var
     zero$0=Stdlib_int32[1],
     one$0=Stdlib_int32[2],
     minus_one$0=Stdlib_int32[3],
     unsigned_div$0=Stdlib_int32[4],
     unsigned_rem$0=Stdlib_int32[5],
     succ$0=Stdlib_int32[6],
     pred$0=Stdlib_int32[7],
     abs$0=Stdlib_int32[8],
     max_int$0=Stdlib_int32[9],
     min_int$0=Stdlib_int32[10],
     lognot$0=Stdlib_int32[11],
     unsigned_to_int$0=Stdlib_int32[12],
     of_string_opt$0=Stdlib_int32[13],
     to_string$2=Stdlib_int32[14],
     compare$1=Stdlib_int32[15],
     unsigned_compare$0=Stdlib_int32[16],
     equal$1=Stdlib_int32[17];
    function lsl(_pc_,_pb_){return _pc_ << _pb_}
    function lsr(_pa_,_o$_){return _pa_ >>> _o$_ | 0}
    function asr(_o__,_o9_){return _o__ >> _o9_}
    function lor(_o8_,_o7_){return _o8_ | _o7_}
    function lxor$0(_o6_,_o5_){return _o6_ ^ _o5_}
    function land(_o4_,_o3_){return _o4_ & _o3_}
    var lnot=Stdlib_int32[11];
    function symbol(_o2_,_o1_){return _o2_ + _o1_ | 0}
    function rol32(a,n){return a << n | a >>> (32 - n | 0) | 0}
    function ror32(a,n){return a >>> n | 0 | a << (32 - n | 0)}
    var
     Int32=
      [0,
       zero$0,
       one$0,
       minus_one$0,
       unsigned_div$0,
       unsigned_rem$0,
       succ$0,
       pred$0,
       abs$0,
       max_int$0,
       min_int$0,
       lognot$0,
       unsigned_to_int$0,
       of_string_opt$0,
       to_string$2,
       compare$1,
       unsigned_compare$0,
       equal$1,
       lsl,
       lsr,
       asr,
       lor,
       lxor$0,
       land,
       lnot,
       symbol,
       rol32,
       ror32],
     zero$1=Stdlib_int64[1],
     one$1=Stdlib_int64[2],
     minus_one$1=Stdlib_int64[3],
     unsigned_div$1=Stdlib_int64[4],
     unsigned_rem$1=Stdlib_int64[5],
     succ$1=Stdlib_int64[6],
     pred$1=Stdlib_int64[7],
     abs$1=Stdlib_int64[8],
     max_int$1=Stdlib_int64[9],
     min_int$1=Stdlib_int64[10],
     lognot$1=Stdlib_int64[11],
     unsigned_to_int$1=Stdlib_int64[12],
     of_string_opt$1=Stdlib_int64[13],
     to_string$3=Stdlib_int64[14],
     compare$2=Stdlib_int64[15],
     unsigned_compare$1=Stdlib_int64[16],
     equal$2=Stdlib_int64[17],
     land$0=caml_int64_and,
     lsl$0=caml_int64_shift_left,
     lsr$0=caml_int64_shift_right_unsigne,
     lor$0=caml_int64_or,
     asr$0=caml_int64_shift_right,
     lxor$1=caml_int64_xor,
     symbol$0=caml_int64_add;
    function rol64(a,n)
     {return caml_int64_or
              (caml_int64_shift_left(a,n),
               caml_int64_shift_right_unsigne(a,64 - n | 0))}
    function ror64(a,n)
     {return caml_int64_or
              (caml_int64_shift_right_unsigne(a,n),
               caml_int64_shift_left(a,64 - n | 0))}
    var
     Int64=
      [0,
       zero$1,
       one$1,
       minus_one$1,
       unsigned_div$1,
       unsigned_rem$1,
       succ$1,
       pred$1,
       abs$1,
       max_int$1,
       min_int$1,
       lognot$1,
       unsigned_to_int$1,
       of_string_opt$1,
       to_string$3,
       compare$2,
       unsigned_compare$1,
       equal$2,
       land$0,
       lsl$0,
       lsr$0,
       lor$0,
       asr$0,
       lxor$1,
       symbol$0,
       rol64,
       ror64];
    function dup(ctx)
     {var
       _oX_=caml_call1(Stdlib_array[8],ctx[7]),
       _oY_=caml_call1(Stdlib_array[8],ctx[6]),
       _oZ_=caml_call1(Stdlib_array[8],ctx[5]),
       _o0_=caml_call1(copy$0,ctx[4]);
      return [0,ctx[1],ctx[2],ctx[3],_o0_,_oZ_,_oY_,_oX_]}
    function param_to_bytes(param)
     {var
       _nP_=caml_check_bound(param[12],15)[16] & 255,
       _nQ_=caml_check_bound(param[12],14)[15] & 255,
       _nR_=caml_check_bound(param[12],13)[14] & 255,
       _nS_=caml_check_bound(param[12],12)[13] & 255,
       _nT_=caml_check_bound(param[12],11)[12] & 255,
       _nU_=caml_check_bound(param[12],10)[11] & 255,
       _nV_=caml_check_bound(param[12],9)[10] & 255,
       _nW_=caml_check_bound(param[12],8)[9] & 255,
       _nX_=caml_check_bound(param[12],7)[8] & 255,
       _nY_=caml_check_bound(param[12],6)[7] & 255,
       _nZ_=caml_check_bound(param[12],5)[6] & 255,
       _n0_=caml_check_bound(param[12],4)[5] & 255,
       _n1_=caml_check_bound(param[12],3)[4] & 255,
       _n2_=caml_check_bound(param[12],2)[3] & 255,
       _n3_=caml_check_bound(param[12],1)[2] & 255,
       _n4_=caml_check_bound(param[12],0)[1] & 255,
       _n5_=caml_check_bound(param[11],15)[16] & 255,
       _n6_=caml_check_bound(param[11],14)[15] & 255,
       _n7_=caml_check_bound(param[11],13)[14] & 255,
       _n8_=caml_check_bound(param[11],12)[13] & 255,
       _n9_=caml_check_bound(param[11],11)[12] & 255,
       _n__=caml_check_bound(param[11],10)[11] & 255,
       _n$_=caml_check_bound(param[11],9)[10] & 255,
       _oa_=caml_check_bound(param[11],8)[9] & 255,
       _ob_=caml_check_bound(param[11],7)[8] & 255,
       _oc_=caml_check_bound(param[11],6)[7] & 255,
       _od_=caml_check_bound(param[11],5)[6] & 255,
       _oe_=caml_check_bound(param[11],4)[5] & 255,
       _of_=caml_check_bound(param[11],3)[4] & 255,
       _og_=caml_check_bound(param[11],2)[3] & 255,
       _oh_=caml_check_bound(param[11],1)[2] & 255,
       _oi_=caml_check_bound(param[11],0)[1] & 255,
       _oj_=caml_check_bound(param[10],13)[14] & 255,
       _ok_=caml_check_bound(param[10],12)[13] & 255,
       _ol_=caml_check_bound(param[10],11)[12] & 255,
       _om_=caml_check_bound(param[10],10)[11] & 255,
       _on_=caml_check_bound(param[10],9)[10] & 255,
       _oo_=caml_check_bound(param[10],8)[9] & 255,
       _op_=caml_check_bound(param[10],7)[8] & 255,
       _oq_=caml_check_bound(param[10],6)[7] & 255,
       _or_=caml_check_bound(param[10],5)[6] & 255,
       _os_=caml_check_bound(param[10],4)[5] & 255,
       _ot_=caml_check_bound(param[10],3)[4] & 255,
       _ou_=caml_check_bound(param[10],2)[3] & 255,
       _ov_=caml_check_bound(param[10],1)[2] & 255,
       _ow_=caml_check_bound(param[10],0)[1] & 255,
       _ox_=param[9] & 255,
       _oy_=param[8] & 255,
       _oz_=caml_call2(Int32[19],param[7],24),
       _oA_=caml_call2(Int32[23],_oz_,255),
       _oB_=caml_call2(Int32[19],param[7],16),
       _oC_=caml_call2(Int32[23],_oB_,255),
       _oD_=caml_call2(Int32[19],param[7],8),
       _oE_=caml_call2(Int32[23],_oD_,255),
       _oF_=caml_call2(Int32[19],param[7],0),
       _oG_=caml_call2(Int32[23],_oF_,255),
       _oH_=caml_call2(Int32[19],param[6],24),
       _oI_=caml_call2(Int32[23],_oH_,255),
       _oJ_=caml_call2(Int32[19],param[6],16),
       _oK_=caml_call2(Int32[23],_oJ_,255),
       _oL_=caml_call2(Int32[19],param[6],8),
       _oM_=caml_call2(Int32[23],_oL_,255),
       _oN_=caml_call2(Int32[19],param[6],0),
       _oO_=caml_call2(Int32[23],_oN_,255),
       _oP_=caml_call2(Int32[19],param[5],24),
       _oQ_=caml_call2(Int32[23],_oP_,255),
       _oR_=caml_call2(Int32[19],param[5],16),
       _oS_=caml_call2(Int32[23],_oR_,255),
       _oT_=caml_call2(Int32[19],param[5],8),
       _oU_=caml_call2(Int32[23],_oT_,255),
       _oV_=caml_call2(Int32[19],param[5],0),
       _oW_=caml_call2(Int32[23],_oV_,255),
       arr=
        [0,
         param[1] & 255,
         param[2] & 255,
         param[3] & 255,
         param[4] & 255,
         _oW_,
         _oU_,
         _oS_,
         _oQ_,
         _oO_,
         _oM_,
         _oK_,
         _oI_,
         _oG_,
         _oE_,
         _oC_,
         _oA_,
         _oy_,
         _ox_,
         _ow_,
         _ov_,
         _ou_,
         _ot_,
         _os_,
         _or_,
         _oq_,
         _op_,
         _oo_,
         _on_,
         _om_,
         _ol_,
         _ok_,
         _oj_,
         _oi_,
         _oh_,
         _og_,
         _of_,
         _oe_,
         _od_,
         _oc_,
         _ob_,
         _oa_,
         _n$_,
         _n__,
         _n9_,
         _n8_,
         _n7_,
         _n6_,
         _n5_,
         _n4_,
         _n3_,
         _n2_,
         _n1_,
         _n0_,
         _nZ_,
         _nY_,
         _nX_,
         _nW_,
         _nV_,
         _nU_,
         _nT_,
         _nS_,
         _nR_,
         _nQ_,
         _nP_];
      return caml_call2
              (init$0,64,function(i){return caml_check_bound(arr,i)[1 + i]})}
    var
     default_param=[0,64,0,1,1,0,0,0,0,0,_i_.slice(),_h_.slice(),_g_.slice()],
     iv=_j_.slice(),
     max_outlen=64;
    function increment_counter(ctx,inc)
     {var
       _nK_=caml_check_bound(ctx[6],0)[1],
       _nL_=caml_call2(Int64[24],_nK_,inc);
      caml_check_bound(ctx[6],0)[1] = _nL_;
      var
       _nM_=caml_lessthan(caml_check_bound(ctx[6],0)[1],inc)?_k_:_l_,
       _nN_=caml_check_bound(ctx[6],1)[2],
       _nO_=caml_call2(Int64[24],_nN_,_nM_);
      caml_check_bound(ctx[6],1)[2] = _nO_;
      return 0}
    function init$1(param)
     {var buf=caml_call2(make,128,0);
      caml_call4(fill,buf,0,128,0);
      var
       ctx=
        [0,
         0,
         default_param[1],
         0,
         buf,
         caml_make_vect(8,_o_),
         caml_make_vect(2,_n_),
         caml_make_vect(2,_m_)],
       param_bytes=param_to_bytes(default_param),
       i=0;
      for(;;)
       {var
         _nG_=le64_to_cpu$0(param_bytes,i * 8 | 0),
         _nH_=caml_check_bound(iv,i)[1 + i],
         _nI_=caml_call2(Int64[23],_nH_,_nG_);
        caml_check_bound(ctx[5],i)[1 + i] = _nI_;
        var _nJ_=i + 1 | 0;
        if(7 !== i){var i=_nJ_;continue}
        return ctx}}
    var
     sigma=
      [0,
       _A_.slice(),
       _z_.slice(),
       _y_.slice(),
       _x_.slice(),
       _w_.slice(),
       _v_.slice(),
       _u_.slice(),
       _t_.slice(),
       _s_.slice(),
       _r_.slice(),
       _q_.slice(),
       _p_.slice()];
    function compress(le64_to_cpu,ctx,block,off)
     {var v=caml_make_vect(16,_B_),m=caml_make_vect(16,_C_);
      function g(r,i,a_idx,b_idx,c_idx,d_idx)
       {var
         _m8_=2 * i | 0 | 0,
         _m9_=
          caml_check_bound(caml_check_bound(sigma,r)[1 + r],_m8_)[1 + _m8_],
         _m__=caml_check_bound(m,_m9_)[1 + _m9_],
         _m$_=caml_check_bound(v,b_idx)[1 + b_idx],
         _na_=caml_check_bound(v,a_idx)[1 + a_idx],
         _nb_=caml_call2(Int64[24],_na_,_m$_),
         _nc_=caml_call2(Int64[24],_nb_,_m__);
        caml_check_bound(v,a_idx)[1 + a_idx] = _nc_;
        var
         _nd_=caml_check_bound(v,a_idx)[1 + a_idx],
         _ne_=caml_check_bound(v,d_idx)[1 + d_idx],
         _nf_=caml_call2(Int64[23],_ne_,_nd_),
         _ng_=caml_call2(Int64[26],_nf_,32);
        caml_check_bound(v,d_idx)[1 + d_idx] = _ng_;
        var
         _nh_=caml_check_bound(v,d_idx)[1 + d_idx],
         _ni_=caml_check_bound(v,c_idx)[1 + c_idx],
         _nj_=caml_call2(Int64[24],_ni_,_nh_);
        caml_check_bound(v,c_idx)[1 + c_idx] = _nj_;
        var
         _nk_=caml_check_bound(v,c_idx)[1 + c_idx],
         _nl_=caml_check_bound(v,b_idx)[1 + b_idx],
         _nm_=caml_call2(Int64[23],_nl_,_nk_),
         _nn_=caml_call2(Int64[26],_nm_,24);
        caml_check_bound(v,b_idx)[1 + b_idx] = _nn_;
        var
         _no_=(2 * i | 0) + 1 | 0,
         _np_=
          caml_check_bound(caml_check_bound(sigma,r)[1 + r],_no_)[1 + _no_],
         _nq_=caml_check_bound(m,_np_)[1 + _np_],
         _nr_=caml_check_bound(v,b_idx)[1 + b_idx],
         _ns_=caml_check_bound(v,a_idx)[1 + a_idx],
         _nt_=caml_call2(Int64[24],_ns_,_nr_),
         _nu_=caml_call2(Int64[24],_nt_,_nq_);
        caml_check_bound(v,a_idx)[1 + a_idx] = _nu_;
        var
         _nv_=caml_check_bound(v,a_idx)[1 + a_idx],
         _nw_=caml_check_bound(v,d_idx)[1 + d_idx],
         _nx_=caml_call2(Int64[23],_nw_,_nv_),
         _ny_=caml_call2(Int64[26],_nx_,16);
        caml_check_bound(v,d_idx)[1 + d_idx] = _ny_;
        var
         _nz_=caml_check_bound(v,d_idx)[1 + d_idx],
         _nA_=caml_check_bound(v,c_idx)[1 + c_idx],
         _nB_=caml_call2(Int64[24],_nA_,_nz_);
        caml_check_bound(v,c_idx)[1 + c_idx] = _nB_;
        var
         _nC_=caml_check_bound(v,c_idx)[1 + c_idx],
         _nD_=caml_check_bound(v,b_idx)[1 + b_idx],
         _nE_=caml_call2(Int64[23],_nD_,_nC_),
         _nF_=caml_call2(Int64[26],_nE_,63);
        caml_check_bound(v,b_idx)[1 + b_idx] = _nF_;
        return 0}
      function r(r)
       {g(r,0,0,4,8,12);
        g(r,1,1,5,9,13);
        g(r,2,2,6,10,14);
        g(r,3,3,7,11,15);
        g(r,4,0,5,10,15);
        g(r,5,1,6,11,12);
        g(r,6,2,7,8,13);
        return g(r,7,3,4,9,14)}
      var i$1=0;
      for(;;)
       {var _m6_=caml_call2(le64_to_cpu,block,off + (i$1 * 8 | 0) | 0);
        caml_check_bound(m,i$1)[1 + i$1] = _m6_;
        var _m7_=i$1 + 1 | 0;
        if(15 !== i$1){var i$1=_m7_;continue}
        var i$0=0;
        for(;;)
         {var _m4_=caml_check_bound(ctx[5],i$0)[1 + i$0];
          caml_check_bound(v,i$0)[1 + i$0] = _m4_;
          var _m5_=i$0 + 1 | 0;
          if(7 !== i$0){var i$0=_m5_;continue}
          var _mH_=caml_check_bound(iv,0)[1];
          caml_check_bound(v,8)[9] = _mH_;
          var _mI_=caml_check_bound(iv,1)[2];
          caml_check_bound(v,9)[10] = _mI_;
          var _mJ_=caml_check_bound(iv,2)[3];
          caml_check_bound(v,10)[11] = _mJ_;
          var _mK_=caml_check_bound(iv,3)[4];
          caml_check_bound(v,11)[12] = _mK_;
          var
           _mL_=caml_check_bound(ctx[6],0)[1],
           _mM_=caml_check_bound(iv,4)[5],
           _mN_=caml_call2(Int64[23],_mM_,_mL_);
          caml_check_bound(v,12)[13] = _mN_;
          var
           _mO_=caml_check_bound(ctx[6],1)[2],
           _mP_=caml_check_bound(iv,5)[6],
           _mQ_=caml_call2(Int64[23],_mP_,_mO_);
          caml_check_bound(v,13)[14] = _mQ_;
          var
           _mR_=caml_check_bound(ctx[7],0)[1],
           _mS_=caml_check_bound(iv,6)[7],
           _mT_=caml_call2(Int64[23],_mS_,_mR_);
          caml_check_bound(v,14)[15] = _mT_;
          var
           _mU_=caml_check_bound(ctx[7],1)[2],
           _mV_=caml_check_bound(iv,7)[8],
           _mW_=caml_call2(Int64[23],_mV_,_mU_);
          caml_check_bound(v,15)[16] = _mW_;
          r(0);
          r(1);
          r(2);
          r(3);
          r(4);
          r(5);
          r(6);
          r(7);
          r(8);
          r(9);
          r(10);
          r(11);
          var i=0;
          for(;;)
           {var
             _mX_=i + 8 | 0,
             _mY_=caml_check_bound(v,_mX_)[1 + _mX_],
             _mZ_=caml_check_bound(v,i)[1 + i],
             _m0_=caml_check_bound(ctx[5],i)[1 + i],
             _m1_=caml_call2(Int64[23],_m0_,_mZ_),
             _m2_=caml_call2(Int64[23],_m1_,_mY_);
            caml_check_bound(ctx[5],i)[1 + i] = _m2_;
            var _m3_=i + 1 | 0;
            if(7 !== i){var i=_m3_;continue}
            return 0}}}}
    function feed(blit,le64_to_cpu,ctx,buf,off,len)
     {var in_off=[0,off],in_len=[0,len];
      if(0 < in_len[1])
       {var left=ctx[1],fill=128 - left | 0;
        if(fill < in_len[1])
         {ctx[1] = 0;
          caml_call5(blit,buf,in_off[1],ctx[4],left,fill);
          increment_counter(ctx,_D_);
          compress(le64_to_cpu$0,ctx,ctx[4],0);
          in_off[1] = in_off[1] + fill | 0;
          in_len[1] = in_len[1] - fill | 0;
          for(;;)
           {if(128 < in_len[1])
             {increment_counter(ctx,_E_);
              compress(le64_to_cpu,ctx,buf,in_off[1]);
              in_off[1] = in_off[1] + 128 | 0;
              in_len[1] = in_len[1] - 128 | 0;
              continue}
            break}}
        caml_call5(blit,buf,in_off[1],ctx[4],ctx[1],in_len[1]);
        ctx[1] = ctx[1] + in_len[1] | 0}
      return 0}
    function unsafe_feed_bytes(_mD_,_mE_,_mF_,_mG_)
     {return feed(blit,le64_to_cpu$0,_mD_,_mE_,_mF_,_mG_)}
    function unsafe_feed_bigstring(_mz_,_mA_,_mB_,_mC_)
     {return feed(blit_from_bigstring,le64_to_cpu,_mz_,_mA_,_mB_,_mC_)}
    function with_outlen_and_key(blit,outlen,key,off,len)
     {if(64 < outlen)caml_call2(failwith(_F_),max_outlen,outlen);
      var
       buf=caml_call2(make,128,0),
       ctx=
        [0,
         0,
         outlen,
         0,
         buf,
         caml_make_vect(8,_I_),
         caml_make_vect(2,_H_),
         caml_make_vect(2,_G_)],
       param_bytes=
        param_to_bytes
         ([0,
           outlen,
           len,
           default_param[3],
           default_param[4],
           default_param[5],
           default_param[6],
           default_param[7],
           default_param[8],
           default_param[9],
           default_param[10],
           default_param[11],
           default_param[12]]),
       i=0;
      for(;;)
       {var
         _mv_=le64_to_cpu$0(param_bytes,i * 8 | 0),
         _mw_=caml_check_bound(iv,i)[1 + i],
         _mx_=caml_call2(Int64[23],_mw_,_mv_);
        caml_check_bound(ctx[5],i)[1 + i] = _mx_;
        var _my_=i + 1 | 0;
        if(7 !== i){var i=_my_;continue}
        if(0 < len)
         {var block=caml_call2(make,128,0);
          caml_call5(blit,key,off,block,0,len);
          unsafe_feed_bytes(ctx,block,0,128)}
        return ctx}}
    function with_outlen_and_bytes_key(outlen,key,off,len)
     {return with_outlen_and_key(blit,outlen,key,off,len)}
    function with_outlen_and_bigstring_key(outlen,key,off,len)
     {return with_outlen_and_key(blit_from_bigstring,outlen,key,off,len)}
    function unsafe_get(ctx)
     {var res=caml_call2(make,default_param[1],0);
      increment_counter(ctx,caml_int64_of_int32(ctx[1]));
      if(0 !== ctx[3]){var _ms_=Int64[3];caml_check_bound(ctx[7],1)[2] = _ms_}
      var _mt_=Int64[3];
      caml_check_bound(ctx[7],0)[1] = _mt_;
      caml_call4(fill,ctx[4],ctx[1],128 - ctx[1] | 0,0);
      compress(le64_to_cpu$0,ctx,ctx[4],0);
      var i=0;
      for(;;)
       {cpu_to_le64$0(res,i * 8 | 0,caml_check_bound(ctx[5],i)[1 + i]);
        var _mu_=i + 1 | 0;
        if(7 !== i){var i=_mu_;continue}
        if(ctx[2] < default_param[1])return caml_call3(sub$0,res,0,ctx[2]);
        if(default_param[1] < ctx[2])throw [0,Assert_failure,_J_];
        return res}}
    var
     Unsafe=
      [0,
       init$1,
       with_outlen_and_bytes_key,
       with_outlen_and_bigstring_key,
       unsafe_feed_bytes,
       unsafe_feed_bigstring,
       unsafe_get,
       dup,
       max_outlen],
     Baijiu_blake2b=[0,failwith,Int32,Int64,Unsafe];
    caml_register_global(248,Baijiu_blake2b,"Baijiu_blake2b");
    function failwith$0(fmt)
     {return caml_call2(Stdlib_format[134],Stdlib[2],fmt)}
    var
     zero$2=Stdlib_int32[1],
     one$2=Stdlib_int32[2],
     minus_one$2=Stdlib_int32[3],
     unsigned_div$2=Stdlib_int32[4],
     unsigned_rem$2=Stdlib_int32[5],
     succ$2=Stdlib_int32[6],
     pred$2=Stdlib_int32[7],
     abs$2=Stdlib_int32[8],
     max_int$2=Stdlib_int32[9],
     min_int$2=Stdlib_int32[10],
     lognot$2=Stdlib_int32[11],
     unsigned_to_int$2=Stdlib_int32[12],
     of_string_opt$2=Stdlib_int32[13],
     to_string$4=Stdlib_int32[14],
     compare$3=Stdlib_int32[15],
     unsigned_compare$2=Stdlib_int32[16],
     equal$3=Stdlib_int32[17];
    function lsl$1(_mr_,_mq_){return _mr_ << _mq_}
    function lsr$1(_mp_,_mo_){return _mp_ >>> _mo_ | 0}
    function asr$1(_mn_,_mm_){return _mn_ >> _mm_}
    function lor$1(_ml_,_mk_){return _ml_ | _mk_}
    function lxor$2(_mj_,_mi_){return _mj_ ^ _mi_}
    function land$1(_mh_,_mg_){return _mh_ & _mg_}
    var lnot$0=Stdlib_int32[11];
    function symbol$1(_mf_,_me_){return _mf_ + _me_ | 0}
    function rol32$0(a,n){return a << n | a >>> (32 - n | 0) | 0}
    function ror32$0(a,n){return a >>> n | 0 | a << (32 - n | 0)}
    var
     Int32$0=
      [0,
       zero$2,
       one$2,
       minus_one$2,
       unsigned_div$2,
       unsigned_rem$2,
       succ$2,
       pred$2,
       abs$2,
       max_int$2,
       min_int$2,
       lognot$2,
       unsigned_to_int$2,
       of_string_opt$2,
       to_string$4,
       compare$3,
       unsigned_compare$2,
       equal$3,
       lsl$1,
       lsr$1,
       asr$1,
       lor$1,
       lxor$2,
       land$1,
       lnot$0,
       symbol$1,
       rol32$0,
       ror32$0],
     zero$3=Stdlib_int64[1],
     one$3=Stdlib_int64[2],
     minus_one$3=Stdlib_int64[3],
     unsigned_div$3=Stdlib_int64[4],
     unsigned_rem$3=Stdlib_int64[5],
     succ$3=Stdlib_int64[6],
     pred$3=Stdlib_int64[7],
     abs$3=Stdlib_int64[8],
     max_int$3=Stdlib_int64[9],
     min_int$3=Stdlib_int64[10],
     lognot$3=Stdlib_int64[11],
     unsigned_to_int$3=Stdlib_int64[12],
     of_string_opt$3=Stdlib_int64[13],
     to_string$5=Stdlib_int64[14],
     compare$4=Stdlib_int64[15],
     unsigned_compare$3=Stdlib_int64[16],
     equal$4=Stdlib_int64[17],
     land$2=caml_int64_and,
     lsl$2=caml_int64_shift_left,
     lsr$2=caml_int64_shift_right_unsigne,
     lor$2=caml_int64_or,
     asr$2=caml_int64_shift_right,
     lxor$3=caml_int64_xor,
     symbol$2=caml_int64_add;
    function rol64$0(a,n)
     {return caml_int64_or
              (caml_int64_shift_left(a,n),
               caml_int64_shift_right_unsigne(a,64 - n | 0))}
    function ror64$0(a,n)
     {return caml_int64_or
              (caml_int64_shift_right_unsigne(a,n),
               caml_int64_shift_left(a,64 - n | 0))}
    var
     Int64$0=
      [0,
       zero$3,
       one$3,
       minus_one$3,
       unsigned_div$3,
       unsigned_rem$3,
       succ$3,
       pred$3,
       abs$3,
       max_int$3,
       min_int$3,
       lognot$3,
       unsigned_to_int$3,
       of_string_opt$3,
       to_string$5,
       compare$4,
       unsigned_compare$3,
       equal$4,
       land$2,
       lsl$2,
       lsr$2,
       lor$2,
       asr$2,
       lxor$3,
       symbol$2,
       rol64$0,
       ror64$0];
    function dup$0(ctx)
     {var
       _ma_=caml_call1(Stdlib_array[8],ctx[7]),
       _mb_=caml_call1(Stdlib_array[8],ctx[6]),
       _mc_=caml_call1(Stdlib_array[8],ctx[5]),
       _md_=caml_call1(copy$0,ctx[4]);
      return [0,ctx[1],ctx[2],ctx[3],_md_,_mc_,_mb_,_ma_]}
    function param_to_bytes$0(param)
     {var
       _lC_=caml_check_bound(param[11],7)[8] & 255,
       _lD_=caml_check_bound(param[11],6)[7] & 255,
       _lE_=caml_check_bound(param[11],5)[6] & 255,
       _lF_=caml_check_bound(param[11],4)[5] & 255,
       _lG_=caml_check_bound(param[11],3)[4] & 255,
       _lH_=caml_check_bound(param[11],2)[3] & 255,
       _lI_=caml_check_bound(param[11],1)[2] & 255,
       _lJ_=caml_check_bound(param[11],0)[1] & 255,
       _lK_=caml_check_bound(param[10],7)[8] & 255,
       _lL_=caml_check_bound(param[10],6)[7] & 255,
       _lM_=caml_check_bound(param[10],5)[6] & 255,
       _lN_=caml_check_bound(param[10],4)[5] & 255,
       _lO_=caml_check_bound(param[10],3)[4] & 255,
       _lP_=caml_check_bound(param[10],2)[3] & 255,
       _lQ_=caml_check_bound(param[10],1)[2] & 255,
       _lR_=caml_check_bound(param[10],0)[1] & 255,
       _lS_=param[9] & 255,
       _lT_=param[8] & 255,
       _lU_=(param[7] >>> 8 | 0) & 255,
       _lV_=(param[7] >>> 0 | 0) & 255,
       _lW_=caml_call2(Int32$0[19],param[6],24),
       _lX_=caml_call2(Int32$0[23],_lW_,255),
       _lY_=caml_call2(Int32$0[19],param[6],16),
       _lZ_=caml_call2(Int32$0[23],_lY_,255),
       _l0_=caml_call2(Int32$0[19],param[6],8),
       _l1_=caml_call2(Int32$0[23],_l0_,255),
       _l2_=caml_call2(Int32$0[19],param[6],0),
       _l3_=caml_call2(Int32$0[23],_l2_,255),
       _l4_=caml_call2(Int32$0[19],param[5],24),
       _l5_=caml_call2(Int32$0[23],_l4_,255),
       _l6_=caml_call2(Int32$0[19],param[5],16),
       _l7_=caml_call2(Int32$0[23],_l6_,255),
       _l8_=caml_call2(Int32$0[19],param[5],8),
       _l9_=caml_call2(Int32$0[23],_l8_,255),
       _l__=caml_call2(Int32$0[19],param[5],0),
       _l$_=caml_call2(Int32$0[23],_l__,255),
       arr=
        [0,
         param[1] & 255,
         param[2] & 255,
         param[3] & 255,
         param[4] & 255,
         _l$_,
         _l9_,
         _l7_,
         _l5_,
         _l3_,
         _l1_,
         _lZ_,
         _lX_,
         _lV_,
         _lU_,
         _lT_,
         _lS_,
         _lR_,
         _lQ_,
         _lP_,
         _lO_,
         _lN_,
         _lM_,
         _lL_,
         _lK_,
         _lJ_,
         _lI_,
         _lH_,
         _lG_,
         _lF_,
         _lE_,
         _lD_,
         _lC_];
      return caml_call2
              (init$0,32,function(i){return caml_check_bound(arr,i)[1 + i]})}
    var
     default_param$0=[0,32,0,1,1,0,0,0,0,0,_L_.slice(),_K_.slice()],
     iv$0=_M_.slice(),
     max_outlen$0=32;
    function increment_counter$0(ctx,inc)
     {var
       _lx_=caml_check_bound(ctx[6],0)[1],
       _ly_=caml_call2(Int32$0[25],_lx_,inc);
      caml_check_bound(ctx[6],0)[1] = _ly_;
      var
       _lz_=caml_lessthan(caml_check_bound(ctx[6],0)[1],inc)?1:0,
       _lA_=caml_check_bound(ctx[6],1)[2],
       _lB_=caml_call2(Int32$0[25],_lA_,_lz_);
      caml_check_bound(ctx[6],1)[2] = _lB_;
      return 0}
    function init$2(param)
     {var
       buf=caml_call2(make,64,0),
       ctx=
        [0,
         0,
         default_param$0[1],
         0,
         buf,
         caml_make_vect(8,0),
         caml_make_vect(2,0),
         caml_make_vect(2,0)],
       param_bytes=param_to_bytes$0(default_param$0),
       i=0;
      for(;;)
       {var
         _lt_=le32_to_cpu$0(param_bytes,i * 4 | 0),
         _lu_=caml_check_bound(iv$0,i)[1 + i],
         _lv_=caml_call2(Int32$0[22],_lu_,_lt_);
        caml_check_bound(ctx[5],i)[1 + i] = _lv_;
        var _lw_=i + 1 | 0;
        if(7 !== i){var i=_lw_;continue}
        return ctx}}
    var
     sigma$0=
      [0,
       _W_.slice(),
       _V_.slice(),
       _U_.slice(),
       _T_.slice(),
       _S_.slice(),
       _R_.slice(),
       _Q_.slice(),
       _P_.slice(),
       _O_.slice(),
       _N_.slice()];
    function compress$0(le32_to_cpu,ctx,block,off)
     {var v=caml_make_vect(16,0),m=caml_make_vect(16,0);
      function g(r,i,a_idx,b_idx,c_idx,d_idx)
       {var
         _kV_=2 * i | 0 | 0,
         _kW_=
          caml_check_bound(caml_check_bound(sigma$0,r)[1 + r],_kV_)[1 + _kV_],
         _kX_=caml_check_bound(m,_kW_)[1 + _kW_],
         _kY_=caml_check_bound(v,b_idx)[1 + b_idx],
         _kZ_=caml_check_bound(v,a_idx)[1 + a_idx],
         _k0_=caml_call2(Int32$0[25],_kZ_,_kY_),
         _k1_=caml_call2(Int32$0[25],_k0_,_kX_);
        caml_check_bound(v,a_idx)[1 + a_idx] = _k1_;
        var
         _k2_=caml_check_bound(v,a_idx)[1 + a_idx],
         _k3_=caml_check_bound(v,d_idx)[1 + d_idx],
         _k4_=caml_call2(Int32$0[22],_k3_,_k2_),
         _k5_=caml_call2(Int32$0[27],_k4_,16);
        caml_check_bound(v,d_idx)[1 + d_idx] = _k5_;
        var
         _k6_=caml_check_bound(v,d_idx)[1 + d_idx],
         _k7_=caml_check_bound(v,c_idx)[1 + c_idx],
         _k8_=caml_call2(Int32$0[25],_k7_,_k6_);
        caml_check_bound(v,c_idx)[1 + c_idx] = _k8_;
        var
         _k9_=caml_check_bound(v,c_idx)[1 + c_idx],
         _k__=caml_check_bound(v,b_idx)[1 + b_idx],
         _k$_=caml_call2(Int32$0[22],_k__,_k9_),
         _la_=caml_call2(Int32$0[27],_k$_,12);
        caml_check_bound(v,b_idx)[1 + b_idx] = _la_;
        var
         _lb_=(2 * i | 0) + 1 | 0,
         _lc_=
          caml_check_bound(caml_check_bound(sigma$0,r)[1 + r],_lb_)[1 + _lb_],
         _ld_=caml_check_bound(m,_lc_)[1 + _lc_],
         _le_=caml_check_bound(v,b_idx)[1 + b_idx],
         _lf_=caml_check_bound(v,a_idx)[1 + a_idx],
         _lg_=caml_call2(Int32$0[25],_lf_,_le_),
         _lh_=caml_call2(Int32$0[25],_lg_,_ld_);
        caml_check_bound(v,a_idx)[1 + a_idx] = _lh_;
        var
         _li_=caml_check_bound(v,a_idx)[1 + a_idx],
         _lj_=caml_check_bound(v,d_idx)[1 + d_idx],
         _lk_=caml_call2(Int32$0[22],_lj_,_li_),
         _ll_=caml_call2(Int32$0[27],_lk_,8);
        caml_check_bound(v,d_idx)[1 + d_idx] = _ll_;
        var
         _lm_=caml_check_bound(v,d_idx)[1 + d_idx],
         _ln_=caml_check_bound(v,c_idx)[1 + c_idx],
         _lo_=caml_call2(Int32$0[25],_ln_,_lm_);
        caml_check_bound(v,c_idx)[1 + c_idx] = _lo_;
        var
         _lp_=caml_check_bound(v,c_idx)[1 + c_idx],
         _lq_=caml_check_bound(v,b_idx)[1 + b_idx],
         _lr_=caml_call2(Int32$0[22],_lq_,_lp_),
         _ls_=caml_call2(Int32$0[27],_lr_,7);
        caml_check_bound(v,b_idx)[1 + b_idx] = _ls_;
        return 0}
      function r(r)
       {g(r,0,0,4,8,12);
        g(r,1,1,5,9,13);
        g(r,2,2,6,10,14);
        g(r,3,3,7,11,15);
        g(r,4,0,5,10,15);
        g(r,5,1,6,11,12);
        g(r,6,2,7,8,13);
        return g(r,7,3,4,9,14)}
      var i$1=0;
      for(;;)
       {var _kT_=caml_call2(le32_to_cpu,block,off + (i$1 * 4 | 0) | 0);
        caml_check_bound(m,i$1)[1 + i$1] = _kT_;
        var _kU_=i$1 + 1 | 0;
        if(15 !== i$1){var i$1=_kU_;continue}
        var i$0=0;
        for(;;)
         {var _kR_=caml_check_bound(ctx[5],i$0)[1 + i$0];
          caml_check_bound(v,i$0)[1 + i$0] = _kR_;
          var _kS_=i$0 + 1 | 0;
          if(7 !== i$0){var i$0=_kS_;continue}
          var _ku_=caml_check_bound(iv$0,0)[1];
          caml_check_bound(v,8)[9] = _ku_;
          var _kv_=caml_check_bound(iv$0,1)[2];
          caml_check_bound(v,9)[10] = _kv_;
          var _kw_=caml_check_bound(iv$0,2)[3];
          caml_check_bound(v,10)[11] = _kw_;
          var _kx_=caml_check_bound(iv$0,3)[4];
          caml_check_bound(v,11)[12] = _kx_;
          var
           _ky_=caml_check_bound(ctx[6],0)[1],
           _kz_=caml_check_bound(iv$0,4)[5],
           _kA_=caml_call2(Int32$0[22],_kz_,_ky_);
          caml_check_bound(v,12)[13] = _kA_;
          var
           _kB_=caml_check_bound(ctx[6],1)[2],
           _kC_=caml_check_bound(iv$0,5)[6],
           _kD_=caml_call2(Int32$0[22],_kC_,_kB_);
          caml_check_bound(v,13)[14] = _kD_;
          var
           _kE_=caml_check_bound(ctx[7],0)[1],
           _kF_=caml_check_bound(iv$0,6)[7],
           _kG_=caml_call2(Int32$0[22],_kF_,_kE_);
          caml_check_bound(v,14)[15] = _kG_;
          var
           _kH_=caml_check_bound(ctx[7],1)[2],
           _kI_=caml_check_bound(iv$0,7)[8],
           _kJ_=caml_call2(Int32$0[22],_kI_,_kH_);
          caml_check_bound(v,15)[16] = _kJ_;
          r(0);
          r(1);
          r(2);
          r(3);
          r(4);
          r(5);
          r(6);
          r(7);
          r(8);
          r(9);
          var i=0;
          for(;;)
           {var
             _kK_=i + 8 | 0,
             _kL_=caml_check_bound(v,_kK_)[1 + _kK_],
             _kM_=caml_check_bound(v,i)[1 + i],
             _kN_=caml_check_bound(ctx[5],i)[1 + i],
             _kO_=caml_call2(Int32$0[22],_kN_,_kM_),
             _kP_=caml_call2(Int32$0[22],_kO_,_kL_);
            caml_check_bound(ctx[5],i)[1 + i] = _kP_;
            var _kQ_=i + 1 | 0;
            if(7 !== i){var i=_kQ_;continue}
            return 0}}}}
    function feed$0(blit,le32_to_cpu,ctx,buf,off,len)
     {var in_off=[0,off],in_len=[0,len];
      if(0 < in_len[1])
       {var left=ctx[1],fill=64 - left | 0;
        if(fill < in_len[1])
         {ctx[1] = 0;
          caml_call5(blit,buf,in_off[1],ctx[4],left,fill);
          increment_counter$0(ctx,64);
          compress$0(le32_to_cpu$0,ctx,ctx[4],0);
          in_off[1] = in_off[1] + fill | 0;
          in_len[1] = in_len[1] - fill | 0;
          for(;;)
           {if(64 < in_len[1])
             {increment_counter$0(ctx,64);
              compress$0(le32_to_cpu,ctx,buf,in_off[1]);
              in_off[1] = in_off[1] + 64 | 0;
              in_len[1] = in_len[1] - 64 | 0;
              continue}
            break}}
        caml_call5(blit,buf,in_off[1],ctx[4],ctx[1],in_len[1]);
        ctx[1] = ctx[1] + in_len[1] | 0}
      return 0}
    function unsafe_feed_bytes$0(_kq_,_kr_,_ks_,_kt_)
     {return feed$0(blit,le32_to_cpu$0,_kq_,_kr_,_ks_,_kt_)}
    function unsafe_feed_bigstring$0(_km_,_kn_,_ko_,_kp_)
     {return feed$0(blit_from_bigstring,le32_to_cpu,_km_,_kn_,_ko_,_kp_)}
    function with_outlen_and_key$0(blit,outlen,key,off,len)
     {if(32 < outlen)caml_call2(failwith$0(_X_),max_outlen$0,outlen);
      var
       buf=caml_call2(make,64,0),
       ctx=
        [0,
         0,
         outlen,
         0,
         buf,
         caml_make_vect(8,0),
         caml_make_vect(2,0),
         caml_make_vect(2,0)],
       param_bytes=
        param_to_bytes$0
         ([0,
           outlen,
           len,
           default_param$0[3],
           default_param$0[4],
           default_param$0[5],
           default_param$0[6],
           default_param$0[7],
           default_param$0[8],
           default_param$0[9],
           default_param$0[10],
           default_param$0[11]]),
       i=0;
      for(;;)
       {var
         _ki_=le32_to_cpu$0(param_bytes,i * 4 | 0),
         _kj_=caml_check_bound(iv$0,i)[1 + i],
         _kk_=caml_call2(Int32$0[22],_kj_,_ki_);
        caml_check_bound(ctx[5],i)[1 + i] = _kk_;
        var _kl_=i + 1 | 0;
        if(7 !== i){var i=_kl_;continue}
        if(0 < len)
         {var block=caml_call2(make,64,0);
          caml_call5(blit,key,off,block,0,len);
          unsafe_feed_bytes$0(ctx,block,0,64)}
        return ctx}}
    function with_outlen_and_bytes_key$0(outlen,key,off,len)
     {return with_outlen_and_key$0(blit,outlen,key,off,len)}
    function with_outlen_and_bigstring_key$0(outlen,key,off,len)
     {return with_outlen_and_key$0(blit_from_bigstring,outlen,key,off,len)}
    function unsafe_get$0(ctx)
     {var res=caml_call2(make,default_param$0[1],0);
      increment_counter$0(ctx,ctx[1]);
      if(0 !== ctx[3])
       {var _kf_=Int32$0[3];caml_check_bound(ctx[7],1)[2] = _kf_}
      var _kg_=Int32$0[3];
      caml_check_bound(ctx[7],0)[1] = _kg_;
      caml_call4(fill,ctx[4],ctx[1],64 - ctx[1] | 0,0);
      compress$0(le32_to_cpu$0,ctx,ctx[4],0);
      var i=0;
      for(;;)
       {cpu_to_le32$0(res,i * 4 | 0,caml_check_bound(ctx[5],i)[1 + i]);
        var _kh_=i + 1 | 0;
        if(7 !== i){var i=_kh_;continue}
        if(ctx[2] < default_param$0[1])return caml_call3(sub$0,res,0,ctx[2]);
        if(default_param$0[1] < ctx[2])throw [0,Assert_failure,_Y_];
        return res}}
    var
     Unsafe$0=
      [0,
       init$2,
       with_outlen_and_bytes_key$0,
       with_outlen_and_bigstring_key$0,
       unsafe_feed_bytes$0,
       unsafe_feed_bigstring$0,
       unsafe_get$0,
       dup$0,
       max_outlen$0],
     Baijiu_blake2s=[0,failwith$0,Int32$0,Int64$0,Unsafe$0];
    caml_register_global(249,Baijiu_blake2s,"Baijiu_blake2s");
    var
     zero$4=Stdlib_int32[1],
     one$4=Stdlib_int32[2],
     minus_one$4=Stdlib_int32[3],
     unsigned_div$4=Stdlib_int32[4],
     unsigned_rem$4=Stdlib_int32[5],
     succ$4=Stdlib_int32[6],
     pred$4=Stdlib_int32[7],
     abs$4=Stdlib_int32[8],
     max_int$4=Stdlib_int32[9],
     min_int$4=Stdlib_int32[10],
     lognot$4=Stdlib_int32[11],
     unsigned_to_int$4=Stdlib_int32[12],
     of_string_opt$4=Stdlib_int32[13],
     to_string$6=Stdlib_int32[14],
     compare$5=Stdlib_int32[15],
     unsigned_compare$4=Stdlib_int32[16],
     equal$5=Stdlib_int32[17];
    function lsl$3(_ke_,_kd_){return _ke_ << _kd_}
    function lsr$3(_kc_,_kb_){return _kc_ >>> _kb_ | 0}
    function asr$3(_ka_,_j$_){return _ka_ >> _j$_}
    function lor$3(_j__,_j9_){return _j__ | _j9_}
    function lxor$4(_j8_,_j7_){return _j8_ ^ _j7_}
    function land$3(_j6_,_j5_){return _j6_ & _j5_}
    var lnot$1=Stdlib_int32[11];
    function symbol$3(_j4_,_j3_){return _j4_ + _j3_ | 0}
    function rol32$1(a,n){return a << n | a >>> (32 - n | 0) | 0}
    function ror32$1(a,n){return a >>> n | 0 | a << (32 - n | 0)}
    var
     Int32$1=
      [0,
       zero$4,
       one$4,
       minus_one$4,
       unsigned_div$4,
       unsigned_rem$4,
       succ$4,
       pred$4,
       abs$4,
       max_int$4,
       min_int$4,
       lognot$4,
       unsigned_to_int$4,
       of_string_opt$4,
       to_string$6,
       compare$5,
       unsigned_compare$4,
       equal$5,
       lsl$3,
       lsr$3,
       asr$3,
       lor$3,
       lxor$4,
       land$3,
       lnot$1,
       symbol$3,
       rol32$1,
       ror32$1],
     zero$5=Stdlib_int64[1],
     one$5=Stdlib_int64[2],
     minus_one$5=Stdlib_int64[3],
     unsigned_div$5=Stdlib_int64[4],
     unsigned_rem$5=Stdlib_int64[5],
     succ$5=Stdlib_int64[6],
     pred$5=Stdlib_int64[7],
     abs$5=Stdlib_int64[8],
     max_int$5=Stdlib_int64[9],
     min_int$5=Stdlib_int64[10],
     lognot$5=Stdlib_int64[11],
     unsigned_to_int$5=Stdlib_int64[12],
     of_string_opt$5=Stdlib_int64[13],
     to_string$7=Stdlib_int64[14],
     compare$6=Stdlib_int64[15],
     unsigned_compare$5=Stdlib_int64[16],
     equal$6=Stdlib_int64[17],
     land$4=caml_int64_and,
     lsl$4=caml_int64_shift_left,
     Int64$1=
      [0,
       zero$5,
       one$5,
       minus_one$5,
       unsigned_div$5,
       unsigned_rem$5,
       succ$5,
       pred$5,
       abs$5,
       max_int$5,
       min_int$5,
       lognot$5,
       unsigned_to_int$5,
       of_string_opt$5,
       to_string$7,
       compare$6,
       unsigned_compare$5,
       equal$6,
       land$4,
       lsl$4];
    function dup$1(ctx)
     {var
       _j1_=caml_call1(Stdlib_array[8],ctx[3]),
       _j2_=caml_call1(copy$0,ctx[2]);
      return [0,ctx[1],_j2_,_j1_]}
    function init$3(param)
     {var b=caml_call2(make,64,0);
      return [0,_Z_,b,[0,1732584193,-271733879,-1732584194,271733878]]}
    function f1(x,y,z)
     {var
       _jZ_=caml_call2(Int32$1[22],y,z),
       _j0_=caml_call2(Int32$1[23],x,_jZ_);
      return caml_call2(Int32$1[22],z,_j0_)}
    function f2(x,y,z){return f1(z,x,y)}
    function f3(x,y,z)
     {var _jY_=caml_call2(Int32$1[22],x,y);
      return caml_call2(Int32$1[22],_jY_,z)}
    function f4(x,y,z)
     {var _jW_=caml_call1(Int32$1[24],z),_jX_=caml_call2(Int32$1[21],x,_jW_);
      return caml_call2(Int32$1[22],y,_jX_)}
    function md5_do_chunk(le32_to_cpu,ctx,buf,off)
     {var
       d=[0,caml_check_bound(ctx[3],3)[4]],
       c=[0,caml_check_bound(ctx[3],2)[3]],
       b=[0,caml_check_bound(ctx[3],1)[2]],
       a=[0,caml_check_bound(ctx[3],0)[1]],
       w=caml_make_vect(16,0),
       i=0;
      for(;;)
       {var _jQ_=caml_call2(le32_to_cpu,buf,off + (i * 4 | 0) | 0);
        caml_check_bound(w,i)[1 + i] = _jQ_;
        var _jR_=i + 1 | 0;
        if(15 !== i){var i=_jR_;continue}
        var
         round=
          function(f,a,b,c,d,i,k,s)
           {var
             _jS_=caml_check_bound(w,i)[1 + i],
             _jT_=caml_call3(f,b[1],c[1],d[1]),
             _jU_=caml_call2(Int32$1[25],a[1],_jT_),
             _jV_=caml_call2(Int32$1[25],_jU_,_jS_);
            a[1] = caml_call2(Int32$1[25],_jV_,k);
            a[1] = caml_call2(Int32$1[26],a[1],s);
            a[1] = caml_call2(Int32$1[25],a[1],b[1]);
            return 0};
        round(f1,a,b,c,d,0,-680876936,7);
        round(f1,d,a,b,c,1,-389564586,12);
        round(f1,c,d,a,b,2,606105819,17);
        round(f1,b,c,d,a,3,-1044525330,22);
        round(f1,a,b,c,d,4,-176418897,7);
        round(f1,d,a,b,c,5,1200080426,12);
        round(f1,c,d,a,b,6,-1473231341,17);
        round(f1,b,c,d,a,7,-45705983,22);
        round(f1,a,b,c,d,8,1770035416,7);
        round(f1,d,a,b,c,9,-1958414417,12);
        round(f1,c,d,a,b,10,-42063,17);
        round(f1,b,c,d,a,11,-1990404162,22);
        round(f1,a,b,c,d,12,1804603682,7);
        round(f1,d,a,b,c,13,-40341101,12);
        round(f1,c,d,a,b,14,-1502002290,17);
        round(f1,b,c,d,a,15,1236535329,22);
        round(f2,a,b,c,d,1,-165796510,5);
        round(f2,d,a,b,c,6,-1069501632,9);
        round(f2,c,d,a,b,11,643717713,14);
        round(f2,b,c,d,a,0,-373897302,20);
        round(f2,a,b,c,d,5,-701558691,5);
        round(f2,d,a,b,c,10,38016083,9);
        round(f2,c,d,a,b,15,-660478335,14);
        round(f2,b,c,d,a,4,-405537848,20);
        round(f2,a,b,c,d,9,568446438,5);
        round(f2,d,a,b,c,14,-1019803690,9);
        round(f2,c,d,a,b,3,-187363961,14);
        round(f2,b,c,d,a,8,1163531501,20);
        round(f2,a,b,c,d,13,-1444681467,5);
        round(f2,d,a,b,c,2,-51403784,9);
        round(f2,c,d,a,b,7,1735328473,14);
        round(f2,b,c,d,a,12,-1926607734,20);
        round(f3,a,b,c,d,5,-378558,4);
        round(f3,d,a,b,c,8,-2022574463,11);
        round(f3,c,d,a,b,11,1839030562,16);
        round(f3,b,c,d,a,14,-35309556,23);
        round(f3,a,b,c,d,1,-1530992060,4);
        round(f3,d,a,b,c,4,1272893353,11);
        round(f3,c,d,a,b,7,-155497632,16);
        round(f3,b,c,d,a,10,-1094730640,23);
        round(f3,a,b,c,d,13,681279174,4);
        round(f3,d,a,b,c,0,-358537222,11);
        round(f3,c,d,a,b,3,-722521979,16);
        round(f3,b,c,d,a,6,76029189,23);
        round(f3,a,b,c,d,9,-640364487,4);
        round(f3,d,a,b,c,12,-421815835,11);
        round(f3,c,d,a,b,15,530742520,16);
        round(f3,b,c,d,a,2,-995338651,23);
        round(f4,a,b,c,d,0,-198630844,6);
        round(f4,d,a,b,c,7,1126891415,10);
        round(f4,c,d,a,b,14,-1416354905,15);
        round(f4,b,c,d,a,5,-57434055,21);
        round(f4,a,b,c,d,12,1700485571,6);
        round(f4,d,a,b,c,3,-1894986606,10);
        round(f4,c,d,a,b,10,-1051523,15);
        round(f4,b,c,d,a,1,-2054922799,21);
        round(f4,a,b,c,d,8,1873313359,6);
        round(f4,d,a,b,c,15,-30611744,10);
        round(f4,c,d,a,b,6,-1560198380,15);
        round(f4,b,c,d,a,13,1309151649,21);
        round(f4,a,b,c,d,4,-145523070,6);
        round(f4,d,a,b,c,11,-1120210379,10);
        round(f4,c,d,a,b,2,718787259,15);
        round(f4,b,c,d,a,9,-343485551,21);
        var
         _jE_=a[1],
         _jF_=caml_check_bound(ctx[3],0)[1],
         _jG_=caml_call2(Int32$1[25],_jF_,_jE_);
        caml_check_bound(ctx[3],0)[1] = _jG_;
        var
         _jH_=b[1],
         _jI_=caml_check_bound(ctx[3],1)[2],
         _jJ_=caml_call2(Int32$1[25],_jI_,_jH_);
        caml_check_bound(ctx[3],1)[2] = _jJ_;
        var
         _jK_=c[1],
         _jL_=caml_check_bound(ctx[3],2)[3],
         _jM_=caml_call2(Int32$1[25],_jL_,_jK_);
        caml_check_bound(ctx[3],2)[3] = _jM_;
        var
         _jN_=d[1],
         _jO_=caml_check_bound(ctx[3],3)[4],
         _jP_=caml_call2(Int32$1[25],_jO_,_jN_);
        caml_check_bound(ctx[3],3)[4] = _jP_;
        return 0}}
    function feed$1(blit,le32_to_cpu,ctx,buf,off,len)
     {var
       idx=[0,caml_int64_to_int32(caml_call2(Int64$1[18],ctx[1],___))],
       len$0=[0,len],
       off$0=[0,off],
       to_fill=64 - idx[1] | 0;
      ctx[1] = caml_int64_add(ctx[1],caml_int64_of_int32(len$0[1]));
      var _jC_=0 !== idx[1]?1:0,_jD_=_jC_?to_fill <= len$0[1]?1:0:_jC_;
      if(_jD_)
       {caml_call5(blit,buf,off$0[1],ctx[2],idx[1],to_fill);
        md5_do_chunk(le32_to_cpu$0,ctx,ctx[2],0);
        len$0[1] = len$0[1] - to_fill | 0;
        off$0[1] = off$0[1] + to_fill | 0;
        idx[1] = 0}
      for(;;)
       {if(64 <= len$0[1])
         {md5_do_chunk(le32_to_cpu,ctx,buf,off$0[1]);
          len$0[1] = len$0[1] - 64 | 0;
          off$0[1] = off$0[1] + 64 | 0;
          continue}
        if(0 !== len$0[1])
         caml_call5(blit,buf,off$0[1],ctx[2],idx[1],len$0[1]);
        return 0}}
    function unsafe_feed_bytes$1(_jy_,_jz_,_jA_,_jB_)
     {return feed$1(blit,le32_to_cpu$0,_jy_,_jz_,_jA_,_jB_)}
    function unsafe_feed_bigstring$1(_ju_,_jv_,_jw_,_jx_)
     {return feed$1(blit_from_bigstring,le32_to_cpu,_ju_,_jv_,_jw_,_jx_)}
    function unsafe_get$1(ctx)
     {var
       index=caml_int64_to_int32(caml_call2(Int64$1[18],ctx[1],_$_)),
       padlen=56 <= index?120 - index | 0:56 - index | 0,
       padding=
        caml_call2(init$0,padlen,function(param){return 0 === param?128:0}),
       bits=caml_create_bytes(8);
      cpu_to_le64$0(bits,0,caml_call2(Int64$1[19],ctx[1],3));
      unsafe_feed_bytes$1(ctx,padding,0,padlen);
      unsafe_feed_bytes$1(ctx,bits,0,8);
      var res=caml_create_bytes(16),i=0;
      for(;;)
       {cpu_to_le32$0(res,i * 4 | 0,caml_check_bound(ctx[3],i)[1 + i]);
        var _jt_=i + 1 | 0;
        if(3 !== i){var i=_jt_;continue}
        return res}}
    var
     Unsafe$1=
      [0,
       init$3,
       unsafe_feed_bytes$1,
       unsafe_feed_bigstring$1,
       unsafe_get$1,
       dup$1],
     Baijiu_md5=[0,Int32$1,Int64$1,Unsafe$1];
    caml_register_global(250,Baijiu_md5,"Baijiu_md5");
    var
     zero$6=Stdlib_int32[1],
     one$6=Stdlib_int32[2],
     minus_one$6=Stdlib_int32[3],
     unsigned_div$6=Stdlib_int32[4],
     unsigned_rem$6=Stdlib_int32[5],
     succ$6=Stdlib_int32[6],
     pred$6=Stdlib_int32[7],
     abs$6=Stdlib_int32[8],
     max_int$6=Stdlib_int32[9],
     min_int$6=Stdlib_int32[10],
     lognot$6=Stdlib_int32[11],
     unsigned_to_int$6=Stdlib_int32[12],
     of_string_opt$6=Stdlib_int32[13],
     to_string$8=Stdlib_int32[14],
     compare$7=Stdlib_int32[15],
     unsigned_compare$6=Stdlib_int32[16],
     equal$7=Stdlib_int32[17];
    function lsl$5(_js_,_jr_){return _js_ << _jr_}
    function lsr$4(_jq_,_jp_){return _jq_ >>> _jp_ | 0}
    function asr$4(_jo_,_jn_){return _jo_ >> _jn_}
    function lor$4(_jm_,_jl_){return _jm_ | _jl_}
    function lxor$5(_jk_,_jj_){return _jk_ ^ _jj_}
    function land$5(_ji_,_jh_){return _ji_ & _jh_}
    var lnot$2=Stdlib_int32[11];
    function symbol$4(_jg_,_jf_){return _jg_ + _jf_ | 0}
    function rol32$2(a,n){return a << n | a >>> (32 - n | 0) | 0}
    function ror32$2(a,n){return a >>> n | 0 | a << (32 - n | 0)}
    var
     Int32$2=
      [0,
       zero$6,
       one$6,
       minus_one$6,
       unsigned_div$6,
       unsigned_rem$6,
       succ$6,
       pred$6,
       abs$6,
       max_int$6,
       min_int$6,
       lognot$6,
       unsigned_to_int$6,
       of_string_opt$6,
       to_string$8,
       compare$7,
       unsigned_compare$6,
       equal$7,
       lsl$5,
       lsr$4,
       asr$4,
       lor$4,
       lxor$5,
       land$5,
       lnot$2,
       symbol$4,
       rol32$2,
       ror32$2],
     zero$7=Stdlib_int64[1],
     one$7=Stdlib_int64[2],
     minus_one$7=Stdlib_int64[3],
     unsigned_div$7=Stdlib_int64[4],
     unsigned_rem$7=Stdlib_int64[5],
     succ$7=Stdlib_int64[6],
     pred$7=Stdlib_int64[7],
     abs$7=Stdlib_int64[8],
     max_int$7=Stdlib_int64[9],
     min_int$7=Stdlib_int64[10],
     lognot$7=Stdlib_int64[11],
     unsigned_to_int$7=Stdlib_int64[12],
     of_string_opt$7=Stdlib_int64[13],
     to_string$9=Stdlib_int64[14],
     compare$8=Stdlib_int64[15],
     unsigned_compare$7=Stdlib_int64[16],
     equal$8=Stdlib_int64[17],
     land$6=caml_int64_and,
     lsl$6=caml_int64_shift_left,
     Int64$2=
      [0,
       zero$7,
       one$7,
       minus_one$7,
       unsigned_div$7,
       unsigned_rem$7,
       succ$7,
       pred$7,
       abs$7,
       max_int$7,
       min_int$7,
       lognot$7,
       unsigned_to_int$7,
       of_string_opt$7,
       to_string$9,
       compare$8,
       unsigned_compare$7,
       equal$8,
       land$6,
       lsl$6];
    function dup$2(ctx)
     {var
       _jc_=caml_call1(copy$0,ctx[4]),
       _jd_=caml_call1(Stdlib_array[8],ctx[3]),
       _je_=ctx[2];
      return [0,caml_call1(Stdlib_array[8],ctx[1]),_je_,_jd_,_jc_]}
    function init$4(param)
     {var b=caml_call2(make,64,0);return [0,[0,0,0],0,_aa_.slice(),b]}
    function f(x,y,z)
     {var _jb_=caml_call2(Int32$2[22],x,y);
      return caml_call2(Int32$2[22],_jb_,z)}
    function g(x,y,z)
     {var
       _i__=caml_call1(Int32$2[24],x),
       _i$_=caml_call2(Int32$2[23],_i__,z),
       _ja_=caml_call2(Int32$2[23],x,y);
      return caml_call2(Int32$2[21],_ja_,_i$_)}
    function h(x,y,z)
     {var _i8_=caml_call1(Int32$2[24],y),_i9_=caml_call2(Int32$2[21],x,_i8_);
      return caml_call2(Int32$2[22],_i9_,z)}
    function i(x,y,z)
     {var
       _i5_=caml_call1(Int32$2[24],z),
       _i6_=caml_call2(Int32$2[23],y,_i5_),
       _i7_=caml_call2(Int32$2[23],x,z);
      return caml_call2(Int32$2[21],_i7_,_i6_)}
    function j(x,y,z)
     {var _i3_=caml_call1(Int32$2[24],z),_i4_=caml_call2(Int32$2[21],y,_i3_);
      return caml_call2(Int32$2[22],x,_i4_)}
    function ff(a,b,c,d,e,x,s)
     {var _iZ_=f(b[1],c[1],d[1]),_i0_=caml_call2(Int32$2[25],a[1],_iZ_);
      a[1] = caml_call2(Int32$2[25],_i0_,x);
      var _i1_=e[1],_i2_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_i2_,_i1_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function gg(a,b,c,d,e,x,s)
     {var
       _iU_=g(b[1],c[1],d[1]),
       _iV_=caml_call2(Int32$2[25],a[1],_iU_),
       _iW_=caml_call2(Int32$2[25],_iV_,x);
      a[1] = caml_call2(Int32$2[25],_iW_,1518500249);
      var _iX_=e[1],_iY_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_iY_,_iX_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function hh(a,b,c,d,e,x,s)
     {var
       _iP_=h(b[1],c[1],d[1]),
       _iQ_=caml_call2(Int32$2[25],a[1],_iP_),
       _iR_=caml_call2(Int32$2[25],_iQ_,x);
      a[1] = caml_call2(Int32$2[25],_iR_,1859775393);
      var _iS_=e[1],_iT_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_iT_,_iS_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function ii(a,b,c,d,e,x,s)
     {var
       _iK_=i(b[1],c[1],d[1]),
       _iL_=caml_call2(Int32$2[25],a[1],_iK_),
       _iM_=caml_call2(Int32$2[25],_iL_,x);
      a[1] = caml_call2(Int32$2[25],_iM_,-1894007588);
      var _iN_=e[1],_iO_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_iO_,_iN_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function jj(a,b,c,d,e,x,s)
     {var
       _iF_=j(b[1],c[1],d[1]),
       _iG_=caml_call2(Int32$2[25],a[1],_iF_),
       _iH_=caml_call2(Int32$2[25],_iG_,x);
      a[1] = caml_call2(Int32$2[25],_iH_,-1454113458);
      var _iI_=e[1],_iJ_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_iJ_,_iI_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function fff(a,b,c,d,e,x,s)
     {var _iB_=f(b[1],c[1],d[1]),_iC_=caml_call2(Int32$2[25],a[1],_iB_);
      a[1] = caml_call2(Int32$2[25],_iC_,x);
      var _iD_=e[1],_iE_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_iE_,_iD_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function ggg(a,b,c,d,e,x,s)
     {var
       _iw_=g(b[1],c[1],d[1]),
       _ix_=caml_call2(Int32$2[25],a[1],_iw_),
       _iy_=caml_call2(Int32$2[25],_ix_,x);
      a[1] = caml_call2(Int32$2[25],_iy_,2053994217);
      var _iz_=e[1],_iA_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_iA_,_iz_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function hhh(a,b,c,d,e,x,s)
     {var
       _ir_=h(b[1],c[1],d[1]),
       _is_=caml_call2(Int32$2[25],a[1],_ir_),
       _it_=caml_call2(Int32$2[25],_is_,x);
      a[1] = caml_call2(Int32$2[25],_it_,1836072691);
      var _iu_=e[1],_iv_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_iv_,_iu_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function iii(a,b,c,d,e,x,s)
     {var
       _im_=i(b[1],c[1],d[1]),
       _in_=caml_call2(Int32$2[25],a[1],_im_),
       _io_=caml_call2(Int32$2[25],_in_,x);
      a[1] = caml_call2(Int32$2[25],_io_,1548603684);
      var _ip_=e[1],_iq_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_iq_,_ip_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function jjj(a,b,c,d,e,x,s)
     {var
       _ih_=j(b[1],c[1],d[1]),
       _ii_=caml_call2(Int32$2[25],a[1],_ih_),
       _ij_=caml_call2(Int32$2[25],_ii_,x);
      a[1] = caml_call2(Int32$2[25],_ij_,1352829926);
      var _ik_=e[1],_il_=caml_call2(Int32$2[26],a[1],s);
      a[1] = caml_call2(Int32$2[25],_il_,_ik_);
      c[1] = caml_call2(Int32$2[26],c[1],10);
      return 0}
    function rmd160_do_chunk(le32_to_cpu,ctx,buff,off)
     {var
       eee=[0,caml_check_bound(ctx[3],4)[5]],
       ddd=[0,caml_check_bound(ctx[3],3)[4]],
       ccc=[0,caml_check_bound(ctx[3],2)[3]],
       bbb=[0,caml_check_bound(ctx[3],1)[2]],
       aaa=[0,caml_check_bound(ctx[3],0)[1]],
       ee=[0,caml_check_bound(ctx[3],4)[5]],
       dd=[0,caml_check_bound(ctx[3],3)[4]],
       cc=[0,caml_check_bound(ctx[3],2)[3]],
       bb=[0,caml_check_bound(ctx[3],1)[2]],
       aa=[0,caml_check_bound(ctx[3],0)[1]],
       w=caml_make_vect(16,0),
       i=0;
      for(;;)
       {var _if_=caml_call2(le32_to_cpu,buff,off + (i * 4 | 0) | 0);
        caml_check_bound(w,i)[1 + i] = _if_;
        var _ig_=i + 1 | 0;
        if(15 !== i){var i=_ig_;continue}
        ff(aa,bb,cc,dd,ee,caml_check_bound(w,0)[1],11);
        ff(ee,aa,bb,cc,dd,caml_check_bound(w,1)[2],14);
        ff(dd,ee,aa,bb,cc,caml_check_bound(w,2)[3],15);
        ff(cc,dd,ee,aa,bb,caml_check_bound(w,3)[4],12);
        ff(bb,cc,dd,ee,aa,caml_check_bound(w,4)[5],5);
        ff(aa,bb,cc,dd,ee,caml_check_bound(w,5)[6],8);
        ff(ee,aa,bb,cc,dd,caml_check_bound(w,6)[7],7);
        ff(dd,ee,aa,bb,cc,caml_check_bound(w,7)[8],9);
        ff(cc,dd,ee,aa,bb,caml_check_bound(w,8)[9],11);
        ff(bb,cc,dd,ee,aa,caml_check_bound(w,9)[10],13);
        ff(aa,bb,cc,dd,ee,caml_check_bound(w,10)[11],14);
        ff(ee,aa,bb,cc,dd,caml_check_bound(w,11)[12],15);
        ff(dd,ee,aa,bb,cc,caml_check_bound(w,12)[13],6);
        ff(cc,dd,ee,aa,bb,caml_check_bound(w,13)[14],7);
        ff(bb,cc,dd,ee,aa,caml_check_bound(w,14)[15],9);
        ff(aa,bb,cc,dd,ee,caml_check_bound(w,15)[16],8);
        gg(ee,aa,bb,cc,dd,caml_check_bound(w,7)[8],7);
        gg(dd,ee,aa,bb,cc,caml_check_bound(w,4)[5],6);
        gg(cc,dd,ee,aa,bb,caml_check_bound(w,13)[14],8);
        gg(bb,cc,dd,ee,aa,caml_check_bound(w,1)[2],13);
        gg(aa,bb,cc,dd,ee,caml_check_bound(w,10)[11],11);
        gg(ee,aa,bb,cc,dd,caml_check_bound(w,6)[7],9);
        gg(dd,ee,aa,bb,cc,caml_check_bound(w,15)[16],7);
        gg(cc,dd,ee,aa,bb,caml_check_bound(w,3)[4],15);
        gg(bb,cc,dd,ee,aa,caml_check_bound(w,12)[13],7);
        gg(aa,bb,cc,dd,ee,caml_check_bound(w,0)[1],12);
        gg(ee,aa,bb,cc,dd,caml_check_bound(w,9)[10],15);
        gg(dd,ee,aa,bb,cc,caml_check_bound(w,5)[6],9);
        gg(cc,dd,ee,aa,bb,caml_check_bound(w,2)[3],11);
        gg(bb,cc,dd,ee,aa,caml_check_bound(w,14)[15],7);
        gg(aa,bb,cc,dd,ee,caml_check_bound(w,11)[12],13);
        gg(ee,aa,bb,cc,dd,caml_check_bound(w,8)[9],12);
        hh(dd,ee,aa,bb,cc,caml_check_bound(w,3)[4],11);
        hh(cc,dd,ee,aa,bb,caml_check_bound(w,10)[11],13);
        hh(bb,cc,dd,ee,aa,caml_check_bound(w,14)[15],6);
        hh(aa,bb,cc,dd,ee,caml_check_bound(w,4)[5],7);
        hh(ee,aa,bb,cc,dd,caml_check_bound(w,9)[10],14);
        hh(dd,ee,aa,bb,cc,caml_check_bound(w,15)[16],9);
        hh(cc,dd,ee,aa,bb,caml_check_bound(w,8)[9],13);
        hh(bb,cc,dd,ee,aa,caml_check_bound(w,1)[2],15);
        hh(aa,bb,cc,dd,ee,caml_check_bound(w,2)[3],14);
        hh(ee,aa,bb,cc,dd,caml_check_bound(w,7)[8],8);
        hh(dd,ee,aa,bb,cc,caml_check_bound(w,0)[1],13);
        hh(cc,dd,ee,aa,bb,caml_check_bound(w,6)[7],6);
        hh(bb,cc,dd,ee,aa,caml_check_bound(w,13)[14],5);
        hh(aa,bb,cc,dd,ee,caml_check_bound(w,11)[12],12);
        hh(ee,aa,bb,cc,dd,caml_check_bound(w,5)[6],7);
        hh(dd,ee,aa,bb,cc,caml_check_bound(w,12)[13],5);
        ii(cc,dd,ee,aa,bb,caml_check_bound(w,1)[2],11);
        ii(bb,cc,dd,ee,aa,caml_check_bound(w,9)[10],12);
        ii(aa,bb,cc,dd,ee,caml_check_bound(w,11)[12],14);
        ii(ee,aa,bb,cc,dd,caml_check_bound(w,10)[11],15);
        ii(dd,ee,aa,bb,cc,caml_check_bound(w,0)[1],14);
        ii(cc,dd,ee,aa,bb,caml_check_bound(w,8)[9],15);
        ii(bb,cc,dd,ee,aa,caml_check_bound(w,12)[13],9);
        ii(aa,bb,cc,dd,ee,caml_check_bound(w,4)[5],8);
        ii(ee,aa,bb,cc,dd,caml_check_bound(w,13)[14],9);
        ii(dd,ee,aa,bb,cc,caml_check_bound(w,3)[4],14);
        ii(cc,dd,ee,aa,bb,caml_check_bound(w,7)[8],5);
        ii(bb,cc,dd,ee,aa,caml_check_bound(w,15)[16],6);
        ii(aa,bb,cc,dd,ee,caml_check_bound(w,14)[15],8);
        ii(ee,aa,bb,cc,dd,caml_check_bound(w,5)[6],6);
        ii(dd,ee,aa,bb,cc,caml_check_bound(w,6)[7],5);
        ii(cc,dd,ee,aa,bb,caml_check_bound(w,2)[3],12);
        jj(bb,cc,dd,ee,aa,caml_check_bound(w,4)[5],9);
        jj(aa,bb,cc,dd,ee,caml_check_bound(w,0)[1],15);
        jj(ee,aa,bb,cc,dd,caml_check_bound(w,5)[6],5);
        jj(dd,ee,aa,bb,cc,caml_check_bound(w,9)[10],11);
        jj(cc,dd,ee,aa,bb,caml_check_bound(w,7)[8],6);
        jj(bb,cc,dd,ee,aa,caml_check_bound(w,12)[13],8);
        jj(aa,bb,cc,dd,ee,caml_check_bound(w,2)[3],13);
        jj(ee,aa,bb,cc,dd,caml_check_bound(w,10)[11],12);
        jj(dd,ee,aa,bb,cc,caml_check_bound(w,14)[15],5);
        jj(cc,dd,ee,aa,bb,caml_check_bound(w,1)[2],12);
        jj(bb,cc,dd,ee,aa,caml_check_bound(w,3)[4],13);
        jj(aa,bb,cc,dd,ee,caml_check_bound(w,8)[9],14);
        jj(ee,aa,bb,cc,dd,caml_check_bound(w,11)[12],11);
        jj(dd,ee,aa,bb,cc,caml_check_bound(w,6)[7],8);
        jj(cc,dd,ee,aa,bb,caml_check_bound(w,15)[16],5);
        jj(bb,cc,dd,ee,aa,caml_check_bound(w,13)[14],6);
        jjj(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,5)[6],8);
        jjj(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,14)[15],9);
        jjj(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,7)[8],9);
        jjj(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,0)[1],11);
        jjj(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,9)[10],13);
        jjj(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,2)[3],15);
        jjj(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,11)[12],15);
        jjj(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,4)[5],5);
        jjj(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,13)[14],7);
        jjj(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,6)[7],7);
        jjj(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,15)[16],8);
        jjj(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,8)[9],11);
        jjj(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,1)[2],14);
        jjj(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,10)[11],14);
        jjj(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,3)[4],12);
        jjj(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,12)[13],6);
        iii(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,6)[7],9);
        iii(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,11)[12],13);
        iii(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,3)[4],15);
        iii(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,7)[8],7);
        iii(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,0)[1],12);
        iii(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,13)[14],8);
        iii(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,5)[6],9);
        iii(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,10)[11],11);
        iii(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,14)[15],7);
        iii(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,15)[16],7);
        iii(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,8)[9],12);
        iii(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,12)[13],7);
        iii(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,4)[5],6);
        iii(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,9)[10],15);
        iii(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,1)[2],13);
        iii(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,2)[3],11);
        hhh(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,15)[16],9);
        hhh(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,5)[6],7);
        hhh(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,1)[2],15);
        hhh(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,3)[4],11);
        hhh(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,7)[8],8);
        hhh(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,14)[15],6);
        hhh(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,6)[7],6);
        hhh(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,9)[10],14);
        hhh(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,11)[12],12);
        hhh(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,8)[9],13);
        hhh(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,12)[13],5);
        hhh(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,2)[3],14);
        hhh(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,10)[11],13);
        hhh(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,0)[1],13);
        hhh(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,4)[5],7);
        hhh(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,13)[14],5);
        ggg(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,8)[9],15);
        ggg(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,6)[7],5);
        ggg(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,4)[5],8);
        ggg(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,1)[2],11);
        ggg(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,3)[4],14);
        ggg(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,11)[12],14);
        ggg(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,15)[16],6);
        ggg(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,0)[1],14);
        ggg(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,5)[6],6);
        ggg(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,12)[13],9);
        ggg(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,2)[3],12);
        ggg(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,13)[14],9);
        ggg(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,9)[10],12);
        ggg(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,7)[8],5);
        ggg(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,10)[11],15);
        ggg(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,14)[15],8);
        fff(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,12)[13],8);
        fff(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,15)[16],5);
        fff(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,10)[11],12);
        fff(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,4)[5],9);
        fff(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,1)[2],12);
        fff(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,5)[6],5);
        fff(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,8)[9],14);
        fff(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,7)[8],6);
        fff(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,6)[7],8);
        fff(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,2)[3],13);
        fff(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,13)[14],6);
        fff(aaa,bbb,ccc,ddd,eee,caml_check_bound(w,14)[15],5);
        fff(eee,aaa,bbb,ccc,ddd,caml_check_bound(w,0)[1],15);
        fff(ddd,eee,aaa,bbb,ccc,caml_check_bound(w,3)[4],13);
        fff(ccc,ddd,eee,aaa,bbb,caml_check_bound(w,9)[10],11);
        fff(bbb,ccc,ddd,eee,aaa,caml_check_bound(w,11)[12],11);
        var
         _hU_=caml_check_bound(ctx[3],1)[2],
         _hV_=caml_call2(Int32$2[25],ddd[1],cc[1]);
        ddd[1] = caml_call2(Int32$2[25],_hV_,_hU_);
        var
         _hW_=eee[1],
         _hX_=dd[1],
         _hY_=caml_check_bound(ctx[3],2)[3],
         _hZ_=caml_call2(Int32$2[25],_hY_,_hX_),
         _h0_=caml_call2(Int32$2[25],_hZ_,_hW_);
        caml_check_bound(ctx[3],1)[2] = _h0_;
        var
         _h1_=aaa[1],
         _h2_=ee[1],
         _h3_=caml_check_bound(ctx[3],3)[4],
         _h4_=caml_call2(Int32$2[25],_h3_,_h2_),
         _h5_=caml_call2(Int32$2[25],_h4_,_h1_);
        caml_check_bound(ctx[3],2)[3] = _h5_;
        var
         _h6_=bbb[1],
         _h7_=aa[1],
         _h8_=caml_check_bound(ctx[3],4)[5],
         _h9_=caml_call2(Int32$2[25],_h8_,_h7_),
         _h__=caml_call2(Int32$2[25],_h9_,_h6_);
        caml_check_bound(ctx[3],3)[4] = _h__;
        var
         _h$_=ccc[1],
         _ia_=bb[1],
         _ib_=caml_check_bound(ctx[3],0)[1],
         _ic_=caml_call2(Int32$2[25],_ib_,_ia_),
         _id_=caml_call2(Int32$2[25],_ic_,_h$_);
        caml_check_bound(ctx[3],4)[5] = _id_;
        var _ie_=ddd[1];
        caml_check_bound(ctx[3],0)[1] = _ie_;
        return 0}}
    var
     Leave=
      [248,cst_Baijiu_rmd160_Unsafe_Leave,runtime.caml_fresh_oo_id(0)];
    function feed$2(le32_to_cpu,blit,ctx,buf,off,len)
     {var
       _hM_=caml_check_bound(ctx[1],0)[1],
       off$0=[0,off],
       len$0=[0,len],
       _hN_=_hM_ + (len$0[1] << 3) | 0;
      caml_check_bound(ctx[1],0)[1] = _hN_;
      if(caml_lessthan(caml_check_bound(ctx[1],0)[1],_hM_))
       {var
         _hO_=caml_check_bound(ctx[1],1)[2],
         _hP_=caml_call2(Int32$2[25],_hO_,1);
        caml_check_bound(ctx[1],1)[2] = _hP_}
      var
       _hQ_=len$0[1] >>> 29 | 0,
       _hR_=caml_check_bound(ctx[1],1)[2] + _hQ_ | 0;
      caml_check_bound(ctx[1],1)[2] = _hR_;
      try
       {if(0 !== ctx[2])
         {var t=64 - ctx[2] | 0;
          if(len$0[1] < t)
           {caml_call5(blit,buf,off$0[1],ctx[4],ctx[2],len$0[1]);
            ctx[2] = ctx[2] + len$0[1] | 0;
            throw Leave}
          caml_call5(blit,buf,off$0[1],ctx[4],ctx[2],t);
          rmd160_do_chunk(le32_to_cpu$0,ctx,ctx[4],0);
          off$0[1] = off$0[1] + t | 0;
          len$0[1] = len$0[1] - t | 0}
        for(;;)
         {if(64 <= len$0[1])
           {rmd160_do_chunk(le32_to_cpu,ctx,buf,off$0[1]);
            off$0[1] = off$0[1] + 64 | 0;
            len$0[1] = len$0[1] - 64 | 0;
            continue}
          caml_call5(blit,buf,off$0[1],ctx[4],0,len$0[1]);
          ctx[2] = len$0[1];
          var _hS_=0;
          return _hS_}}
      catch(_hT_)
       {_hT_ = caml_wrap_exception(_hT_);
        if(_hT_ === Leave)return 0;
        throw _hT_}}
    function unsafe_feed_bytes$2(ctx,buf,off,len)
     {return feed$2(le32_to_cpu$0,blit,ctx,buf,off,len)}
    function unsafe_feed_bigstring$2(ctx,buf,off,len)
     {return feed$2(le32_to_cpu,blit_from_bigstring,ctx,buf,off,len)}
    function unsafe_get$2(ctx)
     {var i=[0,ctx[2] + 1 | 0],res=caml_create_bytes(20);
      caml_bytes_set(ctx[4],ctx[2],128);
      if(56 < i[1])
       {caml_call4(fill,ctx[4],i[1],64 - i[1] | 0,0);
        rmd160_do_chunk(le32_to_cpu$0,ctx,ctx[4],0);
        i[1] = 0}
      caml_call4(fill,ctx[4],i[1],56 - i[1] | 0,0);
      var _hJ_=caml_check_bound(ctx[1],0)[1];
      cpu_to_le32$0(ctx[4],56,_hJ_);
      var _hK_=caml_check_bound(ctx[1],1)[2];
      cpu_to_le32$0(ctx[4],60,_hK_);
      rmd160_do_chunk(le32_to_cpu$0,ctx,ctx[4],0);
      var i$0=0;
      for(;;)
       {cpu_to_le32$0(res,i$0 * 4 | 0,caml_check_bound(ctx[3],i$0)[1 + i$0]);
        var _hL_=i$0 + 1 | 0;
        if(4 !== i$0){var i$0=_hL_;continue}
        return res}}
    var
     Unsafe$2=
      [0,
       init$4,
       unsafe_feed_bytes$2,
       unsafe_feed_bigstring$2,
       unsafe_get$2,
       dup$2],
     Baijiu_rmd160=[0,Int32$2,Int64$2,Unsafe$2];
    caml_register_global(251,Baijiu_rmd160,"Baijiu_rmd160");
    var
     zero$8=Stdlib_int32[1],
     one$8=Stdlib_int32[2],
     minus_one$8=Stdlib_int32[3],
     unsigned_div$8=Stdlib_int32[4],
     unsigned_rem$8=Stdlib_int32[5],
     succ$8=Stdlib_int32[6],
     pred$8=Stdlib_int32[7],
     abs$8=Stdlib_int32[8],
     max_int$8=Stdlib_int32[9],
     min_int$8=Stdlib_int32[10],
     lognot$8=Stdlib_int32[11],
     unsigned_to_int$8=Stdlib_int32[12],
     of_string_opt$8=Stdlib_int32[13],
     to_string$10=Stdlib_int32[14],
     compare$9=Stdlib_int32[15],
     unsigned_compare$8=Stdlib_int32[16],
     equal$9=Stdlib_int32[17];
    function lsl$7(_hI_,_hH_){return _hI_ << _hH_}
    function lsr$5(_hG_,_hF_){return _hG_ >>> _hF_ | 0}
    function asr$5(_hE_,_hD_){return _hE_ >> _hD_}
    function lor$5(_hC_,_hB_){return _hC_ | _hB_}
    function lxor$6(_hA_,_hz_){return _hA_ ^ _hz_}
    function land$7(_hy_,_hx_){return _hy_ & _hx_}
    function symbol$5(_hw_,_hv_){return _hw_ + _hv_ | 0}
    function rol32$3(a,n){return a << n | a >>> (32 - n | 0) | 0}
    var
     Int32$3=
      [0,
       zero$8,
       one$8,
       minus_one$8,
       unsigned_div$8,
       unsigned_rem$8,
       succ$8,
       pred$8,
       abs$8,
       max_int$8,
       min_int$8,
       lognot$8,
       unsigned_to_int$8,
       of_string_opt$8,
       to_string$10,
       compare$9,
       unsigned_compare$8,
       equal$9,
       lsl$7,
       lsr$5,
       asr$5,
       lor$5,
       lxor$6,
       land$7,
       symbol$5,
       rol32$3],
     zero$9=Stdlib_int64[1],
     one$9=Stdlib_int64[2],
     minus_one$9=Stdlib_int64[3],
     unsigned_div$9=Stdlib_int64[4],
     unsigned_rem$9=Stdlib_int64[5],
     succ$9=Stdlib_int64[6],
     pred$9=Stdlib_int64[7],
     abs$9=Stdlib_int64[8],
     max_int$9=Stdlib_int64[9],
     min_int$9=Stdlib_int64[10],
     lognot$9=Stdlib_int64[11],
     unsigned_to_int$9=Stdlib_int64[12],
     of_string_opt$9=Stdlib_int64[13],
     to_string$11=Stdlib_int64[14],
     compare$10=Stdlib_int64[15],
     unsigned_compare$9=Stdlib_int64[16],
     equal$10=Stdlib_int64[17],
     land$8=caml_int64_and,
     lsl$8=caml_int64_shift_left,
     Int64$3=
      [0,
       zero$9,
       one$9,
       minus_one$9,
       unsigned_div$9,
       unsigned_rem$9,
       succ$9,
       pred$9,
       abs$9,
       max_int$9,
       min_int$9,
       lognot$9,
       unsigned_to_int$9,
       of_string_opt$9,
       to_string$11,
       compare$10,
       unsigned_compare$9,
       equal$10,
       land$8,
       lsl$8];
    function dup$3(ctx)
     {var
       _ht_=caml_call1(Stdlib_array[8],ctx[3]),
       _hu_=caml_call1(copy$0,ctx[2]);
      return [0,ctx[1],_hu_,_ht_]}
    function init$5(param)
     {var b=caml_call2(make,64,0);return [0,_ac_,b,_ab_.slice()]}
    function f1$0(x,y,z)
     {var
       _hr_=caml_call2(Int32$3[22],y,z),
       _hs_=caml_call2(Int32$3[23],x,_hr_);
      return caml_call2(Int32$3[22],z,_hs_)}
    function f4$0(x,y,z)
     {var _hq_=caml_call2(Int32$3[22],x,y);
      return caml_call2(Int32$3[22],_hq_,z)}
    function f3$0(x,y,z)
     {var
       _hn_=caml_call2(Int32$3[22],x,y),
       _ho_=caml_call2(Int32$3[23],z,_hn_),
       _hp_=caml_call2(Int32$3[23],x,y);
      return caml_call2(Int32$3[24],_hp_,_ho_)}
    var k1=1518500249,k2=1859775393,k3=-1894007588,k4=-899497514;
    function sha1_do_chunk(be32_to_cpu,ctx,buf,off)
     {var
       a=[0,caml_check_bound(ctx[3],0)[1]],
       b=[0,caml_check_bound(ctx[3],1)[2]],
       c=[0,caml_check_bound(ctx[3],2)[3]],
       d=[0,caml_check_bound(ctx[3],3)[4]],
       e=[0,caml_check_bound(ctx[3],4)[5]],
       w=caml_make_vect(16,0);
      function m(i)
       {var
         _ha_=(i - 3 | 0) & 15,
         _hc_=(i - 8 | 0) & 15,
         _hb_=caml_check_bound(w,_ha_)[1 + _ha_],
         _he_=(i - 14 | 0) & 15,
         _hd_=caml_check_bound(w,_hc_)[1 + _hc_],
         _hg_=i & 15,
         _hf_=caml_check_bound(w,_he_)[1 + _he_],
         _hh_=caml_check_bound(w,_hg_)[1 + _hg_],
         _hi_=caml_call2(Int32$3[22],_hh_,_hf_),
         _hj_=caml_call2(Int32$3[22],_hi_,_hd_),
         _hk_=caml_call2(Int32$3[22],_hj_,_hb_),
         v=caml_call2(Int32$3[25],_hk_,1),
         _hl_=i & 15;
        caml_check_bound(w,_hl_)[1 + _hl_] = v;
        var _hm_=i & 15;
        return caml_check_bound(w,_hm_)[1 + _hm_]}
      function round(a,b,c,d,e,f,k,w)
       {var
         _g7_=caml_call3(f,b[1],c[1],d[1]),
         _g8_=caml_call2(Int32$3[25],a[1],5),
         _g9_=caml_call2(Int32$3[24],e[1],_g8_),
         _g__=caml_call2(Int32$3[24],_g9_,_g7_),
         _g$_=caml_call2(Int32$3[24],_g__,k);
        e[1] = caml_call2(Int32$3[24],_g$_,w);
        b[1] = caml_call2(Int32$3[25],b[1],30);
        return 0}
      var i=0;
      for(;;)
       {var _g5_=caml_call2(be32_to_cpu,buf,off + (i * 4 | 0) | 0);
        caml_check_bound(w,i)[1 + i] = _g5_;
        var _g6_=i + 1 | 0;
        if(15 !== i){var i=_g6_;continue}
        round(a,b,c,d,e,f1$0,k1,caml_check_bound(w,0)[1]);
        round(e,a,b,c,d,f1$0,k1,caml_check_bound(w,1)[2]);
        round(d,e,a,b,c,f1$0,k1,caml_check_bound(w,2)[3]);
        round(c,d,e,a,b,f1$0,k1,caml_check_bound(w,3)[4]);
        round(b,c,d,e,a,f1$0,k1,caml_check_bound(w,4)[5]);
        round(a,b,c,d,e,f1$0,k1,caml_check_bound(w,5)[6]);
        round(e,a,b,c,d,f1$0,k1,caml_check_bound(w,6)[7]);
        round(d,e,a,b,c,f1$0,k1,caml_check_bound(w,7)[8]);
        round(c,d,e,a,b,f1$0,k1,caml_check_bound(w,8)[9]);
        round(b,c,d,e,a,f1$0,k1,caml_check_bound(w,9)[10]);
        round(a,b,c,d,e,f1$0,k1,caml_check_bound(w,10)[11]);
        round(e,a,b,c,d,f1$0,k1,caml_check_bound(w,11)[12]);
        round(d,e,a,b,c,f1$0,k1,caml_check_bound(w,12)[13]);
        round(c,d,e,a,b,f1$0,k1,caml_check_bound(w,13)[14]);
        round(b,c,d,e,a,f1$0,k1,caml_check_bound(w,14)[15]);
        round(a,b,c,d,e,f1$0,k1,caml_check_bound(w,15)[16]);
        round(e,a,b,c,d,f1$0,k1,m(16));
        round(d,e,a,b,c,f1$0,k1,m(17));
        round(c,d,e,a,b,f1$0,k1,m(18));
        round(b,c,d,e,a,f1$0,k1,m(19));
        round(a,b,c,d,e,f4$0,k2,m(20));
        round(e,a,b,c,d,f4$0,k2,m(21));
        round(d,e,a,b,c,f4$0,k2,m(22));
        round(c,d,e,a,b,f4$0,k2,m(23));
        round(b,c,d,e,a,f4$0,k2,m(24));
        round(a,b,c,d,e,f4$0,k2,m(25));
        round(e,a,b,c,d,f4$0,k2,m(26));
        round(d,e,a,b,c,f4$0,k2,m(27));
        round(c,d,e,a,b,f4$0,k2,m(28));
        round(b,c,d,e,a,f4$0,k2,m(29));
        round(a,b,c,d,e,f4$0,k2,m(30));
        round(e,a,b,c,d,f4$0,k2,m(31));
        round(d,e,a,b,c,f4$0,k2,m(32));
        round(c,d,e,a,b,f4$0,k2,m(33));
        round(b,c,d,e,a,f4$0,k2,m(34));
        round(a,b,c,d,e,f4$0,k2,m(35));
        round(e,a,b,c,d,f4$0,k2,m(36));
        round(d,e,a,b,c,f4$0,k2,m(37));
        round(c,d,e,a,b,f4$0,k2,m(38));
        round(b,c,d,e,a,f4$0,k2,m(39));
        round(a,b,c,d,e,f3$0,k3,m(40));
        round(e,a,b,c,d,f3$0,k3,m(41));
        round(d,e,a,b,c,f3$0,k3,m(42));
        round(c,d,e,a,b,f3$0,k3,m(43));
        round(b,c,d,e,a,f3$0,k3,m(44));
        round(a,b,c,d,e,f3$0,k3,m(45));
        round(e,a,b,c,d,f3$0,k3,m(46));
        round(d,e,a,b,c,f3$0,k3,m(47));
        round(c,d,e,a,b,f3$0,k3,m(48));
        round(b,c,d,e,a,f3$0,k3,m(49));
        round(a,b,c,d,e,f3$0,k3,m(50));
        round(e,a,b,c,d,f3$0,k3,m(51));
        round(d,e,a,b,c,f3$0,k3,m(52));
        round(c,d,e,a,b,f3$0,k3,m(53));
        round(b,c,d,e,a,f3$0,k3,m(54));
        round(a,b,c,d,e,f3$0,k3,m(55));
        round(e,a,b,c,d,f3$0,k3,m(56));
        round(d,e,a,b,c,f3$0,k3,m(57));
        round(c,d,e,a,b,f3$0,k3,m(58));
        round(b,c,d,e,a,f3$0,k3,m(59));
        round(a,b,c,d,e,f4$0,k4,m(60));
        round(e,a,b,c,d,f4$0,k4,m(61));
        round(d,e,a,b,c,f4$0,k4,m(62));
        round(c,d,e,a,b,f4$0,k4,m(63));
        round(b,c,d,e,a,f4$0,k4,m(64));
        round(a,b,c,d,e,f4$0,k4,m(65));
        round(e,a,b,c,d,f4$0,k4,m(66));
        round(d,e,a,b,c,f4$0,k4,m(67));
        round(c,d,e,a,b,f4$0,k4,m(68));
        round(b,c,d,e,a,f4$0,k4,m(69));
        round(a,b,c,d,e,f4$0,k4,m(70));
        round(e,a,b,c,d,f4$0,k4,m(71));
        round(d,e,a,b,c,f4$0,k4,m(72));
        round(c,d,e,a,b,f4$0,k4,m(73));
        round(b,c,d,e,a,f4$0,k4,m(74));
        round(a,b,c,d,e,f4$0,k4,m(75));
        round(e,a,b,c,d,f4$0,k4,m(76));
        round(d,e,a,b,c,f4$0,k4,m(77));
        round(c,d,e,a,b,f4$0,k4,m(78));
        round(b,c,d,e,a,f4$0,k4,m(79));
        var _gV_=a[1],_gW_=caml_check_bound(ctx[3],0)[1] + _gV_ | 0;
        caml_check_bound(ctx[3],0)[1] = _gW_;
        var _gX_=b[1],_gY_=caml_check_bound(ctx[3],1)[2] + _gX_ | 0;
        caml_check_bound(ctx[3],1)[2] = _gY_;
        var _gZ_=c[1],_g0_=caml_check_bound(ctx[3],2)[3] + _gZ_ | 0;
        caml_check_bound(ctx[3],2)[3] = _g0_;
        var _g1_=d[1],_g2_=caml_check_bound(ctx[3],3)[4] + _g1_ | 0;
        caml_check_bound(ctx[3],3)[4] = _g2_;
        var _g3_=e[1],_g4_=caml_check_bound(ctx[3],4)[5] + _g3_ | 0;
        caml_check_bound(ctx[3],4)[5] = _g4_;
        return 0}}
    function feed$3(blit,be32_to_cpu,ctx,buf,off,len)
     {var
       idx=[0,caml_int64_to_int32(caml_call2(Int64$3[18],ctx[1],_ad_))],
       len$0=[0,len],
       off$0=[0,off],
       to_fill=64 - idx[1] | 0;
      ctx[1] = caml_int64_add(ctx[1],caml_int64_of_int32(len$0[1]));
      var _gT_=0 !== idx[1]?1:0,_gU_=_gT_?to_fill <= len$0[1]?1:0:_gT_;
      if(_gU_)
       {caml_call5(blit,buf,off$0[1],ctx[2],idx[1],to_fill);
        sha1_do_chunk(be32_to_cpu$0,ctx,ctx[2],0);
        len$0[1] = len$0[1] - to_fill | 0;
        off$0[1] = off$0[1] + to_fill | 0;
        idx[1] = 0}
      for(;;)
       {if(64 <= len$0[1])
         {sha1_do_chunk(be32_to_cpu,ctx,buf,off$0[1]);
          len$0[1] = len$0[1] - 64 | 0;
          off$0[1] = off$0[1] + 64 | 0;
          continue}
        if(0 !== len$0[1])
         caml_call5(blit,buf,off$0[1],ctx[2],idx[1],len$0[1]);
        return 0}}
    function unsafe_feed_bytes$3(_gP_,_gQ_,_gR_,_gS_)
     {return feed$3(blit,be32_to_cpu$0,_gP_,_gQ_,_gR_,_gS_)}
    function unsafe_feed_bigstring$3(_gL_,_gM_,_gN_,_gO_)
     {return feed$3(blit_from_bigstring,be32_to_cpu,_gL_,_gM_,_gN_,_gO_)}
    function unsafe_get$3(ctx)
     {var
       index=caml_int64_to_int32(caml_call2(Int64$3[18],ctx[1],_ae_)),
       padlen=56 <= index?120 - index | 0:56 - index | 0,
       padding=
        caml_call2(init$0,padlen,function(param){return 0 === param?128:0}),
       bits=caml_create_bytes(8);
      cpu_to_be64$0(bits,0,caml_call2(Int64$3[19],ctx[1],3));
      unsafe_feed_bytes$3(ctx,padding,0,padlen);
      unsafe_feed_bytes$3(ctx,bits,0,8);
      var res=caml_create_bytes(20),i=0;
      for(;;)
       {cpu_to_be32$0(res,i * 4 | 0,caml_check_bound(ctx[3],i)[1 + i]);
        var _gK_=i + 1 | 0;
        if(4 !== i){var i=_gK_;continue}
        return res}}
    var
     Unsafe$3=
      [0,
       init$5,
       unsafe_feed_bytes$3,
       unsafe_feed_bigstring$3,
       unsafe_get$3,
       dup$3],
     Baijiu_sha1=[0,Int32$3,Int64$3,Unsafe$3];
    caml_register_global(252,Baijiu_sha1,"Baijiu_sha1");
    var
     zero$10=Stdlib_int32[1],
     one$10=Stdlib_int32[2],
     minus_one$10=Stdlib_int32[3],
     unsigned_div$10=Stdlib_int32[4],
     unsigned_rem$10=Stdlib_int32[5],
     succ$10=Stdlib_int32[6],
     pred$10=Stdlib_int32[7],
     abs$10=Stdlib_int32[8],
     max_int$10=Stdlib_int32[9],
     min_int$10=Stdlib_int32[10],
     lognot$10=Stdlib_int32[11],
     unsigned_to_int$10=Stdlib_int32[12],
     of_string_opt$10=Stdlib_int32[13],
     to_string$12=Stdlib_int32[14],
     compare$11=Stdlib_int32[15],
     unsigned_compare$10=Stdlib_int32[16],
     equal$11=Stdlib_int32[17];
    function lsl$9(_gJ_,_gI_){return _gJ_ << _gI_}
    function lsr$6(_gH_,_gG_){return _gH_ >>> _gG_ | 0}
    function asr$6(_gF_,_gE_){return _gF_ >> _gE_}
    function lor$6(_gD_,_gC_){return _gD_ | _gC_}
    function lxor$7(_gB_,_gA_){return _gB_ ^ _gA_}
    function land$9(_gz_,_gy_){return _gz_ & _gy_}
    function symbol$6(_gx_,_gw_){return _gx_ + _gw_ | 0}
    function rol32$4(a,n){return a << n | a >>> (32 - n | 0) | 0}
    function ror32$3(a,n){return a >>> n | 0 | a << (32 - n | 0)}
    var
     Int32$4=
      [0,
       zero$10,
       one$10,
       minus_one$10,
       unsigned_div$10,
       unsigned_rem$10,
       succ$10,
       pred$10,
       abs$10,
       max_int$10,
       min_int$10,
       lognot$10,
       unsigned_to_int$10,
       of_string_opt$10,
       to_string$12,
       compare$11,
       unsigned_compare$10,
       equal$11,
       lsl$9,
       lsr$6,
       asr$6,
       lor$6,
       lxor$7,
       land$9,
       symbol$6,
       rol32$4,
       ror32$3],
     zero$11=Stdlib_int64[1],
     one$11=Stdlib_int64[2],
     minus_one$11=Stdlib_int64[3],
     unsigned_div$11=Stdlib_int64[4],
     unsigned_rem$11=Stdlib_int64[5],
     succ$11=Stdlib_int64[6],
     pred$11=Stdlib_int64[7],
     abs$11=Stdlib_int64[8],
     max_int$11=Stdlib_int64[9],
     min_int$11=Stdlib_int64[10],
     lognot$11=Stdlib_int64[11],
     unsigned_to_int$11=Stdlib_int64[12],
     of_string_opt$11=Stdlib_int64[13],
     to_string$13=Stdlib_int64[14],
     compare$12=Stdlib_int64[15],
     unsigned_compare$11=Stdlib_int64[16],
     equal$12=Stdlib_int64[17],
     land$10=caml_int64_and,
     lsl$10=caml_int64_shift_left,
     Int64$4=
      [0,
       zero$11,
       one$11,
       minus_one$11,
       unsigned_div$11,
       unsigned_rem$11,
       succ$11,
       pred$11,
       abs$11,
       max_int$11,
       min_int$11,
       lognot$11,
       unsigned_to_int$11,
       of_string_opt$11,
       to_string$13,
       compare$12,
       unsigned_compare$11,
       equal$12,
       land$10,
       lsl$10];
    function dup$4(ctx)
     {var
       _gu_=caml_call1(Stdlib_array[8],ctx[3]),
       _gv_=caml_call1(copy$0,ctx[2]);
      return [0,ctx[1],_gv_,_gu_]}
    function init$6(param)
     {var b=caml_call2(make,128,0);return [0,_ag_,b,_af_.slice()]}
    var k=_ah_.slice();
    function sha256_do_chunk(be32_to_cpu,ctx,buf,off)
     {var
       t2=[0,0],
       t1=[0,0],
       h=[0,caml_check_bound(ctx[3],7)[8]],
       g=[0,caml_check_bound(ctx[3],6)[7]],
       f=[0,caml_check_bound(ctx[3],5)[6]],
       e=[0,caml_check_bound(ctx[3],4)[5]],
       d=[0,caml_check_bound(ctx[3],3)[4]],
       c=[0,caml_check_bound(ctx[3],2)[3]],
       b=[0,caml_check_bound(ctx[3],1)[2]],
       a=[0,caml_check_bound(ctx[3],0)[1]],
       w=caml_make_vect(64,0),
       i$1=0;
      for(;;)
       {var _f8_=caml_call2(be32_to_cpu,buf,off + (i$1 * 4 | 0) | 0);
        caml_check_bound(w,i$1)[1 + i$1] = _f8_;
        var _f9_=i$1 + 1 | 0;
        if(15 !== i$1){var i$1=_f9_;continue}
        var i$0=16;
        for(;;)
         {var
           _fY_=i$0 - 16 | 0,
           _f0_=i$0 - 15 | 0,
           _fZ_=caml_check_bound(w,_fY_)[1 + _fY_],
           x=caml_check_bound(w,_f0_)[1 + _f0_],
           _e3_=caml_call2(Int32$4[19],x,3),
           _e4_=caml_call2(Int32$4[26],x,18),
           _e5_=caml_call2(Int32$4[26],x,7),
           _e6_=caml_call2(Int32$4[22],_e5_,_e4_),
           _f1_=i$0 - 7 | 0,
           _e7_=caml_call2(Int32$4[22],_e6_,_e3_),
           _f3_=i$0 - 2 | 0,
           _f2_=caml_check_bound(w,_f1_)[1 + _f1_],
           x$0=caml_check_bound(w,_f3_)[1 + _f3_],
           _e8_=caml_call2(Int32$4[19],x$0,10),
           _e9_=caml_call2(Int32$4[26],x$0,19),
           _e__=caml_call2(Int32$4[26],x$0,17),
           _e$_=caml_call2(Int32$4[22],_e__,_e9_),
           _fa_=caml_call2(Int32$4[22],_e$_,_e8_),
           _f4_=caml_call2(Int32$4[24],_fa_,_f2_),
           _f5_=caml_call2(Int32$4[24],_f4_,_e7_),
           _f6_=caml_call2(Int32$4[24],_f5_,_fZ_);
          caml_check_bound(w,i$0)[1 + i$0] = _f6_;
          var _f7_=i$0 + 1 | 0;
          if(63 !== i$0){var i$0=_f7_;continue}
          var
           round=
            function(a,b,c,d,e,f,g,h,k,w)
             {var
               _gi_=caml_call2(Int32$4[22],f[1],g[1]),
               _gj_=caml_call2(Int32$4[23],e[1],_gi_),
               _gk_=caml_call2(Int32$4[22],g[1],_gj_),
               _gl_=e[1],
               _gd_=caml_call2(Int32$4[26],_gl_,25),
               _ge_=caml_call2(Int32$4[26],_gl_,11),
               _gf_=caml_call2(Int32$4[26],_gl_,6),
               _gg_=caml_call2(Int32$4[22],_gf_,_ge_),
               _gh_=caml_call2(Int32$4[22],_gg_,_gd_),
               _gm_=caml_call2(Int32$4[24],h[1],_gh_),
               _gn_=caml_call2(Int32$4[24],_gm_,_gk_),
               _go_=caml_call2(Int32$4[24],_gn_,k);
              t1[1] = caml_call2(Int32$4[24],_go_,w);
              var
               _gp_=caml_call2(Int32$4[21],a[1],b[1]),
               _gq_=caml_call2(Int32$4[23],c[1],_gp_),
               _gr_=caml_call2(Int32$4[23],a[1],b[1]),
               _gs_=caml_call2(Int32$4[21],_gr_,_gq_),
               _gt_=a[1],
               _f__=caml_call2(Int32$4[26],_gt_,22),
               _f$_=caml_call2(Int32$4[26],_gt_,13),
               _ga_=caml_call2(Int32$4[26],_gt_,2),
               _gb_=caml_call2(Int32$4[22],_ga_,_f$_),
               _gc_=caml_call2(Int32$4[22],_gb_,_f__);
              t2[1] = caml_call2(Int32$4[24],_gc_,_gs_);
              d[1] = caml_call2(Int32$4[24],d[1],t1[1]);
              h[1] = caml_call2(Int32$4[24],t1[1],t2[1]);
              return 0},
           i=0;
          for(;;)
           {var
             _fz_=i * 8 | 0 | 0,
             _fB_=i * 8 | 0 | 0,
             _fA_=caml_check_bound(w,_fz_)[1 + _fz_];
            round(a,b,c,d,e,f,g,h,caml_check_bound(k,_fB_)[1 + _fB_],_fA_);
            var
             _fC_=(i * 8 | 0) + 1 | 0,
             _fE_=(i * 8 | 0) + 1 | 0,
             _fD_=caml_check_bound(w,_fC_)[1 + _fC_];
            round(h,a,b,c,d,e,f,g,caml_check_bound(k,_fE_)[1 + _fE_],_fD_);
            var
             _fF_=(i * 8 | 0) + 2 | 0,
             _fH_=(i * 8 | 0) + 2 | 0,
             _fG_=caml_check_bound(w,_fF_)[1 + _fF_];
            round(g,h,a,b,c,d,e,f,caml_check_bound(k,_fH_)[1 + _fH_],_fG_);
            var
             _fI_=(i * 8 | 0) + 3 | 0,
             _fK_=(i * 8 | 0) + 3 | 0,
             _fJ_=caml_check_bound(w,_fI_)[1 + _fI_];
            round(f,g,h,a,b,c,d,e,caml_check_bound(k,_fK_)[1 + _fK_],_fJ_);
            var
             _fL_=(i * 8 | 0) + 4 | 0,
             _fN_=(i * 8 | 0) + 4 | 0,
             _fM_=caml_check_bound(w,_fL_)[1 + _fL_];
            round(e,f,g,h,a,b,c,d,caml_check_bound(k,_fN_)[1 + _fN_],_fM_);
            var
             _fO_=(i * 8 | 0) + 5 | 0,
             _fQ_=(i * 8 | 0) + 5 | 0,
             _fP_=caml_check_bound(w,_fO_)[1 + _fO_];
            round(d,e,f,g,h,a,b,c,caml_check_bound(k,_fQ_)[1 + _fQ_],_fP_);
            var
             _fR_=(i * 8 | 0) + 6 | 0,
             _fT_=(i * 8 | 0) + 6 | 0,
             _fS_=caml_check_bound(w,_fR_)[1 + _fR_];
            round(c,d,e,f,g,h,a,b,caml_check_bound(k,_fT_)[1 + _fT_],_fS_);
            var
             _fU_=(i * 8 | 0) + 7 | 0,
             _fW_=(i * 8 | 0) + 7 | 0,
             _fV_=caml_check_bound(w,_fU_)[1 + _fU_];
            round(b,c,d,e,f,g,h,a,caml_check_bound(k,_fW_)[1 + _fW_],_fV_);
            var _fX_=i + 1 | 0;
            if(7 !== i){var i=_fX_;continue}
            var
             _fb_=a[1],
             _fc_=caml_check_bound(ctx[3],0)[1],
             _fd_=caml_call2(Int32$4[24],_fc_,_fb_);
            caml_check_bound(ctx[3],0)[1] = _fd_;
            var
             _fe_=b[1],
             _ff_=caml_check_bound(ctx[3],1)[2],
             _fg_=caml_call2(Int32$4[24],_ff_,_fe_);
            caml_check_bound(ctx[3],1)[2] = _fg_;
            var
             _fh_=c[1],
             _fi_=caml_check_bound(ctx[3],2)[3],
             _fj_=caml_call2(Int32$4[24],_fi_,_fh_);
            caml_check_bound(ctx[3],2)[3] = _fj_;
            var
             _fk_=d[1],
             _fl_=caml_check_bound(ctx[3],3)[4],
             _fm_=caml_call2(Int32$4[24],_fl_,_fk_);
            caml_check_bound(ctx[3],3)[4] = _fm_;
            var
             _fn_=e[1],
             _fo_=caml_check_bound(ctx[3],4)[5],
             _fp_=caml_call2(Int32$4[24],_fo_,_fn_);
            caml_check_bound(ctx[3],4)[5] = _fp_;
            var
             _fq_=f[1],
             _fr_=caml_check_bound(ctx[3],5)[6],
             _fs_=caml_call2(Int32$4[24],_fr_,_fq_);
            caml_check_bound(ctx[3],5)[6] = _fs_;
            var
             _ft_=g[1],
             _fu_=caml_check_bound(ctx[3],6)[7],
             _fv_=caml_call2(Int32$4[24],_fu_,_ft_);
            caml_check_bound(ctx[3],6)[7] = _fv_;
            var
             _fw_=h[1],
             _fx_=caml_check_bound(ctx[3],7)[8],
             _fy_=caml_call2(Int32$4[24],_fx_,_fw_);
            caml_check_bound(ctx[3],7)[8] = _fy_;
            return 0}}}}
    function feed$4(blit,be32_to_cpu,ctx,buf,off,len)
     {var
       idx=[0,caml_int64_to_int32(caml_call2(Int64$4[18],ctx[1],_ai_))],
       len$0=[0,len],
       off$0=[0,off],
       to_fill=64 - idx[1] | 0;
      ctx[1] = caml_int64_add(ctx[1],caml_int64_of_int32(len$0[1]));
      var _e1_=0 !== idx[1]?1:0,_e2_=_e1_?to_fill <= len$0[1]?1:0:_e1_;
      if(_e2_)
       {caml_call5(blit,buf,off$0[1],ctx[2],idx[1],to_fill);
        sha256_do_chunk(be32_to_cpu$0,ctx,ctx[2],0);
        len$0[1] = len$0[1] - to_fill | 0;
        off$0[1] = off$0[1] + to_fill | 0;
        idx[1] = 0}
      for(;;)
       {if(64 <= len$0[1])
         {sha256_do_chunk(be32_to_cpu,ctx,buf,off$0[1]);
          len$0[1] = len$0[1] - 64 | 0;
          off$0[1] = off$0[1] + 64 | 0;
          continue}
        if(0 !== len$0[1])
         caml_call5(blit,buf,off$0[1],ctx[2],idx[1],len$0[1]);
        return 0}}
    function unsafe_feed_bytes$4(_eX_,_eY_,_eZ_,_e0_)
     {return feed$4(blit,be32_to_cpu$0,_eX_,_eY_,_eZ_,_e0_)}
    function unsafe_feed_bigstring$4(_eT_,_eU_,_eV_,_eW_)
     {return feed$4(blit_from_bigstring,be32_to_cpu,_eT_,_eU_,_eV_,_eW_)}
    function unsafe_get$4(ctx)
     {var
       index=caml_int64_to_int32(caml_call2(Int64$4[18],ctx[1],_aj_)),
       padlen=56 <= index?120 - index | 0:56 - index | 0,
       padding=
        caml_call2(init$0,padlen,function(param){return 0 === param?128:0}),
       bits=caml_create_bytes(8);
      cpu_to_be64$0(bits,0,caml_call2(Int64$4[19],ctx[1],3));
      unsafe_feed_bytes$4(ctx,padding,0,padlen);
      unsafe_feed_bytes$4(ctx,bits,0,8);
      var res=caml_create_bytes(32),i=0;
      for(;;)
       {cpu_to_be32$0(res,i * 4 | 0,caml_check_bound(ctx[3],i)[1 + i]);
        var _eS_=i + 1 | 0;
        if(7 !== i){var i=_eS_;continue}
        return res}}
    var
     Unsafe$4=
      [0,
       init$6,
       unsafe_feed_bytes$4,
       unsafe_feed_bigstring$4,
       unsafe_get$4,
       dup$4],
     Baijiu_sha256=[0,Int32$4,Int64$4,Unsafe$4];
    caml_register_global(253,Baijiu_sha256,"Baijiu_sha256");
    function init$7(param)
     {var b=caml_call2(make,128,0);return [0,_al_,b,_ak_.slice()]}
    function unsafe_get$5(ctx)
     {var res=caml_call1(Unsafe$4[4],ctx);return caml_call3(sub$0,res,0,28)}
    var
     dup$5=Unsafe$4[5],
     unsafe_feed_bytes$5=Unsafe$4[2],
     unsafe_feed_bigstring$5=Unsafe$4[3],
     Unsafe$5=
      [0,
       init$7,
       unsafe_feed_bytes$5,
       unsafe_feed_bigstring$5,
       unsafe_get$5,
       dup$5],
     Baijiu_sha224=[0,Unsafe$5];
    caml_register_global(254,Baijiu_sha224,"Baijiu_sha224");
    var
     zero$12=Stdlib_int64[1],
     one$12=Stdlib_int64[2],
     minus_one$12=Stdlib_int64[3],
     unsigned_div$12=Stdlib_int64[4],
     unsigned_rem$12=Stdlib_int64[5],
     succ$12=Stdlib_int64[6],
     pred$12=Stdlib_int64[7],
     abs$12=Stdlib_int64[8],
     max_int$12=Stdlib_int64[9],
     min_int$12=Stdlib_int64[10],
     lognot$12=Stdlib_int64[11],
     unsigned_to_int$12=Stdlib_int64[12],
     of_string_opt$12=Stdlib_int64[13],
     to_string$14=Stdlib_int64[14],
     compare$13=Stdlib_int64[15],
     unsigned_compare$12=Stdlib_int64[16],
     equal$13=Stdlib_int64[17],
     lsl$11=caml_int64_shift_left,
     lsr$7=caml_int64_shift_right_unsigne,
     asr$7=caml_int64_shift_right,
     lor$7=caml_int64_or,
     land$11=caml_int64_and,
     lxor$8=caml_int64_xor,
     symbol$7=caml_int64_add;
    function ror64$1(a,n)
     {return caml_int64_or
              (caml_int64_shift_right_unsigne(a,n),
               caml_int64_shift_left(a,64 - n | 0))}
    function rol64$1(a,n)
     {return caml_int64_or
              (caml_int64_shift_left(a,n),
               caml_int64_shift_right_unsigne(a,64 - n | 0))}
    var
     Int64$5=
      [0,
       zero$12,
       one$12,
       minus_one$12,
       unsigned_div$12,
       unsigned_rem$12,
       succ$12,
       pred$12,
       abs$12,
       max_int$12,
       min_int$12,
       lognot$12,
       unsigned_to_int$12,
       of_string_opt$12,
       to_string$14,
       compare$13,
       unsigned_compare$12,
       equal$13,
       lsl$11,
       lsr$7,
       asr$7,
       lor$7,
       land$11,
       lxor$8,
       symbol$7,
       ror64$1,
       rol64$1];
    function dup$6(ctx)
     {var _eP_=ctx[4],_eQ_=ctx[3],_eR_=ctx[2];
      return [0,caml_call1(Stdlib_array[8],ctx[1]),_eR_,_eQ_,_eP_]}
    function init$8(mdlen)
     {var rsize=200 - (2 * mdlen | 0) | 0;
      return [0,caml_make_vect(25,_am_),rsize,mdlen,0]}
    var
     keccaft_rndc=_an_.slice(),
     keccaft_rotc=_ao_.slice(),
     keccakf_piln=_ap_.slice(),
     keccakf_rounds=24,
     swap64=Stdlib_sys[11]?caml_int64_bswap:function(x){return x};
    function sha3_keccakf(q)
     {if(Stdlib_sys[11])
       {var
         _eb_=
          function(i,sti)
           {var _eO_=swap64(sti);caml_check_bound(q,i)[1 + i] = _eO_;return 0};
        caml_call2(Stdlib_array[14],_eb_,q)}
      var r=0;
      a:
      for(;;)
       {var
         lxor=Int64$5[23],
         lnot=Int64$5[11],
         land=Int64$5[22],
         _ee_=
          function(lxor)
            {return function(i)
              {var
                _eG_=i + 20 | 0,
                _eI_=i + 15 | 0,
                _eH_=caml_check_bound(q,_eG_)[1 + _eG_],
                _eK_=i + 10 | 0,
                _eJ_=caml_check_bound(q,_eI_)[1 + _eI_],
                _eM_=i + 5 | 0,
                _eL_=caml_check_bound(q,_eK_)[1 + _eK_],
                _eN_=caml_check_bound(q,_eM_)[1 + _eM_];
               return caml_call2
                       (lxor,
                        caml_call2
                         (lxor,
                          caml_call2
                           (lxor,
                            caml_call2(lxor,caml_check_bound(q,i)[1 + i],_eN_),
                            _eL_),
                          _eJ_),
                        _eH_)}}
           (lxor),
         bc=caml_call2(Stdlib_array[2],5,_ee_),
         i$0=0;
        b:
        for(;;)
         {var
           _et_=(i$0 + 1 | 0) % 5 | 0,
           _eu_=caml_check_bound(bc,_et_)[1 + _et_],
           _ew_=(i$0 + 4 | 0) % 5 | 0,
           _ev_=caml_call2(Int64$5[26],_eu_,1),
           t$0=caml_call2(lxor,caml_check_bound(bc,_ew_)[1 + _ew_],_ev_),
           k$0=0;
          for(;;)
           {var
             j$0=k$0 * 5 | 0,
             _ey_=j$0 + i$0 | 0,
             _eA_=j$0 + i$0 | 0,
             _ez_=caml_call2(lxor,caml_check_bound(q,_ey_)[1 + _ey_],t$0);
            caml_check_bound(q,_eA_)[1 + _eA_] = _ez_;
            var _eB_=k$0 + 1 | 0;
            if(4 !== k$0){var k$0=_eB_;continue}
            var _ex_=i$0 + 1 | 0;
            if(4 !== i$0){var i$0=_ex_;continue b}
            var
             t=[0,caml_check_bound(q,1)[2]],
             _ef_=
              function(bc,t)
                {return function(i,rotc)
                  {var
                    j=caml_check_bound(keccakf_piln,i)[1 + i],
                    _eE_=caml_check_bound(q,j)[1 + j];
                   caml_check_bound(bc,0)[1] = _eE_;
                   var _eF_=caml_call2(Int64$5[26],t[1],rotc);
                   caml_check_bound(q,j)[1 + j] = _eF_;
                   t[1] = caml_check_bound(bc,0)[1];
                   return 0}}
               (bc,t);
            caml_call2(Stdlib_array[14],_ef_,keccaft_rotc);
            var k=0;
            c:
            for(;;)
             {var
               j=k * 5 | 0,
               _ej_=
                function(j)
                  {return function(i)
                    {var _eD_=j + i | 0;
                     return caml_check_bound(q,_eD_)[1 + _eD_]}}
                 (j),
               bc$0=caml_call2(Stdlib_array[2],5,_ej_),
               i=0;
              for(;;)
               {var
                 _el_=(i + 2 | 0) % 5 | 0,
                 _en_=(i + 1 | 0) % 5 | 0,
                 _em_=caml_check_bound(bc$0,_el_)[1 + _el_],
                 _ep_=j + i | 0,
                 _eo_=
                  caml_call2
                   (land,
                    caml_call1(lnot,caml_check_bound(bc$0,_en_)[1 + _en_]),
                    _em_),
                 _er_=j + i | 0,
                 _eq_=caml_call2(lxor,caml_check_bound(q,_ep_)[1 + _ep_],_eo_);
                caml_check_bound(q,_er_)[1 + _er_] = _eq_;
                var _es_=i + 1 | 0;
                if(4 !== i){var i=_es_;continue}
                var _ek_=k + 1 | 0;
                if(4 !== k){var k=_ek_;continue c}
                var
                 _eg_=caml_check_bound(keccaft_rndc,r)[1 + r],
                 _eh_=caml_call2(lxor,caml_check_bound(q,0)[1],_eg_);
                caml_check_bound(q,0)[1] = _eh_;
                var _ei_=r + 1 | 0;
                if(23 !== r){var r=_ei_;continue a}
                var _ec_=Stdlib_sys[11];
                if(_ec_)
                 {var
                   _ed_=
                    function(i,sti)
                     {var _eC_=swap64(sti);
                      caml_check_bound(q,i)[1 + i] = _eC_;
                      return 0};
                  return caml_call2(Stdlib_array[14],_ed_,q)}
                return _ec_}}}}}}
    var masks=_aq_.slice();
    function feed$5(get_uint8,ctx,buf,off,len)
     {var
       lxor=Int64$5[23],
       land=Int64$5[22],
       lor=Int64$5[21],
       lsr=Int64$5[19],
       lsl=Int64$5[18],
       j=[0,ctx[4]],
       _d2_=len - 1 | 0,
       _d1_=0;
      if(! (_d2_ < 0))
       {var i=_d1_;
        for(;;)
         {var
           _d3_=(j[1] & 7) * 8 | 0,
           _d4_=caml_call2(lsl,_ar_,(j[1] & 7) * 8 | 0),
           _d5_=j[1] / 8 | 0,
           v=
            caml_call2
             (lsr,
              caml_call2(land,caml_check_bound(ctx[1],_d5_)[1 + _d5_],_d4_),
              _d3_),
           v$0=
            caml_call2
             (lxor,
              v,
              caml_int64_of_int32(caml_call2(get_uint8,buf,off + i | 0))),
           _d6_=caml_call2(lsl,v$0,(j[1] & 7) * 8 | 0),
           _d7_=j[1] & 7,
           _d8_=caml_check_bound(masks,_d7_)[1 + _d7_],
           _d9_=j[1] / 8 | 0,
           _d__=
            caml_call2
             (lor,
              caml_call2(land,caml_check_bound(ctx[1],_d9_)[1 + _d9_],_d8_),
              _d6_),
           _d$_=j[1] / 8 | 0;
          caml_check_bound(ctx[1],_d$_)[1 + _d$_] = _d__;
          j[1]++;
          if(ctx[2] <= j[1]){sha3_keccakf(ctx[1]);j[1] = 0}
          var _ea_=i + 1 | 0;
          if(_d2_ !== i){var i=_ea_;continue}
          break}}
      ctx[4] = j[1];
      return 0}
    function unsafe_feed_bytes$6(ctx,buf,off,len)
     {var get_uint8=caml_bytes_get;return feed$5(get_uint8,ctx,buf,off,len)}
    function unsafe_feed_bigstring$6(ctx,buf,off,len)
     {var get_uint8=caml_ba_get_1;return feed$5(get_uint8,ctx,buf,off,len)}
    function unsafe_get$6(ctx)
     {var
       lxor=Int64$5[23],
       lsl=Int64$5[18],
       _dT_=ctx[4] / 8 | 0,
       v=caml_check_bound(ctx[1],_dT_)[1 + _dT_],
       v$0=caml_call2(lxor,v,caml_call2(lsl,_as_,(ctx[4] & 7) * 8 | 0)),
       _dU_=ctx[4] / 8 | 0;
      caml_check_bound(ctx[1],_dU_)[1 + _dU_] = v$0;
      var
       _dV_=(ctx[2] - 1 | 0) / 8 | 0,
       v$1=caml_check_bound(ctx[1],_dV_)[1 + _dV_],
       v$2=
        caml_call2
         (lxor,v$1,caml_call2(lsl,_at_,((ctx[2] - 1 | 0) & 7) * 8 | 0)),
       _dW_=(ctx[2] - 1 | 0) / 8 | 0;
      caml_check_bound(ctx[1],_dW_)[1 + _dW_] = v$2;
      sha3_keccakf(ctx[1]);
      var
       r=ctx[3] % 8 | 0,
       _dX_=0 === r?0:8 - r | 0,
       n=ctx[3] + _dX_ | 0,
       hash=caml_create_bytes(n),
       _dZ_=(n / 8 | 0) - 1 | 0,
       _dY_=0;
      if(! (_dZ_ < 0))
       {var i=_dY_;
        for(;;)
         {caml_bytes_set64(hash,i * 8 | 0,caml_check_bound(ctx[1],i)[1 + i]);
          var _d0_=i + 1 | 0;
          if(_dZ_ !== i){var i=_d0_;continue}
          break}}
      return caml_call3(sub$0,hash,0,ctx[3])}
    var
     Unsafe$6=
      [0,
       dup$6,
       init$8,
       keccakf_rounds,
       keccaft_rndc,
       keccaft_rotc,
       keccakf_piln,
       swap64,
       sha3_keccakf,
       masks,
       feed$5,
       unsafe_feed_bytes$6,
       unsafe_feed_bigstring$6,
       unsafe_get$6],
     Baijiu_sha3=[0,Int64$5,Unsafe$6];
    caml_register_global(255,Baijiu_sha3,"Baijiu_sha3");
    var
     zero$13=Stdlib_int64[1],
     one$13=Stdlib_int64[2],
     minus_one$13=Stdlib_int64[3],
     unsigned_div$13=Stdlib_int64[4],
     unsigned_rem$13=Stdlib_int64[5],
     succ$13=Stdlib_int64[6],
     pred$13=Stdlib_int64[7],
     abs$13=Stdlib_int64[8],
     max_int$13=Stdlib_int64[9],
     min_int$13=Stdlib_int64[10],
     lognot$13=Stdlib_int64[11],
     unsigned_to_int$13=Stdlib_int64[12],
     of_string_opt$13=Stdlib_int64[13],
     to_string$15=Stdlib_int64[14],
     compare$14=Stdlib_int64[15],
     unsigned_compare$13=Stdlib_int64[16],
     equal$14=Stdlib_int64[17],
     lsl$12=caml_int64_shift_left,
     lsr$8=caml_int64_shift_right_unsigne,
     asr$8=caml_int64_shift_right,
     lor$8=caml_int64_or,
     land$12=caml_int64_and,
     lxor$9=caml_int64_xor,
     symbol$8=caml_int64_add;
    function ror64$2(a,n)
     {return caml_int64_or
              (caml_int64_shift_right_unsigne(a,n),
               caml_int64_shift_left(a,64 - n | 0))}
    function rol64$2(a,n)
     {return caml_int64_or
              (caml_int64_shift_left(a,n),
               caml_int64_shift_right_unsigne(a,64 - n | 0))}
    var
     Int64$6=
      [0,
       zero$13,
       one$13,
       minus_one$13,
       unsigned_div$13,
       unsigned_rem$13,
       succ$13,
       pred$13,
       abs$13,
       max_int$13,
       min_int$13,
       lognot$13,
       unsigned_to_int$13,
       of_string_opt$13,
       to_string$15,
       compare$14,
       unsigned_compare$13,
       equal$14,
       lsl$12,
       lsr$8,
       asr$8,
       lor$8,
       land$12,
       lxor$9,
       symbol$8,
       ror64$2,
       rol64$2];
    function dup$7(ctx)
     {var
       _dR_=caml_call1(Stdlib_array[8],ctx[3]),
       _dS_=caml_call1(copy$0,ctx[2]);
      return [0,caml_call1(Stdlib_array[8],ctx[1]),_dS_,_dR_]}
    function init$9(param)
     {var b=caml_call2(make,128,0);return [0,[0,_aw_,_av_],b,_au_.slice()]}
    var k$0=_ax_.slice();
    function sha512_do_chunk(be64_to_cpu,ctx,buf,off)
     {var
       t2=[0,_ay_],
       t1=[0,_az_],
       h=[0,caml_check_bound(ctx[3],7)[8]],
       g=[0,caml_check_bound(ctx[3],6)[7]],
       f=[0,caml_check_bound(ctx[3],5)[6]],
       e=[0,caml_check_bound(ctx[3],4)[5]],
       d=[0,caml_check_bound(ctx[3],3)[4]],
       c=[0,caml_check_bound(ctx[3],2)[3]],
       b=[0,caml_check_bound(ctx[3],1)[2]],
       a=[0,caml_check_bound(ctx[3],0)[1]],
       w=caml_make_vect(80,_aA_),
       i$1=0;
      for(;;)
       {var _dt_=caml_call2(be64_to_cpu,buf,off + (i$1 * 8 | 0) | 0);
        caml_check_bound(w,i$1)[1 + i$1] = _dt_;
        var _du_=i$1 + 1 | 0;
        if(15 !== i$1){var i$1=_du_;continue}
        var i$0=16;
        for(;;)
         {var
           _dj_=i$0 - 16 | 0,
           _dl_=i$0 - 15 | 0,
           _dk_=caml_check_bound(w,_dj_)[1 + _dj_],
           x=caml_check_bound(w,_dl_)[1 + _dl_],
           _co_=caml_call2(Int64$6[19],x,7),
           _cp_=caml_call2(Int64$6[25],x,8),
           _cq_=caml_call2(Int64$6[25],x,1),
           _cr_=caml_call2(Int64$6[23],_cq_,_cp_),
           _dm_=i$0 - 7 | 0,
           _cs_=caml_call2(Int64$6[23],_cr_,_co_),
           _do_=i$0 - 2 | 0,
           _dn_=caml_check_bound(w,_dm_)[1 + _dm_],
           x$0=caml_check_bound(w,_do_)[1 + _do_],
           _ct_=caml_call2(Int64$6[19],x$0,6),
           _cu_=caml_call2(Int64$6[25],x$0,61),
           _cv_=caml_call2(Int64$6[25],x$0,19),
           _cw_=caml_call2(Int64$6[23],_cv_,_cu_),
           _cx_=caml_call2(Int64$6[23],_cw_,_ct_),
           _dp_=caml_call2(Int64$6[24],_cx_,_dn_),
           _dq_=caml_call2(Int64$6[24],_dp_,_cs_),
           _dr_=caml_call2(Int64$6[24],_dq_,_dk_);
          caml_check_bound(w,i$0)[1 + i$0] = _dr_;
          var _ds_=i$0 + 1 | 0;
          if(79 !== i$0){var i$0=_ds_;continue}
          var
           round=
            function(a,b,c,d,e,f,g,h,k,w)
             {var
               _dF_=caml_call2(Int64$6[23],f[1],g[1]),
               _dG_=caml_call2(Int64$6[22],e[1],_dF_),
               _dH_=caml_call2(Int64$6[23],g[1],_dG_),
               _dI_=e[1],
               _dA_=caml_call2(Int64$6[25],_dI_,41),
               _dB_=caml_call2(Int64$6[25],_dI_,18),
               _dC_=caml_call2(Int64$6[25],_dI_,14),
               _dD_=caml_call2(Int64$6[23],_dC_,_dB_),
               _dE_=caml_call2(Int64$6[23],_dD_,_dA_),
               _dJ_=caml_call2(Int64$6[24],h[1],_dE_),
               _dK_=caml_call2(Int64$6[24],_dJ_,_dH_),
               _dL_=caml_call2(Int64$6[24],_dK_,k);
              t1[1] = caml_call2(Int64$6[24],_dL_,w);
              var
               _dM_=caml_call2(Int64$6[21],a[1],b[1]),
               _dN_=caml_call2(Int64$6[22],c[1],_dM_),
               _dO_=caml_call2(Int64$6[22],a[1],b[1]),
               _dP_=caml_call2(Int64$6[21],_dO_,_dN_),
               _dQ_=a[1],
               _dv_=caml_call2(Int64$6[25],_dQ_,39),
               _dw_=caml_call2(Int64$6[25],_dQ_,34),
               _dx_=caml_call2(Int64$6[25],_dQ_,28),
               _dy_=caml_call2(Int64$6[23],_dx_,_dw_),
               _dz_=caml_call2(Int64$6[23],_dy_,_dv_);
              t2[1] = caml_call2(Int64$6[24],_dz_,_dP_);
              d[1] = caml_call2(Int64$6[24],d[1],t1[1]);
              h[1] = caml_call2(Int64$6[24],t1[1],t2[1]);
              return 0},
           i=0;
          for(;;)
           {var
             _cW_=i * 8 | 0 | 0,
             _cY_=i * 8 | 0 | 0,
             _cX_=caml_check_bound(w,_cW_)[1 + _cW_];
            round(a,b,c,d,e,f,g,h,caml_check_bound(k$0,_cY_)[1 + _cY_],_cX_);
            var
             _cZ_=(i * 8 | 0) + 1 | 0,
             _c1_=(i * 8 | 0) + 1 | 0,
             _c0_=caml_check_bound(w,_cZ_)[1 + _cZ_];
            round(h,a,b,c,d,e,f,g,caml_check_bound(k$0,_c1_)[1 + _c1_],_c0_);
            var
             _c2_=(i * 8 | 0) + 2 | 0,
             _c4_=(i * 8 | 0) + 2 | 0,
             _c3_=caml_check_bound(w,_c2_)[1 + _c2_];
            round(g,h,a,b,c,d,e,f,caml_check_bound(k$0,_c4_)[1 + _c4_],_c3_);
            var
             _c5_=(i * 8 | 0) + 3 | 0,
             _c7_=(i * 8 | 0) + 3 | 0,
             _c6_=caml_check_bound(w,_c5_)[1 + _c5_];
            round(f,g,h,a,b,c,d,e,caml_check_bound(k$0,_c7_)[1 + _c7_],_c6_);
            var
             _c8_=(i * 8 | 0) + 4 | 0,
             _c__=(i * 8 | 0) + 4 | 0,
             _c9_=caml_check_bound(w,_c8_)[1 + _c8_];
            round(e,f,g,h,a,b,c,d,caml_check_bound(k$0,_c__)[1 + _c__],_c9_);
            var
             _c$_=(i * 8 | 0) + 5 | 0,
             _db_=(i * 8 | 0) + 5 | 0,
             _da_=caml_check_bound(w,_c$_)[1 + _c$_];
            round(d,e,f,g,h,a,b,c,caml_check_bound(k$0,_db_)[1 + _db_],_da_);
            var
             _dc_=(i * 8 | 0) + 6 | 0,
             _de_=(i * 8 | 0) + 6 | 0,
             _dd_=caml_check_bound(w,_dc_)[1 + _dc_];
            round(c,d,e,f,g,h,a,b,caml_check_bound(k$0,_de_)[1 + _de_],_dd_);
            var
             _df_=(i * 8 | 0) + 7 | 0,
             _dh_=(i * 8 | 0) + 7 | 0,
             _dg_=caml_check_bound(w,_df_)[1 + _df_];
            round(b,c,d,e,f,g,h,a,caml_check_bound(k$0,_dh_)[1 + _dh_],_dg_);
            var _di_=i + 1 | 0;
            if(9 !== i){var i=_di_;continue}
            var
             _cy_=a[1],
             _cz_=caml_check_bound(ctx[3],0)[1],
             _cA_=caml_call2(Int64$6[24],_cz_,_cy_);
            caml_check_bound(ctx[3],0)[1] = _cA_;
            var
             _cB_=b[1],
             _cC_=caml_check_bound(ctx[3],1)[2],
             _cD_=caml_call2(Int64$6[24],_cC_,_cB_);
            caml_check_bound(ctx[3],1)[2] = _cD_;
            var
             _cE_=c[1],
             _cF_=caml_check_bound(ctx[3],2)[3],
             _cG_=caml_call2(Int64$6[24],_cF_,_cE_);
            caml_check_bound(ctx[3],2)[3] = _cG_;
            var
             _cH_=d[1],
             _cI_=caml_check_bound(ctx[3],3)[4],
             _cJ_=caml_call2(Int64$6[24],_cI_,_cH_);
            caml_check_bound(ctx[3],3)[4] = _cJ_;
            var
             _cK_=e[1],
             _cL_=caml_check_bound(ctx[3],4)[5],
             _cM_=caml_call2(Int64$6[24],_cL_,_cK_);
            caml_check_bound(ctx[3],4)[5] = _cM_;
            var
             _cN_=f[1],
             _cO_=caml_check_bound(ctx[3],5)[6],
             _cP_=caml_call2(Int64$6[24],_cO_,_cN_);
            caml_check_bound(ctx[3],5)[6] = _cP_;
            var
             _cQ_=g[1],
             _cR_=caml_check_bound(ctx[3],6)[7],
             _cS_=caml_call2(Int64$6[24],_cR_,_cQ_);
            caml_check_bound(ctx[3],6)[7] = _cS_;
            var
             _cT_=h[1],
             _cU_=caml_check_bound(ctx[3],7)[8],
             _cV_=caml_call2(Int64$6[24],_cU_,_cT_);
            caml_check_bound(ctx[3],7)[8] = _cV_;
            return 0}}}}
    function feed$6(blit,be64_to_cpu,ctx,buf,off,len)
     {var
       _cg_=caml_check_bound(ctx[1],0)[1],
       idx=[0,caml_int64_to_int32(caml_call2(Int64$6[22],_cg_,_aB_))],
       len$0=[0,len],
       off$0=[0,off],
       to_fill=128 - idx[1] | 0,
       _ch_=caml_int64_of_int32(len$0[1]),
       _ci_=caml_int64_add(caml_check_bound(ctx[1],0)[1],_ch_);
      caml_check_bound(ctx[1],0)[1] = _ci_;
      var _cj_=caml_int64_of_int32(len$0[1]);
      if(caml_lessthan(caml_check_bound(ctx[1],0)[1],_cj_))
       {var
         _ck_=caml_check_bound(ctx[1],1)[2],
         _cl_=caml_call1(Int64$6[6],_ck_);
        caml_check_bound(ctx[1],1)[2] = _cl_}
      var _cm_=0 !== idx[1]?1:0,_cn_=_cm_?to_fill <= len$0[1]?1:0:_cm_;
      if(_cn_)
       {caml_call5(blit,buf,off$0[1],ctx[2],idx[1],to_fill);
        sha512_do_chunk(be64_to_cpu$0,ctx,ctx[2],0);
        len$0[1] = len$0[1] - to_fill | 0;
        off$0[1] = off$0[1] + to_fill | 0;
        idx[1] = 0}
      for(;;)
       {if(128 <= len$0[1])
         {sha512_do_chunk(be64_to_cpu,ctx,buf,off$0[1]);
          len$0[1] = len$0[1] - 128 | 0;
          off$0[1] = off$0[1] + 128 | 0;
          continue}
        if(0 !== len$0[1])
         caml_call5(blit,buf,off$0[1],ctx[2],idx[1],len$0[1]);
        return 0}}
    function unsafe_feed_bytes$7(_cc_,_cd_,_ce_,_cf_)
     {return feed$6(blit,be64_to_cpu$0,_cc_,_cd_,_ce_,_cf_)}
    function unsafe_feed_bigstring$7(_b__,_b$_,_ca_,_cb_)
     {return feed$6(blit_from_bigstring,be64_to_cpu,_b__,_b$_,_ca_,_cb_)}
    function unsafe_get$7(ctx)
     {var
       _b3_=caml_check_bound(ctx[1],0)[1],
       index=caml_int64_to_int32(caml_call2(Int64$6[22],_b3_,_aC_)),
       padlen=112 <= index?240 - index | 0:112 - index | 0,
       padding=
        caml_call2(init$0,padlen,function(param){return 0 === param?128:0}),
       bits=caml_create_bytes(16),
       _b4_=caml_check_bound(ctx[1],0)[1],
       _b5_=caml_call2(Int64$6[19],_b4_,61),
       _b6_=caml_check_bound(ctx[1],1)[2],
       _b7_=caml_call2(Int64$6[18],_b6_,3);
      cpu_to_be64$0(bits,0,caml_call2(Int64$6[21],_b7_,_b5_));
      var _b8_=caml_check_bound(ctx[1],0)[1];
      cpu_to_be64$0(bits,8,caml_call2(Int64$6[18],_b8_,3));
      unsafe_feed_bytes$7(ctx,padding,0,padlen);
      unsafe_feed_bytes$7(ctx,bits,0,16);
      var res=caml_create_bytes(64),i=0;
      for(;;)
       {cpu_to_be64$0(res,i * 8 | 0,caml_check_bound(ctx[3],i)[1 + i]);
        var _b9_=i + 1 | 0;
        if(7 !== i){var i=_b9_;continue}
        return res}}
    var
     Unsafe$7=
      [0,
       init$9,
       unsafe_feed_bytes$7,
       unsafe_feed_bigstring$7,
       unsafe_get$7,
       dup$7],
     Baijiu_sha512=[0,Int64$6,Unsafe$7];
    caml_register_global(256,Baijiu_sha512,"Baijiu_sha512");
    function init$10(param)
     {var b=caml_call2(make,128,0);return [0,[0,_aF_,_aE_],b,_aD_.slice()]}
    function unsafe_get$8(ctx)
     {var res=caml_call1(Unsafe$7[4],ctx);return caml_call3(sub$0,res,0,48)}
    var
     dup$8=Unsafe$7[5],
     unsafe_feed_bytes$8=Unsafe$7[2],
     unsafe_feed_bigstring$8=Unsafe$7[3],
     Unsafe$8=
      [0,
       init$10,
       unsafe_feed_bytes$8,
       unsafe_feed_bigstring$8,
       unsafe_get$8,
       dup$8],
     Baijiu_sha384=[0,Unsafe$8];
    caml_register_global(257,Baijiu_sha384,"Baijiu_sha384");
    function init$11(param){return caml_call1(Unsafe$6[2],28)}
    var
     unsafe_get$9=Unsafe$6[13],
     dup$9=Unsafe$6[1],
     unsafe_feed_bytes$9=Unsafe$6[11],
     unsafe_feed_bigstring$9=Unsafe$6[12],
     Unsafe$9=
      [0,
       init$11,
       unsafe_feed_bytes$9,
       unsafe_feed_bigstring$9,
       unsafe_get$9,
       dup$9],
     Baijiu_sha3_224=[0,Unsafe$9];
    caml_register_global(258,Baijiu_sha3_224,"Baijiu_sha3_224");
    function init$12(param){return caml_call1(Unsafe$6[2],32)}
    var
     unsafe_get$10=Unsafe$6[13],
     dup$10=Unsafe$6[1],
     unsafe_feed_bytes$10=Unsafe$6[11],
     unsafe_feed_bigstring$10=Unsafe$6[12],
     Unsafe$10=
      [0,
       init$12,
       unsafe_feed_bytes$10,
       unsafe_feed_bigstring$10,
       unsafe_get$10,
       dup$10],
     Baijiu_sha3_256=[0,Unsafe$10];
    caml_register_global(259,Baijiu_sha3_256,"Baijiu_sha3_256");
    function init$13(param){return caml_call1(Unsafe$6[2],48)}
    var
     unsafe_get$11=Unsafe$6[13],
     dup$11=Unsafe$6[1],
     unsafe_feed_bytes$11=Unsafe$6[11],
     unsafe_feed_bigstring$11=Unsafe$6[12],
     Unsafe$11=
      [0,
       init$13,
       unsafe_feed_bytes$11,
       unsafe_feed_bigstring$11,
       unsafe_get$11,
       dup$11],
     Baijiu_sha3_384=[0,Unsafe$11];
    caml_register_global(260,Baijiu_sha3_384,"Baijiu_sha3_384");
    function init$14(param){return caml_call1(Unsafe$6[2],64)}
    var
     unsafe_get$12=Unsafe$6[13],
     dup$12=Unsafe$6[1],
     unsafe_feed_bytes$12=Unsafe$6[11],
     unsafe_feed_bigstring$12=Unsafe$6[12],
     Unsafe$12=
      [0,
       init$14,
       unsafe_feed_bytes$12,
       unsafe_feed_bigstring$12,
       unsafe_get$12,
       dup$12],
     Baijiu_sha3_512=[0,Unsafe$12];
    caml_register_global(261,Baijiu_sha3_512,"Baijiu_sha3_512");
    var
     zero$14=Stdlib_int64[1],
     one$14=Stdlib_int64[2],
     minus_one$14=Stdlib_int64[3],
     unsigned_div$14=Stdlib_int64[4],
     unsigned_rem$14=Stdlib_int64[5],
     succ$14=Stdlib_int64[6],
     pred$14=Stdlib_int64[7],
     abs$14=Stdlib_int64[8],
     max_int$14=Stdlib_int64[9],
     min_int$14=Stdlib_int64[10],
     lognot$14=Stdlib_int64[11],
     unsigned_to_int$14=Stdlib_int64[12],
     of_string_opt$14=Stdlib_int64[13],
     to_string$16=Stdlib_int64[14],
     compare$15=Stdlib_int64[15],
     unsigned_compare$14=Stdlib_int64[16],
     equal$15=Stdlib_int64[17],
     lsl$13=caml_int64_shift_left,
     lsr$9=caml_int64_shift_right_unsigne,
     asr$9=caml_int64_shift_right,
     lor$9=caml_int64_or,
     land$13=caml_int64_and,
     lxor$10=caml_int64_xor,
     symbol$9=caml_int64_add;
    function ror64$3(a,n)
     {return caml_int64_or
              (caml_int64_shift_right_unsigne(a,n),
               caml_int64_shift_left(a,64 - n | 0))}
    function rol64$3(a,n)
     {return caml_int64_or
              (caml_int64_shift_left(a,n),
               caml_int64_shift_right_unsigne(a,64 - n | 0))}
    var
     Int64$7=
      [0,
       zero$14,
       one$14,
       minus_one$14,
       unsigned_div$14,
       unsigned_rem$14,
       succ$14,
       pred$14,
       abs$14,
       max_int$14,
       min_int$14,
       lognot$14,
       unsigned_to_int$14,
       of_string_opt$14,
       to_string$16,
       compare$15,
       unsigned_compare$14,
       equal$15,
       lsl$13,
       lsr$9,
       asr$9,
       lor$9,
       land$13,
       lxor$10,
       symbol$9,
       ror64$3,
       rol64$3];
    function dup$13(ctx)
     {var
       _b1_=caml_call1(Stdlib_array[8],ctx[3]),
       _b2_=caml_call1(copy$0,ctx[2]);
      return [0,ctx[1],_b2_,_b1_]}
    function init$15(param)
     {var b=caml_call2(make,64,0);
      return [0,_aG_,b,caml_make_vect(8,Int64$7[1])]}
    var
     k$1=
      [0,
       _aO_.slice(),
       _aN_.slice(),
       _aM_.slice(),
       _aL_.slice(),
       _aK_.slice(),
       _aJ_.slice(),
       _aI_.slice(),
       _aH_.slice()];
    function whirlpool_do_chunk(be64_to_cpu,ctx,buf,off)
     {function _bC_(param){return caml_make_vect(8,Int64$7[1])}
      var key=caml_call2(Stdlib_array[2],2,_bC_);
      function _bD_(param){return caml_make_vect(8,Int64$7[1])}
      var
       state=caml_call2(Stdlib_array[2],2,_bD_),
       m=[0,0],
       rc=_aP_.slice(),
       i$3=0;
      for(;;)
       {var _bS_=caml_check_bound(ctx[3],i$3)[1 + i$3];
        caml_check_bound(caml_check_bound(key,0)[1],i$3)[1 + i$3] = _bS_;
        var
         off$0=off + (i$3 * 8 | 0) | 0,
         _bT_=caml_check_bound(ctx[3],i$3)[1 + i$3],
         _bU_=caml_call2(be64_to_cpu,buf,off$0),
         _bV_=caml_call2(Int64$7[23],_bU_,_bT_);
        caml_check_bound(caml_check_bound(state,0)[1],i$3)[1 + i$3] = _bV_;
        var _bW_=caml_check_bound(caml_check_bound(state,0)[1],i$3)[1 + i$3];
        caml_check_bound(ctx[3],i$3)[1 + i$3] = _bW_;
        var _bX_=i$3 + 1 | 0;
        if(7 !== i$3){var i$3=_bX_;continue}
        var
         wp_op=
          function(src,shift)
           {function get_k(i)
             {var
               _b0_=((shift + 8 | 0) - i | 0) & 7,
               v=
                caml_int64_shift_right
                 (caml_check_bound(src,_b0_)[1 + _b0_],56 - (8 * i | 0) | 0),
               _bZ_=caml_int64_to_int32(caml_call2(Int64$7[22],v,_aQ_));
              return caml_check_bound(caml_check_bound(k$1,i)[1 + i],_bZ_)
                      [1 + _bZ_]}
            var _bY_=caml_call2(Stdlib_array[2],8,get_k);
            return caml_call3(Stdlib_array[17],caml_int64_xor,Int64$7[1],_bY_)},
         i$0=0;
        b:
        for(;;)
         {var m1=m[1] ^ 1,m0=m[1],i$2=0;
          for(;;)
           {var _bI_=wp_op(caml_check_bound(key,m0)[1 + m0],i$2);
            caml_check_bound(caml_check_bound(key,m1)[1 + m1],i$2)[1 + i$2]
            =
            _bI_;
            var _bR_=i$2 + 1 | 0;
            if(7 !== i$2){var i$2=_bR_;continue}
            var
             _bM_=caml_check_bound(rc,i$0)[1 + i$0],
             _bN_=caml_check_bound(caml_check_bound(key,m1)[1 + m1],0)[1],
             _bO_=caml_call2(Int64$7[23],_bN_,_bM_);
            caml_check_bound(caml_check_bound(key,m1)[1 + m1],0)[1] = _bO_;
            var i$1=0;
            for(;;)
             {var
               _bJ_=
                caml_check_bound(caml_check_bound(key,m1)[1 + m1],i$1)
                 [1 + i$1],
               _bK_=wp_op(caml_check_bound(state,m0)[1 + m0],i$1),
               _bL_=caml_call2(Int64$7[23],_bK_,_bJ_);
              caml_check_bound(caml_check_bound(state,m1)[1 + m1],i$1)
               [1 + i$1]
              =
              _bL_;
              var _bQ_=i$1 + 1 | 0;
              if(7 !== i$1){var i$1=_bQ_;continue}
              m[1] = m[1] ^ 1;
              var _bP_=i$0 + 1 | 0;
              if(9 !== i$0){var i$0=_bP_;continue b}
              var i=0;
              for(;;)
               {var
                 _bE_=caml_check_bound(caml_check_bound(state,0)[1],i)[1 + i],
                 _bF_=caml_check_bound(ctx[3],i)[1 + i],
                 _bG_=caml_call2(Int64$7[23],_bF_,_bE_);
                caml_check_bound(ctx[3],i)[1 + i] = _bG_;
                var _bH_=i + 1 | 0;
                if(7 !== i){var i=_bH_;continue}
                return 0}}}}}}
    function feed$7(blit,be64_to_cpu,ctx,buf,off,len)
     {var
       idx=[0,caml_int64_to_int32(caml_call2(Int64$7[22],ctx[1],_aR_))],
       len$0=[0,len],
       off$0=[0,off],
       to_fill=64 - idx[1] | 0;
      ctx[1] = caml_int64_add(ctx[1],caml_int64_of_int32(len$0[1]));
      var _bA_=0 !== idx[1]?1:0,_bB_=_bA_?to_fill <= len$0[1]?1:0:_bA_;
      if(_bB_)
       {caml_call5(blit,buf,off$0[1],ctx[2],idx[1],to_fill);
        whirlpool_do_chunk(be64_to_cpu$0,ctx,ctx[2],0);
        len$0[1] = len$0[1] - to_fill | 0;
        off$0[1] = off$0[1] + to_fill | 0;
        idx[1] = 0}
      for(;;)
       {if(64 <= len$0[1])
         {whirlpool_do_chunk(be64_to_cpu,ctx,buf,off$0[1]);
          len$0[1] = len$0[1] - 64 | 0;
          off$0[1] = off$0[1] + 64 | 0;
          continue}
        if(0 !== len$0[1])
         caml_call5(blit,buf,off$0[1],ctx[2],idx[1],len$0[1]);
        return 0}}
    function unsafe_feed_bytes$13(_bw_,_bx_,_by_,_bz_)
     {return feed$7(blit,be64_to_cpu$0,_bw_,_bx_,_by_,_bz_)}
    function unsafe_feed_bigstring$13(_bs_,_bt_,_bu_,_bv_)
     {return feed$7(blit_from_bigstring,be64_to_cpu,_bs_,_bt_,_bu_,_bv_)}
    function unsafe_get$13(ctx)
     {var
       index=
        caml_int64_to_int32(caml_call2(Int64$7[22],ctx[1],_aS_)) + 1 | 0;
      caml_bytes_set(ctx[2],index - 1 | 0,128);
      if(32 < index)
       {caml_call4(fill,ctx[2],index,64 - index | 0,0);
        whirlpool_do_chunk(be64_to_cpu$0,ctx,ctx[2],0);
        caml_call4(fill,ctx[2],0,56,0)}
      else
       caml_call4(fill,ctx[2],index,56 - index | 0,0);
      var _bq_=caml_call2(Int64$7[18],ctx[1],3);
      cpu_to_be64$0(ctx[2],56,_bq_);
      whirlpool_do_chunk(be64_to_cpu$0,ctx,ctx[2],0);
      var res=caml_create_bytes(64),i=0;
      for(;;)
       {cpu_to_be64$0(res,i * 8 | 0,caml_check_bound(ctx[3],i)[1 + i]);
        var _br_=i + 1 | 0;
        if(7 !== i){var i=_br_;continue}
        return res}}
    var
     Unsafe$13=
      [0,
       init$15,
       unsafe_feed_bytes$13,
       unsafe_feed_bigstring$13,
       unsafe_get$13,
       dup$13],
     Baijiu_whirlpool=[0,Int64$7,Unsafe$13];
    caml_register_global(262,Baijiu_whirlpool,"Baijiu_whirlpool");
    function Make$2(Hash,D)
     {var
       digest_size=D[1],
       block_size=D[2],
       empty=caml_call1(Hash[1],0),
       init=Hash[1];
      function unsafe_feed_bytes(ctx,off,match,buf)
       {if(off)
         {var _bp_=off[1];
          if(match)
           var len=match[1],len$0=len,off$0=_bp_;
          else
           var len$0=caml_ml_bytes_length(buf) - _bp_ | 0,off$0=_bp_}
        else
         if(match)
          var len$1=match[1],len$0=len$1,off$0=0;
         else
          var len$2=caml_ml_bytes_length(buf),len$0=len$2,off$0=0;
        if
         (0
          <=
          off$0
          &&
          0
          <=
          len$0
          &&
          !
          ((caml_ml_bytes_length(buf) - len$0 | 0) < off$0))
         return caml_call4(Hash[2],ctx,buf,off$0,len$0);
        return caml_call1(Stdlib[1],cst_offset_out_of_bounds)}
      function unsafe_feed_string(ctx,off,len,buf)
       {return unsafe_feed_bytes(ctx,off,len,caml_call1(unsafe_of_string,buf))}
      function unsafe_feed_bigstring(ctx,off,match,buf)
       {if(off)
         {var _bo_=off[1];
          if(match)
           var len=match[1],len$0=len,off$0=_bo_;
          else
           var len$0=caml_ba_dim_1(buf) - _bo_ | 0,off$0=_bo_}
        else
         if(match)
          var len$1=match[1],len$0=len$1,off$0=0;
         else
          var len$2=caml_ba_dim_1(buf),len$0=len$2,off$0=0;
        if
         (0
          <=
          off$0
          &&
          0
          <=
          len$0
          &&
          !
          ((caml_ba_dim_1(buf) - len$0 | 0) < off$0))
         return caml_call4(Hash[3],ctx,buf,off$0,len$0);
        return caml_call1(Stdlib[1],cst_offset_out_of_bounds$0)}
      var
       unsafe_get=Hash[4],
       _bh_=Make$1([0,D[1]]),
       to_hex=_bh_[1],
       code=_bh_[2],
       decode=_bh_[3],
       of_hex=_bh_[4],
       of_hex_opt=_bh_[5],
       consistent_of_hex=_bh_[6],
       consistent_of_hex_opt=_bh_[7],
       pp=_bh_[8],
       of_raw_string=_bh_[9],
       of_raw_string_opt=_bh_[10],
       to_raw_string=_bh_[11],
       include=Make$0([0,D[1]]),
       equal=include[1],
       unsafe_compare=include[2];
      function get(t)
       {var t$0=caml_call1(Hash[5],t);
        return caml_call1(unsafe_to_string,caml_call1(unsafe_get,t$0))}
      function feed_bytes(t,off,len,buf)
       {var t$0=caml_call1(Hash[5],t);
        unsafe_feed_bytes(t$0,off,len,buf);
        return t$0}
      function feed_string(t,off,len,buf)
       {var t$0=caml_call1(Hash[5],t);
        unsafe_feed_string(t$0,off,len,buf);
        return t$0}
      function feed_bigstring(t,off,len,buf)
       {var t$0=caml_call1(Hash[5],t);
        unsafe_feed_bigstring(t$0,off,len,buf);
        return t$0}
      function feedi_bytes(t,iter)
       {var t$0=caml_call1(Hash[5],t);
        function feed(buf){return unsafe_feed_bytes(t$0,0,0,buf)}
        caml_call1(iter,feed);
        return t$0}
      function feedi_string(t,iter)
       {var t$0=caml_call1(Hash[5],t);
        function feed(buf){return unsafe_feed_string(t$0,0,0,buf)}
        caml_call1(iter,feed);
        return t$0}
      function feedi_bigstring(t,iter)
       {var t$0=caml_call1(Hash[5],t);
        function feed(buf){return unsafe_feed_bigstring(t$0,0,0,buf)}
        caml_call1(iter,feed);
        return t$0}
      function digest_bytes(off,len,buf)
       {return get(feed_bytes(empty,off,len,buf))}
      function digest_string(off,len,buf)
       {return get(feed_string(empty,off,len,buf))}
      function digest_bigstring(off,len,buf)
       {return get(feed_bigstring(empty,off,len,buf))}
      function digesti_bytes(iter){return get(feedi_bytes(empty,iter))}
      function digesti_string(iter){return get(feedi_string(empty,iter))}
      function digesti_bigstring(iter)
       {return get(feedi_bigstring(empty,iter))}
      function digestv_bytes(lst)
       {return digesti_bytes
                (function(f){return caml_call2(Stdlib_list[15],f,lst)})}
      function digestv_string(lst)
       {return digesti_string
                (function(f){return caml_call2(Stdlib_list[15],f,lst)})}
      function digestv_bigstring(lst)
       {return digesti_bigstring
                (function(f){return caml_call2(Stdlib_list[15],f,lst)})}
      var
       bytes_opad=caml_call2(init$0,block_size,function(param){return 92}),
       bytes_ipad=caml_call2(init$0,block_size,function(param){return 54});
      function norm_bytes(key)
       {var key$0=key;
        for(;;)
         {var
           match=
            runtime.caml_int_compare(caml_ml_string_length(key$0),block_size),
           switcher=match + 1 | 0;
          if(! (2 < switcher >>> 0))
           switch(switcher)
            {case 0:
              return rpad(caml_call1(Stdlib_bytes[43],key$0),block_size,0);
             case 1:break;
             default:var key$1=digest_string(0,0,key$0),key$0=key$1;continue}
          return caml_call1(of_string,key$0)}}
      function hmaci_bytes(key,iter)
       {var
         key$0=norm_bytes(key),
         outer=caml_call2(Bytes[3],key$0,bytes_opad),
         inner=caml_call2(Bytes[3],key$0,bytes_ipad),
         ctx=feed_bytes(empty,0,0,inner),
         res=get(feedi_bytes(ctx,iter)),
         ctx$0=feed_bytes(empty,0,0,outer);
        return get(feed_string(ctx$0,0,0,res))}
      function hmaci_string(key,iter)
       {var
         key$0=norm_bytes(key),
         outer=caml_call2(Bytes[3],key$0,bytes_opad),
         inner=caml_call2(Bytes[3],key$0,bytes_ipad),
         ctx=feed_bytes(empty,0,0,inner),
         res=get(feedi_string(ctx,iter)),
         ctx$0=feed_bytes(empty,0,0,outer);
        return get(feed_string(ctx$0,0,0,res))}
      function hmaci_bigstring(key,iter)
       {var
         key$0=norm_bytes(key),
         outer=caml_call2(Bytes[3],key$0,bytes_opad),
         inner=caml_call2(Bytes[3],key$0,bytes_ipad),
         ctx=feed_bytes(empty,0,0,inner),
         res=get(feedi_bigstring(ctx,iter)),
         ctx$0=feed_bytes(empty,0,0,outer);
        return get(feed_string(ctx$0,0,0,res))}
      function hmac_bytes(key,off,match,buf)
       {if(off)
         {var _bm_=off[1];
          if(match)
           var len=match[1],_bn_=caml_call3(sub$0,buf,_bm_,len);
          else
           var
            _bn_=
             caml_call3(sub$0,buf,_bm_,caml_ml_bytes_length(buf) - _bm_ | 0);
          var buf$0=_bn_}
        else
         if(match)
          var len$0=match[1],buf$0=caml_call3(sub$0,buf,0,len$0);
         else
          var buf$0=buf;
        return hmaci_bytes(key,function(f){return caml_call1(f,buf$0)})}
      function hmac_string(key,off,match,buf)
       {if(off)
         {var _bk_=off[1];
          if(match)
           var len=match[1],_bl_=caml_call3(Stdlib_string[4],buf,_bk_,len);
          else
           var
            _bl_=
             caml_call3
              (Stdlib_string[4],
               buf,
               _bk_,
               caml_ml_string_length(buf) - _bk_ | 0);
          var buf$0=_bl_}
        else
         if(match)
          var len$0=match[1],buf$0=caml_call3(Stdlib_string[4],buf,0,len$0);
         else
          var buf$0=buf;
        return hmaci_string(key,function(f){return caml_call1(f,buf$0)})}
      function hmac_bigstring(key,off,match,buf)
       {if(off)
         {var _bi_=off[1];
          if(match)
           var len=match[1],_bj_=caml_ba_sub(buf,_bi_,len);
          else
           var _bj_=caml_ba_sub(buf,_bi_,caml_ba_dim_1(buf) - _bi_ | 0);
          var buf$0=_bj_}
        else
         if(match)
          var len$0=match[1],buf$0=caml_ba_sub(buf,0,len$0);
         else
          var buf$0=buf;
        return hmaci_bigstring(key,function(f){return caml_call1(f,buf$0)})}
      function hmacv_bytes(key,bufs)
       {return hmaci_bytes
                (key,function(f){return caml_call2(Stdlib_list[15],f,bufs)})}
      function hmacv_string(key,bufs)
       {return hmaci_string
                (key,function(f){return caml_call2(Stdlib_list[15],f,bufs)})}
      function hmacv_bigstring(key,bufs)
       {return hmaci_bigstring
                (key,function(f){return caml_call2(Stdlib_list[15],f,bufs)})}
      return [0,
              digest_size,
              block_size,
              empty,
              init,
              unsafe_feed_bytes,
              unsafe_feed_string,
              unsafe_feed_bigstring,
              unsafe_get,
              to_hex,
              code,
              decode,
              of_hex,
              of_hex_opt,
              consistent_of_hex,
              consistent_of_hex_opt,
              pp,
              of_raw_string,
              of_raw_string_opt,
              to_raw_string,
              equal,
              unsafe_compare,
              get,
              feed_bytes,
              feed_string,
              feed_bigstring,
              feedi_bytes,
              feedi_string,
              feedi_bigstring,
              digest_bytes,
              digest_string,
              digest_bigstring,
              digesti_bytes,
              digesti_string,
              digesti_bigstring,
              digestv_bytes,
              digestv_string,
              digestv_bigstring,
              bytes_opad,
              bytes_ipad,
              norm_bytes,
              hmaci_bytes,
              hmaci_string,
              hmaci_bigstring,
              hmac_bytes,
              hmac_string,
              hmac_bigstring,
              hmacv_bytes,
              hmacv_string,
              hmacv_bigstring]}
    function Make_BLAKE2(H,D)
     {if(H[6] < D[1])
       {var _a9_=D[1];
        caml_call1(caml_call2(Stdlib_format[133],Stdlib[2],fmt),_a9_)}
      function init(param){return caml_call4(H[1],D[1],empty$0,0,0)}
      var
       unsafe_feed_bytes=H[2],
       unsafe_feed_bigstring=H[3],
       unsafe_get=H[4],
       dup=H[5],
       include=
        Make$2
         ([0,init,unsafe_feed_bytes,unsafe_feed_bigstring,unsafe_get,dup],D),
       digest_size=include[1],
       block_size=include[2],
       empty=include[3],
       init$0=include[4],
       unsafe_feed_bytes$0=include[5],
       unsafe_feed_string=include[6],
       unsafe_feed_bigstring$0=include[7],
       unsafe_get$0=include[8],
       to_hex=include[9],
       code=include[10],
       decode=include[11],
       of_hex=include[12],
       of_hex_opt=include[13],
       consistent_of_hex=include[14],
       consistent_of_hex_opt=include[15],
       pp=include[16],
       of_raw_string=include[17],
       of_raw_string_opt=include[18],
       to_raw_string=include[19],
       equal=include[20],
       unsafe_compare=include[21],
       get=include[22],
       feed_bytes=include[23],
       feed_string=include[24],
       feed_bigstring=include[25],
       feedi_bytes=include[26],
       feedi_string=include[27],
       feedi_bigstring=include[28],
       digest_bytes=include[29],
       digest_string=include[30],
       digest_bigstring=include[31],
       digesti_bytes=include[32],
       digesti_string=include[33],
       digesti_bigstring=include[34],
       digestv_bytes=include[35],
       digestv_string=include[36],
       digestv_bigstring=include[37],
       bytes_opad=include[38],
       bytes_ipad=include[39],
       norm_bytes=include[40],
       hmaci_bytes=include[41],
       hmaci_string=include[42],
       hmaci_bigstring=include[43],
       hmac_bytes=include[44],
       hmac_string=include[45],
       hmac_bigstring=include[46],
       hmacv_bytes=include[47],
       hmacv_string=include[48],
       hmacv_bigstring=include[49];
      function maci_bytes(key,iter)
       {var
         _bg_=caml_call1(Stdlib_bytes[43],key),
         ctx=caml_call4(H[1],digest_size,_bg_,0,caml_ml_string_length(key));
        return caml_call1(get,caml_call2(feedi_bytes,ctx,iter))}
      function maci_string(key,iter)
       {var
         _bf_=caml_call1(Stdlib_bytes[43],key),
         ctx=caml_call4(H[1],digest_size,_bf_,0,caml_ml_string_length(key));
        return caml_call1(get,caml_call2(feedi_string,ctx,iter))}
      function maci_bigstring(key,iter)
       {var
         _be_=caml_call1(Stdlib_bytes[43],key),
         ctx=caml_call4(H[1],digest_size,_be_,0,caml_ml_string_length(key));
        return caml_call1(get,caml_call2(feedi_bigstring,ctx,iter))}
      function mac_bytes(key,off,match,buf)
       {if(off)
         {var _bc_=off[1];
          if(match)
           var len=match[1],_bd_=caml_call3(sub$0,buf,_bc_,len);
          else
           var
            _bd_=
             caml_call3(sub$0,buf,_bc_,caml_ml_bytes_length(buf) - _bc_ | 0);
          var buf$0=_bd_}
        else
         if(match)
          var len$0=match[1],buf$0=caml_call3(sub$0,buf,0,len$0);
         else
          var buf$0=buf;
        return maci_bytes(key,function(f){return caml_call1(f,buf$0)})}
      function mac_string(key,off,match,buf)
       {if(off)
         {var _ba_=off[1];
          if(match)
           var len=match[1],_bb_=caml_call3(Stdlib_string[4],buf,_ba_,len);
          else
           var
            _bb_=
             caml_call3
              (Stdlib_string[4],
               buf,
               _ba_,
               caml_ml_string_length(buf) - _ba_ | 0);
          var buf$0=_bb_}
        else
         if(match)
          var len$0=match[1],buf$0=caml_call3(Stdlib_string[4],buf,0,len$0);
         else
          var buf$0=buf;
        return maci_string(key,function(f){return caml_call1(f,buf$0)})}
      function mac_bigstring(key,off,match,buf)
       {if(off)
         {var _a__=off[1];
          if(match)
           var len=match[1],_a$_=caml_ba_sub(buf,_a__,len);
          else
           var _a$_=caml_ba_sub(buf,_a__,caml_ba_dim_1(buf) - _a__ | 0);
          var buf$0=_a$_}
        else
         if(match)
          var len$0=match[1],buf$0=caml_ba_sub(buf,0,len$0);
         else
          var buf$0=buf;
        return maci_bigstring(key,function(f){return caml_call1(f,buf$0)})}
      function macv_bytes(key,bufs)
       {return maci_bytes
                (key,function(f){return caml_call2(Stdlib_list[15],f,bufs)})}
      function macv_string(key,bufs)
       {return maci_string
                (key,function(f){return caml_call2(Stdlib_list[15],f,bufs)})}
      function macv_bigstring(key,bufs)
       {return maci_bigstring
                (key,function(f){return caml_call2(Stdlib_list[15],f,bufs)})}
      var
       Keyed=
        [0,
         maci_bytes,
         maci_string,
         maci_bigstring,
         mac_bytes,
         mac_string,
         mac_bigstring,
         macv_bytes,
         macv_string,
         macv_bigstring];
      return [0,
              digest_size,
              block_size,
              empty,
              init$0,
              unsafe_feed_bytes$0,
              unsafe_feed_string,
              unsafe_feed_bigstring$0,
              unsafe_get$0,
              to_hex,
              code,
              decode,
              of_hex,
              of_hex_opt,
              consistent_of_hex,
              consistent_of_hex_opt,
              pp,
              of_raw_string,
              of_raw_string_opt,
              to_raw_string,
              equal,
              unsafe_compare,
              get,
              feed_bytes,
              feed_string,
              feed_bigstring,
              feedi_bytes,
              feedi_string,
              feedi_bigstring,
              digest_bytes,
              digest_string,
              digest_bigstring,
              digesti_bytes,
              digesti_string,
              digesti_bigstring,
              digestv_bytes,
              digestv_string,
              digestv_bigstring,
              bytes_opad,
              bytes_ipad,
              norm_bytes,
              hmaci_bytes,
              hmaci_string,
              hmaci_bigstring,
              hmac_bytes,
              hmac_string,
              hmac_bigstring,
              hmacv_bytes,
              hmacv_string,
              hmacv_bigstring,
              Keyed]}
    var
     _a8_=Make$2(Unsafe$1,[0,16,64]),
     MD5=
      [0,
       _a8_[1],
       _a8_[3],
       _a8_[4],
       _a8_[23],
       _a8_[24],
       _a8_[25],
       _a8_[26],
       _a8_[27],
       _a8_[28],
       _a8_[22],
       _a8_[29],
       _a8_[30],
       _a8_[31],
       _a8_[32],
       _a8_[33],
       _a8_[34],
       _a8_[35],
       _a8_[36],
       _a8_[37],
       _a8_[44],
       _a8_[45],
       _a8_[46],
       _a8_[41],
       _a8_[42],
       _a8_[43],
       _a8_[47],
       _a8_[48],
       _a8_[49],
       _a8_[21],
       _a8_[20],
       _a8_[16],
       _a8_[12],
       _a8_[13],
       _a8_[14],
       _a8_[15],
       _a8_[9],
       _a8_[17],
       _a8_[18],
       _a8_[19]],
     _a7_=Make$2(Unsafe$3,[0,20,64]),
     SHA1=
      [0,
       _a7_[1],
       _a7_[3],
       _a7_[4],
       _a7_[23],
       _a7_[24],
       _a7_[25],
       _a7_[26],
       _a7_[27],
       _a7_[28],
       _a7_[22],
       _a7_[29],
       _a7_[30],
       _a7_[31],
       _a7_[32],
       _a7_[33],
       _a7_[34],
       _a7_[35],
       _a7_[36],
       _a7_[37],
       _a7_[44],
       _a7_[45],
       _a7_[46],
       _a7_[41],
       _a7_[42],
       _a7_[43],
       _a7_[47],
       _a7_[48],
       _a7_[49],
       _a7_[21],
       _a7_[20],
       _a7_[16],
       _a7_[12],
       _a7_[13],
       _a7_[14],
       _a7_[15],
       _a7_[9],
       _a7_[17],
       _a7_[18],
       _a7_[19]],
     _a6_=Make$2(Unsafe$5,[0,28,64]),
     SHA224=
      [0,
       _a6_[1],
       _a6_[3],
       _a6_[4],
       _a6_[23],
       _a6_[24],
       _a6_[25],
       _a6_[26],
       _a6_[27],
       _a6_[28],
       _a6_[22],
       _a6_[29],
       _a6_[30],
       _a6_[31],
       _a6_[32],
       _a6_[33],
       _a6_[34],
       _a6_[35],
       _a6_[36],
       _a6_[37],
       _a6_[44],
       _a6_[45],
       _a6_[46],
       _a6_[41],
       _a6_[42],
       _a6_[43],
       _a6_[47],
       _a6_[48],
       _a6_[49],
       _a6_[21],
       _a6_[20],
       _a6_[16],
       _a6_[12],
       _a6_[13],
       _a6_[14],
       _a6_[15],
       _a6_[9],
       _a6_[17],
       _a6_[18],
       _a6_[19]],
     _a5_=Make$2(Unsafe$4,[0,32,64]),
     SHA256=
      [0,
       _a5_[1],
       _a5_[3],
       _a5_[4],
       _a5_[23],
       _a5_[24],
       _a5_[25],
       _a5_[26],
       _a5_[27],
       _a5_[28],
       _a5_[22],
       _a5_[29],
       _a5_[30],
       _a5_[31],
       _a5_[32],
       _a5_[33],
       _a5_[34],
       _a5_[35],
       _a5_[36],
       _a5_[37],
       _a5_[44],
       _a5_[45],
       _a5_[46],
       _a5_[41],
       _a5_[42],
       _a5_[43],
       _a5_[47],
       _a5_[48],
       _a5_[49],
       _a5_[21],
       _a5_[20],
       _a5_[16],
       _a5_[12],
       _a5_[13],
       _a5_[14],
       _a5_[15],
       _a5_[9],
       _a5_[17],
       _a5_[18],
       _a5_[19]],
     _a4_=Make$2(Unsafe$8,[0,48,128]),
     SHA384=
      [0,
       _a4_[1],
       _a4_[3],
       _a4_[4],
       _a4_[23],
       _a4_[24],
       _a4_[25],
       _a4_[26],
       _a4_[27],
       _a4_[28],
       _a4_[22],
       _a4_[29],
       _a4_[30],
       _a4_[31],
       _a4_[32],
       _a4_[33],
       _a4_[34],
       _a4_[35],
       _a4_[36],
       _a4_[37],
       _a4_[44],
       _a4_[45],
       _a4_[46],
       _a4_[41],
       _a4_[42],
       _a4_[43],
       _a4_[47],
       _a4_[48],
       _a4_[49],
       _a4_[21],
       _a4_[20],
       _a4_[16],
       _a4_[12],
       _a4_[13],
       _a4_[14],
       _a4_[15],
       _a4_[9],
       _a4_[17],
       _a4_[18],
       _a4_[19]],
     _a3_=Make$2(Unsafe$7,[0,64,128]),
     SHA512=
      [0,
       _a3_[1],
       _a3_[3],
       _a3_[4],
       _a3_[23],
       _a3_[24],
       _a3_[25],
       _a3_[26],
       _a3_[27],
       _a3_[28],
       _a3_[22],
       _a3_[29],
       _a3_[30],
       _a3_[31],
       _a3_[32],
       _a3_[33],
       _a3_[34],
       _a3_[35],
       _a3_[36],
       _a3_[37],
       _a3_[44],
       _a3_[45],
       _a3_[46],
       _a3_[41],
       _a3_[42],
       _a3_[43],
       _a3_[47],
       _a3_[48],
       _a3_[49],
       _a3_[21],
       _a3_[20],
       _a3_[16],
       _a3_[12],
       _a3_[13],
       _a3_[14],
       _a3_[15],
       _a3_[9],
       _a3_[17],
       _a3_[18],
       _a3_[19]],
     _a2_=Make$2(Unsafe$9,[0,28,144]),
     SHA3_224=
      [0,
       _a2_[1],
       _a2_[3],
       _a2_[4],
       _a2_[23],
       _a2_[24],
       _a2_[25],
       _a2_[26],
       _a2_[27],
       _a2_[28],
       _a2_[22],
       _a2_[29],
       _a2_[30],
       _a2_[31],
       _a2_[32],
       _a2_[33],
       _a2_[34],
       _a2_[35],
       _a2_[36],
       _a2_[37],
       _a2_[44],
       _a2_[45],
       _a2_[46],
       _a2_[41],
       _a2_[42],
       _a2_[43],
       _a2_[47],
       _a2_[48],
       _a2_[49],
       _a2_[21],
       _a2_[20],
       _a2_[16],
       _a2_[12],
       _a2_[13],
       _a2_[14],
       _a2_[15],
       _a2_[9],
       _a2_[17],
       _a2_[18],
       _a2_[19]],
     _a1_=Make$2(Unsafe$10,[0,32,136]),
     SHA3_256=
      [0,
       _a1_[1],
       _a1_[3],
       _a1_[4],
       _a1_[23],
       _a1_[24],
       _a1_[25],
       _a1_[26],
       _a1_[27],
       _a1_[28],
       _a1_[22],
       _a1_[29],
       _a1_[30],
       _a1_[31],
       _a1_[32],
       _a1_[33],
       _a1_[34],
       _a1_[35],
       _a1_[36],
       _a1_[37],
       _a1_[44],
       _a1_[45],
       _a1_[46],
       _a1_[41],
       _a1_[42],
       _a1_[43],
       _a1_[47],
       _a1_[48],
       _a1_[49],
       _a1_[21],
       _a1_[20],
       _a1_[16],
       _a1_[12],
       _a1_[13],
       _a1_[14],
       _a1_[15],
       _a1_[9],
       _a1_[17],
       _a1_[18],
       _a1_[19]],
     _a0_=Make$2(Unsafe$11,[0,48,104]),
     SHA3_384=
      [0,
       _a0_[1],
       _a0_[3],
       _a0_[4],
       _a0_[23],
       _a0_[24],
       _a0_[25],
       _a0_[26],
       _a0_[27],
       _a0_[28],
       _a0_[22],
       _a0_[29],
       _a0_[30],
       _a0_[31],
       _a0_[32],
       _a0_[33],
       _a0_[34],
       _a0_[35],
       _a0_[36],
       _a0_[37],
       _a0_[44],
       _a0_[45],
       _a0_[46],
       _a0_[41],
       _a0_[42],
       _a0_[43],
       _a0_[47],
       _a0_[48],
       _a0_[49],
       _a0_[21],
       _a0_[20],
       _a0_[16],
       _a0_[12],
       _a0_[13],
       _a0_[14],
       _a0_[15],
       _a0_[9],
       _a0_[17],
       _a0_[18],
       _a0_[19]],
     _aZ_=Make$2(Unsafe$12,[0,64,72]),
     SHA3_512=
      [0,
       _aZ_[1],
       _aZ_[3],
       _aZ_[4],
       _aZ_[23],
       _aZ_[24],
       _aZ_[25],
       _aZ_[26],
       _aZ_[27],
       _aZ_[28],
       _aZ_[22],
       _aZ_[29],
       _aZ_[30],
       _aZ_[31],
       _aZ_[32],
       _aZ_[33],
       _aZ_[34],
       _aZ_[35],
       _aZ_[36],
       _aZ_[37],
       _aZ_[44],
       _aZ_[45],
       _aZ_[46],
       _aZ_[41],
       _aZ_[42],
       _aZ_[43],
       _aZ_[47],
       _aZ_[48],
       _aZ_[49],
       _aZ_[21],
       _aZ_[20],
       _aZ_[16],
       _aZ_[12],
       _aZ_[13],
       _aZ_[14],
       _aZ_[15],
       _aZ_[9],
       _aZ_[17],
       _aZ_[18],
       _aZ_[19]],
     _aY_=Make$2(Unsafe$13,[0,64,64]),
     WHIRLPOOL=
      [0,
       _aY_[1],
       _aY_[3],
       _aY_[4],
       _aY_[23],
       _aY_[24],
       _aY_[25],
       _aY_[26],
       _aY_[27],
       _aY_[28],
       _aY_[22],
       _aY_[29],
       _aY_[30],
       _aY_[31],
       _aY_[32],
       _aY_[33],
       _aY_[34],
       _aY_[35],
       _aY_[36],
       _aY_[37],
       _aY_[44],
       _aY_[45],
       _aY_[46],
       _aY_[41],
       _aY_[42],
       _aY_[43],
       _aY_[47],
       _aY_[48],
       _aY_[49],
       _aY_[21],
       _aY_[20],
       _aY_[16],
       _aY_[12],
       _aY_[13],
       _aY_[14],
       _aY_[15],
       _aY_[9],
       _aY_[17],
       _aY_[18],
       _aY_[19]],
     _aX_=
      Make_BLAKE2
       ([0,Unsafe[2],Unsafe[4],Unsafe[5],Unsafe[6],Unsafe[7],Unsafe[8]],
        [0,64,128]),
     _aT_=_aX_[50],
     BLAKE2B=
      [0,
       _aX_[1],
       _aX_[3],
       _aX_[4],
       _aX_[23],
       _aX_[24],
       _aX_[25],
       _aX_[26],
       _aX_[27],
       _aX_[28],
       _aX_[22],
       _aX_[29],
       _aX_[30],
       _aX_[31],
       _aX_[32],
       _aX_[33],
       _aX_[34],
       _aX_[35],
       _aX_[36],
       _aX_[37],
       _aX_[44],
       _aX_[45],
       _aX_[46],
       _aX_[41],
       _aX_[42],
       _aX_[43],
       _aX_[47],
       _aX_[48],
       _aX_[49],
       _aX_[21],
       _aX_[20],
       _aX_[16],
       _aX_[12],
       _aX_[13],
       _aX_[14],
       _aX_[15],
       _aX_[9],
       _aX_[17],
       _aX_[18],
       _aX_[19],
       [0,
        _aT_[4],
        _aT_[5],
        _aT_[6],
        _aT_[1],
        _aT_[2],
        _aT_[3],
        _aT_[7],
        _aT_[8],
        _aT_[9]]],
     _aW_=
      Make_BLAKE2
       ([0,
         Unsafe$0[2],
         Unsafe$0[4],
         Unsafe$0[5],
         Unsafe$0[6],
         Unsafe$0[7],
         Unsafe$0[8]],
        [0,32,64]),
     _aU_=_aW_[50],
     BLAKE2S=
      [0,
       _aW_[1],
       _aW_[3],
       _aW_[4],
       _aW_[23],
       _aW_[24],
       _aW_[25],
       _aW_[26],
       _aW_[27],
       _aW_[28],
       _aW_[22],
       _aW_[29],
       _aW_[30],
       _aW_[31],
       _aW_[32],
       _aW_[33],
       _aW_[34],
       _aW_[35],
       _aW_[36],
       _aW_[37],
       _aW_[44],
       _aW_[45],
       _aW_[46],
       _aW_[41],
       _aW_[42],
       _aW_[43],
       _aW_[47],
       _aW_[48],
       _aW_[49],
       _aW_[21],
       _aW_[20],
       _aW_[16],
       _aW_[12],
       _aW_[13],
       _aW_[14],
       _aW_[15],
       _aW_[9],
       _aW_[17],
       _aW_[18],
       _aW_[19],
       [0,
        _aU_[4],
        _aU_[5],
        _aU_[6],
        _aU_[1],
        _aU_[2],
        _aU_[3],
        _aU_[7],
        _aU_[8],
        _aU_[9]]],
     _aV_=Make$2(Unsafe$2,[0,20,64]),
     RMD160=
      [0,
       _aV_[1],
       _aV_[3],
       _aV_[4],
       _aV_[23],
       _aV_[24],
       _aV_[25],
       _aV_[26],
       _aV_[27],
       _aV_[28],
       _aV_[22],
       _aV_[29],
       _aV_[30],
       _aV_[31],
       _aV_[32],
       _aV_[33],
       _aV_[34],
       _aV_[35],
       _aV_[36],
       _aV_[37],
       _aV_[44],
       _aV_[45],
       _aV_[46],
       _aV_[41],
       _aV_[42],
       _aV_[43],
       _aV_[47],
       _aV_[48],
       _aV_[49],
       _aV_[21],
       _aV_[20],
       _aV_[16],
       _aV_[12],
       _aV_[13],
       _aV_[14],
       _aV_[15],
       _aV_[9],
       _aV_[17],
       _aV_[18],
       _aV_[19]];
    function Make_BLAKE2B(D)
     {var
       digest_size=D[1],
       include=
        Make_BLAKE2
         ([0,Unsafe[2],Unsafe[4],Unsafe[5],Unsafe[6],Unsafe[7],Unsafe[8]],
          [0,digest_size,128]),
       digest_size$0=include[1],
       empty=include[3],
       init=include[4],
       to_hex=include[9],
       of_hex=include[12],
       of_hex_opt=include[13],
       consistent_of_hex=include[14],
       consistent_of_hex_opt=include[15],
       pp=include[16],
       of_raw_string=include[17],
       of_raw_string_opt=include[18],
       to_raw_string=include[19],
       equal=include[20],
       unsafe_compare=include[21],
       get=include[22],
       feed_bytes=include[23],
       feed_string=include[24],
       feed_bigstring=include[25],
       feedi_bytes=include[26],
       feedi_string=include[27],
       feedi_bigstring=include[28],
       digest_bytes=include[29],
       digest_string=include[30],
       digest_bigstring=include[31],
       digesti_bytes=include[32],
       digesti_string=include[33],
       digesti_bigstring=include[34],
       digestv_bytes=include[35],
       digestv_string=include[36],
       digestv_bigstring=include[37],
       hmaci_bytes=include[41],
       hmaci_string=include[42],
       hmaci_bigstring=include[43],
       hmac_bytes=include[44],
       hmac_string=include[45],
       hmac_bigstring=include[46],
       hmacv_bytes=include[47],
       hmacv_string=include[48],
       hmacv_bigstring=include[49];
      return [0,
              digest_size$0,
              empty,
              init,
              feed_bytes,
              feed_string,
              feed_bigstring,
              feedi_bytes,
              feedi_string,
              feedi_bigstring,
              get,
              digest_bytes,
              digest_string,
              digest_bigstring,
              digesti_bytes,
              digesti_string,
              digesti_bigstring,
              digestv_bytes,
              digestv_string,
              digestv_bigstring,
              hmac_bytes,
              hmac_string,
              hmac_bigstring,
              hmaci_bytes,
              hmaci_string,
              hmaci_bigstring,
              hmacv_bytes,
              hmacv_string,
              hmacv_bigstring,
              unsafe_compare,
              equal,
              pp,
              of_hex,
              of_hex_opt,
              consistent_of_hex,
              consistent_of_hex_opt,
              to_hex,
              of_raw_string,
              of_raw_string_opt,
              to_raw_string]}
    function Make_BLAKE2S(D)
     {var
       digest_size=D[1],
       include=
        Make_BLAKE2
         ([0,
           Unsafe$0[2],
           Unsafe$0[4],
           Unsafe$0[5],
           Unsafe$0[6],
           Unsafe$0[7],
           Unsafe$0[8]],
          [0,digest_size,64]),
       digest_size$0=include[1],
       empty=include[3],
       init=include[4],
       to_hex=include[9],
       of_hex=include[12],
       of_hex_opt=include[13],
       consistent_of_hex=include[14],
       consistent_of_hex_opt=include[15],
       pp=include[16],
       of_raw_string=include[17],
       of_raw_string_opt=include[18],
       to_raw_string=include[19],
       equal=include[20],
       unsafe_compare=include[21],
       get=include[22],
       feed_bytes=include[23],
       feed_string=include[24],
       feed_bigstring=include[25],
       feedi_bytes=include[26],
       feedi_string=include[27],
       feedi_bigstring=include[28],
       digest_bytes=include[29],
       digest_string=include[30],
       digest_bigstring=include[31],
       digesti_bytes=include[32],
       digesti_string=include[33],
       digesti_bigstring=include[34],
       digestv_bytes=include[35],
       digestv_string=include[36],
       digestv_bigstring=include[37],
       hmaci_bytes=include[41],
       hmaci_string=include[42],
       hmaci_bigstring=include[43],
       hmac_bytes=include[44],
       hmac_string=include[45],
       hmac_bigstring=include[46],
       hmacv_bytes=include[47],
       hmacv_string=include[48],
       hmacv_bigstring=include[49];
      return [0,
              digest_size$0,
              empty,
              init,
              feed_bytes,
              feed_string,
              feed_bigstring,
              feedi_bytes,
              feedi_string,
              feedi_bigstring,
              get,
              digest_bytes,
              digest_string,
              digest_bigstring,
              digesti_bytes,
              digesti_string,
              digesti_bigstring,
              digestv_bytes,
              digestv_string,
              digestv_bigstring,
              hmac_bytes,
              hmac_string,
              hmac_bigstring,
              hmaci_bytes,
              hmaci_string,
              hmaci_bigstring,
              hmacv_bytes,
              hmacv_string,
              hmacv_bigstring,
              unsafe_compare,
              equal,
              pp,
              of_hex,
              of_hex_opt,
              consistent_of_hex,
              consistent_of_hex_opt,
              to_hex,
              of_raw_string,
              of_raw_string_opt,
              to_raw_string]}
    var
     md5=0,
     sha1=1,
     rmd160=2,
     sha224=3,
     sha256=4,
     sha384=5,
     sha512=6,
     sha3_224=7,
     sha3_256=8,
     sha3_384=9,
     sha3_512=10,
     whirlpool=11,
     blake2b=12,
     blake2s=13;
    function module_of(param)
     {switch(param)
       {case 0:return MD5;
        case 1:return SHA1;
        case 2:return RMD160;
        case 3:return SHA224;
        case 4:return SHA256;
        case 5:return SHA384;
        case 6:return SHA512;
        case 7:return SHA3_224;
        case 8:return SHA3_256;
        case 9:return SHA3_384;
        case 10:return SHA3_512;
        case 11:return WHIRLPOOL;
        case 12:
         return [0,
                 BLAKE2B[1],
                 BLAKE2B[2],
                 BLAKE2B[3],
                 BLAKE2B[4],
                 BLAKE2B[5],
                 BLAKE2B[6],
                 BLAKE2B[7],
                 BLAKE2B[8],
                 BLAKE2B[9],
                 BLAKE2B[10],
                 BLAKE2B[11],
                 BLAKE2B[12],
                 BLAKE2B[13],
                 BLAKE2B[14],
                 BLAKE2B[15],
                 BLAKE2B[16],
                 BLAKE2B[17],
                 BLAKE2B[18],
                 BLAKE2B[19],
                 BLAKE2B[20],
                 BLAKE2B[21],
                 BLAKE2B[22],
                 BLAKE2B[23],
                 BLAKE2B[24],
                 BLAKE2B[25],
                 BLAKE2B[26],
                 BLAKE2B[27],
                 BLAKE2B[28],
                 BLAKE2B[29],
                 BLAKE2B[30],
                 BLAKE2B[31],
                 BLAKE2B[32],
                 BLAKE2B[33],
                 BLAKE2B[34],
                 BLAKE2B[35],
                 BLAKE2B[36],
                 BLAKE2B[37],
                 BLAKE2B[38],
                 BLAKE2B[39]];
        default:
         return [0,
                 BLAKE2S[1],
                 BLAKE2S[2],
                 BLAKE2S[3],
                 BLAKE2S[4],
                 BLAKE2S[5],
                 BLAKE2S[6],
                 BLAKE2S[7],
                 BLAKE2S[8],
                 BLAKE2S[9],
                 BLAKE2S[10],
                 BLAKE2S[11],
                 BLAKE2S[12],
                 BLAKE2S[13],
                 BLAKE2S[14],
                 BLAKE2S[15],
                 BLAKE2S[16],
                 BLAKE2S[17],
                 BLAKE2S[18],
                 BLAKE2S[19],
                 BLAKE2S[20],
                 BLAKE2S[21],
                 BLAKE2S[22],
                 BLAKE2S[23],
                 BLAKE2S[24],
                 BLAKE2S[25],
                 BLAKE2S[26],
                 BLAKE2S[27],
                 BLAKE2S[28],
                 BLAKE2S[29],
                 BLAKE2S[30],
                 BLAKE2S[31],
                 BLAKE2S[32],
                 BLAKE2S[33],
                 BLAKE2S[34],
                 BLAKE2S[35],
                 BLAKE2S[36],
                 BLAKE2S[37],
                 BLAKE2S[38],
                 BLAKE2S[39]]}}
    function digest_bytes(hash,buf)
     {return caml_call3(module_of(hash)[11],0,0,buf)}
    function digest_string(hash,buf)
     {return caml_call3(module_of(hash)[12],0,0,buf)}
    function digest_bigstring(hash,buf)
     {return caml_call3(module_of(hash)[13],0,0,buf)}
    function digesti_bytes(hash,iter)
     {return caml_call1(module_of(hash)[14],iter)}
    function digesti_string(hash,iter)
     {return caml_call1(module_of(hash)[15],iter)}
    function digesti_bigstring(hash,iter)
     {return caml_call1(module_of(hash)[16],iter)}
    function hmaci_bytes(hash,key,iter)
     {return caml_call2(module_of(hash)[23],key,iter)}
    function hmaci_string(hash,key,iter)
     {return caml_call2(module_of(hash)[24],key,iter)}
    function hmaci_bigstring(hash,key,iter)
     {return caml_call2(module_of(hash)[25],key,iter)}
    function unsafe_compare(hash,a,b)
     {return caml_call2(module_of(hash)[29],a,b)}
    function equal$16(hash,a,b){return caml_call2(module_of(hash)[30],a,b)}
    function pp(hash,ppf,t){return caml_call2(module_of(hash)[31],ppf,t)}
    function of_hex(hash,hex){return caml_call1(module_of(hash)[32],hex)}
    function of_hex_opt(hash,hex){return caml_call1(module_of(hash)[33],hex)}
    function consistent_of_hex(hash,hex)
     {return caml_call1(module_of(hash)[34],hex)}
    function consistent_of_hex_opt(hash,hex)
     {return caml_call1(module_of(hash)[35],hex)}
    function to_hex(hash,t){return caml_call1(module_of(hash)[36],t)}
    function of_raw_string(hash,s){return caml_call1(module_of(hash)[37],s)}
    function of_raw_string_opt(hash,s)
     {return caml_call1(module_of(hash)[38],s)}
    function to_raw_string(hash,t){return caml_call1(module_of(hash)[39],t)}
    function of_digest(H,hash){return hash}
    function of_md5(hash){return hash}
    function of_sha1(hash){return hash}
    function of_rmd160(hash){return hash}
    function of_sha224(hash){return hash}
    function of_sha256(hash){return hash}
    function of_sha384(hash){return hash}
    function of_sha512(hash){return hash}
    function of_sha3_224(hash){return hash}
    function of_sha3_256(hash){return hash}
    function of_sha3_384(hash){return hash}
    function of_sha3_512(hash){return hash}
    function of_whirlpool(hash){return hash}
    function of_blake2b(hash){return hash}
    function of_blake2s(hash){return hash}
    var
     Digestif=
      [0,
       MD5,
       SHA1,
       SHA224,
       SHA256,
       SHA384,
       SHA512,
       SHA3_224,
       SHA3_256,
       SHA3_384,
       SHA3_512,
       WHIRLPOOL,
       BLAKE2B,
       BLAKE2S,
       RMD160,
       Make_BLAKE2B,
       Make_BLAKE2S,
       md5,
       sha1,
       rmd160,
       sha224,
       sha256,
       sha384,
       sha512,
       sha3_224,
       sha3_256,
       sha3_384,
       sha3_512,
       whirlpool,
       blake2b,
       blake2s,
       module_of,
       digest_bytes,
       digest_string,
       digest_bigstring,
       digesti_bytes,
       digesti_string,
       digesti_bigstring,
       hmaci_bytes,
       hmaci_string,
       hmaci_bigstring,
       pp,
       equal$16,
       unsafe_compare,
       to_hex,
       of_hex,
       of_hex_opt,
       consistent_of_hex,
       consistent_of_hex_opt,
       of_raw_string,
       of_raw_string_opt,
       to_raw_string,
       of_digest,
       of_md5,
       of_sha1,
       of_rmd160,
       of_sha224,
       of_sha256,
       of_sha384,
       of_sha512,
       of_sha3_224,
       of_sha3_256,
       of_sha3_384,
       of_sha3_512,
       of_whirlpool,
       of_blake2b,
       of_blake2s];
    caml_register_global(264,Digestif,"Digestif");
    return}
  (function(){return this}()));


//# 1 "../../.js/easy-format/easy_format.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    var
     global_data=runtime.caml_get_global_data(),
     cst$1=caml_string_of_jsbytes(" "),
     cst$2=caml_string_of_jsbytes(" "),
     cst$3=caml_string_of_jsbytes(" "),
     cst$4=caml_string_of_jsbytes(" "),
     cst$5=caml_string_of_jsbytes(" "),
     cst$6=caml_string_of_jsbytes(" "),
     cst$7=caml_string_of_jsbytes(" "),
     cst$8=caml_string_of_jsbytes(" "),
     cst$0=caml_string_of_jsbytes(""),
     cst=caml_string_of_jsbytes(""),
     atom=[0,0],
     list=[0,1,1,0,1,1,1,1,-921200851,2,0,0,0,0,0],
     label=[0,726666127,1,2,0],
     list_true=[0,1,1,1,1,1,1,1,-921200851,2,0,0,0,0,0],
     list_false=[0,0,0,0,0,0,0,0,-921200851,2,0,0,0,0,0],
     label_true=[0,726666127,1,2,0],
     label_false=[0,726666127,0,2,0],
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib=global_data.Stdlib,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     _a_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")],
     _b_=[0,[2,0,0],caml_string_of_jsbytes("%s")];
    function set_escape(fmt,escape)
     {var
       match=caml_call2(Stdlib_format[94],fmt,0),
       flush0=match[2],
       print0=match[1],
       tagf0=caml_call2(Stdlib_format[147],fmt,0),
       is_tag=[0,0];
      function mot(tag){is_tag[1] = 1;return caml_call1(tagf0[1],tag)}
      function mct(tag){is_tag[1] = 1;return caml_call1(tagf0[2],tag)}
      function print(s,p,n)
       {return is_tag[1]
                ?(caml_call3(print0,s,p,n),is_tag[1] = 0,0)
                :caml_call4(escape,print0,s,p,n)}
      var tagf=[0,mot,mct,tagf0[3],tagf0[4]];
      caml_call3(Stdlib_format[92],fmt,print,flush0);
      return caml_call2(Stdlib_format[145],fmt,tagf)}
    function define_styles(fmt,escape$0,l)
     {if(0 !== l)
       {caml_call2(Stdlib_format[80],fmt,1);
        var
         _R_=2 * caml_call1(Stdlib_list[1],l) | 0,
         tbl1=caml_call2(Stdlib_hashtbl[1],0,_R_),
         _S_=2 * caml_call1(Stdlib_list[1],l) | 0,
         tbl2=caml_call2(Stdlib_hashtbl[1],0,_S_),
         _T_=
          function(param)
           {var style=param[2],style_name=param[1];
            caml_call3(Stdlib_hashtbl[5],tbl1,style_name,style[1]);
            return caml_call3(Stdlib_hashtbl[5],tbl2,style_name,style[2])};
        caml_call2(Stdlib_list[15],_T_,l);
        var
         mark_open_tag=
          function(style_name)
           {try
             {var _X_=caml_call2(Stdlib_hashtbl[6],tbl1,style_name);
              return _X_}
            catch(_Y_)
             {_Y_ = caml_wrap_exception(_Y_);
              if(_Y_ === Stdlib[8])return cst;
              throw _Y_}},
         mark_close_tag=
          function(style_name)
           {try
             {var _V_=caml_call2(Stdlib_hashtbl[6],tbl2,style_name);
              return _V_}
            catch(_W_)
             {_W_ = caml_wrap_exception(_W_);
              if(_W_ === Stdlib[8])return cst$0;
              throw _W_}},
         _U_=caml_call2(Stdlib_format[147],fmt,0),
         tagf=[0,mark_open_tag,mark_close_tag,_U_[3],_U_[4]];
        caml_call2(Stdlib_format[145],fmt,tagf)}
      if(typeof escape$0 === "number")return 0;
      if(258914209 <= escape$0[1])
       {var esc=escape$0[2];return set_escape(fmt,esc)}
      var esc$0=escape$0[2];
      function escape(print,s,p,n)
       {var s0=caml_call3(Stdlib_string[4],s,p,n),s1=caml_call1(esc$0,s0);
        return caml_call3(print,s1,0,caml_ml_string_length(s1))}
      return set_escape(fmt,escape)}
    function pp_open_xbox(fmt,p,indent)
     {var _Q_=p[8];
      if(451368025 <= _Q_)
       {if(! (736550845 <= _Q_))return caml_call2(Stdlib_format[7],fmt,indent)}
      else
       if(379096626 <= _Q_)return caml_call2(Stdlib_format[5],fmt,0);
      return caml_call2(Stdlib_format[9],fmt,indent)}
    function extra_box(p,l)
     {var _M_=p[8];
      if(379096626 <= _M_)
       var wrap=922275930 <= _M_?1:0;
      else
       var
        _P_=function(param){return 0 === param[0]?1:0},
        wrap=caml_call2(Stdlib_list[29],_P_,l);
      if(wrap)
       {var _N_=function(fmt){return caml_call2(Stdlib_format[3],fmt,0)};
        return [0,
                function(fmt){return caml_call2(Stdlib_format[11],fmt,0)},
                _N_]}
      function _O_(param){return 0}
      return [0,function(param){return 0},_O_]}
    function open_tag(fmt,param)
     {if(param){var s=param[1];return caml_call2(Stdlib_format[141],fmt,s)}
      return 0}
    function close_tag(fmt,param)
     {return param?caml_call2(Stdlib_format[143],fmt,0):0}
    function tag_string(fmt,o,s)
     {if(o)
       {var tag=o[1];
        caml_call2(Stdlib_format[141],fmt,tag);
        caml_call2(Stdlib_format[13],fmt,s);
        return caml_call2(Stdlib_format[143],fmt,0)}
      return caml_call2(Stdlib_format[13],fmt,s)}
    function fprint_list(fmt,label,param,l)
     {var _F_=param[4],_G_=param[3],_H_=param[1];
      if(l)
       {var tl=l[2],hd=l[1];
        if(0 !== tl && ! _F_[4])
         {var
           p$0=param[4],
           cl$0=param[3],
           sep$0=param[2],
           op$0=param[1],
           base_indent=p$0[9],
           _K_=p$0[2]?1:0,
           sep_indent=caml_ml_string_length(sep$0) + _K_ | 0,
           indent$0=base_indent + sep_indent | 0;
          pp_open_xbox(fmt,p$0,indent$0);
          fprint_opt_label(fmt,label);
          tag_string(fmt,p$0[11],op$0);
          if(p$0[1])
           caml_call2(Stdlib_format[25],fmt,0);
          else
           caml_call2(Stdlib_format[27],fmt,0);
          var
           match$0=extra_box(p$0,l),
           close_extra$0=match$0[2],
           open_extra$0=match$0[1];
          caml_call1(open_extra$0,fmt);
          fprint_t(fmt,hd);
          var
           _L_=
            function(x)
             {if(p$0[3])
               caml_call3(Stdlib_format[29],fmt,1,- sep_indent | 0);
              else
               caml_call3(Stdlib_format[29],fmt,0,- sep_indent | 0);
              tag_string(fmt,p$0[13],sep$0);
              if(p$0[2])caml_call2(Stdlib_format[13],fmt,cst$5);
              return fprint_t(fmt,x)};
          caml_call2(Stdlib_list[15],_L_,tl);
          caml_call1(close_extra$0,fmt);
          if(p$0[5])
           caml_call3(Stdlib_format[29],fmt,1,- indent$0 | 0);
          else
           caml_call3(Stdlib_format[29],fmt,0,- indent$0 | 0);
          tag_string(fmt,p$0[14],cl$0);
          return caml_call2(Stdlib_format[3],fmt,0)}
        var p=param[4],cl=param[3],sep=param[2],op=param[1],indent=p[9];
        pp_open_xbox(fmt,p,indent);
        fprint_opt_label(fmt,label);
        tag_string(fmt,p[11],op);
        if(p[1])
         caml_call2(Stdlib_format[25],fmt,0);
        else
         caml_call2(Stdlib_format[27],fmt,0);
        var match=extra_box(p,l),close_extra=match[2],open_extra=match[1];
        caml_call1(open_extra,fmt);
        fprint_list_body_stick_left(fmt,p,sep,hd,tl);
        caml_call1(close_extra,fmt);
        if(p[5])
         caml_call3(Stdlib_format[29],fmt,1,- indent | 0);
        else
         caml_call3(Stdlib_format[29],fmt,0,- indent | 0);
        tag_string(fmt,p[14],cl);
        return caml_call2(Stdlib_format[3],fmt,0)}
      fprint_opt_label(fmt,label);
      tag_string(fmt,_F_[11],_H_);
      var _I_=_F_[1],_J_=_I_ || _F_[5];
      if(_J_)caml_call2(Stdlib_format[13],fmt,cst$4);
      return tag_string(fmt,_F_[14],_G_)}
    function fprint_t(fmt,param)
     {switch(param[0])
       {case 0:var p=param[2],s=param[1];return tag_string(fmt,p[1],s);
        case 1:
         var l=param[2],param$0=param[1],p$0=param$0[4];
         open_tag(fmt,p$0[10]);
         if(p$0[7])
          fprint_list(fmt,0,param$0,l);
         else
          {var _x_=param$0[4],_y_=param$0[3],_z_=param$0[2],_A_=param$0[1];
           if(l)
            {var tl=l[2],hd=l[1];
             tag_string(fmt,_x_[11],_A_);
             if(_x_[1])caml_call2(Stdlib_format[13],fmt,cst$6);
             var _u_=_x_[8],indent=0;
             if(379096626 === _u_)
              caml_call2(Stdlib_format[5],fmt,0);
             else
              if(736550845 <= _u_)
               if(922275930 <= _u_)
                caml_call2(Stdlib_format[11],fmt,indent);
               else
                caml_call2(Stdlib_format[9],fmt,indent);
              else
               if(-921200850 <= _u_)
                caml_call2(Stdlib_format[7],fmt,indent);
               else
                {var _v_=function(param){return 0 === param[0]?1:0};
                 if(caml_call2(Stdlib_list[29],_v_,l))
                  caml_call2(Stdlib_format[11],fmt,indent);
                 else
                  caml_call2(Stdlib_format[9],fmt,indent)}
             if(_x_[4])
              fprint_list_body_stick_left(fmt,_x_,_z_,hd,tl);
             else
              {open_tag(fmt,_x_[12]);
               fprint_t(fmt,hd);
               var
                _w_=
                 function(x)
                  {if(_x_[3])
                    caml_call2(Stdlib_format[25],fmt,0);
                   else
                    caml_call2(Stdlib_format[27],fmt,0);
                   tag_string(fmt,_x_[13],_z_);
                   if(_x_[2])caml_call2(Stdlib_format[13],fmt,cst$2);
                   return fprint_t(fmt,x)};
               caml_call2(Stdlib_list[15],_w_,tl);
               close_tag(fmt,_x_[12])}
             caml_call2(Stdlib_format[3],fmt,0);
             if(_x_[5])caml_call2(Stdlib_format[13],fmt,cst$7);
             tag_string(fmt,_x_[14],_y_)}
           else
            {tag_string(fmt,_x_[11],_A_);
             var _B_=_x_[1],_C_=_B_ || _x_[5];
             if(_C_)caml_call2(Stdlib_format[13],fmt,cst$8);
             tag_string(fmt,_x_[14],_y_)}}
         return close_tag(fmt,p$0[10]);
        case 2:
         var x=param[2],label=param[1],lp=label[2],lab=label[1];
         if(1 === x[0])
          {var
            l$0=x[2],
            match=x[1],
            p$1=match[4],
            cl=match[3],
            sep=match[2],
            op=match[1];
           if(p$1[6] && p$1[7])
            return fprint_list(fmt,[0,label],[0,op,sep,cl,p$1],l$0)}
         var indent$0=lp[3];
         caml_call2(Stdlib_format[9],fmt,0);
         open_tag(fmt,lp[4]);
         fprint_t(fmt,lab);
         close_tag(fmt,lp[4]);
         var _D_=lp[1];
         if(726666127 === _D_)
          if(lp[2])
           caml_call3(Stdlib_format[29],fmt,1,indent$0);
          else
           caml_call3(Stdlib_format[29],fmt,0,indent$0);
         else
          if(744337004 <= _D_)
           {if(lp[2])caml_call2(Stdlib_format[21],fmt,32)}
          else
           {caml_call2(Stdlib_format[32],fmt,0);
            var _E_=caml_call2(Stdlib_string[1],indent$0,32);
            caml_call2(Stdlib_format[13],fmt,_E_)}
         fprint_t(fmt,x);
         return caml_call2(Stdlib_format[3],fmt,0);
        default:var f=param[1];return caml_call1(f,fmt)}}
    function fprint_list_body_stick_left(fmt,p,sep,hd,tl)
     {open_tag(fmt,p[12]);
      fprint_t(fmt,hd);
      function _t_(x)
       {if(p[3])caml_call2(Stdlib_format[13],fmt,cst$1);
        tag_string(fmt,p[13],sep);
        if(p[2])
         caml_call2(Stdlib_format[25],fmt,0);
        else
         caml_call2(Stdlib_format[27],fmt,0);
        return fprint_t(fmt,x)}
      caml_call2(Stdlib_list[15],_t_,tl);
      return close_tag(fmt,p[12])}
    function fprint_opt_label(fmt,param)
     {if(param)
       {var match=param[1],lp=match[2],lab=match[1];
        open_tag(fmt,lp[4]);
        fprint_t(fmt,lab);
        close_tag(fmt,lp[4]);
        var _s_=lp[2];
        return _s_?caml_call2(Stdlib_format[13],fmt,cst$3):_s_}
      return 0}
    function to_formatter(fmt,x)
     {function init_acc(param)
       {var switch$0=0;
        switch(param[0])
         {case 1:if(451368025 === param[1][4][8])switch$0 = 1;break;
          case 2:if(3884224 === param[1][2][1])switch$0 = 1;break
          }
        return switch$0?1:0}
      function merge_acc(force_breaks1,force_breaks2)
       {var force_breaks1$0=force_breaks1 || force_breaks2;
        return force_breaks1$0}
      function map_node(x,force_breaks)
       {switch(x[0])
         {case 1:
           var
            _j_=x[1],
            _k_=_j_[4],
            _l_=_k_[8],
            _m_=_j_[3],
            _n_=_j_[2],
            _o_=_j_[1];
           if(379096626 !== _l_)
            {if(451368025 === _l_)return [0,x,1];
             if(610243080 === _l_)return [0,x,force_breaks];
             var children=x[2];
             if(force_breaks)
              {var
                p=
                 [0,
                  _k_[1],
                  _k_[2],
                  _k_[3],
                  _k_[4],
                  _k_[5],
                  _k_[6],
                  _k_[7],
                  610243080,
                  _k_[9],
                  _k_[10],
                  _k_[11],
                  _k_[12],
                  _k_[13],
                  _k_[14]];
               return [0,[1,[0,_o_,_n_,_m_,p],children],1]}
             return [0,x,0]}
           break;
          case 2:
           var _p_=x[1],_q_=_p_[2],_r_=_p_[1];
           if(726666127 === _q_[1])
            {var b=x[2];
             if(force_breaks)
              {var lp=[0,-76840209,_q_[2],_q_[3],_q_[4]];
               return [0,[2,[0,_r_,lp],b],1]}
             return [0,x,0]}
           break
          }
        return [0,x,force_breaks]}
      function aux(x$0)
       {switch(x$0[0])
         {case 0:var acc=init_acc(x$0);return map_node(x$0,acc);
          case 1:
           var
            children=x$0[2],
            param$1=x$0[1],
            param$2=caml_call2(Stdlib_list[19],aux,children),
            new_children=0,
            accs=0,
            param=param$2;
           for(;;)
            {if(param)
              {var
                param$0=param[2],
                match=param[1],
                y=match[2],
                x=match[1],
                ys=[0,y,accs],
                xs=[0,x,new_children],
                new_children=xs,
                accs=ys,
                param=param$0;
               continue}
             var
              _i_=init_acc(x$0),
              acc$0=caml_call3(Stdlib_list[22],merge_acc,_i_,accs);
             return map_node([1,param$1,new_children],acc$0)}
          case 2:
           var
            x2=x$0[2],
            match$0=x$0[1],
            param$3=match$0[2],
            x1=match$0[1],
            acc0=init_acc(x$0),
            match$1=aux(x1),
            acc1=match$1[2],
            new_x1=match$1[1],
            match$2=aux(x2),
            acc2=match$2[2],
            new_x2=match$2[1],
            acc$1=merge_acc(merge_acc(acc0,acc1),acc2);
           return map_node([2,[0,new_x1,param$3],new_x2],acc$1);
          default:var acc$2=init_acc(x$0);return map_node(x$0,acc$2)}}
      var match=aux(x),new_x=match[1];
      fprint_t(fmt,new_x);
      return caml_call2(Stdlib_format[36],fmt,0)}
    function to_buffer(opt,_h_,buf,x)
     {if(opt)var sth=opt[1],escape=sth;else var escape=870530776;
      if(_h_)var sth$0=_h_[1],styles=sth$0;else var styles=0;
      var fmt=caml_call1(Stdlib_format[107],buf);
      define_styles(fmt,escape,styles);
      return to_formatter(fmt,x)}
    function to_string(escape,styles,x)
     {var buf=caml_call1(Stdlib_buffer[1],500);
      to_buffer(escape,styles,buf,x);
      return caml_call1(Stdlib_buffer[2],buf)}
    function to_channel(opt,_g_,oc,x)
     {if(opt)var sth=opt[1],escape=sth;else var escape=870530776;
      if(_g_)var sth$0=_g_[1],styles=sth$0;else var styles=0;
      var fmt=caml_call1(Stdlib_format[104],oc);
      define_styles(fmt,escape,styles);
      return to_formatter(fmt,x)}
    function to_stdout(escape,styles,x)
     {return to_channel(escape,styles,Stdlib[39],x)}
    function to_stderr(escape,styles,x)
     {return to_channel(escape,styles,Stdlib[40],x)}
    function fprint_t$0(buf,param)
     {var param$0=param;
      for(;;)
       switch(param$0[0])
        {case 0:var s=param$0[1];return caml_call2(Stdlib_buffer[14],buf,s);
         case 1:
          var
           l=param$0[2],
           param$1=param$0[1],
           _c_=param$1[3],
           _e_=param$1[1],
           _d_=param$1[2];
          if(l)
           {var tl=l[2],x$0=l[1];
            caml_call2(Stdlib_buffer[14],buf,_e_);
            fprint_t$0(buf,x$0);
            var
             _f_=
              function(x)
               {caml_call2(Stdlib_buffer[14],buf,_d_);
                return fprint_t$0(buf,x)};
            caml_call2(Stdlib_list[15],_f_,tl);
            return caml_call2(Stdlib_buffer[14],buf,_c_)}
          return caml_call4(Stdlib_printf[5],buf,_a_,_e_,_c_);
         case 2:
          var x=param$0[2],label=param$0[1],label$0=label[1];
          fprint_t$0(buf,label$0);
          var param$0=x;
          continue;
         default:
          var f=param$0[1],fmt=caml_call1(Stdlib_format[107],buf);
          caml_call1(f,fmt);
          return caml_call2(Stdlib_format[36],fmt,0)}}
    function to_buffer$0(buf,x){return fprint_t$0(buf,x)}
    function to_string$0(x)
     {var buf=caml_call1(Stdlib_buffer[1],500);
      to_buffer$0(buf,x);
      return caml_call1(Stdlib_buffer[2],buf)}
    function to_formatter$0(fmt,x)
     {var s=to_string$0(x);
      caml_call3(Stdlib_format[123],fmt,_b_,s);
      return caml_call2(Stdlib_format[36],fmt,0)}
    function to_channel$0(oc,x)
     {var buf=caml_call1(Stdlib_buffer[1],500);
      to_buffer$0(buf,x);
      return caml_call2(Stdlib_buffer[21],oc,buf)}
    function to_stdout$0(x){return to_channel$0(Stdlib[39],x)}
    function to_stderr$0(x){return to_channel$0(Stdlib[40],x)}
    var
     Easy_format=
      [0,
       atom,
       list,
       label,
       [0,
        define_styles,
        to_formatter,
        to_buffer,
        to_string,
        to_channel,
        to_stdout,
        to_stderr],
       [0,
        to_buffer$0,
        to_string$0,
        to_channel$0,
        to_stdout$0,
        to_stderr$0,
        to_formatter$0],
       [0,list_true,label_true,list_false,label_false]];
    runtime.caml_register_global(26,Easy_format,"Easy_format");
    return}
  (function(){return this}()));


//# 1 "../../.js/biniou/biniou.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_bytes_unsafe_get=runtime.caml_bytes_unsafe_get,
     caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
     caml_check_bound=runtime.caml_check_bound,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_make_vect=runtime.caml_make_vect,
     caml_ml_bytes_length=runtime.caml_ml_bytes_length,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_obj_tag=runtime.caml_obj_tag,
     caml_register_global=runtime.caml_register_global,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_string_unsafe_get=runtime.caml_string_unsafe_get,
     caml_sys_getenv=runtime.caml_sys_getenv,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Bi_util_print_bits=caml_string_of_jsbytes("Bi_util.print_bits"),
     cst_Bi_util_print_bits$0=caml_string_of_jsbytes("Bi_util.print_bits"),
     cst_Bi_util_Error=caml_string_of_jsbytes("Bi_util.Error"),
     cst_Corrupted_data_invalid_ref=
      caml_string_of_jsbytes("Corrupted data (invalid reference)"),
     cst_Bi_share_Rd_poly_create_ty=
      caml_string_of_jsbytes
       ("Bi_share.Rd_poly.create_type_id: exhausted available type_id's"),
     cst_Bi_inbuf_refill_from_chann=
      caml_string_of_jsbytes("Bi_inbuf.refill_from_channel"),
     cst_Bi_inbuf_End_of_input=caml_string_of_jsbytes("Bi_inbuf.End_of_input"),
     cst_Buf_extend_reached_Sys_max=
      caml_string_of_jsbytes("Buf.extend: reached Sys.max_string_length"),
     cst_Junk_input_after_end_of_vi=
      caml_string_of_jsbytes("Junk input after end of vint"),
     cst_Unterminated_vint_or_vint_=
      caml_string_of_jsbytes
       ("Unterminated vint or vint exceeding range of OCaml ints"),
     cst_Vint_exceeding_range_of_OC=
      caml_string_of_jsbytes("Vint exceeding range of OCaml ints"),
     cst$0=caml_string_of_jsbytes(""),
     cst_test_stream_dat=caml_string_of_jsbytes("test-stream.dat"),
     cst_test_stream_dat$0=caml_string_of_jsbytes("test-stream.dat"),
     cst=caml_string_of_jsbytes("\0\0\0\0"),
     cst_Corrupted_stream_excessive=
      caml_string_of_jsbytes("Corrupted stream: excessive chunk length"),
     cst_Chunk_length_exceeds_suppo$0=
      caml_string_of_jsbytes
       ("Chunk length exceeds supported range on this platform"),
     cst_Chunk_length_exceeds_suppo=
      caml_string_of_jsbytes
       ("Chunk length exceeds supported range on this platform"),
     cst_Bi_stream=caml_string_of_jsbytes("Bi_stream: "),
     cst_Bi_io_write_t_Malformed_Ta=
      caml_string_of_jsbytes("Bi_io.write_t: Malformed `Table"),
     cst_Corrupted_data_invalid_tag$0=
      caml_string_of_jsbytes("Corrupted data (invalid tag)"),
     cst_unit=caml_string_of_jsbytes("unit"),
     cst$1=caml_string_of_jsbytes("]"),
     cst$2=caml_string_of_jsbytes(","),
     cst$3=caml_string_of_jsbytes("["),
     cst$4=caml_string_of_jsbytes("[]"),
     cst$5=caml_string_of_jsbytes("}"),
     cst$6=caml_string_of_jsbytes(","),
     cst$7=caml_string_of_jsbytes("{"),
     cst_true=caml_string_of_jsbytes("true"),
     cst_false=caml_string_of_jsbytes("false"),
     cst$8=caml_string_of_jsbytes(")"),
     cst$9=caml_string_of_jsbytes(","),
     cst$10=caml_string_of_jsbytes("("),
     cst$11=caml_string_of_jsbytes(":"),
     cst$12=caml_string_of_jsbytes(">"),
     cst$13=caml_string_of_jsbytes(""),
     cst$14=caml_string_of_jsbytes("<"),
     cst$15=caml_string_of_jsbytes(">"),
     cst$16=caml_string_of_jsbytes("<"),
     cst$17=caml_string_of_jsbytes("[]"),
     cst$18=caml_string_of_jsbytes(""),
     cst_Some=caml_string_of_jsbytes("Some"),
     cst_None=caml_string_of_jsbytes("None"),
     cst_Corrupted_data_invalid_tag=
      caml_string_of_jsbytes("Corrupted data (invalid tag)"),
     cst_Corrupted_data_string=
      caml_string_of_jsbytes("Corrupted data (string)"),
     cst_Corrupted_data_bool_value=
      caml_string_of_jsbytes("Corrupted data (bool value)"),
     cst_Corrupted_data_unit_value=
      caml_string_of_jsbytes("Corrupted data (unit value)"),
     s=caml_string_of_jsbytes("?\xf0\x06\x05\x04\x03\x02\x01"),
     cst_Corrupted_data_invalid_num=
      caml_string_of_jsbytes("Corrupted data (invalid numtag)"),
     cst_Corrupted_data_invalid_fie=
      caml_string_of_jsbytes("Corrupted data (invalid field hashtag)"),
     cst_Cygwin=caml_string_of_jsbytes("Cygwin"),
     cst_Unix=caml_string_of_jsbytes("Unix"),
     cst_Win32=caml_string_of_jsbytes("Win32"),
     cst_bdump_dict=caml_string_of_jsbytes("_bdump-dict"),
     cst_HOMEPATH=caml_string_of_jsbytes("HOMEPATH"),
     cst_bdump_dict$0=caml_string_of_jsbytes(".bdump-dict"),
     cst_HOME=caml_string_of_jsbytes("HOME"),
     cst_bdump_dict$1=caml_string_of_jsbytes(".bdump-dict"),
     cst_HOME$0=caml_string_of_jsbytes("HOME"),
     Stdlib=global_data.Stdlib,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_array=global_data.Stdlib__array,
     Assert_failure=global_data.Assert_failure,
     Stdlib_stream=global_data.Stdlib__stream,
     Easy_format=global_data.Easy_format,
     CamlinternalLazy=global_data.CamlinternalLazy,
     Stdlib_obj=global_data.Stdlib__obj,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_filename=global_data.Stdlib__filename,
     Error=[248,cst_Bi_util_Error,caml_fresh_oo_id(0)],
     _g_=
      [0,
       [11,caml_string_of_jsbytes("Corrupted stream: "),[1,0]],
       caml_string_of_jsbytes("Corrupted stream: %C")],
     _f_=
      [0,
       [11,
        caml_string_of_jsbytes("Corrupted stream: excessive chunk length ("),
        [4,3,0,0,[11,caml_string_of_jsbytes(" bytes)"),0]]],
       caml_string_of_jsbytes
        ("Corrupted stream: excessive chunk length (%i bytes)")],
     _i_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),131,22],
     _j_=[0,2],
     _h_=[0,caml_string_of_jsbytes("src/bi_stream.ml"),102,20],
     _e_=
      [0,
       [11,
        caml_string_of_jsbytes("unsupported word size ("),
        [4,3,0,0,[12,41,0]]],
       caml_string_of_jsbytes("unsupported word size (%i)")],
     _d_=
      [0,
       [11,
        caml_string_of_jsbytes("unsupported word size ("),
        [4,3,0,0,[12,41,0]]],
       caml_string_of_jsbytes("unsupported word size (%i)")],
     _s_=
      [0,
       [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,2],0,0]],
       caml_string_of_jsbytes("0x%02x")],
     _t_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _u_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")],
     _v_=
      [0,
       [11,
        caml_string_of_jsbytes("shared"),
        [4,3,0,0,[11,caml_string_of_jsbytes(" ->"),0]]],
       caml_string_of_jsbytes("shared%i ->")],
     _w_=
      [0,
       [11,caml_string_of_jsbytes("shared"),[4,3,0,0,0]],
       caml_string_of_jsbytes("shared%i")],
     _x_=
      [0,
       [11,caml_string_of_jsbytes("0x"),[7,6,[0,2,16],0,0]],
       caml_string_of_jsbytes("0x%016Lx")],
     _y_=
      [0,
       [11,caml_string_of_jsbytes("0x"),[5,6,[0,2,8],0,0]],
       caml_string_of_jsbytes("0x%08lx")],
     _z_=
      [0,
       [11,caml_string_of_jsbytes("0x"),[4,6,[0,2,4],0,0]],
       caml_string_of_jsbytes("0x%04x")],
     _A_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _B_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _D_=[0,[12,35,[5,6,[0,2,8],0,0]],caml_string_of_jsbytes("#%08lx")],
     _C_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")],
     _p_=[0,951901561,0],
     _q_=[0,504440814,0],
     _n_=[0,caml_string_of_jsbytes("src/bi_io.ml"),270,4],
     _o_=[0,caml_string_of_jsbytes("src/bi_io.ml"),274,4],
     _m_=[0,caml_string_of_jsbytes("src/bi_io.ml"),212,11],
     _k_=
      [0,
       [11,
        caml_string_of_jsbytes("Bi_io.make_unhash: "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(" and "),
          [3,
           0,
           [11,
            caml_string_of_jsbytes
             (" have the same hash, please pick another name"),
            0]]]]],
       caml_string_of_jsbytes
        ("Bi_io.make_unhash: %S and %S have the same hash, please pick another name")],
     _l_=[0,caml_string_of_jsbytes("src/bi_io.ml"),169,13],
     _H_=[0,caml_string_of_jsbytes("src/bi_io.ml"),85,2],
     _G_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
     _F_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
     _E_=
      [0,
       [11,
        caml_string_of_jsbytes("Cannot load dictionary from "),
        [3,0,[11,caml_string_of_jsbytes(": "),[2,0,[12,10,[10,0]]]]]],
       caml_string_of_jsbytes("Cannot load dictionary from %S: %s\n%!")];
    function error(s){throw [0,Error,s]}
    function string8_of_int(x)
     {var s=caml_create_bytes(8),i=0;
      for(;;)
       {caml_bytes_set
         (s,
          7 - i | 0,
          caml_call1(Stdlib_char[1],255 & (x >>> (8 * i | 0) | 0)));
        var _c4_=i + 1 | 0;
        if(7 !== i){var i=_c4_;continue}
        return caml_call1(Stdlib_bytes[6],s)}}
    function string4_of_int(x)
     {var s=caml_create_bytes(4),i=0;
      for(;;)
       {caml_bytes_set
         (s,
          3 - i | 0,
          caml_call1(Stdlib_char[1],255 & (x >>> (8 * i | 0) | 0)));
        var _c3_=i + 1 | 0;
        if(3 !== i){var i=_c3_;continue}
        return caml_call1(Stdlib_bytes[6],s)}}
    function print_bits(opt,len,s)
     {if(opt)var sth=opt[1],pos=sth;else var pos=0;
      var slen=caml_ml_string_length(s),_cT_=pos < 0?1:0;
      if(_cT_)
       var _cU_=_cT_;
      else
       var _c2_=0 < pos?1:0,_cU_=_c2_?slen <= pos?1:0:_c2_;
      if(_cU_)caml_call1(Stdlib[1],cst_Bi_util_print_bits);
      if(len)
       var
        len$0=len[1],
        _cV_=
         (slen - pos | 0) < len$0
          ?caml_call1(Stdlib[1],cst_Bi_util_print_bits$0)
          :len$0,
        len$1=_cV_;
      else
       var len$1=slen - pos | 0;
      var r=caml_create_bytes(len$1 * 9 | 0),_cX_=len$1 - 1 | 0,_cW_=0;
      if(! (_cX_ < 0))
       {var i=_cW_;
        a:
        for(;;)
         {var k=i * 9 | 0,x=caml_string_get(s,pos + i | 0),j=0;
          for(;;)
           {var _c0_=0 === ((x >>> (7 - j | 0) | 0) & 1)?48:49;
            caml_bytes_set(r,k + j | 0,_c0_);
            var _c1_=j + 1 | 0;
            if(7 !== j){var j=_c1_;continue}
            var _cY_=0 === ((i + 1 | 0) % 8 | 0)?10:32;
            caml_bytes_set(r,k + 8 | 0,_cY_);
            var _cZ_=i + 1 | 0;
            if(_cX_ !== i){var i=_cZ_;continue a}
            break}
          break}}
      return caml_call1(Stdlib_bytes[6],r)}
    var c=[0,0],r=[0,-1];
    for(;;)
     {if(0 === r[1])
       {var
         int_size=c[1],
         Bi_util=
          [0,Error,error,string8_of_int,string4_of_int,print_bits,int_size];
        caml_register_global(101,Bi_util,"Bi_util");
        var
         n=[0,0],
         dummy_type_id=0,
         create_type_id=
          function(param)
           {n[1]++;
            return 0 <= n[1]
                    ?n[1]
                    :caml_call1(Stdlib[2],cst_Bi_share_Rd_poly_create_ty)},
         equal=
          function(param,_cQ_)
           {var
             t2=_cQ_[2],
             x2=_cQ_[1],
             t1=param[2],
             x1=param[1],
             _cR_=x1 === x2?1:0,
             _cS_=_cR_?t1 === t2?1:0:_cR_;
            return _cS_},
         hash=Stdlib_hashtbl[27],
         H=caml_call1(Stdlib_hashtbl[25],[0,equal,hash]),
         create=H[1],
         clear=
          function(tbl)
           {var _cP_=0 < caml_call1(H[15],tbl)?1:0;
            return _cP_?caml_call1(H[2],tbl):_cP_},
         put=
          function(tbl,k,pos)
           {try
             {var pos0=caml_call2(H[7],tbl,k),_cN_=pos - pos0 | 0;return _cN_}
            catch(_cO_)
             {_cO_ = caml_wrap_exception(_cO_);
              if(_cO_ === Stdlib[8]){caml_call3(H[5],tbl,k,pos);return 0}
              throw _cO_}},
         create$0=function(n){return caml_call2(Stdlib_hashtbl[1],0,n)},
         clear$0=Stdlib_hashtbl[2],
         put$0=
          function(tbl,pos,x){return caml_call3(Stdlib_hashtbl[5],tbl,pos,x)},
         get=
          function(tbl,pos)
           {try
             {var _cL_=caml_call2(Stdlib_hashtbl[6],tbl,pos);return _cL_}
            catch(_cM_)
             {_cM_ = caml_wrap_exception(_cM_);
              if(_cM_ === Stdlib[8])
               return error(cst_Corrupted_data_invalid_ref);
              throw _cM_}},
         Rd=[0,create$0,clear$0,put$0,get],
         _a_=[0,create,clear,put],
         Bi_share=[0,dummy_type_id,create_type_id,_a_,Rd];
        caml_register_global(103,Bi_share,"Bi_share");
        var
         End_of_input=[248,cst_Bi_inbuf_End_of_input,caml_fresh_oo_id(0)],
         try_preread=
          function(ib,n)
           {return (ib[3] - ib[2] | 0) < n
                    ?(caml_call2(ib[6],ib,n),
                      caml_call2(Stdlib[16],ib[3] - ib[2] | 0,n))
                    :n},
         read=
          function(ib,n)
           {var pos=ib[2];
            if(n <= (ib[3] - pos | 0)){ib[2] = pos + n | 0;return pos}
            if(n <= try_preread(ib,n))
             {var pos$0=ib[2];ib[2] = ib[2] + n | 0;return pos$0}
            throw End_of_input},
         read_char=
          function(ib)
           {var pos=ib[2];
            if(0 < (ib[3] - pos | 0))
             {var c=caml_bytes_unsafe_get(ib[1],pos);
              ib[2] = pos + 1 | 0;
              return c}
            if(0 < try_preread(ib,1))
             {var pos$0=ib[2],c$0=caml_bytes_unsafe_get(ib[1],pos$0);
              ib[2] = pos$0 + 1 | 0;
              return c$0}
            throw End_of_input},
         peek=
          function(ib)
           {var pos=ib[2];
            if(0 < (ib[3] - pos | 0))return caml_bytes_unsafe_get(ib[1],pos);
            if(0 < try_preread(ib,1))
             return caml_bytes_unsafe_get(ib[1],ib[2]);
            throw End_of_input},
         from_bytes=
          function(opt,_cJ_,s)
           {if(opt)var sth=opt[1],pos=sth;else var pos=0;
            if(_cJ_)var sth$0=_cJ_[1],shrlen=sth$0;else var shrlen=16;
            var _cK_=caml_call1(Rd[1],shrlen);
            return [0,
                    s,
                    pos,
                    caml_ml_bytes_length(s),
                    - pos | 0,
                    caml_ml_bytes_length(s),
                    function(ib,n){return 0},
                    _cK_]},
         from_string=
          function(pos,shrlen,s)
           {return from_bytes(pos,shrlen,caml_call1(Stdlib_bytes[5],s))},
         from_channel=
          function(opt,_cF_,ic)
           {if(opt)var sth=opt[1],len=sth;else var len=4096;
            if(_cF_)var sth$0=_cF_[1],shrlen=sth$0;else var shrlen=16;
            var _cG_=caml_call1(Rd[1],shrlen);
            return [0,
                    caml_create_bytes(len),
                    0,
                    0,
                    0,
                    len,
                    function(ib,n$0)
                     {if(ib[5] < n$0)
                       return caml_call1(Stdlib[1],cst_Bi_inbuf_refill_from_chann);
                      var pos$1=ib[3] - ib[2] | 0,_cH_=pos$1 < n$0?1:0;
                      if(_cH_)
                       {var s=ib[1];
                        caml_call5(Stdlib_bytes[11],s,ib[2],s,0,pos$1);
                        var len$1=n$0 - pos$1 | 0,pos=pos$1,len=len$1,accu=0;
                        for(;;)
                         {var n=caml_call4(Stdlib[84],ic,s,pos,len);
                          if(n < len && 0 < n)
                           {var
                             accu$0=accu + n | 0,
                             len$0=len - n | 0,
                             pos$0=pos + n | 0,
                             pos=pos$0,
                             len=len$0,
                             accu=accu$0;
                            continue}
                          var really_read=accu + n | 0;
                          ib[4] = ib[4] + ib[2] | 0;
                          ib[2] = 0;
                          ib[3] = pos$1 + really_read | 0;
                          var _cI_=0;
                          break}}
                      else
                       var _cI_=_cH_;
                      return _cI_},
                    _cG_]},
         Bi_inbuf=
          [0,
           End_of_input,
           try_preread,
           read,
           read_char,
           peek,
           from_string,
           from_bytes,
           from_channel];
        caml_register_global(104,Bi_inbuf,"Bi_inbuf");
        var
         really_extend=
          function(b,n)
           {var
             slen0=b[2],
             reqlen=b[3] + n | 0,
             x=caml_call2(Stdlib[17],reqlen,2 * slen0 | 0),
             slen=
              x <= Stdlib_sys[12]
               ?x
               :Stdlib_sys[12] < reqlen
                 ?caml_call1(Stdlib[1],cst_Buf_extend_reached_Sys_max)
                 :Stdlib_sys[12],
             s=caml_create_bytes(slen);
            caml_call5(Stdlib_bytes[11],b[1],0,s,0,b[3]);
            b[1] = s;
            b[2] = slen;
            return 0},
         flush_to_output=
          function(abstract_output,b,n)
           {var _cD_=b[3];
            caml_call3
             (abstract_output,caml_call1(Stdlib_bytes[6],b[1]),0,_cD_);
            b[4] = b[4] + b[3] | 0;
            b[3] = 0;
            var _cE_=b[2] < n?1:0;
            return _cE_?really_extend(b,n):_cE_},
         flush_to_channel=
          function(oc)
           {var _cA_=caml_call1(Stdlib[69],oc);
            return function(_cB_,_cC_){return flush_to_output(_cA_,_cB_,_cC_)}},
         create$1=
          function(opt,_cz_,n)
           {if(opt)
             var sth=opt[1],make_room=sth;
            else
             var make_room=really_extend;
            if(_cz_)var sth$0=_cz_[1],shrlen=sth$0;else var shrlen=16;
            return [0,
                    caml_create_bytes(n),
                    n,
                    0,
                    0,
                    n,
                    make_room,
                    caml_call1(_a_[1],shrlen),
                    shrlen]},
         create_channel_writer=
          function(opt,shrlen,oc)
           {if(opt)var sth=opt[1],len=sth;else var len=4096;
            return create$1([0,flush_to_channel(oc)],shrlen,len)},
         flush_output_writer=function(b){return caml_call2(b[6],b,0)},
         create_output_writer=
          function(opt,shrlen,out)
           {if(opt)var sth=opt[1],len=sth;else var len=4096;
            var
             _cw_=
              caml_call1(runtime.caml_get_public_method(out,209784577,1),out);
            return create$1
                    ([0,
                      function(_cx_,_cy_){return flush_to_output(_cw_,_cx_,_cy_)}],
                     shrlen,
                     len)},
         extend=
          function(b,n)
           {var _cv_=b[2] < (b[3] + n | 0)?1:0;
            return _cv_?caml_call2(b[6],b,n):_cv_},
         alloc=
          function(b,n)
           {extend(b,n);var pos=b[3];b[3] = pos + n | 0;return pos},
         add_sub=
          function(blit,b,s,pos,len)
           {extend(b,len);
            caml_call5(blit,s,pos,b[1],b[3],len);
            b[3] = b[3] + len | 0;
            return 0},
         _b_=Stdlib_string[6],
         add_substring=
          function(_cr_,_cs_,_ct_,_cu_)
           {return add_sub(_b_,_cr_,_cs_,_ct_,_cu_)},
         _c_=Stdlib_bytes[11],
         add_subbytes=
          function(_cn_,_co_,_cp_,_cq_)
           {return add_sub(_c_,_cn_,_co_,_cp_,_cq_)},
         add_string=
          function(b,s){return add_substring(b,s,0,caml_ml_string_length(s))},
         add_bytes=
          function(b,s){return add_subbytes(b,s,0,caml_ml_bytes_length(s))},
         add_char=
          function(b,c){var pos=alloc(b,1);return caml_bytes_set(b[1],pos,c)},
         unsafe_add_char=
          function(b,c)
           {var len=b[3];
            caml_bytes_set(b[1],len,c);
            b[3] = len + 1 | 0;
            return 0},
         add_char2=
          function(b,c1,c2)
           {var pos=alloc(b,2),s=b[1];
            caml_bytes_unsafe_set(s,pos,c1);
            caml_bytes_unsafe_set(s,pos + 1 | 0,c2);
            return 0},
         add_char4=
          function(b,c1,c2,c3,c4)
           {var pos=alloc(b,4),s=b[1];
            caml_bytes_unsafe_set(s,pos,c1);
            caml_bytes_unsafe_set(s,pos + 1 | 0,c2);
            caml_bytes_unsafe_set(s,pos + 2 | 0,c3);
            caml_bytes_unsafe_set(s,pos + 3 | 0,c4);
            return 0},
         clear$1=function(b){b[4] = 0;b[3] = 0;return caml_call1(_a_[2],b[7])},
         reset=
          function(b)
           {if(caml_ml_bytes_length(b[1]) !== b[5])
             b[1] = caml_create_bytes(b[5]);
            b[4] = 0;
            b[3] = 0;
            b[7] = caml_call1(_a_[1],b[8]);
            return 0},
         contents=function(b){return caml_call3(Stdlib_bytes[8],b[1],0,b[3])},
         Bi_outbuf=
          [0,
           really_extend,
           flush_to_channel,
           create$1,
           contents,
           create_channel_writer,
           flush_output_writer,
           create_output_writer,
           flush_output_writer,
           extend,
           alloc,
           add_bytes,
           add_subbytes,
           add_string,
           add_substring,
           add_char,
           add_char2,
           add_char4,
           unsafe_add_char,
           clear$1,
           reset];
        caml_register_global(107,Bi_outbuf,"Bi_outbuf");
        if(0 === (int_size % 7 | 0))
         var m=int_size / 7 | 0,max_highest_byte=127,max_vint_bytes=m;
        else
         var
          m$0=(int_size / 7 | 0) + 1 | 0,
          h=(1 << (int_size % 7 | 0)) - 1 | 0,
          max_highest_byte=h,
          max_vint_bytes=m$0;
        var
         check_highest_byte=
          function(x)
           {var _cm_=max_highest_byte < x?1:0;
            return _cm_?error(cst_Vint_exceeding_range_of_OC):_cm_},
         unsigned_of_signed=
          function(i){return 0 <= i?i << 1:(-1 - i | 0) << 1 | 1},
         write_untagged_uvint=
          function(buf,i)
           {extend(buf,max_vint_bytes);
            var x=[0,i];
            for(;;)
             {if(0 === (x[1] >>> 7 | 0))
               return unsafe_add_char(buf,caml_call1(Stdlib_char[1],x[1]));
              var byte$0=128 | x[1] & 127;
              unsafe_add_char(buf,caml_call1(Stdlib_char[1],byte$0));
              x[1] = x[1] >>> 7 | 0;
              continue}},
         write_untagged_svint=
          function(buf,i)
           {return write_untagged_uvint(buf,unsigned_of_signed(i))},
         uvint_of_uint=
          function(buf,i)
           {if(buf)var b=buf[1],buffer=b;else var buffer=create$1(0,0,10);
            clear$1(buffer);
            write_untagged_uvint(buffer,i);
            return contents(buffer)},
         svint_of_int=
          function(buf,i){return uvint_of_uint(buf,unsigned_of_signed(i))},
         read_untagged_uvint=
          function(ib)
           {var
             avail=try_preread(ib,max_vint_bytes),
             s=ib[1],
             pos=ib[2],
             x=[0,0];
            try
             {var _cj_=avail - 1 | 0,_ci_=0;
              if(! (_cj_ < 0))
               {var i=_ci_;
                for(;;)
                 {var b=caml_bytes_get(s,pos + i | 0);
                  x[1] = (b & 127) << (7 * i | 0) | x[1];
                  if(b < 128)
                   {ib[2] = (pos + i | 0) + 1 | 0;
                    if((i + 1 | 0) === max_vint_bytes)check_highest_byte(b);
                    throw Stdlib[3]}
                  var _ck_=i + 1 | 0;
                  if(_cj_ !== i){var i=_ck_;continue}
                  break}}
              error(cst_Unterminated_vint_or_vint_)}
            catch(_cl_)
             {_cl_ = caml_wrap_exception(_cl_);
              if(_cl_ !== Stdlib[3])throw _cl_}
            return x[1]},
         read_untagged_svint=
          function(ib)
           {var i=read_untagged_uvint(ib);
            return 0 === (i & 1)?i >>> 1 | 0:-1 - (i >>> 1 | 0) | 0},
         check_end_of_input=
          function(ib)
           {var _ch_=0 < try_preread(ib,1)?1:0;
            return _ch_?error(cst_Junk_input_after_end_of_vi):_ch_},
         uint_of_uvint=
          function(s)
           {var ib=from_string(0,0,s),x=read_untagged_uvint(ib);
            check_end_of_input(ib);
            return x},
         int_of_svint=
          function(s)
           {var ib=from_string(0,0,s),x=read_untagged_svint(ib);
            check_end_of_input(ib);
            return x},
         Bi_vint=
          [0,
           uvint_of_uint,
           svint_of_int,
           uint_of_uvint,
           int_of_svint,
           write_untagged_uvint,
           write_untagged_svint,
           read_untagged_uvint,
           read_untagged_svint];
        caml_register_global(110,Bi_vint,"Bi_vint");
        var
         error$0=
          function(s)
           {var _cg_=caml_call2(Stdlib[28],cst_Bi_stream,s);
            return caml_call1(Stdlib[2],_cg_)},
         read_stream=
          function(of_string,ic)
           {function _b__(i$2)
             {var c=caml_call1(Stdlib[82],ic);
              if(1 === c)
               {var _ca_=Stdlib_sys[9];
                if(32 === _ca_)
                 {var i$0=1;
                  for(;;)
                   {if(0 !== caml_call1(Stdlib[87],ic))
                     error$0(cst_Chunk_length_exceeds_suppo$0);
                    var _cd_=i$0 + 1 | 0;
                    if(4 !== i$0){var i$0=_cd_;continue}
                    var n=[0,0],i=1;
                    for(;;)
                     {var _cb_=caml_call1(Stdlib[87],ic);
                      n[1] = n[1] << 8 | _cb_;
                      var _cc_=i + 1 | 0;
                      if(4 !== i){var i=_cc_;continue}
                      if(n[1] < 0)error$0(cst_Chunk_length_exceeds_suppo);
                      var len=n[1];
                      break}
                    break}}
                else
                 if(64 === _ca_)
                  {var n$0=[0,0],i$1=1;
                   for(;;)
                    {var _ce_=caml_call1(Stdlib[87],ic);
                     n$0[1] = n$0[1] << 8 | _ce_;
                     var _cf_=i$1 + 1 | 0;
                     if(8 !== i$1){var i$1=_cf_;continue}
                     if(n$0[1] < 0)error$0(cst_Corrupted_stream_excessive);
                     var len=n$0[1];
                     break}}
                 else
                  var len=error$0(caml_call2(Stdlib_printf[4],_d_,_ca_));
                if(Stdlib_sys[12] < len)
                 error$0(caml_call2(Stdlib_printf[4],_f_,len));
                var s=caml_create_bytes(len);
                caml_call4(Stdlib[85],ic,s,0,len);
                return [0,caml_call1(of_string,caml_call1(Stdlib_bytes[6],s))]}
              return c?error$0(caml_call2(Stdlib_printf[4],_g_,c)):0}
            var st=caml_call1(Stdlib_stream[3],_b__),a=[0,[0]],pos=[0,0];
            function next(i)
             {for(;;)
               {if(a[1].length - 1 <= pos[1])
                 {var match=caml_call1(Stdlib_stream[11],st);
                  if(match)
                   {var a$0=match[1];
                    caml_call1(Stdlib_stream[12],st);
                    a[1] = a$0;
                    pos[1] = 0;
                    continue}
                  return 0}
                var _b$_=pos[1],x=caml_check_bound(a[1],_b$_)[1 + _b$_];
                pos[1]++;
                return [0,x]}}
            return caml_call1(Stdlib_stream[3],next)},
         write_stream=
          function(opt,to_string,oc,st)
           {if(opt)var sth=opt[1],chunk_len=sth;else var chunk_len=1024;
            var n=[0,0],acc=[0,0];
            function flush_chunk(param)
             {var _b9_=acc[1];
              if(_b9_)
               {var
                 tl=_b9_[2],
                 x=_b9_[1],
                 r=[0,tl],
                 len=caml_call1(Stdlib_list[1],_b9_),
                 a=caml_make_vect(len,x),
                 _b6_=len - 2 | 0;
                if(! (_b6_ < 0))
                 {var i$1=_b6_;
                  for(;;)
                   {var _b7_=r[1];
                    if(! _b7_)throw [0,Assert_failure,_h_];
                    var tl$0=_b7_[2],hd=_b7_[1];
                    caml_check_bound(a,i$1)[1 + i$1] = hd;
                    r[1] = tl$0;
                    var _b8_=i$1 - 1 | 0;
                    if(0 !== i$1){var i$1=_b8_;continue}
                    break}}
                var a$0=a}
              else
               var a$0=[0];
              acc[1] = 0;
              n[1] = 0;
              var s=caml_call1(to_string,a$0);
              caml_call2(Stdlib[65],oc,1);
              var n$2=caml_ml_string_length(s),_b1_=Stdlib_sys[9];
              if(32 === _b1_)
               {caml_call2(Stdlib[66],oc,cst);
                var n$0=[0,n$2],i=1;
                for(;;)
                 {var _b2_=caml_call1(Stdlib[29],n$0[1] >>> 24 | 0);
                  caml_call2(Stdlib[65],oc,_b2_);
                  n$0[1] = n$0[1] << 8;
                  var _b3_=i + 1 | 0;
                  if(4 !== i){var i=_b3_;continue}
                  break}}
              else
               if(64 === _b1_)
                {var n$1=[0,n$2],i$0=1;
                 for(;;)
                  {var _b4_=caml_call1(Stdlib[29],n$1[1] >>> 56 | 0);
                   caml_call2(Stdlib[65],oc,_b4_);
                   n$1[1] = n$1[1] << 8;
                   var _b5_=i$0 + 1 | 0;
                   if(8 !== i$0){var i$0=_b5_;continue}
                   break}}
               else
                error$0(caml_call2(Stdlib_printf[4],_e_,_b1_));
              return caml_call2(Stdlib[66],oc,s)}
            function _bZ_(x)
             {n[1]++;
              acc[1] = [0,x,acc[1]];
              var _b0_=chunk_len <= n[1]?1:0;
              return _b0_?flush_chunk(0):_b0_}
            caml_call2(Stdlib_stream[8],_bZ_,st);
            if(0 < n[1])flush_chunk(0);
            return caml_call2(Stdlib[65],oc,0)},
         test=
          function(l)
           {function _bT_(x)
             {if(0 <= x && ! (9 < x))return 0;throw [0,Assert_failure,_i_]}
            caml_call2(Stdlib_list[15],_bT_,l);
            function to_string(a)
             {var
               _bX_=caml_call1(Stdlib_array[11],a),
               _bY_=caml_call2(Stdlib_list[17],Stdlib[33],_bX_);
              return caml_call2(Stdlib_string[7],cst$0,_bY_)}
            function of_string(s)
             {function _bV_(i)
               {var _bW_=caml_string_get(s,i);
                return runtime.caml_int_of_string
                        (caml_call2(Stdlib_string[1],1,_bW_))}
              return caml_call2(Stdlib_array[2],caml_ml_string_length(s),_bV_)}
            var
             st=caml_call1(Stdlib_stream[4],l),
             oc=caml_call1(Stdlib[60],cst_test_stream_dat);
            write_stream(_j_,to_string,oc,st);
            caml_call1(Stdlib[76],oc);
            var
             ic=caml_call1(Stdlib[79],cst_test_stream_dat$0),
             st$0=read_stream(of_string,ic),
             l$0=[0,0];
            function _bU_(i){l$0[1] = [0,i,l$0[1]];return 0}
            caml_call2(Stdlib_stream[8],_bU_,st$0);
            caml_call1(Stdlib[93],ic);
            return runtime.caml_equal(l,caml_call1(Stdlib_list[9],l$0[1]))},
         Bi_stream=[0,read_stream,write_stream,test];
        caml_register_global(114,Bi_stream,"Bi_stream");
        var
         bool_tag=0,
         int8_tag=1,
         int16_tag=2,
         int32_tag=3,
         int64_tag=4,
         float32_tag=11,
         float64_tag=12,
         uvint_tag=16,
         svint_tag=17,
         string_tag=18,
         array_tag=19,
         tuple_tag=20,
         record_tag=21,
         num_variant_tag=22,
         variant_tag=23,
         unit_tag=24,
         table_tag=25,
         shared_tag=26,
         make_signed=function(x){return 1073741823 < x?x + 2147483648 | 0:x},
         hash_name=
          function(s)
           {var accu=[0,0],_bQ_=caml_ml_string_length(s) - 1 | 0,_bP_=0;
            if(! (_bQ_ < 0))
             {var i=_bP_;
              for(;;)
               {var _bR_=caml_string_get(s,i);
                accu[1] = (223 * accu[1] | 0) + _bR_ | 0;
                var _bS_=i + 1 | 0;
                if(_bQ_ !== i){var i=_bS_;continue}
                break}}
            accu[1] = accu[1] & 2147483647;
            return make_signed(accu[1])},
         n$0=int_size - 31 | 0;
        if(0 <= n$0)
         {var
           write_hashtag=
            function(ob,h$0,has_arg)
             {var h=h$0 << n$0 >>> n$0 | 0,pos=alloc(ob,4),s=ob[1];
              caml_bytes_unsafe_set
               (s,pos + 3 | 0,caml_call1(Stdlib_char[1],h & 255));
              var h$1=h >>> 8 | 0;
              caml_bytes_unsafe_set
               (s,pos + 2 | 0,caml_call1(Stdlib_char[1],h$1 & 255));
              var h$2=h$1 >>> 8 | 0;
              caml_bytes_unsafe_set
               (s,pos + 1 | 0,caml_call1(Stdlib_char[1],h$2 & 255));
              var h$3=h$2 >>> 8 | 0,_bO_=has_arg?h$3 | 128:h$3;
              caml_bytes_unsafe_set(s,pos,caml_call1(Stdlib_char[1],_bO_));
              return 0},
           string_of_hashtag=
            function(h,has_arg)
             {var ob=create$1(0,0,4);
              write_hashtag(ob,h,has_arg);
              return contents(ob)},
           read_hashtag=
            function(ib,cont)
             {var
               i=read(ib,4),
               s=ib[1],
               x0=caml_bytes_get(s,i),
               has_arg=128 <= x0?1:0,
               x1=(x0 & 127) << 24,
               x2=caml_bytes_get(s,i + 1 | 0) << 16,
               x3=caml_bytes_get(s,i + 2 | 0) << 8,
               x4=caml_bytes_get(s,i + 3 | 0),
               h=make_signed(x1 | x2 | x3 | x4);
              return caml_call3(cont,ib,h,has_arg)},
           read_field_hashtag=
            function(ib)
             {var i=read(ib,4),s=ib[1],x0=caml_bytes_unsafe_get(s,i);
              if(x0 < 128)error(cst_Corrupted_data_invalid_fie);
              var
               x1=(x0 & 127) << 24,
               x2=caml_bytes_unsafe_get(s,i + 1 | 0) << 16,
               x3=caml_bytes_unsafe_get(s,i + 2 | 0) << 8,
               x4=caml_bytes_unsafe_get(s,i + 3 | 0);
              return make_signed(x1 | x2 | x3 | x4)},
           write_numtag=
            function(ob,i,has_arg)
             {var _bM_=i < 0?1:0,_bN_=_bM_ || (127 < i?1:0);
              if(_bN_)error(cst_Corrupted_data_invalid_num);
              var x=has_arg?i | 128:i;
              return add_char(ob,caml_call1(Stdlib_char[1],x))},
           read_numtag=
            function(ib,cont)
             {var i=read(ib,1),x=caml_bytes_get(ib[1],i),has_arg=128 <= x?1:0;
              return caml_call3(cont,ib,x & 127,has_arg)},
           make_unhash=
            function(l)
             {var
               _bE_=4 * caml_call1(Stdlib_list[1],l) | 0,
               tbl=caml_call2(Stdlib_hashtbl[1],0,_bE_);
              function _bF_(s)
               {var h=hash_name(s);
                try
                 {var match=caml_call2(Stdlib_hashtbl[6],tbl,h);
                  if(match)
                   {var s$0=match[1],_bI_=caml_string_notequal(s,s$0);
                    if(_bI_)
                     var
                      _bJ_=caml_call3(Stdlib_printf[4],_k_,s,s$0),
                      _bK_=caml_call1(Stdlib[2],_bJ_);
                    else
                     var _bK_=_bI_;
                    return _bK_}
                  throw [0,Assert_failure,_l_]}
                catch(_bL_)
                 {_bL_ = caml_wrap_exception(_bL_);
                  if(_bL_ === Stdlib[8])
                   return caml_call3(Stdlib_hashtbl[5],tbl,h,[0,s]);
                  throw _bL_}}
              caml_call2(Stdlib_list[15],_bF_,l);
              return function(h)
               {try
                 {var _bG_=caml_call2(Stdlib_hashtbl[6],tbl,h);return _bG_}
                catch(_bH_)
                 {_bH_ = caml_wrap_exception(_bH_);
                  if(_bH_ === Stdlib[8])return 0;
                  throw _bH_}}},
           write_tag=
            function(ob,x){return add_char(ob,caml_call1(Stdlib_char[1],x))},
           write_untagged_unit=function(ob,param){return add_char(ob,0)},
           write_untagged_bool=
            function(ob,x){var _bD_=x?1:0;return add_char(ob,_bD_)},
           write_untagged_char=function(ob,x){return add_char(ob,x)},
           write_untagged_int8=
            function(ob,x){return add_char(ob,caml_call1(Stdlib_char[1],x))},
           write_untagged_int16=
            function(ob,x)
             {add_char(ob,caml_call1(Stdlib_char[1],x >>> 8 | 0));
              return add_char(ob,caml_call1(Stdlib_char[1],x & 255))},
           write_untagged_int32=
            function(ob,low)
             {var high=low >>> 16 | 0;
              add_char(ob,caml_call1(Stdlib_char[1],high >>> 8 | 0));
              add_char(ob,caml_call1(Stdlib_char[1],high & 255));
              add_char(ob,caml_call1(Stdlib_char[1],(low >>> 8 | 0) & 255));
              return add_char(ob,caml_call1(Stdlib_char[1],low & 255))},
           write_untagged_float32=
            function(ob,x)
             {return write_untagged_int32
                      (ob,runtime.caml_int32_bits_of_float(x))},
           float_endianness=
            [246,
             function(_bC_)
              {var match=caml_string_unsafe_get(1.,0);
               if(63 === match)return 3305632;
               if(match)throw [0,Assert_failure,_m_];
               return 624392470}],
           read_untagged_float64=
            function(ib)
             {var
               i=read(ib,8),
               s=ib[1],
               x=runtime.caml_obj_block(Stdlib_obj[14],8),
               _by_=caml_obj_tag(float_endianness),
               _bz_=
                250 === _by_
                 ?float_endianness[1]
                 :246 === _by_
                   ?caml_call1(CamlinternalLazy[2],float_endianness)
                   :float_endianness;
              if(624392470 <= _bz_)
               {var j=0;
                for(;;)
                 {caml_bytes_unsafe_set
                   (x,7 - j | 0,caml_bytes_unsafe_get(s,i + j | 0));
                  var _bA_=j + 1 | 0;
                  if(7 !== j){var j=_bA_;continue}
                  break}}
              else
               {var j$0=0;
                for(;;)
                 {caml_bytes_unsafe_set
                   (x,j$0,caml_bytes_unsafe_get(s,i + j$0 | 0));
                  var _bB_=j$0 + 1 | 0;
                  if(7 !== j$0){var j$0=_bB_;continue}
                  break}}
              return x},
           write_untagged_float64=
            function(ob,x)
             {var
               i=alloc(ob,8),
               s=ob[1],
               _bu_=caml_obj_tag(float_endianness),
               _bv_=
                250 === _bu_
                 ?float_endianness[1]
                 :246 === _bu_
                   ?caml_call1(CamlinternalLazy[2],float_endianness)
                   :float_endianness;
              if(624392470 <= _bv_)
               {var j=0;
                for(;;)
                 {caml_bytes_unsafe_set
                   (s,i + j | 0,caml_string_unsafe_get(x,7 - j | 0));
                  var _bw_=j + 1 | 0;
                  if(7 !== j){var j=_bw_;continue}
                  return 0}}
              var j$0=0;
              for(;;)
               {caml_bytes_unsafe_set
                 (s,i + j$0 | 0,caml_string_unsafe_get(x,j$0));
                var _bx_=j$0 + 1 | 0;
                if(7 !== j$0){var j$0=_bx_;continue}
                return 0}},
           write_untagged_int64=
            function(ob,x)
             {return write_untagged_float64
                      (ob,runtime.caml_int64_float_of_bits(x))},
           safety_test=
            function(param)
             {var
               y=read_untagged_float64(from_string(0,0,s)),
               x=1.00146962706651288;
              if(1.00146962706651288 != y)throw [0,Assert_failure,_n_];
              var ob=create$1(0,0,8);
              write_untagged_float64(ob,x);
              var _bt_=caml_string_notequal(contents(ob),s);
              if(_bt_)throw [0,Assert_failure,_o_];
              return _bt_},
           write_untagged_string=
            function(ob,s)
             {write_untagged_uvint(ob,caml_ml_string_length(s));
              return add_string(ob,s)},
           write_unit=
            function(ob,param)
             {write_tag(ob,unit_tag);return write_untagged_unit(ob,0)},
           write_bool=
            function(ob,x)
             {write_tag(ob,bool_tag);return write_untagged_bool(ob,x)},
           write_char=
            function(ob,x)
             {write_tag(ob,int8_tag);return write_untagged_char(ob,x)},
           write_int8=
            function(ob,x)
             {write_tag(ob,int8_tag);return write_untagged_int8(ob,x)},
           write_int16=
            function(ob,x)
             {write_tag(ob,int16_tag);return write_untagged_int16(ob,x)},
           write_int32=
            function(ob,x)
             {write_tag(ob,int32_tag);return write_untagged_int32(ob,x)},
           write_int64=
            function(ob,x)
             {write_tag(ob,int64_tag);return write_untagged_int64(ob,x)},
           write_float32=
            function(ob,x)
             {write_tag(ob,float32_tag);return write_untagged_float32(ob,x)},
           write_float64=
            function(ob,x)
             {write_tag(ob,float64_tag);return write_untagged_float64(ob,x)},
           write_string=
            function(ob,x)
             {write_tag(ob,string_tag);return write_untagged_string(ob,x)},
           write_uvint=
            function(ob,x)
             {write_tag(ob,uvint_tag);return write_untagged_uvint(ob,x)},
           write_svint=
            function(ob,x)
             {write_tag(ob,svint_tag);return write_untagged_svint(ob,x)},
           write_t=
            function(ob,tagged,x)
             {var tagged$0=tagged,x$0=x;
              for(;;)
               {if(typeof x$0 === "number")
                 {if(tagged$0)write_tag(ob,unit_tag);
                  return write_untagged_unit(ob,0)}
                var _a__=x$0[1];
                if(708012133 <= _a__)
                 {if(847309489 <= _a__)
                   {if(928626971 === _a__)
                     {var x$1=x$0[2];
                      if(tagged$0)write_tag(ob,float32_tag);
                      return write_untagged_float32(ob,x$1)}
                    if(951901561 <= _a__)
                     {if(1063160078 <= _a__)
                       {var x$2=x$0[2];
                        if(tagged$0)write_tag(ob,uvint_tag);
                        return write_untagged_uvint(ob,x$2)}
                      var o=x$0[2];
                      if(tagged$0)write_tag(ob,array_tag);
                      if(o)
                       {var
                         match=o[1],
                         a=match[2],
                         node_tag=match[1],
                         len=a.length - 1;
                        write_untagged_uvint(ob,len);
                        var _a$_=0 < len?1:0;
                        if(_a$_)
                         {write_tag(ob,node_tag);
                          var
                           _ba_=0,
                           _bb_=function(_bs_){return write_t(ob,_ba_,_bs_)};
                          return caml_call2(Stdlib_array[13],_bb_,a)}
                        return _a$_}
                      return write_untagged_uvint(ob,0)}
                    if(928627642 <= _a__)
                     {var x$3=x$0[2];
                      if(tagged$0)write_tag(ob,float64_tag);
                      return write_untagged_float64(ob,x$3)}
                    var a$0=x$0[2];
                    if(tagged$0)write_tag(ob,record_tag);
                    write_untagged_uvint(ob,a$0.length - 1);
                    var
                     _bc_=
                      function(param)
                       {var x=param[3],h=param[2];
                        write_hashtag(ob,h,1);
                        return write_t(ob,1,x)};
                    return caml_call2(Stdlib_array[13],_bc_,a$0)}
                  if(737456202 <= _a__)
                   {if(815034505 <= _a__)
                     {var x$4=x$0[2];
                      if(tagged$0)write_tag(ob,int8_tag);
                      return write_untagged_char(ob,x$4)}
                    var x$5=x$0[2];
                    if(tagged$0)write_tag(ob,bool_tag);
                    return write_untagged_bool(ob,x$5)}
                  if(726928360 <= _a__)
                   {var a$1=x$0[2];
                    if(tagged$0)write_tag(ob,tuple_tag);
                    write_untagged_uvint(ob,a$1.length - 1);
                    var
                     _bd_=1,
                     _be_=function(_br_){return write_t(ob,_bd_,_br_)};
                    return caml_call2(Stdlib_array[13],_be_,a$1)}
                  var match$0=x$0[2],x$6=match$0[3],h=match$0[2];
                  if(tagged$0)write_tag(ob,variant_tag);
                  write_hashtag(ob,h,0 !== x$6?1:0);
                  if(x$6){var x$7=x$6[1],tagged$0=1,x$0=x$7;continue}
                  return 0}
                if(-775957819 <= _a__)
                 {if(412180492 <= _a__)
                   {if(504440814 <= _a__)
                     {var o$0=x$0[2];
                      if(tagged$0)write_tag(ob,table_tag);
                      if(o$0)
                       {var
                         match$1=o$0[1],
                         a$2=match$1[2],
                         fields=match$1[1],
                         row_num=a$2.length - 1;
                        write_untagged_uvint(ob,row_num);
                        var _bf_=0 < row_num?1:0;
                        if(_bf_)
                         {var col_num=fields.length - 1;
                          write_untagged_uvint(ob,col_num);
                          var
                           _bg_=
                            function(param)
                             {var tag=param[3],h=param[2];
                              write_hashtag(ob,h,1);
                              return write_tag(ob,tag)};
                          caml_call2(Stdlib_array[13],_bg_,fields);
                          var _bh_=0 < row_num?1:0;
                          if(_bh_)
                           {var _bj_=row_num - 1 | 0,_bi_=0;
                            if(! (_bj_ < 0))
                             {var i=_bi_;
                              for(;;)
                               {var ai=caml_check_bound(a$2,i)[1 + i];
                                if(ai.length - 1 !== col_num)
                                 caml_call1(Stdlib[1],cst_Bi_io_write_t_Malformed_Ta);
                                var _bn_=col_num - 1 | 0,_bm_=0;
                                if(! (_bn_ < 0))
                                 {var j=_bm_;
                                  for(;;)
                                   {write_t(ob,0,caml_check_bound(ai,j)[1 + j]);
                                    var _bp_=j + 1 | 0;
                                    if(_bn_ !== j){var j=_bp_;continue}
                                    break}}
                                var _bo_=i + 1 | 0;
                                if(_bj_ !== i){var i=_bo_;continue}
                                break}}
                            var _bk_=0}
                          else
                           var _bk_=_bh_;
                          var _bl_=_bk_}
                        else
                         var _bl_=_bf_;
                        return _bl_}
                      return write_untagged_uvint(ob,0)}
                    var x$8=x$0[2];
                    if(tagged$0)write_tag(ob,svint_tag);
                    return write_untagged_svint(ob,x$8)}
                  if(221365804 <= _a__)
                   {var match$2=x$0[2],x$9=match$2[2],i$0=match$2[1];
                    if(tagged$0)write_tag(ob,num_variant_tag);
                    write_numtag(ob,i$0,0 !== x$9?1:0);
                    if(x$9){var x$10=x$9[1],tagged$0=1,x$0=x$10;continue}
                    return 0}
                  var x$11=x$0[2];
                  if(tagged$0)write_tag(ob,shared_tag);
                  var
                   offset=
                    caml_call3
                     (_a_[3],ob[7],[0,x$11,dummy_type_id],ob[4] + ob[3] | 0);
                  write_untagged_uvint(ob,offset);
                  var _bq_=0 === offset?1:0;
                  if(_bq_){var tagged$0=1,x$0=x$11;continue}
                  return _bq_}
                if(-783416530 <= _a__)
                 {if(-783415859 <= _a__)
                   {var x$12=x$0[2];
                    if(tagged$0)write_tag(ob,int64_tag);
                    return write_untagged_int64(ob,x$12)}
                  var x$13=x$0[2];
                  if(tagged$0)write_tag(ob,int32_tag);
                  return write_untagged_int32(ob,x$13)}
                if(-783416972 <= _a__)
                 {var x$14=x$0[2];
                  if(tagged$0)write_tag(ob,int16_tag);
                  return write_untagged_int16(ob,x$14)}
                var s=x$0[2];
                if(tagged$0)write_tag(ob,string_tag);
                return write_untagged_string(ob,s)}},
           write_tree=function(ob,x){return write_t(ob,1,x)},
           string_of_tree=
            function(x)
             {var ob=create$1(0,0,1000);write_tree(ob,x);return contents(ob)},
           tag_of_tree=
            function(x)
             {if(typeof x === "number")return unit_tag;
              var _a9_=x[1];
              return 708012133 <= _a9_
                      ?847309489 <= _a9_
                        ?928626971 === _a9_
                          ?float32_tag
                          :951901561 <= _a9_
                            ?1063160078 <= _a9_?uvint_tag:array_tag
                            :928627642 <= _a9_?float64_tag:record_tag
                        :737456202 <= _a9_
                          ?815034505 <= _a9_?int8_tag:bool_tag
                          :726928360 <= _a9_?tuple_tag:variant_tag
                      :-775957819 <= _a9_
                        ?412180492 <= _a9_
                          ?504440814 <= _a9_?table_tag:svint_tag
                          :221365804 <= _a9_?num_variant_tag:shared_tag
                        :-783416530 <= _a9_
                          ?-783415859 <= _a9_?int64_tag:int32_tag
                          :-783416972 <= _a9_?int16_tag:string_tag},
           read_tag=function(ib){return read_char(ib)},
           read_untagged_unit=
            function(ib)
             {var match=read_char(ib);
              return match?error(cst_Corrupted_data_unit_value):0},
           read_untagged_bool=
            function(ib)
             {var match=read_char(ib);
              return 1 === match
                      ?1
                      :match?error(cst_Corrupted_data_bool_value):0},
           read_untagged_char=function(ib){return read_char(ib)},
           read_untagged_int8=function(ib){return read_char(ib)},
           read_untagged_int16=
            function(ib)
             {var i=read(ib,2),s=ib[1],_a8_=caml_bytes_get(s,i + 1 | 0);
              return caml_bytes_get(s,i) << 8 | _a8_},
           read_untagged_int32=
            function(ib)
             {var
               i=read(ib,4),
               s=ib[1],
               _a6_=caml_bytes_get(s,i + 1 | 0),
               x1=caml_bytes_get(s,i) << 8 | _a6_,
               _a7_=caml_bytes_get(s,i + 3 | 0),
               x2=caml_bytes_get(s,i + 2 | 0) << 8 | _a7_;
              return x1 << 16 | x2},
           read_untagged_float32=
            function(ib)
             {return runtime.caml_int32_float_of_bits(read_untagged_int32(ib))},
           read_untagged_int64=
            function(ib)
             {return runtime.caml_int64_bits_of_float
                      (read_untagged_float64(ib))},
           read_untagged_string=
            function(ib)
             {var
               len=read_untagged_uvint(ib),
               str=caml_create_bytes(len),
               pos=[0,0],
               rem=[0,len];
              for(;;)
               {if(0 < rem[1])
                 {var bytes_read=try_preread(ib,rem[1]);
                  if(0 === bytes_read)
                   error(cst_Corrupted_data_string);
                  else
                   {caml_call5
                     (Stdlib_bytes[11],ib[1],ib[2],str,pos[1],bytes_read);
                    ib[2] = ib[2] + bytes_read | 0;
                    pos[1] = pos[1] + bytes_read | 0;
                    rem[1] = rem[1] - bytes_read | 0}
                  continue}
                return caml_call1(Stdlib_bytes[6],str)}},
           read_unit=function(ib){read_untagged_unit(ib);return 948106916},
           read_bool=function(ib){return [0,737456202,read_untagged_bool(ib)]},
           read_int8=function(ib){return [0,815034505,read_untagged_char(ib)]},
           read_int16=
            function(ib){return [0,-783416972,read_untagged_int16(ib)]},
           read_int32=
            function(ib){return [0,-783416530,read_untagged_int32(ib)]},
           read_int64=
            function(ib){return [0,-783415859,read_untagged_int64(ib)]},
           read_float32=
            function(ib){return [0,928626971,read_untagged_float32(ib)]},
           read_float64=
            function(ib){return [0,928627642,read_untagged_float64(ib)]},
           read_uvint=
            function(ib){return [0,1063160078,read_untagged_uvint(ib)]},
           read_svint=
            function(ib){return [0,412180492,read_untagged_svint(ib)]},
           read_string=
            function(ib){return [0,-976970511,read_untagged_string(ib)]},
           read_tree=
            function(opt,ib)
             {if(opt)var sth=opt[1],unhash=sth;else var unhash=make_unhash(0);
              function read_array(ib)
               {var len=read_untagged_uvint(ib);
                if(0 === len)return _p_;
                var tag=read_tag(ib),read=reader_of_tag(tag);
                function _a5_(param){return caml_call1(read,ib)}
                return [0,
                        951901561,
                        [0,[0,tag,caml_call2(Stdlib_array[2],len,_a5_)]]]}
              function read_tuple(ib)
               {var len=read_untagged_uvint(ib);
                function _a4_(param){return read_tree(ib)}
                return [0,726928360,caml_call2(Stdlib_array[2],len,_a4_)]}
              function read_record(ib)
               {var len=read_untagged_uvint(ib);
                function _a3_(param)
                 {var
                   h=read_field_hashtag(ib),
                   name=caml_call1(unhash,h),
                   x=read_tree(ib);
                  return [0,name,h,x]}
                return [0,847309489,caml_call2(Stdlib_array[2],len,_a3_)]}
              function read_num_variant_cont(ib,i,has_arg)
               {var x=has_arg?[0,read_tree(ib)]:0;
                return [0,221365804,[0,i,x]]}
              function read_num_variant(ib)
               {return read_numtag(ib,read_num_variant_cont)}
              function read_variant_cont(ib,h,has_arg)
               {var name=caml_call1(unhash,h),x=has_arg?[0,read_tree(ib)]:0;
                return [0,708012133,[0,name,h,x]]}
              function read_variant(ib)
               {return read_hashtag(ib,read_variant_cont)}
              function read_table(ib)
               {var row_num=read_untagged_uvint(ib);
                if(0 === row_num)return _q_;
                var col_num=read_untagged_uvint(ib);
                function _aZ_(param)
                 {var
                   h=read_field_hashtag(ib),
                   name=caml_call1(unhash,h),
                   tag=read_tag(ib);
                  return [0,name,h,tag]}
                var fields=caml_call2(Stdlib_array[2],col_num,_aZ_);
                function _a0_(param)
                 {var tag=param[3];return reader_of_tag(tag)}
                var readers=caml_call2(Stdlib_array[15],_a0_,fields);
                function _a1_(param)
                 {function _a2_(j)
                   {return caml_call1(caml_check_bound(readers,j)[1 + j],ib)}
                  return caml_call2(Stdlib_array[2],col_num,_a2_)}
                var a=caml_call2(Stdlib_array[2],row_num,_a1_);
                return [0,504440814,[0,[0,fields,a]]]}
              function read_shared(ib)
               {var pos=ib[4] + ib[2] | 0,offset=read_untagged_uvint(ib);
                if(0 === offset)
                 {var r=[];
                  runtime.caml_update_dummy(r,[0,-775957819,r]);
                  caml_call3(Rd[3],ib[7],[0,pos,dummy_type_id],r);
                  var x=read_tree(ib);
                  r[2] = x;
                  return r}
                return caml_call2
                        (Rd[4],ib[7],[0,pos - offset | 0,dummy_type_id])}
              function reader_of_tag(param)
               {if(! (26 < param >>> 0))
                 switch(param)
                  {case 0:return read_bool;
                   case 1:return read_int8;
                   case 2:return read_int16;
                   case 3:return read_int32;
                   case 4:return read_int64;
                   case 11:return read_float32;
                   case 12:return read_float64;
                   case 16:return read_uvint;
                   case 17:return read_svint;
                   case 18:return read_string;
                   case 19:return read_array;
                   case 20:return read_tuple;
                   case 21:return read_record;
                   case 22:return read_num_variant;
                   case 23:return read_variant;
                   case 24:return read_unit;
                   case 25:return read_table;
                   case 26:return read_shared
                   }
                return error(cst_Corrupted_data_invalid_tag)}
              function read_tree(ib)
               {return caml_call1(reader_of_tag(read_tag(ib)),ib)}
              return read_tree(ib)},
           tree_of_string=
            function(unhash,s){return read_tree(unhash,from_string(0,0,s))},
           skip_bytes=function(ib,n){read(ib,n);return 0},
           skip_unit=function(ib){return skip_bytes(ib,1)},
           skip_bool=function(ib){return skip_bytes(ib,1)},
           skip_int8=function(ib){return skip_bytes(ib,1)},
           skip_int16=function(ib){return skip_bytes(ib,2)},
           skip_int32=function(ib){return skip_bytes(ib,4)},
           skip_int64=function(ib){return skip_bytes(ib,8)},
           skip_float32=function(ib){return skip_bytes(ib,4)},
           skip_float64=function(ib){return skip_bytes(ib,8)},
           skip_uvint=function(ib){read_untagged_uvint(ib);return 0},
           skip_svint=function(ib){read_untagged_svint(ib);return 0},
           skip_string=
            function(ib)
             {var len=read_untagged_uvint(ib);return skip_bytes(ib,len)},
           skip_array=
            function(ib)
             {var len=read_untagged_uvint(ib);
              if(0 === len)return 0;
              var tag=read_tag(ib),read=skipper_of_tag(tag),_aX_=1;
              if(! (len < 1))
               {var i=_aX_;
                for(;;)
                 {caml_call1(read,ib);
                  var _aY_=i + 1 | 0;
                  if(len !== i){var i=_aY_;continue}
                  break}}
              return 0},
           skip_tuple=
            function(ib)
             {var len=read_untagged_uvint(ib),_aV_=1;
              if(! (len < 1))
               {var i=_aV_;
                for(;;)
                 {skip(ib);
                  var _aW_=i + 1 | 0;
                  if(len !== i){var i=_aW_;continue}
                  break}}
              return 0},
           skip_record=
            function(ib)
             {var len=read_untagged_uvint(ib),_aT_=1;
              if(! (len < 1))
               {var i=_aT_;
                for(;;)
                 {read_field_hashtag(ib);
                  skip(ib);
                  var _aU_=i + 1 | 0;
                  if(len !== i){var i=_aU_;continue}
                  break}}
              return 0},
           skip=
            function(ib){return caml_call1(skipper_of_tag(read_tag(ib)),ib)},
           skip_num_variant_cont=
            function(ib,i,has_arg){return has_arg?skip(ib):has_arg},
           skip_num_variant=
            function(ib){return read_numtag(ib,skip_num_variant_cont)},
           skip_variant_cont=
            function(ib,h,has_arg){return has_arg?skip(ib):has_arg},
           skip_variant=
            function(ib){return read_hashtag(ib,skip_variant_cont)},
           skip_table=
            function(ib)
             {var row_num=read_untagged_uvint(ib);
              if(0 === row_num)return 0;
              var col_num=read_untagged_uvint(ib);
              function _aO_(param)
               {read_field_hashtag(ib);return skipper_of_tag(read_tag(ib))}
              var readers=caml_call2(Stdlib_array[2],col_num,_aO_),_aP_=1;
              if(! (row_num < 1))
               {var i=_aP_;
                for(;;)
                 {var _aQ_=1;
                  if(! (col_num < 1))
                   {var j=_aQ_;
                    for(;;)
                     {caml_call1(caml_check_bound(readers,j)[1 + j],ib);
                      var _aS_=j + 1 | 0;
                      if(col_num !== j){var j=_aS_;continue}
                      break}}
                  var _aR_=i + 1 | 0;
                  if(row_num !== i){var i=_aR_;continue}
                  break}}
              return 0},
           skipper_of_tag=
            function(param)
             {if(! (25 < param >>> 0))
               switch(param)
                {case 0:return skip_bool;
                 case 1:return skip_int8;
                 case 2:return skip_int16;
                 case 3:return skip_int32;
                 case 4:return skip_int64;
                 case 11:return skip_float32;
                 case 12:return skip_float64;
                 case 16:return skip_uvint;
                 case 17:return skip_svint;
                 case 18:return skip_string;
                 case 19:return skip_array;
                 case 20:return skip_tuple;
                 case 21:return skip_record;
                 case 22:return skip_num_variant;
                 case 23:return skip_variant;
                 case 24:return skip_unit;
                 case 25:return skip_table
                 }
              return error(cst_Corrupted_data_invalid_tag$0)},
           array=Easy_format[2],
           record=Easy_format[2],
           _r_=Easy_format[2],
           tuple=
            [0,
             0,
             _r_[2],
             _r_[3],
             _r_[4],
             0,
             _r_[6],
             0,
             _r_[8],
             _r_[9],
             _r_[10],
             _r_[11],
             _r_[12],
             _r_[13],
             _r_[14]],
           map=
            function(f,a)
             {var len=a.length - 1;
              if(0 === len)
               var _aN_=[0];
              else
               {var
                 r=caml_make_vect(len,caml_call1(f,a[1])),
                 _aL_=len - 1 | 0,
                 _aK_=1;
                if(! (_aL_ < 1))
                 {var i=_aK_;
                  for(;;)
                   {r[1 + i] = caml_call1(f,a[1 + i]);
                    var _aM_=i + 1 | 0;
                    if(_aL_ !== i){var i=_aM_;continue}
                    break}}
                var _aN_=r}
              return caml_call1(Stdlib_array[11],_aN_)},
           format=
            function(shared,x)
             {var x$0=x;
              for(;;)
               {if(typeof x$0 === "number")return [0,cst_unit,Easy_format[1]];
                var _ad_=x$0[1];
                if(708012133 <= _ad_)
                 {if(847309489 <= _ad_)
                   {if(928626971 === _ad_)
                     {var x$1=x$0[2],_ae_=Easy_format[1];
                      return [0,caml_call1(Stdlib[35],x$1),_ae_]}
                    if(951901561 <= _ad_)
                     {if(1063160078 <= _ad_)
                       {var x$2=x$0[2],_af_=Easy_format[1];
                        return [0,caml_call1(Stdlib[33],x$2),_af_]}
                      var _ag_=x$0[2];
                      if(_ag_)
                       {var match=_ag_[1],a=match[2];
                        return [1,
                                [0,cst$3,cst$2,cst$1,array],
                                map(function(_aJ_){return format(shared,_aJ_)},a)]}
                      return [0,cst$4,Easy_format[1]]}
                    if(928627642 <= _ad_)
                     {var x$3=x$0[2],_ah_=Easy_format[1];
                      return [0,caml_call1(Stdlib[35],x$3),_ah_]}
                    var a$0=x$0[2];
                    return [1,
                            [0,cst$7,cst$6,cst$5,record],
                            map
                             (function(param)
                               {var x=param[3],h=param[2],o=param[1];
                                if(o)
                                 var s=o[1],s$0=caml_call2(Stdlib_printf[4],_B_,s);
                                else
                                 var s$0=caml_call2(Stdlib_printf[4],_D_,h);
                                var
                                 _aG_=format(shared,x),
                                 _aH_=Easy_format[3],
                                 _aI_=Easy_format[1];
                                return [2,
                                        [0,[0,caml_call2(Stdlib_printf[4],_C_,s$0),_aI_],_aH_],
                                        _aG_]},
                              a$0)]}
                  if(737456202 <= _ad_)
                   {if(815034505 <= _ad_)
                     {var x$4=x$0[2],_ai_=Easy_format[1];
                      return [0,caml_call2(Stdlib_printf[4],_s_,x$4),_ai_]}
                    var
                     x$5=x$0[2],
                     _aj_=Easy_format[1],
                     _ak_=x$5?cst_true:cst_false;
                    return [0,_ak_,_aj_]}
                  if(726928360 <= _ad_)
                   {var a$1=x$0[2];
                    return [1,
                            [0,cst$10,cst$9,cst$8,tuple],
                            map(function(_aF_){return format(shared,_aF_)},a$1)]}
                  var
                   match$0=x$0[2],
                   o=match$0[3],
                   h=match$0[2],
                   opt_name=match$0[1];
                  if(opt_name)
                   var s=opt_name[1],name=caml_call2(Stdlib_printf[4],_t_,s);
                  else
                   var name=caml_call2(Stdlib_printf[4],_u_,h);
                  if(o)
                   {var
                     x$6=o[1],
                     _al_=format(shared,x$6),
                     _am_=Easy_format[3],
                     _an_=Easy_format[1];
                    return [1,
                            [0,cst$14,cst$13,cst$12,tuple],
                            [0,
                             [2,
                              [0,[0,caml_call2(Stdlib[28],name,cst$11),_an_],_am_],
                              _al_],
                             0]]}
                  var
                   _ao_=Easy_format[1],
                   _ap_=caml_call2(Stdlib[28],name,cst$15);
                  return [0,caml_call2(Stdlib[28],cst$16,_ap_),_ao_]}
                if(-775957819 <= _ad_)
                 {if(412180492 <= _ad_)
                   {if(504440814 <= _ad_)
                     {var _aq_=x$0[2];
                      if(_aq_)
                       {var
                         match$1=_aq_[1],
                         aa=match$1[2],
                         header=match$1[1],
                         _ar_=
                          function(header)
                            {return function(a)
                              {function _aE_(i,x)
                                {var
                                  match=caml_check_bound(header,i)[1 + i],
                                  h=match[2],
                                  s=match[1];
                                 return [0,s,h,x]}
                               return [0,847309489,caml_call2(Stdlib_array[16],_aE_,a)]}}
                           (header),
                         x$7=
                          [0,
                           951901561,
                           [0,[0,record_tag,caml_call2(Stdlib_array[15],_ar_,aa)]]],
                         x$0=x$7;
                        continue}
                      return [0,cst$17,Easy_format[1]]}
                    var x$8=x$0[2],_as_=Easy_format[1];
                    return [0,caml_call1(Stdlib[33],x$8),_as_]}
                  if(221365804 <= _ad_)
                   {var
                     match$2=x$0[2],
                     o$0=match$2[2],
                     i=match$2[1],
                     suffix=0 === i?cst$18:caml_call1(Stdlib[33],i);
                    if(o$0)
                     {var
                       x$9=o$0[1],
                       _at_=Easy_format[1],
                       cons=[0,caml_call2(Stdlib[28],cst_Some,suffix),_at_],
                       _au_=format(shared,x$9);
                      return [2,[0,cons,Easy_format[3]],_au_]}
                    var _av_=Easy_format[1];
                    return [0,caml_call2(Stdlib[28],cst_None,suffix),_av_]}
                  var x$10=x$0[2],p=shared[2],tbl=shared[1];
                  p[1]++;
                  var
                   pos=p[1],
                   offset=caml_call3(_a_[3],tbl,[0,x$10,dummy_type_id],pos);
                  if(0 === offset)
                   {var
                     _aw_=format(shared,x$10),
                     _ax_=Easy_format[3],
                     _ay_=Easy_format[1];
                    return [2,
                            [0,[0,caml_call2(Stdlib_printf[4],_v_,pos),_ay_],_ax_],
                            _aw_]}
                  var _az_=Easy_format[1];
                  return [0,
                          caml_call2(Stdlib_printf[4],_w_,pos - offset | 0),
                          _az_]}
                if(-783416530 <= _ad_)
                 {if(-783415859 <= _ad_)
                   {var x$11=x$0[2],_aA_=Easy_format[1];
                    return [0,caml_call2(Stdlib_printf[4],_x_,x$11),_aA_]}
                  var x$12=x$0[2],_aB_=Easy_format[1];
                  return [0,caml_call2(Stdlib_printf[4],_y_,x$12),_aB_]}
                if(-783416972 <= _ad_)
                 {var x$13=x$0[2],_aC_=Easy_format[1];
                  return [0,caml_call2(Stdlib_printf[4],_z_,x$13),_aC_]}
                var s$0=x$0[2],_aD_=Easy_format[1];
                return [0,caml_call2(Stdlib_printf[4],_A_,s$0),_aD_]}},
           init=function(param){return [0,caml_call1(_a_[1],512),[0,0]]},
           view_of_tree=
            function(t)
             {var _ac_=format(init(0),t);
              return caml_call3(Easy_format[4][4],0,0,_ac_)},
           print_view_of_tree=
            function(t)
             {var _ab_=format(init(0),t);
              return caml_call3(Easy_format[4][6],0,0,_ab_)},
           output_view_of_tree=
            function(oc,t)
             {var _aa_=format(init(0),t);
              return caml_call4(Easy_format[4][5],0,0,oc,_aa_)},
           view=
            function(unhash,s){return view_of_tree(tree_of_string(unhash,s))},
           print_view=
            function(unhash,s)
             {return print_view_of_tree(tree_of_string(unhash,s))},
           output_view=
            function(unhash,oc,s)
             {return output_view_of_tree(oc,tree_of_string(unhash,s))},
           Bi_io=
            [0,
             bool_tag,
             int8_tag,
             int16_tag,
             int32_tag,
             int64_tag,
             float32_tag,
             float64_tag,
             uvint_tag,
             svint_tag,
             string_tag,
             array_tag,
             tuple_tag,
             record_tag,
             num_variant_tag,
             variant_tag,
             unit_tag,
             table_tag,
             shared_tag,
             write_tag,
             read_tag,
             hash_name,
             write_hashtag,
             string_of_hashtag,
             read_hashtag,
             read_field_hashtag,
             make_unhash,
             write_numtag,
             read_numtag,
             write_untagged_unit,
             write_untagged_bool,
             write_untagged_char,
             write_untagged_int8,
             write_untagged_int16,
             write_untagged_int32,
             write_untagged_int64,
             write_untagged_float32,
             write_untagged_float64,
             write_untagged_string,
             write_untagged_uvint,
             write_untagged_svint,
             write_unit,
             write_bool,
             write_char,
             write_int8,
             write_int16,
             write_int32,
             write_int64,
             write_float32,
             write_float64,
             write_string,
             write_uvint,
             write_svint,
             read_untagged_unit,
             read_untagged_bool,
             read_untagged_char,
             read_untagged_int8,
             read_untagged_int16,
             read_untagged_int32,
             read_untagged_int64,
             read_untagged_float32,
             read_untagged_float64,
             read_untagged_string,
             read_untagged_uvint,
             read_untagged_svint,
             skip,
             write_tree,
             string_of_tree,
             read_tree,
             tree_of_string,
             tag_of_tree,
             view_of_tree,
             view,
             print_view_of_tree,
             print_view,
             output_view_of_tree,
             output_view,
             safety_test];
          caml_register_global(118,Bi_io,"Bi_io");
          var
           split=
            function(s)
             {var
               acc=[0,0],
               stop=[0,caml_ml_string_length(s)],
               _Y_=stop[1] - 1 | 0;
              if(! (_Y_ < 0))
               {var i=_Y_;
                for(;;)
                 {if(44 === caml_string_get(s,i))
                   {var start=i + 1 | 0,___=acc[1];
                    acc[1]
                    =
                    [0,
                     caml_call3(Stdlib_string[4],s,start,stop[1] - start | 0),
                     ___];
                    stop[1] = i}
                  var _$_=i - 1 | 0;
                  if(0 !== i){var i=_$_;continue}
                  break}}
              var _Z_=acc[1];
              return [0,caml_call3(Stdlib_string[4],s,0,stop[1]),_Z_]},
           load_lines=
            function(accu,s)
             {var ic=caml_call1(Stdlib[79],s),l=[0,accu];
              try
               {for(;;)
                 {var _W_=caml_call1(Stdlib_list[9],l[1]);
                  l[1] = [0,caml_call1(Stdlib[83],ic),_W_];
                  continue}}
              catch(_X_)
               {_X_ = caml_wrap_exception(_X_);
                if(_X_ === Stdlib[12]){caml_call1(Stdlib[93],ic);return l[1]}
                throw _X_}},
           load=
            function(ic)
             {var buf=caml_call1(Stdlib_buffer[1],1000);
              try
               {for(;;)
                 {var _U_=caml_call1(Stdlib[82],ic);
                  caml_call2(Stdlib_buffer[10],buf,_U_);
                  continue}}
              catch(_V_)
               {_V_ = caml_wrap_exception(_V_);
                if(_V_ === Stdlib[12])return caml_call1(Stdlib_buffer[2],buf);
                throw _V_}},
           symbol=Stdlib_filename[4],
           default_dict_path=
            function(param)
             {try
               {var
                 _R_=Stdlib_sys[4],
                 _S_=
                  caml_string_notequal(_R_,cst_Cygwin)
                   ?caml_string_notequal(_R_,cst_Unix)
                     ?caml_string_notequal(_R_,cst_Win32)
                       ?0
                       :[0,
                         caml_call2
                          (symbol,caml_sys_getenv(cst_HOMEPATH),cst_bdump_dict)]
                     :[0,
                       caml_call2
                        (symbol,caml_sys_getenv(cst_HOME),cst_bdump_dict$0)]
                   :[0,
                     caml_call2
                      (symbol,caml_sys_getenv(cst_HOME$0),cst_bdump_dict$1)];
                return _S_}
              catch(_T_)
               {_T_ = caml_wrap_exception(_T_);
                if(_T_ === Stdlib[8])return 0;
                throw _T_}},
           load_dictionary=
            function(dic_file,accu)
             {if(dic_file)
               {var fn=dic_file[1];
                if(runtime.caml_sys_file_exists(fn))
                 try
                  {var _Q_=load_lines(accu,fn);return _Q_}
                 catch(e)
                  {e = caml_wrap_exception(e);
                   var
                    _O_=caml_call1(Stdlib_printexc[1],e),
                    _P_=caml_call3(Stdlib_printf[4],_E_,fn,_O_);
                   return caml_call1(Stdlib[2],_P_)}
                return accu}
              return accu},
           write_uniq=
            function(oc,a)
             {var _J_=0 < a.length - 1?1:0;
              if(_J_)
               {var _K_=caml_check_bound(a,0)[1];
                caml_call3(Stdlib_printf[1],oc,_F_,_K_);
                var
                 _L_=caml_check_bound(a,0)[1],
                 _M_=
                  function(last,x)
                   {if(caml_string_notequal(last,x))
                     caml_call3(Stdlib_printf[1],oc,_G_,x);
                    return x};
                caml_call3(Stdlib_array[17],_M_,_L_,a);
                var _N_=0}
              else
               var _N_=_J_;
              return _N_},
           save_dictionary=
            function(dic_file,l)
             {if(dic_file)
               {var fn=dic_file[1],a=caml_call1(Stdlib_array[12],l);
                caml_call2(Stdlib_array[25],Stdlib_string[33],a);
                var
                 oc=caml_call1(Stdlib[60],fn),
                 finally$0=function(param){return caml_call1(Stdlib[77],oc)};
                try
                 {write_uniq(oc,a);var _I_=finally$0(0);return _I_}
                catch(e){e = caml_wrap_exception(e);finally$0(0);throw e}}
              return 0},
           Bi_dump=
            [0,
             split,
             load_lines,
             load,
             symbol,
             default_dict_path,
             load_dictionary,
             write_uniq,
             save_dictionary];
          caml_register_global(122,Bi_dump,"Bi_dump");
          return}
        throw [0,Assert_failure,_H_]}
      r[1] = r[1] >>> 1 | 0;
      c[1]++;
      continue}}
  (function(){return this}()));


//# 1 "../../.js/yojson/yojson.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_bytes_get=runtime.caml_bytes_get,
     caml_bytes_set=runtime.caml_bytes_set,
     caml_check_bound=runtime.caml_check_bound,
     caml_classify_float=runtime.caml_classify_float,
     caml_create_bytes=runtime.caml_create_bytes,
     caml_equal=runtime.caml_equal,
     caml_float_of_string=runtime.caml_float_of_string,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_int64_of_string=runtime.caml_int64_of_string,
     caml_int_of_string=runtime.caml_int_of_string,
     caml_lex_engine=runtime.caml_lex_engine,
     caml_make_vect=runtime.caml_make_vect,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Cannot_convert_heterogenou=
      caml_string_of_jsbytes("Cannot convert heterogenous array to biniou"),
     cst_Cannot_convert_big_int_to_=
      caml_string_of_jsbytes("Cannot convert big int to biniou"),
     cst_Cannot_convert_hashed_fiel=
      caml_string_of_jsbytes("Cannot convert hashed field name to JSON"),
     cst_Cannot_convert_uvint_to_JS=
      caml_string_of_jsbytes("Cannot convert uvint to JSON"),
     cst_Cannot_convert_int8_to_JSO=
      caml_string_of_jsbytes("Cannot convert int8 to JSON"),
     cst_Cannot_convert_hashed_vari=
      caml_string_of_jsbytes("Cannot convert hashed variant name to JSON"),
     cst_Cannot_convert_num_variant=
      caml_string_of_jsbytes("Cannot convert num_variant to JSON"),
     cst_Cannot_convert_shared_node=
      caml_string_of_jsbytes("Cannot convert shared node to JSON"),
     cst_Cannot_convert_int64_to_JS=
      caml_string_of_jsbytes("Cannot convert int64 to JSON"),
     cst_Cannot_convert_int32_to_JS=
      caml_string_of_jsbytes("Cannot convert int32 to JSON"),
     cst_Cannot_convert_int16_to_JS=
      caml_string_of_jsbytes("Cannot convert int16 to JSON"),
     cst_Malformed_biniou_table=
      caml_string_of_jsbytes("Malformed biniou table"),
     cst_Cannot_convert_hashed_fiel$0=
      caml_string_of_jsbytes("Cannot convert hashed field name to JSON"),
     cst_Null=caml_string_of_jsbytes("`Null"),
     cst_Some=caml_string_of_jsbytes("(Some "),
     cst$1=caml_string_of_jsbytes(")"),
     cst_None=caml_string_of_jsbytes("None"),
     cst_Null$2=caml_string_of_jsbytes("`Null"),
     cst_Some$1=caml_string_of_jsbytes("(Some "),
     cst$33=caml_string_of_jsbytes(")"),
     cst_None$1=caml_string_of_jsbytes("None"),
     cst_Unexpected_end_of_input$92=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$12=caml_string_of_jsbytes("Invalid token"),
     cst_Unexpected_end_of_input$93=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Unexpected_end_of_input$94=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_escape_sequence$1=
      caml_string_of_jsbytes("Invalid escape sequence"),
     cst_Unexpected_end_of_input$95=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_low_surrogate_for_$1=
      caml_string_of_jsbytes
       ("Invalid low surrogate for code point beyond U+FFFF"),
     cst_Missing_escape_sequence_re$1=
      caml_string_of_jsbytes
       ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"),
     cst_Unexpected_end_of_input$96=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_string_literal$5=
      caml_string_of_jsbytes("Invalid string literal"),
     cst_Unexpected_end_of_input$97=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$29=
      caml_string_of_jsbytes("Expected ':' or '>' but found"),
     cst_Unexpected_end_of_input$98=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$30=
      caml_string_of_jsbytes("Expected '<' but found"),
     cst_Unexpected_end_of_input$99=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$31=
      caml_string_of_jsbytes("Expected '>' but found"),
     cst_Unexpected_end_of_input$100=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$32=
      caml_string_of_jsbytes("Expected ',' but found"),
     cst_Unexpected_end_of_input$101=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$30=
      caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"),
     cst_Unexpected_end_of_input$102=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Unterminated_comment$3=caml_string_of_jsbytes("Unterminated comment"),
     cst_Expected_null_but_found$1=
      caml_string_of_jsbytes("Expected 'null' but found"),
     cst_Unexpected_end_of_input$103=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_true_or_false_but$1=
      caml_string_of_jsbytes("Expected 'true' or 'false' but found"),
     cst_Unexpected_end_of_input$104=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Int_overflow$5=caml_string_of_jsbytes("Int overflow"),
     cst_Int_overflow$6=caml_string_of_jsbytes("Int overflow"),
     cst_Expected_an_integer_but_fo$1=
      caml_string_of_jsbytes
       ("Expected an integer but found a string that doesn't even represent an integer"),
     cst_Expected_integer_but_found$1=
      caml_string_of_jsbytes("Expected integer but found"),
     cst_Unexpected_end_of_input$105=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Int32_overflow$3=caml_string_of_jsbytes("Int32 overflow"),
     cst_Expected_an_int32_but_foun$1=
      caml_string_of_jsbytes
       ("Expected an int32 but found a string that doesn't even represent an integer"),
     cst_Expected_int32_but_found$1=
      caml_string_of_jsbytes("Expected int32 but found"),
     cst_Unexpected_end_of_input$106=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Int32_overflow$4=caml_string_of_jsbytes("Int32 overflow"),
     cst_Expected_an_int64_but_foun$1=
      caml_string_of_jsbytes
       ("Expected an int64 but found a string that doesn't even represent an integer"),
     cst_Expected_int64_but_found$1=
      caml_string_of_jsbytes("Expected int64 but found"),
     cst_Unexpected_end_of_input$107=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Infinity$21=caml_string_of_jsbytes("-Infinity"),
     cst_Infinity$22=caml_string_of_jsbytes("Infinity"),
     cst_NaN$10=caml_string_of_jsbytes("NaN"),
     cst_Expected_a_number_but_foun$1=
      caml_string_of_jsbytes
       ("Expected a number but found a string that doesn't even represent a number"),
     cst_Expected_number_but_found$1=
      caml_string_of_jsbytes("Expected number but found"),
     cst_Unexpected_end_of_input$108=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$33=
      caml_string_of_jsbytes("Expected '\"' but found"),
     cst_Unexpected_end_of_input$109=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$7=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$110=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$8=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$111=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$34=
      caml_string_of_jsbytes("Expected '[' but found"),
     cst_Unexpected_end_of_input$112=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$35=
      caml_string_of_jsbytes("Expected '[' but found"),
     cst_Unexpected_end_of_input$113=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$31=
      caml_string_of_jsbytes("Expected ',' or ']' but found"),
     cst_Unexpected_end_of_input$114=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$36=
      caml_string_of_jsbytes("Expected ')' but found"),
     cst_Unexpected_end_of_input$115=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$32=
      caml_string_of_jsbytes("Expected ')' or '' but found"),
     cst_Expected_or_but_found$33=
      caml_string_of_jsbytes("Expected ']' or '' but found"),
     cst_Expected_or_but_found$34=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Unexpected_end_of_input$116=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$35=
      caml_string_of_jsbytes("Expected ',' or ']' but found"),
     cst_Expected_or_but_found$36=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Expected_or_but_found$37=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Unexpected_end_of_input$117=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$37=
      caml_string_of_jsbytes("Expected '{' but found"),
     cst_Unexpected_end_of_input$118=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$38=
      caml_string_of_jsbytes("Expected '{' but found"),
     cst_Unexpected_end_of_input$119=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$38=
      caml_string_of_jsbytes("Expected ',' or '}' but found"),
     cst_Unexpected_end_of_input$120=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$39=
      caml_string_of_jsbytes("Expected ':' but found"),
     cst_Unexpected_end_of_input$121=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$39=
      caml_string_of_jsbytes("Expected '(' or '[' but found"),
     cst_Unexpected_end_of_input$122=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$40=
      caml_string_of_jsbytes("Expected '(' but found"),
     cst_Unexpected_end_of_input$123=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$41=
      caml_string_of_jsbytes("Expected ')' but found"),
     cst_Unexpected_end_of_input$124=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$42=
      caml_string_of_jsbytes("Expected '[' but found"),
     cst_Unexpected_end_of_input$125=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$43=
      caml_string_of_jsbytes("Expected ']' but found"),
     cst_Unexpected_end_of_input$126=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Unexpected_end_of_input$127=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$13=caml_string_of_jsbytes("Invalid token"),
     cst_Invalid_string_literal$6=
      caml_string_of_jsbytes("Invalid string literal"),
     cst_Unexpected_end_of_input$128=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$40=
      caml_string_of_jsbytes("Expected ':' or '>' but found"),
     cst_Unexpected_end_of_input$129=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$9=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$130=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst$34=caml_string_of_jsbytes("/*"),
     cst_Unexpected_end_of_input$131=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$14=caml_string_of_jsbytes("Invalid token"),
     cst_Invalid_string_literal$7=
      caml_string_of_jsbytes("Invalid string literal"),
     cst_Unexpected_end_of_input$132=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$41=
      caml_string_of_jsbytes("Expected ':' or '>' but found"),
     cst_Unexpected_end_of_input$133=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$10=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$134=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst$35=caml_string_of_jsbytes("/*"),
     cst_Expected_or_but_found$42=
      caml_string_of_jsbytes("Expected ',' or '}' but found"),
     cst_Unexpected_end_of_input$135=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$43=
      caml_string_of_jsbytes("Expected ',' or ']' but found"),
     cst_Unexpected_end_of_input$136=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$44=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Unexpected_end_of_input$137=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$44=
      caml_string_of_jsbytes("Expected ':' but found"),
     cst_Unexpected_end_of_input$138=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$45=
      caml_string_of_jsbytes("Expected '>' but found"),
     cst_Unexpected_end_of_input$139=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst$36=caml_string_of_jsbytes("*/"),
     cst_Unterminated_comment$4=caml_string_of_jsbytes("Unterminated comment"),
     stream$1=[0,1],
     cst_Blank_input_data$4=caml_string_of_jsbytes("Blank input data"),
     cst_Blank_input_data$3=caml_string_of_jsbytes("Blank input data"),
     cst_Junk_after_end_of_JSON_val$1=
      caml_string_of_jsbytes("Junk after end of JSON value:"),
     cst_Int8_overflow$1=caml_string_of_jsbytes("Int8 overflow"),
     cst_Line$1=caml_string_of_jsbytes("Line"),
     cst_Root_is_not_an_object_or_a$3=
      caml_string_of_jsbytes("Root is not an object or array"),
     cst_true$3=caml_string_of_jsbytes("true"),
     cst_false$3=caml_string_of_jsbytes("false"),
     cst_null$5=caml_string_of_jsbytes("null"),
     cst_b$2=caml_string_of_jsbytes("\\b"),
     cst_t$2=caml_string_of_jsbytes("\\t"),
     cst_n$2=caml_string_of_jsbytes("\\n"),
     cst_f$2=caml_string_of_jsbytes("\\f"),
     cst_r$2=caml_string_of_jsbytes("\\r"),
     cst$32=caml_string_of_jsbytes('\\"'),
     cst$31=caml_string_of_jsbytes("\\\\"),
     cst_u00$2=caml_string_of_jsbytes("\\u00"),
     cst_Null$1=caml_string_of_jsbytes("`Null"),
     cst_Some$0=caml_string_of_jsbytes("(Some "),
     cst$27=caml_string_of_jsbytes(")"),
     cst_None$0=caml_string_of_jsbytes("None"),
     cst_Unexpected_end_of_input$44=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$9=caml_string_of_jsbytes("Invalid token"),
     cst_Unexpected_end_of_input$45=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Unexpected_end_of_input$46=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_escape_sequence$0=
      caml_string_of_jsbytes("Invalid escape sequence"),
     cst_Unexpected_end_of_input$47=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_low_surrogate_for_$0=
      caml_string_of_jsbytes
       ("Invalid low surrogate for code point beyond U+FFFF"),
     cst_Missing_escape_sequence_re$0=
      caml_string_of_jsbytes
       ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"),
     cst_Unexpected_end_of_input$48=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_string_literal$2=
      caml_string_of_jsbytes("Invalid string literal"),
     cst_Unexpected_end_of_input$49=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$13=
      caml_string_of_jsbytes("Expected ':' or '>' but found"),
     cst_Unexpected_end_of_input$50=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$14=
      caml_string_of_jsbytes("Expected '<' but found"),
     cst_Unexpected_end_of_input$51=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$15=
      caml_string_of_jsbytes("Expected '>' but found"),
     cst_Unexpected_end_of_input$52=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$16=
      caml_string_of_jsbytes("Expected ',' but found"),
     cst_Unexpected_end_of_input$53=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$14=
      caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"),
     cst_Unexpected_end_of_input$54=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Unterminated_comment$1=caml_string_of_jsbytes("Unterminated comment"),
     cst_Expected_null_but_found$0=
      caml_string_of_jsbytes("Expected 'null' but found"),
     cst_Unexpected_end_of_input$55=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_true_or_false_but$0=
      caml_string_of_jsbytes("Expected 'true' or 'false' but found"),
     cst_Unexpected_end_of_input$56=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Int_overflow$3=caml_string_of_jsbytes("Int overflow"),
     cst_Int_overflow$4=caml_string_of_jsbytes("Int overflow"),
     cst_Expected_an_integer_but_fo$0=
      caml_string_of_jsbytes
       ("Expected an integer but found a string that doesn't even represent an integer"),
     cst_Expected_integer_but_found$0=
      caml_string_of_jsbytes("Expected integer but found"),
     cst_Unexpected_end_of_input$57=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Int32_overflow$1=caml_string_of_jsbytes("Int32 overflow"),
     cst_Expected_an_int32_but_foun$0=
      caml_string_of_jsbytes
       ("Expected an int32 but found a string that doesn't even represent an integer"),
     cst_Expected_int32_but_found$0=
      caml_string_of_jsbytes("Expected int32 but found"),
     cst_Unexpected_end_of_input$58=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Int32_overflow$2=caml_string_of_jsbytes("Int32 overflow"),
     cst_Expected_an_int64_but_foun$0=
      caml_string_of_jsbytes
       ("Expected an int64 but found a string that doesn't even represent an integer"),
     cst_Expected_int64_but_found$0=
      caml_string_of_jsbytes("Expected int64 but found"),
     cst_Unexpected_end_of_input$59=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Infinity$19=caml_string_of_jsbytes("-Infinity"),
     cst_Infinity$20=caml_string_of_jsbytes("Infinity"),
     cst_NaN$9=caml_string_of_jsbytes("NaN"),
     cst_Expected_a_number_but_foun$0=
      caml_string_of_jsbytes
       ("Expected a number but found a string that doesn't even represent a number"),
     cst_Expected_number_but_found$0=
      caml_string_of_jsbytes("Expected number but found"),
     cst_Unexpected_end_of_input$60=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$17=
      caml_string_of_jsbytes("Expected '\"' but found"),
     cst_Unexpected_end_of_input$61=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$3=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$62=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$4=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$63=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$18=
      caml_string_of_jsbytes("Expected '[' but found"),
     cst_Unexpected_end_of_input$64=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$19=
      caml_string_of_jsbytes("Expected '[' but found"),
     cst_Unexpected_end_of_input$65=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$15=
      caml_string_of_jsbytes("Expected ',' or ']' but found"),
     cst_Unexpected_end_of_input$66=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$20=
      caml_string_of_jsbytes("Expected ')' but found"),
     cst_Unexpected_end_of_input$67=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$16=
      caml_string_of_jsbytes("Expected ')' or '' but found"),
     cst_Expected_or_but_found$17=
      caml_string_of_jsbytes("Expected ']' or '' but found"),
     cst_Expected_or_but_found$18=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Unexpected_end_of_input$68=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$19=
      caml_string_of_jsbytes("Expected ',' or ']' but found"),
     cst_Expected_or_but_found$20=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Expected_or_but_found$21=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Unexpected_end_of_input$69=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$21=
      caml_string_of_jsbytes("Expected '{' but found"),
     cst_Unexpected_end_of_input$70=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$22=
      caml_string_of_jsbytes("Expected '{' but found"),
     cst_Unexpected_end_of_input$71=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$22=
      caml_string_of_jsbytes("Expected ',' or '}' but found"),
     cst_Unexpected_end_of_input$72=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$23=
      caml_string_of_jsbytes("Expected ':' but found"),
     cst_Unexpected_end_of_input$73=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$23=
      caml_string_of_jsbytes("Expected '(' or '[' but found"),
     cst_Unexpected_end_of_input$74=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$24=
      caml_string_of_jsbytes("Expected '(' but found"),
     cst_Unexpected_end_of_input$75=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$25=
      caml_string_of_jsbytes("Expected ')' but found"),
     cst_Unexpected_end_of_input$76=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$26=
      caml_string_of_jsbytes("Expected '[' but found"),
     cst_Unexpected_end_of_input$77=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$27=
      caml_string_of_jsbytes("Expected ']' but found"),
     cst_Unexpected_end_of_input$78=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Unexpected_end_of_input$79=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$10=caml_string_of_jsbytes("Invalid token"),
     cst_Invalid_string_literal$3=
      caml_string_of_jsbytes("Invalid string literal"),
     cst_Unexpected_end_of_input$80=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$24=
      caml_string_of_jsbytes("Expected ':' or '>' but found"),
     cst_Unexpected_end_of_input$81=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$5=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$82=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst$28=caml_string_of_jsbytes("/*"),
     cst_Unexpected_end_of_input$83=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$11=caml_string_of_jsbytes("Invalid token"),
     cst_Invalid_string_literal$4=
      caml_string_of_jsbytes("Invalid string literal"),
     cst_Unexpected_end_of_input$84=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$25=
      caml_string_of_jsbytes("Expected ':' or '>' but found"),
     cst_Unexpected_end_of_input$85=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$6=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$86=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst$29=caml_string_of_jsbytes("/*"),
     cst_Expected_or_but_found$26=
      caml_string_of_jsbytes("Expected ',' or '}' but found"),
     cst_Unexpected_end_of_input$87=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$27=
      caml_string_of_jsbytes("Expected ',' or ']' but found"),
     cst_Unexpected_end_of_input$88=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$28=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Unexpected_end_of_input$89=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$28=
      caml_string_of_jsbytes("Expected ':' but found"),
     cst_Unexpected_end_of_input$90=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$29=
      caml_string_of_jsbytes("Expected '>' but found"),
     cst_Unexpected_end_of_input$91=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst$30=caml_string_of_jsbytes("*/"),
     cst_Unterminated_comment$2=caml_string_of_jsbytes("Unterminated comment"),
     cst_Expected_two_objects_check$0=
      caml_string_of_jsbytes("Expected two objects, check inputs"),
     cst_Can_t_convert_each_element$0=
      caml_string_of_jsbytes("Can't convert each element of non-array type "),
     cst_Expected_string_or_null_go$0=
      caml_string_of_jsbytes("Expected string or null, got "),
     cst_Expected_string_got$0=caml_string_of_jsbytes("Expected string, got "),
     cst_Expected_array_got$0=caml_string_of_jsbytes("Expected array, got "),
     cst_Expected_int_or_null_got$0=
      caml_string_of_jsbytes("Expected int or null, got "),
     cst_Expected_int_got$0=caml_string_of_jsbytes("Expected int, got "),
     cst_Expected_float_or_null_got$0=
      caml_string_of_jsbytes("Expected float or null, got "),
     cst_Expected_float_got$0=caml_string_of_jsbytes("Expected float, got "),
     cst_Expected_number_or_null_go$0=
      caml_string_of_jsbytes("Expected number or null, got "),
     cst_Expected_number_got$0=caml_string_of_jsbytes("Expected number, got "),
     cst_Expected_bool_or_null_got$0=
      caml_string_of_jsbytes("Expected bool or null, got "),
     cst_Expected_bool_got$0=caml_string_of_jsbytes("Expected bool, got "),
     cst_Expected_object_got$0=caml_string_of_jsbytes("Expected object, got "),
     cst_Can_t_map_function_over_no$0=
      caml_string_of_jsbytes("Can't map function over non-array type "),
     cst_out_of_bounds$0=caml_string_of_jsbytes(" out of bounds"),
     cst_Index$0=caml_string_of_jsbytes("Index "),
     cst_of_non_array_type$0=caml_string_of_jsbytes(" of non-array type "),
     cst_Can_t_get_index$0=caml_string_of_jsbytes("Can't get index "),
     cst_of_non_object_type$0=caml_string_of_jsbytes("' of non-object type "),
     cst_Can_t_get_member$0=caml_string_of_jsbytes("Can't get member '"),
     cst_null$4=caml_string_of_jsbytes("null"),
     cst_object$0=caml_string_of_jsbytes("object"),
     cst_array$0=caml_string_of_jsbytes("array"),
     cst_bool$0=caml_string_of_jsbytes("bool"),
     cst_variant$0=caml_string_of_jsbytes("variant"),
     cst_tuple$0=caml_string_of_jsbytes("tuple"),
     cst_float$0=caml_string_of_jsbytes("float"),
     cst_int$0=caml_string_of_jsbytes("int"),
     cst_intlit$0=caml_string_of_jsbytes("intlit"),
     cst_string$0=caml_string_of_jsbytes("string"),
     stream$0=[0,1],
     cst_Blank_input_data$2=caml_string_of_jsbytes("Blank input data"),
     cst_Blank_input_data$1=caml_string_of_jsbytes("Blank input data"),
     cst_Junk_after_end_of_JSON_val$0=
      caml_string_of_jsbytes("Junk after end of JSON value:"),
     cst_Int8_overflow$0=caml_string_of_jsbytes("Int8 overflow"),
     cst_Line$0=caml_string_of_jsbytes("Line"),
     cst_Root_is_not_an_object_or_a$2=
      caml_string_of_jsbytes("Root is not an object or array"),
     cst_NaN_value_not_allowed_in_s$7=
      caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$15=
      caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$16=
      caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
     cst_NaN_value_not_allowed_in_s$6=
      caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
     cst_0$13=caml_string_of_jsbytes(".0"),
     cst_Infinity_value_not_allowed$13=
      caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$14=
      caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
     cst_NaN_value_not_allowed_in_s$5=
      caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
     cst_0$12=caml_string_of_jsbytes(".0"),
     cst_Infinity_value_not_allowed$11=
      caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$12=
      caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
     cst_NaN$8=caml_string_of_jsbytes("NaN"),
     cst_Infinity$17=caml_string_of_jsbytes("Infinity"),
     cst_Infinity$18=caml_string_of_jsbytes("-Infinity"),
     cst_0$11=caml_string_of_jsbytes(".0"),
     cst_NaN$7=caml_string_of_jsbytes("NaN"),
     cst_0$10=caml_string_of_jsbytes(".0"),
     cst_Infinity$15=caml_string_of_jsbytes("Infinity"),
     cst_Infinity$16=caml_string_of_jsbytes("-Infinity"),
     cst_NaN$6=caml_string_of_jsbytes("NaN"),
     cst_0$9=caml_string_of_jsbytes(".0"),
     cst_Infinity$13=caml_string_of_jsbytes("Infinity"),
     cst_Infinity$14=caml_string_of_jsbytes("-Infinity"),
     cst_true$2=caml_string_of_jsbytes("true"),
     cst_false$2=caml_string_of_jsbytes("false"),
     cst_null$3=caml_string_of_jsbytes("null"),
     cst_b$1=caml_string_of_jsbytes("\\b"),
     cst_t$1=caml_string_of_jsbytes("\\t"),
     cst_n$1=caml_string_of_jsbytes("\\n"),
     cst_f$1=caml_string_of_jsbytes("\\f"),
     cst_r$1=caml_string_of_jsbytes("\\r"),
     cst$26=caml_string_of_jsbytes('\\"'),
     cst$25=caml_string_of_jsbytes("\\\\"),
     cst_u00$1=caml_string_of_jsbytes("\\u00"),
     cst_Null$0=caml_string_of_jsbytes("`Null"),
     cst_Invalid_token=caml_string_of_jsbytes("Invalid token"),
     cst_Invalid_token$0=caml_string_of_jsbytes("Invalid token"),
     cst_Unexpected_end_of_input=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$1=caml_string_of_jsbytes("Invalid token"),
     cst_Unexpected_end_of_input$0=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Unexpected_end_of_input$1=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_escape_sequence=
      caml_string_of_jsbytes("Invalid escape sequence"),
     cst_Unexpected_end_of_input$2=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_low_surrogate_for_=
      caml_string_of_jsbytes
       ("Invalid low surrogate for code point beyond U+FFFF"),
     cst_Missing_escape_sequence_re=
      caml_string_of_jsbytes
       ("Missing escape sequence representing low surrogate for code point beyond U+FFFF"),
     cst_Unexpected_end_of_input$3=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_string_literal=
      caml_string_of_jsbytes("Invalid string literal"),
     cst_Unexpected_end_of_input$4=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found=
      caml_string_of_jsbytes("Expected ':' or '>' but found"),
     cst_Unexpected_end_of_input$5=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found=caml_string_of_jsbytes("Expected '<' but found"),
     cst_Unexpected_end_of_input$6=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$0=caml_string_of_jsbytes("Expected '>' but found"),
     cst_Unexpected_end_of_input$7=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$1=caml_string_of_jsbytes("Expected ',' but found"),
     cst_Unexpected_end_of_input$8=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$0=
      caml_string_of_jsbytes("Expected '<', '\"' or '[' but found"),
     cst_Unexpected_end_of_input$9=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Unterminated_comment=caml_string_of_jsbytes("Unterminated comment"),
     cst_Expected_null_but_found=
      caml_string_of_jsbytes("Expected 'null' but found"),
     cst_Unexpected_end_of_input$10=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_true_or_false_but=
      caml_string_of_jsbytes("Expected 'true' or 'false' but found"),
     cst_Unexpected_end_of_input$11=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Int_overflow$1=caml_string_of_jsbytes("Int overflow"),
     cst_Int_overflow$2=caml_string_of_jsbytes("Int overflow"),
     cst_Expected_an_integer_but_fo=
      caml_string_of_jsbytes
       ("Expected an integer but found a string that doesn't even represent an integer"),
     cst_Expected_integer_but_found=
      caml_string_of_jsbytes("Expected integer but found"),
     cst_Unexpected_end_of_input$12=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Int32_overflow=caml_string_of_jsbytes("Int32 overflow"),
     cst_Expected_an_int32_but_foun=
      caml_string_of_jsbytes
       ("Expected an int32 but found a string that doesn't even represent an integer"),
     cst_Expected_int32_but_found=
      caml_string_of_jsbytes("Expected int32 but found"),
     cst_Unexpected_end_of_input$13=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Int32_overflow$0=caml_string_of_jsbytes("Int32 overflow"),
     cst_Expected_an_int64_but_foun=
      caml_string_of_jsbytes
       ("Expected an int64 but found a string that doesn't even represent an integer"),
     cst_Expected_int64_but_found=
      caml_string_of_jsbytes("Expected int64 but found"),
     cst_Unexpected_end_of_input$14=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Infinity$11=caml_string_of_jsbytes("-Infinity"),
     cst_Infinity$12=caml_string_of_jsbytes("Infinity"),
     cst_NaN$5=caml_string_of_jsbytes("NaN"),
     cst_Expected_a_number_but_foun=
      caml_string_of_jsbytes
       ("Expected a number but found a string that doesn't even represent a number"),
     cst_Expected_number_but_found=
      caml_string_of_jsbytes("Expected number but found"),
     cst_Unexpected_end_of_input$15=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$2=
      caml_string_of_jsbytes("Expected '\"' but found"),
     cst_Unexpected_end_of_input$16=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$17=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$0=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$18=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$3=caml_string_of_jsbytes("Expected '[' but found"),
     cst_Unexpected_end_of_input$19=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$4=caml_string_of_jsbytes("Expected '[' but found"),
     cst_Unexpected_end_of_input$20=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$1=
      caml_string_of_jsbytes("Expected ',' or ']' but found"),
     cst_Unexpected_end_of_input$21=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$2=caml_string_of_jsbytes("Invalid token"),
     cst_Expected_but_found$5=caml_string_of_jsbytes("Expected ')' but found"),
     cst_Unexpected_end_of_input$22=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$2=
      caml_string_of_jsbytes("Expected ')' or '' but found"),
     cst_Expected_or_but_found$3=
      caml_string_of_jsbytes("Expected ']' or '' but found"),
     cst_Expected_or_but_found$4=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Unexpected_end_of_input$23=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$5=
      caml_string_of_jsbytes("Expected ',' or ']' but found"),
     cst_Expected_or_but_found$6=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Expected_or_but_found$7=
      caml_string_of_jsbytes("Expected ',' or ')' but found"),
     cst_Unexpected_end_of_input$24=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$6=caml_string_of_jsbytes("Expected '{' but found"),
     cst_Unexpected_end_of_input$25=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$7=caml_string_of_jsbytes("Expected '{' but found"),
     cst_Unexpected_end_of_input$26=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$8=
      caml_string_of_jsbytes("Expected ',' or '}' but found"),
     cst_Unexpected_end_of_input$27=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$8=caml_string_of_jsbytes("Expected ':' but found"),
     cst_Unexpected_end_of_input$28=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$9=
      caml_string_of_jsbytes("Expected '(' or '[' but found"),
     cst_Unexpected_end_of_input$29=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$9=caml_string_of_jsbytes("Expected '(' but found"),
     cst_Unexpected_end_of_input$30=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$10=
      caml_string_of_jsbytes("Expected ')' but found"),
     cst_Unexpected_end_of_input$31=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$11=
      caml_string_of_jsbytes("Expected '[' but found"),
     cst_Unexpected_end_of_input$32=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$12=
      caml_string_of_jsbytes("Expected ']' but found"),
     cst_Unexpected_end_of_input$33=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$3=caml_string_of_jsbytes("Invalid token"),
     cst_Invalid_token$4=caml_string_of_jsbytes("Invalid token"),
     cst_Unexpected_end_of_input$34=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$5=caml_string_of_jsbytes("Invalid token"),
     cst_Invalid_string_literal$0=
      caml_string_of_jsbytes("Invalid string literal"),
     cst_Unexpected_end_of_input$35=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$10=
      caml_string_of_jsbytes("Expected ':' or '>' but found"),
     cst_Unexpected_end_of_input$36=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$1=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$37=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$6=caml_string_of_jsbytes("Invalid token"),
     cst_Invalid_token$7=caml_string_of_jsbytes("Invalid token"),
     cst$22=caml_string_of_jsbytes("/*"),
     cst_Unexpected_end_of_input$38=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Invalid_token$8=caml_string_of_jsbytes("Invalid token"),
     cst_Invalid_string_literal$1=
      caml_string_of_jsbytes("Invalid string literal"),
     cst_Unexpected_end_of_input$39=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_string_or_identif$2=
      caml_string_of_jsbytes("Expected string or identifier but found"),
     cst_Unexpected_end_of_input$40=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst$23=caml_string_of_jsbytes("/*"),
     cst_Expected_or_but_found$11=
      caml_string_of_jsbytes("Expected ',' or '}' but found"),
     cst_Unexpected_end_of_input$41=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_or_but_found$12=
      caml_string_of_jsbytes("Expected ',' or ']' but found"),
     cst_Unexpected_end_of_input$42=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst_Expected_but_found$13=
      caml_string_of_jsbytes("Expected ':' but found"),
     cst_Unexpected_end_of_input$43=
      caml_string_of_jsbytes("Unexpected end of input"),
     cst$24=caml_string_of_jsbytes("*/"),
     cst_Unterminated_comment$0=caml_string_of_jsbytes("Unterminated comment"),
     cst_Expected_two_objects_check=
      caml_string_of_jsbytes("Expected two objects, check inputs"),
     cst_Can_t_convert_each_element=
      caml_string_of_jsbytes("Can't convert each element of non-array type "),
     cst_Expected_string_or_null_go=
      caml_string_of_jsbytes("Expected string or null, got "),
     cst_Expected_string_got=caml_string_of_jsbytes("Expected string, got "),
     cst_Expected_array_got=caml_string_of_jsbytes("Expected array, got "),
     cst_Expected_int_or_null_got=
      caml_string_of_jsbytes("Expected int or null, got "),
     cst_Expected_int_got=caml_string_of_jsbytes("Expected int, got "),
     cst_Expected_float_or_null_got=
      caml_string_of_jsbytes("Expected float or null, got "),
     cst_Expected_float_got=caml_string_of_jsbytes("Expected float, got "),
     cst_Expected_number_or_null_go=
      caml_string_of_jsbytes("Expected number or null, got "),
     cst_Expected_number_got=caml_string_of_jsbytes("Expected number, got "),
     cst_Expected_bool_or_null_got=
      caml_string_of_jsbytes("Expected bool or null, got "),
     cst_Expected_bool_got=caml_string_of_jsbytes("Expected bool, got "),
     cst_Expected_object_got=caml_string_of_jsbytes("Expected object, got "),
     cst_Can_t_map_function_over_no=
      caml_string_of_jsbytes("Can't map function over non-array type "),
     cst_out_of_bounds=caml_string_of_jsbytes(" out of bounds"),
     cst_Index=caml_string_of_jsbytes("Index "),
     cst_of_non_array_type=caml_string_of_jsbytes(" of non-array type "),
     cst_Can_t_get_index=caml_string_of_jsbytes("Can't get index "),
     cst_of_non_object_type=caml_string_of_jsbytes("' of non-object type "),
     cst_Can_t_get_member=caml_string_of_jsbytes("Can't get member '"),
     cst_null$2=caml_string_of_jsbytes("null"),
     cst_object=caml_string_of_jsbytes("object"),
     cst_array=caml_string_of_jsbytes("array"),
     cst_bool=caml_string_of_jsbytes("bool"),
     cst_variant=caml_string_of_jsbytes("variant"),
     cst_tuple=caml_string_of_jsbytes("tuple"),
     cst_float=caml_string_of_jsbytes("float"),
     cst_int=caml_string_of_jsbytes("int"),
     cst_intlit=caml_string_of_jsbytes("intlit"),
     cst_string=caml_string_of_jsbytes("string"),
     stream=[0,1],
     cst_Blank_input_data$0=caml_string_of_jsbytes("Blank input data"),
     cst_Blank_input_data=caml_string_of_jsbytes("Blank input data"),
     cst_Junk_after_end_of_JSON_val=
      caml_string_of_jsbytes("Junk after end of JSON value:"),
     cst_Int8_overflow=caml_string_of_jsbytes("Int8 overflow"),
     cst_Int_overflow$0=caml_string_of_jsbytes("Int overflow"),
     cst_Int_overflow=caml_string_of_jsbytes("Int overflow"),
     cst_Line=caml_string_of_jsbytes("Line"),
     cst_Root_is_not_an_object_or_a$1=
      caml_string_of_jsbytes("Root is not an object or array"),
     cst_NaN_value_not_allowed_in_s$4=
      caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$9=
      caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$10=
      caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
     cst_NaN_value_not_allowed_in_s$3=
      caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
     cst_0$8=caml_string_of_jsbytes(".0"),
     cst_Infinity_value_not_allowed$7=
      caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$8=
      caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
     cst_NaN_value_not_allowed_in_s$2=
      caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
     cst_0$7=caml_string_of_jsbytes(".0"),
     cst_Infinity_value_not_allowed$5=
      caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$6=
      caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
     cst_NaN$4=caml_string_of_jsbytes("NaN"),
     cst_Infinity$9=caml_string_of_jsbytes("Infinity"),
     cst_Infinity$10=caml_string_of_jsbytes("-Infinity"),
     cst_0$6=caml_string_of_jsbytes(".0"),
     cst_NaN$3=caml_string_of_jsbytes("NaN"),
     cst_0$5=caml_string_of_jsbytes(".0"),
     cst_Infinity$7=caml_string_of_jsbytes("Infinity"),
     cst_Infinity$8=caml_string_of_jsbytes("-Infinity"),
     cst_NaN$2=caml_string_of_jsbytes("NaN"),
     cst_0$4=caml_string_of_jsbytes(".0"),
     cst_Infinity$5=caml_string_of_jsbytes("Infinity"),
     cst_Infinity$6=caml_string_of_jsbytes("-Infinity"),
     cst_true$1=caml_string_of_jsbytes("true"),
     cst_false$1=caml_string_of_jsbytes("false"),
     cst_null$1=caml_string_of_jsbytes("null"),
     cst_b$0=caml_string_of_jsbytes("\\b"),
     cst_t$0=caml_string_of_jsbytes("\\t"),
     cst_n$0=caml_string_of_jsbytes("\\n"),
     cst_f$0=caml_string_of_jsbytes("\\f"),
     cst_r$0=caml_string_of_jsbytes("\\r"),
     cst$21=caml_string_of_jsbytes('\\"'),
     cst$20=caml_string_of_jsbytes("\\\\"),
     cst_u00$0=caml_string_of_jsbytes("\\u00"),
     cst_null$0=caml_string_of_jsbytes("null"),
     cst$2=caml_string_of_jsbytes("}"),
     cst$3=caml_string_of_jsbytes(","),
     cst$4=caml_string_of_jsbytes("{"),
     cst$5=caml_string_of_jsbytes("{}"),
     cst$6=caml_string_of_jsbytes("]"),
     cst$7=caml_string_of_jsbytes(","),
     cst$8=caml_string_of_jsbytes("["),
     cst$9=caml_string_of_jsbytes("[]"),
     cst$10=caml_string_of_jsbytes("()"),
     cst$11=caml_string_of_jsbytes(")"),
     cst$12=caml_string_of_jsbytes(","),
     cst$13=caml_string_of_jsbytes("("),
     cst_true$0=caml_string_of_jsbytes("true"),
     cst_false$0=caml_string_of_jsbytes("false"),
     cst$14=caml_string_of_jsbytes(":"),
     cst$15=caml_string_of_jsbytes("<"),
     cst$16=caml_string_of_jsbytes(">"),
     cst$17=caml_string_of_jsbytes(""),
     cst$18=caml_string_of_jsbytes(">"),
     cst$19=caml_string_of_jsbytes("<"),
     cst_Root_is_not_an_object_or_a$0=
      caml_string_of_jsbytes
       ("Root is not an object or array as requested by the JSON standard"),
     cst_Root_is_not_an_object_or_a=
      caml_string_of_jsbytes("Root is not an object or array"),
     cst_NaN_value_not_allowed_in_s$1=
      caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$3=
      caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$4=
      caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
     cst_NaN_value_not_allowed_in_s$0=
      caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
     cst_0$3=caml_string_of_jsbytes(".0"),
     cst_Infinity_value_not_allowed$1=
      caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$2=
      caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
     cst_NaN_value_not_allowed_in_s=
      caml_string_of_jsbytes("NaN value not allowed in standard JSON"),
     cst_0$2=caml_string_of_jsbytes(".0"),
     cst_Infinity_value_not_allowed=
      caml_string_of_jsbytes("Infinity value not allowed in standard JSON"),
     cst_Infinity_value_not_allowed$0=
      caml_string_of_jsbytes("-Infinity value not allowed in standard JSON"),
     cst_NaN$1=caml_string_of_jsbytes("NaN"),
     cst_Infinity$3=caml_string_of_jsbytes("Infinity"),
     cst_Infinity$4=caml_string_of_jsbytes("-Infinity"),
     cst_0$1=caml_string_of_jsbytes(".0"),
     cst_NaN$0=caml_string_of_jsbytes("NaN"),
     cst_0$0=caml_string_of_jsbytes(".0"),
     cst_Infinity$1=caml_string_of_jsbytes("Infinity"),
     cst_Infinity$2=caml_string_of_jsbytes("-Infinity"),
     cst_NaN=caml_string_of_jsbytes("NaN"),
     cst_0=caml_string_of_jsbytes(".0"),
     cst_Infinity=caml_string_of_jsbytes("Infinity"),
     cst_Infinity$0=caml_string_of_jsbytes("-Infinity"),
     cst_true=caml_string_of_jsbytes("true"),
     cst_false=caml_string_of_jsbytes("false"),
     cst_null=caml_string_of_jsbytes("null"),
     cst_b=caml_string_of_jsbytes("\\b"),
     cst_t=caml_string_of_jsbytes("\\t"),
     cst_n=caml_string_of_jsbytes("\\n"),
     cst_f=caml_string_of_jsbytes("\\f"),
     cst_r=caml_string_of_jsbytes("\\r"),
     cst$0=caml_string_of_jsbytes('\\"'),
     cst=caml_string_of_jsbytes("\\\\"),
     cst_u00=caml_string_of_jsbytes("\\u00"),
     version=caml_string_of_jsbytes("1.7.0"),
     cst_Yojson_Json_error=caml_string_of_jsbytes("Yojson.Json_error"),
     cst_Yojson_End_of_array=caml_string_of_jsbytes("Yojson.End_of_array"),
     cst_Yojson_End_of_object=caml_string_of_jsbytes("Yojson.End_of_object"),
     cst_Yojson_End_of_tuple=caml_string_of_jsbytes("Yojson.End_of_tuple"),
     cst_Yojson_End_of_input=caml_string_of_jsbytes("Yojson.End_of_input"),
     cst_Yojson_Basic_Int_overflow=
      caml_string_of_jsbytes("Yojson.Basic.Int_overflow"),
     ocaml_lex_tables=
      [0,
       caml_string_of_jsbytes
        ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
       caml_string_of_jsbytes
        ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"),
       caml_string_of_jsbytes
        ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes("")],
     cst_Yojson_Basic_Finally=caml_string_of_jsbytes("Yojson.Basic.Finally"),
     cst_Yojson_Basic_Util_Type_err=
      caml_string_of_jsbytes("Yojson.Basic.Util.Type_error"),
     cst_Yojson_Basic_Util_Undefine=
      caml_string_of_jsbytes("Yojson.Basic.Util.Undefined"),
     cst_Yojson_Safe_Int_overflow=
      caml_string_of_jsbytes("Yojson.Safe.Int_overflow"),
     ocaml_lex_tables$0=
      [0,
       caml_string_of_jsbytes
        ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
       caml_string_of_jsbytes
        ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"),
       caml_string_of_jsbytes
        ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes("")],
     cst_Yojson_Safe_Finally=caml_string_of_jsbytes("Yojson.Safe.Finally"),
     cst_Yojson_Safe_Util_Type_erro=
      caml_string_of_jsbytes("Yojson.Safe.Util.Type_error"),
     cst_Yojson_Safe_Util_Undefined=
      caml_string_of_jsbytes("Yojson.Safe.Util.Undefined"),
     cst_Yojson_Raw_Int_overflow=
      caml_string_of_jsbytes("Yojson.Raw.Int_overflow"),
     ocaml_lex_tables$1=
      [0,
       caml_string_of_jsbytes
        ("\0\0\xec\xff\xed\xff\x03\0\xef\xff\x10\0\xf2\xff\xf3\xff\xf4\xff\xf5\xff\0\0\x1f\0\xf9\xffU\0\x01\0\0\0\0\0\x01\0\0\0\x01\0\x02\0\xff\xff\0\0\0\0\x03\0\xfe\xff\x01\0\x04\0\xfd\xff\x0b\0\xfc\xff\x03\0\x01\0\x03\0\x02\0\x03\0\0\0\xfb\xff\x15\0a\0\n\0\x16\0\x14\0\x10\0\x16\0\f\0\b\0\xfa\xffw\0\x81\0\x8b\0\xa1\0\xab\0\xb5\0\xc1\0\xd1\0\xf0\xff\x0b\0&\0\xfc\xffA\0\xfe\xff\xff\xffn\0\xfc\xff\xa3\0\xfe\xff\xff\xff\xea\0\xf7\xff\xf8\xff0\x01\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xffG\x01~\x01\x95\x01\xf9\xff'\0\xfd\xff\xfe\xff&\0\xbb\x01\xd2\x01\xf8\x01\x0f\x02\xff\xff\xdc\0\xfd\xff\xff\xff\xf5\0'\x02m\x02\x0e\x01X\x02\xa4\x02\xbb\x02\xe1\x02\r\0\xfc\xff\xfd\xff\xfe\xff\xff\xff\x0e\0\xfd\xff\xfe\xff\xff\xff\x1e\0\xfd\xff\xfe\xff\xff\xff\x0f\0\xfd\xff\xfe\xff\xff\xff\x11\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\x13\0\xfc\xff\xfd\xff\xfe\xff\x0f\0\xff\xff\x10\0\xff\xff\b\x01\x05\0\xfd\xff\x17\0\xfe\xff\x14\0\xff\xff.\0\xfd\xff\xfe\xff*\x004\x005\0\xff\xff5\x000\0[\0\\\0\xff\xff\x1b\x01\xfa\xff\xfb\xff\x89\0h\0Y\0X\0j\0\xff\xff\x8f\0\x89\0\xb1\0\xfe\xff\xb7\0\xa8\0\xa6\0\xb7\0\x02\0\xfd\xff\xb1\0\xac\0\xbb\0\x04\0\xfc\xff5\x02\xfb\xff\xfc\xff\xfd\xffg\x01\xff\xff\xf8\x02\xfe\xff\x06\x03\x1e\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff(\x032\x03J\x03\xfc\xff\xfd\xff\xfe\xff\xff\xff=\x03T\x03l\x03\xf9\xff\xfa\xff\xfb\xff\xf4\0x\x03\x8e\x03\xb3\0\xc2\0\x0f\0\xff\xff\xbe\0\xbc\0\xbb\0\xc1\0\xb7\0\xb3\0\xfe\xff\xbf\0\xc9\0\xc8\0\xc4\0\xcb\0\xc1\0\xbd\0\xfd\xff\x9d\x03_\x03\xae\x03\xc4\x03\xce\x03\xd8\x03\xe4\x03\xef\x03<\0\xfd\xff\xfe\xff\xff\xff\f\x04\xfc\xff\xfd\xffW\x04\xff\xff\x91\x04\xfc\xff\xfd\xff\xdd\x04\xff\xff\xe5\0\xfd\xff\xfe\xff\xff\xff\xe7\0\xfd\xff\xfe\xff\xff\xff\x02\0\xff\xff\x12\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\"\x01\xfd\xff\xfe\xff\xff\xff\0\0\xff\xff\x03\0\xfe\xff\xff\xff&\x01\xfc\xff\xfd\xff\xfe\xff\xff\xffx\x01\xfb\xff\xfc\xff\xfd\xff\xfe\xff\xff\xff\xd0\0\xfd\xff\xfe\xff\xff\xff\xd3\0\xfd\xff\xfe\xff\xff\xff\xbd\0\xff\xff\x8f\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff\r\x01\xfd\xff\xfe\xff\xff\xff_\x01\xfc\xff\xfd\xff\xfe\xff\xff\xff2\x01\xfd\xff\xfe\xff\xff\xff\x1a\x01\xfd\xff\xfe\xff\xff\xff\xe9\0\xfd\xff\xfe\xff\xff\xff\xde\0\xfd\xff\xfe\xff\xff\xffO\x05\xed\xff\xee\xff\n\0\xf0\xff,\x01\xf3\xff\xf4\xff\xf5\xff\xf6\xff=\x01\x02\x04\xf9\xff-\x05\xd1\0\xe4\0\xd3\0\xe8\0\xe1\0\xdf\0\xf0\0\xff\xff\xeb\0\xea\0\b\x01\xfe\xff\x04\x01\x17\x01\xfd\xff6\x01\xfc\xff\x1f\x01\x1d\x01 \x01'\x011\x01-\x01\xfb\xff9\x01R\x01P\x01N\x01T\x01J\x01V\x01\xfa\xffn\x05\f\x04{\x05\x9b\x05\xa5\x05\xb1\x05\xbb\x05\xc5\x05\xf1\xff\xc7\x01M\x02\xfd\xff\xff\xff\x9a\x02\xde\x05\xd1\x05\x9b\x02\xef\x055\x06L\x06r\x06\x10\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x98\x06\xfc\xff\xfd\xff\xe3\x06\xff\xffU\x07\xf4\xff\xf5\xff\x0b\0\xf7\xffL\x02\xfa\xff\xfb\xff\xfc\xff\xfd\xff\xfe\xff\x1f\x02\xf3\x053\x07d\x01s\x01h\x01\x85\x01v\x01\x9a\x01\xab\x01\xff\xff\xad\x01\xb0\x01\xbf\x01\xb9\x01\xbb\x01\xfd\x01\xe6\x01\xe6\x01\xea\x01\xf7\x01\xed\x01\xea\x01\t\x02\x13\x02\x13\x02\x0f\x02\x15\x02\x0b\x02\x07\x02\x8e\x06\x98\x06t\x07\xaa\x07\xb4\x07\xbe\x07\xc8\x07\xd2\x07\xf8\xffx\x02\xa7\x02\xfd\xff\xff\xff\xd8\x02R\x07\xdc\x07\xec\x02\xf4\x07:\bQ\bw\bL\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x9d\b\xfc\xff\xfd\xff\xe8\b\xff\xff\x87\x02x\x02\xfd\xffd\x02\xfe\xff\xb6\x02\xff\xff\x0b\x02\xff\xff\xcc\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff.\x02\xff\xff\xb2\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\x17\0\xff\xff\xb7\x02\xfc\xff\xfd\xff\xfe\xff\xff\xff\xbb\x02\xfd\xff\xfe\xff\xff\xffy\x02\xfd\xff\xfe\xff\xff\xff\xb8\x02\xfc\xff\xfd\xff\xfe\xff\x13\0\xff\xff\x8c\x01\x92\x01\xff\xff\x96\x01\x97\x01\x9a\x01\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xb5\x01\xb8\x01\xb9\x01\xbb\x01\xbf\x01\xc1\x01\xc3\x01\xc4\x01\xc5\x01\xc8\x01\xcb\x01\xdf\x01\xe1\x01\xe4\x01\xf9\x01\xfb\x01\x02\x02\x04\x02\x0b\x02\f\x02\r\x02\0\0"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\xff\xff\x11\0\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\t\0\xff\xff\t\0\xff\xff\xff\xff\x0e\0\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\0\0\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\x03\0\x05\0\x05\0\x05\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\x03\0\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x02\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x10\0\xff\xff\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\x07\0\x07\0\xff\xff\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\xff\xff\b\0\xff\xff\b\0\xff\xff\xff\xff\r\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\x06\0\xff\xff\xff\xff\xff\xff\x01\0\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\x04\0\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
       caml_string_of_jsbytes
        ("\x01\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x009\0<\0\0\0<\0\0\0\0\0A\0\0\0A\0\0\0\0\0F\0\0\0\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0T\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0^\0\0\0\0\0a\0\xff\xff\xff\xffa\0\xff\xff\xff\xff\xff\xff\xff\xffh\0\0\0\0\0\0\0\0\0m\0\0\0\0\0\0\0q\0\0\0\0\0\0\0u\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\x8a\0\0\0\x8e\0\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x9a\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xb2\0\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xbb\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc2\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xc9\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\0\0\0\0\0\0\0\xef\0\0\0\0\0\xff\xff\0\0\xf4\0\0\0\0\0\xff\xff\0\0\xf9\0\0\0\0\0\0\0\xfd\0\0\0\0\0\0\0\xff\xff\0\0\x03\x01\0\0\0\0\0\0\0\0\b\x01\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\x11\x01\0\0\0\0\0\0\0\0\x16\x01\0\0\0\0\0\0\0\0\0\0\x1c\x01\0\0\0\0\0\0 \x01\0\0\0\0\0\0\xff\xff\0\0&\x01\0\0\0\0\0\0\0\0+\x01\0\0\0\0\0\0/\x01\0\0\0\0\0\0\0\x004\x01\0\0\0\0\0\x008\x01\0\0\0\0\0\0<\x01\0\0\0\0\0\0@\x01\0\0\0\0\0\0C\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0y\x01}\x01\0\0\0\0\x80\x01\xff\xff\xff\xff\x80\x01\xff\xff\xff\xff\xff\xff\xff\xff\x87\x01\0\0\0\0\0\0\0\0\x8c\x01\0\0\0\0\xff\xff\0\0\x90\x01\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xc1\x01\xc5\x01\0\0\0\0\xc8\x01\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x01\0\0\0\0\0\0\0\0\xd4\x01\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\0\0\xdc\x01\0\0\xff\xff\0\0\xe2\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xe9\x01\0\0\0\0\0\0\0\0\xff\xff\0\0\xf0\x01\0\0\0\0\0\0\0\0\xf5\x01\0\0\0\0\0\0\xf9\x01\0\0\0\0\0\0\xfc\x01\0\0\0\0\0\0\xff\xff\0\0\x02\x02\x04\x02\0\0\x05\x02\x06\x02\x07\x02\b\x02\t\x02\n\x02\x0b\x02\f\x02\r\x02\x0e\x02\x0f\x02\x10\x02\x11\x02\x12\x02\x13\x02\x14\x02\x15\x02\x16\x02\x17\x02\x18\x02\x19\x02\x1a\x02\x1b\x02\x1c\x02\x1d\x02\x1e\x02\x1f\x02 \x02!\x02\x03\x02"),
       caml_string_of_jsbytes
        ("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\x03\0\x03\0\x86\0\0\0\x03\0\0\0\x86\0E\x01\x92\x01\xff\xff\0\0E\x01\x92\x01\0\0\0\0\0\0\0\0\x7f\0\x8b\0\0\0\x03\0\0\0\f\0\x03\0\xaa\0\x86\0\xaf\0\0\0\x07\0\x0b\x01E\x01\x92\x01\x0e\x01\r\x001\0\x05\0\n\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\x008\0v\0\x06\0\x81\0\x82\x009\0\xed\x01\x89\0\0\x021\0\0\x000\0\x8a\0j\0>\0\x0e\0n\0i\0\0\x001\0\x0f\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1e\x000\0\b\0r\0\xd1\0\xec\0\0\x01\r\x01\x1d\0\x16\0\xff\xff0\x000\0\x11\0\x15\0\x19\0 \0!\0#\0\x17\0\x1b\0\x10\0\x1f\0\x1c\0\"\0\x13\0\x18\0\x12\0\x1a\0\x14\0$\0)\0%\x000\0\t\0*\0+\0,\0-\0.\0/\0=\0U\x000\0&\0'\0'\0'\0'\0'\0'\0'\0'\0'\x001\0C\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0V\0\x8f\0\xff\xff(\0\x90\0\x91\0\x92\x007\0\x94\x007\0\x95\x000\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0\xff\xff0\0\x96\0\x97\0\xa1\0B\0\x9e\x005\0\x9f\x005\0\xa0\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0\xa5\x003\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa2\0\xa3\0\xa6\0]\0\xff\xff\x02\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xff\xffM\0g\0l\0t\0\x84\0\x86\0\x87\0\x80\0\x8b\0\x86\0\xa4\0]\0\xab\0M\0\xa7\0\xa8\0\xa9\0\xac\0p\0\xad\0\xae\0\xd2\0\xe2\0\xd0\0\xd3\0\xd4\0;\0S\0\x86\0\xd5\0\xd6\0\xd7\0\xd8\0\xda\0\x8d\0\xdb\0]\0\xdc\0\xdd\0{\0\xde\0\xdf\0\xe0\0\x88\0_\0\xe1\0#\x01A\x01\xea\0\x9b\0\x05\x01a\x01\xfa\0\xff\xff\xfe\x009\x01=\x01_\x01M\0,\x01\\\x01X\x01\t\x01\x1d\x01L\0|\0!\x01\x12\x01K\0b\0\x13\x01U\x01V\x01W\x01x\x01Y\x01J\0\xe1\x005\x01y\x01I\0Z\x01H\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0b\0q\x01z\0[\x01@\0\x04\x01]\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\x9c\0p\x01^\x01`\x01b\x01c\x011\x01O\0O\0O\0O\0O\0O\0d\x01\x9d\0e\x01N\0N\0N\0N\0N\0N\0\xb7\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\x18\x01p\x01\xff\xff\x19\x01f\x01g\x01i\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0j\x01k\x010\x01(\x01l\x01m\x01n\x01P\0P\0P\0P\0P\0P\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0Q\0o\x01\x1b\x01\xff\xff\xab\x01\x1f\x01\xaa\x01\x17\x01Q\0Q\0Q\0Q\0Q\0Q\0\\\0\xa8\x01?\x01P\0P\0P\0P\0P\0P\0\xf8\0\xa5\x01\xfc\0\xa2\x01;\x01E\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0\xff\xffQ\0Q\0Q\0Q\0Q\0Q\0W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0'\x01*\x01\xff\xff\xa3\x01\xa4\x01x\0\x02\x01X\0X\0X\0X\0X\0X\0\xa6\x017\x01\x99\0W\0W\0W\0W\0W\0W\0\x07\x01\xa7\x01\xa4\x01\xa9\x01\x10\x01\xa4\x01Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\x003\x01X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0a\0\x89\x01\xa4\x01\xac\x01\xb9\x01\x88\x01\xad\x01Z\0Z\0Z\0Z\0Z\0Z\0a\0\xb3\0\xae\x01Y\0Y\0Y\0Y\0Y\0Y\0.\x01\xaf\x01\xb0\x01\xb4\0\xa4\x01\xb8\x01\xb5\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0|\x01Z\0Z\0Z\0Z\0Z\0Z\0\xc0\x01\xb2\x01\x15\x01\xb3\x01a\0\xc1\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xa4\x01\xd8\x01\xff\xffa\0\xb8\x01\xd8\x01\xd1\x01a\0\xdf\x01a\0\xd0\x01\xe6\x01\x03\x02a\0\xdb\x01%\x01\xd8\x01\xd9\x01\x03\x02\xdc\x01\xd8\x01a\0\x03\x02\x03\x02\xd8\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xd8\x01\x03\x02~\x01\x03\x02\x03\x02\x03\x02\x03\x02c\0c\0c\0c\0c\0c\0a\0\x03\x02\xda\x01\xfa\x01\x03\x02\x03\x02a\0\x03\x02|\x01|\x01a\0\x03\x02\xdd\x01\x03\x02\xfd\x01\x03\x02\x03\x02\x03\x02a\0\xff\xff\x03\x02\xc4\x01a\0\x03\x02a\0`\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xeb\x01\x03\x02\xf1\x01\x03\x02\xff\x01\xf2\x01\x03\x02d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xf6\x01\x81\x01\x81\x01\xe4\x01\x03\x02\xc4\x01\x03\x02e\0e\0e\0e\0e\0e\0\x03\x02\xc6\x01\x03\x02d\0d\0d\0d\0d\0d\0\x03\x02\x03\x02\x03\x02\xc4\x01\xea\x01\x86\x01a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\0\0e\0e\0e\0e\0e\0e\0a\0a\0a\0a\0a\0a\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\0\0\0\0\xc9\x01\xb1\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xbc\0\0\0a\0a\0a\0a\0a\0a\0\xc9\x01\xe3\x01\0\0\xbf\0\xce\x01{\x01\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbd\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xc3\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc6\0\xff\xff\xf8\x01\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc4\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xca\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xcd\0\xff\xff\xff\xff\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe2\0\xc3\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\x01\0\0\0\0\xce\0\xdd\x01\xef\x01\xfe\x01\0\0\xcf\0\xf4\x01\0\0\xe1\0\xcb\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe8\0\0\0\xe8\0\0\0\xe1\x01\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xd9\0\xff\xff\0\0\0\0\0\0\0\0\xe1\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\0\0\0\0\0\0\0\0\xff\xff\0\0\0\0\xe6\0\0\0\xe6\0\0\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\0\0\xe4\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xba\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\0\0\0\0\0\0\0\0\0\0\xf1\0\0\0q\x01\0\0M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01\0\0p\x01\0\0\0\0\xc1\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0p\x01\0\0\0\0\0\0\xf0\0\xc8\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\0\0\xf6\0\0\0\0\0\xf0\0\0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xee\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\0\0\0\0\0\0\0\0\xf5\0\0\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0E\x01F\x01\0\0\0\0E\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\x01\0\0N\x01\0\0\0\0\0\0\0\0h\x01I\x01\0\0\0\0\0\0\0\0O\x01\0\0G\x01L\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01\0\0\0\0H\x01\0\0\0\0\0\0\0\0\0\0\xf3\0\0\0\0\0\0\0\0\0\0\0\0\0P\x01w\x01\0\0w\x01\0\0Q\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\0\0J\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01S\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x01\0\0\0\0s\x01\0\0\0\0T\x01\0\0\0\0u\x01\0\0u\x01\0\0K\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\0\0s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\xb9\x01\0\0\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xb8\x01\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\0\0\0\0D\x01\x80\x01\x80\x01\x80\x01\x7f\x01\0\0\x80\x01\0\0\0\0\xb8\x01\0\0\0\0\0\0\0\0\x80\x01\0\0\0\0\0\0\x80\x01\0\0\x80\x01\x7f\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\0\0\0\0\0\0\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\0\0\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\xbf\x01\x8e\x01\xbf\x01\0\0\0\0\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\0\0\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\0\0\0\0\0\0\0\0\x8d\x01\0\0\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x92\x01\x93\x01\0\0\0\0\x92\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\x92\x01\0\0\x99\x01\0\0\0\0\0\0\0\0\xb1\x01\x96\x01\0\0\0\0\0\0\xc8\x01\x9c\x01\0\0\x94\x01\x9a\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\0\0\0\0\x95\x01\0\0\0\0\0\0\0\0\0\0\0\0\x8b\x01\0\0\0\0\0\0\0\0\0\0\x9d\x01\0\0\0\0\0\0\0\0\x9e\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc8\x01\0\0\x97\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\xbb\x01\0\0\xa0\x01\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\x9f\x01\xc8\x01\0\0\xc8\x01\xc7\x01\0\0\xa1\x01\0\0\0\0\0\0\0\0\0\0\0\0\x98\x01\0\0\0\0\0\0\0\0\xbd\x01\0\0\xbd\x01\0\0\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\x91\x01\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\0\0\0\0\0\0\xc8\x01\0\0\xc8\x01\xc7\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\0\0\0\0\0\0\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\0\0\xd6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xc8\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\xd5\x01\0\0\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd3\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
       caml_string_of_jsbytes
        ("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\x03\0\0\0\x86\0\xff\xff\x03\0\xff\xff\x86\0E\x01\x92\x019\0\xff\xffE\x01\x92\x01\xff\xff\xff\xff\xff\xff\xff\xff}\0\x8a\0\xff\xff\0\0\xff\xff\0\0\x03\0\xa9\0\x86\0\xae\0\xff\xff\0\0\n\x01E\x01\x92\x01\f\x01\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0s\0\0\0}\0\x81\0\x05\0\xec\x01\x88\0\xff\x01&\0\xff\xff\n\0\x88\0f\0:\0\0\0k\0f\0\xff\xff\x0b\0\0\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x0b\0\x1d\0&\0\0\0o\0\xd0\0\xe9\0\xff\0\f\x01\x0f\0\x11\0<\0\x0b\0\n\0\0\0\x14\0\x18\0\x1f\0 \0\"\0\x16\0\x1a\0\0\0\x0e\0\x1b\0!\0\x12\0\x17\0\0\0\x10\0\x13\0#\0(\0$\0&\0\0\0)\0*\0+\0,\0-\0.\0:\0R\0\x0b\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0'\0?\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0U\0\x8c\0<\0\r\0\x8f\0\x90\0\x91\x000\0\x93\x000\0\x94\0'\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0A\0'\0\x95\0\x96\0\x9c\0?\0\x9d\x003\0\x9e\x003\0\x9f\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0\x9b\x002\x006\x006\x006\x006\x006\x006\x006\x006\x006\x006\0\xa1\0\xa2\0\x9b\0[\0A\0\0\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x009\0D\0f\0k\0s\0\x83\0\x85\0\x85\0}\0\x8a\0\x85\0\xa3\0^\0\xa5\0D\0\xa6\0\xa7\0\xa8\0\xab\0o\0\xac\0\xad\0\xce\0\xcb\0\xcf\0\xd2\0\xd3\0:\0R\0\x85\0\xd4\0\xd5\0\xd6\0\xd7\0\xd9\0\x8c\0\xda\0a\0\xdb\0\xdc\0w\0\xdd\0\xde\0\xdf\0\x85\0[\0\xcb\0\"\x01>\x01\xe9\0\x98\0\x01\x01P\x01\xf7\0<\0\xfb\x006\x01:\x01Q\x01D\0)\x01R\x01S\x01\x06\x01\x1a\x01D\0w\0\x1e\x01\x0f\x01D\0^\0\x0f\x01T\x01U\x01V\x01G\x01X\x01D\0\xcb\x002\x01G\x01D\0Y\x01D\0D\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0a\0L\x01w\0Z\x01?\0\x01\x01\\\x01G\0G\0G\0G\0G\0G\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0\x98\0L\x01]\x01_\x01a\x01b\x01-\x01N\0N\0N\0N\0N\0N\0c\x01\x98\0d\x01G\0G\0G\0G\0G\0G\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\xb4\0\x14\x01L\x01A\0\x14\x01e\x01f\x01h\x01N\0N\0N\0N\0N\0N\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0i\x01j\x01-\x01$\x01k\x01l\x01m\x01O\0O\0O\0O\0O\0O\0P\0P\0P\0P\0P\0P\0P\0P\0P\0P\0n\x01\x1a\x01y\x01\x9d\x01\x1e\x01\x9e\x01\x14\x01P\0P\0P\0P\0P\0P\0[\0\x9f\x01>\x01O\0O\0O\0O\0O\0O\0\xf7\0\xa0\x01\xfb\0\xa1\x01:\x01D\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0^\0P\0P\0P\0P\0P\0P\0V\0V\0V\0V\0V\0V\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0$\x01)\x01a\0\xa2\x01\xa3\x01w\0\x01\x01W\0W\0W\0W\0W\0W\0\xa5\x016\x01\x98\0V\0V\0V\0V\0V\0V\0\x06\x01\xa6\x01\xa7\x01\xa8\x01\x0f\x01\xa9\x01X\0X\0X\0X\0X\0X\0X\0X\0X\0X\x002\x01W\0W\0W\0W\0W\0W\0X\0X\0X\0X\0X\0X\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0_\0\x85\x01\xaa\x01\xab\x01\x9a\x01\x85\x01\xac\x01Y\0Y\0Y\0Y\0Y\0Y\0_\0\xb0\0\xad\x01X\0X\0X\0X\0X\0X\0-\x01\xae\x01\xaf\x01\xb0\0\xb0\x01\x9a\x01\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0\xb0\0z\x01Y\0Y\0Y\0Y\0Y\0Y\0\x94\x01\xb1\x01\x14\x01\xb2\x01b\0\x94\x01\xb3\x01\xb4\x01\xb5\x01\xb6\x01\xb7\x01\xd8\x01\xc1\x01_\0\x9a\x01\xd8\x01\xcd\x01b\0\xde\x01_\0\xcd\x01\xe5\x01\x01\x02_\0\xda\x01$\x01\xd7\x01\xd7\x01\x02\x02\xda\x01\xd7\x01_\0\x04\x02\x05\x02\xd8\x01_\0\x06\x02_\0_\0`\0`\0`\0`\0`\0`\0`\0`\0`\0`\0\xd7\x01\x07\x02z\x01\b\x02\t\x02\n\x02\x0b\x02`\0`\0`\0`\0`\0`\0b\0\f\x02\xd7\x01\xf7\x01\r\x02\x0e\x02b\0\x0f\x02}\x01\x80\x01b\0\x10\x02\xdc\x01\x11\x02\xfb\x01\x12\x02\x13\x02\x14\x02b\0y\x01\x15\x02\xc2\x01b\0\x16\x02b\0b\0`\0`\0`\0`\0`\0`\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0\xe7\x01\x17\x02\xee\x01\x18\x02\xfb\x01\xee\x01\x19\x02c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0\xf3\x01}\x01\x80\x01\xe0\x01\x1a\x02\xc5\x01\x1b\x02d\0d\0d\0d\0d\0d\0\x1c\x02\xc2\x01\x1d\x02c\0c\0c\0c\0c\0c\0\x1e\x02\x1f\x02 \x02\xc8\x01\xe7\x01\x85\x01e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0\xff\xffd\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xb6\0\xff\xff\xff\xff\xc5\x01\xb0\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb8\0\xb9\0\xff\xffe\0e\0e\0e\0e\0e\0\xc8\x01\xe0\x01\xff\xff\xb9\0\xcd\x01z\x01\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xb9\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbe\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xbf\0\xc0\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc5\0\xc0\0\xc1\x01\xf7\x01\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc0\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc6\0\xc7\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xe2\0\xc7\0}\x01\x80\x01\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xc7\0\xcc\0\xc2\x01\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xcc\0\xe7\x01\xff\xff\xff\xff\xc7\0\xdc\x01\xee\x01\xfb\x01\xff\xff\xc7\0\xf3\x01\xff\xff\xcc\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xcd\0\xe1\0\xff\xff\xe1\0\xff\xff\xe0\x01\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xe1\0\xcd\0\xc5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xcc\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xe3\0\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x01\xff\xff\xff\xff\xe4\0\xff\xff\xe4\0\xff\xff\xe3\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe4\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe5\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xe6\0\xff\xff\xe3\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xe7\0\xb9\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xe8\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\0\xff\xffM\x01\xff\xffM\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01M\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01q\x01\xff\xffM\x01\xff\xff\xff\xff\xc0\0\xff\xff\xff\xff\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0M\x01\xff\xff\xff\xff\xff\xff\xed\0\xc7\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xed\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xff\xff\xf2\0\xff\xff\xff\xff\xf0\0\xff\xff\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf0\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xf2\0\xed\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xff\xff\xff\xff\xff\xff\xff\xff\xf5\0\xff\xff\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0\xf5\0B\x01B\x01\xff\xff\xff\xffB\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01O\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xffO\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xffB\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01B\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf2\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01p\x01\xff\xffp\x01\xff\xffB\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xff\xff\xff\xffB\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01r\x01B\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffB\x01\xff\xff\xff\xffr\x01\xff\xff\xff\xffB\x01\xff\xff\xff\xffs\x01\xff\xffs\x01\xff\xffB\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01t\x01\xff\xffr\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01u\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01v\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01w\x01\xff\xff~\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\x81\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x9b\x01\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff~\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01~\x01\xff\xff\xff\xffB\x01~\x01\x81\x01~\x01~\x01\xff\xff\x81\x01\xff\xff\xff\xff\x9b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\xff\xff\xff\xff\x81\x01\xff\xff\x81\x01\x81\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\xff\xff\xff\xff\xff\xff\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xff\xff\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\xb8\x01\x8a\x01\xb8\x01\xff\xff\xff\xff\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb8\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xb9\x01\xff\xff\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8a\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8d\x01\xff\xff\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8d\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\x9c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x01\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\x8f\x01\xff\xff\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\x8f\x01\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xba\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\xff\xff\xc6\x01\xba\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x01\xff\xff\xff\xff\x8f\x01\xc6\x01\xff\xff\xc6\x01\xc6\x01\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xbb\x01\xff\xff\xbb\x01\xff\xff\xba\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbb\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbc\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbd\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbe\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xbf\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xc7\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x01\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xff\xff\xff\xff\xc9\x01\xff\xff\xc9\x01\xc9\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xff\xff\xff\xff\xff\xff\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xca\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcb\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xcc\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd2\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xd5\x01\xff\xff\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xd5\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes("")],
     cst_Yojson_Raw_Finally=caml_string_of_jsbytes("Yojson.Raw.Finally"),
     Bi_io=global_data.Bi_io,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib=global_data.Stdlib,
     Bi_outbuf=global_data.Bi_outbuf,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_format=global_data.Stdlib__format,
     Assert_failure=global_data.Assert_failure,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_stream=global_data.Stdlib__stream,
     Stdlib_printf=global_data.Stdlib__printf,
     Easy_format=global_data.Easy_format,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib_lexing=global_data.Stdlib__lexing,
     _a_=[0,951901561,0],
     _b_=[0,848054398,0],
     _c_=[0,848054398,0],
     ___=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _S_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _G_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _H_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _I_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _J_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _K_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _E_=
      [0,
       [11,
        caml_string_of_jsbytes("`Assoc ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Assoc (@[<hov>")],
     _F_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _L_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _M_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _N_=
      [0,
       [11,
        caml_string_of_jsbytes("`Floatlit ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Floatlit (@[<hov>")],
     _O_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _P_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Q_=
      [0,
       [11,
        caml_string_of_jsbytes("`List ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`List (@[<hov>")],
     _R_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _T_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _U_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _V_=
      [0,
       [11,
        caml_string_of_jsbytes("`Bool ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Bool (@[<hov>")],
     _W_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _X_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Y_=
      [0,
       [11,
        caml_string_of_jsbytes("`Tuple ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Tuple (@[<hov>")],
     _Z_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _$_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ab_=
      [0,
       [11,
        caml_string_of_jsbytes("`Variant ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Variant (@[<hov>")],
     _ac_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _ad_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ae_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _af_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ag_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ak_=
      [0,
       [11,
        caml_string_of_jsbytes("`Float ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Float (@[<hov>")],
     _al_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")],
     _am_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _an_=
      [0,
       [11,
        caml_string_of_jsbytes("`Int ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Int (@[<hov>")],
     _ao_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _ap_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aq_=
      [0,
       [11,
        caml_string_of_jsbytes("`Stringlit ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Stringlit (@[<hov>")],
     _ar_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _as_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _at_=
      [0,
       [11,
        caml_string_of_jsbytes("`String ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`String (@[<hov>")],
     _au_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _av_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ah_=
      [0,
       [11,
        caml_string_of_jsbytes("`Intlit ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Intlit (@[<hov>")],
     _ai_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _aj_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _de_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _c8_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _cW_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _cX_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _cY_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cZ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _c0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cU_=
      [0,
       [11,
        caml_string_of_jsbytes("`Assoc ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Assoc (@[<hov>")],
     _cV_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _c1_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _c2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _c3_=
      [0,
       [11,
        caml_string_of_jsbytes("`Floatlit ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Floatlit (@[<hov>")],
     _c4_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _c5_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _c6_=
      [0,
       [11,
        caml_string_of_jsbytes("`List ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`List (@[<hov>")],
     _c7_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _c9_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _c__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _c$_=
      [0,
       [11,
        caml_string_of_jsbytes("`Bool ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Bool (@[<hov>")],
     _da_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _db_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _dc_=
      [0,
       [11,
        caml_string_of_jsbytes("`Tuple ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Tuple (@[<hov>")],
     _dd_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _df_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _dg_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _dh_=
      [0,
       [11,
        caml_string_of_jsbytes("`Variant ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Variant (@[<hov>")],
     _di_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _dj_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _dk_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _dm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _dn_=
      [0,
       [11,
        caml_string_of_jsbytes("`Stringlit ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Stringlit (@[<hov>")],
     _do_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _dp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _dq_=
      [0,
       [11,
        caml_string_of_jsbytes("`Intlit ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Intlit (@[<hov>")],
     _dr_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ds_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _dE_=[0,737456202,1],
     _dF_=[0,737456202,0],
     _dG_=[0,928231259,caml_string_of_jsbytes("NaN")],
     _dH_=[0,928231259,caml_string_of_jsbytes("Infinity")],
     _dI_=[0,928231259,caml_string_of_jsbytes("-Infinity")],
     _dB_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]],
       caml_string_of_jsbytes("%s '%s%s'")],
     _dA_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32],
     _dz_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]],
       caml_string_of_jsbytes("%s '%s'")],
     _dv_=
      [0,
       [11,
        caml_string_of_jsbytes("File "),
        [2,0,[11,caml_string_of_jsbytes(", line"),0]]],
       caml_string_of_jsbytes("File %s, line")],
     _dw_=
      [0,
       [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]],
       caml_string_of_jsbytes("byte %i")],
     _dy_=
      [0,
       [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]],
       caml_string_of_jsbytes("bytes %i-%i")],
     _dx_=
      [0,
       [2,
        0,
        [12,
         32,
         [4,
          3,
          0,
          0,
          [11,
           caml_string_of_jsbytes(", "),
           [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]],
       caml_string_of_jsbytes("%s %i, %s:\n%s")],
     _du_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13],
     _dt_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _cR_=
      [0,
       [11,
        caml_string_of_jsbytes("src="),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(" start="),
          [4,
           3,
           0,
           0,
           [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],
       caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")],
     _b4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _cg_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _b9_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _b__=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _b$_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ca_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _b7_=
      [0,
       [11,
        caml_string_of_jsbytes("`Assoc ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Assoc (@[<hov>")],
     _b8_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _cc_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _cd_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ce_=
      [0,
       [11,
        caml_string_of_jsbytes("`List ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`List (@[<hov>")],
     _cf_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _ch_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _ci_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cj_=
      [0,
       [11,
        caml_string_of_jsbytes("`Bool ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Bool (@[<hov>")],
     _ck_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _cl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cm_=
      [0,
       [11,
        caml_string_of_jsbytes("`Variant ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Variant (@[<hov>")],
     _cn_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _co_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cp_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cr_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _b2_=
      [0,
       [11,
        caml_string_of_jsbytes("`Tuple ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Tuple (@[<hov>")],
     _b3_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _b5_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _b6_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cs_=
      [0,
       [11,
        caml_string_of_jsbytes("`Float ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Float (@[<hov>")],
     _ct_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")],
     _cu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cv_=
      [0,
       [11,
        caml_string_of_jsbytes("`Int ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Int (@[<hov>")],
     _cw_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _cx_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cy_=
      [0,
       [11,
        caml_string_of_jsbytes("`Intlit ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Intlit (@[<hov>")],
     _cz_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cB_=
      [0,
       [11,
        caml_string_of_jsbytes("`String ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`String (@[<hov>")],
     _cC_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cD_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cP_=[0,737456202,1],
     _cQ_=[0,737456202,0],
     _cM_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]],
       caml_string_of_jsbytes("%s '%s%s'")],
     _cL_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32],
     _cK_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]],
       caml_string_of_jsbytes("%s '%s'")],
     _cG_=
      [0,
       [11,
        caml_string_of_jsbytes("File "),
        [2,0,[11,caml_string_of_jsbytes(", line"),0]]],
       caml_string_of_jsbytes("File %s, line")],
     _cH_=
      [0,
       [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]],
       caml_string_of_jsbytes("byte %i")],
     _cJ_=
      [0,
       [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]],
       caml_string_of_jsbytes("bytes %i-%i")],
     _cI_=
      [0,
       [2,
        0,
        [12,
         32,
         [4,
          3,
          0,
          0,
          [11,
           caml_string_of_jsbytes(", "),
           [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]],
       caml_string_of_jsbytes("%s %i, %s:\n%s")],
     _cF_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13],
     _cE_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _b0_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _b1_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _bZ_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _bI_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _bJ_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")],
     _bK_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")],
     _bL_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")],
     _bM_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")],
     _bN_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")],
     _bO_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")],
     _bP_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")],
     _bQ_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")],
     _bR_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")],
     _bS_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")],
     _bT_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")],
     _bU_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")],
     _bV_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")],
     _bW_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")],
     _bX_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")],
     _bY_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _bG_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _bH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _bF_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _bC_=
      [0,
       [11,
        caml_string_of_jsbytes("src="),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(" start="),
          [4,
           3,
           0,
           0,
           [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],
       caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")],
     _ba_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _a3_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _a4_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _a5_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _a6_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _a7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _a1_=
      [0,
       [11,
        caml_string_of_jsbytes("`Assoc ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Assoc (@[<hov>")],
     _a2_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _a8_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _a9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _a__=
      [0,
       [11,
        caml_string_of_jsbytes("`List ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`List (@[<hov>")],
     _a$_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _bb_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _bc_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bd_=
      [0,
       [11,
        caml_string_of_jsbytes("`Bool ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Bool (@[<hov>")],
     _be_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _bf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bg_=
      [0,
       [11,
        caml_string_of_jsbytes("`Float ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Float (@[<hov>")],
     _bh_=[0,[8,[0,0,5],0,0,0],caml_string_of_jsbytes("%F")],
     _bi_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bj_=
      [0,
       [11,
        caml_string_of_jsbytes("`Int ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Int (@[<hov>")],
     _bk_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _bl_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bm_=
      [0,
       [11,
        caml_string_of_jsbytes("`String ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`String (@[<hov>")],
     _bn_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bo_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bA_=[0,737456202,1],
     _bB_=[0,737456202,0],
     _bx_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[2,0,[12,39,0]]]]],
       caml_string_of_jsbytes("%s '%s%s'")],
     _bw_=[0,caml_string_of_jsbytes("lib/read.mll"),72,32],
     _bv_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" '"),[2,0,[12,39,0]]]],
       caml_string_of_jsbytes("%s '%s'")],
     _br_=
      [0,
       [11,
        caml_string_of_jsbytes("File "),
        [2,0,[11,caml_string_of_jsbytes(", line"),0]]],
       caml_string_of_jsbytes("File %s, line")],
     _bs_=
      [0,
       [11,caml_string_of_jsbytes("byte "),[4,3,0,0,0]],
       caml_string_of_jsbytes("byte %i")],
     _bu_=
      [0,
       [11,caml_string_of_jsbytes("bytes "),[4,3,0,0,[12,45,[4,3,0,0,0]]]],
       caml_string_of_jsbytes("bytes %i-%i")],
     _bt_=
      [0,
       [2,
        0,
        [12,
         32,
         [4,
          3,
          0,
          0,
          [11,
           caml_string_of_jsbytes(", "),
           [2,0,[11,caml_string_of_jsbytes(":\n"),[2,0,0]]]]]]],
       caml_string_of_jsbytes("%s %i, %s:\n%s")],
     _bq_=[0,caml_string_of_jsbytes("lib/read.mll"),44,13],
     _bp_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aZ_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _a0_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _aY_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _aH_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _aI_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")],
     _aJ_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")],
     _aK_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")],
     _aL_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")],
     _aM_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")],
     _aN_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")],
     _aO_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")],
     _aP_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")],
     _aQ_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")],
     _aR_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")],
     _aS_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")],
     _aT_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")],
     _aU_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")],
     _aV_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")],
     _aW_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")],
     _aX_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _aF_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _aG_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _aE_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _aB_=
      [0,
       [11,
        caml_string_of_jsbytes("src="),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(" start="),
          [4,
           3,
           0,
           0,
           [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],
       caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")],
     _aA_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")],
     _aw_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _C_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _D_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _B_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _k_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _l_=[0,[8,[0,0,3],0,[0,1],0],caml_string_of_jsbytes("%.1g")],
     _m_=[0,[8,[0,0,3],0,[0,2],0],caml_string_of_jsbytes("%.2g")],
     _n_=[0,[8,[0,0,3],0,[0,3],0],caml_string_of_jsbytes("%.3g")],
     _o_=[0,[8,[0,0,3],0,[0,4],0],caml_string_of_jsbytes("%.4g")],
     _p_=[0,[8,[0,0,3],0,[0,5],0],caml_string_of_jsbytes("%.5g")],
     _q_=[0,[8,[0,0,3],0,[0,6],0],caml_string_of_jsbytes("%.6g")],
     _r_=[0,[8,[0,0,3],0,[0,7],0],caml_string_of_jsbytes("%.7g")],
     _s_=[0,[8,[0,0,3],0,[0,8],0],caml_string_of_jsbytes("%.8g")],
     _t_=[0,[8,[0,0,3],0,[0,9],0],caml_string_of_jsbytes("%.9g")],
     _u_=[0,[8,[0,0,3],0,[0,10],0],caml_string_of_jsbytes("%.10g")],
     _v_=[0,[8,[0,0,3],0,[0,11],0],caml_string_of_jsbytes("%.11g")],
     _w_=[0,[8,[0,0,3],0,[0,12],0],caml_string_of_jsbytes("%.12g")],
     _x_=[0,[8,[0,0,3],0,[0,13],0],caml_string_of_jsbytes("%.13g")],
     _y_=[0,[8,[0,0,3],0,[0,14],0],caml_string_of_jsbytes("%.14g")],
     _z_=[0,[8,[0,0,3],0,[0,15],0],caml_string_of_jsbytes("%.15g")],
     _A_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _i_=[0,[8,[0,0,3],0,[0,16],0],caml_string_of_jsbytes("%.16g")],
     _j_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _h_=[0,[8,[0,0,3],0,[0,17],0],caml_string_of_jsbytes("%.17g")],
     _e_=
      [0,
       [11,
        caml_string_of_jsbytes("src="),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(" start="),
          [4,
           3,
           0,
           0,
           [11,caml_string_of_jsbytes(" len="),[4,3,0,0,[12,10,[10,0]]]]]]]],
       caml_string_of_jsbytes("src=%S start=%i len=%i\n%!")],
     _d_=[0,caml_string_of_jsbytes("common.ml"),57,4];
    function biniou_of_json(param)
     {if(typeof param === "number")return 948106916;
      var _li_=param[1];
      if(708012133 <= _li_)
       {if(726928360 === _li_)
         {var l=param[2],_lj_=caml_call1(Stdlib_array[12],l);
          return [0,
                  726928360,
                  caml_call2(Stdlib_array[15],biniou_of_json,_lj_)]}
        if(848054398 <= _li_)
         {if(963043957 <= _li_)
           {var
             l$0=param[2],
             _lk_=caml_call1(Stdlib_array[12],l$0),
             _ll_=
              function(param)
               {var x=param[2],s=param[1],_lu_=biniou_of_json(x);
                return [0,[0,s],caml_call1(Bi_io[21],s),_lu_]},
             a=caml_call2(Stdlib_array[15],_ll_,_lk_);
            return [0,847309489,a]}
          var l$1=param[2];
          if(l$1)
           {var
             _lm_=caml_call1(Stdlib_array[12],l$1),
             a$0=caml_call2(Stdlib_array[15],biniou_of_json,_lm_),
             _ln_=caml_check_bound(a$0,0)[1],
             tag=caml_call1(Bi_io[70],_ln_);
            try
             {var _lp_=a$0.length - 1 - 1 | 0,_lo_=1;
              if(! (_lp_ < 1))
               {var i=_lo_;
                for(;;)
                 {var _lr_=caml_check_bound(a$0,i)[1 + i];
                  if(caml_call1(Bi_io[70],_lr_) !== tag)throw Stdlib[3];
                  var _ls_=i + 1 | 0;
                  if(_lp_ !== i){var i=_ls_;continue}
                  break}}
              var _lq_=[0,951901561,[0,[0,tag,a$0]]];
              return _lq_}
            catch(_lt_)
             {_lt_ = caml_wrap_exception(_lt_);
              if(_lt_ === Stdlib[3])
               return caml_call1(Stdlib[2],cst_Cannot_convert_heterogenou);
              throw _lt_}}
          return _a_}
        if(737456202 <= _li_){var b=param[2];return [0,737456202,b]}
        var match=param[2],o=match[2],s=match[1];
        if(o)var x=o[1],o$0=[0,biniou_of_json(x)];else var o$0=0;
        return [0,708012133,[0,[0,s],caml_call1(Bi_io[21],s),o$0]]}
      if(3654863 <= _li_)
       {if(365180284 <= _li_){var f=param[2];return [0,928627642,f]}
        var i$0=param[2];
        return [0,412180492,i$0]}
      if(-752863768 <= _li_)
       return caml_call1(Stdlib[2],cst_Cannot_convert_big_int_to_);
      var s$0=param[2];
      return [0,-976970511,s$0]}
    function json_of_biniou(x)
     {if(typeof x === "number")return 870828711;
      var _k3_=x[1];
      if(708012133 <= _k3_)
       {if(847309489 <= _k3_)
         {if(951901561 <= _k3_)
           {if(1063160078 <= _k3_)
             return caml_call1(Stdlib[2],cst_Cannot_convert_uvint_to_JS);
            var _k4_=x[2];
            if(_k4_)
             {var
               match=_k4_[1],
               a=match[2],
               _k5_=caml_call2(Stdlib_array[15],json_of_biniou,a);
              return [0,848054398,caml_call1(Stdlib_array[11],_k5_)]}
            return _b_}
          if(928626971 <= _k3_){var f=x[2];return [0,365180284,f]}
          var
           a$0=x[2],
           _k6_=
            function(param)
             {var _lh_=param[1];
              if(_lh_)
               {var x=param[3],s=_lh_[1];return [0,s,json_of_biniou(x)]}
              return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel)},
           _k7_=caml_call2(Stdlib_array[15],_k6_,a$0);
          return [0,963043957,caml_call1(Stdlib_array[11],_k7_)]}
        if(737456202 <= _k3_)
         {if(815034505 <= _k3_)
           return caml_call1(Stdlib[2],cst_Cannot_convert_int8_to_JSO);
          var b=x[2];
          return [0,737456202,b]}
        if(726928360 <= _k3_)
         {var a$1=x[2],_k8_=caml_call2(Stdlib_array[15],json_of_biniou,a$1);
          return [0,726928360,caml_call1(Stdlib_array[11],_k8_)]}
        var _k9_=x[2],_k__=_k9_[1];
        if(_k__)
         {var _k$_=_k9_[3],_la_=_k__[1];
          if(_k$_)
           {var x$0=_k$_[1];
            return [0,708012133,[0,_la_,[0,json_of_biniou(x$0)]]]}
          return [0,708012133,[0,_la_,0]]}
        return caml_call1(Stdlib[2],cst_Cannot_convert_hashed_vari)}
      if(-775957819 <= _k3_)
       {if(412180492 <= _k3_)
         {if(504440814 <= _k3_)
           {var _lb_=x[2];
            if(_lb_)
             {var
               match$0=_lb_[1],
               rows=match$0[2],
               header=match$0[1],
               _lc_=
                function(a)
                 {var n=header.length - 1;
                  if(a.length - 1 !== n)
                   caml_call1(Stdlib[2],cst_Malformed_biniou_table);
                  var l=[0,0],_le_=n - 1 | 0;
                  if(! (_le_ < 0))
                   {var i=_le_;
                    for(;;)
                     {var
                       match=caml_check_bound(header,i)[1 + i],
                       o=match[1],
                       x=caml_check_bound(a,i)[1 + i];
                      if(o)
                       {var s=o[1],_lf_=l[1];
                        l[1] = [0,[0,s,json_of_biniou(x)],_lf_]}
                      else
                       caml_call1(Stdlib[2],cst_Cannot_convert_hashed_fiel$0);
                      var _lg_=i - 1 | 0;
                      if(0 !== i){var i=_lg_;continue}
                      break}}
                  return [0,963043957,l[1]]},
               _ld_=caml_call2(Stdlib_array[15],_lc_,rows);
              return [0,848054398,caml_call1(Stdlib_array[11],_ld_)]}
            return _c_}
          var i=x[2];
          return [0,3654863,i]}
        return 221365804 <= _k3_
                ?caml_call1(Stdlib[2],cst_Cannot_convert_num_variant)
                :caml_call1(Stdlib[2],cst_Cannot_convert_shared_node)}
      if(-783416530 <= _k3_)
       return -783415859 <= _k3_
               ?caml_call1(Stdlib[2],cst_Cannot_convert_int64_to_JS)
               :caml_call1(Stdlib[2],cst_Cannot_convert_int32_to_JS);
      if(-783416972 <= _k3_)
       return caml_call1(Stdlib[2],cst_Cannot_convert_int16_to_JS);
      var s=x[2];
      return [0,-976970511,s]}
    var Yojson_biniou=[0,biniou_of_json,json_of_biniou];
    caml_register_global(1022,Yojson_biniou,"Yojson_biniou");
    var Json_error=[248,cst_Yojson_Json_error,caml_fresh_oo_id(0)];
    function json_error(s){throw [0,Json_error,s]}
    var
     End_of_array=[248,cst_Yojson_End_of_array,caml_fresh_oo_id(0)],
     End_of_object=[248,cst_Yojson_End_of_object,caml_fresh_oo_id(0)],
     End_of_tuple=[248,cst_Yojson_End_of_tuple,caml_fresh_oo_id(0)],
     End_of_input=[248,cst_Yojson_End_of_input,caml_fresh_oo_id(0)];
    function utf8_of_code(buf,x)
     {var add=Bi_outbuf[15];
      function maxbits(n,x){return 0 === (x >>> n | 0)?1:0}
      if(maxbits(7,x))return caml_call2(add,buf,caml_call1(Stdlib_char[1],x));
      if(maxbits(11,x))
       {caml_call2
         (add,buf,caml_call1(Stdlib_char[1],192 | (x >>> 6 | 0) & 31));
        return caml_call2(add,buf,caml_call1(Stdlib_char[1],128 | x & 63))}
      if(maxbits(16,x))
       {caml_call2
         (add,buf,caml_call1(Stdlib_char[1],224 | (x >>> 12 | 0) & 15));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 6 | 0) & 63));
        return caml_call2(add,buf,caml_call1(Stdlib_char[1],128 | x & 63))}
      if(maxbits(21,x))
       {caml_call2
         (add,buf,caml_call1(Stdlib_char[1],240 | (x >>> 18 | 0) & 7));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 12 | 0) & 63));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 6 | 0) & 63));
        return caml_call2(add,buf,caml_call1(Stdlib_char[1],128 | x & 63))}
      if(maxbits(26,x))
       {caml_call2
         (add,buf,caml_call1(Stdlib_char[1],248 | (x >>> 24 | 0) & 3));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 18 | 0) & 63));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 12 | 0) & 63));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 6 | 0) & 63));
        return caml_call2(add,buf,caml_call1(Stdlib_char[1],128 | x & 63))}
      if(maxbits(31,x))
       {caml_call2
         (add,buf,caml_call1(Stdlib_char[1],252 | (x >>> 30 | 0) & 1));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 24 | 0) & 63));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 18 | 0) & 63));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 12 | 0) & 63));
        caml_call2
         (add,buf,caml_call1(Stdlib_char[1],128 | (x >>> 6 | 0) & 63));
        return caml_call2(add,buf,caml_call1(Stdlib_char[1],128 | x & 63))}
      throw [0,Assert_failure,_d_]}
    function utf8_of_surrogate_pair(buf,i,j)
     {var high10=i - 55296 | 0,low10=j - 56320 | 0;
      return utf8_of_code(buf,65536 + (high10 << 10 | low10) | 0)}
    function is_object_or_array(x)
     {if(typeof x !== "number")
       {var _k2_=x[1],switch$0=0;
        if(848054398 === _k2_ || 963043957 === _k2_)switch$0 = 1;
        if(switch$0)return 1}
      return 0}
    var Lexer_state=[0];
    function init_lexer(buf,fname,opt,param)
     {if(opt)var sth=opt[1],lnum=sth;else var lnum=1;
      if(buf)
       var buf$0=buf[1],buf$1=buf$0;
      else
       var buf$1=caml_call3(Bi_outbuf[3],0,0,256);
      return [0,buf$1,lnum,0,fname]}
    function hex(n)
     {var _k1_=10 <= n?n + 87 | 0:n + 48 | 0;
      return caml_call1(Stdlib_char[1],_k1_)}
    function write_special(src,start,stop,ob,str)
     {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0);
      caml_call2(Bi_outbuf[13],ob,str);
      start[1] = stop + 1 | 0;
      return 0}
    function finish_string(src,start,ob)
     {try
       {var
         _k0_=
          caml_call4
           (Bi_outbuf[14],
            ob,
            src,
            start[1],
            caml_ml_string_length(src) - start[1] | 0);
        return _k0_}
      catch(exc)
       {exc = caml_wrap_exception(exc);
        caml_call4
         (Stdlib_printf[3],
          _e_,
          src,
          start[1],
          caml_ml_string_length(src) - start[1] | 0);
        throw exc}}
    function write_string(ob,s)
     {caml_call2(Bi_outbuf[15],ob,34);
      var start=[0,0],_kY_=caml_ml_string_length(s) - 1 | 0,_kX_=0;
      if(! (_kY_ < 0))
       {var i$0=_kX_;
        for(;;)
         {var c=caml_string_get(s,i$0);
          if(92 === c)
           write_special(s,start,i$0,ob,cst);
          else
           {var switch$0=0;
            if(35 <= c)
             if(127 === c)switch$0 = 1;else switch$0 = 2;
            else
             if(8 <= c)
              {var switcher=c - 8 | 0,switch$1=0;
               switch(switcher)
                {case 0:write_special(s,start,i$0,ob,cst_b);break;
                 case 1:write_special(s,start,i$0,ob,cst_t);break;
                 case 2:write_special(s,start,i$0,ob,cst_n);break;
                 case 4:write_special(s,start,i$0,ob,cst_f);break;
                 case 5:write_special(s,start,i$0,ob,cst_r);break;
                 case 26:write_special(s,start,i$0,ob,cst$0);break;
                 case 24:
                 case 25:switch$0 = 2;switch$1 = 1;break;
                 default:switch$0 = 1;switch$1 = 1}}
             else
              switch$0 = 1;
            switch(switch$0)
             {case 2:break;
              case 1:
               caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0);
               var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1];
               caml_call5(Stdlib_bytes[12],cst_u00,0,dst,i,4);
               caml_bytes_set(dst,i + 4 | 0,hex(c >>> 4 | 0));
               caml_bytes_set(dst,i + 5 | 0,hex(c & 15));
               start[1] = i$0 + 1 | 0;
               break
              }}
          var _kZ_=i$0 + 1 | 0;
          if(_kY_ !== i$0){var i$0=_kZ_;continue}
          break}}
      finish_string(s,start,ob);
      return caml_call2(Bi_outbuf[15],ob,34)}
    function json_string_of_string(s)
     {var ob=caml_call3(Bi_outbuf[3],0,0,10);
      write_string(ob,s);
      return caml_call1(Bi_outbuf[4],ob)}
    function write_null(ob,param)
     {return caml_call2(Bi_outbuf[13],ob,cst_null)}
    function write_bool(ob,x)
     {var _kW_=x?cst_true:cst_false;return caml_call2(Bi_outbuf[13],ob,_kW_)}
    var
     _f_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])),
     _g_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])),
     max_digits=caml_call2(Stdlib[17],_g_,_f_);
    function write_digits(s,pos,x)
     {if(0 === x)return pos;
      var
       d=x % 10 | 0,
       pos$0=write_digits(s,pos,x / 10 | 0),
       n=caml_call1(Stdlib[18],d);
      caml_bytes_set(s,pos$0,caml_call1(Stdlib_char[1],n + 48 | 0));
      return pos$0 + 1 | 0}
    function write_int(ob,x)
     {caml_call2(Bi_outbuf[9],ob,max_digits);
      if(0 < x){ob[3] = write_digits(ob[1],ob[3],x);return 0}
      if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48);
      var s=ob[1],pos=ob[3];
      caml_bytes_set(s,pos,45);
      ob[3] = write_digits(s,pos + 1 | 0,x);
      return 0}
    function float_needs_period(s)
     {try
       {var _kS_=caml_ml_string_length(s) - 1 | 0,_kR_=0;
        if(! (_kS_ < 0))
         {var i=_kR_;
          for(;;)
           {var match=caml_string_get(s,i),switch$0=0;
            if(48 <= match)
             {if(! (58 <= match))switch$0 = 1}
            else
             if(45 === match)switch$0 = 1;
            if(! switch$0)throw Stdlib[3];
            var _kU_=i + 1 | 0;
            if(_kS_ !== i){var i=_kU_;continue}
            break}}
        var _kT_=1;
        return _kT_}
      catch(_kV_)
       {_kV_ = caml_wrap_exception(_kV_);
        if(_kV_ === Stdlib[3])return 0;
        throw _kV_}}
    function write_float_fast(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var _kP_=0. < x?cst_Infinity:cst_Infinity$0;
        return caml_call2(Bi_outbuf[13],ob,_kP_)}
      if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN);
      var s=caml_call2(Stdlib_printf[4],_h_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _kQ_=float_needs_period(s);
      return _kQ_?caml_call2(Bi_outbuf[13],ob,cst_0):_kQ_}
    function write_float(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var _kN_=0. < x?cst_Infinity$1:cst_Infinity$2;
        return caml_call2(Bi_outbuf[13],ob,_kN_)}
      if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$0);
      var
       s1=caml_call2(Stdlib_printf[4],_i_,x),
       s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_printf[4],_j_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _kO_=float_needs_period(s);
      return _kO_?caml_call2(Bi_outbuf[13],ob,cst_0$0):_kO_}
    function write_normal_float_prec(significant_figures,ob,x)
     {var switcher=significant_figures - 1 | 0;
      if(15 < switcher >>> 0)
       var s=caml_call2(Stdlib_printf[4],_k_,x);
      else
       switch(switcher)
        {case 0:var s=caml_call2(Stdlib_printf[4],_l_,x);break;
         case 1:var s=caml_call2(Stdlib_printf[4],_m_,x);break;
         case 2:var s=caml_call2(Stdlib_printf[4],_n_,x);break;
         case 3:var s=caml_call2(Stdlib_printf[4],_o_,x);break;
         case 4:var s=caml_call2(Stdlib_printf[4],_p_,x);break;
         case 5:var s=caml_call2(Stdlib_printf[4],_q_,x);break;
         case 6:var s=caml_call2(Stdlib_printf[4],_r_,x);break;
         case 7:var s=caml_call2(Stdlib_printf[4],_s_,x);break;
         case 8:var s=caml_call2(Stdlib_printf[4],_t_,x);break;
         case 9:var s=caml_call2(Stdlib_printf[4],_u_,x);break;
         case 10:var s=caml_call2(Stdlib_printf[4],_v_,x);break;
         case 11:var s=caml_call2(Stdlib_printf[4],_w_,x);break;
         case 12:var s=caml_call2(Stdlib_printf[4],_x_,x);break;
         case 13:var s=caml_call2(Stdlib_printf[4],_y_,x);break;
         case 14:var s=caml_call2(Stdlib_printf[4],_z_,x);break;
         default:var s=caml_call2(Stdlib_printf[4],_A_,x)}
      caml_call2(Bi_outbuf[13],ob,s);
      var _kM_=float_needs_period(s);
      return _kM_?caml_call2(Bi_outbuf[13],ob,cst_0$1):_kM_}
    function write_float_prec(significant_figures,ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var _kL_=0. < x?cst_Infinity$3:cst_Infinity$4;
        return caml_call2(Bi_outbuf[13],ob,_kL_)}
      return 4 <= match
              ?caml_call2(Bi_outbuf[13],ob,cst_NaN$1)
              :write_normal_float_prec(significant_figures,ob,x)}
    function write_std_float_fast(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var
         _kJ_=
          0. < x
           ?cst_Infinity_value_not_allowed
           :cst_Infinity_value_not_allowed$0;
        return json_error(_kJ_)}
      if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s);
      var s=caml_call2(Stdlib_printf[4],_B_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _kK_=float_needs_period(s);
      return _kK_?caml_call2(Bi_outbuf[13],ob,cst_0$2):_kK_}
    function write_std_float(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var
         _kH_=
          0. < x
           ?cst_Infinity_value_not_allowed$1
           :cst_Infinity_value_not_allowed$2;
        return json_error(_kH_)}
      if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$0);
      var
       s1=caml_call2(Stdlib_printf[4],_C_,x),
       s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_printf[4],_D_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _kI_=float_needs_period(s);
      return _kI_?caml_call2(Bi_outbuf[13],ob,cst_0$3):_kI_}
    function write_std_float_prec(significant_figures,ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var
         _kG_=
          0. < x
           ?cst_Infinity_value_not_allowed$3
           :cst_Infinity_value_not_allowed$4;
        return json_error(_kG_)}
      return 4 <= match
              ?json_error(cst_NaN_value_not_allowed_in_s$1)
              :write_normal_float_prec(significant_figures,ob,x)}
    var
     write_intlit=Bi_outbuf[13],
     write_floatlit=Bi_outbuf[13],
     write_stringlit=Bi_outbuf[13];
    function iter2(f_elt,f_sep,x,param$0)
     {if(param$0)
       {var l$0=param$0[2],y$0=param$0[1];
        caml_call2(f_elt,x,y$0);
        var param=l$0;
        for(;;)
         {if(param)
           {var l=param[2],y=param[1];
            caml_call1(f_sep,x);
            caml_call2(f_elt,x,y);
            var param=l;
            continue}
          return 0}}
      return 0}
    function f_sep(ob){return caml_call2(Bi_outbuf[15],ob,44)}
    function write_variant(ob,s,o)
     {caml_call2(Bi_outbuf[15],ob,60);
      write_string(ob,s);
      if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t(ob,x)}
      return caml_call2(Bi_outbuf[15],ob,62)}
    function write_tuple(ob,l)
     {caml_call2(Bi_outbuf[15],ob,40);
      iter2(write_t,f_sep,ob,l);
      return caml_call2(Bi_outbuf[15],ob,41)}
    function write_list(ob,l)
     {caml_call2(Bi_outbuf[15],ob,91);
      iter2(write_t,f_sep,ob,l);
      return caml_call2(Bi_outbuf[15],ob,93)}
    function write_assoc(ob,l)
     {function f_elt(ob,param)
       {var x=param[2],s=param[1];
        write_string(ob,s);
        caml_call2(Bi_outbuf[15],ob,58);
        return write_t(ob,x)}
      caml_call2(Bi_outbuf[15],ob,123);
      iter2(f_elt,f_sep,ob,l);
      return caml_call2(Bi_outbuf[15],ob,125)}
    function write_t(ob,x)
     {if(typeof x === "number")return write_null(ob,0);
      var _kF_=x[1];
      if(708012133 <= _kF_)
       {if(737456202 <= _kF_)
         {if(928231259 <= _kF_)
           {if(963043957 <= _kF_){var l=x[2];return write_assoc(ob,l)}
            var s=x[2];
            return caml_call2(Bi_outbuf[13],ob,s)}
          if(848054398 <= _kF_){var l$0=x[2];return write_list(ob,l$0)}
          var b=x[2];
          return write_bool(ob,b)}
        if(726928360 <= _kF_){var l$1=x[2];return write_tuple(ob,l$1)}
        var match=x[2],o=match[2],s$0=match[1];
        return write_variant(ob,s$0,o)}
      if(-752863768 === _kF_)
       {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)}
      if(3654863 <= _kF_)
       {if(365180284 <= _kF_){var f=x[2];return write_float(ob,f)}
        var i=x[2];
        return write_int(ob,i)}
      if(-375152890 <= _kF_)
       {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)}
      var s$3=x[2];
      return write_string(ob,s$3)}
    function write_std_variant(ob,s,o)
     {if(o)
       {var x=o[1];
        caml_call2(Bi_outbuf[15],ob,91);
        write_string(ob,s);
        caml_call2(Bi_outbuf[15],ob,44);
        write_std_json(ob,x);
        return caml_call2(Bi_outbuf[15],ob,93)}
      return write_string(ob,s)}
    function write_std_tuple(ob,l)
     {caml_call2(Bi_outbuf[15],ob,91);
      iter2(write_std_json,f_sep,ob,l);
      return caml_call2(Bi_outbuf[15],ob,93)}
    function write_std_json(ob,x)
     {if(typeof x === "number")return write_null(ob,0);
      var _kE_=x[1];
      if(708012133 <= _kE_)
       {if(737456202 <= _kE_)
         {if(928231259 <= _kE_)
           {if(963043957 <= _kE_)
             {var
               l=x[2],
               f_elt=
                function(ob,param)
                 {var x=param[2],s=param[1];
                  write_string(ob,s);
                  caml_call2(Bi_outbuf[15],ob,58);
                  return write_std_json(ob,x)};
              caml_call2(Bi_outbuf[15],ob,123);
              iter2(f_elt,f_sep,ob,l);
              return caml_call2(Bi_outbuf[15],ob,125)}
            var s=x[2];
            return caml_call2(Bi_outbuf[13],ob,s)}
          if(848054398 <= _kE_)
           {var l$0=x[2];
            caml_call2(Bi_outbuf[15],ob,91);
            iter2(write_std_json,f_sep,ob,l$0);
            return caml_call2(Bi_outbuf[15],ob,93)}
          var b=x[2];
          return write_bool(ob,b)}
        if(726928360 <= _kE_){var l$1=x[2];return write_std_tuple(ob,l$1)}
        var match=x[2],o=match[2],s$0=match[1];
        return write_std_variant(ob,s$0,o)}
      if(-752863768 === _kE_)
       {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)}
      if(3654863 <= _kE_)
       {if(365180284 <= _kE_){var f=x[2];return write_std_float(ob,f)}
        var i=x[2];
        return write_int(ob,i)}
      if(-375152890 <= _kE_)
       {var s$2=x[2];return caml_call2(Bi_outbuf[13],ob,s$2)}
      var s$3=x[2];
      return write_string(ob,s$3)}
    function to_outbuf(opt,ob,x)
     {if(opt)var sth=opt[1],std=sth;else var std=0;
      return std
              ?is_object_or_array(x)
                ?write_std_json(ob,x)
                :json_error(cst_Root_is_not_an_object_or_a)
              :write_t(ob,x)}
    function to_string(buf,opt,std,x)
     {if(opt)var sth=opt[1],len=sth;else var len=256;
      if(buf)
       {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
      else
       var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
      to_outbuf(std,ob$0,x);
      var s=caml_call1(Bi_outbuf[4],ob$0);
      caml_call1(Bi_outbuf[19],ob$0);
      return s}
    function to_channel(buf,len,std,oc,x)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
      to_outbuf(std,ob$0,x);
      return caml_call1(Bi_outbuf[6],ob$0)}
    function to_output(buf,len,std,out,x)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[7],len,0,out);
      to_outbuf(std,ob$0,x);
      return caml_call1(Bi_outbuf[8],ob$0)}
    function to_file(len,std,file,x)
     {var oc=caml_call1(Stdlib[60],file);
      try
       {to_channel(0,len,std,oc,x);
        var _kD_=caml_call1(Stdlib[76],oc);
        return _kD_}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
    function stream_to_outbuf(std,ob,st)
     {function _kB_(_kC_){return to_outbuf(std,ob,_kC_)}
      return caml_call2(Stdlib_stream[8],_kB_,st)}
    function stream_to_string(buf,opt,std,st)
     {if(opt)var sth=opt[1],len=sth;else var len=256;
      if(buf)
       {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
      else
       var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
      stream_to_outbuf(std,ob$0,st);
      var s=caml_call1(Bi_outbuf[4],ob$0);
      caml_call1(Bi_outbuf[19],ob$0);
      return s}
    function stream_to_channel(buf,len,std,oc,st)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
      stream_to_outbuf(std,ob$0,st);
      return caml_call1(Bi_outbuf[6],ob$0)}
    function stream_to_file(len,std,file,st)
     {var oc=caml_call1(Stdlib[60],file);
      try
       {stream_to_channel(0,len,std,oc,st);
        var _kA_=caml_call1(Stdlib[76],oc);
        return _kA_}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
    function sort(x)
     {if(typeof x !== "number")
       {var _kr_=x[1];
        if(726928361 <= _kr_)
         {if(848054398 === _kr_)
           {var l=x[2],_ks_=caml_call2(Stdlib_list[19],sort,l);
            return [0,848054398,caml_call1(Stdlib_list[9],_ks_)]}
          if(963043957 === _kr_)
           {var
             l$0=x[2],
             _kt_=
              function(param){var v=param[2],k=param[1];return [0,k,sort(v)]},
             _ku_=caml_call2(Stdlib_list[19],_kt_,l$0),
             l$1=caml_call1(Stdlib_list[9],_ku_),
             _kv_=
              function(param,_kz_)
               {var b=_kz_[1],a=param[1];
                return caml_call2(Stdlib_string[33],a,b)};
            return [0,963043957,caml_call2(Stdlib_list[52],_kv_,l$1)]}}
        else
         if(708012133 === _kr_)
          {var _kw_=x[2],_kx_=_kw_[2];
           if(_kx_)
            {var v=_kx_[1],k=_kw_[1],v$0=sort(v);
             return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}}
         else
          if(726928360 <= _kr_)
           {var l$2=x[2],_ky_=caml_call2(Stdlib_list[19],sort,l$2);
            return [0,726928360,caml_call1(Stdlib_list[9],_ky_)]}}
      return x}
    function pp(fmt,param)
     {if(typeof param === "number")
       return caml_call2(Stdlib_format[13],fmt,cst_Null);
      var _kk_=param[1];
      if(708012133 <= _kk_)
       {if(737456202 <= _kk_)
         {if(928231259 <= _kk_)
           {if(963043957 <= _kk_)
             {var xs=param[2];
              caml_call2(Stdlib_format[123],fmt,_E_);
              caml_call2(Stdlib_format[123],fmt,_F_);
              var
               _kl_=0,
               _km_=
                function(sep,param)
                 {var value=param[2],key=param[1];
                  if(sep)caml_call2(Stdlib_format[123],fmt,_G_);
                  caml_call2(Stdlib_format[123],fmt,_H_);
                  caml_call3(Stdlib_format[123],fmt,_I_,key);
                  caml_call2(Stdlib_format[123],fmt,_J_);
                  pp(fmt,value);
                  caml_call2(Stdlib_format[123],fmt,_K_);
                  return 1};
              caml_call3(Stdlib_list[22],_km_,_kl_,xs);
              caml_call2(Stdlib_format[123],fmt,_L_);
              return caml_call2(Stdlib_format[123],fmt,_M_)}
            var x=param[2];
            caml_call2(Stdlib_format[123],fmt,_N_);
            caml_call3(Stdlib_format[123],fmt,_O_,x);
            return caml_call2(Stdlib_format[123],fmt,_P_)}
          if(848054398 <= _kk_)
           {var xs$0=param[2];
            caml_call2(Stdlib_format[123],fmt,_Q_);
            caml_call2(Stdlib_format[123],fmt,_R_);
            var
             _kn_=0,
             _ko_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_S_);
                pp(fmt,x);
                return 1};
            caml_call3(Stdlib_list[22],_ko_,_kn_,xs$0);
            caml_call2(Stdlib_format[123],fmt,_T_);
            return caml_call2(Stdlib_format[123],fmt,_U_)}
          var x$0=param[2];
          caml_call2(Stdlib_format[123],fmt,_V_);
          caml_call3(Stdlib_format[123],fmt,_W_,x$0);
          return caml_call2(Stdlib_format[123],fmt,_X_)}
        if(726928360 <= _kk_)
         {var tup=param[2];
          caml_call2(Stdlib_format[123],fmt,_Y_);
          caml_call2(Stdlib_format[123],fmt,_Z_);
          var
           _kp_=0,
           _kq_=
            function(sep,e)
             {if(sep)caml_call2(Stdlib_format[123],fmt,___);
              pp(fmt,e);
              return 1};
          caml_call3(Stdlib_list[22],_kq_,_kp_,tup);
          caml_call2(Stdlib_format[123],fmt,_$_);
          return caml_call2(Stdlib_format[123],fmt,_aa_)}
        var match=param[2],value=match[2],name=match[1];
        caml_call2(Stdlib_format[123],fmt,_ab_);
        caml_call2(Stdlib_format[123],fmt,_ac_);
        caml_call3(Stdlib_format[123],fmt,_ad_,name);
        caml_call2(Stdlib_format[123],fmt,_ae_);
        if(value)
         {var x$1=value[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some);
          pp(fmt,x$1);
          caml_call2(Stdlib_format[13],fmt,cst$1)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None);
        caml_call2(Stdlib_format[123],fmt,_af_);
        return caml_call2(Stdlib_format[123],fmt,_ag_)}
      if(-752863768 === _kk_)
       {var x$2=param[2];
        caml_call2(Stdlib_format[123],fmt,_ah_);
        caml_call3(Stdlib_format[123],fmt,_ai_,x$2);
        return caml_call2(Stdlib_format[123],fmt,_aj_)}
      if(3654863 <= _kk_)
       {if(365180284 <= _kk_)
         {var x$3=param[2];
          caml_call2(Stdlib_format[123],fmt,_ak_);
          caml_call3(Stdlib_format[123],fmt,_al_,x$3);
          return caml_call2(Stdlib_format[123],fmt,_am_)}
        var x$4=param[2];
        caml_call2(Stdlib_format[123],fmt,_an_);
        caml_call3(Stdlib_format[123],fmt,_ao_,x$4);
        return caml_call2(Stdlib_format[123],fmt,_ap_)}
      if(-375152890 <= _kk_)
       {var x$5=param[2];
        caml_call2(Stdlib_format[123],fmt,_aq_);
        caml_call3(Stdlib_format[123],fmt,_ar_,x$5);
        return caml_call2(Stdlib_format[123],fmt,_as_)}
      var x$6=param[2];
      caml_call2(Stdlib_format[123],fmt,_at_);
      caml_call3(Stdlib_format[123],fmt,_au_,x$6);
      return caml_call2(Stdlib_format[123],fmt,_av_)}
    function show(x){return caml_call3(Stdlib_format[127],_aw_,pp,x)}
    function equal(a,b)
     {var a$0=a,b$0=b;
      for(;;)
       {if(typeof a$0 === "number")
         {if(870828711 === a$0 && 870828711 === b$0)return 1}
        else
         {var _kd_=a$0[1];
          if(708012133 <= _kd_)
           {var switch$0=0;
            if(848054398 <= _kd_)
             {if(928231259 === _kd_)
               {if(typeof b$0 !== "number" && 928231259 === b$0[1])
                 {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}}
              else
               if(963043957 === _kd_)
                {if(typeof b$0 !== "number" && 963043957 === b$0[1])
                  {var
                    ys=b$0[2],
                    xs=a$0[2],
                    compare_keys=
                     function(param,_kj_)
                      {var key=_kj_[1],key$0=param[1];
                       return caml_call2(Stdlib_string[33],key$0,key)},
                    xs$0=caml_call2(Stdlib_list[52],compare_keys,xs),
                    ys$0=caml_call2(Stdlib_list[52],compare_keys,ys);
                   try
                    {var
                      _ke_=
                       function(param,_ki_)
                        {var
                          value=_ki_[2],
                          key=_ki_[1],
                          value$0=param[2],
                          key$0=param[1],
                          match=caml_string_equal(key$0,key);
                         return match?equal(value$0,value):0},
                      result=caml_call3(Stdlib_list[31],_ke_,xs$0,ys$0);
                     return result}
                   catch(_kh_)
                    {_kh_ = caml_wrap_exception(_kh_);
                     if(_kh_[1] === Stdlib[6])return 0;
                     throw _kh_}}}
               else
                if
                 (!
                  (848054399 <= _kd_)
                  &&
                  typeof b$0
                  !==
                  "number"
                  &&
                  848054398
                  ===
                  b$0[1])
                 {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}}
            else
             if(726928360 === _kd_)
              {if(typeof b$0 !== "number" && 726928360 === b$0[1])
                {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}}
             else
              if(737456202 === _kd_)
               {if(typeof b$0 !== "number" && 737456202 === b$0[1])
                 {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}}
              else
               if
                (!
                 (708012134 <= _kd_)
                 &&
                 typeof b$0
                 !==
                 "number"
                 &&
                 708012133
                 ===
                 b$0[1])
                {var
                  _kf_=b$0[2],
                  value=_kf_[2],
                  name=_kf_[1],
                  match=a$0[2],
                  value$0=match[2],
                  name$0=match[1],
                  match$0=caml_equal(name$0,name);
                 if(match$0)
                  {if(value$0)
                    {if(value)
                      {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}}
                   else
                    if(! value)return 1;
                   return 0}
                 return 0}
            if(switch$0)
             try
              {var result$0=caml_call3(Stdlib_list[31],equal,xs$1,ys$1);
               return result$0}
             catch(_kg_)
              {_kg_ = caml_wrap_exception(_kg_);
               if(_kg_[1] === Stdlib[6])return 0;
               throw _kg_}}
          else
           if(-375152890 <= _kd_)
            {if(3654863 === _kd_)
              {if(typeof b$0 !== "number" && 3654863 === b$0[1])
                {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}}
             else
              if(365180284 === _kd_)
               {if(typeof b$0 !== "number" && 365180284 === b$0[1])
                 {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}}
              else
               if
                (!
                 (-375152889 <= _kd_)
                 &&
                 typeof b$0
                 !==
                 "number"
                 &&
                 -375152890
                 ===
                 b$0[1])
                {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}}
           else
            if(-976970511 === _kd_)
             {if(typeof b$0 !== "number" && -976970511 === b$0[1])
               {var b$7=b$0[2],a$7=a$0[2];return caml_equal(a$7,b$7)}}
            else
             if
              (-752863768
               ===
               _kd_
               &&
               typeof b$0
               !==
               "number"
               &&
               -752863768
               ===
               b$0[1])
              {var b$8=b$0[2],a$8=a$0[2];return caml_equal(a$8,b$8)}}
        return 0}}
    var
     array=Easy_format[2],
     record=Easy_format[2],
     _ax_=Easy_format[2],
     tuple=
      [0,
       0,
       _ax_[2],
       _ax_[3],
       _ax_[4],
       0,
       _ax_[6],
       0,
       _ax_[8],
       _ax_[9],
       _ax_[10],
       _ax_[11],
       _ax_[12],
       _ax_[13],
       _ax_[14]],
     _ay_=Easy_format[2],
     variant=
      [0,
       _ay_[1],
       _ay_[2],
       _ay_[3],
       _ay_[4],
       0,
       _ay_[6],
       _ay_[7],
       _ay_[8],
       _ay_[9],
       _ay_[10],
       _ay_[11],
       _ay_[12],
       _ay_[13],
       _ay_[14]];
    function _az_(std,x)
     {var x$0=x;
      for(;;)
       {if(typeof x$0 === "number")return [0,cst_null$0,Easy_format[1]];
        var _jT_=x$0[1];
        if(726928360 <= _jT_)
         {if(737456202 === _jT_)
           {var
             x$1=x$0[2],
             _jU_=Easy_format[1],
             _jV_=x$1?cst_true$0:cst_false$0;
            return [0,_jV_,_jU_]}
          if(! (928231259 <= _jT_))
           {if(848054398 <= _jT_)
             {var _jY_=x$0[2];
              if(_jY_)
               {var _jZ_=function(_kc_){return _az_(std,_kc_)};
                return [1,
                        [0,cst$8,cst$7,cst$6,array],
                        caml_call2(Stdlib_list[17],_jZ_,_jY_)]}
              return [0,cst$9,Easy_format[1]]}
            var l=x$0[2];
            if(std){var x$2=[0,848054398,l],x$0=x$2;continue}
            if(0 === l)return [0,cst$10,Easy_format[1]];
            var _j0_=function(_kb_){return _az_(std,_kb_)};
            return [1,
                    [0,cst$13,cst$12,cst$11,tuple],
                    caml_call2(Stdlib_list[17],_j0_,l)]}
          if(963043957 <= _jT_)
           {var _jW_=x$0[2];
            if(_jW_)
             {var
               _jX_=
                function(param)
                 {var
                   x=param[2],
                   name=param[1],
                   _j$_=json_string_of_string(name),
                   s=caml_call2(Stdlib_printf[4],_aA_,_j$_),
                   _ka_=_az_(std,x);
                  return [2,[0,[0,s,Easy_format[1]],Easy_format[3]],_ka_]};
              return [1,
                      [0,cst$4,cst$3,cst$2,record],
                      caml_call2(Stdlib_list[17],_jX_,_jW_)]}
            return [0,cst$5,Easy_format[1]]}}
        else
         {if(3654863 === _jT_)
           {var x$3=x$0[2],_j1_=Easy_format[1];
            return [0,caml_call1(Stdlib[33],x$3),_j1_]}
          if(365180284 <= _jT_)
           {if(708012133 <= _jT_)
             {var _j2_=x$0[2],_j3_=_j2_[2],_j4_=_j2_[1];
              if(_j3_)
               {var x$4=_j3_[1];
                if(std)
                 {var
                   x$5=[0,848054398,[0,[0,-976970511,_j4_],[0,x$4,0]]],
                   x$0=x$5;
                  continue}
                var
                 _j5_=json_string_of_string(_j4_),
                 _j6_=caml_call2(Stdlib[28],_j5_,cst$14),
                 op=caml_call2(Stdlib[28],cst$15,_j6_);
                return [1,[0,op,cst$17,cst$16,variant],[0,_az_(std,x$4),0]]}
              if(std){var x$6=[0,-976970511,_j4_],x$0=x$6;continue}
              var
               _j7_=Easy_format[1],
               _j8_=json_string_of_string(_j4_),
               _j9_=caml_call2(Stdlib[28],_j8_,cst$18);
              return [0,caml_call2(Stdlib[28],cst$19,_j9_),_j7_]}
            var x$7=x$0[2];
            if(std)
             {var ob$0=caml_call3(Bi_outbuf[3],0,0,20);
              write_std_float(ob$0,x$7);
              var s$0=caml_call1(Bi_outbuf[4],ob$0)}
            else
             {var ob=caml_call3(Bi_outbuf[3],0,0,20);
              write_float(ob,x$7);
              var s$0=caml_call1(Bi_outbuf[4],ob)}
            return [0,s$0,Easy_format[1]]}
          if(! (-752863768 <= _jT_))
           {var s$1=x$0[2],_j__=Easy_format[1];
            return [0,json_string_of_string(s$1),_j__]}}
        var s=x$0[2];
        return [0,s,Easy_format[1]]}}
    function format(opt,x)
     {if(opt)var sth=opt[1],std=sth;else var std=0;
      if(std && ! is_object_or_array(x))
       return json_error(cst_Root_is_not_an_object_or_a$0);
      return _az_(std,x)}
    function to_string$0(std,x)
     {var _jS_=format(std,x);return caml_call3(Easy_format[4][4],0,0,_jS_)}
    function to_channel$0(std,oc,x)
     {var _jR_=format(std,x);return caml_call4(Easy_format[4][5],0,0,oc,_jR_)}
    function pretty_format(std,x){return format(std,x)}
    function pretty_print(std,out,x)
     {var _jQ_=pretty_format(std,x);
      return caml_call2(Easy_format[4][2],out,_jQ_)}
    function pretty_to_string(std,x){return to_string$0(std,x)}
    function pretty_to_channel(std,oc,x){return to_channel$0(std,oc,x)}
    function hex$0(n)
     {var _jP_=10 <= n?n + 87 | 0:n + 48 | 0;
      return caml_call1(Stdlib_char[1],_jP_)}
    function write_special$0(src,start,stop,ob,str)
     {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0);
      caml_call2(Bi_outbuf[13],ob,str);
      start[1] = stop + 1 | 0;
      return 0}
    function finish_string$0(src,start,ob)
     {try
       {var
         _jO_=
          caml_call4
           (Bi_outbuf[14],
            ob,
            src,
            start[1],
            caml_ml_string_length(src) - start[1] | 0);
        return _jO_}
      catch(exc)
       {exc = caml_wrap_exception(exc);
        caml_call4
         (Stdlib_printf[3],
          _aB_,
          src,
          start[1],
          caml_ml_string_length(src) - start[1] | 0);
        throw exc}}
    function write_string$0(ob,s)
     {caml_call2(Bi_outbuf[15],ob,34);
      var start=[0,0],_jM_=caml_ml_string_length(s) - 1 | 0,_jL_=0;
      if(! (_jM_ < 0))
       {var i$0=_jL_;
        for(;;)
         {var c=caml_string_get(s,i$0);
          if(92 === c)
           write_special$0(s,start,i$0,ob,cst$20);
          else
           {var switch$0=0;
            if(35 <= c)
             if(127 === c)switch$0 = 1;else switch$0 = 2;
            else
             if(8 <= c)
              {var switcher=c - 8 | 0,switch$1=0;
               switch(switcher)
                {case 0:write_special$0(s,start,i$0,ob,cst_b$0);break;
                 case 1:write_special$0(s,start,i$0,ob,cst_t$0);break;
                 case 2:write_special$0(s,start,i$0,ob,cst_n$0);break;
                 case 4:write_special$0(s,start,i$0,ob,cst_f$0);break;
                 case 5:write_special$0(s,start,i$0,ob,cst_r$0);break;
                 case 26:write_special$0(s,start,i$0,ob,cst$21);break;
                 case 24:
                 case 25:switch$0 = 2;switch$1 = 1;break;
                 default:switch$0 = 1;switch$1 = 1}}
             else
              switch$0 = 1;
            switch(switch$0)
             {case 2:break;
              case 1:
               caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0);
               var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1];
               caml_call5(Stdlib_bytes[12],cst_u00$0,0,dst,i,4);
               caml_bytes_set(dst,i + 4 | 0,hex$0(c >>> 4 | 0));
               caml_bytes_set(dst,i + 5 | 0,hex$0(c & 15));
               start[1] = i$0 + 1 | 0;
               break
              }}
          var _jN_=i$0 + 1 | 0;
          if(_jM_ !== i$0){var i$0=_jN_;continue}
          break}}
      finish_string$0(s,start,ob);
      return caml_call2(Bi_outbuf[15],ob,34)}
    function write_null$0(ob,param)
     {return caml_call2(Bi_outbuf[13],ob,cst_null$1)}
    function write_bool$0(ob,x)
     {var _jK_=x?cst_true$1:cst_false$1;
      return caml_call2(Bi_outbuf[13],ob,_jK_)}
    var
     _aC_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])),
     _aD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])),
     max_digits$0=caml_call2(Stdlib[17],_aD_,_aC_);
    function write_digits$0(s,pos,x)
     {if(0 === x)return pos;
      var
       d=x % 10 | 0,
       pos$0=write_digits$0(s,pos,x / 10 | 0),
       n=caml_call1(Stdlib[18],d);
      caml_bytes_set(s,pos$0,caml_call1(Stdlib_char[1],n + 48 | 0));
      return pos$0 + 1 | 0}
    function write_int$0(ob,x)
     {caml_call2(Bi_outbuf[9],ob,max_digits$0);
      if(0 < x){ob[3] = write_digits$0(ob[1],ob[3],x);return 0}
      if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48);
      var s=ob[1],pos=ob[3];
      caml_bytes_set(s,pos,45);
      ob[3] = write_digits$0(s,pos + 1 | 0,x);
      return 0}
    function float_needs_period$0(s)
     {try
       {var _jG_=caml_ml_string_length(s) - 1 | 0,_jF_=0;
        if(! (_jG_ < 0))
         {var i=_jF_;
          for(;;)
           {var match=caml_string_get(s,i),switch$0=0;
            if(48 <= match)
             {if(! (58 <= match))switch$0 = 1}
            else
             if(45 === match)switch$0 = 1;
            if(! switch$0)throw Stdlib[3];
            var _jI_=i + 1 | 0;
            if(_jG_ !== i){var i=_jI_;continue}
            break}}
        var _jH_=1;
        return _jH_}
      catch(_jJ_)
       {_jJ_ = caml_wrap_exception(_jJ_);
        if(_jJ_ === Stdlib[3])return 0;
        throw _jJ_}}
    function write_float_fast$0(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var _jD_=0. < x?cst_Infinity$5:cst_Infinity$6;
        return caml_call2(Bi_outbuf[13],ob,_jD_)}
      if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$2);
      var s=caml_call2(Stdlib_printf[4],_aE_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _jE_=float_needs_period$0(s);
      return _jE_?caml_call2(Bi_outbuf[13],ob,cst_0$4):_jE_}
    function write_float$0(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var _jB_=0. < x?cst_Infinity$7:cst_Infinity$8;
        return caml_call2(Bi_outbuf[13],ob,_jB_)}
      if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$3);
      var
       s1=caml_call2(Stdlib_printf[4],_aF_,x),
       s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_printf[4],_aG_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _jC_=float_needs_period$0(s);
      return _jC_?caml_call2(Bi_outbuf[13],ob,cst_0$5):_jC_}
    function write_normal_float_prec$0(significant_figures,ob,x)
     {var switcher=significant_figures - 1 | 0;
      if(15 < switcher >>> 0)
       var s=caml_call2(Stdlib_printf[4],_aH_,x);
      else
       switch(switcher)
        {case 0:var s=caml_call2(Stdlib_printf[4],_aI_,x);break;
         case 1:var s=caml_call2(Stdlib_printf[4],_aJ_,x);break;
         case 2:var s=caml_call2(Stdlib_printf[4],_aK_,x);break;
         case 3:var s=caml_call2(Stdlib_printf[4],_aL_,x);break;
         case 4:var s=caml_call2(Stdlib_printf[4],_aM_,x);break;
         case 5:var s=caml_call2(Stdlib_printf[4],_aN_,x);break;
         case 6:var s=caml_call2(Stdlib_printf[4],_aO_,x);break;
         case 7:var s=caml_call2(Stdlib_printf[4],_aP_,x);break;
         case 8:var s=caml_call2(Stdlib_printf[4],_aQ_,x);break;
         case 9:var s=caml_call2(Stdlib_printf[4],_aR_,x);break;
         case 10:var s=caml_call2(Stdlib_printf[4],_aS_,x);break;
         case 11:var s=caml_call2(Stdlib_printf[4],_aT_,x);break;
         case 12:var s=caml_call2(Stdlib_printf[4],_aU_,x);break;
         case 13:var s=caml_call2(Stdlib_printf[4],_aV_,x);break;
         case 14:var s=caml_call2(Stdlib_printf[4],_aW_,x);break;
         default:var s=caml_call2(Stdlib_printf[4],_aX_,x)}
      caml_call2(Bi_outbuf[13],ob,s);
      var _jA_=float_needs_period$0(s);
      return _jA_?caml_call2(Bi_outbuf[13],ob,cst_0$6):_jA_}
    function write_float_prec$0(significant_figures,ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var _jz_=0. < x?cst_Infinity$9:cst_Infinity$10;
        return caml_call2(Bi_outbuf[13],ob,_jz_)}
      return 4 <= match
              ?caml_call2(Bi_outbuf[13],ob,cst_NaN$4)
              :write_normal_float_prec$0(significant_figures,ob,x)}
    function write_std_float_fast$0(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var
         _jx_=
          0. < x
           ?cst_Infinity_value_not_allowed$5
           :cst_Infinity_value_not_allowed$6;
        return json_error(_jx_)}
      if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$2);
      var s=caml_call2(Stdlib_printf[4],_aY_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _jy_=float_needs_period$0(s);
      return _jy_?caml_call2(Bi_outbuf[13],ob,cst_0$7):_jy_}
    function write_std_float$0(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var
         _jv_=
          0. < x
           ?cst_Infinity_value_not_allowed$7
           :cst_Infinity_value_not_allowed$8;
        return json_error(_jv_)}
      if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$3);
      var
       s1=caml_call2(Stdlib_printf[4],_aZ_,x),
       s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_printf[4],_a0_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _jw_=float_needs_period$0(s);
      return _jw_?caml_call2(Bi_outbuf[13],ob,cst_0$8):_jw_}
    function write_std_float_prec$0(significant_figures,ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var
         _ju_=
          0. < x
           ?cst_Infinity_value_not_allowed$9
           :cst_Infinity_value_not_allowed$10;
        return json_error(_ju_)}
      return 4 <= match
              ?json_error(cst_NaN_value_not_allowed_in_s$4)
              :write_normal_float_prec$0(significant_figures,ob,x)}
    function iter2$0(f_elt,f_sep,x,param$0)
     {if(param$0)
       {var l$0=param$0[2],y$0=param$0[1];
        caml_call2(f_elt,x,y$0);
        var param=l$0;
        for(;;)
         {if(param)
           {var l=param[2],y=param[1];
            caml_call1(f_sep,x);
            caml_call2(f_elt,x,y);
            var param=l;
            continue}
          return 0}}
      return 0}
    function f_sep$0(ob){return caml_call2(Bi_outbuf[15],ob,44)}
    function write_list$0(ob,l)
     {caml_call2(Bi_outbuf[15],ob,91);
      iter2$0(write_t$0,f_sep$0,ob,l);
      return caml_call2(Bi_outbuf[15],ob,93)}
    function write_assoc$0(ob,l)
     {function f_elt(ob,param)
       {var x=param[2],s=param[1];
        write_string$0(ob,s);
        caml_call2(Bi_outbuf[15],ob,58);
        return write_t$0(ob,x)}
      caml_call2(Bi_outbuf[15],ob,123);
      iter2$0(f_elt,f_sep$0,ob,l);
      return caml_call2(Bi_outbuf[15],ob,125)}
    function write_t$0(ob,x)
     {if(typeof x === "number")return write_null$0(ob,0);
      var _jt_=x[1];
      if(365180284 <= _jt_)
       {if(848054398 <= _jt_)
         {if(963043957 <= _jt_){var l=x[2];return write_assoc$0(ob,l)}
          var l$0=x[2];
          return write_list$0(ob,l$0)}
        if(737456202 <= _jt_){var b=x[2];return write_bool$0(ob,b)}
        var f=x[2];
        return write_float$0(ob,f)}
      if(3654863 <= _jt_){var i=x[2];return write_int$0(ob,i)}
      var s=x[2];
      return write_string$0(ob,s)}
    function write_std_json$0(ob,x)
     {if(typeof x === "number")return write_null$0(ob,0);
      var _js_=x[1];
      if(365180284 <= _js_)
       {if(848054398 <= _js_)
         {if(963043957 <= _js_)
           {var
             l=x[2],
             f_elt=
              function(ob,param)
               {var x=param[2],s=param[1];
                write_string$0(ob,s);
                caml_call2(Bi_outbuf[15],ob,58);
                return write_std_json$0(ob,x)};
            caml_call2(Bi_outbuf[15],ob,123);
            iter2$0(f_elt,f_sep$0,ob,l);
            return caml_call2(Bi_outbuf[15],ob,125)}
          var l$0=x[2];
          caml_call2(Bi_outbuf[15],ob,91);
          iter2$0(write_std_json$0,f_sep$0,ob,l$0);
          return caml_call2(Bi_outbuf[15],ob,93)}
        if(737456202 <= _js_){var b=x[2];return write_bool$0(ob,b)}
        var f=x[2];
        return write_std_float$0(ob,f)}
      if(3654863 <= _js_){var i=x[2];return write_int$0(ob,i)}
      var s=x[2];
      return write_string$0(ob,s)}
    function to_outbuf$0(opt,ob,x)
     {if(opt)var sth=opt[1],std=sth;else var std=0;
      return std
              ?is_object_or_array(x)
                ?write_std_json$0(ob,x)
                :json_error(cst_Root_is_not_an_object_or_a$1)
              :write_t$0(ob,x)}
    function to_string$1(buf,opt,std,x)
     {if(opt)var sth=opt[1],len=sth;else var len=256;
      if(buf)
       {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
      else
       var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
      to_outbuf$0(std,ob$0,x);
      var s=caml_call1(Bi_outbuf[4],ob$0);
      caml_call1(Bi_outbuf[19],ob$0);
      return s}
    function to_channel$1(buf,len,std,oc,x)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
      to_outbuf$0(std,ob$0,x);
      return caml_call1(Bi_outbuf[6],ob$0)}
    function to_output$0(buf,len,std,out,x)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[7],len,0,out);
      to_outbuf$0(std,ob$0,x);
      return caml_call1(Bi_outbuf[8],ob$0)}
    function to_file$0(len,std,file,x)
     {var oc=caml_call1(Stdlib[60],file);
      try
       {to_channel$1(0,len,std,oc,x);
        var _jr_=caml_call1(Stdlib[76],oc);
        return _jr_}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
    function stream_to_outbuf$0(std,ob,st)
     {function _jp_(_jq_){return to_outbuf$0(std,ob,_jq_)}
      return caml_call2(Stdlib_stream[8],_jp_,st)}
    function stream_to_string$0(buf,opt,std,st)
     {if(opt)var sth=opt[1],len=sth;else var len=256;
      if(buf)
       {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
      else
       var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
      stream_to_outbuf$0(std,ob$0,st);
      var s=caml_call1(Bi_outbuf[4],ob$0);
      caml_call1(Bi_outbuf[19],ob$0);
      return s}
    function stream_to_channel$0(buf,len,std,oc,st)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
      stream_to_outbuf$0(std,ob$0,st);
      return caml_call1(Bi_outbuf[6],ob$0)}
    function stream_to_file$0(len,std,file,st)
     {var oc=caml_call1(Stdlib[60],file);
      try
       {stream_to_channel$0(0,len,std,oc,st);
        var _jo_=caml_call1(Stdlib[76],oc);
        return _jo_}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
    function sort$0(x)
     {if(typeof x !== "number")
       {var _ji_=x[1];
        if(848054398 === _ji_)
         {var l=x[2],_jj_=caml_call2(Stdlib_list[19],sort$0,l);
          return [0,848054398,caml_call1(Stdlib_list[9],_jj_)]}
        if(963043957 === _ji_)
         {var
           l$0=x[2],
           _jk_=
            function(param){var v=param[2],k=param[1];return [0,k,sort$0(v)]},
           _jl_=caml_call2(Stdlib_list[19],_jk_,l$0),
           l$1=caml_call1(Stdlib_list[9],_jl_),
           _jm_=
            function(param,_jn_)
             {var b=_jn_[1],a=param[1];
              return caml_call2(Stdlib_string[33],a,b)};
          return [0,963043957,caml_call2(Stdlib_list[52],_jm_,l$1)]}}
      return x}
    function pp$0(fmt,param)
     {if(typeof param === "number")
       return caml_call2(Stdlib_format[13],fmt,cst_Null$0);
      var _jd_=param[1];
      if(365180284 <= _jd_)
       {if(848054398 <= _jd_)
         {if(963043957 <= _jd_)
           {var xs=param[2];
            caml_call2(Stdlib_format[123],fmt,_a1_);
            caml_call2(Stdlib_format[123],fmt,_a2_);
            var
             _je_=0,
             _jf_=
              function(sep,param)
               {var value=param[2],key=param[1];
                if(sep)caml_call2(Stdlib_format[123],fmt,_a3_);
                caml_call2(Stdlib_format[123],fmt,_a4_);
                caml_call3(Stdlib_format[123],fmt,_a5_,key);
                caml_call2(Stdlib_format[123],fmt,_a6_);
                pp$0(fmt,value);
                caml_call2(Stdlib_format[123],fmt,_a7_);
                return 1};
            caml_call3(Stdlib_list[22],_jf_,_je_,xs);
            caml_call2(Stdlib_format[123],fmt,_a8_);
            return caml_call2(Stdlib_format[123],fmt,_a9_)}
          var xs$0=param[2];
          caml_call2(Stdlib_format[123],fmt,_a__);
          caml_call2(Stdlib_format[123],fmt,_a$_);
          var
           _jg_=0,
           _jh_=
            function(sep,x)
             {if(sep)caml_call2(Stdlib_format[123],fmt,_ba_);
              pp$0(fmt,x);
              return 1};
          caml_call3(Stdlib_list[22],_jh_,_jg_,xs$0);
          caml_call2(Stdlib_format[123],fmt,_bb_);
          return caml_call2(Stdlib_format[123],fmt,_bc_)}
        if(737456202 <= _jd_)
         {var x=param[2];
          caml_call2(Stdlib_format[123],fmt,_bd_);
          caml_call3(Stdlib_format[123],fmt,_be_,x);
          return caml_call2(Stdlib_format[123],fmt,_bf_)}
        var x$0=param[2];
        caml_call2(Stdlib_format[123],fmt,_bg_);
        caml_call3(Stdlib_format[123],fmt,_bh_,x$0);
        return caml_call2(Stdlib_format[123],fmt,_bi_)}
      if(3654863 <= _jd_)
       {var x$1=param[2];
        caml_call2(Stdlib_format[123],fmt,_bj_);
        caml_call3(Stdlib_format[123],fmt,_bk_,x$1);
        return caml_call2(Stdlib_format[123],fmt,_bl_)}
      var x$2=param[2];
      caml_call2(Stdlib_format[123],fmt,_bm_);
      caml_call3(Stdlib_format[123],fmt,_bn_,x$2);
      return caml_call2(Stdlib_format[123],fmt,_bo_)}
    function show$0(x){return caml_call3(Stdlib_format[127],_bp_,pp$0,x)}
    function equal$0(a,match)
     {if(typeof a === "number")
       {if(870828711 === a && 870828711 === match)return 1}
      else
       {var _i9_=a[1];
        if(365180285 <= _i9_)
         {if(737456202 === _i9_)
           {if(typeof match !== "number" && 737456202 === match[1])
             {var b=match[2],a$0=a[2];return caml_equal(a$0,b)}}
          else
           if(848054398 === _i9_)
            {if(typeof match !== "number" && 848054398 === match[1])
              {var ys=match[2],xs=a[2];
               try
                {var result=caml_call3(Stdlib_list[31],equal$0,xs,ys);
                 return result}
               catch(_i$_)
                {_i$_ = caml_wrap_exception(_i$_);
                 if(_i$_[1] === Stdlib[6])return 0;
                 throw _i$_}}}
           else
            if
             (963043957
              ===
              _i9_
              &&
              typeof match
              !==
              "number"
              &&
              963043957
              ===
              match[1])
             {var
               ys$0=match[2],
               xs$0=a[2],
               compare_keys=
                function(param,_jc_)
                 {var key=_jc_[1],key$0=param[1];
                  return caml_call2(Stdlib_string[33],key$0,key)},
               xs$1=caml_call2(Stdlib_list[52],compare_keys,xs$0),
               ys$1=caml_call2(Stdlib_list[52],compare_keys,ys$0);
              try
               {var
                 _i__=
                  function(param,_jb_)
                   {var
                     value=_jb_[2],
                     key=_jb_[1],
                     value$0=param[2],
                     key$0=param[1],
                     match=caml_string_equal(key$0,key);
                    return match?equal$0(value$0,value):0},
                 result$0=caml_call3(Stdlib_list[31],_i__,xs$1,ys$1);
                return result$0}
              catch(_ja_)
               {_ja_ = caml_wrap_exception(_ja_);
                if(_ja_[1] === Stdlib[6])return 0;
                throw _ja_}}}
        else
         if(-976970511 === _i9_)
          {if(typeof match !== "number" && -976970511 === match[1])
            {var b$0=match[2],a$1=a[2];return caml_equal(a$1,b$0)}}
         else
          if(3654863 === _i9_)
           {if(typeof match !== "number" && 3654863 === match[1])
             {var b$1=match[2],a$2=a[2];return caml_equal(a$2,b$1)}}
          else
           if
            (365180284
             <=
             _i9_
             &&
             typeof match
             !==
             "number"
             &&
             365180284
             ===
             match[1])
            {var b$2=match[2],a$3=a[2];return caml_equal(a$3,b$2)}}
      return 0}
    function pretty_format$0(std,x){return format(std,x)}
    function pretty_print$0(std,out,x)
     {var _i8_=pretty_format$0(std,x);
      return caml_call2(Easy_format[4][2],out,_i8_)}
    function pretty_to_string$0(std,x){return to_string$0(std,x)}
    function pretty_to_channel$0(std,oc,x){return to_channel$0(std,oc,x)}
    var
     from_channel=Stdlib_lexing[2],
     from_string=Stdlib_lexing[3],
     lexeme=Stdlib_lexing[6],
     sub_lexeme=Stdlib_lexing[14],
     sub_lexeme_char=Stdlib_lexing[16];
    function hex$1(c)
     {if(65 <= c)
       {if(97 <= c)
         {if(! (103 <= c))return (c - 97 | 0) + 10 | 0}
        else
         if(! (71 <= c))return (c - 65 | 0) + 10 | 0}
      else
       {var switcher=c - 48 | 0;if(! (9 < switcher >>> 0))return c - 48 | 0}
      throw [0,Assert_failure,_bq_]}
    function custom_error(descr,v,lexbuf)
     {var
       offs=lexbuf[4] - 1 | 0,
       bol=v[3],
       pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0,
       pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0),
       _i7_=v[4];
      if(_i7_)
       var s=_i7_[1],file_line=caml_call2(Stdlib_printf[4],_br_,s);
      else
       var file_line=cst_Line;
      var
       bytes=
        pos1 === pos2
         ?caml_call2(Stdlib_printf[4],_bs_,pos1 + 1 | 0)
         :caml_call3(Stdlib_printf[4],_bu_,pos1 + 1 | 0,pos2 + 1 | 0),
       msg=caml_call5(Stdlib_printf[4],_bt_,file_line,v[2],bytes,descr);
      return json_error(msg)}
    function lexer_error(descr,v,lexbuf)
     {var _i6_=caml_call1(lexeme,lexbuf);
      return custom_error
              (caml_call3(Stdlib_printf[4],_bv_,descr,_i6_),v,lexbuf)}
    var read_junk=[0,function(param){throw [0,Assert_failure,_bw_]}];
    function long_error(descr,v,lexbuf)
     {var
       junk=caml_call1(lexeme,lexbuf),
       extra_junk=caml_call1(read_junk[1],lexbuf);
      return custom_error
              (caml_call4(Stdlib_printf[4],_bx_,descr,junk,extra_junk),
               v,
               lexbuf)}
    var
     _by_=0 === (Stdlib[20] % 10 | 0)?0:1,
     min10=(Stdlib[20] / 10 | 0) - _by_ | 0,
     _bz_=0 === (Stdlib[19] % 10 | 0)?0:1,
     max10=(Stdlib[19] / 10 | 0) + _bz_ | 0,
     Int_overflow=[248,cst_Yojson_Basic_Int_overflow,caml_fresh_oo_id(0)];
    function extract_positive_int(lexbuf)
     {var
       start=lexbuf[5],
       stop=lexbuf[6],
       s=lexbuf[2],
       n=[0,0],
       _i3_=stop - 1 | 0;
      if(! (_i3_ < start))
       {var i=start;
        for(;;)
         {if(max10 <= n[1])throw Int_overflow;
          var _i4_=caml_bytes_get(s,i) - 48 | 0;
          n[1] = (10 * n[1] | 0) + _i4_ | 0;
          var _i5_=i + 1 | 0;
          if(_i3_ !== i){var i=_i5_;continue}
          break}}
      if(0 <= n[1])return n[1];
      throw Int_overflow}
    function extract_negative_int(lexbuf)
     {var
       start=lexbuf[5] + 1 | 0,
       stop=lexbuf[6],
       s=lexbuf[2],
       n=[0,0],
       _i0_=stop - 1 | 0;
      if(! (_i0_ < start))
       {var i=start;
        for(;;)
         {if(n[1] <= min10)throw Int_overflow;
          var _i1_=caml_bytes_get(s,i) - 48 | 0;
          n[1] = (10 * n[1] | 0) - _i1_ | 0;
          var _i2_=i + 1 | 0;
          if(_i0_ !== i){var i=_i2_;continue}
          break}}
      if(0 < n[1])throw Int_overflow;
      return n[1]}
    function newline(v,lexbuf)
     {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0}
    function add_lexeme(buf,lexbuf)
     {var len=lexbuf[6] - lexbuf[5] | 0;
      return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)}
    function read_json$2(counter,v,lexbuf)
     {var _iZ_=0;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return ocaml_lex_read_json_rec(counter$0,v,lexbuf,_iZ_)}
      return caml_trampoline_return(ocaml_lex_read_json_rec,[0,v,lexbuf,_iZ_])}
    function ocaml_lex_read_json_rec(counter,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(19 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return _bA_;
          case 1:return _bB_;
          case 2:return 870828711;
          case 3:return [0,365180284,Stdlib[24]];
          case 4:return [0,365180284,Stdlib[22]];
          case 5:return [0,365180284,Stdlib[23]];
          case 6:
           caml_call1(Bi_outbuf[19],v[1]);
           return [0,-976970511,finish_string$1(v,lexbuf)];
          case 7:
           try
            {var _iP_=[0,3654863,extract_positive_int(lexbuf)];return _iP_}
           catch(_iY_)
            {_iY_ = caml_wrap_exception(_iY_);
             if(_iY_ === Int_overflow)
              return lexer_error(cst_Int_overflow,v,lexbuf);
             throw _iY_}
          case 8:
           try
            {var _iQ_=[0,3654863,extract_negative_int(lexbuf)];return _iQ_}
           catch(_iX_)
            {_iX_ = caml_wrap_exception(_iX_);
             if(_iX_ === Int_overflow)
              return lexer_error(cst_Int_overflow$0,v,lexbuf);
             throw _iX_}
          case 9:
           return [0,
                   365180284,
                   caml_float_of_string(caml_call1(lexeme,lexbuf))];
          case 10:
           var acc=[0,0];
           try
            {read_space(v,lexbuf);
             read_object_end(lexbuf);
             var field_name=read_ident(v,lexbuf);
             read_space(v,lexbuf);
             read_colon(v,lexbuf);
             read_space(v,lexbuf);
             var _iR_=acc[1];
             acc[1] = [0,[0,field_name,read_json(v,lexbuf)],_iR_];
             for(;;)
              {read_space(v,lexbuf);
               read_object_sep(v,lexbuf);
               read_space(v,lexbuf);
               var field_name$0=read_ident(v,lexbuf);
               read_space(v,lexbuf);
               read_colon(v,lexbuf);
               read_space(v,lexbuf);
               var _iS_=acc[1];
               acc[1] = [0,[0,field_name$0,read_json(v,lexbuf)],_iS_];
               continue}}
           catch(_iW_)
            {_iW_ = caml_wrap_exception(_iW_);
             if(_iW_ === End_of_object)
              return [0,963043957,caml_call1(Stdlib_list[9],acc[1])];
             throw _iW_}
          case 11:
           var acc$0=[0,0];
           try
            {read_space(v,lexbuf);
             read_array_end(lexbuf);
             var _iT_=acc$0[1];
             acc$0[1] = [0,read_json(v,lexbuf),_iT_];
             for(;;)
              {read_space(v,lexbuf);
               read_array_sep(v,lexbuf);
               read_space(v,lexbuf);
               var _iU_=acc$0[1];
               acc$0[1] = [0,read_json(v,lexbuf),_iU_];
               continue}}
           catch(_iV_)
            {_iV_ = caml_wrap_exception(_iV_);
             if(_iV_ === End_of_array)
              return [0,848054398,caml_call1(Stdlib_list[9],acc$0[1])];
             throw _iV_}
          case 12:return long_error(cst_Invalid_token,v,lexbuf);
          case 13:return long_error(cst_Invalid_token$0,v,lexbuf);
          case 14:
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return read_json$2(counter$0,v,lexbuf)}
           return caml_trampoline_return(read_json$2,[0,v,lexbuf]);
          case 15:
           finish_comment(v,lexbuf);
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return read_json$2(counter$1,v,lexbuf)}
           return caml_trampoline_return(read_json$2,[0,v,lexbuf]);
          case 16:
           newline(v,lexbuf);
           if(counter < 50)
            {var counter$2=counter + 1 | 0;
             return read_json$2(counter$2,v,lexbuf)}
           return caml_trampoline_return(read_json$2,[0,v,lexbuf]);
          case 17:
           if(counter < 50)
            {var counter$3=counter + 1 | 0;
             return read_json$2(counter$3,v,lexbuf)}
           return caml_trampoline_return(read_json$2,[0,v,lexbuf]);
          case 18:return custom_error(cst_Unexpected_end_of_input,v,lexbuf);
          default:return long_error(cst_Invalid_token$1,v,lexbuf)}}}
    function read_json(v,lexbuf)
     {return caml_trampoline(read_json$2(0,v,lexbuf))}
    function finish_string$1(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=58;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:return caml_call1(Bi_outbuf[4],v[1]);
            case 1:finish_escaped_char(v,lexbuf);continue a;
            case 2:add_lexeme(v[1],lexbuf);continue a;
            default:
             return custom_error(cst_Unexpected_end_of_input$0,v,lexbuf)}}}}
    function map_string(v,f,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=63;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:
             var b=v[1],_iO_=b[3];
             return caml_call3(f,caml_call1(Stdlib_bytes[6],b[1]),0,_iO_);
            case 1:finish_escaped_char(v,lexbuf);continue a;
            case 2:add_lexeme(v[1],lexbuf);continue a;
            default:
             return custom_error(cst_Unexpected_end_of_input$1,v,lexbuf)}}}}
    function finish_escaped_char(v,lexbuf)
     {var ocaml_lex_state=68;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(8 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           var c=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5]);
           return caml_call2(Bi_outbuf[15],v[1],c);
          case 1:return caml_call2(Bi_outbuf[15],v[1],8);
          case 2:return caml_call2(Bi_outbuf[15],v[1],12);
          case 3:return caml_call2(Bi_outbuf[15],v[1],10);
          case 4:return caml_call2(Bi_outbuf[15],v[1],13);
          case 5:return caml_call2(Bi_outbuf[15],v[1],9);
          case 6:
           var
            a=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 1 | 0),
            b=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0),
            c$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0),
            d=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0),
            _iI_=hex$1(d),
            _iJ_=hex$1(c$0) << 4,
            _iK_=hex$1(b) << 8,
            x=hex$1(a) << 12 | _iK_ | _iJ_ | _iI_;
           if(55296 <= x && ! (56319 < x))
            {var ocaml_lex_state$1=82;
             for(;;)
              {var
                ocaml_lex_state$2=
                 caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$1,lexbuf);
               if(2 < ocaml_lex_state$2 >>> 0)
                {caml_call1(lexbuf[1],lexbuf);
                 var ocaml_lex_state$1=ocaml_lex_state$2;
                 continue}
               switch(ocaml_lex_state$2)
                {case 0:
                  var
                   a$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 2 | 0),
                   b$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 3 | 0),
                   c$1=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 4 | 0),
                   d$0=caml_call2(sub_lexeme_char,lexbuf,lexbuf[5] + 5 | 0),
                   _iL_=hex$1(d$0),
                   _iM_=hex$1(c$1) << 4,
                   _iN_=hex$1(b$0) << 8,
                   y=hex$1(a$0) << 12 | _iN_ | _iM_ | _iL_;
                  if(56320 <= y && ! (57343 < y))
                   return utf8_of_surrogate_pair(v[1],x,y);
                  return long_error(cst_Invalid_low_surrogate_for_,v,lexbuf);
                 case 1:
                  return long_error(cst_Missing_escape_sequence_re,v,lexbuf);
                 default:
                  return custom_error(cst_Unexpected_end_of_input$3,v,lexbuf)}}}
           return utf8_of_code(v[1],x);
          case 7:return long_error(cst_Invalid_escape_sequence,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$2,v,lexbuf)}}}
    function finish_stringlit(v,lexbuf)
     {var ocaml_lex_state=91;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0);
           caml_bytes_set(s,0,34);
           caml_call5(Stdlib_bytes[11],lexbuf[2],lexbuf[5],s,1,len);
           return caml_call1(Stdlib_bytes[6],s);
          case 1:return long_error(cst_Invalid_string_literal,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$4,v,lexbuf)}}}
    function finish_variant(v,lexbuf)
     {var ocaml_lex_state=102;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           var x=read_json(v,lexbuf);
           read_space(v,lexbuf);
           read_gt(v,lexbuf);
           return [0,x];
          case 1:return 0;
          case 2:return long_error(cst_Expected_or_but_found,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$5,v,lexbuf)}}}
    function read_lt(v,lexbuf)
     {var ocaml_lex_state=107;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_but_found,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$6,v,lexbuf)}}}
    function read_gt(v,lexbuf)
     {var ocaml_lex_state=111;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_but_found$0,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$7,v,lexbuf)}}}
    function read_comma(v,lexbuf)
     {var ocaml_lex_state=115;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_but_found$1,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$8,v,lexbuf)}}}
    function start_any_variant(v,lexbuf)
     {var ocaml_lex_state=119;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(4 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return -154522342;
          case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938;
          case 2:return -124528282;
          case 3:return long_error(cst_Expected_or_but_found$0,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$9,v,lexbuf)}}}
    function finish_comment(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=125;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:return 0;
            case 1:return long_error(cst_Unterminated_comment,v,lexbuf);
            case 2:newline(v,lexbuf);continue a;
            default:continue a}}}}
    function read_eof(lexbuf)
     {var ocaml_lex_state=131;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)return 1;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_space(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=133;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
          if(4 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:newline(v,lexbuf);continue a;
            case 1:finish_comment(v,lexbuf);continue a;
            case 2:newline(v,lexbuf);continue a;
            case 3:continue a;
            default:return 0}}}}
    function read_null(v,lexbuf)
     {var ocaml_lex_state=140;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_null_but_found,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$10,v,lexbuf)}}}
    function read_null_if_possible(v,lexbuf)
     {var ocaml_lex_state=147;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)return 1;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_bool(v,lexbuf)
     {var ocaml_lex_state=152;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(5 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 1;
          case 1:return 0;
          case 2:return 1;
          case 3:return 0;
          case 4:return long_error(cst_Expected_true_or_false_but,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$11,v,lexbuf)}}}
    function ocaml_lex_read_int_rec(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(4 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           try
            {var _iC_=extract_positive_int(lexbuf);return _iC_}
           catch(_iH_)
            {_iH_ = caml_wrap_exception(_iH_);
             if(_iH_ === Int_overflow)
              return lexer_error(cst_Int_overflow$1,v,lexbuf);
             throw _iH_}
          case 1:
           try
            {var _iD_=extract_negative_int(lexbuf);return _iD_}
           catch(_iG_)
            {_iG_ = caml_wrap_exception(_iG_);
             if(_iG_ === Int_overflow)
              return lexer_error(cst_Int_overflow$2,v,lexbuf);
             throw _iG_}
          case 2:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$1(v,lexbuf);
           try
            {var _iE_=caml_int_of_string(s);return _iE_}
           catch(_iF_)
            {return custom_error(cst_Expected_an_integer_but_fo,v,lexbuf)}
          case 3:return long_error(cst_Expected_integer_but_found,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$12,v,lexbuf)}}}
    function read_int(v,lexbuf){return ocaml_lex_read_int_rec(v,lexbuf,176)}
    function ocaml_lex_read_int32_rec(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(3 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           try
            {var _iy_=caml_int_of_string(caml_call1(lexeme,lexbuf));
             return _iy_}
           catch(_iB_){return lexer_error(cst_Int32_overflow,v,lexbuf)}
          case 1:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$1(v,lexbuf);
           try
            {var _iz_=caml_int_of_string(s);return _iz_}
           catch(_iA_)
            {return custom_error(cst_Expected_an_int32_but_foun,v,lexbuf)}
          case 2:return long_error(cst_Expected_int32_but_found,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$13,v,lexbuf)}}}
    function read_int32(v,lexbuf)
     {return ocaml_lex_read_int32_rec(v,lexbuf,185)}
    function ocaml_lex_read_int64_rec(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(3 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           try
            {var _iu_=caml_int64_of_string(caml_call1(lexeme,lexbuf));
             return _iu_}
           catch(_ix_){return lexer_error(cst_Int32_overflow$0,v,lexbuf)}
          case 1:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$1(v,lexbuf);
           try
            {var _iv_=caml_int64_of_string(s);return _iv_}
           catch(_iw_)
            {return custom_error(cst_Expected_an_int64_but_foun,v,lexbuf)}
          case 2:return long_error(cst_Expected_int64_but_found,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$14,v,lexbuf)}}}
    function read_int64(v,lexbuf)
     {return ocaml_lex_read_int64_rec(v,lexbuf,192)}
    function ocaml_lex_read_number_rec(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(6 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return Stdlib[24];
          case 1:return Stdlib[22];
          case 2:return Stdlib[23];
          case 3:return caml_float_of_string(caml_call1(lexeme,lexbuf));
          case 4:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$1(v,lexbuf);
           try
            {var _is_=caml_float_of_string(s);return _is_}
           catch(_it_)
            {return caml_string_notequal(s,cst_Infinity$11)
                     ?caml_string_notequal(s,cst_Infinity$12)
                       ?caml_string_notequal(s,cst_NaN$5)
                         ?custom_error(cst_Expected_a_number_but_foun,v,lexbuf)
                         :Stdlib[24]
                       :Stdlib[22]
                     :Stdlib[23]}
          case 5:return long_error(cst_Expected_number_but_found,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$15,v,lexbuf)}}}
    function read_number(v,lexbuf)
     {return ocaml_lex_read_number_rec(v,lexbuf,199)}
    function read_string(v,lexbuf)
     {var ocaml_lex_state=233;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf);
          case 1:return long_error(cst_Expected_but_found$2,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$16,v,lexbuf)}}}
    function read_ident(v,lexbuf)
     {var ocaml_lex_state=237;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call1(Bi_outbuf[19],v[1]);return finish_string$1(v,lexbuf);
          case 1:
           var s=caml_call3(sub_lexeme,lexbuf,lexbuf[5],lexbuf[6]);return s;
          case 2:return long_error(cst_Expected_string_or_identif,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$17,v,lexbuf)}}}
    function map_ident(v,f,lexbuf)
     {var ocaml_lex_state=242;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:caml_call1(Bi_outbuf[19],v[1]);return map_string(v,f,lexbuf);
          case 1:
           var len=lexbuf[6] - lexbuf[5] | 0,_ir_=lexbuf[5];
           return caml_call3(f,caml_call1(Stdlib_bytes[6],lexbuf[2]),_ir_,len);
          case 2:return long_error(cst_Expected_string_or_identif$0,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$18,v,lexbuf)}}}
    function ocaml_lex_read_sequence_rec
     (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var acc=[0,init_acc];
           try
            {read_space(v,lexbuf);
             read_array_end(lexbuf);
             acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
             for(;;)
              {read_space(v,lexbuf);
               read_array_sep(v,lexbuf);
               read_space(v,lexbuf);
               acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
               continue}}
           catch(_iq_)
            {_iq_ = caml_wrap_exception(_iq_);
             if(_iq_ === End_of_array)return acc[1];
             throw _iq_}
          case 1:return long_error(cst_Expected_but_found$3,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$19,v,lexbuf)}}}
    function read_sequence(read_cell,init_acc,v,lexbuf)
     {return ocaml_lex_read_sequence_rec(read_cell,init_acc,v,lexbuf,247)}
    function ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var acc=[0,0];
           try
            {read_space(v,lexbuf);
             read_array_end(lexbuf);
             var _in_=acc[1];
             acc[1] = [0,caml_call2(read_cell,v,lexbuf),_in_];
             for(;;)
              {read_space(v,lexbuf);
               read_array_sep(v,lexbuf);
               read_space(v,lexbuf);
               var _io_=acc[1];
               acc[1] = [0,caml_call2(read_cell,v,lexbuf),_io_];
               continue}}
           catch(_ip_)
            {_ip_ = caml_wrap_exception(_ip_);
             if(_ip_ === End_of_array)return acc[1];
             throw _ip_}
          case 1:return long_error(cst_Expected_but_found$4,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$20,v,lexbuf)}}}
    function read_list_rev(read_cell,v,lexbuf)
     {return ocaml_lex_read_list_rev_rec(read_cell,v,lexbuf,251)}
    function read_array_end(lexbuf)
     {var ocaml_lex_state=255;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)throw End_of_array;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_array_sep(v,lexbuf)
     {var ocaml_lex_state=257;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:throw End_of_array;
          case 2:return long_error(cst_Expected_or_but_found$1,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$21,v,lexbuf)}}}
    function read_tuple(read_cell,init_acc,v,lexbuf)
     {var ocaml_lex_state=262;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return long_error(cst_Invalid_token$2,v,lexbuf);
          case 1:return long_error(cst_Expected_but_found$5,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$22,v,lexbuf)}}}
    function read_tuple_end(lexbuf)
     {var ocaml_lex_state=266;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)throw End_of_tuple;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_tuple_end2(v,std,lexbuf)
     {var ocaml_lex_state=268;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           if(std)return long_error(cst_Expected_or_but_found$2,v,lexbuf);
           throw End_of_tuple;
          case 1:
           if(std)throw End_of_tuple;
           return long_error(cst_Expected_or_but_found$3,v,lexbuf);
          default:return 0}}}
    function read_tuple_sep(v,lexbuf)
     {var ocaml_lex_state=271;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:throw End_of_tuple;
          case 2:return long_error(cst_Expected_or_but_found$4,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$23,v,lexbuf)}}}
    function read_tuple_sep2(v,std,lexbuf)
     {var ocaml_lex_state=276;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(4 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:
           if(std)return long_error(cst_Expected_or_but_found$5,v,lexbuf);
           throw End_of_tuple;
          case 2:
           if(std)throw End_of_tuple;
           return long_error(cst_Expected_or_but_found$6,v,lexbuf);
          case 3:return long_error(cst_Expected_or_but_found$7,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$24,v,lexbuf)}}}
    function ocaml_lex_read_abstract_fields
     (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var acc=[0,init_acc];
           try
            {read_space(v,lexbuf);
             read_object_end(lexbuf);
             var field_name=caml_call2(read_key,v,lexbuf);
             read_space(v,lexbuf);
             read_colon(v,lexbuf);
             read_space(v,lexbuf);
             acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf);
             for(;;)
              {read_space(v,lexbuf);
               read_object_sep(v,lexbuf);
               read_space(v,lexbuf);
               var field_name$0=caml_call2(read_key,v,lexbuf);
               read_space(v,lexbuf);
               read_colon(v,lexbuf);
               read_space(v,lexbuf);
               acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf);
               continue}}
           catch(_im_)
            {_im_ = caml_wrap_exception(_im_);
             if(_im_ === End_of_object)return acc[1];
             throw _im_}
          case 1:return long_error(cst_Expected_but_found$6,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$25,v,lexbuf)}}}
    function read_abstract_fields(read_key,read_field,init_acc,v,lexbuf)
     {return ocaml_lex_read_abstract_fields
              (read_key,read_field,init_acc,v,lexbuf,282)}
    function read_lcurl(v,lexbuf)
     {var ocaml_lex_state=286;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_but_found$7,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$26,v,lexbuf)}}}
    function read_object_end(lexbuf)
     {var ocaml_lex_state=290;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)throw End_of_object;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_object_sep(v,lexbuf)
     {var ocaml_lex_state=292;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:throw End_of_object;
          case 2:return long_error(cst_Expected_or_but_found$8,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$27,v,lexbuf)}}}
    function read_colon(v,lexbuf)
     {var ocaml_lex_state=297;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_but_found$8,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$28,v,lexbuf)}}}
    function start_any_tuple(v,lexbuf)
     {var ocaml_lex_state=301;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return 1;
          case 2:return long_error(cst_Expected_or_but_found$9,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$29,v,lexbuf)}}}
    function read_lpar(v,lexbuf)
     {var ocaml_lex_state=306;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_but_found$9,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$30,v,lexbuf)}}}
    function read_rpar(v,lexbuf)
     {var ocaml_lex_state=310;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_but_found$10,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$31,v,lexbuf)}}}
    function read_lbr(v,lexbuf)
     {var ocaml_lex_state=314;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_but_found$11,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$32,v,lexbuf)}}}
    function read_rbr(v,lexbuf)
     {var ocaml_lex_state=318;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Expected_but_found$12,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$33,v,lexbuf)}}}
    function finish_skip_stringlit(v,lexbuf)
     {var ocaml_lex_state=378;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error(cst_Invalid_string_literal$0,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$35,v,lexbuf)}}}
    function skip_json$2(counter,v,lexbuf)
     {var _il_=322;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return ocaml_lex_skip_json_rec(counter$0,v,lexbuf,_il_)}
      return caml_trampoline_return(ocaml_lex_skip_json_rec,[0,v,lexbuf,_il_])}
    function ocaml_lex_skip_json_rec(counter,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(18 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return 0;
          case 1:return 0;
          case 2:return 0;
          case 3:return 0;
          case 4:return 0;
          case 5:return 0;
          case 6:return finish_skip_stringlit(v,lexbuf);
          case 7:return 0;
          case 8:return 0;
          case 9:
           try
            {read_space(v,lexbuf);
             read_object_end(lexbuf);
             skip_ident(v,lexbuf);
             read_space(v,lexbuf);
             read_colon(v,lexbuf);
             read_space(v,lexbuf);
             skip_json(v,lexbuf);
             for(;;)
              {read_space(v,lexbuf);
               read_object_sep(v,lexbuf);
               read_space(v,lexbuf);
               skip_ident(v,lexbuf);
               read_space(v,lexbuf);
               read_colon(v,lexbuf);
               read_space(v,lexbuf);
               skip_json(v,lexbuf);
               continue}}
           catch(_ik_)
            {_ik_ = caml_wrap_exception(_ik_);
             if(_ik_ === End_of_object)return 0;
             throw _ik_}
          case 10:
           try
            {read_space(v,lexbuf);
             read_array_end(lexbuf);
             skip_json(v,lexbuf);
             for(;;)
              {read_space(v,lexbuf);
               read_array_sep(v,lexbuf);
               read_space(v,lexbuf);
               skip_json(v,lexbuf);
               continue}}
           catch(_ij_)
            {_ij_ = caml_wrap_exception(_ij_);
             if(_ij_ === End_of_array)return 0;
             throw _ij_}
          case 11:return long_error(cst_Invalid_token$3,v,lexbuf);
          case 12:return long_error(cst_Invalid_token$4,v,lexbuf);
          case 13:
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return skip_json$2(counter$0,v,lexbuf)}
           return caml_trampoline_return(skip_json$2,[0,v,lexbuf]);
          case 14:
           finish_comment(v,lexbuf);
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return skip_json$2(counter$1,v,lexbuf)}
           return caml_trampoline_return(skip_json$2,[0,v,lexbuf]);
          case 15:
           newline(v,lexbuf);
           if(counter < 50)
            {var counter$2=counter + 1 | 0;
             return skip_json$2(counter$2,v,lexbuf)}
           return caml_trampoline_return(skip_json$2,[0,v,lexbuf]);
          case 16:
           if(counter < 50)
            {var counter$3=counter + 1 | 0;
             return skip_json$2(counter$3,v,lexbuf)}
           return caml_trampoline_return(skip_json$2,[0,v,lexbuf]);
          case 17:
           return custom_error(cst_Unexpected_end_of_input$34,v,lexbuf);
          default:return long_error(cst_Invalid_token$5,v,lexbuf)}}}
    function skip_json(v,lexbuf)
     {return caml_trampoline(skip_json$2(0,v,lexbuf))}
    function finish_skip_variant(v,lexbuf)
     {var ocaml_lex_state=389;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           skip_json(v,lexbuf);read_space(v,lexbuf);return read_gt(v,lexbuf);
          case 1:return 0;
          case 2:return long_error(cst_Expected_or_but_found$10,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$36,v,lexbuf)}}}
    function skip_ident(v,lexbuf)
     {var ocaml_lex_state=394;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return finish_skip_stringlit(v,lexbuf);
          case 1:return 0;
          case 2:return long_error(cst_Expected_string_or_identif$1,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$37,v,lexbuf)}}}
    function finish_buffer_stringlit(v,lexbuf)
     {var ocaml_lex_state=450;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme(v[1],lexbuf);
          case 1:return long_error(cst_Invalid_string_literal$1,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$39,v,lexbuf)}}}
    function buffer_json$2(counter,v,lexbuf)
     {var _ii_=399;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return ocaml_lex_buffer_json_rec(counter$0,v,lexbuf,_ii_)}
      return caml_trampoline_return
              (ocaml_lex_buffer_json_rec,[0,v,lexbuf,_ii_])}
    function ocaml_lex_buffer_json_rec(counter,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state$0,lexbuf);
        if(11 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return add_lexeme(v[1],lexbuf);
          case 1:return finish_buffer_stringlit(v,lexbuf);
          case 2:
           try
            {caml_call2(Bi_outbuf[15],v[1],123);
             buffer_space(v,lexbuf);
             buffer_object_end(v,lexbuf);
             buffer_ident(v,lexbuf);
             buffer_space(v,lexbuf);
             buffer_colon(v,lexbuf);
             buffer_space(v,lexbuf);
             buffer_json(v,lexbuf);
             for(;;)
              {buffer_space(v,lexbuf);
               buffer_object_sep(v,lexbuf);
               buffer_space(v,lexbuf);
               buffer_ident(v,lexbuf);
               buffer_space(v,lexbuf);
               buffer_colon(v,lexbuf);
               buffer_space(v,lexbuf);
               buffer_json(v,lexbuf);
               continue}}
           catch(_ih_)
            {_ih_ = caml_wrap_exception(_ih_);
             if(_ih_ === End_of_object)return 0;
             throw _ih_}
          case 3:
           try
            {caml_call2(Bi_outbuf[15],v[1],91);
             buffer_space(v,lexbuf);
             buffer_array_end(v,lexbuf);
             buffer_json(v,lexbuf);
             for(;;)
              {buffer_space(v,lexbuf);
               buffer_array_sep(v,lexbuf);
               buffer_space(v,lexbuf);
               buffer_json(v,lexbuf);
               continue}}
           catch(_ig_)
            {_ig_ = caml_wrap_exception(_ig_);
             if(_ig_ === End_of_array)return 0;
             throw _ig_}
          case 4:return long_error(cst_Invalid_token$6,v,lexbuf);
          case 5:return long_error(cst_Invalid_token$7,v,lexbuf);
          case 6:
           add_lexeme(v[1],lexbuf);
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return buffer_json$2(counter$0,v,lexbuf)}
           return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]);
          case 7:
           caml_call2(Bi_outbuf[13],v[1],cst$22);
           finish_buffer_comment(v,lexbuf);
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return buffer_json$2(counter$1,v,lexbuf)}
           return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]);
          case 8:
           caml_call2(Bi_outbuf[15],v[1],10);
           newline(v,lexbuf);
           if(counter < 50)
            {var counter$2=counter + 1 | 0;
             return buffer_json$2(counter$2,v,lexbuf)}
           return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]);
          case 9:
           add_lexeme(v[1],lexbuf);
           if(counter < 50)
            {var counter$3=counter + 1 | 0;
             return buffer_json$2(counter$3,v,lexbuf)}
           return caml_trampoline_return(buffer_json$2,[0,v,lexbuf]);
          case 10:
           return custom_error(cst_Unexpected_end_of_input$38,v,lexbuf);
          default:return long_error(cst_Invalid_token$8,v,lexbuf)}}}
    function buffer_json(v,lexbuf)
     {return caml_trampoline(buffer_json$2(0,v,lexbuf))}
    function buffer_ident(v,lexbuf)
     {var ocaml_lex_state=466;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return finish_buffer_stringlit(v,lexbuf);
          case 1:return add_lexeme(v[1],lexbuf);
          case 2:return long_error(cst_Expected_string_or_identif$2,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$40,v,lexbuf)}}}
    function buffer_space(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=471;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
          if(4 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:add_lexeme(v[1],lexbuf);newline(v,lexbuf);continue a;
            case 1:
             caml_call2(Bi_outbuf[13],v[1],cst$23);
             finish_buffer_comment(v,lexbuf);
             continue a;
            case 2:
             caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a;
            case 3:add_lexeme(v[1],lexbuf);continue a;
            default:return 0}}}}
    function buffer_object_end(v,lexbuf)
     {var ocaml_lex_state=478;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)
         {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object}
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function buffer_object_sep(v,lexbuf)
     {var ocaml_lex_state=480;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
          case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object;
          case 2:return long_error(cst_Expected_or_but_found$11,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$41,v,lexbuf)}}}
    function buffer_array_end(v,lexbuf)
     {var ocaml_lex_state=485;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)
         {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array}
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function buffer_array_sep(v,lexbuf)
     {var ocaml_lex_state=487;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
          case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array;
          case 2:return long_error(cst_Expected_or_but_found$12,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$42,v,lexbuf)}}}
    function buffer_colon(v,lexbuf)
     {var ocaml_lex_state=499;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],58);
          case 1:return long_error(cst_Expected_but_found$13,v,lexbuf);
          default:return custom_error(cst_Unexpected_end_of_input$43,v,lexbuf)}}}
    function finish_buffer_comment(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=507;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$24);
            case 1:return long_error(cst_Unterminated_comment$0,v,lexbuf);
            case 2:
             caml_call2(Bi_outbuf[15],v[1],10);newline(v,lexbuf);continue a;
            default:add_lexeme(v[1],lexbuf);continue a}}}}
    function junk(lexbuf)
     {var ocaml_lex_state=513;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)return caml_call1(lexeme,lexbuf);
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    read_junk[1] = junk;
    function read_int8(v,lexbuf)
     {var n=read_int(v,lexbuf);
      if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n);
      return lexer_error(cst_Int8_overflow,v,lexbuf)}
    function read_list(read_cell,v,lexbuf)
     {var _if_=read_list_rev(read_cell,v,lexbuf);
      return caml_call1(Stdlib_list[9],_if_)}
    function read_array(read_cell,v,lexbuf)
     {var l=read_list_rev(read_cell,v,lexbuf);
      if(l)
       {var
         tl=l[2],
         x=l[1],
         len=caml_call1(Stdlib_list[1],l),
         a=caml_make_vect(len,x),
         r=[0,tl],
         _ic_=len - 2 | 0;
        if(! (_ic_ < 0))
         {var i=_ic_;
          for(;;)
           {var _id_=caml_call1(Stdlib_list[5],r[1]);
            caml_check_bound(a,i)[1 + i] = _id_;
            r[1] = caml_call1(Stdlib_list[6],r[1]);
            var _ie_=i - 1 | 0;
            if(0 !== i){var i=_ie_;continue}
            break}}
        return a}
      return [0]}
    function read_fields(read_field,init_acc,v)
     {return function(_ib_)
       {return read_abstract_fields(read_ident,read_field,init_acc,v,_ib_)}}
    function from_lexbuf(v,opt,lexbuf)
     {if(opt)var sth=opt[1],stream=sth;else var stream=0;
      read_space(v,lexbuf);
      if(read_eof(lexbuf))throw End_of_input;
      var x=read_json(v,lexbuf);
      if(1 - stream)
       {read_space(v,lexbuf);
        if(1 - read_eof(lexbuf))
         long_error(cst_Junk_after_end_of_JSON_val,v,lexbuf)}
      return x}
    function from_string$0(buf,fname,lnum,s)
     {try
       {var
         lexbuf=caml_call2(from_string,0,s),
         v=init_lexer(buf,fname,lnum,0),
         _h$_=from_lexbuf(v,0,lexbuf);
        return _h$_}
      catch(_ia_)
       {_ia_ = caml_wrap_exception(_ia_);
        if(_ia_ === End_of_input)return json_error(cst_Blank_input_data);
        throw _ia_}}
    function from_channel$0(buf,fname,lnum,ic)
     {try
       {var
         lexbuf=caml_call2(from_channel,0,ic),
         v=init_lexer(buf,fname,lnum,0),
         _h9_=from_lexbuf(v,0,lexbuf);
        return _h9_}
      catch(_h__)
       {_h__ = caml_wrap_exception(_h__);
        if(_h__ === End_of_input)return json_error(cst_Blank_input_data$0);
        throw _h__}}
    function from_file(buf,fname,lnum,file)
     {var ic=caml_call1(Stdlib[79],file);
      try
       {var x=from_channel$0(buf,fname,lnum,ic);
        caml_call1(Stdlib[93],ic);
        return x}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}}
    var Finally=[248,cst_Yojson_Basic_Finally,caml_fresh_oo_id(0)];
    function stream_from_lexbuf(v,opt,lexbuf)
     {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
      function f(i)
       {try
         {var _h8_=[0,from_lexbuf(v,stream,lexbuf)];return _h8_}
        catch(e)
         {e = caml_wrap_exception(e);
          if(e === End_of_input){caml_call1(fin,0);return 0}
          try
           {caml_call1(fin,0)}
          catch(fin_e)
           {fin_e = caml_wrap_exception(fin_e);throw [0,Finally,e,fin_e]}
          throw e}}
      return caml_call1(Stdlib_stream[3],f)}
    function stream_from_string(buf,fname,lnum,s)
     {var v=init_lexer(buf,fname,lnum,0);
      return stream_from_lexbuf(v,0,caml_call2(from_string,0,s))}
    function stream_from_channel(buf,fin,fname,lnum,ic)
     {var lexbuf=caml_call2(from_channel,0,ic),v=init_lexer(buf,fname,lnum,0);
      return stream_from_lexbuf(v,fin,lexbuf)}
    function stream_from_file(buf,fname,lnum,file)
     {var ic=caml_call1(Stdlib[79],file);
      function fin(param){return caml_call1(Stdlib[93],ic)}
      var
       fname$0=fname || [0,file],
       lexbuf=caml_call2(from_channel,0,ic),
       v=init_lexer(buf,fname$0,lnum,0);
      return stream_from_lexbuf(v,[0,fin],lexbuf)}
    function linestream_from_channel(buf,opt,fname,_h6_,ic)
     {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
      if(_h6_)var sth$0=_h6_[1],lnum0=sth$0;else var lnum0=1;
      var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)];
      function f(i)
       {try
         {var
           line=caml_call1(Stdlib[83],ic),
           lnum=lnum0 + i | 0,
           _h7_=[0,[0,826371656,from_string$0(buf$0,fname,[0,lnum],line)]];
          return _h7_}
        catch(e)
         {e = caml_wrap_exception(e);
          return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}}
      return caml_call1(Stdlib_stream[3],f)}
    function linestream_from_file(buf,fname,lnum,file)
     {var ic=caml_call1(Stdlib[79],file);
      function fin(param){return caml_call1(Stdlib[93],ic)}
      var fname$0=fname || [0,file];
      return linestream_from_channel(buf,[0,fin],fname$0,lnum,ic)}
    function prettify(std,s)
     {return pretty_to_string$0(std,from_string$0(0,0,0,s))}
    function compact(std,s){return to_string$1(0,0,0,from_string$0(0,0,0,s))}
    function validate_json(path,value){return 0}
    var Type_error=[248,cst_Yojson_Basic_Util_Type_err,caml_fresh_oo_id(0)];
    function typerr(msg,js)
     {if(typeof js === "number")
       var _h5_=cst_null$2;
      else
       var
        _h4_=js[1],
        _h5_=
         708012133 <= _h4_
          ?726928360 === _h4_
            ?cst_tuple
            :848054398 <= _h4_
              ?963043957 <= _h4_?cst_object:cst_array
              :737456202 <= _h4_?cst_bool:cst_variant
          :3654863 <= _h4_
            ?365180284 <= _h4_?cst_float:cst_int
            :-752863768 <= _h4_?cst_intlit:cst_string;
      throw [0,Type_error,caml_call2(Stdlib[28],msg,_h5_),js]}
    var Undefined=[248,cst_Yojson_Basic_Util_Undefine,caml_fresh_oo_id(0)];
    function symbol(_h3_,_h2_){return caml_call1(_h2_,_h3_)}
    function assoc(name,obj)
     {try
       {var _h0_=caml_call2(Stdlib_list[41],name,obj);return _h0_}
      catch(_h1_)
       {_h1_ = caml_wrap_exception(_h1_);
        if(_h1_ === Stdlib[8])return 870828711;
        throw _h1_}}
    function member(name,js)
     {if(typeof js !== "number" && 963043957 === js[1])
       {var obj=js[2];return assoc(name,obj)}
      var _hZ_=caml_call2(Stdlib[28],name,cst_of_non_object_type);
      return typerr(caml_call2(Stdlib[28],cst_Can_t_get_member,_hZ_),js)}
    function index(i,js)
     {if(typeof js !== "number" && 848054398 === js[1])
       {var
         l=js[2],
         len=caml_call1(Stdlib_list[1],l),
         wrapped_index=0 <= i?i:len + i | 0;
        if(0 <= wrapped_index && ! (len <= wrapped_index))
         return caml_call2(Stdlib_list[7],l,wrapped_index);
        var
         _hX_=caml_call1(Stdlib[33],i),
         _hY_=caml_call2(Stdlib[28],_hX_,cst_out_of_bounds);
        throw [0,Undefined,caml_call2(Stdlib[28],cst_Index,_hY_),js]}
      var
       _hV_=caml_call1(Stdlib[33],i),
       _hW_=caml_call2(Stdlib[28],_hV_,cst_of_non_array_type);
      return typerr(caml_call2(Stdlib[28],cst_Can_t_get_index,_hW_),js)}
    function map(f,js)
     {if(typeof js !== "number" && 848054398 === js[1])
       {var l=js[2];return [0,848054398,caml_call2(Stdlib_list[17],f,l)]}
      return typerr(cst_Can_t_map_function_over_no,js)}
    function to_assoc(js)
     {if(typeof js !== "number" && 963043957 === js[1])
       {var obj=js[2];return obj}
      return typerr(cst_Expected_object_got,js)}
    function to_option(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]}
    function to_bool(js)
     {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b}
      return typerr(cst_Expected_bool_got,js)}
    function to_bool_option(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       if(737456202 === js[1]){var b=js[2];return [0,b]}
      return typerr(cst_Expected_bool_or_null_got,js)}
    function to_number(js)
     {if(typeof js !== "number")
       {var _hU_=js[1];
        if(3654863 === _hU_){var i=js[2];return i}
        if(365180284 === _hU_){var f=js[2];return f}}
      return typerr(cst_Expected_number_got,js)}
    function to_number_option(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       {var _hT_=js[1];
        if(3654863 === _hT_){var i=js[2];return [0,i]}
        if(365180284 === _hT_){var f=js[2];return [0,f]}}
      return typerr(cst_Expected_number_or_null_go,js)}
    function to_float(js)
     {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f}
      return typerr(cst_Expected_float_got,js)}
    function to_float_option(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       if(365180284 === js[1]){var f=js[2];return [0,f]}
      return typerr(cst_Expected_float_or_null_got,js)}
    function to_int(js)
     {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i}
      return typerr(cst_Expected_int_got,js)}
    function to_int_option(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       if(3654863 === js[1]){var i=js[2];return [0,i]}
      return typerr(cst_Expected_int_or_null_got,js)}
    function to_list(js)
     {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l}
      return typerr(cst_Expected_array_got,js)}
    function to_string$2(js)
     {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s}
      return typerr(cst_Expected_string_got,js)}
    function to_string_option(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       if(-976970511 === js[1]){var s=js[2];return [0,s]}
      return typerr(cst_Expected_string_or_null_go,js)}
    function convert_each(f,js)
     {if(typeof js !== "number" && 848054398 === js[1])
       {var l=js[2];return caml_call2(Stdlib_list[17],f,l)}
      return typerr(cst_Can_t_convert_each_element,js)}
    function filter_map(f,l$0)
     {var acc=0,l=l$0;
      for(;;)
       {if(l)
         {var tl=l[2],x=l[1],match=caml_call1(f,x);
          if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue}
          var l=tl;
          continue}
        return caml_call1(Stdlib_list[9],acc)}}
    function flatten(l$0)
     {var acc=0,l=l$0;
      for(;;)
       {if(l)
         {var tl=l[2],x=l[1];
          if(typeof x !== "number" && 848054398 === x[1])
           {var
             l2=x[2],
             acc$0=caml_call2(Stdlib_list[12],l2,acc),
             acc=acc$0,
             l=tl;
            continue}
          var l=tl;
          continue}
        return caml_call1(Stdlib_list[9],acc)}}
    function filter_index(i,l)
     {return filter_map
              (function(param)
                {if(typeof param !== "number" && 848054398 === param[1])
                  {var l=param[2];
                   try
                    {var _hR_=[0,caml_call2(Stdlib_list[7],l,i)];return _hR_}
                   catch(_hS_){return 0}}
                 return 0},
               l)}
    function filter_list(l)
     {return filter_map
              (function(param)
                {if(typeof param !== "number" && 848054398 === param[1])
                  {var l=param[2];return [0,l]}
                 return 0},
               l)}
    function filter_member(k,l)
     {return filter_map
              (function(param)
                {if(typeof param !== "number" && 963043957 === param[1])
                  {var l=param[2];
                   try
                    {var _hP_=[0,caml_call2(Stdlib_list[41],k,l)];return _hP_}
                   catch(_hQ_){return 0}}
                 return 0},
               l)}
    function filter_assoc(l)
     {return filter_map
              (function(param)
                {if(typeof param !== "number" && 963043957 === param[1])
                  {var l=param[2];return [0,l]}
                 return 0},
               l)}
    function filter_bool(l)
     {return filter_map
              (function(param)
                {if(typeof param !== "number" && 737456202 === param[1])
                  {var x=param[2];return [0,x]}
                 return 0},
               l)}
    function filter_int(l)
     {return filter_map
              (function(param)
                {if(typeof param !== "number" && 3654863 === param[1])
                  {var x=param[2];return [0,x]}
                 return 0},
               l)}
    function filter_float(l)
     {return filter_map
              (function(param)
                {if(typeof param !== "number" && 365180284 === param[1])
                  {var x=param[2];return [0,x]}
                 return 0},
               l)}
    function filter_number(l)
     {return filter_map
              (function(param)
                {if(typeof param !== "number")
                  {var _hO_=param[1];
                   if(3654863 === _hO_){var x=param[2];return [0,x]}
                   if(365180284 === _hO_){var x$0=param[2];return [0,x$0]}}
                 return 0},
               l)}
    function filter_string(l)
     {return filter_map
              (function(param)
                {if(typeof param !== "number" && -976970511 === param[1])
                  {var x=param[2];return [0,x]}
                 return 0},
               l)}
    function keys(o)
     {function _hM_(param){var key=param[1];return key}
      var _hN_=caml_call1(Stdlib_list[17],_hM_);
      return symbol(to_assoc(o),_hN_)}
    function values(o)
     {function _hK_(param){var value=param[2];return value}
      var _hL_=caml_call1(Stdlib_list[17],_hK_);
      return symbol(to_assoc(o),_hL_)}
    function combine(first,match)
     {if
       (typeof first
        !==
        "number"
        &&
        963043957
        ===
        first[1]
        &&
        typeof match
        !==
        "number"
        &&
        963043957
        ===
        match[1])
       {var b=match[2],a=first[2];
        return [0,963043957,caml_call2(Stdlib[37],a,b)]}
      throw [0,Stdlib[6],cst_Expected_two_objects_check]}
    function to_basic(x)
     {if(typeof x !== "number")
       {var _hD_=x[1];
        if(726928360 <= _hD_)
         {if(737456202 !== _hD_)
           {if(963043957 <= _hD_)
             {var
               l=x[2],
               _hE_=
                function(param)
                 {var v=param[2],k=param[1];return [0,k,to_basic(v)]},
               _hF_=caml_call2(Stdlib_list[19],_hE_,l);
              return [0,963043957,caml_call1(Stdlib_list[9],_hF_)]}
            var l$0=x[2],_hG_=caml_call2(Stdlib_list[19],to_basic,l$0);
            return [0,848054398,caml_call1(Stdlib_list[9],_hG_)]}}
        else
         {if(-752863768 === _hD_){var s=x[2];return [0,-976970511,s]}
          if(708012133 <= _hD_)
           {var _hH_=x[2],_hI_=_hH_[2],_hJ_=_hH_[1];
            if(_hI_)
             {var v=_hI_[1];
              return [0,848054398,[0,[0,-976970511,_hJ_],[0,to_basic(v),0]]]}
            return [0,-976970511,_hJ_]}}}
      return x}
    function hex$2(n)
     {var _hC_=10 <= n?n + 87 | 0:n + 48 | 0;
      return caml_call1(Stdlib_char[1],_hC_)}
    function write_special$1(src,start,stop,ob,str)
     {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0);
      caml_call2(Bi_outbuf[13],ob,str);
      start[1] = stop + 1 | 0;
      return 0}
    function finish_string$2(src,start,ob)
     {try
       {var
         _hB_=
          caml_call4
           (Bi_outbuf[14],
            ob,
            src,
            start[1],
            caml_ml_string_length(src) - start[1] | 0);
        return _hB_}
      catch(exc)
       {exc = caml_wrap_exception(exc);
        caml_call4
         (Stdlib_printf[3],
          _bC_,
          src,
          start[1],
          caml_ml_string_length(src) - start[1] | 0);
        throw exc}}
    function write_string$1(ob,s)
     {caml_call2(Bi_outbuf[15],ob,34);
      var start=[0,0],_hz_=caml_ml_string_length(s) - 1 | 0,_hy_=0;
      if(! (_hz_ < 0))
       {var i$0=_hy_;
        for(;;)
         {var c=caml_string_get(s,i$0);
          if(92 === c)
           write_special$1(s,start,i$0,ob,cst$25);
          else
           {var switch$0=0;
            if(35 <= c)
             if(127 === c)switch$0 = 1;else switch$0 = 2;
            else
             if(8 <= c)
              {var switcher=c - 8 | 0,switch$1=0;
               switch(switcher)
                {case 0:write_special$1(s,start,i$0,ob,cst_b$1);break;
                 case 1:write_special$1(s,start,i$0,ob,cst_t$1);break;
                 case 2:write_special$1(s,start,i$0,ob,cst_n$1);break;
                 case 4:write_special$1(s,start,i$0,ob,cst_f$1);break;
                 case 5:write_special$1(s,start,i$0,ob,cst_r$1);break;
                 case 26:write_special$1(s,start,i$0,ob,cst$26);break;
                 case 24:
                 case 25:switch$0 = 2;switch$1 = 1;break;
                 default:switch$0 = 1;switch$1 = 1}}
             else
              switch$0 = 1;
            switch(switch$0)
             {case 2:break;
              case 1:
               caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0);
               var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1];
               caml_call5(Stdlib_bytes[12],cst_u00$1,0,dst,i,4);
               caml_bytes_set(dst,i + 4 | 0,hex$2(c >>> 4 | 0));
               caml_bytes_set(dst,i + 5 | 0,hex$2(c & 15));
               start[1] = i$0 + 1 | 0;
               break
              }}
          var _hA_=i$0 + 1 | 0;
          if(_hz_ !== i$0){var i$0=_hA_;continue}
          break}}
      finish_string$2(s,start,ob);
      return caml_call2(Bi_outbuf[15],ob,34)}
    function write_null$1(ob,param)
     {return caml_call2(Bi_outbuf[13],ob,cst_null$3)}
    function write_bool$1(ob,x)
     {var _hx_=x?cst_true$2:cst_false$2;
      return caml_call2(Bi_outbuf[13],ob,_hx_)}
    var
     _bD_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])),
     _bE_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19])),
     max_digits$1=caml_call2(Stdlib[17],_bE_,_bD_);
    function write_digits$1(s,pos,x)
     {if(0 === x)return pos;
      var
       d=x % 10 | 0,
       pos$0=write_digits$1(s,pos,x / 10 | 0),
       n=caml_call1(Stdlib[18],d);
      caml_bytes_set(s,pos$0,caml_call1(Stdlib_char[1],n + 48 | 0));
      return pos$0 + 1 | 0}
    function write_int$1(ob,x)
     {caml_call2(Bi_outbuf[9],ob,max_digits$1);
      if(0 < x){ob[3] = write_digits$1(ob[1],ob[3],x);return 0}
      if(0 <= x)return caml_call2(Bi_outbuf[15],ob,48);
      var s=ob[1],pos=ob[3];
      caml_bytes_set(s,pos,45);
      ob[3] = write_digits$1(s,pos + 1 | 0,x);
      return 0}
    function float_needs_period$1(s)
     {try
       {var _ht_=caml_ml_string_length(s) - 1 | 0,_hs_=0;
        if(! (_ht_ < 0))
         {var i=_hs_;
          for(;;)
           {var match=caml_string_get(s,i),switch$0=0;
            if(48 <= match)
             {if(! (58 <= match))switch$0 = 1}
            else
             if(45 === match)switch$0 = 1;
            if(! switch$0)throw Stdlib[3];
            var _hv_=i + 1 | 0;
            if(_ht_ !== i){var i=_hv_;continue}
            break}}
        var _hu_=1;
        return _hu_}
      catch(_hw_)
       {_hw_ = caml_wrap_exception(_hw_);
        if(_hw_ === Stdlib[3])return 0;
        throw _hw_}}
    function write_float_fast$1(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var _hq_=0. < x?cst_Infinity$13:cst_Infinity$14;
        return caml_call2(Bi_outbuf[13],ob,_hq_)}
      if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$6);
      var s=caml_call2(Stdlib_printf[4],_bF_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _hr_=float_needs_period$1(s);
      return _hr_?caml_call2(Bi_outbuf[13],ob,cst_0$9):_hr_}
    function write_float$1(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var _ho_=0. < x?cst_Infinity$15:cst_Infinity$16;
        return caml_call2(Bi_outbuf[13],ob,_ho_)}
      if(4 <= match)return caml_call2(Bi_outbuf[13],ob,cst_NaN$7);
      var
       s1=caml_call2(Stdlib_printf[4],_bG_,x),
       s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_printf[4],_bH_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _hp_=float_needs_period$1(s);
      return _hp_?caml_call2(Bi_outbuf[13],ob,cst_0$10):_hp_}
    function write_normal_float_prec$1(significant_figures,ob,x)
     {var switcher=significant_figures - 1 | 0;
      if(15 < switcher >>> 0)
       var s=caml_call2(Stdlib_printf[4],_bI_,x);
      else
       switch(switcher)
        {case 0:var s=caml_call2(Stdlib_printf[4],_bJ_,x);break;
         case 1:var s=caml_call2(Stdlib_printf[4],_bK_,x);break;
         case 2:var s=caml_call2(Stdlib_printf[4],_bL_,x);break;
         case 3:var s=caml_call2(Stdlib_printf[4],_bM_,x);break;
         case 4:var s=caml_call2(Stdlib_printf[4],_bN_,x);break;
         case 5:var s=caml_call2(Stdlib_printf[4],_bO_,x);break;
         case 6:var s=caml_call2(Stdlib_printf[4],_bP_,x);break;
         case 7:var s=caml_call2(Stdlib_printf[4],_bQ_,x);break;
         case 8:var s=caml_call2(Stdlib_printf[4],_bR_,x);break;
         case 9:var s=caml_call2(Stdlib_printf[4],_bS_,x);break;
         case 10:var s=caml_call2(Stdlib_printf[4],_bT_,x);break;
         case 11:var s=caml_call2(Stdlib_printf[4],_bU_,x);break;
         case 12:var s=caml_call2(Stdlib_printf[4],_bV_,x);break;
         case 13:var s=caml_call2(Stdlib_printf[4],_bW_,x);break;
         case 14:var s=caml_call2(Stdlib_printf[4],_bX_,x);break;
         default:var s=caml_call2(Stdlib_printf[4],_bY_,x)}
      caml_call2(Bi_outbuf[13],ob,s);
      var _hn_=float_needs_period$1(s);
      return _hn_?caml_call2(Bi_outbuf[13],ob,cst_0$11):_hn_}
    function write_float_prec$1(significant_figures,ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var _hm_=0. < x?cst_Infinity$17:cst_Infinity$18;
        return caml_call2(Bi_outbuf[13],ob,_hm_)}
      return 4 <= match
              ?caml_call2(Bi_outbuf[13],ob,cst_NaN$8)
              :write_normal_float_prec$1(significant_figures,ob,x)}
    function write_std_float_fast$1(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var
         _hk_=
          0. < x
           ?cst_Infinity_value_not_allowed$11
           :cst_Infinity_value_not_allowed$12;
        return json_error(_hk_)}
      if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$5);
      var s=caml_call2(Stdlib_printf[4],_bZ_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _hl_=float_needs_period$1(s);
      return _hl_?caml_call2(Bi_outbuf[13],ob,cst_0$12):_hl_}
    function write_std_float$1(ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var
         _hi_=
          0. < x
           ?cst_Infinity_value_not_allowed$13
           :cst_Infinity_value_not_allowed$14;
        return json_error(_hi_)}
      if(4 <= match)return json_error(cst_NaN_value_not_allowed_in_s$6);
      var
       s1=caml_call2(Stdlib_printf[4],_b0_,x),
       s=caml_float_of_string(s1) == x?s1:caml_call2(Stdlib_printf[4],_b1_,x);
      caml_call2(Bi_outbuf[13],ob,s);
      var _hj_=float_needs_period$1(s);
      return _hj_?caml_call2(Bi_outbuf[13],ob,cst_0$13):_hj_}
    function write_std_float_prec$1(significant_figures,ob,x)
     {var match=caml_classify_float(x);
      if(3 === match)
       {var
         _hh_=
          0. < x
           ?cst_Infinity_value_not_allowed$15
           :cst_Infinity_value_not_allowed$16;
        return json_error(_hh_)}
      return 4 <= match
              ?json_error(cst_NaN_value_not_allowed_in_s$7)
              :write_normal_float_prec$1(significant_figures,ob,x)}
    var write_intlit$0=Bi_outbuf[13];
    function iter2$1(f_elt,f_sep,x,param$0)
     {if(param$0)
       {var l$0=param$0[2],y$0=param$0[1];
        caml_call2(f_elt,x,y$0);
        var param=l$0;
        for(;;)
         {if(param)
           {var l=param[2],y=param[1];
            caml_call1(f_sep,x);
            caml_call2(f_elt,x,y);
            var param=l;
            continue}
          return 0}}
      return 0}
    function f_sep$1(ob){return caml_call2(Bi_outbuf[15],ob,44)}
    function write_variant$0(ob,s,o)
     {caml_call2(Bi_outbuf[15],ob,60);
      write_string$1(ob,s);
      if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$1(ob,x)}
      return caml_call2(Bi_outbuf[15],ob,62)}
    function write_tuple$0(ob,l)
     {caml_call2(Bi_outbuf[15],ob,40);
      iter2$1(write_t$1,f_sep$1,ob,l);
      return caml_call2(Bi_outbuf[15],ob,41)}
    function write_list$1(ob,l)
     {caml_call2(Bi_outbuf[15],ob,91);
      iter2$1(write_t$1,f_sep$1,ob,l);
      return caml_call2(Bi_outbuf[15],ob,93)}
    function write_assoc$1(ob,l)
     {function f_elt(ob,param)
       {var x=param[2],s=param[1];
        write_string$1(ob,s);
        caml_call2(Bi_outbuf[15],ob,58);
        return write_t$1(ob,x)}
      caml_call2(Bi_outbuf[15],ob,123);
      iter2$1(f_elt,f_sep$1,ob,l);
      return caml_call2(Bi_outbuf[15],ob,125)}
    function write_t$1(ob,x)
     {if(typeof x === "number")return write_null$1(ob,0);
      var _hg_=x[1];
      if(708012133 <= _hg_)
       {if(726928360 === _hg_){var l=x[2];return write_tuple$0(ob,l)}
        if(848054398 <= _hg_)
         {if(963043957 <= _hg_){var l$0=x[2];return write_assoc$1(ob,l$0)}
          var l$1=x[2];
          return write_list$1(ob,l$1)}
        if(737456202 <= _hg_){var b=x[2];return write_bool$1(ob,b)}
        var match=x[2],o=match[2],s=match[1];
        return write_variant$0(ob,s,o)}
      if(3654863 <= _hg_)
       {if(365180284 <= _hg_){var f=x[2];return write_float$1(ob,f)}
        var i=x[2];
        return write_int$1(ob,i)}
      if(-752863768 <= _hg_)
       {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)}
      var s$1=x[2];
      return write_string$1(ob,s$1)}
    function write_std_variant$0(ob,s,o)
     {if(o)
       {var x=o[1];
        caml_call2(Bi_outbuf[15],ob,91);
        write_string$1(ob,s);
        caml_call2(Bi_outbuf[15],ob,44);
        write_std_json$1(ob,x);
        return caml_call2(Bi_outbuf[15],ob,93)}
      return write_string$1(ob,s)}
    function write_std_tuple$0(ob,l)
     {caml_call2(Bi_outbuf[15],ob,91);
      iter2$1(write_std_json$1,f_sep$1,ob,l);
      return caml_call2(Bi_outbuf[15],ob,93)}
    function write_std_json$1(ob,x)
     {if(typeof x === "number")return write_null$1(ob,0);
      var _hf_=x[1];
      if(708012133 <= _hf_)
       {if(726928360 === _hf_){var l=x[2];return write_std_tuple$0(ob,l)}
        if(848054398 <= _hf_)
         {if(963043957 <= _hf_)
           {var
             l$0=x[2],
             f_elt=
              function(ob,param)
               {var x=param[2],s=param[1];
                write_string$1(ob,s);
                caml_call2(Bi_outbuf[15],ob,58);
                return write_std_json$1(ob,x)};
            caml_call2(Bi_outbuf[15],ob,123);
            iter2$1(f_elt,f_sep$1,ob,l$0);
            return caml_call2(Bi_outbuf[15],ob,125)}
          var l$1=x[2];
          caml_call2(Bi_outbuf[15],ob,91);
          iter2$1(write_std_json$1,f_sep$1,ob,l$1);
          return caml_call2(Bi_outbuf[15],ob,93)}
        if(737456202 <= _hf_){var b=x[2];return write_bool$1(ob,b)}
        var match=x[2],o=match[2],s=match[1];
        return write_std_variant$0(ob,s,o)}
      if(3654863 <= _hf_)
       {if(365180284 <= _hf_){var f=x[2];return write_std_float$1(ob,f)}
        var i=x[2];
        return write_int$1(ob,i)}
      if(-752863768 <= _hf_)
       {var s$0=x[2];return caml_call2(Bi_outbuf[13],ob,s$0)}
      var s$1=x[2];
      return write_string$1(ob,s$1)}
    function to_outbuf$1(opt,ob,x)
     {if(opt)var sth=opt[1],std=sth;else var std=0;
      return std
              ?is_object_or_array(x)
                ?write_std_json$1(ob,x)
                :json_error(cst_Root_is_not_an_object_or_a$2)
              :write_t$1(ob,x)}
    function to_string$3(buf,opt,std,x)
     {if(opt)var sth=opt[1],len=sth;else var len=256;
      if(buf)
       {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
      else
       var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
      to_outbuf$1(std,ob$0,x);
      var s=caml_call1(Bi_outbuf[4],ob$0);
      caml_call1(Bi_outbuf[19],ob$0);
      return s}
    function to_channel$2(buf,len,std,oc,x)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
      to_outbuf$1(std,ob$0,x);
      return caml_call1(Bi_outbuf[6],ob$0)}
    function to_output$1(buf,len,std,out,x)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[7],len,0,out);
      to_outbuf$1(std,ob$0,x);
      return caml_call1(Bi_outbuf[8],ob$0)}
    function to_file$1(len,std,file,x)
     {var oc=caml_call1(Stdlib[60],file);
      try
       {to_channel$2(0,len,std,oc,x);
        var _he_=caml_call1(Stdlib[76],oc);
        return _he_}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
    function stream_to_outbuf$1(std,ob,st)
     {function _hc_(_hd_){return to_outbuf$1(std,ob,_hd_)}
      return caml_call2(Stdlib_stream[8],_hc_,st)}
    function stream_to_string$1(buf,opt,std,st)
     {if(opt)var sth=opt[1],len=sth;else var len=256;
      if(buf)
       {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
      else
       var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
      stream_to_outbuf$1(std,ob$0,st);
      var s=caml_call1(Bi_outbuf[4],ob$0);
      caml_call1(Bi_outbuf[19],ob$0);
      return s}
    function stream_to_channel$1(buf,len,std,oc,st)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
      stream_to_outbuf$1(std,ob$0,st);
      return caml_call1(Bi_outbuf[6],ob$0)}
    function stream_to_file$1(len,std,file,st)
     {var oc=caml_call1(Stdlib[60],file);
      try
       {stream_to_channel$1(0,len,std,oc,st);
        var _hb_=caml_call1(Stdlib[76],oc);
        return _hb_}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
    function sort$1(x)
     {if(typeof x !== "number")
       {var _g4_=x[1];
        if(726928361 <= _g4_)
         {if(848054398 === _g4_)
           {var l=x[2],_g5_=caml_call2(Stdlib_list[19],sort$1,l);
            return [0,848054398,caml_call1(Stdlib_list[9],_g5_)]}
          if(963043957 === _g4_)
           {var
             l$0=x[2],
             _g6_=
              function(param)
               {var v=param[2],k=param[1];return [0,k,sort$1(v)]},
             _g7_=caml_call2(Stdlib_list[19],_g6_,l$0),
             l$1=caml_call1(Stdlib_list[9],_g7_),
             _g8_=
              function(param,_ha_)
               {var b=_ha_[1],a=param[1];
                return caml_call2(Stdlib_string[33],a,b)};
            return [0,963043957,caml_call2(Stdlib_list[52],_g8_,l$1)]}}
        else
         if(708012133 === _g4_)
          {var _g9_=x[2],_g__=_g9_[2];
           if(_g__)
            {var v=_g__[1],k=_g9_[1],v$0=sort$1(v);
             return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}}
         else
          if(726928360 <= _g4_)
           {var l$2=x[2],_g$_=caml_call2(Stdlib_list[19],sort$1,l$2);
            return [0,726928360,caml_call1(Stdlib_list[9],_g$_)]}}
      return x}
    function pp$1(fmt,param)
     {if(typeof param === "number")
       return caml_call2(Stdlib_format[13],fmt,cst_Null$1);
      var _gX_=param[1];
      if(708012133 <= _gX_)
       {if(726928360 === _gX_)
         {var tup=param[2];
          caml_call2(Stdlib_format[123],fmt,_b2_);
          caml_call2(Stdlib_format[123],fmt,_b3_);
          var
           _gY_=0,
           _gZ_=
            function(sep,e)
             {if(sep)caml_call2(Stdlib_format[123],fmt,_b4_);
              pp$1(fmt,e);
              return 1};
          caml_call3(Stdlib_list[22],_gZ_,_gY_,tup);
          caml_call2(Stdlib_format[123],fmt,_b5_);
          return caml_call2(Stdlib_format[123],fmt,_b6_)}
        if(848054398 <= _gX_)
         {if(963043957 <= _gX_)
           {var xs=param[2];
            caml_call2(Stdlib_format[123],fmt,_b7_);
            caml_call2(Stdlib_format[123],fmt,_b8_);
            var
             _g0_=0,
             _g1_=
              function(sep,param)
               {var value=param[2],key=param[1];
                if(sep)caml_call2(Stdlib_format[123],fmt,_b9_);
                caml_call2(Stdlib_format[123],fmt,_b__);
                caml_call3(Stdlib_format[123],fmt,_b$_,key);
                caml_call2(Stdlib_format[123],fmt,_ca_);
                pp$1(fmt,value);
                caml_call2(Stdlib_format[123],fmt,_cb_);
                return 1};
            caml_call3(Stdlib_list[22],_g1_,_g0_,xs);
            caml_call2(Stdlib_format[123],fmt,_cc_);
            return caml_call2(Stdlib_format[123],fmt,_cd_)}
          var xs$0=param[2];
          caml_call2(Stdlib_format[123],fmt,_ce_);
          caml_call2(Stdlib_format[123],fmt,_cf_);
          var
           _g2_=0,
           _g3_=
            function(sep,x)
             {if(sep)caml_call2(Stdlib_format[123],fmt,_cg_);
              pp$1(fmt,x);
              return 1};
          caml_call3(Stdlib_list[22],_g3_,_g2_,xs$0);
          caml_call2(Stdlib_format[123],fmt,_ch_);
          return caml_call2(Stdlib_format[123],fmt,_ci_)}
        if(737456202 <= _gX_)
         {var x=param[2];
          caml_call2(Stdlib_format[123],fmt,_cj_);
          caml_call3(Stdlib_format[123],fmt,_ck_,x);
          return caml_call2(Stdlib_format[123],fmt,_cl_)}
        var match=param[2],value=match[2],name=match[1];
        caml_call2(Stdlib_format[123],fmt,_cm_);
        caml_call2(Stdlib_format[123],fmt,_cn_);
        caml_call3(Stdlib_format[123],fmt,_co_,name);
        caml_call2(Stdlib_format[123],fmt,_cp_);
        if(value)
         {var x$0=value[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$0);
          pp$1(fmt,x$0);
          caml_call2(Stdlib_format[13],fmt,cst$27)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$0);
        caml_call2(Stdlib_format[123],fmt,_cq_);
        return caml_call2(Stdlib_format[123],fmt,_cr_)}
      if(3654863 <= _gX_)
       {if(365180284 <= _gX_)
         {var x$1=param[2];
          caml_call2(Stdlib_format[123],fmt,_cs_);
          caml_call3(Stdlib_format[123],fmt,_ct_,x$1);
          return caml_call2(Stdlib_format[123],fmt,_cu_)}
        var x$2=param[2];
        caml_call2(Stdlib_format[123],fmt,_cv_);
        caml_call3(Stdlib_format[123],fmt,_cw_,x$2);
        return caml_call2(Stdlib_format[123],fmt,_cx_)}
      if(-752863768 <= _gX_)
       {var x$3=param[2];
        caml_call2(Stdlib_format[123],fmt,_cy_);
        caml_call3(Stdlib_format[123],fmt,_cz_,x$3);
        return caml_call2(Stdlib_format[123],fmt,_cA_)}
      var x$4=param[2];
      caml_call2(Stdlib_format[123],fmt,_cB_);
      caml_call3(Stdlib_format[123],fmt,_cC_,x$4);
      return caml_call2(Stdlib_format[123],fmt,_cD_)}
    function show$1(x){return caml_call3(Stdlib_format[127],_cE_,pp$1,x)}
    function equal$1(a,b)
     {var a$0=a,b$0=b;
      for(;;)
       {if(typeof a$0 === "number")
         {if(870828711 === a$0 && 870828711 === b$0)return 1}
        else
         {var _gQ_=a$0[1];
          if(708012133 <= _gQ_)
           {var switch$0=0;
            if(737456203 <= _gQ_)
             {if(848054398 === _gQ_)
               {if(typeof b$0 !== "number" && 848054398 === b$0[1])
                 {var ys=b$0[2],xs=a$0[2];switch$0 = 1}}
              else
               if
                (963043957
                 ===
                 _gQ_
                 &&
                 typeof b$0
                 !==
                 "number"
                 &&
                 963043957
                 ===
                 b$0[1])
                {var
                  ys$0=b$0[2],
                  xs$0=a$0[2],
                  compare_keys=
                   function(param,_gW_)
                    {var key=_gW_[1],key$0=param[1];
                     return caml_call2(Stdlib_string[33],key$0,key)},
                  xs$1=caml_call2(Stdlib_list[52],compare_keys,xs$0),
                  ys$1=caml_call2(Stdlib_list[52],compare_keys,ys$0);
                 try
                  {var
                    _gR_=
                     function(param,_gV_)
                      {var
                        value=_gV_[2],
                        key=_gV_[1],
                        value$0=param[2],
                        key$0=param[1],
                        match=caml_string_equal(key$0,key);
                       return match?equal$1(value$0,value):0},
                    result$0=caml_call3(Stdlib_list[31],_gR_,xs$1,ys$1);
                   return result$0}
                 catch(_gU_)
                  {_gU_ = caml_wrap_exception(_gU_);
                   if(_gU_[1] === Stdlib[6])return 0;
                   throw _gU_}}}
            else
             if(726928360 === _gQ_)
              {if(typeof b$0 !== "number" && 726928360 === b$0[1])
                {var ys=b$0[2],xs=a$0[2];switch$0 = 1}}
             else
              if(708012134 <= _gQ_)
               {if
                 (737456202
                  <=
                  _gQ_
                  &&
                  typeof b$0
                  !==
                  "number"
                  &&
                  737456202
                  ===
                  b$0[1])
                 {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}}
              else
               if(typeof b$0 !== "number" && 708012133 === b$0[1])
                {var
                  _gS_=b$0[2],
                  value=_gS_[2],
                  name=_gS_[1],
                  match=a$0[2],
                  value$0=match[2],
                  name$0=match[1],
                  match$0=caml_equal(name$0,name);
                 if(match$0)
                  {if(value$0)
                    {if(value)
                      {var b$2=value[1],a$2=value$0[1],a$0=a$2,b$0=b$2;continue}}
                   else
                    if(! value)return 1;
                   return 0}
                 return 0}
            if(switch$0)
             try
              {var result=caml_call3(Stdlib_list[31],equal$1,xs,ys);
               return result}
             catch(_gT_)
              {_gT_ = caml_wrap_exception(_gT_);
               if(_gT_[1] === Stdlib[6])return 0;
               throw _gT_}}
          else
           if(-752863767 <= _gQ_)
            {if(3654863 === _gQ_)
              {if(typeof b$0 !== "number" && 3654863 === b$0[1])
                {var b$3=b$0[2],a$3=a$0[2];return caml_equal(a$3,b$3)}}
             else
              if
               (365180284
                ===
                _gQ_
                &&
                typeof b$0
                !==
                "number"
                &&
                365180284
                ===
                b$0[1])
               {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}}
           else
            if(-976970511 === _gQ_)
             {if(typeof b$0 !== "number" && -976970511 === b$0[1])
               {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}}
            else
             if
              (-752863768
               <=
               _gQ_
               &&
               typeof b$0
               !==
               "number"
               &&
               -752863768
               ===
               b$0[1])
              {var b$6=b$0[2],a$6=a$0[2];return caml_equal(a$6,b$6)}}
        return 0}}
    function pretty_format$1(std,x){return format(std,x)}
    function pretty_print$1(std,out,x)
     {var _gP_=pretty_format$1(std,x);
      return caml_call2(Easy_format[4][2],out,_gP_)}
    function pretty_to_string$1(std,x){return to_string$0(std,x)}
    function pretty_to_channel$1(std,oc,x){return to_channel$0(std,oc,x)}
    var
     from_channel$1=Stdlib_lexing[2],
     from_string$1=Stdlib_lexing[3],
     lexeme$0=Stdlib_lexing[6],
     sub_lexeme$0=Stdlib_lexing[14],
     sub_lexeme_char$0=Stdlib_lexing[16];
    function hex$3(c)
     {if(65 <= c)
       {if(97 <= c)
         {if(! (103 <= c))return (c - 97 | 0) + 10 | 0}
        else
         if(! (71 <= c))return (c - 65 | 0) + 10 | 0}
      else
       {var switcher=c - 48 | 0;if(! (9 < switcher >>> 0))return c - 48 | 0}
      throw [0,Assert_failure,_cF_]}
    function custom_error$0(descr,v,lexbuf)
     {var
       offs=lexbuf[4] - 1 | 0,
       bol=v[3],
       pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0,
       pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0),
       _gO_=v[4];
      if(_gO_)
       var s=_gO_[1],file_line=caml_call2(Stdlib_printf[4],_cG_,s);
      else
       var file_line=cst_Line$0;
      var
       bytes=
        pos1 === pos2
         ?caml_call2(Stdlib_printf[4],_cH_,pos1 + 1 | 0)
         :caml_call3(Stdlib_printf[4],_cJ_,pos1 + 1 | 0,pos2 + 1 | 0),
       msg=caml_call5(Stdlib_printf[4],_cI_,file_line,v[2],bytes,descr);
      return json_error(msg)}
    function lexer_error$0(descr,v,lexbuf)
     {var _gN_=caml_call1(lexeme$0,lexbuf);
      return custom_error$0
              (caml_call3(Stdlib_printf[4],_cK_,descr,_gN_),v,lexbuf)}
    var read_junk$0=[0,function(param){throw [0,Assert_failure,_cL_]}];
    function long_error$0(descr,v,lexbuf)
     {var
       junk=caml_call1(lexeme$0,lexbuf),
       extra_junk=caml_call1(read_junk$0[1],lexbuf);
      return custom_error$0
              (caml_call4(Stdlib_printf[4],_cM_,descr,junk,extra_junk),
               v,
               lexbuf)}
    var
     _cN_=0 === (Stdlib[20] % 10 | 0)?0:1,
     min10$0=(Stdlib[20] / 10 | 0) - _cN_ | 0,
     _cO_=0 === (Stdlib[19] % 10 | 0)?0:1,
     max10$0=(Stdlib[19] / 10 | 0) + _cO_ | 0,
     Int_overflow$0=[248,cst_Yojson_Safe_Int_overflow,caml_fresh_oo_id(0)];
    function extract_positive_int$0(lexbuf)
     {var
       start=lexbuf[5],
       stop=lexbuf[6],
       s=lexbuf[2],
       n=[0,0],
       _gK_=stop - 1 | 0;
      if(! (_gK_ < start))
       {var i=start;
        for(;;)
         {if(max10$0 <= n[1])throw Int_overflow$0;
          var _gL_=caml_bytes_get(s,i) - 48 | 0;
          n[1] = (10 * n[1] | 0) + _gL_ | 0;
          var _gM_=i + 1 | 0;
          if(_gK_ !== i){var i=_gM_;continue}
          break}}
      if(0 <= n[1])return n[1];
      throw Int_overflow$0}
    function extract_negative_int$0(lexbuf)
     {var
       start=lexbuf[5] + 1 | 0,
       stop=lexbuf[6],
       s=lexbuf[2],
       n=[0,0],
       _gH_=stop - 1 | 0;
      if(! (_gH_ < start))
       {var i=start;
        for(;;)
         {if(n[1] <= min10$0)throw Int_overflow$0;
          var _gI_=caml_bytes_get(s,i) - 48 | 0;
          n[1] = (10 * n[1] | 0) - _gI_ | 0;
          var _gJ_=i + 1 | 0;
          if(_gH_ !== i){var i=_gJ_;continue}
          break}}
      if(0 < n[1])throw Int_overflow$0;
      return n[1]}
    function newline$0(v,lexbuf)
     {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0}
    function add_lexeme$0(buf,lexbuf)
     {var len=lexbuf[6] - lexbuf[5] | 0;
      return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)}
    function read_json$3(counter,v,lexbuf)
     {var _gG_=0;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return ocaml_lex_read_json_rec$0(counter$0,v,lexbuf,_gG_)}
      return caml_trampoline_return
              (ocaml_lex_read_json_rec$0,[0,v,lexbuf,_gG_])}
    function ocaml_lex_read_json_rec$0(counter,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(19 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return _cP_;
          case 1:return _cQ_;
          case 2:return 870828711;
          case 3:return [0,365180284,Stdlib[24]];
          case 4:return [0,365180284,Stdlib[22]];
          case 5:return [0,365180284,Stdlib[23]];
          case 6:
           caml_call1(Bi_outbuf[19],v[1]);
           return [0,-976970511,finish_string$3(v,lexbuf)];
          case 7:
           try
            {var _gt_=[0,3654863,extract_positive_int$0(lexbuf)];return _gt_}
           catch(_gF_)
            {_gF_ = caml_wrap_exception(_gF_);
             if(_gF_ === Int_overflow$0)
              return [0,-752863768,caml_call1(lexeme$0,lexbuf)];
             throw _gF_}
          case 8:
           try
            {var _gu_=[0,3654863,extract_negative_int$0(lexbuf)];return _gu_}
           catch(_gE_)
            {_gE_ = caml_wrap_exception(_gE_);
             if(_gE_ === Int_overflow$0)
              return [0,-752863768,caml_call1(lexeme$0,lexbuf)];
             throw _gE_}
          case 9:
           return [0,
                   365180284,
                   caml_float_of_string(caml_call1(lexeme$0,lexbuf))];
          case 10:
           var acc=[0,0];
           try
            {read_space$0(v,lexbuf);
             read_object_end$0(lexbuf);
             var field_name=read_ident$0(v,lexbuf);
             read_space$0(v,lexbuf);
             read_colon$0(v,lexbuf);
             read_space$0(v,lexbuf);
             var _gv_=acc[1];
             acc[1] = [0,[0,field_name,read_json$0(v,lexbuf)],_gv_];
             for(;;)
              {read_space$0(v,lexbuf);
               read_object_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               var field_name$0=read_ident$0(v,lexbuf);
               read_space$0(v,lexbuf);
               read_colon$0(v,lexbuf);
               read_space$0(v,lexbuf);
               var _gw_=acc[1];
               acc[1] = [0,[0,field_name$0,read_json$0(v,lexbuf)],_gw_];
               continue}}
           catch(_gD_)
            {_gD_ = caml_wrap_exception(_gD_);
             if(_gD_ === End_of_object)
              return [0,963043957,caml_call1(Stdlib_list[9],acc[1])];
             throw _gD_}
          case 11:
           var acc$0=[0,0];
           try
            {read_space$0(v,lexbuf);
             read_array_end$0(lexbuf);
             var _gx_=acc$0[1];
             acc$0[1] = [0,read_json$0(v,lexbuf),_gx_];
             for(;;)
              {read_space$0(v,lexbuf);
               read_array_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               var _gy_=acc$0[1];
               acc$0[1] = [0,read_json$0(v,lexbuf),_gy_];
               continue}}
           catch(_gC_)
            {_gC_ = caml_wrap_exception(_gC_);
             if(_gC_ === End_of_array)
              return [0,848054398,caml_call1(Stdlib_list[9],acc$0[1])];
             throw _gC_}
          case 12:
           var acc$1=[0,0];
           try
            {read_space$0(v,lexbuf);
             read_tuple_end$0(lexbuf);
             var _gz_=acc$1[1];
             acc$1[1] = [0,read_json$0(v,lexbuf),_gz_];
             for(;;)
              {read_space$0(v,lexbuf);
               read_tuple_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               var _gA_=acc$1[1];
               acc$1[1] = [0,read_json$0(v,lexbuf),_gA_];
               continue}}
           catch(_gB_)
            {_gB_ = caml_wrap_exception(_gB_);
             if(_gB_ === End_of_tuple)
              return [0,726928360,caml_call1(Stdlib_list[9],acc$1[1])];
             throw _gB_}
          case 13:
           read_space$0(v,lexbuf);
           var cons=read_ident$0(v,lexbuf);
           read_space$0(v,lexbuf);
           return [0,708012133,[0,cons,finish_variant$0(v,lexbuf)]];
          case 14:
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return read_json$3(counter$0,v,lexbuf)}
           return caml_trampoline_return(read_json$3,[0,v,lexbuf]);
          case 15:
           finish_comment$0(v,lexbuf);
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return read_json$3(counter$1,v,lexbuf)}
           return caml_trampoline_return(read_json$3,[0,v,lexbuf]);
          case 16:
           newline$0(v,lexbuf);
           if(counter < 50)
            {var counter$2=counter + 1 | 0;
             return read_json$3(counter$2,v,lexbuf)}
           return caml_trampoline_return(read_json$3,[0,v,lexbuf]);
          case 17:
           if(counter < 50)
            {var counter$3=counter + 1 | 0;
             return read_json$3(counter$3,v,lexbuf)}
           return caml_trampoline_return(read_json$3,[0,v,lexbuf]);
          case 18:
           return custom_error$0(cst_Unexpected_end_of_input$44,v,lexbuf);
          default:return long_error$0(cst_Invalid_token$9,v,lexbuf)}}}
    function read_json$0(v,lexbuf)
     {return caml_trampoline(read_json$3(0,v,lexbuf))}
    function finish_string$3(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=58;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:return caml_call1(Bi_outbuf[4],v[1]);
            case 1:finish_escaped_char$0(v,lexbuf);continue a;
            case 2:add_lexeme$0(v[1],lexbuf);continue a;
            default:
             return custom_error$0(cst_Unexpected_end_of_input$45,v,lexbuf)}}}}
    function map_string$0(v,f,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=63;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:
             var b=v[1],_gs_=b[3];
             return caml_call3(f,caml_call1(Stdlib_bytes[6],b[1]),0,_gs_);
            case 1:finish_escaped_char$0(v,lexbuf);continue a;
            case 2:add_lexeme$0(v[1],lexbuf);continue a;
            default:
             return custom_error$0(cst_Unexpected_end_of_input$46,v,lexbuf)}}}}
    function finish_escaped_char$0(v,lexbuf)
     {var ocaml_lex_state=68;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(8 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           var c=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5]);
           return caml_call2(Bi_outbuf[15],v[1],c);
          case 1:return caml_call2(Bi_outbuf[15],v[1],8);
          case 2:return caml_call2(Bi_outbuf[15],v[1],12);
          case 3:return caml_call2(Bi_outbuf[15],v[1],10);
          case 4:return caml_call2(Bi_outbuf[15],v[1],13);
          case 5:return caml_call2(Bi_outbuf[15],v[1],9);
          case 6:
           var
            a=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 1 | 0),
            b=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0),
            c$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0),
            d=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0),
            _gm_=hex$3(d),
            _gn_=hex$3(c$0) << 4,
            _go_=hex$3(b) << 8,
            x=hex$3(a) << 12 | _go_ | _gn_ | _gm_;
           if(55296 <= x && ! (56319 < x))
            {var ocaml_lex_state$1=82;
             for(;;)
              {var
                ocaml_lex_state$2=
                 caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf);
               if(2 < ocaml_lex_state$2 >>> 0)
                {caml_call1(lexbuf[1],lexbuf);
                 var ocaml_lex_state$1=ocaml_lex_state$2;
                 continue}
               switch(ocaml_lex_state$2)
                {case 0:
                  var
                   a$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 2 | 0),
                   b$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 3 | 0),
                   c$1=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 4 | 0),
                   d$0=caml_call2(sub_lexeme_char$0,lexbuf,lexbuf[5] + 5 | 0),
                   _gp_=hex$3(d$0),
                   _gq_=hex$3(c$1) << 4,
                   _gr_=hex$3(b$0) << 8,
                   y=hex$3(a$0) << 12 | _gr_ | _gq_ | _gp_;
                  if(56320 <= y && ! (57343 < y))
                   return utf8_of_surrogate_pair(v[1],x,y);
                  return long_error$0
                          (cst_Invalid_low_surrogate_for_$0,v,lexbuf);
                 case 1:
                  return long_error$0
                          (cst_Missing_escape_sequence_re$0,v,lexbuf);
                 default:
                  return custom_error$0
                          (cst_Unexpected_end_of_input$48,v,lexbuf)}}}
           return utf8_of_code(v[1],x);
          case 7:return long_error$0(cst_Invalid_escape_sequence$0,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$47,v,lexbuf)}}}
    function finish_stringlit$0(v,lexbuf)
     {var ocaml_lex_state=91;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0);
           caml_bytes_set(s,0,34);
           caml_call5(Stdlib_bytes[11],lexbuf[2],lexbuf[5],s,1,len);
           return caml_call1(Stdlib_bytes[6],s);
          case 1:return long_error$0(cst_Invalid_string_literal$2,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$49,v,lexbuf)}}}
    function finish_variant$0(v,lexbuf)
     {var ocaml_lex_state=102;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           var x=read_json$0(v,lexbuf);
           read_space$0(v,lexbuf);
           read_gt$0(v,lexbuf);
           return [0,x];
          case 1:return 0;
          case 2:return long_error$0(cst_Expected_or_but_found$13,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$50,v,lexbuf)}}}
    function read_lt$0(v,lexbuf)
     {var ocaml_lex_state=107;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_but_found$14,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$51,v,lexbuf)}}}
    function read_gt$0(v,lexbuf)
     {var ocaml_lex_state=111;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_but_found$15,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$52,v,lexbuf)}}}
    function read_comma$0(v,lexbuf)
     {var ocaml_lex_state=115;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_but_found$16,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$53,v,lexbuf)}}}
    function start_any_variant$0(v,lexbuf)
     {var ocaml_lex_state=119;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(4 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return -154522342;
          case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938;
          case 2:return -124528282;
          case 3:return long_error$0(cst_Expected_or_but_found$14,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$54,v,lexbuf)}}}
    function finish_comment$0(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=125;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:return 0;
            case 1:return long_error$0(cst_Unterminated_comment$1,v,lexbuf);
            case 2:newline$0(v,lexbuf);continue a;
            default:continue a}}}}
    function read_eof$0(lexbuf)
     {var ocaml_lex_state=131;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)return 1;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_space$0(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=133;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
          if(4 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:newline$0(v,lexbuf);continue a;
            case 1:finish_comment$0(v,lexbuf);continue a;
            case 2:newline$0(v,lexbuf);continue a;
            case 3:continue a;
            default:return 0}}}}
    function read_null$0(v,lexbuf)
     {var ocaml_lex_state=140;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_null_but_found$0,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$55,v,lexbuf)}}}
    function read_null_if_possible$0(v,lexbuf)
     {var ocaml_lex_state=147;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)return 1;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_bool$0(v,lexbuf)
     {var ocaml_lex_state=152;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(5 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 1;
          case 1:return 0;
          case 2:return 1;
          case 3:return 0;
          case 4:
           return long_error$0(cst_Expected_true_or_false_but$0,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$56,v,lexbuf)}}}
    function ocaml_lex_read_int_rec$0(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(4 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           try
            {var _gg_=extract_positive_int$0(lexbuf);return _gg_}
           catch(_gl_)
            {_gl_ = caml_wrap_exception(_gl_);
             if(_gl_ === Int_overflow$0)
              return lexer_error$0(cst_Int_overflow$3,v,lexbuf);
             throw _gl_}
          case 1:
           try
            {var _gh_=extract_negative_int$0(lexbuf);return _gh_}
           catch(_gk_)
            {_gk_ = caml_wrap_exception(_gk_);
             if(_gk_ === Int_overflow$0)
              return lexer_error$0(cst_Int_overflow$4,v,lexbuf);
             throw _gk_}
          case 2:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$3(v,lexbuf);
           try
            {var _gi_=caml_int_of_string(s);return _gi_}
           catch(_gj_)
            {return custom_error$0(cst_Expected_an_integer_but_fo$0,v,lexbuf)}
          case 3:
           return long_error$0(cst_Expected_integer_but_found$0,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$57,v,lexbuf)}}}
    function read_int$0(v,lexbuf)
     {return ocaml_lex_read_int_rec$0(v,lexbuf,176)}
    function ocaml_lex_read_int32_rec$0(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(3 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           try
            {var _gc_=caml_int_of_string(caml_call1(lexeme$0,lexbuf));
             return _gc_}
           catch(_gf_){return lexer_error$0(cst_Int32_overflow$1,v,lexbuf)}
          case 1:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$3(v,lexbuf);
           try
            {var _gd_=caml_int_of_string(s);return _gd_}
           catch(_ge_)
            {return custom_error$0(cst_Expected_an_int32_but_foun$0,v,lexbuf)}
          case 2:return long_error$0(cst_Expected_int32_but_found$0,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$58,v,lexbuf)}}}
    function read_int32$0(v,lexbuf)
     {return ocaml_lex_read_int32_rec$0(v,lexbuf,185)}
    function ocaml_lex_read_int64_rec$0(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(3 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           try
            {var _f__=caml_int64_of_string(caml_call1(lexeme$0,lexbuf));
             return _f__}
           catch(_gb_){return lexer_error$0(cst_Int32_overflow$2,v,lexbuf)}
          case 1:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$3(v,lexbuf);
           try
            {var _f$_=caml_int64_of_string(s);return _f$_}
           catch(_ga_)
            {return custom_error$0(cst_Expected_an_int64_but_foun$0,v,lexbuf)}
          case 2:return long_error$0(cst_Expected_int64_but_found$0,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$59,v,lexbuf)}}}
    function read_int64$0(v,lexbuf)
     {return ocaml_lex_read_int64_rec$0(v,lexbuf,192)}
    function ocaml_lex_read_number_rec$0(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(6 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return Stdlib[24];
          case 1:return Stdlib[22];
          case 2:return Stdlib[23];
          case 3:return caml_float_of_string(caml_call1(lexeme$0,lexbuf));
          case 4:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$3(v,lexbuf);
           try
            {var _f8_=caml_float_of_string(s);return _f8_}
           catch(_f9_)
            {return caml_string_notequal(s,cst_Infinity$19)
                     ?caml_string_notequal(s,cst_Infinity$20)
                       ?caml_string_notequal(s,cst_NaN$9)
                         ?custom_error$0(cst_Expected_a_number_but_foun$0,v,lexbuf)
                         :Stdlib[24]
                       :Stdlib[22]
                     :Stdlib[23]}
          case 5:
           return long_error$0(cst_Expected_number_but_found$0,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$60,v,lexbuf)}}}
    function read_number$0(v,lexbuf)
     {return ocaml_lex_read_number_rec$0(v,lexbuf,199)}
    function read_string$0(v,lexbuf)
     {var ocaml_lex_state=233;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf);
          case 1:return long_error$0(cst_Expected_but_found$17,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$61,v,lexbuf)}}}
    function read_ident$0(v,lexbuf)
     {var ocaml_lex_state=237;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call1(Bi_outbuf[19],v[1]);return finish_string$3(v,lexbuf);
          case 1:
           var s=caml_call3(sub_lexeme$0,lexbuf,lexbuf[5],lexbuf[6]);return s;
          case 2:
           return long_error$0(cst_Expected_string_or_identif$3,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$62,v,lexbuf)}}}
    function map_ident$0(v,f,lexbuf)
     {var ocaml_lex_state=242;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call1(Bi_outbuf[19],v[1]);return map_string$0(v,f,lexbuf);
          case 1:
           var len=lexbuf[6] - lexbuf[5] | 0,_f7_=lexbuf[5];
           return caml_call3(f,caml_call1(Stdlib_bytes[6],lexbuf[2]),_f7_,len);
          case 2:
           return long_error$0(cst_Expected_string_or_identif$4,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$63,v,lexbuf)}}}
    function ocaml_lex_read_sequence_rec$0
     (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var acc=[0,init_acc];
           try
            {read_space$0(v,lexbuf);
             read_array_end$0(lexbuf);
             acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
             for(;;)
              {read_space$0(v,lexbuf);
               read_array_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
               continue}}
           catch(_f6_)
            {_f6_ = caml_wrap_exception(_f6_);
             if(_f6_ === End_of_array)return acc[1];
             throw _f6_}
          case 1:return long_error$0(cst_Expected_but_found$18,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$64,v,lexbuf)}}}
    function read_sequence$0(read_cell,init_acc,v,lexbuf)
     {return ocaml_lex_read_sequence_rec$0(read_cell,init_acc,v,lexbuf,247)}
    function ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var acc=[0,0];
           try
            {read_space$0(v,lexbuf);
             read_array_end$0(lexbuf);
             var _f3_=acc[1];
             acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f3_];
             for(;;)
              {read_space$0(v,lexbuf);
               read_array_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               var _f4_=acc[1];
               acc[1] = [0,caml_call2(read_cell,v,lexbuf),_f4_];
               continue}}
           catch(_f5_)
            {_f5_ = caml_wrap_exception(_f5_);
             if(_f5_ === End_of_array)return acc[1];
             throw _f5_}
          case 1:return long_error$0(cst_Expected_but_found$19,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$65,v,lexbuf)}}}
    function read_list_rev$0(read_cell,v,lexbuf)
     {return ocaml_lex_read_list_rev_rec$0(read_cell,v,lexbuf,251)}
    function read_array_end$0(lexbuf)
     {var ocaml_lex_state=255;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)throw End_of_array;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_array_sep$0(v,lexbuf)
     {var ocaml_lex_state=257;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:throw End_of_array;
          case 2:return long_error$0(cst_Expected_or_but_found$15,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$66,v,lexbuf)}}}
    function ocaml_lex_read_tuple_rec
     (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var pos=[0,0],acc=[0,init_acc];
           try
            {read_space$0(v,lexbuf);
             read_tuple_end$0(lexbuf);
             acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf);
             pos[1]++;
             for(;;)
              {read_space$0(v,lexbuf);
               read_tuple_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf);
               pos[1]++;
               continue}}
           catch(_f2_)
            {_f2_ = caml_wrap_exception(_f2_);
             if(_f2_ === End_of_tuple)return acc[1];
             throw _f2_}
          case 1:return long_error$0(cst_Expected_but_found$20,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$67,v,lexbuf)}}}
    function read_tuple$0(read_cell,init_acc,v,lexbuf)
     {return ocaml_lex_read_tuple_rec(read_cell,init_acc,v,lexbuf,262)}
    function read_tuple_end$0(lexbuf)
     {var ocaml_lex_state=266;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)throw End_of_tuple;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_tuple_end2$0(v,std,lexbuf)
     {var ocaml_lex_state=268;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           if(std)return long_error$0(cst_Expected_or_but_found$16,v,lexbuf);
           throw End_of_tuple;
          case 1:
           if(std)throw End_of_tuple;
           return long_error$0(cst_Expected_or_but_found$17,v,lexbuf);
          default:return 0}}}
    function read_tuple_sep$0(v,lexbuf)
     {var ocaml_lex_state=271;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:throw End_of_tuple;
          case 2:return long_error$0(cst_Expected_or_but_found$18,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$68,v,lexbuf)}}}
    function read_tuple_sep2$0(v,std,lexbuf)
     {var ocaml_lex_state=276;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(4 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:
           if(std)return long_error$0(cst_Expected_or_but_found$19,v,lexbuf);
           throw End_of_tuple;
          case 2:
           if(std)throw End_of_tuple;
           return long_error$0(cst_Expected_or_but_found$20,v,lexbuf);
          case 3:return long_error$0(cst_Expected_or_but_found$21,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$69,v,lexbuf)}}}
    function ocaml_lex_read_abstract_fields$0
     (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var acc=[0,init_acc];
           try
            {read_space$0(v,lexbuf);
             read_object_end$0(lexbuf);
             var field_name=caml_call2(read_key,v,lexbuf);
             read_space$0(v,lexbuf);
             read_colon$0(v,lexbuf);
             read_space$0(v,lexbuf);
             acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf);
             for(;;)
              {read_space$0(v,lexbuf);
               read_object_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               var field_name$0=caml_call2(read_key,v,lexbuf);
               read_space$0(v,lexbuf);
               read_colon$0(v,lexbuf);
               read_space$0(v,lexbuf);
               acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf);
               continue}}
           catch(_f1_)
            {_f1_ = caml_wrap_exception(_f1_);
             if(_f1_ === End_of_object)return acc[1];
             throw _f1_}
          case 1:return long_error$0(cst_Expected_but_found$21,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$70,v,lexbuf)}}}
    function read_abstract_fields$0(read_key,read_field,init_acc,v,lexbuf)
     {return ocaml_lex_read_abstract_fields$0
              (read_key,read_field,init_acc,v,lexbuf,282)}
    function read_lcurl$0(v,lexbuf)
     {var ocaml_lex_state=286;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_but_found$22,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$71,v,lexbuf)}}}
    function read_object_end$0(lexbuf)
     {var ocaml_lex_state=290;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)throw End_of_object;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_object_sep$0(v,lexbuf)
     {var ocaml_lex_state=292;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:throw End_of_object;
          case 2:return long_error$0(cst_Expected_or_but_found$22,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$72,v,lexbuf)}}}
    function read_colon$0(v,lexbuf)
     {var ocaml_lex_state=297;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_but_found$23,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$73,v,lexbuf)}}}
    function start_any_tuple$0(v,lexbuf)
     {var ocaml_lex_state=301;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return 1;
          case 2:return long_error$0(cst_Expected_or_but_found$23,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$74,v,lexbuf)}}}
    function read_lpar$0(v,lexbuf)
     {var ocaml_lex_state=306;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_but_found$24,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$75,v,lexbuf)}}}
    function read_rpar$0(v,lexbuf)
     {var ocaml_lex_state=310;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_but_found$25,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$76,v,lexbuf)}}}
    function read_lbr$0(v,lexbuf)
     {var ocaml_lex_state=314;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_but_found$26,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$77,v,lexbuf)}}}
    function read_rbr$0(v,lexbuf)
     {var ocaml_lex_state=318;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Expected_but_found$27,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$78,v,lexbuf)}}}
    function finish_skip_variant$0(v,lexbuf)
     {var ocaml_lex_state=389;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           skip_json$0(v,lexbuf);
           read_space$0(v,lexbuf);
           return read_gt$0(v,lexbuf);
          case 1:return 0;
          case 2:return long_error$0(cst_Expected_or_but_found$24,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$81,v,lexbuf)}}}
    function finish_skip_stringlit$0(v,lexbuf)
     {var ocaml_lex_state=378;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$0(cst_Invalid_string_literal$3,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$80,v,lexbuf)}}}
    function skip_json$3(counter,v,lexbuf)
     {var _f0_=322;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return ocaml_lex_skip_json_rec$0(counter$0,v,lexbuf,_f0_)}
      return caml_trampoline_return
              (ocaml_lex_skip_json_rec$0,[0,v,lexbuf,_f0_])}
    function ocaml_lex_skip_json_rec$0(counter,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(18 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return 0;
          case 1:return 0;
          case 2:return 0;
          case 3:return 0;
          case 4:return 0;
          case 5:return 0;
          case 6:return finish_skip_stringlit$0(v,lexbuf);
          case 7:return 0;
          case 8:return 0;
          case 9:
           try
            {read_space$0(v,lexbuf);
             read_object_end$0(lexbuf);
             skip_ident$0(v,lexbuf);
             read_space$0(v,lexbuf);
             read_colon$0(v,lexbuf);
             read_space$0(v,lexbuf);
             skip_json$0(v,lexbuf);
             for(;;)
              {read_space$0(v,lexbuf);
               read_object_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               skip_ident$0(v,lexbuf);
               read_space$0(v,lexbuf);
               read_colon$0(v,lexbuf);
               read_space$0(v,lexbuf);
               skip_json$0(v,lexbuf);
               continue}}
           catch(_fZ_)
            {_fZ_ = caml_wrap_exception(_fZ_);
             if(_fZ_ === End_of_object)return 0;
             throw _fZ_}
          case 10:
           try
            {read_space$0(v,lexbuf);
             read_array_end$0(lexbuf);
             skip_json$0(v,lexbuf);
             for(;;)
              {read_space$0(v,lexbuf);
               read_array_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               skip_json$0(v,lexbuf);
               continue}}
           catch(_fY_)
            {_fY_ = caml_wrap_exception(_fY_);
             if(_fY_ === End_of_array)return 0;
             throw _fY_}
          case 11:
           try
            {read_space$0(v,lexbuf);
             read_tuple_end$0(lexbuf);
             skip_json$0(v,lexbuf);
             for(;;)
              {read_space$0(v,lexbuf);
               read_tuple_sep$0(v,lexbuf);
               read_space$0(v,lexbuf);
               skip_json$0(v,lexbuf);
               continue}}
           catch(_fX_)
            {_fX_ = caml_wrap_exception(_fX_);
             if(_fX_ === End_of_tuple)return 0;
             throw _fX_}
          case 12:
           read_space$0(v,lexbuf);
           skip_ident$0(v,lexbuf);
           read_space$0(v,lexbuf);
           return finish_skip_variant$0(v,lexbuf);
          case 13:
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return skip_json$3(counter$0,v,lexbuf)}
           return caml_trampoline_return(skip_json$3,[0,v,lexbuf]);
          case 14:
           finish_comment$0(v,lexbuf);
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return skip_json$3(counter$1,v,lexbuf)}
           return caml_trampoline_return(skip_json$3,[0,v,lexbuf]);
          case 15:
           newline$0(v,lexbuf);
           if(counter < 50)
            {var counter$2=counter + 1 | 0;
             return skip_json$3(counter$2,v,lexbuf)}
           return caml_trampoline_return(skip_json$3,[0,v,lexbuf]);
          case 16:
           if(counter < 50)
            {var counter$3=counter + 1 | 0;
             return skip_json$3(counter$3,v,lexbuf)}
           return caml_trampoline_return(skip_json$3,[0,v,lexbuf]);
          case 17:
           return custom_error$0(cst_Unexpected_end_of_input$79,v,lexbuf);
          default:return long_error$0(cst_Invalid_token$10,v,lexbuf)}}}
    function skip_json$0(v,lexbuf)
     {return caml_trampoline(skip_json$3(0,v,lexbuf))}
    function skip_ident$0(v,lexbuf)
     {var ocaml_lex_state=394;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return finish_skip_stringlit$0(v,lexbuf);
          case 1:return 0;
          case 2:
           return long_error$0(cst_Expected_string_or_identif$5,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$82,v,lexbuf)}}}
    function finish_buffer_variant(v,lexbuf)
     {var ocaml_lex_state=461;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call2(Bi_outbuf[15],v[1],58);
           buffer_json$0(v,lexbuf);
           buffer_space$0(v,lexbuf);
           var ocaml_lex_state$1=503;
           for(;;)
            {var
              ocaml_lex_state$2=
               caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$1,lexbuf);
             if(2 < ocaml_lex_state$2 >>> 0)
              {caml_call1(lexbuf[1],lexbuf);
               var ocaml_lex_state$1=ocaml_lex_state$2;
               continue}
             switch(ocaml_lex_state$2)
              {case 0:return caml_call2(Bi_outbuf[15],v[1],62);
               case 1:return long_error$0(cst_Expected_but_found$29,v,lexbuf);
               default:
                return custom_error$0(cst_Unexpected_end_of_input$91,v,lexbuf)}}
          case 1:return caml_call2(Bi_outbuf[15],v[1],62);
          case 2:return long_error$0(cst_Expected_or_but_found$25,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$85,v,lexbuf)}}}
    function finish_buffer_stringlit$0(v,lexbuf)
     {var ocaml_lex_state=450;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$0(v[1],lexbuf);
          case 1:return long_error$0(cst_Invalid_string_literal$4,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$84,v,lexbuf)}}}
    function buffer_json$3(counter,v,lexbuf)
     {var _fW_=399;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return ocaml_lex_buffer_json_rec$0(counter$0,v,lexbuf,_fW_)}
      return caml_trampoline_return
              (ocaml_lex_buffer_json_rec$0,[0,v,lexbuf,_fW_])}
    function ocaml_lex_buffer_json_rec$0(counter,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state$0,lexbuf);
        if(11 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return add_lexeme$0(v[1],lexbuf);
          case 1:return finish_buffer_stringlit$0(v,lexbuf);
          case 2:
           try
            {caml_call2(Bi_outbuf[15],v[1],123);
             buffer_space$0(v,lexbuf);
             buffer_object_end$0(v,lexbuf);
             buffer_ident$0(v,lexbuf);
             buffer_space$0(v,lexbuf);
             buffer_colon$0(v,lexbuf);
             buffer_space$0(v,lexbuf);
             buffer_json$0(v,lexbuf);
             for(;;)
              {buffer_space$0(v,lexbuf);
               buffer_object_sep$0(v,lexbuf);
               buffer_space$0(v,lexbuf);
               buffer_ident$0(v,lexbuf);
               buffer_space$0(v,lexbuf);
               buffer_colon$0(v,lexbuf);
               buffer_space$0(v,lexbuf);
               buffer_json$0(v,lexbuf);
               continue}}
           catch(_fV_)
            {_fV_ = caml_wrap_exception(_fV_);
             if(_fV_ === End_of_object)return 0;
             throw _fV_}
          case 3:
           try
            {caml_call2(Bi_outbuf[15],v[1],91);
             buffer_space$0(v,lexbuf);
             buffer_array_end$0(v,lexbuf);
             buffer_json$0(v,lexbuf);
             for(;;)
              {buffer_space$0(v,lexbuf);
               buffer_array_sep$0(v,lexbuf);
               buffer_space$0(v,lexbuf);
               buffer_json$0(v,lexbuf);
               continue}}
           catch(_fU_)
            {_fU_ = caml_wrap_exception(_fU_);
             if(_fU_ === End_of_array)return 0;
             throw _fU_}
          case 4:
           try
            {caml_call2(Bi_outbuf[15],v[1],40);
             buffer_space$0(v,lexbuf);
             buffer_tuple_end(v,lexbuf);
             buffer_json$0(v,lexbuf);
             for(;;)
              {buffer_space$0(v,lexbuf);
               buffer_tuple_sep(v,lexbuf);
               buffer_space$0(v,lexbuf);
               buffer_json$0(v,lexbuf);
               continue}}
           catch(_fT_)
            {_fT_ = caml_wrap_exception(_fT_);
             if(_fT_ === End_of_tuple)return 0;
             throw _fT_}
          case 5:
           caml_call2(Bi_outbuf[15],v[1],60);
           buffer_space$0(v,lexbuf);
           buffer_ident$0(v,lexbuf);
           buffer_space$0(v,lexbuf);
           return finish_buffer_variant(v,lexbuf);
          case 6:
           add_lexeme$0(v[1],lexbuf);
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return buffer_json$3(counter$0,v,lexbuf)}
           return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]);
          case 7:
           caml_call2(Bi_outbuf[13],v[1],cst$28);
           finish_buffer_comment$0(v,lexbuf);
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return buffer_json$3(counter$1,v,lexbuf)}
           return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]);
          case 8:
           caml_call2(Bi_outbuf[15],v[1],10);
           newline$0(v,lexbuf);
           if(counter < 50)
            {var counter$2=counter + 1 | 0;
             return buffer_json$3(counter$2,v,lexbuf)}
           return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]);
          case 9:
           add_lexeme$0(v[1],lexbuf);
           if(counter < 50)
            {var counter$3=counter + 1 | 0;
             return buffer_json$3(counter$3,v,lexbuf)}
           return caml_trampoline_return(buffer_json$3,[0,v,lexbuf]);
          case 10:
           return custom_error$0(cst_Unexpected_end_of_input$83,v,lexbuf);
          default:return long_error$0(cst_Invalid_token$11,v,lexbuf)}}}
    function buffer_json$0(v,lexbuf)
     {return caml_trampoline(buffer_json$3(0,v,lexbuf))}
    function buffer_ident$0(v,lexbuf)
     {var ocaml_lex_state=466;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return finish_buffer_stringlit$0(v,lexbuf);
          case 1:return add_lexeme$0(v[1],lexbuf);
          case 2:
           return long_error$0(cst_Expected_string_or_identif$6,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$86,v,lexbuf)}}}
    function buffer_space$0(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=471;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
          if(4 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:add_lexeme$0(v[1],lexbuf);newline$0(v,lexbuf);continue a;
            case 1:
             caml_call2(Bi_outbuf[13],v[1],cst$29);
             finish_buffer_comment$0(v,lexbuf);
             continue a;
            case 2:
             caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a;
            case 3:add_lexeme$0(v[1],lexbuf);continue a;
            default:return 0}}}}
    function buffer_object_end$0(v,lexbuf)
     {var ocaml_lex_state=478;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)
         {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object}
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function buffer_object_sep$0(v,lexbuf)
     {var ocaml_lex_state=480;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
          case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object;
          case 2:return long_error$0(cst_Expected_or_but_found$26,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$87,v,lexbuf)}}}
    function buffer_array_end$0(v,lexbuf)
     {var ocaml_lex_state=485;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)
         {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array}
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function buffer_array_sep$0(v,lexbuf)
     {var ocaml_lex_state=487;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
          case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array;
          case 2:return long_error$0(cst_Expected_or_but_found$27,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$88,v,lexbuf)}}}
    function buffer_tuple_end(v,lexbuf)
     {var ocaml_lex_state=492;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)
         {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple}
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function buffer_tuple_sep(v,lexbuf)
     {var ocaml_lex_state=494;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
          case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple;
          case 2:return long_error$0(cst_Expected_or_but_found$28,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$89,v,lexbuf)}}}
    function buffer_colon$0(v,lexbuf)
     {var ocaml_lex_state=499;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],58);
          case 1:return long_error$0(cst_Expected_but_found$28,v,lexbuf);
          default:
           return custom_error$0(cst_Unexpected_end_of_input$90,v,lexbuf)}}}
    function finish_buffer_comment$0(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=507;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$30);
            case 1:return long_error$0(cst_Unterminated_comment$2,v,lexbuf);
            case 2:
             caml_call2(Bi_outbuf[15],v[1],10);newline$0(v,lexbuf);continue a;
            default:add_lexeme$0(v[1],lexbuf);continue a}}}}
    function junk$0(lexbuf)
     {var ocaml_lex_state=513;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$0,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)return caml_call1(lexeme$0,lexbuf);
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    read_junk$0[1] = junk$0;
    function read_int8$0(v,lexbuf)
     {var n=read_int$0(v,lexbuf);
      if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n);
      return lexer_error$0(cst_Int8_overflow$0,v,lexbuf)}
    function read_list$0(read_cell,v,lexbuf)
     {var _fS_=read_list_rev$0(read_cell,v,lexbuf);
      return caml_call1(Stdlib_list[9],_fS_)}
    function read_array$0(read_cell,v,lexbuf)
     {var l=read_list_rev$0(read_cell,v,lexbuf);
      if(l)
       {var
         tl=l[2],
         x=l[1],
         len=caml_call1(Stdlib_list[1],l),
         a=caml_make_vect(len,x),
         r=[0,tl],
         _fP_=len - 2 | 0;
        if(! (_fP_ < 0))
         {var i=_fP_;
          for(;;)
           {var _fQ_=caml_call1(Stdlib_list[5],r[1]);
            caml_check_bound(a,i)[1 + i] = _fQ_;
            r[1] = caml_call1(Stdlib_list[6],r[1]);
            var _fR_=i - 1 | 0;
            if(0 !== i){var i=_fR_;continue}
            break}}
        return a}
      return [0]}
    function read_fields$0(read_field,init_acc,v)
     {return function(_fO_)
       {return read_abstract_fields$0(read_ident$0,read_field,init_acc,v,_fO_)}}
    function from_lexbuf$0(v,opt,lexbuf)
     {if(opt)var sth=opt[1],stream=sth;else var stream=0;
      read_space$0(v,lexbuf);
      if(read_eof$0(lexbuf))throw End_of_input;
      var x=read_json$0(v,lexbuf);
      if(1 - stream)
       {read_space$0(v,lexbuf);
        if(1 - read_eof$0(lexbuf))
         long_error$0(cst_Junk_after_end_of_JSON_val$0,v,lexbuf)}
      return x}
    function from_string$2(buf,fname,lnum,s)
     {try
       {var
         lexbuf=caml_call2(from_string$1,0,s),
         v=init_lexer(buf,fname,lnum,0),
         _fM_=from_lexbuf$0(v,0,lexbuf);
        return _fM_}
      catch(_fN_)
       {_fN_ = caml_wrap_exception(_fN_);
        if(_fN_ === End_of_input)return json_error(cst_Blank_input_data$1);
        throw _fN_}}
    function from_channel$2(buf,fname,lnum,ic)
     {try
       {var
         lexbuf=caml_call2(from_channel$1,0,ic),
         v=init_lexer(buf,fname,lnum,0),
         _fK_=from_lexbuf$0(v,0,lexbuf);
        return _fK_}
      catch(_fL_)
       {_fL_ = caml_wrap_exception(_fL_);
        if(_fL_ === End_of_input)return json_error(cst_Blank_input_data$2);
        throw _fL_}}
    function from_file$0(buf,fname,lnum,file)
     {var ic=caml_call1(Stdlib[79],file);
      try
       {var x=from_channel$2(buf,fname,lnum,ic);
        caml_call1(Stdlib[93],ic);
        return x}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}}
    var Finally$0=[248,cst_Yojson_Safe_Finally,caml_fresh_oo_id(0)];
    function stream_from_lexbuf$0(v,opt,lexbuf)
     {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
      function f(i)
       {try
         {var _fJ_=[0,from_lexbuf$0(v,stream$0,lexbuf)];return _fJ_}
        catch(e)
         {e = caml_wrap_exception(e);
          if(e === End_of_input){caml_call1(fin,0);return 0}
          try
           {caml_call1(fin,0)}
          catch(fin_e)
           {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$0,e,fin_e]}
          throw e}}
      return caml_call1(Stdlib_stream[3],f)}
    function stream_from_string$0(buf,fname,lnum,s)
     {var v=init_lexer(buf,fname,lnum,0);
      return stream_from_lexbuf$0(v,0,caml_call2(from_string$1,0,s))}
    function stream_from_channel$0(buf,fin,fname,lnum,ic)
     {var
       lexbuf=caml_call2(from_channel$1,0,ic),
       v=init_lexer(buf,fname,lnum,0);
      return stream_from_lexbuf$0(v,fin,lexbuf)}
    function stream_from_file$0(buf,fname,lnum,file)
     {var ic=caml_call1(Stdlib[79],file);
      function fin(param){return caml_call1(Stdlib[93],ic)}
      var
       fname$0=fname || [0,file],
       lexbuf=caml_call2(from_channel$1,0,ic),
       v=init_lexer(buf,fname$0,lnum,0);
      return stream_from_lexbuf$0(v,[0,fin],lexbuf)}
    function linestream_from_channel$0(buf,opt,fname,_fH_,ic)
     {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
      if(_fH_)var sth$0=_fH_[1],lnum0=sth$0;else var lnum0=1;
      var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)];
      function f(i)
       {try
         {var
           line=caml_call1(Stdlib[83],ic),
           lnum=lnum0 + i | 0,
           _fI_=[0,[0,826371656,from_string$2(buf$0,fname,[0,lnum],line)]];
          return _fI_}
        catch(e)
         {e = caml_wrap_exception(e);
          return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}}
      return caml_call1(Stdlib_stream[3],f)}
    function linestream_from_file$0(buf,fname,lnum,file)
     {var ic=caml_call1(Stdlib[79],file);
      function fin(param){return caml_call1(Stdlib[93],ic)}
      var fname$0=fname || [0,file];
      return linestream_from_channel$0(buf,[0,fin],fname$0,lnum,ic)}
    function prettify$0(std,s)
     {return pretty_to_string$1(std,from_string$2(0,0,0,s))}
    function compact$0(std,s)
     {return to_string$3(0,0,0,from_string$2(0,0,0,s))}
    function validate_json$0(path,value){return 0}
    var Type_error$0=[248,cst_Yojson_Safe_Util_Type_erro,caml_fresh_oo_id(0)];
    function typerr$0(msg,js)
     {if(typeof js === "number")
       var _fG_=cst_null$4;
      else
       var
        _fF_=js[1],
        _fG_=
         708012133 <= _fF_
          ?726928360 === _fF_
            ?cst_tuple$0
            :848054398 <= _fF_
              ?963043957 <= _fF_?cst_object$0:cst_array$0
              :737456202 <= _fF_?cst_bool$0:cst_variant$0
          :3654863 <= _fF_
            ?365180284 <= _fF_?cst_float$0:cst_int$0
            :-752863768 <= _fF_?cst_intlit$0:cst_string$0;
      throw [0,Type_error$0,caml_call2(Stdlib[28],msg,_fG_),js]}
    var Undefined$0=[248,cst_Yojson_Safe_Util_Undefined,caml_fresh_oo_id(0)];
    function symbol$0(_fE_,_fD_){return caml_call1(_fD_,_fE_)}
    function assoc$0(name,obj)
     {try
       {var _fB_=caml_call2(Stdlib_list[41],name,obj);return _fB_}
      catch(_fC_)
       {_fC_ = caml_wrap_exception(_fC_);
        if(_fC_ === Stdlib[8])return 870828711;
        throw _fC_}}
    function member$0(name,js)
     {if(typeof js !== "number" && 963043957 === js[1])
       {var obj=js[2];return assoc$0(name,obj)}
      var _fA_=caml_call2(Stdlib[28],name,cst_of_non_object_type$0);
      return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_member$0,_fA_),js)}
    function index$0(i,js)
     {if(typeof js !== "number" && 848054398 === js[1])
       {var
         l=js[2],
         len=caml_call1(Stdlib_list[1],l),
         wrapped_index=0 <= i?i:len + i | 0;
        if(0 <= wrapped_index && ! (len <= wrapped_index))
         return caml_call2(Stdlib_list[7],l,wrapped_index);
        var
         _fy_=caml_call1(Stdlib[33],i),
         _fz_=caml_call2(Stdlib[28],_fy_,cst_out_of_bounds$0);
        throw [0,Undefined$0,caml_call2(Stdlib[28],cst_Index$0,_fz_),js]}
      var
       _fw_=caml_call1(Stdlib[33],i),
       _fx_=caml_call2(Stdlib[28],_fw_,cst_of_non_array_type$0);
      return typerr$0(caml_call2(Stdlib[28],cst_Can_t_get_index$0,_fx_),js)}
    function map$0(f,js)
     {if(typeof js !== "number" && 848054398 === js[1])
       {var l=js[2];return [0,848054398,caml_call2(Stdlib_list[17],f,l)]}
      return typerr$0(cst_Can_t_map_function_over_no$0,js)}
    function to_assoc$0(js)
     {if(typeof js !== "number" && 963043957 === js[1])
       {var obj=js[2];return obj}
      return typerr$0(cst_Expected_object_got$0,js)}
    function to_option$0(f,x){return 870828711 === x?0:[0,caml_call1(f,x)]}
    function to_bool$0(js)
     {if(typeof js !== "number" && 737456202 === js[1]){var b=js[2];return b}
      return typerr$0(cst_Expected_bool_got$0,js)}
    function to_bool_option$0(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       if(737456202 === js[1]){var b=js[2];return [0,b]}
      return typerr$0(cst_Expected_bool_or_null_got$0,js)}
    function to_number$0(js)
     {if(typeof js !== "number")
       {var _fv_=js[1];
        if(3654863 === _fv_){var i=js[2];return i}
        if(365180284 === _fv_){var f=js[2];return f}}
      return typerr$0(cst_Expected_number_got$0,js)}
    function to_number_option$0(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       {var _fu_=js[1];
        if(3654863 === _fu_){var i=js[2];return [0,i]}
        if(365180284 === _fu_){var f=js[2];return [0,f]}}
      return typerr$0(cst_Expected_number_or_null_go$0,js)}
    function to_float$0(js)
     {if(typeof js !== "number" && 365180284 === js[1]){var f=js[2];return f}
      return typerr$0(cst_Expected_float_got$0,js)}
    function to_float_option$0(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       if(365180284 === js[1]){var f=js[2];return [0,f]}
      return typerr$0(cst_Expected_float_or_null_got$0,js)}
    function to_int$0(js)
     {if(typeof js !== "number" && 3654863 === js[1]){var i=js[2];return i}
      return typerr$0(cst_Expected_int_got$0,js)}
    function to_int_option$0(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       if(3654863 === js[1]){var i=js[2];return [0,i]}
      return typerr$0(cst_Expected_int_or_null_got$0,js)}
    function to_list$0(js)
     {if(typeof js !== "number" && 848054398 === js[1]){var l=js[2];return l}
      return typerr$0(cst_Expected_array_got$0,js)}
    function to_string$4(js)
     {if(typeof js !== "number" && -976970511 === js[1]){var s=js[2];return s}
      return typerr$0(cst_Expected_string_got$0,js)}
    function to_string_option$0(js)
     {if(typeof js === "number")
       {if(870828711 === js)return 0}
      else
       if(-976970511 === js[1]){var s=js[2];return [0,s]}
      return typerr$0(cst_Expected_string_or_null_go$0,js)}
    function convert_each$0(f,js)
     {if(typeof js !== "number" && 848054398 === js[1])
       {var l=js[2];return caml_call2(Stdlib_list[17],f,l)}
      return typerr$0(cst_Can_t_convert_each_element$0,js)}
    function filter_map$0(f,l$0)
     {var acc=0,l=l$0;
      for(;;)
       {if(l)
         {var tl=l[2],x=l[1],match=caml_call1(f,x);
          if(match){var y=match[1],acc$0=[0,y,acc],acc=acc$0,l=tl;continue}
          var l=tl;
          continue}
        return caml_call1(Stdlib_list[9],acc)}}
    function flatten$0(l$0)
     {var acc=0,l=l$0;
      for(;;)
       {if(l)
         {var tl=l[2],x=l[1];
          if(typeof x !== "number" && 848054398 === x[1])
           {var
             l2=x[2],
             acc$0=caml_call2(Stdlib_list[12],l2,acc),
             acc=acc$0,
             l=tl;
            continue}
          var l=tl;
          continue}
        return caml_call1(Stdlib_list[9],acc)}}
    function filter_index$0(i,l)
     {return filter_map$0
              (function(param)
                {if(typeof param !== "number" && 848054398 === param[1])
                  {var l=param[2];
                   try
                    {var _fs_=[0,caml_call2(Stdlib_list[7],l,i)];return _fs_}
                   catch(_ft_){return 0}}
                 return 0},
               l)}
    function filter_list$0(l)
     {return filter_map$0
              (function(param)
                {if(typeof param !== "number" && 848054398 === param[1])
                  {var l=param[2];return [0,l]}
                 return 0},
               l)}
    function filter_member$0(k,l)
     {return filter_map$0
              (function(param)
                {if(typeof param !== "number" && 963043957 === param[1])
                  {var l=param[2];
                   try
                    {var _fq_=[0,caml_call2(Stdlib_list[41],k,l)];return _fq_}
                   catch(_fr_){return 0}}
                 return 0},
               l)}
    function filter_assoc$0(l)
     {return filter_map$0
              (function(param)
                {if(typeof param !== "number" && 963043957 === param[1])
                  {var l=param[2];return [0,l]}
                 return 0},
               l)}
    function filter_bool$0(l)
     {return filter_map$0
              (function(param)
                {if(typeof param !== "number" && 737456202 === param[1])
                  {var x=param[2];return [0,x]}
                 return 0},
               l)}
    function filter_int$0(l)
     {return filter_map$0
              (function(param)
                {if(typeof param !== "number" && 3654863 === param[1])
                  {var x=param[2];return [0,x]}
                 return 0},
               l)}
    function filter_float$0(l)
     {return filter_map$0
              (function(param)
                {if(typeof param !== "number" && 365180284 === param[1])
                  {var x=param[2];return [0,x]}
                 return 0},
               l)}
    function filter_number$0(l)
     {return filter_map$0
              (function(param)
                {if(typeof param !== "number")
                  {var _fp_=param[1];
                   if(3654863 === _fp_){var x=param[2];return [0,x]}
                   if(365180284 === _fp_){var x$0=param[2];return [0,x$0]}}
                 return 0},
               l)}
    function filter_string$0(l)
     {return filter_map$0
              (function(param)
                {if(typeof param !== "number" && -976970511 === param[1])
                  {var x=param[2];return [0,x]}
                 return 0},
               l)}
    function keys$0(o)
     {function _fn_(param){var key=param[1];return key}
      var _fo_=caml_call1(Stdlib_list[17],_fn_);
      return symbol$0(to_assoc$0(o),_fo_)}
    function values$0(o)
     {function _fl_(param){var value=param[2];return value}
      var _fm_=caml_call1(Stdlib_list[17],_fl_);
      return symbol$0(to_assoc$0(o),_fm_)}
    function combine$0(first,match)
     {if
       (typeof first
        !==
        "number"
        &&
        963043957
        ===
        first[1]
        &&
        typeof match
        !==
        "number"
        &&
        963043957
        ===
        match[1])
       {var b=match[2],a=first[2];
        return [0,963043957,caml_call2(Stdlib[37],a,b)]}
      throw [0,Stdlib[6],cst_Expected_two_objects_check$0]}
    function hex$4(n)
     {var _fk_=10 <= n?n + 87 | 0:n + 48 | 0;
      return caml_call1(Stdlib_char[1],_fk_)}
    function write_special$2(src,start,stop,ob,str)
     {caml_call4(Bi_outbuf[14],ob,src,start[1],stop - start[1] | 0);
      caml_call2(Bi_outbuf[13],ob,str);
      start[1] = stop + 1 | 0;
      return 0}
    function finish_string$4(src,start,ob)
     {try
       {var
         _fj_=
          caml_call4
           (Bi_outbuf[14],
            ob,
            src,
            start[1],
            caml_ml_string_length(src) - start[1] | 0);
        return _fj_}
      catch(exc)
       {exc = caml_wrap_exception(exc);
        caml_call4
         (Stdlib_printf[3],
          _cR_,
          src,
          start[1],
          caml_ml_string_length(src) - start[1] | 0);
        throw exc}}
    function write_string$2(ob,s)
     {caml_call2(Bi_outbuf[15],ob,34);
      var start=[0,0],_fh_=caml_ml_string_length(s) - 1 | 0,_fg_=0;
      if(! (_fh_ < 0))
       {var i$0=_fg_;
        for(;;)
         {var c=caml_string_get(s,i$0);
          if(92 === c)
           write_special$2(s,start,i$0,ob,cst$31);
          else
           {var switch$0=0;
            if(35 <= c)
             if(127 === c)switch$0 = 1;else switch$0 = 2;
            else
             if(8 <= c)
              {var switcher=c - 8 | 0,switch$1=0;
               switch(switcher)
                {case 0:write_special$2(s,start,i$0,ob,cst_b$2);break;
                 case 1:write_special$2(s,start,i$0,ob,cst_t$2);break;
                 case 2:write_special$2(s,start,i$0,ob,cst_n$2);break;
                 case 4:write_special$2(s,start,i$0,ob,cst_f$2);break;
                 case 5:write_special$2(s,start,i$0,ob,cst_r$2);break;
                 case 26:write_special$2(s,start,i$0,ob,cst$32);break;
                 case 24:
                 case 25:switch$0 = 2;switch$1 = 1;break;
                 default:switch$0 = 1;switch$1 = 1}}
             else
              switch$0 = 1;
            switch(switch$0)
             {case 2:break;
              case 1:
               caml_call4(Bi_outbuf[14],ob,s,start[1],i$0 - start[1] | 0);
               var i=caml_call2(Bi_outbuf[10],ob,6),dst=ob[1];
               caml_call5(Stdlib_bytes[12],cst_u00$2,0,dst,i,4);
               caml_bytes_set(dst,i + 4 | 0,hex$4(c >>> 4 | 0));
               caml_bytes_set(dst,i + 5 | 0,hex$4(c & 15));
               start[1] = i$0 + 1 | 0;
               break
              }}
          var _fi_=i$0 + 1 | 0;
          if(_fh_ !== i$0){var i$0=_fi_;continue}
          break}}
      finish_string$4(s,start,ob);
      return caml_call2(Bi_outbuf[15],ob,34)}
    function write_null$2(ob,param)
     {return caml_call2(Bi_outbuf[13],ob,cst_null$5)}
    function write_bool$2(ob,x)
     {var _ff_=x?cst_true$3:cst_false$3;
      return caml_call2(Bi_outbuf[13],ob,_ff_)}
    var
     _cS_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[20])),
     _cT_=caml_ml_string_length(caml_call1(Stdlib[33],Stdlib[19]));
    caml_call2(Stdlib[17],_cT_,_cS_);
    var
     write_intlit$1=Bi_outbuf[13],
     write_floatlit$0=Bi_outbuf[13],
     write_stringlit$0=Bi_outbuf[13];
    function iter2$2(f_elt,f_sep,x,param$0)
     {if(param$0)
       {var l$0=param$0[2],y$0=param$0[1];
        caml_call2(f_elt,x,y$0);
        var param=l$0;
        for(;;)
         {if(param)
           {var l=param[2],y=param[1];
            caml_call1(f_sep,x);
            caml_call2(f_elt,x,y);
            var param=l;
            continue}
          return 0}}
      return 0}
    function f_sep$2(ob){return caml_call2(Bi_outbuf[15],ob,44)}
    function write_variant$1(ob,s,o)
     {caml_call2(Bi_outbuf[15],ob,60);
      write_string$2(ob,s);
      if(o){var x=o[1];caml_call2(Bi_outbuf[15],ob,58);write_t$2(ob,x)}
      return caml_call2(Bi_outbuf[15],ob,62)}
    function write_tuple$1(ob,l)
     {caml_call2(Bi_outbuf[15],ob,40);
      iter2$2(write_t$2,f_sep$2,ob,l);
      return caml_call2(Bi_outbuf[15],ob,41)}
    function write_list$2(ob,l)
     {caml_call2(Bi_outbuf[15],ob,91);
      iter2$2(write_t$2,f_sep$2,ob,l);
      return caml_call2(Bi_outbuf[15],ob,93)}
    function write_assoc$2(ob,l)
     {function f_elt(ob,param)
       {var x=param[2],s=param[1];
        write_string$2(ob,s);
        caml_call2(Bi_outbuf[15],ob,58);
        return write_t$2(ob,x)}
      caml_call2(Bi_outbuf[15],ob,123);
      iter2$2(f_elt,f_sep$2,ob,l);
      return caml_call2(Bi_outbuf[15],ob,125)}
    function write_t$2(ob,x)
     {if(typeof x === "number")return write_null$2(ob,0);
      var _fe_=x[1];
      if(737456202 <= _fe_)
       {if(928231259 <= _fe_)
         {if(963043957 <= _fe_){var l=x[2];return write_assoc$2(ob,l)}
          var s=x[2];
          return caml_call2(Bi_outbuf[13],ob,s)}
        if(848054398 <= _fe_){var l$0=x[2];return write_list$2(ob,l$0)}
        var b=x[2];
        return write_bool$2(ob,b)}
      if(708012133 <= _fe_)
       {if(726928360 <= _fe_){var l$1=x[2];return write_tuple$1(ob,l$1)}
        var match=x[2],o=match[2],s$0=match[1];
        return write_variant$1(ob,s$0,o)}
      if(-375152890 <= _fe_)
       {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)}
      var s$2=x[2];
      return caml_call2(Bi_outbuf[13],ob,s$2)}
    function write_std_variant$1(ob,s,o)
     {if(o)
       {var x=o[1];
        caml_call2(Bi_outbuf[15],ob,91);
        write_string$2(ob,s);
        caml_call2(Bi_outbuf[15],ob,44);
        write_std_json$2(ob,x);
        return caml_call2(Bi_outbuf[15],ob,93)}
      return write_string$2(ob,s)}
    function write_std_tuple$1(ob,l)
     {caml_call2(Bi_outbuf[15],ob,91);
      iter2$2(write_std_json$2,f_sep$2,ob,l);
      return caml_call2(Bi_outbuf[15],ob,93)}
    function write_std_json$2(ob,x)
     {if(typeof x === "number")return write_null$2(ob,0);
      var _fd_=x[1];
      if(737456202 <= _fd_)
       {if(928231259 <= _fd_)
         {if(963043957 <= _fd_)
           {var
             l=x[2],
             f_elt=
              function(ob,param)
               {var x=param[2],s=param[1];
                write_string$2(ob,s);
                caml_call2(Bi_outbuf[15],ob,58);
                return write_std_json$2(ob,x)};
            caml_call2(Bi_outbuf[15],ob,123);
            iter2$2(f_elt,f_sep$2,ob,l);
            return caml_call2(Bi_outbuf[15],ob,125)}
          var s=x[2];
          return caml_call2(Bi_outbuf[13],ob,s)}
        if(848054398 <= _fd_)
         {var l$0=x[2];
          caml_call2(Bi_outbuf[15],ob,91);
          iter2$2(write_std_json$2,f_sep$2,ob,l$0);
          return caml_call2(Bi_outbuf[15],ob,93)}
        var b=x[2];
        return write_bool$2(ob,b)}
      if(708012133 <= _fd_)
       {if(726928360 <= _fd_){var l$1=x[2];return write_std_tuple$1(ob,l$1)}
        var match=x[2],o=match[2],s$0=match[1];
        return write_std_variant$1(ob,s$0,o)}
      if(-375152890 <= _fd_)
       {var s$1=x[2];return caml_call2(Bi_outbuf[13],ob,s$1)}
      var s$2=x[2];
      return caml_call2(Bi_outbuf[13],ob,s$2)}
    function to_outbuf$2(opt,ob,x)
     {if(opt)var sth=opt[1],std=sth;else var std=0;
      return std
              ?is_object_or_array(x)
                ?write_std_json$2(ob,x)
                :json_error(cst_Root_is_not_an_object_or_a$3)
              :write_t$2(ob,x)}
    function to_string$5(buf,opt,std,x)
     {if(opt)var sth=opt[1],len=sth;else var len=256;
      if(buf)
       {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
      else
       var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
      to_outbuf$2(std,ob$0,x);
      var s=caml_call1(Bi_outbuf[4],ob$0);
      caml_call1(Bi_outbuf[19],ob$0);
      return s}
    function to_channel$3(buf,len,std,oc,x)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
      to_outbuf$2(std,ob$0,x);
      return caml_call1(Bi_outbuf[6],ob$0)}
    function to_output$2(buf,len,std,out,x)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[7],len,0,out);
      to_outbuf$2(std,ob$0,x);
      return caml_call1(Bi_outbuf[8],ob$0)}
    function to_file$2(len,std,file,x)
     {var oc=caml_call1(Stdlib[60],file);
      try
       {to_channel$3(0,len,std,oc,x);
        var _fc_=caml_call1(Stdlib[76],oc);
        return _fc_}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
    function stream_to_outbuf$2(std,ob,st)
     {function _fa_(_fb_){return to_outbuf$2(std,ob,_fb_)}
      return caml_call2(Stdlib_stream[8],_fa_,st)}
    function stream_to_string$2(buf,opt,std,st)
     {if(opt)var sth=opt[1],len=sth;else var len=256;
      if(buf)
       {var ob=buf[1];caml_call1(Bi_outbuf[19],ob);var ob$0=ob}
      else
       var ob$0=caml_call3(Bi_outbuf[3],0,0,len);
      stream_to_outbuf$2(std,ob$0,st);
      var s=caml_call1(Bi_outbuf[4],ob$0);
      caml_call1(Bi_outbuf[19],ob$0);
      return s}
    function stream_to_channel$2(buf,len,std,oc,st)
     {if(buf)
       var ob=buf[1],ob$0=ob;
      else
       var ob$0=caml_call3(Bi_outbuf[5],len,0,oc);
      stream_to_outbuf$2(std,ob$0,st);
      return caml_call1(Bi_outbuf[6],ob$0)}
    function stream_to_file$2(len,std,file,st)
     {var oc=caml_call1(Stdlib[60],file);
      try
       {stream_to_channel$2(0,len,std,oc,st);
        var _e$_=caml_call1(Stdlib[76],oc);
        return _e$_}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[77],oc);throw e}}
    function sort$2(x)
     {if(typeof x !== "number")
       {var _e2_=x[1];
        if(726928361 <= _e2_)
         {if(848054398 === _e2_)
           {var l=x[2],_e3_=caml_call2(Stdlib_list[19],sort$2,l);
            return [0,848054398,caml_call1(Stdlib_list[9],_e3_)]}
          if(963043957 === _e2_)
           {var
             l$0=x[2],
             _e4_=
              function(param)
               {var v=param[2],k=param[1];return [0,k,sort$2(v)]},
             _e5_=caml_call2(Stdlib_list[19],_e4_,l$0),
             l$1=caml_call1(Stdlib_list[9],_e5_),
             _e6_=
              function(param,_e__)
               {var b=_e__[1],a=param[1];
                return caml_call2(Stdlib_string[33],a,b)};
            return [0,963043957,caml_call2(Stdlib_list[52],_e6_,l$1)]}}
        else
         if(708012133 === _e2_)
          {var _e7_=x[2],_e8_=_e7_[2];
           if(_e8_)
            {var v=_e8_[1],k=_e7_[1],v$0=sort$2(v);
             return v === v$0?x:[0,708012133,[0,k,[0,v$0]]]}}
         else
          if(726928360 <= _e2_)
           {var l$2=x[2],_e9_=caml_call2(Stdlib_list[19],sort$2,l$2);
            return [0,726928360,caml_call1(Stdlib_list[9],_e9_)]}}
      return x}
    function pp$2(fmt,param)
     {if(typeof param === "number")
       return caml_call2(Stdlib_format[13],fmt,cst_Null$2);
      var _eV_=param[1];
      if(737456202 <= _eV_)
       {if(928231259 <= _eV_)
         {if(963043957 <= _eV_)
           {var xs=param[2];
            caml_call2(Stdlib_format[123],fmt,_cU_);
            caml_call2(Stdlib_format[123],fmt,_cV_);
            var
             _eW_=0,
             _eX_=
              function(sep,param)
               {var value=param[2],key=param[1];
                if(sep)caml_call2(Stdlib_format[123],fmt,_cW_);
                caml_call2(Stdlib_format[123],fmt,_cX_);
                caml_call3(Stdlib_format[123],fmt,_cY_,key);
                caml_call2(Stdlib_format[123],fmt,_cZ_);
                pp$2(fmt,value);
                caml_call2(Stdlib_format[123],fmt,_c0_);
                return 1};
            caml_call3(Stdlib_list[22],_eX_,_eW_,xs);
            caml_call2(Stdlib_format[123],fmt,_c1_);
            return caml_call2(Stdlib_format[123],fmt,_c2_)}
          var x=param[2];
          caml_call2(Stdlib_format[123],fmt,_c3_);
          caml_call3(Stdlib_format[123],fmt,_c4_,x);
          return caml_call2(Stdlib_format[123],fmt,_c5_)}
        if(848054398 <= _eV_)
         {var xs$0=param[2];
          caml_call2(Stdlib_format[123],fmt,_c6_);
          caml_call2(Stdlib_format[123],fmt,_c7_);
          var
           _eY_=0,
           _eZ_=
            function(sep,x)
             {if(sep)caml_call2(Stdlib_format[123],fmt,_c8_);
              pp$2(fmt,x);
              return 1};
          caml_call3(Stdlib_list[22],_eZ_,_eY_,xs$0);
          caml_call2(Stdlib_format[123],fmt,_c9_);
          return caml_call2(Stdlib_format[123],fmt,_c__)}
        var x$0=param[2];
        caml_call2(Stdlib_format[123],fmt,_c$_);
        caml_call3(Stdlib_format[123],fmt,_da_,x$0);
        return caml_call2(Stdlib_format[123],fmt,_db_)}
      if(708012133 <= _eV_)
       {if(726928360 <= _eV_)
         {var tup=param[2];
          caml_call2(Stdlib_format[123],fmt,_dc_);
          caml_call2(Stdlib_format[123],fmt,_dd_);
          var
           _e0_=0,
           _e1_=
            function(sep,e)
             {if(sep)caml_call2(Stdlib_format[123],fmt,_de_);
              pp$2(fmt,e);
              return 1};
          caml_call3(Stdlib_list[22],_e1_,_e0_,tup);
          caml_call2(Stdlib_format[123],fmt,_df_);
          return caml_call2(Stdlib_format[123],fmt,_dg_)}
        var match=param[2],value=match[2],name=match[1];
        caml_call2(Stdlib_format[123],fmt,_dh_);
        caml_call2(Stdlib_format[123],fmt,_di_);
        caml_call3(Stdlib_format[123],fmt,_dj_,name);
        caml_call2(Stdlib_format[123],fmt,_dk_);
        if(value)
         {var x$1=value[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$1);
          pp$2(fmt,x$1);
          caml_call2(Stdlib_format[13],fmt,cst$33)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$1);
        caml_call2(Stdlib_format[123],fmt,_dl_);
        return caml_call2(Stdlib_format[123],fmt,_dm_)}
      if(-375152890 <= _eV_)
       {var x$2=param[2];
        caml_call2(Stdlib_format[123],fmt,_dn_);
        caml_call3(Stdlib_format[123],fmt,_do_,x$2);
        return caml_call2(Stdlib_format[123],fmt,_dp_)}
      var x$3=param[2];
      caml_call2(Stdlib_format[123],fmt,_dq_);
      caml_call3(Stdlib_format[123],fmt,_dr_,x$3);
      return caml_call2(Stdlib_format[123],fmt,_ds_)}
    function show$2(x){return caml_call3(Stdlib_format[127],_dt_,pp$2,x)}
    function equal$2(a,b)
     {var a$0=a,b$0=b;
      for(;;)
       {if(typeof a$0 === "number")
         {if(870828711 === a$0 && 870828711 === b$0)return 1}
        else
         {var _eO_=a$0[1],switch$0=0;
          if(726928361 <= _eO_)
           {if(848054399 <= _eO_)
             {if(928231259 === _eO_)
               {if(typeof b$0 !== "number" && 928231259 === b$0[1])
                 {var b$1=b$0[2],a$1=a$0[2];return caml_equal(a$1,b$1)}}
              else
               if
                (963043957
                 ===
                 _eO_
                 &&
                 typeof b$0
                 !==
                 "number"
                 &&
                 963043957
                 ===
                 b$0[1])
                {var
                  ys=b$0[2],
                  xs=a$0[2],
                  compare_keys=
                   function(param,_eU_)
                    {var key=_eU_[1],key$0=param[1];
                     return caml_call2(Stdlib_string[33],key$0,key)},
                  xs$0=caml_call2(Stdlib_list[52],compare_keys,xs),
                  ys$0=caml_call2(Stdlib_list[52],compare_keys,ys);
                 try
                  {var
                    _eP_=
                     function(param,_eT_)
                      {var
                        value=_eT_[2],
                        key=_eT_[1],
                        value$0=param[2],
                        key$0=param[1],
                        match=caml_string_equal(key$0,key);
                       return match?equal$2(value$0,value):0},
                    result=caml_call3(Stdlib_list[31],_eP_,xs$0,ys$0);
                   return result}
                 catch(_eS_)
                  {_eS_ = caml_wrap_exception(_eS_);
                   if(_eS_[1] === Stdlib[6])return 0;
                   throw _eS_}}}
            else
             if(737456202 === _eO_)
              {if(typeof b$0 !== "number" && 737456202 === b$0[1])
                {var b$2=b$0[2],a$2=a$0[2];return caml_equal(a$2,b$2)}}
             else
              if
               (848054398
                <=
                _eO_
                &&
                typeof b$0
                !==
                "number"
                &&
                848054398
                ===
                b$0[1])
               {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}}
          else
           if(-375152889 <= _eO_)
            {if(708012133 === _eO_)
              {if(typeof b$0 !== "number" && 708012133 === b$0[1])
                {var
                  _eQ_=b$0[2],
                  value=_eQ_[2],
                  name=_eQ_[1],
                  match=a$0[2],
                  value$0=match[2],
                  name$0=match[1],
                  match$0=caml_equal(name$0,name);
                 if(match$0)
                  {if(value$0)
                    {if(value)
                      {var b$3=value[1],a$3=value$0[1],a$0=a$3,b$0=b$3;continue}}
                   else
                    if(! value)return 1;
                   return 0}
                 return 0}}
             else
              if
               (726928360
                <=
                _eO_
                &&
                typeof b$0
                !==
                "number"
                &&
                726928360
                ===
                b$0[1])
               {var ys$1=b$0[2],xs$1=a$0[2];switch$0 = 1}}
           else
            if(-752863768 === _eO_)
             {if(typeof b$0 !== "number" && -752863768 === b$0[1])
               {var b$4=b$0[2],a$4=a$0[2];return caml_equal(a$4,b$4)}}
            else
             if
              (-375152890
               <=
               _eO_
               &&
               typeof b$0
               !==
               "number"
               &&
               -375152890
               ===
               b$0[1])
              {var b$5=b$0[2],a$5=a$0[2];return caml_equal(a$5,b$5)}
          if(switch$0)
           try
            {var result$0=caml_call3(Stdlib_list[31],equal$2,xs$1,ys$1);
             return result$0}
           catch(_eR_)
            {_eR_ = caml_wrap_exception(_eR_);
             if(_eR_[1] === Stdlib[6])return 0;
             throw _eR_}}
        return 0}}
    function pretty_format$2(std,x){return format(std,x)}
    function pretty_print$2(std,out,x)
     {var _eN_=pretty_format$2(std,x);
      return caml_call2(Easy_format[4][2],out,_eN_)}
    function pretty_to_string$2(std,x){return to_string$0(std,x)}
    function pretty_to_channel$2(std,oc,x){return to_channel$0(std,oc,x)}
    var
     from_channel$3=Stdlib_lexing[2],
     from_string$3=Stdlib_lexing[3],
     lexeme$1=Stdlib_lexing[6],
     sub_lexeme$1=Stdlib_lexing[14],
     sub_lexeme_char$1=Stdlib_lexing[16];
    function hex$5(c)
     {if(65 <= c)
       {if(97 <= c)
         {if(! (103 <= c))return (c - 97 | 0) + 10 | 0}
        else
         if(! (71 <= c))return (c - 65 | 0) + 10 | 0}
      else
       {var switcher=c - 48 | 0;if(! (9 < switcher >>> 0))return c - 48 | 0}
      throw [0,Assert_failure,_du_]}
    function custom_error$1(descr,v,lexbuf)
     {var
       offs=lexbuf[4] - 1 | 0,
       bol=v[3],
       pos1=((offs + lexbuf[5] | 0) - bol | 0) - 1 | 0,
       pos2=caml_call2(Stdlib[17],pos1,(offs + lexbuf[6] | 0) - bol | 0),
       _eM_=v[4];
      if(_eM_)
       var s=_eM_[1],file_line=caml_call2(Stdlib_printf[4],_dv_,s);
      else
       var file_line=cst_Line$1;
      var
       bytes=
        pos1 === pos2
         ?caml_call2(Stdlib_printf[4],_dw_,pos1 + 1 | 0)
         :caml_call3(Stdlib_printf[4],_dy_,pos1 + 1 | 0,pos2 + 1 | 0),
       msg=caml_call5(Stdlib_printf[4],_dx_,file_line,v[2],bytes,descr);
      return json_error(msg)}
    function lexer_error$1(descr,v,lexbuf)
     {var _eL_=caml_call1(lexeme$1,lexbuf);
      return custom_error$1
              (caml_call3(Stdlib_printf[4],_dz_,descr,_eL_),v,lexbuf)}
    var read_junk$1=[0,function(param){throw [0,Assert_failure,_dA_]}];
    function long_error$1(descr,v,lexbuf)
     {var
       junk=caml_call1(lexeme$1,lexbuf),
       extra_junk=caml_call1(read_junk$1[1],lexbuf);
      return custom_error$1
              (caml_call4(Stdlib_printf[4],_dB_,descr,junk,extra_junk),
               v,
               lexbuf)}
    var
     _dC_=0 === (Stdlib[20] % 10 | 0)?0:1,
     min10$1=(Stdlib[20] / 10 | 0) - _dC_ | 0,
     _dD_=0 === (Stdlib[19] % 10 | 0)?0:1,
     max10$1=(Stdlib[19] / 10 | 0) + _dD_ | 0,
     Int_overflow$1=[248,cst_Yojson_Raw_Int_overflow,caml_fresh_oo_id(0)];
    function extract_positive_int$1(lexbuf)
     {var
       start=lexbuf[5],
       stop=lexbuf[6],
       s=lexbuf[2],
       n=[0,0],
       _eI_=stop - 1 | 0;
      if(! (_eI_ < start))
       {var i=start;
        for(;;)
         {if(max10$1 <= n[1])throw Int_overflow$1;
          var _eJ_=caml_bytes_get(s,i) - 48 | 0;
          n[1] = (10 * n[1] | 0) + _eJ_ | 0;
          var _eK_=i + 1 | 0;
          if(_eI_ !== i){var i=_eK_;continue}
          break}}
      if(0 <= n[1])return n[1];
      throw Int_overflow$1}
    function make_positive_int(v,lexbuf)
     {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]}
    function extract_negative_int$1(lexbuf)
     {var
       start=lexbuf[5] + 1 | 0,
       stop=lexbuf[6],
       s=lexbuf[2],
       n=[0,0],
       _eF_=stop - 1 | 0;
      if(! (_eF_ < start))
       {var i=start;
        for(;;)
         {if(n[1] <= min10$1)throw Int_overflow$1;
          var _eG_=caml_bytes_get(s,i) - 48 | 0;
          n[1] = (10 * n[1] | 0) - _eG_ | 0;
          var _eH_=i + 1 | 0;
          if(_eF_ !== i){var i=_eH_;continue}
          break}}
      if(0 < n[1])throw Int_overflow$1;
      return n[1]}
    function make_negative_int(v,lexbuf)
     {return [0,-752863768,caml_call1(lexeme$1,lexbuf)]}
    function newline$1(v,lexbuf)
     {v[2] = v[2] + 1 | 0;v[3] = lexbuf[4] + lexbuf[6] | 0;return 0}
    function add_lexeme$1(buf,lexbuf)
     {var len=lexbuf[6] - lexbuf[5] | 0;
      return caml_call4(Bi_outbuf[12],buf,lexbuf[2],lexbuf[5],len)}
    function read_json$4(counter,v,lexbuf)
     {var _eE_=0;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return ocaml_lex_read_json_rec$1(counter$0,v,lexbuf,_eE_)}
      return caml_trampoline_return
              (ocaml_lex_read_json_rec$1,[0,v,lexbuf,_eE_])}
    function ocaml_lex_read_json_rec$1(counter,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(19 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return _dE_;
          case 1:return _dF_;
          case 2:return 870828711;
          case 3:return _dG_;
          case 4:return _dH_;
          case 5:return _dI_;
          case 6:return [0,-375152890,finish_stringlit$1(v,lexbuf)];
          case 7:return make_positive_int(v,lexbuf);
          case 8:return make_negative_int(v,lexbuf);
          case 9:return [0,928231259,caml_call1(lexeme$1,lexbuf)];
          case 10:
           var acc=[0,0];
           try
            {read_space$1(v,lexbuf);
             read_object_end$1(lexbuf);
             var field_name=read_ident$1(v,lexbuf);
             read_space$1(v,lexbuf);
             read_colon$1(v,lexbuf);
             read_space$1(v,lexbuf);
             var _ev_=acc[1];
             acc[1] = [0,[0,field_name,read_json$1(v,lexbuf)],_ev_];
             for(;;)
              {read_space$1(v,lexbuf);
               read_object_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               var field_name$0=read_ident$1(v,lexbuf);
               read_space$1(v,lexbuf);
               read_colon$1(v,lexbuf);
               read_space$1(v,lexbuf);
               var _ew_=acc[1];
               acc[1] = [0,[0,field_name$0,read_json$1(v,lexbuf)],_ew_];
               continue}}
           catch(_eD_)
            {_eD_ = caml_wrap_exception(_eD_);
             if(_eD_ === End_of_object)
              return [0,963043957,caml_call1(Stdlib_list[9],acc[1])];
             throw _eD_}
          case 11:
           var acc$0=[0,0];
           try
            {read_space$1(v,lexbuf);
             read_array_end$1(lexbuf);
             var _ex_=acc$0[1];
             acc$0[1] = [0,read_json$1(v,lexbuf),_ex_];
             for(;;)
              {read_space$1(v,lexbuf);
               read_array_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               var _ey_=acc$0[1];
               acc$0[1] = [0,read_json$1(v,lexbuf),_ey_];
               continue}}
           catch(_eC_)
            {_eC_ = caml_wrap_exception(_eC_);
             if(_eC_ === End_of_array)
              return [0,848054398,caml_call1(Stdlib_list[9],acc$0[1])];
             throw _eC_}
          case 12:
           var acc$1=[0,0];
           try
            {read_space$1(v,lexbuf);
             read_tuple_end$1(lexbuf);
             var _ez_=acc$1[1];
             acc$1[1] = [0,read_json$1(v,lexbuf),_ez_];
             for(;;)
              {read_space$1(v,lexbuf);
               read_tuple_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               var _eA_=acc$1[1];
               acc$1[1] = [0,read_json$1(v,lexbuf),_eA_];
               continue}}
           catch(_eB_)
            {_eB_ = caml_wrap_exception(_eB_);
             if(_eB_ === End_of_tuple)
              return [0,726928360,caml_call1(Stdlib_list[9],acc$1[1])];
             throw _eB_}
          case 13:
           read_space$1(v,lexbuf);
           var cons=read_ident$1(v,lexbuf);
           read_space$1(v,lexbuf);
           return [0,708012133,[0,cons,finish_variant$1(v,lexbuf)]];
          case 14:
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return read_json$4(counter$0,v,lexbuf)}
           return caml_trampoline_return(read_json$4,[0,v,lexbuf]);
          case 15:
           finish_comment$1(v,lexbuf);
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return read_json$4(counter$1,v,lexbuf)}
           return caml_trampoline_return(read_json$4,[0,v,lexbuf]);
          case 16:
           newline$1(v,lexbuf);
           if(counter < 50)
            {var counter$2=counter + 1 | 0;
             return read_json$4(counter$2,v,lexbuf)}
           return caml_trampoline_return(read_json$4,[0,v,lexbuf]);
          case 17:
           if(counter < 50)
            {var counter$3=counter + 1 | 0;
             return read_json$4(counter$3,v,lexbuf)}
           return caml_trampoline_return(read_json$4,[0,v,lexbuf]);
          case 18:
           return custom_error$1(cst_Unexpected_end_of_input$92,v,lexbuf);
          default:return long_error$1(cst_Invalid_token$12,v,lexbuf)}}}
    function read_json$1(v,lexbuf)
     {return caml_trampoline(read_json$4(0,v,lexbuf))}
    function finish_string$5(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=58;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:return caml_call1(Bi_outbuf[4],v[1]);
            case 1:finish_escaped_char$1(v,lexbuf);continue a;
            case 2:add_lexeme$1(v[1],lexbuf);continue a;
            default:
             return custom_error$1(cst_Unexpected_end_of_input$93,v,lexbuf)}}}}
    function map_string$1(v,f,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=63;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:
             var b=v[1],_eu_=b[3];
             return caml_call3(f,caml_call1(Stdlib_bytes[6],b[1]),0,_eu_);
            case 1:finish_escaped_char$1(v,lexbuf);continue a;
            case 2:add_lexeme$1(v[1],lexbuf);continue a;
            default:
             return custom_error$1(cst_Unexpected_end_of_input$94,v,lexbuf)}}}}
    function finish_escaped_char$1(v,lexbuf)
     {var ocaml_lex_state=68;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(8 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           var c=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5]);
           return caml_call2(Bi_outbuf[15],v[1],c);
          case 1:return caml_call2(Bi_outbuf[15],v[1],8);
          case 2:return caml_call2(Bi_outbuf[15],v[1],12);
          case 3:return caml_call2(Bi_outbuf[15],v[1],10);
          case 4:return caml_call2(Bi_outbuf[15],v[1],13);
          case 5:return caml_call2(Bi_outbuf[15],v[1],9);
          case 6:
           var
            a=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 1 | 0),
            b=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0),
            c$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0),
            d=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0),
            _eo_=hex$5(d),
            _ep_=hex$5(c$0) << 4,
            _eq_=hex$5(b) << 8,
            x=hex$5(a) << 12 | _eq_ | _ep_ | _eo_;
           if(55296 <= x && ! (56319 < x))
            {var ocaml_lex_state$1=82;
             for(;;)
              {var
                ocaml_lex_state$2=
                 caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf);
               if(2 < ocaml_lex_state$2 >>> 0)
                {caml_call1(lexbuf[1],lexbuf);
                 var ocaml_lex_state$1=ocaml_lex_state$2;
                 continue}
               switch(ocaml_lex_state$2)
                {case 0:
                  var
                   a$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 2 | 0),
                   b$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 3 | 0),
                   c$1=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 4 | 0),
                   d$0=caml_call2(sub_lexeme_char$1,lexbuf,lexbuf[5] + 5 | 0),
                   _er_=hex$5(d$0),
                   _es_=hex$5(c$1) << 4,
                   _et_=hex$5(b$0) << 8,
                   y=hex$5(a$0) << 12 | _et_ | _es_ | _er_;
                  if(56320 <= y && ! (57343 < y))
                   return utf8_of_surrogate_pair(v[1],x,y);
                  return long_error$1
                          (cst_Invalid_low_surrogate_for_$1,v,lexbuf);
                 case 1:
                  return long_error$1
                          (cst_Missing_escape_sequence_re$1,v,lexbuf);
                 default:
                  return custom_error$1
                          (cst_Unexpected_end_of_input$96,v,lexbuf)}}}
           return utf8_of_code(v[1],x);
          case 7:return long_error$1(cst_Invalid_escape_sequence$1,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$95,v,lexbuf)}}}
    function finish_stringlit$1(v,lexbuf)
     {var ocaml_lex_state=91;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           var len=lexbuf[6] - lexbuf[5] | 0,s=caml_create_bytes(len + 1 | 0);
           caml_bytes_set(s,0,34);
           caml_call5(Stdlib_bytes[11],lexbuf[2],lexbuf[5],s,1,len);
           return caml_call1(Stdlib_bytes[6],s);
          case 1:return long_error$1(cst_Invalid_string_literal$5,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$97,v,lexbuf)}}}
    function finish_variant$1(v,lexbuf)
     {var ocaml_lex_state=102;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           var x=read_json$1(v,lexbuf);
           read_space$1(v,lexbuf);
           read_gt$1(v,lexbuf);
           return [0,x];
          case 1:return 0;
          case 2:return long_error$1(cst_Expected_or_but_found$29,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$98,v,lexbuf)}}}
    function read_lt$1(v,lexbuf)
     {var ocaml_lex_state=107;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_but_found$30,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$99,v,lexbuf)}}}
    function read_gt$1(v,lexbuf)
     {var ocaml_lex_state=111;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_but_found$31,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$100,v,lexbuf)}}}
    function read_comma$1(v,lexbuf)
     {var ocaml_lex_state=115;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_but_found$32,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$101,v,lexbuf)}}}
    function start_any_variant$1(v,lexbuf)
     {var ocaml_lex_state=119;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(4 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return -154522342;
          case 1:caml_call1(Bi_outbuf[19],v[1]);return -589953938;
          case 2:return -124528282;
          case 3:return long_error$1(cst_Expected_or_but_found$30,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$102,v,lexbuf)}}}
    function finish_comment$1(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=125;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:return 0;
            case 1:return long_error$1(cst_Unterminated_comment$3,v,lexbuf);
            case 2:newline$1(v,lexbuf);continue a;
            default:continue a}}}}
    function read_eof$1(lexbuf)
     {var ocaml_lex_state=131;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)return 1;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_space$1(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=133;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
          if(4 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:newline$1(v,lexbuf);continue a;
            case 1:finish_comment$1(v,lexbuf);continue a;
            case 2:newline$1(v,lexbuf);continue a;
            case 3:continue a;
            default:return 0}}}}
    function read_null$1(v,lexbuf)
     {var ocaml_lex_state=140;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_null_but_found$1,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$103,v,lexbuf)}}}
    function read_null_if_possible$1(v,lexbuf)
     {var ocaml_lex_state=147;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)return 1;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_bool$1(v,lexbuf)
     {var ocaml_lex_state=152;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(5 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 1;
          case 1:return 0;
          case 2:return 1;
          case 3:return 0;
          case 4:
           return long_error$1(cst_Expected_true_or_false_but$1,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$104,v,lexbuf)}}}
    function ocaml_lex_read_int_rec$1(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(4 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           try
            {var _ei_=extract_positive_int$1(lexbuf);return _ei_}
           catch(_en_)
            {_en_ = caml_wrap_exception(_en_);
             if(_en_ === Int_overflow$1)
              return lexer_error$1(cst_Int_overflow$5,v,lexbuf);
             throw _en_}
          case 1:
           try
            {var _ej_=extract_negative_int$1(lexbuf);return _ej_}
           catch(_em_)
            {_em_ = caml_wrap_exception(_em_);
             if(_em_ === Int_overflow$1)
              return lexer_error$1(cst_Int_overflow$6,v,lexbuf);
             throw _em_}
          case 2:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$5(v,lexbuf);
           try
            {var _ek_=caml_int_of_string(s);return _ek_}
           catch(_el_)
            {return custom_error$1(cst_Expected_an_integer_but_fo$1,v,lexbuf)}
          case 3:
           return long_error$1(cst_Expected_integer_but_found$1,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$105,v,lexbuf)}}}
    function read_int$1(v,lexbuf)
     {return ocaml_lex_read_int_rec$1(v,lexbuf,176)}
    function ocaml_lex_read_int32_rec$1(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(3 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           try
            {var _ee_=caml_int_of_string(caml_call1(lexeme$1,lexbuf));
             return _ee_}
           catch(_eh_){return lexer_error$1(cst_Int32_overflow$3,v,lexbuf)}
          case 1:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$5(v,lexbuf);
           try
            {var _ef_=caml_int_of_string(s);return _ef_}
           catch(_eg_)
            {return custom_error$1(cst_Expected_an_int32_but_foun$1,v,lexbuf)}
          case 2:return long_error$1(cst_Expected_int32_but_found$1,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$106,v,lexbuf)}}}
    function read_int32$1(v,lexbuf)
     {return ocaml_lex_read_int32_rec$1(v,lexbuf,185)}
    function ocaml_lex_read_int64_rec$1(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(3 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           try
            {var _ea_=caml_int64_of_string(caml_call1(lexeme$1,lexbuf));
             return _ea_}
           catch(_ed_){return lexer_error$1(cst_Int32_overflow$4,v,lexbuf)}
          case 1:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$5(v,lexbuf);
           try
            {var _eb_=caml_int64_of_string(s);return _eb_}
           catch(_ec_)
            {return custom_error$1(cst_Expected_an_int64_but_foun$1,v,lexbuf)}
          case 2:return long_error$1(cst_Expected_int64_but_found$1,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$107,v,lexbuf)}}}
    function read_int64$1(v,lexbuf)
     {return ocaml_lex_read_int64_rec$1(v,lexbuf,192)}
    function ocaml_lex_read_number_rec$1(v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(6 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return Stdlib[24];
          case 1:return Stdlib[22];
          case 2:return Stdlib[23];
          case 3:return caml_float_of_string(caml_call1(lexeme$1,lexbuf));
          case 4:
           caml_call1(Bi_outbuf[19],v[1]);
           var s=finish_string$5(v,lexbuf);
           try
            {var _d__=caml_float_of_string(s);return _d__}
           catch(_d$_)
            {return caml_string_notequal(s,cst_Infinity$21)
                     ?caml_string_notequal(s,cst_Infinity$22)
                       ?caml_string_notequal(s,cst_NaN$10)
                         ?custom_error$1(cst_Expected_a_number_but_foun$1,v,lexbuf)
                         :Stdlib[24]
                       :Stdlib[22]
                     :Stdlib[23]}
          case 5:
           return long_error$1(cst_Expected_number_but_found$1,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$108,v,lexbuf)}}}
    function read_number$1(v,lexbuf)
     {return ocaml_lex_read_number_rec$1(v,lexbuf,199)}
    function read_string$1(v,lexbuf)
     {var ocaml_lex_state=233;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf);
          case 1:return long_error$1(cst_Expected_but_found$33,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$109,v,lexbuf)}}}
    function read_ident$1(v,lexbuf)
     {var ocaml_lex_state=237;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call1(Bi_outbuf[19],v[1]);return finish_string$5(v,lexbuf);
          case 1:
           var s=caml_call3(sub_lexeme$1,lexbuf,lexbuf[5],lexbuf[6]);return s;
          case 2:
           return long_error$1(cst_Expected_string_or_identif$7,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$110,v,lexbuf)}}}
    function map_ident$1(v,f,lexbuf)
     {var ocaml_lex_state=242;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call1(Bi_outbuf[19],v[1]);return map_string$1(v,f,lexbuf);
          case 1:
           var len=lexbuf[6] - lexbuf[5] | 0,_d9_=lexbuf[5];
           return caml_call3(f,caml_call1(Stdlib_bytes[6],lexbuf[2]),_d9_,len);
          case 2:
           return long_error$1(cst_Expected_string_or_identif$8,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$111,v,lexbuf)}}}
    function ocaml_lex_read_sequence_rec$1
     (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var acc=[0,init_acc];
           try
            {read_space$1(v,lexbuf);
             read_array_end$1(lexbuf);
             acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
             for(;;)
              {read_space$1(v,lexbuf);
               read_array_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               acc[1] = caml_call3(read_cell,acc[1],v,lexbuf);
               continue}}
           catch(_d8_)
            {_d8_ = caml_wrap_exception(_d8_);
             if(_d8_ === End_of_array)return acc[1];
             throw _d8_}
          case 1:return long_error$1(cst_Expected_but_found$34,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$112,v,lexbuf)}}}
    function read_sequence$1(read_cell,init_acc,v,lexbuf)
     {return ocaml_lex_read_sequence_rec$1(read_cell,init_acc,v,lexbuf,247)}
    function ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var acc=[0,0];
           try
            {read_space$1(v,lexbuf);
             read_array_end$1(lexbuf);
             var _d5_=acc[1];
             acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d5_];
             for(;;)
              {read_space$1(v,lexbuf);
               read_array_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               var _d6_=acc[1];
               acc[1] = [0,caml_call2(read_cell,v,lexbuf),_d6_];
               continue}}
           catch(_d7_)
            {_d7_ = caml_wrap_exception(_d7_);
             if(_d7_ === End_of_array)return acc[1];
             throw _d7_}
          case 1:return long_error$1(cst_Expected_but_found$35,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$113,v,lexbuf)}}}
    function read_list_rev$1(read_cell,v,lexbuf)
     {return ocaml_lex_read_list_rev_rec$1(read_cell,v,lexbuf,251)}
    function read_array_end$1(lexbuf)
     {var ocaml_lex_state=255;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)throw End_of_array;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_array_sep$1(v,lexbuf)
     {var ocaml_lex_state=257;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:throw End_of_array;
          case 2:return long_error$1(cst_Expected_or_but_found$31,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$114,v,lexbuf)}}}
    function ocaml_lex_read_tuple_rec$0
     (read_cell,init_acc,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var pos=[0,0],acc=[0,init_acc];
           try
            {read_space$1(v,lexbuf);
             read_tuple_end$1(lexbuf);
             acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf);
             pos[1]++;
             for(;;)
              {read_space$1(v,lexbuf);
               read_tuple_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               acc[1] = caml_call4(read_cell,pos[1],acc[1],v,lexbuf);
               pos[1]++;
               continue}}
           catch(_d4_)
            {_d4_ = caml_wrap_exception(_d4_);
             if(_d4_ === End_of_tuple)return acc[1];
             throw _d4_}
          case 1:return long_error$1(cst_Expected_but_found$36,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$115,v,lexbuf)}}}
    function read_tuple$1(read_cell,init_acc,v,lexbuf)
     {return ocaml_lex_read_tuple_rec$0(read_cell,init_acc,v,lexbuf,262)}
    function read_tuple_end$1(lexbuf)
     {var ocaml_lex_state=266;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)throw End_of_tuple;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_tuple_end2$1(v,std,lexbuf)
     {var ocaml_lex_state=268;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           if(std)return long_error$1(cst_Expected_or_but_found$32,v,lexbuf);
           throw End_of_tuple;
          case 1:
           if(std)throw End_of_tuple;
           return long_error$1(cst_Expected_or_but_found$33,v,lexbuf);
          default:return 0}}}
    function read_tuple_sep$1(v,lexbuf)
     {var ocaml_lex_state=271;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:throw End_of_tuple;
          case 2:return long_error$1(cst_Expected_or_but_found$34,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$116,v,lexbuf)}}}
    function read_tuple_sep2$1(v,std,lexbuf)
     {var ocaml_lex_state=276;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(4 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:
           if(std)return long_error$1(cst_Expected_or_but_found$35,v,lexbuf);
           throw End_of_tuple;
          case 2:
           if(std)throw End_of_tuple;
           return long_error$1(cst_Expected_or_but_found$36,v,lexbuf);
          case 3:return long_error$1(cst_Expected_or_but_found$37,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$117,v,lexbuf)}}}
    function ocaml_lex_read_abstract_fields$1
     (read_key,read_field,init_acc,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(2 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:
           var acc=[0,init_acc];
           try
            {read_space$1(v,lexbuf);
             read_object_end$1(lexbuf);
             var field_name=caml_call2(read_key,v,lexbuf);
             read_space$1(v,lexbuf);
             read_colon$1(v,lexbuf);
             read_space$1(v,lexbuf);
             acc[1] = caml_call4(read_field,acc[1],field_name,v,lexbuf);
             for(;;)
              {read_space$1(v,lexbuf);
               read_object_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               var field_name$0=caml_call2(read_key,v,lexbuf);
               read_space$1(v,lexbuf);
               read_colon$1(v,lexbuf);
               read_space$1(v,lexbuf);
               acc[1] = caml_call4(read_field,acc[1],field_name$0,v,lexbuf);
               continue}}
           catch(_d3_)
            {_d3_ = caml_wrap_exception(_d3_);
             if(_d3_ === End_of_object)return acc[1];
             throw _d3_}
          case 1:return long_error$1(cst_Expected_but_found$37,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$118,v,lexbuf)}}}
    function read_abstract_fields$1(read_key,read_field,init_acc,v,lexbuf)
     {return ocaml_lex_read_abstract_fields$1
              (read_key,read_field,init_acc,v,lexbuf,282)}
    function read_lcurl$1(v,lexbuf)
     {var ocaml_lex_state=286;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_but_found$38,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$119,v,lexbuf)}}}
    function read_object_end$1(lexbuf)
     {var ocaml_lex_state=290;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)throw End_of_object;
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function read_object_sep$1(v,lexbuf)
     {var ocaml_lex_state=292;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:throw End_of_object;
          case 2:return long_error$1(cst_Expected_or_but_found$38,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$120,v,lexbuf)}}}
    function read_colon$1(v,lexbuf)
     {var ocaml_lex_state=297;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_but_found$39,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$121,v,lexbuf)}}}
    function start_any_tuple$1(v,lexbuf)
     {var ocaml_lex_state=301;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return 1;
          case 2:return long_error$1(cst_Expected_or_but_found$39,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$122,v,lexbuf)}}}
    function read_lpar$1(v,lexbuf)
     {var ocaml_lex_state=306;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_but_found$40,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$123,v,lexbuf)}}}
    function read_rpar$1(v,lexbuf)
     {var ocaml_lex_state=310;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_but_found$41,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$124,v,lexbuf)}}}
    function read_lbr$1(v,lexbuf)
     {var ocaml_lex_state=314;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_but_found$42,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$125,v,lexbuf)}}}
    function read_rbr$1(v,lexbuf)
     {var ocaml_lex_state=318;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Expected_but_found$43,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$126,v,lexbuf)}}}
    function finish_skip_variant$1(v,lexbuf)
     {var ocaml_lex_state=389;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           skip_json$1(v,lexbuf);
           read_space$1(v,lexbuf);
           return read_gt$1(v,lexbuf);
          case 1:return 0;
          case 2:return long_error$1(cst_Expected_or_but_found$40,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$129,v,lexbuf)}}}
    function finish_skip_stringlit$1(v,lexbuf)
     {var ocaml_lex_state=378;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return 0;
          case 1:return long_error$1(cst_Invalid_string_literal$6,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$128,v,lexbuf)}}}
    function skip_json$4(counter,v,lexbuf)
     {var _d2_=322;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return ocaml_lex_skip_json_rec$1(counter$0,v,lexbuf,_d2_)}
      return caml_trampoline_return
              (ocaml_lex_skip_json_rec$1,[0,v,lexbuf,_d2_])}
    function ocaml_lex_skip_json_rec$1(counter,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(18 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return 0;
          case 1:return 0;
          case 2:return 0;
          case 3:return 0;
          case 4:return 0;
          case 5:return 0;
          case 6:return finish_skip_stringlit$1(v,lexbuf);
          case 7:return 0;
          case 8:return 0;
          case 9:
           try
            {read_space$1(v,lexbuf);
             read_object_end$1(lexbuf);
             skip_ident$1(v,lexbuf);
             read_space$1(v,lexbuf);
             read_colon$1(v,lexbuf);
             read_space$1(v,lexbuf);
             skip_json$1(v,lexbuf);
             for(;;)
              {read_space$1(v,lexbuf);
               read_object_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               skip_ident$1(v,lexbuf);
               read_space$1(v,lexbuf);
               read_colon$1(v,lexbuf);
               read_space$1(v,lexbuf);
               skip_json$1(v,lexbuf);
               continue}}
           catch(_d1_)
            {_d1_ = caml_wrap_exception(_d1_);
             if(_d1_ === End_of_object)return 0;
             throw _d1_}
          case 10:
           try
            {read_space$1(v,lexbuf);
             read_array_end$1(lexbuf);
             skip_json$1(v,lexbuf);
             for(;;)
              {read_space$1(v,lexbuf);
               read_array_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               skip_json$1(v,lexbuf);
               continue}}
           catch(_d0_)
            {_d0_ = caml_wrap_exception(_d0_);
             if(_d0_ === End_of_array)return 0;
             throw _d0_}
          case 11:
           try
            {read_space$1(v,lexbuf);
             read_tuple_end$1(lexbuf);
             skip_json$1(v,lexbuf);
             for(;;)
              {read_space$1(v,lexbuf);
               read_tuple_sep$1(v,lexbuf);
               read_space$1(v,lexbuf);
               skip_json$1(v,lexbuf);
               continue}}
           catch(_dZ_)
            {_dZ_ = caml_wrap_exception(_dZ_);
             if(_dZ_ === End_of_tuple)return 0;
             throw _dZ_}
          case 12:
           read_space$1(v,lexbuf);
           skip_ident$1(v,lexbuf);
           read_space$1(v,lexbuf);
           return finish_skip_variant$1(v,lexbuf);
          case 13:
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return skip_json$4(counter$0,v,lexbuf)}
           return caml_trampoline_return(skip_json$4,[0,v,lexbuf]);
          case 14:
           finish_comment$1(v,lexbuf);
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return skip_json$4(counter$1,v,lexbuf)}
           return caml_trampoline_return(skip_json$4,[0,v,lexbuf]);
          case 15:
           newline$1(v,lexbuf);
           if(counter < 50)
            {var counter$2=counter + 1 | 0;
             return skip_json$4(counter$2,v,lexbuf)}
           return caml_trampoline_return(skip_json$4,[0,v,lexbuf]);
          case 16:
           if(counter < 50)
            {var counter$3=counter + 1 | 0;
             return skip_json$4(counter$3,v,lexbuf)}
           return caml_trampoline_return(skip_json$4,[0,v,lexbuf]);
          case 17:
           return custom_error$1(cst_Unexpected_end_of_input$127,v,lexbuf);
          default:return long_error$1(cst_Invalid_token$13,v,lexbuf)}}}
    function skip_json$1(v,lexbuf)
     {return caml_trampoline(skip_json$4(0,v,lexbuf))}
    function skip_ident$1(v,lexbuf)
     {var ocaml_lex_state=394;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return finish_skip_stringlit$1(v,lexbuf);
          case 1:return 0;
          case 2:
           return long_error$1(cst_Expected_string_or_identif$9,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$130,v,lexbuf)}}}
    function finish_buffer_variant$0(v,lexbuf)
     {var ocaml_lex_state=461;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call2(Bi_outbuf[15],v[1],58);
           buffer_json$1(v,lexbuf);
           buffer_space$1(v,lexbuf);
           var ocaml_lex_state$1=503;
           for(;;)
            {var
              ocaml_lex_state$2=
               caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$1,lexbuf);
             if(2 < ocaml_lex_state$2 >>> 0)
              {caml_call1(lexbuf[1],lexbuf);
               var ocaml_lex_state$1=ocaml_lex_state$2;
               continue}
             switch(ocaml_lex_state$2)
              {case 0:return caml_call2(Bi_outbuf[15],v[1],62);
               case 1:return long_error$1(cst_Expected_but_found$45,v,lexbuf);
               default:
                return custom_error$1
                        (cst_Unexpected_end_of_input$139,v,lexbuf)}}
          case 1:return caml_call2(Bi_outbuf[15],v[1],62);
          case 2:return long_error$1(cst_Expected_or_but_found$41,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$133,v,lexbuf)}}}
    function finish_buffer_stringlit$1(v,lexbuf)
     {var ocaml_lex_state=450;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:
           caml_call2(Bi_outbuf[15],v[1],34);return add_lexeme$1(v[1],lexbuf);
          case 1:return long_error$1(cst_Invalid_string_literal$7,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$132,v,lexbuf)}}}
    function buffer_json$4(counter,v,lexbuf)
     {var _dY_=399;
      if(counter < 50)
       {var counter$0=counter + 1 | 0;
        return ocaml_lex_buffer_json_rec$1(counter$0,v,lexbuf,_dY_)}
      return caml_trampoline_return
              (ocaml_lex_buffer_json_rec$1,[0,v,lexbuf,_dY_])}
    function ocaml_lex_buffer_json_rec$1(counter,v,lexbuf,ocaml_lex_state)
     {var ocaml_lex_state$0=ocaml_lex_state;
      for(;;)
       {var
         ocaml_lex_state$1=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state$0,lexbuf);
        if(11 < ocaml_lex_state$1 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state$0=ocaml_lex_state$1;
          continue}
        switch(ocaml_lex_state$1)
         {case 0:return add_lexeme$1(v[1],lexbuf);
          case 1:return finish_buffer_stringlit$1(v,lexbuf);
          case 2:
           try
            {caml_call2(Bi_outbuf[15],v[1],123);
             buffer_space$1(v,lexbuf);
             buffer_object_end$1(v,lexbuf);
             buffer_ident$1(v,lexbuf);
             buffer_space$1(v,lexbuf);
             buffer_colon$1(v,lexbuf);
             buffer_space$1(v,lexbuf);
             buffer_json$1(v,lexbuf);
             for(;;)
              {buffer_space$1(v,lexbuf);
               buffer_object_sep$1(v,lexbuf);
               buffer_space$1(v,lexbuf);
               buffer_ident$1(v,lexbuf);
               buffer_space$1(v,lexbuf);
               buffer_colon$1(v,lexbuf);
               buffer_space$1(v,lexbuf);
               buffer_json$1(v,lexbuf);
               continue}}
           catch(_dX_)
            {_dX_ = caml_wrap_exception(_dX_);
             if(_dX_ === End_of_object)return 0;
             throw _dX_}
          case 3:
           try
            {caml_call2(Bi_outbuf[15],v[1],91);
             buffer_space$1(v,lexbuf);
             buffer_array_end$1(v,lexbuf);
             buffer_json$1(v,lexbuf);
             for(;;)
              {buffer_space$1(v,lexbuf);
               buffer_array_sep$1(v,lexbuf);
               buffer_space$1(v,lexbuf);
               buffer_json$1(v,lexbuf);
               continue}}
           catch(_dW_)
            {_dW_ = caml_wrap_exception(_dW_);
             if(_dW_ === End_of_array)return 0;
             throw _dW_}
          case 4:
           try
            {caml_call2(Bi_outbuf[15],v[1],40);
             buffer_space$1(v,lexbuf);
             buffer_tuple_end$0(v,lexbuf);
             buffer_json$1(v,lexbuf);
             for(;;)
              {buffer_space$1(v,lexbuf);
               buffer_tuple_sep$0(v,lexbuf);
               buffer_space$1(v,lexbuf);
               buffer_json$1(v,lexbuf);
               continue}}
           catch(_dV_)
            {_dV_ = caml_wrap_exception(_dV_);
             if(_dV_ === End_of_tuple)return 0;
             throw _dV_}
          case 5:
           caml_call2(Bi_outbuf[15],v[1],60);
           buffer_space$1(v,lexbuf);
           buffer_ident$1(v,lexbuf);
           buffer_space$1(v,lexbuf);
           return finish_buffer_variant$0(v,lexbuf);
          case 6:
           add_lexeme$1(v[1],lexbuf);
           if(counter < 50)
            {var counter$0=counter + 1 | 0;
             return buffer_json$4(counter$0,v,lexbuf)}
           return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]);
          case 7:
           caml_call2(Bi_outbuf[13],v[1],cst$34);
           finish_buffer_comment$1(v,lexbuf);
           if(counter < 50)
            {var counter$1=counter + 1 | 0;
             return buffer_json$4(counter$1,v,lexbuf)}
           return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]);
          case 8:
           caml_call2(Bi_outbuf[15],v[1],10);
           newline$1(v,lexbuf);
           if(counter < 50)
            {var counter$2=counter + 1 | 0;
             return buffer_json$4(counter$2,v,lexbuf)}
           return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]);
          case 9:
           add_lexeme$1(v[1],lexbuf);
           if(counter < 50)
            {var counter$3=counter + 1 | 0;
             return buffer_json$4(counter$3,v,lexbuf)}
           return caml_trampoline_return(buffer_json$4,[0,v,lexbuf]);
          case 10:
           return custom_error$1(cst_Unexpected_end_of_input$131,v,lexbuf);
          default:return long_error$1(cst_Invalid_token$14,v,lexbuf)}}}
    function buffer_json$1(v,lexbuf)
     {return caml_trampoline(buffer_json$4(0,v,lexbuf))}
    function buffer_ident$1(v,lexbuf)
     {var ocaml_lex_state=466;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return finish_buffer_stringlit$1(v,lexbuf);
          case 1:return add_lexeme$1(v[1],lexbuf);
          case 2:
           return long_error$1(cst_Expected_string_or_identif$10,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$134,v,lexbuf)}}}
    function buffer_space$1(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=471;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
          if(4 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:add_lexeme$1(v[1],lexbuf);newline$1(v,lexbuf);continue a;
            case 1:
             caml_call2(Bi_outbuf[13],v[1],cst$35);
             finish_buffer_comment$1(v,lexbuf);
             continue a;
            case 2:
             caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a;
            case 3:add_lexeme$1(v[1],lexbuf);continue a;
            default:return 0}}}}
    function buffer_object_end$1(v,lexbuf)
     {var ocaml_lex_state=478;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)
         {caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object}
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function buffer_object_sep$1(v,lexbuf)
     {var ocaml_lex_state=480;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
          case 1:caml_call2(Bi_outbuf[15],v[1],125);throw End_of_object;
          case 2:return long_error$1(cst_Expected_or_but_found$42,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$135,v,lexbuf)}}}
    function buffer_array_end$1(v,lexbuf)
     {var ocaml_lex_state=485;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)
         {caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array}
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function buffer_array_sep$1(v,lexbuf)
     {var ocaml_lex_state=487;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
          case 1:caml_call2(Bi_outbuf[15],v[1],93);throw End_of_array;
          case 2:return long_error$1(cst_Expected_or_but_found$43,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$136,v,lexbuf)}}}
    function buffer_tuple_end$0(v,lexbuf)
     {var ocaml_lex_state=492;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)
         {caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple}
        if(1 === ocaml_lex_state$0)return 0;
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    function buffer_tuple_sep$0(v,lexbuf)
     {var ocaml_lex_state=494;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(3 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],44);
          case 1:caml_call2(Bi_outbuf[15],v[1],41);throw End_of_tuple;
          case 2:return long_error$1(cst_Expected_or_but_found$44,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$137,v,lexbuf)}}}
    function buffer_colon$1(v,lexbuf)
     {var ocaml_lex_state=499;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(2 < ocaml_lex_state$0 >>> 0)
         {caml_call1(lexbuf[1],lexbuf);
          var ocaml_lex_state=ocaml_lex_state$0;
          continue}
        switch(ocaml_lex_state$0)
         {case 0:return caml_call2(Bi_outbuf[15],v[1],58);
          case 1:return long_error$1(cst_Expected_but_found$44,v,lexbuf);
          default:
           return custom_error$1(cst_Unexpected_end_of_input$138,v,lexbuf)}}}
    function finish_buffer_comment$1(v,lexbuf)
     {a:
      for(;;)
       {var ocaml_lex_state=507;
        for(;;)
         {var
           ocaml_lex_state$0=
            caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
          if(3 < ocaml_lex_state$0 >>> 0)
           {caml_call1(lexbuf[1],lexbuf);
            var ocaml_lex_state=ocaml_lex_state$0;
            continue}
          switch(ocaml_lex_state$0)
           {case 0:return caml_call2(Bi_outbuf[13],v[1],cst$36);
            case 1:return long_error$1(cst_Unterminated_comment$4,v,lexbuf);
            case 2:
             caml_call2(Bi_outbuf[15],v[1],10);newline$1(v,lexbuf);continue a;
            default:add_lexeme$1(v[1],lexbuf);continue a}}}}
    function junk$1(lexbuf)
     {var ocaml_lex_state=513;
      for(;;)
       {var
         ocaml_lex_state$0=
          caml_lex_engine(ocaml_lex_tables$1,ocaml_lex_state,lexbuf);
        if(0 === ocaml_lex_state$0)return caml_call1(lexeme$1,lexbuf);
        caml_call1(lexbuf[1],lexbuf);
        var ocaml_lex_state=ocaml_lex_state$0;
        continue}}
    read_junk$1[1] = junk$1;
    function read_int8$1(v,lexbuf)
     {var n=read_int$1(v,lexbuf);
      if(0 <= n && ! (255 < n))return caml_call1(Stdlib[29],n);
      return lexer_error$1(cst_Int8_overflow$1,v,lexbuf)}
    function read_list$1(read_cell,v,lexbuf)
     {var _dU_=read_list_rev$1(read_cell,v,lexbuf);
      return caml_call1(Stdlib_list[9],_dU_)}
    function read_array$1(read_cell,v,lexbuf)
     {var l=read_list_rev$1(read_cell,v,lexbuf);
      if(l)
       {var
         tl=l[2],
         x=l[1],
         len=caml_call1(Stdlib_list[1],l),
         a=caml_make_vect(len,x),
         r=[0,tl],
         _dR_=len - 2 | 0;
        if(! (_dR_ < 0))
         {var i=_dR_;
          for(;;)
           {var _dS_=caml_call1(Stdlib_list[5],r[1]);
            caml_check_bound(a,i)[1 + i] = _dS_;
            r[1] = caml_call1(Stdlib_list[6],r[1]);
            var _dT_=i - 1 | 0;
            if(0 !== i){var i=_dT_;continue}
            break}}
        return a}
      return [0]}
    function read_fields$1(read_field,init_acc,v)
     {return function(_dQ_)
       {return read_abstract_fields$1(read_ident$1,read_field,init_acc,v,_dQ_)}}
    function from_lexbuf$1(v,opt,lexbuf)
     {if(opt)var sth=opt[1],stream=sth;else var stream=0;
      read_space$1(v,lexbuf);
      if(read_eof$1(lexbuf))throw End_of_input;
      var x=read_json$1(v,lexbuf);
      if(1 - stream)
       {read_space$1(v,lexbuf);
        if(1 - read_eof$1(lexbuf))
         long_error$1(cst_Junk_after_end_of_JSON_val$1,v,lexbuf)}
      return x}
    function from_string$4(buf,fname,lnum,s)
     {try
       {var
         lexbuf=caml_call2(from_string$3,0,s),
         v=init_lexer(buf,fname,lnum,0),
         _dO_=from_lexbuf$1(v,0,lexbuf);
        return _dO_}
      catch(_dP_)
       {_dP_ = caml_wrap_exception(_dP_);
        if(_dP_ === End_of_input)return json_error(cst_Blank_input_data$3);
        throw _dP_}}
    function from_channel$4(buf,fname,lnum,ic)
     {try
       {var
         lexbuf=caml_call2(from_channel$3,0,ic),
         v=init_lexer(buf,fname,lnum,0),
         _dM_=from_lexbuf$1(v,0,lexbuf);
        return _dM_}
      catch(_dN_)
       {_dN_ = caml_wrap_exception(_dN_);
        if(_dN_ === End_of_input)return json_error(cst_Blank_input_data$4);
        throw _dN_}}
    function from_file$1(buf,fname,lnum,file)
     {var ic=caml_call1(Stdlib[79],file);
      try
       {var x=from_channel$4(buf,fname,lnum,ic);
        caml_call1(Stdlib[93],ic);
        return x}
      catch(e){e = caml_wrap_exception(e);caml_call1(Stdlib[94],ic);throw e}}
    var Finally$1=[248,cst_Yojson_Raw_Finally,caml_fresh_oo_id(0)];
    function stream_from_lexbuf$1(v,opt,lexbuf)
     {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
      function f(i)
       {try
         {var _dL_=[0,from_lexbuf$1(v,stream$1,lexbuf)];return _dL_}
        catch(e)
         {e = caml_wrap_exception(e);
          if(e === End_of_input){caml_call1(fin,0);return 0}
          try
           {caml_call1(fin,0)}
          catch(fin_e)
           {fin_e = caml_wrap_exception(fin_e);throw [0,Finally$1,e,fin_e]}
          throw e}}
      return caml_call1(Stdlib_stream[3],f)}
    function stream_from_string$1(buf,fname,lnum,s)
     {var v=init_lexer(buf,fname,lnum,0);
      return stream_from_lexbuf$1(v,0,caml_call2(from_string$3,0,s))}
    function stream_from_channel$1(buf,fin,fname,lnum,ic)
     {var
       lexbuf=caml_call2(from_channel$3,0,ic),
       v=init_lexer(buf,fname,lnum,0);
      return stream_from_lexbuf$1(v,fin,lexbuf)}
    function stream_from_file$1(buf,fname,lnum,file)
     {var ic=caml_call1(Stdlib[79],file);
      function fin(param){return caml_call1(Stdlib[93],ic)}
      var
       fname$0=fname || [0,file],
       lexbuf=caml_call2(from_channel$3,0,ic),
       v=init_lexer(buf,fname$0,lnum,0);
      return stream_from_lexbuf$1(v,[0,fin],lexbuf)}
    function linestream_from_channel$1(buf,opt,fname,_dJ_,ic)
     {if(opt)var sth=opt[1],fin=sth;else var fin=function(param){return 0};
      if(_dJ_)var sth$0=_dJ_[1],lnum0=sth$0;else var lnum0=1;
      var buf$0=buf || [0,caml_call3(Bi_outbuf[3],0,0,256)];
      function f(i)
       {try
         {var
           line=caml_call1(Stdlib[83],ic),
           lnum=lnum0 + i | 0,
           _dK_=[0,[0,826371656,from_string$4(buf$0,fname,[0,lnum],line)]];
          return _dK_}
        catch(e)
         {e = caml_wrap_exception(e);
          return e === Stdlib[12]?(caml_call1(fin,0),0):[0,[0,3458171,e]]}}
      return caml_call1(Stdlib_stream[3],f)}
    function linestream_from_file$1(buf,fname,lnum,file)
     {var ic=caml_call1(Stdlib[79],file);
      function fin(param){return caml_call1(Stdlib[93],ic)}
      var fname$0=fname || [0,file];
      return linestream_from_channel$1(buf,[0,fin],fname$0,lnum,ic)}
    function prettify$1(std,s)
     {return pretty_to_string$2(std,from_string$4(0,0,0,s))}
    function compact$1(std,s)
     {return to_string$5(0,0,0,from_string$4(0,0,0,s))}
    function validate_json$1(path,value){return 0}
    var
     Yojson=
      [0,
       version,
       Json_error,
       json_error,
       Lexer_state,
       init_lexer,
       End_of_array,
       End_of_object,
       End_of_tuple,
       End_of_input,
       [0,
        to_string$1,
        to_channel$1,
        to_output$0,
        to_file$0,
        to_outbuf$0,
        stream_to_string$0,
        stream_to_channel$0,
        stream_to_file$0,
        stream_to_outbuf$0,
        write_t$0,
        sort$0,
        write_null$0,
        write_bool$0,
        write_int$0,
        write_float$0,
        write_std_float$0,
        write_float_fast$0,
        write_std_float_fast$0,
        write_float_prec$0,
        write_std_float_prec$0,
        write_string$0,
        write_assoc$0,
        write_list$0,
        write_t$0,
        write_std_json$0,
        pp$0,
        show$0,
        equal$0,
        pretty_format$0,
        pretty_print$0,
        pretty_to_string$0,
        pretty_to_channel$0,
        prettify,
        compact,
        Finally,
        from_string$0,
        from_channel$0,
        from_file,
        init_lexer,
        from_lexbuf,
        stream_from_string,
        stream_from_channel,
        stream_from_file,
        stream_from_lexbuf,
        linestream_from_channel,
        linestream_from_file,
        read_json,
        finish_string$1,
        read_string,
        read_ident,
        map_string,
        map_ident,
        start_any_variant,
        finish_variant,
        finish_skip_variant,
        read_lt,
        read_gt,
        read_comma,
        finish_stringlit,
        finish_skip_stringlit,
        finish_escaped_char,
        finish_comment,
        read_space,
        read_eof,
        read_null,
        read_null_if_possible,
        read_bool,
        read_int,
        read_int8,
        read_int32,
        read_int64,
        read_number,
        skip_ident,
        read_sequence,
        read_list,
        read_list_rev,
        read_array_end,
        read_array_sep,
        read_array,
        read_tuple,
        start_any_tuple,
        read_lpar,
        read_rpar,
        read_tuple_end,
        read_tuple_end2,
        read_tuple_sep,
        read_tuple_sep2,
        read_lbr,
        read_rbr,
        read_fields,
        read_abstract_fields,
        read_lcurl,
        read_object_end,
        read_object_sep,
        read_colon,
        read_json,
        skip_json,
        buffer_json,
        validate_json,
        [0,
         Type_error,
         Undefined,
         symbol,
         keys,
         values,
         combine,
         member,
         index,
         map,
         to_assoc,
         to_option,
         to_bool,
         to_bool_option,
         to_number,
         to_number_option,
         to_float,
         to_float_option,
         to_int,
         to_int_option,
         to_list,
         to_string$2,
         to_string_option,
         convert_each,
         filter_map,
         flatten,
         filter_index,
         filter_list,
         filter_member,
         filter_assoc,
         filter_bool,
         filter_int,
         filter_float,
         filter_number,
         filter_string]],
       [0,
        pp$1,
        show$1,
        equal$1,
        to_basic,
        to_string$3,
        to_channel$2,
        to_output$1,
        to_file$1,
        to_outbuf$1,
        stream_to_string$1,
        stream_to_channel$1,
        stream_to_file$1,
        stream_to_outbuf$1,
        write_t$1,
        sort$1,
        write_null$1,
        write_bool$1,
        write_int$1,
        write_float$1,
        write_std_float$1,
        write_float_fast$1,
        write_std_float_fast$1,
        write_float_prec$1,
        write_std_float_prec$1,
        write_string$1,
        write_intlit$0,
        write_assoc$1,
        write_list$1,
        write_tuple$0,
        write_std_tuple$0,
        write_variant$0,
        write_std_variant$0,
        write_t$1,
        write_std_json$1,
        pretty_format$1,
        pretty_print$1,
        pretty_to_string$1,
        pretty_to_channel$1,
        prettify$0,
        compact$0,
        Finally$0,
        from_string$2,
        from_channel$2,
        from_file$0,
        init_lexer,
        from_lexbuf$0,
        stream_from_string$0,
        stream_from_channel$0,
        stream_from_file$0,
        stream_from_lexbuf$0,
        linestream_from_channel$0,
        linestream_from_file$0,
        read_json$0,
        finish_string$3,
        read_string$0,
        read_ident$0,
        map_string$0,
        map_ident$0,
        start_any_variant$0,
        finish_variant$0,
        finish_skip_variant$0,
        read_lt$0,
        read_gt$0,
        read_comma$0,
        finish_stringlit$0,
        finish_skip_stringlit$0,
        finish_escaped_char$0,
        finish_comment$0,
        read_space$0,
        read_eof$0,
        read_null$0,
        read_null_if_possible$0,
        read_bool$0,
        read_int$0,
        read_int8$0,
        read_int32$0,
        read_int64$0,
        read_number$0,
        skip_ident$0,
        read_sequence$0,
        read_list$0,
        read_list_rev$0,
        read_array_end$0,
        read_array_sep$0,
        read_array$0,
        read_tuple$0,
        start_any_tuple$0,
        read_lpar$0,
        read_rpar$0,
        read_tuple_end$0,
        read_tuple_end2$0,
        read_tuple_sep$0,
        read_tuple_sep2$0,
        read_lbr$0,
        read_rbr$0,
        read_fields$0,
        read_abstract_fields$0,
        read_lcurl$0,
        read_object_end$0,
        read_object_sep$0,
        read_colon$0,
        read_json$0,
        skip_json$0,
        buffer_json$0,
        validate_json$0,
        [0,
         Type_error$0,
         Undefined$0,
         symbol$0,
         keys$0,
         values$0,
         combine$0,
         member$0,
         index$0,
         map$0,
         to_assoc$0,
         to_option$0,
         to_bool$0,
         to_bool_option$0,
         to_number$0,
         to_number_option$0,
         to_float$0,
         to_float_option$0,
         to_int$0,
         to_int_option$0,
         to_list$0,
         to_string$4,
         to_string_option$0,
         convert_each$0,
         filter_map$0,
         flatten$0,
         filter_index$0,
         filter_list$0,
         filter_member$0,
         filter_assoc$0,
         filter_bool$0,
         filter_int$0,
         filter_float$0,
         filter_number$0,
         filter_string$0]],
       [0,
        pp$2,
        show$2,
        equal$2,
        to_string$5,
        to_channel$3,
        to_output$2,
        to_file$2,
        to_outbuf$2,
        stream_to_string$2,
        stream_to_channel$2,
        stream_to_file$2,
        stream_to_outbuf$2,
        write_t$2,
        sort$2,
        write_null$2,
        write_bool$2,
        write_intlit$1,
        write_floatlit$0,
        write_stringlit$0,
        write_assoc$2,
        write_list$2,
        write_tuple$1,
        write_std_tuple$1,
        write_variant$1,
        write_std_variant$1,
        write_t$2,
        write_std_json$2,
        pretty_format$2,
        pretty_print$2,
        pretty_to_string$2,
        pretty_to_channel$2,
        prettify$1,
        compact$1,
        Finally$1,
        from_string$4,
        from_channel$4,
        from_file$1,
        init_lexer,
        from_lexbuf$1,
        stream_from_string$1,
        stream_from_channel$1,
        stream_from_file$1,
        stream_from_lexbuf$1,
        linestream_from_channel$1,
        linestream_from_file$1,
        read_json$1,
        finish_string$5,
        read_string$1,
        read_ident$1,
        map_string$1,
        map_ident$1,
        start_any_variant$1,
        finish_variant$1,
        finish_skip_variant$1,
        read_lt$1,
        read_gt$1,
        read_comma$1,
        finish_stringlit$1,
        finish_skip_stringlit$1,
        finish_escaped_char$1,
        finish_comment$1,
        read_space$1,
        read_eof$1,
        read_null$1,
        read_null_if_possible$1,
        read_bool$1,
        read_int$1,
        read_int8$1,
        read_int32$1,
        read_int64$1,
        read_number$1,
        skip_ident$1,
        read_sequence$1,
        read_list$1,
        read_list_rev$1,
        read_array_end$1,
        read_array_sep$1,
        read_array$1,
        read_tuple$1,
        start_any_tuple$1,
        read_lpar$1,
        read_rpar$1,
        read_tuple_end$1,
        read_tuple_end2$1,
        read_tuple_sep$1,
        read_tuple_sep2$1,
        read_lbr$1,
        read_rbr$1,
        read_fields$1,
        read_abstract_fields$1,
        read_lcurl$1,
        read_object_end$1,
        read_object_sep$1,
        read_colon$1,
        read_json$1,
        skip_json$1,
        buffer_json$1,
        validate_json$1],
       pp,
       show,
       equal,
       to_string,
       to_channel,
       to_output,
       to_file,
       to_outbuf,
       stream_to_string,
       stream_to_channel,
       stream_to_file,
       stream_to_outbuf,
       write_t,
       sort,
       write_null,
       write_bool,
       write_int,
       write_float,
       write_std_float,
       write_float_fast,
       write_std_float_fast,
       write_float_prec,
       write_std_float_prec,
       write_string,
       write_intlit,
       write_floatlit,
       write_stringlit,
       write_assoc,
       write_list,
       write_tuple,
       write_std_tuple,
       write_variant,
       write_std_variant,
       write_t,
       write_std_json,
       pretty_format,
       pretty_print,
       pretty_to_string,
       pretty_to_channel];
    caml_register_global(1035,Yojson,"Yojson");
    return}
  (function(){return this}()));


//# 1 "../../.js/fmt/fmt.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_check_bound=runtime.caml_check_bound,
     caml_div=runtime.caml_div,
     caml_int64_add=runtime.caml_int64_add,
     caml_int64_div=runtime.caml_int64_div,
     caml_int64_mul=runtime.caml_int64_mul,
     caml_int64_sub=runtime.caml_int64_sub,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_mod=runtime.caml_mod,
     caml_mul=runtime.caml_mul,
     caml_notequal=runtime.caml_notequal,
     caml_string_get=runtime.caml_string_get,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_trampoline=runtime.caml_trampoline,
     caml_trampoline_return=runtime.caml_trampoline_return,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call8(f,a0,a1,a2,a3,a4,a5,a6,a7)
     {return f.length == 8
              ?f(a0,a1,a2,a3,a4,a5,a6,a7)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7])}
    function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8)
     {return f.length == 9
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])}
    function caml_call11(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
     {return f.length == 11
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_us=caml_string_of_jsbytes("us"),
     cst_ms=caml_string_of_jsbytes("ms"),
     cst_s=caml_string_of_jsbytes("s"),
     _av_=runtime.caml_int64_create_lo_mi_hi(60,0,0),
     cst_s$0=caml_string_of_jsbytes("s"),
     cst_min=caml_string_of_jsbytes("min"),
     _aw_=runtime.caml_int64_create_lo_mi_hi(60,0,0),
     cst_min$0=caml_string_of_jsbytes("min"),
     cst_h=caml_string_of_jsbytes("h"),
     _ax_=runtime.caml_int64_create_lo_mi_hi(24,0,0),
     cst_h$0=caml_string_of_jsbytes("h"),
     cst_d=caml_string_of_jsbytes("d"),
     y=runtime.caml_int64_create_lo_mi_hi(366,0,0),
     cst_0$0=caml_string_of_jsbytes("0"),
     cst$17=caml_string_of_jsbytes(";"),
     cst$16=caml_string_of_jsbytes("\x1b["),
     cst_m=caml_string_of_jsbytes("m"),
     cst_3=caml_string_of_jsbytes("3"),
     cst_0=caml_string_of_jsbytes("0"),
     cst_32=caml_string_of_jsbytes("32"),
     cst_36=caml_string_of_jsbytes("36"),
     cst_1=caml_string_of_jsbytes("1"),
     cst_4=caml_string_of_jsbytes("4"),
     cst_34=caml_string_of_jsbytes("34"),
     cst_2=caml_string_of_jsbytes("2"),
     cst_33=caml_string_of_jsbytes("33"),
     cst_31=caml_string_of_jsbytes("31"),
     cst_7=caml_string_of_jsbytes("7"),
     cst_37=caml_string_of_jsbytes("37"),
     cst_30=caml_string_of_jsbytes("30"),
     cst_35=caml_string_of_jsbytes("35"),
     cst_32$0=caml_string_of_jsbytes("32"),
     cst_36$0=caml_string_of_jsbytes("36"),
     cst_34$0=caml_string_of_jsbytes("34"),
     cst_33$0=caml_string_of_jsbytes("33"),
     cst_31$0=caml_string_of_jsbytes("31"),
     cst_37$0=caml_string_of_jsbytes("37"),
     cst_35$0=caml_string_of_jsbytes("35"),
     cst_30$0=caml_string_of_jsbytes("30"),
     cst_92=caml_string_of_jsbytes("92"),
     cst_96=caml_string_of_jsbytes("96"),
     cst_94=caml_string_of_jsbytes("94"),
     cst_93=caml_string_of_jsbytes("93"),
     cst_91=caml_string_of_jsbytes("91"),
     cst_97=caml_string_of_jsbytes("97"),
     cst_95=caml_string_of_jsbytes("95"),
     cst_90=caml_string_of_jsbytes("90"),
     cst_42=caml_string_of_jsbytes("42"),
     cst_46=caml_string_of_jsbytes("46"),
     cst_44=caml_string_of_jsbytes("44"),
     cst_43=caml_string_of_jsbytes("43"),
     cst_41=caml_string_of_jsbytes("41"),
     cst_47=caml_string_of_jsbytes("47"),
     cst_45=caml_string_of_jsbytes("45"),
     cst_40=caml_string_of_jsbytes("40"),
     cst_102=caml_string_of_jsbytes("102"),
     cst_106=caml_string_of_jsbytes("106"),
     cst_104=caml_string_of_jsbytes("104"),
     cst_103=caml_string_of_jsbytes("103"),
     cst_101=caml_string_of_jsbytes("101"),
     cst_107=caml_string_of_jsbytes("107"),
     cst_105=caml_string_of_jsbytes("105"),
     cst_100=caml_string_of_jsbytes("100"),
     cst_K=caml_string_of_jsbytes("K"),
     partial=[15,[11,caml_string_of_jsbytes(" ?"),[17,0,0]]],
     cst$15=caml_string_of_jsbytes("..."),
     cst$14=caml_string_of_jsbytes(""),
     cst$13=caml_string_of_jsbytes(": "),
     kstr$0=caml_string_of_jsbytes("K"),
     i=caml_string_of_jsbytes("i"),
     cst_B=caml_string_of_jsbytes("B"),
     cst$11=caml_string_of_jsbytes(" }"),
     cst$12=caml_string_of_jsbytes("{ "),
     cst$10=caml_string_of_jsbytes(""),
     cst_No_backtrace_available=
      caml_string_of_jsbytes("No backtrace available."),
     cst$9=caml_string_of_jsbytes('"'),
     cst$7=caml_string_of_jsbytes("}"),
     cst$8=caml_string_of_jsbytes("{"),
     cst$5=caml_string_of_jsbytes("|]"),
     cst$6=caml_string_of_jsbytes("[|"),
     cst$3=caml_string_of_jsbytes("]"),
     cst$4=caml_string_of_jsbytes("["),
     cst$1=caml_string_of_jsbytes(")"),
     cst$2=caml_string_of_jsbytes("("),
     cst$0=caml_string_of_jsbytes(";"),
     cst=caml_string_of_jsbytes(","),
     err_str_formatter=
      caml_string_of_jsbytes("Format.str_formatter can't be set."),
     cst_SIGXFSZ=caml_string_of_jsbytes("SIGXFSZ"),
     cst_SIGXCPU=caml_string_of_jsbytes("SIGXCPU"),
     cst_SIGURG=caml_string_of_jsbytes("SIGURG"),
     cst_SIGTRAP=caml_string_of_jsbytes("SIGTRAP"),
     cst_SIGSYS=caml_string_of_jsbytes("SIGSYS"),
     cst_SIGPOLL=caml_string_of_jsbytes("SIGPOLL"),
     cst_SIGBUS=caml_string_of_jsbytes("SIGBUS"),
     cst_SIGPROF=caml_string_of_jsbytes("SIGPROF"),
     cst_SIGVTALRM=caml_string_of_jsbytes("SIGVTALRM"),
     cst_SIGTTOU=caml_string_of_jsbytes("SIGTTOU"),
     cst_SIGTTIN=caml_string_of_jsbytes("SIGTTIN"),
     cst_SIGTSTP=caml_string_of_jsbytes("SIGTSTP"),
     cst_SIGSTOP=caml_string_of_jsbytes("SIGSTOP"),
     cst_SIGCONT=caml_string_of_jsbytes("SIGCONT"),
     cst_SIGCHLD=caml_string_of_jsbytes("SIGCHLD"),
     cst_SIGUSR2=caml_string_of_jsbytes("SIGUSR2"),
     cst_SIGUSR1=caml_string_of_jsbytes("SIGUSR1"),
     cst_SIGTERM=caml_string_of_jsbytes("SIGTERM"),
     cst_SIGSEGV=caml_string_of_jsbytes("SIGSEGV"),
     cst_SIGQUIT=caml_string_of_jsbytes("SIGQUIT"),
     cst_SIGPIPE=caml_string_of_jsbytes("SIGPIPE"),
     cst_SIGKILL=caml_string_of_jsbytes("SIGKILL"),
     cst_SIGINT=caml_string_of_jsbytes("SIGINT"),
     cst_SIGILL=caml_string_of_jsbytes("SIGILL"),
     cst_SIGHUP=caml_string_of_jsbytes("SIGHUP"),
     cst_SIGFPE=caml_string_of_jsbytes("SIGFPE"),
     cst_SIGALRM=caml_string_of_jsbytes("SIGALRM"),
     cst_SIGABRT=caml_string_of_jsbytes("SIGABRT"),
     us_span=runtime.caml_int64_create_lo_mi_hi(1000,0,0),
     ms_span=runtime.caml_int64_create_lo_mi_hi(1000000,0,0),
     sec_span=runtime.caml_int64_create_lo_mi_hi(10144256,59,0),
     min_span=runtime.caml_int64_create_lo_mi_hi(4675584,3576,0),
     hour_span=runtime.caml_int64_create_lo_mi_hi(12099584,214576,0),
     day_span=runtime.caml_int64_create_lo_mi_hi(5177344,5149841,0),
     year_span=runtime.caml_int64_create_lo_mi_hi(16171008,1931345,112),
     Stdlib_int64=global_data.Stdlib__int64,
     Stdlib=global_data.Stdlib,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_ephemeron=global_data.Stdlib__ephemeron,
     Assert_failure=global_data.Assert_failure,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib_queue=global_data.Stdlib__queue,
     Stdlib_stack=global_data.Stdlib__stack,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Stdlib_uchar=global_data.Stdlib__uchar,
     Stdlib_seq=global_data.Stdlib__seq,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_map=global_data.Stdlib__map,
     invalid_arg=Stdlib[1],
     stdout=Stdlib_format[105],
     stderr=Stdlib_format[106],
     pf=Stdlib_format[123],
     pr=Stdlib_format[124],
     epr=Stdlib_format[125],
     str=Stdlib_format[127],
     kpf=Stdlib_format[130],
     kstr=Stdlib_format[134],
     _F_=[0,[4,0,0,0,[2,0,[2,0,0]]],caml_string_of_jsbytes("%d%s%s")],
     _H_=
      [0,
       [4,0,0,0,[12,46,[4,0,0,0,[2,0,[2,0,0]]]]],
       caml_string_of_jsbytes("%d.%d%s%s")],
     _G_=[0,[4,0,0,0,[2,0,[2,0,0]]],caml_string_of_jsbytes("%d%s%s")],
     _J_=
      [0,
       [4,0,0,0,[12,46,[4,0,0,0,[2,0,[2,0,0]]]]],
       caml_string_of_jsbytes("%d.%d%s%s")],
     _K_=
      [0,
       [4,0,0,0,[12,46,[4,0,[0,2,2],0,[2,0,[2,0,0]]]]],
       caml_string_of_jsbytes("%d.%02d%s%s")],
     _I_=[0,[4,0,0,0,[2,0,[2,0,0]]],caml_string_of_jsbytes("%d%s%s")],
     _L_=
      [0,
       [11,
        caml_string_of_jsbytes("~scale is "),
        [4,0,0,0,[11,caml_string_of_jsbytes(", must be in [-8;8]"),0]]],
       caml_string_of_jsbytes("~scale is %d, must be in [-8;8]")],
     _M_=[0,[4,0,0,0,[2,0,[2,0,0]]],caml_string_of_jsbytes("%d%s%s")],
     _Y_=runtime.caml_int64_create_lo_mi_hi(100,0,0),
     _Z_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     ___=[0,[7,0,0,0,[2,0,0]],caml_string_of_jsbytes("%Ld%s")],
     _$_=runtime.caml_int64_create_lo_mi_hi(10,0,0),
     _aa_=runtime.caml_int64_create_lo_mi_hi(10,0,0),
     _ab_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _ac_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _ad_=runtime.caml_int64_create_lo_mi_hi(10,0,0),
     _ae_=
      [0,
       [7,0,0,0,[12,46,[7,0,0,0,[2,0,0]]]],
       caml_string_of_jsbytes("%Ld.%Ld%s")],
     _af_=[0,[7,0,0,0,[2,0,0]],caml_string_of_jsbytes("%Ld%s")],
     _ag_=runtime.caml_int64_create_lo_mi_hi(100,0,0),
     _ah_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _ai_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aj_=runtime.caml_int64_create_lo_mi_hi(100,0,0),
     _ak_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _al_=runtime.caml_int64_create_lo_mi_hi(10,0,0),
     _am_=runtime.caml_int64_create_lo_mi_hi(10,0,0),
     _an_=
      [0,
       [7,0,0,0,[12,46,[7,0,0,0,[2,0,0]]]],
       caml_string_of_jsbytes("%Ld.%Ld%s")],
     _ao_=
      [0,
       [7,0,0,0,[12,46,[7,0,[0,2,2],0,[2,0,0]]]],
       caml_string_of_jsbytes("%Ld.%02Ld%s")],
     _ap_=[0,[7,0,0,0,[2,0,0]],caml_string_of_jsbytes("%Ld%s")],
     _aq_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _ar_=[0,[7,0,0,0,[2,0,0]],caml_string_of_jsbytes("%Ld%s")],
     _as_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _at_=
      [0,
       [7,0,0,0,[2,0,[7,0,0,0,[2,0,0]]]],
       caml_string_of_jsbytes("%Ld%s%Ld%s")],
     _au_=
      [0,
       [7,0,0,0,[11,caml_string_of_jsbytes("ns"),0]],
       caml_string_of_jsbytes("%Ldns")],
     _ay_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _az_=[0,[7,0,0,0,[12,97,0]],caml_string_of_jsbytes("%Lda")],
     _aA_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aB_=[0,[7,0,0,0,[12,97,0]],caml_string_of_jsbytes("%Lda")],
     _aC_=
      [0,
       [7,0,0,0,[12,97,[7,0,0,0,[12,100,0]]]],
       caml_string_of_jsbytes("%Lda%Ldd")],
     _a$_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _a__=
      [0,
       [12,58,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(":@ ")],
     _a9_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<1>"),0],
          caml_string_of_jsbytes("<1>")]],
        [15,[15,[15,[17,0,0]]]]],
       caml_string_of_jsbytes("@[<1>%a%a%a@]")],
     _a7_=[0,caml_string_of_jsbytes("src/fmt.ml"),625,59],
     _a6_=[0,caml_string_of_jsbytes("src/fmt.ml"),608,53],
     _a5_=
      [0,
       [11,caml_string_of_jsbytes("Unknown"),0],
       caml_string_of_jsbytes("Unknown")],
     _a3_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [15,
         [12,
          32,
          [2,
           0,
           [12,
            32,
            [15,
             [15,
              [12,
               46,
               [17,
                [0,caml_string_of_jsbytes("@ "),1,0],
                [11,caml_string_of_jsbytes("Did you mean "),partial]]]]]]]]]],
       caml_string_of_jsbytes("@[%a %s %a%a.@ Did you mean %a ?@]")],
     _a4_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [15,[12,32,[2,0,[12,32,[15,[15,[12,46,[17,0,0]]]]]]]]],
       caml_string_of_jsbytes("@[%a %s %a%a.@]")],
     _aY_=
      [0,
       [15,[12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]]],
       caml_string_of_jsbytes("%a,@ ")],
     _aZ_=
      [0,
       [11,
        caml_string_of_jsbytes("or"),
        [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,0]]],
       caml_string_of_jsbytes("or@ %a")],
     _a0_=[0,caml_string_of_jsbytes("src/fmt.ml"),586,12],
     _a1_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("one"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,
           caml_string_of_jsbytes("of"),
           [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[one@ of@ %a@]")],
     _a2_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("either "),
         [15,
          [11,
           caml_string_of_jsbytes(" or"),
           [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[either %a or@ %a@]")],
     _aW_=[0,[4,0,0,0,[12,46,[4,0,0,0,0]]],caml_string_of_jsbytes("%d.%d")],
     _aX_=
      [0,
       [4,0,0,0,[12,46,[4,0,0,0,[12,45,[4,0,0,0,[12,46,[4,0,0,0,0]]]]]]],
       caml_string_of_jsbytes("%d.%d-%d.%d")],
     _aV_=[0,caml_string_of_jsbytes("src/fmt.ml"),548,13],
     _aU_=[0,[4,6,[0,2,2],0,0],caml_string_of_jsbytes("%02x")],
     _aT_=[0,[4,6,[0,2,8],0,0],caml_string_of_jsbytes("%08x")],
     _N_=[0,[4,0,0,0,[12,66,0]],caml_string_of_jsbytes("%dB")],
     _P_=[0,[15,[2,0,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%a%s%sB")],
     _O_=[0,[4,0,0,0,[2,0,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%d%s%sB")],
     _R_=[0,[15,[12,77,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%aM%sB")],
     _Q_=
      [0,[4,0,0,0,[12,77,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%dM%sB")],
     _T_=[0,[15,[12,71,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%aG%sB")],
     _S_=
      [0,[4,0,0,0,[12,71,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%dG%sB")],
     _V_=[0,[15,[12,84,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%aT%sB")],
     _U_=
      [0,[4,0,0,0,[12,84,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%dT%sB")],
     _X_=[0,[15,[12,80,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%aP%sB")],
     _W_=
      [0,[4,0,0,0,[12,80,[2,0,[12,66,0]]]],caml_string_of_jsbytes("%dP%sB")],
     _C_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]],
       caml_string_of_jsbytes(";@,")],
     _D_=[0,2],
     _B_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<1>"),0],
          caml_string_of_jsbytes("<1>")]],
        [15,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],[15,[17,0,0]]]]]],
       caml_string_of_jsbytes("@[<1>%a =@ %a@]")],
     _A_=
      [0,
       [11,caml_string_of_jsbytes("queue"),0],
       caml_string_of_jsbytes("queue")],
     _z_=
      [0,
       [11,caml_string_of_jsbytes("stack"),0],
       caml_string_of_jsbytes("stack")],
     _y_=
      [0,
       [11,caml_string_of_jsbytes("hashtbl"),0],
       caml_string_of_jsbytes("hashtbl")],
     _w_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Ok"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [18,[1,[0,0,caml_string_of_jsbytes("")]],[15,[17,0,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<2>Ok@ @[%a@]@]")],
     _x_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Error"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [18,[1,[0,0,caml_string_of_jsbytes("")]],[15,[17,0,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<2>Error@ @[%a@]@]")],
     _u_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Some"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [18,[1,[0,0,caml_string_of_jsbytes("")]],[15,[17,0,[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[<2>Some@ @[%a@]@]")],
     _v_=
      [0,[11,caml_string_of_jsbytes("None"),0],caml_string_of_jsbytes("None")],
     _t_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _s_=
      [0,
       [11,caml_string_of_jsbytes("U+"),[4,8,[0,2,4],0,0]],
       caml_string_of_jsbytes("U+%04X")],
     _r_=
      [0,
       [11,caml_string_of_jsbytes("SIG("),[4,0,0,0,[12,41,0]]],
       caml_string_of_jsbytes("SIG(%d)")],
     _q_=[0,[8,[0,0,3],0,0,0],caml_string_of_jsbytes("%g")],
     _p_=[0,[8,[0,0,3],0,0,0],caml_string_of_jsbytes("%g")],
     _o_=[0,[8,[0,0,3],0,0,0],caml_string_of_jsbytes("%g")],
     _n_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [11,
         caml_string_of_jsbytes("Exception: "),
         [15,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]]],
       caml_string_of_jsbytes("@[<v>Exception: %a@,%a@]")],
     _l_=[0,[6,12,0,0,0],caml_string_of_jsbytes("%nu")],
     _k_=[0,[7,12,0,0,0],caml_string_of_jsbytes("%Lu")],
     _j_=[0,[5,12,0,0,0],caml_string_of_jsbytes("%lu")],
     _i_=[0,[4,12,0,0,0],caml_string_of_jsbytes("%u")],
     _h_=[0,[7,0,0,0,0],caml_string_of_jsbytes("%Ld")],
     _g_=[0,[5,0,0,0,0],caml_string_of_jsbytes("%ld")],
     _f_=[0,[6,0,0,0,0],caml_string_of_jsbytes("%nd")],
     _e_=[0,1],
     _d_=[0,1],
     _c_=[0,2],
     _b_=[0,1],
     _a_=[0,1],
     _E_=
      [0,
       caml_string_of_jsbytes("y"),
       caml_string_of_jsbytes("z"),
       caml_string_of_jsbytes("a"),
       caml_string_of_jsbytes("f"),
       caml_string_of_jsbytes("p"),
       caml_string_of_jsbytes("n"),
       caml_string_of_jsbytes("u"),
       caml_string_of_jsbytes("m"),
       caml_string_of_jsbytes(""),
       caml_string_of_jsbytes("k"),
       caml_string_of_jsbytes("M"),
       caml_string_of_jsbytes("G"),
       caml_string_of_jsbytes("T"),
       caml_string_of_jsbytes("P"),
       caml_string_of_jsbytes("E"),
       caml_string_of_jsbytes("Z"),
       caml_string_of_jsbytes("Y")],
     _aG_=[0,[4,6,[0,2,7],0,0],caml_string_of_jsbytes("%07x")],
     _aI_=[0,[4,6,[0,2,6],0,0],caml_string_of_jsbytes("%06x")],
     _aK_=[0,[4,6,[0,2,5],0,0],caml_string_of_jsbytes("%05x")],
     _aM_=[0,[4,6,[0,2,4],0,0],caml_string_of_jsbytes("%04x")],
     _aO_=[0,[4,6,[0,2,3],0,0],caml_string_of_jsbytes("%03x")],
     _aQ_=[0,[4,6,[0,2,2],0,0],caml_string_of_jsbytes("%02x")],
     _aS_=[0,[4,6,[0,2,1],0,0],caml_string_of_jsbytes("%01x")],
     _a8_=[0,15713,82908052];
    function failwith(fmt){return caml_call2(kstr,Stdlib[2],fmt)}
    function failwith_notrace(fmt)
     {return caml_call2(kstr,function(s){throw [0,Stdlib[7],s]},fmt)}
    function invalid_arg$0(fmt){return caml_call2(kstr,Stdlib[1],fmt)}
    function error(fmt){return caml_call2(kstr,function(s){return [1,s]},fmt)}
    function error_msg(fmt)
     {return caml_call2(kstr,function(s){return [1,[0,3854881,s]]},fmt)}
    function flush(ppf,param){return caml_call2(Stdlib_format[36],ppf,0)}
    function nop(fmt,ppf){return 0}
    function any(fmt,ppf,param){return caml_call2(pf,ppf,fmt)}
    function using(f,pp,ppf,v){return caml_call2(pp,ppf,caml_call1(f,v))}
    function const$0(pp_v,v,ppf,param){return caml_call2(pp_v,ppf,v)}
    function fmt(fmt,ppf){return caml_call2(pf,ppf,fmt)}
    function cut(ppf,param){return caml_call2(Stdlib_format[27],ppf,0)}
    function sp(ppf,param){return caml_call2(Stdlib_format[25],ppf,0)}
    function sps(n,ppf,param){return caml_call3(Stdlib_format[29],ppf,n,0)}
    function comma(ppf,param)
     {caml_call2(Stdlib_format[13],ppf,cst);return sp(ppf,0)}
    function semi(ppf,param)
     {caml_call2(Stdlib_format[13],ppf,cst$0);return sp(ppf,0)}
    function iter(opt,iter,pp_elt,ppf,v)
     {if(opt)var sth=opt[1],pp_sep=sth;else var pp_sep=cut;
      var is_first=[0,1];
      function pp_elt$0(v)
       {if(is_first[1])is_first[1] = 0;else caml_call2(pp_sep,ppf,0);
        return caml_call2(pp_elt,ppf,v)}
      return caml_call2(iter,pp_elt$0,v)}
    function iter_bindings(opt,iter,pp_binding,ppf,v)
     {if(opt)var sth=opt[1],pp_sep=sth;else var pp_sep=cut;
      var is_first=[0,1];
      function pp_binding$0(k,v)
       {if(is_first[1])is_first[1] = 0;else caml_call2(pp_sep,ppf,0);
        return caml_call2(pp_binding,ppf,[0,k,v])}
      return caml_call2(iter,pp_binding$0,v)}
    function symbol(pp_v0,pp_v1,ppf,v)
     {caml_call2(pp_v0,ppf,v);return caml_call2(pp_v1,ppf,v)}
    function concat(sep,pps,ppf,v)
     {function _fm_(ppf,pp){return caml_call2(pp,ppf,v)}
      return iter(sep,Stdlib_list[15],_fm_,ppf,pps)}
    function box(opt,pp_v,ppf,v)
     {if(opt)var sth=opt[1],indent=sth;else var indent=0;
      caml_call2(Stdlib_format[1],ppf,indent);
      caml_call2(pp_v,ppf,v);
      return caml_call2(Stdlib_format[3],ppf,0)}
    function hbox(pp_v,ppf,v)
     {caml_call2(Stdlib_format[5],ppf,0);
      caml_call2(pp_v,ppf,v);
      return caml_call2(Stdlib_format[3],ppf,0)}
    function vbox(opt,pp_v,ppf,v)
     {if(opt)var sth=opt[1],indent=sth;else var indent=0;
      caml_call2(Stdlib_format[7],ppf,indent);
      caml_call2(pp_v,ppf,v);
      return caml_call2(Stdlib_format[3],ppf,0)}
    function hvbox(opt,pp_v,ppf,v)
     {if(opt)var sth=opt[1],indent=sth;else var indent=0;
      caml_call2(Stdlib_format[9],ppf,indent);
      caml_call2(pp_v,ppf,v);
      return caml_call2(Stdlib_format[3],ppf,0)}
    function hovbox(opt,pp_v,ppf,v)
     {if(opt)var sth=opt[1],indent=sth;else var indent=0;
      caml_call2(Stdlib_format[11],ppf,indent);
      caml_call2(pp_v,ppf,v);
      return caml_call2(Stdlib_format[3],ppf,0)}
    function surround(s1,s2,pp_v,ppf,v)
     {caml_call2(Stdlib_format[13],ppf,s1);
      caml_call2(pp_v,ppf,v);
      return caml_call2(Stdlib_format[13],ppf,s2)}
    function parens(pp_v)
     {function _fh_(_fk_,_fl_){return surround(cst$2,cst$1,pp_v,_fk_,_fl_)}
      return function(_fi_,_fj_){return box(_a_,_fh_,_fi_,_fj_)}}
    function brackets(pp_v)
     {function _fc_(_ff_,_fg_){return surround(cst$4,cst$3,pp_v,_ff_,_fg_)}
      return function(_fd_,_fe_){return box(_b_,_fc_,_fd_,_fe_)}}
    function braces(pp_v)
     {function _e9_(_fa_,_fb_){return surround(cst$8,cst$7,pp_v,_fa_,_fb_)}
      return function(_e__,_e$_){return box(_d_,_e9_,_e__,_e$_)}}
    function quote(opt,pp_v)
     {if(opt)var sth=opt[1],mark=sth;else var mark=cst$9;
      function pp_mark(ppf,param)
       {return caml_call3(Stdlib_format[15],ppf,1,mark)}
      function _e1_(_e7_,_e8_){return symbol(pp_mark,pp_v,_e7_,_e8_)}
      function _e2_(_e5_,_e6_){return symbol(_e1_,pp_mark,_e5_,_e6_)}
      return function(_e3_,_e4_){return box(_e_,_e2_,_e3_,_e4_)}}
    var bool=Stdlib_format[23],int$0=Stdlib_format[17];
    function nativeint(ppf,v){return caml_call3(pf,ppf,_f_,v)}
    function int32(ppf,v){return caml_call3(pf,ppf,_g_,v)}
    function int64(ppf,v){return caml_call3(pf,ppf,_h_,v)}
    function uint(ppf,v){return caml_call3(pf,ppf,_i_,v)}
    function uint32(ppf,v){return caml_call3(pf,ppf,_j_,v)}
    function uint64(ppf,v){return caml_call3(pf,ppf,_k_,v)}
    function unativeint(ppf,v){return caml_call3(pf,ppf,_l_,v)}
    var char$0=Stdlib_format[21],_m_=Stdlib_format[13];
    function buffer(ppf,b)
     {return caml_call2(_m_,ppf,caml_call1(Stdlib_buffer[2],b))}
    function exn(ppf,e)
     {return caml_call2(_m_,ppf,caml_call1(Stdlib_printexc[1],e))}
    function exn_backtrace(ppf,param)
     {var bt=param[2],e=param[1];
      function pp_backtrace_str(ppf,s)
       {var stop=caml_ml_string_length(s) - 1 | 0;
        if(runtime.caml_string_equal(s,cst$10))
         return caml_call2(_m_,ppf,cst_No_backtrace_available);
        var left=0,right=0;
        for(;;)
         {if(right === stop)
           return caml_call2
                   (_m_,
                    ppf,
                    caml_call3(Stdlib_string[4],s,left,right - left | 0));
          if(10 === caml_string_get(s,right))
           {caml_call2
             (_m_,ppf,caml_call3(Stdlib_string[4],s,left,right - left | 0));
            cut(ppf,0);
            var
             right$0=right + 1 | 0,
             left$0=right + 1 | 0,
             left=left$0,
             right=right$0;
            continue}
          var right$1=right + 1 | 0,right=right$1;
          continue}}
      return caml_call6
              (pf,
               ppf,
               _n_,
               exn,
               e,
               pp_backtrace_str,
               caml_call1(Stdlib_printexc[13],bt))}
    function float$0(ppf,v){return caml_call3(pf,ppf,_o_,v)}
    function round_dfrac(d,x)
     {if(x - Math.floor(x + 0.5) == 0.)return x;
      var m=Math.pow(10.,d);
      return Math.floor(x * m + 0.5) / m}
    function float_dfrac(d,ppf,f)
     {return caml_call3(pf,ppf,_p_,round_dfrac(d,f))}
    function float_dsig(d,ppf,f)
     {if(f == 0.)
       var _e0_=0.;
      else
       var
        m=Math.pow(10.,Math.floor(runtime.caml_log10_float(Math.abs(f)))),
        _e0_=round_dfrac(d,f / m) * m;
      return caml_call3(pf,ppf,_q_,_e0_)}
    function pair(opt,pp_fst,pp_snd,ppf,param)
     {var snd=param[2],fst=param[1];
      if(opt)var sth=opt[1],pp_sep=sth;else var pp_sep=cut;
      caml_call2(pp_fst,ppf,fst);
      caml_call2(pp_sep,ppf,0);
      return caml_call2(pp_snd,ppf,snd)}
    function option(opt,pp_v,ppf,param)
     {if(opt)var sth=opt[1],pp_none=sth;else var pp_none=nop;
      if(param){var v=param[1];return caml_call2(pp_v,ppf,v)}
      return caml_call2(pp_none,ppf,0)}
    function result(ok,error,ppf,param)
     {if(0 === param[0]){var v=param[1];return caml_call2(ok,ppf,v)}
      var e=param[1];
      return caml_call2(error,ppf,e)}
    function list(sep,pp_elt)
     {var _eX_=Stdlib_list[15];
      return function(_eY_,_eZ_){return iter(sep,_eX_,pp_elt,_eY_,_eZ_)}}
    function array(sep,pp_elt)
     {var _eU_=Stdlib_array[13];
      return function(_eV_,_eW_){return iter(sep,_eU_,pp_elt,_eV_,_eW_)}}
    function seq(sep,pp_elt)
     {var _eR_=Stdlib_seq[8];
      return function(_eS_,_eT_){return iter(sep,_eR_,pp_elt,_eS_,_eT_)}}
    function hashtbl(sep,pp_binding)
     {var _eO_=Stdlib_hashtbl[12];
      return function(_eP_,_eQ_)
       {return iter_bindings(sep,_eO_,pp_binding,_eP_,_eQ_)}}
    function queue(sep,pp_elt)
     {var _eK_=Stdlib_queue[15],_eL_=0;
      return function(_eM_,_eN_){return iter(_eL_,_eK_,pp_elt,_eM_,_eN_)}}
    function stack(sep,pp_elt)
     {var _eG_=Stdlib_stack[12],_eH_=0;
      return function(_eI_,_eJ_){return iter(_eH_,_eG_,pp_elt,_eI_,_eJ_)}}
    function iter$0(iter_f,pp_name,pp_elt)
     {var _eu_=0;
      function _ev_(_eE_,_eF_){return box(_eu_,pp_elt,_eE_,_eF_)}
      var _ew_=[0,sp];
      function pp_v(_eC_,_eD_){return iter(_ew_,iter_f,_ev_,_eC_,_eD_)}
      function _ex_(_eA_,_eB_){return symbol(pp_name,sp,_eA_,_eB_)}
      return parens(function(_ey_,_ez_){return symbol(_ex_,pp_v,_ey_,_ez_)})}
    function iter_bindings$0(iter_f,pp_name,pp_k,pp_v)
     {var _ei_=0;
      function _ej_(_es_,_et_){return pair(_ei_,pp_k,pp_v,_es_,_et_)}
      var _ek_=[0,sp];
      function pp_v$0(_eq_,_er_)
       {return iter_bindings(_ek_,iter_f,_ej_,_eq_,_er_)}
      function _el_(_eo_,_ep_){return symbol(pp_name,sp,_eo_,_ep_)}
      return parens(function(_em_,_en_){return symbol(_el_,pp_v$0,_em_,_en_)})}
    var
     sig_names=
      [0,
       [0,Stdlib_sys[16],cst_SIGABRT],
       [0,
        [0,Stdlib_sys[17],cst_SIGALRM],
        [0,
         [0,Stdlib_sys[18],cst_SIGFPE],
         [0,
          [0,Stdlib_sys[19],cst_SIGHUP],
          [0,
           [0,Stdlib_sys[20],cst_SIGILL],
           [0,
            [0,Stdlib_sys[21],cst_SIGINT],
            [0,
             [0,Stdlib_sys[22],cst_SIGKILL],
             [0,
              [0,Stdlib_sys[23],cst_SIGPIPE],
              [0,
               [0,Stdlib_sys[24],cst_SIGQUIT],
               [0,
                [0,Stdlib_sys[25],cst_SIGSEGV],
                [0,
                 [0,Stdlib_sys[26],cst_SIGTERM],
                 [0,
                  [0,Stdlib_sys[27],cst_SIGUSR1],
                  [0,
                   [0,Stdlib_sys[28],cst_SIGUSR2],
                   [0,
                    [0,Stdlib_sys[29],cst_SIGCHLD],
                    [0,
                     [0,Stdlib_sys[30],cst_SIGCONT],
                     [0,
                      [0,Stdlib_sys[31],cst_SIGSTOP],
                      [0,
                       [0,Stdlib_sys[32],cst_SIGTSTP],
                       [0,
                        [0,Stdlib_sys[33],cst_SIGTTIN],
                        [0,
                         [0,Stdlib_sys[34],cst_SIGTTOU],
                         [0,
                          [0,Stdlib_sys[35],cst_SIGVTALRM],
                          [0,
                           [0,Stdlib_sys[36],cst_SIGPROF],
                           [0,
                            [0,Stdlib_sys[37],cst_SIGBUS],
                            [0,
                             [0,Stdlib_sys[38],cst_SIGPOLL],
                             [0,
                              [0,Stdlib_sys[39],cst_SIGSYS],
                              [0,
                               [0,Stdlib_sys[40],cst_SIGTRAP],
                               [0,
                                [0,Stdlib_sys[41],cst_SIGURG],
                                [0,
                                 [0,Stdlib_sys[42],cst_SIGXCPU],
                                 [0,[0,Stdlib_sys[43],cst_SIGXFSZ],0]]]]]]]]]]]]]]]]]]]]]]]]]]]];
    function signal(ppf,s)
     {var match=caml_call2(Stdlib_list[44],s,sig_names);
      if(match){var name=match[1];return caml_call2(_m_,ppf,name)}
      return caml_call3(pf,ppf,_r_,s)}
    function uchar(ppf,u)
     {return caml_call3(pf,ppf,_s_,caml_call1(Stdlib_uchar[10],u))}
    function string(ppf,s){return caml_call3(pf,ppf,_t_,s)}
    function pair$0(pp_fst,pp_snd)
     {var _dX_=0;
      function _dY_(_eg_,_eh_){return box(_dX_,pp_snd,_eg_,_eh_)}
      function _dZ_(_ef_){return _ef_[2]}
      function _d0_(_ed_,_ee_){return using(_dZ_,_dY_,_ed_,_ee_)}
      var _d1_=0;
      function _d2_(_eb_,_ec_){return box(_d1_,pp_fst,_eb_,_ec_)}
      function _d3_(_ea_){return _ea_[1]}
      function _d4_(_d__,_d$_){return using(_d3_,_d2_,_d__,_d$_)}
      function _d5_(_d8_,_d9_){return symbol(_d4_,comma,_d8_,_d9_)}
      return parens(function(_d6_,_d7_){return symbol(_d5_,_d0_,_d6_,_d7_)})}
    function option$0(pp_v,ppf,param)
     {if(param){var v=param[1];return caml_call4(pf,ppf,_u_,pp_v,v)}
      return caml_call2(pf,ppf,_v_)}
    function result$0(ok,error,ppf,param)
     {if(0 === param[0]){var v=param[1];return caml_call4(pf,ppf,_w_,ok,v)}
      var e=param[1];
      return caml_call4(pf,ppf,_x_,error,e)}
    function list$0(pp_elt)
     {var _dU_=0;
      return brackets
              (list
                ([0,semi],
                 function(_dV_,_dW_){return box(_dU_,pp_elt,_dV_,_dW_)}))}
    function array$0(pp_elt)
     {var
       _dN_=0,
       pp_v=
        array([0,semi],function(_dS_,_dT_){return box(_dN_,pp_elt,_dS_,_dT_)});
      function _dM_(_dQ_,_dR_){return surround(cst$6,cst$5,pp_v,_dQ_,_dR_)}
      return function(_dO_,_dP_){return box(_c_,_dM_,_dO_,_dP_)}}
    function seq$0(pp_elt)
     {var _dJ_=0;
      return brackets
              (seq
                ([0,semi],
                 function(_dK_,_dL_){return box(_dJ_,pp_elt,_dK_,_dL_)}))}
    function hashtbl$0(pp_k,pp_v)
     {function _dG_(_dH_,_dI_){return any(_y_,_dH_,_dI_)}
      return iter_bindings$0(Stdlib_hashtbl[12],_dG_,pp_k,pp_v)}
    function stack$0(pp_elt)
     {function _dD_(_dE_,_dF_){return any(_z_,_dE_,_dF_)}
      return iter$0(Stdlib_stack[12],_dD_,pp_elt)}
    function queue$0(pp_elt)
     {function _dA_(_dB_,_dC_){return any(_A_,_dB_,_dC_)}
      return iter$0(Stdlib_queue[15],_dA_,pp_elt)}
    function field(opt,l,prj,pp_v,ppf,v)
     {if(opt)var sth=opt[1],label=sth;else var label=string;
      return caml_call6(pf,ppf,_B_,label,l,pp_v,caml_call1(prj,v))}
    function record(pps)
     {var _dl_=[0,function(_dy_,_dz_){return any(_C_,_dy_,_dz_)}];
      function _dm_(_dw_,_dx_){return concat(_dl_,pps,_dw_,_dx_)}
      var _dn_=0;
      function _do_(_du_,_dv_){return vbox(_dn_,_dm_,_du_,_dv_)}
      function _dp_(_ds_,_dt_){return surround(cst$12,cst$11,_do_,_ds_,_dt_)}
      return function(_dq_,_dr_){return box(_D_,_dp_,_dq_,_dr_)}}
    function ipow10(n)
     {var acc=1,n$0=n;
      for(;;)
       {if(0 === n$0)return acc;
        var n$1=n$0 - 1 | 0,acc$0=acc * 10 | 0,acc=acc$0,n$0=n$1;
        continue}}
    var si_symb=_E_.slice(),si_symb_max=16;
    function si_size(scale,u,ppf,s$2)
     {var s$3=s$2;
      for(;;)
       {var _dj_=scale < -8?1:0,_dk_=_dj_ || (8 < scale?1:0);
        if(_dk_)return caml_call1(invalid_arg$0(_L_),scale);
        if(0 === s$3)
         var pow_div_3=0;
        else
         {var p=-1,x=s$3;
          for(;;)
           {if(0 !== x){var x$0=x / 10 | 0,p$0=p + 1 | 0,p=p$0,x=x$0;continue}
            var pow_div_3=p / 3 | 0;
            break}}
        var symb=(scale + 8 | 0) + pow_div_3 | 0,match=16 < symb?1:0;
        if(match)
         var factor=ipow10((8 - scale | 0) * 3 | 0),symb$0=si_symb_max;
        else
         var factor$0=ipow10(pow_div_3 * 3 | 0),factor=factor$0,symb$0=symb;
        if(1 === factor)
         return caml_call5
                 (pf,
                  ppf,
                  _M_,
                  s$3,
                  caml_check_bound(si_symb,symb$0)[1 + symb$0],
                  u);
        var
         symb$1=caml_check_bound(si_symb,symb$0)[1 + symb$0],
         m=caml_div(s$3,factor),
         n=caml_mod(s$3,factor);
        if(100 <= m)
         {var m_up=0 < n?m + 1 | 0:m;
          if(1000 <= m_up){var s=caml_mul(m_up,factor),s$3=s;continue}
          return caml_call5(pf,ppf,_F_,m_up,symb$1,u)}
        if(10 <= m)
         {var
           f_factor=factor / 10 | 0,
           f_m=caml_div(n,f_factor),
           f_n=caml_mod(n,f_factor),
           f_m_up=0 < f_n?f_m + 1 | 0:f_m;
          if(0 === f_m_up)return caml_call5(pf,ppf,_G_,m,symb$1,u);
          if(10 <= f_m_up)
           {var
             s$0=caml_mul(m,factor) + caml_mul(f_m_up,f_factor) | 0,
             s$3=s$0;
            continue}
          return caml_call6(pf,ppf,_H_,m,f_m_up,symb$1,u)}
        var
         f_factor$0=factor / 100 | 0,
         f_m$0=caml_div(n,f_factor$0),
         f_n$0=caml_mod(n,f_factor$0),
         f_m_up$0=0 < f_n$0?f_m$0 + 1 | 0:f_m$0;
        if(0 === f_m_up$0)return caml_call5(pf,ppf,_I_,m,symb$1,u);
        if(100 <= f_m_up$0)
         {var
           s$1=caml_mul(m,factor) + caml_mul(f_m_up$0,f_factor$0) | 0,
           s$3=s$1;
          continue}
        return 0 === (f_m_up$0 % 10 | 0)
                ?caml_call6(pf,ppf,_J_,m,f_m_up$0 / 10 | 0,symb$1,u)
                :caml_call6(pf,ppf,_K_,m,f_m_up$0,symb$1,u)}}
    function byte_size(ppf,s){return si_size(0,cst_B,ppf,s)}
    function bi_byte_size(ppf,s)
     {var k=1024,_dg_=1;
      function pp_frac(_dh_,_di_){return float_dfrac(_dg_,_dh_,_di_)}
      function div_round_up(m,n){return caml_div((m + n | 0) - 1 | 0,n)}
      if(s < 1024)return caml_call3(pf,ppf,_N_,s);
      var m=1048576;
      if(s < 1048576)
       {var sk=s / 1024 | 0;
        return 10 <= sk
                ?caml_call5(pf,ppf,_O_,div_round_up(s,k),kstr$0,i)
                :caml_call6(pf,ppf,_P_,pp_frac,s / 1024,kstr$0,i)}
      var g=1073741824;
      if(s < 1073741824)
       {var sm=s / 1048576 | 0;
        return 10 <= sm
                ?caml_call4(pf,ppf,_Q_,div_round_up(s,m),i)
                :caml_call5(pf,ppf,_R_,pp_frac,s / 1048576,i)}
      var t=0;
      if(s < 0)
       {var sg=s / 1073741824 | 0;
        return 10 <= sg
                ?caml_call4(pf,ppf,_S_,div_round_up(s,g),i)
                :caml_call5(pf,ppf,_T_,pp_frac,s / 1073741824,i)}
      var p=0;
      if(s < 0)
       {var st=caml_div(s,0);
        return 10 <= st
                ?caml_call4(pf,ppf,_U_,div_round_up(s,t),i)
                :caml_call5(pf,ppf,_V_,pp_frac,s / 0,i)}
      var sp=caml_div(s,0);
      return 10 <= sp
              ?caml_call4(pf,ppf,_W_,div_round_up(s,p),i)
              :caml_call5(pf,ppf,_X_,pp_frac,s / 0,i)}
    function unsigned_compare(x0,x1)
     {return caml_call2
              (Stdlib_int64[15],
               caml_int64_sub(x0,Stdlib_int64[10]),
               caml_int64_sub(x1,Stdlib_int64[10]))}
    function unsigned_div(n,d)
     {var match=runtime.caml_lessthan(d,Stdlib_int64[1]);
      if(match)
       return 0 <= unsigned_compare(n,d)?Stdlib_int64[2]:Stdlib_int64[1];
      var
       q=
        runtime.caml_int64_shift_left
         (caml_int64_div(runtime.caml_int64_shift_right_unsigned(n,1),d),1),
       r=caml_int64_sub(n,caml_int64_mul(q,d));
      return 0 <= unsigned_compare(r,d)?caml_call1(Stdlib_int64[6],q):q}
    function unsigned_rem(n,d)
     {return caml_int64_sub
              (n,caml_int64_mul(caml_call2(Stdlib_int64[4],n,d),d))}
    function pp_si_span(counter,unit_str,si_unit,si_higher_unit,ppf,span)
     {function geq(x,y){return 0 <= unsigned_compare(x,y)?1:0}
      var m=unsigned_div(span,si_unit),n=unsigned_rem(span,si_unit);
      if(geq(m,_Y_))
       {var
         m_up=
          caml_call2(Stdlib_int64[17],n,_Z_)?m:caml_call1(Stdlib_int64[6],m),
         span$0=caml_int64_mul(m_up,si_unit);
        if(geq(span$0,si_higher_unit))
         {if(counter < 50)
           {var counter$0=counter + 1 | 0;
            return uint64_ns_span$0(counter$0,ppf,span$0)}
          return caml_trampoline_return(uint64_ns_span$0,[0,ppf,span$0])}
        return caml_call4(pf,ppf,___,m_up,unit_str)}
      if(geq(m,_$_))
       {var
         f_factor=unsigned_div(si_unit,_aa_),
         f_m=unsigned_div(n,f_factor),
         f_n=unsigned_rem(n,f_factor),
         f_m_up=
          caml_call2(Stdlib_int64[17],f_n,_ab_)
           ?f_m
           :caml_call1(Stdlib_int64[6],f_m);
        if(caml_notequal(f_m_up,_ac_))
         {if(geq(f_m_up,_ad_))
           {var
             _de_=
              caml_int64_add
               (caml_int64_mul(m,si_unit),caml_int64_mul(f_m_up,f_factor));
            if(counter < 50)
             {var counter$1=counter + 1 | 0;
              return uint64_ns_span$0(counter$1,ppf,_de_)}
            return caml_trampoline_return(uint64_ns_span$0,[0,ppf,_de_])}
          return caml_call5(pf,ppf,_ae_,m,f_m_up,unit_str)}
        return caml_call4(pf,ppf,_af_,m,unit_str)}
      var
       f_factor$0=unsigned_div(si_unit,_ag_),
       f_m$0=unsigned_div(n,f_factor$0),
       f_n$0=unsigned_rem(n,f_factor$0),
       f_m_up$0=
        caml_call2(Stdlib_int64[17],f_n$0,_ah_)
         ?f_m$0
         :caml_call1(Stdlib_int64[6],f_m$0);
      if(caml_notequal(f_m_up$0,_ai_))
       {if(geq(f_m_up$0,_aj_))
         {var
           _df_=
            caml_int64_add
             (caml_int64_mul(m,si_unit),caml_int64_mul(f_m_up$0,f_factor$0));
          if(counter < 50)
           {var counter$2=counter + 1 | 0;
            return uint64_ns_span$0(counter$2,ppf,_df_)}
          return caml_trampoline_return(uint64_ns_span$0,[0,ppf,_df_])}
        return caml_call2
                 (Stdlib_int64[17],runtime.caml_int64_mod(f_m_up$0,_al_),_ak_)
                ?caml_call5
                  (pf,ppf,_an_,m,caml_int64_div(f_m_up$0,_am_),unit_str)
                :caml_call5(pf,ppf,_ao_,m,f_m_up$0,unit_str)}
      return caml_call4(pf,ppf,_ap_,m,unit_str)}
    function pp_non_si
     (counter,unit_str,unit,unit_lo_str,unit_lo,unit_lo_size,ppf,span)
     {var m=unsigned_div(span,unit),n=unsigned_rem(span,unit);
      if(caml_call2(Stdlib_int64[17],n,_aq_))
       return caml_call4(pf,ppf,_ar_,m,unit_str);
      var
       f_m=unsigned_div(n,unit_lo),
       f_n=unsigned_rem(n,unit_lo),
       f_m_up=
        caml_call2(Stdlib_int64[17],f_n,_as_)
         ?f_m
         :caml_call1(Stdlib_int64[6],f_m);
      if(0 <= unsigned_compare(f_m_up,unit_lo_size))
       {var
         _dd_=
          caml_int64_add
           (caml_int64_mul(m,unit),caml_int64_mul(f_m_up,unit_lo));
        if(counter < 50)
         {var counter$0=counter + 1 | 0;
          return uint64_ns_span$0(counter$0,ppf,_dd_)}
        return caml_trampoline_return(uint64_ns_span$0,[0,ppf,_dd_])}
      return caml_call6(pf,ppf,_at_,m,unit_str,f_m_up,unit_lo_str)}
    function uint64_ns_span$0(counter,ppf,s)
     {function lt(x,y){return -1 === unsigned_compare(x,y)?1:0}
      if(lt(s,us_span))return caml_call3(pf,ppf,_au_,s);
      if(lt(s,ms_span))
       {if(counter < 50)
         {var counter$3=counter + 1 | 0;
          return pp_si_span(counter$3,cst_us,us_span,ms_span,ppf,s)}
        return caml_trampoline_return
                (pp_si_span,[0,cst_us,us_span,ms_span,ppf,s])}
      if(lt(s,sec_span))
       {if(counter < 50)
         {var counter$4=counter + 1 | 0;
          return pp_si_span(counter$4,cst_ms,ms_span,sec_span,ppf,s)}
        return caml_trampoline_return
                (pp_si_span,[0,cst_ms,ms_span,sec_span,ppf,s])}
      if(lt(s,min_span))
       {if(counter < 50)
         {var counter$5=counter + 1 | 0;
          return pp_si_span(counter$5,cst_s,sec_span,min_span,ppf,s)}
        return caml_trampoline_return
                (pp_si_span,[0,cst_s,sec_span,min_span,ppf,s])}
      if(lt(s,hour_span))
       {if(counter < 50)
         {var counter$0=counter + 1 | 0;
          return pp_non_si
                  (counter$0,cst_min,min_span,cst_s$0,sec_span,_av_,ppf,s)}
        return caml_trampoline_return
                (pp_non_si,[0,cst_min,min_span,cst_s$0,sec_span,_av_,ppf,s])}
      if(lt(s,day_span))
       {if(counter < 50)
         {var counter$1=counter + 1 | 0;
          return pp_non_si
                  (counter$1,cst_h,hour_span,cst_min$0,min_span,_aw_,ppf,s)}
        return caml_trampoline_return
                (pp_non_si,[0,cst_h,hour_span,cst_min$0,min_span,_aw_,ppf,s])}
      if(lt(s,year_span))
       {if(counter < 50)
         {var counter$2=counter + 1 | 0;
          return pp_non_si
                  (counter$2,cst_d,day_span,cst_h$0,hour_span,_ax_,ppf,s)}
        return caml_trampoline_return
                (pp_non_si,[0,cst_d,day_span,cst_h$0,hour_span,_ax_,ppf,s])}
      var m=unsigned_div(s,year_span),n=unsigned_rem(s,year_span);
      if(caml_call2(Stdlib_int64[17],n,_ay_))return caml_call3(pf,ppf,_az_,m);
      var
       f_m=unsigned_div(n,day_span),
       f_n=unsigned_rem(n,day_span),
       f_m_up=
        caml_call2(Stdlib_int64[17],f_n,_aA_)
         ?f_m
         :caml_call1(Stdlib_int64[6],f_m);
      return 0 <= unsigned_compare(f_m_up,y)
              ?caml_call3(pf,ppf,_aB_,caml_call1(Stdlib_int64[6],m))
              :caml_call4(pf,ppf,_aC_,m,f_m_up)}
    function uint64_ns_span(ppf,s)
     {return caml_trampoline(uint64_ns_span$0(0,ppf,s))}
    function iter_vec(f,param)
     {var get=param[2],n=param[1],_db_=n - 1 | 0,_da_=0;
      if(! (_db_ < 0))
       {var i=_da_;
        for(;;)
         {caml_call2(f,i,caml_call1(get,i));
          var _dc_=i + 1 | 0;
          if(_db_ !== i){var i=_dc_;continue}
          break}}
      return 0}
    function vec(sep)
     {return function(_c9_,_c__,_c$_)
       {return iter_bindings(sep,iter_vec,_c9_,_c__,_c$_)}}
    function _aD_(s)
     {return [0,
              caml_ml_string_length(s),
              function(_c8_){return caml_string_get(s,_c8_)}]}
    function on_string(_c5_,_c6_,_c7_){return using(_aD_,_c5_,_c6_,_c7_)}
    function _aE_(b)
     {return [0,
              runtime.caml_ml_bytes_length(b),
              function(_c4_){return runtime.caml_bytes_get(b,_c4_)}]}
    function on_bytes(_c1_,_c2_,_c3_){return using(_aE_,_c1_,_c2_,_c3_)}
    var
     _aF_=0,
     _aH_=[0,[0,268435455,function(_c0_){return fmt(_aG_,_c0_)}],_aF_],
     _aJ_=[0,[0,16777215,function(_cZ_){return fmt(_aI_,_cZ_)}],_aH_],
     _aL_=[0,[0,1048575,function(_cY_){return fmt(_aK_,_cY_)}],_aJ_],
     _aN_=[0,[0,65535,function(_cX_){return fmt(_aM_,_cX_)}],_aL_],
     _aP_=[0,[0,4095,function(_cW_){return fmt(_aO_,_cW_)}],_aN_],
     _aR_=[0,[0,255,function(_cV_){return fmt(_aQ_,_cV_)}],_aP_],
     prefix0x=[0,[0,15,function(_cU_){return fmt(_aS_,_cU_)}],_aR_];
    function ascii(opt,_cP_,param,ppf,v)
     {var n=v[1];
      if(opt)var sth=opt[1],w=sth;else var w=0;
      if(_cP_)
       var sth$0=_cP_[1],subst=sth$0;
      else
       var
        _cR_=46,
        subst=function(_cS_,_cT_){return const$0(char$0,_cR_,_cS_,_cT_)};
      function pp_char(ppf,param)
       {var c=param[2];
        if(32 <= c && ! (127 <= c))return caml_call2(char$0,ppf,c);
        return caml_call2(subst,ppf,0)}
      caml_call3(vec(0),pp_char,ppf,v);
      var _cQ_=n < w?1:0;
      return _cQ_?sps(w - n | 0,ppf,0):_cQ_}
    function octets(opt,_cK_,param,ppf,v)
     {var n=v[1];
      if(opt)var sth=opt[1],w=sth;else var w=0;
      if(_cK_)var sth$0=_cK_[1],sep=sth$0;else var sep=sp;
      function pp_sep(ppf,i)
       {var _cN_=0 < i?1:0,_cO_=_cN_?0 === (i % 2 | 0)?1:0:_cN_;
        return _cO_?caml_call2(sep,ppf,0):_cO_}
      function pp_char(ppf,param)
       {var c=param[2],i=param[1];
        pp_sep(ppf,i);
        return caml_call3(pf,ppf,_aU_,c)}
      caml_call3(vec([0,nop]),pp_char,ppf,v);
      var _cL_=w - 1 | 0;
      if(! (_cL_ < n))
       {var i=n;
        for(;;)
         {pp_sep(ppf,i);
          sps(2,ppf,0);
          var _cM_=i + 1 | 0;
          if(_cL_ !== i){var i=_cM_;continue}
          break}}
      return 0}
    function addresses(addr,opt,pp_vec,ppf,v)
     {var n$0=v[1];
      if(opt)var sth=opt[1],w=sth;else var w=16;
      if(addr)
       var pp$0=addr[1],addr$0=pp$0;
      else
       {var
         _cC_=function(_cI_,_cJ_){return const$0(_m_,cst$13,_cI_,_cJ_)},
         max=caml_mul(caml_div(n$0 - 1 | 0,w),w),
         _cB_=function(param){var x=param[1];return max <= x?1:0},
         match=caml_call2(Stdlib_list[36],_cB_,prefix0x);
        if(match)
         var match$0=match[1],pp=match$0[2],_cD_=pp;
        else
         var _cD_=function(_cH_){return fmt(_aT_,_cH_)};
        var addr$0=function(_cF_,_cG_){return symbol(_cD_,_cC_,_cF_,_cG_)}}
      function pp_sub(ppf,param)
       {var sub=param[2],i=param[1];
        caml_call2(addr$0,ppf,caml_mul(i,w));
        return box(0,pp_vec,ppf,sub)}
      var get=v[2],n=v[1];
      function _cz_(j)
       {var off=caml_mul(w,j);
        function _cE_(i){return caml_call1(get,i + off | 0)}
        return [0,caml_call2(Stdlib[16],w,n - off | 0),_cE_]}
      var _cA_=[0,caml_div(n - 1 | 0,w) + 1 | 0,_cz_];
      return vbox(0,caml_call1(vec(0),pp_sub),ppf,_cA_)}
    function hex(opt,param)
     {if(opt)var sth=opt[1],w=sth;else var w=16;
      var _b5_=0,_b6_=0,_b7_=[0,w];
      function eta(_cx_,_cy_){return ascii(_b7_,_b6_,_b5_,_cx_,_cy_)}
      var _b8_=0;
      function _b9_(_cv_,_cw_){return box(_b8_,eta,_cv_,_cw_)}
      var _b__=2;
      function _b$_(_ct_,_cu_){return sps(_b__,_ct_,_cu_)}
      var _ca_=0,_cb_=0,_cc_=[0,w];
      function eta$0(_cr_,_cs_){return octets(_cc_,_cb_,_ca_,_cr_,_cs_)}
      var _cd_=0;
      function _ce_(_cp_,_cq_){return box(_cd_,eta$0,_cp_,_cq_)}
      function _cf_(_cn_,_co_){return symbol(_ce_,_b$_,_cn_,_co_)}
      function _cg_(_cl_,_cm_){return symbol(_cf_,_b9_,_cl_,_cm_)}
      var _ch_=[0,w],_ci_=0;
      return function(_cj_,_ck_){return addresses(_ci_,_ch_,_cg_,_cj_,_ck_)}}
    function is_nl(c){return 10 === c?1:0}
    function is_nl_or_sp(c)
     {var _b3_=10 === c?1:0,_b4_=_b3_ || (32 === c?1:0);return _b4_}
    function is_white(param)
     {var switch$0=0;
      if(14 <= param)
       {if(32 === param)switch$0 = 1}
      else
       if(9 <= param)switch$0 = 1;
      return switch$0?1:0}
    function not_white(c){return 1 - is_white(c)}
    function not_white_or_nl(c)
     {var _b2_=10 === c?1:0;return _b2_?_b2_:not_white(c)}
    function stop_at(sat,start,max,s)
     {var start$0=start;
      for(;;)
       {if(max < start$0)return start$0;
        if(caml_call1(sat,caml_string_get(s,start$0)))return start$0;
        var start$1=start$0 + 1 | 0,start$0=start$1;
        continue}}
    function sub(s,start,stop,max)
     {if(start === stop)return cst$14;
      if(0 === start && max < stop)return s;
      return caml_call3(Stdlib_string[4],s,start,stop - start | 0)}
    function words(ppf,s)
     {var
       max=caml_ml_string_length(s) - 1 | 0,
       start$1=stop_at(not_white,0,max,s);
      if(max < start$1)return 0;
      var start=start$1;
      for(;;)
       {var stop=stop_at(is_white,start,max,s);
        if(max < stop)
         {var _b0_=sub(s,start,stop,max);
          return caml_call2(Stdlib_format[13],ppf,_b0_)}
        var _b1_=sub(s,start,stop,max);
        caml_call2(Stdlib_format[13],ppf,_b1_);
        var start$0=stop_at(not_white,stop,max,s);
        if(max < start$0)return 0;
        caml_call2(Stdlib_format[25],ppf,0);
        var start=start$0;
        continue}}
    function paragraphs(ppf,s)
     {var
       max=caml_ml_string_length(s) - 1 | 0,
       start$3=stop_at(not_white,0,max,s);
      if(max < start$3)return 0;
      var start=start$3;
      for(;;)
       {var stop=stop_at(is_white,start,max,s);
        if(max < stop)
         {var _bY_=sub(s,start,stop,max);
          return caml_call2(Stdlib_format[13],ppf,_bY_)}
        var _bZ_=sub(s,start,stop,max);
        caml_call2(Stdlib_format[13],ppf,_bZ_);
        var start$0=stop_at(not_white_or_nl,stop,max,s);
        if(max < start$0)return 0;
        if(10 === caml_string_get(s,start$0))
         {var start$1=stop_at(not_white_or_nl,start$0 + 1 | 0,max,s);
          if(max < start$1)return 0;
          if(10 === caml_string_get(s,start$1))
           {var start$2=stop_at(not_white,start$1 + 1 | 0,max,s);
            if(max < start$2)return 0;
            caml_call2(Stdlib_format[32],ppf,0);
            caml_call2(Stdlib_format[32],ppf,0);
            var start=start$2;
            continue}
          caml_call2(Stdlib_format[25],ppf,0);
          var start=start$1;
          continue}
        caml_call2(Stdlib_format[25],ppf,0);
        var start=start$0;
        continue}}
    function text(ppf,s)
     {var max=caml_ml_string_length(s) - 1 | 0,start=0;
      for(;;)
       {var stop=stop_at(is_nl_or_sp,start,max,s);
        if(max < stop)
         {var _bW_=sub(s,start,stop,max);
          return caml_call2(Stdlib_format[13],ppf,_bW_)}
        var _bX_=sub(s,start,stop,max);
        caml_call2(Stdlib_format[13],ppf,_bX_);
        var match=caml_string_get(s,stop);
        if(10 === match)
         caml_call2(Stdlib_format[32],ppf,0);
        else
         {if(32 !== match)throw [0,Assert_failure,_aV_];
          caml_call2(Stdlib_format[25],ppf,0)}
        var start$0=stop + 1 | 0,start=start$0;
        continue}}
    function lines(ppf,s)
     {var max=caml_ml_string_length(s) - 1 | 0,start=0;
      for(;;)
       {var stop=stop_at(is_nl,start,max,s);
        if(max < stop)
         {var _bU_=sub(s,start,stop,max);
          return caml_call2(Stdlib_format[13],ppf,_bU_)}
        var _bV_=sub(s,start,stop,max);
        caml_call2(Stdlib_format[13],ppf,_bV_);
        caml_call2(Stdlib_format[32],ppf,0);
        var start$0=stop + 1 | 0,start=start$0;
        continue}}
    function truncated(max,ppf,s)
     {var match=caml_ml_string_length(s) <= max?1:0;
      if(match)return caml_call2(Stdlib_format[13],ppf,s);
      var _bR_=max - 4 | 0,_bQ_=0;
      if(! (_bR_ < 0))
       {var i=_bQ_;
        for(;;)
         {var _bS_=caml_string_get(s,i);
          caml_call2(Stdlib_format[21],ppf,_bS_);
          var _bT_=i + 1 | 0;
          if(_bR_ !== i){var i=_bT_;continue}
          break}}
      return caml_call2(Stdlib_format[13],ppf,cst$15)}
    function text_loc(ppf,param)
     {var
       _bP_=param[2],
       c1=_bP_[2],
       l1=_bP_[1],
       match=param[1],
       c0=match[2],
       l0=match[1];
      if(l0 === l1 && c0 === c1)return caml_call4(pf,ppf,_aW_,l0,c0);
      return caml_call6(pf,ppf,_aX_,l0,c0,l1,c1)}
    function one_of(opt,pp_v,ppf,vs)
     {if(opt)var sth=opt[1],empty=sth;else var empty=nop;
      if(vs)
       {var _bM_=vs[1],_bN_=vs[2];
        if(_bN_)
         {if(_bN_[2])
           {var
             loop=
              function(ppf,param)
               {var param$0=param;
                for(;;)
                 {if(param$0)
                   {var _bO_=param$0[1];
                    if(param$0[2])
                     {var vs=param$0[2];
                      caml_call4(pf,ppf,_aY_,pp_v,_bO_);
                      var param$0=vs;
                      continue}
                    return caml_call4(pf,ppf,_aZ_,pp_v,_bO_)}
                  throw [0,Assert_failure,_a0_]}};
            return caml_call4(pf,ppf,_a1_,loop,vs)}
          var v1=_bN_[1];
          return caml_call6(pf,ppf,_a2_,pp_v,_bM_,pp_v,v1)}
        return caml_call2(pp_v,ppf,_bM_)}
      return caml_call2(empty,ppf,0)}
    function did_you_mean(opt,_bG_,kind,pp_v,ppf,param)
     {var hints=param[2],v=param[1];
      if(opt)
       var sth=opt[1],pre=sth;
      else
       var pre=function(_bK_,_bL_){return any(_a5_,_bK_,_bL_)};
      if(_bG_)var sth$0=_bG_[1],post=sth$0;else var post=nop;
      if(hints)
       {var _bH_=0;
        return caml_call11
                (pf,
                 ppf,
                 _a3_,
                 pre,
                 0,
                 kind,
                 pp_v,
                 v,
                 post,
                 0,
                 function(_bI_,_bJ_){return one_of(_bH_,pp_v,_bI_,_bJ_)},
                 hints)}
      return caml_call9(pf,ppf,_a4_,pre,0,kind,pp_v,v,post,0)}
    var id=[0,0];
    function attr(param)
     {id[1]++;
      var K=[248,cst_K,runtime.caml_fresh_oo_id(0)];
      function _bE_(param)
       {if(param[1] === K){var x=param[2];return x}
        throw [0,Assert_failure,_a6_]}
      function _bF_(x){return [0,K,x]}
      return [0,id[1],_bF_,_bE_]}
    var
     compare=runtime.caml_int_compare,
     Int=[0,compare],
     Imap=caml_call1(Stdlib_map[1],Int),
     attrs=[0,0];
    function store(ppf)
     {var top=0,param=attrs[1];
      for(;;)
       {if(param)
         {var
           es=param[2],
           e=param[1],
           match=caml_call1(Stdlib_ephemeron[1][2],e);
          if(match)
           {var k=match[1];
            if(k === ppf)
             {var match$0=caml_call1(Stdlib_ephemeron[1][8],e);
              if(match$0)
               {var v=match$0[1];
                if(1 - (0 === top?1:0))
                 attrs[1] = [0,e,caml_call2(Stdlib_list[12],top,es)];
                return v}
              throw [0,Assert_failure,_a7_]}
            var top$0=[0,e,top],top=top$0,param=es;
            continue}
          var param=es;
          continue}
        var e$0=caml_call1(Stdlib_ephemeron[1][1],0),v$0=[0,Imap[1]];
        attrs[1] = [0,e$0,caml_call1(Stdlib_list[9],top)];
        caml_call2(Stdlib_ephemeron[1][4],e$0,ppf);
        caml_call2(Stdlib_ephemeron[1][10],e$0,v$0);
        return v$0}}
    function get(param,ppf)
     {var
       prj=param[3],
       k=param[1],
       _bD_=store(ppf)[1],
       match=caml_call2(Imap[28],k,_bD_);
      if(match){var x=match[1];return [0,caml_call1(prj,x)]}
      return 0}
    function set(param,v,ppf)
     {var inj=param[2],k=param[1];
      if(ppf === Stdlib_format[109])
       return caml_call1(invalid_arg,err_str_formatter);
      var s=store(ppf),_bB_=s[1],_bC_=caml_call1(inj,v);
      s[1] = caml_call3(Imap[4],k,_bC_,_bB_);
      return 0}
    function def(x,param){if(param){var y=param[1];return y}return x}
    var utf_8_attr=attr(0);
    function utf_8(ppf){return def(1,get(utf_8_attr,ppf))}
    function set_utf_8(ppf,x){return set(utf_8_attr,x,ppf)}
    var style_renderer_attr=attr(0);
    function style_renderer(ppf)
     {return def(870530776,get(style_renderer_attr,ppf))}
    function set_style_renderer(ppf,x){return set(style_renderer_attr,x,ppf)}
    function with_buffer(like,buf)
     {var ppf=caml_call1(Stdlib_format[107],buf);
      if(like){var like$0=like[1],_bA_=store(like$0)[1];store(ppf)[1] = _bA_}
      return ppf}
    function str_like(ppf,fmt)
     {var buf=caml_call1(Stdlib_buffer[1],64),bppf=with_buffer([0,ppf],buf);
      function flush(ppf)
       {caml_call2(Stdlib_format[36],ppf,0);
        var s=caml_call1(Stdlib_buffer[2],buf);
        caml_call1(Stdlib_buffer[9],buf);
        return s}
      return caml_call3(Stdlib_format[130],flush,bppf,fmt)}
    function if_utf_8(pp_u,pp,ppf,v)
     {var pp_u$0=utf_8(ppf)?pp_u:pp;return caml_call2(pp_u$0,ppf,v)}
    function ansi_style_code(param)
     {if(typeof param === "number")
       return 698610924 <= param
               ?749039939 <= param
                 ?870530776 <= param
                   ?989373200 <= param?cst_3:cst_0
                   :756711075 <= param?cst_32:cst_36
                 :737308346 === param?cst_34:737455525 <= param?cst_1:cst_4
               :-397582078 <= param
                 ?82908052 <= param
                   ?242899572 <= param?cst_2:cst_33
                   :4100401 <= param?cst_31:cst_7
                 :-605101559 === param
                   ?cst_35
                   :-588596599 <= param?cst_37:cst_30;
      if(15713 <= param[1])
       {var _bw_=param[2];
        if(typeof _bw_ === "number")
         return 82908052 <= _bw_
                 ?749039939 <= _bw_
                   ?756711075 <= _bw_?cst_32$0:cst_36$0
                   :737308346 <= _bw_?cst_34$0:cst_33$0
                 :-588596599 <= _bw_
                   ?4100401 <= _bw_?cst_31$0:cst_37$0
                   :-605101559 <= _bw_?cst_35$0:cst_30$0;
        var _bx_=_bw_[2];
        return 82908052 <= _bx_
                ?749039939 <= _bx_
                  ?756711075 <= _bx_?cst_92:cst_96
                  :737308346 <= _bx_?cst_94:cst_93
                :-588596599 <= _bx_
                  ?4100401 <= _bx_?cst_91:cst_97
                  :-605101559 <= _bx_?cst_95:cst_90}
      var _by_=param[2];
      if(typeof _by_ === "number")
       return 82908052 <= _by_
               ?749039939 <= _by_
                 ?756711075 <= _by_?cst_42:cst_46
                 :737308346 <= _by_?cst_44:cst_43
               :-588596599 <= _by_
                 ?4100401 <= _by_?cst_41:cst_47
                 :-605101559 <= _by_?cst_45:cst_40;
      var _bz_=_by_[2];
      return 82908052 <= _bz_
              ?749039939 <= _bz_
                ?756711075 <= _bz_?cst_102:cst_106
                :737308346 <= _bz_?cst_104:cst_103
              :-588596599 <= _bz_
                ?4100401 <= _bz_?cst_101:cst_107
                :-605101559 <= _bz_?cst_105:cst_100}
    function pp_sgr(ppf,style)
     {caml_call3(Stdlib_format[15],ppf,0,cst$16);
      caml_call3(Stdlib_format[15],ppf,0,style);
      return caml_call3(Stdlib_format[15],ppf,0,cst_m)}
    var curr_style=attr(0);
    function styled(style,pp_v,ppf,v)
     {var match=style_renderer(ppf);
      if(870530776 <= match)return caml_call2(pp_v,ppf,v);
      var match$0=get(curr_style,ppf);
      if(match$0)
       var s=match$0[1],curr=s;
      else
       {var s$0=[0,cst_0$0];set(curr_style,s$0,ppf);var curr=s$0}
      var _bt_=curr[1],here=ansi_style_code(style);
      if(870530776 === style)
       var here$0=here;
      else
       var
        _bv_=caml_call2(Stdlib[28],cst$17,here),
        here$0=caml_call2(Stdlib[28],_bt_,_bv_);
      curr[1] = here$0;
      try
       {pp_sgr(ppf,here);
        caml_call2(pp_v,ppf,v);
        pp_sgr(ppf,_bt_);
        curr[1] = _bt_;
        var _bu_=0;
        return _bu_}
      catch(e){e = caml_wrap_exception(e);curr[1] = _bt_;throw e}}
    function label(_br_,_bs_){return styled(_a8_,_m_,_br_,_bs_)}
    function field$0(opt,_bo_,l,prj,pp_v,ppf,v)
     {if(opt)var sth=opt[1],label$0=sth;else var label$0=label;
      if(_bo_)
       var sth$0=_bo_[1],sep=sth$0;
      else
       var sep=function(_bp_,_bq_){return any(_a__,_bp_,_bq_)};
      return caml_call8(pf,ppf,_a9_,label$0,l,sep,0,pp_v,caml_call1(prj,v))}
    function record$0(opt,pps)
     {if(opt)var sth=opt[1],sep=sth;else var sep=cut;
      var _bh_=[0,sep];
      function _bi_(_bm_,_bn_){return concat(_bh_,pps,_bm_,_bn_)}
      var _bj_=0;
      return function(_bk_,_bl_){return vbox(_bj_,_bi_,_bk_,_bl_)}}
    function of_to_string(f,ppf,v){return caml_call2(_m_,ppf,caml_call1(f,v))}
    function to_to_string(pp_v,v){return caml_call3(str,_a$_,pp_v,v)}
    function prefix(pp_p,pp_v,ppf,v)
     {caml_call2(pp_p,ppf,0);return caml_call2(pp_v,ppf,v)}
    function suffix(pp_s,pp_v,ppf,v)
     {caml_call2(pp_v,ppf,v);return caml_call2(pp_s,ppf,0)}
    function styled_unit(style,fmt)
     {function _bc_(_bf_,_bg_){return any(fmt,_bf_,_bg_)}
      return function(_bd_,_be_){return styled(style,_bc_,_bd_,_be_)}}
    var
     _ba_=
      [0,
       signal,
       uchar,
       string,
       pair$0,
       option$0,
       result$0,
       list$0,
       array$0,
       seq$0,
       hashtbl$0,
       queue$0,
       stack$0,
       field,
       record,
       iter$0,
       iter_bindings$0],
     Fmt=
      [0,
       stdout,
       stderr,
       pf,
       pr,
       epr,
       str,
       kpf,
       kstr,
       str_like,
       with_buffer,
       failwith,
       failwith_notrace,
       invalid_arg$0,
       error,
       error_msg,
       flush,
       nop,
       any,
       using,
       const$0,
       fmt,
       cut,
       sp,
       sps,
       comma,
       semi,
       symbol,
       symbol,
       concat,
       iter,
       iter_bindings,
       box,
       hbox,
       vbox,
       hvbox,
       hovbox,
       parens,
       brackets,
       braces,
       quote,
       function(_bb_){return _bb_},
       field$0,
       record$0,
       bool,
       int$0,
       nativeint,
       int32,
       int64,
       uint,
       unativeint,
       uint32,
       uint64,
       float$0,
       float_dfrac,
       float_dsig,
       char$0,
       _m_,
       buffer,
       exn,
       exn_backtrace,
       pair,
       option,
       result,
       list,
       array,
       seq,
       hashtbl,
       queue,
       stack,
       _ba_,
       si_size,
       byte_size,
       bi_byte_size,
       uint64_ns_span,
       on_bytes,
       on_string,
       ascii,
       octets,
       addresses,
       hex,
       words,
       paragraphs,
       text,
       lines,
       truncated,
       text_loc,
       one_of,
       did_you_mean,
       if_utf_8,
       utf_8,
       set_utf_8,
       styled,
       style_renderer,
       set_style_renderer,
       of_to_string,
       to_to_string,
       str,
       kstr,
       str_like,
       any,
       any,
       prefix,
       suffix,
       styled_unit];
    runtime.caml_register_global(252,Fmt,"Fmt");
    return}
  (function(){return this}()));


//# 1 "../../.js/ppx_deriving.runtime/ppx_deriving_runtime.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     global_data=runtime.caml_get_global_data(),
     Stdlib=global_data.Stdlib,
     invalid_arg=Stdlib[1],
     failwith=Stdlib[2],
     Exit=Stdlib[3],
     Match_failure=Stdlib[4],
     Assert_failure=Stdlib[5],
     Invalid_argument=Stdlib[6],
     Failure=Stdlib[7],
     Not_found=Stdlib[8],
     Out_of_memory=Stdlib[9],
     Stack_overflow=Stdlib[10],
     Sys_error=Stdlib[11],
     End_of_file=Stdlib[12],
     Division_by_zero=Stdlib[13],
     Sys_blocked_io=Stdlib[14],
     Undefined_recursive_module=Stdlib[15],
     min=Stdlib[16],
     max=Stdlib[17],
     abs=Stdlib[18],
     max_int=Stdlib[19],
     min_int=Stdlib[20],
     lnot=Stdlib[21],
     infinity=Stdlib[22],
     neg_infinity=Stdlib[23],
     nan=Stdlib[24],
     max_float=Stdlib[25],
     min_float=Stdlib[26],
     epsilon_float=Stdlib[27],
     symbol=Stdlib[28],
     char_of_int=Stdlib[29],
     string_of_bool=Stdlib[30],
     bool_of_string_opt=Stdlib[31],
     bool_of_string=Stdlib[32],
     string_of_int=Stdlib[33],
     int_of_string_opt=Stdlib[34],
     string_of_float=Stdlib[35],
     float_of_string_opt=Stdlib[36],
     symbol$0=Stdlib[37],
     stdin=Stdlib[38],
     stdout=Stdlib[39],
     stderr=Stdlib[40],
     print_char=Stdlib[41],
     print_string=Stdlib[42],
     print_bytes=Stdlib[43],
     print_int=Stdlib[44],
     print_float=Stdlib[45],
     print_endline=Stdlib[46],
     print_newline=Stdlib[47],
     prerr_char=Stdlib[48],
     prerr_string=Stdlib[49],
     prerr_bytes=Stdlib[50],
     prerr_int=Stdlib[51],
     prerr_float=Stdlib[52],
     prerr_endline=Stdlib[53],
     prerr_newline=Stdlib[54],
     read_line=Stdlib[55],
     read_int_opt=Stdlib[56],
     read_int=Stdlib[57],
     read_float_opt=Stdlib[58],
     read_float=Stdlib[59],
     open_out=Stdlib[60],
     open_out_bin=Stdlib[61],
     open_out_gen=Stdlib[62],
     flush=Stdlib[63],
     flush_all=Stdlib[64],
     output_char=Stdlib[65],
     output_string=Stdlib[66],
     output_bytes=Stdlib[67],
     output=Stdlib[68],
     output_substring=Stdlib[69],
     output_byte=Stdlib[70],
     output_binary_int=Stdlib[71],
     output_value=Stdlib[72],
     seek_out=Stdlib[73],
     pos_out=Stdlib[74],
     out_channel_length=Stdlib[75],
     close_out=Stdlib[76],
     close_out_noerr=Stdlib[77],
     set_binary_mode_out=Stdlib[78],
     open_in=Stdlib[79],
     open_in_bin=Stdlib[80],
     open_in_gen=Stdlib[81],
     input_char=Stdlib[82],
     input_line=Stdlib[83],
     input=Stdlib[84],
     really_input=Stdlib[85],
     really_input_string=Stdlib[86],
     input_byte=Stdlib[87],
     input_binary_int=Stdlib[88],
     input_value=Stdlib[89],
     seek_in=Stdlib[90],
     pos_in=Stdlib[91],
     in_channel_length=Stdlib[92],
     close_in=Stdlib[93],
     close_in_noerr=Stdlib[94],
     set_binary_mode_in=Stdlib[95],
     LargeFile=Stdlib[96],
     string_of_format=Stdlib[97],
     symbol$1=Stdlib[98],
     exit=Stdlib[99],
     at_exit=Stdlib[100],
     valid_float_lexem=Stdlib[101],
     unsafe_really_input=Stdlib[102],
     do_at_exit=Stdlib[103],
     Result=[0],
     Ppx_deriving_runtime=
      [0,
       invalid_arg,
       failwith,
       Exit,
       Match_failure,
       Assert_failure,
       Invalid_argument,
       Failure,
       Not_found,
       Out_of_memory,
       Stack_overflow,
       Sys_error,
       End_of_file,
       Division_by_zero,
       Sys_blocked_io,
       Undefined_recursive_module,
       min,
       max,
       abs,
       max_int,
       min_int,
       lnot,
       infinity,
       neg_infinity,
       nan,
       max_float,
       min_float,
       epsilon_float,
       symbol,
       char_of_int,
       string_of_bool,
       bool_of_string_opt,
       bool_of_string,
       string_of_int,
       int_of_string_opt,
       string_of_float,
       float_of_string_opt,
       symbol$0,
       stdin,
       stdout,
       stderr,
       print_char,
       print_string,
       print_bytes,
       print_int,
       print_float,
       print_endline,
       print_newline,
       prerr_char,
       prerr_string,
       prerr_bytes,
       prerr_int,
       prerr_float,
       prerr_endline,
       prerr_newline,
       read_line,
       read_int_opt,
       read_int,
       read_float_opt,
       read_float,
       open_out,
       open_out_bin,
       open_out_gen,
       flush,
       flush_all,
       output_char,
       output_string,
       output_bytes,
       output,
       output_substring,
       output_byte,
       output_binary_int,
       output_value,
       seek_out,
       pos_out,
       out_channel_length,
       close_out,
       close_out_noerr,
       set_binary_mode_out,
       open_in,
       open_in_bin,
       open_in_gen,
       input_char,
       input_line,
       input,
       really_input,
       really_input_string,
       input_byte,
       input_binary_int,
       input_value,
       seek_in,
       pos_in,
       in_channel_length,
       close_in,
       close_in_noerr,
       set_binary_mode_in,
       LargeFile,
       string_of_format,
       symbol$1,
       exit,
       at_exit,
       valid_float_lexem,
       unsafe_really_input,
       do_at_exit,
       Result];
    runtime.caml_register_global
     (1,Ppx_deriving_runtime,"Ppx_deriving_runtime");
    return}
  (function(){return this}()));


//# 1 "../utils/.utils.objs/utils.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_check_bound=runtime.caml_check_bound,
     caml_equal=runtime.caml_equal,
     caml_int_compare=runtime.caml_int_compare,
     caml_js_from_array=runtime.caml_js_from_array,
     caml_jsstring_of_string=runtime.caml_jsstring_of_string,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_compare=runtime.caml_string_compare,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_sys_time=runtime.caml_sys_time,
     caml_update_dummy=runtime.caml_update_dummy;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_List_last=caml_string_of_jsbytes("List.last"),
     cst_rtl=caml_string_of_jsbytes("rtl"),
     cst_unsnoc=caml_string_of_jsbytes("unsnoc"),
     cst_assoc_exn=caml_string_of_jsbytes("assoc_exn"),
     cst_map2=caml_string_of_jsbytes("map2: "),
     cst_split_at=caml_string_of_jsbytes("split_at"),
     cst_Ok=caml_string_of_jsbytes("(Ok "),
     cst=caml_string_of_jsbytes(")"),
     cst_Error=caml_string_of_jsbytes("(Error "),
     cst$0=caml_string_of_jsbytes(")"),
     cst_map2_list_differing_length=
      caml_string_of_jsbytes("map2_list: differing lengths"),
     cst_Some=caml_string_of_jsbytes("(Some "),
     cst$1=caml_string_of_jsbytes(")"),
     cst_None=caml_string_of_jsbytes("None"),
     cst_Option_get=caml_string_of_jsbytes("Option.get"),
     cst_default_exn=caml_string_of_jsbytes("default_exn"),
     cst_of_some=caml_string_of_jsbytes("of_some"),
     cst$2=caml_string_of_jsbytes(""),
     cst_0x=caml_string_of_jsbytes("0x"),
     cst_0=caml_string_of_jsbytes("0"),
     fmt=[0,[4,6,[0,2,2],0,0],caml_string_of_jsbytes("%02x")],
     cst_Cannot_parse=caml_string_of_jsbytes("Cannot parse "),
     cst$3=caml_string_of_jsbytes("="),
     cst_run=caml_string_of_jsbytes("run: "),
     cst_sig$0=caml_string_of_jsbytes("sig"),
     cst_sps=caml_string_of_jsbytes("sps"),
     cst_00$3=caml_string_of_jsbytes("00"),
     cst_01$2=caml_string_of_jsbytes("01"),
     cst_02$1=caml_string_of_jsbytes("02"),
     cst$39=caml_string_of_jsbytes(""),
     cst$40=caml_string_of_jsbytes(""),
     cst$41=caml_string_of_jsbytes(""),
     cst$42=caml_string_of_jsbytes(""),
     cst_00$4=caml_string_of_jsbytes("00"),
     cst_01$3=caml_string_of_jsbytes("01"),
     cst$43=caml_string_of_jsbytes("%"),
     cst$44=caml_string_of_jsbytes(""),
     cst_00$5=caml_string_of_jsbytes("00"),
     cst_01$4=caml_string_of_jsbytes("01"),
     cst_02$2=caml_string_of_jsbytes("02"),
     cst$45=caml_string_of_jsbytes(""),
     cst$46=caml_string_of_jsbytes(""),
     cst$47=caml_string_of_jsbytes(""),
     cst_00$6=caml_string_of_jsbytes("00"),
     cst_01$5=caml_string_of_jsbytes("01"),
     cst_02$3=caml_string_of_jsbytes("02"),
     cst$48=caml_string_of_jsbytes(""),
     cst$49=caml_string_of_jsbytes(""),
     cst$50=caml_string_of_jsbytes(""),
     cst$51=caml_string_of_jsbytes(""),
     cst_tz1=caml_string_of_jsbytes("tz1"),
     cst_tz2=caml_string_of_jsbytes("tz2"),
     cst_tz3=caml_string_of_jsbytes("tz3"),
     cst$8=caml_string_of_jsbytes(""),
     cst_02=caml_string_of_jsbytes("02"),
     cst$9=caml_string_of_jsbytes(""),
     cst_01=caml_string_of_jsbytes("01"),
     cst$10=caml_string_of_jsbytes(""),
     cst_00$1=caml_string_of_jsbytes("00"),
     cst_SG1=caml_string_of_jsbytes("SG1"),
     cst$11=caml_string_of_jsbytes(""),
     cst$12=caml_string_of_jsbytes(""),
     cst_KT1=caml_string_of_jsbytes("KT1"),
     cst_tz1$0=caml_string_of_jsbytes("tz1"),
     cst_tz2$0=caml_string_of_jsbytes("tz2"),
     cst_tz3$0=caml_string_of_jsbytes("tz3"),
     cst$13=caml_string_of_jsbytes(""),
     cst_0002=caml_string_of_jsbytes("0002"),
     cst$14=caml_string_of_jsbytes(""),
     cst_0001=caml_string_of_jsbytes("0001"),
     cst$15=caml_string_of_jsbytes(""),
     cst_0000=caml_string_of_jsbytes("0000"),
     cst_01$0=caml_string_of_jsbytes("01"),
     cst_edpk=caml_string_of_jsbytes("edpk"),
     cst_p2pk=caml_string_of_jsbytes("p2pk"),
     cst_sppk=caml_string_of_jsbytes("sppk"),
     cst$16=caml_string_of_jsbytes(""),
     cst_01$1=caml_string_of_jsbytes("01"),
     cst$17=caml_string_of_jsbytes(""),
     cst_02$0=caml_string_of_jsbytes("02"),
     cst$18=caml_string_of_jsbytes(""),
     cst_00$2=caml_string_of_jsbytes("00"),
     cst_edsig=caml_string_of_jsbytes("edsig"),
     cst_p2sig=caml_string_of_jsbytes("p2sig"),
     cst_sig=caml_string_of_jsbytes("sig"),
     cst_spsig1=caml_string_of_jsbytes("spsig1"),
     cst$19=caml_string_of_jsbytes(""),
     cst$20=caml_string_of_jsbytes(""),
     cst$21=caml_string_of_jsbytes(""),
     cst$22=caml_string_of_jsbytes(""),
     cst$23=caml_string_of_jsbytes(""),
     cst$24=caml_string_of_jsbytes(""),
     cst$25=caml_string_of_jsbytes(""),
     cst$26=caml_string_of_jsbytes(""),
     cst_ede=caml_string_of_jsbytes("ede"),
     cst_eds=caml_string_of_jsbytes("eds"),
     cst_p2e=caml_string_of_jsbytes("p2e"),
     cst_p2s=caml_string_of_jsbytes("p2s"),
     cst_spe=caml_string_of_jsbytes("spe"),
     cst_spsk=caml_string_of_jsbytes("spsk"),
     cst$27=caml_string_of_jsbytes(""),
     cst$28=caml_string_of_jsbytes(""),
     cst$29=caml_string_of_jsbytes(""),
     cst$30=caml_string_of_jsbytes(""),
     cst$31=caml_string_of_jsbytes(""),
     cst$32=caml_string_of_jsbytes(""),
     cst$33=caml_string_of_jsbytes(""),
     cst$34=caml_string_of_jsbytes(""),
     cst$35=caml_string_of_jsbytes(""),
     cst$36=caml_string_of_jsbytes(""),
     cst$37=caml_string_of_jsbytes(""),
     cst$38=caml_string_of_jsbytes(""),
     cst_00=caml_string_of_jsbytes("00"),
     cst_00$0=caml_string_of_jsbytes("00"),
     cst_let_static_addresses=
      caml_string_of_jsbytes("let static_addresses = [|"),
     cst_let_dynamic_addresses=
      caml_string_of_jsbytes("|]\nlet dynamic_addresses = [|"),
     cst$7=caml_string_of_jsbytes("|]"),
     cst$6=caml_string_of_jsbytes(""),
     cst$4=caml_string_of_jsbytes(""),
     cst$5=caml_string_of_jsbytes(""),
     block_hash=caml_string_of_jsbytes("\x014"),
     operation_hash=caml_string_of_jsbytes("\x05t"),
     operation_list_hash=caml_string_of_jsbytes("\x85\xe9"),
     operation_list_list_hash=caml_string_of_jsbytes("\x1d\x9fm"),
     protocol_hash=caml_string_of_jsbytes("\x02\xaa"),
     context_hash=caml_string_of_jsbytes("O\xc7"),
     block_metadata_hash=caml_string_of_jsbytes("\xea\xf9"),
     operation_metadata_hash=caml_string_of_jsbytes("\x05\xb7"),
     operation_metadata_list_hash=caml_string_of_jsbytes("\x86'"),
     operation_metadata_list_list_h=caml_string_of_jsbytes("\x1d\x9f\xb6"),
     ed25519_public_key_hash=caml_string_of_jsbytes("\x06\xa1\x9f"),
     secp256k1_public_key_hash=caml_string_of_jsbytes("\x06\xa1\xa1"),
     p256_public_key_hash=caml_string_of_jsbytes("\x06\xa1\xa4"),
     cryptobox_public_key_hash=caml_string_of_jsbytes("\x99g"),
     ed25519_seed=caml_string_of_jsbytes("\r\x0f:\x07"),
     ed25519_public_key=caml_string_of_jsbytes("\r\x0f%\xd9"),
     secp256k1_secret_key=caml_string_of_jsbytes("\x11\xa2\xe0\xc9"),
     p256_secret_key=caml_string_of_jsbytes("\x10Q\xee\xbd"),
     ed25519_encrypted_seed=caml_string_of_jsbytes("\x07Z<\xb3)"),
     secp256k1_encrypted_secret_key=
      caml_string_of_jsbytes("\t\xed\xf1\xae\x96"),
     p256_encrypted_secret_key=caml_string_of_jsbytes("\t09s\xab"),
     secp256k1_public_key=caml_string_of_jsbytes("\x03\xfe\xe2V"),
     p256_public_key=caml_string_of_jsbytes("\x03\xb2\x8b\x7f"),
     secp256k1_scalar=caml_string_of_jsbytes("&\xf8\x88"),
     secp256k1_element=caml_string_of_jsbytes("\x05\\\0"),
     ed25519_secret_key=caml_string_of_jsbytes("+\xf6N\x07"),
     ed25519_signature=caml_string_of_jsbytes("\t\xf5\xcd\x86\x12"),
     secp256k1_signature=caml_string_of_jsbytes("\rse\x13?"),
     p256_signature=caml_string_of_jsbytes("6\xf0,4"),
     generic_signature=caml_string_of_jsbytes("\x04\x82+"),
     chain_id=caml_string_of_jsbytes("WR\0"),
     script_expr_hash=caml_string_of_jsbytes("\r,@\x1b"),
     contract_hash=caml_string_of_jsbytes("\x02Zy"),
     sapling_spending_key=caml_string_of_jsbytes("\x0b\xed\x14\\"),
     sapling_address=caml_string_of_jsbytes("\x12G(\xdf"),
     baker_hash=caml_string_of_jsbytes("\x038\xe2"),
     cst_of_right_comb_empty_list=
      caml_string_of_jsbytes("of_right_comb: empty list"),
     cst_Binary_tree_map2_differing=
      caml_string_of_jsbytes("Binary_tree.map2: differing shapes"),
     cst_Hole=caml_string_of_jsbytes("Hole"),
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib=global_data.Stdlib,
     Unix=global_data.Unix,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_option=global_data.Stdlib__option,
     Stdlib_map=global_data.Stdlib__map,
     Stdlib_set=global_data.Stdlib__set,
     Stdlib_seq=global_data.Stdlib__seq,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_string=global_data.Stdlib__string,
     Big_int=global_data.Big_int,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Yojson=global_data.Yojson,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Base_Option=global_data.Base__Option,
     Stdlib_char=global_data.Stdlib__char,
     Base_String=global_data.Base__String,
     Stdlib_scanf=global_data.Stdlib__scanf,
     Assert_failure=global_data.Assert_failure,
     Js_of_ocaml_Js=global_data.Js_of_ocaml__Js,
     Base58=global_data.Base58,
     Hex$0=global_data.Hex,
     Fmt=global_data.Fmt,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Digestif=global_data.Digestif,
     Utils=[0];
    caml_register_global(276,Utils,"Utils");
    var
     _b_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _a_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _c_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _d_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _e_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _k_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _l_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _m_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _n_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _o_=
      [0,
       [8,
        [0,0,0],
        [0,1,60],
        [0,1],
        [11,caml_string_of_jsbytes("ms\n"),[2,0,[12,10,0]]]],
       caml_string_of_jsbytes("%60.1fms\n%s\n")],
     _p_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
     _j_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _i_=[0,[11,caml_string_of_jsbytes("; "),0],caml_string_of_jsbytes("; ")],
     _h_=[0,[16,0],caml_string_of_jsbytes("%t")],
     _f_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _g_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _r_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _s_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _t_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _am_=
      [0,
       [8,
        [0,2,0],
        [0,1,6],
        [0,3],
        [11,caml_string_of_jsbytes("ms "),[2,0,[12,10,0]]]],
       caml_string_of_jsbytes("% 6.3fms %s\n")],
     _al_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ab_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _ac_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ad_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aa_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _$_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _ae_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _X_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _W_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _Y_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _V_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("List"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>List@ ")],
     _Z_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     ___=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Map"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Map@ ")],
     _af_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ag_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Other"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Other@ ")],
     _ah_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ai_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Offchain_view"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Offchain_view@ ")],
     _aj_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ak_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _U_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _O_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _P_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _Q_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _R_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _N_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _M_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _S_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _I_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _H_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _J_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _y_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("J_int"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>J_int@ ")],
     _z_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _A_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("J_bool"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>J_bool@ ")],
     _B_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _C_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _D_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("J_string"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>J_string@ ")],
     _E_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _F_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _G_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("J_list"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>J_list@ ")],
     _K_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _L_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("J_record"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>J_record@ ")],
     _T_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _x_=[0,[4,6,[0,2,2],0,0],caml_string_of_jsbytes("%02x")],
     _w_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _u_=[0,[17,0,[12,10,[10,0]]],caml_string_of_jsbytes("@]\n%!")],
     _v_=
      [0,
       [12,
        10,
        [18,
         [1,[0,0,caml_string_of_jsbytes("")]],
         [11,
          caml_string_of_jsbytes("|DBG-lib:"),
          [8,[0,0,0],0,0,[11,caml_string_of_jsbytes("> "),0]]]]],
       caml_string_of_jsbytes("\n@[|DBG-lib:%f> ")],
     _ar_=[0,caml_string_of_jsbytes("smartML/utils/cmd_unix.ml"),21,2],
     _aq_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" exited abnormally: "),[2,0,0]]],
       caml_string_of_jsbytes("%s exited abnormally: %s")],
     _an_=
      [0,
       [11,caml_string_of_jsbytes("WEXITED "),[4,0,0,0,0]],
       caml_string_of_jsbytes("WEXITED %d")],
     _ao_=
      [0,
       [11,caml_string_of_jsbytes("WSIGNALED "),[4,0,0,0,0]],
       caml_string_of_jsbytes("WSIGNALED %d")],
     _ap_=
      [0,
       [11,caml_string_of_jsbytes("WSTOPPED "),[4,0,0,0,0]],
       caml_string_of_jsbytes("WSTOPPED %d")],
     _aB_=
      [0,
       [11,caml_string_of_jsbytes("Could not decode data: "),[2,0,0]],
       caml_string_of_jsbytes("Could not decode data: %s")],
     _aA_=
      [0,
       [11,caml_string_of_jsbytes("Unknown address: "),[2,0,0]],
       caml_string_of_jsbytes("Unknown address: %s")],
     _az_=
      [0,
       [11,
        caml_string_of_jsbytes("[Encoding] Unknown prefix for data : "),
        [2,0,0]],
       caml_string_of_jsbytes("[Encoding] Unknown prefix for data : %s")],
     _ay_=
      [0,
       [11,
        caml_string_of_jsbytes("[Decoding] Unknown prefix for data: "),
        [2,0,0]],
       caml_string_of_jsbytes("[Decoding] Unknown prefix for data: %s")],
     _ax_=[0,[3,0,[12,59,0]],caml_string_of_jsbytes("%S;")],
     _aw_=[0,[12,37,[2,0,0]],caml_string_of_jsbytes("%%%s")],
     _au_=
      [0,
       [11,
        caml_string_of_jsbytes("KT1Tez"),
        [4,
         3,
         [0,2,4],
         0,
         [11,caml_string_of_jsbytes("zzSmartPyzzSTATiCzzzzzzzzzzzz"),0]]],
       caml_string_of_jsbytes("KT1Tez%04izzSmartPyzzSTATiCzzzzzzzzzzzz")],
     _av_=
      [0,
       [11,
        caml_string_of_jsbytes("KT1Tez"),
        [4,
         3,
         [0,2,4],
         0,
         [11,caml_string_of_jsbytes("zzSmartPyzzDYNAMiCzzzzzzzzzzz"),0]]],
       caml_string_of_jsbytes("KT1Tez%04izzSmartPyzzDYNAMiCzzzzzzzzzzz")],
     _as_=
      [0,
       caml_string_of_jsbytes("KT1TezoooozzSmartPyzzSTATiCzzzwwBFA1"),
       caml_string_of_jsbytes("KT1Tezooo1zzSmartPyzzSTATiCzzzyfC8eF"),
       caml_string_of_jsbytes("KT1Tezooo2zzSmartPyzzSTATiCzzzwqqQ4H"),
       caml_string_of_jsbytes("KT1Tezooo3zzSmartPyzzSTATiCzzzseJjWC"),
       caml_string_of_jsbytes("KT1Tezooo4zzSmartPyzzSTATiCzzzyPVdv3"),
       caml_string_of_jsbytes("KT1Tezooo5zzSmartPyzzSTATiCzzzz48Z4p"),
       caml_string_of_jsbytes("KT1Tezooo6zzSmartPyzzSTATiCzzztY1196"),
       caml_string_of_jsbytes("KT1Tezooo7zzSmartPyzzSTATiCzzzvTbG1z"),
       caml_string_of_jsbytes("KT1Tezooo8zzSmartPyzzSTATiCzzzzp29d1"),
       caml_string_of_jsbytes("KT1Tezooo9zzSmartPyzzSTATiCzzztdBMLX"),
       caml_string_of_jsbytes("KT1Tezoo1ozzSmartPyzzSTATiCzzzw8CmuY"),
       caml_string_of_jsbytes("KT1Tezoo11zzSmartPyzzSTATiCzzzzYMWmQ"),
       caml_string_of_jsbytes("KT1Tezoo12zzSmartPyzzSTATiCzzzw2ZWPM"),
       caml_string_of_jsbytes("KT1Tezoo13zzSmartPyzzSTATiCzzzyrBos2"),
       caml_string_of_jsbytes("KT1Tezoo14zzSmartPyzzSTATiCzzzrnXGeA"),
       caml_string_of_jsbytes("KT1Tezoo15zzSmartPyzzSTATiCzzzzjjBRr"),
       caml_string_of_jsbytes("KT1Tezoo16zzSmartPyzzSTATiCzzzyHEQ7h"),
       caml_string_of_jsbytes("KT1Tezoo17zzSmartPyzzSTATiCzzzrQkWKN"),
       caml_string_of_jsbytes("KT1Tezoo18zzSmartPyzzSTATiCzzzt4Mx4x"),
       caml_string_of_jsbytes("KT1Tezoo19zzSmartPyzzSTATiCzzzzvx27N"),
       caml_string_of_jsbytes("KT1Tezoo2ozzSmartPyzzSTATiCzzzt3UDWP"),
       caml_string_of_jsbytes("KT1Tezoo21zzSmartPyzzSTATiCzzzzPeb4T"),
       caml_string_of_jsbytes("KT1Tezoo22zzSmartPyzzSTATiCzzzzKyojP"),
       caml_string_of_jsbytes("KT1Tezoo23zzSmartPyzzSTATiCzzzzLNLUR"),
       caml_string_of_jsbytes("KT1Tezoo24zzSmartPyzzSTATiCzzzuimc59"),
       caml_string_of_jsbytes("KT1Tezoo25zzSmartPyzzSTATiCzzzrmbVsM"),
       caml_string_of_jsbytes("KT1Tezoo26zzSmartPyzzSTATiCzzzwDQDCm"),
       caml_string_of_jsbytes("KT1Tezoo27zzSmartPyzzSTATiCzzztVDNZ1"),
       caml_string_of_jsbytes("KT1Tezoo28zzSmartPyzzSTATiCzzzurgreu"),
       caml_string_of_jsbytes("KT1Tezoo29zzSmartPyzzSTATiCzzzoiUVra"),
       caml_string_of_jsbytes("KT1Tezoo3ozzSmartPyzzSTATiCzzzzpy1LW"),
       caml_string_of_jsbytes("KT1Tezoo31zzSmartPyzzSTATiCzzzxZF7L4"),
       caml_string_of_jsbytes("KT1Tezoo32zzSmartPyzzSTATiCzzzzJfoLr"),
       caml_string_of_jsbytes("KT1Tezoo33zzSmartPyzzSTATiCzzzt9n3Ca"),
       caml_string_of_jsbytes("KT1Tezoo34zzSmartPyzzSTATiCzzzxZRxk5"),
       caml_string_of_jsbytes("KT1Tezoo35zzSmartPyzzSTATiCzzzxEBbbo"),
       caml_string_of_jsbytes("KT1Tezoo36zzSmartPyzzSTATiCzzzzHx9Mg"),
       caml_string_of_jsbytes("KT1Tezoo37zzSmartPyzzSTATiCzzzyWyuj1"),
       caml_string_of_jsbytes("KT1Tezoo38zzSmartPyzzSTATiCzzzwrpEt4"),
       caml_string_of_jsbytes("KT1Tezoo39zzSmartPyzzSTATiCzzzsxXjKw"),
       caml_string_of_jsbytes("KT1Tezoo4ozzSmartPyzzSTATiCzzzwJqoPS"),
       caml_string_of_jsbytes("KT1Tezoo41zzSmartPyzzSTATiCzzzsmVb4M"),
       caml_string_of_jsbytes("KT1Tezoo42zzSmartPyzzSTATiCzzzwtnVrK"),
       caml_string_of_jsbytes("KT1Tezoo43zzSmartPyzzSTATiCzzzqz2ouC"),
       caml_string_of_jsbytes("KT1Tezoo44zzSmartPyzzSTATiCzzztSh3PS"),
       caml_string_of_jsbytes("KT1Tezoo45zzSmartPyzzSTATiCzzzzteuw9"),
       caml_string_of_jsbytes("KT1Tezoo46zzSmartPyzzSTATiCzzzyu6S2X"),
       caml_string_of_jsbytes("KT1Tezoo47zzSmartPyzzSTATiCzzzxjfKR8"),
       caml_string_of_jsbytes("KT1Tezoo48zzSmartPyzzSTATiCzzzxeybmd"),
       caml_string_of_jsbytes("KT1Tezoo49zzSmartPyzzSTATiCzzzsYs8mm"),
       caml_string_of_jsbytes("KT1Tezoo5ozzSmartPyzzSTATiCzzzwq7cM4"),
       caml_string_of_jsbytes("KT1Tezoo51zzSmartPyzzSTATiCzzzsie8hD"),
       caml_string_of_jsbytes("KT1Tezoo52zzSmartPyzzSTATiCzzzy6jfJn"),
       caml_string_of_jsbytes("KT1Tezoo53zzSmartPyzzSTATiCzzzpzJxjJ"),
       caml_string_of_jsbytes("KT1Tezoo54zzSmartPyzzSTATiCzzzsC58yB"),
       caml_string_of_jsbytes("KT1Tezoo55zzSmartPyzzSTATiCzzzzB9g1d"),
       caml_string_of_jsbytes("KT1Tezoo56zzSmartPyzzSTATiCzzzvJRMF4"),
       caml_string_of_jsbytes("KT1Tezoo57zzSmartPyzzSTATiCzzzyRNXjo"),
       caml_string_of_jsbytes("KT1Tezoo58zzSmartPyzzSTATiCzzzuoQJPC"),
       caml_string_of_jsbytes("KT1Tezoo59zzSmartPyzzSTATiCzzzxrzq7o"),
       caml_string_of_jsbytes("KT1Tezoo6ozzSmartPyzzSTATiCzzzxn4BAQ"),
       caml_string_of_jsbytes("KT1Tezoo61zzSmartPyzzSTATiCzzzsCVUrJ"),
       caml_string_of_jsbytes("KT1Tezoo62zzSmartPyzzSTATiCzzzzNq6gW"),
       caml_string_of_jsbytes("KT1Tezoo63zzSmartPyzzSTATiCzzzvo99GZ"),
       caml_string_of_jsbytes("KT1Tezoo64zzSmartPyzzSTATiCzzzxyJU8a"),
       caml_string_of_jsbytes("KT1Tezoo65zzSmartPyzzSTATiCzzzzadcFa"),
       caml_string_of_jsbytes("KT1Tezoo66zzSmartPyzzSTATiCzzzxPC5nQ"),
       caml_string_of_jsbytes("KT1Tezoo67zzSmartPyzzSTATiCzzzzyq8B1"),
       caml_string_of_jsbytes("KT1Tezoo68zzSmartPyzzSTATiCzzzxpBPfQ"),
       caml_string_of_jsbytes("KT1Tezoo69zzSmartPyzzSTATiCzzzsPcuJf"),
       caml_string_of_jsbytes("KT1Tezoo7ozzSmartPyzzSTATiCzzzxgiesf"),
       caml_string_of_jsbytes("KT1Tezoo71zzSmartPyzzSTATiCzzzyGZS4Q"),
       caml_string_of_jsbytes("KT1Tezoo72zzSmartPyzzSTATiCzzzzc5bP5"),
       caml_string_of_jsbytes("KT1Tezoo73zzSmartPyzzSTATiCzzzzjqD8v"),
       caml_string_of_jsbytes("KT1Tezoo74zzSmartPyzzSTATiCzzzqjbsH6"),
       caml_string_of_jsbytes("KT1Tezoo75zzSmartPyzzSTATiCzzzweg7Kr"),
       caml_string_of_jsbytes("KT1Tezoo76zzSmartPyzzSTATiCzzzzJQexk"),
       caml_string_of_jsbytes("KT1Tezoo77zzSmartPyzzSTATiCzzzxzCsXF"),
       caml_string_of_jsbytes("KT1Tezoo78zzSmartPyzzSTATiCzzzx3Yt9E"),
       caml_string_of_jsbytes("KT1Tezoo79zzSmartPyzzSTATiCzzzy1eJ9s"),
       caml_string_of_jsbytes("KT1Tezoo8ozzSmartPyzzSTATiCzzzuGszvB"),
       caml_string_of_jsbytes("KT1Tezoo81zzSmartPyzzSTATiCzzzyn1ZHZ"),
       caml_string_of_jsbytes("KT1Tezoo82zzSmartPyzzSTATiCzzzyr5ES9"),
       caml_string_of_jsbytes("KT1Tezoo83zzSmartPyzzSTATiCzzzxUVHDg"),
       caml_string_of_jsbytes("KT1Tezoo84zzSmartPyzzSTATiCzzzw2LQfK"),
       caml_string_of_jsbytes("KT1Tezoo85zzSmartPyzzSTATiCzzzrZRBHF"),
       caml_string_of_jsbytes("KT1Tezoo86zzSmartPyzzSTATiCzzzwwr66A"),
       caml_string_of_jsbytes("KT1Tezoo87zzSmartPyzzSTATiCzzzx2asuv"),
       caml_string_of_jsbytes("KT1Tezoo88zzSmartPyzzSTATiCzzzvVdzo9"),
       caml_string_of_jsbytes("KT1Tezoo89zzSmartPyzzSTATiCzzzxMckJy"),
       caml_string_of_jsbytes("KT1Tezoo9ozzSmartPyzzSTATiCzzzxX37Py"),
       caml_string_of_jsbytes("KT1Tezoo91zzSmartPyzzSTATiCzzzyegtLQ"),
       caml_string_of_jsbytes("KT1Tezoo92zzSmartPyzzSTATiCzzzvtdVek"),
       caml_string_of_jsbytes("KT1Tezoo93zzSmartPyzzSTATiCzzzznaYBh"),
       caml_string_of_jsbytes("KT1Tezoo94zzSmartPyzzSTATiCzzzwqPLoM"),
       caml_string_of_jsbytes("KT1Tezoo95zzSmartPyzzSTATiCzzzrn7SPm"),
       caml_string_of_jsbytes("KT1Tezoo96zzSmartPyzzSTATiCzzzw2aWmL"),
       caml_string_of_jsbytes("KT1Tezoo97zzSmartPyzzSTATiCzzzyYc6Fd"),
       caml_string_of_jsbytes("KT1Tezoo98zzSmartPyzzSTATiCzzzvpPECg"),
       caml_string_of_jsbytes("KT1Tezoo99zzSmartPyzzSTATiCzzzzYoJJi"),
       caml_string_of_jsbytes("KT1Tezo1oozzSmartPyzzSTATiCzzzw6i9jd")],
     _at_=
      [0,
       caml_string_of_jsbytes("KT1TezoooozzSmartPyzzDYNAMiCzzpLu4LU"),
       caml_string_of_jsbytes("KT1Tezooo1zzSmartPyzzDYNAMiCzztcr8AZ"),
       caml_string_of_jsbytes("KT1Tezooo2zzSmartPyzzDYNAMiCzzxyHfG9"),
       caml_string_of_jsbytes("KT1Tezooo3zzSmartPyzzDYNAMiCzzvqsJQk"),
       caml_string_of_jsbytes("KT1Tezooo4zzSmartPyzzDYNAMiCzzywTMhC"),
       caml_string_of_jsbytes("KT1Tezooo5zzSmartPyzzDYNAMiCzzvwBH3X"),
       caml_string_of_jsbytes("KT1Tezooo6zzSmartPyzzDYNAMiCzzvyu5w3"),
       caml_string_of_jsbytes("KT1Tezooo7zzSmartPyzzDYNAMiCzztDqbVQ"),
       caml_string_of_jsbytes("KT1Tezooo8zzSmartPyzzDYNAMiCzzq2URWu"),
       caml_string_of_jsbytes("KT1Tezooo9zzSmartPyzzDYNAMiCzzwMosaF"),
       caml_string_of_jsbytes("KT1Tezoo1ozzSmartPyzzDYNAMiCzzzknqsi"),
       caml_string_of_jsbytes("KT1Tezoo11zzSmartPyzzDYNAMiCzzufK1yA"),
       caml_string_of_jsbytes("KT1Tezoo12zzSmartPyzzDYNAMiCzzp8MwtN"),
       caml_string_of_jsbytes("KT1Tezoo13zzSmartPyzzDYNAMiCzzuFSRii"),
       caml_string_of_jsbytes("KT1Tezoo14zzSmartPyzzDYNAMiCzzz7RGrK"),
       caml_string_of_jsbytes("KT1Tezoo15zzSmartPyzzDYNAMiCzzvGSR2o"),
       caml_string_of_jsbytes("KT1Tezoo16zzSmartPyzzDYNAMiCzzwFpt7J"),
       caml_string_of_jsbytes("KT1Tezoo17zzSmartPyzzDYNAMiCzzykrvy7"),
       caml_string_of_jsbytes("KT1Tezoo18zzSmartPyzzDYNAMiCzztCAt8v"),
       caml_string_of_jsbytes("KT1Tezoo19zzSmartPyzzDYNAMiCzzs7uP4i"),
       caml_string_of_jsbytes("KT1Tezoo2ozzSmartPyzzDYNAMiCzzwSnrN6"),
       caml_string_of_jsbytes("KT1Tezoo21zzSmartPyzzDYNAMiCzzs5DfTE"),
       caml_string_of_jsbytes("KT1Tezoo22zzSmartPyzzDYNAMiCzzrduLfP"),
       caml_string_of_jsbytes("KT1Tezoo23zzSmartPyzzDYNAMiCzzwZfMMD"),
       caml_string_of_jsbytes("KT1Tezoo24zzSmartPyzzDYNAMiCzzwjiGTo"),
       caml_string_of_jsbytes("KT1Tezoo25zzSmartPyzzDYNAMiCzzyT75uA"),
       caml_string_of_jsbytes("KT1Tezoo26zzSmartPyzzDYNAMiCzzwgevwP"),
       caml_string_of_jsbytes("KT1Tezoo27zzSmartPyzzDYNAMiCzzuNESHj"),
       caml_string_of_jsbytes("KT1Tezoo28zzSmartPyzzDYNAMiCzzstgZLG"),
       caml_string_of_jsbytes("KT1Tezoo29zzSmartPyzzDYNAMiCzzua3qt8"),
       caml_string_of_jsbytes("KT1Tezoo3ozzSmartPyzzDYNAMiCzzzydbTn"),
       caml_string_of_jsbytes("KT1Tezoo31zzSmartPyzzDYNAMiCzzzV6Fv1"),
       caml_string_of_jsbytes("KT1Tezoo32zzSmartPyzzDYNAMiCzztwKPMA"),
       caml_string_of_jsbytes("KT1Tezoo33zzSmartPyzzDYNAMiCzztAevd2"),
       caml_string_of_jsbytes("KT1Tezoo34zzSmartPyzzDYNAMiCzzyHyztq"),
       caml_string_of_jsbytes("KT1Tezoo35zzSmartPyzzDYNAMiCzzzseQRS"),
       caml_string_of_jsbytes("KT1Tezoo36zzSmartPyzzDYNAMiCzzxG7VFz"),
       caml_string_of_jsbytes("KT1Tezoo37zzSmartPyzzDYNAMiCzzvanMaF"),
       caml_string_of_jsbytes("KT1Tezoo38zzSmartPyzzDYNAMiCzzxow7N5"),
       caml_string_of_jsbytes("KT1Tezoo39zzSmartPyzzDYNAMiCzzseasUf"),
       caml_string_of_jsbytes("KT1Tezoo4ozzSmartPyzzDYNAMiCzzwCUzLT"),
       caml_string_of_jsbytes("KT1Tezoo41zzSmartPyzzDYNAMiCzzuKdM6z"),
       caml_string_of_jsbytes("KT1Tezoo42zzSmartPyzzDYNAMiCzzvoxbXQ"),
       caml_string_of_jsbytes("KT1Tezoo43zzSmartPyzzDYNAMiCzzxHNrWB"),
       caml_string_of_jsbytes("KT1Tezoo44zzSmartPyzzDYNAMiCzzqzWSLJ"),
       caml_string_of_jsbytes("KT1Tezoo45zzSmartPyzzDYNAMiCzzwoma3L"),
       caml_string_of_jsbytes("KT1Tezoo46zzSmartPyzzDYNAMiCzzwagsDr"),
       caml_string_of_jsbytes("KT1Tezoo47zzSmartPyzzDYNAMiCzzx9gczA"),
       caml_string_of_jsbytes("KT1Tezoo48zzSmartPyzzDYNAMiCzzujzDEL"),
       caml_string_of_jsbytes("KT1Tezoo49zzSmartPyzzDYNAMiCzzyzNqLS"),
       caml_string_of_jsbytes("KT1Tezoo5ozzSmartPyzzDYNAMiCzzyhNzVP"),
       caml_string_of_jsbytes("KT1Tezoo51zzSmartPyzzDYNAMiCzztanVCy"),
       caml_string_of_jsbytes("KT1Tezoo52zzSmartPyzzDYNAMiCzzukPXQf"),
       caml_string_of_jsbytes("KT1Tezoo53zzSmartPyzzDYNAMiCzzwertzS"),
       caml_string_of_jsbytes("KT1Tezoo54zzSmartPyzzDYNAMiCzzxrXndJ"),
       caml_string_of_jsbytes("KT1Tezoo55zzSmartPyzzDYNAMiCzzwZDrJ6"),
       caml_string_of_jsbytes("KT1Tezoo56zzSmartPyzzDYNAMiCzzz7MLT7"),
       caml_string_of_jsbytes("KT1Tezoo57zzSmartPyzzDYNAMiCzzx1SNRa"),
       caml_string_of_jsbytes("KT1Tezoo58zzSmartPyzzDYNAMiCzzspyLrZ"),
       caml_string_of_jsbytes("KT1Tezoo59zzSmartPyzzDYNAMiCzzpFMM5S"),
       caml_string_of_jsbytes("KT1Tezoo6ozzSmartPyzzDYNAMiCzzzc7Vf5"),
       caml_string_of_jsbytes("KT1Tezoo61zzSmartPyzzDYNAMiCzzxQGTz1"),
       caml_string_of_jsbytes("KT1Tezoo62zzSmartPyzzDYNAMiCzzzCFRxE"),
       caml_string_of_jsbytes("KT1Tezoo63zzSmartPyzzDYNAMiCzzxSbaFw"),
       caml_string_of_jsbytes("KT1Tezoo64zzSmartPyzzDYNAMiCzzrZxQjf"),
       caml_string_of_jsbytes("KT1Tezoo65zzSmartPyzzDYNAMiCzzuE8zrh"),
       caml_string_of_jsbytes("KT1Tezoo66zzSmartPyzzDYNAMiCzzxL3RNg"),
       caml_string_of_jsbytes("KT1Tezoo67zzSmartPyzzDYNAMiCzzxDHbQ2"),
       caml_string_of_jsbytes("KT1Tezoo68zzSmartPyzzDYNAMiCzzv9uuPs"),
       caml_string_of_jsbytes("KT1Tezoo69zzSmartPyzzDYNAMiCzzziAEo3"),
       caml_string_of_jsbytes("KT1Tezoo7ozzSmartPyzzDYNAMiCzzssee8N"),
       caml_string_of_jsbytes("KT1Tezoo71zzSmartPyzzDYNAMiCzzy8o38T"),
       caml_string_of_jsbytes("KT1Tezoo72zzSmartPyzzDYNAMiCzzvJQgMd"),
       caml_string_of_jsbytes("KT1Tezoo73zzSmartPyzzDYNAMiCzzzQKejF"),
       caml_string_of_jsbytes("KT1Tezoo74zzSmartPyzzDYNAMiCzzxGc1Le"),
       caml_string_of_jsbytes("KT1Tezoo75zzSmartPyzzDYNAMiCzzwS4VD5"),
       caml_string_of_jsbytes("KT1Tezoo76zzSmartPyzzDYNAMiCzzsu5trk"),
       caml_string_of_jsbytes("KT1Tezoo77zzSmartPyzzDYNAMiCzzx7fRph"),
       caml_string_of_jsbytes("KT1Tezoo78zzSmartPyzzDYNAMiCzzubSbwk"),
       caml_string_of_jsbytes("KT1Tezoo79zzSmartPyzzDYNAMiCzzwzStmF"),
       caml_string_of_jsbytes("KT1Tezoo8ozzSmartPyzzDYNAMiCzzq35Rq4"),
       caml_string_of_jsbytes("KT1Tezoo81zzSmartPyzzDYNAMiCzzzQyrWb"),
       caml_string_of_jsbytes("KT1Tezoo82zzSmartPyzzDYNAMiCzzuk3Zgh"),
       caml_string_of_jsbytes("KT1Tezoo83zzSmartPyzzDYNAMiCzzzamuiH"),
       caml_string_of_jsbytes("KT1Tezoo84zzSmartPyzzDYNAMiCzztuhJts"),
       caml_string_of_jsbytes("KT1Tezoo85zzSmartPyzzDYNAMiCzzsEUusH"),
       caml_string_of_jsbytes("KT1Tezoo86zzSmartPyzzDYNAMiCzzywXBn3"),
       caml_string_of_jsbytes("KT1Tezoo87zzSmartPyzzDYNAMiCzzto1Zr6"),
       caml_string_of_jsbytes("KT1Tezoo88zzSmartPyzzDYNAMiCzzzYK2k5"),
       caml_string_of_jsbytes("KT1Tezoo89zzSmartPyzzDYNAMiCzzvEXcr3"),
       caml_string_of_jsbytes("KT1Tezoo9ozzSmartPyzzDYNAMiCzzzhhryG"),
       caml_string_of_jsbytes("KT1Tezoo91zzSmartPyzzDYNAMiCzzzsUuqY"),
       caml_string_of_jsbytes("KT1Tezoo92zzSmartPyzzDYNAMiCzzvE65Pi"),
       caml_string_of_jsbytes("KT1Tezoo93zzSmartPyzzDYNAMiCzzyo94pw"),
       caml_string_of_jsbytes("KT1Tezoo94zzSmartPyzzDYNAMiCzzz3TFhN"),
       caml_string_of_jsbytes("KT1Tezoo95zzSmartPyzzDYNAMiCzzuzjFR1"),
       caml_string_of_jsbytes("KT1Tezoo96zzSmartPyzzDYNAMiCzzsS2Wj8"),
       caml_string_of_jsbytes("KT1Tezoo97zzSmartPyzzDYNAMiCzzywXC4c"),
       caml_string_of_jsbytes("KT1Tezoo98zzSmartPyzzDYNAMiCzzuttMz3"),
       caml_string_of_jsbytes("KT1Tezoo99zzSmartPyzzDYNAMiCzzr8xqaW"),
       caml_string_of_jsbytes("KT1Tezo1oozzSmartPyzzDYNAMiCzzxmuJG3")],
     _aT_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aS_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aM_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Node_left ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Node_left (@,")],
     _aN_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _aO_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _aP_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Node_right ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Node_right (@,")],
     _aQ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _aR_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _aJ_=
      [0,
       [15,[17,[0,caml_string_of_jsbytes("@,"),0,0],[16,[15,0]]]],
       caml_string_of_jsbytes("%a@,%t%a")],
     _aI_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aK_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [11,
         caml_string_of_jsbytes("( "),
         [16,[17,[0,caml_string_of_jsbytes("@ "),1,0],[12,41,[17,0,0]]]]]],
       caml_string_of_jsbytes("@[<hv>( %t@ )@]")],
     _aL_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [16,[17,0,0]]],
       caml_string_of_jsbytes("@[<hv>%t@]")],
     _aH_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aC_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Leaf"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Leaf@ ")],
     _aD_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aE_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Node ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Node (@,")],
     _aF_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _aG_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")];
    function and(x,y)
     {var switch$0=0;
      switch(x)
       {case 0:
         switch(y){case 0:return 0;case 1:break;default:switch$0 = 1}break;
        case 2:break;
        default:switch$0 = 2}
      var switch$1=0;
      switch(switch$0)
       {case 0:if(1 === y)switch$1 = 1;break;
        case 1:break;
        default:switch$1 = 1}
      return switch$1?1:2}
    function or(x,y)
     {var switch$0=0;
      switch(x)
       {case 1:if(1 === y)return 1;break;case 2:break;default:switch$0 = 1}
      if(! switch$0 && 0 !== y)return 2;
      return 0}
    var Utils_Ternary=[0,and,or];
    caml_register_global(277,Utils_Ternary,"Utils__Ternary");
    var
     length=Stdlib_list[1],
     compare_lengths=Stdlib_list[2],
     compare_length_with=Stdlib_list[3],
     cons=Stdlib_list[4],
     hd=Stdlib_list[5],
     tl=Stdlib_list[6],
     nth=Stdlib_list[7],
     nth_opt=Stdlib_list[8],
     rev=Stdlib_list[9],
     init=Stdlib_list[10],
     append=Stdlib_list[11],
     rev_append=Stdlib_list[12],
     concat=Stdlib_list[13],
     flatten=Stdlib_list[14],
     iter=Stdlib_list[15],
     iteri=Stdlib_list[16],
     rev_map=Stdlib_list[19],
     filter_map=Stdlib_list[20],
     concat_map=Stdlib_list[21],
     fold_left=Stdlib_list[22],
     fold_right=Stdlib_list[23],
     iter2=Stdlib_list[24],
     map2=Stdlib_list[25],
     rev_map2=Stdlib_list[26],
     fold_left2=Stdlib_list[27],
     fold_right2=Stdlib_list[28],
     for_all=Stdlib_list[29],
     exists=Stdlib_list[30],
     for_all2=Stdlib_list[31],
     exists2=Stdlib_list[32],
     mem=Stdlib_list[33],
     memq=Stdlib_list[34],
     find=Stdlib_list[35],
     find_opt=Stdlib_list[36],
     find_map=Stdlib_list[37],
     filter=Stdlib_list[38],
     find_all=Stdlib_list[39],
     partition=Stdlib_list[40],
     assoc=Stdlib_list[41],
     assq=Stdlib_list[43],
     assq_opt=Stdlib_list[44],
     mem_assoc=Stdlib_list[45],
     mem_assq=Stdlib_list[46],
     remove_assoc=Stdlib_list[47],
     remove_assq=Stdlib_list[48],
     split=Stdlib_list[49],
     combine=Stdlib_list[50],
     sort=Stdlib_list[51],
     stable_sort=Stdlib_list[52],
     fast_sort=Stdlib_list[53],
     sort_uniq=Stdlib_list[54],
     merge=Stdlib_list[55],
     to_seq=Stdlib_list[56],
     of_seq=Stdlib_list[57];
    function equal(poly_a)
     {return function(x$1,y$1)
       {var x=x$1,y=y$1;
        for(;;)
         {if(x)
           {if(y)
             {var y$0=y[2],b=y[1],x$0=x[2],a=x[1],_fC_=caml_call2(poly_a,a,b);
              if(_fC_){var x=x$0,y=y$0;continue}
              return _fC_}}
          else
           if(! y)return 1;
          return 0}}}
    function pp(poly_a,fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_a_);
      var _fA_=0;
      function _fB_(sep,x)
       {if(sep)caml_call2(Stdlib_format[123],fmt,_b_);
        caml_call1(caml_call1(poly_a,fmt),x);
        return 1}
      caml_call3(Stdlib_list[22],_fB_,_fA_,x);
      return caml_call2(Stdlib_format[123],fmt,_c_)}
    function show(poly_a,x)
     {function _fx_(_fy_,_fz_){return pp(poly_a,_fy_,_fz_)}
      return caml_call3(Stdlib_format[127],_d_,_fx_,x)}
    function rnth(xs){return caml_call1(nth,caml_call1(rev,xs))}
    function rnth_opt(xs){return caml_call1(nth_opt,caml_call1(rev,xs))}
    function nth_rem(n$1,xs$0)
     {var n=n$1,r=0,param=xs$0;
      for(;;)
       {if(param)
         {var x=param[1],xs=param[2];
          if(0 === n)return [0,[0,x,caml_call2(rev_append,r,xs)]];
          var
           param$0=param[2],
           r$0=[0,x,r],
           n$0=n - 1 | 0,
           n=n$0,
           r=r$0,
           param=param$0;
          continue}
        return 0}}
    function last(param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var _fw_=param$0[1];
          if(param$0[2]){var param$1=param$0[2],param$0=param$1;continue}
          return _fw_}
        return caml_call1(Stdlib[2],cst_List_last)}}
    function last_opt(xs)
     {var r=0,param=xs;
      for(;;)
       {if(param)
         {var param$0=param[2],x=param[1],r$0=[0,x],r=r$0,param=param$0;
          continue}
        return r}}
    function split_at_opt(i$1,l)
     {var acc=0,i=i$1,xs=l;
      for(;;)
       {if(0 === i)return [0,[0,caml_call1(rev,acc),xs]];
        if(xs)
         {var xs$0=xs[2],x=xs[1];
          if(0 < i)
           {var i$0=i - 1 | 0,acc$0=[0,x,acc],acc=acc$0,i=i$0,xs=xs$0;
            continue}}
        return 0}}
    function split_at(opt,i,l)
     {if(opt)var sth=opt[1],err=sth;else var err=cst_split_at;
      var match=split_at_opt(i,l);
      if(match){var l$0=match[1];return l$0}
      return caml_call1(Stdlib[2],err)}
    function take(i,param)
     {if(param)
       {var xs=param[2],x=param[1];if(0 < i)return [0,x,take(i - 1 | 0,xs)]}
      return 0}
    function drop(i,xs)
     {var i$0=i,xs$0=xs;
      for(;;)
       {if(xs$0)
         {var xs$1=xs$0[2];
          if(0 < i$0){var i$1=i$0 - 1 | 0,i$0=i$1,xs$0=xs$1;continue}}
        return xs$0}}
    function rdrop(i,xs){return take(caml_call1(length,xs) - i | 0,xs)}
    function rtl(xs)
     {var r=0,param=xs;
      for(;;)
       {if(param)
         {var _fv_=param[1];
          if(param[2])
           {var param$0=param[2],r$0=[0,_fv_,r],r=r$0,param=param$0;continue}
          return caml_call1(rev,r)}
        return caml_call1(Stdlib[2],cst_rtl)}}
    function unsnoc(xs)
     {var r=0,param=xs;
      for(;;)
       {if(param)
         {var _fu_=param[1];
          if(param[2])
           {var param$0=param[2],r$0=[0,_fu_,r],r=r$0,param=param$0;continue}
          return [0,caml_call1(rev,r),_fu_]}
        return caml_call1(Stdlib[2],cst_unsnoc)}}
    function find_ix(x)
     {var i=0;
      return function(param$0)
       {var i$0=i,param=param$0;
        for(;;)
         {if(param)
           {var xs=param[2],x$0=param[1];
            if(caml_equal(x,x$0))return [0,i$0];
            var i$1=i$0 + 1 | 0,i$0=i$1,param=xs;
            continue}
          return 0}}}
    function is_prefix(eq,xs,ys)
     {var xs$0=xs,ys$0=ys;
      for(;;)
       {if(xs$0)
         {if(ys$0)
           {var
             ys$1=ys$0[2],
             y=ys$0[1],
             xs$1=xs$0[2],
             x=xs$0[1],
             _ft_=caml_call2(eq,x,y);
            if(_ft_){var xs$0=xs$1,ys$0=ys$1;continue}
            return _ft_}
          return 0}
        return 1}}
    function is_suffix(eq,xs,ys)
     {var _fs_=caml_call1(rev,ys);
      return is_prefix(eq,caml_call1(rev,xs),_fs_)}
    function strip_common_prefix(eq,xs,ys)
     {var xs$0=xs,ys$0=ys;
      for(;;)
       {if(xs$0 && ys$0)
         {var ys$1=ys$0[2],y=ys$0[1],xs$1=xs$0[2],x=xs$0[1];
          if(caml_call2(eq,x,y)){var xs$0=xs$1,ys$0=ys$1;continue}}
        return [0,xs$0,ys$0]}}
    function strip_common_suffix(eq,xs,ys)
     {var
       _fq_=caml_call1(rev,ys),
       match=strip_common_prefix(eq,caml_call1(rev,xs),_fq_),
       ys$0=match[2],
       xs$0=match[1],
       _fr_=caml_call1(rev,ys$0);
      return [0,caml_call1(rev,xs$0),_fr_]}
    function map2$0(err,f,xs,ys)
     {if(err)
       {var err$0=err[1],_fo_=caml_call1(length,ys);
        if(caml_call1(length,xs) !== _fo_)
         {var _fp_=caml_call2(Stdlib[28],cst_map2,err$0);
          return caml_call1(Stdlib[2],_fp_)}}
      return caml_call3(map2,f,xs,ys)}
    function map3(err,f,xs,ys)
     {var _fj_=map2$0(err,f,xs,ys);
      function _fk_(_fn_,_fm_){return caml_call1(_fn_,_fm_)}
      return function(_fl_){return map2$0(err,_fk_,_fj_,_fl_)}}
    function find_some(f,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var xs=param$0[2],x=param$0[1],match=caml_call1(f,x);
          if(match){var y=match[1];return [0,y]}
          var param$0=xs;
          continue}
        return 0}}
    function map_some(f,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var xs=param$0[2],x=param$0[1],match=caml_call1(f,x);
          if(match){var y=match[1];return [0,y,map_some(f,xs)]}
          var param$0=xs;
          continue}
        return 0}}
    function somes(xs){return map_some(function(x){return x},xs)}
    function intersperse(sep)
     {function prepend(param)
       {if(param){var xs=param[2],x=param[1];return [0,sep,[0,x,prepend(xs)]]}
        return 0}
      return function(param)
       {if(param){var xs=param[2],x=param[1];return [0,x,prepend(xs)]}
        return 0}}
    function assoc_opt(opt,key)
     {if(opt)var sth=opt[1],equal=sth;else var equal=caml_equal;
      function f(param)
       {var param$0=param;
        for(;;)
         {if(param$0)
           {var xs=param$0[2],match=param$0[1],v=match[2],k=match[1];
            if(caml_call2(equal,key,k))return [0,v];
            var param$0=xs;
            continue}
          return 0}}
      return f}
    function assoc_exn(opt,k,l)
     {if(opt)var sth=opt[1],msg=sth;else var msg=cst_assoc_exn;
      var match=caml_call1(assoc_opt(0,k),l);
      if(match){var y=match[1];return y}
      return caml_call1(Stdlib[2],msg)}
    function replicate(i,x)
     {return caml_call2(init,i,function(param){return x})}
    function pp_sep(s,pp)
     {var
       _fi_=
        [0,
         function(ppf,param){return caml_call3(Stdlib_format[123],ppf,_e_,s)}];
      return caml_call2(Stdlib_format[119],_fi_,pp)}
    function buffer_sep(sep,pp,buf,param)
     {if(param)
       {var xs=param[2],x=param[1];
        caml_call2(pp,buf,x);
        var param$0=xs;
        for(;;)
         {if(param$0)
           {var xs$0=param$0[2],x$0=param$0[1];
            caml_call1(sep,buf);
            caml_call2(pp,buf,x$0);
            var param$0=xs$0;
            continue}
          return 0}}
      return 0}
    function map(f)
     {var r=0;
      return function(param$0)
       {var r$0=r,param=param$0;
        for(;;)
         {if(param)
           {var
             l=param[2],
             a=param[1],
             r$1=[0,caml_call1(f,a),r$0],
             r$0=r$1,
             param=l;
            continue}
          return caml_call1(rev,r$0)}}}
    function mapi(f)
     {var r=0,i=0;
      return function(param$0)
       {var i$0=i,r$0=r,param=param$0;
        for(;;)
         {if(param)
           {var
             l=param[2],
             a=param[1],
             r$1=[0,caml_call2(f,i$0,a),r$0],
             i$1=i$0 + 1 | 0,
             i$0=i$1,
             r$0=r$1,
             param=l;
            continue}
          return caml_call1(rev,r$0)}}}
    var
     Utils_List=
      [0,
       equal,
       pp,
       show,
       length,
       compare_lengths,
       compare_length_with,
       cons,
       hd,
       tl,
       nth,
       nth_opt,
       rev,
       init,
       append,
       rev_append,
       concat,
       flatten,
       iter,
       iteri,
       map,
       mapi,
       rev_map,
       filter_map,
       concat_map,
       fold_left,
       fold_right,
       iter2,
       rev_map2,
       fold_left2,
       fold_right2,
       for_all,
       exists,
       for_all2,
       exists2,
       mem,
       memq,
       find,
       find_opt,
       find_map,
       filter,
       find_all,
       partition,
       assoc,
       assq,
       assq_opt,
       mem_assoc,
       mem_assq,
       remove_assoc,
       remove_assq,
       split,
       combine,
       sort,
       stable_sort,
       fast_sort,
       sort_uniq,
       merge,
       to_seq,
       of_seq,
       rnth,
       rnth_opt,
       nth_rem,
       last,
       last_opt,
       split_at_opt,
       split_at,
       take,
       drop,
       rdrop,
       rtl,
       unsnoc,
       map3,
       find_ix,
       is_prefix,
       is_suffix,
       strip_common_prefix,
       strip_common_suffix,
       map2$0,
       map_some,
       find_some,
       somes,
       intersperse,
       assoc_opt,
       assoc_exn,
       replicate,
       pp_sep,
       buffer_sep];
    caml_register_global(281,Utils_List,"Utils__List");
    function id(x){return x}
    function pair(x,y){return [0,x,y]}
    function flip(f,x,y){return caml_call2(f,y,x)}
    function map_fst(f,param)
     {var y=param[2],x=param[1];return [0,caml_call1(f,x),y]}
    function map_snd(f,param)
     {var y=param[2],x=param[1];return [0,x,caml_call1(f,y)]}
    function Functor(A){var map=A[1];return [0,map,map]}
    function Applicative(A)
     {var
       return$0=A[2],
       apply=A[3],
       include=Functor([0,A[1]]),
       map=include[1],
       symbol=include[2];
      function void$0(x){return caml_call2(map,function(param){return 0},x)}
      function when(c,x){return c?x:caml_call1(return$0,0)}
      function when_some(c,f)
       {if(c){var x=c[1];return caml_call1(f,x)}return caml_call1(return$0,0)}
      function unless(c,x){return c?caml_call1(return$0,0):x}
      function map2(f,x,y){return caml_call2(apply,caml_call2(symbol,f,x),y)}
      function let$0(x){return function(_fh_){return flip(map,x,_fh_)}}
      function and(x){return function(_fg_){return map2(pair,x,_fg_)}}
      var
       Applicative_syntax=[0,let$0,and],
       let$1=Applicative_syntax[1],
       and$0=Applicative_syntax[2];
      function cons(x,xs){return [0,x,xs]}
      function map_option(f,param)
       {if(param)
         {var x=param[1],_ff_=caml_call1(f,x);
          return caml_call2(symbol,function(y){return [0,y]},_ff_)}
        return caml_call1(return$0,0)}
      function map_list(f,param)
       {if(param)
         {var
           xs=param[2],
           x=param[1],
           _fe_=function(param){var ys=param[2],y=param[1];return [0,y,ys]},
           left=caml_call1(f,x);
          return caml_call2(let$1,caml_call2(and$0,left,map_list(f,xs)),_fe_)}
        return caml_call1(return$0,0)}
      function map2_list(f,xs,ys)
       {if(xs)
         {if(ys)
           {var
             ys$0=ys[2],
             y=ys[1],
             xs$0=xs[2],
             x=xs[1],
             _fd_=map2_list(f,xs$0,ys$0);
            return caml_call2
                    (apply,caml_call2(symbol,cons,caml_call2(f,x,y)),_fd_)}}
        else
         if(! ys)return caml_call1(return$0,0);
        return caml_call1(Stdlib[2],cst_map2_list_differing_length)}
      function iter_list(f,xs){return void$0(map_list(f,xs))}
      function iter2_list(f,xs,ys){return void$0(map2_list(f,xs,ys))}
      function sequence_list(xs){return map_list(id,xs)}
      function sequence_option(param)
       {if(param)
         {var x=param[1];
          return caml_call2(symbol,function(x){return [0,x]},x)}
        return caml_call1(return$0,0)}
      function sequence_fst(param)
       {var y=param[2],x=param[1];
        return caml_call2(let$1,x,function(x){return [0,x,y]})}
      function sequence_snd(param)
       {var y=param[2],x=param[1];
        return caml_call2(let$1,y,function(y){return [0,x,y]})}
      function sequence_pair(param)
       {var y=param[2],x=param[1];
        function _fc_(param){var y=param[2],x=param[1];return [0,x,y]}
        return caml_call2(let$1,caml_call2(and$0,x,y),_fc_)}
      return [0,
              return$0,
              apply,
              map,
              symbol,
              let$1,
              and$0,
              Applicative_syntax,
              apply,
              void$0,
              when,
              when_some,
              unless,
              map2,
              map_option,
              map_list,
              iter_list,
              map2_list,
              iter2_list,
              sequence_list,
              sequence_option,
              sequence_fst,
              sequence_snd,
              sequence_pair]}
    function Monad(M)
     {var
       bind=M[4],
       include=Applicative([0,M[1],M[2],M[3]]),
       return$0=include[1],
       apply=include[2],
       map=include[3],
       symbol=include[4],
       let$0=include[5],
       and=include[6],
       Applicative_syntax=include[7],
       symbol$0=include[8],
       void$0=include[9],
       when=include[10],
       when_some=include[11],
       map2=include[13],
       map_option=include[14],
       map_list=include[15],
       iter_list=include[16],
       map2_list=include[17],
       iter2_list=include[18],
       sequence_list=include[19],
       sequence_option=include[20],
       sequence_fst=include[21],
       sequence_snd=include[22],
       sequence_pair=include[23];
      function symbol$1(x,y)
       {return caml_call2(bind,x,function(param){return y})}
      function join(x){return caml_call2(bind,x,id)}
      function bind2(f,x,y)
       {return caml_call2
                (bind,
                 x,
                 function(x)
                  {return caml_call2
                           (bind,y,function(y){return caml_call2(f,x,y)})})}
      function unless(c,x){return c?caml_call1(return$0,0):x}
      function and$0(x,y)
       {return caml_call2
                (bind,
                 x,
                 function(x)
                  {return caml_call2
                           (bind,y,function(y){return caml_call1(return$0,[0,x,y])})})}
      var
       Monad_syntax=[0,bind,and$0],
       let$1=Monad_syntax[1],
       and$1=Monad_syntax[2];
      return [0,
              bind,
              return$0,
              apply,
              map,
              symbol,
              let$0,
              and,
              Applicative_syntax,
              symbol$0,
              void$0,
              when,
              when_some,
              map2,
              map_option,
              map_list,
              iter_list,
              map2_list,
              iter2_list,
              sequence_list,
              sequence_option,
              sequence_fst,
              sequence_snd,
              sequence_pair,
              let$1,
              and$1,
              Monad_syntax,
              bind,
              symbol$1,
              join,
              bind2,
              unless]}
    function Fix(F)
     {function unF(param){var x=param[1];return x}return [0,unF]}
    function FixFUNCTOR(F)
     {var include=Fix([0]),unF=include[1];
      function cata(f,param)
       {var t=param[1];
        function _fa_(_fb_){return cata(f,_fb_)}
        return caml_call1(f,caml_call2(F[1],_fa_,t))}
      function _e9_(f,param)
       {var t=param[1];
        function _e__(_e$_){return _e9_(f,_e$_)}
        return [0,[0,t],caml_call1(f,caml_call2(F[1],_e__,t))]}
      function para(f,e){return _e9_(f,e)[2]}
      return [0,unF,cata,para]}
    function FixEQ(F)
     {function equal(param,_e8_)
       {var y=_e8_[1],x=param[1];return caml_call3(F[1],equal,x,y)}
      return [0,equal]}
    function FixORD(F)
     {function compare(param,_e7_)
       {var y=_e7_[1],x=param[1];return caml_call3(F[1],compare,x,y)}
      return [0,compare]}
    function FixSHOW(F)
     {function pp(ppf,param){var x=param[1];return caml_call3(F[2],pp,ppf,x)}
      function show(param){var x=param[1];return caml_call2(F[1],pp,x)}
      return [0,show,pp]}
    function of_left(param)
     {if(0 === param[0]){var x=param[1];return [0,x]}return 0}
    function of_right(param)
     {if(0 === param[0])return 0;var x=param[1];return [0,x]}
    function is_left(param){return 0 === param[0]?1:0}
    function is_right(param){return 0 === param[0]?0:1}
    var Either=[0,of_left,of_right,is_left,is_right];
    function equal$0(poly_a,x,match)
     {if(0 === x[0])
       {var _e5_=x[1];
        if(0 === match[0]){var b=match[1];return caml_call2(poly_a,_e5_,b)}}
      else
       {var _e6_=x[1];
        if(0 !== match[0])
         {var b$0=match[1];return caml_string_equal(_e6_,b$0)}}
      return 0}
    var
     compare=
      function _e4_(_e1_,_e2_,_e3_){return _e4_.fun(_e1_,_e2_,_e3_)};
    caml_update_dummy
     (compare,
      function(poly_a,x,match)
       {if(0 === x[0])
         {var _eZ_=x[1];
          if(0 === match[0]){var b=match[1];return caml_call2(poly_a,_eZ_,b)}
          return -1}
        var _e0_=x[1];
        if(0 === match[0])return 1;
        var b$0=match[1];
        return caml_string_compare(_e0_,b$0)});
    function pp$0(poly_a,fmt,param)
     {if(0 === param[0])
       {var ok=param[1];
        caml_call2(Stdlib_format[13],fmt,cst_Ok);
        caml_call1(caml_call1(poly_a,fmt),ok);
        return caml_call2(Stdlib_format[13],fmt,cst)}
      var e=param[1];
      caml_call2(Stdlib_format[13],fmt,cst_Error);
      caml_call1(caml_call2(Stdlib_format[123],fmt,_f_),e);
      return caml_call2(Stdlib_format[13],fmt,cst$0)}
    function show$0(poly_a,x)
     {function _eW_(_eX_,_eY_){return pp$0(poly_a,_eX_,_eY_)}
      return caml_call3(Stdlib_format[127],_g_,_eW_,x)}
    function map$0(poly_a,param)
     {if(0 === param[0]){var ok=param[1];return [0,caml_call1(poly_a,ok)]}
      var err=param[1];
      return [1,err]}
    function ok(x){return [0,x]}
    function error(x){return [1,x]}
    function cata(ok,err,param)
     {if(0 === param[0]){var r=param[1];return caml_call1(ok,r)}
      var x=param[1];
      return caml_call1(err,x)}
    function return$0(x){return [0,x]}
    function apply(f,x)
     {if(0 === f[0])
       {var f$0=f[1];
        if(0 === x[0]){var x$0=x[1];return [0,caml_call1(f$0,x$0)]}
        var e=x[1];
        return [1,e]}
      var e$0=f[1];
      return [1,e$0]}
    function bind(x,f)
     {if(0 === x[0]){var x$0=x[1];return caml_call1(f,x$0)}
      var e=x[1];
      return [1,e]}
    var
     include=Monad([0,map$0,return$0,apply,bind]),
     bind$0=include[1],
     return$1=include[2],
     apply$0=include[3],
     map$1=include[4],
     symbol=include[5],
     let$0=include[6],
     and$0=include[7],
     Applicative_syntax=include[8],
     symbol$0=include[9],
     void$0=include[10],
     when=include[11],
     when_some=include[12],
     map2$1=include[13],
     map_option=include[14],
     iter_list=include[16],
     map2_list=include[17],
     iter2_list=include[18],
     sequence_option=include[20],
     sequence_fst=include[21],
     sequence_snd=include[22],
     sequence_pair=include[23],
     let$1=include[24],
     and$1=include[25],
     Monad_syntax=include[26],
     symbol_bind=include[27],
     symbol$1=include[28],
     join=include[29],
     bind2=include[30],
     unless=include[31];
    function map_list(f)
     {return function(xs$0)
       {var r=0,param=xs$0;
        for(;;)
         {if(param)
           {var xs=param[2],x=param[1],e=caml_call1(f,x);
            if(0 === e[0]){var y=e[1],r$0=[0,y,r],r=r$0,param=xs;continue}
            return e}
          return caml_call1(return$1,caml_call1(rev,r))}}}
    function sequence_list(xs)
     {var r=0,param=xs;
      for(;;)
       {if(param)
         {var _eV_=param[1];
          if(0 === _eV_[0])
           {var param$0=param[2],x=_eV_[1],r$0=[0,x,r],r=r$0,param=param$0;
            continue}
          return _eV_}
        return caml_call1(return$1,caml_call1(rev,r))}}
    function get_ok(param)
     {if(0 === param[0]){var x=param[1];return [0,x]}return 0}
    function get_ok_exn(param)
     {if(0 === param[0]){var x=param[1];return x}
      var e=param[1];
      return caml_call1(Stdlib[2],e)}
    function is_ok(param){return 0 === param[0]?1:0}
    function is_error(param){return 0 === param[0]?0:1}
    function map_error(f,param)
     {if(0 === param[0]){var x=param[1];return [0,x]}
      var e=param[1];
      return [1,caml_call1(f,e)]}
    function Writer(T)
     {function map(f,param)
       {var x=param[2],a=param[1];return [0,a,caml_call1(f,x)]}
      function return$0(x){return [0,0,x]}
      function bind(param,f)
       {var
         x=param[2],
         a=param[1],
         match=caml_call1(f,x),
         x$0=match[2],
         a$0=match[1];
        return [0,caml_call2(Stdlib[37],a$0,a),x$0]}
      function apply(f,x)
       {return bind
                (f,
                 function(f)
                  {return bind
                           (x,function(x){return return$0(caml_call1(f,x))})})}
      var
       include=Monad([0,map,return$0,apply,bind]),
       bind$0=include[1],
       return$1=include[2],
       apply$0=include[3],
       map$0=include[4],
       symbol=include[5],
       let$0=include[6],
       and=include[7],
       Applicative_syntax=include[8],
       symbol$0=include[9],
       void$0=include[10],
       when=include[11],
       when_some=include[12],
       map2=include[13],
       map_option=include[14],
       map_list=include[15],
       iter_list=include[16],
       map2_list=include[17],
       iter2_list=include[18],
       sequence_list=include[19],
       sequence_option=include[20],
       sequence_fst=include[21],
       sequence_snd=include[22],
       sequence_pair=include[23],
       let$1=include[24],
       and$0=include[25],
       Monad_syntax=include[26],
       symbol_bind=include[27],
       symbol$1=include[28],
       join=include[29],
       bind2=include[30],
       unless=include[31];
      function write(a){return [0,[0,a,0],0]}
      function run(param)
       {var x=param[2],a=param[1];return [0,caml_call1(rev,a),x]}
      return [0,
              bind$0,
              return$1,
              apply$0,
              map$0,
              symbol,
              let$0,
              and,
              Applicative_syntax,
              symbol$0,
              void$0,
              when,
              when_some,
              map2,
              map_option,
              map_list,
              iter_list,
              map2_list,
              iter2_list,
              sequence_list,
              sequence_option,
              sequence_fst,
              sequence_snd,
              sequence_pair,
              let$1,
              and$0,
              Monad_syntax,
              symbol_bind,
              symbol$1,
              join,
              bind2,
              unless,
              write,
              run]}
    function print_list(xs,ppf)
     {function _eT_(ppf,x){return caml_call3(Stdlib_format[123],ppf,_h_,x)}
      var
       _eU_=
        [0,function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_i_)}];
      return caml_call4(Stdlib_format[119],_eU_,_eT_,ppf,xs)}
    function pp_int(ppf){return caml_call2(Stdlib_format[123],ppf,_j_)}
    function curry(f,x,y){return caml_call1(f,[0,x,y])}
    function uncurry(f,param)
     {var y=param[2],x=param[1];return caml_call2(f,x,y)}
    function eq3(x,y,z)
     {var _eR_=caml_equal(x,y),_eS_=_eR_?caml_equal(y,z):_eR_;return _eS_}
    function pp_no_breaks(f,param)
     {var fs=caml_call2(Stdlib_format[98],f,0);
      function _eO_(param){return 0}
      var _eP_=fs[4];
      function _eQ_(param){return 0}
      return caml_call2(Stdlib_format[96],f,[0,fs[1],fs[2],_eQ_,_eP_,_eO_])}
    function equal_pair(poly_a,poly_b,param,_eM_)
     {var
       rhs1=_eM_[2],
       rhs0=_eM_[1],
       lhs1=param[2],
       lhs0=param[1],
       _eN_=caml_call2(poly_a,lhs0,rhs0);
      return _eN_?caml_call2(poly_b,lhs1,rhs1):_eN_}
    function pp_pair(poly_a,poly_b,fmt,param)
     {var a1=param[2],a0=param[1];
      caml_call2(Stdlib_format[123],fmt,_k_);
      caml_call1(caml_call1(poly_a,fmt),a0);
      caml_call2(Stdlib_format[123],fmt,_l_);
      caml_call1(caml_call1(poly_b,fmt),a1);
      return caml_call2(Stdlib_format[123],fmt,_m_)}
    function show_pair(poly_a,poly_b,x)
     {function _eJ_(_eK_,_eL_){return pp_pair(poly_a,poly_b,_eK_,_eL_)}
      return caml_call3(Stdlib_format[127],_n_,_eJ_,x)}
    function map_pair(poly_a,poly_b,param)
     {var a1=param[2],a0=param[1],_eI_=caml_call1(poly_b,a1);
      return [0,caml_call1(poly_a,a0),_eI_]}
    var t=[0,0];
    function tick(s)
     {var now=caml_call1(Unix[99],0),_eH_=t[1];
      if(_eH_)
       {var t$0=_eH_[1],dt=(now - t$0) * 1000.;
        caml_call3(Stdlib_printf[3],_o_,dt,s)}
      else
       caml_call2(Stdlib_printf[3],_p_,s);
      t[1] = [0,now];
      return 0}
    function _q_(_eA_)
     {function map(f,x,s){return caml_call1(f,caml_call1(x,s))}
      function return$0(x,param){return x}
      function bind(x,f,s){var x$0=caml_call1(x,s);return caml_call2(f,x$0,s)}
      function apply(f,x)
       {function _eB_(f)
         {function _eD_(x)
           {var _eF_=caml_call1(f,x);return function(_eG_){return _eF_}}
          return function(_eE_){return bind(x,_eD_,_eE_)}}
        return function(_eC_){return bind(f,_eB_,_eC_)}}
      var
       include=Monad([0,map,return$0,apply,bind]),
       bind$0=include[1],
       return$1=include[2],
       apply$0=include[3],
       map$0=include[4],
       symbol=include[5],
       let$0=include[6],
       and=include[7],
       Applicative_syntax=include[8],
       symbol$0=include[9],
       void$0=include[10],
       when=include[11],
       when_some=include[12],
       map2=include[13],
       map_option=include[14],
       map_list=include[15],
       iter_list=include[16],
       map2_list=include[17],
       iter2_list=include[18],
       sequence_list=include[19],
       sequence_option=include[20],
       sequence_fst=include[21],
       sequence_snd=include[22],
       sequence_pair=include[23],
       let$1=include[24],
       and$0=include[25],
       Monad_syntax=include[26],
       symbol_bind=include[27],
       symbol$1=include[28],
       join=include[29],
       bind2=include[30],
       unless=include[31];
      function ask(s){return s}
      function local(f,x,s){return caml_call1(x,caml_call1(f,s))}
      function run(f,s){return caml_call1(f,s)}
      return [0,
              ask,
              local,
              bind$0,
              return$1,
              apply$0,
              map$0,
              symbol,
              let$0,
              and,
              Applicative_syntax,
              symbol$0,
              void$0,
              when,
              when_some,
              map2,
              map_option,
              map_list,
              iter_list,
              map2_list,
              iter2_list,
              sequence_list,
              sequence_option,
              sequence_fst,
              sequence_snd,
              sequence_pair,
              let$1,
              and$0,
              Monad_syntax,
              symbol_bind,
              symbol$1,
              join,
              bind2,
              unless,
              run]}
    var
     Utils_Control=
      [0,
       id,
       pair,
       flip,
       map_fst,
       map_snd,
       Functor,
       Applicative,
       Monad,
       Fix,
       FixFUNCTOR,
       FixEQ,
       FixORD,
       FixSHOW,
       Either,
       [0,
        equal$0,
        compare,
        pp$0,
        show$0,
        ok,
        error,
        cata,
        bind$0,
        return$1,
        apply$0,
        map$1,
        symbol,
        let$0,
        and$0,
        Applicative_syntax,
        symbol$0,
        void$0,
        when,
        when_some,
        map2$1,
        map_option,
        map_list,
        iter_list,
        map2_list,
        iter2_list,
        sequence_list,
        sequence_option,
        sequence_fst,
        sequence_snd,
        sequence_pair,
        let$1,
        and$1,
        Monad_syntax,
        symbol_bind,
        symbol$1,
        join,
        bind2,
        unless,
        get_ok,
        get_ok_exn,
        is_ok,
        is_error,
        map_error],
       function(_en_)
        {function map(f,x,s){return map_fst(f,caml_call1(x,s))}
         function return$0(x,s){return [0,x,s]}
         function bind(x,f,s)
          {var match=caml_call1(x,s),s$0=match[2],x$0=match[1];
           return caml_call2(f,x$0,s$0)}
         function apply(f,x)
          {function _eu_(f)
            {function _ew_(x)
              {var _ey_=caml_call1(f,x);
               return function(_ez_){return [0,_ey_,_ez_]}}
             return function(_ex_){return bind(x,_ew_,_ex_)}}
           return function(_ev_){return bind(f,_eu_,_ev_)}}
         var
          include=Monad([0,map,return$0,apply,bind]),
          bind$0=include[1],
          return$1=include[2],
          apply$0=include[3],
          map$0=include[4],
          symbol=include[5],
          let$0=include[6],
          and=include[7],
          Applicative_syntax=include[8],
          symbol$0=include[9],
          void$0=include[10],
          when=include[11],
          when_some=include[12],
          map2=include[13],
          map_option=include[14],
          map_list=include[15],
          iter_list=include[16],
          map2_list=include[17],
          iter2_list=include[18],
          sequence_list=include[19],
          sequence_option=include[20],
          sequence_fst=include[21],
          sequence_snd=include[22],
          sequence_pair=include[23],
          let$1=include[24],
          and$0=include[25],
          Monad_syntax=include[26],
          symbol_bind=include[27],
          symbol$1=include[28],
          join=include[29],
          bind2=include[30],
          unless=include[31];
         function get(s){return [0,s,s]}
         function set(s,param){return [0,0,s]}
         function local(s,a)
          {return caml_call2
                   (let$1,
                    get,
                    function(bak)
                     {function _eq_(param)
                       {return caml_call2
                                (let$1,
                                 a,
                                 function(x)
                                  {function _es_(param){return caml_call1(return$1,x)}
                                   return caml_call2
                                           (let$1,function(_et_){return set(bak,_et_)},_es_)})}
                      return caml_call2
                              (let$1,function(_er_){return set(s,_er_)},_eq_)})}
         function modify(f)
          {return caml_call2
                   (symbol_bind,
                    get,
                    function(s)
                     {var _eo_=caml_call1(f,s);
                      return function(_ep_){return set(_eo_,_ep_)}})}
         function run(f,s){return caml_call1(f,s)}
         function exec(f,s){return run(f,s)[1]}
         return [0,
                 get,
                 set,
                 local,
                 modify,
                 bind$0,
                 return$1,
                 apply$0,
                 map$0,
                 symbol,
                 let$0,
                 and,
                 Applicative_syntax,
                 symbol$0,
                 void$0,
                 when,
                 when_some,
                 map2,
                 map_option,
                 map_list,
                 iter_list,
                 map2_list,
                 iter2_list,
                 sequence_list,
                 sequence_option,
                 sequence_fst,
                 sequence_snd,
                 sequence_pair,
                 let$1,
                 and$0,
                 Monad_syntax,
                 symbol_bind,
                 symbol$1,
                 join,
                 bind2,
                 unless,
                 run,
                 exec]},
       _q_,
       Writer,
       print_list,
       pp_int,
       curry,
       uncurry,
       eq3,
       pp_no_breaks,
       equal_pair,
       pp_pair,
       show_pair,
       map_pair,
       tick];
    caml_register_global(284,Utils_Control,"Utils__Control");
    var
     none=Stdlib_option[1],
     value=Stdlib_option[3],
     fold=Stdlib_option[8],
     iter$0=Stdlib_option[9],
     compare$0=Stdlib_option[13],
     to_result=Stdlib_option[14],
     to_list=Stdlib_option[15],
     to_seq$0=Stdlib_option[16];
    function equal$1(poly_a,x,y)
     {if(x)
       {if(y){var b=y[1],a=x[1];return caml_call2(poly_a,a,b)}}
      else
       if(! y)return 1;
      return 0}
    function pp$1(poly_a,fmt,param)
     {if(param)
       {var x=param[1];
        caml_call2(Stdlib_format[13],fmt,cst_Some);
        caml_call1(caml_call1(poly_a,fmt),x);
        return caml_call2(Stdlib_format[13],fmt,cst$1)}
      return caml_call2(Stdlib_format[13],fmt,cst_None)}
    function show$1(poly_a,x)
     {function _ek_(_el_,_em_){return pp$1(poly_a,_el_,_em_)}
      return caml_call3(Stdlib_format[127],_r_,_ek_,x)}
    function cata$0(x,f,param)
     {if(param){var x$0=param[1];return caml_call1(f,x$0)}return x}
    function some(x){return [0,x]}
    function map$2(f,param)
     {if(param){var x=param[1];return [0,caml_call1(f,x)]}return 0}
    function apply$1(f,match)
     {if(f && match){var x=match[1],f$0=f[1];return [0,caml_call1(f$0,x)]}
      return 0}
    function bind$1(x,f){return cata$0(0,f,x)}
    var
     include$0=Monad([0,map$2,some,apply$1,bind$1]),
     bind$2=include$0[1],
     return$2=include$0[2],
     apply$2=include$0[3],
     map$3=include$0[4],
     symbol$2=include$0[5],
     let$2=include$0[6],
     and$2=include$0[7],
     Applicative_syntax$0=include$0[8],
     symbol$3=include$0[9],
     void$1=include$0[10],
     when$0=include$0[11],
     when_some$0=include$0[12],
     map2$2=include$0[13],
     map_option$0=include$0[14],
     map_list$0=include$0[15],
     iter_list$0=include$0[16],
     map2_list$0=include$0[17],
     iter2_list$0=include$0[18],
     sequence_list$0=include$0[19],
     sequence_option$0=include$0[20],
     sequence_fst$0=include$0[21],
     sequence_snd$0=include$0[22],
     sequence_pair$0=include$0[23],
     let$3=include$0[24],
     and$3=include$0[25],
     Monad_syntax$0=include$0[26],
     symbol_bind$0=include$0[27],
     symbol$4=include$0[28],
     join$0=include$0[29],
     bind2$0=include$0[30],
     unless$0=include$0[31];
    function default$0(d){return function(_ej_){return cata$0(d,id,_ej_)}}
    function is_none(param){return param?0:1}
    function is_some(param){return param?1:0}
    function of_some(opt,param)
     {if(opt)var sth=opt[1],msg=sth;else var msg=cst_of_some;
      if(param){var x=param[1];return x}
      return caml_call1(Stdlib[2],msg)}
    function of_some_exn(msg,x)
     {if(x){var x$0=x[1];return x$0}
      var msg$0=caml_call1(default$0(cst_default_exn),msg);
      return caml_call1(Stdlib[2],msg$0)}
    function get(opt,param)
     {if(opt)var sth=opt[1],msg=sth;else var msg=cst_Option_get;
      if(param){var x=param[1];return x}
      return caml_call1(Stdlib[2],msg)}
    var
     Utils_Option=
      [0,
       none,
       value,
       fold,
       iter$0,
       compare$0,
       to_result,
       to_list,
       to_seq$0,
       equal$1,
       pp$1,
       show$1,
       cata$0,
       some,
       bind$2,
       return$2,
       apply$2,
       map$3,
       symbol$2,
       let$2,
       and$2,
       Applicative_syntax$0,
       symbol$3,
       void$1,
       when$0,
       when_some$0,
       map2$2,
       map_option$0,
       map_list$0,
       iter_list$0,
       map2_list$0,
       iter2_list$0,
       sequence_list$0,
       sequence_option$0,
       sequence_fst$0,
       sequence_snd$0,
       sequence_pair$0,
       let$3,
       and$3,
       Monad_syntax$0,
       symbol_bind$0,
       symbol$4,
       join$0,
       bind2$0,
       unless$0,
       default$0,
       is_none,
       is_some,
       of_some,
       of_some_exn,
       get];
    caml_register_global(286,Utils_Option,"Utils__Option");
    function Make(Ord)
     {var
       include=caml_call1(Stdlib_map[1],Ord),
       empty=include[1],
       is_empty=include[2],
       mem=include[3],
       add=include[4],
       update=include[5],
       singleton=include[6],
       remove=include[7],
       merge=include[8],
       union=include[9],
       compare=include[10],
       equal=include[11],
       iter=include[12],
       fold=include[13],
       for_all=include[14],
       exists=include[15],
       filter=include[16],
       partition=include[17],
       cardinal=include[18],
       bindings=include[19],
       min_binding=include[20],
       min_binding_opt=include[21],
       max_binding=include[22],
       max_binding_opt=include[23],
       choose=include[24],
       choose_opt=include[25],
       split=include[26],
       find=include[27],
       find_opt=include[28],
       find_first=include[29],
       find_first_opt=include[30],
       find_last=include[31],
       find_last_opt=include[32],
       map$0=include[33],
       mapi=include[34],
       to_seq$0=include[35],
       to_seq_from=include[36],
       add_seq=include[37],
       of_seq=include[38];
      function lookup(default$1,k,m)
       {var _ei_=caml_call2(find_opt,k,m);
        return caml_call1(default$0(default$1),_ei_)}
      function keys(m)
       {var _eg_=caml_call1(bindings,m);
        return caml_call1(map(function(_eh_){return _eh_[1]}),_eg_)}
      function values(m)
       {var _ee_=caml_call1(bindings,m);
        return caml_call1(map(function(_ef_){return _ef_[2]}),_ee_)}
      function of_list(xs){return caml_call1(of_seq,caml_call1(to_seq,xs))}
      function f(param,x,match)
       {if(x && match){var y=match[1],x$0=x[1];return [0,[0,x$0,y]]}return 0}
      function intersect(m){return caml_call2(merge,f,m)}
      return [0,
              empty,
              is_empty,
              mem,
              add,
              update,
              singleton,
              remove,
              merge,
              union,
              compare,
              equal,
              iter,
              fold,
              for_all,
              exists,
              filter,
              partition,
              cardinal,
              bindings,
              min_binding,
              min_binding_opt,
              max_binding,
              max_binding_opt,
              choose,
              choose_opt,
              split,
              find,
              find_opt,
              find_first,
              find_first_opt,
              find_last,
              find_last_opt,
              map$0,
              mapi,
              to_seq$0,
              to_seq_from,
              add_seq,
              of_seq,
              lookup,
              bindings,
              keys,
              values,
              of_list,
              intersect]}
    var Utils_Map=[0,Make];
    caml_register_global(288,Utils_Map,"Utils__Map");
    function Make$0(Ord)
     {var
       include=caml_call1(Stdlib_set[1],Ord),
       empty=include[1],
       is_empty=include[2],
       mem=include[3],
       add=include[4],
       singleton=include[5],
       remove=include[6],
       union=include[7],
       inter=include[8],
       disjoint=include[9],
       diff=include[10],
       compare=include[11],
       equal=include[12],
       subset=include[13],
       iter=include[14],
       map=include[15],
       fold=include[16],
       for_all=include[17],
       exists=include[18],
       filter=include[19],
       partition=include[20],
       cardinal=include[21],
       elements=include[22],
       min_elt=include[23],
       min_elt_opt=include[24],
       max_elt=include[25],
       max_elt_opt=include[26],
       choose=include[27],
       choose_opt=include[28],
       split=include[29],
       find=include[30],
       find_opt=include[31],
       find_first=include[32],
       find_first_opt=include[33],
       find_last=include[34],
       find_last_opt=include[35],
       of_list=include[36],
       to_seq_from=include[37],
       to_seq=include[38],
       add_seq=include[39],
       of_seq=include[40];
      return [0,
              empty,
              is_empty,
              mem,
              add,
              singleton,
              remove,
              union,
              inter,
              disjoint,
              diff,
              compare,
              equal,
              subset,
              iter,
              map,
              fold,
              for_all,
              exists,
              filter,
              partition,
              cardinal,
              elements,
              min_elt,
              min_elt_opt,
              max_elt,
              max_elt_opt,
              choose,
              choose_opt,
              split,
              find,
              find_opt,
              find_first,
              find_first_opt,
              find_last,
              find_last_opt,
              of_list,
              to_seq_from,
              to_seq,
              add_seq,
              of_seq]}
    var Utils_Set=[0,Make$0];
    caml_register_global(290,Utils_Set,"Utils__Set");
    function Make$1(Ord)
     {var compare=Ord[1],Set=Make$0(Ord),Map=Make(Ord);
      function map_of_set(f,x)
       {var _eb_=caml_call1(Set[38],x);
        function _ec_(k){return [0,k,caml_call1(f,k)]}
        var _ed_=caml_call2(Stdlib_seq[3],_ec_,_eb_);
        return caml_call1(Map[38],_ed_)}
      return [0,compare,Set,Map,map_of_set]}
    var Utils_Data=[0,Make$1];
    caml_register_global(292,Utils_Data,"Utils__Data");
    var
     make=Stdlib_string[1],
     init$0=Stdlib_string[2],
     copy=Stdlib_string[3],
     sub=Stdlib_string[4],
     fill=Stdlib_string[5],
     blit=Stdlib_string[6],
     concat$0=Stdlib_string[7],
     iter$1=Stdlib_string[8],
     iteri$0=Stdlib_string[9],
     map$4=Stdlib_string[10],
     mapi$0=Stdlib_string[11],
     trim=Stdlib_string[12],
     escaped=Stdlib_string[13],
     index=Stdlib_string[14],
     index_opt=Stdlib_string[15],
     rindex=Stdlib_string[16],
     rindex_opt=Stdlib_string[17],
     index_from=Stdlib_string[18],
     index_from_opt=Stdlib_string[19],
     rindex_from=Stdlib_string[20],
     rindex_from_opt=Stdlib_string[21],
     contains=Stdlib_string[22],
     contains_from=Stdlib_string[23],
     rcontains_from=Stdlib_string[24],
     uppercase=Stdlib_string[25],
     lowercase=Stdlib_string[26],
     capitalize=Stdlib_string[27],
     uncapitalize=Stdlib_string[28],
     uppercase_ascii=Stdlib_string[29],
     lowercase_ascii=Stdlib_string[30],
     capitalize_ascii=Stdlib_string[31],
     uncapitalize_ascii=Stdlib_string[32],
     compare$1=Stdlib_string[33],
     equal$2=Stdlib_string[34],
     split_on_char=Stdlib_string[35],
     to_seq$1=Stdlib_string[36],
     to_seqi=Stdlib_string[37],
     of_seq$0=Stdlib_string[38];
    function pp$2(ppf){return caml_call2(Stdlib_format[123],ppf,_s_)}
    function repeat(s,n)
     {return caml_call3
              (Stdlib_array[17],Stdlib[28],cst$2,runtime.caml_make_vect(n,s))}
    var
     include$1=Make$1([0,compare$1]),
     compare$2=include$1[1],
     Set=include$1[2],
     Map=include$1[3],
     map_of_set=include$1[4],
     Utils_String=
      [0,
       make,
       init$0,
       copy,
       sub,
       fill,
       blit,
       concat$0,
       iter$1,
       iteri$0,
       map$4,
       mapi$0,
       trim,
       escaped,
       index,
       index_opt,
       rindex,
       rindex_opt,
       index_from,
       index_from_opt,
       rindex_from,
       rindex_from_opt,
       contains,
       contains_from,
       rcontains_from,
       uppercase,
       lowercase,
       capitalize,
       uncapitalize,
       uppercase_ascii,
       lowercase_ascii,
       capitalize_ascii,
       uncapitalize_ascii,
       equal$2,
       split_on_char,
       to_seq$1,
       to_seqi,
       of_seq$0,
       pp$2,
       repeat,
       compare$2,
       Set,
       Map,
       map_of_set];
    caml_register_global(295,Utils_String,"Utils__String");
    var
     zero_big_int=Big_int[1],
     unit_big_int=Big_int[2],
     minus_big_int=Big_int[3],
     abs_big_int=Big_int[4],
     add_big_int=Big_int[5],
     succ_big_int=Big_int[6],
     add_int_big_int=Big_int[7],
     sub_big_int=Big_int[8],
     pred_big_int=Big_int[9],
     mult_big_int=Big_int[10],
     mult_int_big_int=Big_int[11],
     square_big_int=Big_int[12],
     sqrt_big_int=Big_int[13],
     quomod_big_int=Big_int[14],
     div_big_int=Big_int[15],
     mod_big_int=Big_int[16],
     gcd_big_int=Big_int[17],
     power_int_positive_int=Big_int[18],
     power_big_int_positive_int=Big_int[19],
     power_int_positive_big_int=Big_int[20],
     power_big_int_positive_big_int=Big_int[21],
     sign_big_int=Big_int[22],
     compare_big_int=Big_int[23],
     eq_big_int=Big_int[24],
     le_big_int=Big_int[25],
     ge_big_int=Big_int[26],
     lt_big_int=Big_int[27],
     gt_big_int=Big_int[28],
     max_big_int=Big_int[29],
     min_big_int=Big_int[30],
     num_digits_big_int=Big_int[31],
     num_bits_big_int=Big_int[32],
     string_of_big_int=Big_int[33],
     big_int_of_string=Big_int[34],
     big_int_of_string_opt=Big_int[35],
     big_int_of_int=Big_int[36],
     is_int_big_int=Big_int[37],
     int_of_big_int=Big_int[38],
     int_of_big_int_opt=Big_int[39],
     big_int_of_int32=Big_int[40],
     big_int_of_nativeint=Big_int[41],
     big_int_of_int64=Big_int[42],
     int32_of_big_int=Big_int[43],
     int32_of_big_int_opt=Big_int[44],
     nativeint_of_big_int=Big_int[45],
     nativeint_of_big_int_opt=Big_int[46],
     int64_of_big_int=Big_int[47],
     int64_of_big_int_opt=Big_int[48],
     float_of_big_int=Big_int[49],
     and_big_int=Big_int[50],
     or_big_int=Big_int[51],
     xor_big_int=Big_int[52],
     shift_left_big_int=Big_int[53],
     shift_right_big_int=Big_int[54],
     shift_right_towards_zero_big_i=Big_int[55],
     extract_big_int=Big_int[56],
     nat_of_big_int=Big_int[57],
     big_int_of_nat=Big_int[58],
     base_power_big_int=Big_int[59],
     sys_big_int_of_string=Big_int[60],
     round_futur_last_digit=Big_int[61],
     approx_big_int=Big_int[62],
     round_big_int_to_float=Big_int[63],
     equal$3=Big_int[24],
     compare$3=Big_int[23];
    function pp$3(ppf,p)
     {var _ea_=caml_call1(string_of_big_int,p);
      return caml_call3(Stdlib_format[123],ppf,_t_,_ea_)}
    var
     Utils_Bigint=
      [0,
       equal$3,
       compare$3,
       pp$3,
       string_of_big_int,
       big_int_of_int,
       zero_big_int,
       unit_big_int,
       minus_big_int,
       abs_big_int,
       add_big_int,
       succ_big_int,
       add_int_big_int,
       sub_big_int,
       pred_big_int,
       mult_big_int,
       mult_int_big_int,
       square_big_int,
       sqrt_big_int,
       quomod_big_int,
       div_big_int,
       mod_big_int,
       gcd_big_int,
       power_int_positive_int,
       power_big_int_positive_int,
       power_int_positive_big_int,
       power_big_int_positive_big_int,
       sign_big_int,
       compare_big_int,
       eq_big_int,
       le_big_int,
       ge_big_int,
       lt_big_int,
       gt_big_int,
       max_big_int,
       min_big_int,
       num_digits_big_int,
       num_bits_big_int,
       string_of_big_int,
       big_int_of_string,
       big_int_of_string_opt,
       big_int_of_int,
       is_int_big_int,
       int_of_big_int,
       int_of_big_int_opt,
       big_int_of_int32,
       big_int_of_nativeint,
       big_int_of_int64,
       int32_of_big_int,
       int32_of_big_int_opt,
       nativeint_of_big_int,
       nativeint_of_big_int_opt,
       int64_of_big_int,
       int64_of_big_int_opt,
       float_of_big_int,
       and_big_int,
       or_big_int,
       xor_big_int,
       shift_left_big_int,
       shift_right_big_int,
       shift_right_towards_zero_big_i,
       extract_big_int,
       nat_of_big_int,
       big_int_of_nat,
       base_power_big_int,
       sys_big_int_of_string,
       round_futur_last_digit,
       approx_big_int,
       round_big_int_to_float];
    caml_register_global(297,Utils_Bigint,"Utils__Bigint");
    var on=[0,0],zero=caml_sys_time(0);
    function f(fmt)
     {var now=caml_sys_time(0);
      if(on[1])
       {var
         _d7_=caml_call2(Stdlib[98],fmt,_u_),
         _d8_=caml_call2(Stdlib[98],_v_,_d7_);
        return caml_call2(Stdlib_format[125],_d8_,now - zero)}
      var _d9_=Stdlib_format[106];
      function _d__(_d$_){return 0}
      return caml_call3(Stdlib_format[132],_d__,_d9_,fmt)}
    function p(g){return caml_call2(f(_w_),g,0)}
    function summary(opt,s)
     {if(opt)var sth=opt[1],len=sth;else var len=200;
      try
       {var _d5_=caml_call3(Base_String[1],s,0,len);return _d5_}
      catch(_d6_){return s}}
    function json_getter(x)
     {var null$0=870828711 === x?1:0;
      function get(attr){return caml_call2(Yojson[10][100][7],attr,x)}
      function string(attr)
       {try
         {var _d2_=get(attr),_d3_=caml_call1(Yojson[10][100][21],_d2_);
          return _d3_}
        catch(_d4_)
         {var _d1_=caml_call2(Stdlib[28],cst_Cannot_parse,attr);
          return caml_call1(Stdlib[2],_d1_)}}
      function string_option(attr)
       {var _d0_=get(attr);return caml_call1(Yojson[10][100][22],_d0_)}
      function string_list(attr)
       {var
         _dX_=map(Yojson[10][100][21]),
         _dY_=get(attr),
         _dZ_=caml_call1(Yojson[10][100][20],_dY_);
        return caml_call2(Yojson[10][100][3],_dZ_,_dX_)}
      function int$0(attr)
       {var _dW_=get(attr);return caml_call1(Yojson[10][100][18],_dW_)}
      function bool(attr)
       {var _dV_=get(attr);return caml_call1(Yojson[10][100][12],_dV_)}
      return [0,null$0,get,string,string_option,string_list,int$0,bool]}
    function json_sub(x,attr){return json_getter(caml_call1(x[2],attr))}
    function hexcape(s)
     {var b=caml_call1(Stdlib_buffer[1],caml_ml_string_length(s) * 2 | 0);
      function _dT_(c)
       {var _dU_=caml_call1(Stdlib_buffer[14],b);
        return caml_call1(caml_call2(Stdlib_printf[9],_dU_,fmt),c)}
      caml_call2(Base_String[5],s,_dT_);
      return caml_call1(Stdlib_buffer[2],b)}
    function unhex(s)
     {var
       _dN_=caml_call2(Base_String[98],s,cst_0x),
       s$0=caml_call2(Base_Option[40],_dN_,s),
       length=caml_ml_string_length(s$0) - 2 | 0;
      if(0 === (length % 2 | 0))
       var s$1=s$0,length$0=length;
      else
       var s$1=caml_call2(Stdlib[28],cst_0,s$0),length$0=length + 1 | 0;
      var
       b=
        caml_call1
         (Stdlib_buffer[1],(caml_ml_string_length(s$1) / 2 | 0) + 2 | 0),
       _dO_=0;
      if(! (length$0 < 0))
       {var i=_dO_;
        for(;;)
         {if(0 === (i % 2 | 0))
           {var
             _dP_=
              function(c)
               {var _dS_=caml_call1(Stdlib_char[1],c);
                return caml_call2(Stdlib_buffer[10],b,_dS_)},
             _dQ_=caml_call3(sub,s$1,i,2);
            caml_call3(Stdlib_scanf[4],_dQ_,_x_,_dP_)}
          var _dR_=i + 1 | 0;
          if(length$0 !== i){var i=_dR_;continue}
          break}}
      return caml_call1(Stdlib_buffer[2],b)}
    var Hex=[0,hexcape,unhex];
    function symbol$5(x,y)
     {return caml_call1(Base_Option[36],x)?x:caml_call1(y,0)}
    function memoize(clear_after,f)
     {var cache=caml_call2(Stdlib_hashtbl[1],0,10);
      function f$0(x)
       {var switch$0=0;
        if(clear_after)
         {var n=clear_after[1];
          if(n < caml_call1(Stdlib_hashtbl[15],cache))
           {caml_call1(Stdlib_hashtbl[2],cache);switch$0 = 1}}
        var match=caml_call2(Stdlib_hashtbl[7],cache,x);
        if(match){var y=match[1];return y}
        var y$0=caml_call2(f,f$0,x);
        caml_call3(Stdlib_hashtbl[5],cache,x,y$0);
        return y$0}
      return f$0}
    function pp_with_margin(ppf,n,k,param)
     {var bak=caml_call2(Stdlib_format[42],ppf,0);
      caml_call2(Stdlib_format[36],ppf,0);
      caml_call2(Stdlib_format[40],ppf,n);
      caml_call1(k,0);
      caml_call2(Stdlib_format[36],ppf,0);
      return caml_call2(Stdlib_format[40],ppf,bak)}
    function pp_with_max_indent(ppf,n,k,param)
     {var bak=caml_call2(Stdlib_format[46],ppf,0);
      caml_call2(Stdlib_format[36],ppf,0);
      caml_call2(Stdlib_format[44],ppf,n);
      caml_call1(k,0);
      caml_call2(Stdlib_format[36],ppf,0);
      return caml_call2(Stdlib_format[44],ppf,bak)}
    var equal_json=function _dM_(_dK_,_dL_){return _dM_.fun(_dK_,_dL_)};
    caml_update_dummy
     (equal_json,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_call1(caml_call1(equal$3,lhs0),rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];return lhs0$0 === rhs0$0?1:0}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$1=match[1],lhs0$1=lhs[1];
             return caml_string_equal(lhs0$1,rhs0$1)}
           break;
          case 3:
           if(3 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1],x=lhs0$2,y=rhs0$2;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    _dH_=caml_call1(caml_call1(equal_json,a),b);
                   if(_dH_){var x=x$0,y=y$0;continue}
                   return _dH_}}
               else
                if(! y)return 1;
               return 0}}
           break;
          default:
           if(4 === match[0])
            {var rhs0$3=match[1],lhs0$3=lhs[1],x$1=lhs0$3,y$1=rhs0$3;
             for(;;)
              {if(x$1)
                {if(y$1)
                  {var
                    y$2=y$1[2],
                    b$0=y$1[1],
                    x$2=x$1[2],
                    a$0=x$1[1],
                    rhs1=b$0[2],
                    rhs0$4=b$0[1],
                    lhs1=a$0[2],
                    lhs0$4=a$0[1],
                    _dI_=caml_string_equal(lhs0$4,rhs0$4),
                    _dJ_=_dI_?caml_call1(caml_call1(equal_json,lhs1),rhs1):_dI_;
                   if(_dJ_){var x$1=x$2,y$1=y$2;continue}
                   return _dJ_}}
               else
                if(! y$1)return 1;
               return 0}}}
        return 0});
    var compare_json=function _dG_(_dE_,_dF_){return _dG_.fun(_dE_,_dF_)};
    caml_update_dummy
     (compare_json,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_call1(caml_call1(compare$3,lhs0),rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];
             return caml_int_compare(lhs0$0,rhs0$0)}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$1=match[1],lhs0$1=lhs[1];
             return caml_string_compare(lhs0$1,rhs0$1)}
           break;
          case 3:
           if(3 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1],x=lhs0$2,y=rhs0$2;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    x$1=caml_call1(caml_call1(compare_json,a),b);
                   if(0 === x$1){var x=x$0,y=y$0;continue}
                   return x$1}
                 return 1}
               return y?-1:0}}
           break;
          default:
           if(4 === match[0])
            {var rhs0$3=match[1],lhs0$3=lhs[1],x$2=lhs0$3,y$1=rhs0$3;
             for(;;)
              {if(x$2)
                {if(y$1)
                  {var
                    y$2=y$1[2],
                    b$0=y$1[1],
                    x$3=x$2[2],
                    a$0=x$2[1],
                    rhs1=b$0[2],
                    rhs0$4=b$0[1],
                    lhs1=a$0[2],
                    lhs0$4=a$0[1],
                    x$4=caml_string_compare(lhs0$4,rhs0$4),
                    x$5=
                     0 === x$4?caml_call1(caml_call1(compare_json,lhs1),rhs1):x$4;
                   if(0 === x$5){var x$2=x$3,y$1=y$2;continue}
                   return x$5}
                 return 1}
               return y$1?-1:0}}}
        function to_int(param)
         {switch(param[0])
           {case 0:return 0;
            case 1:return 1;
            case 2:return 2;
            case 3:return 3;
            default:return 4}}
        var _dD_=to_int(match);
        return caml_int_compare(to_int(lhs),_dD_)});
    var
     pp_json=function _dC_(_dA_,_dB_){return _dC_.fun(_dA_,_dB_)},
     show_json=function _dz_(_dy_){return _dz_.fun(_dy_)};
    caml_update_dummy
     (pp_json,
      function(fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_y_);
           pp$3(fmt,a0);
           return caml_call2(Stdlib_format[123],fmt,_z_);
          case 1:
           var a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_A_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_B_),a0$0);
           return caml_call2(Stdlib_format[123],fmt,_C_);
          case 2:
           var a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_D_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_E_),a0$1);
           return caml_call2(Stdlib_format[123],fmt,_F_);
          case 3:
           var a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_G_);
           caml_call2(Stdlib_format[123],fmt,_H_);
           var
            _du_=0,
            _dv_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_I_);
               caml_call1(caml_call1(pp_json,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_dv_,_du_,a0$2);
           caml_call2(Stdlib_format[123],fmt,_J_);
           return caml_call2(Stdlib_format[123],fmt,_K_);
          default:
           var a0$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_L_);
           caml_call2(Stdlib_format[123],fmt,_M_);
           var
            _dw_=0,
            _dx_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_N_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_O_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_P_),a0);
               caml_call2(Stdlib_format[123],fmt,_Q_);
               caml_call1(caml_call1(pp_json,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_R_);
               return 1};
           caml_call3(Stdlib_list[22],_dx_,_dw_,a0$3);
           caml_call2(Stdlib_format[123],fmt,_S_);
           return caml_call2(Stdlib_format[123],fmt,_T_)}});
    caml_update_dummy
     (show_json,
      function(x){return caml_call3(Stdlib_format[127],_U_,pp_json,x)});
    var
     pp_meta=function _dt_(_dq_,_dr_,_ds_){return _dt_.fun(_dq_,_dr_,_ds_)},
     show_meta=function _dp_(_dn_,_do_){return _dp_.fun(_dn_,_do_)};
    caml_update_dummy
     (pp_meta,
      function(poly_a,fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_V_);
           caml_call2(Stdlib_format[123],fmt,_W_);
           var
            _dj_=0,
            _dk_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_X_);
               caml_call1
                (caml_call2
                  (pp_meta,function(fmt){return caml_call1(poly_a,fmt)},fmt),
                 x);
               return 1};
           caml_call3(Stdlib_list[22],_dk_,_dj_,a0);
           caml_call2(Stdlib_format[123],fmt,_Y_);
           return caml_call2(Stdlib_format[123],fmt,_Z_);
          case 1:
           var a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,___);
           caml_call2(Stdlib_format[123],fmt,_$_);
           var
            _dl_=0,
            _dm_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_aa_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_ab_);
               caml_call1(caml_call1(poly_a,fmt),a0);
               caml_call2(Stdlib_format[123],fmt,_ac_);
               caml_call1
                (caml_call2
                  (pp_meta,function(fmt){return caml_call1(poly_a,fmt)},fmt),
                 a1);
               caml_call2(Stdlib_format[123],fmt,_ad_);
               return 1};
           caml_call3(Stdlib_list[22],_dm_,_dl_,a0$0);
           caml_call2(Stdlib_format[123],fmt,_ae_);
           return caml_call2(Stdlib_format[123],fmt,_af_);
          case 2:
           var a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_ag_);
           caml_call1(caml_call1(poly_a,fmt),a0$1);
           return caml_call2(Stdlib_format[123],fmt,_ah_);
          default:
           var a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_ai_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_aj_),a0$2);
           return caml_call2(Stdlib_format[123],fmt,_ak_)}});
    caml_update_dummy
     (show_meta,
      function(poly_a,x)
       {var _di_=caml_call1(pp_meta,poly_a);
        return caml_call3(Stdlib_format[127],_al_,_di_,x)});
    function map_meta(poly_a,param)
     {switch(param[0])
       {case 0:
         var a0=param[1],_de_=function(_dh_){return map_meta(poly_a,_dh_)};
         return [0,caml_call1(caml_call1(Stdlib_list[17],_de_),a0)];
        case 1:
         var
          a0$0=param[1],
          _df_=
           function(param)
            {var a1=param[2],a0=param[1],_dg_=map_meta(poly_a,a1);
             return [0,caml_call1(poly_a,a0),_dg_]};
         return [1,caml_call1(caml_call1(Stdlib_list[17],_df_),a0$0)];
        case 2:var a0$1=param[1];return [2,caml_call1(poly_a,a0$1)];
        default:var a0$2=param[1];return [3,a0$2]}}
    function fold_meta(poly_a,acc,param)
     {switch(param[0])
       {case 0:
         var
          a0=param[1],
          _da_=function(_dc_,_dd_){return fold_meta(poly_a,_dc_,_dd_)};
         return caml_call2(caml_call1(Stdlib_list[22],_da_),acc,a0);
        case 1:
         var
          a0$0=param[1],
          _db_=
           function(acc,param)
            {var a1=param[2],a0=param[1],acc$0=caml_call2(poly_a,acc,a0);
             return fold_meta(poly_a,acc$0,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_db_),acc,a0$0);
        case 2:var a0$1=param[1];return caml_call2(poly_a,acc,a0$1);
        default:return acc}}
    var
     equal_meta=
      function _c$_(_c8_,_c9_,_c__){return _c$_.fun(_c8_,_c9_,_c__)};
    caml_update_dummy
     (equal_meta,
      function(poly_a,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1],x=lhs0,y=rhs0;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    _c5_=
                     caml_call1(caml_call1(caml_call1(equal_meta,poly_a),a),b);
                   if(_c5_){var x=x$0,y=y$0;continue}
                   return _c5_}}
               else
                if(! y)return 1;
               return 0}}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1],x$1=lhs0$0,y$1=rhs0$0;
             for(;;)
              {if(x$1)
                {if(y$1)
                  {var
                    y$2=y$1[2],
                    b$0=y$1[1],
                    x$2=x$1[2],
                    a$0=x$1[1],
                    rhs1=b$0[2],
                    rhs0$1=b$0[1],
                    lhs1=a$0[2],
                    lhs0$1=a$0[1],
                    _c6_=caml_call2(poly_a,lhs0$1,rhs0$1),
                    _c7_=
                     _c6_
                      ?caml_call1
                        (caml_call1(caml_call1(equal_meta,poly_a),lhs1),rhs1)
                      :_c6_;
                   if(_c7_){var x$1=x$2,y$1=y$2;continue}
                   return _c7_}}
               else
                if(! y$1)return 1;
               return 0}}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1];
             return caml_call2(poly_a,lhs0$2,rhs0$2)}
           break;
          default:
           if(3 === match[0])
            {var rhs0$3=match[1],lhs0$3=lhs[1];
             return caml_string_equal(lhs0$3,rhs0$3)}}
        return 0});
    var
     compare_meta=
      function _c4_(_c1_,_c2_,_c3_){return _c4_.fun(_c1_,_c2_,_c3_)};
    caml_update_dummy
     (compare_meta,
      function(poly_a,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1],x=lhs0,y=rhs0;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    x$1=
                     caml_call1(caml_call1(caml_call1(compare_meta,poly_a),a),b);
                   if(0 === x$1){var x=x$0,y=y$0;continue}
                   return x$1}
                 return 1}
               return y?-1:0}}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1],x$2=lhs0$0,y$1=rhs0$0;
             for(;;)
              {if(x$2)
                {if(y$1)
                  {var
                    y$2=y$1[2],
                    b$0=y$1[1],
                    x$3=x$2[2],
                    a$0=x$2[1],
                    rhs1=b$0[2],
                    rhs0$1=b$0[1],
                    lhs1=a$0[2],
                    lhs0$1=a$0[1],
                    x$4=caml_call2(poly_a,lhs0$1,rhs0$1),
                    x$5=
                     0 === x$4
                      ?caml_call1
                        (caml_call1(caml_call1(compare_meta,poly_a),lhs1),rhs1)
                      :x$4;
                   if(0 === x$5){var x$2=x$3,y$1=y$2;continue}
                   return x$5}
                 return 1}
               return y$1?-1:0}}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1];
             return caml_call2(poly_a,lhs0$2,rhs0$2)}
           break;
          default:
           if(3 === match[0])
            {var rhs0$3=match[1],lhs0$3=lhs[1];
             return caml_string_compare(lhs0$3,rhs0$3)}}
        function to_int(param)
         {switch(param[0])
           {case 0:return 0;case 1:return 1;case 2:return 2;default:return 3}}
        var _c0_=to_int(match);
        return caml_int_compare(to_int(lhs),_c0_)});
    function json_to_json(param)
     {switch(param[0])
       {case 0:
         var i=param[1];return [0,-976970511,caml_call1(string_of_big_int,i)];
        case 1:var b=param[1];return [0,737456202,b];
        case 2:var s=param[1];return [0,-976970511,s];
        case 3:
         var xs=param[1];
         return [0,848054398,caml_call1(map(json_to_json),xs)];
        default:
         var fields=param[1];
         return [0,
                 963043957,
                 caml_call1
                  (map
                    (function(param)
                      {var v=param[2],k=param[1];return [0,k,json_to_json(v)]}),
                   fields)]}}
    function pp_json_as_json(opt,_cV_,param,ppf,x)
     {if(opt)var sth=opt[1],margin=sth;else var margin=180;
      if(_cV_)var sth$0=_cV_[1],max_indent=sth$0;else var max_indent=160;
      var _cW_=0;
      function _cX_(param)
       {var _cZ_=json_to_json(x);return caml_call3(Yojson[10][30],0,ppf,_cZ_)}
      return pp_with_margin
              (ppf,
               margin,
               function(_cY_)
                {return pp_with_max_indent(ppf,max_indent,_cX_,_cY_)},
               _cW_)}
    function tic(param)
     {var t0=caml_call1(Unix[99],0);
      return function(msg)
       {var dt=caml_call1(Unix[99],0) - t0;
        return caml_call3(Stdlib_printf[3],_am_,dt * 1000.,msg)}}
    function tictoc(msg,f,x)
     {var toc=tic(0),y=caml_call1(f,x);caml_call1(toc,msg);return y}
    function with_buffer(x)
     {var b=caml_call1(Stdlib_buffer[1],64);
      caml_call1(x,b);
      return caml_call1(Stdlib_buffer[2],b)}
    function buffer_protect(b,p,op,cl,x)
     {return p
              ?(caml_call2(Stdlib_buffer[14],b,op),
                caml_call1(x,0),
                caml_call2(Stdlib_buffer[14],b,cl))
              :caml_call1(x,0)}
    function buffer_concat(b,sep,f,xs)
     {return caml_call2
              (iteri,
               function(i,x)
                {if(0 !== i)caml_call2(Stdlib_buffer[14],b,sep);
                 return caml_call1(f,x)},
               xs)}
    var
     Utils_Misc=
      [0,
       [0,on,p,f,summary],
       json_getter,
       json_sub,
       Hex,
       symbol$5,
       memoize,
       pp_with_max_indent,
       pp_with_margin,
       equal_json,
       compare_json,
       pp_json,
       show_json,
       pp_meta,
       show_meta,
       map_meta,
       fold_meta,
       equal_meta,
       compare_meta,
       pp_json_as_json,
       tic,
       tictoc,
       with_buffer,
       buffer_protect,
       buffer_concat];
    caml_register_global(305,Utils_Misc,"Utils__Misc");
    function read_file(path)
     {var
       i=caml_call1(Stdlib[79],path),
       _cU_=caml_call1(Stdlib[92],i),
       buffer=caml_call1(Stdlib_buffer[1],_cU_),
       b=runtime.caml_create_bytes(1024),
       size=1024;
      for(;;)
       {var r=caml_call4(Stdlib[84],i,b,0,size);
        if(0 !== r){caml_call4(Stdlib_buffer[17],buffer,b,0,r);continue}
        caml_call1(Stdlib[93],i);
        return caml_call1(Stdlib_buffer[2],buffer)}}
    function write_file(path,s)
     {var o=caml_call1(Stdlib[60],path);
      caml_call2(Stdlib[66],o,s);
      return caml_call1(Stdlib[76],o)}
    var Utils_Io=[0,read_file,write_file];
    caml_register_global(306,Utils_Io,"Utils__Io");
    function run(env,cmd,args)
     {var args$0=caml_call1(Stdlib_array[12],[0,cmd,args]);
      function f(param)
       {var v=param[2],k=param[1],_cT_=caml_call2(Stdlib[28],cst$3,v);
        return caml_call2(Stdlib[28],k,_cT_)}
      var
       _cQ_=cata$0(0,map(f),env),
       env$0=caml_call1(Stdlib_array[12],_cQ_),
       _cR_=caml_call1(Unix[4],0),
       env$1=caml_call2(Stdlib_array[5],env$0,_cR_),
       pid=caml_call6(Unix[71],cmd,args$0,env$1,Unix[20],Unix[21],Unix[22]),
       match=caml_call2(Unix[15],0,pid),
       status=match[2],
       pid$0=match[1];
      if(pid === pid$0)
       {if(0 === status[0]){var n$2=status[1];return n$2}
        switch(status[0])
         {case 0:var n=status[1],s=caml_call2(Stdlib_printf[4],_an_,n);break;
          case 1:
           var n$0=status[1],s=caml_call2(Stdlib_printf[4],_ao_,n$0);break;
          default:var n$1=status[1],s=caml_call2(Stdlib_printf[4],_ap_,n$1)}
        var _cS_=caml_call3(Stdlib_printf[4],_aq_,cmd,s);
        return caml_call1(Stdlib[2],_cS_)}
      throw [0,Assert_failure,_ar_]}
    var Utils_Cmd_unix=[0,run];
    caml_register_global(308,Utils_Cmd_unix,"Utils__Cmd_unix");
    function run$0(opt,cmd$0,args$0)
     {if(opt)var sth=opt[1],env$1=sth;else var env$1=0;
      var
       child_process=require("child_process"),
       cmd=caml_jsstring_of_string(cmd$0),
       _cK_=caml_call1(map(caml_jsstring_of_string),args$0),
       args=caml_js_from_array(caml_call1(Stdlib_array[12],_cK_)),
       inh="inherit",
       env0=process.env,
       _cL_=caml_jsstring_of_string,
       _cM_=caml_call1(map(function(_cP_){return map_snd(_cL_,_cP_)}),env$1),
       env$0=runtime.caml_js_object(caml_call1(Stdlib_array[12],_cM_)),
       env=Object.assign({},env0,env$0),
       options={"stdio":caml_js_from_array([0,inh,inh,inh]),"env":env},
       result=child_process.spawnSync(cmd,args,options);
      if(caml_equal(result.error,Js_of_ocaml_Js[1]))
       return caml_call1(Js_of_ocaml_Js[44],result.status);
      var
       _cN_=runtime.caml_string_of_jsstring(result.error.errno),
       _cO_=caml_call2(Stdlib[28],cst_run,_cN_);
      return caml_call1(Stdlib[2],_cO_)}
    var Utils_Cmd_js=[0,run$0];
    caml_register_global(310,Utils_Cmd_js,"Utils__Cmd_js");
    var Utils_Cmd=[0];
    caml_register_global(311,Utils_Cmd,"Utils__Cmd");
    function sha256(s)
     {var _cJ_=caml_call3(Digestif[4][12],0,0,s);
      return caml_call1(Digestif[4][39],_cJ_)}
    function sha512(s)
     {var _cI_=caml_call3(Digestif[6][12],0,0,s);
      return caml_call1(Digestif[6][39],_cI_)}
    var B58_crypto=[0,sha256,sha512],b58_crypto=[0,B58_crypto[1]];
    caml_call1(Digestif[15],[0,32]);
    var static_addresses=_as_.slice(),dynamic_addresses=_at_.slice();
    function build_kt1_address(target)
     {var
       _cF_=caml_call2(make,20,0),
       init=caml_call2(Stdlib[28],contract_hash,_cF_),
       init$0=caml_call1(Stdlib_bytes[5],init),
       current=[0,cst$4],
       current_bin=[0,cst$5],
       i=0;
      a:
      for(;;)
       {var
         set$0=
          function(i)
           {function set(j)
             {return runtime.caml_bytes_set
                      (init$0,i + 3 | 0,caml_call1(Stdlib_char[1],j))}
            return set},
         set=set$0(i),
         ok$0=
          function(set)
           {function ok(j)
             {set(j);
              var
               next=caml_call1(Stdlib_bytes[6],init$0),
               match=caml_call3(Base58[7],0,b58_crypto,next),
               encoded=match[2];
              return runtime.caml_string_lessequal(encoded,target)}
            return ok},
         ok=ok$0(set),
         a=0,
         b=255;
        for(;;)
         {if(1 < (b - a | 0))
           {var b$0=(a + b | 0) / 2 | 0;
            if(ok(b$0)){var a=b$0;continue}
            set(a);
            var b=b$0;
            continue}
          if(ok(b))set(b);else set(a);
          var
           next=caml_call1(Stdlib_bytes[6],init$0),
           match=caml_call3(Base58[7],0,b58_crypto,next),
           encoded=match[2];
          current_bin[1] = next;
          current[1] = encoded;
          var _cH_=i + 1 | 0;
          if(19 !== i){var i=_cH_;continue a}
          var _cG_=caml_call1(Hex[1],current_bin[1]);
          return [0,current[1],_cG_]}}}
    function build_address_of_contract_id(static$0,contract_id)
     {var
       target=
        static$0
         ?caml_call1(Stdlib_printf[4],_au_)
         :caml_call1(Stdlib_printf[4],_av_),
       target$0=caml_call1(target,contract_id),
       target$1=caml_call2(map$4,function(c){return 48 === c?111:c},target$0);
      return build_kt1_address(target$1)}
    function address_of_contract_id(static$0,contract_id,entrypoint)
     {var
       base=
        100 <= contract_id
         ?build_address_of_contract_id(static$0,contract_id)[1]
         :static$0
           ?caml_check_bound(static_addresses,contract_id)[1 + contract_id]
           :caml_check_bound(dynamic_addresses,contract_id)[1 + contract_id],
       entrypoint$0=cata$0(cst$6,caml_call1(Stdlib_printf[4],_aw_),entrypoint);
      return caml_call2(Stdlib[28],base,entrypoint$0)}
    function build_kt1_addresses(n)
     {function build_fake_kt1_address(static$0)
       {var _cD_=0;
        if(! (n < 0))
         {var i=_cD_;
          for(;;)
           {var match=build_address_of_contract_id(static$0,i),kt1=match[1];
            caml_call3(Stdlib_printf[9],Stdlib[46],_ax_,kt1);
            var _cE_=i + 1 | 0;
            if(n !== i){var i=_cE_;continue}
            break}}
        return 0}
      caml_call1(Stdlib[46],cst_let_static_addresses);
      build_fake_kt1_address(1);
      caml_call1(Stdlib[46],cst_let_dynamic_addresses);
      build_fake_kt1_address(0);
      return caml_call1(Stdlib[46],cst$7)}
    function decode(data,data_type,prefix_length)
     {var match$0=caml_call3(sub,data,0,prefix_length),switch$0=0;
      switch(data_type)
       {case 0:
         if(caml_string_notequal(match$0,cst_tz1))
          if(caml_string_notequal(match$0,cst_tz2))
           if(caml_string_notequal(match$0,cst_tz3))
            switch$0 = 1;
           else
            var match$2=[0,cst_02,data,p256_public_key_hash,cst$8];
          else
           var match$2=[0,cst_01,data,secp256k1_public_key_hash,cst$9];
         else
          var match$2=[0,cst_00$1,data,ed25519_public_key_hash,cst$10];
         break;
        case 1:
         if(caml_string_notequal(match$0,cst_SG1))
          switch$0 = 1;
         else
          var match$2=[0,cst$12,data,baker_hash,cst$11];
         break;
        case 2:
         if(caml_string_notequal(match$0,cst_KT1))
          if(caml_string_notequal(match$0,cst_tz1$0))
           if(caml_string_notequal(match$0,cst_tz2$0))
            if(caml_string_notequal(match$0,cst_tz3$0))
             switch$0 = 1;
            else
             var match$2=[0,cst_0002,data,p256_public_key_hash,cst$13];
           else
            var match$2=[0,cst_0001,data,secp256k1_public_key_hash,cst$14];
          else
           var match$2=[0,cst_0000,data,ed25519_public_key_hash,cst$15];
         else
          {var match=caml_call2(Stdlib_string[15],data,37);
           if(match)
            var
             i=match[1],
             address=caml_call3(sub,data,0,i),
             suffix=
              caml_call3
               (sub,
                data,
                i + 1 | 0,
                (caml_ml_string_length(data) - i | 0) - 1 | 0),
             _cB_=caml_call1(Hex[1],suffix),
             match$1=[0,address,caml_call2(Stdlib[28],cst_00,_cB_)];
           else
            var match$1=[0,data,cst_00$0];
           var
            suffix$0=match$1[2],
            address$0=match$1[1],
            match$2=[0,cst_01$0,address$0,contract_hash,suffix$0]}
         break;
        case 3:
         if(caml_string_notequal(match$0,cst_edpk))
          if(caml_string_notequal(match$0,cst_p2pk))
           if(caml_string_notequal(match$0,cst_sppk))
            switch$0 = 1;
           else
            var match$2=[0,cst_01$1,data,secp256k1_public_key,cst$16];
          else
           var match$2=[0,cst_02$0,data,p256_public_key,cst$17];
         else
          var match$2=[0,cst_00$2,data,ed25519_public_key,cst$18];
         break;
        case 4:
         if(caml_string_notequal(match$0,cst_edsig))
          if(caml_string_notequal(match$0,cst_p2sig))
           if(caml_string_notequal(match$0,cst_sig))
            if(caml_string_notequal(match$0,cst_spsig1))
             switch$0 = 1;
            else
             var match$2=[0,cst$20,data,secp256k1_signature,cst$19];
           else
            var match$2=[0,cst$22,data,generic_signature,cst$21];
          else
           var match$2=[0,cst$24,data,p256_signature,cst$23];
         else
          var match$2=[0,cst$26,data,ed25519_signature,cst$25];
         break;
        default:
         if(caml_string_notequal(match$0,cst_ede))
          if(caml_string_notequal(match$0,cst_eds))
           if(caml_string_notequal(match$0,cst_p2e))
            if(caml_string_notequal(match$0,cst_p2s))
             if(caml_string_notequal(match$0,cst_spe))
              if(caml_string_notequal(match$0,cst_spsk))
               switch$0 = 1;
              else
               var match$2=[0,cst$28,data,secp256k1_secret_key,cst$27];
             else
              var
               match$2=
                [0,cst$30,data,secp256k1_encrypted_secret_key,cst$29];
            else
             var match$2=[0,cst$32,data,p256_secret_key,cst$31];
           else
            var match$2=[0,cst$34,data,p256_encrypted_secret_key,cst$33];
          else
           var
            prefix=
             32 === caml_ml_string_length(data)
              ?ed25519_seed
              :ed25519_secret_key,
            match$2=[0,cst$36,data,prefix,cst$35];
         else
          var match$2=[0,cst$38,data,ed25519_encrypted_seed,cst$37]}
      if(switch$0)var match$2=caml_call2(Fmt[11],_ay_,data);
      var
       suffix$1=match$2[4],
       prefix_bytes=match$2[3],
       data_to_decode=match$2[2],
       prefix$0=match$2[1],
       bytes=caml_call3(Base58[9],0,b58_crypto,[0,163344596,data_to_decode]),
       hash=caml_call2(Base_String[98],bytes,prefix_bytes);
      if(hash)
       var h=hash[1],match$3=caml_call2(Hex$0[3],0,h);
      else
       var match$3=caml_call2(Fmt[11],_aB_,data);
      var result=match$3[2],_cC_=caml_call2(Stdlib[28],result,suffix$1);
      return caml_call2(Stdlib[28],prefix$0,_cC_)}
    function encode(data$1,data_type,prefix_length)
     {var
       match=caml_call3(sub,data$1,0,prefix_length),
       data=
        caml_call3
         (sub,
          data$1,
          prefix_length,
          caml_ml_string_length(data$1) - prefix_length | 0),
       switch$0=0;
      switch(data_type)
       {case 0:
         if(caml_string_notequal(match,cst_00$3))
          if(caml_string_notequal(match,cst_01$2))
           if(caml_string_notequal(match,cst_02$1))
            switch$0 = 1;
           else
            var match$0=[0,data,p256_public_key_hash,cst$39];
          else
           var match$0=[0,data,secp256k1_public_key_hash,cst$40];
         else
          var match$0=[0,data,ed25519_public_key_hash,cst$41];
         break;
        case 1:var match$0=[0,data$1,baker_hash,cst$42];break;
        case 2:
         if(caml_string_notequal(match,cst_00$4))
          if(caml_string_notequal(match,cst_01$3))
           switch$0 = 1;
          else
           {var address=caml_call3(sub,data,0,40);
            if(42 < caml_ml_string_length(data))
             var
              _cy_=
               caml_call3(sub,data,42,caml_ml_string_length(data) - 42 | 0),
              _cz_=caml_call1(Hex[2],_cy_),
              suffix=caml_call2(Stdlib[28],cst$43,_cz_);
            else
             var suffix=cst$44;
            var match$0=[0,address,contract_hash,suffix]}
         else
          var
           prefix=caml_call3(sub,data,0,2),
           data$0=caml_call3(sub,data,2,caml_ml_string_length(data) - 2 | 0),
           match$0=
            caml_string_notequal(prefix,cst_00$5)
             ?caml_string_notequal(prefix,cst_01$4)
               ?caml_string_notequal(prefix,cst_02$2)
                 ?caml_call2(Fmt[11],_aA_,data$1)
                 :[0,data$0,p256_public_key_hash,cst$45]
               :[0,data$0,secp256k1_public_key_hash,cst$46]
             :[0,data$0,ed25519_public_key_hash,cst$47];
         break;
        case 3:
         if(caml_string_notequal(match,cst_00$6))
          if(caml_string_notequal(match,cst_01$5))
           if(caml_string_notequal(match,cst_02$3))
            switch$0 = 1;
           else
            var match$0=[0,data,p256_public_key,cst$48];
          else
           var match$0=[0,data,secp256k1_public_key,cst$49];
         else
          var match$0=[0,data,ed25519_public_key,cst$50];
         break;
        case 4:var match$0=[0,data,generic_signature,cst$51];break;
        default:switch$0 = 1}
      if(switch$0)var match$0=caml_call2(Fmt[11],_az_,data$1);
      var
       suffix$0=match$0[3],
       prefix_bytes=match$0[2],
       data_to_encode=match$0[1],
       _cA_=caml_call1(Hex[2],data_to_encode),
       bytes=caml_call2(Stdlib[28],prefix_bytes,_cA_),
       match$1=caml_call3(Base58[7],0,b58_crypto,bytes),
       encoded=match$1[2];
      return caml_call2(Stdlib[28],encoded,suffix$0)}
    function decode_to_hex(data)
     {var _cx_=caml_call3(Base58[9],0,b58_crypto,[0,163344596,data]);
      return caml_call1(Hex[1],_cx_)}
    function decode_secret_key(data){return decode(data,5,3)}
    function decode_key_hash(data){return decode(data,0,3)}
    function decode_baker_hash(data){return decode(data,1,3)}
    function decode_address(data){return decode(data,2,3)}
    function decode_key(data){return decode(data,3,4)}
    function decode_signature(data)
     {var match=caml_call3(sub,data,0,3);
      return caml_string_notequal(match,cst_sig$0)
              ?caml_string_notequal(match,cst_sps)
                ?decode(data,4,5)
                :decode(data,4,6)
              :decode(data,4,3)}
    function encode_by_prefix(prefix,data)
     {var
       _cw_=caml_call1(Hex[2],data),
       bytes=caml_call2(Stdlib[28],prefix,_cw_),
       match=caml_call3(Base58[7],0,b58_crypto,bytes),
       encoded=match[2];
      return encoded}
    function encode_hex(data)
     {var
       bytes=caml_call1(Hex[2],data),
       match=caml_call3(Base58[7],0,b58_crypto,bytes),
       encoded=match[2];
      return encoded}
    function encode_key_hash(data){return encode(data,0,2)}
    function encode_baker_hash(data){return encode(data,1,2)}
    function encode_address(data){return encode(data,2,2)}
    function encode_key(data){return encode(data,3,2)}
    function encode_signature(data){return encode(data,4,0)}
    var
     Utils_Bs58=
      [0,
       B58_crypto,
       [0,
        block_hash,
        operation_hash,
        operation_list_hash,
        operation_list_list_hash,
        protocol_hash,
        context_hash,
        block_metadata_hash,
        operation_metadata_hash,
        operation_metadata_list_hash,
        operation_metadata_list_list_h,
        ed25519_public_key_hash,
        secp256k1_public_key_hash,
        p256_public_key_hash,
        cryptobox_public_key_hash,
        ed25519_seed,
        ed25519_public_key,
        ed25519_secret_key,
        ed25519_signature,
        secp256k1_public_key,
        secp256k1_secret_key,
        secp256k1_signature,
        p256_public_key,
        p256_secret_key,
        p256_signature,
        ed25519_encrypted_seed,
        secp256k1_encrypted_secret_key,
        p256_encrypted_secret_key,
        generic_signature,
        chain_id,
        script_expr_hash,
        contract_hash,
        secp256k1_element,
        secp256k1_scalar,
        sapling_spending_key,
        sapling_address],
       build_kt1_address,
       address_of_contract_id,
       decode_secret_key,
       decode_key_hash,
       decode_baker_hash,
       decode_address,
       decode_key,
       decode_signature,
       encode_by_prefix,
       encode_key_hash,
       encode_baker_hash,
       encode_address,
       encode_key,
       encode_signature,
       build_kt1_addresses,
       encode_hex,
       decode_to_hex];
    caml_register_global(317,Utils_Bs58,"Utils__Bs58");
    var
     equal$4=
      function _cv_(_cs_,_ct_,_cu_){return _cv_.fun(_cs_,_ct_,_cu_)};
    caml_update_dummy
     (equal$4,
      function(poly_a,lhs,match)
       {if(0 === lhs[0])
         {var _co_=lhs[1];
          if(0 === match[0])
           {var rhs0=match[1];return caml_call2(poly_a,_co_,rhs0)}}
        else
         {var _cp_=lhs[2],_cq_=lhs[1];
          if(0 !== match[0])
           {var
             rhs1=match[2],
             rhs0$0=match[1],
             _cr_=
              caml_call1(caml_call1(caml_call1(equal$4,poly_a),_cq_),rhs0$0);
            return _cr_
                    ?caml_call1
                      (caml_call1(caml_call1(equal$4,poly_a),_cp_),rhs1)
                    :_cr_}}
        return 0});
    var
     compare$4=
      function _cn_(_ck_,_cl_,_cm_){return _cn_.fun(_ck_,_cl_,_cm_)};
    caml_update_dummy
     (compare$4,
      function(poly_a,lhs,match)
       {if(0 === lhs[0])
         {var _cg_=lhs[1];
          if(0 === match[0])
           {var rhs0=match[1];return caml_call2(poly_a,_cg_,rhs0)}}
        else
         {var _ci_=lhs[2],_cj_=lhs[1];
          if(0 !== match[0])
           {var
             rhs1=match[2],
             rhs0$0=match[1],
             x=
              caml_call1(caml_call1(caml_call1(compare$4,poly_a),_cj_),rhs0$0);
            return 0 === x
                    ?caml_call1
                      (caml_call1(caml_call1(compare$4,poly_a),_ci_),rhs1)
                    :x}}
        function to_int(param){return 0 === param[0]?0:1}
        var _ch_=to_int(match);
        return caml_int_compare(to_int(lhs),_ch_)});
    var
     pp$4=function _cf_(_cc_,_cd_,_ce_){return _cf_.fun(_cc_,_cd_,_ce_)},
     show$2=function _cb_(_b$_,_ca_){return _cb_.fun(_b$_,_ca_)};
    caml_update_dummy
     (pp$4,
      function(poly_a,fmt,param)
       {if(0 === param[0])
         {var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_aC_);
          caml_call1(caml_call1(poly_a,fmt),a0);
          return caml_call2(Stdlib_format[123],fmt,_aD_)}
        var a1=param[2],a0$0=param[1];
        caml_call2(Stdlib_format[123],fmt,_aE_);
        caml_call1
         (caml_call2(pp$4,function(fmt){return caml_call1(poly_a,fmt)},fmt),
          a0$0);
        caml_call2(Stdlib_format[123],fmt,_aF_);
        caml_call1
         (caml_call2(pp$4,function(fmt){return caml_call1(poly_a,fmt)},fmt),
          a1);
        return caml_call2(Stdlib_format[123],fmt,_aG_)});
    caml_update_dummy
     (show$2,
      function(poly_a,x)
       {var _b__=caml_call1(pp$4,poly_a);
        return caml_call3(Stdlib_format[127],_aH_,_b__,x)});
    function map$5(poly_a,param)
     {if(0 === param[0]){var a0=param[1];return [0,caml_call1(poly_a,a0)]}
      var a1=param[2],a0$0=param[1],_b9_=map$5(poly_a,a1);
      return [1,map$5(poly_a,a0$0),_b9_]}
    function fold$0(poly_a,acc,param)
     {var acc$0=acc,param$0=param;
      for(;;)
       {if(0 === param$0[0])
         {var a0=param$0[1];return caml_call2(poly_a,acc$0,a0)}
        var
         a1=param$0[2],
         a0$0=param$0[1],
         acc$1=fold$0(poly_a,acc$0,a0$0),
         acc$0=acc$1,
         param$0=a1;
        continue}}
    function cata$1(l,n,param)
     {if(0 === param[0]){var x=param[1];return caml_call1(l,x)}
      var t2=param[2],t1=param[1],_b8_=cata$1(l,n,t2);
      return caml_call2(n,cata$1(l,n,t1),_b8_)}
    function size(t)
     {function _b5_(_b7_,_b6_){return _b7_ + _b6_ | 0}
      return cata$1(function(param){return 1},_b5_,t)}
    function return$3(x){return [0,x]}
    function apply$3(param)
     {if(0 === param[0]){var f=param[1];return function(x){return map$5(f,x)}}
      var f2=param[2],f1=param[1];
      return function(x)
       {var _b4_=caml_call1(apply$3(f2),x);
        return [1,caml_call1(apply$3(f1),x),_b4_]}}
    function bind$3(param)
     {if(0 === param[0])
       {var x=param[1];return function(f){return caml_call1(f,x)}}
      var t2=param[2],t1=param[1];
      return function(f)
       {var _b3_=caml_call1(bind$3(t2),f);
        return [1,caml_call1(bind$3(t1),f),_b3_]}}
    var
     include$2=Monad([0,map$5,return$3,apply$3,bind$3]),
     bind$4=include$2[1],
     return$4=include$2[2],
     apply$4=include$2[3],
     map$6=include$2[4],
     symbol$6=include$2[5],
     let$4=include$2[6],
     and$4=include$2[7],
     Applicative_syntax$1=include$2[8],
     symbol$7=include$2[9],
     void$2=include$2[10],
     when$1=include$2[11],
     when_some$1=include$2[12],
     map_option$1=include$2[14],
     map_list$1=include$2[15],
     iter_list$1=include$2[16],
     map2_list$1=include$2[17],
     iter2_list$1=include$2[18],
     sequence_list$1=include$2[19],
     sequence_option$1=include$2[20],
     sequence_fst$1=include$2[21],
     sequence_snd$1=include$2[22],
     sequence_pair$1=include$2[23],
     let$5=include$2[24],
     and$5=include$2[25],
     Monad_syntax$1=include$2[26],
     symbol_bind$1=include$2[27],
     symbol$8=include$2[28],
     join$1=include$2[29],
     bind2$1=include$2[30],
     unless$1=include$2[31];
    function leaf(x){return [0,x]}
    function node(t1,t2){return [1,t1,t2]}
    function to_list$0(param)
     {if(0 === param[0]){var x=param[1];return [0,x,0]}
      var t2=param[2],t1=param[1],_b1_=to_list$0(t2),_b2_=to_list$0(t1);
      return caml_call2(Stdlib[37],_b2_,_b1_)}
    function fold1(f,param)
     {if(0 === param[0]){var x=param[1];return x}
      var y=param[2],x$0=param[1],_b0_=fold1(f,y);
      return caml_call2(f,fold1(f,x$0),_b0_)}
    function map_accum(f,s,param)
     {if(0 === param[0])
       {var x=param[1],match=caml_call2(f,s,x),y=match[2],s$0=match[1];
        return [0,s$0,[0,y]]}
      var
       y$0=param[2],
       x$0=param[1],
       match$0=map_accum(f,s,x$0),
       x$1=match$0[2],
       s$1=match$0[1],
       match$1=map_accum(f,s$1,y$0),
       y$1=match$1[2],
       s$2=match$1[1];
      return [0,s$2,[1,x$1,y$1]]}
    function right_comb(param)
     {if(param)
       {var _bZ_=param[1];
        if(param[2]){var xs=param[2];return [1,[0,_bZ_],right_comb(xs)]}
        return [0,_bZ_]}
      return caml_call1(Stdlib[2],cst_of_right_comb_empty_list)}
    function is_right_comb(param)
     {var param$0=param;
      for(;;)
       {if(0 === param$0[0])return 1;
        if(0 === param$0[1][0])
         {var param$1=param$0[2],param$0=param$1;continue}
        return 0}}
    function print(sep,pp)
     {function f(protect,ppf,param)
       {if(0 === param[0])
         {var x=param[1];return caml_call4(Stdlib_format[123],ppf,_aI_,pp,x)}
        var r2=param[2],r1=param[1];
        function r(ppf)
         {var _bR_=1;
          function _bS_(_bX_,_bY_){return f(_bR_,_bX_,_bY_)}
          var _bT_=1;
          function _bU_(_bV_,_bW_){return f(_bT_,_bV_,_bW_)}
          return caml_call7(Stdlib_format[123],ppf,_aJ_,_bU_,r1,sep,_bS_,r2)}
        return protect
                ?caml_call3(Stdlib_format[123],ppf,_aK_,r)
                :caml_call3(Stdlib_format[123],ppf,_aL_,r)}
      var _bO_=0;
      return function(_bP_,_bQ_){return f(_bO_,_bP_,_bQ_)}}
    function map_some$0(f,param)
     {if(0 === param[0])
       {var x=param[1];return caml_call2(map$3,leaf,caml_call1(f,x))}
      var
       t2=param[2],
       t1=param[1],
       match=map_some$0(f,t1),
       match$0=map_some$0(f,t2);
      if(match)
       {var _bN_=match[1];
        if(match$0){var y=match$0[1];return [0,[1,_bN_,y]]}
        return [0,_bN_]}
      return match$0}
    function filter$0(f,x)
     {return map_some$0(function(x){return caml_call1(f,x)?[0,x]:0},x)}
    function matches(x,match)
     {if(0 === x[0]){var x$0=x[1];return [0,[0,[0,x$0,match]]]}
      var _bK_=x[2],_bL_=x[1];
      if(0 === match[0])return 0;
      var u2=match[2],u1=match[1],_bM_=matches(_bK_,u2);
      return caml_call2
              (symbol$3,caml_call2(symbol$2,node,matches(_bL_,u1)),_bM_)}
    function common(t,match)
     {if(1 === t[0])
       {var _bH_=t[2],_bI_=t[1];
        if(0 !== match[0])
         {var u2=match[2],u1=match[1],_bJ_=common(_bH_,u2);
          return [1,common(_bI_,u1),_bJ_]}}
      return [0,[0,t,match]]}
    function common3(t,u,match)
     {if(1 === t[0])
       {var _bC_=t[2],_bD_=t[1];
        if(0 !== u[0])
         {var _bE_=u[2],_bF_=u[1];
          if(0 !== match[0])
           {var v2=match[2],v1=match[1],_bG_=common3(_bC_,_bE_,v2);
            return [1,common3(_bD_,_bF_,v1),_bG_]}}}
      return [0,[0,t,u,match]]}
    function same_shape(x,y)
     {var x$0=x,y$0=y;
      for(;;)
       {if(0 === x$0[0])
         {if(0 === y$0[0])return 1}
        else
         {var _bz_=x$0[2],_bA_=x$0[1];
          if(0 !== y$0[0])
           {var u2=y$0[2],u1=y$0[1],_bB_=same_shape(_bA_,u1);
            if(_bB_){var x$0=_bz_,y$0=u2;continue}
            return _bB_}}
        return 0}}
    function map2$3(f,x,match)
     {if(0 === x[0])
       {var _bv_=x[1];
        if(0 === match[0]){var y=match[1];return [0,caml_call2(f,_bv_,y)]}}
      else
       {var _bw_=x[2],_bx_=x[1];
        if(0 !== match[0])
         {var u2=match[2],u1=match[1],_by_=map2$3(f,_bw_,u2);
          return [1,map2$3(f,_bx_,u1),_by_]}}
      return caml_call1(Stdlib[2],cst_Binary_tree_map2_differing)}
    function for_all$0(f,param)
     {var param$0=param;
      for(;;)
       {if(0 === param$0[0]){var x=param$0[1];return caml_call1(f,x)}
        var t2=param$0[2],t1=param$0[1],_bu_=for_all$0(f,t1);
        if(_bu_){var param$0=t2;continue}
        return _bu_}}
    function exists$0(f,param)
     {var param$0=param;
      for(;;)
       {if(0 === param$0[0]){var x=param$0[1];return caml_call1(f,x)}
        var t2=param$0[2],t1=param$0[1],_bt_=exists$0(f,t1);
        if(_bt_)return _bt_;
        var param$0=t2;
        continue}}
    function Traversable(A)
     {function map(f,param)
       {if(0 === param[0])
         {var x=param[1],_bp_=caml_call1(f,x);
          return caml_call2(A[4],leaf,_bp_)}
        var
         r2=param[2],
         r1=param[1],
         _bq_=map(f,r2),
         _br_=map(f,r1),
         _bs_=caml_call2(A[4],node,_br_);
        return caml_call2(A[8],_bs_,_bq_)}
      function sequence(param)
       {if(0 === param[0]){var x=param[1];return caml_call2(A[4],leaf,x)}
        var
         r2=param[2],
         r1=param[1],
         _bm_=sequence(r2),
         _bn_=sequence(r1),
         _bo_=caml_call2(A[4],node,_bn_);
        return caml_call2(A[8],_bo_,_bm_)}
      return [0,map,sequence]}
    var
     equal_context=
      function _bl_(_bi_,_bj_,_bk_){return _bl_.fun(_bi_,_bj_,_bk_)};
    caml_update_dummy
     (equal_context,
      function(poly_a,lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 1}
        else
         if(0 === lhs[0])
          {var _bc_=lhs[2],_bd_=lhs[1];
           if(typeof match !== "number" && 1 !== match[0])
            {var
              rhs1=match[2],
              rhs0=match[1],
              _be_=
               caml_call1
                (caml_call1(caml_call1(equal_context,poly_a),_bd_),rhs0);
             return _be_
                     ?caml_call1
                       (caml_call1(caml_call1(equal$4,poly_a),_bc_),rhs1)
                     :_be_}}
         else
          {var _bf_=lhs[2],_bg_=lhs[1];
           if(typeof match !== "number" && 0 !== match[0])
            {var
              rhs1$0=match[2],
              rhs0$0=match[1],
              _bh_=
               caml_call1(caml_call1(caml_call1(equal$4,poly_a),_bg_),rhs0$0);
             return _bh_
                     ?caml_call1
                       (caml_call1(caml_call1(equal_context,poly_a),_bf_),rhs1$0)
                     :_bh_}}
        return 0});
    var
     pp_context=function _bb_(_a__,_a$_,_ba_){return _bb_.fun(_a__,_a$_,_ba_)},
     show_context=function _a9_(_a7_,_a8_){return _a9_.fun(_a7_,_a8_)};
    caml_update_dummy
     (pp_context,
      function(poly_a,fmt,param)
       {if(typeof param === "number")
         return caml_call2(Stdlib_format[13],fmt,cst_Hole);
        else
         {if(0 === param[0])
           {var a1=param[2],a0=param[1];
            caml_call2(Stdlib_format[123],fmt,_aM_);
            caml_call1
             (caml_call2
               (pp_context,function(fmt){return caml_call1(poly_a,fmt)},fmt),
              a0);
            caml_call2(Stdlib_format[123],fmt,_aN_);
            caml_call1
             (caml_call2
               (pp$4,function(fmt){return caml_call1(poly_a,fmt)},fmt),
              a1);
            return caml_call2(Stdlib_format[123],fmt,_aO_)}
          var a1$0=param[2],a0$0=param[1];
          caml_call2(Stdlib_format[123],fmt,_aP_);
          caml_call1
           (caml_call2(pp$4,function(fmt){return caml_call1(poly_a,fmt)},fmt),
            a0$0);
          caml_call2(Stdlib_format[123],fmt,_aQ_);
          caml_call1
           (caml_call2
             (pp_context,function(fmt){return caml_call1(poly_a,fmt)},fmt),
            a1$0);
          return caml_call2(Stdlib_format[123],fmt,_aR_)}});
    caml_update_dummy
     (show_context,
      function(poly_a,x)
       {var _a6_=caml_call1(pp_context,poly_a);
        return caml_call3(Stdlib_format[127],_aS_,_a6_,x)});
    function map_context(poly_a,param)
     {if(typeof param === "number")
       return 0;
      else
       {if(0 === param[0])
         {var
           a1=param[2],
           a0=param[1],
           _a4_=caml_call1(caml_call1(map$6,poly_a),a1);
          return [0,map_context(poly_a,a0),_a4_]}
        var a1$0=param[2],a0$0=param[1],_a5_=map_context(poly_a,a1$0);
        return [1,caml_call1(caml_call1(map$6,poly_a),a0$0),_a5_]}}
    function find_leaf(p,param)
     {if(0 === param[0]){var x=param[1];return caml_call1(p,x)?[0,[0,x,0]]:0}
      var t2=param[2],t1=param[1],match=find_leaf(p,t1);
      if(match)
       {var match$0=match[1],ctxt=match$0[2],l=match$0[1];
        return [0,[0,l,[0,ctxt,t2]]]}
      var match$1=find_leaf(p,t2);
      if(match$1)
       {var match$2=match$1[1],x$0=match$2[2],l$0=match$2[1];
        return [0,[0,l$0,[1,t1,x$0]]]}
      return 0}
    function fill$0(x,param)
     {if(typeof param === "number")
       return x;
      else
       {if(0 === param[0]){var t=param[2],c=param[1];return [1,fill$0(x,c),t]}
        var c$0=param[2],t$0=param[1];
        return [1,t$0,fill$0(x,c$0)]}}
    function context_cata(h,l,r,param)
     {if(typeof param === "number")
       return h;
      else
       {if(0 === param[0])
         {var t=param[2],c=param[1];
          return caml_call2(l,context_cata(h,l,r,c),t)}
        var c$0=param[2],t$0=param[1];
        return caml_call2(r,t$0,context_cata(h,l,r,c$0))}}
    var equal$5=function _a3_(_a1_,_a2_){return _a3_.fun(_a1_,_a2_)};
    caml_update_dummy
     (equal$5,
      function(poly_a,x)
       {return caml_call1(caml_call1(equal_context,poly_a),x)});
    var
     pp$5=function _a0_(_aY_,_aZ_){return _a0_.fun(_aY_,_aZ_)},
     show$3=function _aX_(_aV_,_aW_){return _aX_.fun(_aV_,_aW_)};
    caml_update_dummy
     (pp$5,
      function(poly_a,fmt)
       {return caml_call2
                (pp_context,function(fmt){return caml_call1(poly_a,fmt)},fmt)});
    caml_update_dummy
     (show$3,
      function(poly_a,x)
       {var _aU_=caml_call1(pp$5,poly_a);
        return caml_call3(Stdlib_format[127],_aT_,_aU_,x)});
    var
     include$3=Functor([0,map_context]),
     map$7=include$3[1],
     Utils_Binary_tree=
      [0,
       equal$4,
       compare$4,
       pp$4,
       show$2,
       fold$0,
       cata$1,
       size,
       bind$4,
       return$4,
       apply$4,
       map$6,
       symbol$6,
       let$4,
       and$4,
       Applicative_syntax$1,
       symbol$7,
       void$2,
       when$1,
       when_some$1,
       map_option$1,
       map_list$1,
       iter_list$1,
       map2_list$1,
       iter2_list$1,
       sequence_list$1,
       sequence_option$1,
       sequence_fst$1,
       sequence_snd$1,
       sequence_pair$1,
       let$5,
       and$5,
       Monad_syntax$1,
       symbol_bind$1,
       symbol$8,
       join$1,
       bind2$1,
       unless$1,
       leaf,
       node,
       print,
       to_list$0,
       fold1,
       map_accum,
       right_comb,
       is_right_comb,
       map_some$0,
       filter$0,
       matches,
       common,
       common3,
       same_shape,
       map2$3,
       for_all$0,
       exists$0,
       Traversable,
       equal_context,
       pp_context,
       show_context,
       map_context,
       fill$0,
       find_leaf,
       context_cata,
       [0,equal$5,pp$5,show$3,map$7]];
    caml_register_global(318,Utils_Binary_tree,"Utils__Binary_tree");
    return}
  (function(){return this}()));


//# 1 "../michelson_base/.michelson_base.objs/michelson_base.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_int_compare=runtime.caml_int_compare,
     caml_register_global=runtime.caml_register_global,
     caml_string_compare=runtime.caml_string_compare,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_update_dummy=runtime.caml_update_dummy;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Some=caml_string_of_jsbytes("(Some "),
     cst=caml_string_of_jsbytes(")"),
     cst_None=caml_string_of_jsbytes("None"),
     cst_Sender=caml_string_of_jsbytes("Sender"),
     cst_Source=caml_string_of_jsbytes("Source"),
     cst_Amount=caml_string_of_jsbytes("Amount"),
     cst_Balance=caml_string_of_jsbytes("Balance"),
     cst_Now=caml_string_of_jsbytes("Now"),
     cst_Self_address=caml_string_of_jsbytes("Self_address"),
     cst_Chain_id=caml_string_of_jsbytes("Chain_id"),
     cst_Total_voting_power=caml_string_of_jsbytes("Total_voting_power"),
     cst_Unit=caml_string_of_jsbytes("Unit_"),
     cst_memo=caml_string_of_jsbytes("memo"),
     cst_Some$6=caml_string_of_jsbytes("(Some "),
     cst$5=caml_string_of_jsbytes(")"),
     cst_None$5=caml_string_of_jsbytes("None"),
     cst_Some$5=caml_string_of_jsbytes("(Some "),
     cst$4=caml_string_of_jsbytes(")"),
     cst_None$4=caml_string_of_jsbytes("None"),
     cst_Some$4=caml_string_of_jsbytes("(Some "),
     cst$3=caml_string_of_jsbytes(")"),
     cst_None$3=caml_string_of_jsbytes("None"),
     cst_Some$3=caml_string_of_jsbytes("(Some "),
     cst$2=caml_string_of_jsbytes(")"),
     cst_None$2=caml_string_of_jsbytes("None"),
     cst_Some$2=caml_string_of_jsbytes("(Some "),
     cst$1=caml_string_of_jsbytes(")"),
     cst_None$1=caml_string_of_jsbytes("None"),
     cst_Some$1=caml_string_of_jsbytes("(Some "),
     cst$0=caml_string_of_jsbytes(")"),
     cst_None$0=caml_string_of_jsbytes("None"),
     cst_Car=caml_string_of_jsbytes("Car"),
     cst_Cdr=caml_string_of_jsbytes("Cdr"),
     cst_Some$0=caml_string_of_jsbytes("Some_"),
     cst_Eq=caml_string_of_jsbytes("Eq"),
     cst_Abs=caml_string_of_jsbytes("Abs"),
     cst_Neg=caml_string_of_jsbytes("Neg"),
     cst_Int=caml_string_of_jsbytes("Int"),
     cst_IsNat=caml_string_of_jsbytes("IsNat"),
     cst_Neq=caml_string_of_jsbytes("Neq"),
     cst_Le=caml_string_of_jsbytes("Le"),
     cst_Lt=caml_string_of_jsbytes("Lt"),
     cst_Ge=caml_string_of_jsbytes("Ge"),
     cst_Gt=caml_string_of_jsbytes("Gt"),
     cst_Not=caml_string_of_jsbytes("Not"),
     cst_Concat1=caml_string_of_jsbytes("Concat1"),
     cst_Size=caml_string_of_jsbytes("Size"),
     cst_Address=caml_string_of_jsbytes("Address"),
     cst_Implicit_account=caml_string_of_jsbytes("Implicit_account"),
     cst_Pack=caml_string_of_jsbytes("Pack"),
     cst_Hash_key=caml_string_of_jsbytes("Hash_key"),
     cst_Blake2b=caml_string_of_jsbytes("Blake2b"),
     cst_Sha256=caml_string_of_jsbytes("Sha256"),
     cst_Sha512=caml_string_of_jsbytes("Sha512"),
     cst_Keccak=caml_string_of_jsbytes("Keccak"),
     cst_Sha3=caml_string_of_jsbytes("Sha3"),
     cst_Set_delegate=caml_string_of_jsbytes("Set_delegate"),
     cst_Read_ticket=caml_string_of_jsbytes("Read_ticket"),
     cst_Join_tickets=caml_string_of_jsbytes("Join_tickets"),
     cst_Pairing_check=caml_string_of_jsbytes("Pairing_check"),
     cst_Voting_power=caml_string_of_jsbytes("Voting_power"),
     cst_Never=caml_string_of_jsbytes("Never"),
     cst_Failwith=caml_string_of_jsbytes("Failwith"),
     cst_Some$8=caml_string_of_jsbytes("(Some "),
     cst$7=caml_string_of_jsbytes(")"),
     cst_None$7=caml_string_of_jsbytes("None"),
     cst_Some$7=caml_string_of_jsbytes("(Some "),
     cst$6=caml_string_of_jsbytes(")"),
     cst_None$6=caml_string_of_jsbytes("None"),
     cst_Add=caml_string_of_jsbytes("Add"),
     cst_Mul=caml_string_of_jsbytes("Mul"),
     cst_Sub=caml_string_of_jsbytes("Sub"),
     cst_Lsr=caml_string_of_jsbytes("Lsr"),
     cst_Lsl=caml_string_of_jsbytes("Lsl"),
     cst_Xor=caml_string_of_jsbytes("Xor"),
     cst_Ediv=caml_string_of_jsbytes("Ediv"),
     cst_And=caml_string_of_jsbytes("And"),
     cst_Or=caml_string_of_jsbytes("Or"),
     cst_Cons=caml_string_of_jsbytes("Cons"),
     cst_Compare=caml_string_of_jsbytes("Compare"),
     cst_Concat2=caml_string_of_jsbytes("Concat2"),
     cst_Get=caml_string_of_jsbytes("Get"),
     cst_Mem=caml_string_of_jsbytes("Mem"),
     cst_Exec=caml_string_of_jsbytes("Exec"),
     cst_Apply=caml_string_of_jsbytes("Apply"),
     cst_Sapling_verify_update=caml_string_of_jsbytes("Sapling_verify_update"),
     cst_Ticket=caml_string_of_jsbytes("Ticket"),
     cst_Split_ticket=caml_string_of_jsbytes("Split_ticket"),
     cst_Slice=caml_string_of_jsbytes("Slice"),
     cst_Update=caml_string_of_jsbytes("Update"),
     cst_Get_and_update=caml_string_of_jsbytes("Get_and_update"),
     cst_Transfer_tokens=caml_string_of_jsbytes("Transfer_tokens"),
     cst_Check_signature=caml_string_of_jsbytes("Check_signature"),
     cst_T_unit=caml_string_of_jsbytes("T_unit"),
     cst_T_bool=caml_string_of_jsbytes("T_bool"),
     cst_T_nat=caml_string_of_jsbytes("T_nat"),
     cst_T_int=caml_string_of_jsbytes("T_int"),
     cst_T_mutez=caml_string_of_jsbytes("T_mutez"),
     cst_T_string=caml_string_of_jsbytes("T_string"),
     cst_T_bytes=caml_string_of_jsbytes("T_bytes"),
     cst_T_chain_id=caml_string_of_jsbytes("T_chain_id"),
     cst_T_timestamp=caml_string_of_jsbytes("T_timestamp"),
     cst_T_address=caml_string_of_jsbytes("T_address"),
     cst_T_key=caml_string_of_jsbytes("T_key"),
     cst_T_key_hash=caml_string_of_jsbytes("T_key_hash"),
     cst_T_baker_hash=caml_string_of_jsbytes("T_baker_hash"),
     cst_T_signature=caml_string_of_jsbytes("T_signature"),
     cst_T_operation=caml_string_of_jsbytes("T_operation"),
     cst_T_never=caml_string_of_jsbytes("T_never"),
     cst_T_bls12_381_g1=caml_string_of_jsbytes("T_bls12_381_g1"),
     cst_T_bls12_381_g2=caml_string_of_jsbytes("T_bls12_381_g2"),
     cst_T_bls12_381_fr=caml_string_of_jsbytes("T_bls12_381_fr"),
     cst_memo$0=caml_string_of_jsbytes("memo"),
     cst_memo$1=caml_string_of_jsbytes("memo"),
     cst_T_option=caml_string_of_jsbytes("T_option"),
     cst_T_list=caml_string_of_jsbytes("T_list"),
     cst_T_set=caml_string_of_jsbytes("T_set"),
     cst_T_contract=caml_string_of_jsbytes("T_contract"),
     cst_T_ticket=caml_string_of_jsbytes("T_ticket"),
     cst_Some$12=caml_string_of_jsbytes("(Some "),
     cst$11=caml_string_of_jsbytes(")"),
     cst_None$11=caml_string_of_jsbytes("None"),
     cst_Some$11=caml_string_of_jsbytes("(Some "),
     cst$10=caml_string_of_jsbytes(")"),
     cst_None$10=caml_string_of_jsbytes("None"),
     cst_Some$10=caml_string_of_jsbytes("(Some "),
     cst$9=caml_string_of_jsbytes(")"),
     cst_None$9=caml_string_of_jsbytes("None"),
     cst_Some$9=caml_string_of_jsbytes("(Some "),
     cst$8=caml_string_of_jsbytes(")"),
     cst_None$8=caml_string_of_jsbytes("None"),
     cst_T_lambda=caml_string_of_jsbytes("T_lambda"),
     cst_T_map=caml_string_of_jsbytes("T_map"),
     cst_T_big_map=caml_string_of_jsbytes("T_big_map"),
     cst_annot_fst=caml_string_of_jsbytes("annot_fst"),
     cst_annot_snd=caml_string_of_jsbytes("annot_snd"),
     cst_annot_left=caml_string_of_jsbytes("annot_left"),
     cst_annot_right=caml_string_of_jsbytes("annot_right"),
     cst_Some$14=caml_string_of_jsbytes("(Some "),
     cst$13=caml_string_of_jsbytes(")"),
     cst_None$13=caml_string_of_jsbytes("None"),
     cst_Some$13=caml_string_of_jsbytes("(Some "),
     cst$12=caml_string_of_jsbytes(")"),
     cst_None$12=caml_string_of_jsbytes("None"),
     cst_mt=caml_string_of_jsbytes("mt"),
     cst_annot_type=caml_string_of_jsbytes("annot_type"),
     cst_annot_variable=caml_string_of_jsbytes("annot_variable"),
     cst_pair=caml_string_of_jsbytes("pair"),
     cst_or=caml_string_of_jsbytes("or"),
     cst_option=caml_string_of_jsbytes("option"),
     cst_list=caml_string_of_jsbytes("list"),
     cst_set=caml_string_of_jsbytes("set"),
     cst_contract=caml_string_of_jsbytes("contract"),
     cst_ticket=caml_string_of_jsbytes("ticket"),
     cst_sapling_state=caml_string_of_jsbytes("sapling_state"),
     cst_sapling_transaction=caml_string_of_jsbytes("sapling_transaction"),
     cst$18=caml_string_of_jsbytes("%"),
     cst$16=caml_string_of_jsbytes("%"),
     cst$14=caml_string_of_jsbytes(":"),
     cst$15=caml_string_of_jsbytes("@"),
     cst$17=caml_string_of_jsbytes("%"),
     cst$19=caml_string_of_jsbytes("%"),
     Stdlib_format=global_data.Stdlib__format,
     Stdlib=global_data.Stdlib,
     Utils_Control=global_data.Utils__Control,
     Stdlib_printf=global_data.Stdlib__printf,
     Assert_failure=global_data.Assert_failure,
     Michelson_base=[0];
    caml_register_global(316,Michelson_base,"Michelson_base");
    var
     _b_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _a_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Self"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Self@ ")],
     _c_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _d_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Sapling_empty_state {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Sapling_empty_state {@,")],
     _e_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _f_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _g_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _h_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _i_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("None_"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>None_@ ")],
     _j_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _k_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Nil"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Nil@ ")],
     _l_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _m_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Empty_set"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Empty_set@ ")],
     _n_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _o_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Empty_map ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Empty_map (@,")],
     _p_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _q_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _r_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Empty_bigmap ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Empty_bigmap (@,")],
     _s_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _t_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _u_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _T_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _I_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _E_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _C_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _y_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _w_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _v_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Left ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Left (@,")],
     _x_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _z_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _A_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _B_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Right ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Right (@,")],
     _D_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _F_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _G_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _H_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Contract ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Contract (@,")],
     _J_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _K_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _L_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Unpack"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Unpack@ ")],
     _M_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _N_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Getn"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Getn@ ")],
     _O_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _P_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Q_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Cast"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Cast@ ")],
     _R_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _S_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Rename"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Rename@ ")],
     _U_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _V_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _W_=[0,[15,0],caml_string_of_jsbytes("%a")],
     ___=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _Y_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _X_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Pair ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Pair (@,")],
     _Z_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _$_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _aa_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Updaten"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Updaten@ ")],
     _ab_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _ac_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ad_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ae_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _af_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("T_sapling_state {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>T_sapling_state {@,")],
     _ag_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ah_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _ai_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _aj_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _ak_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("T_sapling_transaction {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>T_sapling_transaction {@,")],
     _al_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _am_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _an_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ao_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _ap_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aq_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aG_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _aC_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ax_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _at_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ar_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("T_pair {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>T_pair {@,")],
     _as_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _au_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _av_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _aw_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ay_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _az_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _aA_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("T_or {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>T_or {@,")],
     _aB_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _aD_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _aE_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _aF_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _aH_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _aI_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _aJ_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bt_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bq_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bm_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bh_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _bi_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bj_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bk_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bl_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bn_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bo_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bp_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _br_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bs_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _bg_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _a6_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MT0"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MT0@ ")],
     _a7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _a8_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MT1 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MT1 (@,")],
     _a9_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _a__=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _a$_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MT2 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MT2 (@,")],
     _ba_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _bb_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _bc_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _bd_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MT_var"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MT_var@ ")],
     _be_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _a3_=[0,caml_string_of_jsbytes("lambda"),0,0],
     _a4_=[0,caml_string_of_jsbytes("map"),0,0],
     _a5_=[0,caml_string_of_jsbytes("big_map"),0,0],
     _aK_=[0,caml_string_of_jsbytes("unit"),0],
     _aL_=[0,caml_string_of_jsbytes("bool"),0],
     _aM_=[0,caml_string_of_jsbytes("nat"),0],
     _aN_=[0,caml_string_of_jsbytes("int"),0],
     _aO_=[0,caml_string_of_jsbytes("mutez"),0],
     _aP_=[0,caml_string_of_jsbytes("string"),0],
     _aQ_=[0,caml_string_of_jsbytes("bytes"),0],
     _aR_=[0,caml_string_of_jsbytes("chain_id"),0],
     _aS_=[0,caml_string_of_jsbytes("timestamp"),0],
     _aT_=[0,caml_string_of_jsbytes("address"),0],
     _aU_=[0,caml_string_of_jsbytes("key"),0],
     _aV_=[0,caml_string_of_jsbytes("key_hash"),0],
     _aW_=[0,caml_string_of_jsbytes("baker_hash"),0],
     _aX_=[0,caml_string_of_jsbytes("signature"),0],
     _aY_=[0,caml_string_of_jsbytes("operation"),0],
     _aZ_=[0,caml_string_of_jsbytes("never"),0],
     _a0_=[0,caml_string_of_jsbytes("bls12_381_g1"),0],
     _a1_=[0,caml_string_of_jsbytes("bls12_381_g2"),0],
     _a2_=[0,caml_string_of_jsbytes("bls12_381_fr"),0],
     _bE_=
      [0,
       [11,
        caml_string_of_jsbytes("Cannot unify types '"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("' and '"),
          [2,0,[11,caml_string_of_jsbytes("'."),0]]]]],
       caml_string_of_jsbytes("Cannot unify types '%s' and '%s'.")],
     _bD_=[0,0],
     _bO_=[0,caml_string_of_jsbytes("smartML/michelson_base/typing.ml"),95,9],
     _bN_=[0,caml_string_of_jsbytes("smartML/michelson_base/typing.ml"),91,9],
     _bM_=[0,caml_string_of_jsbytes("smartML/michelson_base/typing.ml"),86,9],
     _bF_=[0,caml_string_of_jsbytes("sender")],
     _bG_=[0,caml_string_of_jsbytes("source")],
     _bH_=[0,caml_string_of_jsbytes("amount")],
     _bI_=[0,caml_string_of_jsbytes("balance")],
     _bJ_=[0,caml_string_of_jsbytes("now")],
     _bK_=[0,caml_string_of_jsbytes("self")],
     _bL_=[0,caml_string_of_jsbytes("smartML/michelson_base/typing.ml"),74,9],
     _bz_=[0,0],
     _bA_=[0,0],
     _bB_=
      [0,
       [11,
        caml_string_of_jsbytes("Cannot unify annotations '"),
        [2,
         0,
         [2,0,[11,caml_string_of_jsbytes("' and '"),[2,0,[2,0,[12,39,0]]]]]]],
       caml_string_of_jsbytes("Cannot unify annotations '%s%s' and '%s%s'")],
     _bC_=[0,0];
    function equal_prim0(poly_ty,lhs,match)
     {if(typeof lhs === "number")
       switch(lhs)
        {case 0:if(typeof match === "number" && ! match)return 1;break;
         case 1:if(typeof match === "number" && 1 === match)return 1;break;
         case 2:if(typeof match === "number" && 2 === match)return 1;break;
         case 3:if(typeof match === "number" && 3 === match)return 1;break;
         case 4:if(typeof match === "number" && 4 === match)return 1;break;
         case 5:if(typeof match === "number" && 5 === match)return 1;break;
         case 6:if(typeof match === "number" && 6 === match)return 1;break;
         case 7:if(typeof match === "number" && 7 === match)return 1;break;
         default:if(typeof match === "number" && 8 <= match)return 1}
      else
       switch(lhs[0])
        {case 0:
          if(typeof match !== "number" && 0 === match[0])
           {var rhs0=match[1],lhs0=lhs[1];
            if(lhs0)
             {if(rhs0){var b=rhs0[1],a=lhs0[1];return caml_string_equal(a,b)}}
            else
             if(! rhs0)return 1;
            return 0}
          break;
         case 1:
          if(typeof match !== "number" && 1 === match[0])
           {var rhsmemo=match[1],lhsmemo=lhs[1];
            return lhsmemo === rhsmemo?1:0}
          break;
         case 2:
          if(typeof match !== "number" && 2 === match[0])
           {var rhs0$0=match[1],lhs0$0=lhs[1];
            return caml_call2(poly_ty,lhs0$0,rhs0$0)}
          break;
         case 3:
          if(typeof match !== "number" && 3 === match[0])
           {var rhs0$1=match[1],lhs0$1=lhs[1];
            return caml_call2(poly_ty,lhs0$1,rhs0$1)}
          break;
         case 4:
          if(typeof match !== "number" && 4 === match[0])
           {var rhs0$2=match[1],lhs0$2=lhs[1];
            return caml_call2(poly_ty,lhs0$2,rhs0$2)}
          break;
         case 5:
          if(typeof match !== "number" && 5 === match[0])
           {var
             rhs1=match[2],
             rhs0$3=match[1],
             lhs1=lhs[2],
             lhs0$3=lhs[1],
             _en_=caml_call2(poly_ty,lhs0$3,rhs0$3);
            return _en_?caml_call2(poly_ty,lhs1,rhs1):_en_}
          break;
         default:
          if(typeof match !== "number" && 6 === match[0])
           {var
             rhs1$0=match[2],
             rhs0$4=match[1],
             lhs1$0=lhs[2],
             lhs0$4=lhs[1],
             _eo_=caml_call2(poly_ty,lhs0$4,rhs0$4);
            return _eo_?caml_call2(poly_ty,lhs1$0,rhs1$0):_eo_}}
      return 0}
    var
     compare_prim0=
      function _em_(_ej_,_ek_,_el_){return _em_.fun(_ej_,_ek_,_el_)};
    caml_update_dummy
     (compare_prim0,
      function(poly_ty,lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 0;break;
           case 1:if(typeof match === "number" && 1 === match)return 0;break;
           case 2:if(typeof match === "number" && 2 === match)return 0;break;
           case 3:if(typeof match === "number" && 3 === match)return 0;break;
           case 4:if(typeof match === "number" && 4 === match)return 0;break;
           case 5:if(typeof match === "number" && 5 === match)return 0;break;
           case 6:if(typeof match === "number" && 6 === match)return 0;break;
           case 7:if(typeof match === "number" && 7 === match)return 0;break;
           default:if(typeof match === "number" && 8 <= match)return 0}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              if(lhs0)
               {var _ei_=lhs0[1];
                if(rhs0){var b=rhs0[1];return caml_string_compare(_ei_,b)}
                return 1}
              return rhs0?-1:0}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhsmemo=match[1],lhsmemo=lhs[1];
              return caml_int_compare(lhsmemo,rhsmemo)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_call2(poly_ty,lhs0$0,rhs0$0)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_call2(poly_ty,lhs0$1,rhs0$1)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_call2(poly_ty,lhs0$2,rhs0$2)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var
               rhs1=match[2],
               rhs0$3=match[1],
               lhs1=lhs[2],
               lhs0$3=lhs[1],
               x=caml_call2(poly_ty,lhs0$3,rhs0$3);
              return 0 === x?caml_call2(poly_ty,lhs1,rhs1):x}
            break;
           default:
            if(typeof match !== "number" && 6 === match[0])
             {var
               rhs1$0=match[2],
               rhs0$4=match[1],
               lhs1$0=lhs[2],
               lhs0$4=lhs[1],
               x$0=caml_call2(poly_ty,lhs0$4,rhs0$4);
              return 0 === x$0?caml_call2(poly_ty,lhs1$0,rhs1$0):x$0}}
        function to_int(param)
         {if(typeof param === "number")
           switch(param)
            {case 0:return 0;
             case 1:return 1;
             case 2:return 2;
             case 3:return 3;
             case 4:return 4;
             case 5:return 6;
             case 6:return 7;
             case 7:return 8;
             default:return 10}
          else
           switch(param[0])
            {case 0:return 5;
             case 1:return 9;
             case 2:return 11;
             case 3:return 12;
             case 4:return 13;
             case 5:return 14;
             default:return 15}}
        var _eh_=to_int(match);
        return caml_int_compare(to_int(lhs),_eh_)});
    function pp_prim0(poly_ty,fmt,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[13],fmt,cst_Sender);
         case 1:return caml_call2(Stdlib_format[13],fmt,cst_Source);
         case 2:return caml_call2(Stdlib_format[13],fmt,cst_Amount);
         case 3:return caml_call2(Stdlib_format[13],fmt,cst_Balance);
         case 4:return caml_call2(Stdlib_format[13],fmt,cst_Now);
         case 5:return caml_call2(Stdlib_format[13],fmt,cst_Self_address);
         case 6:return caml_call2(Stdlib_format[13],fmt,cst_Chain_id);
         case 7:
          return caml_call2(Stdlib_format[13],fmt,cst_Total_voting_power);
         default:return caml_call2(Stdlib_format[13],fmt,cst_Unit)}
      else
       switch(param[0])
        {case 0:
          var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_a_);
          if(a0)
           {var x=a0[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_b_),x);
            caml_call2(Stdlib_format[13],fmt,cst)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None);
          return caml_call2(Stdlib_format[123],fmt,_c_);
         case 1:
          var amemo=param[1];
          caml_call2(Stdlib_format[123],fmt,_d_);
          caml_call3(Stdlib_format[123],fmt,_e_,cst_memo);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_f_),amemo);
          caml_call2(Stdlib_format[123],fmt,_g_);
          return caml_call2(Stdlib_format[123],fmt,_h_);
         case 2:
          var a0$0=param[1];
          caml_call2(Stdlib_format[123],fmt,_i_);
          caml_call1(caml_call1(poly_ty,fmt),a0$0);
          return caml_call2(Stdlib_format[123],fmt,_j_);
         case 3:
          var a0$1=param[1];
          caml_call2(Stdlib_format[123],fmt,_k_);
          caml_call1(caml_call1(poly_ty,fmt),a0$1);
          return caml_call2(Stdlib_format[123],fmt,_l_);
         case 4:
          var a0$2=param[1];
          caml_call2(Stdlib_format[123],fmt,_m_);
          caml_call1(caml_call1(poly_ty,fmt),a0$2);
          return caml_call2(Stdlib_format[123],fmt,_n_);
         case 5:
          var a1=param[2],a0$3=param[1];
          caml_call2(Stdlib_format[123],fmt,_o_);
          caml_call1(caml_call1(poly_ty,fmt),a0$3);
          caml_call2(Stdlib_format[123],fmt,_p_);
          caml_call1(caml_call1(poly_ty,fmt),a1);
          return caml_call2(Stdlib_format[123],fmt,_q_);
         default:
          var a1$0=param[2],a0$4=param[1];
          caml_call2(Stdlib_format[123],fmt,_r_);
          caml_call1(caml_call1(poly_ty,fmt),a0$4);
          caml_call2(Stdlib_format[123],fmt,_s_);
          caml_call1(caml_call1(poly_ty,fmt),a1$0);
          return caml_call2(Stdlib_format[123],fmt,_t_)}}
    function show_prim0(poly_ty,x)
     {function _ee_(_ef_,_eg_){return pp_prim0(poly_ty,_ef_,_eg_)}
      return caml_call3(Stdlib_format[127],_u_,_ee_,x)}
    function map_prim0(poly_ty,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return 0;
         case 1:return 1;
         case 2:return 2;
         case 3:return 3;
         case 4:return 4;
         case 5:return 5;
         case 6:return 6;
         case 7:return 7;
         default:return 8}
      else
       switch(param[0])
        {case 0:var a0=param[1];return [0,a0];
         case 1:var amemo=param[1];return [1,amemo];
         case 2:var a0$0=param[1];return [2,caml_call1(poly_ty,a0$0)];
         case 3:var a0$1=param[1];return [3,caml_call1(poly_ty,a0$1)];
         case 4:var a0$2=param[1];return [4,caml_call1(poly_ty,a0$2)];
         case 5:
          var a1=param[2],a0$3=param[1],_ec_=caml_call1(poly_ty,a1);
          return [5,caml_call1(poly_ty,a0$3),_ec_];
         default:
          var a1$0=param[2],a0$4=param[1],_ed_=caml_call1(poly_ty,a1$0);
          return [6,caml_call1(poly_ty,a0$4),_ed_]}}
    function fold_prim0(poly_ty,acc,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return acc;
         case 1:return acc;
         case 2:return acc;
         case 3:return acc;
         case 4:return acc;
         case 5:return acc;
         case 6:return acc;
         case 7:return acc;
         default:return acc}
      else
       switch(param[0])
        {case 0:return acc;
         case 1:return acc;
         case 2:var a0=param[1];return caml_call2(poly_ty,acc,a0);
         case 3:var a0$0=param[1];return caml_call2(poly_ty,acc,a0$0);
         case 4:var a0$1=param[1];return caml_call2(poly_ty,acc,a0$1);
         case 5:
          var a1=param[2],a0$2=param[1],acc$0=caml_call2(poly_ty,acc,a0$2);
          return caml_call2(poly_ty,acc$0,a1);
         default:
          var a1$0=param[2],a0$3=param[1],acc$1=caml_call2(poly_ty,acc,a0$3);
          return caml_call2(poly_ty,acc$1,a1$0)}}
    function equal_prim1(poly_ty,lhs,match)
     {if(typeof lhs === "number")
       switch(lhs)
        {case 0:if(typeof match === "number" && ! match)return 1;break;
         case 1:if(typeof match === "number" && 1 === match)return 1;break;
         case 2:if(typeof match === "number" && 2 === match)return 1;break;
         case 3:if(typeof match === "number" && 3 === match)return 1;break;
         case 4:if(typeof match === "number" && 4 === match)return 1;break;
         case 5:if(typeof match === "number" && 5 === match)return 1;break;
         case 6:if(typeof match === "number" && 6 === match)return 1;break;
         case 7:if(typeof match === "number" && 7 === match)return 1;break;
         case 8:if(typeof match === "number" && 8 === match)return 1;break;
         case 9:if(typeof match === "number" && 9 === match)return 1;break;
         case 10:if(typeof match === "number" && 10 === match)return 1;break;
         case 11:if(typeof match === "number" && 11 === match)return 1;break;
         case 12:if(typeof match === "number" && 12 === match)return 1;break;
         case 13:if(typeof match === "number" && 13 === match)return 1;break;
         case 14:if(typeof match === "number" && 14 === match)return 1;break;
         case 15:if(typeof match === "number" && 15 === match)return 1;break;
         case 16:if(typeof match === "number" && 16 === match)return 1;break;
         case 17:if(typeof match === "number" && 17 === match)return 1;break;
         case 18:if(typeof match === "number" && 18 === match)return 1;break;
         case 19:if(typeof match === "number" && 19 === match)return 1;break;
         case 20:if(typeof match === "number" && 20 === match)return 1;break;
         case 21:if(typeof match === "number" && 21 === match)return 1;break;
         case 22:if(typeof match === "number" && 22 === match)return 1;break;
         case 23:if(typeof match === "number" && 23 === match)return 1;break;
         case 24:if(typeof match === "number" && 24 === match)return 1;break;
         case 25:if(typeof match === "number" && 25 === match)return 1;break;
         case 26:if(typeof match === "number" && 26 === match)return 1;break;
         case 27:if(typeof match === "number" && 27 === match)return 1;break;
         case 28:if(typeof match === "number" && 28 === match)return 1;break;
         default:if(typeof match === "number" && 29 <= match)return 1}
      else
       switch(lhs[0])
        {case 0:
          if(typeof match !== "number" && 0 === match[0])
           {var
             rhs2=match[3],
             rhs1=match[2],
             rhs0=match[1],
             lhs2=lhs[3],
             lhs1=lhs[2],
             lhs0=lhs[1],
             switch$0=0;
            if(lhs0)
             if(rhs0)
              var b=rhs0[1],a=lhs0[1],_d7_=caml_string_equal(a,b);
             else
              switch$0 = 1;
            else
             if(rhs0)switch$0 = 1;else var _d7_=1;
            if(switch$0)var _d7_=0;
            if(_d7_)
             {var switch$1=0;
              if(lhs1)
               if(rhs1)
                var b$0=rhs1[1],a$0=lhs1[1],_d8_=caml_string_equal(a$0,b$0);
               else
                switch$1 = 1;
              else
               if(rhs1)switch$1 = 1;else var _d8_=1;
              if(switch$1)var _d8_=0;
              var _d9_=_d8_}
            else
             var _d9_=_d7_;
            return _d9_?caml_call2(poly_ty,lhs2,rhs2):_d9_}
          break;
         case 1:
          if(typeof match !== "number" && 1 === match[0])
           {var
             rhs2$0=match[3],
             rhs1$0=match[2],
             rhs0$0=match[1],
             lhs2$0=lhs[3],
             lhs1$0=lhs[2],
             lhs0$0=lhs[1],
             switch$2=0;
            if(lhs0$0)
             if(rhs0$0)
              var b$1=rhs0$0[1],a$1=lhs0$0[1],_d__=caml_string_equal(a$1,b$1);
             else
              switch$2 = 1;
            else
             if(rhs0$0)switch$2 = 1;else var _d__=1;
            if(switch$2)var _d__=0;
            if(_d__)
             {var switch$3=0;
              if(lhs1$0)
               if(rhs1$0)
                var
                 b$2=rhs1$0[1],
                 a$2=lhs1$0[1],
                 _d$_=caml_string_equal(a$2,b$2);
               else
                switch$3 = 1;
              else
               if(rhs1$0)switch$3 = 1;else var _d$_=1;
              if(switch$3)var _d$_=0;
              var _ea_=_d$_}
            else
             var _ea_=_d__;
            return _ea_?caml_call2(poly_ty,lhs2$0,rhs2$0):_ea_}
          break;
         case 2:
          if(typeof match !== "number" && 2 === match[0])
           {var
             rhs1$1=match[2],
             rhs0$1=match[1],
             lhs1$1=lhs[2],
             lhs0$1=lhs[1],
             switch$4=0;
            if(lhs0$1)
             if(rhs0$1)
              var b$3=rhs0$1[1],a$3=lhs0$1[1],_eb_=caml_string_equal(a$3,b$3);
             else
              switch$4 = 1;
            else
             if(rhs0$1)switch$4 = 1;else var _eb_=1;
            if(switch$4)var _eb_=0;
            return _eb_?caml_call2(poly_ty,lhs1$1,rhs1$1):_eb_}
          break;
         case 3:
          if(typeof match !== "number" && 3 === match[0])
           {var rhs0$2=match[1],lhs0$2=lhs[1];
            return caml_call2(poly_ty,lhs0$2,rhs0$2)}
          break;
         case 4:
          if(typeof match !== "number" && 4 === match[0])
           {var rhs0$3=match[1],lhs0$3=lhs[1];return lhs0$3 === rhs0$3?1:0}
          break;
         case 5:
          if(typeof match !== "number" && 5 === match[0])
           {var rhs0$4=match[1],lhs0$4=lhs[1];
            return caml_call2(poly_ty,lhs0$4,rhs0$4)}
          break;
         default:
          if(typeof match !== "number" && 6 === match[0])
           {var rhs0$5=match[1],lhs0$5=lhs[1];
            if(lhs0$5)
             {if(rhs0$5)
               {var b$4=rhs0$5[1],a$4=lhs0$5[1];
                return caml_string_equal(a$4,b$4)}}
            else
             if(! rhs0$5)return 1;
            return 0}}
      return 0}
    var
     compare_prim1=
      function _d6_(_d3_,_d4_,_d5_){return _d6_.fun(_d3_,_d4_,_d5_)};
    caml_update_dummy
     (compare_prim1,
      function(poly_ty,lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 0;break;
           case 1:if(typeof match === "number" && 1 === match)return 0;break;
           case 2:if(typeof match === "number" && 2 === match)return 0;break;
           case 3:if(typeof match === "number" && 3 === match)return 0;break;
           case 4:if(typeof match === "number" && 4 === match)return 0;break;
           case 5:if(typeof match === "number" && 5 === match)return 0;break;
           case 6:if(typeof match === "number" && 6 === match)return 0;break;
           case 7:if(typeof match === "number" && 7 === match)return 0;break;
           case 8:if(typeof match === "number" && 8 === match)return 0;break;
           case 9:if(typeof match === "number" && 9 === match)return 0;break;
           case 10:
            if(typeof match === "number" && 10 === match)return 0;break;
           case 11:
            if(typeof match === "number" && 11 === match)return 0;break;
           case 12:
            if(typeof match === "number" && 12 === match)return 0;break;
           case 13:
            if(typeof match === "number" && 13 === match)return 0;break;
           case 14:
            if(typeof match === "number" && 14 === match)return 0;break;
           case 15:
            if(typeof match === "number" && 15 === match)return 0;break;
           case 16:
            if(typeof match === "number" && 16 === match)return 0;break;
           case 17:
            if(typeof match === "number" && 17 === match)return 0;break;
           case 18:
            if(typeof match === "number" && 18 === match)return 0;break;
           case 19:
            if(typeof match === "number" && 19 === match)return 0;break;
           case 20:
            if(typeof match === "number" && 20 === match)return 0;break;
           case 21:
            if(typeof match === "number" && 21 === match)return 0;break;
           case 22:
            if(typeof match === "number" && 22 === match)return 0;break;
           case 23:
            if(typeof match === "number" && 23 === match)return 0;break;
           case 24:
            if(typeof match === "number" && 24 === match)return 0;break;
           case 25:
            if(typeof match === "number" && 25 === match)return 0;break;
           case 26:
            if(typeof match === "number" && 26 === match)return 0;break;
           case 27:
            if(typeof match === "number" && 27 === match)return 0;break;
           case 28:
            if(typeof match === "number" && 28 === match)return 0;break;
           default:if(typeof match === "number" && 29 <= match)return 0}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var
               rhs2=match[3],
               rhs1=match[2],
               rhs0=match[1],
               lhs2=lhs[3],
               lhs1=lhs[2],
               lhs0=lhs[1];
              if(lhs0)
               {var _dX_=lhs0[1];
                if(rhs0)
                 var b=rhs0[1],x=caml_string_compare(_dX_,b);
                else
                 var x=1}
              else
               var x=rhs0?-1:0;
              if(0 === x)
               {if(lhs1)
                 {var _dY_=lhs1[1];
                  if(rhs1)
                   var b$0=rhs1[1],x$0=caml_string_compare(_dY_,b$0);
                  else
                   var x$0=1}
                else
                 var x$0=rhs1?-1:0;
                return 0 === x$0?caml_call2(poly_ty,lhs2,rhs2):x$0}
              return x}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var
               rhs2$0=match[3],
               rhs1$0=match[2],
               rhs0$0=match[1],
               lhs2$0=lhs[3],
               lhs1$0=lhs[2],
               lhs0$0=lhs[1];
              if(lhs0$0)
               {var _dZ_=lhs0$0[1];
                if(rhs0$0)
                 var b$1=rhs0$0[1],x$1=caml_string_compare(_dZ_,b$1);
                else
                 var x$1=1}
              else
               var x$1=rhs0$0?-1:0;
              if(0 === x$1)
               {if(lhs1$0)
                 {var _d0_=lhs1$0[1];
                  if(rhs1$0)
                   var b$2=rhs1$0[1],x$2=caml_string_compare(_d0_,b$2);
                  else
                   var x$2=1}
                else
                 var x$2=rhs1$0?-1:0;
                return 0 === x$2?caml_call2(poly_ty,lhs2$0,rhs2$0):x$2}
              return x$1}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs1$1=match[2],rhs0$1=match[1],lhs1$1=lhs[2],lhs0$1=lhs[1];
              if(lhs0$1)
               {var _d1_=lhs0$1[1];
                if(rhs0$1)
                 var b$3=rhs0$1[1],x$3=caml_string_compare(_d1_,b$3);
                else
                 var x$3=1}
              else
               var x$3=rhs0$1?-1:0;
              return 0 === x$3?caml_call2(poly_ty,lhs1$1,rhs1$1):x$3}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_call2(poly_ty,lhs0$2,rhs0$2)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$3=match[1],lhs0$3=lhs[1];
              return caml_int_compare(lhs0$3,rhs0$3)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_call2(poly_ty,lhs0$4,rhs0$4)}
            break;
           default:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$5=match[1],lhs0$5=lhs[1];
              if(lhs0$5)
               {var _d2_=lhs0$5[1];
                if(rhs0$5)
                 {var b$4=rhs0$5[1];return caml_string_compare(_d2_,b$4)}
                return 1}
              return rhs0$5?-1:0}}
        function to_int(param)
         {if(typeof param === "number")
           switch(param)
            {case 0:return 0;
             case 1:return 1;
             case 2:return 4;
             case 3:return 5;
             case 4:return 6;
             case 5:return 7;
             case 6:return 8;
             case 7:return 9;
             case 8:return 10;
             case 9:return 11;
             case 10:return 12;
             case 11:return 13;
             case 12:return 14;
             case 13:return 15;
             case 14:return 16;
             case 15:return 17;
             case 16:return 18;
             case 17:return 19;
             case 18:return 21;
             case 19:return 23;
             case 20:return 24;
             case 21:return 25;
             case 22:return 26;
             case 23:return 27;
             case 24:return 28;
             case 25:return 29;
             case 26:return 30;
             case 27:return 31;
             case 28:return 32;
             default:return 33}
          else
           switch(param[0])
            {case 0:return 2;
             case 1:return 3;
             case 2:return 20;
             case 3:return 22;
             case 4:return 34;
             case 5:return 35;
             default:return 36}}
        var _dW_=to_int(match);
        return caml_int_compare(to_int(lhs),_dW_)});
    function pp_prim1(poly_ty,fmt,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[13],fmt,cst_Car);
         case 1:return caml_call2(Stdlib_format[13],fmt,cst_Cdr);
         case 2:return caml_call2(Stdlib_format[13],fmt,cst_Some$0);
         case 3:return caml_call2(Stdlib_format[13],fmt,cst_Eq);
         case 4:return caml_call2(Stdlib_format[13],fmt,cst_Abs);
         case 5:return caml_call2(Stdlib_format[13],fmt,cst_Neg);
         case 6:return caml_call2(Stdlib_format[13],fmt,cst_Int);
         case 7:return caml_call2(Stdlib_format[13],fmt,cst_IsNat);
         case 8:return caml_call2(Stdlib_format[13],fmt,cst_Neq);
         case 9:return caml_call2(Stdlib_format[13],fmt,cst_Le);
         case 10:return caml_call2(Stdlib_format[13],fmt,cst_Lt);
         case 11:return caml_call2(Stdlib_format[13],fmt,cst_Ge);
         case 12:return caml_call2(Stdlib_format[13],fmt,cst_Gt);
         case 13:return caml_call2(Stdlib_format[13],fmt,cst_Not);
         case 14:return caml_call2(Stdlib_format[13],fmt,cst_Concat1);
         case 15:return caml_call2(Stdlib_format[13],fmt,cst_Size);
         case 16:return caml_call2(Stdlib_format[13],fmt,cst_Address);
         case 17:
          return caml_call2(Stdlib_format[13],fmt,cst_Implicit_account);
         case 18:return caml_call2(Stdlib_format[13],fmt,cst_Pack);
         case 19:return caml_call2(Stdlib_format[13],fmt,cst_Hash_key);
         case 20:return caml_call2(Stdlib_format[13],fmt,cst_Blake2b);
         case 21:return caml_call2(Stdlib_format[13],fmt,cst_Sha256);
         case 22:return caml_call2(Stdlib_format[13],fmt,cst_Sha512);
         case 23:return caml_call2(Stdlib_format[13],fmt,cst_Keccak);
         case 24:return caml_call2(Stdlib_format[13],fmt,cst_Sha3);
         case 25:return caml_call2(Stdlib_format[13],fmt,cst_Set_delegate);
         case 26:return caml_call2(Stdlib_format[13],fmt,cst_Read_ticket);
         case 27:return caml_call2(Stdlib_format[13],fmt,cst_Join_tickets);
         case 28:return caml_call2(Stdlib_format[13],fmt,cst_Pairing_check);
         default:return caml_call2(Stdlib_format[13],fmt,cst_Voting_power)}
      else
       switch(param[0])
        {case 0:
          var a2=param[3],a1=param[2],a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_v_);
          if(a0)
           {var x=a0[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$1);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_w_),x);
            caml_call2(Stdlib_format[13],fmt,cst$0)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$0);
          caml_call2(Stdlib_format[123],fmt,_x_);
          if(a1)
           {var x$0=a1[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$2);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_y_),x$0);
            caml_call2(Stdlib_format[13],fmt,cst$1)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$1);
          caml_call2(Stdlib_format[123],fmt,_z_);
          caml_call1(caml_call1(poly_ty,fmt),a2);
          return caml_call2(Stdlib_format[123],fmt,_A_);
         case 1:
          var a2$0=param[3],a1$0=param[2],a0$0=param[1];
          caml_call2(Stdlib_format[123],fmt,_B_);
          if(a0$0)
           {var x$1=a0$0[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$3);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_C_),x$1);
            caml_call2(Stdlib_format[13],fmt,cst$2)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$2);
          caml_call2(Stdlib_format[123],fmt,_D_);
          if(a1$0)
           {var x$2=a1$0[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$4);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_E_),x$2);
            caml_call2(Stdlib_format[13],fmt,cst$3)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$3);
          caml_call2(Stdlib_format[123],fmt,_F_);
          caml_call1(caml_call1(poly_ty,fmt),a2$0);
          return caml_call2(Stdlib_format[123],fmt,_G_);
         case 2:
          var a1$1=param[2],a0$1=param[1];
          caml_call2(Stdlib_format[123],fmt,_H_);
          if(a0$1)
           {var x$3=a0$1[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$5);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_I_),x$3);
            caml_call2(Stdlib_format[13],fmt,cst$4)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$4);
          caml_call2(Stdlib_format[123],fmt,_J_);
          caml_call1(caml_call1(poly_ty,fmt),a1$1);
          return caml_call2(Stdlib_format[123],fmt,_K_);
         case 3:
          var a0$2=param[1];
          caml_call2(Stdlib_format[123],fmt,_L_);
          caml_call1(caml_call1(poly_ty,fmt),a0$2);
          return caml_call2(Stdlib_format[123],fmt,_M_);
         case 4:
          var a0$3=param[1];
          caml_call2(Stdlib_format[123],fmt,_N_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_O_),a0$3);
          return caml_call2(Stdlib_format[123],fmt,_P_);
         case 5:
          var a0$4=param[1];
          caml_call2(Stdlib_format[123],fmt,_Q_);
          caml_call1(caml_call1(poly_ty,fmt),a0$4);
          return caml_call2(Stdlib_format[123],fmt,_R_);
         default:
          var a0$5=param[1];
          caml_call2(Stdlib_format[123],fmt,_S_);
          if(a0$5)
           {var x$4=a0$5[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$6);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_T_),x$4);
            caml_call2(Stdlib_format[13],fmt,cst$5)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$5);
          return caml_call2(Stdlib_format[123],fmt,_U_)}}
    function show_prim1(poly_ty,x)
     {function _dT_(_dU_,_dV_){return pp_prim1(poly_ty,_dU_,_dV_)}
      return caml_call3(Stdlib_format[127],_V_,_dT_,x)}
    function map_prim1(poly_ty,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return 0;
         case 1:return 1;
         case 2:return 2;
         case 3:return 3;
         case 4:return 4;
         case 5:return 5;
         case 6:return 6;
         case 7:return 7;
         case 8:return 8;
         case 9:return 9;
         case 10:return 10;
         case 11:return 11;
         case 12:return 12;
         case 13:return 13;
         case 14:return 14;
         case 15:return 15;
         case 16:return 16;
         case 17:return 17;
         case 18:return 18;
         case 19:return 19;
         case 20:return 20;
         case 21:return 21;
         case 22:return 22;
         case 23:return 23;
         case 24:return 24;
         case 25:return 25;
         case 26:return 26;
         case 27:return 27;
         case 28:return 28;
         default:return 29}
      else
       switch(param[0])
        {case 0:
          var a2=param[3],a1=param[2],a0=param[1];
          return [0,a0,a1,caml_call1(poly_ty,a2)];
         case 1:
          var a2$0=param[3],a1$0=param[2],a0$0=param[1];
          return [1,a0$0,a1$0,caml_call1(poly_ty,a2$0)];
         case 2:
          var a1$1=param[2],a0$1=param[1];
          return [2,a0$1,caml_call1(poly_ty,a1$1)];
         case 3:var a0$2=param[1];return [3,caml_call1(poly_ty,a0$2)];
         case 4:var a0$3=param[1];return [4,a0$3];
         case 5:var a0$4=param[1];return [5,caml_call1(poly_ty,a0$4)];
         default:var a0$5=param[1];return [6,a0$5]}}
    function equal_prim1_fail(lhs,rhs)
     {if(lhs){if(rhs)return 1}else if(! rhs)return 1;return 0}
    function compare_prim1_fail(lhs,rhs)
     {if(lhs){if(rhs)return 0}else if(! rhs)return 0;
      function to_int(param){return param?1:0}
      var _dS_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_dS_)}
    function pp_prim1_fail(fmt,param)
     {return param
              ?caml_call2(Stdlib_format[13],fmt,cst_Never)
              :caml_call2(Stdlib_format[13],fmt,cst_Failwith)}
    function show_prim1_fail(x)
     {return caml_call3(Stdlib_format[127],_W_,pp_prim1_fail,x)}
    function equal_prim2(lhs,match)
     {if(typeof lhs === "number")
       switch(lhs)
        {case 0:if(typeof match === "number" && ! match)return 1;break;
         case 1:if(typeof match === "number" && 1 === match)return 1;break;
         case 2:if(typeof match === "number" && 2 === match)return 1;break;
         case 3:if(typeof match === "number" && 3 === match)return 1;break;
         case 4:if(typeof match === "number" && 4 === match)return 1;break;
         case 5:if(typeof match === "number" && 5 === match)return 1;break;
         case 6:if(typeof match === "number" && 6 === match)return 1;break;
         case 7:if(typeof match === "number" && 7 === match)return 1;break;
         case 8:if(typeof match === "number" && 8 === match)return 1;break;
         case 9:if(typeof match === "number" && 9 === match)return 1;break;
         case 10:if(typeof match === "number" && 10 === match)return 1;break;
         case 11:if(typeof match === "number" && 11 === match)return 1;break;
         case 12:if(typeof match === "number" && 12 === match)return 1;break;
         case 13:if(typeof match === "number" && 13 === match)return 1;break;
         case 14:if(typeof match === "number" && 14 === match)return 1;break;
         case 15:if(typeof match === "number" && 15 === match)return 1;break;
         case 16:if(typeof match === "number" && 16 === match)return 1;break;
         case 17:if(typeof match === "number" && 17 === match)return 1;break;
         default:if(typeof match === "number" && 18 <= match)return 1}
      else
       if(0 === lhs[0])
        {if(typeof match !== "number" && 0 === match[0])
          {var rhs1=match[2],rhs0=match[1],lhs1=lhs[2],lhs0=lhs[1],switch$0=0;
           if(lhs0)
            if(rhs0)
             var b=rhs0[1],a=lhs0[1],_dR_=caml_string_equal(a,b);
            else
             switch$0 = 1;
           else
            if(rhs0)switch$0 = 1;else var _dR_=1;
           if(switch$0)var _dR_=0;
           if(_dR_)
            {if(lhs1)
              {if(rhs1)
                {var b$0=rhs1[1],a$0=lhs1[1];
                 return caml_string_equal(a$0,b$0)}}
             else
              if(! rhs1)return 1;
             return 0}
           return _dR_}}
       else
        if(typeof match !== "number" && 1 === match[0])
         {var rhs0$0=match[1],lhs0$0=lhs[1];return lhs0$0 === rhs0$0?1:0}
      return 0}
    var compare_prim2=function _dQ_(_dO_,_dP_){return _dQ_.fun(_dO_,_dP_)};
    caml_update_dummy
     (compare_prim2,
      function(lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 0;break;
           case 1:if(typeof match === "number" && 1 === match)return 0;break;
           case 2:if(typeof match === "number" && 2 === match)return 0;break;
           case 3:if(typeof match === "number" && 3 === match)return 0;break;
           case 4:if(typeof match === "number" && 4 === match)return 0;break;
           case 5:if(typeof match === "number" && 5 === match)return 0;break;
           case 6:if(typeof match === "number" && 6 === match)return 0;break;
           case 7:if(typeof match === "number" && 7 === match)return 0;break;
           case 8:if(typeof match === "number" && 8 === match)return 0;break;
           case 9:if(typeof match === "number" && 9 === match)return 0;break;
           case 10:
            if(typeof match === "number" && 10 === match)return 0;break;
           case 11:
            if(typeof match === "number" && 11 === match)return 0;break;
           case 12:
            if(typeof match === "number" && 12 === match)return 0;break;
           case 13:
            if(typeof match === "number" && 13 === match)return 0;break;
           case 14:
            if(typeof match === "number" && 14 === match)return 0;break;
           case 15:
            if(typeof match === "number" && 15 === match)return 0;break;
           case 16:
            if(typeof match === "number" && 16 === match)return 0;break;
           case 17:
            if(typeof match === "number" && 17 === match)return 0;break;
           default:if(typeof match === "number" && 18 <= match)return 0}
        else
         if(0 === lhs[0])
          {if(typeof match !== "number" && 0 === match[0])
            {var rhs1=match[2],rhs0=match[1],lhs1=lhs[2],lhs0=lhs[1];
             if(lhs0)
              {var _dM_=lhs0[1];
               if(rhs0)
                var b=rhs0[1],x=caml_string_compare(_dM_,b);
               else
                var x=1}
             else
              var x=rhs0?-1:0;
             if(0 === x)
              {if(lhs1)
                {var _dN_=lhs1[1];
                 if(rhs1)
                  {var b$0=rhs1[1];return caml_string_compare(_dN_,b$0)}
                 return 1}
               return rhs1?-1:0}
             return x}}
         else
          if(typeof match !== "number" && 1 === match[0])
           {var rhs0$0=match[1],lhs0$0=lhs[1];
            return caml_int_compare(lhs0$0,rhs0$0)}
        function to_int(param)
         {if(typeof param === "number")
           switch(param)
            {case 0:return 1;
             case 1:return 2;
             case 2:return 3;
             case 3:return 4;
             case 4:return 5;
             case 5:return 6;
             case 6:return 7;
             case 7:return 8;
             case 8:return 9;
             case 9:return 10;
             case 10:return 11;
             case 11:return 12;
             case 12:return 13;
             case 13:return 14;
             case 14:return 15;
             case 15:return 16;
             case 16:return 17;
             case 17:return 18;
             default:return 19}
          else
           return 0 === param[0]?0:20}
        var _dL_=to_int(match);
        return caml_int_compare(to_int(lhs),_dL_)});
    function pp_prim2(fmt,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[13],fmt,cst_Add);
         case 1:return caml_call2(Stdlib_format[13],fmt,cst_Mul);
         case 2:return caml_call2(Stdlib_format[13],fmt,cst_Sub);
         case 3:return caml_call2(Stdlib_format[13],fmt,cst_Lsr);
         case 4:return caml_call2(Stdlib_format[13],fmt,cst_Lsl);
         case 5:return caml_call2(Stdlib_format[13],fmt,cst_Xor);
         case 6:return caml_call2(Stdlib_format[13],fmt,cst_Ediv);
         case 7:return caml_call2(Stdlib_format[13],fmt,cst_And);
         case 8:return caml_call2(Stdlib_format[13],fmt,cst_Or);
         case 9:return caml_call2(Stdlib_format[13],fmt,cst_Cons);
         case 10:return caml_call2(Stdlib_format[13],fmt,cst_Compare);
         case 11:return caml_call2(Stdlib_format[13],fmt,cst_Concat2);
         case 12:return caml_call2(Stdlib_format[13],fmt,cst_Get);
         case 13:return caml_call2(Stdlib_format[13],fmt,cst_Mem);
         case 14:return caml_call2(Stdlib_format[13],fmt,cst_Exec);
         case 15:return caml_call2(Stdlib_format[13],fmt,cst_Apply);
         case 16:
          return caml_call2(Stdlib_format[13],fmt,cst_Sapling_verify_update);
         case 17:return caml_call2(Stdlib_format[13],fmt,cst_Ticket);
         default:return caml_call2(Stdlib_format[13],fmt,cst_Split_ticket)}
      else
       {if(0 === param[0])
         {var a1=param[2],a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_X_);
          if(a0)
           {var x=a0[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$7);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_Y_),x);
            caml_call2(Stdlib_format[13],fmt,cst$6)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$6);
          caml_call2(Stdlib_format[123],fmt,_Z_);
          if(a1)
           {var x$0=a1[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$8);
            caml_call1(caml_call2(Stdlib_format[123],fmt,___),x$0);
            caml_call2(Stdlib_format[13],fmt,cst$7)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$7);
          return caml_call2(Stdlib_format[123],fmt,_$_)}
        var a0$0=param[1];
        caml_call2(Stdlib_format[123],fmt,_aa_);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_ab_),a0$0);
        return caml_call2(Stdlib_format[123],fmt,_ac_)}}
    function show_prim2(x)
     {return caml_call3(Stdlib_format[127],_ad_,pp_prim2,x)}
    function equal_prim3(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 1;break;
        case 1:if(1 === rhs)return 1;break;
        case 2:if(2 === rhs)return 1;break;
        case 3:if(3 === rhs)return 1;break;
        default:if(4 <= rhs)return 1}
      return 0}
    function compare_prim3(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 0;break;
        case 1:if(1 === rhs)return 0;break;
        case 2:if(2 === rhs)return 0;break;
        case 3:if(3 === rhs)return 0;break;
        default:if(4 <= rhs)return 0}
      function to_int(param)
       {switch(param)
         {case 0:return 0;
          case 1:return 1;
          case 2:return 2;
          case 3:return 3;
          default:return 4}}
      var _dK_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_dK_)}
    function pp_prim3(fmt,param)
     {switch(param)
       {case 0:return caml_call2(Stdlib_format[13],fmt,cst_Slice);
        case 1:return caml_call2(Stdlib_format[13],fmt,cst_Update);
        case 2:return caml_call2(Stdlib_format[13],fmt,cst_Get_and_update);
        case 3:return caml_call2(Stdlib_format[13],fmt,cst_Transfer_tokens);
        default:return caml_call2(Stdlib_format[13],fmt,cst_Check_signature)}}
    function show_prim3(x)
     {return caml_call3(Stdlib_format[127],_ae_,pp_prim3,x)}
    var
     Michelson_base_Primitive=
      [0,
       equal_prim0,
       compare_prim0,
       pp_prim0,
       show_prim0,
       map_prim0,
       fold_prim0,
       equal_prim1,
       compare_prim1,
       pp_prim1,
       show_prim1,
       map_prim1,
       equal_prim1_fail,
       compare_prim1_fail,
       pp_prim1_fail,
       show_prim1_fail,
       equal_prim2,
       compare_prim2,
       pp_prim2,
       show_prim2,
       equal_prim3,
       compare_prim3,
       pp_prim3,
       show_prim3];
    caml_register_global
     (318,Michelson_base_Primitive,"Michelson_base__Primitive");
    function equal_type0(lhs,match)
     {if(typeof lhs === "number")
       switch(lhs)
        {case 0:if(typeof match === "number" && ! match)return 1;break;
         case 1:if(typeof match === "number" && 1 === match)return 1;break;
         case 2:if(typeof match === "number" && 2 === match)return 1;break;
         case 3:if(typeof match === "number" && 3 === match)return 1;break;
         case 4:if(typeof match === "number" && 4 === match)return 1;break;
         case 5:if(typeof match === "number" && 5 === match)return 1;break;
         case 6:if(typeof match === "number" && 6 === match)return 1;break;
         case 7:if(typeof match === "number" && 7 === match)return 1;break;
         case 8:if(typeof match === "number" && 8 === match)return 1;break;
         case 9:if(typeof match === "number" && 9 === match)return 1;break;
         case 10:if(typeof match === "number" && 10 === match)return 1;break;
         case 11:if(typeof match === "number" && 11 === match)return 1;break;
         case 12:if(typeof match === "number" && 12 === match)return 1;break;
         case 13:if(typeof match === "number" && 13 === match)return 1;break;
         case 14:if(typeof match === "number" && 14 === match)return 1;break;
         case 15:if(typeof match === "number" && 15 === match)return 1;break;
         case 16:if(typeof match === "number" && 16 === match)return 1;break;
         case 17:if(typeof match === "number" && 17 === match)return 1;break;
         default:if(typeof match === "number" && 18 <= match)return 1}
      else
       if(0 === lhs[0])
        {if(typeof match !== "number" && 0 === match[0])
          {var rhsmemo=match[1],lhsmemo=lhs[1];return lhsmemo === rhsmemo?1:0}}
       else
        if(typeof match !== "number" && 1 === match[0])
         {var rhsmemo$0=match[1],lhsmemo$0=lhs[1];
          return lhsmemo$0 === rhsmemo$0?1:0}
      return 0}
    var compare_type0=function _dJ_(_dH_,_dI_){return _dJ_.fun(_dH_,_dI_)};
    caml_update_dummy
     (compare_type0,
      function(lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 0;break;
           case 1:if(typeof match === "number" && 1 === match)return 0;break;
           case 2:if(typeof match === "number" && 2 === match)return 0;break;
           case 3:if(typeof match === "number" && 3 === match)return 0;break;
           case 4:if(typeof match === "number" && 4 === match)return 0;break;
           case 5:if(typeof match === "number" && 5 === match)return 0;break;
           case 6:if(typeof match === "number" && 6 === match)return 0;break;
           case 7:if(typeof match === "number" && 7 === match)return 0;break;
           case 8:if(typeof match === "number" && 8 === match)return 0;break;
           case 9:if(typeof match === "number" && 9 === match)return 0;break;
           case 10:
            if(typeof match === "number" && 10 === match)return 0;break;
           case 11:
            if(typeof match === "number" && 11 === match)return 0;break;
           case 12:
            if(typeof match === "number" && 12 === match)return 0;break;
           case 13:
            if(typeof match === "number" && 13 === match)return 0;break;
           case 14:
            if(typeof match === "number" && 14 === match)return 0;break;
           case 15:
            if(typeof match === "number" && 15 === match)return 0;break;
           case 16:
            if(typeof match === "number" && 16 === match)return 0;break;
           case 17:
            if(typeof match === "number" && 17 === match)return 0;break;
           default:if(typeof match === "number" && 18 <= match)return 0}
        else
         if(0 === lhs[0])
          {if(typeof match !== "number" && 0 === match[0])
            {var rhsmemo=match[1],lhsmemo=lhs[1];
             return caml_int_compare(lhsmemo,rhsmemo)}}
         else
          if(typeof match !== "number" && 1 === match[0])
           {var rhsmemo$0=match[1],lhsmemo$0=lhs[1];
            return caml_int_compare(lhsmemo$0,rhsmemo$0)}
        function to_int(param)
         {if(typeof param === "number")
           switch(param)
            {case 0:return 0;
             case 1:return 1;
             case 2:return 2;
             case 3:return 3;
             case 4:return 4;
             case 5:return 5;
             case 6:return 6;
             case 7:return 7;
             case 8:return 8;
             case 9:return 9;
             case 10:return 10;
             case 11:return 11;
             case 12:return 12;
             case 13:return 13;
             case 14:return 14;
             case 15:return 17;
             case 16:return 18;
             case 17:return 19;
             default:return 20}
          else
           return 0 === param[0]?15:16}
        var _dG_=to_int(match);
        return caml_int_compare(to_int(lhs),_dG_)});
    function pp_type0(fmt,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[13],fmt,cst_T_unit);
         case 1:return caml_call2(Stdlib_format[13],fmt,cst_T_bool);
         case 2:return caml_call2(Stdlib_format[13],fmt,cst_T_nat);
         case 3:return caml_call2(Stdlib_format[13],fmt,cst_T_int);
         case 4:return caml_call2(Stdlib_format[13],fmt,cst_T_mutez);
         case 5:return caml_call2(Stdlib_format[13],fmt,cst_T_string);
         case 6:return caml_call2(Stdlib_format[13],fmt,cst_T_bytes);
         case 7:return caml_call2(Stdlib_format[13],fmt,cst_T_chain_id);
         case 8:return caml_call2(Stdlib_format[13],fmt,cst_T_timestamp);
         case 9:return caml_call2(Stdlib_format[13],fmt,cst_T_address);
         case 10:return caml_call2(Stdlib_format[13],fmt,cst_T_key);
         case 11:return caml_call2(Stdlib_format[13],fmt,cst_T_key_hash);
         case 12:return caml_call2(Stdlib_format[13],fmt,cst_T_baker_hash);
         case 13:return caml_call2(Stdlib_format[13],fmt,cst_T_signature);
         case 14:return caml_call2(Stdlib_format[13],fmt,cst_T_operation);
         case 15:return caml_call2(Stdlib_format[13],fmt,cst_T_never);
         case 16:return caml_call2(Stdlib_format[13],fmt,cst_T_bls12_381_g1);
         case 17:return caml_call2(Stdlib_format[13],fmt,cst_T_bls12_381_g2);
         default:return caml_call2(Stdlib_format[13],fmt,cst_T_bls12_381_fr)}
      else
       {if(0 === param[0])
         {var amemo=param[1];
          caml_call2(Stdlib_format[123],fmt,_af_);
          caml_call3(Stdlib_format[123],fmt,_ag_,cst_memo$0);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_ah_),amemo);
          caml_call2(Stdlib_format[123],fmt,_ai_);
          return caml_call2(Stdlib_format[123],fmt,_aj_)}
        var amemo$0=param[1];
        caml_call2(Stdlib_format[123],fmt,_ak_);
        caml_call3(Stdlib_format[123],fmt,_al_,cst_memo$1);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_am_),amemo$0);
        caml_call2(Stdlib_format[123],fmt,_an_);
        return caml_call2(Stdlib_format[123],fmt,_ao_)}}
    function show_type0(x)
     {return caml_call3(Stdlib_format[127],_ap_,pp_type0,x)}
    function equal_type1(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 1;break;
        case 1:if(1 === rhs)return 1;break;
        case 2:if(2 === rhs)return 1;break;
        case 3:if(3 === rhs)return 1;break;
        default:if(4 <= rhs)return 1}
      return 0}
    function compare_type1(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 0;break;
        case 1:if(1 === rhs)return 0;break;
        case 2:if(2 === rhs)return 0;break;
        case 3:if(3 === rhs)return 0;break;
        default:if(4 <= rhs)return 0}
      function to_int(param)
       {switch(param)
         {case 0:return 0;
          case 1:return 1;
          case 2:return 2;
          case 3:return 3;
          default:return 4}}
      var _dF_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_dF_)}
    function pp_type1(fmt,param)
     {switch(param)
       {case 0:return caml_call2(Stdlib_format[13],fmt,cst_T_option);
        case 1:return caml_call2(Stdlib_format[13],fmt,cst_T_list);
        case 2:return caml_call2(Stdlib_format[13],fmt,cst_T_set);
        case 3:return caml_call2(Stdlib_format[13],fmt,cst_T_contract);
        default:return caml_call2(Stdlib_format[13],fmt,cst_T_ticket)}}
    function show_type1(x)
     {return caml_call3(Stdlib_format[127],_aq_,pp_type1,x)}
    function equal_type2(lhs,match)
     {if(typeof lhs === "number")
       switch(lhs)
        {case 0:if(typeof match === "number" && ! match)return 1;break;
         case 1:if(typeof match === "number" && 1 === match)return 1;break;
         default:if(typeof match === "number" && 2 <= match)return 1}
      else
       if(0 === lhs[0])
        {if(typeof match !== "number" && 0 === match[0])
          {var
            rhsannot_snd=match[2],
            rhsannot_fst=match[1],
            lhsannot_snd=lhs[2],
            lhsannot_fst=lhs[1],
            switch$0=0;
           if(lhsannot_fst)
            if(rhsannot_fst)
             var
              b=rhsannot_fst[1],
              a=lhsannot_fst[1],
              _dD_=caml_string_equal(a,b);
            else
             switch$0 = 1;
           else
            if(rhsannot_fst)switch$0 = 1;else var _dD_=1;
           if(switch$0)var _dD_=0;
           if(_dD_)
            {if(lhsannot_snd)
              {if(rhsannot_snd)
                {var b$0=rhsannot_snd[1],a$0=lhsannot_snd[1];
                 return caml_string_equal(a$0,b$0)}}
             else
              if(! rhsannot_snd)return 1;
             return 0}
           return _dD_}}
       else
        if(typeof match !== "number" && 1 === match[0])
         {var
           rhsannot_right=match[2],
           rhsannot_left=match[1],
           lhsannot_right=lhs[2],
           lhsannot_left=lhs[1],
           switch$1=0;
          if(lhsannot_left)
           if(rhsannot_left)
            var
             b$1=rhsannot_left[1],
             a$1=lhsannot_left[1],
             _dE_=caml_string_equal(a$1,b$1);
           else
            switch$1 = 1;
          else
           if(rhsannot_left)switch$1 = 1;else var _dE_=1;
          if(switch$1)var _dE_=0;
          if(_dE_)
           {if(lhsannot_right)
             {if(rhsannot_right)
               {var b$2=rhsannot_right[1],a$2=lhsannot_right[1];
                return caml_string_equal(a$2,b$2)}}
            else
             if(! rhsannot_right)return 1;
            return 0}
          return _dE_}
      return 0}
    var compare_type2=function _dC_(_dA_,_dB_){return _dC_.fun(_dA_,_dB_)};
    caml_update_dummy
     (compare_type2,
      function(lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 0;break;
           case 1:if(typeof match === "number" && 1 === match)return 0;break;
           default:if(typeof match === "number" && 2 <= match)return 0}
        else
         if(0 === lhs[0])
          {if(typeof match !== "number" && 0 === match[0])
            {var
              rhsannot_snd=match[2],
              rhsannot_fst=match[1],
              lhsannot_snd=lhs[2],
              lhsannot_fst=lhs[1];
             if(lhsannot_fst)
              {var _dw_=lhsannot_fst[1];
               if(rhsannot_fst)
                var b=rhsannot_fst[1],x=caml_string_compare(_dw_,b);
               else
                var x=1}
             else
              var x=rhsannot_fst?-1:0;
             if(0 === x)
              {if(lhsannot_snd)
                {var _dx_=lhsannot_snd[1];
                 if(rhsannot_snd)
                  {var b$0=rhsannot_snd[1];
                   return caml_string_compare(_dx_,b$0)}
                 return 1}
               return rhsannot_snd?-1:0}
             return x}}
         else
          if(typeof match !== "number" && 1 === match[0])
           {var
             rhsannot_right=match[2],
             rhsannot_left=match[1],
             lhsannot_right=lhs[2],
             lhsannot_left=lhs[1];
            if(lhsannot_left)
             {var _dy_=lhsannot_left[1];
              if(rhsannot_left)
               var b$1=rhsannot_left[1],x$0=caml_string_compare(_dy_,b$1);
              else
               var x$0=1}
            else
             var x$0=rhsannot_left?-1:0;
            if(0 === x$0)
             {if(lhsannot_right)
               {var _dz_=lhsannot_right[1];
                if(rhsannot_right)
                 {var b$2=rhsannot_right[1];
                  return caml_string_compare(_dz_,b$2)}
                return 1}
              return rhsannot_right?-1:0}
            return x$0}
        function to_int(param)
         {if(typeof param === "number")
           switch(param){case 0:return 0;case 1:return 1;default:return 2}
          else
           return 0 === param[0]?3:4}
        var _dv_=to_int(match);
        return caml_int_compare(to_int(lhs),_dv_)});
    function pp_type2(fmt,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[13],fmt,cst_T_lambda);
         case 1:return caml_call2(Stdlib_format[13],fmt,cst_T_map);
         default:return caml_call2(Stdlib_format[13],fmt,cst_T_big_map)}
      else
       {if(0 === param[0])
         {var aannot_snd=param[2],aannot_fst=param[1];
          caml_call2(Stdlib_format[123],fmt,_ar_);
          caml_call3(Stdlib_format[123],fmt,_as_,cst_annot_fst);
          if(aannot_fst)
           {var x=aannot_fst[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$9);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_at_),x);
            caml_call2(Stdlib_format[13],fmt,cst$8)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$8);
          caml_call2(Stdlib_format[123],fmt,_au_);
          caml_call2(Stdlib_format[123],fmt,_av_);
          caml_call3(Stdlib_format[123],fmt,_aw_,cst_annot_snd);
          if(aannot_snd)
           {var x$0=aannot_snd[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$10);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_ax_),x$0);
            caml_call2(Stdlib_format[13],fmt,cst$9)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$9);
          caml_call2(Stdlib_format[123],fmt,_ay_);
          return caml_call2(Stdlib_format[123],fmt,_az_)}
        var aannot_right=param[2],aannot_left=param[1];
        caml_call2(Stdlib_format[123],fmt,_aA_);
        caml_call3(Stdlib_format[123],fmt,_aB_,cst_annot_left);
        if(aannot_left)
         {var x$1=aannot_left[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$11);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_aC_),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$10)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$10);
        caml_call2(Stdlib_format[123],fmt,_aD_);
        caml_call2(Stdlib_format[123],fmt,_aE_);
        caml_call3(Stdlib_format[123],fmt,_aF_,cst_annot_right);
        if(aannot_right)
         {var x$2=aannot_right[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$12);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_aG_),x$2);
          caml_call2(Stdlib_format[13],fmt,cst$11)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$11);
        caml_call2(Stdlib_format[123],fmt,_aH_);
        return caml_call2(Stdlib_format[123],fmt,_aI_)}}
    function show_type2(x)
     {return caml_call3(Stdlib_format[127],_aJ_,pp_type2,x)}
    function string_of_type0(param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return _aK_;
         case 1:return _aL_;
         case 2:return _aM_;
         case 3:return _aN_;
         case 4:return _aO_;
         case 5:return _aP_;
         case 6:return _aQ_;
         case 7:return _aR_;
         case 8:return _aS_;
         case 9:return _aT_;
         case 10:return _aU_;
         case 11:return _aV_;
         case 12:return _aW_;
         case 13:return _aX_;
         case 14:return _aY_;
         case 15:return _aZ_;
         case 16:return _a0_;
         case 17:return _a1_;
         default:return _a2_}
      else
       {if(0 === param[0])
         {var memo=param[1];
          return [0,cst_sapling_state,[0,caml_call1(Stdlib[33],memo)]]}
        var memo$0=param[1];
        return [0,cst_sapling_transaction,[0,caml_call1(Stdlib[33],memo$0)]]}}
    function string_of_type1(param)
     {switch(param)
       {case 0:return cst_option;
        case 1:return cst_list;
        case 2:return cst_set;
        case 3:return cst_contract;
        default:return cst_ticket}}
    function string_of_type2(param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return _a3_;case 1:return _a4_;default:return _a5_}
      else
       {if(0 === param[0])
         {var annot_snd=param[2],annot_fst=param[1];
          return [0,cst_pair,annot_fst,annot_snd]}
        var annot_right=param[2],annot_left=param[1];
        return [0,cst_or,annot_left,annot_right]}}
    var
     equal_mtype_f=
      function _du_(_dr_,_ds_,_dt_){return _du_.fun(_dr_,_ds_,_dt_)};
    caml_update_dummy
     (equal_mtype_f,
      function(poly_m,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];return equal_type0(lhs0,rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var
              rhs1=match[2],
              rhs0$0=match[1],
              lhs1=lhs[2],
              lhs0$0=lhs[1],
              _dp_=equal_type1(lhs0$0,rhs0$0);
             return _dp_?caml_call2(poly_m,lhs1,rhs1):_dp_}
           break;
          case 2:
           if(2 === match[0])
            {var
              rhs2=match[3],
              rhs1$0=match[2],
              rhs0$1=match[1],
              lhs2=lhs[3],
              lhs1$0=lhs[2],
              lhs0$1=lhs[1],
              _dq_=equal_type2(lhs0$1,rhs0$1),
              _do_=_dq_?caml_call2(poly_m,lhs1$0,rhs1$0):_dq_;
             return _do_?caml_call2(poly_m,lhs2,rhs2):_do_}
           break;
          default:
           if(3 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1];
             return caml_string_equal(lhs0$2,rhs0$2)}}
        return 0});
    var
     compare_mtype_f=
      function _dn_(_dk_,_dl_,_dm_){return _dn_.fun(_dk_,_dl_,_dm_)};
    caml_update_dummy
     (compare_mtype_f,
      function(poly_m,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_call1(caml_call1(compare_type0,lhs0),rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var
              rhs1=match[2],
              rhs0$0=match[1],
              lhs1=lhs[2],
              lhs0$0=lhs[1],
              x$1=compare_type1(lhs0$0,rhs0$0);
             return 0 === x$1?caml_call2(poly_m,lhs1,rhs1):x$1}
           break;
          case 2:
           if(2 === match[0])
            {var
              rhs2=match[3],
              rhs1$0=match[2],
              rhs0$1=match[1],
              lhs2=lhs[3],
              lhs1$0=lhs[2],
              lhs0$1=lhs[1],
              x=caml_call1(caml_call1(compare_type2,lhs0$1),rhs0$1);
             if(0 === x)
              {var x$0=caml_call2(poly_m,lhs1$0,rhs1$0);
               return 0 === x$0?caml_call2(poly_m,lhs2,rhs2):x$0}
             return x}
           break;
          default:
           if(3 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1];
             return caml_string_compare(lhs0$2,rhs0$2)}}
        function to_int(param)
         {switch(param[0])
           {case 0:return 0;case 1:return 1;case 2:return 2;default:return 3}}
        var _dj_=to_int(match);
        return caml_int_compare(to_int(lhs),_dj_)});
    function fold_mtype_f(poly_m,acc,param)
     {switch(param[0])
       {case 0:return acc;
        case 1:var a1=param[2];return caml_call2(poly_m,acc,a1);
        case 2:
         var a2=param[3],a1$0=param[2],acc$0=caml_call2(poly_m,acc,a1$0);
         return caml_call2(poly_m,acc$0,a2);
        default:return acc}}
    function map_mtype_f(poly_m,param)
     {switch(param[0])
       {case 0:var a0=param[1];return [0,a0];
        case 1:
         var a1=param[2],a0$0=param[1];return [1,a0$0,caml_call1(poly_m,a1)];
        case 2:
         var
          a2=param[3],
          a1$0=param[2],
          a0$1=param[1],
          _di_=caml_call1(poly_m,a2);
         return [2,a0$1,caml_call1(poly_m,a1$0),_di_];
        default:var a0$2=param[1];return [3,a0$2]}}
    var
     pp_mtype_f=function _dh_(_de_,_df_,_dg_){return _dh_.fun(_de_,_df_,_dg_)},
     show_mtype_f=function _dd_(_db_,_dc_){return _dd_.fun(_db_,_dc_)};
    caml_update_dummy
     (pp_mtype_f,
      function(poly_m,fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_a6_);
           pp_type0(fmt,a0);
           return caml_call2(Stdlib_format[123],fmt,_a7_);
          case 1:
           var a1=param[2],a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_a8_);
           pp_type1(fmt,a0$0);
           caml_call2(Stdlib_format[123],fmt,_a9_);
           caml_call1(caml_call1(poly_m,fmt),a1);
           return caml_call2(Stdlib_format[123],fmt,_a__);
          case 2:
           var a2=param[3],a1$0=param[2],a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_a$_);
           pp_type2(fmt,a0$1);
           caml_call2(Stdlib_format[123],fmt,_ba_);
           caml_call1(caml_call1(poly_m,fmt),a1$0);
           caml_call2(Stdlib_format[123],fmt,_bb_);
           caml_call1(caml_call1(poly_m,fmt),a2);
           return caml_call2(Stdlib_format[123],fmt,_bc_);
          default:
           var a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_bd_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_be_),a0$2);
           return caml_call2(Stdlib_format[123],fmt,_bf_)}});
    caml_update_dummy
     (show_mtype_f,
      function(poly_m,x)
       {var _da_=caml_call1(pp_mtype_f,poly_m);
        return caml_call3(Stdlib_format[127],_bg_,_da_,x)});
    var equal_mtype=function _c$_(_c9_,_c__){return _c$_.fun(_c9_,_c__)};
    caml_update_dummy
     (equal_mtype,
      function(lhs,rhs)
       {var
         _c0_=rhs[1],
         _c1_=lhs[1],
         _c2_=
          caml_call1
           (caml_call1
             (caml_call1
               (equal_mtype_f,function(x){return caml_call1(equal_mtype,x)}),
              _c1_),
            _c0_);
        if(_c2_)
         {var _c3_=rhs[2],_c4_=lhs[2],switch$0=0;
          if(_c4_)
           if(_c3_)
            var b=_c3_[1],a=_c4_[1],_c5_=caml_string_equal(a,b);
           else
            switch$0 = 1;
          else
           if(_c3_)switch$0 = 1;else var _c5_=1;
          if(switch$0)var _c5_=0;
          var _c6_=_c5_}
        else
         var _c6_=_c2_;
        if(_c6_)
         {var _c7_=rhs[3],_c8_=lhs[3];
          if(_c8_)
           {if(_c7_)
             {var b$0=_c7_[1],a$0=_c8_[1];return caml_string_equal(a$0,b$0)}}
          else
           if(! _c7_)return 1;
          return 0}
        return _c6_});
    var compare_mtype=function _cZ_(_cX_,_cY_){return _cZ_.fun(_cX_,_cY_)};
    caml_update_dummy
     (compare_mtype,
      function(lhs,rhs)
       {var
         _cP_=rhs[1],
         _cQ_=lhs[1],
         x=
          caml_call1
           (caml_call1
             (caml_call1
               (compare_mtype_f,
                function(x){return caml_call1(compare_mtype,x)}),
              _cQ_),
            _cP_);
        if(0 === x)
         {var _cR_=rhs[2],_cS_=lhs[2];
          if(_cS_)
           {var _cT_=_cS_[1];
            if(_cR_)
             var b=_cR_[1],x$0=caml_string_compare(_cT_,b);
            else
             var x$0=1}
          else
           var x$0=_cR_?-1:0;
          if(0 === x$0)
           {var _cU_=rhs[3],_cV_=lhs[3];
            if(_cV_)
             {var _cW_=_cV_[1];
              if(_cU_){var b$0=_cU_[1];return caml_string_compare(_cW_,b$0)}
              return 1}
            return _cU_?-1:0}
          return x$0}
        return x});
    var
     pp_mtype=function _cO_(_cM_,_cN_){return _cO_.fun(_cM_,_cN_)},
     show_mtype=function _cL_(_cK_){return _cL_.fun(_cK_)};
    caml_update_dummy
     (pp_mtype,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_bh_);
        caml_call3(Stdlib_format[123],fmt,_bi_,cst_mt);
        var _cH_=x[1];
        caml_call1
         (caml_call2
           (pp_mtype_f,function(fmt){return caml_call1(pp_mtype,fmt)},fmt),
          _cH_);
        caml_call2(Stdlib_format[123],fmt,_bj_);
        caml_call2(Stdlib_format[123],fmt,_bk_);
        caml_call3(Stdlib_format[123],fmt,_bl_,cst_annot_type);
        var _cI_=x[2];
        if(_cI_)
         {var x$0=_cI_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$13);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_bm_),x$0);
          caml_call2(Stdlib_format[13],fmt,cst$12)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$12);
        caml_call2(Stdlib_format[123],fmt,_bn_);
        caml_call2(Stdlib_format[123],fmt,_bo_);
        caml_call3(Stdlib_format[123],fmt,_bp_,cst_annot_variable);
        var _cJ_=x[3];
        if(_cJ_)
         {var x$1=_cJ_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$14);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_bq_),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$13)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$13);
        caml_call2(Stdlib_format[123],fmt,_br_);
        return caml_call2(Stdlib_format[123],fmt,_bs_)});
    caml_update_dummy
     (show_mtype,
      function(x){return caml_call3(Stdlib_format[127],_bt_,pp_mtype,x)});
    function mk_mtype(annot_type,annot_variable,mt)
     {return [0,mt,annot_type,annot_variable]}
    function cata_mtype(f,param)
     {var annot_variable=param[3],annot_type=param[2],mt=param[1];
      return caml_call3
              (f,
               annot_type,
               annot_variable,
               map_mtype_f(function(_cG_){return cata_mtype(f,_cG_)},mt))}
    function mt0(t){return [0,[0,t],0,0]}
    function mt1(t,t1){return [0,[1,t,t1],0,0]}
    function mt2(t,t1,t2){return [0,[2,t,t1,t2],0,0]}
    var
     mt_unit=mt0(0),
     mt_bool=mt0(1),
     mt_nat=mt0(2),
     mt_int=mt0(3),
     mt_mutez=mt0(4),
     mt_string=mt0(5),
     mt_bytes=mt0(6),
     mt_chain_id=mt0(7),
     mt_timestamp=mt0(8),
     mt_address=mt0(9),
     mt_key=mt0(10),
     mt_key_hash=mt0(11),
     mt_baker_hash=mt0(12),
     mt_signature=mt0(13),
     mt_operation=mt0(14);
    function mt_sapling_state(memo){return mt0([0,memo])}
    function mt_sapling_transaction(memo){return mt0([1,memo])}
    var
     mt_never=mt0(15),
     mt_bls12_381_g1=mt0(16),
     mt_bls12_381_g2=mt0(17),
     mt_bls12_381_fr=mt0(18),
     _bu_=0;
    function mt_option(_cF_){return mt1(_bu_,_cF_)}
    var _bv_=1;
    function mt_list(_cE_){return mt1(_bv_,_cE_)}
    var _bw_=2;
    function mt_set(_cD_){return mt1(_bw_,_cD_)}
    var _bx_=3;
    function mt_contract(_cC_){return mt1(_bx_,_cC_)}
    var _by_=4;
    function mt_ticket(_cB_){return mt1(_by_,_cB_)}
    function mt_lambda(t1,t2){return [0,[2,0,t1,t2],0,0]}
    function mt_map(t1,t2){return [0,[2,1,t1,t2],0,0]}
    function mt_big_map(t1,t2){return [0,[2,2,t1,t2],0,0]}
    function mt_pair(annot_fst,annot_snd)
     {var _cy_=[0,annot_fst,annot_snd];
      return function(_cz_,_cA_){return mt2(_cy_,_cz_,_cA_)}}
    function mt_or(annot_left,annot_right)
     {var _cv_=[1,annot_left,annot_right];
      return function(_cw_,_cx_){return mt2(_cv_,_cw_,_cx_)}}
    function mt_var(s){return [0,[3,s],0,0]}
    var
     Michelson_base_Type=
      [0,
       equal_type0,
       compare_type0,
       pp_type0,
       show_type0,
       equal_type1,
       compare_type1,
       pp_type1,
       show_type1,
       equal_type2,
       compare_type2,
       pp_type2,
       show_type2,
       string_of_type0,
       string_of_type1,
       string_of_type2,
       equal_mtype_f,
       compare_mtype_f,
       pp_mtype_f,
       show_mtype_f,
       map_mtype_f,
       fold_mtype_f,
       equal_mtype,
       compare_mtype,
       pp_mtype,
       show_mtype,
       cata_mtype,
       mk_mtype,
       mt0,
       mt1,
       mt2,
       mt_unit,
       mt_bool,
       mt_nat,
       mt_int,
       mt_mutez,
       mt_string,
       mt_bytes,
       mt_chain_id,
       mt_timestamp,
       mt_address,
       mt_key,
       mt_key_hash,
       mt_baker_hash,
       mt_signature,
       mt_operation,
       mt_sapling_state,
       mt_sapling_transaction,
       mt_never,
       mt_bls12_381_g1,
       mt_bls12_381_g2,
       mt_bls12_381_fr,
       mt_option,
       mt_list,
       mt_set,
       mt_contract,
       mt_ticket,
       mt_lambda,
       mt_map,
       mt_big_map,
       mt_pair,
       mt_or,
       mt_var];
    caml_register_global(320,Michelson_base_Type,"Michelson_base__Type");
    function unify_annots(pref,tolerant,a,match)
     {if(a && match)
       {var b=match[1],a$0=a[1];
        return caml_string_equal(a$0,b)
                ?[0,[0,a$0]]
                :runtime.caml_equal(tolerant,_bz_)
                  ?_bA_
                  :[1,caml_call5(Stdlib_printf[4],_bB_,pref,a$0,pref,b)]}
      return _bC_}
    function unify_types(t,u)
     {function mk(param)
       {var
         mt=param[1],
         match=unify_annots(cst$14,0,t[2],u[2]),
         match$0=unify_annots(cst$15,_bD_,t[3],u[3]);
        if(0 === match[0])
         {var _cu_=match[1];
          if(0 === match$0[0])
           {var annot_variable=match$0[1];
            return [0,[0,mt,_cu_,annot_variable]]}
          var e=match$0[1]}
        else
         var e=match[1];
        return [1,e]}
      function err(param)
       {var _cs_=caml_call1(show_mtype,u),_ct_=caml_call1(show_mtype,t);
        return [1,caml_call3(Stdlib_printf[4],_bE_,_ct_,_cs_)]}
      var _bP_=t[1],_bQ_=u[1];
      switch(_bP_[0])
       {case 0:
         if(0 === _bQ_[0])
          {var t2=_bQ_[1],t1=_bP_[1];return equal_type0(t1,t2)?mk(t):err(0)}
         break;
        case 1:
         switch(_bP_[1])
          {case 0:
            if(1 === _bQ_[0] && ! _bQ_[1])
             {var u$0=_bQ_[2],t$0=_bP_[2],_bR_=unify_types(t$0,u$0);
              return caml_call2(Utils_Control[15][12],mt_option,_bR_)}
            break;
           case 1:
            if(1 === _bQ_[0] && 1 === _bQ_[1])
             {var u$1=_bQ_[2],t$1=_bP_[2],_bS_=unify_types(t$1,u$1);
              return caml_call2(Utils_Control[15][12],mt_list,_bS_)}
            break;
           case 2:
            if(1 === _bQ_[0] && 2 === _bQ_[1])
             {var u$2=_bQ_[2],t$2=_bP_[2],_bT_=unify_types(t$2,u$2);
              return caml_call2(Utils_Control[15][12],mt_set,_bT_)}
            break;
           case 3:
            if(1 === _bQ_[0] && 3 === _bQ_[1])
             {var u$3=_bQ_[2],t$3=_bP_[2],_bU_=unify_types(t$3,u$3);
              return caml_call2(Utils_Control[15][12],mt_contract,_bU_)}
            break;
           default:
            if(1 === _bQ_[0] && 4 <= _bQ_[1])
             {var u$4=_bQ_[2],t$4=_bP_[2],_bV_=unify_types(t$4,u$4);
              return caml_call2(Utils_Control[15][12],mt_ticket,_bV_)}}
         break;
        case 2:
         var _bW_=_bP_[1];
         if(typeof _bW_ === "number")
          switch(_bW_)
           {case 0:
             if(2 === _bQ_[0])
              {var _bX_=_bQ_[1];
               if(typeof _bX_ === "number" && ! _bX_)
                {var
                  u2=_bQ_[3],
                  u1=_bQ_[2],
                  t2$0=_bP_[3],
                  t1$0=_bP_[2],
                  _bY_=unify_types(t2$0,u2),
                  _bZ_=unify_types(t1$0,u1),
                  _b0_=caml_call2(Utils_Control[15][12],mt_lambda,_bZ_),
                  _b1_=caml_call2(Utils_Control[15][16],_b0_,_bY_);
                 return caml_call2(Utils_Control[15][34],_b1_,mk)}}
             break;
            case 1:
             if(2 === _bQ_[0])
              {var _b2_=_bQ_[1];
               if(typeof _b2_ === "number" && 1 === _b2_)
                {var
                  u2$0=_bQ_[3],
                  u1$0=_bQ_[2],
                  t2$1=_bP_[3],
                  t1$1=_bP_[2],
                  _b3_=unify_types(t2$1,u2$0),
                  _b4_=unify_types(t1$1,u1$0),
                  _b5_=caml_call2(Utils_Control[15][12],mt_map,_b4_),
                  _b6_=caml_call2(Utils_Control[15][16],_b5_,_b3_);
                 return caml_call2(Utils_Control[15][34],_b6_,mk)}}
             break;
            default:
             if(2 === _bQ_[0])
              {var _b7_=_bQ_[1];
               if(typeof _b7_ === "number" && 2 <= _b7_)
                {var
                  u2$1=_bQ_[3],
                  u1$1=_bQ_[2],
                  t2$2=_bP_[3],
                  t1$2=_bP_[2],
                  _b8_=unify_types(t2$2,u2$1),
                  _b9_=unify_types(t1$2,u1$1),
                  _b__=caml_call2(Utils_Control[15][12],mt_big_map,_b9_),
                  _b$_=caml_call2(Utils_Control[15][16],_b__,_b8_);
                 return caml_call2(Utils_Control[15][34],_b$_,mk)}}}
         else
          if(0 === _bW_[0])
           {if(2 === _bQ_[0])
             {var _ca_=_bQ_[1];
              if(typeof _ca_ !== "number" && 1 !== _ca_[0])
               {var
                 u2$2=_bQ_[3],
                 u1$2=_bQ_[2],
                 b2=_ca_[2],
                 b1=_ca_[1],
                 t2$3=_bP_[3],
                 t1$3=_bP_[2],
                 a2=_bW_[2],
                 a1=_bW_[1],
                 _cb_=
                  function(annot_fst)
                   {function _cg_(v1)
                     {function _ci_(annot_snd)
                       {function _ck_(v2)
                         {return mk(caml_call2(mt_pair(annot_fst,annot_snd),v1,v2))}
                        var _cl_=unify_types(t2$3,u2$2);
                        return caml_call2(Utils_Control[15][31],_cl_,_ck_)}
                      var _cj_=unify_annots(cst$16,0,a2,b2);
                      return caml_call2(Utils_Control[15][31],_cj_,_ci_)}
                    var _ch_=unify_types(t1$3,u1$2);
                    return caml_call2(Utils_Control[15][31],_ch_,_cg_)},
                 _cc_=unify_annots(cst$17,0,a1,b1);
                return caml_call2(Utils_Control[15][31],_cc_,_cb_)}}}
          else
           if(2 === _bQ_[0])
            {var _cd_=_bQ_[1];
             if(typeof _cd_ !== "number" && 0 !== _cd_[0])
              {var
                u2$3=_bQ_[3],
                u1$3=_bQ_[2],
                b2$0=_cd_[2],
                b1$0=_cd_[1],
                t2$4=_bP_[3],
                t1$4=_bP_[2],
                a2$0=_bW_[2],
                a1$0=_bW_[1],
                _ce_=
                 function(annot_left)
                  {function _cm_(v1)
                    {function _co_(annot_right)
                      {function _cq_(v2)
                        {return mk(caml_call2(mt_or(annot_left,annot_right),v1,v2))}
                       var _cr_=unify_types(t2$4,u2$3);
                       return caml_call2(Utils_Control[15][31],_cr_,_cq_)}
                     var _cp_=unify_annots(cst$18,0,a2$0,b2$0);
                     return caml_call2(Utils_Control[15][31],_cp_,_co_)}
                   var _cn_=unify_types(t1$4,u1$3);
                   return caml_call2(Utils_Control[15][31],_cn_,_cm_)},
                _cf_=unify_annots(cst$19,0,a1$0,b1$0);
               return caml_call2(Utils_Control[15][31],_cf_,_ce_)}}
         break;
        default:
         if(3 === _bQ_[0])
          {var u_name=_bQ_[1],t_name=_bP_[1];
           if(caml_string_equal(t_name,u_name))return mk(mt_var(t_name))}}
      return err(0)}
    function type_prim0(param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return [0,mt_address[1],mt_address[2],_bF_];
         case 1:return [0,mt_address[1],mt_address[2],_bG_];
         case 2:return [0,mt_mutez[1],mt_mutez[2],_bH_];
         case 3:return [0,mt_mutez[1],mt_mutez[2],_bI_];
         case 4:return [0,mt_timestamp[1],mt_timestamp[2],_bJ_];
         case 5:return [0,mt_address[1],mt_address[2],_bK_];
         case 6:return mt_chain_id;
         case 7:return mt_nat
         }
      else
       if(1 === param[0]){var memo=param[1];return mt_sapling_state(memo)}
      throw [0,Assert_failure,_bL_]}
    function type_prim1(param)
     {if(typeof param === "number")
       switch(param)
        {case 4:return [0,mt_int,mt_nat];
         case 7:return [0,mt_int,mt_option(mt_nat)];
         case 13:return [0,mt_bool,mt_bool];
         case 19:return [0,mt_key,mt_key_hash];
         case 20:return [0,mt_bytes,mt_bytes];
         case 21:return [0,mt_bytes,mt_bytes];
         case 22:return [0,mt_bytes,mt_bytes];
         case 23:return [0,mt_bytes,mt_bytes];
         case 24:return [0,mt_bytes,mt_bytes]
         }
      throw [0,Assert_failure,_bM_]}
    function type_prim2(param)
     {if(typeof param === "number")
       {if(3 === param)return [0,mt_nat,mt_nat,mt_nat];
        if(4 === param)return [0,mt_nat,mt_nat,mt_nat]}
      throw [0,Assert_failure,_bN_]}
    function type_prim3(param)
     {if(4 <= param)return [0,mt_key,mt_signature,mt_bytes,mt_bool];
      throw [0,Assert_failure,_bO_]}
    var
     Michelson_base_Typing=
      [0,unify_types,type_prim0,type_prim1,type_prim2,type_prim3];
    caml_register_global(324,Michelson_base_Typing,"Michelson_base__Typing");
    return}
  (function(){return this}()));


//# 1 "../michel/.michel.objs/michel.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_equal=runtime.caml_equal,
     caml_register_global=runtime.caml_register_global,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_update_dummy=runtime.caml_update_dummy,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    function caml_call8(f,a0,a1,a2,a3,a4,a5,a6,a7)
     {return f.length == 8
              ?f(a0,a1,a2,a3,a4,a5,a6,a7)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7])}
    function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8)
     {return f.length == 9
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])}
    var
     global_data=runtime.caml_get_global_data(),
     cst$4=caml_string_of_jsbytes("%"),
     cst$2=caml_string_of_jsbytes("%"),
     cst$0=caml_string_of_jsbytes(" "),
     cst$1=caml_string_of_jsbytes(""),
     cst$3=caml_string_of_jsbytes(""),
     cst$5=caml_string_of_jsbytes(""),
     cst$6=caml_string_of_jsbytes(";"),
     cst$7=caml_string_of_jsbytes("|"),
     cst_None$0=caml_string_of_jsbytes("None"),
     cst_Some$0=caml_string_of_jsbytes("Some"),
     cst_Stack_failed=caml_string_of_jsbytes("Stack_failed"),
     cst_Some=caml_string_of_jsbytes("(Some "),
     cst=caml_string_of_jsbytes(")"),
     cst_None=caml_string_of_jsbytes("None"),
     t_unit=[0,0],
     t_nat=[0,2],
     t_int=[0,3],
     t_mutez=[0,4],
     t_string=[0,5],
     t_bytes=[0,6],
     t_bls12_381_g1=[0,16],
     t_bls12_381_g2=[0,17],
     t_bls12_381_fr=[0,18],
     t_chain_id=[0,7],
     t_timestamp=[0,8],
     t_address=[0,9],
     t_key=[0,10],
     t_key_hash=[0,11],
     t_baker_hash=[0,12],
     t_signature=[0,13],
     t_operation=[0,14],
     t_never=[0,15],
     t_bool=[0,1],
     cst_Swap=caml_string_of_jsbytes("Swap"),
     cst_Some$4=caml_string_of_jsbytes("(Some "),
     cst$11=caml_string_of_jsbytes(")"),
     cst_None$4=caml_string_of_jsbytes("None"),
     cst_Some$3=caml_string_of_jsbytes("(Some "),
     cst$10=caml_string_of_jsbytes(")"),
     cst_None$3=caml_string_of_jsbytes("None"),
     cst_Some$6=caml_string_of_jsbytes("(Some "),
     cst$13=caml_string_of_jsbytes(")"),
     cst_None$6=caml_string_of_jsbytes("None"),
     cst_Some$5=caml_string_of_jsbytes("(Some "),
     cst$12=caml_string_of_jsbytes(")"),
     cst_None$5=caml_string_of_jsbytes("None"),
     cst_cons=caml_string_of_jsbytes("cons"),
     cst_var=caml_string_of_jsbytes("var"),
     cst_rhs=caml_string_of_jsbytes("rhs"),
     cst$29=caml_string_of_jsbytes(""),
     cst$30=caml_string_of_jsbytes(""),
     cst$31=caml_string_of_jsbytes(" )"),
     cst$32=caml_string_of_jsbytes("( "),
     cst$33=caml_string_of_jsbytes(""),
     cst$34=caml_string_of_jsbytes(""),
     cst$35=caml_string_of_jsbytes(""),
     cst$36=caml_string_of_jsbytes(""),
     cst$37=caml_string_of_jsbytes(")"),
     cst$38=caml_string_of_jsbytes("("),
     cst$39=caml_string_of_jsbytes(")"),
     cst$40=caml_string_of_jsbytes("("),
     cst$49=caml_string_of_jsbytes("_"),
     cst$46=caml_string_of_jsbytes("."),
     cst$47=caml_string_of_jsbytes("_"),
     cst_loop=caml_string_of_jsbytes("loop"),
     cst_iter=caml_string_of_jsbytes("iter"),
     cst_map=caml_string_of_jsbytes("map"),
     partial=[17,0,0],
     cst$41=caml_string_of_jsbytes(""),
     cst$42=caml_string_of_jsbytes(""),
     cst$43=caml_string_of_jsbytes("_"),
     cst$44=caml_string_of_jsbytes(">"),
     cst$45=caml_string_of_jsbytes("<"),
     partial$0=[17,0,0],
     partial$1=[16,[17,0,0]],
     partial$2=[0,caml_string_of_jsbytes("@;<1 2>"),1,2],
     cst$48=caml_string_of_jsbytes("_"),
     partial$3=
      [11,
       caml_string_of_jsbytes("else"),
       [17,[0,caml_string_of_jsbytes("@;<1 2>"),1,2],[16,[17,0,0]]]],
     partial$4=[0,caml_string_of_jsbytes("@ "),1,0],
     cst_Right=caml_string_of_jsbytes("Right"),
     cst_Left=caml_string_of_jsbytes("Left"),
     cst$50=caml_string_of_jsbytes("_"),
     cst$51=caml_string_of_jsbytes("_"),
     partial$5=
      [16,
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,
         caml_string_of_jsbytes("else"),
         [17,[0,caml_string_of_jsbytes("@;<1 2>"),1,2],[16,[17,0,0]]]]]],
     partial$6=[0,caml_string_of_jsbytes("@;<1 2>"),1,2],
     cst$52=caml_string_of_jsbytes(" "),
     cst$28=caml_string_of_jsbytes("_"),
     cst_Pair=caml_string_of_jsbytes("Pair"),
     cst_expr=caml_string_of_jsbytes("expr"),
     cst_texpr=caml_string_of_jsbytes("texpr"),
     cst_tys=caml_string_of_jsbytes("tys"),
     cst_Some$20=caml_string_of_jsbytes("(Some "),
     cst$27=caml_string_of_jsbytes(")"),
     cst_None$20=caml_string_of_jsbytes("None"),
     cst_Some$19=caml_string_of_jsbytes("(Some "),
     cst$26=caml_string_of_jsbytes(")"),
     cst_None$19=caml_string_of_jsbytes("None"),
     cst_Some$18=caml_string_of_jsbytes("(Some "),
     cst$25=caml_string_of_jsbytes(")"),
     cst_None$18=caml_string_of_jsbytes("None"),
     cst_Some$17=caml_string_of_jsbytes("(Some "),
     cst$24=caml_string_of_jsbytes(")"),
     cst_None$17=caml_string_of_jsbytes("None"),
     cst_Some$16=caml_string_of_jsbytes("(Some "),
     cst$23=caml_string_of_jsbytes(")"),
     cst_None$16=caml_string_of_jsbytes("None"),
     cst_Some$15=caml_string_of_jsbytes("(Some "),
     cst$22=caml_string_of_jsbytes(")"),
     cst_None$15=caml_string_of_jsbytes("None"),
     cst_Some$14=caml_string_of_jsbytes("(Some "),
     cst$21=caml_string_of_jsbytes(")"),
     cst_None$14=caml_string_of_jsbytes("None"),
     cst_Some$13=caml_string_of_jsbytes("(Some "),
     cst$20=caml_string_of_jsbytes(")"),
     cst_None$13=caml_string_of_jsbytes("None"),
     cst_Some$12=caml_string_of_jsbytes("(Some "),
     cst$19=caml_string_of_jsbytes(")"),
     cst_None$12=caml_string_of_jsbytes("None"),
     cst_Some$11=caml_string_of_jsbytes("(Some "),
     cst$18=caml_string_of_jsbytes(")"),
     cst_None$11=caml_string_of_jsbytes("None"),
     cst_Some$10=caml_string_of_jsbytes("(Some "),
     cst$17=caml_string_of_jsbytes(")"),
     cst_None$10=caml_string_of_jsbytes("None"),
     cst_Some$9=caml_string_of_jsbytes("(Some "),
     cst$16=caml_string_of_jsbytes(")"),
     cst_None$9=caml_string_of_jsbytes("None"),
     cst_Some$8=caml_string_of_jsbytes("(Some "),
     cst$15=caml_string_of_jsbytes(")"),
     cst_None$8=caml_string_of_jsbytes("None"),
     cst_Some$7=caml_string_of_jsbytes("(Some "),
     cst$14=caml_string_of_jsbytes(")"),
     cst_None$7=caml_string_of_jsbytes("None"),
     cst_tparameter=caml_string_of_jsbytes("tparameter"),
     cst_tstorage=caml_string_of_jsbytes("tstorage"),
     cst_parameter_and_storage=caml_string_of_jsbytes("parameter_and_storage"),
     cst_body=caml_string_of_jsbytes("body"),
     cst_Some$2=caml_string_of_jsbytes("(Some "),
     cst$9=caml_string_of_jsbytes(")"),
     cst_None$2=caml_string_of_jsbytes("None"),
     cst_Some$1=caml_string_of_jsbytes("(Some "),
     cst$8=caml_string_of_jsbytes(")"),
     cst_None$1=caml_string_of_jsbytes("None"),
     cst_Unit=caml_string_of_jsbytes("Unit"),
     unit=[0,[3,0]],
     cst_create_contract_illegal_ar$0=
      caml_string_of_jsbytes("create_contract: illegal argument types"),
     cst_create_contract_illegal_ar=
      caml_string_of_jsbytes("create_contract: illegal argument types"),
     cst$54=caml_string_of_jsbytes("|"),
     cst_record_of_tree_wrong_shape=
      caml_string_of_jsbytes("record_of_tree: wrong shape"),
     cst_not_a_vector_or_too_short=
      caml_string_of_jsbytes("not a vector or too short"),
     cst_map_entry_has_unexpected_t=
      caml_string_of_jsbytes("map entry has unexpected type"),
     cst_set_element_has_unexpected=
      caml_string_of_jsbytes("set element has unexpected type"),
     cst_list_element_has_unexpecte=
      caml_string_of_jsbytes("list element has unexpected type"),
     cst$53=caml_string_of_jsbytes("_"),
     cst_rev_ops=caml_string_of_jsbytes("!rev_ops"),
     cst_None$21=caml_string_of_jsbytes("None"),
     cst_Some$21=caml_string_of_jsbytes("Some"),
     cst$56=caml_string_of_jsbytes(" > "),
     cst$55=caml_string_of_jsbytes("."),
     cst$57=caml_string_of_jsbytes(" > "),
     cst_fix_mangle$0=caml_string_of_jsbytes("fix_mangle"),
     cst_fix_mangle=caml_string_of_jsbytes("fix_mangle"),
     cst_rev_ops$1=caml_string_of_jsbytes("!rev_ops"),
     cst_rev_ops$2=caml_string_of_jsbytes("!rev_ops"),
     cst_x$5=caml_string_of_jsbytes("x"),
     cst_recordify=caml_string_of_jsbytes("recordify"),
     gp=caml_string_of_jsbytes("__parameter"),
     s=caml_string_of_jsbytes("__storage"),
     cst_ops=caml_string_of_jsbytes("ops"),
     cst_s$0=caml_string_of_jsbytes("s"),
     cst_eta_expand_parameter_and_s=
      caml_string_of_jsbytes("eta_expand_parameter_and_storage"),
     cst_r$3=caml_string_of_jsbytes("r"),
     cst_r$2=caml_string_of_jsbytes("r"),
     cst_factor_ifs=caml_string_of_jsbytes("factor_ifs"),
     err=caml_string_of_jsbytes("unfold_stack_ops"),
     cst_unfold_stack_ops=caml_string_of_jsbytes("unfold_stack_ops"),
     cst_ps0=caml_string_of_jsbytes("ps0"),
     cst_ps0$0=caml_string_of_jsbytes("ps0"),
     cst_x$4=caml_string_of_jsbytes("x"),
     cst_x$3=caml_string_of_jsbytes("x"),
     cst_single_lets=caml_string_of_jsbytes("single_lets"),
     cst_s=caml_string_of_jsbytes("s"),
     cst_unvectorize_conds=caml_string_of_jsbytes("unvectorize_conds"),
     cst_r$1=caml_string_of_jsbytes("r"),
     cst_l=caml_string_of_jsbytes("l"),
     cst_binarize_matches=caml_string_of_jsbytes("binarize_matches"),
     cst_True=caml_string_of_jsbytes("True"),
     cst_False=caml_string_of_jsbytes("False"),
     cst_o=caml_string_of_jsbytes("o"),
     cst_factorise_clauses=caml_string_of_jsbytes("factorise_clauses"),
     cst_unify_fields=caml_string_of_jsbytes("unify_fields"),
     cst_t$1=caml_string_of_jsbytes("t"),
     cst_t=caml_string_of_jsbytes("t"),
     cst_t$3=caml_string_of_jsbytes("t"),
     cst_t$4=caml_string_of_jsbytes("t"),
     cst_t$0=caml_string_of_jsbytes("t"),
     cst_t$2=caml_string_of_jsbytes("t"),
     name$0=caml_string_of_jsbytes("unused_loop_state"),
     cst_r$0=caml_string_of_jsbytes("r"),
     cst_r=caml_string_of_jsbytes("r"),
     name=caml_string_of_jsbytes("factor_invariant_loop_state"),
     cst$59=caml_string_of_jsbytes(";"),
     cst_x$1=caml_string_of_jsbytes("x"),
     cst_x$2=caml_string_of_jsbytes("x"),
     cst_x=caml_string_of_jsbytes("x"),
     cst_x$0=caml_string_of_jsbytes("x"),
     cst_unfold_getn_and_updaten=
      caml_string_of_jsbytes("unfold_getn_and_updaten"),
     v=caml_string_of_jsbytes("s"),
     cst_mangle=caml_string_of_jsbytes("mangle"),
     cst$58=caml_string_of_jsbytes("__"),
     cst_rev_ops$0=caml_string_of_jsbytes("!rev_ops"),
     cst_run_transformer=caml_string_of_jsbytes("run_transformer"),
     cst_typecheck=caml_string_of_jsbytes(": typecheck"),
     cst_preserves=caml_string_of_jsbytes("preserves: "),
     cst_post$0=caml_string_of_jsbytes("post: "),
     cst_pre=caml_string_of_jsbytes("pre: "),
     cst_post=caml_string_of_jsbytes("post: "),
     cst_bindings_unique=caml_string_of_jsbytes("bindings_unique"),
     lbl=caml_string_of_jsbytes("bindings_used"),
     cst_is_linear=caml_string_of_jsbytes("is_linear"),
     cst_inline=caml_string_of_jsbytes("inline"),
     cst_inline_simples=caml_string_of_jsbytes("inline_simples"),
     cst_mark_unused=caml_string_of_jsbytes("mark_unused"),
     cst_field_access=caml_string_of_jsbytes("field_access"),
     cst_flatten_matches=caml_string_of_jsbytes("flatten_matches"),
     cst_flatten_lets=caml_string_of_jsbytes("flatten_lets"),
     cst_distribute_lets=caml_string_of_jsbytes("distribute_lets"),
     cst_fold_constants=caml_string_of_jsbytes("fold_constants"),
     cst_infer_constructors=caml_string_of_jsbytes("infer_constructors"),
     cst_reify_booleans=caml_string_of_jsbytes("reify_booleans"),
     cst_unfold_ifs=caml_string_of_jsbytes("unfold_ifs"),
     cst_nest_ifs=caml_string_of_jsbytes("nest_ifs"),
     cst_factorise_failwith=caml_string_of_jsbytes("factorise_failwith"),
     cst_flatten_ifs=caml_string_of_jsbytes("flatten_ifs"),
     cst_binarize_records=caml_string_of_jsbytes("binarize_records"),
     cst_binarize_projs=caml_string_of_jsbytes("binarize_projs"),
     cst_drop_unused=caml_string_of_jsbytes("drop_unused"),
     err$0=caml_string_of_jsbytes("chop_stack_ops"),
     cst_chop_stack_ops=caml_string_of_jsbytes("chop_stack_ops"),
     cst_Michel_Transformer_No_labe=
      caml_string_of_jsbytes("Michel.Transformer.No_label"),
     cst_tuplefy=caml_string_of_jsbytes("tuplefy"),
     cst_tuplefy$0=caml_string_of_jsbytes("tuplefy"),
     cst_unfold_unpair=caml_string_of_jsbytes("unfold_unpair"),
     cst_reify_rev_ops=caml_string_of_jsbytes("reify_rev_ops"),
     Michelson_base_Type=global_data.Michelson_base__Type,
     Utils_Option=global_data.Utils__Option,
     Utils_List=global_data.Utils__List,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib=global_data.Stdlib,
     Utils_Control=global_data.Utils__Control,
     Utils_Binary_tree=global_data.Utils__Binary_tree,
     Stdlib_list=global_data.Stdlib__list,
     Assert_failure=global_data.Assert_failure,
     Utils_String=global_data.Utils__String,
     Utils_Bigint=global_data.Utils__Bigint,
     include=global_data.Michelson_base__Primitive,
     Stdlib_printf=global_data.Stdlib__printf,
     Big_int=global_data.Big_int,
     Michel=[0];
    caml_register_global(790,Michel,"Michel");
    var
     equal_ty=function _G__(_G8_,_G9_){return _G__.fun(_G8_,_G9_)},
     equal_row=function _G7_(_G6_){return _G7_.fun(_G6_)},
     _I_=
      [0,[15,[12,32,[2,0,[12,32,[15,0]]]]],caml_string_of_jsbytes("%a %s %a")],
     _G_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" : "),[15,0]]],
       caml_string_of_jsbytes("%s : %a")],
     _H_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _J_=[0,[12,40,[16,[12,41,0]]],caml_string_of_jsbytes("(%t)")],
     _K_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _L_=[0,[2,0,[12,40,[15,[12,41,0]]]],caml_string_of_jsbytes("%s(%a)")],
     _M_=
      [0,
       [2,
        0,
        [12,
         40,
         [15,[2,0,[11,caml_string_of_jsbytes(", "),[15,[2,0,[12,41,0]]]]]]]],
       caml_string_of_jsbytes("%s(%a%s, %a%s)")],
     _N_=
      [0,
       [11,
        caml_string_of_jsbytes("{ "),
        [15,[11,caml_string_of_jsbytes(" }"),0]]],
       caml_string_of_jsbytes("{ %a }")],
     _O_=
      [0,
       [11,
        caml_string_of_jsbytes("< "),
        [15,[11,caml_string_of_jsbytes(" >"),0]]],
       caml_string_of_jsbytes("< %a >")],
     _P_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Q_=
      [0,
       [11,caml_string_of_jsbytes("missing("),[3,0,[12,41,0]]],
       caml_string_of_jsbytes("missing(%S)")],
     _T_=[1,caml_string_of_jsbytes("get1: failed stack")],
     _R_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _S_=
      [0,
       [11,caml_string_of_jsbytes("failed"),0],
       caml_string_of_jsbytes("failed")],
     _E_=[0,caml_string_of_jsbytes("Some")],
     _F_=[0,caml_string_of_jsbytes("None")],
     _D_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _B_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Stack_ok"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Stack_ok@ ")],
     _C_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _A_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _x_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _w_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _y_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _z_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _v_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _p_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _o_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _q_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _a_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T0"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T0@ ")],
     _b_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _c_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T1 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T1 (@,")],
     _d_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _e_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _f_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T2 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T2 (@,")],
     _g_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _h_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _i_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _j_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T_record"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T_record@ ")],
     _k_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _l_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T_variant"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T_variant@ ")],
     _m_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _n_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T_vector"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T_vector@ ")],
     _r_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _s_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T_missing"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T_missing@ ")],
     _t_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _u_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aJ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Dup"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Dup@ ")],
     _aK_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _aL_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aM_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Dig"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Dig@ ")],
     _aN_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _aO_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aP_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Dug"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Dug@ ")],
     _aQ_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _aR_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aS_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Drop"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Drop@ ")],
     _aT_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _aU_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aV_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _a9_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _a8_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _a7_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _a__=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _a4_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _a3_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("P_var"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>P_var@ ")],
     _a5_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _a6_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("P_vector"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>P_vector@ ")],
     _a$_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ba_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bh_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bd_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bb_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _bc_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _be_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bf_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bg_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bi_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bj_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bk_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bl_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bm_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _bn_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _fb_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [2,
         0,
         [15,
          [17,
           [0,caml_string_of_jsbytes("@,"),0,0],
           [11,caml_string_of_jsbytes("; "),[15,[2,0,[17,0,0]]]]]]]],
       caml_string_of_jsbytes("@[<hv>%s%a@,; %a%s@]")],
     _fc_=[0,[12,46,0],caml_string_of_jsbytes(".")],
     _fd_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [2,
         0,
         [12,
          32,
          [15,
           [17,
            [0,caml_string_of_jsbytes("@,"),0,0],
            [11,
             caml_string_of_jsbytes("; "),
             [15,[17,[0,caml_string_of_jsbytes("@ "),1,0],[2,0,[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes("@[<hv>%s %a@,; %a@ %s@]")],
     _fe_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [2,
         0,
         [12,
          32,
          [15,
           [17,
            [0,caml_string_of_jsbytes("@,"),0,0],
            [11,
             caml_string_of_jsbytes("; "),
             [15,[17,[0,caml_string_of_jsbytes("@ "),1,0],[2,0,[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes("@[<hv>%s %a@,; %a@ %s@]")],
     _f$_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [11,
         caml_string_of_jsbytes("let "),
         [15,
          [11,
           caml_string_of_jsbytes(" ="),
           [17,
            [0,caml_string_of_jsbytes("@;<1 2>"),1,2],
            [15,[17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]]]]]],
       caml_string_of_jsbytes("@[<hv>let %a =@;<1 2>%a@]@,")],
     _f7_=[0,[16,0],caml_string_of_jsbytes("%t")],
     _f0_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hov>"),0],
          caml_string_of_jsbytes("<hov>")]],
        [11,
         caml_string_of_jsbytes("| "),
         [2,
          0,
          [12,
           32,
           [2,
            0,
            [11,
             caml_string_of_jsbytes(" ->"),
             [17,[0,caml_string_of_jsbytes("@;<1 2>"),1,2],[16,[17,0,0]]]]]]]]],
       caml_string_of_jsbytes("@[<hov>| %s %s ->@;<1 2>%t@]")],
     _fR_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hov>"),0],
          caml_string_of_jsbytes("<hov>")]],
        [11,
         caml_string_of_jsbytes("| "),
         [2,
          0,
          [12,
           32,
           [2,
            0,
            [11,
             caml_string_of_jsbytes(" ->"),
             [17,[0,caml_string_of_jsbytes("@;<1 4>"),1,4],[16,[17,0,0]]]]]]]]],
       caml_string_of_jsbytes("@[<hov>| %s %s ->@;<1 4>%t@]")],
     _fS_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [15,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]],
       caml_string_of_jsbytes("@[<v>%a@,%a@]")],
     _fO_=[0,[11,caml_string_of_jsbytes("; "),0],caml_string_of_jsbytes("; ")],
     _fN_=
      [0,
       [16,[11,caml_string_of_jsbytes(": "),[16,0]]],
       caml_string_of_jsbytes("%t: %t")],
     _fJ_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" : "),[15,0]]],
       caml_string_of_jsbytes("%s : %a")],
     _fH_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" = "),[16,0]]],
       caml_string_of_jsbytes("%s = %t")],
     _f5_=[0,caml_string_of_jsbytes("smartML/michel/expr.ml"),509,19],
     _f6_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [2,
         0,
         [12,
          32,
          [16,
           [17,
            [0,caml_string_of_jsbytes("@;<0 0>"),0,0],
            [11,
             caml_string_of_jsbytes("step "),
             [15,
              [11,
               caml_string_of_jsbytes(" ->"),
               [17,[0,caml_string_of_jsbytes("@;<0 2>"),0,2],[16,partial]]]]]]]]]],
       caml_string_of_jsbytes("@[<v>%s %t@;<0 0>step %a ->@;<0 2>%t@]")],
     _fw_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _fx_=[0,caml_string_of_jsbytes("smartML/michel/expr.ml"),397,20],
     _fy_=
      [0,
       [11,
        caml_string_of_jsbytes("(fun ("),
        [15,
         [11,
          caml_string_of_jsbytes(" : "),
          [15,
           [11,
            caml_string_of_jsbytes(") : "),
            [15,
             [11,
              caml_string_of_jsbytes(" ->"),
              [17,[0,caml_string_of_jsbytes("@ "),1,0],[16,[12,41,0]]]]]]]]]],
       caml_string_of_jsbytes("(fun (%a : %a) : %a ->@ %t)")],
     _fz_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _fB_=
      [0,
       [11,
        caml_string_of_jsbytes("Contract("),
        [16,[12,37,[2,0,[11,caml_string_of_jsbytes(", "),[15,[12,41,0]]]]]]],
       caml_string_of_jsbytes("Contract(%t%%%s, %a)")],
     _fC_=
      [0,
       [11,
        caml_string_of_jsbytes("Contract("),
        [16,[11,caml_string_of_jsbytes(", "),[15,[12,41,0]]]]],
       caml_string_of_jsbytes("Contract(%t, %a)")],
     _fA_=[0,[15,[12,40,[16,[12,41,0]]]],caml_string_of_jsbytes("%a(%t)")],
     _fD_=[0,[15,[12,40,[16,[12,41,0]]]],caml_string_of_jsbytes("%a(%t)")],
     _fE_=
      [0,
       [15,
        [12,
         40,
         [16,
          [11,
           caml_string_of_jsbytes(", "),
           [16,[11,caml_string_of_jsbytes(", "),[16,[12,41,0]]]]]]]],
       caml_string_of_jsbytes("%a(%t, %t, %t)")],
     _fF_=[0,[16,[12,46,[2,0,0]]],caml_string_of_jsbytes("%t.%s")],
     _fG_=[0,[15,[12,40,[16,[12,41,0]]]],caml_string_of_jsbytes("%a(%t)")],
     _fI_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [11,
         caml_string_of_jsbytes("{ "),
         [15,[11,caml_string_of_jsbytes(" }"),[17,0,0]]]]],
       caml_string_of_jsbytes("@[<hv>{ %a }@]")],
     _fK_=
      [0,
       [2,0,[12,35,[15,[12,40,[16,[12,41,0]]]]]],
       caml_string_of_jsbytes("%s#%a(%t)")],
     _fL_=
      [0,
       [12,91,[16,[11,caml_string_of_jsbytes("]#list("),[15,[12,41,0]]]]],
       caml_string_of_jsbytes("[%t]#list(%a)")],
     _fM_=
      [0,
       [12,91,[16,[11,caml_string_of_jsbytes("]#set("),[15,[12,41,0]]]]],
       caml_string_of_jsbytes("[%t]#set(%a)")],
     _fP_=
      [0,
       [12,
        91,
        [16,[11,caml_string_of_jsbytes("]#map("),[15,[12,44,[15,[12,41,0]]]]]]],
       caml_string_of_jsbytes("[%t]#map(%a,%a)")],
     _fQ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hv>"),0],
           caml_string_of_jsbytes("<hv>")]],
         [11,
          caml_string_of_jsbytes("let record "),
          [15,
           [11,
            caml_string_of_jsbytes(" ="),
            [17,
             [0,caml_string_of_jsbytes("@;<1 2>"),1,2],
             [16,
              [17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[16,partial$0]]]]]]]]]],
       caml_string_of_jsbytes("@[<v>@[<hv>let record %a =@;<1 2>%t@]@,%t@]")],
     _fT_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [11,
         caml_string_of_jsbytes("match "),
         [16,
          [11,
           caml_string_of_jsbytes(" with"),
           [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]]],
       caml_string_of_jsbytes("@[<v>match %t with@,")],
     _fU_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _fV_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("end"),[17,0,0]]],
       caml_string_of_jsbytes("@,end@]")],
     _fW_=
      [0,[16,[12,91,[4,0,0,0,[12,93,0]]]],caml_string_of_jsbytes("%t[%d]")],
     _fX_=
      [0,
       [11,
        caml_string_of_jsbytes("Unpair("),
        [4,0,0,0,[11,caml_string_of_jsbytes(", "),[16,[12,41,0]]]]],
       caml_string_of_jsbytes("Unpair(%d, %t)")],
     _fY_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [11,
         caml_string_of_jsbytes("if "),
         [16,
          [17,
           [0,caml_string_of_jsbytes("@ "),1,0],
           [11,
            caml_string_of_jsbytes("then"),
            [17,
             [0,caml_string_of_jsbytes("@;<1 2>"),1,2],
             [16,
              [17,
               [0,caml_string_of_jsbytes("@ "),1,0],
               [11,caml_string_of_jsbytes("else"),[17,partial$2,partial$1]]]]]]]]]],
       caml_string_of_jsbytes("@[<hv>if %t@ then@;<1 2>%t@ else@;<1 2>%t@]")],
     _fZ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [11,
         caml_string_of_jsbytes("if "),
         [16,
          [11,
           caml_string_of_jsbytes(" is Some "),
           [2,
            0,
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("then"),
              [17,
               [0,caml_string_of_jsbytes("@;<1 2>"),1,2],
               [16,[17,partial$4,partial$3]]]]]]]]]],
       caml_string_of_jsbytes
        ("@[<hv>if %t is Some %s@ then@;<1 2>%t@ else@;<1 2>%t@]")],
     _f1_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [11,
         caml_string_of_jsbytes("if_left "),
         [16,
          [11,
           caml_string_of_jsbytes(" with"),
           [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]]],
       caml_string_of_jsbytes("@[<v>if_left %t with@,")],
     _f2_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [15,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,0]]]]],
       caml_string_of_jsbytes("@[<v>%a@,%a@]")],
     _f3_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("end"),[17,0,0]]],
       caml_string_of_jsbytes("@,end@]")],
     _f4_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [11,
         caml_string_of_jsbytes("if "),
         [16,
          [11,
           caml_string_of_jsbytes(" is "),
           [2,
            0,
            [11,
             caml_string_of_jsbytes(" :: "),
             [2,
              0,
              [17,
               [0,caml_string_of_jsbytes("@ "),1,0],
               [11,caml_string_of_jsbytes("then"),[17,partial$6,partial$5]]]]]]]]]],
       caml_string_of_jsbytes
        ("@[<hv>if %t is %s :: %s@ then@;<1 2>%t@ else@;<1 2>%t@]")],
     _f8_=
      [0,
       [11,
        caml_string_of_jsbytes("create_contract("),
        [15,
         [11,
          caml_string_of_jsbytes(", "),
          [16,
           [11,
            caml_string_of_jsbytes(", "),
            [16,[11,caml_string_of_jsbytes(", "),[16,[12,41,0]]]]]]]]],
       caml_string_of_jsbytes("create_contract(%a, %t, %t, %t)")],
     _f9_=
      [0,
       [11,caml_string_of_jsbytes("record_of_tree(..., "),[16,[12,41,0]]],
       caml_string_of_jsbytes("record_of_tree(..., %t)")],
     _f__=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hv>"),0],
           caml_string_of_jsbytes("<hv>")]],
         [11,
          caml_string_of_jsbytes("(* "),
          [2,
           0,
           [11,
            caml_string_of_jsbytes(" *)"),
            [17,
             [0,caml_string_of_jsbytes("@;<1 0>"),1,0],
             [16,[17,0,[17,0,0]]]]]]]]],
       caml_string_of_jsbytes("@[<v>@[<hv>(* %s *)@;<1 0>%t@]@]")],
     _ga_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _gb_=[0,0],
     _gf_=
      [0,
       [11,caml_string_of_jsbytes("mk_variant "),[15,[12,32,[2,0,0]]]],
       caml_string_of_jsbytes("mk_variant %a %s")],
     _fq_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        0],
       caml_string_of_jsbytes("@[<v>")],
     _fr_=
      [0,
       [11,
        caml_string_of_jsbytes("parameter :  "),
        [15,[12,32,[12,37,[2,0,[17,[0,caml_string_of_jsbytes("@;"),1,0],0]]]]]],
       caml_string_of_jsbytes("parameter :  %a %%%s@;")],
     _fv_=
      [0,
       [11,
        caml_string_of_jsbytes("parameter :  "),
        [15,[17,[0,caml_string_of_jsbytes("@;"),1,0],0]]],
       caml_string_of_jsbytes("parameter :  %a@;")],
     _fs_=
      [0,
       [11,
        caml_string_of_jsbytes("storage   :  "),
        [15,[17,[0,caml_string_of_jsbytes("@;"),1,0],0]]],
       caml_string_of_jsbytes("storage   :  %a@;")],
     _ft_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(" ->"),
         [17,[0,caml_string_of_jsbytes("@;"),1,0],[15,0]]]],
       caml_string_of_jsbytes("%a ->@;%a")],
     _fu_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _fj_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@;<0 2>"),0,2],
        [11,caml_string_of_jsbytes(", "),0]],
       caml_string_of_jsbytes("@;<0 2>, ")],
     _fk_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [15,0]],
       caml_string_of_jsbytes("@[<hv>%a")],
     _fl_=[0,caml_string_of_jsbytes(""),2,caml_string_of_jsbytes("( ")],
     _fm_=[0,caml_string_of_jsbytes(""),0,caml_string_of_jsbytes("(")],
     _fn_=[0,caml_string_of_jsbytes(""),2,caml_string_of_jsbytes(")")],
     _fo_=[0,caml_string_of_jsbytes(")"),0,caml_string_of_jsbytes("")],
     _fp_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ff_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("; "),0]],
       caml_string_of_jsbytes("@,; ")],
     _fg_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [11,caml_string_of_jsbytes("[ "),0]],
       caml_string_of_jsbytes("@[<hv>[ ")],
     _fh_=
      [0,
       [17,[0,caml_string_of_jsbytes("@;"),1,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@;]@]")],
     _fi_=[0,[11,caml_string_of_jsbytes("[]"),0],caml_string_of_jsbytes("[]")],
     _e9_=
      [0,
       [15,
        [17,
         [0,caml_string_of_jsbytes("@,"),0,0],
         [11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("%a@,, %a")],
     _e8_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _e__=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [11,
         caml_string_of_jsbytes("( "),
         [16,[17,[0,caml_string_of_jsbytes("@ "),1,0],[12,41,[17,0,0]]]]]],
       caml_string_of_jsbytes("@[<hv>( %t@ )@]")],
     _e$_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<hv>"),0],
          caml_string_of_jsbytes("<hv>")]],
        [16,[17,0,0]]],
       caml_string_of_jsbytes("@[<hv>%t@]")],
     _e6_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _e7_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _e3_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _e5_=
      [0,[11,caml_string_of_jsbytes("Pair"),0],caml_string_of_jsbytes("Pair")],
     _e4_=
      [0,
       [2,0,[12,60,[15,[12,44,[15,[12,62,0]]]]]],
       caml_string_of_jsbytes("%s<%a,%a>")],
     _eX_=
      [0,[11,caml_string_of_jsbytes("Unit"),0],caml_string_of_jsbytes("Unit")],
     _eY_=
      [0,
       [11,caml_string_of_jsbytes("None<"),[15,[12,62,0]]],
       caml_string_of_jsbytes("None<%a>")],
     _eZ_=
      [0,
       [11,caml_string_of_jsbytes("Nil<"),[15,[12,62,0]]],
       caml_string_of_jsbytes("Nil<%a>")],
     _e0_=
      [0,
       [11,caml_string_of_jsbytes("Empty_set<"),[15,[12,62,0]]],
       caml_string_of_jsbytes("Empty_set<%a>")],
     _e1_=
      [0,
       [11,caml_string_of_jsbytes("Empty_set<"),[15,[12,44,[15,[12,62,0]]]]],
       caml_string_of_jsbytes("Empty_set<%a,%a>")],
     _e2_=
      [0,
       [11,caml_string_of_jsbytes("Empty_set<"),[15,[12,44,[15,[12,62,0]]]]],
       caml_string_of_jsbytes("Empty_set<%a,%a>")],
     _eV_=[0,[11,caml_string_of_jsbytes("; "),0],caml_string_of_jsbytes("; ")],
     _eT_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _eU_=[0,[12,95,0],caml_string_of_jsbytes("_")],
     _eC_=[0,[11,caml_string_of_jsbytes("()"),0],caml_string_of_jsbytes("()")],
     _eD_=
      [0,[11,caml_string_of_jsbytes("True"),0],caml_string_of_jsbytes("True")],
     _eE_=
      [0,
       [11,caml_string_of_jsbytes("False"),0],
       caml_string_of_jsbytes("False")],
     _eF_=
      [0,
       [15,[11,caml_string_of_jsbytes("#nat"),0]],
       caml_string_of_jsbytes("%a#nat")],
     _eG_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _eH_=
      [0,
       [15,[11,caml_string_of_jsbytes("#mutez"),0]],
       caml_string_of_jsbytes("%a#mutez")],
     _eI_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _eJ_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#key_hash"),0]],
       caml_string_of_jsbytes("%S#key_hash")],
     _eK_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#baker_hash"),0]],
       caml_string_of_jsbytes("%S#baker_hash")],
     _eL_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#bytes"),0]],
       caml_string_of_jsbytes("%S#bytes")],
     _eM_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#chain_id"),0]],
       caml_string_of_jsbytes("%S#chain_id")],
     _eN_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#address"),0]],
       caml_string_of_jsbytes("%S#address")],
     _eO_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#timestamp"),0]],
       caml_string_of_jsbytes("%S#timestamp")],
     _eP_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#bls12_381_g1"),0]],
       caml_string_of_jsbytes("%S#bls12_381_g1")],
     _eQ_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#bls12_381_g2"),0]],
       caml_string_of_jsbytes("%S#bls12_381_g2")],
     _eR_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#bls12_381_fr"),0]],
       caml_string_of_jsbytes("%S#bls12_381_fr")],
     _eS_=
      [0,
       [3,0,[11,caml_string_of_jsbytes("#signature"),0]],
       caml_string_of_jsbytes("%S#signature")],
     _ey_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _eu_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _ev_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ew_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ex_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _et_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _em_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _en_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _eo_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ep_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _eq_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _er_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _es_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _el_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _eg_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _eh_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ef_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _ei_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _eb_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _d3_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _d2_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _d1_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _d4_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _dY_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _dX_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _dZ_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _dS_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _dR_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _dQ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _dT_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _dN_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _dM_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _dO_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _dH_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _dG_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _dF_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _dI_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _dC_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _dB_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _dD_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _dw_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _du_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _dp_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _dm_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _dg_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _c1_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _c0_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _c2_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _cN_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _cO_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cP_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cM_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _cL_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _cQ_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _cF_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _cE_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _cG_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _cz_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _cy_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _cA_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _cs_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cn_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cm_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _co_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ci_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ch_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _cj_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _bP_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bH_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Var"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Var@ ")],
     _bI_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bJ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bK_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Let_in ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Let_in (@,")],
     _bL_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _bM_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _bN_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _bO_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Lambda ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Lambda (@,")],
     _bQ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _bR_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _bS_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _bT_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _bU_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Lit"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Lit@ ")],
     _bV_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bW_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Prim0"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Prim0@ ")],
     _bX_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bY_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Prim1 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Prim1 (@,")],
     _bZ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _b0_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _b1_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Prim1_fail ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Prim1_fail (@,")],
     _b2_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _b3_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _b4_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Prim2 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Prim2 (@,")],
     _b5_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _b6_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _b7_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _b8_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Prim3 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Prim3 (@,")],
     _b9_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _b__=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _b$_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ca_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cb_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Proj_field ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Proj_field (@,")],
     _cc_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cd_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ce_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cf_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Stack_op ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Stack_op (@,")],
     _cg_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ck_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cl_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Record"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Record@ ")],
     _cq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cr_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Variant ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Variant (@,")],
     _ct_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cu_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cv_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cw_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("List ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>List (@,")],
     _cx_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cB_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cC_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Set ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Set (@,")],
     _cD_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cH_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cI_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Map ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Map (@,")],
     _cJ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cK_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cR_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cS_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Match_record ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Match_record (@,")],
     _cT_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cU_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cV_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cW_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Match_variant ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Match_variant (@,")],
     _cX_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cY_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cZ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Vector"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Vector@ ")],
     _c3_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _c4_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Nth ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Nth (@,")],
     _c5_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _c6_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _c7_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _c8_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Unpair ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Unpair (@,")],
     _c9_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _c__=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _c$_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _da_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("If ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>If (@,")],
     _db_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dc_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dd_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _de_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("If_none ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>If_none (@,")],
     _df_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dh_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _di_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dj_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _dk_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("If_left ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>If_left (@,")],
     _dl_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dn_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _do_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dq_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dr_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _ds_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("If_cons ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>If_cons (@,")],
     _dt_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dv_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dx_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dy_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dz_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _dA_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Loop ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Loop (@,")],
     _dE_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dJ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dK_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _dL_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Iter_over ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Iter_over (@,")],
     _dP_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dU_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dV_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _dW_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Map_over ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Map_over (@,")],
     _d0_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _d5_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _d6_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _d7_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Create_contract ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Create_contract (@,")],
     _d8_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _d9_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _d__=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _d$_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _ea_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Record_of_tree ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Record_of_tree (@,")],
     _ec_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ed_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _ee_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Comment ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Comment (@,")],
     _ej_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ek_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _bG_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bA_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bs_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bq_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _br_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _bt_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bo_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _bp_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bu_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bv_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bw_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bx_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _by_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bz_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bB_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bC_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bD_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bE_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bF_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _a2_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _a1_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _a0_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aX_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _aW_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _aY_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _aZ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aI_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _U_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bool"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bool@ ")],
     _V_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _W_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _X_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Nat"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Nat@ ")],
     _Y_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Z_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Int"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Int@ ")],
     ___=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _$_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Mutez"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Mutez@ ")],
     _aa_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ab_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("String"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>String@ ")],
     _ac_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ad_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ae_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Key_hash"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Key_hash@ ")],
     _af_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ag_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ah_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Baker_hash"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Baker_hash@ ")],
     _ai_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _aj_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ak_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bytes"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bytes@ ")],
     _al_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _am_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _an_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Chain_id"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Chain_id@ ")],
     _ao_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ap_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aq_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Address"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Address@ ")],
     _ar_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _as_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _at_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Timestamp"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Timestamp@ ")],
     _au_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _av_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aw_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bls12_381_g1"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bls12_381_g1@ ")],
     _ax_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ay_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _az_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bls12_381_g2"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bls12_381_g2@ ")],
     _aA_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _aB_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aC_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bls12_381_fr"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bls12_381_fr@ ")],
     _aD_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _aE_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aF_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Signature"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Signature@ ")],
     _aG_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _aH_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _gh_=[0,1],
     _gi_=[0,0],
     _ha_=[0,0],
     _hb_=
      [0,
       [11,
        caml_string_of_jsbytes("typecheck_precontract: invalid final stack "),
        [15,[11,caml_string_of_jsbytes(" for storage "),[15,0]]]],
       caml_string_of_jsbytes
        ("typecheck_precontract: invalid final stack %a for storage %a")],
     _hc_=[0,0],
     _g$_=[1,caml_string_of_jsbytes("map_over")],
     _g__=[1,caml_string_of_jsbytes("map_over: mismatch")],
     _g9_=[1,caml_string_of_jsbytes("iter_over")],
     _g6_=[1,caml_string_of_jsbytes("iter_over: non-vector")],
     _g7_=
      [0,
       [11,
        caml_string_of_jsbytes("iter_over: "),
        [15,[11,caml_string_of_jsbytes(" vs. "),[15,0]]]],
       caml_string_of_jsbytes("iter_over: %a vs. %a")],
     _g8_=[1,caml_string_of_jsbytes("iter_over: FAILED")],
     _g4_=
      [0,
       [11,
        caml_string_of_jsbytes("loop: step mismatch: "),
        [15,[11,caml_string_of_jsbytes(" -> "),[15,0]]]],
       caml_string_of_jsbytes("loop: step mismatch: %a -> %a")],
     _g3_=
      [0,
       [11,caml_string_of_jsbytes("loop: step result: "),[15,0]],
       caml_string_of_jsbytes("loop: step result: %a")],
     _g5_=[1,caml_string_of_jsbytes("loop")],
     _g2_=[1,caml_string_of_jsbytes("If_cons: branch mismatch")],
     _g1_=[1,caml_string_of_jsbytes("If_cons: not an option")],
     _gZ_=
      [0,
       [11,
        caml_string_of_jsbytes("If_left: branch mismatch: "),
        [15,[11,caml_string_of_jsbytes(" vs. "),[15,0]]]],
       caml_string_of_jsbytes("If_left: branch mismatch: %a vs. %a")],
     _g0_=
      [0,
       [11,caml_string_of_jsbytes("If_left: not an or-type: "),[15,0]],
       caml_string_of_jsbytes("If_left: not an or-type: %a")],
     _gX_=
      [0,
       [11,
        caml_string_of_jsbytes("If_none: branch mismatch: "),
        [15,[11,caml_string_of_jsbytes(" vs. "),[15,0]]]],
       caml_string_of_jsbytes("If_none: branch mismatch: %a vs. %a")],
     _gY_=
      [0,
       [11,caml_string_of_jsbytes("If_none: not an option: "),[15,0]],
       caml_string_of_jsbytes("If_none: not an option: %a")],
     _gV_=
      [0,
       [11,
        caml_string_of_jsbytes("If: branch mismatch: "),
        [15,[11,caml_string_of_jsbytes(" vs. "),[15,0]]]],
       caml_string_of_jsbytes("If: branch mismatch: %a vs. %a")],
     _gW_=[1,caml_string_of_jsbytes("If: not a bool")],
     _gS_=
      [0,
       [11,
        caml_string_of_jsbytes("match: wrong constructor "),
        [2,0,[12,32,[2,0,0]]]],
       caml_string_of_jsbytes("match: wrong constructor %s %s")],
     _gT_=[0,0],
     _gP_=
      [0,
       [11,caml_string_of_jsbytes("  "),[15,0]],
       caml_string_of_jsbytes("  %a")],
     _gQ_=
      [0,
       [11,
        caml_string_of_jsbytes("match: branches mismatch while matching "),
        [15,[11,caml_string_of_jsbytes(":\n"),[15,0]]]],
       caml_string_of_jsbytes
        ("match: branches mismatch while matching %a:\n%a")],
     _gR_=[0,caml_string_of_jsbytes("smartML/michel/typing.ml"),407,22],
     _gU_=
      [0,
       [11,caml_string_of_jsbytes("match: incompatible shape "),[15,0]],
       caml_string_of_jsbytes("match: incompatible shape %a")],
     _gO_=
      [0,
       [11,
        caml_string_of_jsbytes("match on non-variant "),
        [15,[11,caml_string_of_jsbytes(" : "),[15,0]]]],
       caml_string_of_jsbytes("match on non-variant %a : %a")],
     _gN_=
      [0,
       [11,
        caml_string_of_jsbytes("lambda:"),
        [17,
         3,
         [11,
          caml_string_of_jsbytes("  expected :  "),
          [15,[17,3,[11,caml_string_of_jsbytes("  got      :  "),[15,0]]]]]]],
       caml_string_of_jsbytes("lambda:@\n  expected :  %a@\n  got      :  %a")],
     _gM_=
      [0,
       [11,
        caml_string_of_jsbytes("let: pattern "),
        [15,
         [11,
          caml_string_of_jsbytes(" cannot match expression of type "),
          [15,0]]]],
       caml_string_of_jsbytes
        ("let: pattern %a cannot match expression of type %a")],
     _gJ_=
      [0,
       [11,
        caml_string_of_jsbytes("Unpair "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" on non-pair: "),[15,0]]]],
       caml_string_of_jsbytes("Unpair %d on non-pair: %a")],
     _gK_=
      [0,
       [11,
        caml_string_of_jsbytes("Unpair "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" on non-pair: "),[15,0]]]],
       caml_string_of_jsbytes("Unpair %d on non-pair: %a")],
     _gH_=[1,caml_string_of_jsbytes("proj field on non-record")],
     _gI_=
      [0,
       [11,
        caml_string_of_jsbytes("Unknown field: "),
        [3,0,[11,caml_string_of_jsbytes(" on record "),[15,0]]]],
       caml_string_of_jsbytes("Unknown field: %S on record %a")],
     _gG_=[0,0],
     _gE_=[0,0],
     _gF_=
      [1,caml_string_of_jsbytes("Argument to Never must be of type never")],
     _gD_=[0,caml_string_of_jsbytes("smartML/michel/typing.ml"),768,14],
     _gC_=
      [0,
       [11,caml_string_of_jsbytes("Unbound variable: "),[3,0,0]],
       caml_string_of_jsbytes("Unbound variable: %S")],
     _gL_=[0,caml_string_of_jsbytes("smartML/michel/typing.ml"),714,14],
     _gB_=
      [0,
       [11,
        caml_string_of_jsbytes("pattern "),
        [15,
         [11,
          caml_string_of_jsbytes(" cannot match expressions of types "),
          [15,0]]]],
       caml_string_of_jsbytes
        ("pattern %a cannot match expressions of types %a")],
     _gA_=[0,0],
     _gz_=
      [0,
       [11,
        caml_string_of_jsbytes("pattern "),
        [15,
         [11,
          caml_string_of_jsbytes(" cannot record-match expression of type "),
          [15,0]]]],
       caml_string_of_jsbytes
        ("pattern %a cannot record-match expression of type %a")],
     _gt_=[0,caml_string_of_jsbytes("typing: dup")],
     _gu_=[1,caml_string_of_jsbytes("dup")],
     _gv_=[0,caml_string_of_jsbytes("typing: dig")],
     _gw_=[1,caml_string_of_jsbytes("dig")],
     _gx_=[0,caml_string_of_jsbytes("typing: dug")],
     _gy_=[1,caml_string_of_jsbytes("dug")],
     _gs_=
      [0,
       [11,caml_string_of_jsbytes("type error: "),[15,[12,32,[15,0]]]],
       caml_string_of_jsbytes("type error: %a %a")],
     _gr_=
      [0,
       [11,
        caml_string_of_jsbytes("type error: "),
        [15,[12,32,[15,[12,32,[15,[12,32,[15,0]]]]]]]],
       caml_string_of_jsbytes("type error: %a %a %a %a")],
     _gq_=
      [0,
       [11,
        caml_string_of_jsbytes("type error: "),
        [15,[12,32,[15,[12,32,[15,0]]]]]],
       caml_string_of_jsbytes("type error: %a %a %a")],
     _gm_=
      [0,
       [11,caml_string_of_jsbytes("type error: "),[15,[12,32,[15,0]]]],
       caml_string_of_jsbytes("type error: %a %a")],
     _go_=[0,caml_string_of_jsbytes("Some")],
     _gp_=[0,caml_string_of_jsbytes("None")],
     _gn_=
      [0,
       [11,caml_string_of_jsbytes("type error: "),[15,[12,32,[15,0]]]],
       caml_string_of_jsbytes("type error: %a %a")],
     _gk_=[1,caml_string_of_jsbytes("Self: parameter not a variant")],
     _gl_=[1,caml_string_of_jsbytes("Self: entry-point not found")],
     _gj_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _hg_=[0,caml_string_of_jsbytes("smartML/michel/analyser.ml"),85,12],
     _hm_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(": failed to converge"),0]],
       caml_string_of_jsbytes("%s: failed to converge")],
     _ig_=[0,caml_string_of_jsbytes("common")],
     _id_=[0,2,2],
     _ia_=[0,caml_string_of_jsbytes("smartML/michel/transformer.ml"),1450,17],
     _ib_=[0,caml_string_of_jsbytes("smartML/michel/transformer.ml"),1455,13],
     _ic_=[0,caml_string_of_jsbytes("smartML/michel/transformer.ml"),1460,13],
     _h__=[0,caml_string_of_jsbytes("smartML/michel/transformer.ml"),1291,25],
     _h7_=[0,caml_string_of_jsbytes("smartML/michel/transformer.ml"),1143,28],
     _hV_=[0,caml_string_of_jsbytes("Some")],
     _hW_=[0,caml_string_of_jsbytes("None")],
     _hS_=[0,0],
     _hP_=[0,caml_string_of_jsbytes("smartML/michel/transformer.ml"),959,20],
     _hO_=[0,0],
     _hQ_=[0,0],
     _hR_=[0,0],
     _hN_=[0,caml_string_of_jsbytes("prune")],
     _hM_=[0,[0,0,0]],
     _hK_=[0,0,0,0,0,0],
     _hJ_=[0,0,0,0,0,0],
     _hL_=[0,0,0,0,0,0],
     _hG_=
      [0,
       [11,
        caml_string_of_jsbytes("infer_constructors:\n  <"),
        [15,[11,caml_string_of_jsbytes(">\n  ("),[15,[12,41,0]]]]],
       caml_string_of_jsbytes("infer_constructors:\n  <%a>\n  (%a)")],
     _hF_=
      [0,[11,caml_string_of_jsbytes(" | "),0],caml_string_of_jsbytes(" | ")],
     _hE_=[0,[12,95,0],caml_string_of_jsbytes("_")],
     _hy_=[0,caml_string_of_jsbytes("let")],
     _hw_=[0,1],
     _hk_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": typecheck: "),
          [2,0,[12,10,[17,0,[15,0]]]]]]],
       caml_string_of_jsbytes("@[<v>%s: typecheck: %s\n@]%a")];
    caml_update_dummy
     (equal_ty,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_call1(caml_call1(Michelson_base_Type[1],lhs0),rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var
              rhs1=match[2],
              rhs0$0=match[1],
              lhs1=lhs[2],
              lhs0$0=lhs[1],
              _G2_=
               caml_call1(caml_call1(Michelson_base_Type[5],lhs0$0),rhs0$0);
             return _G2_?caml_call1(caml_call1(equal_ty,lhs1),rhs1):_G2_}
           break;
          case 2:
           if(2 === match[0])
            {var
              rhs2=match[3],
              rhs1$0=match[2],
              rhs0$1=match[1],
              lhs2=lhs[3],
              lhs1$0=lhs[2],
              lhs0$1=lhs[1],
              _G3_=
               caml_call1(caml_call1(Michelson_base_Type[9],lhs0$1),rhs0$1),
              _G4_=_G3_?caml_call1(caml_call1(equal_ty,lhs1$0),rhs1$0):_G3_;
             return _G4_?caml_call1(caml_call1(equal_ty,lhs2),rhs2):_G4_}
           break;
          case 3:
           if(3 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1];
             return caml_call1(caml_call1(equal_row,lhs0$2),rhs0$2)}
           break;
          case 4:
           if(4 === match[0])
            {var rhs0$3=match[1],lhs0$3=lhs[1];
             return caml_call1(caml_call1(equal_row,lhs0$3),rhs0$3)}
           break;
          case 5:
           if(5 === match[0])
            {var rhs0$4=match[1],lhs0$4=lhs[1],x=lhs0$4,y=rhs0$4;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    _G5_=caml_call1(caml_call1(equal_ty,a),b);
                   if(_G5_){var x=x$0,y=y$0;continue}
                   return _G5_}}
               else
                if(! y)return 1;
               return 0}}
           break;
          default:
           if(6 === match[0])
            {var rhs0$5=match[1],lhs0$5=lhs[1];
             return caml_string_equal(lhs0$5,rhs0$5)}}
        return 0});
    caml_update_dummy
     (equal_row,
      function(x)
       {function _GZ_(param,_G0_)
         {var
           rhs1=_G0_[2],
           rhs0=_G0_[1],
           lhs1=param[2],
           lhs0=param[1],
           switch$0=0;
          if(lhs0)
           if(rhs0)
            var b=rhs0[1],a=lhs0[1],_G1_=caml_string_equal(a,b);
           else
            switch$0 = 1;
          else
           if(rhs0)switch$0 = 1;else var _G1_=1;
          if(switch$0)var _G1_=0;
          return _G1_?caml_call1(caml_call1(equal_ty,lhs1),rhs1):_G1_}
        return caml_call1(caml_call1(Utils_Binary_tree[1],_GZ_),x)});
    var
     pp_ty=function _GY_(_GW_,_GX_){return _GY_.fun(_GW_,_GX_)},
     show_ty=function _GV_(_GU_){return _GV_.fun(_GU_)},
     pp_row=function _GT_(_GS_){return _GT_.fun(_GS_)},
     show_row=function _GR_(_GQ_){return _GR_.fun(_GQ_)};
    caml_update_dummy
     (pp_ty,
      function(fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_a_);
           caml_call1(caml_call1(Michelson_base_Type[3],fmt),a0);
           return caml_call2(Stdlib_format[123],fmt,_b_);
          case 1:
           var a1=param[2],a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_c_);
           caml_call1(caml_call1(Michelson_base_Type[7],fmt),a0$0);
           caml_call2(Stdlib_format[123],fmt,_d_);
           caml_call1(caml_call1(pp_ty,fmt),a1);
           return caml_call2(Stdlib_format[123],fmt,_e_);
          case 2:
           var a2=param[3],a1$0=param[2],a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_f_);
           caml_call1(caml_call1(Michelson_base_Type[11],fmt),a0$1);
           caml_call2(Stdlib_format[123],fmt,_g_);
           caml_call1(caml_call1(pp_ty,fmt),a1$0);
           caml_call2(Stdlib_format[123],fmt,_h_);
           caml_call1(caml_call1(pp_ty,fmt),a2);
           return caml_call2(Stdlib_format[123],fmt,_i_);
          case 3:
           var a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_j_);
           caml_call1(caml_call1(pp_row,fmt),a0$2);
           return caml_call2(Stdlib_format[123],fmt,_k_);
          case 4:
           var a0$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_l_);
           caml_call1(caml_call1(pp_row,fmt),a0$3);
           return caml_call2(Stdlib_format[123],fmt,_m_);
          case 5:
           var a0$4=param[1];
           caml_call2(Stdlib_format[123],fmt,_n_);
           caml_call2(Stdlib_format[123],fmt,_o_);
           var
            _GO_=0,
            _GP_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_p_);
               caml_call1(caml_call1(pp_ty,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_GP_,_GO_,a0$4);
           caml_call2(Stdlib_format[123],fmt,_q_);
           return caml_call2(Stdlib_format[123],fmt,_r_);
          default:
           var a0$5=param[1];
           caml_call2(Stdlib_format[123],fmt,_s_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_t_),a0$5);
           return caml_call2(Stdlib_format[123],fmt,_u_)}});
    caml_update_dummy
     (show_ty,function(x){return caml_call3(Stdlib_format[127],_v_,pp_ty,x)});
    caml_update_dummy
     (pp_row,
      function(fmt)
       {function _GN_(fmt,param)
         {var a1=param[2],a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_w_);
          if(a0)
           {var x=a0[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_x_),x);
            caml_call2(Stdlib_format[13],fmt,cst)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None);
          caml_call2(Stdlib_format[123],fmt,_y_);
          caml_call1(caml_call1(pp_ty,fmt),a1);
          return caml_call2(Stdlib_format[123],fmt,_z_)}
        return caml_call2(Utils_Binary_tree[3],_GN_,fmt)});
    caml_update_dummy
     (show_row,
      function(x){return caml_call3(Stdlib_format[127],_A_,pp_row,x)});
    var equal_tys=function _GM_(_GK_,_GL_){return _GM_.fun(_GK_,_GL_)};
    caml_update_dummy
     (equal_tys,
      function(lhs,rhs)
       {if(lhs)
         {if(rhs)
           {var rhs0=rhs[1],lhs0=lhs[1];
            return caml_call1(caml_call1(equal_ty,lhs0),rhs0)}}
        else
         if(! rhs)return 1;
        return 0});
    var
     pp_tys=function _GJ_(_GH_,_GI_){return _GJ_.fun(_GH_,_GI_)},
     show_tys=function _GG_(_GF_){return _GG_.fun(_GF_)};
    caml_update_dummy
     (pp_tys,
      function(fmt,param)
       {if(param)
         {var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_B_);
          caml_call1(caml_call1(pp_ty,fmt),a0);
          return caml_call2(Stdlib_format[123],fmt,_C_)}
        return caml_call2(Stdlib_format[13],fmt,cst_Stack_failed)});
    caml_update_dummy
     (show_tys,
      function(x){return caml_call3(Stdlib_format[127],_D_,pp_tys,x)});
    function mk_leaf(l,t){return [0,[0,l,t]]}
    function mk_node(n1,n2){return [1,n1,n2]}
    function t_record(r){return [3,r]}
    function t_variant(r){return [4,r]}
    function t_vector(ts){return [5,ts]}
    function lub(t1,match)
     {var switch$0=0;
      switch(t1[0])
       {case 0:
         var _Gg_=t1[1];
         switch(match[0])
          {case 0:
            var u=match[1];
            if(caml_call2(Michelson_base_Type[1],_Gg_,u))return [0,[0,_Gg_]];
            break;
           case 3:switch$0 = 1;break
           }
         break;
        case 1:
         var _Gj_=t1[1],_Gi_=t1[2];
         switch(match[0])
          {case 1:
            var u1=match[2],u$0=match[1];
            if(caml_call2(Michelson_base_Type[5],_Gj_,u$0))
             {var _Gk_=lub(_Gi_,u1),_Gl_=function(_GE_){return [1,_Gj_,_GE_]};
              return caml_call2(Utils_Option[18],_Gl_,_Gk_)}
            break;
           case 3:switch$0 = 1;break
           }
         break;
        case 2:
         var _Go_=t1[1],_Gm_=t1[3],_Gn_=t1[2];
         switch(match[0])
          {case 2:
            var u2=match[3],u1$0=match[2],u$1=match[1];
            if(caml_call2(Michelson_base_Type[9],_Go_,u$1))
             {var
               _Gp_=lub(_Gm_,u2),
               _Gq_=lub(_Gn_,u1$0),
               _Gr_=function(_GC_,_GD_){return [2,_Go_,_GC_,_GD_]},
               _Gs_=caml_call2(Utils_Option[18],_Gr_,_Gq_);
              return caml_call2(Utils_Option[22],_Gs_,_Gp_)}
            break;
           case 3:switch$0 = 1;break
           }
         break;
        case 3:
         var _Gt_=t1[1];
         if(3 === match[0])
          {var s$0=match[1],_Gv_=lub_row(1,_Gt_,s$0);
           return caml_call2(Utils_Option[18],t_record,_Gv_)}
         var _Gu_=lub_row(1,_Gt_,[0,[0,0,match]]);
         return caml_call2(Utils_Option[18],t_record,_Gu_);
        case 4:
         var _Gw_=t1[1];
         switch(match[0])
          {case 3:switch$0 = 1;break;
           case 4:
            var s$1=match[1],_Gx_=lub_row(0,_Gw_,s$1);
            return caml_call2(Utils_Option[18],t_variant,_Gx_)
           }
         break;
        case 5:
         var _Gy_=t1[1];
         switch(match[0])
          {case 3:switch$0 = 1;break;
           case 5:
            var ts2=match[1],_Gz_=caml_call1(Utils_List[4],ts2);
            if(caml_call1(Utils_List[4],_Gy_) === _Gz_)
             {var _GA_=caml_call3(Utils_Option[30],lub,_Gy_,ts2);
              return caml_call2(Utils_Option[18],t_vector,_GA_)}
            return 0
           }
         break;
        default:
         var _GB_=t1[1];
         switch(match[0])
          {case 3:switch$0 = 1;break;
           case 6:
            var s2=match[1];if(caml_string_equal(_GB_,s2))return [0,t1];break
           }}
      if(switch$0)
       {var s=match[1],_Gh_=lub_row(1,[0,[0,0,t1]],s);
        return caml_call2(Utils_Option[18],t_record,_Gh_)}
      return 0}
    function lub_row(is_record,r1,r2)
     {var r1$0=r1,r2$0=r2;
      for(;;)
       {var switch$0=0;
        if(0 === r1$0[0])
         {var _FK_=r1$0[1],_FL_=_FK_[1],switch$1=0;
          if(_FL_)
           {var _FM_=_FK_[2],_FN_=_FL_[1];
            if(0 === r2$0[0])
             {var _FO_=r2$0[1],_FP_=_FO_[1];
              if(! _FP_)
               {var
                 t2$1=_FO_[2],
                 _FY_=lub(_FM_,t2$1),
                 _FZ_=[0,_FN_],
                 _F0_=function(_Ge_){return mk_leaf(_FZ_,_Ge_)};
                return caml_call2(Utils_Option[18],_F0_,_FY_)}
              var t2=_FO_[2],l2=_FP_[1];
              if(caml_string_equal(_FN_,l2))
               {var
                 _FQ_=lub(_FM_,t2),
                 _FR_=[0,_FN_],
                 _FS_=function(_Gd_){return mk_leaf(_FR_,_Gd_)};
                return caml_call2(Utils_Option[18],_FS_,_FQ_)}}}
          else
           {var _F1_=_FK_[2];
            if(0 === r2$0[0])
             {var _F2_=r2$0[1],_F3_=_F2_[1];
              if(_F3_)
               {var
                 t2$2=_F2_[2],
                 l=_F3_[1],
                 _F4_=lub(_F1_,t2$2),
                 _F5_=[0,l],
                 _F6_=function(_Gf_){return mk_leaf(_F5_,_Gf_)};
                return caml_call2(Utils_Option[18],_F6_,_F4_)}}
            else
             switch(_F1_[0])
              {case 3:break;
               case 4:
                var r1$2=_F1_[1];
                if(! is_record){var r1$0=r1$2;continue}
                switch$1 = 1;
                break;
               default:switch$1 = 1}}
          if(! switch$1)
           {var _FT_=_FK_[2];
            if(0 === r2$0[0])
             {var
               match=r2$0[1],
               t2$0=match[2],
               _FU_=lub(_FT_,t2$0),
               _FV_=0,
               _FW_=function(_Gc_){return mk_leaf(_FV_,_Gc_)};
              return caml_call2(Utils_Option[18],_FW_,_FU_)}
            if(3 === _FT_[0])
             {var r1$1=_FT_[1];
              if(is_record){var r1$0=r1$1;continue}
              switch$0 = 1}}}
        else
         {var _F7_=r1$0[2],_F8_=r1$0[1];
          if(0 !== r2$0[0])
           {var
             s2=r2$0[2],
             s1=r2$0[1],
             _F$_=lub_row(is_record,_F7_,s2),
             _Ga_=lub_row(is_record,_F8_,s1),
             _Gb_=caml_call2(Utils_Option[18],mk_node,_Ga_);
            return caml_call2(Utils_Option[22],_Gb_,_F$_)}
          var _F9_=r2$0[1];
          if(_F9_[1])
           switch$0 = 1;
          else
           {var _F__=_F9_[2];
            switch(_F__[0])
             {case 3:switch$0 = 1;break;
              case 4:
               var r2$2=_F__[1];if(! is_record){var r2$0=r2$2;continue}break
              }}}
        if(switch$0 && 0 === r2$0[0])
         {var _FX_=r2$0[1][2];
          if(3 === _FX_[0])
           {var r2$1=_FX_[1];if(is_record){var r2$0=r2$1;continue}}}
        return 0}}
    function lubs(t1,match)
     {if(t1)
       {if(match)
         {var
           ts2=match[1],
           ts1=t1[1],
           _FI_=lub(ts1,ts2),
           _FJ_=function(x){return [0,x]};
          return caml_call2(Utils_Option[18],_FJ_,_FI_)}
        return [0,t1]}
      return [0,match]}
    function compatible(t1,t2)
     {var _FH_=lub(t1,t2);return caml_call1(Utils_Option[47],_FH_)}
    function t_missing(s){return [6,s]}
    function t_sapling_state(memo){return [0,[0,memo]]}
    function t_sapling_transaction(memo){return [0,[1,memo]]}
    function t_list(t){return [1,1,t]}
    function t_set(t){return [1,2,t]}
    function t_contract(t){return [1,3,t]}
    function t_ticket(t){return [1,4,t]}
    function t_map(k,v){return [2,1,k,v]}
    function t_big_map(k,v){return [2,2,k,v]}
    function t_lambda(a,b){return [2,0,a,b]}
    function t_variant_node(r1,r2){return [4,[1,r1,r2]]}
    function t_record_node(r1,r2){return [3,[1,r1,r2]]}
    function r_or(t1,t2){return [1,[0,[0,0,t1]],[0,[0,0,t2]]]}
    function t_or(t1,t2){return [4,r_or(t1,t2)]}
    function leaf(lbl,t){return [0,[0,lbl,t]]}
    function t_pair(annot1,annot2,t1,t2)
     {return t_record_node([0,[0,annot1,t1]],[0,[0,annot2,t2]])}
    function r_option(t)
     {var _FG_=leaf(_E_,t);return [1,leaf(_F_,t_unit),_FG_]}
    function t_option(t){return [4,r_option(t)]}
    function print_row(sep)
     {function f(protect,ppf$0,param)
       {if(0 === param[0])
         {var _Fw_=param[1],_Fx_=_Fw_[1];
          if(_Fx_)
           {var t=_Fw_[2],s=_Fx_[1];
            return caml_call5(Stdlib_format[123],ppf$0,_G_,s,ppf,t)}
          var t$0=_Fw_[2];
          return caml_call4(Stdlib_format[123],ppf$0,_H_,ppf,t$0)}
        var r2=param[2],r1=param[1];
        function r(ppf)
         {var _Fy_=1;
          function _Fz_(_FE_,_FF_){return f(_Fy_,_FE_,_FF_)}
          var _FA_=1;
          function _FB_(_FC_,_FD_){return f(_FA_,_FC_,_FD_)}
          return caml_call7(Stdlib_format[123],ppf,_I_,_FB_,r1,sep,_Fz_,r2)}
        return protect?caml_call3(Stdlib_format[123],ppf$0,_J_,r):r(ppf$0)}
      var _Ft_=0;
      return function(_Fu_,_Fv_){return f(_Ft_,_Fu_,_Fv_)}}
    function ppf(ppf$0,param)
     {switch(param[0])
       {case 0:
         var
          t=param[1],
          match=caml_call1(Michelson_base_Type[13],t),
          memo=match[2],
          t$0=match[1],
          _Fk_=caml_call2(Utils_Control[3],Stdlib[28],cst$0),
          _Fl_=caml_call3(Utils_Option[12],cst$1,_Fk_,memo),
          _Fm_=caml_call2(Stdlib[28],t$0,_Fl_);
         return caml_call3(Stdlib_format[123],ppf$0,_K_,_Fm_);
        case 1:
         var
          t1=param[2],
          t$1=param[1],
          _Fn_=caml_call1(Michelson_base_Type[14],t$1);
         return caml_call5(Stdlib_format[123],ppf$0,_L_,_Fn_,ppf,t1);
        case 2:
         var
          t2=param[3],
          t1$0=param[2],
          t$2=param[1],
          match$0=caml_call1(Michelson_base_Type[15],t$2),
          a2=match$0[3],
          a1=match$0[2],
          t$3=match$0[1],
          _Fo_=function(x){return caml_call2(Stdlib[28],cst$2,x)},
          a1$0=caml_call3(Utils_Option[12],cst$3,_Fo_,a1),
          _Fp_=function(x){return caml_call2(Stdlib[28],cst$4,x)},
          a2$0=caml_call3(Utils_Option[12],cst$5,_Fp_,a2);
         return caml_call9
                 (Stdlib_format[123],ppf$0,_M_,t$3,ppf,t1$0,a1$0,ppf,t2,a2$0);
        case 3:
         var r=param[1],_Fq_=print_row(cst$6);
         return caml_call4(Stdlib_format[123],ppf$0,_N_,_Fq_,r);
        case 4:
         var r$0=param[1],_Fr_=print_row(cst$7);
         return caml_call4(Stdlib_format[123],ppf$0,_O_,_Fr_,r$0);
        case 5:
         var ts=param[1],_Fs_=caml_call1(Utils_List[2],ppf);
         return caml_call4(Stdlib_format[123],ppf$0,_P_,_Fs_,ts);
        default:
         var s=param[1];return caml_call3(Stdlib_format[123],ppf$0,_Q_,s)}}
    function print_tys(ppf$0,param)
     {if(param)
       {var t=param[1];return caml_call4(Stdlib_format[123],ppf$0,_R_,ppf,t)}
      return caml_call2(Stdlib_format[123],ppf$0,_S_)}
    function get1(param){if(param){var t=param[1];return [0,t]}return _T_}
    function unleaf_variant(t)
     {if(0 === t[0]){var match=t[1],t$0=match[2];return t$0}return [4,t]}
    function view_option(param)
     {if(4 === param[0])
       {var _Fb_=param[1];
        if(0 !== _Fb_[0])
         {var _Fc_=_Fb_[1];
          if(0 === _Fc_[0])
           {var _Fd_=_Fc_[1],_Fe_=_Fd_[1];
            if(_Fe_ && ! caml_string_notequal(_Fe_[1],cst_None$0))
             {var _Ff_=_Fd_[2];
              if(0 === _Ff_[0])
               {var _Fg_=_Ff_[1];
                if(typeof _Fg_ === "number" && ! _Fg_)
                 {var _Fh_=_Fb_[2];
                  if(0 === _Fh_[0])
                   {var _Fi_=_Fh_[1],_Fj_=_Fi_[1];
                    if(_Fj_ && ! caml_string_notequal(_Fj_[1],cst_Some$0))
                     {var t=_Fi_[2];return [0,t]}}}}}}}}
      return 0}
    function view_or(param)
     {if(4 === param[0])
       {var _E$_=param[1];
        if(0 !== _E$_[0])
         {var tr=_E$_[2],tl=_E$_[1],_Fa_=unleaf_variant(tr);
          return [0,[0,unleaf_variant(tl),_Fa_]]}}
      return 0}
    var
     Michel_Type=
      [0,
       equal_ty,
       equal_row,
       pp_ty,
       show_ty,
       pp_row,
       show_row,
       equal_tys,
       pp_tys,
       show_tys,
       lub,
       lubs,
       compatible,
       t_unit,
       t_missing,
       t_nat,
       t_int,
       t_mutez,
       t_string,
       t_bytes,
       t_chain_id,
       t_timestamp,
       t_address,
       t_key,
       t_key_hash,
       t_baker_hash,
       t_signature,
       t_operation,
       t_sapling_state,
       t_sapling_transaction,
       t_never,
       t_list,
       t_set,
       t_contract,
       t_ticket,
       t_map,
       t_big_map,
       t_lambda,
       t_variant,
       t_record,
       t_variant_node,
       t_record_node,
       leaf,
       t_bool,
       r_option,
       t_option,
       t_pair,
       r_or,
       t_or,
       print_row,
       ppf,
       print_tys,
       get1,
       unleaf_variant,
       view_option,
       view_or,
       t_bls12_381_g1,
       t_bls12_381_g2,
       t_bls12_381_fr];
    caml_register_global(799,Michel_Type,"Michel__Type");
    var
     equal_prim0=include[1],
     compare_prim0=include[2],
     pp_prim0=include[3],
     show_prim0=include[4],
     map_prim0=include[5],
     fold_prim0=include[6],
     equal_prim1=include[7],
     compare_prim1=include[8],
     pp_prim1=include[9],
     show_prim1=include[10],
     map_prim1=include[11],
     equal_prim1_fail=include[12],
     compare_prim1_fail=include[13],
     pp_prim1_fail=include[14],
     show_prim1_fail=include[15],
     equal_prim2=include[16],
     compare_prim2=include[17],
     pp_prim2=include[18],
     show_prim2=include[19],
     equal_prim3=include[20],
     compare_prim3=include[21],
     pp_prim3=include[22],
     show_prim3=include[23],
     equal_lit=function _E__(_E8_,_E9_){return _E__.fun(_E8_,_E9_)};
    caml_update_dummy
     (equal_lit,
      function(lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 1}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];return lhs0 === rhs0?1:0}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_call1(caml_call1(Utils_Bigint[1],lhs0$0),rhs0$0)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_call1(caml_call1(Utils_Bigint[1],lhs0$1),rhs0$1)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_call1(caml_call1(Utils_Bigint[1],lhs0$2),rhs0$2)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$3=match[1],lhs0$3=lhs[1];
              return caml_string_equal(lhs0$3,rhs0$3)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_string_equal(lhs0$4,rhs0$4)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$5=match[1],lhs0$5=lhs[1];
              return caml_string_equal(lhs0$5,rhs0$5)}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_string_equal(lhs0$6,rhs0$6)}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1];
              return caml_string_equal(lhs0$7,rhs0$7)}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var rhs0$8=match[1],lhs0$8=lhs[1];
              return caml_string_equal(lhs0$8,rhs0$8)}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var rhs0$9=match[1],lhs0$9=lhs[1];
              return caml_string_equal(lhs0$9,rhs0$9)}
            break;
           case 11:
            if(typeof match !== "number" && 11 === match[0])
             {var rhs0$10=match[1],lhs0$10=lhs[1];
              return caml_string_equal(lhs0$10,rhs0$10)}
            break;
           case 12:
            if(typeof match !== "number" && 12 === match[0])
             {var rhs0$11=match[1],lhs0$11=lhs[1];
              return caml_string_equal(lhs0$11,rhs0$11)}
            break;
           case 13:
            if(typeof match !== "number" && 13 === match[0])
             {var rhs0$12=match[1],lhs0$12=lhs[1];
              return caml_string_equal(lhs0$12,rhs0$12)}
            break;
           default:
            if(typeof match !== "number" && 14 === match[0])
             {var rhs0$13=match[1],lhs0$13=lhs[1];
              return caml_string_equal(lhs0$13,rhs0$13)}}
        return 0});
    var
     pp_lit=function _E7_(_E5_,_E6_){return _E7_.fun(_E5_,_E6_)},
     show_lit=function _E4_(_E3_){return _E4_.fun(_E3_)};
    caml_update_dummy
     (pp_lit,
      function(fmt,param)
       {if(typeof param === "number")
         return caml_call2(Stdlib_format[13],fmt,cst_Unit);
        else
         switch(param[0])
          {case 0:
            var a0=param[1];
            caml_call2(Stdlib_format[123],fmt,_U_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_V_),a0);
            return caml_call2(Stdlib_format[123],fmt,_W_);
           case 1:
            var a0$0=param[1];
            caml_call2(Stdlib_format[123],fmt,_X_);
            caml_call1(caml_call1(Utils_Bigint[3],fmt),a0$0);
            return caml_call2(Stdlib_format[123],fmt,_Y_);
           case 2:
            var a0$1=param[1];
            caml_call2(Stdlib_format[123],fmt,_Z_);
            caml_call1(caml_call1(Utils_Bigint[3],fmt),a0$1);
            return caml_call2(Stdlib_format[123],fmt,___);
           case 3:
            var a0$2=param[1];
            caml_call2(Stdlib_format[123],fmt,_$_);
            caml_call1(caml_call1(Utils_Bigint[3],fmt),a0$2);
            return caml_call2(Stdlib_format[123],fmt,_aa_);
           case 4:
            var a0$3=param[1];
            caml_call2(Stdlib_format[123],fmt,_ab_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_ac_),a0$3);
            return caml_call2(Stdlib_format[123],fmt,_ad_);
           case 5:
            var a0$4=param[1];
            caml_call2(Stdlib_format[123],fmt,_ae_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_af_),a0$4);
            return caml_call2(Stdlib_format[123],fmt,_ag_);
           case 6:
            var a0$5=param[1];
            caml_call2(Stdlib_format[123],fmt,_ah_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_ai_),a0$5);
            return caml_call2(Stdlib_format[123],fmt,_aj_);
           case 7:
            var a0$6=param[1];
            caml_call2(Stdlib_format[123],fmt,_ak_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_al_),a0$6);
            return caml_call2(Stdlib_format[123],fmt,_am_);
           case 8:
            var a0$7=param[1];
            caml_call2(Stdlib_format[123],fmt,_an_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_ao_),a0$7);
            return caml_call2(Stdlib_format[123],fmt,_ap_);
           case 9:
            var a0$8=param[1];
            caml_call2(Stdlib_format[123],fmt,_aq_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_ar_),a0$8);
            return caml_call2(Stdlib_format[123],fmt,_as_);
           case 10:
            var a0$9=param[1];
            caml_call2(Stdlib_format[123],fmt,_at_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_au_),a0$9);
            return caml_call2(Stdlib_format[123],fmt,_av_);
           case 11:
            var a0$10=param[1];
            caml_call2(Stdlib_format[123],fmt,_aw_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_ax_),a0$10);
            return caml_call2(Stdlib_format[123],fmt,_ay_);
           case 12:
            var a0$11=param[1];
            caml_call2(Stdlib_format[123],fmt,_az_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_aA_),a0$11);
            return caml_call2(Stdlib_format[123],fmt,_aB_);
           case 13:
            var a0$12=param[1];
            caml_call2(Stdlib_format[123],fmt,_aC_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_aD_),a0$12);
            return caml_call2(Stdlib_format[123],fmt,_aE_);
           default:
            var a0$13=param[1];
            caml_call2(Stdlib_format[123],fmt,_aF_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_aG_),a0$13);
            return caml_call2(Stdlib_format[123],fmt,_aH_)}});
    caml_update_dummy
     (show_lit,
      function(x){return caml_call3(Stdlib_format[127],_aI_,pp_lit,x)});
    function equal_stack_op(lhs,match)
     {if(typeof lhs === "number")
       {if(typeof match === "number")return 1}
      else
       switch(lhs[0])
        {case 0:
          if(typeof match !== "number" && 0 === match[0])
           {var rhs0=match[1],lhs0=lhs[1];return lhs0 === rhs0?1:0}
          break;
         case 1:
          if(typeof match !== "number" && 1 === match[0])
           {var rhs0$0=match[1],lhs0$0=lhs[1];return lhs0$0 === rhs0$0?1:0}
          break;
         case 2:
          if(typeof match !== "number" && 2 === match[0])
           {var rhs0$1=match[1],lhs0$1=lhs[1];return lhs0$1 === rhs0$1?1:0}
          break;
         default:
          if(typeof match !== "number" && 3 === match[0])
           {var rhs0$2=match[1],lhs0$2=lhs[1];return lhs0$2 === rhs0$2?1:0}}
      return 0}
    function pp_stack_op(fmt,param)
     {if(typeof param === "number")
       return caml_call2(Stdlib_format[13],fmt,cst_Swap);
      else
       switch(param[0])
        {case 0:
          var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_aJ_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_aK_),a0);
          return caml_call2(Stdlib_format[123],fmt,_aL_);
         case 1:
          var a0$0=param[1];
          caml_call2(Stdlib_format[123],fmt,_aM_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_aN_),a0$0);
          return caml_call2(Stdlib_format[123],fmt,_aO_);
         case 2:
          var a0$1=param[1];
          caml_call2(Stdlib_format[123],fmt,_aP_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_aQ_),a0$1);
          return caml_call2(Stdlib_format[123],fmt,_aR_);
         default:
          var a0$2=param[1];
          caml_call2(Stdlib_format[123],fmt,_aS_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_aT_),a0$2);
          return caml_call2(Stdlib_format[123],fmt,_aU_)}}
    function show_stack_op(x)
     {return caml_call3(Stdlib_format[127],_aV_,pp_stack_op,x)}
    var equal_row_context=function _E2_(_E1_){return _E2_.fun(_E1_)};
    caml_update_dummy
     (equal_row_context,
      function(x)
       {function _EY_(param,_EZ_)
         {var
           rhs1=_EZ_[2],
           rhs0=_EZ_[1],
           lhs1=param[2],
           lhs0=param[1],
           switch$0=0;
          if(lhs0)
           if(rhs0)
            var b=rhs0[1],a=lhs0[1],_E0_=caml_string_equal(a,b);
           else
            switch$0 = 1;
          else
           if(rhs0)switch$0 = 1;else var _E0_=1;
          if(switch$0)var _E0_=0;
          return _E0_?caml_call1(caml_call1(equal_ty,lhs1),rhs1):_E0_}
        return caml_call1(caml_call1(Utils_Binary_tree[56],_EY_),x)});
    var
     pp_row_context=function _EX_(_EW_){return _EX_.fun(_EW_)},
     show_row_context=function _EV_(_EU_){return _EV_.fun(_EU_)};
    caml_update_dummy
     (pp_row_context,
      function(fmt)
       {function _ET_(fmt,param)
         {var a1=param[2],a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_aW_);
          if(a0)
           {var x=a0[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$1);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_aX_),x);
            caml_call2(Stdlib_format[13],fmt,cst$8)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$1);
          caml_call2(Stdlib_format[123],fmt,_aY_);
          caml_call1(caml_call1(pp_ty,fmt),a1);
          return caml_call2(Stdlib_format[123],fmt,_aZ_)}
        return caml_call2(Utils_Binary_tree[57],_ET_,fmt)});
    caml_update_dummy
     (show_row_context,
      function(x){return caml_call3(Stdlib_format[127],_a0_,pp_row_context,x)});
    var equal_record_pattern=function _ES_(_ER_){return _ES_.fun(_ER_)};
    caml_update_dummy
     (equal_record_pattern,
      function(x)
       {function _EQ_(x,y)
         {if(x)
           {if(y){var b=y[1],a=x[1];return caml_string_equal(a,b)}}
          else
           if(! y)return 1;
          return 0}
        return caml_call1(caml_call1(Utils_Binary_tree[1],_EQ_),x)});
    var
     pp_record_pattern=function _EP_(_EO_){return _EP_.fun(_EO_)},
     show_record_pattern=function _EN_(_EM_){return _EN_.fun(_EM_)};
    caml_update_dummy
     (pp_record_pattern,
      function(fmt)
       {function _EL_(fmt,param)
         {if(param)
           {var x=param[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$2);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_a1_),x);
            return caml_call2(Stdlib_format[13],fmt,cst$9)}
          return caml_call2(Stdlib_format[13],fmt,cst_None$2)}
        return caml_call2(Utils_Binary_tree[3],_EL_,fmt)});
    caml_update_dummy
     (show_record_pattern,
      function(x)
       {return caml_call3(Stdlib_format[127],_a2_,pp_record_pattern,x)});
    function equal_pattern(lhs,match)
     {if(0 === lhs[0])
       {var _EI_=lhs[1];
        if(0 === match[0])
         {var rhs0=match[1];
          if(_EI_)
           {if(rhs0){var b=rhs0[1],a=_EI_[1];return caml_string_equal(a,b)}}
          else
           if(! rhs0)return 1;
          return 0}}
      else
       {var _EJ_=lhs[1];
        if(0 !== match[0])
         {var rhs0$0=match[1],x=_EJ_,y=rhs0$0;
          for(;;)
           {if(x)
             {if(y)
               {var y$0=y[2],b$0=y[1],x$0=x[2],a$0=x[1],switch$0=0;
                if(a$0)
                 if(b$0)
                  var b$1=b$0[1],a$1=a$0[1],_EK_=caml_string_equal(a$1,b$1);
                 else
                  switch$0 = 1;
                else
                 if(b$0)switch$0 = 1;else var _EK_=1;
                if(switch$0)var _EK_=0;
                if(_EK_){var x=x$0,y=y$0;continue}
                return _EK_}}
            else
             if(! y)return 1;
            return 0}}}
      return 0}
    function pp_pattern(fmt,param)
     {if(0 === param[0])
       {var a0=param[1];
        caml_call2(Stdlib_format[123],fmt,_a3_);
        if(a0)
         {var x=a0[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$3);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_a4_),x);
          caml_call2(Stdlib_format[13],fmt,cst$10)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$3);
        return caml_call2(Stdlib_format[123],fmt,_a5_)}
      var a0$0=param[1];
      caml_call2(Stdlib_format[123],fmt,_a6_);
      caml_call2(Stdlib_format[123],fmt,_a7_);
      var _EG_=0;
      function _EH_(sep,x)
       {if(sep)caml_call2(Stdlib_format[123],fmt,_a8_);
        if(x)
         {var x$0=x[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$4);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_a9_),x$0);
          caml_call2(Stdlib_format[13],fmt,cst$11)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$4);
        return 1}
      caml_call3(Stdlib_list[22],_EH_,_EG_,a0$0);
      caml_call2(Stdlib_format[123],fmt,_a__);
      return caml_call2(Stdlib_format[123],fmt,_a$_)}
    function show_pattern(x)
     {return caml_call3(Stdlib_format[127],_ba_,pp_pattern,x)}
    function map_match_clause(poly_e,x)
     {var _EF_=caml_call1(poly_e,x[3]);return [0,x[1],x[2],_EF_]}
    function fold_match_clause(poly_e,acc,x)
     {return caml_call2(poly_e,acc,x[3])}
    function pp_match_clause(poly_e,fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_bb_);
      caml_call3(Stdlib_format[123],fmt,_bc_,cst_cons);
      var _EC_=x[1];
      if(_EC_)
       {var x$0=_EC_[1];
        caml_call2(Stdlib_format[13],fmt,cst_Some$5);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_bd_),x$0);
        caml_call2(Stdlib_format[13],fmt,cst$12)}
      else
       caml_call2(Stdlib_format[13],fmt,cst_None$5);
      caml_call2(Stdlib_format[123],fmt,_be_);
      caml_call2(Stdlib_format[123],fmt,_bf_);
      caml_call3(Stdlib_format[123],fmt,_bg_,cst_var);
      var _ED_=x[2];
      if(_ED_)
       {var x$1=_ED_[1];
        caml_call2(Stdlib_format[13],fmt,cst_Some$6);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_bh_),x$1);
        caml_call2(Stdlib_format[13],fmt,cst$13)}
      else
       caml_call2(Stdlib_format[13],fmt,cst_None$6);
      caml_call2(Stdlib_format[123],fmt,_bi_);
      caml_call2(Stdlib_format[123],fmt,_bj_);
      caml_call3(Stdlib_format[123],fmt,_bk_,cst_rhs);
      var _EE_=x[3];
      caml_call1(caml_call1(poly_e,fmt),_EE_);
      caml_call2(Stdlib_format[123],fmt,_bl_);
      return caml_call2(Stdlib_format[123],fmt,_bm_)}
    function show_match_clause(poly_e,x)
     {function _Ez_(_EA_,_EB_){return pp_match_clause(poly_e,_EA_,_EB_)}
      return caml_call3(Stdlib_format[127],_bn_,_Ez_,x)}
    var
     equal_precontract=
      function _Ey_(_Ev_,_Ew_,_Ex_){return _Ey_.fun(_Ev_,_Ew_,_Ex_)};
    caml_update_dummy
     (equal_precontract,
      function(poly_e,lhs,rhs)
       {var
         _El_=rhs[1],
         _Em_=lhs[1],
         rhs1=_El_[2],
         rhs0=_El_[1],
         lhs1=_Em_[2],
         lhs0=_Em_[1],
         _En_=caml_call1(caml_call1(equal_ty,lhs0),rhs0);
        if(_En_)
         {var switch$0=0;
          if(lhs1)
           if(rhs1)
            var b=rhs1[1],a=lhs1[1],_Eo_=caml_string_equal(a,b);
           else
            switch$0 = 1;
          else
           if(rhs1)switch$0 = 1;else var _Eo_=1;
          if(switch$0)var _Eo_=0}
        else
         var _Eo_=_En_;
        if(_Eo_)
         var _Ep_=rhs[2],_Eq_=caml_call1(caml_call1(equal_ty,lhs[2]),_Ep_);
        else
         var _Eq_=_Eo_;
        if(_Eq_)
         {var _Er_=rhs[3],_Es_=lhs[3],switch$1=0;
          if(_Es_)
           if(_Er_)
            var b$0=_Er_[1],a$0=_Es_[1],_Et_=caml_string_equal(a$0,b$0);
           else
            switch$1 = 1;
          else
           if(_Er_)switch$1 = 1;else var _Et_=1;
          if(switch$1)var _Et_=0;
          var _Eu_=_Et_}
        else
         var _Eu_=_Eq_;
        return _Eu_?caml_call2(poly_e,lhs[4],rhs[4]):_Eu_});
    function map_precontract(poly_e,x)
     {var _Ek_=caml_call1(poly_e,x[4]);return [0,x[1],x[2],x[3],_Ek_]}
    function fold_precontract(poly_e,acc,x)
     {return caml_call2(poly_e,acc,x[4])}
    var
     pp_precontract=
      function _Ej_(_Eg_,_Eh_,_Ei_){return _Ej_.fun(_Eg_,_Eh_,_Ei_)},
     show_precontract=function _Ef_(_Ed_,_Ee_){return _Ef_.fun(_Ed_,_Ee_)};
    caml_update_dummy
     (pp_precontract,
      function(poly_e,fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_bo_);
        caml_call3(Stdlib_format[123],fmt,_bp_,cst_tparameter);
        var _D$_=x[1],a1=_D$_[2],a0=_D$_[1];
        caml_call2(Stdlib_format[123],fmt,_bq_);
        caml_call1(caml_call1(pp_ty,fmt),a0);
        caml_call2(Stdlib_format[123],fmt,_br_);
        if(a1)
         {var x$0=a1[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$7);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_bs_),x$0);
          caml_call2(Stdlib_format[13],fmt,cst$14)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$7);
        caml_call2(Stdlib_format[123],fmt,_bt_);
        caml_call2(Stdlib_format[123],fmt,_bu_);
        caml_call2(Stdlib_format[123],fmt,_bv_);
        caml_call3(Stdlib_format[123],fmt,_bw_,cst_tstorage);
        var _Ea_=x[2];
        caml_call1(caml_call1(pp_ty,fmt),_Ea_);
        caml_call2(Stdlib_format[123],fmt,_bx_);
        caml_call2(Stdlib_format[123],fmt,_by_);
        caml_call3(Stdlib_format[123],fmt,_bz_,cst_parameter_and_storage);
        var _Eb_=x[3];
        if(_Eb_)
         {var x$1=_Eb_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$8);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_bA_),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$15)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$8);
        caml_call2(Stdlib_format[123],fmt,_bB_);
        caml_call2(Stdlib_format[123],fmt,_bC_);
        caml_call3(Stdlib_format[123],fmt,_bD_,cst_body);
        var _Ec_=x[4];
        caml_call1(caml_call1(poly_e,fmt),_Ec_);
        caml_call2(Stdlib_format[123],fmt,_bE_);
        return caml_call2(Stdlib_format[123],fmt,_bF_)});
    caml_update_dummy
     (show_precontract,
      function(poly_e,x)
       {var _D__=caml_call1(pp_precontract,poly_e);
        return caml_call3(Stdlib_format[127],_bG_,_D__,x)});
    var
     equal_expr_f=
      function _D9_(_D6_,_D7_,_D8_){return _D9_.fun(_D6_,_D7_,_D8_)};
    caml_update_dummy
     (equal_expr_f,
      function(poly_e,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_string_equal(lhs0,rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var
              rhs2=match[3],
              rhs1=match[2],
              rhs0$0=match[1],
              lhs2=lhs[3],
              lhs1=lhs[2],
              lhs0$0=lhs[1],
              _DV_=equal_pattern(lhs0$0,rhs0$0),
              _CO_=_DV_?caml_call2(poly_e,lhs1,rhs1):_DV_;
             return _CO_?caml_call2(poly_e,lhs2,rhs2):_CO_}
           break;
          case 2:
           if(2 === match[0])
            {var
              rhs3=match[4],
              rhs2$0=match[3],
              rhs1$0=match[2],
              rhs0$1=match[1],
              lhs3=lhs[4],
              lhs2$0=lhs[3],
              lhs1$0=lhs[2],
              lhs0$1=lhs[1],
              switch$0=0;
             if(lhs0$1)
              if(rhs0$1)
               var b=rhs0$1[1],a=lhs0$1[1],_CP_=caml_string_equal(a,b);
              else
               switch$0 = 1;
             else
              if(rhs0$1)switch$0 = 1;else var _CP_=1;
             if(switch$0)var _CP_=0;
             var
              _CQ_=_CP_?caml_call1(caml_call1(equal_ty,lhs1$0),rhs1$0):_CP_,
              _CR_=_CQ_?caml_call1(caml_call1(equal_ty,lhs2$0),rhs2$0):_CQ_;
             return _CR_?caml_call2(poly_e,lhs3,rhs3):_CR_}
           break;
          case 3:
           if(3 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1];
             return caml_call1(caml_call1(equal_lit,lhs0$2),rhs0$2)}
           break;
          case 4:
           if(4 === match[0])
            {var rhs0$3=match[1],lhs0$3=lhs[1];
             return caml_call1
                     (caml_call1
                       (caml_call1
                         (equal_prim0,function(x){return caml_call1(equal_ty,x)}),
                        lhs0$3),
                      rhs0$3)}
           break;
          case 5:
           if(5 === match[0])
            {var
              rhs1$1=match[2],
              rhs0$4=match[1],
              lhs1$1=lhs[2],
              lhs0$4=lhs[1],
              _CS_=
               caml_call1
                (caml_call1
                  (caml_call1
                    (equal_prim1,function(x){return caml_call1(equal_ty,x)}),
                   lhs0$4),
                 rhs0$4);
             return _CS_?caml_call2(poly_e,lhs1$1,rhs1$1):_CS_}
           break;
          case 6:
           if(6 === match[0])
            {var
              rhs1$2=match[2],
              rhs0$5=match[1],
              lhs1$2=lhs[2],
              lhs0$5=lhs[1],
              _CT_=caml_call1(caml_call1(equal_prim1_fail,lhs0$5),rhs0$5);
             return _CT_?caml_call2(poly_e,lhs1$2,rhs1$2):_CT_}
           break;
          case 7:
           if(7 === match[0])
            {var
              rhs2$1=match[3],
              rhs1$3=match[2],
              rhs0$6=match[1],
              lhs2$1=lhs[3],
              lhs1$3=lhs[2],
              lhs0$6=lhs[1],
              _CU_=caml_call1(caml_call1(equal_prim2,lhs0$6),rhs0$6),
              _CV_=_CU_?caml_call2(poly_e,lhs1$3,rhs1$3):_CU_;
             return _CV_?caml_call2(poly_e,lhs2$1,rhs2$1):_CV_}
           break;
          case 8:
           if(8 === match[0])
            {var
              rhs3$0=match[4],
              rhs2$2=match[3],
              rhs1$4=match[2],
              rhs0$7=match[1],
              lhs3$0=lhs[4],
              lhs2$2=lhs[3],
              lhs1$4=lhs[2],
              lhs0$7=lhs[1],
              _CW_=caml_call1(caml_call1(equal_prim3,lhs0$7),rhs0$7),
              _CX_=_CW_?caml_call2(poly_e,lhs1$4,rhs1$4):_CW_,
              _CY_=_CX_?caml_call2(poly_e,lhs2$2,rhs2$2):_CX_;
             return _CY_?caml_call2(poly_e,lhs3$0,rhs3$0):_CY_}
           break;
          case 9:
           if(9 === match[0])
            {var
              rhs1$5=match[2],
              rhs0$8=match[1],
              lhs1$5=lhs[2],
              lhs0$8=lhs[1],
              _CZ_=caml_string_equal(lhs0$8,rhs0$8);
             return _CZ_?caml_call2(poly_e,lhs1$5,rhs1$5):_CZ_}
           break;
          case 10:
           if(10 === match[0])
            {var
              rhs1$6=match[2],
              rhs0$9=match[1],
              lhs1$6=lhs[2],
              lhs0$9=lhs[1],
              _DW_=equal_stack_op(lhs0$9,rhs0$9);
             if(_DW_)
              {var x=lhs1$6,y=rhs1$6;
               for(;;)
                {if(x)
                  {if(y)
                    {var
                      y$0=y[2],
                      b$0=y[1],
                      x$0=x[2],
                      a$0=x[1],
                      _C0_=caml_call2(poly_e,a$0,b$0);
                     if(_C0_){var x=x$0,y=y$0;continue}
                     return _C0_}}
                 else
                  if(! y)return 1;
                 return 0}}
             return _DW_}
           break;
          case 11:
           if(11 === match[0])
            {var
              rhs0$10=match[1],
              lhs0$10=lhs[1],
              _C1_=
               function(param,_D4_)
                {var
                  rhs1=_D4_[2],
                  rhs0=_D4_[1],
                  lhs1=param[2],
                  lhs0=param[1],
                  switch$0=0;
                 if(lhs0)
                  if(rhs0)
                   var b=rhs0[1],a=lhs0[1],_D5_=caml_string_equal(a,b);
                  else
                   switch$0 = 1;
                 else
                  if(rhs0)switch$0 = 1;else var _D5_=1;
                 if(switch$0)var _D5_=0;
                 return _D5_?caml_call2(poly_e,lhs1,rhs1):_D5_};
             return caml_call1
                     (caml_call1(caml_call1(Utils_Binary_tree[1],_C1_),lhs0$10),
                      rhs0$10)}
           break;
          case 12:
           if(12 === match[0])
            {var
              rhs2$3=match[3],
              rhs1$7=match[2],
              rhs0$11=match[1],
              lhs2$3=lhs[3],
              lhs1$7=lhs[2],
              lhs0$11=lhs[1],
              switch$1=0;
             if(lhs0$11)
              if(rhs0$11)
               var
                b$1=rhs0$11[1],
                a$1=lhs0$11[1],
                _C2_=caml_string_equal(a$1,b$1);
              else
               switch$1 = 1;
             else
              if(rhs0$11)switch$1 = 1;else var _C2_=1;
             if(switch$1)var _C2_=0;
             var
              _C3_=
               _C2_
                ?caml_call1(caml_call1(equal_row_context,lhs1$7),rhs1$7)
                :_C2_;
             return _C3_?caml_call2(poly_e,lhs2$3,rhs2$3):_C3_}
           break;
          case 13:
           if(13 === match[0])
            {var
              rhs1$8=match[2],
              rhs0$12=match[1],
              lhs1$8=lhs[2],
              lhs0$12=lhs[1],
              _C4_=caml_call1(caml_call1(equal_ty,lhs0$12),rhs0$12);
             if(_C4_)
              {var x$1=lhs1$8,y$1=rhs1$8;
               for(;;)
                {if(x$1)
                  {if(y$1)
                    {var
                      y$2=y$1[2],
                      b$2=y$1[1],
                      x$2=x$1[2],
                      a$2=x$1[1],
                      _C5_=caml_call2(poly_e,a$2,b$2);
                     if(_C5_){var x$1=x$2,y$1=y$2;continue}
                     return _C5_}}
                 else
                  if(! y$1)return 1;
                 return 0}}
             return _C4_}
           break;
          case 14:
           if(14 === match[0])
            {var
              rhs1$9=match[2],
              rhs0$13=match[1],
              lhs1$9=lhs[2],
              lhs0$13=lhs[1],
              _C6_=caml_call1(caml_call1(equal_ty,lhs0$13),rhs0$13);
             if(_C6_)
              {var x$3=lhs1$9,y$3=rhs1$9;
               for(;;)
                {if(x$3)
                  {if(y$3)
                    {var
                      y$4=y$3[2],
                      b$3=y$3[1],
                      x$4=x$3[2],
                      a$3=x$3[1],
                      _C7_=caml_call2(poly_e,a$3,b$3);
                     if(_C7_){var x$3=x$4,y$3=y$4;continue}
                     return _C7_}}
                 else
                  if(! y$3)return 1;
                 return 0}}
             return _C6_}
           break;
          case 15:
           if(15 === match[0])
            {var
              rhs2$4=match[3],
              rhs1$10=match[2],
              rhs0$14=match[1],
              lhs2$4=lhs[3],
              lhs1$10=lhs[2],
              lhs0$14=lhs[1],
              _C8_=caml_call1(caml_call1(equal_ty,lhs0$14),rhs0$14),
              _C9_=_C8_?caml_call1(caml_call1(equal_ty,lhs1$10),rhs1$10):_C8_;
             if(_C9_)
              {var x$5=lhs2$4,y$5=rhs2$4;
               for(;;)
                {if(x$5)
                  {if(y$5)
                    {var
                      y$6=y$5[2],
                      b$4=y$5[1],
                      x$6=x$5[2],
                      a$4=x$5[1],
                      rhs1$11=b$4[2],
                      rhs0$15=b$4[1],
                      lhs1$11=a$4[2],
                      lhs0$15=a$4[1],
                      _C__=caml_call2(poly_e,lhs0$15,rhs0$15),
                      _C$_=_C__?caml_call2(poly_e,lhs1$11,rhs1$11):_C__;
                     if(_C$_){var x$5=x$6,y$5=y$6;continue}
                     return _C$_}}
                 else
                  if(! y$5)return 1;
                 return 0}}
             return _C9_}
           break;
          case 16:
           if(16 === match[0])
            {var
              rhs2$5=match[3],
              rhs1$12=match[2],
              rhs0$16=match[1],
              lhs2$5=lhs[3],
              lhs1$12=lhs[2],
              lhs0$16=lhs[1],
              _Da_=
               caml_call1(caml_call1(equal_record_pattern,lhs0$16),rhs0$16),
              _Db_=_Da_?caml_call2(poly_e,lhs1$12,rhs1$12):_Da_;
             return _Db_?caml_call2(poly_e,lhs2$5,rhs2$5):_Db_}
           break;
          case 17:
           if(17 === match[0])
            {var
              rhs1$13=match[2],
              rhs0$17=match[1],
              lhs1$13=lhs[2],
              lhs0$17=lhs[1],
              _Dc_=caml_call2(poly_e,lhs0$17,rhs0$17);
             if(_Dc_)
              {var
                _Dd_=
                 function(lhs)
                  {return function(rhs)
                    {var _DX_=rhs[1],_DY_=lhs[1],switch$0=0;
                     if(_DY_)
                      if(_DX_)
                       var b=_DX_[1],a=_DY_[1],_DZ_=caml_string_equal(a,b);
                      else
                       switch$0 = 1;
                     else
                      if(_DX_)switch$0 = 1;else var _DZ_=1;
                     if(switch$0)var _DZ_=0;
                     if(_DZ_)
                      {var _D0_=rhs[2],_D1_=lhs[2],switch$1=0;
                       if(_D1_)
                        if(_D0_)
                         var b$0=_D0_[1],a$0=_D1_[1],_D2_=caml_string_equal(a$0,b$0);
                        else
                         switch$1 = 1;
                       else
                        if(_D0_)switch$1 = 1;else var _D2_=1;
                       if(switch$1)var _D2_=0;
                       var _D3_=_D2_}
                     else
                      var _D3_=_DZ_;
                     return _D3_?caml_call2(poly_e,lhs[3],rhs[3]):_D3_}};
               return caml_call1
                       (caml_call1(caml_call1(Utils_Binary_tree[1],_Dd_),lhs1$13),
                        rhs1$13)}
             return _Dc_}
           break;
          case 18:
           if(18 === match[0])
            {var rhs0$18=match[1],lhs0$18=lhs[1],x$7=lhs0$18,y$7=rhs0$18;
             for(;;)
              {if(x$7)
                {if(y$7)
                  {var
                    y$8=y$7[2],
                    b$5=y$7[1],
                    x$8=x$7[2],
                    a$5=x$7[1],
                    _De_=caml_call2(poly_e,a$5,b$5);
                   if(_De_){var x$7=x$8,y$7=y$8;continue}
                   return _De_}}
               else
                if(! y$7)return 1;
               return 0}}
           break;
          case 19:
           if(19 === match[0])
            {var
              rhs1$14=match[2],
              rhs0$19=match[1],
              lhs1$14=lhs[2],
              lhs0$19=lhs[1],
              _Df_=lhs0$19 === rhs0$19?1:0;
             return _Df_?caml_call2(poly_e,lhs1$14,rhs1$14):_Df_}
           break;
          case 20:
           if(20 === match[0])
            {var
              rhs1$15=match[2],
              rhs0$20=match[1],
              lhs1$15=lhs[2],
              lhs0$20=lhs[1],
              _Dg_=lhs0$20 === rhs0$20?1:0;
             return _Dg_?caml_call2(poly_e,lhs1$15,rhs1$15):_Dg_}
           break;
          case 21:
           if(21 === match[0])
            {var
              rhs2$6=match[3],
              rhs1$16=match[2],
              rhs0$21=match[1],
              lhs2$6=lhs[3],
              lhs1$16=lhs[2],
              lhs0$21=lhs[1],
              _Dh_=caml_call2(poly_e,lhs0$21,rhs0$21),
              _Di_=_Dh_?caml_call2(poly_e,lhs1$16,rhs1$16):_Dh_;
             return _Di_?caml_call2(poly_e,lhs2$6,rhs2$6):_Di_}
           break;
          case 22:
           if(22 === match[0])
            {var
              rhs3$1=match[4],
              rhs2$7=match[3],
              rhs1$17=match[2],
              rhs0$22=match[1],
              lhs3$1=lhs[4],
              lhs2$7=lhs[3],
              lhs1$17=lhs[2],
              lhs0$22=lhs[1],
              _Dj_=caml_call2(poly_e,lhs0$22,rhs0$22);
             if(_Dj_)
              {var switch$2=0;
               if(lhs1$17)
                if(rhs1$17)
                 var
                  b$6=rhs1$17[1],
                  a$6=lhs1$17[1],
                  _Dk_=caml_string_equal(a$6,b$6);
                else
                 switch$2 = 1;
               else
                if(rhs1$17)switch$2 = 1;else var _Dk_=1;
               if(switch$2)var _Dk_=0;
               var _Dl_=_Dk_}
             else
              var _Dl_=_Dj_;
             var _Dm_=_Dl_?caml_call2(poly_e,lhs2$7,rhs2$7):_Dl_;
             return _Dm_?caml_call2(poly_e,lhs3$1,rhs3$1):_Dm_}
           break;
          case 23:
           if(23 === match[0])
            {var
              rhs4=match[5],
              rhs3$2=match[4],
              rhs2$8=match[3],
              rhs1$18=match[2],
              rhs0$23=match[1],
              lhs4=lhs[5],
              lhs3$2=lhs[4],
              lhs2$8=lhs[3],
              lhs1$18=lhs[2],
              lhs0$23=lhs[1],
              _Dn_=caml_call2(poly_e,lhs0$23,rhs0$23);
             if(_Dn_)
              {var switch$3=0;
               if(lhs1$18)
                if(rhs1$18)
                 var
                  b$7=rhs1$18[1],
                  a$7=lhs1$18[1],
                  _Do_=caml_string_equal(a$7,b$7);
                else
                 switch$3 = 1;
               else
                if(rhs1$18)switch$3 = 1;else var _Do_=1;
               if(switch$3)var _Do_=0;
               var _Dp_=_Do_}
             else
              var _Dp_=_Dn_;
             var _Dq_=_Dp_?caml_call2(poly_e,lhs2$8,rhs2$8):_Dp_;
             if(_Dq_)
              {var switch$4=0;
               if(lhs3$2)
                if(rhs3$2)
                 var
                  b$8=rhs3$2[1],
                  a$8=lhs3$2[1],
                  _Dr_=caml_string_equal(a$8,b$8);
                else
                 switch$4 = 1;
               else
                if(rhs3$2)switch$4 = 1;else var _Dr_=1;
               if(switch$4)var _Dr_=0;
               var _Ds_=_Dr_}
             else
              var _Ds_=_Dq_;
             return _Ds_?caml_call2(poly_e,lhs4,rhs4):_Ds_}
           break;
          case 24:
           if(24 === match[0])
            {var
              rhs4$0=match[5],
              rhs3$3=match[4],
              rhs2$9=match[3],
              rhs1$19=match[2],
              rhs0$24=match[1],
              lhs4$0=lhs[5],
              lhs3$3=lhs[4],
              lhs2$9=lhs[3],
              lhs1$19=lhs[2],
              lhs0$24=lhs[1],
              _Dt_=caml_call2(poly_e,lhs0$24,rhs0$24);
             if(_Dt_)
              {var switch$5=0;
               if(lhs1$19)
                if(rhs1$19)
                 var
                  b$9=rhs1$19[1],
                  a$9=lhs1$19[1],
                  _Du_=caml_string_equal(a$9,b$9);
                else
                 switch$5 = 1;
               else
                if(rhs1$19)switch$5 = 1;else var _Du_=1;
               if(switch$5)var _Du_=0;
               var _Dv_=_Du_}
             else
              var _Dv_=_Dt_;
             if(_Dv_)
              {var switch$6=0;
               if(lhs2$9)
                if(rhs2$9)
                 var
                  b$10=rhs2$9[1],
                  a$10=lhs2$9[1],
                  _Dw_=caml_string_equal(a$10,b$10);
                else
                 switch$6 = 1;
               else
                if(rhs2$9)switch$6 = 1;else var _Dw_=1;
               if(switch$6)var _Dw_=0;
               var _Dx_=_Dw_}
             else
              var _Dx_=_Dv_;
             var _Dy_=_Dx_?caml_call2(poly_e,lhs3$3,rhs3$3):_Dx_;
             return _Dy_?caml_call2(poly_e,lhs4$0,rhs4$0):_Dy_}
           break;
          case 25:
           if(25 === match[0])
            {var
              rhs2$10=match[3],
              rhs1$20=match[2],
              rhs0$25=match[1],
              lhs2$10=lhs[3],
              lhs1$20=lhs[2],
              lhs0$25=lhs[1],
              x$9=lhs0$25,
              y$9=rhs0$25;
             for(;;)
              {var switch$7=0;
               if(x$9)
                if(y$9)
                 {var
                   y$10=y$9[2],
                   b$11=y$9[1],
                   x$10=x$9[2],
                   a$11=x$9[1],
                   _Dz_=caml_call2(poly_e,a$11,b$11);
                  if(_Dz_){var x$9=x$10,y$9=y$10;continue}
                  var _DA_=_Dz_}
                else
                 switch$7 = 1;
               else
                if(y$9)switch$7 = 1;else var _DA_=1;
               if(switch$7)var _DA_=0;
               if(_DA_)
                {var x$11=lhs1$20,y$11=rhs1$20;
                 for(;;)
                  {var switch$8=0;
                   if(x$11)
                    if(y$11)
                     {var
                       y$12=y$11[2],
                       b$12=y$11[1],
                       x$12=x$11[2],
                       a$12=x$11[1],
                       switch$9=0;
                      if(a$12)
                       if(b$12)
                        var
                         b$13=b$12[1],
                         a$13=a$12[1],
                         _DB_=caml_string_equal(a$13,b$13);
                       else
                        switch$9 = 1;
                      else
                       if(b$12)switch$9 = 1;else var _DB_=1;
                      if(switch$9)var _DB_=0;
                      if(_DB_){var x$11=x$12,y$11=y$12;continue}
                      var _DC_=_DB_}
                    else
                     switch$8 = 1;
                   else
                    if(y$11)switch$8 = 1;else var _DC_=1;
                   if(switch$8)var _DC_=0;
                   var _DD_=_DC_;
                   break}}
               else
                var _DD_=_DA_;
               return _DD_?caml_call2(poly_e,lhs2$10,rhs2$10):_DD_}}
           break;
          case 26:
           if(26 === match[0])
            {var
              rhs2$11=match[3],
              rhs1$21=match[2],
              rhs0$26=match[1],
              lhs2$11=lhs[3],
              lhs1$21=lhs[2],
              lhs0$26=lhs[1],
              x$13=lhs0$26,
              y$13=rhs0$26;
             for(;;)
              {var switch$10=0;
               if(x$13)
                if(y$13)
                 {var
                   y$14=y$13[2],
                   b$14=y$13[1],
                   x$14=x$13[2],
                   a$14=x$13[1],
                   _DE_=caml_call2(poly_e,a$14,b$14);
                  if(_DE_){var x$13=x$14,y$13=y$14;continue}
                  var _DF_=_DE_}
                else
                 switch$10 = 1;
               else
                if(y$13)switch$10 = 1;else var _DF_=1;
               if(switch$10)var _DF_=0;
               if(_DF_)
                {var x$15=lhs1$21,y$15=rhs1$21;
                 for(;;)
                  {var switch$11=0;
                   if(x$15)
                    if(y$15)
                     {var
                       y$16=y$15[2],
                       b$15=y$15[1],
                       x$16=x$15[2],
                       a$15=x$15[1],
                       switch$12=0;
                      if(a$15)
                       if(b$15)
                        var
                         b$16=b$15[1],
                         a$16=a$15[1],
                         _DG_=caml_string_equal(a$16,b$16);
                       else
                        switch$12 = 1;
                      else
                       if(b$15)switch$12 = 1;else var _DG_=1;
                      if(switch$12)var _DG_=0;
                      if(_DG_){var x$15=x$16,y$15=y$16;continue}
                      var _DH_=_DG_}
                    else
                     switch$11 = 1;
                   else
                    if(y$15)switch$11 = 1;else var _DH_=1;
                   if(switch$11)var _DH_=0;
                   var _DI_=_DH_;
                   break}}
               else
                var _DI_=_DF_;
               return _DI_?caml_call2(poly_e,lhs2$11,rhs2$11):_DI_}}
           break;
          case 27:
           if(27 === match[0])
            {var
              rhs2$12=match[3],
              rhs1$22=match[2],
              rhs0$27=match[1],
              lhs2$12=lhs[3],
              lhs1$22=lhs[2],
              lhs0$27=lhs[1],
              x$17=lhs0$27,
              y$17=rhs0$27;
             for(;;)
              {var switch$13=0;
               if(x$17)
                if(y$17)
                 {var
                   y$18=y$17[2],
                   b$17=y$17[1],
                   x$18=x$17[2],
                   a$17=x$17[1],
                   _DJ_=caml_call2(poly_e,a$17,b$17);
                  if(_DJ_){var x$17=x$18,y$17=y$18;continue}
                  var _DK_=_DJ_}
                else
                 switch$13 = 1;
               else
                if(y$17)switch$13 = 1;else var _DK_=1;
               if(switch$13)var _DK_=0;
               if(_DK_)
                {var x$19=lhs1$22,y$19=rhs1$22;
                 for(;;)
                  {var switch$14=0;
                   if(x$19)
                    if(y$19)
                     {var
                       y$20=y$19[2],
                       b$18=y$19[1],
                       x$20=x$19[2],
                       a$18=x$19[1],
                       switch$15=0;
                      if(a$18)
                       if(b$18)
                        var
                         b$19=b$18[1],
                         a$19=a$18[1],
                         _DL_=caml_string_equal(a$19,b$19);
                       else
                        switch$15 = 1;
                      else
                       if(b$18)switch$15 = 1;else var _DL_=1;
                      if(switch$15)var _DL_=0;
                      if(_DL_){var x$19=x$20,y$19=y$20;continue}
                      var _DM_=_DL_}
                    else
                     switch$14 = 1;
                   else
                    if(y$19)switch$14 = 1;else var _DM_=1;
                   if(switch$14)var _DM_=0;
                   var _DN_=_DM_;
                   break}}
               else
                var _DN_=_DK_;
               return _DN_?caml_call2(poly_e,lhs2$12,rhs2$12):_DN_}}
           break;
          case 28:
           if(28 === match[0])
            {var
              rhs3$4=match[4],
              rhs2$13=match[3],
              rhs1$23=match[2],
              rhs0$28=match[1],
              lhs3$4=lhs[4],
              lhs2$13=lhs[3],
              lhs1$23=lhs[2],
              lhs0$28=lhs[1],
              _DO_=
               caml_call1
                (caml_call1(caml_call1(equal_precontract,poly_e),lhs0$28),
                 rhs0$28),
              _DP_=_DO_?caml_call2(poly_e,lhs1$23,rhs1$23):_DO_,
              _DQ_=_DP_?caml_call2(poly_e,lhs2$13,rhs2$13):_DP_;
             return _DQ_?caml_call2(poly_e,lhs3$4,rhs3$4):_DQ_}
           break;
          case 29:
           if(29 === match[0])
            {var
              rhs1$24=match[2],
              rhs0$29=match[1],
              lhs1$24=lhs[2],
              lhs0$29=lhs[1],
              _DR_=
               function(x,y)
                {if(x)
                  {if(y){var b=y[1],a=x[1];return caml_string_equal(a,b)}}
                 else
                  if(! y)return 1;
                 return 0},
              _DS_=
               caml_call1
                (caml_call1(caml_call1(Utils_Binary_tree[1],_DR_),lhs0$29),
                 rhs0$29);
             return _DS_?caml_call2(poly_e,lhs1$24,rhs1$24):_DS_}
           break;
          default:
           if(30 === match[0])
            {var
              rhs1$25=match[2],
              rhs0$30=match[1],
              lhs1$25=lhs[2],
              lhs0$30=lhs[1],
              x$21=lhs0$30,
              y$21=rhs0$30;
             for(;;)
              {var switch$16=0;
               if(x$21)
                if(y$21)
                 {var
                   y$22=y$21[2],
                   b$20=y$21[1],
                   x$22=x$21[2],
                   a$20=x$21[1],
                   _DT_=caml_string_equal(a$20,b$20);
                  if(_DT_){var x$21=x$22,y$21=y$22;continue}
                  var _DU_=_DT_}
                else
                 switch$16 = 1;
               else
                if(y$21)switch$16 = 1;else var _DU_=1;
               if(switch$16)var _DU_=0;
               return _DU_?caml_call2(poly_e,lhs1$25,rhs1$25):_DU_}}}
        return 0});
    function map_expr_f(poly_e,param)
     {switch(param[0])
       {case 0:var a0=param[1];return [0,a0];
        case 1:
         var a2=param[3],a1=param[2],a0$0=param[1],_Cp_=caml_call1(poly_e,a2);
         return [1,a0$0,caml_call1(poly_e,a1),_Cp_];
        case 2:
         var a3=param[4],a2$0=param[3],a1$0=param[2],a0$1=param[1];
         return [2,a0$1,a1$0,a2$0,caml_call1(poly_e,a3)];
        case 3:var a0$2=param[1];return [3,a0$2];
        case 4:var a0$3=param[1];return [4,a0$3];
        case 5:
         var a1$1=param[2],a0$4=param[1];
         return [5,a0$4,caml_call1(poly_e,a1$1)];
        case 6:
         var a1$2=param[2],a0$5=param[1];
         return [6,a0$5,caml_call1(poly_e,a1$2)];
        case 7:
         var
          a2$1=param[3],
          a1$3=param[2],
          a0$6=param[1],
          _Cq_=caml_call1(poly_e,a2$1);
         return [7,a0$6,caml_call1(poly_e,a1$3),_Cq_];
        case 8:
         var
          a3$0=param[4],
          a2$2=param[3],
          a1$4=param[2],
          a0$7=param[1],
          _Cr_=caml_call1(poly_e,a3$0),
          _Cs_=caml_call1(poly_e,a2$2);
         return [8,a0$7,caml_call1(poly_e,a1$4),_Cs_,_Cr_];
        case 9:
         var a1$5=param[2],a0$8=param[1];
         return [9,a0$8,caml_call1(poly_e,a1$5)];
        case 10:
         var a1$6=param[2],a0$9=param[1];
         return [10,a0$9,caml_call1(caml_call1(Stdlib_list[17],poly_e),a1$6)];
        case 11:
         var
          a0$10=param[1],
          _Ct_=
           function(param)
            {var a1=param[2],a0=param[1];return [0,a0,caml_call1(poly_e,a1)]};
         return [11,caml_call1(caml_call1(Utils_Binary_tree[11],_Ct_),a0$10)];
        case 12:
         var a2$3=param[3],a1$7=param[2],a0$11=param[1];
         return [12,a0$11,a1$7,caml_call1(poly_e,a2$3)];
        case 13:
         var a1$8=param[2],a0$12=param[1];
         return [13,a0$12,caml_call1(caml_call1(Stdlib_list[17],poly_e),a1$8)];
        case 14:
         var a1$9=param[2],a0$13=param[1];
         return [14,a0$13,caml_call1(caml_call1(Stdlib_list[17],poly_e),a1$9)];
        case 15:
         var
          a2$4=param[3],
          a1$10=param[2],
          a0$14=param[1],
          _Cu_=
           function(param)
            {var a1=param[2],a0=param[1],_CN_=caml_call1(poly_e,a1);
             return [0,caml_call1(poly_e,a0),_CN_]};
         return [15,
                 a0$14,
                 a1$10,
                 caml_call1(caml_call1(Stdlib_list[17],_Cu_),a2$4)];
        case 16:
         var
          a2$5=param[3],
          a1$11=param[2],
          a0$15=param[1],
          _Cv_=caml_call1(poly_e,a2$5);
         return [16,a0$15,caml_call1(poly_e,a1$11),_Cv_];
        case 17:
         var
          a1$12=param[2],
          a0$16=param[1],
          _Cw_=function(_CM_){return map_match_clause(poly_e,_CM_)},
          _Cx_=caml_call1(caml_call1(Utils_Binary_tree[11],_Cw_),a1$12);
         return [17,caml_call1(poly_e,a0$16),_Cx_];
        case 18:
         var a0$17=param[1];
         return [18,caml_call1(caml_call1(Stdlib_list[17],poly_e),a0$17)];
        case 19:
         var a1$13=param[2],a0$18=param[1];
         return [19,a0$18,caml_call1(poly_e,a1$13)];
        case 20:
         var a1$14=param[2],a0$19=param[1];
         return [20,a0$19,caml_call1(poly_e,a1$14)];
        case 21:
         var
          a2$6=param[3],
          a1$15=param[2],
          a0$20=param[1],
          _Cy_=caml_call1(poly_e,a2$6),
          _Cz_=caml_call1(poly_e,a1$15);
         return [21,caml_call1(poly_e,a0$20),_Cz_,_Cy_];
        case 22:
         var
          a3$1=param[4],
          a2$7=param[3],
          a1$16=param[2],
          a0$21=param[1],
          _CA_=caml_call1(poly_e,a3$1),
          _CB_=caml_call1(poly_e,a2$7);
         return [22,caml_call1(poly_e,a0$21),a1$16,_CB_,_CA_];
        case 23:
         var
          a4=param[5],
          a3$2=param[4],
          a2$8=param[3],
          a1$17=param[2],
          a0$22=param[1],
          _CC_=caml_call1(poly_e,a4),
          _CD_=caml_call1(poly_e,a2$8);
         return [23,caml_call1(poly_e,a0$22),a1$17,_CD_,a3$2,_CC_];
        case 24:
         var
          a4$0=param[5],
          a3$3=param[4],
          a2$9=param[3],
          a1$18=param[2],
          a0$23=param[1],
          _CE_=caml_call1(poly_e,a4$0),
          _CF_=caml_call1(poly_e,a3$3);
         return [24,caml_call1(poly_e,a0$23),a1$18,a2$9,_CF_,_CE_];
        case 25:
         var
          a2$10=param[3],
          a1$19=param[2],
          a0$24=param[1],
          _CG_=caml_call1(poly_e,a2$10);
         return [25,
                 caml_call1(caml_call1(Stdlib_list[17],poly_e),a0$24),
                 a1$19,
                 _CG_];
        case 26:
         var
          a2$11=param[3],
          a1$20=param[2],
          a0$25=param[1],
          _CH_=caml_call1(poly_e,a2$11);
         return [26,
                 caml_call1(caml_call1(Stdlib_list[17],poly_e),a0$25),
                 a1$20,
                 _CH_];
        case 27:
         var
          a2$12=param[3],
          a1$21=param[2],
          a0$26=param[1],
          _CI_=caml_call1(poly_e,a2$12);
         return [27,
                 caml_call1(caml_call1(Stdlib_list[17],poly_e),a0$26),
                 a1$21,
                 _CI_];
        case 28:
         var
          a3$4=param[4],
          a2$13=param[3],
          a1$22=param[2],
          a0$27=param[1],
          _CJ_=caml_call1(poly_e,a3$4),
          _CK_=caml_call1(poly_e,a2$13),
          _CL_=caml_call1(poly_e,a1$22);
         return [28,map_precontract(poly_e,a0$27),_CL_,_CK_,_CJ_];
        case 29:
         var a1$23=param[2],a0$28=param[1];
         return [29,a0$28,caml_call1(poly_e,a1$23)];
        default:
         var a1$24=param[2],a0$29=param[1];
         return [30,a0$29,caml_call1(poly_e,a1$24)]}}
    function fold_expr_f(poly_e,acc,param)
     {switch(param[0])
       {case 0:return acc;
        case 1:
         var a2=param[3],a1=param[2],acc$0=caml_call2(poly_e,acc,a1);
         return caml_call2(poly_e,acc$0,a2);
        case 2:var a3=param[4];return caml_call2(poly_e,acc,a3);
        case 3:return acc;
        case 4:return acc;
        case 5:var a1$0=param[2];return caml_call2(poly_e,acc,a1$0);
        case 6:var a1$1=param[2];return caml_call2(poly_e,acc,a1$1);
        case 7:
         var a2$0=param[3],a1$2=param[2],acc$1=caml_call2(poly_e,acc,a1$2);
         return caml_call2(poly_e,acc$1,a2$0);
        case 8:
         var
          a3$0=param[4],
          a2$1=param[3],
          a1$3=param[2],
          acc$2=caml_call2(poly_e,acc,a1$3),
          acc$3=caml_call2(poly_e,acc$2,a2$1);
         return caml_call2(poly_e,acc$3,a3$0);
        case 9:var a1$4=param[2];return caml_call2(poly_e,acc,a1$4);
        case 10:
         var a1$5=param[2];
         return caml_call2(caml_call1(Stdlib_list[22],poly_e),acc,a1$5);
        case 11:
         var
          a0=param[1],
          _Ck_=
           function(acc,param)
            {var a1=param[2];return caml_call2(poly_e,acc,a1)};
         return caml_call2(caml_call1(Utils_Binary_tree[5],_Ck_),acc,a0);
        case 12:var a2$2=param[3];return caml_call2(poly_e,acc,a2$2);
        case 13:
         var a1$6=param[2];
         return caml_call2(caml_call1(Stdlib_list[22],poly_e),acc,a1$6);
        case 14:
         var a1$7=param[2];
         return caml_call2(caml_call1(Stdlib_list[22],poly_e),acc,a1$7);
        case 15:
         var
          a2$3=param[3],
          _Cl_=
           function(acc,param)
            {var a1=param[2],a0=param[1],acc$0=caml_call2(poly_e,acc,a0);
             return caml_call2(poly_e,acc$0,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_Cl_),acc,a2$3);
        case 16:
         var a2$4=param[3],a1$8=param[2],acc$4=caml_call2(poly_e,acc,a1$8);
         return caml_call2(poly_e,acc$4,a2$4);
        case 17:
         var
          a1$9=param[2],
          a0$0=param[1],
          acc$5=caml_call2(poly_e,acc,a0$0),
          _Cm_=function(_Cn_,_Co_){return fold_match_clause(poly_e,_Cn_,_Co_)};
         return caml_call2(caml_call1(Utils_Binary_tree[5],_Cm_),acc$5,a1$9);
        case 18:
         var a0$1=param[1];
         return caml_call2(caml_call1(Stdlib_list[22],poly_e),acc,a0$1);
        case 19:var a1$10=param[2];return caml_call2(poly_e,acc,a1$10);
        case 20:var a1$11=param[2];return caml_call2(poly_e,acc,a1$11);
        case 21:
         var
          a2$5=param[3],
          a1$12=param[2],
          a0$2=param[1],
          acc$6=caml_call2(poly_e,acc,a0$2),
          acc$7=caml_call2(poly_e,acc$6,a1$12);
         return caml_call2(poly_e,acc$7,a2$5);
        case 22:
         var
          a3$1=param[4],
          a2$6=param[3],
          a0$3=param[1],
          acc$8=caml_call2(poly_e,acc,a0$3),
          acc$9=caml_call2(poly_e,acc$8,a2$6);
         return caml_call2(poly_e,acc$9,a3$1);
        case 23:
         var
          a4=param[5],
          a2$7=param[3],
          a0$4=param[1],
          acc$10=caml_call2(poly_e,acc,a0$4),
          acc$11=caml_call2(poly_e,acc$10,a2$7);
         return caml_call2(poly_e,acc$11,a4);
        case 24:
         var
          a4$0=param[5],
          a3$2=param[4],
          a0$5=param[1],
          acc$12=caml_call2(poly_e,acc,a0$5),
          acc$13=caml_call2(poly_e,acc$12,a3$2);
         return caml_call2(poly_e,acc$13,a4$0);
        case 25:
         var
          a2$8=param[3],
          a0$6=param[1],
          acc$14=caml_call2(caml_call1(Stdlib_list[22],poly_e),acc,a0$6);
         return caml_call2(poly_e,acc$14,a2$8);
        case 26:
         var
          a2$9=param[3],
          a0$7=param[1],
          acc$15=caml_call2(caml_call1(Stdlib_list[22],poly_e),acc,a0$7);
         return caml_call2(poly_e,acc$15,a2$9);
        case 27:
         var
          a2$10=param[3],
          a0$8=param[1],
          acc$16=caml_call2(caml_call1(Stdlib_list[22],poly_e),acc,a0$8);
         return caml_call2(poly_e,acc$16,a2$10);
        case 28:
         var
          a3$3=param[4],
          a2$11=param[3],
          a1$13=param[2],
          a0$9=param[1],
          acc$19=fold_precontract(poly_e,acc,a0$9),
          acc$17=caml_call2(poly_e,acc$19,a1$13),
          acc$18=caml_call2(poly_e,acc$17,a2$11);
         return caml_call2(poly_e,acc$18,a3$3);
        case 29:var a1$14=param[2];return caml_call2(poly_e,acc,a1$14);
        default:var a1$15=param[2];return caml_call2(poly_e,acc,a1$15)}}
    var
     pp_expr_f=function _Cj_(_Cg_,_Ch_,_Ci_){return _Cj_.fun(_Cg_,_Ch_,_Ci_)},
     show_expr_f=function _Cf_(_Cd_,_Ce_){return _Cf_.fun(_Cd_,_Ce_)};
    caml_update_dummy
     (pp_expr_f,
      function(poly_e,fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_bH_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_bI_),a0);
           return caml_call2(Stdlib_format[123],fmt,_bJ_);
          case 1:
           var a2=param[3],a1=param[2],a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_bK_);
           pp_pattern(fmt,a0$0);
           caml_call2(Stdlib_format[123],fmt,_bL_);
           caml_call1(caml_call1(poly_e,fmt),a1);
           caml_call2(Stdlib_format[123],fmt,_bM_);
           caml_call1(caml_call1(poly_e,fmt),a2);
           return caml_call2(Stdlib_format[123],fmt,_bN_);
          case 2:
           var a3=param[4],a2$0=param[3],a1$0=param[2],a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_bO_);
           if(a0$1)
            {var x=a0$1[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$9);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_bP_),x);
             caml_call2(Stdlib_format[13],fmt,cst$16)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$9);
           caml_call2(Stdlib_format[123],fmt,_bQ_);
           caml_call1(caml_call1(pp_ty,fmt),a1$0);
           caml_call2(Stdlib_format[123],fmt,_bR_);
           caml_call1(caml_call1(pp_ty,fmt),a2$0);
           caml_call2(Stdlib_format[123],fmt,_bS_);
           caml_call1(caml_call1(poly_e,fmt),a3);
           return caml_call2(Stdlib_format[123],fmt,_bT_);
          case 3:
           var a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_bU_);
           caml_call1(caml_call1(pp_lit,fmt),a0$2);
           return caml_call2(Stdlib_format[123],fmt,_bV_);
          case 4:
           var a0$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_bW_);
           caml_call1
            (caml_call2
              (pp_prim0,function(fmt){return caml_call1(pp_ty,fmt)},fmt),
             a0$3);
           return caml_call2(Stdlib_format[123],fmt,_bX_);
          case 5:
           var a1$1=param[2],a0$4=param[1];
           caml_call2(Stdlib_format[123],fmt,_bY_);
           caml_call1
            (caml_call2
              (pp_prim1,function(fmt){return caml_call1(pp_ty,fmt)},fmt),
             a0$4);
           caml_call2(Stdlib_format[123],fmt,_bZ_);
           caml_call1(caml_call1(poly_e,fmt),a1$1);
           return caml_call2(Stdlib_format[123],fmt,_b0_);
          case 6:
           var a1$2=param[2],a0$5=param[1];
           caml_call2(Stdlib_format[123],fmt,_b1_);
           caml_call1(caml_call1(pp_prim1_fail,fmt),a0$5);
           caml_call2(Stdlib_format[123],fmt,_b2_);
           caml_call1(caml_call1(poly_e,fmt),a1$2);
           return caml_call2(Stdlib_format[123],fmt,_b3_);
          case 7:
           var a2$1=param[3],a1$3=param[2],a0$6=param[1];
           caml_call2(Stdlib_format[123],fmt,_b4_);
           caml_call1(caml_call1(pp_prim2,fmt),a0$6);
           caml_call2(Stdlib_format[123],fmt,_b5_);
           caml_call1(caml_call1(poly_e,fmt),a1$3);
           caml_call2(Stdlib_format[123],fmt,_b6_);
           caml_call1(caml_call1(poly_e,fmt),a2$1);
           return caml_call2(Stdlib_format[123],fmt,_b7_);
          case 8:
           var a3$0=param[4],a2$2=param[3],a1$4=param[2],a0$7=param[1];
           caml_call2(Stdlib_format[123],fmt,_b8_);
           caml_call1(caml_call1(pp_prim3,fmt),a0$7);
           caml_call2(Stdlib_format[123],fmt,_b9_);
           caml_call1(caml_call1(poly_e,fmt),a1$4);
           caml_call2(Stdlib_format[123],fmt,_b__);
           caml_call1(caml_call1(poly_e,fmt),a2$2);
           caml_call2(Stdlib_format[123],fmt,_b$_);
           caml_call1(caml_call1(poly_e,fmt),a3$0);
           return caml_call2(Stdlib_format[123],fmt,_ca_);
          case 9:
           var a1$5=param[2],a0$8=param[1];
           caml_call2(Stdlib_format[123],fmt,_cb_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_cc_),a0$8);
           caml_call2(Stdlib_format[123],fmt,_cd_);
           caml_call1(caml_call1(poly_e,fmt),a1$5);
           return caml_call2(Stdlib_format[123],fmt,_ce_);
          case 10:
           var a1$6=param[2],a0$9=param[1];
           caml_call2(Stdlib_format[123],fmt,_cf_);
           pp_stack_op(fmt,a0$9);
           caml_call2(Stdlib_format[123],fmt,_cg_);
           caml_call2(Stdlib_format[123],fmt,_ch_);
           var
            _BM_=0,
            _BN_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_ci_);
               caml_call1(caml_call1(poly_e,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_BN_,_BM_,a1$6);
           caml_call2(Stdlib_format[123],fmt,_cj_);
           return caml_call2(Stdlib_format[123],fmt,_ck_);
          case 11:
           var a0$10=param[1];
           caml_call2(Stdlib_format[123],fmt,_cl_);
           var
            _BO_=
             function(fmt,param)
              {var a1=param[2],a0=param[1];
               caml_call2(Stdlib_format[123],fmt,_cm_);
               if(a0)
                {var x=a0[1];
                 caml_call2(Stdlib_format[13],fmt,cst_Some$10);
                 caml_call1(caml_call2(Stdlib_format[123],fmt,_cn_),x);
                 caml_call2(Stdlib_format[13],fmt,cst$17)}
               else
                caml_call2(Stdlib_format[13],fmt,cst_None$10);
               caml_call2(Stdlib_format[123],fmt,_co_);
               caml_call1(caml_call1(poly_e,fmt),a1);
               return caml_call2(Stdlib_format[123],fmt,_cp_)};
           caml_call1(caml_call2(Utils_Binary_tree[3],_BO_,fmt),a0$10);
           return caml_call2(Stdlib_format[123],fmt,_cq_);
          case 12:
           var a2$3=param[3],a1$7=param[2],a0$11=param[1];
           caml_call2(Stdlib_format[123],fmt,_cr_);
           if(a0$11)
            {var x$0=a0$11[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$11);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_cs_),x$0);
             caml_call2(Stdlib_format[13],fmt,cst$18)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$11);
           caml_call2(Stdlib_format[123],fmt,_ct_);
           caml_call1(caml_call1(pp_row_context,fmt),a1$7);
           caml_call2(Stdlib_format[123],fmt,_cu_);
           caml_call1(caml_call1(poly_e,fmt),a2$3);
           return caml_call2(Stdlib_format[123],fmt,_cv_);
          case 13:
           var a1$8=param[2],a0$12=param[1];
           caml_call2(Stdlib_format[123],fmt,_cw_);
           caml_call1(caml_call1(pp_ty,fmt),a0$12);
           caml_call2(Stdlib_format[123],fmt,_cx_);
           caml_call2(Stdlib_format[123],fmt,_cy_);
           var
            _BP_=0,
            _BQ_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_cz_);
               caml_call1(caml_call1(poly_e,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_BQ_,_BP_,a1$8);
           caml_call2(Stdlib_format[123],fmt,_cA_);
           return caml_call2(Stdlib_format[123],fmt,_cB_);
          case 14:
           var a1$9=param[2],a0$13=param[1];
           caml_call2(Stdlib_format[123],fmt,_cC_);
           caml_call1(caml_call1(pp_ty,fmt),a0$13);
           caml_call2(Stdlib_format[123],fmt,_cD_);
           caml_call2(Stdlib_format[123],fmt,_cE_);
           var
            _BR_=0,
            _BS_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_cF_);
               caml_call1(caml_call1(poly_e,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_BS_,_BR_,a1$9);
           caml_call2(Stdlib_format[123],fmt,_cG_);
           return caml_call2(Stdlib_format[123],fmt,_cH_);
          case 15:
           var a2$4=param[3],a1$10=param[2],a0$14=param[1];
           caml_call2(Stdlib_format[123],fmt,_cI_);
           caml_call1(caml_call1(pp_ty,fmt),a0$14);
           caml_call2(Stdlib_format[123],fmt,_cJ_);
           caml_call1(caml_call1(pp_ty,fmt),a1$10);
           caml_call2(Stdlib_format[123],fmt,_cK_);
           caml_call2(Stdlib_format[123],fmt,_cL_);
           var
            _BT_=0,
            _BU_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_cM_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_cN_);
               caml_call1(caml_call1(poly_e,fmt),a0);
               caml_call2(Stdlib_format[123],fmt,_cO_);
               caml_call1(caml_call1(poly_e,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_cP_);
               return 1};
           caml_call3(Stdlib_list[22],_BU_,_BT_,a2$4);
           caml_call2(Stdlib_format[123],fmt,_cQ_);
           return caml_call2(Stdlib_format[123],fmt,_cR_);
          case 16:
           var a2$5=param[3],a1$11=param[2],a0$15=param[1];
           caml_call2(Stdlib_format[123],fmt,_cS_);
           caml_call1(caml_call1(pp_record_pattern,fmt),a0$15);
           caml_call2(Stdlib_format[123],fmt,_cT_);
           caml_call1(caml_call1(poly_e,fmt),a1$11);
           caml_call2(Stdlib_format[123],fmt,_cU_);
           caml_call1(caml_call1(poly_e,fmt),a2$5);
           return caml_call2(Stdlib_format[123],fmt,_cV_);
          case 17:
           var a1$12=param[2],a0$16=param[1];
           caml_call2(Stdlib_format[123],fmt,_cW_);
           caml_call1(caml_call1(poly_e,fmt),a0$16);
           caml_call2(Stdlib_format[123],fmt,_cX_);
           var
            _BV_=
             function(fmt)
              {function _Cb_(fmt){return caml_call1(poly_e,fmt)}
               return function(_Cc_){return pp_match_clause(_Cb_,fmt,_Cc_)}};
           caml_call1(caml_call2(Utils_Binary_tree[3],_BV_,fmt),a1$12);
           return caml_call2(Stdlib_format[123],fmt,_cY_);
          case 18:
           var a0$17=param[1];
           caml_call2(Stdlib_format[123],fmt,_cZ_);
           caml_call2(Stdlib_format[123],fmt,_c0_);
           var
            _BW_=0,
            _BX_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_c1_);
               caml_call1(caml_call1(poly_e,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_BX_,_BW_,a0$17);
           caml_call2(Stdlib_format[123],fmt,_c2_);
           return caml_call2(Stdlib_format[123],fmt,_c3_);
          case 19:
           var a1$13=param[2],a0$18=param[1];
           caml_call2(Stdlib_format[123],fmt,_c4_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_c5_),a0$18);
           caml_call2(Stdlib_format[123],fmt,_c6_);
           caml_call1(caml_call1(poly_e,fmt),a1$13);
           return caml_call2(Stdlib_format[123],fmt,_c7_);
          case 20:
           var a1$14=param[2],a0$19=param[1];
           caml_call2(Stdlib_format[123],fmt,_c8_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_c9_),a0$19);
           caml_call2(Stdlib_format[123],fmt,_c__);
           caml_call1(caml_call1(poly_e,fmt),a1$14);
           return caml_call2(Stdlib_format[123],fmt,_c$_);
          case 21:
           var a2$6=param[3],a1$15=param[2],a0$20=param[1];
           caml_call2(Stdlib_format[123],fmt,_da_);
           caml_call1(caml_call1(poly_e,fmt),a0$20);
           caml_call2(Stdlib_format[123],fmt,_db_);
           caml_call1(caml_call1(poly_e,fmt),a1$15);
           caml_call2(Stdlib_format[123],fmt,_dc_);
           caml_call1(caml_call1(poly_e,fmt),a2$6);
           return caml_call2(Stdlib_format[123],fmt,_dd_);
          case 22:
           var a3$1=param[4],a2$7=param[3],a1$16=param[2],a0$21=param[1];
           caml_call2(Stdlib_format[123],fmt,_de_);
           caml_call1(caml_call1(poly_e,fmt),a0$21);
           caml_call2(Stdlib_format[123],fmt,_df_);
           if(a1$16)
            {var x$1=a1$16[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$12);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_dg_),x$1);
             caml_call2(Stdlib_format[13],fmt,cst$19)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$12);
           caml_call2(Stdlib_format[123],fmt,_dh_);
           caml_call1(caml_call1(poly_e,fmt),a2$7);
           caml_call2(Stdlib_format[123],fmt,_di_);
           caml_call1(caml_call1(poly_e,fmt),a3$1);
           return caml_call2(Stdlib_format[123],fmt,_dj_);
          case 23:
           var
            a4=param[5],
            a3$2=param[4],
            a2$8=param[3],
            a1$17=param[2],
            a0$22=param[1];
           caml_call2(Stdlib_format[123],fmt,_dk_);
           caml_call1(caml_call1(poly_e,fmt),a0$22);
           caml_call2(Stdlib_format[123],fmt,_dl_);
           if(a1$17)
            {var x$2=a1$17[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$13);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_dm_),x$2);
             caml_call2(Stdlib_format[13],fmt,cst$20)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$13);
           caml_call2(Stdlib_format[123],fmt,_dn_);
           caml_call1(caml_call1(poly_e,fmt),a2$8);
           caml_call2(Stdlib_format[123],fmt,_do_);
           if(a3$2)
            {var x$3=a3$2[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$14);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_dp_),x$3);
             caml_call2(Stdlib_format[13],fmt,cst$21)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$14);
           caml_call2(Stdlib_format[123],fmt,_dq_);
           caml_call1(caml_call1(poly_e,fmt),a4);
           return caml_call2(Stdlib_format[123],fmt,_dr_);
          case 24:
           var
            a4$0=param[5],
            a3$3=param[4],
            a2$9=param[3],
            a1$18=param[2],
            a0$23=param[1];
           caml_call2(Stdlib_format[123],fmt,_ds_);
           caml_call1(caml_call1(poly_e,fmt),a0$23);
           caml_call2(Stdlib_format[123],fmt,_dt_);
           if(a1$18)
            {var x$4=a1$18[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$15);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_du_),x$4);
             caml_call2(Stdlib_format[13],fmt,cst$22)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$15);
           caml_call2(Stdlib_format[123],fmt,_dv_);
           if(a2$9)
            {var x$5=a2$9[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$16);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_dw_),x$5);
             caml_call2(Stdlib_format[13],fmt,cst$23)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$16);
           caml_call2(Stdlib_format[123],fmt,_dx_);
           caml_call1(caml_call1(poly_e,fmt),a3$3);
           caml_call2(Stdlib_format[123],fmt,_dy_);
           caml_call1(caml_call1(poly_e,fmt),a4$0);
           return caml_call2(Stdlib_format[123],fmt,_dz_);
          case 25:
           var a2$10=param[3],a1$19=param[2],a0$24=param[1];
           caml_call2(Stdlib_format[123],fmt,_dA_);
           caml_call2(Stdlib_format[123],fmt,_dB_);
           var
            _BY_=0,
            _BZ_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_dC_);
               caml_call1(caml_call1(poly_e,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_BZ_,_BY_,a0$24);
           caml_call2(Stdlib_format[123],fmt,_dD_);
           caml_call2(Stdlib_format[123],fmt,_dE_);
           caml_call2(Stdlib_format[123],fmt,_dF_);
           var
            _B0_=0,
            _B1_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_dG_);
               if(x)
                {var x$0=x[1];
                 caml_call2(Stdlib_format[13],fmt,cst_Some$17);
                 caml_call1(caml_call2(Stdlib_format[123],fmt,_dH_),x$0);
                 caml_call2(Stdlib_format[13],fmt,cst$24)}
               else
                caml_call2(Stdlib_format[13],fmt,cst_None$17);
               return 1};
           caml_call3(Stdlib_list[22],_B1_,_B0_,a1$19);
           caml_call2(Stdlib_format[123],fmt,_dI_);
           caml_call2(Stdlib_format[123],fmt,_dJ_);
           caml_call1(caml_call1(poly_e,fmt),a2$10);
           return caml_call2(Stdlib_format[123],fmt,_dK_);
          case 26:
           var a2$11=param[3],a1$20=param[2],a0$25=param[1];
           caml_call2(Stdlib_format[123],fmt,_dL_);
           caml_call2(Stdlib_format[123],fmt,_dM_);
           var
            _B2_=0,
            _B3_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_dN_);
               caml_call1(caml_call1(poly_e,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_B3_,_B2_,a0$25);
           caml_call2(Stdlib_format[123],fmt,_dO_);
           caml_call2(Stdlib_format[123],fmt,_dP_);
           caml_call2(Stdlib_format[123],fmt,_dQ_);
           var
            _B4_=0,
            _B5_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_dR_);
               if(x)
                {var x$0=x[1];
                 caml_call2(Stdlib_format[13],fmt,cst_Some$18);
                 caml_call1(caml_call2(Stdlib_format[123],fmt,_dS_),x$0);
                 caml_call2(Stdlib_format[13],fmt,cst$25)}
               else
                caml_call2(Stdlib_format[13],fmt,cst_None$18);
               return 1};
           caml_call3(Stdlib_list[22],_B5_,_B4_,a1$20);
           caml_call2(Stdlib_format[123],fmt,_dT_);
           caml_call2(Stdlib_format[123],fmt,_dU_);
           caml_call1(caml_call1(poly_e,fmt),a2$11);
           return caml_call2(Stdlib_format[123],fmt,_dV_);
          case 27:
           var a2$12=param[3],a1$21=param[2],a0$26=param[1];
           caml_call2(Stdlib_format[123],fmt,_dW_);
           caml_call2(Stdlib_format[123],fmt,_dX_);
           var
            _B6_=0,
            _B7_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_dY_);
               caml_call1(caml_call1(poly_e,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_B7_,_B6_,a0$26);
           caml_call2(Stdlib_format[123],fmt,_dZ_);
           caml_call2(Stdlib_format[123],fmt,_d0_);
           caml_call2(Stdlib_format[123],fmt,_d1_);
           var
            _B8_=0,
            _B9_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_d2_);
               if(x)
                {var x$0=x[1];
                 caml_call2(Stdlib_format[13],fmt,cst_Some$19);
                 caml_call1(caml_call2(Stdlib_format[123],fmt,_d3_),x$0);
                 caml_call2(Stdlib_format[13],fmt,cst$26)}
               else
                caml_call2(Stdlib_format[13],fmt,cst_None$19);
               return 1};
           caml_call3(Stdlib_list[22],_B9_,_B8_,a1$21);
           caml_call2(Stdlib_format[123],fmt,_d4_);
           caml_call2(Stdlib_format[123],fmt,_d5_);
           caml_call1(caml_call1(poly_e,fmt),a2$12);
           return caml_call2(Stdlib_format[123],fmt,_d6_);
          case 28:
           var a3$4=param[4],a2$13=param[3],a1$22=param[2],a0$27=param[1];
           caml_call2(Stdlib_format[123],fmt,_d7_);
           caml_call1
            (caml_call2
              (pp_precontract,
               function(fmt){return caml_call1(poly_e,fmt)},
               fmt),
             a0$27);
           caml_call2(Stdlib_format[123],fmt,_d8_);
           caml_call1(caml_call1(poly_e,fmt),a1$22);
           caml_call2(Stdlib_format[123],fmt,_d9_);
           caml_call1(caml_call1(poly_e,fmt),a2$13);
           caml_call2(Stdlib_format[123],fmt,_d__);
           caml_call1(caml_call1(poly_e,fmt),a3$4);
           return caml_call2(Stdlib_format[123],fmt,_d$_);
          case 29:
           var a1$23=param[2],a0$28=param[1];
           caml_call2(Stdlib_format[123],fmt,_ea_);
           var
            _B__=
             function(fmt,param)
              {if(param)
                {var x=param[1];
                 caml_call2(Stdlib_format[13],fmt,cst_Some$20);
                 caml_call1(caml_call2(Stdlib_format[123],fmt,_eb_),x);
                 return caml_call2(Stdlib_format[13],fmt,cst$27)}
               return caml_call2(Stdlib_format[13],fmt,cst_None$20)};
           caml_call1(caml_call2(Utils_Binary_tree[3],_B__,fmt),a0$28);
           caml_call2(Stdlib_format[123],fmt,_ec_);
           caml_call1(caml_call1(poly_e,fmt),a1$23);
           return caml_call2(Stdlib_format[123],fmt,_ed_);
          default:
           var a1$24=param[2],a0$29=param[1];
           caml_call2(Stdlib_format[123],fmt,_ee_);
           caml_call2(Stdlib_format[123],fmt,_ef_);
           var
            _B$_=0,
            _Ca_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_eg_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_eh_),x);
               return 1};
           caml_call3(Stdlib_list[22],_Ca_,_B$_,a0$29);
           caml_call2(Stdlib_format[123],fmt,_ei_);
           caml_call2(Stdlib_format[123],fmt,_ej_);
           caml_call1(caml_call1(poly_e,fmt),a1$24);
           return caml_call2(Stdlib_format[123],fmt,_ek_)}});
    caml_update_dummy
     (show_expr_f,
      function(poly_e,x)
       {var _BL_=caml_call1(pp_expr_f,poly_e);
        return caml_call3(Stdlib_format[127],_el_,_BL_,x)});
    function equal_expr_f$0(eq,x,match)
     {if(1 === x[0] && 1 === match[0])
       {var
         e2=match[3],
         e1=match[2],
         xs=match[1],
         e2$0=x[3],
         e1$0=x[2],
         xs$0=x[1],
         _BI_=equal_pattern(xs$0,xs);
        if(_BI_)
         {var _BJ_=caml_call2(eq,e1$0,e1);
          if(_BJ_)return caml_call2(eq,e2$0,e2);
          var _BK_=_BJ_}
        else
         var _BK_=_BI_;
        return _BK_}
      return caml_call3(equal_expr_f,eq,x,match)}
    var equal_texpr=function _BH_(_BF_,_BG_){return _BH_.fun(_BF_,_BG_)};
    caml_update_dummy
     (equal_texpr,
      function(lhs,rhs)
       {var
         _BB_=rhs[1],
         _BC_=lhs[1],
         _BE_=
          equal_expr_f$0
           (function(x){return caml_call1(equal_texpr,x)},_BC_,_BB_);
        if(_BE_)
         {var _BD_=rhs[2];
          return caml_call1(caml_call1(equal_tys,lhs[2]),_BD_)}
        return _BE_});
    var
     pp_texpr=function _BA_(_By_,_Bz_){return _BA_.fun(_By_,_Bz_)},
     show_texpr=function _Bx_(_Bw_){return _Bx_.fun(_Bw_)};
    caml_update_dummy
     (pp_texpr,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_em_);
        caml_call3(Stdlib_format[123],fmt,_en_,cst_texpr);
        var _Bu_=x[1];
        caml_call1
         (caml_call2
           (pp_expr_f,function(fmt){return caml_call1(pp_texpr,fmt)},fmt),
          _Bu_);
        caml_call2(Stdlib_format[123],fmt,_eo_);
        caml_call2(Stdlib_format[123],fmt,_ep_);
        caml_call3(Stdlib_format[123],fmt,_eq_,cst_tys);
        var _Bv_=x[2];
        caml_call1(caml_call1(pp_tys,fmt),_Bv_);
        caml_call2(Stdlib_format[123],fmt,_er_);
        return caml_call2(Stdlib_format[123],fmt,_es_)});
    caml_update_dummy
     (show_texpr,
      function(x){return caml_call3(Stdlib_format[127],_et_,pp_texpr,x)});
    var equal_expr=function _Bt_(_Br_,_Bs_){return _Bt_.fun(_Br_,_Bs_)};
    caml_update_dummy
     (equal_expr,
      function(lhs,rhs)
       {var _Bp_=rhs[1],_Bq_=lhs[1];
        return equal_expr_f$0
                (function(x){return caml_call1(equal_expr,x)},_Bq_,_Bp_)});
    var
     pp_expr=function _Bo_(_Bm_,_Bn_){return _Bo_.fun(_Bm_,_Bn_)},
     show_expr=function _Bl_(_Bk_){return _Bl_.fun(_Bk_)};
    caml_update_dummy
     (pp_expr,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_eu_);
        caml_call3(Stdlib_format[123],fmt,_ev_,cst_expr);
        var _Bj_=x[1];
        caml_call1
         (caml_call2
           (pp_expr_f,function(fmt){return caml_call1(pp_expr,fmt)},fmt),
          _Bj_);
        caml_call2(Stdlib_format[123],fmt,_ew_);
        return caml_call2(Stdlib_format[123],fmt,_ex_)});
    caml_update_dummy
     (show_expr,
      function(x){return caml_call3(Stdlib_format[127],_ey_,pp_expr,x)});
    function Traversable(A)
     {var
       BT=caml_call1(Utils_Binary_tree[55],A),
       open=caml_call1(Utils_Control[7],[0,A[3],A[1],A[2]]),
       return$0=open[1],
       symbol=open[4],
       let$0=open[5],
       and=open[6],
       symbol$0=open[8],
       map_list=open[15],
       sequence_list=open[19];
      function sequenceA(e)
       {switch(e[0])
         {case 0:return caml_call1(return$0,e);
          case 1:
           var
            e2=e[3],
            e1=e[2],
            rp=e[1],
            _AZ_=
             function(param){var e2=param[2],e1=param[1];return [1,rp,e1,e2]};
           return caml_call2(let$0,caml_call2(and,e1,e2),_AZ_);
          case 2:
           var e$0=e[4],b=e[3],a=e[2],rp$0=e[1];
           return caml_call2(let$0,e$0,function(e){return [2,rp$0,a,b,e]});
          case 3:return caml_call1(return$0,e);
          case 4:var p=e[1];return caml_call1(return$0,[4,p]);
          case 5:
           var e1$0=e[2],p$0=e[1];
           return caml_call2(let$0,e1$0,function(e1){return [5,p$0,e1]});
          case 6:
           var e1$1=e[2],p$1=e[1];
           return caml_call2(let$0,e1$1,function(e1){return [6,p$1,e1]});
          case 7:
           var
            e2$0=e[3],
            e1$2=e[2],
            p$2=e[1],
            _A0_=
             function(param){var e2=param[2],e1=param[1];return [7,p$2,e1,e2]};
           return caml_call2(let$0,caml_call2(and,e1$2,e2$0),_A0_);
          case 8:
           var
            e3=e[4],
            e2$1=e[3],
            e1$3=e[2],
            p$3=e[1],
            _A1_=
             function(param)
              {var e3=param[2],match=param[1],e2=match[2],e1=match[1];
               return [8,p$3,e1,e2,e3]};
           return caml_call2
                   (let$0,caml_call2(and,caml_call2(and,e1$3,e2$1),e3),_A1_);
          case 9:
           var x=e[2],fld=e[1];
           return caml_call2(let$0,x,function(x){return [9,fld,x]});
          case 10:
           var xs=e[2],op=e[1],_A2_=function(xs){return [10,op,xs]};
           return caml_call2(let$0,caml_call1(sequence_list,xs),_A2_);
          case 11:
           var
            r=e[1],
            _A3_=function(r){return [11,r]},
            _A4_=
             function(param)
              {var y=param[2],x=param[1];
               return caml_call2(symbol,caml_call1(Utils_Control[2],x),y)};
           return caml_call2(let$0,caml_call2(BT[1],_A4_,r),_A3_);
          case 12:
           var e$1=e[3],rc=e[2],lbl=e[1];
           return caml_call2(let$0,e$1,function(e){return [12,lbl,rc,e]});
          case 13:
           var es=e[2],ty=e[1],_A5_=function(es){return [13,ty,es]};
           return caml_call2(let$0,caml_call1(sequence_list,es),_A5_);
          case 14:
           var es$0=e[2],ty$0=e[1],_A6_=function(es){return [14,ty$0,es]};
           return caml_call2(let$0,caml_call1(sequence_list,es$0),_A6_);
          case 15:
           var
            xs$0=e[3],
            ty2=e[2],
            ty1=e[1],
            _A7_=function(xs){return [15,ty1,ty2,xs]};
           return caml_call2
                   (let$0,
                    caml_call2
                     (map_list,
                      function(param)
                       {var y=param[2],x=param[1];
                        return caml_call2
                                (symbol$0,caml_call2(symbol,Utils_Control[2],x),y)},
                      xs$0),
                    _A7_);
          case 16:
           var
            e2$2=e[3],
            e1$4=e[2],
            rp$1=e[1],
            _A8_=
             function(param)
              {var e2=param[2],e1=param[1];return [16,rp$1,e1,e2]};
           return caml_call2(let$0,caml_call2(and,e1$4,e2$2),_A8_);
          case 17:
           var
            clauses=e[2],
            e$2=e[1],
            _A9_=
             function(param)
              {var clauses=param[2],e=param[1];return [17,e,clauses]},
            _A__=
             function(param)
              {var rhs=param[3],var$0=param[2],cons=param[1];
               return caml_call2
                       (let$0,rhs,function(rhs){return [0,cons,var$0,rhs]})};
           return caml_call2
                   (let$0,
                    caml_call2(and,e$2,caml_call2(BT[1],_A__,clauses)),
                    _A9_);
          case 18:
           var es$1=e[1],_A$_=function(es){return [18,es]};
           return caml_call2(let$0,caml_call1(sequence_list,es$1),_A$_);
          case 19:
           var v=e[2],n=e[1];
           return caml_call2(let$0,v,function(v){return [19,n,v]});
          case 20:
           var v$0=e[2],n$0=e[1];
           return caml_call2(let$0,v$0,function(v){return [20,n$0,v]});
          case 21:
           var
            e3$0=e[3],
            e2$3=e[2],
            e1$5=e[1],
            _Ba_=
             function(param)
              {var e3=param[2],match=param[1],e2=match[2],e1=match[1];
               return [21,e1,e2,e3]};
           return caml_call2
                   (let$0,caml_call2(and,caml_call2(and,e1$5,e2$3),e3$0),_Ba_);
          case 22:
           var
            e3$1=e[4],
            e2$4=e[3],
            x$0=e[2],
            e1$6=e[1],
            _Bb_=
             function(param)
              {var e3=param[2],match=param[1],e2=match[2],e1=match[1];
               return [22,e1,x$0,e2,e3]};
           return caml_call2
                   (let$0,caml_call2(and,caml_call2(and,e1$6,e2$4),e3$1),_Bb_);
          case 23:
           var
            e3$2=e[5],
            x3=e[4],
            e2$5=e[3],
            x2=e[2],
            e1$7=e[1],
            _Bc_=
             function(param)
              {var e3=param[2],match=param[1],e2=match[2],e1=match[1];
               return [23,e1,x2,e2,x3,e3]};
           return caml_call2
                   (let$0,caml_call2(and,caml_call2(and,e1$7,e2$5),e3$2),_Bc_);
          case 24:
           var
            e3$3=e[5],
            e2$6=e[4],
            x2$0=e[3],
            x1=e[2],
            e1$8=e[1],
            _Bd_=
             function(param)
              {var e3=param[2],match=param[1],e2=match[2],e1=match[1];
               return [24,e1,x1,x2$0,e2,e3]};
           return caml_call2
                   (let$0,caml_call2(and,caml_call2(and,e1$8,e2$6),e3$3),_Bd_);
          case 25:
           var
            step=e[3],
            xs$1=e[2],
            init=e[1],
            _Be_=
             function(param)
              {var step=param[2],init=param[1];return [25,init,xs$1,step]};
           return caml_call2
                   (let$0,
                    caml_call2(and,caml_call1(sequence_list,init),step),
                    _Be_);
          case 26:
           var
            step$0=e[3],
            xs$2=e[2],
            init$0=e[1],
            _Bf_=
             function(param)
              {var step=param[2],init=param[1];return [26,init,xs$2,step]};
           return caml_call2
                   (let$0,
                    caml_call2(and,caml_call1(sequence_list,init$0),step$0),
                    _Bf_);
          case 27:
           var
            step$1=e[3],
            xs$3=e[2],
            init$1=e[1],
            _Bg_=
             function(param)
              {var step=param[2],init=param[1];return [27,init,xs$3,step]};
           return caml_call2
                   (let$0,
                    caml_call2(and,caml_call1(sequence_list,init$1),step$1),
                    _Bg_);
          case 28:
           var
            e3$4=e[4],
            e2$7=e[3],
            e1$9=e[2],
            match=e[1],
            body=match[4],
            parameter_and_storage=match[3],
            tstorage=match[2],
            tparameter=match[1],
            _Bh_=
             function(param)
              {var
                e3=param[2],
                _Bi_=param[1],
                e2=_Bi_[2],
                match=_Bi_[1],
                e1=match[2],
                body=match[1];
               return [28,
                       [0,tparameter,tstorage,parameter_and_storage,body],
                       e1,
                       e2,
                       e3]};
           return caml_call2
                   (let$0,
                    caml_call2
                     (and,caml_call2(and,caml_call2(and,body,e1$9),e2$7),e3$4),
                    _Bh_);
          case 29:
           var e$3=e[2],lbls=e[1];
           return caml_call2(let$0,e$3,function(e){return [29,lbls,e]});
          default:
           var e$4=e[2],c=e[1];
           return caml_call2(let$0,e$4,function(e){return [30,c,e]})}}
      return [0,BT,sequenceA]}
    function cata_expr(f,param)
     {var expr=param[1];
      return caml_call1
              (f,map_expr_f(function(_AY_){return cata_expr(f,_AY_)},expr))}
    function _ez_(f,param)
     {var expr=param[1];
      return [0,
              [0,expr],
              caml_call1
               (f,map_expr_f(function(_AX_){return _ez_(f,_AX_)},expr))]}
    function para_expr(f,e){return _ez_(f,e)[2]}
    function _eA_(f,param)
     {var tys=param[2],texpr=param[1];
      return [0,
              caml_call2
               (f,map_expr_f(function(_AW_){return _eA_(f,_AW_)},texpr),tys),
              tys]}
    function cata_texpr(f,x){return _eA_(f,x)[1]}
    function _eB_(f,param)
     {var tys=param[2],texpr=param[1];
      return [0,
              [0,texpr,tys],
              caml_call1
               (f,map_expr_f(function(_AV_){return _eB_(f,_AV_)},texpr))]}
    function para_texpr(f,e){return _eB_(f,e)[2]}
    function erase_types(x)
     {return cata_texpr
              (function(e,param)
                {return [0,map_expr_f(function(_AU_){return _AU_[1]},e)]},
               x)}
    function print_var(ppf,param)
     {if(param)
       {var x=param[1];return caml_call3(Stdlib_format[123],ppf,_eT_,x)}
      return caml_call2(Stdlib_format[123],ppf,_eU_)}
    var
     _eW_=
      [0,function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_eV_)}],
     print_vars=caml_call2(Stdlib_format[119],_eW_,print_var);
    function print_prim0(ppf$0,x)
     {if(typeof x === "number")
       {if(8 === x)return caml_call2(Stdlib_format[123],ppf$0,_eX_)}
      else
       switch(x[0])
        {case 2:
          var t=x[1];return caml_call4(Stdlib_format[123],ppf$0,_eY_,ppf,t);
         case 3:
          var t$0=x[1];
          return caml_call4(Stdlib_format[123],ppf$0,_eZ_,ppf,t$0);
         case 4:
          var t$1=x[1];
          return caml_call4(Stdlib_format[123],ppf$0,_e0_,ppf,t$1);
         case 5:
          var t2=x[2],t1=x[1];
          return caml_call6(Stdlib_format[123],ppf$0,_e1_,ppf,t1,ppf,t2);
         case 6:
          var t2$0=x[2],t1$0=x[1];
          return caml_call6(Stdlib_format[123],ppf$0,_e2_,ppf,t1$0,ppf,t2$0)
         }
      return caml_call3(pp_prim0,ppf,ppf$0,x)}
    function print_prim1_fail(ppf,x){return caml_call2(pp_prim1_fail,ppf,x)}
    function pp_op(ppf,x)
     {if(typeof x !== "number" && 0 === x[0])
       {var _AS_=x[1];
        if(! _AS_ && ! x[2])return caml_call2(Stdlib_format[123],ppf,_e5_);
        var
         t2=x[2],
         pp=
          function(ppf,x)
           {var _AT_=caml_call2(Utils_Option[45],cst$28,x);
            return caml_call3(Stdlib_format[123],ppf,_e3_,_AT_)};
        return caml_call7(Stdlib_format[123],ppf,_e4_,cst_Pair,pp,_AS_,pp,t2)}
      return caml_call2(pp_prim2,ppf,x)}
    function print_prim3(ppf,x){return caml_call2(pp_prim3,ppf,x)}
    function print_pattern(ppf,param)
     {if(0 === param[0])
       {var x=param[1];
        return caml_call4(Stdlib_format[123],ppf,_e6_,print_var,x)}
      var xs=param[1],_AR_=caml_call1(Utils_List[2],print_var);
      return caml_call4(Stdlib_format[123],ppf,_e7_,_AR_,xs)}
    function f(protect,ppf,param)
     {if(0 === param[0])
       {var x=param[1];
        return caml_call4(Stdlib_format[123],ppf,_e8_,print_var,x)}
      var r2=param[2],r1=param[1];
      function r(ppf)
       {var _AJ_=0;
        function _AK_(_AP_,_AQ_){return f(_AJ_,_AP_,_AQ_)}
        var _AL_=1;
        function _AM_(_AN_,_AO_){return f(_AL_,_AN_,_AO_)}
        return caml_call6(Stdlib_format[123],ppf,_e9_,_AM_,r1,_AK_,r2)}
      return protect
              ?caml_call3(Stdlib_format[123],ppf,_e__,r)
              :caml_call3(Stdlib_format[123],ppf,_e$_,r)}
    var _fa_=0;
    function print_record_pattern(_AH_,_AI_){return f(_fa_,_AH_,_AI_)}
    function print_rowish(pre,post,ppf,param)
     {if(0 === param[0]){var x=param[1];return caml_call1(x,ppf)}
      var r2=param[2],r1=param[1];
      function pr(_AF_,_AG_){return print_rowish(cst$30,cst$29,_AF_,_AG_)}
      function prp(_AD_,_AE_){return print_rowish(cst$32,cst$31,_AD_,_AE_)}
      return caml_call8(Stdlib_format[123],ppf,_fb_,pre,prp,r1,pr,r2,post)}
    function print_row_context(pre,post,ppf)
     {function pr(_AB_,_AC_){return print_rowish(cst$34,cst$33,_AB_,_AC_)}
      function prc(_AA_){return print_row_context(cst$36,cst$35,_AA_)}
      function prp(_Ay_,_Az_){return print_rowish(cst$38,cst$37,_Ay_,_Az_)}
      function prcp(_Ax_){return print_row_context(cst$40,cst$39,_Ax_)}
      return function(param)
       {if(typeof param === "number")
         return caml_call2(Stdlib_format[123],ppf,_fc_);
        else
         {if(0 === param[0])
           {var t=param[2],c=param[1];
            return caml_call8
                    (Stdlib_format[123],ppf,_fd_,pre,prcp,c,pr,t,post)}
          var c$0=param[2],t$0=param[1];
          return caml_call8
                  (Stdlib_format[123],ppf,_fe_,pre,prp,t$0,prc,c$0,post)}}}
    function print_vector(es,ppf)
     {if(es)
       {var
         pp_sep=
          function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_ff_)};
        caml_call2(Stdlib_format[123],ppf,_fg_);
        var _Aw_=function(ppf,f){return caml_call1(f,ppf)};
        caml_call4(Stdlib_format[119],[0,pp_sep],_Aw_,ppf,es);
        return caml_call2(Stdlib_format[123],ppf,_fh_)}
      return caml_call2(Stdlib_format[123],ppf,_fi_)}
    function print_precontract(pp,ppf$0,param)
     {var
       body=param[4],
       parameter_and_storage=param[3],
       tstorage=param[2],
       tparameter=param[1];
      caml_call2(Stdlib_format[123],ppf$0,_fq_);
      var _Au_=tparameter[2],_Av_=tparameter[1];
      if(_Au_)
       {var annot=_Au_[1];
        caml_call5(Stdlib_format[123],ppf$0,_fr_,ppf,_Av_,annot)}
      else
       caml_call4(Stdlib_format[123],ppf$0,_fv_,ppf,_Av_);
      caml_call4(Stdlib_format[123],ppf$0,_fs_,ppf,tstorage);
      caml_call6
       (Stdlib_format[123],ppf$0,_ft_,print_var,parameter_and_storage,pp,body);
      return caml_call2(Stdlib_format[123],ppf$0,_fu_)}
    var r=0;
    function unroll_lets(e$1)
     {var r$0=r,e=e$1;
      for(;;)
       {var _At_=e[1];
        if(1 === _At_[0])
         {var
           e$0=_At_[3],
           e1=_At_[2],
           vs=_At_[1],
           r$1=[0,[0,vs,e1],r$0],
           r$0=r$1,
           e=e$0;
          continue}
        return [0,caml_call1(Utils_List[12],r$0),e]}}
    function print_expr(ppf$0,e)
     {var _z6_=e[1];
      if(1 === _z6_[0])
       {var match=unroll_lets([0,_z6_]),r$0=match[2],bs=match[1];
        caml_call2(Stdlib_format[7],ppf$0,0);
        var
         f$1=
          function(param)
           {var e=param[2],vs=param[1];
            return caml_call6
                    (Stdlib_format[123],
                     ppf$0,
                     _f$_,
                     print_pattern,
                     vs,
                     print_expr,
                     e)};
        caml_call2(Utils_List[18],f$1,bs);
        caml_call4(Stdlib_format[123],ppf$0,_ga_,print_expr,r$0);
        return caml_call2(Stdlib_format[3],ppf$0,0)}
      var e$0=map_expr_f(function(ppf,e){return print_expr(e,ppf)},_z6_);
      switch(e$0[0])
       {case 0:
         var s$10=e$0[1];
         return caml_call3(Stdlib_format[123],ppf$0,_fw_,s$10);
        case 1:throw [0,Assert_failure,_fx_];
        case 2:
         var e$1=e$0[4],b=e$0[3],a=e$0[2],rp=e$0[1];
         return caml_call9
                 (Stdlib_format[123],ppf$0,_fy_,print_var,rp,ppf,a,ppf,b,e$1);
        case 3:
         var l=e$0[1];
         if(typeof l === "number")
          return caml_call2(Stdlib_format[123],ppf$0,_eC_);
         else
          switch(l[0])
           {case 0:
             return l[1]
                     ?caml_call2(Stdlib_format[123],ppf$0,_eD_)
                     :caml_call2(Stdlib_format[123],ppf$0,_eE_);
            case 1:
             var i=l[1];
             return caml_call4
                     (Stdlib_format[123],ppf$0,_eF_,Utils_Bigint[3],i);
            case 2:
             var i$0=l[1];
             return caml_call4
                     (Stdlib_format[123],ppf$0,_eG_,Utils_Bigint[3],i$0);
            case 3:
             var i$1=l[1];
             return caml_call4
                     (Stdlib_format[123],ppf$0,_eH_,Utils_Bigint[3],i$1);
            case 4:
             var s=l[1];return caml_call3(Stdlib_format[123],ppf$0,_eI_,s);
            case 5:
             var s$0=l[1];
             return caml_call3(Stdlib_format[123],ppf$0,_eJ_,s$0);
            case 6:
             var s$1=l[1];
             return caml_call3(Stdlib_format[123],ppf$0,_eK_,s$1);
            case 7:
             var s$2=l[1];
             return caml_call3(Stdlib_format[123],ppf$0,_eL_,s$2);
            case 8:
             var s$3=l[1];
             return caml_call3(Stdlib_format[123],ppf$0,_eM_,s$3);
            case 9:
             var s$4=l[1];
             return caml_call3(Stdlib_format[123],ppf$0,_eN_,s$4);
            case 10:
             var s$5=l[1];
             return caml_call3(Stdlib_format[123],ppf$0,_eO_,s$5);
            case 11:
             var s$6=l[1];
             return caml_call3(Stdlib_format[123],ppf$0,_eP_,s$6);
            case 12:
             var s$7=l[1];
             return caml_call3(Stdlib_format[123],ppf$0,_eQ_,s$7);
            case 13:
             var s$8=l[1];
             return caml_call3(Stdlib_format[123],ppf$0,_eR_,s$8);
            default:
             var s$9=l[1];return caml_call3(Stdlib_format[123],ppf$0,_eS_,s$9)}
        case 4:
         var op=e$0[1];
         return caml_call4(Stdlib_format[123],ppf$0,_fz_,print_prim0,op);
        case 5:
         var _z7_=e$0[1];
         if(typeof _z7_ !== "number" && 2 === _z7_[0])
          {var _z9_=_z7_[1];
           if(_z9_)
            {var e$3=e$0[2],t=_z7_[2],ep=_z9_[1];
             return caml_call6(Stdlib_format[123],ppf$0,_fB_,e$3,ep,ppf,t)}
           var e$4=e$0[2],t$0=_z7_[2];
           return caml_call5(Stdlib_format[123],ppf$0,_fC_,e$4,ppf,t$0)}
         var e$2=e$0[2],_z8_=function(x){return caml_call2(pp_prim1,ppf,x)};
         return caml_call5(Stdlib_format[123],ppf$0,_fA_,_z8_,_z7_,e$2);
        case 6:
         var e$5=e$0[2],op$0=e$0[1];
         return caml_call5
                 (Stdlib_format[123],ppf$0,_fD_,print_prim1_fail,op$0,e$5);
        case 7:
         var
          e2=e$0[3],
          e1=e$0[2],
          op$1=e$0[1],
          es=[0,e1,[0,e2,0]],
          pp_sep=
           function(ppf,param){return caml_call2(Stdlib_format[123],ppf,_fj_)};
         caml_call4(Stdlib_format[123],ppf$0,_fk_,pp_op,op$1);
         caml_call3(Stdlib_format[31],ppf$0,_fm_,_fl_);
         var _z5_=function(ppf,f){return caml_call1(f,ppf)};
         caml_call4(Stdlib_format[119],[0,pp_sep],_z5_,ppf$0,es);
         caml_call3(Stdlib_format[31],ppf$0,_fo_,_fn_);
         return caml_call2(Stdlib_format[123],ppf$0,_fp_);
        case 8:
         var e3=e$0[4],e2$0=e$0[3],e1$0=e$0[2],op$2=e$0[1];
         return caml_call7
                 (Stdlib_format[123],ppf$0,_fE_,print_prim3,op$2,e1$0,e2$0,e3);
        case 9:
         var e$6=e$0[2],fld=e$0[1];
         return caml_call4(Stdlib_format[123],ppf$0,_fF_,e$6,fld);
        case 10:
         var
          xs=e$0[2],
          op$3=e$0[1],
          _z__=function(_Ar_){return print_vector(xs,_Ar_)};
         return caml_call5
                 (Stdlib_format[123],ppf$0,_fG_,pp_stack_op,op$3,_z__);
        case 11:
         var
          r=e$0[1],
          f=
           function(param)
            {var _Aq_=param[1];
             if(_Aq_)
              {var rhs=param[2],lhs=_Aq_[1];
               return function(ppf)
                {return caml_call4(Stdlib_format[123],ppf,_fH_,lhs,rhs)}}
             var rhs$0=param[2];
             return rhs$0},
          _z$_=caml_call2(Utils_Binary_tree[11],f,r),
          _Aa_=
           function(_Ao_,_Ap_){return print_rowish(cst$42,cst$41,_Ao_,_Ap_)};
         return caml_call4(Stdlib_format[123],ppf$0,_fI_,_Aa_,_z$_);
        case 12:
         var
          e$7=e$0[3],
          rc=e$0[2],
          cons=e$0[1],
          f$0=
           function(param)
            {var _An_=param[1];
             if(_An_)
              {var t=param[2],lhs=_An_[1];
               return function(ppf$0)
                {return caml_call5(Stdlib_format[123],ppf$0,_fJ_,lhs,ppf,t)}}
             var t$0=param[2];
             return function(ppf$0){return ppf(ppf$0,t$0)}},
          cons$0=caml_call2(Utils_Option[45],cst$43,cons),
          _Ab_=caml_call2(Utils_Binary_tree[63][4],f$0,rc),
          _Ac_=function(_Am_){return print_row_context(cst$45,cst$44,_Am_)};
         return caml_call6(Stdlib_format[123],ppf$0,_fK_,cons$0,_Ac_,_Ab_,e$7);
        case 13:
         var xs$0=e$0[2],t$1=e$0[1],_Ad_=caml_call1(Utils_Control[19],xs$0);
         return caml_call5(Stdlib_format[123],ppf$0,_fL_,_Ad_,ppf,t$1);
        case 14:
         var xs$1=e$0[2],t$2=e$0[1],_Ae_=caml_call1(Utils_Control[19],xs$1);
         return caml_call5(Stdlib_format[123],ppf$0,_fM_,_Ae_,ppf,t$2);
        case 15:
         var
          xs$2=e$0[3],
          v=e$0[2],
          k=e$0[1],
          xs$3=
           function(ppf)
            {function _Ak_(ppf,param)
              {var v=param[2],k=param[1];
               return caml_call4(Stdlib_format[123],ppf,_fN_,k,v)}
             var
              _Al_=
               [0,
                function(ppf,param)
                 {return caml_call2(Stdlib_format[123],ppf,_fO_)}];
             return caml_call4(Stdlib_format[119],_Al_,_Ak_,ppf,xs$2)};
         return caml_call7(Stdlib_format[123],ppf$0,_fP_,xs$3,ppf,k,ppf,v);
        case 16:
         var e2$1=e$0[3],e1$1=e$0[2],vs=e$0[1];
         return caml_call6
                 (Stdlib_format[123],
                  ppf$0,
                  _fQ_,
                  print_record_pattern,
                  vs,
                  e1$1,
                  e2$1);
        case 17:
         var
          clauses=e$0[2],
          scrutinee=e$0[1],
          pp=
           function(ppf,param)
            {if(0 === param[0])
              {var
                match=param[1],
                rhs=match[3],
                var$0=match[2],
                cons=match[1],
                cons$0=caml_call2(Utils_Option[45],cst$46,cons),
                var$1=caml_call2(Utils_Option[45],cst$47,var$0);
               return caml_call5(Stdlib_format[123],ppf,_fR_,cons$0,var$1,rhs)}
             var t2=param[2],t1=param[1];
             return caml_call6(Stdlib_format[123],ppf,_fS_,pp,t1,pp,t2)};
         caml_call3(Stdlib_format[123],ppf$0,_fT_,scrutinee);
         caml_call4(Stdlib_format[123],ppf$0,_fU_,pp,clauses);
         return caml_call2(Stdlib_format[123],ppf$0,_fV_);
        case 18:var es$0=e$0[1];return print_vector(es$0,ppf$0);
        case 19:
         var e$8=e$0[2],n=e$0[1];
         return caml_call4(Stdlib_format[123],ppf$0,_fW_,e$8,n);
        case 20:
         var e$9=e$0[2],n$0=e$0[1];
         return caml_call4(Stdlib_format[123],ppf$0,_fX_,n$0,e$9);
        case 21:
         var e3$0=e$0[3],e2$2=e$0[2],e1$2=e$0[1];
         return caml_call5(Stdlib_format[123],ppf$0,_fY_,e1$2,e2$2,e3$0);
        case 22:
         var
          e3$1=e$0[4],
          e2$3=e$0[3],
          x=e$0[2],
          e1$3=e$0[1],
          x$0=caml_call2(Utils_Option[45],cst$48,x);
         return caml_call6(Stdlib_format[123],ppf$0,_fZ_,e1$3,x$0,e3$1,e2$3);
        case 23:
         var
          e3$2=e$0[5],
          xr=e$0[4],
          e2$4=e$0[3],
          xl=e$0[2],
          scrutinee$0=e$0[1],
          pp$0=
           function(ppf,param)
            {var
              e=param[3],
              x=param[2],
              cons=param[1],
              x$0=caml_call2(Utils_Option[45],cst$49,x);
             return caml_call5(Stdlib_format[123],ppf,_f0_,cons,x$0,e)};
         caml_call3(Stdlib_format[123],ppf$0,_f1_,scrutinee$0);
         caml_call6
          (Stdlib_format[123],
           ppf$0,
           _f2_,
           pp$0,
           [0,cst_Left,xl,e2$4],
           pp$0,
           [0,cst_Right,xr,e3$2]);
         return caml_call2(Stdlib_format[123],ppf$0,_f3_);
        case 24:
         var
          e3$3=e$0[5],
          e2$5=e$0[4],
          xs$4=e$0[3],
          x$1=e$0[2],
          e1$4=e$0[1],
          x$2=caml_call2(Utils_Option[45],cst$50,x$1),
          xs$5=caml_call2(Utils_Option[45],cst$51,xs$4);
         return caml_call7
                 (Stdlib_format[123],ppf$0,_f4_,e1$4,x$2,xs$5,e2$5,e3$3);
        case 28:
         var
          e3$4=e$0[4],
          e2$6=e$0[3],
          e1$5=e$0[2],
          c=e$0[1],
          _Ag_=function(ppf){return caml_call2(Stdlib_format[123],ppf,_f7_)},
          pp$1=function(_Ai_,_Aj_){return print_precontract(_Ag_,_Ai_,_Aj_)};
         return caml_call7
                 (Stdlib_format[123],ppf$0,_f8_,pp$1,c,e1$5,e2$6,e3$4);
        case 29:
         var e$10=e$0[2];
         return caml_call3(Stdlib_format[123],ppf$0,_f9_,e$10);
        case 30:
         var
          e$11=e$0[2],
          c$0=e$0[1],
          _Ah_=caml_call2(Utils_String[7],cst$52,c$0);
         return caml_call4(Stdlib_format[123],ppf$0,_f__,_Ah_,e$11);
        default:
         var step=e$0[3],xs$6=e$0[2],init=e$0[1];
         switch(e$0[0])
          {case 25:var name=cst_loop;break;
           case 26:var name=cst_iter;break;
           case 27:var name=cst_map;break;
           default:throw [0,Assert_failure,_f5_]}
         var _Af_=function(_As_){return print_vector(init,_As_)};
         return caml_call7
                 (Stdlib_format[123],
                  ppf$0,
                  _f6_,
                  name,
                  _Af_,
                  print_vars,
                  xs$6,
                  step)}}
    function record(xs){return [0,[11,xs]]}
    function tuple(xs)
     {var
       _z3_=caml_call1(Utils_Control[2],0),
       _z4_=caml_call2(Utils_List[20],_z3_,xs);
      return [0,[11,caml_call1(Utils_Binary_tree[44],_z4_)]]}
    function proj_field(l,e){return [0,[9,l,e]]}
    function match_record(rp,e1,e2){return [0,[16,rp,e1,e2]]}
    function match_variant(cond,clauses){return [0,[17,cond,clauses]]}
    function loop(rp,step,init){return [0,[25,rp,step,init]]}
    function prim0(op){return [0,[4,op]]}
    function prim1(op,x){return [0,[5,op,x]]}
    function prim1_fail(op,x){return [0,[6,op,x]]}
    function prim2(op,x,y){return [0,[7,op,x,y]]}
    function prim3(op,x,y,z){return [0,[8,op,x,y,z]]}
    function stack_op(op,x){return [0,[10,op,x]]}
    function lit(l){return [0,[3,l]]}
    function var$0(x){return [0,[0,x]]}
    function michel_list(t,entries){return [0,[13,t,entries]]}
    function michel_set(t,entries){return [0,[14,t,entries]]}
    function michel_map(tk,tv,entries){return [0,[15,tk,tv,entries]]}
    function variant(lbl,rc,x){return [0,[12,lbl,rc,x]]}
    function row_context(lbl)
     {return function(param)
       {if(0 === param[0])
         {var _z0_=param[1][1];
          if(_z0_){var l=_z0_[1];return caml_equal(lbl,l)?_gb_:0}
          return 0}
        var r=param[2],l$0=param[1],match=caml_call1(row_context(lbl),l$0);
        if(match){var l$1=match[1];return [0,[0,l$1,r]]}
        function _z1_(r){return [1,l$0,r]}
        var _z2_=caml_call1(row_context(lbl),r);
        return caml_call2(Utils_Option[19],_z2_,_z1_)}}
    function let_in(p,e1,e2){return [0,[1,p,e1,e2]]}
    function let_in_var(x,e1,e2){return [0,[1,[0,x],e1,e2]]}
    function let_in_vector(xs,e1,e2){return [0,[1,[1,xs],e1,e2]]}
    function _gc_(param,e)
     {var rhs=param[2],lhs=param[1];return let_in(lhs,rhs,e)}
    var lets=caml_call1(Utils_List[26],_gc_);
    function lambda(rp,a,b,e){return [0,[2,rp,a,b,e]]}
    function _gd_(i)
     {var _zX_=1;
      return fold_expr_f(function(_zZ_,_zY_){return _zZ_ + _zY_ | 0},_zX_,i)}
    function size_expr(_zW_){return cata_expr(_gd_,_zW_)}
    function _ge_(i,param)
     {var _zV_=1;
      return fold_expr_f
              (function(s,param){var x=param[1];return s + x | 0},_zV_,i)}
    function size_texpr(_zU_){return cata_texpr(_ge_,_zU_)}
    function substitute(subst)
     {function _zQ_(expr)
       {if(0 === expr[0])
         {var
           v=expr[1],
           _zS_=caml_call3(Utils_List[82],0,v,subst),
           _zT_=var$0(v);
          return caml_call2(Utils_Option[45],_zT_,_zS_)}
        return [0,expr]}
      return function(_zR_){return cata_expr(_zQ_,_zR_)}}
    function tsubstitute(subst)
     {function _zM_(e)
       {if(0 === e[0])
         {var v=e[1];
          return function(tys)
           {var _zP_=caml_call3(Utils_List[82],0,v,subst);
            return caml_call2(Utils_Option[45],[0,[0,v],tys],_zP_)}}
        return function(tys)
         {return [0,map_expr_f(function(_zO_){return _zO_[1]},e),tys]}}
      return function(_zN_){return cata_texpr(_zM_,_zN_)}}
    function mk_variant(r,lbl,x)
     {var match=caml_call1(row_context(lbl),r);
      if(match){var c=match[1];return variant([0,lbl],c,x)}
      var _zL_=caml_call4(Stdlib_format[127],_gf_,pp_row,r,lbl);
      return caml_call1(Stdlib[2],_zL_)}
    function nil(t){return prim0([3,t])}
    var _gg_=2;
    function some(_zK_){return prim1(_gg_,_zK_)}
    function left(a1,a2,t)
     {var _zI_=[0,a1,a2,t];return function(_zJ_){return prim1(_zI_,_zJ_)}}
    function right(a1,a2,t)
     {var _zG_=[1,a1,a2,t];return function(_zH_){return prim1(_zG_,_zH_)}}
    function none(t){return prim0([2,t])}
    var true$0=lit(_gh_),false$0=lit(_gi_);
    function dup(n)
     {var _zE_=[0,n];return function(_zF_){return stack_op(_zE_,_zF_)}}
    function if$0(cond,l,r){return [0,[21,cond,l,r]]}
    function if_none(scrutinee,l,param)
     {var r=param[2],xr=param[1];return [0,[22,scrutinee,xr,l,r]]}
    function if_left(scrutinee,param,_zD_)
     {var r=_zD_[2],xr=_zD_[1],l=param[2],xl=param[1];
      return [0,[23,scrutinee,xl,l,xr,r]]}
    function if_cons(scrutinee,param,r)
     {var l=param[3],xs=param[2],x=param[1];
      return [0,[24,scrutinee,x,xs,l,r]]}
    function vector(xs){return [0,[18,xs]]}
    function nth(i,x){return [0,[19,i,x]]}
    function pair(a1,a2)
     {var _zA_=[0,a1,a2];
      return function(_zB_,_zC_){return prim2(_zA_,_zB_,_zC_)}}
    function create_contract(c,e1,e2,e3){return [0,[28,c,e1,e2,e3]]}
    function record_of_tree(lbls,x){return [0,[29,lbls,x]]}
    function comment(c,e){return [0,[30,c,e]]}
    function map_over(xs,step,input){return [0,[27,xs,step,input]]}
    function iter_over(xs,step,input){return [0,[26,xs,step,input]]}
    var
     Michel_Expr=
      [0,
       equal_prim0,
       compare_prim0,
       pp_prim0,
       show_prim0,
       map_prim0,
       fold_prim0,
       equal_prim1,
       compare_prim1,
       pp_prim1,
       show_prim1,
       map_prim1,
       equal_prim1_fail,
       compare_prim1_fail,
       pp_prim1_fail,
       show_prim1_fail,
       equal_prim2,
       compare_prim2,
       pp_prim2,
       show_prim2,
       equal_prim3,
       compare_prim3,
       pp_prim3,
       show_prim3,
       equal_lit,
       pp_lit,
       show_lit,
       equal_stack_op,
       pp_stack_op,
       show_stack_op,
       equal_row_context,
       pp_row_context,
       show_row_context,
       equal_record_pattern,
       pp_record_pattern,
       show_record_pattern,
       equal_pattern,
       pp_pattern,
       show_pattern,
       map_match_clause,
       fold_match_clause,
       pp_match_clause,
       show_match_clause,
       equal_precontract,
       map_precontract,
       fold_precontract,
       pp_precontract,
       show_precontract,
       map_expr_f,
       fold_expr_f,
       pp_expr_f,
       show_expr_f,
       Traversable,
       equal_texpr,
       pp_texpr,
       show_texpr,
       equal_expr,
       pp_expr,
       show_expr,
       erase_types,
       cata_expr,
       para_expr,
       cata_texpr,
       para_texpr,
       print_expr,
       print_precontract,
       print_record_pattern,
       print_pattern,
       print_vars,
       record,
       tuple,
       proj_field,
       match_record,
       match_variant,
       loop,
       prim0,
       prim1,
       prim1_fail,
       prim2,
       prim3,
       lit,
       var$0,
       michel_list,
       michel_set,
       michel_map,
       variant,
       unit,
       row_context,
       let_in,
       let_in_var,
       let_in_vector,
       lets,
       lambda,
       size_expr,
       size_texpr,
       substitute,
       tsubstitute,
       mk_variant,
       some,
       none,
       left,
       right,
       nil,
       true$0,
       false$0,
       dup,
       vector,
       nth,
       if$0,
       if_none,
       if_left,
       if_cons,
       pair,
       stack_op,
       create_contract,
       record_of_tree,
       comment,
       map_over,
       iter_over,
       unroll_lets];
    caml_register_global(804,Michel_Expr,"Michel__Expr");
    var
     equal_checked_precontract=
      function _zz_(_zx_,_zy_){return _zz_.fun(_zx_,_zy_)};
    caml_update_dummy
     (equal_checked_precontract,
      function(lhs,rhs)
       {var _zv_=rhs[1],_zw_=lhs[1];
        return caml_call1
                (caml_call1
                  (caml_call1
                    (equal_precontract,
                     function(x){return caml_call1(equal_texpr,x)}),
                   _zw_),
                 _zv_)});
    function print_checked_precontract(ppf,param)
     {var
       checked_precontract=param[1],
       body=checked_precontract[4],
       parameter_and_storage=checked_precontract[3],
       tstorage=checked_precontract[2],
       tparameter=checked_precontract[1],
       body$0=erase_types(body);
      return print_precontract
              (print_expr,
               ppf,
               [0,tparameter,tstorage,parameter_and_storage,body$0])}
    var
     show_checked_precontract=
      caml_call2(Stdlib_format[127],_gj_,print_checked_precontract);
    function ok1(x){return [0,[0,x]]}
    function with_lub(err,t1,t2,k)
     {var match=lub(t1,t2);
      if(match){var t=match[1];return caml_call1(k,t)}
      return err}
    function un_option(param)
     {if(1 === param[0])
       {var _zn_=param[1];
        if(0 === _zn_[0])
         {var _zo_=_zn_[1],_zp_=_zo_[1];
          if(_zp_ && ! caml_string_notequal(_zp_[1],cst_None$21))
           {var _zq_=_zo_[2];
            if(0 === _zq_[0])
             {var _zr_=_zq_[1];
              if(typeof _zr_ === "number" && ! _zr_)
               {var _zs_=param[2];
                if(0 === _zs_[0])
                 {var _zt_=_zs_[1],_zu_=_zt_[1];
                  if(_zu_ && ! caml_string_notequal(_zu_[1],cst_Some$21))
                   {var t=_zt_[2];return [0,t]}}}}}}}
      return 0}
    function bind_var(x,t)
     {function _zm_(x){return [0,[0,x,t],0]}
      return caml_call3(Utils_Option[12],0,_zm_,x)}
    function bind_vars(xs,ts)
     {var _zj_=caml_call1(Utils_List[4],ts);
      if(caml_call1(Utils_List[4],xs) === _zj_)
       {var _zk_=caml_call4(Utils_List[77],0,bind_var,xs,ts);
        return [0,caml_call1(Utils_List[17],_zk_)]}
      var
       p=caml_call1(Stdlib_format[127],_gB_),
       _zl_=caml_call4(p,print_vars,xs,caml_call1(Utils_List[2],ppf),ts);
      return caml_call1(Utils_Control[15][6],_zl_)}
    function add_to_env(x,t,env)
     {function _zi_(x){return [0,[0,x,t],env]}
      return caml_call3(Utils_Option[12],env,_zi_,x)}
    function typecheck_precontract(param)
     {var
       body=param[4],
       parameter_and_storage=param[3],
       tstorage=param[2],
       tparameter=param[1];
      function _tb_(ps)
       {var annot1=tparameter[2],t=tparameter[1];
        return [0,[0,ps,t_pair(annot1,0,t,tstorage)],0]}
      var env=caml_call3(Utils_Option[12],0,_tb_,parameter_and_storage);
      function _tc_(body)
       {function _ze_(param)
         {return [0,[0,[0,tparameter,tstorage,parameter_and_storage,body]]]}
        var _zf_=body[2];
        if(_zf_)
         var
          out=_zf_[1],
          _zg_=
           compatible(out,t_pair(0,0,t_list(t_operation),tstorage))
            ?_ha_
            :[1,
              caml_call5(Stdlib_format[127],_hb_,print_tys,_zf_,ppf,tstorage)],
          _zh_=_zg_;
        else
         var _zh_=_hc_;
        return caml_call2(Utils_Control[15][31],_zh_,_ze_)}
      var
       _ta_=
        caml_call1
         (cata_expr
           (function(e)
             {var
               _td_=Utils_Control[15],
               BTR=
                caml_call1
                 (Utils_Binary_tree[55],
                  [0,
                   _td_[9],
                   _td_[10],
                   _td_[11],
                   _td_[12],
                   _td_[13],
                   _td_[14],
                   _td_[15],
                   _td_[16],
                   _td_[17],
                   _td_[18],
                   _td_[19],
                   _td_[38],
                   _td_[20],
                   _td_[21],
                   _td_[22],
                   _td_[23],
                   _td_[24],
                   _td_[25],
                   _td_[26],
                   _td_[27],
                   _td_[28],
                   _td_[29],
                   _td_[30]]);
              switch(e[0])
               {case 1:
                 var e2=e[3],e1=e[2],p=e[1];
                 return function(env)
                  {function _vz_(e1)
                    {var _vB_=e1[2];
                     if(0 === p[0])
                      {if(_vB_)
                        {var
                          t=_vB_[1],
                          x=p[1],
                          _vC_=function(e2){return [0,[0,[1,p,e1,e2],e2[2]]]},
                          _vD_=bind_var(x,t),
                          _vE_=caml_call1(e2,caml_call2(Stdlib[37],_vD_,env));
                         return caml_call2(Utils_Control[15][31],_vE_,_vC_)}}
                     else
                      if(_vB_)
                       {var _vG_=_vB_[1];
                        if(5 === _vG_[0])
                         {var
                           ts=_vG_[1],
                           xs=p[1],
                           _vH_=
                            function(bs)
                             {function _vJ_(e2){return [0,[0,[1,p,e1,e2],e2[2]]]}
                              var _vK_=caml_call1(e2,caml_call2(Stdlib[37],bs,env));
                              return caml_call2(Utils_Control[15][31],_vK_,_vJ_)},
                           _vI_=bind_vars(xs,ts);
                          return caml_call2(Utils_Control[15][31],_vI_,_vH_)}}
                     var
                      p$0=caml_call1(Stdlib_format[127],_gM_),
                      _vF_=caml_call4(p$0,print_pattern,p,print_tys,_vB_);
                     return caml_call1(Utils_Control[15][6],_vF_)}
                   var _vA_=caml_call1(e1,env);
                   return caml_call2(Utils_Control[15][31],_vA_,_vz_)};
                case 2:
                 var body=e[4],b=e[3],a=e[2],rp=e[1];
                 return function(env)
                  {if(rp)var x=rp[1],bs=[0,[0,x,a],0];else var bs=0;
                   function _vw_(body)
                    {function ok(param)
                      {return [0,[0,[2,rp,a,b,body],[0,[2,0,a,b]]]]}
                     var _vy_=body[2];
                     if(_vy_)
                      {var r=_vy_[1];
                       if(compatible(r,b))return ok(0);
                       var
                        msg=
                         caml_call5(Stdlib_format[127],_gN_,pp_ty,b,pp_tys,_vy_);
                       return [1,msg]}
                     return ok(0)}
                   var _vx_=caml_call1(body,bs);
                   return caml_call2(Utils_Control[15][31],_vx_,_vw_)};
                case 16:
                 var e2$0=e[3],e1$0=e[2],rp$0=e[1];
                 return function(env)
                  {function _vc_(e1)
                    {function _ve_(t)
                      {function _vh_(bs)
                        {function _vu_(e2){return [0,[0,[16,rp$0,e1,e2],e2[2]]]}
                         var _vv_=caml_call1(e2$0,caml_call2(Stdlib[37],bs,env));
                         return caml_call2(Utils_Control[15][31],_vv_,_vu_)}
                       function f(param)
                        {var param$0=param;
                         for(;;)
                          {var _vj_=param$0[1];
                           if(0 === _vj_[0])
                            {var _vk_=_vj_[1];
                             if(_vk_)
                              {var _vl_=_vk_[1],_vm_=param$0[2];
                               if(0 === _vm_[0])
                                {var match=_vm_[1],t$0=match[2];
                                 return [0,[0,[0,_vl_,t$0],0]]}
                               var t$1=param$0[2];
                               return [0,[0,[0,_vl_,[3,t$1]],0]]}
                             return _gA_}
                           var _vn_=param$0[2],_vo_=_vj_[2],_vp_=_vj_[1];
                           if(0 === _vn_[0])
                            {var _vq_=_vn_[1][2];
                             if(3 === _vq_[0])
                              {var t$2=_vq_[1],param$1=[0,_vj_,t$2],param$0=param$1;
                               continue}
                             var
                              _vi_=
                               caml_call5
                                (Stdlib_format[127],_gz_,print_record_pattern,rp$0,ppf,t);
                             return caml_call1(Utils_Control[15][6],_vi_)}
                           var
                            t2=_vn_[2],
                            t1=_vn_[1],
                            _vr_=f([0,_vp_,t1]),
                            _vs_=f([0,_vo_,t2]),
                            _vt_=caml_call2(Utils_Control[15][12],Stdlib[37],_vs_);
                           return caml_call2(Utils_Control[15][16],_vt_,_vr_)}}
                       var _vg_=f([0,rp$0,[0,[0,0,t]]]);
                       return caml_call2(Utils_Control[15][31],_vg_,_vh_)}
                     var _vf_=get1(e1[2]);
                     return caml_call2(Utils_Control[15][31],_vf_,_ve_)}
                   var _vd_=caml_call1(e1$0,env);
                   return caml_call2(Utils_Control[15][31],_vd_,_vc_)};
                case 17:
                 var clauses=e[2],scrutinee=e[1];
                 return function(env)
                  {function _uO_(scrutinee)
                    {var _uQ_=scrutinee[2];
                     if(_uQ_)
                      {var _uR_=_uQ_[1];
                       if(4 === _uR_[0])
                        {var
                          r=_uR_[1],
                          match=caml_call2(Utils_Binary_tree[48],clauses,r);
                         if(match)
                          {var
                            clauses$0=match[1],
                            _uT_=
                             function(clauses)
                              {var match=caml_call1(Utils_Binary_tree[41],clauses);
                               if(match)
                                {var
                                  xs=match[2],
                                  x=match[1],
                                  _u5_=[0,x[3][2]],
                                  _u6_=
                                   function(x,y)
                                    {var _u$_=y[3][2];
                                     function _va_(_vb_){return lubs(_u$_,_vb_)}
                                     return caml_call2(Utils_Option[40],x,_va_)},
                                  match$0=caml_call3(Utils_List[25],_u6_,_u5_,xs);
                                 if(match$0)
                                  {var tys=match$0[1];
                                   return [0,[0,[17,scrutinee,clauses],tys]]}
                                 var
                                  _u7_=[0,x,xs],
                                  _u8_=
                                   function(ppf,x)
                                    {return caml_call4
                                             (Stdlib_format[123],ppf,_gP_,print_tys,x[3][2])},
                                  _u9_=caml_call2(Stdlib_format[119],0,_u8_),
                                  _u__=erase_types(scrutinee);
                                 return [1,
                                         caml_call5
                                          (Stdlib_format[127],_gQ_,print_expr,_u__,_u9_,_u7_)]}
                               throw [0,Assert_failure,_gR_]},
                            _uU_=
                             function(param)
                              {var
                                var_r=param[2],
                                match=param[1],
                                rhs=match[3],
                                var$0=match[2],
                                cons=match[1],
                                switch$0=0;
                               function _uY_(param)
                                {if(var$0)
                                  {var var$1=var$0[1];
                                   if(0 === var_r[0])
                                    var match=var_r[1],t=match[2],_u2_=t;
                                   else
                                    var _u2_=[4,var_r];
                                   var env$0=[0,[0,var$1,_u2_],env]}
                                 else
                                  var env$0=env;
                                 function _u3_(rhs){return [0,cons,var$0,rhs]}
                                 var _u4_=caml_call1(rhs,env$0);
                                 return caml_call2(Utils_Control[15][13],_u4_,_u3_)}
                               if(cons)
                                {var _uZ_=cons[1];
                                 if(0 === var_r[0])
                                  {var _u0_=var_r[1][1];
                                   if(_u0_)
                                    {var c=_u0_[1];
                                     if(caml_string_notequal(_uZ_,c))
                                      {var _u1_=[1,caml_call3(Stdlib_printf[4],_gS_,_uZ_,c)];
                                       switch$0 = 1}}}}
                               if(! switch$0)var _u1_=_gT_;
                               return caml_call2(Utils_Control[15][31],_u1_,_uY_)},
                            _uV_=caml_call2(BTR[1],_uU_,clauses$0);
                           return caml_call2(Utils_Control[15][31],_uV_,_uT_)}
                         var
                          _uW_=print_row(cst$54),
                          _uX_=caml_call3(Stdlib_format[127],_gU_,_uW_,r);
                         return caml_call1(Stdlib[2],_uX_)}}
                     var _uS_=erase_types(scrutinee);
                     return [1,
                             caml_call5
                              (Stdlib_format[127],_gO_,print_expr,_uS_,print_tys,_uQ_)]}
                   var _uP_=caml_call1(scrutinee,env);
                   return caml_call2(Utils_Control[15][31],_uP_,_uO_)};
                case 21:
                 var r=e[3],l=e[2],cond=e[1];
                 return function(env)
                  {function _uG_(cond)
                    {function _uI_(cond_t)
                      {if(caml_call2(equal_ty,cond_t,t_bool))
                        {var
                          _uK_=
                           function(l)
                            {function _uM_(r)
                              {var match=lubs(l[2],r[2]);
                               if(match){var tys=match[1];return [0,[0,[21,cond,l,r],tys]]}
                               return [1,
                                       caml_call5
                                        (Stdlib_format[127],_gV_,print_tys,l[2],print_tys,r[2])]}
                             var _uN_=caml_call1(r,env);
                             return caml_call2(Utils_Control[15][31],_uN_,_uM_)},
                          _uL_=caml_call1(l,env);
                         return caml_call2(Utils_Control[15][31],_uL_,_uK_)}
                       return _gW_}
                     var _uJ_=get1(cond[2]);
                     return caml_call2(Utils_Control[15][31],_uJ_,_uI_)}
                   var _uH_=caml_call1(cond,env);
                   return caml_call2(Utils_Control[15][31],_uH_,_uG_)};
                case 22:
                 var r$0=e[4],l$0=e[3],xr=e[2],scrutinee$0=e[1];
                 return function(env)
                  {function _uy_(scrutinee)
                    {function _uA_(scrutinee_t)
                      {var match=view_option(scrutinee_t);
                       if(match)
                        {var
                          t=match[1],
                          _uC_=
                           function(l)
                            {function _uE_(r)
                              {var match=lubs(l[2],r[2]);
                               if(match)
                                {var tys=match[1];return [0,[0,[22,scrutinee,xr,l,r],tys]]}
                               return [1,
                                       caml_call5
                                        (Stdlib_format[127],_gX_,print_tys,l[2],print_tys,r[2])]}
                             var _uF_=caml_call1(r$0,add_to_env(xr,t,env));
                             return caml_call2(Utils_Control[15][31],_uF_,_uE_)},
                          _uD_=caml_call1(l$0,env);
                         return caml_call2(Utils_Control[15][31],_uD_,_uC_)}
                       return [1,
                               caml_call3(Stdlib_format[127],_gY_,ppf,scrutinee_t)]}
                     var _uB_=get1(scrutinee[2]);
                     return caml_call2(Utils_Control[15][31],_uB_,_uA_)}
                   var _uz_=caml_call1(scrutinee$0,env);
                   return caml_call2(Utils_Control[15][31],_uz_,_uy_)};
                case 23:
                 var r$1=e[5],xr$0=e[4],l$1=e[3],xl=e[2],scrutinee$1=e[1];
                 return function(env)
                  {function _uo_(scrutinee)
                    {function _uq_(scrutinee_t)
                      {var match=view_or(scrutinee_t);
                       if(match)
                        {var
                          match$0=match[1],
                          tr=match$0[2],
                          tl=match$0[1],
                          _us_=
                           function(l)
                            {function _uv_(r)
                              {var match=lubs(l[2],r[2]);
                               if(match)
                                {var tys=match[1];
                                 return [0,[0,[23,scrutinee,xl,l,xr$0,r],tys]]}
                               return [1,
                                       caml_call5
                                        (Stdlib_format[127],_gZ_,print_tys,l[2],print_tys,r[2])]}
                             function _uw_(xr){return [0,[0,xr,tr],env]}
                             var
                              _ux_=
                               caml_call1
                                (r$1,caml_call1(caml_call2(Utils_Option[12],env,_uw_),xr$0));
                             return caml_call2(Utils_Control[15][31],_ux_,_uv_)},
                          _ut_=function(xl){return [0,[0,xl,tl],env]},
                          _uu_=
                           caml_call1
                            (l$1,caml_call1(caml_call2(Utils_Option[12],env,_ut_),xl));
                         return caml_call2(Utils_Control[15][31],_uu_,_us_)}
                       return [1,
                               caml_call3(Stdlib_format[127],_g0_,ppf,scrutinee_t)]}
                     var _ur_=get1(scrutinee[2]);
                     return caml_call2(Utils_Control[15][31],_ur_,_uq_)}
                   var _up_=caml_call1(scrutinee$1,env);
                   return caml_call2(Utils_Control[15][31],_up_,_uo_)};
                case 24:
                 var r$2=e[5],l$2=e[4],xs=e[3],x=e[2],scrutinee$2=e[1];
                 return function(env)
                  {function _ug_(scrutinee)
                    {function _ui_(scrutinee_t)
                      {if(1 === scrutinee_t[0] && 1 === scrutinee_t[1])
                        {var
                          t=scrutinee_t[2],
                          _uk_=
                           function(l)
                            {function _um_(r)
                              {var match=lubs(l[2],r[2]);
                               if(match)
                                {var tys=match[1];
                                 return [0,[0,[24,scrutinee,x,xs,l,r],tys]]}
                               return _g2_}
                             var _un_=caml_call1(r$2,env);
                             return caml_call2(Utils_Control[15][31],_un_,_um_)},
                          _ul_=
                           caml_call1(l$2,add_to_env(x,t,add_to_env(xs,t_list(t),env)));
                         return caml_call2(Utils_Control[15][31],_ul_,_uk_)}
                       return _g1_}
                     var _uj_=get1(scrutinee[2]);
                     return caml_call2(Utils_Control[15][31],_uj_,_ui_)}
                   var _uh_=caml_call1(scrutinee$2,env);
                   return caml_call2(Utils_Control[15][31],_uh_,_ug_)};
                case 25:
                 var step=e[3],rp$1=e[2],init=e[1];
                 return function(env)
                  {function _t5_(init)
                    {function _t8_(init_ts)
                      {if(init_ts)
                        {var tail=init_ts[2],cond=init_ts[1];
                         if(caml_call2(equal_ty,cond,t_bool))
                          {var
                            _t$_=
                             function(xs)
                              {function _ub_(step)
                                {var _ud_=step[2];
                                 if(_ud_)
                                  {var _ue_=_ud_[1];
                                   if(5 === _ue_[0])
                                    {var _uf_=_ue_[1];
                                     if(_uf_)
                                      {var tail$0=_uf_[2],cond=_uf_[1];
                                       if(caml_call2(equal_ty,cond,t_bool))
                                        {var
                                          tail$1=[0,[5,tail]],
                                          tail$2=[0,[5,tail$0]],
                                          match=lubs(tail$1,tail$2);
                                         if(match)
                                          {var tys=match[1];return [0,[0,[25,init,rp$1,step],tys]]}
                                         var msg=caml_call1(Stdlib_format[127],_g4_);
                                         return [1,caml_call4(msg,print_tys,tail$1,print_tys,tail$2)]}}}}
                                 return [1,
                                         caml_call3(Stdlib_format[127],_g3_,print_tys,_ud_)]}
                               var _uc_=caml_call1(step,caml_call2(Stdlib[37],xs,env));
                               return caml_call2(Utils_Control[15][31],_uc_,_ub_)},
                            _ua_=bind_vars(rp$1,tail);
                           return caml_call2(Utils_Control[15][31],_ua_,_t$_)}}
                       return _g5_}
                     function _t9_(e){return get1(e[2])}
                     var _t__=caml_call2(Utils_Control[15][22],_t9_,init);
                     return caml_call2(Utils_Control[15][31],_t__,_t8_)}
                   function _t6_(e){return caml_call1(e,env)}
                   var _t7_=caml_call2(Utils_Control[15][22],_t6_,init);
                   return caml_call2(Utils_Control[15][31],_t7_,_t5_)};
                case 26:
                 var step$0=e[3],xs$0=e[2],input=e[1];
                 return function(env)
                  {function _tP_(input)
                    {function _tS_(param)
                      {var ts=param[2],top=param[1];
                       function _tZ_(bs)
                        {function _t1_(step)
                          {var texpr=[26,input,xs$0,step],_t3_=step[2];
                           if(_t3_)
                            {var _t4_=_t3_[1];
                             if(5 === _t4_[0])
                              {var bs=_t4_[1];
                               if(caml_call3(Utils_List[33],compatible,bs,ts))
                                return [0,[0,texpr,[0,[5,ts]]]];
                               var pp=caml_call1(Utils_List[2],ppf);
                               return [1,caml_call5(Stdlib_format[127],_g7_,pp,bs,pp,ts)]}
                             return _g6_}
                           return _g8_}
                         var _t2_=caml_call1(step$0,caml_call2(Stdlib[37],bs,env));
                         return caml_call2(Utils_Control[15][31],_t2_,_t1_)}
                       var _t0_=bind_vars(xs$0,[0,top,ts]);
                       return caml_call2(Utils_Control[15][31],_t0_,_tZ_)}
                     function _tT_(input_tys)
                      {if(input_tys)
                        {var _tX_=input_tys[1];
                         switch(_tX_[0])
                          {case 1:
                            var switcher=_tX_[1] - 1 | 0;
                            if(! (1 < switcher >>> 0))
                             {var ts=input_tys[2],a=_tX_[2];return [0,[0,a,ts]]}
                            break;
                           case 2:
                            var _tY_=_tX_[1];
                            if(typeof _tY_ === "number" && 1 === _tY_)
                             {var ts$0=input_tys[2],v=_tX_[3],k=_tX_[2];
                              return [0,[0,t_pair(0,0,k,v),ts$0]]}
                            break
                           }}
                       return _g9_}
                     function _tU_(x){return get1(x[2])}
                     var
                      _tV_=caml_call2(Utils_Control[15][22],_tU_,input),
                      _tW_=caml_call2(Utils_Control[15][31],_tV_,_tT_);
                     return caml_call2(Utils_Control[15][31],_tW_,_tS_)}
                   function _tQ_(x){return caml_call1(x,env)}
                   var _tR_=caml_call2(Utils_Control[15][22],_tQ_,input);
                   return caml_call2(Utils_Control[15][31],_tR_,_tP_)};
                case 27:
                 var step$1=e[3],xs$1=e[2],input$0=e[1];
                 return function(env)
                  {function _tw_(input)
                    {function _tz_(param)
                      {var ts=param[3],top=param[2],close=param[1];
                       function _tI_(bs)
                        {function _tK_(step)
                          {var texpr=[27,input,xs$1,step],_tM_=step[2];
                           if(_tM_)
                            {var _tN_=_tM_[1];
                             if(5 === _tN_[0])
                              {var _tO_=_tN_[1];
                               if(_tO_)
                                {var bs=_tO_[2],b=_tO_[1];
                                 if(caml_call3(Utils_List[33],compatible,bs,ts))
                                  return [0,[0,texpr,[0,[5,[0,caml_call1(close,b),ts]]]]]}}}
                           return _g__}
                         var _tL_=caml_call1(step$1,caml_call2(Stdlib[37],bs,env));
                         return caml_call2(Utils_Control[15][31],_tL_,_tK_)}
                       var _tJ_=bind_vars(xs$1,[0,top,ts]);
                       return caml_call2(Utils_Control[15][31],_tJ_,_tI_)}
                     function _tA_(input_tys)
                      {if(input_tys)
                        {var _tE_=input_tys[1];
                         switch(_tE_[0])
                          {case 1:
                            if(1 === _tE_[1])
                             {var ts=input_tys[2],a=_tE_[2];return [0,[0,t_list,a,ts]]}
                            break;
                           case 2:
                            var _tF_=_tE_[1];
                            if(typeof _tF_ === "number" && 1 === _tF_)
                             {var
                               ts$0=input_tys[2],
                               v=_tE_[3],
                               k=_tE_[2],
                               _tG_=t_pair(0,0,k,v);
                              return [0,
                                      [0,function(_tH_){return t_map(k,_tH_)},_tG_,ts$0]]}
                            break
                           }}
                       return _g$_}
                     function _tB_(x){return get1(x[2])}
                     var
                      _tC_=caml_call2(Utils_Control[15][22],_tB_,input),
                      _tD_=caml_call2(Utils_Control[15][31],_tC_,_tA_);
                     return caml_call2(Utils_Control[15][31],_tD_,_tz_)}
                   function _tx_(x){return caml_call1(x,env)}
                   var _ty_=caml_call2(Utils_Control[15][22],_tx_,input$0);
                   return caml_call2(Utils_Control[15][31],_ty_,_tw_)};
                case 28:
                 var
                  storage=e[4],
                  balance=e[3],
                  baker=e[2],
                  match=e[1],
                  body$0=match[4],
                  parameter_and_storage=match[3],
                  tstorage=match[2],
                  tparameter$0=match[1];
                 return function(env)
                  {function _te_(body)
                    {function _th_(baker)
                      {function _tj_(balance)
                        {function _tl_(storage)
                          {function _tn_(tbaker)
                            {function _tp_(tbalance)
                              {function _tr_(tstorage$0)
                                {if(4 === tbaker[0] && 0 === tbalance[0])
                                  {var _tt_=tbalance[1];
                                   if(typeof _tt_ === "number" && 4 === _tt_)
                                    {var option_key_hash=tbaker[1];
                                     if(compatible(tstorage,tstorage$0))
                                      {var match=un_option(option_key_hash);
                                       if(match)
                                        {var _tu_=match[1];
                                         if(0 === _tu_[0])
                                          {var _tv_=_tu_[1];
                                           if(typeof _tv_ === "number" && 11 === _tv_)
                                            {var
                                              texpr=
                                               [28,
                                                [0,tparameter$0,tstorage,parameter_and_storage,body],
                                                baker,
                                                balance,
                                                storage];
                                             return [0,[0,texpr,[0,[5,[0,t_operation,[0,t_address,0]]]]]]}}}
                                       return caml_call1
                                               (Utils_Control[15][6],cst_create_contract_illegal_ar$0)}}}
                                 return caml_call1
                                         (Utils_Control[15][6],cst_create_contract_illegal_ar)}
                               var _ts_=get1(storage[2]);
                               return caml_call2(Utils_Control[15][31],_ts_,_tr_)}
                             var _tq_=get1(balance[2]);
                             return caml_call2(Utils_Control[15][31],_tq_,_tp_)}
                           var _to_=get1(baker[2]);
                           return caml_call2(Utils_Control[15][31],_to_,_tn_)}
                         var _tm_=caml_call1(storage,env);
                         return caml_call2(Utils_Control[15][31],_tm_,_tl_)}
                       var _tk_=caml_call1(balance,env);
                       return caml_call2(Utils_Control[15][31],_tk_,_tj_)}
                     var _ti_=caml_call1(baker,env);
                     return caml_call2(Utils_Control[15][31],_ti_,_th_)}
                   function _tf_(ps)
                    {var annot1=tparameter$0[2],t=tparameter$0[1];
                     return [0,[0,ps,t_pair(annot1,0,t,tstorage)],0]}
                   var
                    _tg_=
                     caml_call1
                      (body$0,
                       caml_call3(Utils_Option[12],0,_tf_,parameter_and_storage));
                   return caml_call2(Utils_Control[15][31],_tg_,_te_)};
                default:
                 return function(env)
                  {var
                    _vL_=Utils_Control[15],
                    TR=
                     Traversable
                      ([0,
                        _vL_[9],
                        _vL_[10],
                        _vL_[11],
                        _vL_[12],
                        _vL_[13],
                        _vL_[14],
                        _vL_[15],
                        _vL_[16],
                        _vL_[17],
                        _vL_[18],
                        _vL_[19],
                        _vL_[38],
                        _vL_[20],
                        _vL_[21],
                        _vL_[22],
                        _vL_[23],
                        _vL_[24],
                        _vL_[25],
                        _vL_[26],
                        _vL_[27],
                        _vL_[28],
                        _vL_[29],
                        _vL_[30]]);
                   function _vM_(texpr)
                    {var
                      match$0=
                       map_expr_f
                        (function(param){var tys=param[2];return tys},texpr);
                     switch(match$0[0])
                      {case 0:
                        var _vS_=match$0[1];
                        if(caml_string_notequal(_vS_,cst_rev_ops))
                         {var match$1=caml_call3(Utils_List[82],0,_vS_,env);
                          if(match$1)
                           var x=match$1[1],_vT_=ok1(x);
                          else
                           var _vT_=[1,caml_call2(Stdlib_printf[4],_gC_,_vS_)];
                          var _vU_=_vT_}
                        else
                         var
                          _vW_=t_list(t_operation),
                          _vU_=ok1(t_lambda(t_list(t_operation),_vW_));
                        var tys=_vU_;
                        break;
                       case 3:
                        var l=match$0[1];
                        if(typeof l === "number")
                         var _vX_=t_unit;
                        else
                         switch(l[0])
                          {case 0:var _vX_=t_bool;break;
                           case 1:var _vX_=t_nat;break;
                           case 2:var _vX_=t_int;break;
                           case 3:var _vX_=t_mutez;break;
                           case 4:var _vX_=t_string;break;
                           case 5:var _vX_=t_key_hash;break;
                           case 6:var _vX_=t_baker_hash;break;
                           case 7:var _vX_=t_bytes;break;
                           case 8:var _vX_=t_chain_id;break;
                           case 9:var _vX_=t_address;break;
                           case 10:var _vX_=t_timestamp;break;
                           case 11:var _vX_=t_bls12_381_g1;break;
                           case 12:var _vX_=t_bls12_381_g2;break;
                           case 13:var _vX_=t_bls12_381_fr;break;
                           default:var _vX_=t_signature}
                        var tys=ok1(_vX_);
                        break;
                       case 4:
                        var p=match$0[1];
                        if(typeof p === "number")
                         switch(p)
                          {case 4:var _vY_=ok1(t_timestamp);break;
                           case 5:var _vY_=ok1(t_address);break;
                           case 6:var _vY_=ok1(t_chain_id);break;
                           case 7:var _vY_=ok1(t_nat);break;
                           case 8:var _vY_=ok1(t_unit);break;
                           case 2:
                           case 3:var _vY_=ok1(t_mutez);break;
                           default:var _vY_=ok1(t_address)}
                        else
                         switch(p[0])
                          {case 0:
                            var _vP_=p[1];
                            if(_vP_)
                             {var ep=_vP_[1],_vQ_=tparameter[1];
                              if(4 === _vQ_[0])
                               {var
                                 row=_vQ_[1],
                                 _vR_=caml_call1(Utils_Binary_tree[41],row),
                                 match=caml_call3(Utils_List[82],0,[0,ep],_vR_);
                                if(match)
                                 var t=match[1],_vY_=ok1(t_contract(t));
                                else
                                 var _vY_=_gl_}
                              else
                               var _vY_=_gk_}
                            else
                             var _vY_=ok1(t_contract(tparameter[1]));
                            break;
                           case 1:var memo=p[1],_vY_=ok1(t_sapling_state(memo));break;
                           case 2:var t$0=p[1],_vY_=ok1(t_option(t$0));break;
                           case 3:var t$1=p[1],_vY_=ok1(t_list(t$1));break;
                           case 4:var t$2=p[1],_vY_=ok1(t_set(t$2));break;
                           case 5:var tv=p[2],tk=p[1],_vY_=ok1(t_map(tk,tv));break;
                           default:
                            var tv$0=p[2],tk$0=p[1],_vY_=ok1(t_big_map(tk$0,tv$0))}
                        var tys=_vY_;
                        break;
                       case 5:
                        var
                         t1=match$0[2],
                         p$0=match$0[1],
                         _vZ_=
                          function(t1)
                           {var
                             _yC_=caml_call1(pp_prim1,ppf),
                             _yD_=caml_call5(Stdlib_format[127],_gm_,_yC_,p$0,ppf,t1),
                             err=caml_call1(Utils_Control[15][6],_yD_),
                             switch$0=0;
                            if(typeof p$0 === "number")
                             switch(p$0)
                              {case 0:
                                if(3 === t1[0])
                                 {var _yF_=t1[1];
                                  if(0 !== _yF_[0])
                                   {var _yG_=_yF_[1];
                                    if(0 === _yG_[0])
                                     {var match$2=_yG_[1],t$3=match$2[2];return ok1(t$3)}
                                    return ok1([3,_yG_])}}
                                break;
                               case 1:
                                if(3 === t1[0])
                                 {var _yH_=t1[1];
                                  if(0 !== _yH_[0])
                                   {var _yI_=_yH_[2];
                                    if(0 === _yI_[0])
                                     {var match$3=_yI_[1],t$4=match$3[2];return ok1(t$4)}
                                    var r$0=_yH_[2];
                                    return ok1([3,r$0])}}
                                break;
                               case 2:
                                return ok1([4,[1,[0,[0,_gp_,t_unit]],[0,[0,_go_,t1]]]]);
                               case 4:
                                if(0 === t1[0])
                                 {var _yK_=t1[1];
                                  if(typeof _yK_ === "number" && 3 === _yK_)return ok1(t_nat)}
                                break;
                               case 5:
                                if(0 === t1[0])
                                 {var _yL_=t1[1];
                                  if(typeof _yL_ === "number")
                                   {if(16 <= _yL_)
                                     {var switcher=_yL_ - 16 | 0;
                                      switch(switcher)
                                       {case 0:return ok1(t_bls12_381_g1);
                                        case 1:return ok1(t_bls12_381_g2);
                                        default:return ok1(t_bls12_381_fr)}}
                                    switch$0 = 1}
                                  else
                                   switch$0 = 1}
                                else
                                 switch$0 = 1;
                                break;
                               case 6:
                                if(0 === t1[0])
                                 {var _yN_=t1[1];
                                  if(typeof _yN_ === "number")
                                   {if(2 === _yN_)return ok1(t_int);
                                    if(18 <= _yN_)return ok1(t_int)}}
                                break;
                               case 7:
                                if(0 === t1[0])
                                 {var _yO_=t1[1];
                                  if(typeof _yO_ === "number" && 3 === _yO_)
                                   return ok1(t_option(t_nat))}
                                break;
                               case 14:
                                if(1 === t1[0] && 1 === t1[1])
                                 {var _yP_=t1[2];
                                  if(0 === _yP_[0])
                                   {var _yQ_=_yP_[1];
                                    if(typeof _yQ_ === "number")
                                     {if(5 === _yQ_)return ok1(t_string);
                                      if(6 === _yQ_)return ok1(t_bytes)}}}
                                break;
                               case 15:
                                var switch$1=0;
                                switch(t1[0])
                                 {case 0:
                                   var _yR_=t1[1];
                                   if(typeof _yR_ !== "number" || 1 < (_yR_ - 5 | 0) >>> 0)
                                    switch$1 = 1;
                                   break;
                                  case 1:if(1 < (t1[1] - 1 | 0) >>> 0)switch$1 = 1;break;
                                  case 2:
                                   var _yS_=t1[1];
                                   if(typeof _yS_ !== "number" || 1 !== _yS_)switch$1 = 1;
                                   break;
                                  default:switch$1 = 1}
                                if(! switch$1)return ok1(t_nat);
                                break;
                               case 16:
                                if(1 === t1[0] && 3 === t1[1])return ok1(t_address);break;
                               case 17:
                                if(0 === t1[0])
                                 {var _yT_=t1[1];
                                  if(typeof _yT_ === "number" && 11 === _yT_)
                                   return ok1(t_contract(t_unit))}
                                break;
                               case 18:return ok1(t_bytes);
                               case 19:
                                if(0 === t1[0])
                                 {var _yU_=t1[1];
                                  if(typeof _yU_ === "number" && 10 === _yU_)
                                   return ok1(t_key_hash)}
                                break;
                               case 25:
                                if(caml_call2(equal_ty,t1,t_option(t_key_hash)))
                                 return ok1(t_operation);
                                if(caml_call2(equal_ty,t1,t_option(t_baker_hash)))
                                 return ok1(t_operation);
                                break;
                               case 26:
                                if(1 === t1[0] && 4 <= t1[1])
                                 {var t$5=t1[2],_yW_=[0,t_ticket(t$5),0];
                                  return [0,
                                          [0,[5,[0,t_pair(0,0,t_address,t_pair(0,0,t$5,t_nat)),_yW_]]]]}
                                break;
                               case 27:
                                if(3 === t1[0])
                                 {var _yX_=t1[1];
                                  if(0 !== _yX_[0])
                                   {var _yY_=_yX_[1];
                                    if(0 === _yY_[0])
                                     {var _yZ_=_yY_[1];
                                      if(! _yZ_[1])
                                       {var _y0_=_yZ_[2];
                                        if(1 === _y0_[0] && 4 <= _y0_[1])
                                         {var _y1_=_yX_[2],_y2_=_y0_[2];
                                          if(0 === _y1_[0])
                                           {var _y3_=_y1_[1];
                                            if(! _y3_[1])
                                             {var _y4_=_y3_[2];
                                              if(1 === _y4_[0] && 4 <= _y4_[1])
                                               {var t2=_y4_[2];
                                                return with_lub
                                                        (err,_y2_,t2,function(t){return ok1(t_option(t_ticket(t)))})}}}}}}}}
                                break;
                               case 28:
                                if(1 === t1[0] && 1 === t1[1])
                                 {var _y5_=t1[2];
                                  if(3 === _y5_[0])
                                   {var _y6_=_y5_[1];
                                    if(0 !== _y6_[0])
                                     {var _y7_=_y6_[1];
                                      if(0 === _y7_[0])
                                       {var _y8_=_y7_[1][2];
                                        if(0 === _y8_[0])
                                         {var _y9_=_y8_[1];
                                          if(typeof _y9_ === "number" && 16 === _y9_)
                                           {var _y__=_y6_[2];
                                            if(0 === _y__[0])
                                             {var _y$_=_y__[1][2];
                                              if(0 === _y$_[0])
                                               {var _za_=_y$_[1];
                                                if(typeof _za_ === "number" && 17 === _za_)
                                                 return ok1(t_bool)}}}}}}}}
                                break;
                               case 29:
                                if(0 === t1[0])
                                 {var _zb_=t1[1];
                                  if(typeof _zb_ === "number" && 11 === _zb_)return ok1(t_nat)}
                                break;
                               case 13:switch$0 = 1;break;
                               case 20:
                               case 21:
                               case 22:
                               case 23:
                               case 24:
                                if(0 === t1[0])
                                 {var _yV_=t1[1];
                                  if(typeof _yV_ === "number" && 6 === _yV_)
                                   return ok1(t_bytes)}
                                break;
                               default:
                                if(0 === t1[0])
                                 {var _yJ_=t1[1];
                                  if(typeof _yJ_ === "number" && 3 === _yJ_)return ok1(t_bool)}}
                            else
                             switch(p$0[0])
                              {case 0:
                                var tr=p$0[3],tl=t1,a2=p$0[2],a1=p$0[1];switch$0 = 2;break;
                               case 1:
                                var tr=t1,tl=p$0[3],a2=p$0[2],a1=p$0[1];switch$0 = 2;break;
                               case 2:
                                if(0 === t1[0])
                                 {var _zc_=t1[1];
                                  if(typeof _zc_ === "number" && 9 === _zc_)
                                   {var t$6=p$0[2];return ok1(t_option(t_contract(t$6)))}}
                                break;
                               case 3:
                                if(0 === t1[0])
                                 {var _zd_=t1[1];
                                  if(typeof _zd_ === "number" && 6 === _zd_)
                                   {var t$7=p$0[1];return ok1(t_option(t$7))}}
                                break;
                               case 4:
                                var n$2=p$0[1],n=n$2,t=t1;
                                for(;;)
                                 {if(0 === n)return ok1(t);
                                  if(3 === t[0])
                                   {var _yA_=t[1];
                                    if(0 !== _yA_[0])
                                     {var _yB_=_yA_[1];
                                      if(0 === _yB_[0])
                                       {var match=_yB_[1],t$0=match[2];if(1 === n)return ok1(t$0)}
                                      var match$0=_yA_[2];
                                      if(1 === n)return ok1([3,_yB_]);
                                      if(0 === match$0[0])
                                       {var
                                         match$1=match$0[1],
                                         t$1=match$1[2],
                                         n$0=n - 2 | 0,
                                         n=n$0,
                                         t=t$1;
                                        continue}
                                      var r=_yA_[2],t$2=[3,r],n$1=n - 2 | 0,n=n$1,t=t$2;
                                      continue}}
                                  return err}
                               case 5:
                                var t$8=p$0[1];return compatible(t$8,t1)?ok1(t$8):err;
                               default:return ok1(t1)}
                            switch(switch$0)
                             {case 1:
                               if(0 === t1[0])
                                {var _yM_=t1[1];
                                 if(typeof _yM_ === "number")
                                  {var switcher$0=_yM_ - 2 | 0;
                                   if(! (1 < switcher$0 >>> 0))return ok1(t_int)}}
                               if
                                (typeof p$0
                                 ===
                                 "number"
                                 &&
                                 13
                                 ===
                                 p$0
                                 &&
                                 caml_call2(equal_ty,t1,t_bool))
                                return ok1(t_bool);
                               break;
                              case 0:break;
                              default:return ok1([4,[1,[0,[0,a1,tl]],[0,[0,a2,tr]]]])}
                            var _yE_=caml_call1(pp_prim1,ppf);
                            return [1,
                                    caml_call5(Stdlib_format[127],_gn_,_yE_,p$0,ppf,t1)]},
                         _v0_=get1(t1),
                         tys=caml_call2(Utils_Control[15][31],_v0_,_vZ_);
                        break;
                       case 6:
                        if(match$0[1])
                         var
                          t1$0=match$0[2],
                          _v1_=
                           function(t1)
                            {return caml_call2(equal_ty,t1,t_never)?_gE_:_gF_},
                          _v2_=get1(t1$0),
                          _v3_=caml_call2(Utils_Control[15][31],_v2_,_v1_);
                        else
                         var
                          t1$1=match$0[2],
                          _v4_=function(t1){return _gG_},
                          _v5_=get1(t1$1),
                          _v3_=caml_call2(Utils_Control[15][31],_v5_,_v4_);
                        var tys=_v3_;
                        break;
                       case 7:
                        var
                         t2=match$0[3],
                         t1$2=match$0[2],
                         p$1=match$0[1],
                         _v6_=
                          function(t1)
                           {function _xH_(t2$0)
                             {var
                               _xL_=
                                caml_call7
                                 (Stdlib_format[127],_gq_,pp_prim2,p$1,ppf,t1,ppf,t2$0),
                               err=caml_call1(Utils_Control[15][6],_xL_),
                               switch$0=0;
                              if(typeof p$1 === "number")
                               switch(p$1)
                                {case 0:
                                  if(0 === t1[0])
                                   {var _xM_=t1[1];
                                    if(typeof _xM_ === "number")
                                     switch(_xM_)
                                      {case 3:
                                        if(0 === t2$0[0])
                                         {var _xV_=t2$0[1];
                                          if(typeof _xV_ === "number")
                                           {if(8 === _xV_)return ok1(t_timestamp);switch$0 = 1}
                                          else
                                           switch$0 = 1}
                                        else
                                         switch$0 = 1;
                                        break;
                                       case 8:
                                        if(0 === t2$0[0])
                                         {var _xW_=t2$0[1];
                                          if(typeof _xW_ === "number")
                                           {if(3 === _xW_)return ok1(t_timestamp);switch$0 = 1}
                                          else
                                           switch$0 = 1}
                                        else
                                         switch$0 = 1;
                                        break;
                                       case 16:
                                        if(0 === t2$0[0])
                                         {var _xX_=t2$0[1];
                                          if(typeof _xX_ === "number")
                                           {if(16 === _xX_)return ok1(t_bls12_381_g1);switch$0 = 1}
                                          else
                                           switch$0 = 1}
                                        else
                                         switch$0 = 1;
                                        break;
                                       case 17:
                                        if(0 === t2$0[0])
                                         {var _xY_=t2$0[1];
                                          if(typeof _xY_ === "number")
                                           {if(17 === _xY_)return ok1(t_bls12_381_g2);switch$0 = 1}
                                          else
                                           switch$0 = 1}
                                        else
                                         switch$0 = 1;
                                        break;
                                       case 18:
                                        if(0 === t2$0[0])
                                         {var _xZ_=t2$0[1];
                                          if(typeof _xZ_ === "number")
                                           {if(18 <= _xZ_)return ok1(t_bls12_381_fr);switch$0 = 1}
                                          else
                                           switch$0 = 1}
                                        else
                                         switch$0 = 1;
                                        break;
                                       default:switch$0 = 1}
                                    else
                                     switch$0 = 1}
                                  else
                                   switch$0 = 1;
                                  break;
                                 case 1:
                                  if(0 === t1[0])
                                   {var _x0_=t1[1];
                                    if(typeof _x0_ === "number")
                                     {var switch$1=0;
                                      switch(_x0_)
                                       {case 2:
                                         if(0 === t2$0[0])
                                          {var _x1_=t2$0[1];
                                           if(typeof _x1_ === "number" && 4 === _x1_)
                                            return ok1(t_mutez)}
                                         break;
                                        case 4:
                                         if(0 === t2$0[0])
                                          {var _x3_=t2$0[1];
                                           if(typeof _x3_ === "number")
                                            {if(2 === _x3_)return ok1(t_mutez);
                                             switch$0 = 1;
                                             switch$1 = 1}
                                           else
                                            {switch$0 = 1;switch$1 = 1}}
                                         else
                                          {switch$0 = 1;switch$1 = 1}
                                         break;
                                        case 16:
                                         if(0 === t2$0[0])
                                          {var _x4_=t2$0[1];
                                           if(typeof _x4_ === "number")
                                            {if(18 <= _x4_)return ok1(t_bls12_381_g1);
                                             switch$0 = 1;
                                             switch$1 = 1}
                                           else
                                            {switch$0 = 1;switch$1 = 1}}
                                         else
                                          {switch$0 = 1;switch$1 = 1}
                                         break;
                                        case 17:
                                         if(0 === t2$0[0])
                                          {var _x5_=t2$0[1];
                                           if(typeof _x5_ === "number")
                                            {if(18 <= _x5_)return ok1(t_bls12_381_g2);
                                             switch$0 = 1;
                                             switch$1 = 1}
                                           else
                                            {switch$0 = 1;switch$1 = 1}}
                                         else
                                          {switch$0 = 1;switch$1 = 1}
                                         break;
                                        case 18:
                                         if(0 === t2$0[0])
                                          {var _x6_=t2$0[1];
                                           if(typeof _x6_ === "number")
                                            if(4 <= _x6_)
                                             {if(18 <= _x6_)return ok1(t_bls12_381_fr);
                                              switch$0 = 1;
                                              switch$1 = 1}
                                            else
                                             {if(2 <= _x6_)return ok1(t_bls12_381_fr);
                                              switch$0 = 1;
                                              switch$1 = 1}
                                           else
                                            {switch$0 = 1;switch$1 = 1}}
                                         else
                                          {switch$0 = 1;switch$1 = 1}
                                         break;
                                        case 3:break;
                                        default:switch$0 = 1;switch$1 = 1}
                                      if(! switch$1)
                                       if(0 === t2$0[0])
                                        {var _x2_=t2$0[1];
                                         if(typeof _x2_ === "number")
                                          {if(18 <= _x2_)return ok1(t_bls12_381_fr);switch$0 = 1}
                                         else
                                          switch$0 = 1}
                                       else
                                        switch$0 = 1}
                                    else
                                     switch$0 = 1}
                                  else
                                   switch$0 = 1;
                                  break;
                                 case 2:
                                  if(0 === t1[0])
                                   {var _x7_=t1[1];
                                    if(typeof _x7_ === "number")
                                     if(2 === _x7_)
                                      if(0 === t2$0[0])
                                       {var _x8_=t2$0[1];
                                        if(typeof _x8_ === "number")
                                         {if(2 === _x8_)return ok1(t_int);switch$0 = 1}
                                        else
                                         switch$0 = 1}
                                      else
                                       switch$0 = 1;
                                     else
                                      if(8 === _x7_ && 0 === t2$0[0])
                                       {var _x9_=t2$0[1];
                                        if(typeof _x9_ === "number")
                                         {if(3 === _x9_)return ok1(t_timestamp);
                                          if(8 === _x9_)return ok1(t_int);
                                          switch$0 = 1}
                                        else
                                         switch$0 = 1}
                                      else
                                       switch$0 = 1;
                                    else
                                     switch$0 = 1}
                                  else
                                   switch$0 = 1;
                                  break;
                                 case 6:
                                  if(0 === t1[0])
                                   {var _x__=t1[1];
                                    if(typeof _x__ === "number" && ! (5 <= _x__))
                                     switch(_x__)
                                      {case 2:
                                        if(0 === t2$0[0])
                                         {var _x$_=t2$0[1];
                                          if(typeof _x$_ === "number")
                                           {if(2 === _x$_)
                                             return ok1(t_option(t_pair(0,0,t_nat,t_nat)));
                                            if(3 === _x$_)return ok1(t_option(t_pair(0,0,t_int,t_nat)))}}
                                        break;
                                       case 3:
                                        if(0 === t2$0[0])
                                         {var _ya_=t2$0[1];
                                          if(typeof _ya_ === "number")
                                           {if(2 === _ya_)
                                             return ok1(t_option(t_pair(0,0,t_int,t_nat)));
                                            if(3 === _ya_)return ok1(t_option(t_pair(0,0,t_int,t_nat)))}}
                                        break;
                                       case 4:
                                        if(0 === t2$0[0])
                                         {var _yb_=t2$0[1];
                                          if(typeof _yb_ === "number")
                                           {var switcher=_yb_ - 2 | 0;
                                            if(! (2 < switcher >>> 0))
                                             switch(switcher)
                                              {case 0:return ok1(t_option(t_pair(0,0,t_mutez,t_mutez)));
                                               case 1:break;
                                               default:return ok1(t_option(t_pair(0,0,t_nat,t_mutez)))}}}
                                        break
                                       }}
                                  break;
                                 case 9:
                                  if(1 === t2$0[0] && 1 === t2$0[1])
                                   {var t2=t2$0[2];
                                    return with_lub
                                            (err,t1,t2,function(t){return ok1(t_list(t))})}
                                  break;
                                 case 10:
                                  return with_lub(err,t1,t2$0,function(t){return ok1(t_int)});
                                 case 11:
                                  if(0 === t1[0])
                                   {var _yc_=t1[1];
                                    if(typeof _yc_ === "number")
                                     if(5 === _yc_)
                                      {if(0 === t2$0[0])
                                        {var _yd_=t2$0[1];
                                         if(typeof _yd_ === "number" && 5 === _yd_)
                                          return ok1(t_string)}}
                                     else
                                      if(6 === _yc_ && 0 === t2$0[0])
                                       {var _ye_=t2$0[1];
                                        if(typeof _ye_ === "number" && 6 === _ye_)
                                         return ok1(t_bytes)}}
                                  break;
                                 case 12:
                                  if(2 === t2$0[0])
                                   {var _yf_=t2$0[1];
                                    if(typeof _yf_ === "number" && _yf_)
                                     {var v=t2$0[3],k2=t2$0[2];
                                      return with_lub
                                              (err,t1,k2,function(k){return ok1(t_option(v))})}}
                                  break;
                                 case 13:
                                  switch(t2$0[0])
                                   {case 1:
                                     if(2 === t2$0[1])
                                      {var el2=t2$0[2];
                                       return with_lub(err,t1,el2,function(el){return ok1(t_bool)})}
                                     break;
                                    case 2:
                                     var _yg_=t2$0[1];
                                     if(typeof _yg_ === "number" && _yg_)
                                      {var k2$0=t2$0[2];
                                       return with_lub(err,t1,k2$0,function(k){return ok1(t_bool)})}
                                     break
                                    }
                                  break;
                                 case 14:
                                  if(2 === t2$0[0])
                                   {var _yh_=t2$0[1];
                                    if(typeof _yh_ === "number" && ! _yh_)
                                     {var b=t2$0[3],a2=t2$0[2];
                                      return with_lub(err,t1,a2,function(el){return ok1(b)})}}
                                  break;
                                 case 15:
                                  if(2 === t2$0[0])
                                   {var _yi_=t2$0[1];
                                    if(typeof _yi_ === "number" && ! _yi_)
                                     {var _yj_=t2$0[2];
                                      if(3 === _yj_[0])
                                       {var _yk_=_yj_[1];
                                        if(0 !== _yk_[0])
                                         {var _yl_=_yk_[1];
                                          if(0 === _yl_[0])
                                           {var c=t2$0[3],b$0=_yk_[2],match$2=_yl_[1],a2$0=match$2[2];
                                            return with_lub
                                                    (err,t1,a2$0,function(a){return ok1(t_lambda([3,b$0],c))})}}}}}
                                  break;
                                 case 16:
                                  if(0 === t1[0])
                                   {var _ym_=t1[1],switch$2=0;
                                    if(typeof _ym_ !== "number" && 0 !== _ym_[0])
                                     if(0 === t2$0[0])
                                      {var _yn_=t2$0[1];
                                       if(typeof _yn_ !== "number" && 1 !== _yn_[0])
                                        {var m2=_yn_[1],m1=_ym_[1];
                                         return m1 !== m2
                                                 ?err
                                                 :ok1(t_option(t_pair(0,0,t_int,t_sapling_state(m2))))}
                                       switch$2 = 1}
                                     else
                                      switch$2 = 1}
                                  break;
                                 case 17:
                                  if(0 === t2$0[0])
                                   {var _yo_=t2$0[1];
                                    if(typeof _yo_ === "number" && 2 === _yo_)
                                     return [0,[0,t_ticket(t1)]]}
                                  break;
                                 case 18:
                                  if(1 === t1[0] && 4 <= t1[1] && 3 === t2$0[0])
                                   {var _yp_=t2$0[1],_yq_=t1[2];
                                    if(0 !== _yp_[0])
                                     {var _yr_=_yp_[1];
                                      if(0 === _yr_[0])
                                       {var _ys_=_yr_[1];
                                        if(! _ys_[1])
                                         {var _yt_=_ys_[2];
                                          if(0 === _yt_[0])
                                           {var _yu_=_yt_[1];
                                            if(typeof _yu_ === "number" && 2 === _yu_)
                                             {var _yv_=_yp_[2];
                                              if(0 === _yv_[0])
                                               {var _yw_=_yv_[1];
                                                if(! _yw_[1])
                                                 {var _yx_=_yw_[2];
                                                  if(0 === _yx_[0])
                                                   {var _yy_=_yx_[1];
                                                    if(typeof _yy_ === "number" && 2 === _yy_)
                                                     {var _yz_=t_ticket(_yq_);
                                                      return ok1(t_option(t_pair(0,0,t_ticket(_yq_),_yz_)))}}}}}}}}}}
                                  break;
                                 default:switch$0 = 2}
                              else
                               {if(0 === p$1[0])
                                 {var annot2=p$1[2],annot1=p$1[1];
                                  return ok1(t_pair(annot1,annot2,t1,t2$0))}
                                var n$2=p$1[1],n=n$2,t=t2$0;
                                for(;;)
                                 {if(0 === n)
                                   return with_lub(err,t1,t,function(param){return ok1(t2$0)});
                                  if(3 === t[0])
                                   {var _xJ_=t[1];
                                    if(0 !== _xJ_[0])
                                     {var _xK_=_xJ_[1];
                                      if(0 === _xK_[0])
                                       {var match=_xK_[1],t$0=match[2];
                                        if(1 === n)
                                         return with_lub
                                                 (err,t1,t$0,function(param){return ok1(t2$0)})}
                                      var match$0=_xJ_[2];
                                      if(1 === n)
                                       return with_lub
                                               (err,t1,[3,_xK_],function(param){return ok1(t2$0)});
                                      if(0 === match$0[0])
                                       {var
                                         match$1=match$0[1],
                                         t$1=match$1[2],
                                         n$0=n - 2 | 0,
                                         n=n$0,
                                         t=t$1;
                                        continue}
                                      var r=_xJ_[2],t$2=[3,r],n$1=n - 2 | 0,n=n$1,t=t$2;
                                      continue}}
                                  return err}}
                              var switch$3=0;
                              switch(switch$0)
                               {case 1:
                                 if(0 === t1[0])
                                  {var _xN_=t1[1];
                                   if(typeof _xN_ === "number" && ! (5 <= _xN_))
                                    switch(_xN_)
                                     {case 2:
                                       if(0 === t2$0[0])
                                        {var _xO_=t2$0[1];
                                         if(typeof _xO_ === "number")
                                          if(2 === _xO_)
                                           switch$3 = 2;
                                          else
                                           if(3 === _xO_)return ok1(t_int)}
                                       break;
                                      case 3:
                                       if(0 === t2$0[0])
                                        {var _xU_=t2$0[1];
                                         if(typeof _xU_ === "number")
                                          {if(2 === _xU_)return ok1(t_int);
                                           if(3 === _xU_)return ok1(t_int)}}
                                       break;
                                      case 4:switch$3 = 1;break
                                      }}
                                 break;
                                case 2:switch$3 = 2;break
                                }
                              var switch$4=0;
                              switch(switch$3)
                               {case 2:
                                 var switch$5=0;
                                 if(typeof p$1 === "number" && 2 === p$1)switch$5 = 1;
                                 if(! switch$5)
                                  if(0 === t1[0])
                                   {var _xP_=t1[1];
                                    if(typeof _xP_ === "number" && 2 === _xP_ && 0 === t2$0[0])
                                     {var _xQ_=t2$0[1];
                                      if(typeof _xQ_ === "number")
                                       {if(2 === _xQ_)return ok1(t_nat);switch$4 = 1}
                                      else
                                       switch$4 = 1}
                                    else
                                     switch$4 = 1}
                                  else
                                   switch$4 = 1;
                                 break;
                                case 1:switch$4 = 1;break
                                }
                              if(switch$4)
                               {var switch$6=0;
                                if(typeof p$1 === "number")
                                 switch(p$1)
                                  {case 0:
                                   case 2:
                                    if(0 === t2$0[0])
                                     {var _xR_=t2$0[1];
                                      if(typeof _xR_ === "number" && 4 === _xR_)
                                       return ok1(t_mutez)}
                                    break;
                                   case 1:
                                   case 3:
                                   case 4:break;
                                   default:switch$6 = 1}
                                else
                                 switch$6 = 1;
                                if(switch$6)
                                 {if
                                   (caml_call2(equal_ty,t1,t_bool)
                                    &&
                                    caml_call2(equal_ty,t2$0,t_bool))
                                   return ok1(t_bool);
                                  var switch$7=0;
                                  if(typeof p$1 === "number" && 7 === p$1)
                                   {if(0 === t1[0])
                                     {var _xS_=t1[1];
                                      if(typeof _xS_ === "number" && 3 === _xS_ && 0 === t2$0[0])
                                       {var _xT_=t2$0[1];
                                        if(typeof _xT_ === "number" && 2 === _xT_)return ok1(t_nat)}}}
                                  else
                                   switch$7 = 1}}
                              return err}
                            var _xI_=get1(t2);
                            return caml_call2(Utils_Control[15][31],_xI_,_xH_)},
                         _v7_=get1(t1$2),
                         tys=caml_call2(Utils_Control[15][31],_v7_,_v6_);
                        break;
                       case 8:
                        var
                         t3=match$0[4],
                         t2$0=match$0[3],
                         t1$3=match$0[2],
                         p$2=match$0[1],
                         _v8_=
                          function(t1)
                           {function _xk_(t2)
                             {function _xm_(t3)
                               {var
                                 _xo_=
                                  caml_call9
                                   (Stdlib_format[127],_gr_,pp_prim3,p$2,ppf,t1,ppf,t2,ppf,t3),
                                 err=caml_call1(Utils_Control[15][6],_xo_);
                                switch(p$2)
                                 {case 0:
                                   if(0 === t1[0])
                                    {var _xp_=t1[1];
                                     if(typeof _xp_ === "number" && 2 === _xp_ && 0 === t2[0])
                                      {var _xq_=t2[1];
                                       if(typeof _xq_ === "number" && 2 === _xq_ && 0 === t3[0])
                                        {var _xr_=t3[1];
                                         if(typeof _xr_ === "number")
                                          {if(5 === _xr_)return ok1(t_option(t_string));
                                           if(6 === _xr_)return ok1(t_option(t_bytes))}}}}
                                   break;
                                  case 1:
                                   switch(t3[0])
                                    {case 1:
                                      if(2 === t3[1])
                                       {var e=t3[2];
                                        if(caml_call2(equal_ty,t2,t_bool))
                                         {var match=lub(t1,e);
                                          if(match){var e$0=match[1];return ok1(t_set(e$0))}
                                          return err}}
                                      break;
                                     case 2:
                                      if(4 === t2[0])
                                       {var _xs_=t3[1],_xt_=t2[1];
                                        if(typeof _xs_ === "number" && _xs_)
                                         {var
                                           v=t3[3],
                                           k=t3[2],
                                           match$0=lub(t1,k),
                                           _xu_=function(_xG_){return lub(v,_xG_)},
                                           _xv_=un_option(_xt_),
                                           match$1=caml_call2(Utils_Option[40],_xv_,_xu_);
                                          if(match$0 && match$1)
                                           {var
                                             v$0=match$1[1],
                                             k$0=match$0[1],
                                             map=1 === _xs_?t_map:t_big_map;
                                            return ok1(map(k$0,v$0))}
                                          return err}}
                                      break
                                     }
                                   break;
                                  case 2:
                                   if(4 === t2[0] && 2 === t3[0])
                                    {var _xw_=t3[1],_xx_=t2[1];
                                     if(typeof _xw_ === "number" && _xw_)
                                      {var
                                        v$1=t3[3],
                                        k$1=t3[2],
                                        match$2=lub(t1,k$1),
                                        _xy_=function(_xF_){return lub(v$1,_xF_)},
                                        _xz_=un_option(_xx_),
                                        match$3=caml_call2(Utils_Option[40],_xz_,_xy_);
                                       if(match$2 && match$3)
                                        {var
                                          v$2=match$3[1],
                                          k$2=match$2[1],
                                          map$0=1 === _xw_?t_map:t_big_map,
                                          _xA_=[0,map$0(k$2,v$2),0];
                                         return [0,[0,[5,[0,t_option(v$2),_xA_]]]]}
                                       return err}}
                                   break;
                                  case 3:
                                   if(0 === t2[0])
                                    {var _xB_=t2[1];
                                     if
                                      (typeof _xB_
                                       ===
                                       "number"
                                       &&
                                       4
                                       ===
                                       _xB_
                                       &&
                                       1
                                       ===
                                       t3[0]
                                       &&
                                       3
                                       ===
                                       t3[1])
                                      {var p=t3[2];return compatible(t1,p)?ok1(t_operation):err}}
                                   break;
                                  default:
                                   if(0 === t1[0])
                                    {var _xC_=t1[1];
                                     if(typeof _xC_ === "number" && 10 === _xC_ && 0 === t2[0])
                                      {var _xD_=t2[1];
                                       if(typeof _xD_ === "number" && 13 === _xD_ && 0 === t3[0])
                                        {var _xE_=t3[1];
                                         if(typeof _xE_ === "number" && 6 === _xE_)return ok1(t_bool)}}}}
                                return err}
                              var _xn_=get1(t3);
                              return caml_call2(Utils_Control[15][31],_xn_,_xm_)}
                            var _xl_=get1(t2$0);
                            return caml_call2(Utils_Control[15][31],_xl_,_xk_)},
                         _v9_=get1(t1$3),
                         tys=caml_call2(Utils_Control[15][31],_v9_,_v8_);
                        break;
                       case 9:
                        var
                         t1$4=match$0[2],
                         fld=match$0[1],
                         _v__=
                          function(param)
                           {if(3 === param[0])
                             {var
                               r=param[1],
                               r$0=caml_call1(Utils_Binary_tree[41],r),
                               match=caml_call3(Utils_List[82],0,[0,fld],r$0);
                              if(match){var t=match[1];return ok1(t)}
                              var
                               pp=caml_call1(Utils_List[2],Utils_String[38]),
                               _xj_=
                                function(param)
                                 {var lbl=param[1];
                                  return caml_call2(Utils_Option[45],cst$53,lbl)},
                               r$1=caml_call2(Utils_List[20],_xj_,r$0);
                              return [1,caml_call4(Stdlib_format[127],_gI_,fld,pp,r$1)]}
                            return _gH_},
                         _v$_=get1(t1$4),
                         tys=caml_call2(Utils_Control[15][34],_v$_,_v__);
                        break;
                       case 10:
                        var
                         xs=match$0[2],
                         op=match$0[1],
                         _wa_=
                          function(xs)
                           {var ts$4=[5,xs];
                            if(typeof op === "number")
                             {if(5 === ts$4[0])
                               {var _xa_=ts$4[1];
                                if(_xa_)
                                 {var _xb_=_xa_[2];
                                  if(_xb_)
                                   {var ts=_xb_[2],t2=_xb_[1],t1=_xa_[1];
                                    return [0,[0,[5,[0,t2,[0,t1,ts]]]]]}}}}
                            else
                             switch(op[0])
                              {case 0:
                                if(5 === ts$4[0])
                                 {var
                                   ts$0=ts$4[1],
                                   n=op[1],
                                   _xc_=caml_call3(Utils_List[65],_gt_,n - 1 | 0,ts$0),
                                   _xd_=_xc_[2],
                                   _xe_=_xc_[1];
                                  if(_xd_)
                                   {var lo=_xd_[2],x=_xd_[1];
                                    return [0,
                                            [0,[5,caml_call2(Stdlib[37],[0,x,_xe_],[0,x,lo])]]]}
                                  return _gu_}
                                break;
                               case 1:
                                if(5 === ts$4[0])
                                 {var
                                   ts$1=ts$4[1],
                                   n$0=op[1],
                                   _xf_=caml_call3(Utils_List[65],_gv_,n$0,ts$1),
                                   _xg_=_xf_[2],
                                   _xh_=_xf_[1];
                                  if(_xg_)
                                   {var lo$0=_xg_[2],x$0=_xg_[1];
                                    return [0,[0,[5,caml_call2(Stdlib[37],[0,x$0,_xh_],lo$0)]]]}
                                  return _gw_}
                                break;
                               case 2:
                                if(5 === ts$4[0])
                                 {var
                                   ts$2=ts$4[1],
                                   n$1=op[1],
                                   match=caml_call3(Utils_List[65],_gx_,n$1 + 1 | 0,ts$2),
                                   _xi_=match[1];
                                  if(_xi_)
                                   {var lo$1=match[2],hi=_xi_[2],x$1=_xi_[1];
                                    if(n$1 < caml_call1(Utils_List[4],ts$2))
                                     return [0,[0,[5,caml_call2(Stdlib[37],hi,[0,x$1,lo$1])]]]}
                                  return _gy_}
                                break;
                               default:
                                if(5 === ts$4[0])
                                 {var ts$3=ts$4[1],n$2=op[1];
                                  if(n$2 <= caml_call1(Utils_List[4],ts$3))
                                   return [0,[0,[5,caml_call2(Utils_List[67],n$2,ts$3)]]]}}
                            var
                             _w$_=
                              caml_call5(Stdlib_format[127],_gs_,pp_stack_op,op,ppf,ts$4);
                            return caml_call1(Utils_Control[15][6],_w$_)},
                         _wb_=caml_call2(Utils_Control[15][22],get1,xs),
                         tys=caml_call2(Utils_Control[15][31],_wb_,_wa_);
                        break;
                       case 11:
                        var
                         xs$0=match$0[1],
                         _wc_=function(xs){return ok1([3,xs])},
                         _wd_=
                          function(param)
                           {var
                             t=param[2],
                             lbl=param[1],
                             _w9_=get1(t),
                             _w__=caml_call1(Utils_Control[2],lbl);
                            return caml_call2(Utils_Control[15][12],_w__,_w9_)},
                         _we_=caml_call2(TR[1][1],_wd_,xs$0),
                         tys=caml_call2(Utils_Control[15][31],_we_,_wc_);
                        break;
                       case 12:
                        var
                         t$3=match$0[3],
                         rc=match$0[2],
                         lbl=match$0[1],
                         _wf_=
                          function(t)
                           {return ok1
                                    ([4,caml_call2(Utils_Binary_tree[60],[0,[0,lbl,t]],rc)])},
                         _wg_=get1(t$3),
                         tys=caml_call2(Utils_Control[15][31],_wg_,_wf_);
                        break;
                       case 13:
                        var
                         xs$1=match$0[2],
                         t$4=match$0[1],
                         _wh_=
                          function(xs)
                           {function _w8_(t){return 1 - compatible(t$4,t)}
                            var match=caml_call2(Utils_List[38],_w8_,xs);
                            return match
                                    ?caml_call1
                                      (Utils_Control[15][6],cst_list_element_has_unexpecte)
                                    :ok1(t_list(t$4))},
                         _wi_=caml_call2(Utils_Control[15][22],get1,xs$1),
                         tys=caml_call2(Utils_Control[15][31],_wi_,_wh_);
                        break;
                       case 14:
                        var
                         xs$2=match$0[2],
                         t$5=match$0[1],
                         _wj_=
                          function(xs)
                           {function _w7_(t){return 1 - compatible(t$5,t)}
                            var match=caml_call2(Utils_List[38],_w7_,xs);
                            return match
                                    ?caml_call1
                                      (Utils_Control[15][6],cst_set_element_has_unexpected)
                                    :ok1(t_set(t$5))},
                         _wk_=caml_call2(Utils_Control[15][22],get1,xs$2),
                         tys=caml_call2(Utils_Control[15][31],_wk_,_wj_);
                        break;
                       case 15:
                        var
                         entries=match$0[3],
                         tv$1=match$0[2],
                         tk$1=match$0[1],
                         _wl_=
                          function(entries)
                           {function _w4_(param)
                             {var
                               tv=param[2],
                               tk=param[1],
                               _w5_=compatible(tk$1,tk),
                               _w6_=_w5_?compatible(tv$1,tv):_w5_;
                              return 1 - _w6_}
                            var match=caml_call2(Utils_List[38],_w4_,entries);
                            return match
                                    ?caml_call1
                                      (Utils_Control[15][6],cst_map_entry_has_unexpected_t)
                                    :ok1(t_map(tk$1,tv$1))},
                         _wm_=
                          function(param)
                           {var
                             v=param[2],
                             k=param[1],
                             _w1_=get1(v),
                             _w2_=get1(k),
                             _w3_=caml_call2(Utils_Control[15][12],Utils_Control[2],_w2_);
                            return caml_call2(Utils_Control[15][16],_w3_,_w1_)},
                         _wn_=caml_call2(Utils_Control[15][22],_wm_,entries),
                         tys=caml_call2(Utils_Control[15][31],_wn_,_wl_);
                        break;
                       case 18:
                        var
                         ts=match$0[1],
                         _wo_=
                          function(ts)
                           {return caml_call1(Utils_Control[15][9],[0,[5,ts]])},
                         _wp_=caml_call2(Utils_Control[15][22],get1,ts),
                         tys=caml_call2(Utils_Control[15][31],_wp_,_wo_);
                        break;
                       case 19:
                        var
                         x$0=match$0[2],
                         n=match$0[1],
                         _wq_=
                          function(t)
                           {if(5 === t[0])
                             {var ts=t[1];
                              if(n < caml_call1(Utils_List[4],ts))
                               {var _w0_=[0,caml_call2(Utils_List[10],ts,n)];
                                return caml_call1(Utils_Control[15][9],_w0_)}}
                            return caml_call1
                                    (Utils_Control[15][6],cst_not_a_vector_or_too_short)},
                         _wr_=get1(x$0),
                         tys=caml_call2(Utils_Control[15][31],_wr_,_wq_);
                        break;
                       case 20:
                        var n0=match$0[1],x$1=match$0[2];
                        if(! (2 <= n0))throw [0,Assert_failure,_gL_];
                        var
                         _ws_=
                          function(t)
                           {function get_type(r)
                             {if(0 === r[0]){var match=r[1],t=match[2];return t}
                              return [3,r]}
                            function unpair(param)
                             {var param$0=param;
                              for(;;)
                               {var r=param$0[2],n=param$0[1];
                                if(1 === n)
                                 {var _wU_=[0,get_type(r),0];
                                  return caml_call1(Utils_Control[15][9],_wU_)}
                                if(0 === r[0])
                                 {var _wV_=r[1][2];
                                  if(3 === _wV_[0])
                                   {var r$0=_wV_[1],param$1=[0,n,r$0],param$0=param$1;continue}
                                  var _wW_=caml_call4(Stdlib_format[127],_gJ_,n0,ppf,t);
                                  return caml_call1(Utils_Control[15][6],_wW_)}
                                var
                                 r$1=r[2],
                                 l=r[1],
                                 _wX_=
                                  function(ts)
                                   {var _wZ_=[0,get_type(l),ts];
                                    return caml_call1(Utils_Control[15][9],_wZ_)},
                                 _wY_=unpair([0,n - 1 | 0,r$1]);
                                return caml_call2(Utils_Control[15][31],_wY_,_wX_)}}
                            switch(t[0])
                             {case 2:
                               var _wR_=t[1];
                               if(typeof _wR_ !== "number" && 1 !== _wR_[0])
                                {var t2=t[3],t1=t[2];
                                 return caml_call1
                                         (Utils_Control[15][9],[0,[5,[0,t1,[0,t2,0]]]])}
                               break;
                              case 3:
                               var
                                r=t[1],
                                _wS_=
                                 function(ts)
                                  {return caml_call1(Utils_Control[15][9],[0,[5,ts]])},
                                _wT_=unpair([0,n0,r]);
                               return caml_call2(Utils_Control[15][31],_wT_,_wS_)
                              }
                            var _wQ_=caml_call4(Stdlib_format[127],_gK_,n0,ppf,t);
                            return caml_call1(Utils_Control[15][6],_wQ_)},
                         _wt_=get1(x$1),
                         tys=caml_call2(Utils_Control[15][31],_wt_,_ws_);
                        break;
                       case 29:
                        var _wu_=match$0[1];
                        if(match$0[2])
                         var
                          t$6=match$0[2],
                          _wv_=
                           function(t)
                            {function parse_tree(lbls,t)
                              {if(0 === lbls[0]){var x=lbls[1];return [0,[0,[0,x,t]]]}
                               if(3 === t[0])
                                {var _wA_=t[1],_wB_=lbls[2],_wC_=lbls[1];
                                 if(0 !== _wA_[0])
                                  {var _wD_=_wA_[1];
                                   if(0 === _wD_[0])
                                    {var _wE_=_wD_[1];
                                     if(! _wE_[1])
                                      {var _wH_=_wA_[2],_wI_=_wE_[2];
                                       if(0 === _wH_[0])
                                        {var _wJ_=_wH_[1];
                                         if(! _wJ_[1])
                                          {var
                                            tr$0=_wJ_[2],
                                            _wK_=
                                             function(l)
                                              {function _wO_(r){return [0,[1,l,r]]}
                                               var _wP_=parse_tree(_wB_,tr$0);
                                               return caml_call2(Utils_Control[15][31],_wP_,_wO_)},
                                            _wL_=parse_tree(_wC_,_wI_);
                                           return caml_call2(Utils_Control[15][31],_wL_,_wK_)}}}}
                                   var
                                    tr=_wA_[2],
                                    _wF_=
                                     function(l)
                                      {function _wM_(r){return [0,[1,l,r]]}
                                       var _wN_=parse_tree(_wB_,[3,tr]);
                                       return caml_call2(Utils_Control[15][31],_wN_,_wM_)},
                                    _wG_=parse_tree(_wC_,[3,_wD_]);
                                   return caml_call2(Utils_Control[15][31],_wG_,_wF_)}}
                               return caml_call1
                                       (Utils_Control[15][6],cst_record_of_tree_wrong_shape)}
                             function _wy_(row){return ok1([3,row])}
                             var _wz_=parse_tree(_wu_,t);
                             return caml_call2(Utils_Control[15][31],_wz_,_wy_)},
                          _ww_=get1(t$6),
                          _wx_=caml_call2(Utils_Control[15][31],_ww_,_wv_);
                        else
                         var _wx_=caml_call1(Utils_Control[15][9],0);
                        var tys=_wx_;
                        break;
                       case 30:
                        var
                         ts$0=match$0[2],
                         tys=caml_call1(Utils_Control[15][9],ts$0);
                        break;
                       default:throw [0,Assert_failure,_gD_]}
                     function _vV_(tys){return [0,texpr,tys]}
                     return caml_call2(Utils_Control[15][13],tys,_vV_)}
                   var
                    _vN_=map_expr_f(function(x){return caml_call1(x,env)},e),
                    _vO_=caml_call1(TR[2],_vN_);
                   return caml_call2(Utils_Control[15][31],_vO_,_vM_)}}},
            body),
          env);
      return caml_call2(Utils_Control[15][31],_ta_,_tc_)}
    var
     Michel_Typing=
      [0,
       equal_checked_precontract,
       print_checked_precontract,
       show_checked_precontract,
       typecheck_precontract];
    caml_register_global(806,Michel_Typing,"Michel__Typing");
    var _hd_=Utils_Control[1];
    function _he_(_s$_,_s__){return _s$_ + _s__ | 0}
    var
     mode_occurrences=
      [0,1,function(_s9_,_s8_){return _s9_ + _s8_ | 0},_he_,_hd_];
    function seq(param)
     {var _s6_=param[1],switch$0=0;
      if(3953222 === _s6_)
       {if(1003109192 === param[2])switch$0 = 1}
      else
       if(1003109192 === _s6_)
        {var _s7_=param[2];
         if(3953222 === _s7_)
          switch$0 = 1;
         else
          if(1003109192 === _s7_)return 1003109192}
      return switch$0?3953222:785140586}
    function par(x,y){return caml_equal(x,y)?x:785140586}
    function _hf_(param){return 785140586}
    var
     mode_consumptions=
      [0,3953222,caml_call1(Utils_Control[21],seq),par,_hf_];
    function count_free_vars_f(param)
     {var
       repeat=param[4],
       par=param[3],
       seq=param[2],
       var$0=param[1],
       remove_var=
        caml_call2(Utils_Option[12],Utils_Control[1],Utils_String[42][7]);
      function remove_vars(xs,vars)
       {var _s2_=caml_call2(Utils_List[20],remove_var,xs);
        function _s3_(_s5_,_s4_){return caml_call1(_s4_,_s5_)}
        return caml_call3(Utils_List[25],_s3_,vars,_s2_)}
      function _sU_(param,c1,c2){return [0,caml_call2(seq,c1,c2)]}
      var symbol=caml_call1(Utils_String[42][9],_sU_);
      function _sV_(param,c1,c2){return [0,caml_call2(par,c1,c2)]}
      var symbol$0=caml_call1(Utils_String[42][9],_sV_);
      return function(e)
       {switch(e[0])
         {case 0:var v=e[1];return caml_call2(Utils_String[42][6],v,var$0);
          case 1:
           var e2=e[3],e1=e[2],xs$0=e[1];
           if(0 === xs$0[0])
            var x=xs$0[1],_s0_=caml_call1(remove_var,x);
           else
            var xs=xs$0[1],_s0_=function(_s1_){return remove_vars(xs,_s1_)};
           return caml_call2(symbol,e1,caml_call1(_s0_,e2));
          case 2:var e$0=e[4],x$0=e[1];return caml_call2(remove_var,x$0,e$0);
          case 16:
           var e2$0=e[3],e1$0=e[2],rp=e[1];
           return caml_call2
                   (symbol,
                    e1$0,
                    remove_vars(caml_call1(Utils_Binary_tree[41],rp),e2$0));
          case 17:
           var
            clauses=e[2],
            e$1=e[1],
            clauses$0=caml_call1(Utils_Binary_tree[41],clauses),
            _sW_=
             function(param)
              {var rhs=param[3],var$0=param[2];
               return caml_call2(remove_var,var$0,rhs)},
            match=caml_call2(Utils_List[20],_sW_,clauses$0);
           if(match)
            {var cs=match[2],c=match[1];
             return caml_call2
                     (symbol,e$1,caml_call3(Utils_List[25],symbol$0,c,cs))}
           return e$1;
          case 21:
           var e3=e[3],e2$1=e[2],e1$1=e[1];
           return caml_call2(symbol,e1$1,caml_call2(symbol$0,e2$1,e3));
          case 22:
           var e3$0=e[4],e2$2=e[3],x$1=e[2],e1$2=e[1];
           return caml_call2
                   (symbol,
                    e1$2,
                    caml_call2(symbol$0,e2$2,caml_call2(remove_var,x$1,e3$0)));
          case 23:
           var
            e3$1=e[5],
            x2=e[4],
            e2$3=e[3],
            x1=e[2],
            e1$3=e[1],
            _sX_=caml_call2(remove_var,x2,e3$1);
           return caml_call2
                   (symbol,
                    e1$3,
                    caml_call2(symbol$0,caml_call2(remove_var,x1,e2$3),_sX_));
          case 24:
           var e3$2=e[5],e2$4=e[4],x2$0=e[3],x1$0=e[2],e1$4=e[1];
           return caml_call2
                   (symbol,
                    e1$4,
                    caml_call2
                     (symbol$0,remove_vars([0,x1$0,[0,x2$0,0]],e2$4),e3$2));
          case 28:
           var
            storage=e[4],
            balance=e[3],
            baker=e[2],
            match$0=e[1],
            body=match$0[4],
            parameter_and_storage=match$0[3];
           return caml_call2
                   (symbol,
                    caml_call2
                     (symbol,
                      caml_call2
                       (symbol,
                        caml_call2(remove_var,parameter_and_storage,body),
                        baker),
                      balance),
                    storage);
          case 25:
          case 26:
          case 27:
           var
            step=e[3],
            xs$1=e[2],
            init=e[1],
            _sY_=remove_vars(xs$1,step),
            _sZ_=caml_call2(Utils_String[42][33],repeat,_sY_);
           return caml_call3(Utils_List[25],symbol,_sZ_,init);
          default:return fold_expr_f(symbol,Utils_String[42][1],e)}}}
    function free_vars_f(e)
     {function _sR_(param){return 1}
      var
       singl=caml_call1(Utils_String[43],_sR_),
       _sT_=map_expr_f(singl,e),
       m=caml_call1(count_free_vars_f(mode_occurrences),_sT_),
       _sS_=caml_call1(Utils_String[42][41],m);
      return caml_call1(Utils_String[41][36],_sS_)}
    function count_free_vars(mode)
     {var _sP_=count_free_vars_f(mode);
      return function(_sQ_){return cata_expr(_sP_,_sQ_)}}
    function with_count_free_vars(mode,x)
     {var alg1=count_free_vars_f(mode);
      return function(e)
       {var _sN_=caml_call1(x,e);
        return [0,
                caml_call1(alg1,map_expr_f(function(_sO_){return _sO_[1]},e)),
                _sN_]}}
    function x(e)
     {var match=map_expr_f(function(_sM_){return _sM_[1]},e);
      if(25 === match[0])
       var
        step=match[3],
        xs=match[2],
        f=
         function(k,v)
          {if(1 <= v)return caml_call2(Utils_List[35],[0,k],xs);
           throw [0,Assert_failure,_hg_]},
        l=caml_call2(Utils_String[42][14],f,step);
      else
       var l=1;
      var _sH_=map_expr_f(function(_sL_){return _sL_[2]},e);
      return fold_expr_f
              (function(_sJ_,_sI_){var _sK_=_sJ_?_sI_:_sJ_;return _sK_},
               l,
               _sH_)}
    function loops_closed(e)
     {return cata_expr(with_count_free_vars(mode_occurrences,x),e)[2]}
    function check_bound_occs(mode,check)
     {function check_var(m)
       {function _sG_(x)
         {return caml_call2(check,x,caml_call2(Utils_String[42][28],x,m))}
        return caml_call2(Utils_Option[12],1,_sG_)}
      function check_vars(m)
       {var _sF_=check_var(m);return caml_call1(Utils_List[31],_sF_)}
      function f(e)
       {var match=map_expr_f(function(_sE_){return _sE_[1]},e);
        switch(match[0])
         {case 1:
           var e$0=match[3],xs$0=match[1];
           if(0 === xs$0[0])
            var x=xs$0[1],_sv_=caml_call1(check_var(e$0),x);
           else
            var xs=xs$0[1],_sv_=caml_call1(check_vars(e$0),xs);
           var l=_sv_;
           break;
          case 2:
           var e$1=match[4],x$0=match[1],l=caml_call1(check_var(e$1),x$0);
           break;
          case 16:
           var
            e$2=match[3],
            rp=match[1],
            _st_=caml_call1(Utils_Binary_tree[41],rp),
            l=caml_call1(check_vars(e$2),_st_);
           break;
          case 17:
           var
            clauses=match[2],
            _sw_=caml_call1(Utils_Binary_tree[41],clauses),
            _sx_=
             function(param)
              {var rhs=param[3],var$0=param[2];
               return caml_call1(check_var(rhs),var$0)},
            l=caml_call2(Utils_List[31],_sx_,_sw_);
           break;
          case 22:
           var e3=match[4],x$1=match[2],l=caml_call1(check_var(e3),x$1);break;
          case 23:
           var
            e2=match[5],
            x2=match[4],
            e1=match[3],
            x1=match[2],
            _sy_=caml_call1(check_var(e1),x1),
            _sz_=_sy_?caml_call1(check_var(e2),x2):_sy_,
            l=_sz_;
           break;
          case 24:
           var
            e$3=match[4],
            x2$0=match[3],
            x1$0=match[2],
            l=caml_call1(check_vars(e$3),[0,x1$0,[0,x2$0,0]]);
           break;
          case 25:
           var
            e2$0=match[3],
            xs$1=match[2],
            l=caml_call1(check_vars(e2$0),xs$1);
           break;
          case 28:
           var
            match$0=match[1],
            body=match$0[4],
            parameter_and_storage=match$0[3],
            l=caml_call1(check_vars(body),[0,parameter_and_storage,0]);
           break;
          case 26:
          case 27:
           var
            step=match[3],
            xs$2=match[2],
            l=caml_call1(check_vars(step),xs$2);
           break;
          default:var l=1}
        var _su_=map_expr_f(function(_sD_){return _sD_[2]},e);
        return fold_expr_f
                (function(_sB_,_sA_){var _sC_=_sB_?_sA_:_sB_;return _sC_},
                 l,
                 _su_)}
      return function(e){return cata_expr(with_count_free_vars(mode,f),e)[2]}}
    var
     is_linear=
      check_bound_occs
       (mode_consumptions,
        function(param)
         {function _ss_(n){return 3953222 === n?1:0}
          return caml_call2(Utils_Option[12],0,_ss_)}),
     c=
      check_bound_occs
       (mode_occurrences,
        function(param)
         {function _sr_(n){return 1 <= n?1:0}
          return caml_call2(Utils_Option[12],0,_sr_)});
    function _hh_(param,x,y){return [0,x + y | 0]}
    var
     sum_map=caml_call1(Utils_String[42][9],_hh_),
     sum_maps=caml_call2(Utils_List[25],sum_map,Utils_String[42][1]);
    function _hi_(x){return caml_call2(Utils_String[42][6],x,1)}
    var count_var=caml_call2(Utils_Option[12],Utils_String[42][1],_hi_);
    function count_tree(f,x)
     {var _sq_=caml_call2(Utils_Binary_tree[11],f,x);
      return caml_call3(Utils_Binary_tree[5],sum_map,Utils_String[42][1],_sq_)}
    function f$0(e)
     {switch(e[0])
       {case 1:
         var e2=e[3],e1=e[2],xs=e[1];
         if(0 === xs[0])
          var x=xs[1],xs$0=[0,x,0];
         else
          var xs$1=xs[1],xs$0=xs$1;
         return caml_call1
                 (sum_maps,
                  [0,e1,[0,e2,caml_call2(Utils_List[20],count_var,xs$0)]]);
        case 2:
         var e$0=e[4],x$0=e[1];
         return caml_call2(sum_map,caml_call1(count_var,x$0),e$0);
        case 16:
         var e2$0=e[3],e1$0=e[2],rp=e[1];
         return caml_call1
                 (sum_maps,[0,count_tree(count_var,rp),[0,e1$0,[0,e2$0,0]]]);
        case 17:
         var
          clauses=e[2],
          e$1=e[1],
          count_clause=
           function(param)
            {var rhs=param[3],var$0=param[2];
             return caml_call2(sum_map,caml_call1(count_var,var$0),rhs)};
         return caml_call2(sum_map,e$1,count_tree(count_clause,clauses));
        case 22:
         var e3=e[4],e2$1=e[3],x$1=e[2],e1$1=e[1];
         return caml_call1
                 (sum_maps,
                  [0,e1$1,[0,caml_call1(count_var,x$1),[0,e2$1,[0,e3,0]]]]);
        case 23:
         var
          e3$0=e[5],
          x2=e[4],
          e2$2=e[3],
          x1=e[2],
          e1$2=e[1],
          _sn_=[0,e2$2,[0,caml_call1(count_var,x2),[0,e3$0,0]]];
         return caml_call1
                 (sum_maps,[0,e1$2,[0,caml_call1(count_var,x1),_sn_]]);
        case 24:
         var
          e3$1=e[5],
          e2$3=e[4],
          x2$0=e[3],
          x1$0=e[2],
          e1$3=e[1],
          _so_=[0,caml_call1(count_var,x2$0),[0,e2$3,[0,e3$1,0]]];
         return caml_call1
                 (sum_maps,[0,e1$3,[0,caml_call1(count_var,x1$0),_so_]]);
        case 28:
         var
          e3$2=e[4],
          e2$4=e[3],
          e1$4=e[2],
          match=e[1],
          body=match[4],
          parameter_and_storage=match[3];
         return caml_call1
                 (sum_maps,
                  [0,
                   caml_call1(count_var,parameter_and_storage),
                   [0,body,[0,e1$4,[0,e2$4,[0,e3$2,0]]]]]);
        case 25:
        case 26:
        case 27:
         var
          step=e[3],
          xs$2=e[2],
          init=e[1],
          _sp_=caml_call2(Utils_List[20],count_var,xs$2);
         return caml_call1(sum_maps,caml_call2(Stdlib[37],[0,step,init],_sp_));
        default:return fold_expr_f(sum_map,Utils_String[42][1],e)}}
    function bindings_unique(e)
     {var _sm_=cata_expr(f$0,e);
      function _sl_(param,n){return 1 === n?1:0}
      return caml_call2(Utils_String[42][14],_sl_,_sm_)}
    function _hj_(e)
     {switch(e[0])
       {case 6:return 1;
        case 7:
         var _sh_=e[1];
         if(typeof _sh_ === "number")
          {if(14 === _sh_)return 1;if(! (5 <= _sh_))return 1}
         break;
        case 25:return 1
        }
      var _sg_=0;
      return fold_expr_f
              (function(_sj_,_si_){var _sk_=_sj_ || _si_;return _sk_},_sg_,e)}
    function may_fail(_sf_){return cata_expr(_hj_,_sf_)}
    function is_tmutez(param)
     {if(param)
       {var _sd_=param[1];
        if(0 === _sd_[0])
         {var _se_=_sd_[1];if(typeof _se_ === "number" && 4 === _se_)return 1}}
      return 0}
    function may_fail_typed_f(e)
     {switch(e[0])
       {case 6:return 1;
        case 7:
         var _r9_=e[1];
         if(typeof _r9_ === "number")
          {if(! (5 <= _r9_))
            {if(3 <= _r9_)return 1;
             var t2=e[3][2],match=e[2],t1=match[2],_r__=is_tmutez(t1);
             return _r__?_r__:is_tmutez(t2)}
           if(14 === _r9_)return 1}
         break;
        case 25:return 1
        }
      var _r7_=map_expr_f(function(_sc_){return _sc_[1]},e),_r8_=0;
      return fold_expr_f
              (function(_sa_,_r$_){var _sb_=_sa_ || _r$_;return _sb_},
               _r8_,
               _r7_)}
    function f$1(e)
     {switch(e[0])
       {case 2:return 0;
        case 6:return 1;
        case 17:
         var
          clauses=e[2],
          _r2_=caml_call1(Utils_Binary_tree[41],clauses),
          _r3_=function(param){var rhs=param[3];return rhs};
         return caml_call2(Utils_List[31],_r3_,_r2_);
        case 21:var r=e[3],l=e[2];break;
        case 22:var r=e[4],l=e[3];break;
        case 23:var r=e[5],l=e[3];break;
        case 24:var r=e[5],l=e[4];break;
        case 28:
         var
          storage=e[4],
          balance=e[3],
          baker=e[2],
          baker$0=baker || balance || storage;
         return baker$0;
        case 25:
        case 26:
        case 27:return 0;
        default:
         var _r1_=0;
         return fold_expr_f
                 (function(_r5_,_r4_){var _r6_=_r5_ || _r4_;return _r6_},
                  _r1_,
                  e)}
      var r$0=l?r:l;
      return r$0}
    function always_fails(_r0_){return cata_expr(f$1,_r0_)}
    var
     Michel_Analyser=
      [0,
       mode_occurrences,
       mode_consumptions,
       is_linear,
       loops_closed,
       c,
       bindings_unique,
       free_vars_f,
       count_free_vars_f,
       count_free_vars,
       may_fail,
       may_fail_typed_f,
       always_fails];
    caml_register_global(807,Michel_Analyser,"Michel__Analyser");
    var
     TO=
      caml_call1
       (Utils_Binary_tree[55],
        [0,
         Utils_Option[15],
         Utils_Option[16],
         Utils_Option[17],
         Utils_Option[18],
         Utils_Option[19],
         Utils_Option[20],
         Utils_Option[21],
         Utils_Option[22],
         Utils_Option[23],
         Utils_Option[24],
         Utils_Option[25],
         Utils_Option[44],
         Utils_Option[26],
         Utils_Option[27],
         Utils_Option[28],
         Utils_Option[29],
         Utils_Option[30],
         Utils_Option[31],
         Utils_Option[32],
         Utils_Option[33],
         Utils_Option[34],
         Utils_Option[35],
         Utils_Option[36]]);
    function mk_t(label,transform,conditions)
     {var _rW_=[0,transform];
      function _rX_(_rZ_,_rY_){return caml_call1(_rY_,_rZ_)}
      return [4,label,caml_call3(Utils_List[25],_rX_,_rW_,conditions)]}
    function mk(label,transform,conditions)
     {var _rS_=[1,transform];
      function _rT_(_rV_,_rU_){return caml_call1(_rU_,_rV_)}
      return [4,label,caml_call3(Utils_List[25],_rT_,_rS_,conditions)]}
    function pre_post(param,t)
     {var c=param[2],lbl=param[1];
      function c$0(x,y)
       {return caml_call1(c,x)
                ?caml_call1(c,y)?0:[0,caml_call2(Stdlib[28],cst_post$0,lbl)]
                :[0,caml_call2(Stdlib[28],cst_pre,lbl)]}
      return [6,c$0,t]}
    function preserves(param,t)
     {var c=param[2],lbl=param[1];
      function c$0(x,y)
       {if(caml_call1(c,x) && ! caml_call1(c,y))
         return [0,caml_call2(Stdlib[28],cst_preserves,lbl)];
        return 0}
      return [6,c$0,t]}
    function log_time(s,f,x){return caml_call1(f,x)}
    function _hl_(path,t,x)
     {var t$0=t;
      for(;;)
       {var
         body=x[4],
         parameter_and_storage=x[3],
         tstorage=x[2],
         tparameter=x[1],
         _rD_=
          function(x,y)
           {var _rR_=caml_call2(Stdlib[28],cst$56,y);
            return caml_call2(Stdlib[28],x,_rR_)},
         lbl=caml_call3(Utils_List[25],_rD_,cst$55,path);
        switch(t$0[0])
         {case 0:
           var
            transform=t$0[1],
            y=
             log_time
              (caml_call2(Stdlib[28],lbl,cst_typecheck),
               typecheck_precontract,
               x);
           if(0 === y[0])
            var y$0=y[1],x$0=y$0;
           else
            var
             msg=y[1],
             pp=
              function(_rP_,_rQ_)
               {return print_precontract(print_expr,_rP_,_rQ_)},
             _rC_=caml_call5(Stdlib_format[127],_hk_,lbl,msg,pp,x),
             x$0=caml_call1(Stdlib[2],_rC_);
           var
            body$0=caml_call1(transform,x$0[1][4]),
            y$1=[0,tparameter,tstorage,parameter_and_storage,body$0];
           return y$1;
          case 1:
           var
            transform$0=t$0[1],
            body$1=caml_call1(transform$0,body),
            y$2=[0,tparameter,tstorage,parameter_and_storage,body$1];
           return y$2;
          case 2:
           var t$1=t$0[1],n=1000,x$1=x;
           for(;;)
            {if(0 === n)
              {var _rE_=caml_call2(Stdlib_printf[4],_hm_,lbl);
               return caml_call1(Stdlib[2],_rE_)}
             var x$2=_hl_(path,t$1,x$1);
             if(caml_call3(equal_precontract,equal_expr,x$1,x$2))return x$1;
             var n$0=n - 1 | 0,n=n$0,x$1=x$2;
             continue}
          case 3:
           var
            ts=t$0[1],
            _rF_=function(_rN_,_rO_){return _hl_(path,_rN_,_rO_)},
            _rG_=caml_call2(Utils_List[20],_rF_,ts),
            _rH_=function(_rM_,_rL_){return caml_call1(_rL_,_rM_)};
           return caml_call3(Utils_List[25],_rH_,x,_rG_);
          case 4:
           var
            t$2=t$0[2],
            lbl$0=t$0[1],
            _rI_=0,
            _rJ_=
             function(param)
              {return _hl_(caml_call2(Stdlib[37],path,[0,lbl$0,0]),t$2,x)},
            _rK_=caml_call2(Stdlib[28],cst$57,lbl$0),
            y$3=log_time(caml_call2(Stdlib[28],lbl,_rK_),_rJ_,_rI_);
           return y$3;
          case 5:var t$3=t$0[2],t$0=t$3;continue;
          default:var t$4=t$0[2],t$0=t$4;continue}}}
    function run_transformer(t,c)
     {var
       _rA_=0,
       c$0=
        log_time
         (cst_run_transformer,function(_rB_){return _hl_(_rA_,t,_rB_)},c);
      return c$0}
    function fresh(param,x)
     {var var_counter=param[1],i=var_counter[1];
      var_counter[1]++;
      var _rz_=caml_call1(Stdlib[33],i);
      return caml_call2(Stdlib[28],x,_rz_)}
    function freshen(st,s)
     {function _ry_(param){return fresh(st,s)}
      return caml_call1(Utils_List[20],_ry_)}
    function _hn_(param,x,y){return [0,x + y | 0]}
    var sum_map$0=caml_call1(Utils_String[42][9],_hn_);
    function count_occs_f(e)
     {if(0 === e[0]){var v=e[1];return caml_call2(Utils_String[42][6],v,1)}
      return fold_expr_f(sum_map$0,Utils_String[42][1],e)}
    var
     bindings_unique$0=[0,cst_bindings_unique,bindings_unique],
     is_linear$0=[0,cst_is_linear,is_linear];
    function is_pure(e){return 1 - may_fail(e)}
    function f$2(param)
     {switch(param[0])
       {case 0:return 1;
        case 3:return 1;
        case 4:return 1;
        case 5:
         var _rv_=param[1];
         if(typeof _rv_ === "number" && ! (2 <= _rv_))
          {var x=param[2];return x}
         break;
        case 7:
         var _rw_=param[1];
         if(typeof _rw_ !== "number" && 1 !== _rw_[0])
          {var y=param[3],x$0=param[2],y$0=x$0?y:x$0;return y$0}
         break;
        case 11:
         var r=param[1],_rx_=function(param){var e=param[2];return e};
         return caml_call2(Utils_Binary_tree[53],_rx_,r);
        case 12:var e=param[3];return e;
        case 18:
         var xs=param[1];return caml_call2(Utils_List[31],Utils_Control[1],xs)
        }
      return 0}
    function is_simple(_ru_){return cata_expr(f$2,_ru_)}
    function is_var(param){return 0 === param[1][0]?1:0}
    function f$3(e)
     {var
       match=
        cata_texpr
         (function(e,param)
           {function _rj_(subst)
             {function unchanged(param)
               {return [0,
                        map_expr_f
                         (function(param)
                           {var match=param[1],x=match[3];return caml_call1(x,subst)},
                          e)]}
              switch(e[0])
               {case 0:
                 var
                  v=e[1],
                  _ro_=caml_call2(Utils_String[42][28],v,subst),
                  _rp_=var$0(v);
                 return caml_call2(Utils_Option[45],_rp_,_ro_);
                case 1:
                 var _rq_=e[1];
                 if(0 === _rq_[0])
                  {var _rr_=_rq_[1];
                   if(_rr_)
                    {var
                      _rs_=e[3][1],
                      e2=_rs_[3],
                      occs2=_rs_[1],
                      match=e[2][1],
                      e1=match[3],
                      may_fail1=match[2],
                      x=_rr_[1],
                      param=caml_call1(e1,subst),
                      _rl_=param[1],
                      switch$0=0;
                     if(7 === _rl_[0])
                      {var _rm_=_rl_[1];
                       if
                        (typeof _rm_
                         ===
                         "number"
                         &&
                         14
                         ===
                         _rm_
                         &&
                         0
                         ===
                         _rl_[2][1][0])
                        {var _rn_=_rl_[3][1];
                         if
                          (0
                           ===
                           _rn_[0]
                           &&
                           !
                           caml_string_notequal(_rn_[1],cst_rev_ops$0))
                          {var rev_ops=1;switch$0 = 1}}}
                     if(! switch$0)var rev_ops=0;
                     if(may_fail1 && ! rev_ops)return unchanged(0);
                     var
                      single_occ=
                       1 === caml_call3(Utils_String[42][39],0,x,occs2)?1:0,
                      _rt_=is_simple(param),
                      simple=_rt_ || rev_ops,
                      switch$1=0;
                     if(! simple && ! single_occ)switch$1 = 1;
                     if
                      (!
                       switch$1
                       &&
                       caml_string_notequal
                        (caml_call3(Utils_String[4],x,0,2),cst$58))
                      return caml_call1
                              (e2,caml_call3(Utils_String[42][4],x,param,subst));
                     return let_in_var([0,x],param,caml_call1(e2,subst))}}
                 break
                }
              return unchanged(0)}
            var
             _rk_=
              may_fail_typed_f
               (map_expr_f
                 (function(param)
                   {var tys=param[2],match=param[1],mf=match[2];
                    return [0,mf,tys]},
                  e));
            return [0,
                    count_occs_f
                     (map_expr_f
                       (function(param)
                         {var match=param[1],occs=match[1];return occs},
                        e)),
                    _rk_,
                    _rj_]},
          e),
       r=match[3];
      return caml_call1(r,Utils_String[42][1])}
    var
     _ho_=0,
     _hp_=[0,function(_ri_){return preserves(is_linear$0,_ri_)},_ho_],
     inline_singles=
      mk_t
       (cst_inline,
        f$3,
        [0,function(_rh_){return preserves(bindings_unique$0,_rh_)},_hp_]);
    function f$4(e,subst)
     {function lookup_lit(e)
       {var _rf_=e[1];
        if(0 === _rf_[0])
         {var v=_rf_[1],match=caml_call2(Utils_String[42][28],v,subst);
          if(match){var _rg_=match[1];if(3 === _rg_[1][0])return _rg_}
          return e}
        return e}
      function is_lit(param){return 3 === param[1][0]?1:0}
      if(1 === e[0])
       {var _rd_=e[1];
        if(0 === _rd_[0])
         {var _re_=_rd_[1];
          if(_re_)
           {var
             e2$4=e[3],
             e1$4=e[2],
             x=_re_[1],
             e1$5=caml_call1(e1$4,subst),
             e2$5=
              caml_call1(e2$4,caml_call3(Utils_String[42][4],x,e1$5,subst));
            return let_in_var([0,x],e1$5,e2$5)}}}
      var expr=map_expr_f(function(x){return caml_call1(x,subst)},e);
      switch(expr[0])
       {case 0:
         var e$0=[0,expr],_rb_=e$0[1];
         if(0 === _rb_[0])
          {var v=_rb_[1],match=caml_call2(Utils_String[42][28],v,subst);
           if(match){var _rc_=match[1];if(0 === _rc_[1][0])return _rc_}
           return e$0}
         return e$0;
        case 5:var e1=expr[2],p=expr[1];return prim1(p,lookup_lit(e1));
        case 7:
         var p$0=expr[1],e2=expr[3],e1$0=expr[2];
         if(is_lit(e1$0))return prim2(p$0,e1$0,lookup_lit(e2));
         var e2$0=expr[3],e1$1=expr[2];
         return prim2(p$0,lookup_lit(e1$1),e2$0);
        case 8:
         var p$1=expr[1],e1$2=expr[2],e3=expr[4],e2$1=expr[3];
         if(is_lit(e1$2) && is_lit(e2$1))
          return prim3(p$1,e1$2,e2$1,lookup_lit(e3));
         var e3$0=expr[4],e2$2=expr[3];
         if(is_lit(e1$2))return prim3(p$1,e1$2,lookup_lit(e2$2),e3$0);
         var e3$1=expr[4],e2$3=expr[3],e1$3=expr[2];
         return prim3(p$1,lookup_lit(e1$3),e2$3,e3$1);
        default:return [0,expr]}}
    function f$5(e)
     {var _ra_=Utils_String[42][1];return caml_call1(cata_expr(f$4,e),_ra_)}
    var
     _hq_=0,
     _hr_=[0,function(_q$_){return preserves(is_linear$0,_q$_)},_hq_],
     inline_simples=
      mk
       (cst_inline_simples,
        f$5,
        [0,function(_q__){return preserves(bindings_unique$0,_q__)},_hr_]);
    function mark_var(occs,x)
     {if(x)
       {var x$0=x[1];if(! caml_call2(Utils_String[42][3],x$0,occs))return 0}
      return x}
    function mark_vars(occs)
     {function _q8_(_q9_){return mark_var(occs,_q9_)}
      return caml_call1(Utils_List[20],_q8_)}
    function mark_clause(param)
     {var
       match=param[3],
       rhs=match[2],
       occs=match[1],
       var$0=param[2],
       cons=param[1];
      return [0,cons,mark_var(occs,var$0),rhs]}
    function f$6(e$2)
     {switch(e$2[0])
       {case 1:
         var
          _qL_=e$2[3],
          e2=_qL_[2],
          occs=_qL_[1],
          match=e$2[2],
          e1=match[2],
          xs$0=e$2[1];
         if(0 === xs$0[0])
          var x=xs$0[1],_qM_=[0,mark_var(occs,x)];
         else
          var xs=xs$0[1],_qM_=[1,caml_call1(mark_vars(occs),xs)];
         var _q0_=let_in(_qM_,e1,e2);
         break;
        case 2:
         var
          match$0=e$2[4],
          e=match$0[2],
          occs$0=match$0[1],
          b=e$2[3],
          a=e$2[2],
          x$0=e$2[1],
          _q0_=lambda(mark_var(occs$0,x$0),a,b,e);
         break;
        case 16:
         var
          _qN_=e$2[3],
          e2$0=_qN_[2],
          occs$1=_qN_[1],
          match$1=e$2[2],
          e1$0=match$1[2],
          rp=e$2[1],
          _qK_=function(_q6_){return mark_var(occs$1,_q6_)},
          _q0_=
           match_record
            (caml_call1(caml_call1(Utils_Binary_tree[11],_qK_),rp),e1$0,e2$0);
         break;
        case 17:
         var
          clauses=e$2[2],
          match$2=e$2[1],
          scrutinee=match$2[2],
          _q0_=
           match_variant
            (scrutinee,caml_call2(Utils_Binary_tree[11],mark_clause,clauses));
         break;
        case 22:
         var
          _qO_=e$2[4],
          e3=_qO_[2],
          occs$2=_qO_[1],
          e2$1=e$2[3][2],
          x$1=e$2[2],
          match$3=e$2[1],
          e1$1=match$3[2],
          _q0_=if_none(e1$1,e2$1,[0,mark_var(occs$2,x$1),e3]);
         break;
        case 23:
         var
          _qP_=e$2[5],
          e3$0=_qP_[2],
          occs3=_qP_[1],
          x2=e$2[4],
          _qQ_=e$2[3],
          e2$2=_qQ_[2],
          occs2=_qQ_[1],
          x1=e$2[2],
          match$4=e$2[1],
          e1$2=match$4[2],
          _qR_=[0,mark_var(occs3,x2),e3$0],
          _q0_=if_left(e1$2,[0,mark_var(occs2,x1),e2$2],_qR_);
         break;
        case 24:
         var
          e3$1=e$2[5][2],
          _qS_=e$2[4],
          e2$3=_qS_[2],
          occs$3=_qS_[1],
          x2$0=e$2[3],
          x1$0=e$2[2],
          match$5=e$2[1],
          e1$3=match$5[2],
          _qT_=mark_var(occs$3,x2$0),
          _q0_=if_cons(e1$3,[0,mark_var(occs$3,x1$0),_qT_,e2$3],e3$1);
         break;
        case 25:
         var
          match$6=e$2[3],
          step=match$6[2],
          occs$4=match$6[1],
          xs$1=e$2[2],
          init=e$2[1],
          _qU_=caml_call1(mark_vars(occs$4),xs$1),
          _qV_=function(_q5_){return _q5_[2]},
          _q0_=loop(caml_call2(Utils_List[20],_qV_,init),_qU_,step);
         break;
        case 26:
         var
          match$7=e$2[3],
          e$0=match$7[2],
          occs$5=match$7[1],
          xs$2=e$2[2],
          init$0=e$2[1],
          _qW_=caml_call1(mark_vars(occs$5),xs$2),
          _qX_=function(_q4_){return _q4_[2]},
          _q0_=iter_over(caml_call2(Utils_List[20],_qX_,init$0),_qW_,e$0);
         break;
        case 27:
         var
          match$8=e$2[3],
          e$1=match$8[2],
          occs$6=match$8[1],
          xs$3=e$2[2],
          init$1=e$2[1],
          _qY_=caml_call1(mark_vars(occs$6),xs$3),
          _qZ_=function(_q3_){return _q3_[2]},
          _q0_=map_over(caml_call2(Utils_List[20],_qZ_,init$1),_qY_,e$1);
         break;
        case 28:
         var
          e3$2=e$2[4][2],
          e2$4=e$2[3][2],
          match$9=e$2[2],
          e1$4=match$9[2],
          c=e$2[1],
          match$10=c[4],
          body=match$10[2],
          occs$7=match$10[1],
          parameter_and_storage=c[3],
          tstorage=c[2],
          tparameter=c[1],
          parameter_and_storage$0=mark_var(occs$7,parameter_and_storage),
          c$0=[0,tparameter,tstorage,parameter_and_storage$0,body],
          _q0_=create_contract(c$0,e1$4,e2$4,e3$2);
         break;
        default:var _q0_=[0,map_expr_f(function(_q7_){return _q7_[2]},e$2)]}
      var _q1_=map_expr_f(function(_q2_){return _q2_[1]},e$2);
      return [0,caml_call1(count_free_vars_f(mode_occurrences),_q1_),_q0_]}
    function f$7(e){return cata_expr(f$6,e)[2]}
    var
     _hs_=0,
     _ht_=
      [0,
       function(t)
        {function c$0(param,y)
          {return caml_call1(c,y)?0:[0,caml_call2(Stdlib[28],cst_post,lbl)]}
         return [6,c$0,t]},
       _hs_],
     mark_unused=
      mk
       (cst_mark_unused,
        f$7,
        [0,function(_qJ_){return preserves(bindings_unique$0,_qJ_)},_ht_]);
    function _hu_(e,param)
     {if(5 === e[0])
       {var _qt_=e[1];
        if(typeof _qt_ === "number")
         if(1 === _qt_)
          {var _qu_=e[2],_qv_=_qu_[2];
           if(_qv_)
            {var _qw_=_qv_[1];
             if(3 === _qw_[0])
              {var _qx_=_qw_[1],_qy_=_qu_[1];
               if(0 !== _qx_[0])
                {var _qz_=_qx_[2];
                 if(0 === _qz_[0])
                  {var _qA_=_qz_[1][1];
                   if(_qA_){var lbl=_qA_[1];return proj_field(lbl,_qy_)}}}}}}
         else
          if(! _qt_)
           {var _qB_=e[2],_qC_=_qB_[2];
            if(_qC_)
             {var _qD_=_qC_[1];
              if(3 === _qD_[0])
               {var _qE_=_qD_[1],_qF_=_qB_[1];
                if(0 !== _qE_[0])
                 {var _qG_=_qE_[1];
                  if(0 === _qG_[0])
                   {var _qH_=_qG_[1][1];
                    if(_qH_){var lbl$0=_qH_[1];return proj_field(lbl$0,_qF_)}}}}}}}
      return [0,map_expr_f(function(_qI_){return _qI_[1]},e)]}
    function field_access(_qs_){return cata_texpr(_hu_,_qs_)}
    var
     _hv_=0,
     field_access$0=
      mk_t
       (cst_field_access,
        field_access,
        [0,function(_qr_){return preserves(bindings_unique$0,_qr_)},_hv_]);
    function f$8(e)
     {var occs=cata_expr(count_occs_f,e);
      function extract(c)
       {var _qo_=c[2];
        if(_qo_)
         {var _qp_=c[3][1];
          if(17 === _qp_[0])
           {var _qq_=_qp_[1][1];
            if(0 === _qq_[0])
             {var clauses=_qp_[2],scrutinee=_qq_[1],var$0=_qo_[1];
              if
               (caml_string_equal(var$0,scrutinee)
                &&
                caml_equal(caml_call2(Utils_String[42][28],var$0,occs),_hw_))
               return clauses}}}
        return caml_call1(Utils_Binary_tree[38],c)}
      function f(expr)
       {if(17 === expr[0])
         {var
           clauses=expr[2],
           scrutinee=expr[1],
           _qn_=caml_call2(Utils_Binary_tree[11],extract,clauses);
          return [0,[17,scrutinee,caml_call1(Utils_Binary_tree[35],_qn_)]]}
        return [0,expr]}
      return cata_expr(f,e)}
    var
     _hx_=0,
     flatten_matches=
      mk
       (cst_flatten_matches,
        f$8,
        [0,function(_qm_){return preserves(bindings_unique$0,_qm_)},_hx_]);
    function singleton_or_record(xs)
     {if(0 === xs[0]){var _ql_=xs[1];if(! _ql_[1]){var x=_ql_[2];return x}}
      return [0,[11,xs]]}
    function mostly_fails(clauses)
     {function _qj_(param){var rhs=param[3];return 1 - always_fails(rhs)}
      var _qk_=caml_call2(Utils_Binary_tree[47],_qj_,clauses);
      return caml_call3(Utils_Option[12],0,Utils_Binary_tree[7],_qk_) <= 1?1:0}
    function f$9(expr)
     {switch(expr[0])
       {case 1:
         var _qa_=expr[1],_qb_=expr[2],_qc_=_qb_[1];
         switch(_qc_[0])
          {case 1:
            var rhs$1=expr[3],e1=_qc_[3],e2=_qc_[2],p2=_qc_[1];
            return let_in(p2,e2,let_in(_qa_,e1,rhs$1));
           case 16:
            var rhs$2=expr[3],e1$0=_qc_[3],e2$0=_qc_[2],p2$0=_qc_[1];
            return match_record(p2$0,e2$0,let_in(_qa_,e1$0,rhs$2));
           default:
            if(always_fails(_qb_))return _qb_;
            if(0 === _qa_[0])
             {var _qd_=_qa_[1];
              if(_qd_)
               {var _qe_=expr[3][1];
                if(0 === _qe_[0])
                 {var x=_qe_[1],e=expr[2],x$0=_qd_[1];
                  if(caml_string_equal(x$0,x))return e}}
              else
               {var rhs=expr[3],e$0=expr[2];if(! may_fail(e$0))return rhs}}
            else
             {var _qf_=expr[2][1];
              if(18 === _qf_[0])
               {var
                 rhs$0=expr[3],
                 es=_qf_[1],
                 xs=_qa_[1],
                 _qg_=function(x,e){return [0,[0,x],e]};
                return caml_call2
                        (lets,caml_call4(Utils_List[77],_hy_,_qg_,xs,es),rhs$0)}}}
         break;
        case 16:
         var _qh_=expr[2][1],_qi_=expr[1];
         switch(_qh_[0])
          {case 1:
            var rhs$3=expr[3],e1$1=_qh_[3],e2$1=_qh_[2],p2$1=_qh_[1];
            return let_in(p2$1,e2$1,match_record(_qi_,e1$1,rhs$3));
           case 16:
            var rhs$4=expr[3],e1$2=_qh_[3],e2$2=_qh_[2],p2$2=_qh_[1];
            return match_record(p2$2,e2$2,match_record(_qi_,e1$2,rhs$4))
           }
         break
        }
      return [0,expr]}
    var
     _hz_=0,
     _hA_=[0,function(_p$_){return preserves(bindings_unique$0,_p$_)},_hz_],
     flatten_lets=
      mk(cst_flatten_lets,function(_p__){return cata_expr(f$9,_p__)},_hA_);
    function mangle(st)
     {function f(expr)
       {switch(expr[0])
         {case 1:
           var _pN_=expr[1],switch$0=0;
           if(0 === _pN_[0])
            {var _pO_=_pN_[1];
             if(_pO_)
              {var _pP_=expr[3][1];
               if(0 === _pP_[0])
                {var x=_pP_[1],e1=expr[2],x$0=_pO_[1];
                 if(caml_string_equal(x$0,x))return e1}}
             else
              {var e2$5=expr[3],e1$4=expr[2];if(! may_fail(e1$4))return e2$5}}
           else
            {var _pW_=_pN_[1];
             if(_pW_)
              {var _pX_=_pW_[1],switch$1=0;
               if(_pX_ && ! _pW_[2])
                {var _p3_=expr[3][1];
                 if(18 === _p3_[0])
                  {var _p4_=_p3_[1];
                   if(_p4_)
                    {var _p5_=_p4_[1][1];
                     if(0 === _p5_[0] && ! _p4_[2])
                      {var x$1=_p5_[1],e1$5=expr[2],x$2=_pX_[1];
                       if(caml_string_equal(x$2,x$1))return e1$5;
                       switch$1 = 1}
                     else
                      switch$1 = 1}
                   else
                    switch$1 = 1}
                 else
                  switch$1 = 1}
               if(! switch$1)
                {var _pY_=_pW_[2];
                 if(_pY_ && ! _pY_[2])
                  {var _pZ_=expr[2][1],_p0_=_pY_[1];
                   switch(_pZ_[0])
                    {case 11:
                      var _p1_=_pZ_[1];
                      if(0 !== _p1_[0])
                       {var
                         e2$6=expr[3],
                         r2=_p1_[2],
                         r1=_p1_[1],
                         unwrap=
                          function(x)
                           {if(0 === x[0]){var match=x[1],x$0=match[2];return x$0}
                            return [0,[11,x]]},
                         _p2_=let_in_var(_p0_,unwrap(r2),e2$6);
                        return let_in_var(_pX_,unwrap(r1),_p2_)}
                      switch$0 = 1;
                      break;
                     case 1:
                     case 6:
                     case 16:
                     case 17:
                     case 21:break;
                     default:switch$0 = 1}}}}}
           if(! switch$0)
            {var _pQ_=expr[2],_pR_=_pQ_[1];
             switch(_pR_[0])
              {case 1:
                var e3=expr[3],e1$0=_pR_[3],e2=_pR_[2],rp2=_pR_[1];
                return let_in(rp2,e2,let_in(_pN_,e1$0,e3));
               case 6:return _pQ_;
               case 16:
                var e3$0=expr[3],e1$1=_pR_[3],e2$0=_pR_[2],rp2$0=_pR_[1];
                return match_record(rp2$0,e2$0,let_in(_pN_,e1$1,e3$0));
               case 17:
                var e2$1=expr[3],clauses=_pR_[2],e1$2=_pR_[1];
                if(mostly_fails(clauses))
                 {var
                   mk_clause=
                    function(c)
                     {var rhs=c[3],var$0=c[2],cons=c[1];
                      return always_fails(rhs)
                              ?c
                              :[0,cons,var$0,let_in(_pN_,rhs,e2$1)]};
                  return match_variant
                          (e1$2,caml_call2(Utils_Binary_tree[11],mk_clause,clauses))}
                if(0 !== _pN_[0])
                 {var
                   e2$2=expr[3],
                   match=expr[2][1],
                   clauses$0=match[2],
                   e1$3=match[1],
                   xs=_pN_[1];
                  if(caml_call2(Utils_List[32],Utils_Option[46],xs))
                   {var
                     mk_clause$0=
                      function(c)
                       {var rhs=c[3],var$1=c[2],cons=c[1];
                        if(always_fails(rhs))return c;
                        function _p7_(param){return fresh(st,v)}
                        var
                         _p8_=caml_call1(Utils_Option[17],_p7_),
                         xs$0=caml_call1(caml_call1(Utils_List[20],_p8_),xs),
                         _p9_=caml_call2(Utils_List[23],Utils_Control[1],xs$0),
                         xs_used=
                          vector(caml_call1(caml_call1(Utils_List[20],var$0),_p9_)),
                         rhs$0=let_in_vector(xs$0,rhs,xs_used);
                        return [0,cons,var$1,rhs$0]},
                     _pS_=caml_call1(Utils_List[80],xs),
                     xs$0=caml_call2(Utils_List[20],Utils_Option[13],_pS_);
                    return let_in_vector
                            (xs$0,
                             match_variant
                              (e1$3,
                               caml_call2(Utils_Binary_tree[11],mk_clause$0,clauses$0)),
                             e2$2)}}
                break;
               case 21:
                var _pT_=_pR_[2],_pU_=_pR_[1];
                if(6 === _pT_[1][0])
                 {var e2$4=expr[3],r=_pR_[3];
                  return if$0(_pU_,_pT_,let_in(_pN_,r,e2$4))}
                var _pV_=_pR_[3];
                if(6 === _pV_[1][0])
                 {var e2$3=expr[3];
                  return if$0(_pU_,let_in(_pN_,_pT_,e2$3),_pV_)}
                break
               }}
           break;
          case 16:
           var _p6_=expr[2][1];
           if(1 === _p6_[0])
            {var
              e3$1=expr[3],
              e1$6=_p6_[3],
              e2$7=_p6_[2],
              rp2$1=_p6_[1],
              rp1=expr[1];
             return let_in(rp2$1,e2$7,match_record(rp1,e1$6,e3$1))}
           break
          }
        return [0,expr]}
      var
       _pJ_=0,
       _pK_=[0,function(_pM_){return preserves(bindings_unique$0,_pM_)},_pJ_];
      return mk(cst_mangle,function(_pL_){return cata_expr(f,_pL_)},_pK_)}
    function f$10(expr)
     {switch(expr[0])
       {case 1:
         var _pw_=expr[1],switch$0=0;
         if(0 === _pw_[0])
          {var _px_=_pw_[1];
           if(_px_)
            {var _py_=expr[2][1];
             if(17 === _py_[0])
              {var _pz_=_py_[1];
               if(0 === _pz_[1][0])
                {var _pA_=expr[3][1];
                 if(7 === _pA_[0])
                  {var switch$1=0,_pC_=_pA_[1];
                   if(typeof _pC_ !== "number" && 1 !== _pC_[0])
                    {var _pD_=_pA_[2],_pE_=_pD_[1];
                     if(4 === _pE_[0])
                      {var switch$2=0,_pF_=_pE_[1];
                       if(typeof _pF_ !== "number" && 3 === _pF_[0])
                        {var _pG_=_pA_[3][1];
                         if(0 === _pG_[0])
                          {var x=_pG_[1],clauses$1=_py_[2],x$0=_px_[1];
                           if(caml_string_equal(x$0,x))
                            {var
                              f$0=
                               function(param)
                                {var rhs=param[3],var$0=param[2],cons=param[1];
                                 return [0,cons,var$0,caml_call2(pair(0,0),_pD_,rhs)]},
                              clauses$2=caml_call2(Utils_Binary_tree[11],f$0,clauses$1);
                             return match_variant(_pz_,clauses$2)}
                           switch$1 = 1;
                           switch$2 = 1}
                         else
                          {switch$1 = 1;switch$2 = 1}}
                       if(! switch$2)switch$1 = 1}
                     else
                      switch$1 = 1}}}}
             else
              switch$0 = 1}}
         if(! switch$0)
          {var _pB_=expr[2][1];
           if(17 === _pB_[0])
            {var e=expr[3],clauses=_pB_[2],scrutinee=_pB_[1];
             if(is_var(scrutinee) && is_simple(e))
              {var
                f=
                 function(param)
                  {var rhs=param[3],var$0=param[2],cons=param[1];
                   return [0,cons,var$0,let_in(_pw_,rhs,e)]},
                clauses$0=caml_call2(Utils_Binary_tree[11],f,clauses);
               return match_variant(scrutinee,clauses$0)}}}
         break;
        case 7:
         var _pH_=expr[1],switch$3=0;
         if(typeof _pH_ === "number" || 1 === _pH_[0])
          switch$3 = 1;
         else
          {var _pI_=expr[3][1];
           if(17 === _pI_[0])
            {var
              clauses$3=_pI_[2],
              scrutinee$0=_pI_[1],
              l=expr[2],
              a2=_pH_[2],
              a1=_pH_[1];
             if(is_var(scrutinee$0) && is_simple(l))
              {var
                f$1=
                 function(param)
                  {var rhs=param[3],var$0=param[2],cons=param[1];
                   return [0,cons,var$0,caml_call2(pair(a1,a2),l,rhs)]},
                clauses$4=caml_call2(Utils_Binary_tree[11],f$1,clauses$3);
               return match_variant(scrutinee$0,clauses$4)}}}
         break
        }
      return [0,expr]}
    var
     _hB_=0,
     distribute_lets=
      mk(cst_distribute_lets,function(_pv_){return cata_expr(f$10,_pv_)},_hB_);
    function f1(e,subst)
     {if(1 === e[0])
       {var _pr_=e[1];
        if(0 === _pr_[0])
         {var _ps_=_pr_[1];
          if(_ps_)
           {var
             e2=e[3],
             e1=e[2],
             x$21=_ps_[1],
             e1$0=caml_call1(e1,subst),
             subst$0=
              may_fail(e1$0)
               ?subst
               :caml_call3(Utils_String[42][4],x$21,e1$0,subst);
            return let_in_var([0,x$21],e1$0,caml_call1(e2,subst$0))}}}
      var e$0=map_expr_f(function(e){return caml_call1(e,subst)},e);
      function lookup_var(e)
       {var _pu_=e[1];
        if(0 === _pu_[0])
         {var x=_pu_[1];return caml_call3(Utils_String[42][39],e,x,subst)}
        return e}
      function bool(b){return lit([0,b])}
      function nat(x){return lit([1,x])}
      function int$0(x){return lit([2,x])}
      var match=map_expr_f(lookup_var,e$0);
      switch(match[0])
       {case 5:
         var _o9_=match[1],switch$0=0;
         if(typeof _o9_ === "number")
          if(1 === _o9_)
           {var _o__=match[2][1];
            switch(_o__[0])
             {case 3:switch$0 = 1;break;
              case 7:
               var _pa_=_o__[1];
               if(typeof _pa_ !== "number" && 1 !== _pa_[0])
                {var y=_o__[3];return y}
               break
              }}
          else
           if(_o9_)
            switch$0 = 1;
           else
            {var _pb_=match[2][1];
             switch(_pb_[0])
              {case 3:switch$0 = 1;break;
               case 7:
                var _pc_=_pb_[1];
                if(typeof _pc_ !== "number" && 1 !== _pc_[0])
                 {var x$8=_pb_[2];return x$8}
                break
               }}
         else
          switch$0 = 1;
         if(switch$0)
          {var _o$_=match[2][1];
           if(3 === _o$_[0])
            {var x=_o$_[1];
             if(typeof _o9_ === "number")
              switch(_o9_)
               {case 3:
                 if(typeof x !== "number" && 2 === x[0])
                  {var x$0=x[1];
                   return bool(caml_call2(Big_int[24],x$0,Big_int[1]))}
                 break;
                case 4:
                 if(typeof x !== "number" && 2 === x[0])
                  {var x$1=x[1];return nat(caml_call1(Big_int[4],x$1))}
                 break;
                case 8:
                 if(typeof x !== "number" && 2 === x[0])
                  {var x$2=x[1];
                   return bool(1 - caml_call2(Big_int[24],x$2,Big_int[1]))}
                 break;
                case 9:
                 if(typeof x !== "number" && 2 === x[0])
                  {var x$3=x[1];
                   return bool(caml_call2(Big_int[25],x$3,Big_int[1]))}
                 break;
                case 10:
                 if(typeof x !== "number" && 2 === x[0])
                  {var x$4=x[1];
                   return bool(caml_call2(Big_int[27],x$4,Big_int[1]))}
                 break;
                case 11:
                 if(typeof x !== "number" && 2 === x[0])
                  {var x$5=x[1];
                   return bool(caml_call2(Big_int[26],x$5,Big_int[1]))}
                 break;
                case 12:
                 if(typeof x !== "number" && 2 === x[0])
                  {var x$6=x[1];
                   return bool(caml_call2(Big_int[28],x$6,Big_int[1]))}
                 break;
                case 13:
                 if(typeof x !== "number" && 0 === x[0])
                  {var x$7=x[1];return bool(1 - x$7)}
                 break
                }
             return [0,e$0]}}
         break;
        case 7:
         var _pd_=match[2][1];
         if(3 === _pd_[0])
          {var _pe_=match[3][1];
           if(3 === _pe_[0])
            {var y$0=_pe_[1],x$9=_pd_[1],op=match[1];
             if(typeof op === "number")
              switch(op)
               {case 0:
                 if(typeof x$9 !== "number")
                  switch(x$9[0])
                   {case 1:
                     if(typeof y$0 !== "number" && 1 === y$0[0])
                      {var y$1=y$0[1],x$10=x$9[1];
                       return nat(caml_call2(Big_int[5],x$10,y$1))}
                     break;
                    case 2:
                     if(typeof y$0 !== "number" && 2 === y$0[0])
                      {var y$2=y$0[1],x$11=x$9[1];
                       return int$0(caml_call2(Big_int[5],x$11,y$2))}
                     break;
                    case 3:
                     if(typeof y$0 !== "number" && 3 === y$0[0])
                      {var y$3=y$0[1],x$12=x$9[1];
                       return int$0(caml_call2(Big_int[5],x$12,y$3))}
                     break
                    }
                 break;
                case 1:
                 if(typeof x$9 !== "number")
                  switch(x$9[0])
                   {case 1:
                     if(typeof y$0 !== "number" && 1 === y$0[0])
                      {var y$4=y$0[1],x$13=x$9[1];
                       return nat(caml_call2(Big_int[10],x$13,y$4))}
                     break;
                    case 2:
                     if(typeof y$0 !== "number" && 2 === y$0[0])
                      {var y$5=y$0[1],x$14=x$9[1];
                       return int$0(caml_call2(Big_int[10],x$14,y$5))}
                     break
                    }
                 break;
                case 7:
                 if
                  (typeof x$9
                   !==
                   "number"
                   &&
                   0
                   ===
                   x$9[0]
                   &&
                   typeof y$0
                   !==
                   "number"
                   &&
                   0
                   ===
                   y$0[0])
                  {var y$6=y$0[1],x$15=x$9[1],y$7=x$15?y$6:x$15;
                   return bool(y$7)}
                 break;
                case 8:
                 if
                  (typeof x$9
                   !==
                   "number"
                   &&
                   0
                   ===
                   x$9[0]
                   &&
                   typeof y$0
                   !==
                   "number"
                   &&
                   0
                   ===
                   y$0[0])
                  {var y$8=y$0[1],x$16=x$9[1],x$17=x$16 || y$8;
                   return bool(x$17)}
                 break;
                case 10:
                 var switch$1=0;
                 if(typeof x$9 !== "number")
                  switch(x$9[0])
                   {case 1:
                     if(typeof y$0 !== "number" && 1 === y$0[0])
                      {var y$9=y$0[1],x$18=x$9[1];switch$1 = 1}
                     break;
                    case 2:
                     if(typeof y$0 !== "number" && 2 === y$0[0])
                      {var y$9=y$0[1],x$18=x$9[1];switch$1 = 1}
                     break;
                    case 3:
                     if(typeof y$0 !== "number" && 3 === y$0[0])
                      {var y$9=y$0[1],x$18=x$9[1];switch$1 = 1}
                     break
                    }
                 if(switch$1)
                  {var _pf_=caml_call2(Big_int[23],x$18,y$9);
                   return int$0(caml_call1(Big_int[36],_pf_))}
                 break
                }
             return [0,e$0]}}
         break;
        case 20:
         if(2 === match[1])
          {var _pg_=match[2][1];
           if(7 === _pg_[0])
            {var _ph_=_pg_[1];
             if(typeof _ph_ !== "number" && 1 !== _ph_[0])
              {var y$10=_pg_[3],x$19=_pg_[2];
               return vector([0,x$19,[0,y$10,0]])}}}
         break;
        case 21:
         var _pi_=match[1][1];
         if(3 === _pi_[0])
          {var _pj_=_pi_[1];
           if(typeof _pj_ !== "number" && 0 === _pj_[0])
            {var y$11=match[3],x$20=match[2],b=_pj_[1];return b?x$20:y$11}}
         break;
        case 26:
         var _pk_=match[1];
         if(_pk_)
          {var _pl_=_pk_[1][1],switch$2=0;
           switch(_pl_[0])
            {case 7:
              var _pm_=_pl_[1];
              if(typeof _pm_ === "number" && 9 === _pm_)
               {var _pn_=_pl_[3][1];
                if(4 === _pn_[0])
                 {var switch$3=0,_po_=_pn_[1];
                  if(typeof _po_ !== "number" && 3 === _po_[0])
                   {var x0=_pl_[2];switch$2 = 1;switch$3 = 1}}}
              break;
             case 13:
              var _pq_=_pl_[2];
              if(_pq_ && ! _pq_[2]){var x0=_pq_[1];switch$2 = 1}
              break
             }
           if(switch$2)
            {var
              body=match[3],
              xs=match[2],
              init=_pk_[2],
              f=
               function(x,e)
                {function _pt_(x){return [0,x,e]}
                 return caml_call2(Utils_Option[17],_pt_,x)},
              _pp_=caml_call4(Utils_List[77],0,f,xs,[0,x0,init]),
              s=caml_call1(Utils_List[80],_pp_);
             return caml_call1(substitute(s),body)}}
         break
        }
      return [0,e$0]}
    function f2(expr)
     {switch(expr[0])
       {case 5:
         var _oW_=expr[1],switch$0=0;
         if(typeof _oW_ === "number" || ! (4 === _oW_[0]))
          switch$0 = 1;
         else
          {var _oX_=_oW_[1];
           if(0 === _oX_){var x=expr[2];return x}
           if(1 === _oX_)
            {var _oY_=expr[2][1];
             if(7 === _oY_[0])
              {var _oZ_=_oY_[1];
               if(typeof _oZ_ !== "number" && 1 !== _oZ_[0])
                {var x$0=_oY_[2];return x$0}}}
           else
            {var _o0_=expr[2][1];
             if(7 === _o0_[0])
              {var switch$1=0,_o1_=_o0_[1];
               if(typeof _o1_ !== "number" && 1 !== _o1_[0])
                {var y=_o0_[3];
                 if(2 <= _oX_)return prim1([4,_oX_ - 2 | 0],y);
                 switch$1 = 1}}}}
         break;
        case 7:
         var _o2_=expr[1],switch$2=0;
         if(typeof _o2_ === "number" || 0 === _o2_[0])
          switch$2 = 1;
         else
          {var _o3_=_o2_[1];
           if(0 === _o3_)
            {var x$1=expr[3],r=expr[2];return let_in_var(0,x$1,r)}
           if(1 === _o3_)
            {var _o4_=expr[3][1];
             if(7 === _o4_[0])
              {var _o5_=_o4_[1];
               if(typeof _o5_ !== "number" && 1 !== _o5_[0])
                {var x2=_o4_[3],x1=_o4_[2],a2=_o5_[2],a1=_o5_[1],r$0=expr[2];
                 return let_in_var(0,x1,caml_call2(pair(a1,a2),r$0,x2))}}}
           else
            {var _o6_=expr[3][1];
             if(7 === _o6_[0])
              {var _o7_=_o6_[1],switch$3=0;
               if(typeof _o7_ !== "number" && 1 !== _o7_[0])
                {var
                  x2$0=_o6_[3],
                  x1$0=_o6_[2],
                  a2$0=_o7_[2],
                  a1$0=_o7_[1],
                  r$1=expr[2];
                 if(2 <= _o3_)
                  {var _o8_=prim2([1,_o3_ - 2 | 0],r$1,x2$0);
                   return caml_call2(pair(a1$0,a2$0),x1$0,_o8_)}
                 switch$3 = 1}}}}
         break
        }
      return [0,expr]}
    var
     _hC_=0,
     _hD_=[0,function(_oV_){return preserves(bindings_unique$0,_oV_)},_hC_],
     fold_constants=
      mk
       (cst_fold_constants,
        function(x)
         {var _oU_=Utils_String[42][1],e=caml_call1(cata_expr(f1,x),_oU_);
          return cata_expr(f2,e)},
        _hD_);
    function pp_tree_skel(x)
     {function _oS_(ppf,param){return caml_call2(Stdlib_format[123],ppf,_hE_)}
      function _oT_(ppf){return caml_call2(Stdlib_format[123],ppf,_hF_)}
      return caml_call3(Utils_Binary_tree[40],_oT_,_oS_,x)}
    function _hH_(e,param)
     {if(17 === e[0])
       {var _oG_=e[1],_oH_=_oG_[2];
        if(_oH_)
         {var _oI_=_oH_[1];
          if(4 === _oI_[0])
           {var
             clauses=e[2],
             r_scrutinee=_oI_[1],
             scrutinee=_oG_[1],
             match=caml_call2(Utils_Binary_tree[48],clauses,r_scrutinee);
            if(match)
             {var
               clauses$0=match[1],
               put_cons=
                function(param)
                 {var _oM_=param[1],_oN_=_oM_[1];
                  if(! _oN_)
                   {var _oO_=param[2],_oP_=_oM_[3][1],_oQ_=_oM_[2];
                    if(0 === _oO_[0])
                     {var _oR_=_oO_[1][1];
                      if(_oR_){var cons=_oR_[1];return [0,[0,cons],_oQ_,_oP_]}}}
                  var match=_oM_[3],rhs=match[1],var$0=_oM_[2];
                  return [0,_oN_,var$0,rhs]},
               clauses$1=caml_call2(Utils_Binary_tree[11],put_cons,clauses$0);
              return [0,[17,scrutinee,clauses$1]]}
            var
             _oJ_=print_row(cst$59),
             _oK_=
              caml_call5
               (Stdlib_format[127],_hG_,_oJ_,r_scrutinee,pp_tree_skel,clauses);
            return caml_call1(Stdlib[2],_oK_)}}}
      return [0,map_expr_f(function(_oL_){return _oL_[1]},e)]}
    function f$11(_oF_){return cata_texpr(_hH_,_oF_)}
    var
     _hI_=0,
     infer_constructors=
      mk_t
       (cst_infer_constructors,
        f$11,
        [0,function(_oE_){return preserves(bindings_unique$0,_oE_)},_hI_]);
    function cons(x,xs){return [0,x,xs]}
    function lens(bound,close,param)
     {var expr=param[1];
      function lens$0(x)
       {var
         _oA_=caml_call1(Utils_List[80],x),
         _oB_=caml_call2(Stdlib[37],_oA_,bound);
        return function(_oC_,_oD_){return lens(_oB_,_oC_,_oD_)}}
      switch(expr[0])
       {case 1:
         var
          e2=expr[3],
          e1=expr[2],
          p=expr[1],
          close$0=function(e2){return caml_call1(close,let_in(p,e1,e2))};
         if(0 === p[0])var x=p[1],xs=[0,x,0];else var xs$0=p[1],xs=xs$0;
         return caml_call2(lens$0(xs),close$0,e2);
        case 16:
         var
          e2$0=expr[3],
          e1$0=expr[2],
          rp=expr[1],
          close$1=
           function(e2){return caml_call1(close,match_record(rp,e1$0,e2))};
         return caml_call2
                 (lens$0(caml_call1(Utils_Binary_tree[41],rp)),close$1,e2$0);
        case 17:
         var
          clauses=expr[2],
          e=expr[1],
          _oq_=caml_call1(Utils_Binary_tree[41],clauses),
          _or_=function(param){var rhs=param[3];return 1 - always_fails(rhs)},
          match=caml_call2(Utils_List[40],_or_,_oq_);
         if(match && ! match[2])
          {var
            match$0=match[1],
            rhs=match$0[3],
            var$0=match$0[2],
            close$2=
             function(rhs)
              {function f(c)
                {var rhs$0=c[3],var$0=c[2],cons=c[1];
                 return always_fails(rhs$0)?c:[0,cons,var$0,rhs]}
               return caml_call1
                       (close,
                        match_variant(e,caml_call2(Utils_Binary_tree[11],f,clauses)))};
           return caml_call2(lens$0([0,var$0,0]),close$2,rhs)}
         return [0,bound,[0,expr],close];
        case 21:
         var
          r=expr[3],
          l=expr[2],
          s=expr[1],
          match$1=always_fails(l),
          match$2=always_fails(r);
         if(match$1)
          {if(! match$2)
            {var _os_=function(r){return caml_call1(close,if$0(s,l,r))};
             return caml_call2(lens$0(0),_os_,r)}}
         else
          if(match$2)
           {var _ot_=function(l){return caml_call1(close,if$0(s,l,r))};
            return caml_call2(lens$0(0),_ot_,l)}
         return [0,bound,[0,expr],close];
        case 22:
         var
          r$0=expr[4],
          l$0=expr[3],
          xr=expr[2],
          s$0=expr[1],
          match$3=always_fails(l$0),
          match$4=always_fails(r$0);
         if(match$3)
          {if(! match$4)
            {var
              _ou_=
               function(r){return caml_call1(close,if_none(s$0,l$0,[0,xr,r]))};
             return caml_call2(lens$0(0),_ou_,r$0)}}
         else
          if(match$4)
           {var
             _ov_=
              function(l){return caml_call1(close,if_none(s$0,l,[0,xr,r$0]))};
            return caml_call2(lens$0([0,xr,0]),_ov_,l$0)}
         return [0,bound,[0,expr],close];
        case 23:
         var
          r$1=expr[5],
          xr$0=expr[4],
          l$1=expr[3],
          xl=expr[2],
          s$1=expr[1],
          match$5=always_fails(l$1),
          match$6=always_fails(r$1);
         if(match$5)
          {if(! match$6)
            {var
              _ow_=
               function(r)
                {return caml_call1(close,if_left(s$1,[0,xl,l$1],[0,xr$0,r]))};
             return caml_call2(lens$0([0,xr$0,0]),_ow_,r$1)}}
         else
          if(match$6)
           {var
             _ox_=
              function(l)
               {return caml_call1(close,if_left(s$1,[0,xl,l],[0,xr$0,r$1]))};
            return caml_call2(lens$0([0,xl,0]),_ox_,l$1)}
         return [0,bound,[0,expr],close];
        case 24:
         var
          r$2=expr[5],
          l$2=expr[4],
          xl2=expr[3],
          xl1=expr[2],
          s$2=expr[1],
          match$7=always_fails(l$2),
          match$8=always_fails(r$2);
         if(match$7)
          {if(! match$8)
            {var
              _oy_=
               function(r)
                {return caml_call1(close,if_cons(s$2,[0,xl1,xl2,l$2],r))};
             return caml_call2(lens$0(0),_oy_,r$2)}}
         else
          if(match$8)
           {var
             _oz_=
              function(l)
               {return caml_call1(close,if_cons(s$2,[0,xl1,xl2,l],r$2))};
            return caml_call2(lens$0([0,xl1,[0,xl2,0]]),_oz_,l$2)}
         return [0,bound,[0,expr],close];
        case 30:
         var
          e$0=expr[2],
          xs$1=expr[1],
          close$3=function(e){return caml_call1(close,comment(xs$1,e))};
         return caml_call2(lens$0(0),close$3,e$0);
        default:return [0,bound,[0,expr],close]}}
    function lens_rhs(e){return lens(0,Utils_Control[1],e)}
    function factor_invariant_loop_state(st)
     {function handle_loop(init,xs,ys)
       {function f(i,x,y)
         {if(x)
           {var _op_=y[1];
            if(0 === _op_[0])
             {var y$0=_op_[1],x$0=x[1],switch$0=0;
              if(caml_string_equal(y$0,x$0))
               switch$0 = 1;
              else
               {var switch$1=0;
                if(caml_call2(equal_expr,y,i) && is_pure(i))
                 {switch$0 = 1;switch$1 = 1}}
              if(switch$0)return [0,0,0,0,0,i,[0,[0,x$0,i]]]}}
          var r=fresh(st,cst_r);
          return [0,[0,[0,r]],[0,i],[0,x],[0,y],var$0(r),0]}
        var vars=caml_call5(Utils_List[71],[0,name],f,init,xs,ys);
        function _oi_(param){var r=param[1];return r}
        var rs=caml_call2(Utils_List[78],_oi_,vars);
        function _oj_(param){var i=param[2];return i}
        var init$0=caml_call2(Utils_List[78],_oj_,vars);
        function _ok_(param){var x=param[3];return x}
        var xs$0=caml_call2(Utils_List[78],_ok_,vars);
        function _ol_(param){var y=param[4];return y}
        var ys$0=caml_call2(Utils_List[78],_ol_,vars);
        function _om_(param){var ri=param[5];return ri}
        var ris=caml_call2(Utils_List[20],_om_,vars);
        function _on_(param){var s=param[6];return s}
        var
         s=caml_call2(Utils_List[78],_on_,vars),
         _oo_=caml_call1(Utils_List[4],xs);
        return caml_call1(Utils_List[4],xs$0) < _oo_
                ?[0,[0,rs,init$0,xs$0,ys$0,ris,s]]
                :0}
      function f(expr)
       {switch(expr[0])
         {case 25:
           var _n9_=expr[1];
           if(_n9_)
            {var
              body=expr[3],
              xs=expr[2],
              init=_n9_[2],
              i0=_n9_[1],
              match=lens_rhs(body),
              _n__=match[2][1];
             if(18 === _n__[0])
              {var _n$_=_n__[1];
               if(_n$_)
                {var
                  close_body=match[3],
                  ys=_n$_[2],
                  y0=_n$_[1],
                  match$0=handle_loop(init,xs,ys);
                 if(match$0)
                  {var
                    match$1=match$0[1],
                    s=match$1[6],
                    ris=match$1[5],
                    ys$0=match$1[4],
                    xs$0=match$1[3],
                    init$0=match$1[2],
                    rs=match$1[1],
                    body$0=caml_call1(close_body,vector([0,y0,ys$0])),
                    body$1=caml_call1(substitute(s),body$0),
                    loop$0=loop([0,i0,init$0],xs$0,body$1);
                   return let_in_vector(rs,loop$0,vector(ris))}
                 return [0,expr]}}
             return [0,expr]}
           break;
          case 26:
           var _oa_=expr[1];
           if(_oa_)
            {var _ob_=expr[2];
             if(_ob_)
              {var
                body$2=expr[3],
                xs$1=_ob_[2],
                x0=_ob_[1],
                init$1=_oa_[2],
                i0$0=_oa_[1],
                _oc_=lens_rhs(body$2),
                _od_=_oc_[2][1];
               if(18 === _od_[0])
                {var
                  close_body$0=_oc_[3],
                  ys$1=_od_[1],
                  match$2=handle_loop(init$1,xs$1,ys$1);
                 if(match$2)
                  {var
                    match$3=match$2[1],
                    s$0=match$3[6],
                    ris$0=match$3[5],
                    ys$2=match$3[4],
                    xs$2=match$3[3],
                    init$2=match$3[2],
                    rs$0=match$3[1],
                    body$3=caml_call1(close_body$0,vector(ys$2)),
                    body$4=caml_call1(substitute(s$0),body$3),
                    loop$1=iter_over([0,i0$0,init$2],[0,x0,xs$2],body$4);
                   return let_in_vector(rs$0,loop$1,vector(ris$0))}
                 return [0,expr]}
               return [0,expr]}}
           break;
          case 27:
           var _oe_=expr[1];
           if(_oe_)
            {var _of_=expr[2];
             if(_of_)
              {var
                body$5=expr[3],
                xs$3=_of_[2],
                x0$0=_of_[1],
                init$3=_oe_[2],
                i0$1=_oe_[1],
                match$4=lens_rhs(body$5),
                _og_=match$4[2][1];
               if(18 === _og_[0])
                {var _oh_=_og_[1];
                 if(_oh_)
                  {var
                    close_body$1=match$4[3],
                    ys$3=_oh_[2],
                    y0$0=_oh_[1],
                    match$5=handle_loop(init$3,xs$3,ys$3);
                   if(match$5)
                    {var
                      match$6=match$5[1],
                      s$1=match$6[6],
                      ris$1=match$6[5],
                      ys$4=match$6[4],
                      xs$4=match$6[3],
                      init$4=match$6[2],
                      rs$1=match$6[1],
                      r0=fresh(st,cst_r$0),
                      body$6=caml_call1(close_body$1,vector([0,y0$0,ys$4])),
                      body$7=caml_call1(substitute(s$1),body$6),
                      loop$2=map_over([0,i0$1,init$4],[0,x0$0,xs$4],body$7);
                     return let_in_vector
                             ([0,[0,r0],rs$1],loop$2,vector([0,var$0(r0),ris$1]))}
                   return [0,expr]}}
               return [0,expr]}}
           break
          }
        return [0,expr]}
      var
       _n5_=0,
       _n6_=[0,function(_n8_){return preserves(bindings_unique$0,_n8_)},_n5_];
      return mk(name,function(_n7_){return cata_expr(f,_n7_)},_n6_)}
    function unused_loop_state(st)
     {function f(expr)
       {if(1 === expr[0])
         {var _nz_=expr[1];
          if(0 !== _nz_[0])
           {var _nA_=_nz_[1],switch$0=0;
            if(_nA_)
             {var _nB_=expr[2][1],_nC_=_nA_[2],_nD_=_nA_[1];
              switch(_nB_[0])
               {case 27:
                 var _nW_=_nB_[1];
                 if(_nW_)
                  {var _nX_=_nB_[2];
                   if(_nX_)
                    {var
                      e$1=expr[3],
                      step$1=_nB_[3],
                      xs$3=_nX_[2],
                      x0$0=_nX_[1],
                      init$3=_nW_[2],
                      i0$1=_nW_[1],
                      f$1=
                       function(r,i,match)
                        {if(! r && ! match && is_pure(i))return _hL_;
                         var t=fresh(st,cst_t$3);
                         return [0,[0,r],[0,i],[0,match],[0,t],[0,var$0(t)]]},
                      vars$1=
                       caml_call5(Utils_List[71],[0,name$0],f$1,_nC_,init$3,xs$3),
                      _nY_=function(param){var r=param[1];return r},
                      rs$1=[0,_nD_,caml_call2(Utils_List[78],_nY_,vars$1)],
                      _nZ_=function(param){var i=param[2];return i},
                      init$4=[0,i0$1,caml_call2(Utils_List[78],_nZ_,vars$1)],
                      t0$1=fresh(st,cst_t$4),
                      _n0_=function(param){var x=param[3];return x},
                      xs$4=[0,x0$0,caml_call2(Utils_List[78],_n0_,vars$1)],
                      _n1_=function(param){var t=param[4];return t},
                      ts$1=[0,[0,t0$1],caml_call2(Utils_List[20],_n1_,vars$1)],
                      _n2_=function(param){var u=param[5];return u},
                      _n3_=caml_call2(Utils_List[78],_n2_,vars$1),
                      us$1=[0,var$0(t0$1),_n3_],
                      _n4_=caml_call1(Utils_List[4],vars$1);
                     return caml_call1(Utils_List[4],xs$4) < _n4_
                             ?let_in_vector
                               (rs$1,
                                map_over
                                 (init$4,xs$4,let_in_vector(ts$1,step$1,vector(us$1))),
                                e$1)
                             :[0,expr]}}
                 break;
                case 25:
                case 26:switch$0 = 1;break
                }}
            else
             switch$0 = 1;
            if(switch$0)
             {var _nE_=expr[2][1];
              switch(_nE_[0])
               {case 25:
                 var _nF_=_nE_[1];
                 if(_nF_)
                  {var
                    e=expr[3],
                    step=_nE_[3],
                    xs=_nE_[2],
                    init=_nF_[2],
                    i0=_nF_[1],
                    f=
                     function(r,i,match)
                      {if(! r && ! match && is_pure(i))return _hJ_;
                       var t=fresh(st,cst_t);
                       return [0,[0,r],[0,i],[0,match],[0,t],[0,var$0(t)]]},
                    vars=caml_call5(Utils_List[71],[0,name$0],f,_nA_,init,xs),
                    _nG_=function(param){var r=param[1];return r},
                    rs=caml_call2(Utils_List[78],_nG_,vars),
                    _nH_=function(param){var i=param[2];return i},
                    init$0=[0,i0,caml_call2(Utils_List[78],_nH_,vars)],
                    t0=fresh(st,cst_t$0),
                    _nI_=function(param){var x=param[3];return x},
                    xs$0=caml_call2(Utils_List[78],_nI_,vars),
                    _nJ_=function(param){var t=param[4];return t},
                    ts=[0,[0,t0],caml_call2(Utils_List[20],_nJ_,vars)],
                    _nK_=function(param){var u=param[5];return u},
                    _nL_=caml_call2(Utils_List[78],_nK_,vars),
                    us=[0,var$0(t0),_nL_],
                    _nM_=caml_call1(Utils_List[4],vars);
                   return caml_call1(Utils_List[4],xs$0) < _nM_
                           ?let_in_vector
                             (rs,loop(init$0,xs$0,let_in_vector(ts,step,vector(us))),e)
                           :[0,expr]}
                 break;
                case 26:
                 var _nN_=_nE_[1];
                 if(_nN_)
                  {var _nO_=_nE_[2];
                   if(_nO_)
                    {var
                      e$0=expr[3],
                      step$0=_nE_[3],
                      xs$1=_nO_[2],
                      x0=_nO_[1],
                      init$1=_nN_[2],
                      i0$0=_nN_[1],
                      f$0=
                       function(r,i,match)
                        {if(! r && ! match && is_pure(i))return _hK_;
                         var t=fresh(st,cst_t$1);
                         return [0,[0,r],[0,i],[0,match],[0,t],[0,var$0(t)]]},
                      vars$0=
                       caml_call5(Utils_List[71],[0,name$0],f$0,_nA_,init$1,xs$1),
                      _nP_=function(param){var r=param[1];return r},
                      rs$0=caml_call2(Utils_List[78],_nP_,vars$0),
                      _nQ_=function(param){var i=param[2];return i},
                      init$2=[0,i0$0,caml_call2(Utils_List[78],_nQ_,vars$0)],
                      t0$0=fresh(st,cst_t$2),
                      _nR_=function(param){var x=param[3];return x},
                      xs$2=[0,x0,caml_call2(Utils_List[78],_nR_,vars$0)],
                      _nS_=function(param){var t=param[4];return t},
                      ts$0=[0,[0,t0$0],caml_call2(Utils_List[20],_nS_,vars$0)],
                      _nT_=function(param){var u=param[5];return u},
                      _nU_=caml_call2(Utils_List[78],_nT_,vars$0),
                      us$0=[0,var$0(t0$0),_nU_],
                      _nV_=caml_call1(Utils_List[4],vars$0);
                     return caml_call1(Utils_List[4],xs$2) < _nV_
                             ?let_in_vector
                               (rs$0,
                                iter_over
                                 (init$2,xs$2,let_in_vector(ts$0,step$0,vector(us$0))),
                                e$0)
                             :[0,expr]}}
                 break
                }}}}
        return [0,expr]}
      var
       _nv_=0,
       _nw_=[0,function(_ny_){return preserves(bindings_unique$0,_ny_)},_nv_];
      return mk(name$0,function(_nx_){return cata_expr(f,_nx_)},_nw_)}
    function unify_fields(x,match)
     {if(x && match)
       {var y=match[1],x$0=x[1];
        return caml_equal(x$0,y)
                ?[0,x$0]
                :caml_call1(Stdlib[2],cst_unify_fields)}
      return match?match:x}
    function common_parts(x,y)
     {var _nj_=caml_call2(Utils_Binary_tree[49],x,y);
      function _nk_(param)
       {var _nm_=param[1];
        if(0 === _nm_[0])
         {var _nn_=_nm_[1],_no_=_nn_[2],_np_=_nn_[1],switch$0=0;
          if(_no_)
           {var _nq_=param[2],_nr_=_no_[1];
            if(0 === _nq_[0])
             {var _ns_=_nq_[1],_nt_=_ns_[2];
              if(_nt_)
               {var y=_nt_[1],fld_y=_ns_[1];
                if(caml_call2(equal_expr,_nr_,y))
                 return [0,[0,unify_fields(_np_,fld_y),[0,_nr_]]]}}
            else
             switch$0 = 1}
          if(! switch$0)
           {var _nu_=param[2];
            if(0 === _nu_[0])
             {var match=_nu_[1],fld_y$0=match[1];
              return [0,[0,unify_fields(_np_,fld_y$0),0]]}}}
        return _hM_}
      var _nl_=caml_call2(Utils_Binary_tree[11],_nk_,_nj_);
      return caml_call1(Utils_Binary_tree[35],_nl_)}
    function factorise_clauses(st)
     {function f(expr)
       {if(17 === expr[0])
         {var
           clauses=expr[2],
           scrutinee=expr[1],
           _mR_=
            function(results)
             {function _mW_(results)
               {function _mY_(param)
                 {var
                   _m0_=caml_call1(Utils_Control[5],Utils_Option[13]),
                   _m1_=caml_call1(Utils_Binary_tree[11],_m0_),
                   _m2_=caml_call2(Utils_Binary_tree[11],_m1_,results),
                   shared=caml_call2(Utils_Binary_tree[42],common_parts,_m2_);
                  function _m3_(x){return caml_call1(Utils_Option[47],x[2])}
                  var b=caml_call2(Utils_Binary_tree[54],_m3_,shared);
                  function _m4_(param)
                   {function _m6_(param)
                     {var _nh_=param[2],_ni_=param[1];
                      if(_nh_){var x=_nh_[1];return [1,[0,_ni_,x]]}
                      return [0,fresh(st,cst_o)]}
                    var
                     out=caml_call2(Utils_Binary_tree[11],_m6_,shared),
                     _m7_=
                      caml_call2(Utils_Binary_tree[46],Utils_Control[14][1],out),
                     _m8_=caml_call1(Utils_Binary_tree[11],Utils_Option[13]),
                     x=caml_call3(Utils_Option[12],_hO_,_m8_,_m7_),
                     pat=
                      caml_call2(Utils_Binary_tree[11],Utils_Control[14][3],out);
                    function prune_rhs(rhs)
                     {var _ng_=rhs[1];
                      switch(_ng_[0])
                       {case 6:return rhs;
                        case 11:
                         var
                          r=_ng_[1],
                          _nb_=caml_call2(Utils_Binary_tree[48],pat,r),
                          _nc_=caml_call2(Utils_Option[48],_hN_,_nb_),
                          _nd_=
                           function(param){var x=param[2],p=param[1];return p?[0,x]:0},
                          _ne_=caml_call2(Utils_Binary_tree[46],_nd_,_nc_),
                          _nf_=caml_call2(Utils_Option[17],Utils_Binary_tree[35],_ne_);
                         return singleton_or_record
                                 (caml_call2(Utils_Option[45],[0,[0,0,unit]],_nf_));
                        default:throw [0,Assert_failure,_hP_]}}
                    function _m9_(_na_){return map_match_clause(prune_rhs,_na_)}
                    var
                     clauses$0=
                      caml_call2(Utils_Binary_tree[11],_m9_,clauses);
                    function _m__(param)
                     {if(0 === param[0]){var x=param[1];return [0,0,var$0(x)]}
                      var e=param[1];
                      return e}
                    var
                     out$0=caml_call2(Utils_Binary_tree[11],_m__,out),
                     _m$_=singleton_or_record(out$0);
                    return [0,
                            match_record(x,match_variant(scrutinee,clauses$0),_m$_)]}
                  var _m5_=b?_hQ_:0;
                  return caml_call2(Utils_Option[39][1],_m5_,_m4_)}
                var _mZ_=mostly_fails(clauses)?0:_hR_;
                return caml_call2(Utils_Option[39][1],_mZ_,_mY_)}
              var
               _mX_=
                caml_call2(Utils_Binary_tree[46],Utils_Control[1],results);
              return caml_call2(Utils_Option[39][1],_mX_,_mW_)},
           _mS_=
            function(param)
             {var _mV_=param[3][1];
              switch(_mV_[0])
               {case 6:return _hS_;
                case 11:var r=_mV_[1];return [0,[0,r]];
                default:return 0}},
           _mT_=caml_call2(TO[1],_mS_,clauses),
           _mU_=caml_call2(Utils_Option[39][1],_mT_,_mR_);
          return caml_call2(Utils_Option[45],[0,expr],_mU_)}
        return [0,expr]}
      var
       _mN_=0,
       _mO_=[0,function(_mQ_){return preserves(bindings_unique$0,_mQ_)},_mN_];
      return mk
              (cst_factorise_clauses,
               function(_mP_){return cata_expr(f,_mP_)},
               _mO_)}
    function f$12(expr)
     {if(17 === expr[0])
       {var _mE_=expr[2],_mF_=expr[1];
        if(0 !== _mE_[0])
         {var _mG_=_mE_[1];
          if(0 === _mG_[0])
           {var _mH_=_mG_[1],_mI_=_mH_[1];
            if(_mI_ && ! caml_string_notequal(_mI_[1],cst_True) && ! _mH_[2])
             {var _mJ_=_mE_[2],_mK_=_mH_[3];
              if(0 === _mJ_[0])
               {var _mL_=_mJ_[1],_mM_=_mL_[1];
                if
                 (_mM_
                  &&
                  !
                  caml_string_notequal(_mM_[1],cst_False)
                  &&
                  !
                  _mL_[2])
                 {var r2=_mL_[3];
                  return caml_call2(equal_expr,r2,false$0)
                          ?prim2(7,_mF_,_mK_)
                          :caml_call2(equal_expr,_mK_,true$0)
                            ?prim2(8,_mF_,_mK_)
                            :[0,expr]}}}}}}
      return [0,expr]}
    var
     _hT_=0,
     _hU_=[0,function(_mD_){return preserves(bindings_unique$0,_mD_)},_hT_],
     reify_booleans=
      mk(cst_reify_booleans,function(_mC_){return cata_expr(f$12,_mC_)},_hU_);
    function two_clauses(c1,c2){return [1,[0,c1],[0,c2]]}
    function f$13(expr)
     {switch(expr[0])
       {case 22:
         var r=expr[4],l=expr[3],xr=expr[2],scrutinee=expr[1];
         return match_variant
                 (scrutinee,two_clauses([0,_hW_,0,l],[0,_hV_,xr,r]));
        case 23:
         var
          r$0=expr[5],
          xr$0=expr[4],
          l$0=expr[3],
          xl=expr[2],
          scrutinee$0=expr[1];
         return match_variant
                 (scrutinee$0,two_clauses([0,0,xl,l$0],[0,0,xr$0,r$0]));
        default:return [0,expr]}}
    var
     _hX_=0,
     _hY_=[0,function(_mB_){return preserves(bindings_unique$0,_mB_)},_hX_],
     unfold_ifs=
      mk(cst_unfold_ifs,function(_mA_){return cata_expr(f$13,_mA_)},_hY_);
    function f$14(expr)
     {if(1 === expr[0])
       {var _mz_=expr[2][1];
        if(21 === _mz_[0])
         {var e=expr[3],b=_mz_[3],a=_mz_[2],c=_mz_[1],x=expr[1];
          if(always_fails(b))return [0,[21,c,[0,[1,x,a,e]],b]]}}
      return [0,expr]}
    var
     _hZ_=0,
     _h0_=[0,function(_my_){return preserves(bindings_unique$0,_my_)},_hZ_],
     nest_ifs=
      mk(cst_nest_ifs,function(_mx_){return cata_expr(f$14,_mx_)},_h0_);
    function f$15(expr)
     {switch(expr[0])
       {case 21:
         var
          y=expr[3],
          x=expr[2],
          c=expr[1],
          match=lens_rhs(x),
          close_x=match[3],
          x$0=match[2],
          match$0=lens_rhs(y),
          close_y=match$0[3],
          y$0=match$0[2],
          _mr_=x$0[1],
          _ms_=y$0[1];
         if(6 === _mr_[0] && ! _mr_[1] && 6 === _ms_[0] && ! _ms_[1])
          {var
            y$1=_ms_[2],
            x$1=_mr_[2],
            _mt_=caml_call1(close_y,y$1),
            cond=if$0(c,caml_call1(close_x,x$1),_mt_);
           return [0,[6,0,cond]]}
         return [0,expr];
        case 23:
         var
          y$2=expr[5],
          r=expr[4],
          x$2=expr[3],
          l=expr[2],
          c$0=expr[1],
          match$1=lens_rhs(x$2),
          close_x$0=match$1[3],
          x$3=match$1[2],
          match$2=lens_rhs(y$2),
          close_y$0=match$2[3],
          y$3=match$2[2],
          _mu_=x$3[1],
          _mv_=y$3[1];
         if(6 === _mu_[0] && ! _mu_[1] && 6 === _mv_[0] && ! _mv_[1])
          {var
            y$4=_mv_[2],
            x$4=_mu_[2],
            _mw_=[0,r,caml_call1(close_y$0,y$4)],
            cond$0=if_left(c$0,[0,l,caml_call1(close_x$0,x$4)],_mw_);
           return [0,[6,0,cond$0]]}
         return [0,expr];
        default:return [0,expr]}}
    var
     _h1_=0,
     _h2_=[0,function(_mq_){return preserves(bindings_unique$0,_mq_)},_h1_],
     factorise_failwith=
      mk
       (cst_factorise_failwith,
        function(_mp_){return cata_expr(f$15,_mp_)},
        _h2_);
    function f$16(expr)
     {if(21 === expr[0])
       {var _mo_=expr[2][1];
        if(1 === _mo_[0])
         {var b=expr[3],e=_mo_[3],a=_mo_[2],x=_mo_[1],c=expr[1];
          if(always_fails(b))return [0,[1,x,[0,[21,c,a,b]],e]]}}
      return [0,expr]}
    var
     _h3_=0,
     _h4_=[0,function(_mn_){return preserves(bindings_unique$0,_mn_)},_h3_],
     flatten_ifs=
      mk(cst_flatten_ifs,function(_mm_){return cata_expr(f$16,_mm_)},_h4_);
    function unvectorize_conds(st)
     {function un1(e)
       {if(6 === e[1][0])return e;
        var s=fresh(st,cst_s);
        return let_in_vector([0,[0,s],0],e,var$0(s))}
      function f(e,tys)
       {if(tys)
         {var _me_=tys[1];
          if(5 === _me_[0])
           {var _mf_=_me_[1];
            if(_mf_ && ! _mf_[2])
             switch(e[0])
              {case 17:
                var
                 clauses=e[2],
                 match=e[1],
                 scrutinee=match[1],
                 _mg_=function(param){var b=param[1];return un1(b)},
                 _mh_=function(_mk_){return map_match_clause(_mg_,_mk_)},
                 clauses$0=caml_call2(Utils_Binary_tree[11],_mh_,clauses);
                return vector([0,match_variant(scrutinee,clauses$0),0]);
               case 21:
                var r=e[3][1],l=e[2][1],match$0=e[1],c=match$0[1],_mi_=un1(r);
                return vector([0,if$0(c,un1(l),_mi_),0]);
               default:return [0,map_expr_f(function(_ml_){return _ml_[1]},e)]}}}
        return [0,map_expr_f(function(_mj_){return _mj_[1]},e)]}
      var
       _ma_=0,
       _mb_=[0,function(_md_){return preserves(bindings_unique$0,_md_)},_ma_];
      return mk_t
              (cst_unvectorize_conds,
               function(_mc_){return cata_texpr(f,_mc_)},
               _mb_)}
    function f$17(expr)
     {if(11 === expr[0])
       {var
         xs=expr[1],
         pair=function(a,b){return tuple([0,a,[0,b,0]])},
         _l__=function(_l$_){return _l$_[2]};
        return caml_call3(Utils_Binary_tree[6],_l__,pair,xs)}
      return [0,expr]}
    var
     _h5_=0,
     _h6_=[0,function(_l9_){return preserves(bindings_unique$0,_l9_)},_h5_],
     binarize_records=
      mk
       (cst_binarize_records,function(_l8_){return cata_expr(f$17,_l8_)},_h6_);
    function f$18(e,t)
     {if(9 === e[0])
       {var _l3_=e[2],_l4_=_l3_[2];
        if(_l4_)
         {var _l5_=_l4_[1];
          if(3 === _l5_[0])
           {var
             r=_l5_[1],
             e$0=_l3_[1],
             fld=e[1],
             proj=
              function(r,p,other)
               {var r$0=r,p$0=p,other$0=other;
                for(;;)
                 {if(0 === r$0[0])
                   {var _l7_=r$0[1][1];
                    if(_l7_)
                     {var n=_l7_[1];if(caml_string_equal(fld,n))return p$0}
                    return caml_call1(other$0,0)}
                  var
                   y=r$0[2],
                   r$1=r$0[1],
                   other$2=
                    function(other,p,y)
                     {function other$0(param){return proj(y,[0,[5,1,p]],other)}
                      return other$0},
                   other$1=other$2(other$0,p$0,y),
                   p$1=[0,[5,0,p$0]],
                   r$0=r$1,
                   p$0=p$1,
                   other$0=other$1;
                  continue}};
            return proj(r,e$0,function(param){throw [0,Assert_failure,_h7_]})}}}
      return [0,map_expr_f(function(_l6_){return _l6_[1]},e)]}
    var
     _h8_=0,
     _h9_=[0,function(_l2_){return preserves(bindings_unique$0,_l2_)},_h8_],
     binarize_projs=
      mk_t
       (cst_binarize_projs,function(_l1_){return cata_texpr(f$18,_l1_)},_h9_);
    function drop_vars(xs)
     {var _lZ_=caml_call1(Utils_String[41][22],xs);
      function _l0_(x,e){return let_in_var(0,var$0(x),e)}
      return caml_call2(Utils_List[26],_l0_,_lZ_)}
    function cond(bound_l,param,bound_r,_lR_)
     {var
       r=_lR_[2],
       frees_r=_lR_[1],
       l=param[2],
       frees_l=param[1],
       _lS_=caml_call1(Utils_List[80],bound_l),
       xsl=caml_call1(Utils_String[41][36],_lS_),
       _lT_=caml_call1(Utils_List[80],bound_r),
       xsr=caml_call1(Utils_String[41][36],_lT_),
       _lU_=caml_call2(Utils_String[41][10],frees_r,xsr),
       _lV_=caml_call2(Utils_String[41][7],xsl,_lU_),
       dl=caml_call2(Utils_String[41][10],_lV_,frees_l),
       _lW_=caml_call2(Utils_String[41][10],frees_l,xsl),
       _lX_=caml_call2(Utils_String[41][7],xsr,_lW_),
       dr=caml_call2(Utils_String[41][10],_lX_,frees_r),
       _lY_=caml_call1(drop_vars(dr),r);
      return [0,caml_call1(drop_vars(dl),l),_lY_]}
    function f$19(x$1)
     {switch(x$1[0])
       {case 1:
         var
          _lA_=x$1[3],
          e2=_lA_[2],
          frees2=_lA_[1],
          match=x$1[2],
          e1=match[2],
          p=x$1[1];
         if(0 === p[0])
          var
           x=p[1],
           _lB_=
            caml_call3
             (Utils_Option[12],Utils_String[41][1],Utils_String[41][5],x);
         else
          var
           xs=p[1],
           _lz_=caml_call1(Utils_List[80],xs),
           _lB_=caml_call1(Utils_String[41][36],_lz_);
         var
          d=caml_call2(Utils_String[41][10],_lB_,frees2),
          _lL_=[1,p,e1,caml_call1(drop_vars(d),e2)];
         break;
        case 2:
         var
          match$0=x$1[4],
          body=match$0[2],
          frees=match$0[1],
          t2=x$1[3],
          t1=x$1[2],
          x$0=x$1[1],
          _lC_=
           caml_call3
            (Utils_Option[12],Utils_String[41][1],Utils_String[41][5],x$0),
          d$0=caml_call2(Utils_String[41][10],_lC_,frees),
          _lL_=[2,x$0,t1,t2,caml_call1(drop_vars(d$0),body)];
         break;
        case 17:throw [0,Assert_failure,_h__];
        case 21:
         var
          r=x$1[3],
          l=x$1[2],
          match$1=x$1[1],
          s=match$1[2],
          match$2=cond(0,l,0,r),
          r$0=match$2[2],
          l$0=match$2[1],
          _lL_=[21,s,l$0,r$0];
         break;
        case 22:
         var
          r$1=x$1[4],
          l$1=x$1[3],
          xr=x$1[2],
          match$3=x$1[1],
          s$0=match$3[2],
          match$4=cond(0,l$1,[0,xr,0],r$1),
          r$2=match$4[2],
          l$2=match$4[1],
          _lL_=[22,s$0,xr,l$2,r$2];
         break;
        case 23:
         var
          r$3=x$1[5],
          xr$0=x$1[4],
          l$3=x$1[3],
          xl=x$1[2],
          match$5=x$1[1],
          s$1=match$5[2],
          match$6=cond([0,xl,0],l$3,[0,xr$0,0],r$3),
          r$4=match$6[2],
          l$4=match$6[1],
          _lL_=[23,s$1,xl,l$4,xr$0,r$4];
         break;
        case 24:
         var
          r$5=x$1[5],
          l$5=x$1[4],
          xsl=x$1[3],
          xl$0=x$1[2],
          match$7=x$1[1],
          s$2=match$7[2],
          match$8=cond([0,xl$0,[0,xsl,0]],l$5,0,r$5),
          r$6=match$8[2],
          l$6=match$8[1],
          _lL_=[24,s$2,xl$0,xsl,l$6,r$6];
         break;
        case 25:
         var
          match$9=x$1[3],
          step=match$9[2],
          frees$0=match$9[1],
          rp=x$1[2],
          init=x$1[1],
          _lD_=caml_call1(Utils_List[80],rp),
          _lE_=caml_call1(Utils_String[41][36],_lD_),
          d$1=caml_call2(Utils_String[41][10],_lE_,frees$0),
          _lF_=caml_call1(drop_vars(d$1),step),
          _lG_=function(_lP_){return _lP_[2]},
          _lL_=[25,caml_call2(Utils_List[20],_lG_,init),rp,_lF_];
         break;
        case 26:
         var
          match$10=x$1[3],
          body$0=match$10[2],
          frees$1=match$10[1],
          xs$0=x$1[2],
          init$0=x$1[1],
          _lH_=caml_call1(Utils_List[80],xs$0),
          _lI_=caml_call1(Utils_String[41][36],_lH_),
          d$2=caml_call2(Utils_String[41][10],_lI_,frees$1),
          _lJ_=caml_call1(drop_vars(d$2),body$0),
          _lK_=function(_lO_){return _lO_[2]},
          _lL_=[26,caml_call2(Utils_List[20],_lK_,init$0),xs$0,_lJ_];
         break;
        default:var _lL_=map_expr_f(function(_lQ_){return _lQ_[2]},x$1)}
      var _lM_=[0,_lL_];
      return [0,
              free_vars_f(map_expr_f(function(_lN_){return _lN_[1]},x$1)),
              _lM_]}
    function f$20(e)
     {var match=cata_expr(f$19,e),r=match[2],fr=match[1];
      return caml_call2(Utils_String[41][3],cst_ps0,fr)
              ?r
              :caml_call1
                (drop_vars(caml_call1(Utils_String[41][5],cst_ps0$0)),r)}
    var
     _h$_=0,
     drop_unused=
      mk
       (cst_drop_unused,
        f$20,
        [0,function(_ly_){return preserves(bindings_unique$0,_ly_)},_h$_]);
    function unfold_stack_ops(full)
     {function f(expr)
       {if(1 === expr[0])
         {var _la_=expr[1];
          if(0 !== _la_[0])
           {var _lb_=_la_[1],switch$0=0;
            if(_lb_)
             {var _lc_=_lb_[1],switch$1=0;
              if(! _lc_)
               {var _lv_=expr[2][1];
                if(10 === _lv_[0])
                 {var _lw_=_lv_[1],_lx_=_lb_[2];
                  if(typeof _lw_ !== "number")
                   {if(0 === _lw_[0])
                     {var rhs$4=expr[3],es$4=_lv_[2];
                      return let_in_vector(_lx_,vector(es$4),rhs$4)}
                    switch$0 = 1;
                    switch$1 = 1}}
                else
                 switch$1 = 1}
              if(! switch$1)
               {var _ld_=_lb_[2],_le_=expr[2][1];
                if(10 === _le_[0])
                 {var _lf_=_le_[1];
                  if(typeof _lf_ === "number")
                   {if(_ld_)
                     {var
                       rhs=expr[3],
                       match=expr[2][1],
                       es=match[2],
                       xs=_ld_[2],
                       x2=_ld_[1],
                       switch$2=0;
                      if
                       (!
                        full
                        &&
                        !
                        caml_call2(Utils_List[32],Utils_Option[46],_lb_))
                       switch$2 = 1;
                      if(! switch$2)
                       return let_in_vector([0,x2,[0,_lc_,xs]],vector(es),rhs)}}
                  else
                   {if(0 === _lf_[0])
                     {var
                       rhs$0=expr[3],
                       es$0=_le_[2],
                       n=_lf_[1],
                       _lg_=caml_call3(Utils_List[65],0,n - 1 | 0,_ld_),
                       _lh_=_lg_[2],
                       _li_=_lg_[1];
                      if(_lh_)
                       {var lo=_lh_[2],x=_lh_[1];
                        if(x)
                         {var x$0=x[1];
                          if(full)
                           {var _lj_=let_in_var(_lc_,var$0(x$0),rhs$0);
                            return let_in_vector(_ld_,vector(es$0),_lj_)}
                          return [0,expr]}
                        var _lk_=vector(es$0);
                        return let_in_vector
                                (caml_call2(Stdlib[37],_li_,[0,_lc_,lo]),_lk_,rhs$0)}
                      throw [0,Assert_failure,_ia_]}
                    switch$0 = 1}}}}
            else
             switch$0 = 1;
            if(switch$0)
             {var _ll_=expr[2][1];
              if(10 === _ll_[0])
               {var _lm_=_ll_[1],switch$3=0;
                if(typeof _lm_ === "number")
                 switch$3 = 1;
                else
                 switch(_lm_[0])
                  {case 0:switch$3 = 1;break;
                   case 1:
                    var rhs$1=expr[3],es$1=_ll_[2],n$0=_lm_[1],switch$4=0;
                    if
                     (!
                      full
                      &&
                      !
                      caml_call2(Utils_List[32],Utils_Option[46],_lb_))
                     switch$4 = 1;
                    if(! switch$4)
                     {var
                       _ln_=caml_call3(Utils_List[65],[0,err],n$0 + 1 | 0,_lb_),
                       _lo_=_ln_[1];
                      if(_lo_)
                       {var xs2=_ln_[2],xs1=_lo_[2],x0=_lo_[1],_lp_=vector(es$1);
                        return let_in_vector
                                (caml_call2(Stdlib[37],xs1,[0,x0,xs2]),_lp_,rhs$1)}
                      throw [0,Assert_failure,_ib_]}
                    break;
                   case 2:
                    var rhs$2=expr[3],es$2=_ll_[2],n$1=_lm_[1],switch$5=0;
                    if
                     (!
                      full
                      &&
                      !
                      caml_call2(Utils_List[32],Utils_Option[46],_lb_))
                     switch$5 = 1;
                    if(! switch$5)
                     {var
                       _lq_=caml_call3(Utils_List[65],[0,err],n$1,_lb_),
                       _lr_=_lq_[2];
                      if(_lr_)
                       {var
                         xs2$0=_lr_[2],
                         x$1=_lr_[1],
                         xs1$0=_lq_[1],
                         _ls_=vector(es$2);
                        return let_in_vector
                                (caml_call2(Stdlib[37],[0,x$1,xs1$0],xs2$0),_ls_,rhs$2)}
                      throw [0,Assert_failure,_ic_]}
                    break;
                   default:
                    var
                     rhs$3=expr[3],
                     es$3=_ll_[2],
                     n$2=_lm_[1],
                     _lt_=vector(es$3),
                     _lu_=caml_call2(Utils_List[84],n$2,0);
                    return let_in_vector
                            (caml_call2(Stdlib[37],_lu_,_lb_),_lt_,rhs$3)}}}}}
        return [0,expr]}
      var
       _k8_=0,
       _k9_=[0,function(_k$_){return pre_post(bindings_unique$0,_k$_)},_k8_];
      return mk
              (cst_unfold_stack_ops,
               function(_k__){return cata_expr(f,_k__)},
               _k9_)}
    function f$21(expr)
     {if(1 === expr[0])
       {var _k5_=expr[1];
        if(0 !== _k5_[0])
         {var _k6_=expr[2][1];
          if(10 === _k6_[0])
           {var e=expr[3],es=_k6_[2],op=_k6_[1],xs=_k5_[1];
            if(typeof op === "number")
             var match=_id_;
            else
             switch(op[0])
              {case 0:var n=op[1],match=[0,n,n + 1 | 0];break;
               case 1:var n$0=op[1],match=[0,n$0 + 1 | 0,n$0 + 1 | 0];break;
               case 2:var n$1=op[1],match=[0,n$1 + 1 | 0,n$1 + 1 | 0];break;
               default:var n$2=op[1],match=[0,n$2,0]}
            var a_out=match[2],a_in=match[1];
            if(a_out < caml_call1(Utils_List[4],xs))
             {var
               match$0=caml_call3(Utils_List[65],[0,err$0],a_in,es),
               es_lo=match$0[2],
               es_hi=match$0[1],
               match$1=caml_call3(Utils_List[65],[0,err$0],a_out,xs),
               xs_lo=match$1[2],
               xs_hi=match$1[1],
               _k7_=let_in_vector(xs_lo,vector(es_lo),e);
              return let_in_vector(xs_hi,stack_op(op,es_hi),_k7_)}
            return [0,expr]}}}
      return [0,expr]}
    var
     _ie_=0,
     _if_=[0,function(_k4_){return pre_post(bindings_unique$0,_k4_)},_ie_],
     chop_stack_ops=
      mk(cst_chop_stack_ops,function(_k3_){return cata_expr(f$21,_k3_)},_if_),
     No_label=[248,cst_Michel_Transformer_No_labe,runtime.caml_fresh_oo_id(0)];
    function tree_of_record(tree,e)
     {function leaf(param)
       {if(param){var fld=param[1];return proj_field(fld,e)}throw No_label}
      try
       {var
         _k0_=pair(0,0),
         _k1_=caml_call3(Utils_Binary_tree[6],leaf,_k0_,tree);
        return _k1_}
      catch(_k2_)
       {_k2_ = caml_wrap_exception(_k2_);
        if(_k2_ === No_label)return e;
        throw _k2_}}
    function f$22(expr)
     {if(30 === expr[0]){var e=expr[2];return e}return [0,expr]}
    var
     _ih_=0,
     _ii_=[0,function(_kZ_){return preserves(bindings_unique$0,_kZ_)},_ih_],
     erase_comments=
      mk(cst_tuplefy,function(_kY_){return cata_expr(f$22,_kY_)},_ii_);
    function f$23(expr)
     {if(11 === expr[0])
       {var
         r=expr[1],
         _kU_=caml_call1(Utils_Binary_tree[41],r),
         _kV_=
          function(param)
           {var lbl=param[1];return caml_call1(Utils_Option[46],lbl)};
        if(caml_call2(Utils_List[32],_kV_,_kU_))
         {var _kW_=pair(0,0),_kX_=function(param){var t=param[2];return t};
          return caml_call3(Utils_Binary_tree[6],_kX_,_kW_,r)}}
      return [0,expr]}
    var
     _ij_=0,
     _ik_=[0,function(_kT_){return preserves(bindings_unique$0,_kT_)},_ij_],
     tuplefy=
      mk(cst_tuplefy$0,function(_kS_){return cata_expr(f$23,_kS_)},_ik_);
    function f$24(expr)
     {switch(expr[0])
       {case 5:
         var _kQ_=expr[1];
         if(typeof _kQ_ !== "number" && 5 === _kQ_[0]){var x=expr[2];return x}
         break;
        case 20:
         if(2 === expr[1])
          {var x$0=expr[2],_kR_=[0,prim1(1,x$0),0];
           return vector([0,prim1(0,x$0),_kR_])}
         break
        }
      return [0,expr]}
    var
     _il_=0,
     _im_=[0,function(_kP_){return preserves(bindings_unique$0,_kP_)},_il_],
     unfold_unpair=
      mk(cst_unfold_unpair,function(_kO_){return cata_expr(f$24,_kO_)},_im_);
    function f$25(expr)
     {switch(expr[0])
       {case 7:
         var _kx_=expr[1];
         if(typeof _kx_ === "number" && 14 === _kx_)
          {var _ky_=expr[3][1];
           if(0 === _ky_[0])
            {var _kz_=expr[2];
             if(! caml_string_notequal(_ky_[1],cst_rev_ops$1))return _kz_}}
         break;
        case 26:
         var _kA_=expr[1];
         if(_kA_)
          {var _kB_=_kA_[2];
           if(_kB_)
            {var _kC_=_kB_[1][1];
             if(4 === _kC_[0])
              {var _kD_=_kC_[1],switch$0=0;
               if(typeof _kD_ === "number" || ! (3 === _kD_[0]))
                switch$0 = 1;
               else
                {var _kE_=_kD_[1];
                 if(0 === _kE_[0])
                  {var _kF_=_kE_[1];
                   if(typeof _kF_ === "number" && 14 === _kF_ && ! _kB_[2])
                    {var _kG_=expr[2];
                     if(_kG_)
                      {var _kH_=_kG_[2];
                       if(_kH_ && ! _kH_[2])
                        {var _kI_=expr[3][1];
                         if(18 === _kI_[0])
                          {var _kJ_=_kI_[1];
                           if(_kJ_)
                            {var _kK_=_kJ_[1][1];
                             if(7 === _kK_[0])
                              {var _kL_=_kK_[1];
                               if(typeof _kL_ === "number" && 9 === _kL_)
                                {var _kM_=_kK_[2][1];
                                 if(0 === _kM_[0])
                                  {var _kN_=_kK_[3][1];
                                   if(0 === _kN_[0] && ! _kJ_[2])
                                    {var
                                      xs=_kN_[1],
                                      x=_kM_[1],
                                      xs$0=_kH_[1],
                                      x$0=_kG_[1],
                                      l=_kA_[1];
                                     if(caml_equal([0,x$0,xs$0],[0,[0,x],[0,xs]]))
                                      return vector([0,prim2(14,l,var$0(cst_rev_ops$2)),0])}}}}}}}}}}}}}}
         break
        }
      return [0,expr]}
    var
     _in_=0,
     _io_=[0,function(_kw_){return preserves(bindings_unique$0,_kw_)},_in_],
     reify_rev_ops=
      mk(cst_reify_rev_ops,function(_kv_){return cata_expr(f$25,_kv_)},_io_);
    function simplify(st)
     {var
       _kp_=[0,factorise_clauses(st),[0,reify_booleans,0]],
       _kq_=[0,flatten_lets,[0,unused_loop_state(st),_kp_]],
       _kr_=[0,infer_constructors,[0,factor_invariant_loop_state(st),_kq_]],
       _ks_=
        [0,
         field_access$0,
         [0,flatten_matches,[0,[4,cst_fix_mangle,[2,mangle(st)]],_kr_]]],
       _kt_=
        [0,
         inline_singles,
         [0,fold_constants,[0,mark_unused,[0,unvectorize_conds(st),_ks_]]]],
       main=[3,[0,unfold_ifs,[0,unfold_stack_ops(1),_kt_]]],
       t=[2,main];
      return function(_ku_){return run_transformer(t,_ku_)}}
    function smartMLify(st,pc)
     {var _i7_=0;
      function f(expr)
       {switch(expr[0])
         {case 5:
           var _kh_=expr[1],switch$0=0;
           if(typeof _kh_ === "number" || ! (4 === _kh_[0]))
            switch$0 = 1;
           else
            {var _ki_=_kh_[1];
             if(0 === _ki_){var x=expr[2];return x}
             if(1 === _ki_){var x$0=expr[2];return prim1(0,x$0)}
             var x$1=expr[2];
             if(2 <= _ki_)return prim1([4,_ki_ - 2 | 0],prim1(1,x$1))}
           break;
          case 7:
           var _kj_=expr[1],switch$1=0;
           if(typeof _kj_ === "number" || 0 === _kj_[0])
            switch$1 = 1;
           else
            {var _kk_=_kj_[1];
             if(0 === _kk_)
              {var x$2=expr[3],r=expr[2];return let_in_var(0,x$2,r)}
             if(1 === _kk_)
              {var
                x$3=expr[3],
                r$0=expr[2],
                x1=fresh(st,cst_x),
                x2=fresh(st,cst_x$0),
                _kl_=var$0(x2),
                _km_=caml_call2(pair(0,0),r$0,_kl_);
               return let_in_vector
                       ([0,[0,x1],[0,[0,x2],0]],
                        [0,[20,2,x$3]],
                        let_in_var(0,var$0(x1),_km_))}
             var x$4=expr[3],r$1=expr[2];
             if(2 <= _kk_)
              {var
                x1$0=fresh(st,cst_x$1),
                x2$0=fresh(st,cst_x$2),
                _kn_=prim2([1,_kk_ - 2 | 0],r$1,var$0(x2$0)),
                _ko_=var$0(x1$0);
               return let_in_vector
                       ([0,[0,x1$0],[0,[0,x2$0],0]],
                        [0,[20,2,x$4]],
                        caml_call2(pair(0,0),_ko_,_kn_))}}
           break
          }
        return [0,expr]}
      var
       _iX_=0,
       _iY_=[0,function(_kg_){return preserves(bindings_unique$0,_kg_)},_iX_],
       _i8_=
        [0,
         [2,
          mk
           (cst_unfold_getn_and_updaten,
            function(_kf_){return cata_expr(f,_kf_)},
            _iY_)],
         _i7_],
       _i9_=[0,unused_loop_state(st),[0,tuplefy,0]],
       _i__=[0,flatten_lets,[0,factor_invariant_loop_state(st),_i9_]],
       _i$_=
        [0,
         fold_constants,
         [0,inline_singles,[0,distribute_lets,[0,unvectorize_conds(st),_i__]]]];
      function f$3(lhs,rhs,e)
       {function _kb_(x){return [0,x,fresh(st,cst_x$5)]}
        var fresh$0=caml_call2(Utils_Binary_tree[11],_kb_,lhs);
        function _kc_(param){var x=param[2];return [0,x]}
        var lhs$0=caml_call2(Utils_Binary_tree[11],_kc_,fresh$0);
        function g(param)
         {var _ke_=param[1];
          if(_ke_){var x=param[2],x$0=_ke_[1];return [0,[0,x$0,var$0(x)]]}
          return 0}
        var
         _kd_=caml_call1(Utils_Binary_tree[41],fresh$0),
         subst=caml_call2(Utils_List[78],g,_kd_),
         e$0=caml_call1(substitute(subst),e);
        return 6 === rhs[1][0]?rhs:match_record(lhs$0,rhs,e$0)}
      function f$4(expr)
       {switch(expr[0])
         {case 1:
           var _jE_=expr[1];
           if(0 === _jE_[0])
            {var _jF_=_jE_[1];
             if(_jF_)
              {var _jG_=expr[3][1];
               if(11 === _jG_[0])
                {var _jH_=_jG_[1],_jJ_=_jF_[1],_jI_=expr[2];
                 if(0 !== _jH_[0])
                  {var _jK_=_jH_[1];
                   if(0 === _jK_[0])
                    {var _jL_=_jK_[1][2],_jM_=_jL_[1];
                     if(4 === _jM_[0])
                      {var switch$0=0,_jN_=_jM_[1];
                       if(typeof _jN_ === "number" || ! (3 === _jN_[0]))
                        switch$0 = 1;
                       else
                        {var _jO_=_jH_[2];
                         if(0 === _jO_[0])
                          {var _jP_=_jO_[1][2][1];
                           if(29 === _jP_[0])
                            {var _jQ_=_jP_[2][1];
                             if(0 === _jQ_[0])
                              {var x=_jQ_[1],row=_jP_[1];
                               if(caml_string_equal(_jJ_,x))
                                {var _jR_=tuple([0,_jL_,[0,var$0(x),0]]);
                                 return let_in_var([0,_jJ_],record_of_tree(row,_jI_),_jR_)}}}}}}}}}}}
           break;
          case 16:
           var _jS_=expr[1],_jT_=expr[2][1];
           switch(_jT_[0])
            {case 7:
              if(0 !== _jS_[0])
               {var _jU_=_jS_[1];
                if(0 === _jU_[0])
                 {var _jV_=_jS_[2],_jW_=_jU_[1];
                  if(0 === _jV_[0])
                   {var _jX_=expr[2][1],_jY_=_jX_[1];
                    if(typeof _jY_ !== "number" && 1 !== _jY_[0])
                     {var e=expr[3],u=_jX_[3],t=_jX_[2],y=_jV_[1];
                      return let_in_var(_jW_,t,let_in_var(y,u,e))}}}}
              break;
             case 17:
              var
               e$0=expr[3],
               clauses=_jT_[2],
               s=_jT_[1],
               _jZ_=
                function(init)
                 {var _ka_=f$3(_jS_,init[3],e$0);
                  return [0,init[1],init[2],_ka_]},
               clauses$0=caml_call2(Utils_Binary_tree[11],_jZ_,clauses);
              return match_variant(s,clauses$0);
             case 21:
              var
               e$1=expr[3],
               r=_jT_[3],
               l=_jT_[2],
               s$0=_jT_[1],
               _j0_=f$3(_jS_,r,e$1);
              return if$0(s$0,f$3(_jS_,l,e$1),_j0_)
             }
           break;
          case 29:
           var _j1_=expr[1],_j2_=expr[2],_j3_=_j2_[1];
           switch(_j3_[0])
            {case 6:return _j2_;
             case 17:
              var
               clauses$1=_j3_[2],
               scrutinee=_j3_[1],
               f=
                function(init)
                 {var _j5_=record_of_tree(_j1_,init[3]);
                  return [0,init[1],init[2],_j5_]};
              return match_variant
                      (scrutinee,caml_call2(Utils_Binary_tree[11],f,clauses$1));
             default:
              var
               tree=expr[2],
               parse_tree=
                function(row,tree)
                 {var _j6_=tree[1];
                  if(0 === row[0]){var l=row[1];return [0,[0,[0,l,tree]]]}
                  if(7 === _j6_[0])
                   {var _j7_=_j6_[1];
                    if(typeof _j7_ !== "number" && 1 !== _j7_[0])
                     {var
                       x2=_j6_[3],
                       x1=_j6_[2],
                       r2=row[2],
                       r1=row[1],
                       _j8_=
                        function(x1)
                         {function _j__(x2){return [0,[1,x1,x2]]}
                          var _j$_=parse_tree(r2,x2);
                          return caml_call2(Utils_Option[37],_j$_,_j__)},
                       _j9_=parse_tree(r1,x1);
                      return caml_call2(Utils_Option[37],_j9_,_j8_)}}
                  return 0},
               _j4_=parse_tree(_j1_,tree);
              return caml_call3(Utils_Option[12],[0,expr],record,_j4_)}
          }
        return [0,expr]}
      var
       _i5_=0,
       _i6_=[0,function(_jD_){return preserves(bindings_unique$0,_jD_)},_i5_],
       _ja_=
        [0,
         flatten_matches,
         [0,
          [2,reify_rev_ops],
          [0,
           [2,
            [3,
             [0,
              mk
               (cst_recordify,function(_jC_){return cata_expr(f$4,_jC_)},_i6_),
              _i$_]]],
           _i8_]]],
       parameter_and_storage=pc[3],
       tstorage=pc[2];
      if(3 === tstorage[0])
       var
        r=tstorage[1],
        _i4_=function(_jB_){return _jB_[1]},
        r$0=caml_call2(Utils_Binary_tree[11],_i4_,r),
        post$0=
         function(body)
          {var
            ops=fresh(st,cst_ops),
            s=fresh(st,cst_s$0),
            _jA_=[0,record_of_tree(r$0,var$0(s)),0];
           return match_record
                   ([1,[0,[0,ops]],[0,[0,s]]],body,tuple([0,var$0(ops),_jA_]))},
        pre$0=function(_jz_){return tree_of_record(r$0,_jz_)},
        post=post$0,
        pre=pre$0;
      else
       var post=Utils_Control[1],pre=Utils_Control[1];
      function f$2(body)
       {if(parameter_and_storage)
         {var
           ps=parameter_and_storage[1],
           _jx_=caml_call1(pre,var$0(s)),
           _jy_=var$0(gp),
           body$0=
            caml_call1
             (substitute([0,[0,ps,caml_call2(pair(0,0),_jy_,_jx_)],0]),body),
           body$1=caml_call1(post,body$0),
           body$2=let_in_var([0,s],prim1(1,var$0(ps)),body$1),
           body$3=let_in_var([0,gp],prim1(0,var$0(ps)),body$2);
          return body$3}
        return body}
      var
       _i3_=0,
       _jb_=
        [0,
         binarize_records,
         [0,
          mk
           (cst_eta_expand_parameter_and_s,
            f$2,
            [0,function(_jw_){return preserves(bindings_unique$0,_jw_)},_i3_]),
          _ja_]];
      function f$1(expr)
       {if(16 === expr[0])
         {var _jr_=expr[1];
          if(0 !== _jr_[0])
           {var
             e2=expr[3],
             e1=expr[2],
             x=fresh(st,cst_x$3),
             mk_vars=
              function(v,param)
               {if(0 === param[0])
                 {var n=param[1],_jt_=fresh(st,cst_x$4);
                  return [0,[0,caml_call2(Utils_Option[45],_jt_,n),v],0]}
                var
                 y=param[2],
                 x=param[1],
                 _ju_=mk_vars(prim1(1,v),y),
                 _jv_=mk_vars(prim1(0,v),x);
                return caml_call2(Stdlib[37],_jv_,_ju_)},
             bindings=[0,[0,x,e1],mk_vars(var$0(x),_jr_)],
             _js_=
              function(param,r)
               {var e=param[2],x=param[1];return let_in_var([0,x],e,r)};
            return caml_call3(Utils_List[26],_js_,bindings,e2)}}
        return [0,expr]}
      var
       _i1_=0,
       _i2_=[0,function(_jq_){return preserves(bindings_unique$0,_jq_)},_i1_],
       _jc_=
        [0,
         binarize_projs,
         [0,
          mk(cst_single_lets,function(_jp_){return cata_expr(f$1,_jp_)},_i2_),
          _jb_]];
      function f$0(expr)
       {if(17 === expr[0])
         {var _jl_=expr[2],_jm_=expr[1];
          if(0 !== _jl_[0])
           {var _jn_=_jl_[1];
            if(0 !== _jn_[0])
             {var
               r$0=_jl_[2],
               ls=fresh(st,cst_l),
               rhs$0=[0,[17,[0,[0,ls]],_jn_]],
               l=[0,[0,0,[0,ls],rhs$0]];
              return match_variant(_jm_,[1,l,r$0])}
            var _jo_=_jl_[2];
            if(0 !== _jo_[0])
             {var
               rs=fresh(st,cst_r$1),
               rhs=[0,[17,[0,[0,rs]],_jo_]],
               r=[0,[0,0,[0,rs],rhs]];
              return match_variant(_jm_,[1,_jn_,r])}}}
        return [0,expr]}
      var
       _iZ_=0,
       _i0_=[0,function(_jk_){return preserves(bindings_unique$0,_jk_)},_iZ_],
       _jd_=
        [0,
         mk
          (cst_binarize_matches,
           function(_jj_){return cata_expr(f$0,_jj_)},
           _i0_),
         _jc_],
       _je_=[0,factorise_clauses(st),[0,reify_booleans,0]],
       _jf_=[0,unused_loop_state(st),_je_],
       _jg_=[0,infer_constructors,[0,factor_invariant_loop_state(st),_jf_]],
       _jh_=
        [0,
         flatten_lets,
         [0,
          field_access$0,
          [0,flatten_matches,[0,[4,cst_fix_mangle$0,[2,mangle(st)]],_jg_]]]],
       _ji_=
        [0,
         unfold_unpair,
         [0,
          [2,
           [3,
            [0,
             inline_singles,
             [0,fold_constants,[0,mark_unused,[0,unvectorize_conds(st),_jh_]]]]]],
          _jd_]],
       t=
        [3,
         [0,
          erase_comments,
          [0,
           unfold_ifs,
           [0,[2,[3,[0,unfold_stack_ops(1),[0,chop_stack_ops,0]]]],_ji_]]]];
      return run_transformer(t,pc)}
    function michelsonify(st)
     {var
       _ir_=
        [0,
         nest_ifs,
         [0,
          drop_unused,
          [0,[2,[3,[0,factorise_failwith,[0,flatten_ifs,0]]]],0]]],
       _is_=[0,flatten_lets,0];
      function f(expr)
       {function handle(st,cond,c,param,_iz_)
         {var
           y_rhs0=_iz_[2],
           y_var0=_iz_[1],
           x_rhs0=param[2],
           x_var0=param[1],
           match=lens_rhs(x_rhs0),
           close_x=match[3],
           x_rhs=match[2],
           x_bound=match[1],
           match$0=lens_rhs(y_rhs0),
           close_y=match$0[3],
           y_rhs=match$0[2],
           y_bound=match$0[1],
           x_bound$0=
            caml_call4(Utils_Option[12],Utils_Control[1],cons,x_var0,x_bound),
           y_bound$0=
            caml_call4(Utils_Option[12],Utils_Control[1],cons,y_var0,y_bound);
          function can_factor(xs,param)
           {var _iW_=param[1];
            switch(_iW_[0])
             {case 0:var x=_iW_[1];return 1 - caml_call2(Utils_List[35],x,xs);
              case 3:return 1;
              default:return 0}}
          function pull1(bound,x)
           {if(can_factor(bound,x))return [0,0,0,x];
            var r=fresh(st,cst_r$2);
            return [0,[0,[0,r]],[0,x],var$0(r)]}
          function pull2(x,y)
           {if
             (caml_call2(equal_expr,x,y)
              &&
              can_factor(x_bound$0,x)
              &&
              can_factor(y_bound$0,y))
             return [0,0,0,0,x];
            var r=fresh(st,cst_r$3);
            return [0,[0,[0,r]],[0,x],[0,y],var$0(r)]}
          var _iA_=x_rhs[1];
          if(18 === _iA_[0])
           {var xs$1=_iA_[1];
            if(always_fails(y_rhs))
             {var
               _iO_=function(_iV_){return pull1(x_bound$0,_iV_)},
               vars$1=caml_call2(Utils_List[20],_iO_,xs$1),
               _iP_=function(param){var r=param[1];return r},
               rs$1=caml_call2(Utils_List[78],_iP_,vars$1),
               _iQ_=function(param){var x=param[2];return x},
               xs$2=caml_call2(Utils_List[78],_iQ_,vars$1),
               _iR_=function(param){var rc=param[3];return rc},
               rcs$1=caml_call2(Utils_List[20],_iR_,vars$1),
               x$0=caml_call1(close_x,vector(xs$2)),
               _iS_=caml_call1(Utils_List[4],vars$1);
              if(caml_call1(Utils_List[4],rs$1) < _iS_)
               {var _iT_=vector(rcs$1);
                return let_in_vector(rs$1,caml_call3(cond,c,x$0,y_rhs0),_iT_)}
              return [0,expr]}}
          var _iB_=y_rhs[1];
          if(18 === _iB_[0])
           {var ys=_iB_[1];
            if(always_fails(x_rhs))
             {var
               _iC_=function(_iU_){return pull1(y_bound$0,_iU_)},
               vars=caml_call2(Utils_List[20],_iC_,ys),
               _iD_=function(param){var r=param[1];return r},
               rs=caml_call2(Utils_List[78],_iD_,vars),
               _iE_=function(param){var y=param[2];return y},
               ys$0=caml_call2(Utils_List[78],_iE_,vars),
               _iF_=function(param){var rc=param[3];return rc},
               rcs=caml_call2(Utils_List[20],_iF_,vars),
               y=caml_call1(close_y,vector(ys$0)),
               _iG_=caml_call1(Utils_List[4],vars);
              if(caml_call1(Utils_List[4],rs) < _iG_)
               {var _iH_=vector(rcs);
                return let_in_vector(rs,caml_call3(cond,c,x_rhs0,y),_iH_)}
              return [0,expr]}
            if(18 === _iA_[0])
             {var
               match$1=y_rhs[1],
               ys$1=match$1[1],
               xs=_iA_[1],
               vars$0=caml_call4(Utils_List[77],_ig_,pull2,xs,ys$1),
               _iI_=function(param){var r=param[1];return r},
               rs$0=caml_call2(Utils_List[78],_iI_,vars$0),
               _iJ_=function(param){var x=param[2];return x},
               xs$0=caml_call2(Utils_List[78],_iJ_,vars$0),
               _iK_=function(param){var y=param[3];return y},
               ys$2=caml_call2(Utils_List[78],_iK_,vars$0),
               _iL_=function(param){var rc=param[4];return rc},
               rcs$0=caml_call2(Utils_List[20],_iL_,vars$0),
               x=caml_call1(close_x,vector(xs$0)),
               y$0=caml_call1(close_y,vector(ys$2)),
               _iM_=caml_call1(Utils_List[4],vars$0);
              if(caml_call1(Utils_List[4],rs$0) < _iM_)
               {var _iN_=vector(rcs$0);
                return let_in_vector(rs$0,caml_call3(cond,c,x,y$0),_iN_)}
              return [0,expr]}}
          return [0,expr]}
        switch(expr[0])
         {case 21:
           var y=expr[3],x=expr[2],c=expr[1];
           return handle(st,if$0,c,[0,0,x],[0,0,y]);
          case 22:
           var
            r=expr[4],
            l=expr[3],
            xr=expr[2],
            c$0=expr[1],
            close=function(c,l,r){return if_none(c,l,[0,xr,r])};
           return handle(st,close,c$0,[0,0,l],[0,xr,r]);
          case 23:
           var
            r$0=expr[5],
            xr$0=expr[4],
            l$0=expr[3],
            xl=expr[2],
            c$1=expr[1],
            close$0=function(c,l,r){return if_left(c,[0,xl,l],[0,xr$0,r])};
           return handle(st,close$0,c$1,[0,xl,l$0],[0,xr$0,r$0]);
          default:return [0,expr]}}
      var
       _ip_=0,
       _iq_=[0,function(_iy_){return pre_post(bindings_unique$0,_iy_)},_ip_],
       _it_=
        [0,
         fold_constants,
         [0,
          mk(cst_factor_ifs,function(_ix_){return cata_expr(f,_ix_)},_iq_),
          _is_]],
       _iu_=[0,unfold_stack_ops(0),_it_],
       _iv_=[0,unused_loop_state(st),_iu_],
       t=
        [3,
         [0,
          chop_stack_ops,
          [0,
           [2,
            [3,
             [0,
              mark_unused,
              [0,inline_simples,[0,factor_invariant_loop_state(st),_iv_]]]]],
           _ir_]]];
      return function(_iw_){return run_transformer(t,_iw_)}}
    var Michel_Transformer=[0,fresh,freshen,simplify,smartMLify,michelsonify];
    caml_register_global(810,Michel_Transformer,"Michel__Transformer");
    return}
  (function(){return this}()));


//# 1 "../../.js/ptime/ptime.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_check_bound=runtime.caml_check_bound,
     caml_compare=runtime.caml_compare,
     caml_greaterequal=runtime.caml_greaterequal,
     caml_greaterthan=runtime.caml_greaterthan,
     caml_int64_add=runtime.caml_int64_add,
     caml_int64_div=runtime.caml_int64_div,
     caml_int64_mod=runtime.caml_int64_mod,
     caml_int64_mul=runtime.caml_int64_mul,
     caml_int64_of_float=runtime.caml_int64_of_float,
     caml_int64_of_int32=runtime.caml_int64_of_int32,
     caml_int64_sub=runtime.caml_int64_sub,
     caml_int64_to_float=runtime.caml_int64_to_float,
     caml_int64_to_int32=runtime.caml_int64_to_int32,
     caml_lessthan=runtime.caml_lessthan,
     caml_list_of_js_array=runtime.caml_list_of_js_array,
     caml_notequal=runtime.caml_notequal,
     caml_string_get=runtime.caml_string_get,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call8(f,a0,a1,a2,a3,a4,a5,a6,a7)
     {return f.length == 8
              ?f(a0,a1,a2,a3,a4,a5,a6,a7)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7])}
    function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8)
     {return f.length == 9
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])}
    var
     global_data=runtime.caml_get_global_data(),
     partial=[4,0,[0,2,2],0,0],
     partial$0=[4,0,[0,2,2],0,0],
     acc=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     ps_count_in_ps=runtime.caml_int64_create_lo_mi_hi(1,0,0),
     ps_count_in_ns=runtime.caml_int64_create_lo_mi_hi(1000,0,0),
     ps_count_in_100ns=runtime.caml_int64_create_lo_mi_hi(100000,0,0),
     ps_count_in_us=runtime.caml_int64_create_lo_mi_hi(1000000,0,0),
     ps_count_in_100us=runtime.caml_int64_create_lo_mi_hi(16113920,5,0),
     ps_count_in_ms=runtime.caml_int64_create_lo_mi_hi(10144256,59,0),
     ps_count_in_100ms=runtime.caml_int64_create_lo_mi_hi(7792640,5960,0),
     pow=runtime.caml_int64_create_lo_mi_hi(10817536,59604,0),
     ps_count_in_min=runtime.caml_int64_create_lo_mi_hi(11517952,3576278,0),
     ps_count_in_hour=runtime.caml_int64_create_lo_mi_hi(3211264,13250129,12),
     ps_count_in_day=runtime.caml_int64_create_lo_mi_hi(9961472,16013212,306),
     ps_day_max=runtime.caml_int64_create_lo_mi_hi(9961471,16013212,306),
     epoch=[0,0,runtime.caml_int64_create_lo_mi_hi(0,0,0)],
     zero=[0,0,runtime.caml_int64_create_lo_mi_hi(0,0,0)],
     cst_ms=caml_string_of_jsbytes("ms"),
     cst_s=caml_string_of_jsbytes("s"),
     cst_us=caml_string_of_jsbytes("us"),
     cst_ms$0=caml_string_of_jsbytes("ms"),
     cst_ns=caml_string_of_jsbytes("ns"),
     cst_us$0=caml_string_of_jsbytes("us"),
     cst_Ptime_RFC3339=caml_string_of_jsbytes("Ptime.RFC3339"),
     Stdlib_format=global_data.Stdlib__format,
     Stdlib=global_data.Stdlib,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_int64=global_data.Stdlib__int64,
     Stdlib_pervasives=global_data.Stdlib__pervasives,
     min=[0,-719528,runtime.caml_int64_create_lo_mi_hi(0,0,0)],
     max=[0,2932896,ps_day_max],
     _ai_=
      [0,
       [4,
        0,
        [0,2,4],
        0,
        [12,
         45,
         [4,
          0,
          [0,2,2],
          0,
          [12,
           45,
           [4,
            0,
            [0,2,2],
            0,
            [12,32,[4,0,[0,2,2],0,[12,58,[4,0,[0,2,2],0,[12,58,partial]]]]]]]]]],
       caml_string_of_jsbytes("%04d-%02d-%02d %02d:%02d:%02d")],
     _aj_=[0,[12,46,[7,0,[1,2],0,0]],caml_string_of_jsbytes(".%0*Ld")],
     _ak_=
      [0,
       [12,32,[0,[4,0,[0,2,2],0,[12,58,[4,0,[0,2,2],0,0]]]]],
       caml_string_of_jsbytes(" %c%02d:%02d")],
     _ah_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _ad_=
      [0,
       [4,
        0,
        [0,2,4],
        0,
        [12,
         45,
         [4,
          0,
          [0,2,2],
          0,
          [12,
           45,
           [4,
            0,
            [0,2,2],
            0,
            [0,[4,0,[0,2,2],0,[12,58,[4,0,[0,2,2],0,[12,58,partial$0]]]]]]]]]],
       caml_string_of_jsbytes("%04d-%02d-%02d%c%02d:%02d:%02d")],
     _ae_=[0,[12,46,[7,0,[1,2],0,0]],caml_string_of_jsbytes(".%0*Ld")],
     _ag_=[0,[12,90,0],caml_string_of_jsbytes("Z")],
     _af_=
      [0,
       [0,[4,0,[0,2,2],0,[12,58,[4,0,[0,2,2],0,0]]]],
       caml_string_of_jsbytes("%c%02d:%02d")],
     _ac_=[0,0,1],
     _ab_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _aa_=[0,0],
     _Z_=[0,0],
     _$_=[0,122,0],
     ___=[0,43,[0,45,[0,90,0]]],
     _Y_=runtime.caml_int64_create_lo_mi_hi(10,0,0),
     _X_=[0,122,0],
     _W_=[0,46,[0,43,[0,45,[0,90,0]]]],
     _V_=[0,116,[0,32,0]],
     _U_=[0,84,0],
     _T_=caml_list_of_js_array([498443355,48,49,50,51,52,53,54,55,56,57]),
     _S_=
      [0,
       [4,0,0,0,[12,45,[4,0,0,0,[11,caml_string_of_jsbytes(": "),[15,0]]]]],
       caml_string_of_jsbytes("%d-%d: %a")],
     _Q_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[1,0]],
       caml_string_of_jsbytes("@ %C")],
     _O_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("invalid"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,
           caml_string_of_jsbytes("time"),
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [11,caml_string_of_jsbytes("stamp"),[17,0,0]]]]]]],
       caml_string_of_jsbytes("@[invalid@ time@ stamp@]")],
     _P_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("trailing"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,caml_string_of_jsbytes("input"),[17,0,0]]]]],
       caml_string_of_jsbytes("@[trailing@ input@]")],
     _N_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("unexpected"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [11,
           caml_string_of_jsbytes("end"),
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [11,
             caml_string_of_jsbytes("of"),
             [17,
              [0,caml_string_of_jsbytes("@ "),1,0],
              [11,caml_string_of_jsbytes("input"),[17,0,0]]]]]]]]],
       caml_string_of_jsbytes("@[unexpected@ end@ of@ input@]")],
     _R_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [11,
         caml_string_of_jsbytes("expected"),
         [17,
          [0,caml_string_of_jsbytes("@ "),1,0],
          [12,
           97,
           [17,
            [0,caml_string_of_jsbytes("@ "),1,0],
            [11,
             caml_string_of_jsbytes("character"),
             [17,
              [0,caml_string_of_jsbytes("@ "),1,0],
              [11,caml_string_of_jsbytes("in:"),[15,[17,0,0]]]]]]]]]],
       caml_string_of_jsbytes("@[expected@ a@ character@ in:%a@]")],
     _L_=[0,0],
     _K_=[0,[0,0,0,0],0],
     _H_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _I_=
      [0,
       [11,
        caml_string_of_jsbytes("illegal ptime timestamp: ("),
        [4,0,0,0,[12,44,[7,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes("illegal ptime timestamp: (%d,%Ld)")],
     _G_=
      [0,
       [4,0,0,0,[11,caml_string_of_jsbytes("ps"),0]],
       caml_string_of_jsbytes("%dps")],
     _D_=[0,[4,0,0,0,[2,0,0]],caml_string_of_jsbytes("%d%s")],
     _E_=[0,[4,0,0,0,[2,0,0]],caml_string_of_jsbytes("%d%s")],
     _F_=
      [0,
       [4,0,0,0,[12,46,[4,0,0,0,[2,0,0]]]],
       caml_string_of_jsbytes("%d.%d%s")],
     _A_=
      [0,
       [4,0,0,0,[11,caml_string_of_jsbytes("min"),0]],
       caml_string_of_jsbytes("%dmin")],
     _C_=
      [0,
       [4,0,0,0,[12,46,[4,0,0,0,[12,115,0]]]],
       caml_string_of_jsbytes("%d.%ds")],
     _B_=[0,[4,0,0,0,[12,115,0]],caml_string_of_jsbytes("%ds")],
     _x_=[0,[4,0,0,0,[12,104,0]],caml_string_of_jsbytes("%dh")],
     _y_=
      [0,
       [4,0,0,0,[11,caml_string_of_jsbytes("min"),0]],
       caml_string_of_jsbytes("%dmin")],
     _z_=[0,[4,0,0,0,[12,115,0]],caml_string_of_jsbytes("%ds")],
     _u_=[0,[4,0,0,0,[12,100,0]],caml_string_of_jsbytes("%dd")],
     _v_=[0,[4,0,0,0,[12,104,0]],caml_string_of_jsbytes("%dh")],
     _w_=
      [0,
       [4,0,0,0,[11,caml_string_of_jsbytes("min"),0]],
       caml_string_of_jsbytes("%dmin")],
     _q_=
      [0,
       [4,0,0,0,[11,caml_string_of_jsbytes("y1d"),0]],
       caml_string_of_jsbytes("%dy1d")],
     _r_=[0,[4,0,0,0,[12,121,0]],caml_string_of_jsbytes("%dy")],
     _s_=[0,[4,0,0,0,[12,100,0]],caml_string_of_jsbytes("%dd")],
     _t_=[0,[4,0,0,0,[12,104,0]],caml_string_of_jsbytes("%dh")],
     _o_=[0,[4,0,0,0,[12,121,0]],caml_string_of_jsbytes("%dy")],
     _p_=[0,[4,0,0,0,[12,100,0]],caml_string_of_jsbytes("%dd")],
     _n_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<1>"),0],
          caml_string_of_jsbytes("<1>")]],
        [12,
         40,
         [4,
          0,
          0,
          0,
          [12,
           44,
           [17,
            [0,caml_string_of_jsbytes("@,"),0,0],
            [7,0,0,0,[12,41,[17,0,0]]]]]]]],
       caml_string_of_jsbytes("@[<1>(%d,@,%Ld)@]")],
     _m_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _i_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _j_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _k_=runtime.caml_int64_create_lo_mi_hi(2,0,0),
     _h_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _e_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _c_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _d_=
      [0,
       [11,
        caml_string_of_jsbytes("illegal ptime time span: ("),
        [4,0,0,0,[12,44,[7,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes("illegal ptime time span: (%d,%Ld)")],
     _a_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _b_=runtime.caml_int64_create_lo_mi_hi(0,0,0),
     _l_=
      [0,
       runtime.caml_int64_create_lo_mi_hi(10817536,59604,0),
       runtime.caml_int64_create_lo_mi_hi(7792640,5960,0),
       runtime.caml_int64_create_lo_mi_hi(779264,596,0),
       runtime.caml_int64_create_lo_mi_hi(10144256,59,0),
       runtime.caml_int64_create_lo_mi_hi(16113920,5,0),
       runtime.caml_int64_create_lo_mi_hi(10000000,0,0),
       runtime.caml_int64_create_lo_mi_hi(1000000,0,0),
       runtime.caml_int64_create_lo_mi_hi(100000,0,0),
       runtime.caml_int64_create_lo_mi_hi(10000,0,0),
       runtime.caml_int64_create_lo_mi_hi(1000,0,0),
       runtime.caml_int64_create_lo_mi_hi(100,0,0),
       runtime.caml_int64_create_lo_mi_hi(10,0,0),
       runtime.caml_int64_create_lo_mi_hi(1,0,0)],
     _J_=[0,31,28,31,30,31,30,31,31,30,31,30,31],
     _M_=[0,4200545,3506557,4149254,4153708,3853996,4203428,4349046],
     _am_=[0,0];
    function neg(param)
     {var _bm_=param[1];
      if(caml_notequal(param[2],_a_))
       {var ps=param[2];
        return [0,- (_bm_ + 1 | 0) | 0,caml_int64_sub(ps_count_in_day,ps)]}
      return [0,- _bm_ | 0,_b_]}
    function add(param,_bl_)
     {var
       ps1=_bl_[2],
       d1=_bl_[1],
       ps0=param[2],
       d0=param[1],
       d=d0 + d1 | 0,
       ps=caml_int64_add(ps0,ps1),
       ps_clamp=caml_int64_mod(ps,ps_count_in_day),
       d$0=d + caml_call2(Stdlib_int64[15],ps,ps_clamp) | 0;
      return [0,d$0,ps_clamp]}
    function sub(s0,s1){return add(s0,neg(s1))}
    function abs(s){var d=s[1];return 0 <= d?s:neg(s)}
    function v(s)
     {var ps=s[2],d=s[1];
      if(! caml_lessthan(ps,_c_) && ! caml_greaterthan(ps,ps_day_max))
       return s;
      var _bk_=caml_call3(Stdlib_format[126],_d_,d,ps);
      return caml_call1(Stdlib[1],_bk_)}
    function of_d_ps(s)
     {var ps=s[2];
      if(! caml_lessthan(ps,_e_) && ! caml_greaterthan(ps,ps_day_max))
       return [0,s];
      return 0}
    function unsafe_of_d_ps(s){return s}
    function unsafe_of_d_ps_option(s){return s}
    function to_d_ps(s){return s}
    function of_int_s(secs)
     {var
       d=caml_call1(Stdlib_pervasives[6],secs),
       s=
        [0,
         d / 86400 | 0,
         caml_int64_mul(caml_int64_of_int32(d % 86400 | 0),pow)];
      return 0 <= secs?s:neg(s)}
    var day_int_min=Stdlib[20] / 86400 | 0,day_int_max=Stdlib[19] / 86400 | 0;
    function to_int_s(param)
     {var ps=param[2],d=param[1];
      if(! (d < day_int_min) && ! (day_int_max < d))
       {var
         days_s=d * 86400 | 0,
         day_s=caml_int64_to_int32(caml_int64_div(ps,pow)),
         secs=days_s + day_s | 0;
        return secs < days_s?0:[0,secs]}
      return 0}
    var _f_=Stdlib[20],_g_=Stdlib[19];
    function of_float_s(secs)
     {if(secs != secs)return 0;
      var days=Math.floor(secs / 86400.);
      if(! (days < _f_) && ! (_g_ < days))
       {var rem_s=secs % 86400.,rem_s$0=rem_s < 0.?86400. + rem_s:rem_s;
        if(86400. <= rem_s$0)return [0,[0,(days | 0) + 1 | 0,_h_]];
        var
         match=runtime.caml_modf_float(rem_s$0),
         rem_s$1=match[2],
         frac_s=match[1],
         rem_ps=caml_int64_mul(caml_int64_of_float(rem_s$1),pow),
         frac_ps=caml_int64_of_float(frac_s * 1000000000000.);
        return [0,[0,days | 0,caml_int64_add(rem_ps,frac_ps)]]}
      return 0}
    function to_float_s(param)
     {var
       ps=param[2],
       d=param[1],
       days_s=d * 86400.,
       day_s=caml_int64_to_float(caml_int64_div(ps,pow)),
       day_rem_ps=caml_int64_to_float(caml_int64_mod(ps,pow));
      return days_s + day_s + day_rem_ps * 1e-12}
    function equal(param,_bh_)
     {var
       ps1=_bh_[2],
       d1=_bh_[1],
       ps0=param[2],
       d0=param[1],
       _bi_=0 === runtime.caml_int_compare(d0,d1)?1:0,
       _bj_=_bi_?0 === caml_call2(Stdlib_int64[15],ps0,ps1)?1:0:_bi_;
      return _bj_}
    function compare(param,_bg_)
     {var
       ps1=_bg_[2],
       d1=_bg_[1],
       ps0=param[2],
       d0=param[1],
       c=caml_compare(d0,d1);
      return 0 === c?caml_compare(ps0,ps1):c}
    function round_div(a,b)
     {return runtime.caml_equal(a,_i_)
              ?_j_
              :caml_int64_div(caml_int64_add(a,caml_int64_div(b,_k_)),b)}
    var frac_div=_l_.slice();
    function round(frac,t)
     {var
       sign=t[1],
       frac$0=0 <= frac?12 < frac?12:frac:0,
       match=0 <= sign?t:neg(t),
       ps=match[2],
       d=match[1],
       _bf_=caml_check_bound(frac_div,frac$0)[1 + frac$0],
       rps=
        caml_int64_mul
         (round_div(ps,caml_check_bound(frac_div,frac$0)[1 + frac$0]),_bf_),
       t$0=caml_greaterthan(rps,ps_day_max)?[0,d + 1 | 0,_m_]:[0,d,rps];
      return 0 <= sign?t$0:neg(t$0)}
    function truncate(frac,t)
     {var
       sign=t[1],
       frac$0=0 <= frac?12 < frac?12:frac:0,
       match=0 <= sign?t:neg(t),
       ps=match[2],
       d=match[1],
       tps=
        caml_int64_sub
         (ps,caml_int64_mod(ps,caml_check_bound(frac_div,frac$0)[1 + frac$0]));
      return 0 <= sign?[0,d,tps]:neg([0,d,tps])}
    function dump(ppf,param)
     {var ps=param[2],d=param[1];
      return caml_call4(Stdlib_format[123],ppf,_n_,d,ps)}
    function divide_ps(carry,ps,hi,lo)
     {var
       hi_d=caml_int64_to_int32(caml_int64_div(ps,hi)),
       rem_ps=caml_int64_mod(ps,hi),
       lo_d=caml_int64_to_int32(round_div(rem_ps,lo));
      return lo_d === carry?[0,hi_d + 1 | 0,0]:[0,hi_d,lo_d]}
    function pp_unit(higher_str,hi,hi_str,frac_limit,lo,ppf,neg,ps)
     {function pp_unit_integral(ppf,neg,h)
       {if(1000 === h)
         {var _bd_=neg?-1:1;
          return caml_call4(Stdlib_format[123],ppf,_D_,_bd_,higher_str)}
        var _be_=neg?- h | 0:h;
        return caml_call4(Stdlib_format[123],ppf,_E_,_be_,hi_str)}
      if(caml_lessthan(ps,frac_limit))
       {var match=divide_ps(1000,ps,hi,lo),l=match[2],h=match[1];
        if(! (100 <= h) && 0 !== l)
         {var h$0=neg?- h | 0:h;
          return caml_call5(Stdlib_format[123],ppf,_F_,h$0,l,hi_str)}
        return pp_unit_integral(ppf,neg,h)}
      var match$0=divide_ps(1,ps,hi,hi),ms=match$0[1];
      return pp_unit_integral(ppf,neg,ms)}
    function pp(ppf,s$2)
     {var sign=s$2[1],neg=sign < 0?1:0,match$3=abs(s$2),_bc_=match$3[1];
      if(0 === _bc_)
       {var ps$0=match$3[2];
        if(caml_greaterequal(ps$0,ps_count_in_hour))
         {var
           match$0=divide_ps(60,ps$0,ps_count_in_hour,ps_count_in_min),
           m=match$0[2],
           h$1=match$0[1];
          if(24 === h$1)
           {var _a__=neg?-1:1;
            return caml_call3(Stdlib_format[123],ppf,_u_,_a__)}
          var h$2=neg?- h$1 | 0:h$1;
          caml_call3(Stdlib_format[123],ppf,_v_,h$2);
          if(0 !== m)caml_call3(Stdlib_format[123],ppf,_w_,m);
          return 0}
        if(caml_greaterequal(ps$0,ps_count_in_min))
         {var
           match$1=divide_ps(60,ps$0,ps_count_in_min,pow),
           s=match$1[2],
           m$0=match$1[1];
          if(60 === m$0)
           {var _a$_=neg?-1:1;
            return caml_call3(Stdlib_format[123],ppf,_x_,_a$_)}
          var m$1=neg?- m$0 | 0:m$0;
          caml_call3(Stdlib_format[123],ppf,_y_,m$1);
          if(0 !== s)caml_call3(Stdlib_format[123],ppf,_z_,s);
          return 0}
        if(caml_greaterequal(ps$0,pow))
         {var
           match$2=divide_ps(1000,ps$0,pow,ps_count_in_ms),
           ms=match$2[2],
           s$0=match$2[1];
          if(60 === s$0)
           {var _ba_=neg?-1:1;
            return caml_call3(Stdlib_format[123],ppf,_A_,_ba_)}
          var s$1=neg?- s$0 | 0:s$0;
          return 0 === ms
                  ?caml_call3(Stdlib_format[123],ppf,_B_,s$1)
                  :caml_call4(Stdlib_format[123],ppf,_C_,s$1,ms)}
        if(caml_greaterequal(ps$0,ps_count_in_ms))
         return pp_unit
                 (cst_s,
                  ps_count_in_ms,
                  cst_ms,
                  ps_count_in_100ms,
                  ps_count_in_us,
                  ppf,
                  neg,
                  ps$0);
        if(caml_greaterequal(ps$0,ps_count_in_us))
         return pp_unit
                 (cst_ms$0,
                  ps_count_in_us,
                  cst_us,
                  ps_count_in_100us,
                  ps_count_in_ns,
                  ppf,
                  neg,
                  ps$0);
        if(caml_greaterequal(ps$0,ps_count_in_ns))
         return pp_unit
                 (cst_us$0,
                  ps_count_in_ns,
                  cst_ns,
                  ps_count_in_100ns,
                  ps_count_in_ps,
                  ppf,
                  neg,
                  ps$0);
        var ps=caml_int64_to_int32(ps$0),_bb_=neg?- ps | 0:ps;
        return caml_call3(Stdlib_format[123],ppf,_G_,_bb_)}
      var ps$1=match$3[2];
      if(365 < _bc_)
       {var max_d=Stdlib[19] / 4 | 0;
        if(max_d < _bc_)
         var rem_d=_bc_ % 365 | 0,y=_bc_ / 365 | 0;
        else
         var
          y$2=(_bc_ * 4 | 0) / 1461 | 0,
          rem_d$0=_bc_ - ((y$2 * 1461 | 0) / 4 | 0) | 0,
          rem_d=rem_d$0,
          y=y$2;
        var
         days=
          rem_d + caml_int64_to_int32(round_div(ps$1,ps_count_in_day)) | 0;
        if(366 === days)var days$0=1,y$0=y + 1 | 0;else var days$0=days,y$0=y;
        var y$1=neg?- y$0 | 0:y$0;
        caml_call3(Stdlib_format[123],ppf,_o_,y$1);
        if(0 !== days$0)caml_call3(Stdlib_format[123],ppf,_p_,days$0);
        return 0}
      var
       match=divide_ps(1,ps$1,ps_count_in_hour,ps_count_in_hour),
       h=match[1];
      if(24 === h)var h$0=0,d=_bc_ + 1 | 0;else var h$0=h,d=_bc_;
      if(366 === d)
       {var _a8_=neg?-1:1;return caml_call3(Stdlib_format[123],ppf,_q_,_a8_)}
      if(365 === d && 6 <= h$0)
       {var _a9_=neg?-1:1;return caml_call3(Stdlib_format[123],ppf,_r_,_a9_)}
      var d$0=neg?- d | 0:d;
      caml_call3(Stdlib_format[123],ppf,_s_,d$0);
      if(0 !== h$0)caml_call3(Stdlib_format[123],ppf,_t_,h$0);
      return 0}
    function v$0(s)
     {var ps=s[2],d=s[1];
      if
       (!
        caml_lessthan(ps,_H_)
        &&
        !
        caml_greaterthan(ps,ps_day_max)
        &&
        !
        (d < -719528)
        &&
        !
        (2932896 < d))
       return s;
      var _a7_=caml_call3(Stdlib_format[126],_I_,d,ps);
      return caml_call1(Stdlib[1],_a7_)}
    function unsafe_of_d_ps$0(s){return s}
    function of_span(span)
     {var d=span[1];
      if(! (d < -719528) && ! (2932896 < d))return [0,span];
      return 0}
    function to_span(t){return t}
    function of_float_s$0(secs)
     {var match=of_float_s(secs);
      if(match){var d=match[1];return of_span(d)}
      return 0}
    function frac_s(param)
     {var ps=param[2];return [0,0,caml_int64_mod(ps,pow)]}
    function is_earlier(t,than){return -1 === compare(t,than)?1:0}
    function is_later(t,than){return 1 === compare(t,than)?1:0}
    function add_span(t,d){return of_span(add(t,d))}
    function sub_span(t,d){return of_span(sub(t,d))}
    function diff(t1,t0){return sub(t1,t0)}
    var mlen=_J_.slice();
    function of_date_time(param)
     {var
       t=param[2],
       tz_offset_s=t[2],
       match$0=t[1],
       ss$0=match$0[3],
       mm$0=match$0[2],
       hh$0=match$0[1],
       date=param[1],
       d=date[3],
       m$0=date[2],
       y$0=date[1],
       _aU_=0 <= y$0?1:0;
      if(_aU_)
       {var _aV_=y$0 <= 9999?1:0;
        if(_aV_)
         {var _aW_=1 <= m$0?1:0;
          if(_aW_)
           {var _aX_=m$0 <= 12?1:0;
            if(_aX_)
             {var _aY_=1 <= d?1:0;
              if(_aY_)
               {var switch$0=0;
                if(2 === m$0)
                 {var _aQ_=0 === (y$0 % 4 | 0)?1:0;
                  if(_aQ_)
                   var
                    _aR_=0 !== (y$0 % 100 | 0)?1:0,
                    _aS_=_aR_ || (0 === (y$0 % 400 | 0)?1:0);
                  else
                   var _aS_=_aQ_;
                  if(_aS_){var _aZ_=29;switch$0 = 1}}
                if(! switch$0)
                 var
                  _aT_=m$0 - 1 | 0,
                  _aZ_=caml_check_bound(mlen,_aT_)[1 + _aT_];
                var _a0_=d <= _aZ_?1:0}
              else
               var _a0_=_aY_}
            else
             var _a0_=_aX_}
          else
           var _a0_=_aW_}
        else
         var _a0_=_aV_}
      else
       var _a0_=_aU_;
      if(_a0_)
       {var match=t[1],ss=match[3],mm=match[2],hh=match[1],_a1_=0 <= hh?1:0;
        if(_a1_)
         {var _a2_=hh <= 23?1:0;
          if(_a2_)
           {var _a3_=0 <= mm?1:0;
            if(_a3_)
             {var _a4_=mm <= 59?1:0;
              if(_a4_)
               var _a5_=0 <= ss?1:0,_a6_=_a5_?ss <= 60?1:0:_a5_;
              else
               var _a6_=_a4_}
            else
             var _a6_=_a3_}
          else
           var _a6_=_a2_}
        else
         var _a6_=_a1_;
        if(_a6_)
         {var
           day=date[3],
           month=date[2],
           year=date[1],
           a=(14 - month | 0) / 12 | 0,
           y=(year + 4800 | 0) - a | 0,
           m=(month + (12 * a | 0) | 0) - 3 | 0,
           d$0=
            ((((((day + (((153 * m | 0) + 2 | 0) / 5 | 0) | 0)
                 +
                 (365 * y | 0)
                 |
                 0)
                +
                (y / 4 | 0)
                |
                0)
               -
               (y / 100 | 0)
               |
               0)
              +
              (y / 400 | 0)
              |
              0)
             -
             32045
             |
             0)
            -
            2440588
            |
            0,
           hh_ps=caml_int64_mul(caml_int64_of_int32(hh$0),ps_count_in_hour),
           mm_ps=caml_int64_mul(caml_int64_of_int32(mm$0),ps_count_in_min),
           ss_ps=caml_int64_mul(caml_int64_of_int32(ss$0),pow),
           ps=caml_int64_add(hh_ps,caml_int64_add(mm_ps,ss_ps));
          return sub_span([0,d$0,ps],of_int_s(tz_offset_s))}}
      return 0}
    function to_date_time(opt,t)
     {if(opt)var sth=opt[1],tz_offset_s=sth;else var tz_offset_s=0;
      var match=add_span(t,of_int_s(tz_offset_s));
      if(match)
       var local=match[1],tz_offset_s$0=tz_offset_s,ps=local[2],d$0=local[1];
      else
       var tz_offset_s$0=0,ps=t[2],d$0=t[1];
      var
       jd=d$0 + 2440588 | 0,
       a=jd + 32044 | 0,
       b=((4 * a | 0) + 3 | 0) / 146097 | 0,
       c=a - ((146097 * b | 0) / 4 | 0) | 0,
       d=((4 * c | 0) + 3 | 0) / 1461 | 0,
       e=c - ((1461 * d | 0) / 4 | 0) | 0,
       m=((5 * e | 0) + 2 | 0) / 153 | 0,
       day=(e - (((153 * m | 0) + 2 | 0) / 5 | 0) | 0) + 1 | 0,
       month=(m + 3 | 0) - (12 * (m / 10 | 0) | 0) | 0,
       year=(((100 * b | 0) + d | 0) - 4800 | 0) + (m / 10 | 0) | 0,
       date=[0,year,month,day],
       hh=caml_int64_to_int32(caml_int64_div(ps,ps_count_in_hour)),
       hh_rem=caml_int64_mod(ps,ps_count_in_hour),
       mm=caml_int64_to_int32(caml_int64_div(hh_rem,ps_count_in_min)),
       mm_rem=caml_int64_mod(hh_rem,ps_count_in_min),
       ss=caml_int64_to_int32(caml_int64_div(mm_rem,pow));
      return [0,date,[0,[0,hh,mm,ss],tz_offset_s$0]]}
    function of_date(date){return of_date_time([0,date,_K_])}
    function to_date(t){return to_date_time(_L_,t)[1]}
    var wday=_M_.slice();
    function weekday(opt,t)
     {if(opt)var sth=opt[1],tz_offset_s=sth;else var tz_offset_s=0;
      var
       match=add(t,of_int_s(tz_offset_s)),
       d=match[1],
       i=d % 7 | 0,
       i$0=0 <= i?i:7 + i | 0;
      return caml_check_bound(wday,i$0)[1 + i$0]}
    function pp_rfc3339_error(ppf,param)
     {if(typeof param === "number")
       return 3456159 === param
               ?caml_call2(Stdlib_format[123],ppf,_N_)
               :415233371 <= param
                 ?caml_call2(Stdlib_format[123],ppf,_O_)
                 :caml_call2(Stdlib_format[123],ppf,_P_);
      var cs=param[2];
      function pp_chars(ppf,param)
       {var param$0=param;
        for(;;)
         {if(param$0)
           {var cs=param$0[2],c=param$0[1];
            caml_call3(Stdlib_format[123],ppf,_Q_,c);
            var param$0=cs;
            continue}
          return 0}}
      return caml_call4(Stdlib_format[123],ppf,_R_,pp_chars,cs)}
    function rfc3339_error_to_msg(v)
     {if(0 === v[0])return v;
      var _aP_=v[1][2],err=_aP_[2],match=_aP_[1],e=match[2],s=match[1];
      return [1,
              [0,
               3854881,
               caml_call5(Stdlib_format[127],_S_,s,e,pp_rfc3339_error,err)]]}
    var RFC3339=[248,cst_Ptime_RFC3339,runtime.caml_fresh_oo_id(0)];
    function error(r,e){throw [0,RFC3339,r,e]}
    function error_pos(p,e){return error([0,p,p],e)}
    function error_exp_digit(p){return error_pos(p,_T_)}
    function is_digit(param)
     {var switcher=param - 48 | 0;return 9 < switcher >>> 0?0:1}
    function parse_digits(count,k,max,s)
     {var stop=(k + count | 0) - 1 | 0;
      if(max < stop)return error_pos(max,3456159);
      var k$0=k,acc=0;
      for(;;)
       {if(stop < k$0)return acc;
        if(is_digit(caml_string_get(s,k$0)))
         {var
           acc$0=((acc * 10 | 0) + caml_string_get(s,k$0) | 0) - 48 | 0,
           k$1=k$0 + 1 | 0,
           k$0=k$1,
           acc=acc$0;
          continue}
        return error_exp_digit(k$0)}}
    function parse_char(c,pos,max,s)
     {return max < pos
              ?error_pos(max,3456159)
              :caml_string_get(s,pos) === c
                ?0
                :error_pos(pos,[0,498443355,[0,c,0]])}
    function parse_dt_sep(strict,pos,max,s)
     {if(max < pos)return error_pos(max,3456159);
      var param=caml_string_get(s,pos),switcher=param - 33 | 0,switch$0=0;
      if(82 < switcher >>> 0)
       {var switcher$0=switcher + 1 | 0;
        if(! (84 < switcher$0 >>> 0) && ! strict){var _aN_=1;switch$0 = 1}}
      else
       if(51 === switcher){var _aN_=1;switch$0 = 1}
      if(! switch$0)var _aN_=0;
      if(_aN_)return 0;
      var _aO_=strict?0:_V_;
      return error_pos(pos,[0,498443355,caml_call2(Stdlib[37],_U_,_aO_)])}
    function decide_frac_or_tz(strict,pos,max,s)
     {if(max < pos)return error_pos(max,3456159);
      var c=caml_string_get(s,pos),switch$0=0;
      if(90 <= c)
       {if(122 === c)
         {if(! strict)return 18854}
        else
         if(! (91 <= c))switch$0 = 1}
      else
       if(44 <= c)
        {if(! (47 <= c))
          {var switcher=c - 44 | 0;
           switch(switcher)
            {case 0:break;case 1:switch$0 = 1;break;default:return 781960526}}}
       else
        if(43 <= c)switch$0 = 1;
      if(switch$0)return 18854;
      var _aM_=strict?0:_X_,chars=caml_call2(Stdlib[37],_W_,_aM_);
      return error_pos(pos,[0,498443355,chars])}
    function parse_frac_ps(pos,max,s)
     {if(max < pos)return error_pos(max,3456159);
      if(is_digit(caml_string_get(s,pos)))
       {var k=pos,acc$0=acc,pow$0=pow;
        for(;;)
         {if(max < k)return error_pos(max,3456159);
          if(is_digit(caml_string_get(s,k)))
           {var count=(k - pos | 0) + 1 | 0;
            if(12 < count){var k$0=k + 1 | 0,k=k$0;continue}
            var
             pow$1=caml_int64_div(pow$0,_Y_),
             acc$1=
              caml_int64_add
               (acc$0,
                caml_int64_mul
                 (caml_int64_of_int32(caml_string_get(s,k) - 48 | 0),pow$1)),
             k$1=k + 1 | 0,
             k=k$1,
             acc$0=acc$1,
             pow$0=pow$1;
            continue}
          return [0,[0,acc$0],k]}}
      return error_exp_digit(pos)}
    function parse_tz_s(strict,pos,max,s)
     {function parse_tz_mag(sign,hh_pos)
       {var mm_pos=hh_pos + 3 | 0,hh=parse_digits(2,hh_pos,max,s);
        parse_char(58,mm_pos - 1 | 0,max,s);
        var mm=parse_digits(2,mm_pos,max,s);
        if(23 < hh)return error([0,hh_pos,hh_pos + 1 | 0],415233371);
        if(59 < mm)return error([0,mm_pos,mm_pos + 1 | 0],415233371);
        var
         secs=(hh * 3600 | 0) + (mm * 60 | 0) | 0,
         _aK_=0 === secs?1:0,
         _aL_=_aK_?-1 === sign?1:0:_aK_,
         tz_s=_aL_?0:[0,runtime.caml_mul(sign,secs)];
        return [0,tz_s,mm_pos + 1 | 0]}
      if(max < pos)return error_pos(max,3456159);
      var c=caml_string_get(s,pos);
      if(90 === c)return [0,_Z_,pos];
      if(46 <= c)
       {if(122 === c && ! strict)return [0,_aa_,pos]}
      else
       if(43 <= c)
        {var switcher=c - 43 | 0;
         switch(switcher)
          {case 0:return parse_tz_mag(1,pos + 1 | 0);
           case 1:break;
           default:return parse_tz_mag(-1,pos + 1 | 0)}}
      var _aJ_=strict?0:_$_,chars=caml_call2(Stdlib[37],___,_aJ_);
      return error_pos(pos,[0,498443355,chars])}
    function of_rfc3339(opt,_aD_,_aC_,s)
     {if(opt)var sth=opt[1],strict=sth;else var strict=0;
      if(_aD_)var sth$0=_aD_[1],sub=sth$0;else var sub=0;
      if(_aC_)var sth$1=_aC_[1],start=sth$1;else var start=0;
      try
       {var
         s_len=runtime.caml_ml_string_length(s),
         max=s_len - 1 | 0,
         switch$0=0;
        if(0 !== s_len && 0 <= start && ! (max < start))
         {var
           m_pos=start + 5 | 0,
           d_pos=m_pos + 3 | 0,
           hh_pos=d_pos + 3 | 0,
           mm_pos=hh_pos + 3 | 0,
           ss_pos=mm_pos + 3 | 0,
           decide_pos=ss_pos + 2 | 0,
           y=parse_digits(4,start,max,s);
          parse_char(45,m_pos - 1 | 0,max,s);
          var m=parse_digits(2,m_pos,max,s);
          parse_char(45,d_pos - 1 | 0,max,s);
          var d=parse_digits(2,d_pos,max,s);
          parse_dt_sep(strict,hh_pos - 1 | 0,max,s);
          var hh=parse_digits(2,hh_pos,max,s);
          parse_char(58,mm_pos - 1 | 0,max,s);
          var mm=parse_digits(2,mm_pos,max,s);
          parse_char(58,ss_pos - 1 | 0,max,s);
          var
           ss=parse_digits(2,ss_pos,max,s),
           match=decide_frac_or_tz(strict,decide_pos,max,s);
          if(781960526 <= match)
           var
            _aF_=parse_frac_ps(decide_pos + 1 | 0,max,s),
            tz_pos=_aF_[2],
            frac=_aF_[1];
          else
           var tz_pos=decide_pos,frac=0;
          var
           match$0=parse_tz_s(strict,tz_pos,max,s),
           last_pos=match$0[2],
           tz_s_opt=match$0[1];
          if(tz_s_opt)var s$0=tz_s_opt[1],tz_s=s$0;else var tz_s=0;
          var match$1=of_date_time([0,[0,y,m,d],[0,[0,hh,mm,ss],tz_s]]);
          if(match$1)
           {var t=match$1[1],switch$1=0;
            if(frac)
             {var _aG_=frac[1];
              if(caml_notequal(_aG_,_ab_))
               {var match$2=add_span(t,[0,0,_aG_]);
                if(match$2)
                 var t$0=match$2[1],t$1=t$0;
                else
                 var t$1=error([0,start,last_pos],415233371)[1]}
              else
               switch$1 = 1}
            else
             switch$1 = 1;
            if(switch$1)var t$1=t;
            var switch$2=0;
            if(! sub && last_pos !== max)
             {var _aH_=error_pos(last_pos + 1 | 0,-493009593);switch$2 = 1}
            if(! switch$2)
             var _aH_=[0,[0,t$1,tz_s_opt,(last_pos - start | 0) + 1 | 0]];
            var _aI_=_aH_}
          else
           var _aI_=error([0,start,last_pos],415233371);
          var _aE_=_aI_;
          switch$0 = 1}
        if(! switch$0)var _aE_=error_pos(start,3456159);
        return _aE_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === RFC3339)
         {var e=exn[3],r=exn[2];return [1,[0,76606165,[0,r,e]]]}
        throw exn}}
    function rfc3339_adjust_tz_offset(tz_offset_s)
     {if
       (-86340
        <=
        tz_offset_s
        &&
        tz_offset_s
        <=
        86340
        &&
        0
        ===
        (tz_offset_s % 60 | 0))
       return [0,tz_offset_s,0];
      return _ac_}
    function s_frac_of_ps(frac,ps)
     {return caml_int64_div
              (caml_int64_mod(ps,pow),
               caml_check_bound(frac_div,frac)[1 + frac])}
    function to_rfc3339(opt,_aw_,tz_offset_s,t)
     {var ps=t[2];
      if(opt)var sth=opt[1],space=sth;else var space=0;
      if(_aw_)var sth$0=_aw_[1],frac=sth$0;else var frac=0;
      var buf=caml_call1(Stdlib_buffer[1],255);
      if(tz_offset_s)
       var
        tz=tz_offset_s[1],
        _ax_=rfc3339_adjust_tz_offset(tz),
        tz_unknown=_ax_[2],
        tz_offset_s$0=_ax_[1];
      else
       var tz_unknown=1,tz_offset_s$0=0;
      var
       _ay_=to_date_time([0,tz_offset_s$0],t),
       _az_=_ay_[2],
       tz_offset_s$1=_az_[2],
       _aA_=_az_[1],
       mm=_aA_[3],
       ss=_aA_[2],
       hh=_aA_[1],
       match=_ay_[1],
       d=match[3],
       m=match[2],
       y=match[1],
       dt_sep=space?32:84;
      caml_call9(Stdlib_printf[5],buf,_ad_,y,m,d,dt_sep,hh,ss,mm);
      var frac$0=0 <= frac?12 < frac?12:frac:0;
      if(0 !== frac$0)
       {var _aB_=s_frac_of_ps(frac$0,ps);
        caml_call4(Stdlib_printf[5],buf,_ae_,frac$0,_aB_)}
      var switch$0=0;
      if(0 === tz_offset_s$1 && ! tz_unknown)
       {caml_call2(Stdlib_printf[5],buf,_ag_);switch$0 = 1}
      if(! switch$0)
       {var switch$1=0;
        if(0 <= tz_offset_s$1 && ! tz_unknown){var tz_sign=43;switch$1 = 1}
        if(! switch$1)var tz_sign=45;
        var
         tz_min=caml_call1(Stdlib[18],tz_offset_s$1 / 60 | 0),
         tz_hh=tz_min / 60 | 0,
         tz_mm=tz_min % 60 | 0;
        caml_call5(Stdlib_printf[5],buf,_af_,tz_sign,tz_hh,tz_mm)}
      return caml_call1(Stdlib_buffer[2],buf)}
    function pp_rfc3339(space,frac_s,tz_offset_s,param,ppf,t)
     {var _av_=to_rfc3339(space,frac_s,tz_offset_s,t);
      return caml_call3(Stdlib_format[123],ppf,_ah_,_av_)}
    function pp_human(opt,tz_offset_s,param,ppf,t)
     {var ps=t[2];
      if(opt)var sth=opt[1],frac=sth;else var frac=0;
      if(tz_offset_s)
       var
        tz=tz_offset_s[1],
        _aq_=rfc3339_adjust_tz_offset(tz),
        tz_unknown=_aq_[2],
        tz_offset_s$0=_aq_[1];
      else
       var tz_unknown=1,tz_offset_s$0=0;
      var
       _ar_=to_date_time([0,tz_offset_s$0],t),
       _as_=_ar_[2],
       tz_offset_s$1=_as_[2],
       _at_=_as_[1],
       mm=_at_[3],
       ss=_at_[2],
       hh=_at_[1],
       match=_ar_[1],
       d=match[3],
       m=match[2],
       y=match[1];
      caml_call8(Stdlib_format[123],ppf,_ai_,y,m,d,hh,ss,mm);
      var frac$0=0 <= frac?12 < frac?12:frac:0;
      if(0 !== frac$0)
       {var _au_=s_frac_of_ps(frac$0,ps);
        caml_call4(Stdlib_format[123],ppf,_aj_,frac$0,_au_)}
      var switch$0=0;
      if(0 <= tz_offset_s$1 && ! tz_unknown){var tz_sign=43;switch$0 = 1}
      if(! switch$0)var tz_sign=45;
      var
       tz_min=caml_call1(Stdlib[18],tz_offset_s$1 / 60 | 0),
       tz_hh=tz_min / 60 | 0,
       tz_mm=tz_min % 60 | 0;
      caml_call5(Stdlib_format[123],ppf,_ak_,tz_sign,tz_hh,tz_mm);
      return 0}
    var _al_=0,_an_=0;
    function pp$0(_ao_,_ap_){return pp_human(_an_,_am_,_al_,_ao_,_ap_)}
    var
     Ptime=
      [0,
       [0,
        v,
        zero,
        of_d_ps,
        unsafe_of_d_ps,
        unsafe_of_d_ps_option,
        to_d_ps,
        of_int_s,
        to_int_s,
        of_float_s,
        to_float_s,
        equal,
        compare,
        neg,
        add,
        sub,
        abs,
        round,
        truncate,
        pp,
        dump],
       v$0,
       epoch,
       min,
       max,
       of_span,
       to_span,
       unsafe_of_d_ps$0,
       of_float_s$0,
       to_float_s,
       truncate,
       frac_s,
       equal,
       compare,
       is_earlier,
       is_later,
       add_span,
       sub_span,
       diff,
       of_date_time,
       to_date_time,
       of_date,
       to_date,
       weekday,
       pp_rfc3339_error,
       rfc3339_error_to_msg,
       of_rfc3339,
       to_rfc3339,
       pp_rfc3339,
       pp_human,
       pp$0,
       dump];
    runtime.caml_register_global(101,Ptime,"Ptime");
    return}
  (function(){return this}()));


//# 1 "../lib/.smartml.objs/smartml.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_compare=runtime.caml_compare,
     caml_equal=runtime.caml_equal,
     caml_fresh_oo_id=runtime.caml_fresh_oo_id,
     caml_int_compare=runtime.caml_int_compare,
     caml_int_of_string=runtime.caml_int_of_string,
     caml_lessthan=runtime.caml_lessthan,
     caml_list_of_js_array=runtime.caml_list_of_js_array,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_mod=runtime.caml_mod,
     caml_mul=runtime.caml_mul,
     caml_notequal=runtime.caml_notequal,
     caml_obj_tag=runtime.caml_obj_tag,
     caml_register_global=runtime.caml_register_global,
     caml_string_compare=runtime.caml_string_compare,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_update_dummy=runtime.caml_update_dummy,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    function caml_call8(f,a0,a1,a2,a3,a4,a5,a6,a7)
     {return f.length == 8
              ?f(a0,a1,a2,a3,a4,a5,a6,a7)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7])}
    function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8)
     {return f.length == 9
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])}
    function caml_call11(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
     {return f.length == 11
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10])}
    function caml_call13(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)
     {return f.length == 13
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)
              :runtime.caml_call_gen
                (f,[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12])}
    function caml_call14(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)
     {return f.length == 14
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)
              :runtime.caml_call_gen
                (f,[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_SmartPy=caml_string_of_jsbytes("SmartPy"),
     cst_SmartML=caml_string_of_jsbytes("SmartML"),
     cst_SmartTS=caml_string_of_jsbytes("SmartTS"),
     cst_Delphi=caml_string_of_jsbytes("Delphi"),
     cst_Edo=caml_string_of_jsbytes("Edo"),
     cst_Florence=caml_string_of_jsbytes("Florence"),
     cst_Granada=caml_string_of_jsbytes("Granada"),
     cst_FullDebug=caml_string_of_jsbytes("FullDebug"),
     cst_Message=caml_string_of_jsbytes("Message"),
     cst_VerifyOrLine=caml_string_of_jsbytes("VerifyOrLine"),
     cst_DefaultLine=caml_string_of_jsbytes("DefaultLine"),
     cst_Line=caml_string_of_jsbytes("Line"),
     cst_DefaultUnit=caml_string_of_jsbytes("DefaultUnit"),
     cst_Unit=caml_string_of_jsbytes("Unit"),
     cst_Comb=caml_string_of_jsbytes("Comb"),
     cst_Tree=caml_string_of_jsbytes("Tree"),
     cst_Config_Decompile=caml_string_of_jsbytes("Config.Decompile"),
     cst_Config_Disable_dup_check=
      caml_string_of_jsbytes("Config.Disable_dup_check"),
     cst_Config_Dump_michel=caml_string_of_jsbytes("Config.Dump_michel"),
     cst_Config_Erase_comments=caml_string_of_jsbytes("Config.Erase_comments"),
     cst_Config_Erase_var_annots=
      caml_string_of_jsbytes("Config.Erase_var_annots"),
     cst_Config_Initial_cast=caml_string_of_jsbytes("Config.Initial_cast"),
     cst_Config_Pairn=caml_string_of_jsbytes("Config.Pairn"),
     cst_Config_Simplify=caml_string_of_jsbytes("Config.Simplify"),
     cst_Config_Simplify_via_michel=
      caml_string_of_jsbytes("Config.Simplify_via_michel"),
     cst_Config_Single_entry_point_=
      caml_string_of_jsbytes("Config.Single_entry_point_annotation"),
     cst_Config_Warn_unused=caml_string_of_jsbytes("Config.Warn_unused"),
     cst_Config_Lazy_entry_points=
      caml_string_of_jsbytes("Config.Lazy_entry_points"),
     cst_default_record_layout$0=
      caml_string_of_jsbytes("default_record_layout"),
     cst_default_variant_layout$0=
      caml_string_of_jsbytes("default_variant_layout"),
     cst_exceptions$0=caml_string_of_jsbytes("exceptions"),
     cst_languages$0=caml_string_of_jsbytes("languages"),
     cst_protocol$0=caml_string_of_jsbytes("protocol"),
     cst=caml_string_of_jsbytes(""),
     cst_smartml=caml_string_of_jsbytes("smartml"),
     cst_smartpy=caml_string_of_jsbytes("smartpy"),
     cst_smartts=caml_string_of_jsbytes("smartts"),
     cst_Empty_languages_flag_is_fo=
      caml_string_of_jsbytes("Empty 'languages' flag is forbidden"),
     cst_debug_message=caml_string_of_jsbytes("debug-message"),
     cst_default_line=caml_string_of_jsbytes("default-line"),
     cst_default_unit=caml_string_of_jsbytes("default-unit"),
     cst_full_debug=caml_string_of_jsbytes("full-debug"),
     cst_line=caml_string_of_jsbytes("line"),
     cst_unit=caml_string_of_jsbytes("unit"),
     cst_verify_or_line=caml_string_of_jsbytes("verify-or-line"),
     cst_comb=caml_string_of_jsbytes("comb"),
     cst_tree=caml_string_of_jsbytes("tree"),
     cst_delphi=caml_string_of_jsbytes("delphi"),
     cst_edo=caml_string_of_jsbytes("edo"),
     cst_florence=caml_string_of_jsbytes("florence"),
     cst_granada=caml_string_of_jsbytes("granada"),
     cst_no=caml_string_of_jsbytes("no-"),
     cst_lazy_entry_points$0=caml_string_of_jsbytes("lazy-entry-points"),
     cst_decompile$0=caml_string_of_jsbytes("decompile"),
     cst_disable_dup_check$0=caml_string_of_jsbytes("disable-dup-check"),
     cst_dump_michel$0=caml_string_of_jsbytes("dump-michel"),
     cst_erase_comments$0=caml_string_of_jsbytes("erase-comments"),
     cst_erase_var_annots$0=caml_string_of_jsbytes("erase-var-annots"),
     cst_initial_cast$0=caml_string_of_jsbytes("initial-cast"),
     cst_pairn$0=caml_string_of_jsbytes("pairn"),
     cst_simplify$0=caml_string_of_jsbytes("simplify"),
     cst_simplify_via_michel$0=caml_string_of_jsbytes("simplify-via-michel"),
     cst_single_entry_point_annotat$0=
      caml_string_of_jsbytes("single-entry-point-annotation"),
     cst_warn_unused$0=caml_string_of_jsbytes("warn-unused"),
     cst_simplify=caml_string_of_jsbytes("simplify"),
     cst_simplify_via_michel=caml_string_of_jsbytes("simplify_via_michel"),
     cst_decompile=caml_string_of_jsbytes("decompile"),
     cst_erase_comments=caml_string_of_jsbytes("erase_comments"),
     cst_disable_dup_check=caml_string_of_jsbytes("disable_dup_check"),
     cst_protocol=caml_string_of_jsbytes("protocol"),
     cst_lazy_entry_points=caml_string_of_jsbytes("lazy_entry_points"),
     cst_exceptions=caml_string_of_jsbytes("exceptions"),
     cst_default_variant_layout=
      caml_string_of_jsbytes("default_variant_layout"),
     cst_default_record_layout=caml_string_of_jsbytes("default_record_layout"),
     cst_initial_cast=caml_string_of_jsbytes("initial_cast"),
     cst_erase_var_annots=caml_string_of_jsbytes("erase_var_annots"),
     cst_pairn=caml_string_of_jsbytes("pairn"),
     cst_dump_michel=caml_string_of_jsbytes("dump_michel"),
     cst_single_entry_point_annotat=
      caml_string_of_jsbytes("single_entry_point_annotation"),
     cst_warn_unused=caml_string_of_jsbytes("warn_unused"),
     cst_languages=caml_string_of_jsbytes("languages"),
     config=[0,1,0,0,0,0,2,0,2,0,0,1,0,1,0,1,1,[0,0,0]],
     cst_dynamic_id=caml_string_of_jsbytes("dynamic_id"),
     cst_static_id=caml_string_of_jsbytes("static_id"),
     cst_source=caml_string_of_jsbytes("source"),
     cst_target=caml_string_of_jsbytes("target"),
     cst_ref=caml_string_of_jsbytes("ref ("),
     cst$0=caml_string_of_jsbytes(")"),
     cst_Unknown=caml_string_of_jsbytes("Unknown"),
     cst_Some$1=caml_string_of_jsbytes("(Some "),
     cst$3=caml_string_of_jsbytes(")"),
     cst_None$1=caml_string_of_jsbytes("None"),
     cst_Unit$0=caml_string_of_jsbytes("Unit"),
     cst_i=caml_string_of_jsbytes("i"),
     cst_is_nat=caml_string_of_jsbytes("is_nat"),
     cst_Some$0=caml_string_of_jsbytes("(Some "),
     cst$2=caml_string_of_jsbytes(")"),
     cst_None$0=caml_string_of_jsbytes("None"),
     cst_Some=caml_string_of_jsbytes("(Some "),
     cst$1=caml_string_of_jsbytes(")"),
     cst_None=caml_string_of_jsbytes("None"),
     cst_Literal_source=caml_string_of_jsbytes("Literal.source"),
     cst_target$0=caml_string_of_jsbytes("target"),
     cst_amount=caml_string_of_jsbytes("amount"),
     cst_memo$0=caml_string_of_jsbytes("memo"),
     cst_Literal_test=caml_string_of_jsbytes("Literal.test"),
     cst_memo=caml_string_of_jsbytes("memo"),
     cst_elements=caml_string_of_jsbytes("elements"),
     cst_pkh=caml_string_of_jsbytes("pkh"),
     cst_pk=caml_string_of_jsbytes("pk"),
     cst_sk=caml_string_of_jsbytes("sk"),
     cst_a1=caml_string_of_jsbytes("a1"),
     cst_a2=caml_string_of_jsbytes("a2"),
     cst_a1$0=caml_string_of_jsbytes("a1"),
     b1=caml_string_of_jsbytes("hello world!"),
     cst_final=caml_string_of_jsbytes("final"),
     cst_cases=caml_string_of_jsbytes("cases"),
     cst_comb_layout=caml_string_of_jsbytes("comb_layout"),
     cst_Right$0=caml_string_of_jsbytes("Right"),
     cst_Left$0=caml_string_of_jsbytes("Left"),
     cst_Some$2=caml_string_of_jsbytes("Some"),
     cst_None$2=caml_string_of_jsbytes("None"),
     cst_Right=caml_string_of_jsbytes("Right"),
     cst_Left=caml_string_of_jsbytes("Left"),
     cst_tail=caml_string_of_jsbytes("tail"),
     cst_head=caml_string_of_jsbytes("head"),
     cst_value=caml_string_of_jsbytes("value"),
     cst_key=caml_string_of_jsbytes("key"),
     cst_default_layout_of_size_0=
      caml_string_of_jsbytes("default_layout of size 0"),
     cst_ref$0=caml_string_of_jsbytes("ref ("),
     cst$4=caml_string_of_jsbytes(")"),
     cst_TSecretKey=caml_string_of_jsbytes("TSecretKey"),
     cst_isNat=caml_string_of_jsbytes("isNat"),
     cst_t=caml_string_of_jsbytes("t"),
     cst_cases$0=caml_string_of_jsbytes("cases"),
     cst_layout=caml_string_of_jsbytes("layout"),
     cst_row=caml_string_of_jsbytes("row"),
     cst_layout$0=caml_string_of_jsbytes("layout"),
     cst_row$0=caml_string_of_jsbytes("row"),
     cst_memo$1=caml_string_of_jsbytes("memo"),
     cst_memo$2=caml_string_of_jsbytes("memo"),
     cst_secret_key=caml_string_of_jsbytes("secret_key"),
     cst_public_key_hash=caml_string_of_jsbytes("public_key_hash"),
     cst_public_key=caml_string_of_jsbytes("public_key"),
     cst_address=caml_string_of_jsbytes("address"),
     cst_seed=caml_string_of_jsbytes("seed"),
     cst_BNeq=caml_string_of_jsbytes("BNeq"),
     cst_BEq=caml_string_of_jsbytes("BEq"),
     cst_BAnd=caml_string_of_jsbytes("BAnd"),
     cst_BOr=caml_string_of_jsbytes("BOr"),
     cst_BAdd=caml_string_of_jsbytes("BAdd"),
     cst_BSub=caml_string_of_jsbytes("BSub"),
     cst_BDiv=caml_string_of_jsbytes("BDiv"),
     cst_BEDiv=caml_string_of_jsbytes("BEDiv"),
     cst_BMod=caml_string_of_jsbytes("BMod"),
     cst_BLt=caml_string_of_jsbytes("BLt"),
     cst_BLe=caml_string_of_jsbytes("BLe"),
     cst_BGt=caml_string_of_jsbytes("BGt"),
     cst_BGe=caml_string_of_jsbytes("BGe"),
     cst_BXor=caml_string_of_jsbytes("BXor"),
     cst_overloaded=caml_string_of_jsbytes("overloaded"),
     cst_BMin=caml_string_of_jsbytes("BMin"),
     cst_BMax=caml_string_of_jsbytes("BMax"),
     cst_Some$7=caml_string_of_jsbytes("(Some "),
     cst$9=caml_string_of_jsbytes(")"),
     cst_None$7=caml_string_of_jsbytes("None"),
     cst_Some$6=caml_string_of_jsbytes("(Some "),
     cst$8=caml_string_of_jsbytes(")"),
     cst_None$6=caml_string_of_jsbytes("None"),
     cst_tparameter=caml_string_of_jsbytes("tparameter"),
     cst_tparameter_lazy=caml_string_of_jsbytes("tparameter_lazy"),
     cst_tparameter_non_lazy=caml_string_of_jsbytes("tparameter_non_lazy"),
     cst_tparameter_full=caml_string_of_jsbytes("tparameter_full"),
     cst_tstorage=caml_string_of_jsbytes("tstorage"),
     cst_Some$15=caml_string_of_jsbytes("(Some "),
     cst$17=caml_string_of_jsbytes(")"),
     cst_None$15=caml_string_of_jsbytes("None"),
     cst_address$0=caml_string_of_jsbytes("address"),
     cst_entry_point=caml_string_of_jsbytes("entry_point"),
     cst_type=caml_string_of_jsbytes("type_"),
     cst_EConcat_list=caml_string_of_jsbytes("EConcat_list"),
     cst_EAddress=caml_string_of_jsbytes("EAddress"),
     cst_EImplicit_account=caml_string_of_jsbytes("EImplicit_account"),
     cst_EListRev=caml_string_of_jsbytes("EListRev"),
     cst_ENeg=caml_string_of_jsbytes("ENeg"),
     cst_EPack=caml_string_of_jsbytes("EPack"),
     cst_EToConstant=caml_string_of_jsbytes("EToConstant"),
     cst_ESetDelegate=caml_string_of_jsbytes("ESetDelegate"),
     cst_ESign=caml_string_of_jsbytes("ESign"),
     cst_ESize=caml_string_of_jsbytes("ESize"),
     cst_ESum=caml_string_of_jsbytes("ESum"),
     cst_EToInt=caml_string_of_jsbytes("EToInt"),
     cst_EReadTicket=caml_string_of_jsbytes("EReadTicket"),
     cst_EJoinTickets=caml_string_of_jsbytes("EJoinTickets"),
     cst_EPairingCheck=caml_string_of_jsbytes("EPairingCheck"),
     cst_EVotingPower=caml_string_of_jsbytes("EVotingPower"),
     cst_EUnbounded=caml_string_of_jsbytes("EUnbounded"),
     cst_ESplit_tokens=caml_string_of_jsbytes("ESplit_tokens"),
     cst_ERange=caml_string_of_jsbytes("ERange"),
     cst_EUpdate_map=caml_string_of_jsbytes("EUpdate_map"),
     cst_EGet_and_update=caml_string_of_jsbytes("EGet_and_update"),
     cst_EIf=caml_string_of_jsbytes("EIf"),
     cst_ETest_ticket=caml_string_of_jsbytes("ETest_ticket"),
     cst_var=caml_string_of_jsbytes("var"),
     cst_field=caml_string_of_jsbytes("field"),
     cst_fun=caml_string_of_jsbytes("<fun>"),
     cst_kind=caml_string_of_jsbytes("kind"),
     cst_Some$36=caml_string_of_jsbytes("(Some "),
     cst$38=caml_string_of_jsbytes(")"),
     cst_None$36=caml_string_of_jsbytes("None"),
     cst_Some$35=caml_string_of_jsbytes("(Some "),
     cst$37=caml_string_of_jsbytes(")"),
     cst_None$35=caml_string_of_jsbytes("None"),
     cst_Some$34=caml_string_of_jsbytes("(Some "),
     cst$36=caml_string_of_jsbytes(")"),
     cst_None$34=caml_string_of_jsbytes("None"),
     cst_Some$33=caml_string_of_jsbytes("(Some "),
     cst$35=caml_string_of_jsbytes(")"),
     cst_None$33=caml_string_of_jsbytes("None"),
     cst_Some$32=caml_string_of_jsbytes("(Some "),
     cst$34=caml_string_of_jsbytes(")"),
     cst_None$32=caml_string_of_jsbytes("None"),
     cst_Some$31=caml_string_of_jsbytes("(Some "),
     cst$33=caml_string_of_jsbytes(")"),
     cst_None$31=caml_string_of_jsbytes("None"),
     cst_id$3=caml_string_of_jsbytes("id"),
     cst_contract$1=caml_string_of_jsbytes("contract"),
     cst_line_no$4=caml_string_of_jsbytes("line_no"),
     cst_accept_unknown_types=caml_string_of_jsbytes("accept_unknown_types"),
     cst_show=caml_string_of_jsbytes("show"),
     cst_id$4=caml_string_of_jsbytes("id"),
     cst_expression=caml_string_of_jsbytes("expression"),
     cst_line_no$5=caml_string_of_jsbytes("line_no"),
     cst_id$5=caml_string_of_jsbytes("id"),
     cst_line_no$6=caml_string_of_jsbytes("line_no"),
     cst_id$6=caml_string_of_jsbytes("id"),
     cst_valid=caml_string_of_jsbytes("valid"),
     cst_exception=caml_string_of_jsbytes("exception_"),
     cst_params$1=caml_string_of_jsbytes("params"),
     cst_line_no$7=caml_string_of_jsbytes("line_no"),
     cst_title=caml_string_of_jsbytes("title"),
     cst_messageClass=caml_string_of_jsbytes("messageClass"),
     cst_source$0=caml_string_of_jsbytes("source"),
     cst_sender=caml_string_of_jsbytes("sender"),
     cst_chain_id=caml_string_of_jsbytes("chain_id"),
     cst_time=caml_string_of_jsbytes("time"),
     cst_amount$2=caml_string_of_jsbytes("amount"),
     cst_level=caml_string_of_jsbytes("level"),
     cst_voting_powers=caml_string_of_jsbytes("voting_powers"),
     cst_message$0=caml_string_of_jsbytes("message"),
     cst_show$0=caml_string_of_jsbytes("show"),
     cst_export=caml_string_of_jsbytes("export"),
     cst_message$1=caml_string_of_jsbytes("message"),
     cst_tag=caml_string_of_jsbytes("tag"),
     cst_inner=caml_string_of_jsbytes("inner"),
     cst_line_no$8=caml_string_of_jsbytes("line_no"),
     cst_condition=caml_string_of_jsbytes("condition"),
     cst_line_no$9=caml_string_of_jsbytes("line_no"),
     cst_expression$0=caml_string_of_jsbytes("expression"),
     cst_html$0=caml_string_of_jsbytes("html"),
     cst_stripStrings=caml_string_of_jsbytes("stripStrings"),
     cst_compile=caml_string_of_jsbytes("compile"),
     cst_line_no$10=caml_string_of_jsbytes("line_no"),
     cst_id$7=caml_string_of_jsbytes("id"),
     cst_line_no$11=caml_string_of_jsbytes("line_no"),
     cst_baker$2=caml_string_of_jsbytes("baker"),
     cst_id$8=caml_string_of_jsbytes("id"),
     cst_model_id=caml_string_of_jsbytes("model_id"),
     cst_line_no$12=caml_string_of_jsbytes("line_no"),
     cst_flag=caml_string_of_jsbytes("flag"),
     cst_line_no$13=caml_string_of_jsbytes("line_no"),
     cst_Some$30=caml_string_of_jsbytes("(Some "),
     cst$32=caml_string_of_jsbytes(")"),
     cst_None$30=caml_string_of_jsbytes("None"),
     cst_Some$29=caml_string_of_jsbytes("(Some "),
     cst$31=caml_string_of_jsbytes(")"),
     cst_None$29=caml_string_of_jsbytes("None"),
     cst_ok=caml_string_of_jsbytes("ok"),
     cst_contract$0=caml_string_of_jsbytes("contract"),
     cst_operations$0=caml_string_of_jsbytes("operations"),
     cst_error=caml_string_of_jsbytes("error"),
     cst_html=caml_string_of_jsbytes("html"),
     cst_storage$3=caml_string_of_jsbytes("storage"),
     cst_steps=caml_string_of_jsbytes("steps"),
     cst_ref$1=caml_string_of_jsbytes("ref ("),
     cst$30=caml_string_of_jsbytes(")"),
     cst_Some$28=caml_string_of_jsbytes("(Some "),
     cst$29=caml_string_of_jsbytes(")"),
     cst_None$28=caml_string_of_jsbytes("None"),
     cst_command=caml_string_of_jsbytes("command"),
     cst_iters=caml_string_of_jsbytes("iters"),
     cst_locals=caml_string_of_jsbytes("locals"),
     cst_storage$2=caml_string_of_jsbytes("storage"),
     cst_balance$2=caml_string_of_jsbytes("balance"),
     cst_operations=caml_string_of_jsbytes("operations"),
     cst_substeps=caml_string_of_jsbytes("substeps"),
     cst_elements$0=caml_string_of_jsbytes("elements"),
     cst_Br=caml_string_of_jsbytes("`Br"),
     cst_channel$0=caml_string_of_jsbytes("channel"),
     cst_params$0=caml_string_of_jsbytes("params"),
     cst_not_a_lambda=caml_string_of_jsbytes("not a lambda"),
     cst_None$27=caml_string_of_jsbytes("None"),
     cst_Some$27=caml_string_of_jsbytes("Some"),
     cst_Absent$0=caml_string_of_jsbytes("`Absent"),
     cst_Initial=caml_string_of_jsbytes("`Initial"),
     cst_Some$26=caml_string_of_jsbytes("(Some "),
     cst$28=caml_string_of_jsbytes(")"),
     cst_None$26=caml_string_of_jsbytes("None"),
     cst_Some$25=caml_string_of_jsbytes("(Some "),
     cst$27=caml_string_of_jsbytes(")"),
     cst_None$25=caml_string_of_jsbytes("None"),
     cst_balance$1=caml_string_of_jsbytes("balance"),
     cst_storage$1=caml_string_of_jsbytes("storage"),
     cst_baker$1=caml_string_of_jsbytes("baker"),
     cst_lazy_entry_points$1=caml_string_of_jsbytes("lazy_entry_points"),
     cst_metadata$0=caml_string_of_jsbytes("metadata"),
     cst_template=caml_string_of_jsbytes("template"),
     cst_state$0=caml_string_of_jsbytes("state"),
     cst_Some$24=caml_string_of_jsbytes("(Some "),
     cst$26=caml_string_of_jsbytes(")"),
     cst_None$24=caml_string_of_jsbytes("None"),
     cst_params=caml_string_of_jsbytes("params"),
     cst_destination$0=caml_string_of_jsbytes("destination"),
     cst_amount$1=caml_string_of_jsbytes("amount"),
     cst_id$2=caml_string_of_jsbytes("id"),
     cst_instance=caml_string_of_jsbytes("instance"),
     cst_v=caml_string_of_jsbytes("v"),
     cst_tcontract=caml_string_of_jsbytes("tcontract"),
     cst_contract=caml_string_of_jsbytes("contract"),
     cst_c$0=caml_string_of_jsbytes("c"),
     cst_line_no$3=caml_string_of_jsbytes("line_no"),
     cst_e$0=caml_string_of_jsbytes("e"),
     cst_line_no$2=caml_string_of_jsbytes("line_no"),
     cst_c=caml_string_of_jsbytes("c"),
     cst_ct=caml_string_of_jsbytes("ct"),
     cst_line_no$1=caml_string_of_jsbytes("line_no"),
     cst_e=caml_string_of_jsbytes("e"),
     cst_et=caml_string_of_jsbytes("et"),
     cst_line_no$0=caml_string_of_jsbytes("line_no"),
     cst_no_location_info=caml_string_of_jsbytes("(no location info)"),
     cst_Some$23=caml_string_of_jsbytes("(Some "),
     cst$25=caml_string_of_jsbytes(")"),
     cst_None$23=caml_string_of_jsbytes("None"),
     cst_Some$22=caml_string_of_jsbytes("(Some "),
     cst$24=caml_string_of_jsbytes(")"),
     cst_None$22=caml_string_of_jsbytes("None"),
     cst_expr=caml_string_of_jsbytes("expr"),
     cst_id$1=caml_string_of_jsbytes("id"),
     cst_ok_match=caml_string_of_jsbytes("ok_match"),
     cst_ko_match=caml_string_of_jsbytes("ko_match"),
     cst_Raw=caml_string_of_jsbytes("`Raw"),
     cst_Hex=caml_string_of_jsbytes("`Hex"),
     cst_Some$21=caml_string_of_jsbytes("(Some "),
     cst$23=caml_string_of_jsbytes(")"),
     cst_None$21=caml_string_of_jsbytes("None"),
     cst_Some$20=caml_string_of_jsbytes("(Some "),
     cst$22=caml_string_of_jsbytes(")"),
     cst_None$20=caml_string_of_jsbytes("None"),
     cst_Some$19=caml_string_of_jsbytes("(Some "),
     cst$21=caml_string_of_jsbytes(")"),
     cst_None$19=caml_string_of_jsbytes("None"),
     cst_Some$18=caml_string_of_jsbytes("(Some "),
     cst$20=caml_string_of_jsbytes(")"),
     cst_None$18=caml_string_of_jsbytes("None"),
     cst_items=caml_string_of_jsbytes("items"),
     cst_key$0=caml_string_of_jsbytes("key"),
     cst_default_value=caml_string_of_jsbytes("default_value"),
     cst_missing_message=caml_string_of_jsbytes("missing_message"),
     cst_state=caml_string_of_jsbytes("state"),
     cst_transaction=caml_string_of_jsbytes("transaction"),
     cst_f=caml_string_of_jsbytes("f"),
     cst_l=caml_string_of_jsbytes("l"),
     cst_id$0=caml_string_of_jsbytes("id"),
     cst_name$3=caml_string_of_jsbytes("name"),
     cst_contract_template=caml_string_of_jsbytes("contract_template"),
     cst_baker$0=caml_string_of_jsbytes("baker"),
     cst_balance$0=caml_string_of_jsbytes("balance"),
     cst_storage$0=caml_string_of_jsbytes("storage"),
     cst_entry_point$0=caml_string_of_jsbytes("entry_point"),
     cst_arg_type=caml_string_of_jsbytes("arg_type"),
     cst_address$1=caml_string_of_jsbytes("address"),
     cst_offset=caml_string_of_jsbytes("offset"),
     cst_length=caml_string_of_jsbytes("length"),
     cst_buffer=caml_string_of_jsbytes("buffer"),
     cst_secret_key$0=caml_string_of_jsbytes("secret_key"),
     cst_message=caml_string_of_jsbytes("message"),
     cst_message_format=caml_string_of_jsbytes("message_format"),
     cst_arg=caml_string_of_jsbytes("arg"),
     cst_amount$0=caml_string_of_jsbytes("amount"),
     cst_destination=caml_string_of_jsbytes("destination"),
     cst_EGetOpt=caml_string_of_jsbytes("EGetOpt"),
     cst_EContains=caml_string_of_jsbytes("EContains"),
     cst_ECallLambda=caml_string_of_jsbytes("ECallLambda"),
     cst_EApplyLambda=caml_string_of_jsbytes("EApplyLambda"),
     cst_ECons=caml_string_of_jsbytes("ECons"),
     cst_EAdd_seconds=caml_string_of_jsbytes("EAdd_seconds"),
     cst_ETicket=caml_string_of_jsbytes("ETicket"),
     cst_ESplitTicket=caml_string_of_jsbytes("ESplitTicket"),
     cst_Some$17=caml_string_of_jsbytes("(Some "),
     cst$19=caml_string_of_jsbytes(")"),
     cst_None$17=caml_string_of_jsbytes("None"),
     cst_Some$16=caml_string_of_jsbytes("(Some "),
     cst$18=caml_string_of_jsbytes(")"),
     cst_None$16=caml_string_of_jsbytes("None"),
     cst_ELevel=caml_string_of_jsbytes("ELevel"),
     cst_seed$0=caml_string_of_jsbytes("seed"),
     cst_id=caml_string_of_jsbytes("id"),
     cst_name$2=caml_string_of_jsbytes("name"),
     cst_body$1=caml_string_of_jsbytes("body"),
     cst_clean_stack=caml_string_of_jsbytes("clean_stack"),
     cst_tParams=caml_string_of_jsbytes("tParams"),
     cst_tResult=caml_string_of_jsbytes("tResult"),
     cst_Some$14=caml_string_of_jsbytes("(Some "),
     cst$16=caml_string_of_jsbytes(")"),
     cst_None$14=caml_string_of_jsbytes("None"),
     cst_Some$13=caml_string_of_jsbytes("(Some "),
     cst$15=caml_string_of_jsbytes(")"),
     cst_None$13=caml_string_of_jsbytes("None"),
     cst_Some$12=caml_string_of_jsbytes("(Some "),
     cst$14=caml_string_of_jsbytes(")"),
     cst_None$12=caml_string_of_jsbytes("None"),
     cst_Some$11=caml_string_of_jsbytes("(Some "),
     cst$13=caml_string_of_jsbytes(")"),
     cst_None$11=caml_string_of_jsbytes("None"),
     cst_Some$10=caml_string_of_jsbytes("(Some "),
     cst$12=caml_string_of_jsbytes(")"),
     cst_None$10=caml_string_of_jsbytes("None"),
     cst_Some$9=caml_string_of_jsbytes("(Some "),
     cst$11=caml_string_of_jsbytes(")"),
     cst_None$9=caml_string_of_jsbytes("None"),
     cst_Some$8=caml_string_of_jsbytes("(Some "),
     cst$10=caml_string_of_jsbytes(")"),
     cst_None$8=caml_string_of_jsbytes("None"),
     cst_template_id=caml_string_of_jsbytes("template_id"),
     cst_balance=caml_string_of_jsbytes("balance"),
     cst_storage=caml_string_of_jsbytes("storage"),
     cst_baker=caml_string_of_jsbytes("baker"),
     cst_tstorage_explicit=caml_string_of_jsbytes("tstorage_explicit"),
     cst_entry_points=caml_string_of_jsbytes("entry_points"),
     cst_entry_points_layout=caml_string_of_jsbytes("entry_points_layout"),
     cst_unknown_parts=caml_string_of_jsbytes("unknown_parts"),
     cst_flags=caml_string_of_jsbytes("flags"),
     cst_global_variables=caml_string_of_jsbytes("global_variables"),
     cst_metadata=caml_string_of_jsbytes("metadata"),
     cst_views=caml_string_of_jsbytes("views"),
     cst_derived=caml_string_of_jsbytes("derived"),
     cst_Some$5=caml_string_of_jsbytes("(Some "),
     cst$7=caml_string_of_jsbytes(")"),
     cst_None$5=caml_string_of_jsbytes("None"),
     cst_name$1=caml_string_of_jsbytes("name"),
     cst_has_param=caml_string_of_jsbytes("has_param"),
     cst_pure=caml_string_of_jsbytes("pure"),
     cst_body$0=caml_string_of_jsbytes("body"),
     cst_doc=caml_string_of_jsbytes("doc"),
     cst_tparameter_derived=caml_string_of_jsbytes("tparameter_derived"),
     cst_Some$4=caml_string_of_jsbytes("(Some "),
     cst$6=caml_string_of_jsbytes(")"),
     cst_None$4=caml_string_of_jsbytes("None"),
     cst_Some$3=caml_string_of_jsbytes("(Some "),
     cst$5=caml_string_of_jsbytes(")"),
     cst_None$3=caml_string_of_jsbytes("None"),
     cst_Absent=caml_string_of_jsbytes("`Absent"),
     cst_Present=caml_string_of_jsbytes("`Present"),
     cst_channel=caml_string_of_jsbytes("channel"),
     cst_tparameter_ep=caml_string_of_jsbytes("tparameter_ep"),
     cst_originate=caml_string_of_jsbytes("originate"),
     cst_lazify=caml_string_of_jsbytes("lazify"),
     cst_lazy_no_code=caml_string_of_jsbytes("lazy_no_code"),
     cst_line_no=caml_string_of_jsbytes("line_no"),
     cst_body=caml_string_of_jsbytes("body"),
     cst_tparameter_ep_derived=caml_string_of_jsbytes("tparameter_ep_derived"),
     cst_name$0=caml_string_of_jsbytes("name"),
     cst_parsed=caml_string_of_jsbytes("parsed"),
     cst_typesIn=caml_string_of_jsbytes("typesIn"),
     cst_typesOut=caml_string_of_jsbytes("typesOut"),
     cst_name=caml_string_of_jsbytes("name"),
     cst_annotations=caml_string_of_jsbytes("annotations"),
     cst_arguments=caml_string_of_jsbytes("arguments"),
     cst_Smartml_Basics_SmartExcept=
      caml_string_of_jsbytes("Smartml.Basics.SmartExcept"),
     cst_int=caml_string_of_jsbytes("int"),
     cst_string=caml_string_of_jsbytes("string"),
     cst_bytes=caml_string_of_jsbytes("bytes"),
     cst_annots=caml_string_of_jsbytes("annots"),
     cst_args=caml_string_of_jsbytes("args"),
     cst_prim=caml_string_of_jsbytes("prim"),
     cst$41=caml_string_of_jsbytes("  "),
     cst$42=caml_string_of_jsbytes("\n"),
     cst$43=caml_string_of_jsbytes("  "),
     cst$44=caml_string_of_jsbytes("\n"),
     cst_bytes$0=caml_string_of_jsbytes("bytes"),
     cst_int$0=caml_string_of_jsbytes("int"),
     cst_string$0=caml_string_of_jsbytes("string"),
     cst_prim$0=caml_string_of_jsbytes("prim"),
     cst_annots$0=caml_string_of_jsbytes("annots"),
     cst_args$0=caml_string_of_jsbytes("args"),
     cst_true=caml_string_of_jsbytes("true"),
     cst_false=caml_string_of_jsbytes("false"),
     cst$48=caml_string_of_jsbytes(""),
     cst_Not_handled=caml_string_of_jsbytes("Not handled "),
     cst$45=caml_string_of_jsbytes("%"),
     cst$46=caml_string_of_jsbytes("%"),
     cst$47=caml_string_of_jsbytes("_"),
     cst_Right$1=caml_string_of_jsbytes("Right"),
     cst_Left$1=caml_string_of_jsbytes("Left"),
     cst$39=caml_string_of_jsbytes(", "),
     cst$40=caml_string_of_jsbytes(""),
     cst_D=caml_string_of_jsbytes("D"),
     cst_A=caml_string_of_jsbytes("A"),
     cst_match_comb=caml_string_of_jsbytes("match_comb"),
     cst_0FFF=caml_string_of_jsbytes("0FFF"),
     cst_010203=caml_string_of_jsbytes("010203"),
     cst_00=caml_string_of_jsbytes("00"),
     cst$121=caml_string_of_jsbytes(""),
     cst_SmartPy$0=caml_string_of_jsbytes("SmartPy"),
     cst_bar=caml_string_of_jsbytes("bar"),
     cst_foo=caml_string_of_jsbytes("foo"),
     cst$120=caml_string_of_jsbytes(""),
     cst_KT1=caml_string_of_jsbytes("KT1..."),
     cst_tz3=caml_string_of_jsbytes("tz3..."),
     cst_tz2=caml_string_of_jsbytes("tz2..."),
     cst_tz1=caml_string_of_jsbytes("tz1..."),
     cst_edpkvThfdv8Efh1MuqSTUk5EnU=
      caml_string_of_jsbytes
       ("edpkvThfdv8Efh1MuqSTUk5EnUFCTjqN6kXDCNXpQ8udN3cKRhNDr2"),
     cst_edpkuvNy6TuQ2z8o9wnoaTtTXk=
      caml_string_of_jsbytes
       ("edpkuvNy6TuQ2z8o9wnoaTtTXkzQk7nhegCHfxBc4ecsd4qG71KYNG"),
     cst_tz3$0=caml_string_of_jsbytes("tz3..."),
     cst_tz2$0=caml_string_of_jsbytes("tz2..."),
     cst_tz1$0=caml_string_of_jsbytes("tz1..."),
     cst_SG1c=caml_string_of_jsbytes("SG1c..."),
     cst_SG1b=caml_string_of_jsbytes("SG1b..."),
     cst_SG1a=caml_string_of_jsbytes("SG1a..."),
     cst_edsigu=caml_string_of_jsbytes("edsigu..."),
     cst_edsigt=caml_string_of_jsbytes("edsigt..."),
     cst_operation$0=caml_string_of_jsbytes("operation"),
     cst_no_value_in_type_never=
      caml_string_of_jsbytes("no value in type never"),
     cst_sapling_transaction$0=caml_string_of_jsbytes("sapling_transaction"),
     cst_KT1d=caml_string_of_jsbytes("KT1d..."),
     cst_KT1c=caml_string_of_jsbytes("KT1c..."),
     cst_KT1b=caml_string_of_jsbytes("KT1b..."),
     cst_KT1a=caml_string_of_jsbytes("KT1a..."),
     cst_no_example_for_tickets=
      caml_string_of_jsbytes("no example for tickets"),
     cst_profile_CONCAT_arity_undet=
      caml_string_of_jsbytes("profile: CONCAT arity undetermined"),
     cst_profile_unequal_d=caml_string_of_jsbytes("profile: unequal d"),
     cst_profile_unequal_p=caml_string_of_jsbytes("profile: unequal p"),
     cst_code$4=caml_string_of_jsbytes("code"),
     cst_parameter$1=caml_string_of_jsbytes("parameter"),
     cst_storage$8=caml_string_of_jsbytes("storage"),
     cst_lazy_entry_points_but_stor=
      caml_string_of_jsbytes("lazy entry points, but storage not a pair"),
     cst_Some$46=caml_string_of_jsbytes("(Some "),
     cst$119=caml_string_of_jsbytes(")"),
     cst_None$48=caml_string_of_jsbytes("None"),
     cst_Some$45=caml_string_of_jsbytes("(Some "),
     cst$118=caml_string_of_jsbytes(")"),
     cst_None$47=caml_string_of_jsbytes("None"),
     cst_Some$44=caml_string_of_jsbytes("(Some "),
     cst$117=caml_string_of_jsbytes(")"),
     cst_None$46=caml_string_of_jsbytes("None"),
     cst_tparameter$2=caml_string_of_jsbytes("tparameter"),
     cst_tstorage$2=caml_string_of_jsbytes("tstorage"),
     cst_code$3=caml_string_of_jsbytes("code"),
     cst_lazy_entry_points$3=caml_string_of_jsbytes("lazy_entry_points"),
     cst_storage$7=caml_string_of_jsbytes("storage"),
     cst_Some$43=caml_string_of_jsbytes("(Some "),
     cst$116=caml_string_of_jsbytes(")"),
     cst_None$45=caml_string_of_jsbytes("None"),
     cst_Some$42=caml_string_of_jsbytes("(Some "),
     cst$115=caml_string_of_jsbytes(")"),
     cst_None$44=caml_string_of_jsbytes("None"),
     cst_Some$41=caml_string_of_jsbytes("(Some "),
     cst$114=caml_string_of_jsbytes(")"),
     cst_None$43=caml_string_of_jsbytes("None"),
     cst_tparameter$1=caml_string_of_jsbytes("tparameter"),
     cst_tstorage$1=caml_string_of_jsbytes("tstorage"),
     cst_code$2=caml_string_of_jsbytes("code"),
     cst_lazy_entry_points$2=caml_string_of_jsbytes("lazy_entry_points"),
     cst_storage$6=caml_string_of_jsbytes("storage"),
     cst_CDR$0=caml_string_of_jsbytes("CDR"),
     cst_CAR$0=caml_string_of_jsbytes("CAR"),
     cst_PAIR$5=caml_string_of_jsbytes("PAIR"),
     cst_CAR$2=caml_string_of_jsbytes("CAR"),
     cst_CDR$3=caml_string_of_jsbytes("CDR"),
     cst_DUP$4=caml_string_of_jsbytes("DUP"),
     cst_PAIR$6=caml_string_of_jsbytes("PAIR"),
     cst_CAR$3=caml_string_of_jsbytes("CAR"),
     cst_PAIR$3=caml_string_of_jsbytes("PAIR"),
     cst_SWAP$1=caml_string_of_jsbytes("SWAP"),
     cst_CDR$1=caml_string_of_jsbytes("CDR"),
     cst_CAR$1=caml_string_of_jsbytes("CAR"),
     cst_DUP$3=caml_string_of_jsbytes("DUP"),
     cst_PAIR$4=caml_string_of_jsbytes("PAIR"),
     cst_SWAP$2=caml_string_of_jsbytes("SWAP"),
     cst_CDR$2=caml_string_of_jsbytes("CDR"),
     cst_Unit$5=caml_string_of_jsbytes("Unit"),
     cst_None$42=caml_string_of_jsbytes("None"),
     cst_True$2=caml_string_of_jsbytes("True"),
     cst_False$2=caml_string_of_jsbytes("False"),
     cst_Pair$1=caml_string_of_jsbytes("Pair"),
     cst_Left$4=caml_string_of_jsbytes("Left"),
     cst_Right$4=caml_string_of_jsbytes("Right"),
     cst_Some$40=caml_string_of_jsbytes("Some"),
     cst_Elt$1=caml_string_of_jsbytes("Elt"),
     cst_SELF$1=caml_string_of_jsbytes("SELF"),
     cst$111=caml_string_of_jsbytes("%"),
     cst_SAPLING_EMPTY_STATE$1=caml_string_of_jsbytes("SAPLING_EMPTY_STATE"),
     cst_NONE$1=caml_string_of_jsbytes("NONE"),
     cst_NIL$1=caml_string_of_jsbytes("NIL"),
     cst_EMPTY_SET$1=caml_string_of_jsbytes("EMPTY_SET"),
     cst_EMPTY_MAP$1=caml_string_of_jsbytes("EMPTY_MAP"),
     cst_EMPTY_BIG_MAP$1=caml_string_of_jsbytes("EMPTY_BIG_MAP"),
     cst_LEFT$1=caml_string_of_jsbytes("LEFT"),
     cst_RIGHT$1=caml_string_of_jsbytes("RIGHT"),
     cst_CONTRACT$1=caml_string_of_jsbytes("CONTRACT"),
     cst$112=caml_string_of_jsbytes("%"),
     cst_CONTRACT$2=caml_string_of_jsbytes("CONTRACT"),
     cst_UNPACK$1=caml_string_of_jsbytes("UNPACK"),
     cst_GET$3=caml_string_of_jsbytes("GET"),
     cst_CAST$1=caml_string_of_jsbytes("CAST"),
     cst_RENAME$1=caml_string_of_jsbytes("RENAME"),
     cst$113=caml_string_of_jsbytes("@"),
     cst_RENAME$2=caml_string_of_jsbytes("RENAME"),
     cst_PAIR$7=caml_string_of_jsbytes("PAIR"),
     cst_UPDATE$3=caml_string_of_jsbytes("UPDATE"),
     cst_ERROR$0=caml_string_of_jsbytes("ERROR"),
     cst_DIP$4=caml_string_of_jsbytes("DIP"),
     cst_DIP$5=caml_string_of_jsbytes("DIP"),
     cst_LOOP$3=caml_string_of_jsbytes("LOOP"),
     cst_LOOP_LEFT$3=caml_string_of_jsbytes("LOOP_LEFT"),
     cst_ITER$3=caml_string_of_jsbytes("ITER"),
     cst_MAP$3=caml_string_of_jsbytes("MAP"),
     cst_DROP$3=caml_string_of_jsbytes("DROP"),
     cst_DUP$6=caml_string_of_jsbytes("DUP"),
     cst_DUP$5=caml_string_of_jsbytes("DUP"),
     cst_DIG$2=caml_string_of_jsbytes("DIG"),
     cst_DUG$2=caml_string_of_jsbytes("DUG"),
     cst_IF$3=caml_string_of_jsbytes("IF"),
     cst_IF_LEFT$3=caml_string_of_jsbytes("IF_LEFT"),
     cst_IF_NONE$3=caml_string_of_jsbytes("IF_NONE"),
     cst_IF_CONS$3=caml_string_of_jsbytes("IF_CONS"),
     cst_PUSH$1=caml_string_of_jsbytes("PUSH"),
     cst_UNPAIR$4=caml_string_of_jsbytes("UNPAIR"),
     cst_UNPAIR$3=caml_string_of_jsbytes("UNPAIR"),
     cst_PAIR$8=caml_string_of_jsbytes("PAIR"),
     cst_LAMBDA$2=caml_string_of_jsbytes("LAMBDA"),
     cst_code$1=caml_string_of_jsbytes("code"),
     cst_storage$5=caml_string_of_jsbytes("storage"),
     cst_parameter$0=caml_string_of_jsbytes("parameter"),
     cst_CREATE_CONTRACT$2=caml_string_of_jsbytes("CREATE_CONTRACT"),
     cst_ERROR_NOT_SIMPLE=caml_string_of_jsbytes("ERROR-NOT-SIMPLE"),
     cst_DIP$3=caml_string_of_jsbytes("DIP"),
     cst$108=caml_string_of_jsbytes("@"),
     cst$109=caml_string_of_jsbytes(":"),
     cst$110=caml_string_of_jsbytes("%"),
     cst_ERROR=caml_string_of_jsbytes("ERROR"),
     cst_duplicate_annotation=caml_string_of_jsbytes("duplicate annotation"),
     cst_cannot_parse_annotation=
      caml_string_of_jsbytes("cannot parse annotation"),
     cst$103=caml_string_of_jsbytes(""),
     cst_Parse_type_error=caml_string_of_jsbytes("Parse type error "),
     cst_map=caml_string_of_jsbytes("map"),
     cst_bytes$1=caml_string_of_jsbytes("bytes"),
     cst_address$2=caml_string_of_jsbytes("address"),
     cst_baker_hash=caml_string_of_jsbytes("baker_hash"),
     cst_big_map=caml_string_of_jsbytes("big_map"),
     cst_bls12_381_fr=caml_string_of_jsbytes("bls12_381_fr"),
     cst_bls12_381_g1=caml_string_of_jsbytes("bls12_381_g1"),
     cst_bls12_381_g2=caml_string_of_jsbytes("bls12_381_g2"),
     cst_bool=caml_string_of_jsbytes("bool"),
     cst_chain_id$0=caml_string_of_jsbytes("chain_id"),
     cst_contract$2=caml_string_of_jsbytes("contract"),
     cst_int$1=caml_string_of_jsbytes("int"),
     cst_key$1=caml_string_of_jsbytes("key"),
     cst_key_hash=caml_string_of_jsbytes("key_hash"),
     cst_lambda=caml_string_of_jsbytes("lambda"),
     cst_list=caml_string_of_jsbytes("list"),
     cst_sapling_state=caml_string_of_jsbytes("sapling_state"),
     cst_mutez=caml_string_of_jsbytes("mutez"),
     cst_nat=caml_string_of_jsbytes("nat"),
     cst_never=caml_string_of_jsbytes("never"),
     cst_operation=caml_string_of_jsbytes("operation"),
     cst_option=caml_string_of_jsbytes("option"),
     cst_or=caml_string_of_jsbytes("or"),
     cst_pair=caml_string_of_jsbytes("pair"),
     cst_sapling_transaction=caml_string_of_jsbytes("sapling_transaction"),
     cst_set=caml_string_of_jsbytes("set"),
     cst_signature=caml_string_of_jsbytes("signature"),
     cst_string$1=caml_string_of_jsbytes("string"),
     cst_ticket=caml_string_of_jsbytes("ticket"),
     cst_timestamp=caml_string_of_jsbytes("timestamp"),
     cst_unit$0=caml_string_of_jsbytes("unit"),
     cst$104=caml_string_of_jsbytes(""),
     cst_Elt$0=caml_string_of_jsbytes("Elt"),
     cst_False$1=caml_string_of_jsbytes("False"),
     cst_Left$3=caml_string_of_jsbytes("Left"),
     cst_None$41=caml_string_of_jsbytes("None"),
     cst_Pair$0=caml_string_of_jsbytes("Pair"),
     cst_Right$3=caml_string_of_jsbytes("Right"),
     cst_Some$39=caml_string_of_jsbytes("Some"),
     cst_True$1=caml_string_of_jsbytes("True"),
     cst_Unit$4=caml_string_of_jsbytes("Unit"),
     cst_ASSERT_CMPLT=caml_string_of_jsbytes("ASSERT_CMPLT"),
     cst_ASSERTLT=caml_string_of_jsbytes("ASSERTLT"),
     cst_ASSERT=caml_string_of_jsbytes("ASSERT"),
     cst_ASSERTEQ=caml_string_of_jsbytes("ASSERTEQ"),
     cst_ASSERTGE=caml_string_of_jsbytes("ASSERTGE"),
     cst_ASSERTGT=caml_string_of_jsbytes("ASSERTGT"),
     cst_ASSERTLE=caml_string_of_jsbytes("ASSERTLE"),
     cst_ASSERTNEQ=caml_string_of_jsbytes("ASSERTNEQ"),
     cst_ASSERT_CMPEQ=caml_string_of_jsbytes("ASSERT_CMPEQ"),
     cst_ASSERT_CMPGE=caml_string_of_jsbytes("ASSERT_CMPGE"),
     cst_ASSERT_CMPGT=caml_string_of_jsbytes("ASSERT_CMPGT"),
     cst_ASSERT_CMPLE=caml_string_of_jsbytes("ASSERT_CMPLE"),
     cst_CMPGT=caml_string_of_jsbytes("CMPGT"),
     cst_ASSERT_CMPNEQ=caml_string_of_jsbytes("ASSERT_CMPNEQ"),
     cst_ASSERT_NONE=caml_string_of_jsbytes("ASSERT_NONE"),
     cst_ASSERT_SOME=caml_string_of_jsbytes("ASSERT_SOME"),
     cst_CMPEQ=caml_string_of_jsbytes("CMPEQ"),
     cst_CMPGE=caml_string_of_jsbytes("CMPGE"),
     cst_CMPLE=caml_string_of_jsbytes("CMPLE"),
     cst_CMPLT=caml_string_of_jsbytes("CMPLT"),
     cst_CMPNEQ=caml_string_of_jsbytes("CMPNEQ"),
     cst_FAIL=caml_string_of_jsbytes("FAIL"),
     cst_IMPLICIT_ACCOUNT$0=caml_string_of_jsbytes("IMPLICIT_ACCOUNT"),
     cst_FAILWITH$0=caml_string_of_jsbytes("FAILWITH"),
     cst_COMPARE$0=caml_string_of_jsbytes("COMPARE"),
     cst_BALANCE$0=caml_string_of_jsbytes("BALANCE"),
     cst_ABS$0=caml_string_of_jsbytes("ABS"),
     cst_ADD$0=caml_string_of_jsbytes("ADD"),
     cst_ADDRESS$0=caml_string_of_jsbytes("ADDRESS"),
     cst_AMOUNT$0=caml_string_of_jsbytes("AMOUNT"),
     cst_AND$0=caml_string_of_jsbytes("AND"),
     cst_APPLY$0=caml_string_of_jsbytes("APPLY"),
     cst_BLAKE2B$0=caml_string_of_jsbytes("BLAKE2B"),
     cst_CAR=caml_string_of_jsbytes("CAR"),
     cst_CDR=caml_string_of_jsbytes("CDR"),
     cst_CHAIN_ID$0=caml_string_of_jsbytes("CHAIN_ID"),
     cst_CHECK_SIGNATURE=caml_string_of_jsbytes("CHECK_SIGNATURE"),
     cst_EDIV$0=caml_string_of_jsbytes("EDIV"),
     cst_CONCAT$2=caml_string_of_jsbytes("CONCAT"),
     cst_CONS$0=caml_string_of_jsbytes("CONS"),
     cst_DIP$2=caml_string_of_jsbytes("DIP"),
     cst_DROP$2=caml_string_of_jsbytes("DROP"),
     cst_DUP$2=caml_string_of_jsbytes("DUP"),
     cst_EMPTY_BIG_MAP$0=caml_string_of_jsbytes("EMPTY_BIG_MAP"),
     cst_EMPTY_MAP$0=caml_string_of_jsbytes("EMPTY_MAP"),
     cst_EMPTY_SET$0=caml_string_of_jsbytes("EMPTY_SET"),
     cst_EQ$0=caml_string_of_jsbytes("EQ"),
     cst_EXEC$0=caml_string_of_jsbytes("EXEC"),
     cst_IFCMPNEQ=caml_string_of_jsbytes("IFCMPNEQ"),
     cst_IF$2=caml_string_of_jsbytes("IF"),
     cst_GE$0=caml_string_of_jsbytes("GE"),
     cst_GET$2=caml_string_of_jsbytes("GET"),
     cst_GET_AND_UPDATE$0=caml_string_of_jsbytes("GET_AND_UPDATE"),
     cst_GT$0=caml_string_of_jsbytes("GT"),
     cst_HASH_KEY$0=caml_string_of_jsbytes("HASH_KEY"),
     cst_IFCMPEQ=caml_string_of_jsbytes("IFCMPEQ"),
     cst_IFCMPGE=caml_string_of_jsbytes("IFCMPGE"),
     cst_IFCMPGT=caml_string_of_jsbytes("IFCMPGT"),
     cst_IFCMPLE=caml_string_of_jsbytes("IFCMPLE"),
     cst_IFCMPLT=caml_string_of_jsbytes("IFCMPLT"),
     cst_IFNEQ=caml_string_of_jsbytes("IFNEQ"),
     cst_IFEQ=caml_string_of_jsbytes("IFEQ"),
     cst_IFGE=caml_string_of_jsbytes("IFGE"),
     cst_IFGT=caml_string_of_jsbytes("IFGT"),
     cst_IFLE=caml_string_of_jsbytes("IFLE"),
     cst_IFLT=caml_string_of_jsbytes("IFLT"),
     cst_IF_CONS$2=caml_string_of_jsbytes("IF_CONS"),
     cst_IF_LEFT$2=caml_string_of_jsbytes("IF_LEFT"),
     cst_IF_NONE$2=caml_string_of_jsbytes("IF_NONE"),
     cst_IF_RIGHT=caml_string_of_jsbytes("IF_RIGHT"),
     cst_IF_SOME=caml_string_of_jsbytes("IF_SOME"),
     cst_RENAME$0=caml_string_of_jsbytes("RENAME"),
     cst_MUL$0=caml_string_of_jsbytes("MUL"),
     cst_LE$0=caml_string_of_jsbytes("LE"),
     cst_INT$0=caml_string_of_jsbytes("INT"),
     cst_ISNAT$0=caml_string_of_jsbytes("ISNAT"),
     cst_JOIN_TICKETS$0=caml_string_of_jsbytes("JOIN_TICKETS"),
     cst_KECCAK$0=caml_string_of_jsbytes("KECCAK"),
     cst_LAMBDA$1=caml_string_of_jsbytes("LAMBDA"),
     cst_LEVEL$0=caml_string_of_jsbytes("LEVEL"),
     cst_LSL$0=caml_string_of_jsbytes("LSL"),
     cst_LSR$0=caml_string_of_jsbytes("LSR"),
     cst_LT$0=caml_string_of_jsbytes("LT"),
     cst_MEM$0=caml_string_of_jsbytes("MEM"),
     cst_OR$0=caml_string_of_jsbytes("OR"),
     cst_NEG$0=caml_string_of_jsbytes("NEG"),
     cst_NEQ$0=caml_string_of_jsbytes("NEQ"),
     cst_NEVER$0=caml_string_of_jsbytes("NEVER"),
     cst_NOT$0=caml_string_of_jsbytes("NOT"),
     cst_NOW$0=caml_string_of_jsbytes("NOW"),
     cst_PACK$0=caml_string_of_jsbytes("PACK"),
     cst_PAIR$2=caml_string_of_jsbytes("PAIR"),
     cst_PAIRING_CHECK$0=caml_string_of_jsbytes("PAIRING_CHECK"),
     cst_PUSH$0=caml_string_of_jsbytes("PUSH"),
     cst_READ_TICKET$0=caml_string_of_jsbytes("READ_TICKET"),
     cst_SOURCE$0=caml_string_of_jsbytes("SOURCE"),
     cst_SHA256$0=caml_string_of_jsbytes("SHA256"),
     cst_SAPLING_VERIFY_UPDATE$0=
      caml_string_of_jsbytes("SAPLING_VERIFY_UPDATE"),
     cst_SELF$0=caml_string_of_jsbytes("SELF"),
     cst_SELF_ADDRESS$0=caml_string_of_jsbytes("SELF_ADDRESS"),
     cst_SENDER$0=caml_string_of_jsbytes("SENDER"),
     cst_SET_DELEGATE$0=caml_string_of_jsbytes("SET_DELEGATE"),
     cst$106=caml_string_of_jsbytes("%"),
     cst_SHA3$0=caml_string_of_jsbytes("SHA3"),
     cst_SHA512$0=caml_string_of_jsbytes("SHA512"),
     cst_SIZE$0=caml_string_of_jsbytes("SIZE"),
     cst_SLICE$0=caml_string_of_jsbytes("SLICE"),
     cst_SOME$0=caml_string_of_jsbytes("SOME"),
     cst_TRANSFER_TOKENS$0=caml_string_of_jsbytes("TRANSFER_TOKENS"),
     cst_SPLIT_TICKET$0=caml_string_of_jsbytes("SPLIT_TICKET"),
     cst_SUB$0=caml_string_of_jsbytes("SUB"),
     cst_SWAP$0=caml_string_of_jsbytes("SWAP"),
     cst_TICKET$0=caml_string_of_jsbytes("TICKET"),
     cst_TOTAL_VOTING_POWER$0=caml_string_of_jsbytes("TOTAL_VOTING_POWER"),
     cst_UNIT$0=caml_string_of_jsbytes("UNIT"),
     cst_UNPAIR$1=caml_string_of_jsbytes("UNPAIR"),
     cst_UPDATE$1=caml_string_of_jsbytes("UPDATE"),
     cst_VOTING_POWER$0=caml_string_of_jsbytes("VOTING_POWER"),
     cst_XOR$0=caml_string_of_jsbytes("XOR"),
     cst$107=caml_string_of_jsbytes("@"),
     cst_LOOP$2=caml_string_of_jsbytes("LOOP"),
     cst_DUG$1=caml_string_of_jsbytes("DUG"),
     cst_CAST$0=caml_string_of_jsbytes("CAST"),
     cst_CONTRACT$0=caml_string_of_jsbytes("CONTRACT"),
     cst_CREATE_CONTRACT$1=caml_string_of_jsbytes("CREATE_CONTRACT"),
     cst_DIG$1=caml_string_of_jsbytes("DIG"),
     cst_DROP$1=caml_string_of_jsbytes("DROP"),
     cst_parameter=caml_string_of_jsbytes("parameter"),
     cst_storage$4=caml_string_of_jsbytes("storage"),
     cst_code$0=caml_string_of_jsbytes("code"),
     cst$105=caml_string_of_jsbytes("%"),
     cst_DUP$1=caml_string_of_jsbytes("DUP"),
     cst_GET$1=caml_string_of_jsbytes("GET"),
     cst_ITER$2=caml_string_of_jsbytes("ITER"),
     cst_LEFT$0=caml_string_of_jsbytes("LEFT"),
     cst_RIGHT$0=caml_string_of_jsbytes("RIGHT"),
     cst_LOOP_LEFT$2=caml_string_of_jsbytes("LOOP_LEFT"),
     cst_MAP$2=caml_string_of_jsbytes("MAP"),
     cst_NIL$0=caml_string_of_jsbytes("NIL"),
     cst_NONE$0=caml_string_of_jsbytes("NONE"),
     cst_PAIR$1=caml_string_of_jsbytes("PAIR"),
     cst_SAPLING_EMPTY_STATE$0=caml_string_of_jsbytes("SAPLING_EMPTY_STATE"),
     cst_UNPACK$0=caml_string_of_jsbytes("UNPACK"),
     cst_UNPAIR$2=caml_string_of_jsbytes("UNPAIR"),
     cst_UPDATE$2=caml_string_of_jsbytes("UPDATE"),
     cst$101=caml_string_of_jsbytes("@"),
     cst$102=caml_string_of_jsbytes(""),
     cst$100=caml_string_of_jsbytes(""),
     cst$87=caml_string_of_jsbytes(" "),
     cst_UNPAIR$0=caml_string_of_jsbytes("UNPAIR"),
     cst_DUP$0=caml_string_of_jsbytes("DUP"),
     cst_comment$0=caml_string_of_jsbytes("comment"),
     cst$93=caml_string_of_jsbytes(" "),
     cst$90=caml_string_of_jsbytes(" "),
     cst$91=caml_string_of_jsbytes(" "),
     cst$92=caml_string_of_jsbytes(" @"),
     cst$88=caml_string_of_jsbytes(" "),
     cst$89=caml_string_of_jsbytes(" "),
     cst$85=caml_string_of_jsbytes(";"),
     cst$84=caml_string_of_jsbytes(";"),
     cst$83=caml_string_of_jsbytes(""),
     cst_nbsp=caml_string_of_jsbytes("&nbsp;"),
     cst$82=caml_string_of_jsbytes(""),
     cst_partialType$0=caml_string_of_jsbytes("partialType"),
     cst_DIP$1=caml_string_of_jsbytes("DIP"),
     cst_LOOP$1=caml_string_of_jsbytes("LOOP"),
     cst_LOOP_LEFT$1=caml_string_of_jsbytes("LOOP_LEFT"),
     cst_ITER$1=caml_string_of_jsbytes("ITER"),
     cst_MAP$1=caml_string_of_jsbytes("MAP"),
     cst_IF$1=caml_string_of_jsbytes("IF"),
     cst_IF_LEFT$1=caml_string_of_jsbytes("IF_LEFT"),
     cst_IF_NONE$1=caml_string_of_jsbytes("IF_NONE"),
     cst_IF_CONS$1=caml_string_of_jsbytes("IF_CONS"),
     cst$94=caml_string_of_jsbytes("{"),
     cst$95=caml_string_of_jsbytes("}"),
     cst$96=caml_string_of_jsbytes(";"),
     cst$97=caml_string_of_jsbytes("{}"),
     cst$98=caml_string_of_jsbytes(";"),
     cst_stack$0=caml_string_of_jsbytes("stack"),
     cst$86=caml_string_of_jsbytes("#"),
     cst_comment=caml_string_of_jsbytes("comment"),
     cst_partialType=caml_string_of_jsbytes("partialType"),
     cst$79=caml_string_of_jsbytes("; "),
     cst$76=caml_string_of_jsbytes("; "),
     cst_Pair=caml_string_of_jsbytes("Pair "),
     cst$75=caml_string_of_jsbytes(" "),
     cst$74=caml_string_of_jsbytes(" "),
     cst_Elt=caml_string_of_jsbytes("Elt "),
     cst$73=caml_string_of_jsbytes(" "),
     cst$71=caml_string_of_jsbytes(")"),
     cst$72=caml_string_of_jsbytes("("),
     cst_Unit$3=caml_string_of_jsbytes("Unit"),
     cst_None$40=caml_string_of_jsbytes("None"),
     cst_True$0=caml_string_of_jsbytes("True"),
     cst_False$0=caml_string_of_jsbytes("False"),
     cst_0x$0=caml_string_of_jsbytes("0x"),
     cst_Left$2=caml_string_of_jsbytes("Left"),
     cst_Right$2=caml_string_of_jsbytes("Right"),
     cst_Some$38=caml_string_of_jsbytes("Some"),
     cst$77=caml_string_of_jsbytes("}"),
     cst$78=caml_string_of_jsbytes("{"),
     cst$80=caml_string_of_jsbytes("}"),
     cst$81=caml_string_of_jsbytes("{"),
     cst$70=caml_string_of_jsbytes("\n"),
     cst$99=caml_string_of_jsbytes(""),
     cst$65=caml_string_of_jsbytes("%"),
     cst$66=caml_string_of_jsbytes("%"),
     cst$67=caml_string_of_jsbytes("%"),
     cst$68=caml_string_of_jsbytes("%"),
     cst$69=caml_string_of_jsbytes("%"),
     cst_name_of_instr_exn_MIerror=
      caml_string_of_jsbytes("name_of_instr_exn: MIerror"),
     cst_name_of_instr_exn_MIcommen=
      caml_string_of_jsbytes("name_of_instr_exn: MIcomment"),
     cst_DIP$0=caml_string_of_jsbytes("DIP"),
     cst_DIPN=caml_string_of_jsbytes("DIPN"),
     cst_LOOP$0=caml_string_of_jsbytes("LOOP"),
     cst_LOOP_LEFT$0=caml_string_of_jsbytes("LOOP_LEFT"),
     cst_ITER$0=caml_string_of_jsbytes("ITER"),
     cst_MAP$0=caml_string_of_jsbytes("MAP"),
     cst_DIG$0=caml_string_of_jsbytes("DIG"),
     cst_DUG$0=caml_string_of_jsbytes("DUG"),
     cst_IF$0=caml_string_of_jsbytes("IF"),
     cst_IF_LEFT$0=caml_string_of_jsbytes("IF_LEFT"),
     cst_IF_NONE$0=caml_string_of_jsbytes("IF_NONE"),
     cst_IF_CONS$0=caml_string_of_jsbytes("IF_CONS"),
     cst_name_of_instr_exn_MIseq=
      caml_string_of_jsbytes("name_of_instr_exn: MIseq"),
     cst_LAMBDA$0=caml_string_of_jsbytes("LAMBDA"),
     cst_CREATE_CONTRACT$0=caml_string_of_jsbytes("CREATE_CONTRACT"),
     err$0=[1,caml_string_of_jsbytes("outer error")],
     cst_instruction_on_failed_stac=
      caml_string_of_jsbytes("instruction on failed stack"),
     cst_previous_error=caml_string_of_jsbytes("previous error"),
     cst_type_error=caml_string_of_jsbytes("type error"),
     cst_FAKE_SAPLING_TRANSACTION=
      caml_string_of_jsbytes("FAKE_SAPLING_TRANSACTION"),
     err=[1,caml_string_of_jsbytes("type error")],
     cst_sanitize_instruction_follo=
      caml_string_of_jsbytes
       ("sanitize: instruction followed by non-instruction"),
     cst_sanitize_Elt_followed_by_n=
      caml_string_of_jsbytes("sanitize: Elt followed by non-Elt"),
     name=caml_string_of_jsbytes("CHECK_SIGNATURE"),
     cst_LSR=caml_string_of_jsbytes("LSR"),
     cst_LSL=caml_string_of_jsbytes("LSL"),
     cst_ABS=caml_string_of_jsbytes("ABS"),
     cst_ISNAT=caml_string_of_jsbytes("ISNAT"),
     cst_NOT=caml_string_of_jsbytes("NOT"),
     cst_HASH_KEY=caml_string_of_jsbytes("HASH_KEY"),
     cst_BLAKE2B=caml_string_of_jsbytes("BLAKE2B"),
     cst_SHA256=caml_string_of_jsbytes("SHA256"),
     cst_SHA512=caml_string_of_jsbytes("SHA512"),
     cst_KECCAK=caml_string_of_jsbytes("KECCAK"),
     cst_SHA3=caml_string_of_jsbytes("SHA3"),
     cst_SENDER=caml_string_of_jsbytes("SENDER"),
     cst_SOURCE=caml_string_of_jsbytes("SOURCE"),
     cst_AMOUNT=caml_string_of_jsbytes("AMOUNT"),
     cst_BALANCE=caml_string_of_jsbytes("BALANCE"),
     cst_NOW=caml_string_of_jsbytes("NOW"),
     cst_SELF_ADDRESS=caml_string_of_jsbytes("SELF_ADDRESS"),
     cst_CHAIN_ID=caml_string_of_jsbytes("CHAIN_ID"),
     cst_TOTAL_VOTING_POWER=caml_string_of_jsbytes("TOTAL_VOTING_POWER"),
     cst_SAPLING_EMPTY_STATE=caml_string_of_jsbytes("SAPLING_EMPTY_STATE"),
     cst_UNPACK=caml_string_of_jsbytes("UNPACK"),
     cst_RENAME=caml_string_of_jsbytes("RENAME"),
     cst_CAST=caml_string_of_jsbytes("CAST"),
     cst_CONTRACT=caml_string_of_jsbytes("CONTRACT"),
     cst_RIGHT=caml_string_of_jsbytes("RIGHT"),
     cst_LEFT=caml_string_of_jsbytes("LEFT"),
     cst_NONE=caml_string_of_jsbytes("NONE"),
     cst_EMPTY_BIG_MAP=caml_string_of_jsbytes("EMPTY_BIG_MAP"),
     cst_EMPTY_MAP=caml_string_of_jsbytes("EMPTY_MAP"),
     cst_EMPTY_SET=caml_string_of_jsbytes("EMPTY_SET"),
     cst_NIL=caml_string_of_jsbytes("NIL"),
     cst_UPDATE=caml_string_of_jsbytes("UPDATE"),
     cst_GET$0=caml_string_of_jsbytes("GET"),
     cst_PAIR$0=caml_string_of_jsbytes("PAIR"),
     cst_PAIR=caml_string_of_jsbytes("PAIR"),
     cst_UNPAIR=caml_string_of_jsbytes("UNPAIR"),
     cst_DROP$0=caml_string_of_jsbytes("DROP"),
     cst_DUG=caml_string_of_jsbytes("DUG"),
     cst_DIG=caml_string_of_jsbytes("DIG"),
     cst_DUP=caml_string_of_jsbytes("DUP"),
     cst_right$0=caml_string_of_jsbytes("right"),
     cst$64=caml_string_of_jsbytes("."),
     cst_left$0=caml_string_of_jsbytes("left"),
     cst$63=caml_string_of_jsbytes("."),
     cst_some=caml_string_of_jsbytes(".some"),
     cst_some$0=caml_string_of_jsbytes("some"),
     cst_cannot_unify_branches=caml_string_of_jsbytes("cannot unify branches"),
     cst_unexpected_stack=caml_string_of_jsbytes(": unexpected stack"),
     cst_tinstr=caml_string_of_jsbytes("tinstr"),
     cst_stack=caml_string_of_jsbytes("stack"),
     cst_tliteral=caml_string_of_jsbytes("tliteral"),
     cst_t$0=caml_string_of_jsbytes("t"),
     cst_FAILED=caml_string_of_jsbytes("FAILED"),
     cst$62=caml_string_of_jsbytes(" : "),
     cst$61=caml_string_of_jsbytes(" "),
     cst_missing_type_conversion$0=
      caml_string_of_jsbytes("missing_type_conversion"),
     cst_span_class_partialType=
      caml_string_of_jsbytes("<span class='partialType'>"),
     cst_span=caml_string_of_jsbytes("<\/span>"),
     cst$60=caml_string_of_jsbytes("()"),
     cst_left=caml_string_of_jsbytes("left"),
     cst_right=caml_string_of_jsbytes("right"),
     cst$58=caml_string_of_jsbytes("%"),
     cst$59=caml_string_of_jsbytes("@"),
     cst$57=caml_string_of_jsbytes("@"),
     cst$55=caml_string_of_jsbytes("@"),
     cst$56=caml_string_of_jsbytes(":"),
     cst_missing_type_conversion=
      caml_string_of_jsbytes("missing_type_conversion"),
     cst$53=caml_string_of_jsbytes(""),
     cst$54=caml_string_of_jsbytes("%"),
     cst_D$0=caml_string_of_jsbytes("D"),
     cst_A$0=caml_string_of_jsbytes("A"),
     cst$52=caml_string_of_jsbytes(""),
     cst$50=caml_string_of_jsbytes(""),
     cst_Unit$2=caml_string_of_jsbytes("Unit"),
     cst_None$39=caml_string_of_jsbytes("None"),
     cst_True=caml_string_of_jsbytes("True"),
     cst_False=caml_string_of_jsbytes("False"),
     cst_0x=caml_string_of_jsbytes("0x"),
     cst$51=caml_string_of_jsbytes("; "),
     cst_literal=caml_string_of_jsbytes("literal"),
     cst_instr=caml_string_of_jsbytes("instr"),
     cst_Unit$1=caml_string_of_jsbytes("Unit"),
     cst_None$38=caml_string_of_jsbytes("None_"),
     cst_Some$37=caml_string_of_jsbytes("(Some "),
     cst$49=caml_string_of_jsbytes(")"),
     cst_None$37=caml_string_of_jsbytes("None"),
     cst_MIdrop=caml_string_of_jsbytes("MIdrop"),
     cst_MIswap=caml_string_of_jsbytes("MIswap"),
     cst_MIconcat_unresolved=caml_string_of_jsbytes("MIconcat_unresolved"),
     cst_MIlevel=caml_string_of_jsbytes("MIlevel"),
     cst_tparameter$0=caml_string_of_jsbytes("tparameter"),
     cst_tstorage$0=caml_string_of_jsbytes("tstorage"),
     cst_code=caml_string_of_jsbytes("code"),
     cst_Stack_failed=caml_string_of_jsbytes("Stack_failed"),
     unit$1=[0,0],
     none=[0,1],
     cst_instruction_sequence=caml_string_of_jsbytes("(instruction sequence)"),
     cst_comment_instruction=caml_string_of_jsbytes("(comment instruction)"),
     cst_error_instruction=caml_string_of_jsbytes("(error instruction)"),
     cst_FAILWITH=caml_string_of_jsbytes("FAILWITH"),
     cst_NEVER=caml_string_of_jsbytes("NEVER"),
     cst_TICKET=caml_string_of_jsbytes("TICKET"),
     cst_READ_TICKET=caml_string_of_jsbytes("READ_TICKET"),
     cst_JOIN_TICKETS=caml_string_of_jsbytes("JOIN_TICKETS"),
     cst_SPLIT_TICKET=caml_string_of_jsbytes("SPLIT_TICKET"),
     cst_PAIRING_CHECK=caml_string_of_jsbytes("PAIRING_CHECK"),
     cst_IF=caml_string_of_jsbytes("IF"),
     cst_IF_NONE=caml_string_of_jsbytes("IF_NONE"),
     cst_IF_LEFT=caml_string_of_jsbytes("IF_LEFT"),
     cst_IF_CONS=caml_string_of_jsbytes("IF_CONS"),
     cst_DIP=caml_string_of_jsbytes("DIP"),
     cst_DIPn=caml_string_of_jsbytes("DIPn"),
     cst_SWAP=caml_string_of_jsbytes("SWAP"),
     cst_DROP=caml_string_of_jsbytes("DROP"),
     cst_ITER=caml_string_of_jsbytes("ITER"),
     cst_LOOP=caml_string_of_jsbytes("LOOP"),
     cst_LOOP_LEFT=caml_string_of_jsbytes("LOOP_LEFT"),
     cst_LAMBDA=caml_string_of_jsbytes("LAMBDA"),
     cst_MAP=caml_string_of_jsbytes("MAP"),
     cst_CONS=caml_string_of_jsbytes("CONS"),
     cst_GET=caml_string_of_jsbytes("GET"),
     cst_EQ=caml_string_of_jsbytes("EQ"),
     cst_NEQ=caml_string_of_jsbytes("NEQ"),
     cst_LT=caml_string_of_jsbytes("LT"),
     cst_LE=caml_string_of_jsbytes("LE"),
     cst_GT=caml_string_of_jsbytes("GT"),
     cst_GE=caml_string_of_jsbytes("GE"),
     cst_NEG=caml_string_of_jsbytes("NEG"),
     cst_INT=caml_string_of_jsbytes("INT"),
     cst_COMPARE=caml_string_of_jsbytes("COMPARE"),
     cst_ADD=caml_string_of_jsbytes("ADD"),
     cst_SUB=caml_string_of_jsbytes("SUB"),
     cst_MUL=caml_string_of_jsbytes("MUL"),
     cst_EDIV=caml_string_of_jsbytes("EDIV"),
     cst_AND=caml_string_of_jsbytes("AND"),
     cst_OR=caml_string_of_jsbytes("OR"),
     cst_XOR=caml_string_of_jsbytes("XOR"),
     cst_UNIT=caml_string_of_jsbytes("UNIT"),
     cst_PUSH=caml_string_of_jsbytes("PUSH"),
     cst_SOME=caml_string_of_jsbytes("SOME"),
     cst_UPDATE$0=caml_string_of_jsbytes("UPDATE"),
     cst_GET_AND_UPDATE=caml_string_of_jsbytes("GET_AND_UPDATE"),
     cst_MEM=caml_string_of_jsbytes("MEM"),
     cst_EXEC=caml_string_of_jsbytes("EXEC"),
     cst_APPLY=caml_string_of_jsbytes("APPLY"),
     cst_TRANSFER_TOKENS=caml_string_of_jsbytes("TRANSFER_TOKENS"),
     cst_SET_DELEGATE=caml_string_of_jsbytes("SET_DELEGATE"),
     cst_SAPLING_VERIFY_UPDATE=caml_string_of_jsbytes("SAPLING_VERIFY_UPDATE"),
     cst_LEVEL=caml_string_of_jsbytes("LEVEL"),
     cst_CONCAT=caml_string_of_jsbytes("CONCAT"),
     cst_CONCAT$0=caml_string_of_jsbytes("CONCAT"),
     cst_CONCAT$1=caml_string_of_jsbytes("CONCAT"),
     cst_PACK=caml_string_of_jsbytes("PACK"),
     cst_SLICE=caml_string_of_jsbytes("SLICE"),
     cst_SIZE=caml_string_of_jsbytes("SIZE"),
     cst_SELF=caml_string_of_jsbytes("SELF"),
     cst_ADDRESS=caml_string_of_jsbytes("ADDRESS"),
     cst_IMPLICIT_ACCOUNT=caml_string_of_jsbytes("IMPLICIT_ACCOUNT"),
     cst_VOTING_POWER=caml_string_of_jsbytes("VOTING_POWER"),
     cst_CREATE_CONTRACT=caml_string_of_jsbytes("CREATE_CONTRACT"),
     unexpected_final_stack_error=
      caml_string_of_jsbytes("Unexpected final stack"),
     cst$149=caml_string_of_jsbytes(""),
     cst_sp_T=caml_string_of_jsbytes("sp.T"),
     cst_T=caml_string_of_jsbytes("T"),
     cst$155=caml_string_of_jsbytes(""),
     cst_nbsp_nbsp=caml_string_of_jsbytes("&nbsp;&nbsp;"),
     cst$154=caml_string_of_jsbytes("  "),
     cst_secretkey=caml_string_of_jsbytes("secretkey"),
     cst_unit$1=caml_string_of_jsbytes("unit"),
     cst_bool$0=caml_string_of_jsbytes("bool"),
     cst_mutez$0=caml_string_of_jsbytes("mutez"),
     cst_string$2=caml_string_of_jsbytes("string"),
     cst_bytes$3=caml_string_of_jsbytes("bytes"),
     cst_chainId=caml_string_of_jsbytes("chainId"),
     cst_timestamp$1=caml_string_of_jsbytes("timestamp"),
     cst_address$3=caml_string_of_jsbytes("address"),
     cst_key$3=caml_string_of_jsbytes("key"),
     cst_keyHash=caml_string_of_jsbytes("keyHash"),
     cst_bakerHash=caml_string_of_jsbytes("bakerHash"),
     cst_signature$1=caml_string_of_jsbytes("signature"),
     cst_operation$1=caml_string_of_jsbytes("operation"),
     cst_never$0=caml_string_of_jsbytes("never"),
     cst_bls12_381_g1$1=caml_string_of_jsbytes("bls12_381_g1"),
     cst_bls12_381_g2$1=caml_string_of_jsbytes("bls12_381_g2"),
     cst_bls12_381_fr$1=caml_string_of_jsbytes("bls12_381_fr"),
     cst_option$0=caml_string_of_jsbytes("option"),
     cst_list$0=caml_string_of_jsbytes("list"),
     cst_contract$3=caml_string_of_jsbytes("contract"),
     cst_ticket$0=caml_string_of_jsbytes("ticket"),
     cst_map$0=caml_string_of_jsbytes("map"),
     cst_bigMap=caml_string_of_jsbytes("bigMap"),
     cst_intOrNat=caml_string_of_jsbytes("intOrNat"),
     cst_int$2=caml_string_of_jsbytes("int"),
     cst_nat$0=caml_string_of_jsbytes("nat"),
     cst$141=caml_string_of_jsbytes(""),
     cst_final_False=caml_string_of_jsbytes(", final=False"),
     cst$142=caml_string_of_jsbytes(", "),
     cst$143=caml_string_of_jsbytes(""),
     cst$144=caml_string_of_jsbytes(""),
     cst_br=caml_string_of_jsbytes("<br>"),
     cst$145=caml_string_of_jsbytes(",\n"),
     cst$148=caml_string_of_jsbytes(", "),
     cst$146=caml_string_of_jsbytes("\n"),
     cst$147=caml_string_of_jsbytes(""),
     cst_br$0=caml_string_of_jsbytes("<br>"),
     cst$150=caml_string_of_jsbytes(""),
     cst_br$1=caml_string_of_jsbytes("<br>"),
     cst$151=caml_string_of_jsbytes(", "),
     cst$152=caml_string_of_jsbytes(" | "),
     cst$153=caml_string_of_jsbytes(", "),
     cst_saplingState=caml_string_of_jsbytes("saplingState"),
     cst_saplingTransaction=caml_string_of_jsbytes("saplingTransaction"),
     cst_span_class_partialType_sp_=
      caml_string_of_jsbytes
       ("<span class='partialType'>sp.TUnknown()<\/span>"),
     cst$156=caml_string_of_jsbytes(", "),
     cst_None$49=caml_string_of_jsbytes("None"),
     cst_None$50=caml_string_of_jsbytes("None"),
     cst_sp_none=caml_string_of_jsbytes("sp.none"),
     cst_Some$47=caml_string_of_jsbytes("Some"),
     cst$160=caml_string_of_jsbytes(""),
     cst$158=caml_string_of_jsbytes(", "),
     cst$159=caml_string_of_jsbytes(", "),
     cst$157=caml_string_of_jsbytes(", "),
     cst$162=caml_string_of_jsbytes(""),
     cst$161=caml_string_of_jsbytes(", "),
     cst_Key=caml_string_of_jsbytes("Key"),
     cst$163=caml_string_of_jsbytes(", "),
     cst$164=caml_string_of_jsbytes(", "),
     cst_div_class_operation_Remove=
      caml_string_of_jsbytes("<div class='operation'>Remove Delegate<\/div>"),
     cst_sp_none$0=caml_string_of_jsbytes("sp.none"),
     cst$165=caml_string_of_jsbytes(""),
     cst_Remove_Delegate=caml_string_of_jsbytes("Remove Delegate"),
     cst_sp_none$1=caml_string_of_jsbytes("sp.none"),
     cst$166=caml_string_of_jsbytes(""),
     cst$189=caml_string_of_jsbytes("<<"),
     cst$188=caml_string_of_jsbytes(">>"),
     cst$187=caml_string_of_jsbytes("~"),
     cst_not$0=caml_string_of_jsbytes("not"),
     cst_abs=caml_string_of_jsbytes("abs"),
     cst_self$1=caml_string_of_jsbytes("self"),
     cst_sp$1=caml_string_of_jsbytes("sp."),
     cst$184=caml_string_of_jsbytes(", "),
     cst$185=caml_string_of_jsbytes(" "),
     cst$186=caml_string_of_jsbytes(""),
     cst_self=caml_string_of_jsbytes("self"),
     cst_self$0=caml_string_of_jsbytes("self"),
     cst_level$0=caml_string_of_jsbytes("level"),
     cst_constant$0=caml_string_of_jsbytes("constant"),
     cst_operations$1=caml_string_of_jsbytes("__operations__"),
     cst_parameter$2=caml_string_of_jsbytes("__parameter__"),
     cst_storage$10=caml_string_of_jsbytes("__storage__"),
     s=caml_string_of_jsbytes("data"),
     cst_operations$2=caml_string_of_jsbytes("operations()"),
     cst_constant=caml_string_of_jsbytes("constant"),
     cst_concat=caml_string_of_jsbytes("concat"),
     cst_self_address=caml_string_of_jsbytes("self_address"),
     cst_to_address=caml_string_of_jsbytes("to_address"),
     cst_implicit_account=caml_string_of_jsbytes("implicit_account"),
     cst_pack=caml_string_of_jsbytes("pack"),
     cst_to_constant=caml_string_of_jsbytes("to_constant"),
     cst_set_delegate_operation=
      caml_string_of_jsbytes("set_delegate_operation"),
     cst_sign=caml_string_of_jsbytes("sign"),
     cst_len=caml_string_of_jsbytes("len"),
     cst_sum=caml_string_of_jsbytes("sum"),
     cst_to_int=caml_string_of_jsbytes("to_int"),
     cst_read_ticket_raw=caml_string_of_jsbytes("read_ticket_raw"),
     cst_join_tickets_raw=caml_string_of_jsbytes("join_tickets_raw"),
     cst_pairing_check=caml_string_of_jsbytes("pairing_check"),
     cst_voting_power=caml_string_of_jsbytes("voting_power"),
     cst_unbound=caml_string_of_jsbytes("unbound"),
     cst_snd=caml_string_of_jsbytes("snd"),
     cst_fst=caml_string_of_jsbytes("fst"),
     cst_unpack=caml_string_of_jsbytes("unpack"),
     cst_set_type_expr=caml_string_of_jsbytes("set_type_expr"),
     cst_None$51=caml_string_of_jsbytes("None"),
     cst_Some$48=caml_string_of_jsbytes("Some"),
     cst_some$1=caml_string_of_jsbytes("some"),
     cst_none=caml_string_of_jsbytes("none"),
     cst_Some$49=caml_string_of_jsbytes("Some"),
     cst_add_seconds=caml_string_of_jsbytes("add_seconds"),
     cst_ticket$1=caml_string_of_jsbytes("ticket"),
     cst_split_ticket_raw=caml_string_of_jsbytes("split_ticket_raw"),
     cst_ediv$0=caml_string_of_jsbytes("ediv"),
     cst_mul=caml_string_of_jsbytes("mul"),
     cst_Some$50=caml_string_of_jsbytes("Some"),
     cst_as_nat=caml_string_of_jsbytes("as_nat"),
     cst$190=caml_string_of_jsbytes(", "),
     cst$191=caml_string_of_jsbytes(", "),
     cst$192=caml_string_of_jsbytes(", "),
     cst$193=caml_string_of_jsbytes(", "),
     cst$194=caml_string_of_jsbytes(", "),
     cst$195=caml_string_of_jsbytes(""),
     cst_Raw$0=caml_string_of_jsbytes("'Raw'"),
     cst_Hex$0=caml_string_of_jsbytes("'Hex'"),
     cst$196=caml_string_of_jsbytes(", "),
     cst$197=caml_string_of_jsbytes(", "),
     cst$198=caml_string_of_jsbytes(" "),
     cst$199=caml_string_of_jsbytes(""),
     cst$200=caml_string_of_jsbytes(" "),
     cst_never$1=caml_string_of_jsbytes("never"),
     cst_failwith=caml_string_of_jsbytes("failwith"),
     name$0=caml_string_of_jsbytes("verify"),
     cst_verify=caml_string_of_jsbytes("verify"),
     partial=[11,caml_string_of_jsbytes("else:"),[2,0,[15,0]]],
     cst_operations$3=caml_string_of_jsbytes("__operations__"),
     cst_Some$51=caml_string_of_jsbytes("Some"),
     cst$201=caml_string_of_jsbytes("="),
     cst$202=caml_string_of_jsbytes("<-"),
     cst_span_class_keyword_del_spa=
      caml_string_of_jsbytes("<span class='keyword'>del<\/span>"),
     cst_del=caml_string_of_jsbytes("del"),
     cst_add=caml_string_of_jsbytes("add"),
     cst_remove=caml_string_of_jsbytes("remove"),
     cst$203=caml_string_of_jsbytes(""),
     cst$204=caml_string_of_jsbytes(";"),
     cst$205=caml_string_of_jsbytes("()"),
     cst_set_type=caml_string_of_jsbytes("set_type"),
     cst_trace=caml_string_of_jsbytes("trace"),
     cst$208=caml_string_of_jsbytes(""),
     cst_nbsp_nbsp$0=caml_string_of_jsbytes("&nbsp;&nbsp;"),
     cst$207=caml_string_of_jsbytes("  "),
     cst_br$2=caml_string_of_jsbytes("\n<br>"),
     cst$206=caml_string_of_jsbytes("\n"),
     cst_Yojson_exception=caml_string_of_jsbytes("Yojson exception - "),
     cst$229=caml_string_of_jsbytes(" "),
     cst_br$4=caml_string_of_jsbytes("<br>"),
     cst$230=caml_string_of_jsbytes("\n"),
     line_no=[0,caml_string_of_jsbytes(""),-1],
     cst$227=caml_string_of_jsbytes(" "),
     cst$228=caml_string_of_jsbytes(", "),
     cst$226=caml_string_of_jsbytes(" "),
     cst$225=caml_string_of_jsbytes(" "),
     cst$223=caml_string_of_jsbytes(""),
     cst$224=caml_string_of_jsbytes(", "),
     cst$222=caml_string_of_jsbytes(""),
     cst$211=caml_string_of_jsbytes(""),
     cst_params$2=caml_string_of_jsbytes(", params"),
     cst_sp_entry_point=caml_string_of_jsbytes("\n  @sp.entry_point"),
     cst_sp_entry_point_private_Tru=
      caml_string_of_jsbytes("\n  @sp.entry_point(private = True)"),
     cst$212=caml_string_of_jsbytes(" ()"),
     cst_params$3=caml_string_of_jsbytes(" params"),
     cst_br$3=caml_string_of_jsbytes("\n<br>"),
     cst$221=caml_string_of_jsbytes("\n"),
     cst_nbsp_nbsp$1=caml_string_of_jsbytes("&nbsp;&nbsp;"),
     cst$220=caml_string_of_jsbytes("    "),
     cst_br_nbsp_nbsp_nbsp_nbsp_nbs=
      caml_string_of_jsbytes
       (",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"),
     cst$215=caml_string_of_jsbytes(",\n              "),
     cst_br_nbsp_nbsp_nbsp_nbsp_nbs$0=
      caml_string_of_jsbytes
       ("<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"),
     cst$218=caml_string_of_jsbytes("\n                 "),
     cst$216=caml_string_of_jsbytes(" "),
     cst$217=caml_string_of_jsbytes(","),
     cst$219=caml_string_of_jsbytes(""),
     cst$214=caml_string_of_jsbytes("; "),
     cst$213=caml_string_of_jsbytes(""),
     cst$210=caml_string_of_jsbytes(""),
     cst_br_br_br=caml_string_of_jsbytes("<br><br><br>"),
     cst$209=caml_string_of_jsbytes(""),
     cst$183=caml_string_of_jsbytes("~"),
     cst_not=caml_string_of_jsbytes("not"),
     cst_sp_is_nat=caml_string_of_jsbytes("sp.is_nat"),
     cst_sp$0=caml_string_of_jsbytes("sp."),
     cst_min=caml_string_of_jsbytes("min"),
     cst_max=caml_string_of_jsbytes("max"),
     cst$168=caml_string_of_jsbytes("!="),
     cst$167=caml_string_of_jsbytes("<>"),
     cst$170=caml_string_of_jsbytes("=="),
     cst$169=caml_string_of_jsbytes("="),
     cst$171=caml_string_of_jsbytes("&"),
     cst$172=caml_string_of_jsbytes("|"),
     cst$173=caml_string_of_jsbytes("+"),
     cst$174=caml_string_of_jsbytes("-"),
     cst$175=caml_string_of_jsbytes("//"),
     cst_ediv=caml_string_of_jsbytes("ediv"),
     cst$176=caml_string_of_jsbytes("%"),
     cst$177=caml_string_of_jsbytes("<"),
     cst$178=caml_string_of_jsbytes("<="),
     cst$179=caml_string_of_jsbytes(">"),
     cst$180=caml_string_of_jsbytes(">="),
     cst$181=caml_string_of_jsbytes("^"),
     cst$182=caml_string_of_jsbytes("*"),
     cst_storage$9=caml_string_of_jsbytes("storage"),
     cst_local=caml_string_of_jsbytes("local"),
     cst_param=caml_string_of_jsbytes("param"),
     cst_iter=caml_string_of_jsbytes("iter"),
     cst_list_map=caml_string_of_jsbytes("list_map"),
     cst_match_cons=caml_string_of_jsbytes("match_cons"),
     cst$134=caml_string_of_jsbytes(""),
     cst_sp_unit$0=caml_string_of_jsbytes("sp.unit"),
     cst$135=caml_string_of_jsbytes(","),
     cst$136=caml_string_of_jsbytes("; "),
     cst$137=caml_string_of_jsbytes(","),
     cst$138=caml_string_of_jsbytes("; "),
     cst$139=caml_string_of_jsbytes(""),
     cst$140=caml_string_of_jsbytes(""),
     cst_0x$1=caml_string_of_jsbytes("0x"),
     cst_sp=caml_string_of_jsbytes("sp."),
     cst$127=caml_string_of_jsbytes(", "),
     cst$128=caml_string_of_jsbytes(" "),
     cst$129=caml_string_of_jsbytes(""),
     cst$130=caml_string_of_jsbytes("'"),
     cst$132=caml_string_of_jsbytes('"'),
     cst$133=caml_string_of_jsbytes("'"),
     cst_sp_unit=caml_string_of_jsbytes("sp.unit"),
     cst$131=caml_string_of_jsbytes("()"),
     cst_bytes$2=caml_string_of_jsbytes("bytes"),
     cst_chain_id$1=caml_string_of_jsbytes("chain_id"),
     cst_timestamp$0=caml_string_of_jsbytes("timestamp"),
     cst_key$2=caml_string_of_jsbytes("key"),
     cst_secret_key$1=caml_string_of_jsbytes("secret_key"),
     cst_key_hash$0=caml_string_of_jsbytes("key_hash"),
     cst_baker_hash$0=caml_string_of_jsbytes("baker_hash"),
     cst_signature$0=caml_string_of_jsbytes("signature"),
     cst_sapling_test_state=caml_string_of_jsbytes("sapling test state"),
     cst_sapling_test_transaction=
      caml_string_of_jsbytes("sapling test transaction"),
     cst_bls12_381_g1$0=caml_string_of_jsbytes("bls12_381_g1"),
     cst_bls12_381_g2$0=caml_string_of_jsbytes("bls12_381_g2"),
     cst_bls12_381_fr$0=caml_string_of_jsbytes("bls12_381_fr"),
     cst_0000000=caml_string_of_jsbytes("0000000"),
     cst$124=caml_string_of_jsbytes(""),
     cst$125=caml_string_of_jsbytes("\n"),
     cst$126=caml_string_of_jsbytes("\n"),
     cst$123=caml_string_of_jsbytes(""),
     cst$122=caml_string_of_jsbytes(""),
     string$3=[0,0,0,0],
     cst_json$0=caml_string_of_jsbytes("json"),
     cst_py$1=caml_string_of_jsbytes("py"),
     cst$237=caml_string_of_jsbytes(" "),
     cst$239=caml_string_of_jsbytes(", "),
     cst$238=caml_string_of_jsbytes("()"),
     cst$235=caml_string_of_jsbytes(" "),
     cst$236=caml_string_of_jsbytes(", "),
     cst$233=caml_string_of_jsbytes(","),
     cst$234=caml_string_of_jsbytes("\n"),
     cst_csv=caml_string_of_jsbytes("csv"),
     cst_html$2=caml_string_of_jsbytes("html"),
     cst_tz$0=caml_string_of_jsbytes("tz"),
     cst_py$0=caml_string_of_jsbytes("py"),
     cst_michel=caml_string_of_jsbytes("michel"),
     cst_json=caml_string_of_jsbytes("json"),
     cst_tz=caml_string_of_jsbytes("tz"),
     cst_html$1=caml_string_of_jsbytes(".html"),
     cst_src_https_SmartPy_io_stati=
      caml_string_of_jsbytes("src='https://SmartPy.io/static/img"),
     cst_src_static_img=caml_string_of_jsbytes("src='static/img"),
     cst$232=caml_string_of_jsbytes(""),
     cst_py=caml_string_of_jsbytes("py"),
     cst_ml=caml_string_of_jsbytes("ml"),
     cst_ts=caml_string_of_jsbytes("ts"),
     cst$231=caml_string_of_jsbytes("."),
     cst_list_nth_cannot_insert=
      caml_string_of_jsbytes("list_nth: cannot insert"),
     cst_list_nth_cannot_delete=
      caml_string_of_jsbytes("list_nth: cannot delete"),
     cst_parseDate_not_implemented=
      caml_string_of_jsbytes("parseDate not implemented"),
     cst_getRadioValue_not_implemen=
      caml_string_of_jsbytes("getRadioValue not implemented"),
     cst_setOutputToMethod_not_impl=
      caml_string_of_jsbytes("setOutputToMethod not implemented"),
     cst_addOutput_not_implemented=
      caml_string_of_jsbytes("addOutput not implemented"),
     cst_setOutput_not_implemented=
      caml_string_of_jsbytes("setOutput not implemented"),
     cst_setValue_not_implemented=
      caml_string_of_jsbytes("setValue not implemented"),
     cst_setText_not_implemented=
      caml_string_of_jsbytes("setText not implemented"),
     cst_getText_not_implemented=
      caml_string_of_jsbytes("getText not implemented"),
     cst_All_constraints_resolved=
      caml_string_of_jsbytes("All constraints resolved."),
     cst_Constraint_resolution=
      caml_string_of_jsbytes("Constraint resolution..."),
     s$0=[0,0],
     cst_storage$18=caml_string_of_jsbytes("__storage__"),
     cst_storage$16=caml_string_of_jsbytes("_storage"),
     cst_storage$17=caml_string_of_jsbytes("_storage"),
     cst_contract_id$2=caml_string_of_jsbytes("contract id"),
     cst_contract_id$1=caml_string_of_jsbytes("contract id"),
     cst_full$0=caml_string_of_jsbytes("_full"),
     cst_contract_id=caml_string_of_jsbytes("contract id"),
     cst_contract_id$0=caml_string_of_jsbytes("contract id"),
     cst_storage$15=caml_string_of_jsbytes("_storage"),
     cst_full=caml_string_of_jsbytes("_full"),
     cst_contract_id$3=caml_string_of_jsbytes("contract id"),
     cst_address$4=caml_string_of_jsbytes("address"),
     cst_operation$2=caml_string_of_jsbytes("operation"),
     cst_Too_many_output_types=caml_string_of_jsbytes("Too many output types"),
     cst_Empty_output_types=caml_string_of_jsbytes("Empty output types"),
     cst_None$54=caml_string_of_jsbytes("None"),
     cst_Some$54=caml_string_of_jsbytes("Some"),
     cst_None$55=caml_string_of_jsbytes("None"),
     cst_Lambda=caml_string_of_jsbytes("Lambda"),
     cst_parameter_lazy$1=caml_string_of_jsbytes("__parameter_lazy__"),
     cst_Self_parameter_lazy$0=caml_string_of_jsbytes("Self parameter (lazy)"),
     cst$243=caml_string_of_jsbytes("*"),
     cst$240=caml_string_of_jsbytes("+"),
     cst$241=caml_string_of_jsbytes("-"),
     cst$242=caml_string_of_jsbytes("%"),
     cst_min$0=caml_string_of_jsbytes("min"),
     cst_max$0=caml_string_of_jsbytes("max"),
     cst_None$53=caml_string_of_jsbytes("None"),
     cst_Some$53=caml_string_of_jsbytes("Some"),
     cst_Local=caml_string_of_jsbytes("Local"),
     cst_Meta_Local=caml_string_of_jsbytes("Meta Local"),
     cst_Global_var=caml_string_of_jsbytes("Global var"),
     cst_Pattern=caml_string_of_jsbytes("Pattern"),
     cst_Iterator=caml_string_of_jsbytes("Iterator"),
     cst_Match_list=caml_string_of_jsbytes("Match list"),
     cst_storage$14=caml_string_of_jsbytes("_storage"),
     cst_Contract_var=caml_string_of_jsbytes("Contract var"),
     cst_Contract_var$0=caml_string_of_jsbytes("Contract var"),
     cst_Scenario_var=caml_string_of_jsbytes("Scenario var"),
     cst_contract$5=caml_string_of_jsbytes("__contract__"),
     cst_Self_parameter=caml_string_of_jsbytes("Self parameter"),
     cst_parameter_contract=caml_string_of_jsbytes("__parameter_contract__"),
     cst_Self_parameter$0=caml_string_of_jsbytes("Self parameter"),
     cst_parameter_lazy$0=caml_string_of_jsbytes("__parameter_lazy__"),
     cst_contract$4=caml_string_of_jsbytes("__contract__"),
     cst_parameter$5=caml_string_of_jsbytes("__parameter__"),
     cst_storage$13=caml_string_of_jsbytes("__storage__"),
     cst_parameter$4=caml_string_of_jsbytes("__parameter__"),
     cst_operations$4=caml_string_of_jsbytes("__operations__"),
     cst_parameter$3=caml_string_of_jsbytes("__parameter__"),
     cst_storage$12=caml_string_of_jsbytes("__storage__"),
     cst_storage$11=caml_string_of_jsbytes("__storage__"),
     cst_Storage=caml_string_of_jsbytes("Storage"),
     cst_add$0=caml_string_of_jsbytes("add"),
     cst_remove$0=caml_string_of_jsbytes("remove"),
     cst_parameter_lazy=caml_string_of_jsbytes("__parameter_lazy__"),
     cst_Self_parameter_lazy=caml_string_of_jsbytes("Self parameter (lazy)"),
     cst_tail$0=caml_string_of_jsbytes("tail"),
     cst_head$0=caml_string_of_jsbytes("head"),
     cst_Left$5=caml_string_of_jsbytes("Left"),
     cst_None$52=caml_string_of_jsbytes("None"),
     cst_Right$5=caml_string_of_jsbytes("Right"),
     cst_Some$52=caml_string_of_jsbytes("Some"),
     cst_comparison_between=caml_string_of_jsbytes("comparison between"),
     cst_a=caml_string_of_jsbytes("a"),
     cst_TODO_expr_of_value_Operati=
      caml_string_of_jsbytes("TODO expr.of_value Operation"),
     cst_Right$6=caml_string_of_jsbytes("Right"),
     cst_Left$6=caml_string_of_jsbytes("Left"),
     cst_Some$55=caml_string_of_jsbytes("Some"),
     cst_None$56=caml_string_of_jsbytes("None"),
     cst_operations$5=caml_string_of_jsbytes("__operations__"),
     cst_operations$6=caml_string_of_jsbytes("__operations__"),
     cst_storage$19=caml_string_of_jsbytes("__storage__"),
     cst_None$57=caml_string_of_jsbytes("None"),
     cst_Some$57=caml_string_of_jsbytes("Some"),
     cst_Some$56=caml_string_of_jsbytes("Some"),
     cst$245=caml_string_of_jsbytes(""),
     cst$246=caml_string_of_jsbytes(""),
     cst$247=caml_string_of_jsbytes(""),
     cst$248=caml_string_of_jsbytes(""),
     cst$249=caml_string_of_jsbytes(""),
     cst$250=caml_string_of_jsbytes(""),
     cst$251=caml_string_of_jsbytes(""),
     cst$252=caml_string_of_jsbytes(""),
     cst$253=caml_string_of_jsbytes(""),
     cst_zero_of_type_operation=
      caml_string_of_jsbytes("zero_of_type: operation"),
     cst_zero_of_type_never=caml_string_of_jsbytes("zero_of_type: never"),
     cst$254=caml_string_of_jsbytes(""),
     cst$255=caml_string_of_jsbytes(""),
     cst$256=caml_string_of_jsbytes(""),
     cst$257=caml_string_of_jsbytes(""),
     cst_zero_of_type_empty_variant=
      caml_string_of_jsbytes("zero_of_type: empty variant type"),
     cst_zero_of_type_sapling_state=
      caml_string_of_jsbytes("zero_of_type: sapling_state"),
     cst_zero_of_type_sapling_trans=
      caml_string_of_jsbytes("zero_of_type: sapling_transaction"),
     cst_zero_of_type_unknown=caml_string_of_jsbytes("zero_of_type: unknown"),
     cst_Pair$6=caml_string_of_jsbytes("Pair"),
     cst$258=caml_string_of_jsbytes(""),
     cst_Left$7=caml_string_of_jsbytes("Left"),
     cst_Right$7=caml_string_of_jsbytes("Right"),
     cst$259=caml_string_of_jsbytes(""),
     cst_Elt$2=caml_string_of_jsbytes("Elt"),
     cst$261=caml_string_of_jsbytes(""),
     cst$260=caml_string_of_jsbytes(""),
     cst_False$3=caml_string_of_jsbytes("False"),
     cst_True$3=caml_string_of_jsbytes("True"),
     cst_None$63=caml_string_of_jsbytes("None"),
     cst_Some$63=caml_string_of_jsbytes("Some"),
     cst_Pair$7=caml_string_of_jsbytes("Pair"),
     cst_Pair$8=caml_string_of_jsbytes("Pair"),
     name$1=caml_string_of_jsbytes("x"),
     cst_Left$8=caml_string_of_jsbytes("Left"),
     cst_None$64=caml_string_of_jsbytes("None"),
     cst_Some$64=caml_string_of_jsbytes("Some"),
     cst_None$65=caml_string_of_jsbytes("None"),
     cst_Some$65=caml_string_of_jsbytes("Some"),
     cst_Right$8=caml_string_of_jsbytes("Right"),
     cst_Left$9=caml_string_of_jsbytes("Left"),
     cst_Right$9=caml_string_of_jsbytes("Right"),
     cst_Right$10=caml_string_of_jsbytes("Right"),
     cst_Left$10=caml_string_of_jsbytes("Left"),
     cst_Pair$9=caml_string_of_jsbytes("Pair"),
     cst$262=caml_string_of_jsbytes(""),
     cst$263=caml_string_of_jsbytes(""),
     cst_Unit$6=caml_string_of_jsbytes("Unit"),
     cst_Pair$2=caml_string_of_jsbytes("Pair"),
     cst_pair$0=caml_string_of_jsbytes("pair"),
     cst_pair$1=caml_string_of_jsbytes("pair"),
     cst_Pair$3=caml_string_of_jsbytes("Pair"),
     cst_Pair$4=caml_string_of_jsbytes("Pair"),
     cst_Pair$5=caml_string_of_jsbytes("Pair"),
     cst_key$4=caml_string_of_jsbytes("key"),
     cst_fst$0=caml_string_of_jsbytes("fst"),
     cst_snd$0=caml_string_of_jsbytes("snd"),
     cst_project_literals_TODO_n_tu=
      caml_string_of_jsbytes("project_literals: TODO n-tuples"),
     cst_closure_apply_not_a_closur=
      caml_string_of_jsbytes("closure_apply: not a closure"),
     cst_lens_map$0=caml_string_of_jsbytes("lens_map"),
     cst_lens_set=caml_string_of_jsbytes("lens_set"),
     cst_lens_map=caml_string_of_jsbytes("lens_map"),
     cst_lens_list=caml_string_of_jsbytes("lens_list"),
     cst_Type_error_list=caml_string_of_jsbytes("Type error list"),
     cst_Invalid_intXor_operation=
      caml_string_of_jsbytes("Invalid intXor operation"),
     cst_Some$61=caml_string_of_jsbytes("Some"),
     cst_None$62=caml_string_of_jsbytes("None"),
     cst_Some$62=caml_string_of_jsbytes("Some"),
     cst_Some$60=caml_string_of_jsbytes("Some"),
     cst_None$60=caml_string_of_jsbytes("None"),
     cst_None$61=caml_string_of_jsbytes("None"),
     cst_Variant_type_error_in_fiel=
      caml_string_of_jsbytes("Variant type error in field"),
     cst_Variant_type_missing_field=
      caml_string_of_jsbytes("Variant type missing field"),
     cst_unRecord=caml_string_of_jsbytes("unRecord"),
     cst_Invalid_operation=caml_string_of_jsbytes("Invalid - operation"),
     cst_Invalid_operation_with_dif$4=
      caml_string_of_jsbytes("Invalid / operation with different types"),
     cst_Invalid_operation_with_dif$3=
      caml_string_of_jsbytes("Invalid * operation with different types"),
     cst_Invalid_xor_operation_with=
      caml_string_of_jsbytes("Invalid xor operation with different types"),
     cst_Invalid_operation_with_dif$2=
      caml_string_of_jsbytes("Invalid >> operation with different types"),
     cst_Invalid_operation_with_dif$1=
      caml_string_of_jsbytes("Invalid << operation with different types"),
     cst_Invalid_operation_with_dif$0=
      caml_string_of_jsbytes("Invalid * operation with different types"),
     cst_Invalid_operation_with_dif=
      caml_string_of_jsbytes("Invalid - operation with different types"),
     cst_None$59=caml_string_of_jsbytes("None"),
     cst_Some$59=caml_string_of_jsbytes("Some"),
     cst_Not_a_BLS12_type=caml_string_of_jsbytes("Not a BLS12 type"),
     cst_None$58=caml_string_of_jsbytes("None"),
     cst_Some$58=caml_string_of_jsbytes("Some"),
     cst_in=caml_string_of_jsbytes(" in "),
     cst_Missing_constructor=caml_string_of_jsbytes("Missing constructor "),
     cst_None$67=caml_string_of_jsbytes("None"),
     cst$268=caml_string_of_jsbytes(""),
     cst_hidden=caml_string_of_jsbytes("hidden"),
     cst_KT$0=caml_string_of_jsbytes("KT"),
     cst_tz$1=caml_string_of_jsbytes("tz"),
     cst_KT=caml_string_of_jsbytes("KT"),
     cst_Mutez$0=caml_string_of_jsbytes("Mutez"),
     cst_Tez$0=caml_string_of_jsbytes("Tez"),
     cst_secret_key$2=caml_string_of_jsbytes("secret_key"),
     cst$267=caml_string_of_jsbytes(""),
     cst_Mutez=caml_string_of_jsbytes("Mutez"),
     cst_Tez=caml_string_of_jsbytes("Tez"),
     cst_string$3=caml_string_of_jsbytes("string"),
     cst_bytes$4=caml_string_of_jsbytes("bytes"),
     cst_chainid=caml_string_of_jsbytes("chainid"),
     cst_timestamp$2=caml_string_of_jsbytes("timestamp"),
     cst_address$5=caml_string_of_jsbytes("address"),
     cst_key$5=caml_string_of_jsbytes("key"),
     cst_key_hash$1=caml_string_of_jsbytes("key_hash"),
     cst_baker_hash$1=caml_string_of_jsbytes("baker_hash"),
     cst_signature$2=caml_string_of_jsbytes("signature"),
     gui=caml_string_of_jsbytes("Type operation not handled"),
     gui$0=caml_string_of_jsbytes("Type never has no value"),
     cst_bls12_381_g1$2=caml_string_of_jsbytes("bls12_381_g1"),
     cst_bls12_381_g2$2=caml_string_of_jsbytes("bls12_381_g2"),
     cst_bls12_381_fr$2=caml_string_of_jsbytes("bls12_381_fr"),
     cst_contract$6=caml_string_of_jsbytes("contract"),
     gui$1=caml_string_of_jsbytes("Type ticket cannot be forged"),
     cst_lambda$0=caml_string_of_jsbytes("lambda"),
     cst_int$3=caml_string_of_jsbytes("int"),
     gui$2=caml_string_of_jsbytes("Type sapling_state not handled"),
     gui$3=caml_string_of_jsbytes("Type sapling_transaction not handled"),
     cst_Some$66=caml_string_of_jsbytes("Some"),
     cst_None$66=caml_string_of_jsbytes("None"),
     cst$269=caml_string_of_jsbytes(""),
     cst$270=caml_string_of_jsbytes(""),
     cst$271=caml_string_of_jsbytes(","),
     partial$0=[11,caml_string_of_jsbytes("<\/div>"),0],
     cst_Four$0=caml_string_of_jsbytes("Four"),
     cst_One$0=caml_string_of_jsbytes("One"),
     cst_Three$0=caml_string_of_jsbytes("Three"),
     cst_Two$0=caml_string_of_jsbytes("Two"),
     cst_Zero$0=caml_string_of_jsbytes("Zero"),
     cst_list$1=caml_string_of_jsbytes("list"),
     cst_Four=caml_string_of_jsbytes("Four"),
     cst_Three=caml_string_of_jsbytes("Three"),
     cst_Two=caml_string_of_jsbytes("Two"),
     cst_One=caml_string_of_jsbytes("One"),
     cst_Zero=caml_string_of_jsbytes("Zero"),
     cst$266=caml_string_of_jsbytes(""),
     cst$265=caml_string_of_jsbytes(""),
     cst$264=caml_string_of_jsbytes("."),
     cst_c$1=caml_string_of_jsbytes("c"),
     cst_command$0=caml_string_of_jsbytes("(command)"),
     cst_type$0=caml_string_of_jsbytes("(type)"),
     cst_tparameter$3=caml_string_of_jsbytes("tparameter"),
     cst_storage$20=caml_string_of_jsbytes("storage"),
     cst$272=caml_string_of_jsbytes(", "),
     cst_HO_none=caml_string_of_jsbytes("HO_none"),
     cst_HO_at_most_one=caml_string_of_jsbytes("HO_at_most_one"),
     cst_HO_many=caml_string_of_jsbytes("HO_many"),
     cst_operations$7=caml_string_of_jsbytes("__operations__"),
     cst_operations$8=caml_string_of_jsbytes("__operations__"),
     cst_Some$67=caml_string_of_jsbytes("(Some "),
     cst$273=caml_string_of_jsbytes(")"),
     cst_None$68=caml_string_of_jsbytes("None"),
     cst_Stack_failed$0=caml_string_of_jsbytes("Stack_failed"),
     cst_dug=caml_string_of_jsbytes("dug"),
     cst_dig=caml_string_of_jsbytes("dig"),
     cst_dup=caml_string_of_jsbytes("dup"),
     cst_swap=caml_string_of_jsbytes("swap"),
     cst_stack_replace=caml_string_of_jsbytes("stack_replace"),
     cst_stack_apply=caml_string_of_jsbytes("stack_apply"),
     cst_ps$0=caml_string_of_jsbytes("ps"),
     cst_ps=caml_string_of_jsbytes("ps"),
     cst_decompile_unresolved_CONCA=
      caml_string_of_jsbytes("decompile: unresolved CONCAT arity"),
     cst_decompiler_TODO_LEVEL=
      caml_string_of_jsbytes("decompiler TODO: LEVEL"),
     cst_CONCAT$3=caml_string_of_jsbytes("CONCAT"),
     cst_decompiler_TODO_inline_Mic=
      caml_string_of_jsbytes("decompiler TODO: inline Michelson: "),
     cst_decompiler_TODO_LOOP_LEFT=
      caml_string_of_jsbytes("decompiler TODO: LOOP_LEFT"),
     cst_decompiler_UNPAIR_with_gap=
      caml_string_of_jsbytes("decompiler: UNPAIR with gaps"),
     cst_decompiler_SET_FIELD=caml_string_of_jsbytes("decompiler: SET_FIELD"),
     cst_x$4=caml_string_of_jsbytes("x"),
     cst_s$5=caml_string_of_jsbytes("s"),
     cst_r$2=caml_string_of_jsbytes("r"),
     cst_iter_over=caml_string_of_jsbytes("iter_over"),
     cst_s$4=caml_string_of_jsbytes("s"),
     cst_r$1=caml_string_of_jsbytes("r"),
     cst_map_over=caml_string_of_jsbytes("map_over"),
     cst_s$3=caml_string_of_jsbytes("s"),
     cst_r$0=caml_string_of_jsbytes("r"),
     cst_x$3=caml_string_of_jsbytes("x"),
     cst_xs=caml_string_of_jsbytes("xs"),
     cst_if_cons=caml_string_of_jsbytes("if_cons"),
     cst_s$2=caml_string_of_jsbytes("s"),
     cst_if_none=caml_string_of_jsbytes("if_none"),
     cst_l$0=caml_string_of_jsbytes("l"),
     cst_r=caml_string_of_jsbytes("r"),
     cst_if_left=caml_string_of_jsbytes("if_left"),
     cst_if=caml_string_of_jsbytes("if_"),
     cst_s=caml_string_of_jsbytes("s"),
     cst$274=caml_string_of_jsbytes("..."),
     cst$275=caml_string_of_jsbytes("..."),
     cst_s$0=caml_string_of_jsbytes("s"),
     cst_s$1=caml_string_of_jsbytes("s"),
     cst_x$2=caml_string_of_jsbytes("x"),
     cst_x$1=caml_string_of_jsbytes("x"),
     cst_x$0=caml_string_of_jsbytes("x"),
     cst_x=caml_string_of_jsbytes("x"),
     cst_Stack_failed$1=caml_string_of_jsbytes("Stack_failed"),
     p_dummy=[1,0],
     cst$276=caml_string_of_jsbytes("{"),
     cst$277=caml_string_of_jsbytes("}"),
     cst$278=caml_string_of_jsbytes("{"),
     cst_custom=caml_string_of_jsbytes("custom"),
     cst_michelson_v1_primitives=
      caml_string_of_jsbytes("michelson.v1.primitives"),
     cst_michelson_v1=caml_string_of_jsbytes("michelson_v1"),
     pack_prefix=caml_string_of_jsbytes("\x05"),
     cAr=[26,[0,0,0]],
     cDr=[26,[0,1,0]],
     cst_T_entry_points=caml_string_of_jsbytes("T_entry_points"),
     cst_T_self_address=caml_string_of_jsbytes("T_self_address"),
     cst_NA=caml_string_of_jsbytes("NA"),
     cst_compile_tuple=caml_string_of_jsbytes("compile_tuple"),
     cst_Secret_keys_are_forbidden_=
      caml_string_of_jsbytes("Secret keys are forbidden in contracts"),
     cst_sapling_state_with_no_expl=
      caml_string_of_jsbytes("sapling state with no explicit memo"),
     cst_sapling_transaction_with_n=
      caml_string_of_jsbytes("sapling transaction with no explicit memo"),
     cst_Unknown_Type=caml_string_of_jsbytes("Unknown Type"),
     cst_Left$14=caml_string_of_jsbytes("Left"),
     cst_None$72=caml_string_of_jsbytes("None"),
     cst_Right$14=caml_string_of_jsbytes("Right"),
     cst_Some$71=caml_string_of_jsbytes("Some"),
     cst_compile_value_closure_with=
      caml_string_of_jsbytes("compile_value: closure with arguments"),
     cst_compile_value_operation=
      caml_string_of_jsbytes("compile_value: operation"),
     cst_some_ticket=caml_string_of_jsbytes("(some ticket)"),
     cst_missing_entry_point=caml_string_of_jsbytes("missing entry point"),
     cst$288=caml_string_of_jsbytes(""),
     cst$289=caml_string_of_jsbytes(""),
     cst$290=caml_string_of_jsbytes(""),
     cst$291=caml_string_of_jsbytes(""),
     cst_for=caml_string_of_jsbytes("for"),
     cst_iteratee=caml_string_of_jsbytes("#iteratee"),
     cst_invalid_lexpr_CModifyProdu=
      caml_string_of_jsbytes("invalid lexpr: CModifyProduct"),
     cst_invalid_lexpr_CModifyProdu$0=
      caml_string_of_jsbytes("invalid lexpr: CModifyProduct"),
     cst_failwith$0=caml_string_of_jsbytes("failwith"),
     cst_verify$0=caml_string_of_jsbytes("verify"),
     cst_step=caml_string_of_jsbytes("#step"),
     cst_b=caml_string_of_jsbytes("#b"),
     cst_ZeroRangeStep=caml_string_of_jsbytes("ZeroRangeStep"),
     cst_range=caml_string_of_jsbytes("range"),
     cst_loop_step=caml_string_of_jsbytes("loop step"),
     cst_step$0=caml_string_of_jsbytes("#step"),
     cst_b$0=caml_string_of_jsbytes("#b"),
     cst_OfSome=caml_string_of_jsbytes("OfSome"),
     protect_top=[0,0],
     cst_Left$13=caml_string_of_jsbytes("Left"),
     cst_None$70=caml_string_of_jsbytes("None"),
     cst_Right$13=caml_string_of_jsbytes("Right"),
     cst_Some$69=caml_string_of_jsbytes("Some"),
     cst_None$71=caml_string_of_jsbytes("None"),
     cst_Some$70=caml_string_of_jsbytes("Some"),
     cst_Not_a_variant_type=caml_string_of_jsbytes("Not a variant type"),
     cst_map_compilation_error=caml_string_of_jsbytes("map compilation error"),
     name$2=caml_string_of_jsbytes("RANGE"),
     cst_EContains$0=caml_string_of_jsbytes("EContains"),
     range_result_target=[0,caml_string_of_jsbytes("__range_result")],
     cst_cannot_compile_test_ticket=
      caml_string_of_jsbytes("cannot compile test ticket"),
     cst_OpenVariant=caml_string_of_jsbytes("OpenVariant"),
     cst_dummy$0=caml_string_of_jsbytes("dummy"),
     cst_GetItem=caml_string_of_jsbytes("GetItem"),
     cst_elems=caml_string_of_jsbytes("elems"),
     cst_ematch=caml_string_of_jsbytes("ematch"),
     cst_self_address$1=caml_string_of_jsbytes("self_address"),
     cst_compiler_TODO_EProject=
      caml_string_of_jsbytes("compiler: TODO EProject"),
     cst_head$2=caml_string_of_jsbytes("head"),
     cst_tail$2=caml_string_of_jsbytes("tail"),
     cst$287=caml_string_of_jsbytes("."),
     cst_Left$12=caml_string_of_jsbytes("Left"),
     cst_Right$12=caml_string_of_jsbytes("Right"),
     cst_dummy=caml_string_of_jsbytes("dummy"),
     cst_assert_singleton_stack=
      caml_string_of_jsbytes("assert_singleton_stack"),
     cst_unzip_option=caml_string_of_jsbytes("unzip_option"),
     cst_unzip_attr=caml_string_of_jsbytes("unzip_attr"),
     cst_Left$11=caml_string_of_jsbytes("Left"),
     cst_Right$11=caml_string_of_jsbytes("Right"),
     cst_None$69=caml_string_of_jsbytes("None"),
     cst_Some$68=caml_string_of_jsbytes("Some"),
     msg$0=caml_string_of_jsbytes("open_record_pattern"),
     cst_operations$12=caml_string_of_jsbytes("__operations__"),
     cst_storage$24=caml_string_of_jsbytes("__storage__"),
     cst_operations$11=caml_string_of_jsbytes("__operations__"),
     cst_storage$23=caml_string_of_jsbytes("__storage__"),
     cst_DivisionByZero$0=caml_string_of_jsbytes("DivisionByZero"),
     cst_DivisionByZero=caml_string_of_jsbytes("DivisionByZero"),
     cst$284=caml_string_of_jsbytes(""),
     cst_FAKE_SAPLING_TRANSACTION$0=
      caml_string_of_jsbytes("FAKE_SAPLING_TRANSACTION"),
     cst$283=caml_string_of_jsbytes(" "),
     cst$282=caml_string_of_jsbytes("; "),
     msg=caml_string_of_jsbytes("stack failed"),
     cst_available_result=caml_string_of_jsbytes("available /= result"),
     cst$281=caml_string_of_jsbytes("; "),
     cst_fetch_target=caml_string_of_jsbytes("fetch_target"),
     cst_tag_top_stack_too_short=
      caml_string_of_jsbytes("tag_top: stack too short"),
     cst_tag_top=caml_string_of_jsbytes("tag_top"),
     cst_get_ok_stack=caml_string_of_jsbytes("get_ok_stack: "),
     cst$280=caml_string_of_jsbytes(" : "),
     cst_ensure_ops_if_out=caml_string_of_jsbytes("ensure_ops_if_out"),
     cst$285=caml_string_of_jsbytes(", "),
     cst$286=caml_string_of_jsbytes(", "),
     cst_ITER$4=caml_string_of_jsbytes("ITER"),
     cst_MAP$4=caml_string_of_jsbytes("MAP"),
     cst_IF$4=caml_string_of_jsbytes("IF"),
     cst_IF_LEFT$4=caml_string_of_jsbytes("IF_LEFT"),
     cst_IF_NONE$4=caml_string_of_jsbytes("IF_NONE"),
     cst_IF_CONS$4=caml_string_of_jsbytes("IF_CONS"),
     cst_LAMBDA$3=caml_string_of_jsbytes("LAMBDA"),
     cst_get_lazy_id=caml_string_of_jsbytes("get_lazy_id: "),
     x=[1,[0,caml_string_of_jsbytes("__top__")]],
     cst_mark_top_empty_stack=caml_string_of_jsbytes("mark_top: empty stack"),
     cst_arity=caml_string_of_jsbytes("arity: "),
     cst$279=caml_string_of_jsbytes("#"),
     cst_entry_points$0=caml_string_of_jsbytes("entry_points"),
     cst_self_address$0=caml_string_of_jsbytes("self_address"),
     cst_operations$9=caml_string_of_jsbytes("__operations__"),
     cst_parameter$6=caml_string_of_jsbytes("__parameter__"),
     cst_storage$21=caml_string_of_jsbytes("__storage__"),
     cst_storage$22=caml_string_of_jsbytes("storage"),
     cst_params$4=caml_string_of_jsbytes("params"),
     cst_operations$10=caml_string_of_jsbytes("operations"),
     cst_head$1=caml_string_of_jsbytes("head"),
     cst_tail$1=caml_string_of_jsbytes("tail"),
     tgt_parameter=[0,caml_string_of_jsbytes("__parameter__")],
     tgt_storage=[0,caml_string_of_jsbytes("__storage__")],
     tgt_operations=[0,caml_string_of_jsbytes("__operations__")],
     cst_lens_of_steps=caml_string_of_jsbytes("lens_of_steps"),
     cst_lens_of_steps$0=caml_string_of_jsbytes("lens_of_steps"),
     cst_0x$2=caml_string_of_jsbytes("0x"),
     cst_value$2=caml_string_of_jsbytes("value"),
     cst_key$8=caml_string_of_jsbytes("key"),
     cst_value$0=caml_string_of_jsbytes("value"),
     cst_key$6=caml_string_of_jsbytes("key"),
     cst_Level=caml_string_of_jsbytes("Level"),
     cst_operations$13=caml_string_of_jsbytes("__operations__"),
     cst_parameter$7=caml_string_of_jsbytes("__parameter__"),
     cst_storage$25=caml_string_of_jsbytes("__storage__"),
     cst_storage$26=caml_string_of_jsbytes("__storage__"),
     cst_parameter$8=caml_string_of_jsbytes("__parameter__"),
     cst_Not_a_local=caml_string_of_jsbytes("Not a local: "),
     cst_Strange_meta_local=caml_string_of_jsbytes("Strange meta local: "),
     cst_Not_a_meta_local=caml_string_of_jsbytes("Not a meta local: "),
     cst$293=caml_string_of_jsbytes("; "),
     cst$294=caml_string_of_jsbytes("; "),
     cst_secret_key$3=caml_string_of_jsbytes("secret_key"),
     cst_public_key_hash$0=caml_string_of_jsbytes("public_key_hash"),
     cst_public_key$0=caml_string_of_jsbytes("public_key"),
     cst_address$6=caml_string_of_jsbytes("address"),
     cst_seed$1=caml_string_of_jsbytes("seed"),
     cst$296=caml_string_of_jsbytes(""),
     cst$295=caml_string_of_jsbytes(""),
     cst_Interpreter_sp_to_address_=
      caml_string_of_jsbytes
       ("Interpreter. sp.to_address is not available in this context: "),
     cst_Interpreter_sp_implicit_ac=
      caml_string_of_jsbytes
       ("Interpreter. sp.implicit_account is not available in this context: "),
     cst_Pack_error=caml_string_of_jsbytes("Pack error"),
     cst_Voting_power=caml_string_of_jsbytes("Voting_power"),
     cst_bad_sum=caml_string_of_jsbytes("bad sum "),
     cst_Interpreter_sp_voting_powe=
      caml_string_of_jsbytes
       ("Interpreter. sp.voting_power is not available in this context: "),
     cst_Voting_power$0=caml_string_of_jsbytes("Voting_power"),
     cst_interpreter_short_tuple=
      caml_string_of_jsbytes("interpreter: short tuple"),
     cst_Unpack_error=caml_string_of_jsbytes("Unpack error"),
     cst_Interpreter_sp_unpack_expe=
      caml_string_of_jsbytes
       ("Interpreter. sp.unpack expects bytes as parameter: "),
     cst_Not_a_record=caml_string_of_jsbytes("Not a record "),
     cst$297=caml_string_of_jsbytes(", "),
     cst_Cannot_compute=caml_string_of_jsbytes("Cannot compute "),
     cst_Cannot_add_timestamp=caml_string_of_jsbytes("Cannot add timestamp "),
     cst_ETicket$0=caml_string_of_jsbytes("ETicket"),
     cst_bad_range=caml_string_of_jsbytes("bad range"),
     cst_Interpreter_Instruction_no=
      caml_string_of_jsbytes
       ("Interpreter. Instruction not supported in interpreter: "),
     cst_key$7=caml_string_of_jsbytes("key"),
     cst_value$1=caml_string_of_jsbytes("value"),
     cst_address$7=caml_string_of_jsbytes("address"),
     cst_operation$3=caml_string_of_jsbytes("operation"),
     cst_TODO_ematch=caml_string_of_jsbytes("TODO: ematch"),
     cst_sp_has_entry_point=caml_string_of_jsbytes("sp.has_entry_point"),
     cst_Sender=caml_string_of_jsbytes("Sender"),
     cst_Source=caml_string_of_jsbytes("Source"),
     cst_Amount=caml_string_of_jsbytes("Amount"),
     cst_balance$3=caml_string_of_jsbytes("balance"),
     cst_Now=caml_string_of_jsbytes("Now"),
     cst_Self_address=caml_string_of_jsbytes("Self_address"),
     cst_Chainid=caml_string_of_jsbytes("Chainid"),
     cst_total_voting_power=caml_string_of_jsbytes("total_voting_power"),
     cst_self_Entry_point=caml_string_of_jsbytes("self_Entry_point"),
     msg$1=caml_string_of_jsbytes("interpreter: self_entry_point"),
     cst_self_entry_point_tparamete=
      caml_string_of_jsbytes("self_entry_point: tparameter not a variant"),
     cst_Self=caml_string_of_jsbytes("Self"),
     cst_storage$27=caml_string_of_jsbytes("__storage__"),
     cst_not_an_iter=caml_string_of_jsbytes("not an iter"),
     cst_Evaluation_of_sp_never_It_=
      caml_string_of_jsbytes("Evaluation of sp.never. It should not happen."),
     cst_condition$0=caml_string_of_jsbytes("condition"),
     cst_match=caml_string_of_jsbytes("match"),
     cst_Not_a_local$0=caml_string_of_jsbytes("Not a local: "),
     cst_tail$3=caml_string_of_jsbytes("tail"),
     cst_head$3=caml_string_of_jsbytes("head"),
     cst_operations$14=caml_string_of_jsbytes("__operations__"),
     cst_set_entry_point=caml_string_of_jsbytes("set_entry_point"),
     cst_lambda_output=caml_string_of_jsbytes("lambda output"),
     cst_lambda_input=caml_string_of_jsbytes("lambda input"),
     cst_default=caml_string_of_jsbytes("default"),
     cst_Too_many_channels=caml_string_of_jsbytes("Too many channels"),
     err$2=
      [0,[0,936573133,caml_string_of_jsbytes("lazy entry point not found")],0],
     cst_Missing_entry_point=caml_string_of_jsbytes("Missing entry point"),
     cst_no_storage$0=caml_string_of_jsbytes("no storage"),
     cst_Error=caml_string_of_jsbytes("Error"),
     cst_baker$3=caml_string_of_jsbytes("baker"),
     cst_Compute=caml_string_of_jsbytes("Compute "),
     cst_balance$4=caml_string_of_jsbytes("balance"),
     cst_storage$28=caml_string_of_jsbytes("storage"),
     cst_storage$29=caml_string_of_jsbytes("storage"),
     cst_already_defined=caml_string_of_jsbytes("' already defined"),
     cst_Variable=caml_string_of_jsbytes("Variable '"),
     cst_not_in_contract=caml_string_of_jsbytes("not in contract"),
     cst_local_not_found=caml_string_of_jsbytes("local not found: "),
     cst_no_storage=caml_string_of_jsbytes("no storage"),
     cst_variable=caml_string_of_jsbytes("variable"),
     cst_not_a_heap_reference=caml_string_of_jsbytes("not a heap reference"),
     cst$292=caml_string_of_jsbytes(""),
     cst_Smartml_Interpreter_ExecFa=
      caml_string_of_jsbytes("Smartml.Interpreter.ExecFailure"),
     cst_Layout_format_error=caml_string_of_jsbytes("Layout format error "),
     cst_Cannot_find=caml_string_of_jsbytes("Cannot find "),
     cst_import_flags=caml_string_of_jsbytes("import_flags: "),
     cst$301=caml_string_of_jsbytes(", "),
     cst_invalid_flag_usage=caml_string_of_jsbytes("invalid flag usage: "),
     cst_key$9=caml_string_of_jsbytes("key"),
     cst_bool$1=caml_string_of_jsbytes("bool"),
     cst_address$8=caml_string_of_jsbytes("address"),
     cst_baker_hash$2=caml_string_of_jsbytes("baker_hash"),
     cst_bls12_381_fr$3=caml_string_of_jsbytes("bls12_381_fr"),
     cst_bls12_381_g1$3=caml_string_of_jsbytes("bls12_381_g1"),
     cst_bls12_381_g2$3=caml_string_of_jsbytes("bls12_381_g2"),
     cst_0x$5=caml_string_of_jsbytes("0x"),
     cst_0x$6=caml_string_of_jsbytes("0x"),
     cst_0x$7=caml_string_of_jsbytes("0x"),
     cst_bytes$5=caml_string_of_jsbytes("bytes"),
     cst_chain_id_cst=caml_string_of_jsbytes("chain_id_cst"),
     cst_int$4=caml_string_of_jsbytes("int"),
     cst_intOrNat$0=caml_string_of_jsbytes("intOrNat"),
     cst_0x$3=caml_string_of_jsbytes("0x"),
     cst_0x$4=caml_string_of_jsbytes("0x"),
     cst_False$6=caml_string_of_jsbytes("False"),
     cst_True$6=caml_string_of_jsbytes("True"),
     cst_secret_key$4=caml_string_of_jsbytes("secret_key"),
     cst_key_hash$2=caml_string_of_jsbytes("key_hash"),
     cst_literal$0=caml_string_of_jsbytes("literal"),
     cst_mutez$1=caml_string_of_jsbytes("mutez"),
     cst_nat$1=caml_string_of_jsbytes("nat"),
     cst_sapling_test_transaction$0=
      caml_string_of_jsbytes("sapling_test_transaction"),
     cst$302=caml_string_of_jsbytes(""),
     cst$303=caml_string_of_jsbytes(""),
     cst_signature$3=caml_string_of_jsbytes("signature"),
     cst_string$4=caml_string_of_jsbytes("string"),
     cst_timestamp$3=caml_string_of_jsbytes("timestamp"),
     cst_unit$2=caml_string_of_jsbytes("unit"),
     cst_out=caml_string_of_jsbytes("out"),
     cst_call_michelson=caml_string_of_jsbytes("call_michelson"),
     cst_op=caml_string_of_jsbytes("op"),
     cst_Expression_field_format_er=
      caml_string_of_jsbytes("Expression field format error "),
     cst_Clause_format_error=caml_string_of_jsbytes("Clause format error: "),
     cst_map$2=caml_string_of_jsbytes("map"),
     cst_first=caml_string_of_jsbytes("first"),
     cst_concat$0=caml_string_of_jsbytes("concat"),
     cst_balance$5=caml_string_of_jsbytes("balance"),
     cst_abs$0=caml_string_of_jsbytes("abs"),
     cst_account_of_seed=caml_string_of_jsbytes("account_of_seed"),
     cst_add$1=caml_string_of_jsbytes("add"),
     cst_add_seconds$0=caml_string_of_jsbytes("add_seconds"),
     cst_amount$4=caml_string_of_jsbytes("amount"),
     cst_and=caml_string_of_jsbytes("and"),
     cst_apply_lambda=caml_string_of_jsbytes("apply_lambda"),
     cst_attr=caml_string_of_jsbytes("attr"),
     cst_big_map$0=caml_string_of_jsbytes("big_map"),
     cst_blake2b=caml_string_of_jsbytes("blake2b"),
     cst_bounded$0=caml_string_of_jsbytes("bounded"),
     cst_call_lambda=caml_string_of_jsbytes("call_lambda"),
     cst_call_michelson$0=caml_string_of_jsbytes("call_michelson"),
     cst_chain_id$3=caml_string_of_jsbytes("chain_id"),
     cst_check_signature=caml_string_of_jsbytes("check_signature"),
     cst_contract_typed=caml_string_of_jsbytes("contract_typed"),
     cst_cons=caml_string_of_jsbytes("cons"),
     cst_contains=caml_string_of_jsbytes("contains"),
     cst_contract$9=caml_string_of_jsbytes("contract"),
     cst_contract_address=caml_string_of_jsbytes("contract_address"),
     cst_contract_baker=caml_string_of_jsbytes("contract_baker"),
     cst_contract_balance=caml_string_of_jsbytes("contract_balance"),
     cst_contract_data=caml_string_of_jsbytes("contract_data"),
     cst$308=caml_string_of_jsbytes(""),
     cst$309=caml_string_of_jsbytes(""),
     cst_create_contract=caml_string_of_jsbytes("create_contract"),
     cst_data=caml_string_of_jsbytes("data"),
     cst_ediv$1=caml_string_of_jsbytes("ediv"),
     cst_eif=caml_string_of_jsbytes("eif"),
     cst_elements$1=caml_string_of_jsbytes("elements"),
     cst_ematch$0=caml_string_of_jsbytes("ematch"),
     cst_eq=caml_string_of_jsbytes("eq"),
     cst_storage$30=caml_string_of_jsbytes("__storage__"),
     cst_contract$8=caml_string_of_jsbytes("contract"),
     cst_storage$31=caml_string_of_jsbytes("storage"),
     cst_baker$4=caml_string_of_jsbytes("baker"),
     cst_amount$3=caml_string_of_jsbytes("amount"),
     cst_None$78=caml_string_of_jsbytes("None"),
     cst$307=caml_string_of_jsbytes(""),
     cst_isVariant=caml_string_of_jsbytes("isVariant"),
     cst_getOpt=caml_string_of_jsbytes("getOpt"),
     cst_floordiv=caml_string_of_jsbytes("floordiv"),
     cst_ge=caml_string_of_jsbytes("ge"),
     cst_getItem=caml_string_of_jsbytes("getItem"),
     cst_getItemDefault=caml_string_of_jsbytes("getItemDefault"),
     cst_getItemMessage=caml_string_of_jsbytes("getItemMessage"),
     cst_getLocal=caml_string_of_jsbytes("getLocal"),
     cst_getMetaLocal=caml_string_of_jsbytes("getMetaLocal"),
     cst_get_and_update=caml_string_of_jsbytes("get_and_update"),
     cst_global=caml_string_of_jsbytes("global"),
     cst_gt=caml_string_of_jsbytes("gt"),
     cst_has_entry_point=caml_string_of_jsbytes("has_entry_point"),
     cst_hash_key=caml_string_of_jsbytes("hash_key"),
     cst_implicit_account$0=caml_string_of_jsbytes("implicit_account"),
     cst_isNat$0=caml_string_of_jsbytes("isNat"),
     cst_le=caml_string_of_jsbytes("le"),
     cst_items$0=caml_string_of_jsbytes("items"),
     cst_iter$0=caml_string_of_jsbytes("iter"),
     cst_join_tickets=caml_string_of_jsbytes("join_tickets"),
     cst_keccak=caml_string_of_jsbytes("keccak"),
     cst_keys=caml_string_of_jsbytes("keys"),
     cst_lambda$2=caml_string_of_jsbytes("lambda"),
     cst_lambdaParams=caml_string_of_jsbytes("lambdaParams"),
     cst_level$1=caml_string_of_jsbytes("level"),
     cst_list$3=caml_string_of_jsbytes("list"),
     cst_literal$1=caml_string_of_jsbytes("literal"),
     cst_lsl=caml_string_of_jsbytes("lsl"),
     cst_lsr=caml_string_of_jsbytes("lsr"),
     cst_lt=caml_string_of_jsbytes("lt"),
     cst_make_signature=caml_string_of_jsbytes("make_signature"),
     cst_hex=caml_string_of_jsbytes("hex"),
     cst_raw=caml_string_of_jsbytes("raw"),
     cst_sender$0=caml_string_of_jsbytes("sender"),
     cst_pairing_check$0=caml_string_of_jsbytes("pairing_check"),
     cst_neg=caml_string_of_jsbytes("neg"),
     cst_map_function=caml_string_of_jsbytes("map_function"),
     cst_match_cons$0=caml_string_of_jsbytes("match_cons"),
     cst_max$1=caml_string_of_jsbytes("max"),
     cst_min$1=caml_string_of_jsbytes("min"),
     cst_mod=caml_string_of_jsbytes("mod"),
     cst_mul$0=caml_string_of_jsbytes("mul"),
     cst_mul_overloaded=caml_string_of_jsbytes("mul_overloaded"),
     cst_neq=caml_string_of_jsbytes("neq"),
     cst_not$1=caml_string_of_jsbytes("not"),
     cst_now=caml_string_of_jsbytes("now"),
     cst_openVariant=caml_string_of_jsbytes("openVariant"),
     cst_operations$15=caml_string_of_jsbytes("operations"),
     cst_or$0=caml_string_of_jsbytes("or"),
     cst_pack$0=caml_string_of_jsbytes("pack"),
     cst_None$77=caml_string_of_jsbytes("None"),
     cst_rev_keys=caml_string_of_jsbytes("rev_keys"),
     cst_params$5=caml_string_of_jsbytes("params"),
     cst_range$0=caml_string_of_jsbytes("range"),
     cst_read_ticket=caml_string_of_jsbytes("read_ticket"),
     cst_record$0=caml_string_of_jsbytes("record"),
     cst_rev=caml_string_of_jsbytes("rev"),
     cst_rev_elements=caml_string_of_jsbytes("rev_elements"),
     cst_rev_items=caml_string_of_jsbytes("rev_items"),
     cst_rev_values=caml_string_of_jsbytes("rev_values"),
     cst_sapling_empty_state=caml_string_of_jsbytes("sapling_empty_state"),
     cst_sapling_verify_update=caml_string_of_jsbytes("sapling_verify_update"),
     cst_scenario_var=caml_string_of_jsbytes("scenario_var"),
     cst_second=caml_string_of_jsbytes("second"),
     cst_self$2=caml_string_of_jsbytes("self"),
     cst_self_address$2=caml_string_of_jsbytes("self_address"),
     cst$306=caml_string_of_jsbytes(""),
     cst_import_params_type_yet_unk=
      caml_string_of_jsbytes("import: params type yet unknown"),
     cst_toInt=caml_string_of_jsbytes("toInt"),
     cst_slice=caml_string_of_jsbytes("slice"),
     cst_set$1=caml_string_of_jsbytes("set"),
     cst_set_delegate=caml_string_of_jsbytes("set_delegate"),
     cst_sha256=caml_string_of_jsbytes("sha256"),
     cst_sha3=caml_string_of_jsbytes("sha3"),
     cst_sha512=caml_string_of_jsbytes("sha512"),
     cst_sign$0=caml_string_of_jsbytes("sign"),
     cst_size=caml_string_of_jsbytes("size"),
     cst_source$1=caml_string_of_jsbytes("source"),
     cst_split_ticket=caml_string_of_jsbytes("split_ticket"),
     cst_split_tokens=caml_string_of_jsbytes("split_tokens"),
     cst_sub=caml_string_of_jsbytes("sub"),
     cst_sum$0=caml_string_of_jsbytes("sum"),
     cst_test_ticket=caml_string_of_jsbytes("test_ticket"),
     cst_ticket$3=caml_string_of_jsbytes("ticket"),
     cst_unbounded=caml_string_of_jsbytes("unbounded"),
     cst_to_address$0=caml_string_of_jsbytes("to_address"),
     cst_to_constant$0=caml_string_of_jsbytes("to_constant"),
     cst_total_voting_power$0=caml_string_of_jsbytes("total_voting_power"),
     cst_transfer=caml_string_of_jsbytes("transfer"),
     cst_truediv=caml_string_of_jsbytes("truediv"),
     cst_tuple$0=caml_string_of_jsbytes("tuple"),
     cst_type_annotation=caml_string_of_jsbytes("type_annotation"),
     cst_unpack$0=caml_string_of_jsbytes("unpack"),
     cst_update_map=caml_string_of_jsbytes("update_map"),
     cst_values=caml_string_of_jsbytes("values"),
     cst_variant$0=caml_string_of_jsbytes("variant"),
     cst_variant_arg=caml_string_of_jsbytes("variant_arg"),
     cst_voting_power$0=caml_string_of_jsbytes("voting_power"),
     cst_xor=caml_string_of_jsbytes("xor"),
     cst_Expression_format_error_b=
      caml_string_of_jsbytes("Expression format error (b) "),
     cst_elem=caml_string_of_jsbytes("elem"),
     cst_meta_expr=caml_string_of_jsbytes("meta_expr"),
     cst_meta_list=caml_string_of_jsbytes("meta_list"),
     cst_meta_map=caml_string_of_jsbytes("meta_map"),
     cst_meta_offchain_view=caml_string_of_jsbytes("meta_offchain_view"),
     cst_Meta_expression_format_err$0=
      caml_string_of_jsbytes("Meta expression format error "),
     cst_Meta_expression_format_err=
      caml_string_of_jsbytes("Meta expression format error "),
     cst_match$1=caml_string_of_jsbytes("match"),
     cst_Bad_case_parsing=caml_string_of_jsbytes("Bad case parsing: "),
     cst_result=caml_string_of_jsbytes("result"),
     cst_bind=caml_string_of_jsbytes("bind"),
     cst_defineLocal=caml_string_of_jsbytes("defineLocal"),
     cst_delItem=caml_string_of_jsbytes("delItem"),
     cst_failwith$1=caml_string_of_jsbytes("failwith"),
     cst_forGroup=caml_string_of_jsbytes("forGroup"),
     cst_match$0=caml_string_of_jsbytes("match"),
     cst_match_cases=caml_string_of_jsbytes("match_cases"),
     cst_never$3=caml_string_of_jsbytes("never"),
     cst_set$2=caml_string_of_jsbytes("set"),
     cst_set_entry_point$0=caml_string_of_jsbytes("set_entry_point"),
     cst_set_result_type=caml_string_of_jsbytes("set_result_type"),
     cst_set_type$0=caml_string_of_jsbytes("set_type"),
     cst_trace$0=caml_string_of_jsbytes("trace"),
     cst_updateSet=caml_string_of_jsbytes("updateSet"),
     cst_verify$1=caml_string_of_jsbytes("verify"),
     cst_whileBlock=caml_string_of_jsbytes("whileBlock"),
     cst_Command_format_error_a=
      caml_string_of_jsbytes("Command format error (a) "),
     cst_Command_format_error_b=
      caml_string_of_jsbytes("Command format error (b) "),
     cst_match_tuple=caml_string_of_jsbytes("match_tuple"),
     cst_bind$1=caml_string_of_jsbytes("bind"),
     cst_ifBlock=caml_string_of_jsbytes("ifBlock"),
     cst_ifSomeBlock=caml_string_of_jsbytes("ifSomeBlock"),
     cst_match_cons$1=caml_string_of_jsbytes("match_cons"),
     cst_match_record=caml_string_of_jsbytes("match_record"),
     cst$310=caml_string_of_jsbytes(""),
     cst_elseBlock=caml_string_of_jsbytes("elseBlock"),
     cst_elseBlock$0=caml_string_of_jsbytes("elseBlock"),
     cst_elseBlock$1=caml_string_of_jsbytes("elseBlock"),
     cst_modify=caml_string_of_jsbytes("modify"),
     cst_modify_record=caml_string_of_jsbytes("modify_record"),
     cst_modify_tuple=caml_string_of_jsbytes("modify_tuple"),
     cst_seq=caml_string_of_jsbytes("seq"),
     cst_bind$0=caml_string_of_jsbytes("bind"),
     cst_Message_format_error=caml_string_of_jsbytes("Message format error "),
     cst_View_format_error=caml_string_of_jsbytes("View format error "),
     cst_Metadata_format_error=
      caml_string_of_jsbytes("Metadata format error "),
     cst_Global_variable_format_err=
      caml_string_of_jsbytes("Global variable format error "),
     cst_Parse_error_contract=caml_string_of_jsbytes("Parse error contract"),
     cst_template_id$0=caml_string_of_jsbytes("template_id"),
     cst_storage$32=caml_string_of_jsbytes("storage"),
     cst_storage_type=caml_string_of_jsbytes("storage_type"),
     cst_entry_points_layout$0=caml_string_of_jsbytes("entry_points_layout"),
     cst_messages=caml_string_of_jsbytes("messages"),
     cst_flags$0=caml_string_of_jsbytes("flags"),
     cst_globals=caml_string_of_jsbytes("globals"),
     cst_initial_metadata=caml_string_of_jsbytes("initial_metadata"),
     cst_views$0=caml_string_of_jsbytes("views"),
     cst_balance$6=caml_string_of_jsbytes("balance"),
     cst_dynamic_id$0=caml_string_of_jsbytes("dynamic_id"),
     cst_static_id$0=caml_string_of_jsbytes("static_id"),
     cst_AAAAAAAAAAAA=caml_string_of_jsbytes("AAAAAAAAAAAA "),
     cst_unit$3=caml_string_of_jsbytes("unit"),
     cst_record=caml_string_of_jsbytes("record"),
     cst_bigmap=caml_string_of_jsbytes("bigmap"),
     cst_bounded=caml_string_of_jsbytes("bounded"),
     cst_contract$7=caml_string_of_jsbytes("contract"),
     cst_lambda$1=caml_string_of_jsbytes("lambda"),
     cst_list$2=caml_string_of_jsbytes("list"),
     cst_map$1=caml_string_of_jsbytes("map"),
     cst_option$1=caml_string_of_jsbytes("option"),
     cst_sapling_state$0=caml_string_of_jsbytes("sapling_state"),
     cst_sapling_transaction$1=caml_string_of_jsbytes("sapling_transaction"),
     cst_set$0=caml_string_of_jsbytes("set"),
     cst_ticket$2=caml_string_of_jsbytes("ticket"),
     cst_tuple=caml_string_of_jsbytes("tuple"),
     cst_unknown=caml_string_of_jsbytes("unknown"),
     cst_variant=caml_string_of_jsbytes("variant"),
     cst_sp$2=caml_string_of_jsbytes("sp:"),
     cst$305=caml_string_of_jsbytes(""),
     cst_empty_unknown=caml_string_of_jsbytes("empty unknown"),
     cst$304=caml_string_of_jsbytes("  "),
     cst_Type_format_error_list=
      caml_string_of_jsbytes("Type format error list "),
     cst_Type_field_format_error=
      caml_string_of_jsbytes("Type field format error "),
     cst_intOrNat$1=caml_string_of_jsbytes("intOrNat"),
     cst_address$9=caml_string_of_jsbytes("address"),
     cst_baker_hash$3=caml_string_of_jsbytes("baker_hash"),
     cst_bls12_381_fr$4=caml_string_of_jsbytes("bls12_381_fr"),
     cst_bls12_381_g1$4=caml_string_of_jsbytes("bls12_381_g1"),
     cst_bls12_381_g2$4=caml_string_of_jsbytes("bls12_381_g2"),
     cst_bool$2=caml_string_of_jsbytes("bool"),
     cst_bytes$6=caml_string_of_jsbytes("bytes"),
     cst_chain_id$2=caml_string_of_jsbytes("chain_id"),
     cst_int$5=caml_string_of_jsbytes("int"),
     cst_key$10=caml_string_of_jsbytes("key"),
     cst_key_hash$3=caml_string_of_jsbytes("key_hash"),
     cst_mutez$2=caml_string_of_jsbytes("mutez"),
     cst_nat$2=caml_string_of_jsbytes("nat"),
     cst_never$2=caml_string_of_jsbytes("never"),
     cst_operation$4=caml_string_of_jsbytes("operation"),
     cst_signature$4=caml_string_of_jsbytes("signature"),
     cst_string$5=caml_string_of_jsbytes("string"),
     cst_timestamp$4=caml_string_of_jsbytes("timestamp"),
     cst_Type_format_error_atom=
      caml_string_of_jsbytes("Type format error atom "),
     cst_binding=caml_string_of_jsbytes("binding"),
     cst_import_binding=caml_string_of_jsbytes("import_binding: "),
     cst_unAtom=caml_string_of_jsbytes("unAtom"),
     cst_False$5=caml_string_of_jsbytes("False"),
     cst_None$76=caml_string_of_jsbytes("None"),
     cst_True$5=caml_string_of_jsbytes("True"),
     cst_import_opt_bool=caml_string_of_jsbytes("import_opt_bool: "),
     cst_False$4=caml_string_of_jsbytes("False"),
     cst_True$4=caml_string_of_jsbytes("True"),
     cst_import_bool=caml_string_of_jsbytes("import_bool: "),
     cst$300=caml_string_of_jsbytes("_"),
     cst_None$75=caml_string_of_jsbytes("None"),
     cst$299=caml_string_of_jsbytes(""),
     cst_import_line_no=caml_string_of_jsbytes("import_line_no: "),
     cst_None$74=caml_string_of_jsbytes("None"),
     cst_None$73=caml_string_of_jsbytes("None"),
     cst_Some$72=caml_string_of_jsbytes("Some"),
     cst_Right$15=caml_string_of_jsbytes("Right"),
     cst_Layout_format_error$0=caml_string_of_jsbytes("Layout format error "),
     cst_as$0=caml_string_of_jsbytes("as"),
     cst$298=caml_string_of_jsbytes(""),
     cst_as=caml_string_of_jsbytes("as"),
     cst_scenario=caml_string_of_jsbytes("scenario"),
     cst_shortname=caml_string_of_jsbytes("shortname"),
     cst_kind$0=caml_string_of_jsbytes("kind"),
     cst$312=caml_string_of_jsbytes(""),
     cst_chain_id$4=caml_string_of_jsbytes("chain_id"),
     cst_none$0=caml_string_of_jsbytes("none"),
     cst_seed$2=caml_string_of_jsbytes("seed:"),
     cst_action=caml_string_of_jsbytes("action"),
     cst_message$2=caml_string_of_jsbytes("message"),
     cst_compute=caml_string_of_jsbytes("compute"),
     cst_dynamic_contract=caml_string_of_jsbytes("dynamic_contract"),
     cst_error$0=caml_string_of_jsbytes("error"),
     cst_flag$0=caml_string_of_jsbytes("flag"),
     cst_html$4=caml_string_of_jsbytes("html"),
     cst_line_no$19=caml_string_of_jsbytes("line_no"),
     cst_inner$0=caml_string_of_jsbytes("inner"),
     cst_tag$0=caml_string_of_jsbytes("tag"),
     cst_flag$1=caml_string_of_jsbytes("flag"),
     cst_line_no$20=caml_string_of_jsbytes("line_no"),
     cst_line_no$21=caml_string_of_jsbytes("line_no"),
     cst$315=caml_string_of_jsbytes("; "),
     cst_message$4=caml_string_of_jsbytes("message"),
     cst_line_no$22=caml_string_of_jsbytes("line_no"),
     cst_model_id$0=caml_string_of_jsbytes("model_id"),
     cst_dynamic_id$1=caml_string_of_jsbytes("dynamic_id"),
     cst_expression$2=caml_string_of_jsbytes("expression"),
     cst_line_no$23=caml_string_of_jsbytes("line_no"),
     cst_id$12=caml_string_of_jsbytes("id"),
     cst_newContract=caml_string_of_jsbytes("newContract"),
     cst_show$1=caml_string_of_jsbytes("show"),
     cst_simulation=caml_string_of_jsbytes("simulation"),
     cst_verify$2=caml_string_of_jsbytes("verify"),
     cst_line_no$14=caml_string_of_jsbytes("line_no"),
     cst_condition$1=caml_string_of_jsbytes("condition"),
     cst_line_no$15=caml_string_of_jsbytes("line_no"),
     cst_id$9=caml_string_of_jsbytes("id"),
     cst_line_no$16=caml_string_of_jsbytes("line_no"),
     cst_compile$0=caml_string_of_jsbytes("compile"),
     cst_stripStrings$0=caml_string_of_jsbytes("stripStrings"),
     cst_html$3=caml_string_of_jsbytes("html"),
     cst_expression$1=caml_string_of_jsbytes("expression"),
     cst_export$0=caml_string_of_jsbytes("export"),
     cst_id$10=caml_string_of_jsbytes("id"),
     cst_line_no$17=caml_string_of_jsbytes("line_no"),
     cst_show$2=caml_string_of_jsbytes("show"),
     cst_accept_unknown_types$0=caml_string_of_jsbytes("accept_unknown_types"),
     cst_params$6=caml_string_of_jsbytes("params"),
     cst_line_no$18=caml_string_of_jsbytes("line_no"),
     cst_message$3=caml_string_of_jsbytes("message"),
     cst_id$11=caml_string_of_jsbytes("id"),
     cst_export$1=caml_string_of_jsbytes("export"),
     cst_show$3=caml_string_of_jsbytes("show"),
     cst_voting_powers$0=caml_string_of_jsbytes("voting_powers"),
     cst_level$2=caml_string_of_jsbytes("level"),
     cst_amount$5=caml_string_of_jsbytes("amount"),
     cst_time$0=caml_string_of_jsbytes("time"),
     cst_chain_id$5=caml_string_of_jsbytes("chain_id"),
     cst_sender$1=caml_string_of_jsbytes("sender"),
     cst_source$2=caml_string_of_jsbytes("source"),
     cst$313=caml_string_of_jsbytes(""),
     cst_messageClass$0=caml_string_of_jsbytes("messageClass"),
     cst$314=caml_string_of_jsbytes(""),
     cst_title$0=caml_string_of_jsbytes("title"),
     cst_exception$0=caml_string_of_jsbytes("exception"),
     cst_valid$0=caml_string_of_jsbytes("valid"),
     cst$311=caml_string_of_jsbytes("'"),
     cst_Unknown_action=caml_string_of_jsbytes("Unknown action: '"),
     cst_EXCEPTION=caml_string_of_jsbytes("EXCEPTION"),
     cst_True$7=caml_string_of_jsbytes("True"),
     cst_Verify_Error=caml_string_of_jsbytes("Verify Error"),
     cst_missing_storage=caml_string_of_jsbytes("missing storage"),
     cst_v$0=caml_string_of_jsbytes("v"),
     cst_run_script=caml_string_of_jsbytes("======== run script ==========="),
     cst_None$79=caml_string_of_jsbytes("None"),
     cst_storage_layout_not_set=
      caml_string_of_jsbytes("storage-layout-not-set"),
     cst_BUG=caml_string_of_jsbytes("BUG: "),
     cst_compute$1=caml_string_of_jsbytes("compute"),
     cst_NONE$2=caml_string_of_jsbytes("NONE"),
     cst_layout$1=caml_string_of_jsbytes("layout"),
     cst_expression$3=caml_string_of_jsbytes("expression"),
     cst_debug=caml_string_of_jsbytes("debug"),
     cst_compute$0=caml_string_of_jsbytes("compute"),
     cst_Unexpected_success=caml_string_of_jsbytes("Unexpected success"),
     cst_bounded_not_handled=caml_string_of_jsbytes("bounded not handled"),
     cst_secret_key$5=caml_string_of_jsbytes("secret_key"),
     cst_nat$3=caml_string_of_jsbytes("nat"),
     cst_int$6=caml_string_of_jsbytes("int"),
     cst_intOrNat$2=caml_string_of_jsbytes("intOrNat"),
     cst$316=caml_string_of_jsbytes(" "),
     cst_True$8=caml_string_of_jsbytes("True"),
     cst_False$7=caml_string_of_jsbytes("False"),
     cst$317=caml_string_of_jsbytes(" "),
     cst$318=caml_string_of_jsbytes(" "),
     cst_unknown$0=caml_string_of_jsbytes("unknown"),
     cst_export_type_TODO_UTuple=
      caml_string_of_jsbytes("export_type: TODO UTuple"),
     cst$319=caml_string_of_jsbytes(" "),
     cst_unknown$1=caml_string_of_jsbytes("unknown"),
     cst_unknown$2=caml_string_of_jsbytes("unknown"),
     cst_None$80=caml_string_of_jsbytes("None"),
     cst_code$5=caml_string_of_jsbytes("code"),
     cst_returnType=caml_string_of_jsbytes("returnType"),
     cst_parameter$9=caml_string_of_jsbytes("parameter"),
     cst_amount$6=caml_string_of_jsbytes("amount"),
     cst_value$3=caml_string_of_jsbytes("value"),
     cst_address$10=caml_string_of_jsbytes("address"),
     cst_view_not_found=caml_string_of_jsbytes("view not found: "),
     cst_code$6=caml_string_of_jsbytes("code"),
     cst_returnType$0=caml_string_of_jsbytes("returnType"),
     cst_parameter$10=caml_string_of_jsbytes("parameter"),
     cst_michelsonStorageView=caml_string_of_jsbytes("michelsonStorageView"),
     cst_implementations=caml_string_of_jsbytes("implementations"),
     cst$320=caml_string_of_jsbytes(""),
     cst_description=caml_string_of_jsbytes("description"),
     cst_pure$0=caml_string_of_jsbytes("pure"),
     cst_name$4=caml_string_of_jsbytes("name"),
     cst_0x$9=caml_string_of_jsbytes("0x"),
     cst_0x$8=caml_string_of_jsbytes("0x"),
     cst_div=caml_string_of_jsbytes("<\/div>"),
     buttonText=caml_string_of_jsbytes("Simulation"),
     cst$332=caml_string_of_jsbytes("."),
     cst_Add_Another_Step=caml_string_of_jsbytes("Add Another Step"),
     partial$1=[11,caml_string_of_jsbytes("'><\/div>"),0],
     cst$331=caml_string_of_jsbytes("_"),
     partial$2=
      [11,
       caml_string_of_jsbytes("', t, tstorage,"),
       [4,
        3,
        0,
        0,
        [11,
         caml_string_of_jsbytes(')">'),
         [2,
          0,
          [11,
           caml_string_of_jsbytes("<\/button><\/form>\n<div id='"),
           [2,0,[11,caml_string_of_jsbytes("'><\/div>"),0]]]]]]],
     cst_span_class_partialType_War=
      caml_string_of_jsbytes
       ("<span class='partialType'>Warning: errors in the Michelson generated code.<\/span><br>"),
     cst$330=caml_string_of_jsbytes(""),
     cst$329=caml_string_of_jsbytes(""),
     cst_meta=caml_string_of_jsbytes("meta_"),
     myName=caml_string_of_jsbytes("Contract"),
     cst_Metadata=caml_string_of_jsbytes("Metadata"),
     cst_metadata$1=caml_string_of_jsbytes("metadata"),
     cst_Metadata$0=caml_string_of_jsbytes("Metadata"),
     cst_times=caml_string_of_jsbytes("&times;"),
     cst_Deploy_Michelson_Contract=
      caml_string_of_jsbytes("Deploy Michelson Contract"),
     cst_Types=caml_string_of_jsbytes("Types"),
     cst_Generated_Michelson=caml_string_of_jsbytes("Generated Michelson:"),
     partial$3=
      [11,
       caml_string_of_jsbytes(".innerText,storageCode"),
       [2,
        0,
        [11,
         caml_string_of_jsbytes(".innerHTML, contractCode"),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(".innerHTML, storageCodeJson"),
           [2,
            0,
            [11,
             caml_string_of_jsbytes(".innerHTML, contractCodeJson"),
             [2,
              0,
              [11,
               caml_string_of_jsbytes
                (".innerHTML)'>Deploy Michelson Contract<\/button>"),
               [2,0,0]]]]]]]]]],
     cst_simplifiedContractCode=
      caml_string_of_jsbytes("simplifiedContractCode"),
     cst_contractCode=caml_string_of_jsbytes("contractCode"),
     cst_missing_storage$0=caml_string_of_jsbytes("missing storage"),
     cst_storageCode=caml_string_of_jsbytes("storageCode"),
     cst_missing_storage$1=caml_string_of_jsbytes("missing storage"),
     cst_storageCodeJson=caml_string_of_jsbytes("storageCodeJson"),
     cst_contractCodeJson=caml_string_of_jsbytes("contractCodeJson"),
     cst_simplifiedContractCodeJson=
      caml_string_of_jsbytes("simplifiedContractCodeJson"),
     cst_Simplified_Code_JSON=caml_string_of_jsbytes("Simplified Code JSON"),
     cst_Code_JSON=caml_string_of_jsbytes("Code JSON"),
     cst_Storage_JSON=caml_string_of_jsbytes("Storage JSON"),
     cst_Simplified_Code$1=caml_string_of_jsbytes("Simplified Code"),
     cst_Simplified_Code$2=caml_string_of_jsbytes("Simplified Code"),
     cst_Code$0=caml_string_of_jsbytes("Code"),
     cst_Code$1=caml_string_of_jsbytes("Code"),
     cst_Storage$1=caml_string_of_jsbytes("Storage"),
     cst_contractSizes=caml_string_of_jsbytes("contractSizes"),
     cst_Sizes=caml_string_of_jsbytes("Sizes"),
     cst_Simplified_Combined=caml_string_of_jsbytes("Simplified Combined"),
     cst_Simplified_Code=caml_string_of_jsbytes("Simplified Code"),
     cst_tr_td_hr_td_td_td_td_td_tr=
      caml_string_of_jsbytes("<tr><td><hr><\/td><td><\/td><td><\/td><\/tr>"),
     simplifiedCombined=caml_string_of_jsbytes(""),
     cst_Simplified_Code$0=caml_string_of_jsbytes("Simplified Code"),
     cst_tr_td_hr_td_td_td_tr=
      caml_string_of_jsbytes("<tr><td><hr><\/td><td><\/td><\/tr>"),
     simplifiedCombined$0=caml_string_of_jsbytes(""),
     simplifiedCode=caml_string_of_jsbytes(""),
     sep=caml_string_of_jsbytes(""),
     cst_Code=caml_string_of_jsbytes("Code"),
     cst$328=caml_string_of_jsbytes(""),
     cst_Storage$0=caml_string_of_jsbytes("Storage"),
     cst$327=caml_string_of_jsbytes(""),
     cst_Combined=caml_string_of_jsbytes("Combined"),
     cst$326=caml_string_of_jsbytes(""),
     cst_white_space_pre=caml_string_of_jsbytes("white-space-pre"),
     cst_br$5=caml_string_of_jsbytes("<br>"),
     cst$325=caml_string_of_jsbytes("\n"),
     cst$323=caml_string_of_jsbytes(""),
     cst$324=caml_string_of_jsbytes(""),
     cst_active=caml_string_of_jsbytes(" active"),
     cst$322=caml_string_of_jsbytes(""),
     cst_none$1=caml_string_of_jsbytes("none"),
     cst_block=caml_string_of_jsbytes("block"),
     cst$321=caml_string_of_jsbytes(""),
     cst_inputGui=caml_string_of_jsbytes("inputGui_"),
     cst_outputGui=caml_string_of_jsbytes("outputGui_"),
     cst_lazyOutputGui=caml_string_of_jsbytes("lazyOutputGui_"),
     cst_voting_powers$1=caml_string_of_jsbytes("voting_powers"),
     cst_level$3=caml_string_of_jsbytes("level"),
     cst_Mutez$1=caml_string_of_jsbytes("Mutez"),
     cst_Tez$1=caml_string_of_jsbytes("Tez"),
     cst_amount$7=caml_string_of_jsbytes("amount"),
     cst_timestamp$5=caml_string_of_jsbytes("timestamp"),
     cst_source$3=caml_string_of_jsbytes("source"),
     cst_sender$2=caml_string_of_jsbytes("sender"),
     cst_full_output=caml_string_of_jsbytes("full_output"),
     cst_debug$0=caml_string_of_jsbytes("debug"),
     cst_simulation$0=caml_string_of_jsbytes("simulation"),
     cst_context=caml_string_of_jsbytes("context"),
     cst$333=caml_string_of_jsbytes("\n"),
     cst$337=caml_string_of_jsbytes(""),
     cst$336=caml_string_of_jsbytes(""),
     cst$335=caml_string_of_jsbytes(""),
     cst$334=caml_string_of_jsbytes(""),
     partial$4=[2,0,[11,caml_string_of_jsbytes("<\/div>"),0]],
     cst$338=caml_string_of_jsbytes("\n"),
     cst$341=caml_string_of_jsbytes(""),
     cst$339=caml_string_of_jsbytes(""),
     cst$340=caml_string_of_jsbytes(""),
     partial$5=
      [11,
       caml_string_of_jsbytes
        ("(<button class='text-button' onClick='showLine("),
       [4,
        3,
        0,
        0,
        [11,
         caml_string_of_jsbytes(")'>line "),
         [4,3,0,0,[11,caml_string_of_jsbytes("<\/button>)"),0]]]]],
     partial$6=
      [2,
       0,
       [11,
        caml_string_of_jsbytes(")] to "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("<\/h3>"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("<h3>Balance: "),
            [2,
             0,
             [11,
              caml_string_of_jsbytes("<\/h3>"),
              [2,0,[11,caml_string_of_jsbytes("<\/div>"),[2,0,partial$5]]]]]]]]]]],
     cst_paramsCode=caml_string_of_jsbytes("paramsCode"),
     cst_transaction_params=caml_string_of_jsbytes("transaction_params"),
     cst_paramsCodeJson=caml_string_of_jsbytes("paramsCodeJson"),
     cst_transaction_params_json=
      caml_string_of_jsbytes("transaction_params_json"),
     cst_Parameter_JSON=caml_string_of_jsbytes("Parameter JSON"),
     cst_Parameter_Michelson=caml_string_of_jsbytes("Parameter Michelson"),
     cst_Generated_Michelson$0=caml_string_of_jsbytes("Generated Michelson"),
     cst_Missing_entry_point$0=caml_string_of_jsbytes("Missing entry point."),
     cst_X=caml_string_of_jsbytes("X"),
     cst_Michelson=caml_string_of_jsbytes("Michelson"),
     cst_Summary=caml_string_of_jsbytes("Summary"),
     cst_Transaction=caml_string_of_jsbytes("Transaction"),
     cst_Cannot_simulate_contract_w=
      caml_string_of_jsbytes("Cannot simulate contract without a storage"),
     cst$342=caml_string_of_jsbytes(" "),
     cst_OK=caml_string_of_jsbytes("OK"),
     cst$343=caml_string_of_jsbytes(""),
     cst_KO=caml_string_of_jsbytes("KO"),
     cst_path_of_lexpr=caml_string_of_jsbytes("path_of_lexpr: "),
     cst_fixpoint_failed_to_converg=
      caml_string_of_jsbytes("fixpoint: failed to converge"),
     cst_None$81=caml_string_of_jsbytes("None"),
     cst_True$9=caml_string_of_jsbytes("True"),
     cst_False$8=caml_string_of_jsbytes("False"),
     cst_Some$73=caml_string_of_jsbytes("Some"),
     cst_y=caml_string_of_jsbytes("y"),
     cst_y$0=caml_string_of_jsbytes("y"),
     cst_c$2=caml_string_of_jsbytes("c"),
     cst$344=caml_string_of_jsbytes(""),
     cst$345=caml_string_of_jsbytes(""),
     cst_y$1=caml_string_of_jsbytes("y"),
     cst_c$3=caml_string_of_jsbytes("c"),
     cst$346=caml_string_of_jsbytes(""),
     cst_x$6=caml_string_of_jsbytes("_x"),
     cst_l$1=caml_string_of_jsbytes("_l"),
     cst_r$3=caml_string_of_jsbytes("_r"),
     cst_None$82=caml_string_of_jsbytes("None"),
     cst_Some$74=caml_string_of_jsbytes("Some"),
     _ahL_=[0,caml_string_of_jsbytes("None"),caml_string_of_jsbytes("Some")],
     cr=caml_string_of_jsbytes("Right"),
     cl=caml_string_of_jsbytes("Left"),
     cst_storage$34=caml_string_of_jsbytes("__storage"),
     cst_parameter$12=caml_string_of_jsbytes("__parameter"),
     cst_parameter$11=caml_string_of_jsbytes("__parameter"),
     cst_storage$33=caml_string_of_jsbytes("__storage"),
     cst_operations$16=caml_string_of_jsbytes("__operations__"),
     cst_x$5=caml_string_of_jsbytes("x"),
     cst_prim3_Update=caml_string_of_jsbytes("prim3 Update"),
     cst_TODO_prim2=caml_string_of_jsbytes("TODO prim2: "),
     cst_prim1=caml_string_of_jsbytes("prim1: "),
     cst_error$1=caml_string_of_jsbytes("error"),
     cst_Smartml_Decompiler_Missing=
      caml_string_of_jsbytes("Smartml.Decompiler.Missing_label"),
     cst_static=caml_string_of_jsbytes("static"),
     cst_log_txt=caml_string_of_jsbytes("log.txt"),
     cst$356=caml_string_of_jsbytes("\n"),
     cst_Multiple_operations=caml_string_of_jsbytes("Multiple operations"),
     cst_Exception=caml_string_of_jsbytes(" (Exception) "),
     cst_Exception$0=caml_string_of_jsbytes(" (Exception) "),
     cst_default$0=caml_string_of_jsbytes("default"),
     cst$353=caml_string_of_jsbytes("..."),
     cst$354=caml_string_of_jsbytes(""),
     cst$355=caml_string_of_jsbytes(""),
     cst_TABLEOFCONTENTS=caml_string_of_jsbytes("[[TABLEOFCONTENTS]]"),
     cst_Table_Of_Contents=caml_string_of_jsbytes("Table Of Contents"),
     cst_h1$0=caml_string_of_jsbytes("h1"),
     cst_h2$0=caml_string_of_jsbytes("h2"),
     cst_h3$0=caml_string_of_jsbytes("h3"),
     cst_h4$0=caml_string_of_jsbytes("h4"),
     cst_Comment=caml_string_of_jsbytes("Comment..."),
     cst_OK$0=caml_string_of_jsbytes(" OK"),
     cst_KO$0=caml_string_of_jsbytes(" KO"),
     name$10=caml_string_of_jsbytes("expression"),
     cst$352=caml_string_of_jsbytes("  + "),
     cst$350=caml_string_of_jsbytes(""),
     cst$351=caml_string_of_jsbytes(" "),
     name$9=caml_string_of_jsbytes("params"),
     cst_missing_storage$3=caml_string_of_jsbytes("missing storage"),
     cst_metadata$2=caml_string_of_jsbytes("metadata."),
     cst_missing=caml_string_of_jsbytes("missing"),
     cst_Creating_contract=caml_string_of_jsbytes("Creating contract"),
     cst_pre_michelson=caml_string_of_jsbytes("pre_michelson"),
     cst_missing_storage$2=caml_string_of_jsbytes("missing storage"),
     cst$349=caml_string_of_jsbytes(" -> "),
     cst_Types$0=caml_string_of_jsbytes("Types"),
     name$4=caml_string_of_jsbytes("storage"),
     cst_contract$10=caml_string_of_jsbytes("contract"),
     cst_storage$35=caml_string_of_jsbytes("storage"),
     name$5=caml_string_of_jsbytes("sizes"),
     name$6=caml_string_of_jsbytes("storage"),
     name$7=caml_string_of_jsbytes("types"),
     cst_Error_in_generated_contrac=
      caml_string_of_jsbytes("Error in generated contract"),
     name$8=caml_string_of_jsbytes("contract"),
     cst_pre_smartml=caml_string_of_jsbytes("pre_smartml"),
     suffix=
      caml_string_of_jsbytes
       ('\n\n@sp.add_test(name = "Test")\ndef test():\n    s = sp.test_scenario()\n    s += Contract()\n'),
     cst_decompiled=caml_string_of_jsbytes("decompiled"),
     cst$347=caml_string_of_jsbytes("\n####"),
     cst_ul=caml_string_of_jsbytes("<ul>"),
     cst_ul$0=caml_string_of_jsbytes("<\/ul>"),
     cst_h1=caml_string_of_jsbytes("h1"),
     cst_h2=caml_string_of_jsbytes("h2"),
     cst_h3=caml_string_of_jsbytes("h3"),
     cst_h4=caml_string_of_jsbytes("h4"),
     cst$348=caml_string_of_jsbytes(""),
     name$3=caml_string_of_jsbytes("log"),
     Stdlib_format=global_data.Stdlib__format,
     Stdlib=global_data.Stdlib,
     Stdlib_printf=global_data.Stdlib__printf,
     Utils_String=global_data.Utils__String,
     Base_String=global_data.Base__String,
     Utils_List=global_data.Utils__List,
     Utils_Option=global_data.Utils__Option,
     Stdlib_list=global_data.Stdlib__list,
     Utils_Binary_tree=global_data.Utils__Binary_tree,
     Assert_failure=global_data.Assert_failure,
     Utils_Bigint=global_data.Utils__Bigint,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Utils_Ternary=global_data.Utils__Ternary,
     Michelson_base_Type=global_data.Michelson_base__Type,
     Base_List=global_data.Base__List,
     Utils_Control=global_data.Utils__Control,
     Match_failure=global_data.Match_failure,
     Utils_Misc=global_data.Utils__Misc,
     Stdlib_hashtbl=global_data.Stdlib__hashtbl,
     Michelson_base_Primitive=global_data.Michelson_base__Primitive,
     Big_int=global_data.Big_int,
     Base_Int=global_data.Base__Int,
     Stdlib_buffer=global_data.Stdlib__buffer,
     include$1=global_data.Michelson_base__Typing,
     Base_Result=global_data.Base__Result,
     Base_Option=global_data.Base__Option,
     Base_Sexp=global_data.Base__Sexp,
     Yojson=global_data.Yojson,
     Utils_Bs58=global_data.Utils__Bs58,
     Michel_Expr=global_data.Michel__Expr,
     Utils_Io=global_data.Utils__Io,
     Base_Exn=global_data.Base__Exn,
     CamlinternalLazy=global_data.CamlinternalLazy,
     Utils_Set=global_data.Utils__Set,
     Utils_Map=global_data.Utils__Map,
     Michel_Type=global_data.Michel__Type,
     Michel_Transformer=global_data.Michel__Transformer,
     Z=global_data.Z,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Tezos_micheline_Micheline_pars=
      global_data.Tezos_micheline__Micheline_parser,
     Data_encoding_Binary_error=global_data.Data_encoding__Binary_error,
     Tezos_micheline_Micheline_prin=
      global_data.Tezos_micheline__Micheline_printer,
     Fmt=global_data.Fmt,
     Tezos_micheline_Micheline=global_data.Tezos_micheline__Micheline,
     Data_encoding=global_data.Data_encoding,
     Hex=global_data.Hex,
     Tezos_error_monad_Error_monad=global_data.Tezos_error_monad__Error_monad,
     Ptime=global_data.Ptime,
     Michel_Typing=global_data.Michel__Typing,
     Base=global_data.Base,
     Stdlib_string=global_data.Stdlib__string,
     Parsexp=global_data.Parsexp,
     Stdlib_queue=global_data.Stdlib__queue,
     Base_Monad=global_data.Base__Monad,
     Stdlib_filename=global_data.Stdlib__filename,
     Smartml=[0];
    caml_register_global(6436,Smartml,"Smartml");
    var
     _a_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _b_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _c_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _d_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _as_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _a1_=
      [0,
       [11,caml_string_of_jsbytes("Unknown language flag: "),[3,0,0]],
       caml_string_of_jsbytes("Unknown language flag: %S")],
     _a0_=
      [0,
       [11,caml_string_of_jsbytes("Unknown exception flag: "),[3,0,0]],
       caml_string_of_jsbytes("Unknown exception flag: %S")],
     _aZ_=
      [0,
       [11,caml_string_of_jsbytes("Unknown layout: "),[3,0,0]],
       caml_string_of_jsbytes("Unknown layout: %S")],
     _aY_=
      [0,
       [11,caml_string_of_jsbytes("Unknown protocol: "),[3,0,0]],
       caml_string_of_jsbytes("Unknown protocol: %S")],
     _aS_=[0,5],
     _aT_=[0,4],
     _aU_=[0,3],
     _aV_=[0,2],
     _aW_=[0,1],
     _aX_=[0,0],
     _aM_=[0,10],
     _aN_=[0,9],
     _aO_=[0,8],
     _aP_=[0,7],
     _aQ_=[0,6],
     _aR_=[0,11],
     _aK_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _aH_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _aG_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _aI_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _at_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Config.Bool_Flag ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Config.Bool_Flag (@,")],
     _au_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _av_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _aw_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _ax_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Config.Default_record_layout"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Config.Default_record_layout@ ")],
     _ay_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _az_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Config.Default_variant_layout"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Config.Default_variant_layout@ ")],
     _aA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aB_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Config.Exceptions"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Config.Exceptions@ ")],
     _aC_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aD_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Config.Protocol"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Config.Protocol@ ")],
     _aE_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aF_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Config.Languages"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Config.Languages@ ")],
     _aJ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ar_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _an_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _am_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _ao_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _e_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _f_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _g_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _h_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _i_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _j_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _k_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _l_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _m_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _n_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _o_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _p_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _q_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _r_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _s_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _t_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _u_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _v_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _w_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _x_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _y_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _z_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _A_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _B_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _C_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _D_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _E_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _F_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _G_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _H_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _I_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _J_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _K_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _L_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _M_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _N_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _O_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _P_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _Q_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _R_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _S_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _T_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _U_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _V_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _W_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _X_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _Y_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _Z_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     ___=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _$_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _aa_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _ab_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ac_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ad_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ae_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _af_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ag_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ah_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ai_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _aj_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ak_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _al_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ap_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _aq_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _a2_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _a3_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _a4_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _a5_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _a6_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _a7_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _a8_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _a9_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _a__=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _a$_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ba_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _bb_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bg_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bc_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("C_static"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>C_static@ ")],
     _bd_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _be_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("C_dynamic"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>C_dynamic@ ")],
     _bf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bh_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _bi_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bj_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bk_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bl_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bm_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bn_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bo_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bp_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _bq_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _br_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bz_=[0,caml_string_of_jsbytes("smartML/lib/unknown.ml"),76,6],
     _by_=[0,caml_string_of_jsbytes("smartML/lib/unknown.ml"),67,11],
     _bx_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bw_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bs_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Value"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Value@ ")],
     _bt_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bu_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Ref"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Ref@ ")],
     _bv_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _c4_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _cA_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ch_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _b$_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bool"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bool@ ")],
     _ca_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _cb_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cc_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Int {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Int {@,")],
     _cd_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ce_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _cf_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _cg_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ci_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _cj_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _ck_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("String"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>String@ ")],
     _cl_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cn_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bytes"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bytes@ ")],
     _co_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cq_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Chain_id"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Chain_id@ ")],
     _cr_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cs_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ct_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Timestamp"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Timestamp@ ")],
     _cu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cv_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Mutez"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Mutez@ ")],
     _cw_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cx_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Address ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Address (@,")],
     _cy_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cz_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _cB_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _cC_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Key"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Key@ ")],
     _cD_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cE_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cF_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Secret_key"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Secret_key@ ")],
     _cG_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cH_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cI_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Key_hash"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Key_hash@ ")],
     _cJ_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cK_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cL_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Baker_hash"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Baker_hash@ ")],
     _cM_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cN_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cO_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Signature"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Signature@ ")],
     _cP_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cQ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cR_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Sapling_test_state"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Sapling_test_state@ ")],
     _cS_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cT_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Sapling_test_transaction"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Sapling_test_transaction@ ")],
     _cU_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cV_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bls12_381_g1"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bls12_381_g1@ ")],
     _cW_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _cX_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _cY_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bls12_381_g2"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bls12_381_g2@ ")],
     _cZ_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _c0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _c1_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bls12_381_fr"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bls12_381_fr@ ")],
     _c2_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _c3_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _b__=[0,[15,0],caml_string_of_jsbytes("%a")],
     _b0_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bW_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bU_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _bV_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bX_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bY_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bZ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _b1_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _b2_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _b3_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _b4_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _b5_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _b6_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _b7_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _b8_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _b9_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _bT_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _bM_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _bN_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _bO_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _bP_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _bL_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bK_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _bQ_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _bA_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _bB_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bC_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _bD_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bE_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bF_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bG_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _bH_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bI_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _bJ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _bR_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _bS_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _c5_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _c6_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _c7_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _c8_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _c9_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _c__=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _c$_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _da_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _db_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _dc_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _dd_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _de_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _df_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _dg_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _dh_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" -> Exn: "),[2,0,0]]],
       caml_string_of_jsbytes("%s -> Exn: %s")],
     _di_=
      [0,
       [11,caml_string_of_jsbytes("seed works: neq"),0],
       caml_string_of_jsbytes("seed works: neq")],
     _dj_=
      [0,
       [11,caml_string_of_jsbytes("seed works: eq"),0],
       caml_string_of_jsbytes("seed works: eq")],
     _dk_=
      [0,
       [11,caml_string_of_jsbytes("sign makes sense: ok"),0],
       caml_string_of_jsbytes("sign makes sense: ok")],
     _dl_=
      [0,
       [11,caml_string_of_jsbytes("sign makes sense: not ok"),0],
       caml_string_of_jsbytes("sign makes sense: not ok")],
     _dm_=
      [0,
       [11,caml_string_of_jsbytes("hash_key hashes the key"),0],
       caml_string_of_jsbytes("hash_key hashes the key")],
     _dp_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _dq_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _dr_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ds_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _do_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _dn_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _dt_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _du_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _dC_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _dB_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _dD_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _dv_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _dw_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _dx_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _dy_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _dz_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _dA_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _dE_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _dF_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _dG_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ft_=[0,caml_string_of_jsbytes("smartML/lib/type.ml"),305,18],
     _fb_=[0,caml_string_of_jsbytes("smartML/lib/type.ml"),71,14],
     _fa_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _e8_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _e9_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _e__=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _e$_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _e6_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _e5_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _eX_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _eY_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _eZ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _e0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _eW_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _eV_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _e1_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _eO_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _eP_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _eQ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _eR_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _eN_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _eM_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _eS_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _eF_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _eG_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _eH_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _eI_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _eE_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _eD_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _eJ_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _ez_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("UUnknown"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>UUnknown@ ")],
     _eA_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _eB_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _eC_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("URecord"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>URecord@ ")],
     _eK_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _eL_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("UTuple"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>UTuple@ ")],
     _eT_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _eU_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("UVariant"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>UVariant@ ")],
     _e2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _e3_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("UExact"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>UExact@ ")],
     _e4_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ey_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ev_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _eq_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _el_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ek_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _em_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _dV_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _dH_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("TVar"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>TVar@ ")],
     _dI_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _dJ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _dK_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T0"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T0@ ")],
     _dL_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _dM_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T1 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T1 (@,")],
     _dN_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dO_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _dP_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T2 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T2 (@,")],
     _dQ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dR_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _dS_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _dT_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("TInt {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>TInt {@,")],
     _dU_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _dW_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _dX_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _dY_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("TBounded {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>TBounded {@,")],
     _dZ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _d0_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _d1_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _d2_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _d3_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _d4_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _d5_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("TRecord {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>TRecord {@,")],
     _d6_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _d7_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _d8_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _d9_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _d__=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _d$_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _ea_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("TVariant {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>TVariant {@,")],
     _eb_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ec_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ed_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ee_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ef_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _eg_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _eh_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("TUnknown"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>TUnknown@ ")],
     _ei_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ej_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("TTuple"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>TTuple@ ")],
     _en_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _eo_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("TSaplingState {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>TSaplingState {@,")],
     _ep_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _er_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _es_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _et_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("TSaplingTransaction {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>TSaplingTransaction {@,")],
     _eu_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ew_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ex_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _fc_=[1,0],
     _fd_=[1,9],
     _fe_=[1,1],
     _ff_=[1,6],
     _fg_=[1,11],
     _fh_=[1,12],
     _fi_=[1,10],
     _fj_=[1,7],
     _fk_=[1,14],
     _fl_=[1,15],
     _fm_=[1,13],
     _fn_=[1,5],
     _fo_=[1,8],
     _fp_=[1,4],
     _fq_=[1,16],
     _fr_=[1,17],
     _fs_=[1,18],
     _fu_=[0,caml_string_of_jsbytes("smartML/lib/basics.ml"),8,0],
     _fv_=[0,caml_string_of_jsbytes("smartML/lib/basics.ml"),8,0],
     _fw_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _fx_=[0,caml_string_of_jsbytes("smartML/lib/basics.ml"),10,0],
     _fy_=[0,caml_string_of_jsbytes("smartML/lib/basics.ml"),10,0],
     _fz_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _fH_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _fI_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _fJ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _fK_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _fG_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _fF_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _fL_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _fM_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _fN_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("BMul {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>BMul {@,")],
     _fO_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _fP_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _fQ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _fR_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _fS_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _fT_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _gM_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _gN_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _gO_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _gP_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _gQ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _gL_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _gK_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _gR_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _gS_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _hR_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _hS_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hT_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hU_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hV_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hW_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hX_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hY_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hZ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _h0_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _h1_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _h2_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _h3_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _h4_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _h5_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _h6_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _h7_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _jA_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ju_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _jv_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _jw_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _jx_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _jy_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _jz_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _jB_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _jC_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _jD_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _jE_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _jF_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _jG_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _kq_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EProject"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EProject@ ")],
     _kr_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _ks_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kt_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EListElements"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EListElements@ ")],
     _ku_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _kv_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kw_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EListItems"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EListItems@ ")],
     _kx_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _ky_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kz_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EListKeys"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EListKeys@ ")],
     _kA_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _kB_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kC_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EListValues"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EListValues@ ")],
     _kD_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _kE_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kF_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EUnpack"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EUnpack@ ")],
     _kG_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kH_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EType_annotation"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EType_annotation@ ")],
     _kI_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kJ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EAttr"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EAttr@ ")],
     _kK_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _kL_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kM_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EVariant"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EVariant@ ")],
     _kN_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _kO_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kP_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EIsVariant"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EIsVariant@ ")],
     _kQ_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _kR_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kS_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _kY_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _nP_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _nQ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _nR_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _nS_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _nT_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _nU_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _nV_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _nW_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _nX_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _nY_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _yn_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _yo_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _yp_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _yq_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _yr_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _ys_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _yw_=
      [0,
       [11,
        caml_string_of_jsbytes("Flag "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes
           (" can only be set in the command line or at the beginning of a scenario."),
          0]]],
       caml_string_of_jsbytes
        ("Flag %S can only be set in the command line or at the beginning of a scenario.")],
     _ym_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _xU_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _xT_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _xV_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _vK_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("New_contract {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>New_contract {@,")],
     _vL_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vM_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vN_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vO_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vP_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vQ_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vR_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vS_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vT_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vU_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vV_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _vW_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vX_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vY_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vZ_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _v0_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _v1_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _v2_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Compute {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Compute {@,")],
     _v3_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _v4_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _v5_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _v6_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _v7_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _v8_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _v9_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _v__=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _v$_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wa_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _wb_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Simulation {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Simulation {@,")],
     _wc_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wd_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _we_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wf_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wg_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wh_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _wi_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Message {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Message {@,")],
     _wj_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wk_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wl_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wm_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wn_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wo_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wp_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wq_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wr_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ws_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wt_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wu_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wv_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ww_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wx_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wy_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wz_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _wA_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wB_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wC_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wD_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _wE_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wF_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wG_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wH_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wI_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wJ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wK_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wL_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wM_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wN_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wO_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wP_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wQ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wR_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wS_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wT_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wU_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wV_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wW_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _wX_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _wY_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _wZ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _w0_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _w1_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _w2_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _w3_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _w4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _w5_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _w6_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _w7_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _w8_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _w9_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _w__=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _w$_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xa_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _xb_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("ScenarioError {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>ScenarioError {@,")],
     _xc_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xd_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _xe_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xf_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _xg_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Html {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Html {@,")],
     _xh_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xi_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _xj_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xk_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _xl_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xm_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _xn_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xo_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _xp_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xq_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xr_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _xs_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Verify {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Verify {@,")],
     _xt_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xu_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xv_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _xw_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xx_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xy_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _xz_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Show {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Show {@,")],
     _xA_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xB_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xC_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _xD_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xE_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _xF_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xG_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _xH_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xI_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _xJ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xK_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _xL_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xM_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _xN_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xO_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _xP_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xQ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _xR_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _xS_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Exception"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Exception@ ")],
     _xW_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _xX_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Set_delegate {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Set_delegate {@,")],
     _xY_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _xZ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _x0_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _x1_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _x2_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _x3_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _x4_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _x5_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _x6_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _x7_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("DynamicContract {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>DynamicContract {@,")],
     _x8_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _x9_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _x__=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _x$_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ya_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _yb_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _yc_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _yd_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ye_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _yf_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Add_flag {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Add_flag {@,")],
     _yg_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _yh_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _yi_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _yj_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _yk_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _yl_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _vJ_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _vF_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Account"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Account@ ")],
     _vG_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _vH_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Address"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Address@ ")],
     _vI_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _vE_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _vA_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vz_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _vB_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _vl_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vk_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _vm_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _vb_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _vc_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vd_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _ve_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vf_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vg_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vh_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vi_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vj_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vn_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vo_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vp_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vq_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vr_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vs_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vt_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vu_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vv_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vw_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vx_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _vy_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _vC_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _vD_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _va_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _u5_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _u6_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _u7_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _u8_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _u4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _u3_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _u9_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _uY_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _uX_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _uZ_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _uR_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _uS_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _uQ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _uT_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _uC_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _uD_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _uE_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _uF_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _uB_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _uA_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _uG_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _ut_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ur_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _us_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _uu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _uo_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _up_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _uq_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _uv_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _un_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _um_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _uw_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _uh_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _ui_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _uj_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _uk_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ul_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ux_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _uy_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _uz_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _uH_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _uI_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _uJ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _uK_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _uL_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _uM_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _uN_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _uO_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _uP_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _uU_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _uV_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _uW_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _u0_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _u1_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _u2_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _u__=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _u$_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _ug_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ud_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _uc_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _ue_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _ua_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Exec_failure ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Exec_failure (@,")],
     _ub_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _uf_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _t$_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ta_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasAdd ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasAdd (@,")],
     _tb_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tc_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _td_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _te_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasMul ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasMul (@,")],
     _tf_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tg_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _th_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ti_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _tj_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _tk_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasSub ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasSub (@,")],
     _tl_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tm_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tn_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _to_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasDiv ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasDiv (@,")],
     _tp_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tq_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tr_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _ts_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasBitArithmetic ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasBitArithmetic (@,")],
     _tt_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tu_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tv_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _tw_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasMap ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasMap (@,")],
     _tx_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ty_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tz_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _tA_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("IsComparable"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>IsComparable@ ")],
     _tB_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _tC_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasGetItem ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasGetItem (@,")],
     _tD_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tE_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tF_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _tG_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasContains ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasContains (@,")],
     _tH_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tI_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tJ_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _tK_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasSize"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasSize@ ")],
     _tL_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _tM_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasSlice"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasSlice@ ")],
     _tN_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _tO_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("AssertEqual ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>AssertEqual (@,")],
     _tP_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tQ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tR_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _tS_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("IsInt ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>IsInt (@,")],
     _tT_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tU_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _tV_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("SaplingVerify ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>SaplingVerify (@,")],
     _tW_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _tX_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _tY_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasNeg ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasNeg (@,")],
     _tZ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _t0_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _t1_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("HasInt"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>HasInt@ ")],
     _t2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _t3_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("IsNotHot ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>IsNotHot (@,")],
     _t4_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _t5_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _t6_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _t7_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("IsAnyMap ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>IsAnyMap (@,")],
     _t8_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _t9_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _t__=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _s$_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _s4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _s3_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _s5_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _sX_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _sW_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _sY_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _sO_=
      [0,
       [11,
        caml_string_of_jsbytes("`Type ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Type (@[<hov>")],
     _sP_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _sQ_=
      [0,
       [11,
        caml_string_of_jsbytes("`Text ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Text (@[<hov>")],
     _sR_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _sS_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _sT_=
      [0,
       [11,
        caml_string_of_jsbytes("`Line ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Line (@[<hov>")],
     _sU_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _sV_=
      [0,
       [11,
        caml_string_of_jsbytes("`Exprs ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Exprs (@[<hov>")],
     _sZ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _sM_=
      [0,
       [11,
        caml_string_of_jsbytes("`Expr ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Expr (@[<hov>")],
     _sN_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _s0_=
      [0,
       [11,
        caml_string_of_jsbytes("`Expr_untyped ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Expr_untyped (@[<hov>")],
     _s1_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _s2_=
      [0,
       [11,
        caml_string_of_jsbytes("`Rec ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Rec (@[<hov>")],
     _s6_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _s7_=
      [0,
       [11,
        caml_string_of_jsbytes("`Literal ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Literal (@[<hov>")],
     _s8_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _s9_=
      [0,
       [11,
        caml_string_of_jsbytes("`Value ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Value (@[<hov>")],
     _s__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _sL_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _sD_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _sE_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _sF_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _sG_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _sH_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _sI_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _sJ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _sK_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _sC_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _sv_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _sw_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _sx_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _sy_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _su_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _st_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _sz_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _sk_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _sj_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _sl_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _sh_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _si_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _sm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _sg_=
      [0,
       [11,
        caml_string_of_jsbytes("`Closure ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Closure (@[<hov>")],
     _sn_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _sd_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _se_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _sf_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _so_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _sc_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _sb_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _sp_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _r9_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _r1_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _r2_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _r3_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _r4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _r5_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _r6_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _r7_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _r8_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _r__=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _r$_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _sa_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _sq_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _sr_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ss_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _sA_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _sB_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _r0_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _rT_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _rU_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _rV_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _rW_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _rX_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _rY_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _rZ_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _rS_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _rJ_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ry_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Transfer {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Transfer {@,")],
     _rz_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _rA_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _rB_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _rC_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _rD_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _rE_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _rF_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _rG_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _rH_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _rI_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("SetDelegate"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>SetDelegate@ ")],
     _rK_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _rL_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("CreateContract {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>CreateContract {@,")],
     _rM_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _rN_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _rO_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _rP_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _rQ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _rR_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _rx_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _rt_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _ru_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _rv_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _rw_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _rs_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ri_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _rh_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _rj_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _rc_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _rb_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _rd_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _q7_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _q8_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _q9_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _q6_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _q5_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _q__=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _qX_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _qW_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _qY_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _qR_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _qQ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _qS_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _qC_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _qD_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _qE_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _qF_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _qB_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _qA_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _qG_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _qs_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Literal"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Literal@ ")],
     _qt_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _qu_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bounded"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bounded@ ")],
     _qv_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _qw_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Contract"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Contract@ ")],
     _qx_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _qy_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Record ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Record (@,")],
     _qz_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _qH_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _qI_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Variant ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Variant (@,")],
     _qJ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _qK_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _qL_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _qM_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _qN_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _qO_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("List ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>List (@,")],
     _qP_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _qT_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _qU_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Set ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Set (@,")],
     _qV_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _qZ_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _q0_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Map ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Map (@,")],
     _q1_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _q2_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _q3_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _q4_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _q$_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _ra_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Tuple"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Tuple@ ")],
     _re_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _rf_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Closure ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Closure (@,")],
     _rg_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _rk_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _rl_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Operation"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Operation@ ")],
     _rm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _rn_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Ticket ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Ticket (@,")],
     _ro_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _rp_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _rq_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _rr_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _qr_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _qn_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _qo_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _qp_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _qq_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _qm_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _qi_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _qj_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _qk_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ql_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _qh_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _qg_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _qe_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _p9_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _p__=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _p$_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _qa_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _qb_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _qc_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _qd_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _p8_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _p1_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _p2_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _p3_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _p4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _p5_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _p6_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _p7_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _p0_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _pQ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _pR_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _pS_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _pT_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _pU_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _pV_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _pW_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _pX_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _pY_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _pZ_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _pP_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _pF_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _pG_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _pH_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _pI_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _pJ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _pK_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _pL_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _pM_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _pN_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _pO_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _pE_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _pb_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ot_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _ou_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ov_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ow_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ox_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _oy_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _os_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _or_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _oz_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _oe_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CNever"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CNever@ ")],
     _of_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _og_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CFailwith"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CFailwith@ ")],
     _oh_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _oi_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CVerify ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CVerify (@,")],
     _oj_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ok_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _ol_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CIf ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CIf (@,")],
     _om_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _on_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _oo_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _op_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CMatch ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CMatch (@,")],
     _oq_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _oA_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _oB_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CMatchProduct ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CMatchProduct (@,")],
     _oC_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _oD_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _oE_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _oF_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CModifyProduct ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CModifyProduct (@,")],
     _oG_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _oH_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _oI_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _oJ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("CMatchCons {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>CMatchCons {@,")],
     _oK_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _oL_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _oM_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _oN_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _oO_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _oP_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _oQ_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _oR_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _oS_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _oT_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _oU_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _oV_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _oW_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _oX_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CDefineLocal ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CDefineLocal (@,")],
     _oY_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _oZ_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _o0_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _o1_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CSetVar ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CSetVar (@,")],
     _o2_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _o3_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _o4_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CDelItem ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CDelItem (@,")],
     _o5_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _o6_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _o7_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CUpdateSet ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CUpdateSet (@,")],
     _o8_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _o9_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _o__=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _o$_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _pa_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CBind ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CBind (@,")],
     _pc_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _pd_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _pe_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _pf_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CFor ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CFor (@,")],
     _pg_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ph_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _pi_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _pj_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _pk_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CWhile ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CWhile (@,")],
     _pl_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _pm_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _pn_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CResult"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CResult@ ")],
     _po_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _pp_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CComment"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CComment@ ")],
     _pq_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _pr_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ps_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CSetType ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CSetType (@,")],
     _pt_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _pu_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _pv_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CSetResultType ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CSetResultType (@,")],
     _pw_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _px_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _py_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CTrace"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CTrace@ ")],
     _pz_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _pA_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("CSetEntryPoint ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>CSetEntryPoint (@,")],
     _pB_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _pC_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _pD_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _od_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _oa_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _n$_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _ob_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _n4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _n5_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _n3_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _n6_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _nZ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Pattern_single"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Pattern_single@ ")],
     _n0_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _n1_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _n2_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Pattern_tuple"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Pattern_tuple@ ")],
     _n7_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _n8_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Pattern_record ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Pattern_record (@,")],
     _n9_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _n__=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _oc_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _nO_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _nF_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _nG_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _nH_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _nI_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _nE_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _nD_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _nJ_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _m0_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _mq_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _mp_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _mr_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _md_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _mc_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _me_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _l8_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _l9_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _l__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _l7_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _l6_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _l$_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _l0_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _lZ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _l1_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _lS_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _lT_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _lU_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _lV_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _lR_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _lQ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _lW_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _lM_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _lL_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _lN_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _kZ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMPrim0"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMPrim0@ ")],
     _k0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _k1_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMPrim1 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMPrim1 (@,")],
     _k2_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _k3_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _k4_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMPrim1_fail ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMPrim1_fail (@,")],
     _k5_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _k6_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _k7_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMPrim2 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMPrim2 (@,")],
     _k8_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _k9_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _k__=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _k$_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMPrim3 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMPrim3 (@,")],
     _la_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _lb_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _lc_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ld_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _le_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EPrim0"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EPrim0@ ")],
     _lf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _lg_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EPrim1 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EPrim1 (@,")],
     _lh_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _li_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _lj_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EPrim2 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EPrim2 (@,")],
     _lk_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ll_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _lm_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _ln_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EPrim3 ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EPrim3 (@,")],
     _lo_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _lp_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _lq_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _lr_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _ls_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EOpenVariant ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EOpenVariant (@,")],
     _lt_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _lu_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _lv_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _lw_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _lx_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("EItem {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>EItem {@,")],
     _ly_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _lz_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _lA_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _lB_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _lC_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _lD_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _lE_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _lF_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _lG_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _lH_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _lI_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _lJ_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _lK_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("ETuple"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>ETuple@ ")],
     _lO_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _lP_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("ERecord"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>ERecord@ ")],
     _lX_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _lY_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EList"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EList@ ")],
     _l2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _l3_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMap ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMap (@,")],
     _l4_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _l5_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ma_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _mb_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("ESet"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>ESet@ ")],
     _mf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _mg_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("ESaplingVerifyUpdate {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>ESaplingVerifyUpdate {@,")],
     _mh_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _mi_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mj_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _mk_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ml_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mm_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _mn_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMichelson ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMichelson (@,")],
     _mo_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _ms_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _mt_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("EMapFunction {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>EMapFunction {@,")],
     _mu_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _mv_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mw_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _mx_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _my_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mz_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _mA_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("ELambda"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>ELambda@ ")],
     _mB_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _mC_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("ELambdaParams {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>ELambdaParams {@,")],
     _mD_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _mE_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _mF_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mG_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _mH_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _mI_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _mJ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mK_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _mL_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("ECreate_contract {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>ECreate_contract {@,")],
     _mM_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _mN_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mO_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _mP_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _mQ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mR_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _mS_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _mT_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mU_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _mV_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _mW_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _mX_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _mY_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("EContract {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>EContract {@,")],
     _mZ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _m1_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _m2_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _m3_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _m4_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _m5_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _m6_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _m7_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _m8_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _m9_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("ESlice {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>ESlice {@,")],
     _m__=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _m$_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _na_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _nb_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _nc_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _nd_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ne_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _nf_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ng_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _nh_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("EMake_signature {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>EMake_signature {@,")],
     _ni_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _nj_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _nk_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _nl_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _nm_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _nn_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _no_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _np_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _nq_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _nr_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("ETransfer {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>ETransfer {@,")],
     _ns_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _nt_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _nu_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _nv_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _nw_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _nx_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ny_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _nz_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _nA_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _nB_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMatch ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMatch (@,")],
     _nC_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _nK_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _nL_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EHasEntryPoint"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EHasEntryPoint@ ")],
     _nM_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _nN_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kX_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _kT_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EBinOpInf"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EBinOpInf@ ")],
     _kU_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kV_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EBinOpPre"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EBinOpPre@ ")],
     _kW_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kp_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _kk_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _ka_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _jH_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("ECst"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>ECst@ ")],
     _jI_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _jJ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("ECstContract"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>ECstContract@ ")],
     _jK_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _jL_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EBounded"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EBounded@ ")],
     _jM_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _jN_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("ELocal"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>ELocal@ ")],
     _jO_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _jP_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _jQ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMetaLocal"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMetaLocal@ ")],
     _jR_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _jS_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _jT_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EGlobal"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EGlobal@ ")],
     _jU_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _jV_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _jW_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EVariant_arg"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EVariant_arg@ ")],
     _jX_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _jY_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _jZ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EIter"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EIter@ ")],
     _j0_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _j1_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _j2_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EMatchCons"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EMatchCons@ ")],
     _j3_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _j4_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _j5_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("EAccount_of_seed {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>EAccount_of_seed {@,")],
     _j6_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _j7_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _j8_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _j9_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _j__=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EContract_address ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EContract_address (@,")],
     _j$_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _kb_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _kc_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EContract_balance"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EContract_balance@ ")],
     _kd_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ke_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EContract_baker"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EContract_baker@ ")],
     _kf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _kg_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EContract_data"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EContract_data@ ")],
     _kh_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _ki_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EContract_typed ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EContract_typed (@,")],
     _kj_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _kl_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _km_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("EScenario_var"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>EScenario_var@ ")],
     _kn_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _ko_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _jt_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _i9_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _i__=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _i$_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _ja_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _jb_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _jc_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _jd_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _je_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _jf_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _jg_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _jh_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ji_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _jj_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _jk_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _jl_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _jm_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _jn_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _jo_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _jp_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _jq_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _jr_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _js_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _i8_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _i1_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _i0_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _i2_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _iS_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _iT_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _iU_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _iV_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _iR_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _iQ_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _iW_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _iI_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _iJ_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _iK_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _iL_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _iH_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _iG_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _iM_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _iB_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _iA_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _iC_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _iw_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _io_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _in_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _ip_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _h8_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _h9_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _h__=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _h$_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ia_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ib_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ic_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _id_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ie_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _if_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ig_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ih_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ii_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ij_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ik_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _il_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _im_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _iq_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _ir_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _is_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _it_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _iu_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _iv_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ix_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _iy_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _iz_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _iD_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _iE_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _iF_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _iN_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _iO_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _iP_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _iX_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _iY_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _iZ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _i3_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _i4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _i5_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _i6_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _i7_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _hQ_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _hL_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Real"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Real@ ")],
     _hM_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _hN_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _hO_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Local"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Local@ ")],
     _hP_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _hK_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _hn_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _ho_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hp_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _hq_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hr_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hs_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _ht_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _hu_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hv_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hw_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hx_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _hy_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hz_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hA_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hB_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hC_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hD_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hE_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _hF_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hG_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hH_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hI_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hJ_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _hm_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ha_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _g8_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _gZ_=
      [0,
       [11,
        caml_string_of_jsbytes("`Annotated ("),
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<hov>"),0],
           caml_string_of_jsbytes("<hov>")]],
         0]],
       caml_string_of_jsbytes("`Annotated (@[<hov>")],
     _g0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _gT_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _gU_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _gV_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _gW_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _gX_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _gY_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _g1_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _g2_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _g3_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _g4_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _g5_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _g6_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _g7_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _g9_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _g__=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _g$_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hb_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hc_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hd_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _he_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hf_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hg_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hh_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hi_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _hj_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _hk_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _hl_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _gJ_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _gF_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _gE_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _gG_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _gz_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _gy_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _gA_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _gp_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _gq_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _gr_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _gs_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _gt_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _gu_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _gv_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _gw_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _gx_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _gB_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _gC_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _gD_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _gH_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _gI_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _go_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _gl_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _gk_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _gm_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _gf_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _ge_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _gg_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _f__=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _f$_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _f9_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _ga_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _fU_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Int"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Int@ ")],
     _fV_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _fW_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _fX_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("String"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>String@ ")],
     _fY_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _fZ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _f0_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bytes"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bytes@ ")],
     _f1_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _f2_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _f3_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Primitive {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>Primitive {@,")],
     _f4_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _f5_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _f6_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _f7_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _f8_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _gb_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _gc_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _gd_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _gh_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _gi_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _gj_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Sequence"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Sequence@ ")],
     _gn_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _fE_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _fC_=
      [0,
       [11,caml_string_of_jsbytes("T "),[15,0]],
       caml_string_of_jsbytes("T %a")],
     _fD_=[0,[12,85,0],caml_string_of_jsbytes("U")],
     _fB_=[0,caml_string_of_jsbytes("smartML/lib/basics.ml"),15,19],
     _fA_=[0,caml_string_of_jsbytes("smartML/lib/basics.ml"),12,17],
     _yA_=[0,[2,0,[2,0,[12,59,0]]],caml_string_of_jsbytes("%s%s;")],
     _yB_=
      [0,
       [2,0,[12,39,[2,0,[11,caml_string_of_jsbytes("';"),0]]]],
       caml_string_of_jsbytes("%s'%s';")],
     _yC_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("0x"),[2,0,[12,59,0]]]],
       caml_string_of_jsbytes("%s0x%s;")],
     _yD_=
      [0,
       [2,
        0,
        [2,
         0,
         [2,
          0,
          [11,
           caml_string_of_jsbytes("{\n"),
           [2,0,[12,10,[2,0,[11,caml_string_of_jsbytes("};"),0]]]]]]]],
       caml_string_of_jsbytes("%s%s%s{\n%s\n%s};")],
     _yE_=[0,[2,0,[2,0,[2,0,[12,59,0]]]],caml_string_of_jsbytes("%s%s%s;")],
     _yF_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("Seq{\n"),
         [2,0,[12,10,[2,0,[11,caml_string_of_jsbytes("};"),0]]]]]],
       caml_string_of_jsbytes("%sSeq{\n%s\n%s};")],
     _yG_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("Seq{}"),0]],
       caml_string_of_jsbytes("%sSeq{}")],
     _yI_=[1,caml_string_of_jsbytes("NULL")],
     _yJ_=[0,caml_string_of_jsbytes("smartML/lib/micheline.ml"),105,17],
     _yK_=[0,caml_string_of_jsbytes("smartML/lib/micheline.ml"),93,16],
     _yL_=[0,caml_string_of_jsbytes("smartML/lib/micheline.ml"),87,14],
     _yH_=[0,caml_string_of_jsbytes("smartML/lib/micheline.ml"),82,9],
     _yz_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _z8_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Dp_=[0,0],
     _E4_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),1539,9],
     _Jt_=
      [0,
       [11,caml_string_of_jsbytes("no value for "),[3,0,0]],
       caml_string_of_jsbytes("no value for %S")],
     _Jp_=[0,-1],
     _Jm_=[0,1,0],
     _Jn_=[0,0,[0,0]],
     _Jo_=[0,0,[0,0]],
     _Jr_=[0,0,[0,0]],
     _Js_=[0,0,[0,1]],
     _Jq_=[0,0],
     _Jl_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),2898,13],
     _Jh_=[0,0],
     _Ji_=
      [0,
       [11,
        caml_string_of_jsbytes("parameter "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(";<br>storage &nbsp;&nbsp;"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes(";<br><div class='michelsonLine'>code<br>"),
            [2,0,[11,caml_string_of_jsbytes(";<\/div>"),0]]]]]]],
       caml_string_of_jsbytes
        ("parameter %s;<br>storage &nbsp;&nbsp;%s;<br><div class='michelsonLine'>code<br>%s;<\/div>")],
     _Jf_=[0,0],
     _Jg_=
      [0,
       [11,
        caml_string_of_jsbytes("parameter "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(";<br>storage &nbsp;&nbsp;"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes(";<br><div class='michelsonLine'>code<br>"),
            [2,0,[11,caml_string_of_jsbytes(";<\/div>"),0]]]]]]],
       caml_string_of_jsbytes
        ("parameter %s;<br>storage &nbsp;&nbsp;%s;<br><div class='michelsonLine'>code<br>%s;<\/div>")],
     _Jd_=[0,0],
     _Je_=
      [0,
       [11,
        caml_string_of_jsbytes("parameter "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(";\nstorage   "),
          [2,0,[11,caml_string_of_jsbytes(";\ncode\n"),[2,0,[12,59,0]]]]]]],
       caml_string_of_jsbytes("parameter %s;\nstorage   %s;\ncode\n%s;")],
     _Jc_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _IY_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _IW_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _IX_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _IZ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _IU_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _IV_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _I0_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _I1_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _I2_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _I3_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _I4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _I5_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _I6_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _I7_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _I8_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _I9_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _I__=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _I$_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _Ja_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _Jb_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _IT_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ID_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _IB_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _IC_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _IE_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Iz_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _IA_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _IF_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _IG_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _IH_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _II_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _IJ_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _IK_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _IL_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _IM_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _IN_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _IO_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _IP_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _IQ_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _IR_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _IS_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _Iw_=
      [0,
       [11,
        caml_string_of_jsbytes("c_ad_r macro: wrong char: '"),
        [0,[11,caml_string_of_jsbytes("' (of "),[3,0,[12,41,0]]]]],
       caml_string_of_jsbytes("c_ad_r macro: wrong char: '%c' (of %S)")],
     _Ix_=
      [0,
       [11,caml_string_of_jsbytes("set_c_r_macro: called with no chars: S"),0],
       caml_string_of_jsbytes("set_c_r_macro: called with no chars: S")],
     _Iy_=
      [0,
       [11,
        caml_string_of_jsbytes("set_c_r_macro: wrong char: '"),
        [0,[11,caml_string_of_jsbytes("' (of "),[3,0,[12,41,0]]]]],
       caml_string_of_jsbytes("set_c_r_macro: wrong char: '%c' (of %S)")],
     _Iv_=
      [0,
       [11,caml_string_of_jsbytes("Cannot compile missing type: "),[2,0,0]],
       caml_string_of_jsbytes("Cannot compile missing type: %s")],
     _GI_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),2172,22],
     _GH_=
      [0,
       [11,caml_string_of_jsbytes("Parse type error "),[3,0,0]],
       caml_string_of_jsbytes("Parse type error %S")],
     _GJ_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),2245,18],
     _G$_=[1,9],
     _Ha_=[1,12],
     _Hb_=[1,11],
     _Hc_=[1,3],
     _Hd_=[0,[23,0]],
     _G5_=[1,9],
     _G6_=[1,12],
     _G7_=[1,11],
     _G8_=[1,3],
     _G9_=[1,3],
     _G__=[1,10],
     _GZ_=[1,11],
     _G0_=[1,3],
     _G1_=[0,[23,0]],
     _G2_=[0,[23,0]],
     _G3_=[1,3],
     _GV_=[1,3],
     _GW_=[1,10],
     _GX_=[1,9],
     _GY_=[1,12],
     _G4_=[1,10],
     _GR_=[0,0],
     _GS_=[0,[15,1]],
     _GT_=[0,0],
     _GU_=[0,0],
     _GP_=[0,[23,0]],
     _GQ_=[0,[3,10]],
     _GO_=[0,[23,0]],
     _GN_=[0,[3,10]],
     _GL_=[0,[3,10]],
     _GK_=
      [0,
       [11,caml_string_of_jsbytes("Cannot parse instruction "),[3,0,0]],
       caml_string_of_jsbytes("Cannot parse instruction %S")],
     _GM_=[0,[0,[2,0]],0],
     _Ip_=[3,15],
     _Iq_=[3,7],
     _Ir_=[0,2],
     _Is_=[1,16],
     _It_=[3,0],
     _Iu_=[1,4],
     _Ij_=[4,4],
     _Ik_=[0,6],
     _Il_=[26,[0,1,0]],
     _Im_=[26,[0,0,0]],
     _In_=[1,20],
     _Io_=[0,3],
     _Ig_=[15,1],
     _Ih_=[3,9],
     _Id_=[3,14],
     _Ie_=[1,3],
     _If_=[3,6],
     _Ii_=[3,10],
     _H9_=[1,19],
     _H__=[1,12],
     _H$_=[4,2],
     _Ia_=[3,12],
     _Ib_=[1,11],
     _H4_=[1,10],
     _H5_=[1,9],
     _H6_=[1,12],
     _H7_=[1,11],
     _H8_=[1,3],
     _HY_=[1,10],
     _HZ_=[1,9],
     _H0_=[1,12],
     _H1_=[1,11],
     _H2_=[1,3],
     _HX_=[1,3],
     _H3_=[1,3],
     _Ic_=[2,0],
     _HS_=[1,23],
     _HT_=[1,27],
     _HU_=[1,7],
     _HV_=[1,6],
     _HN_=[3,13],
     _HO_=[1,10],
     _HP_=[3,3],
     _HQ_=[3,4],
     _HR_=[1,9],
     _HH_=[0,4],
     _HI_=[1,13],
     _HJ_=[2,1],
     _HK_=[1,8],
     _HL_=[1,5],
     _HC_=[1,26],
     _HD_=[1,28],
     _HE_=[3,[0,0,0]],
     _HF_=[1,18],
     _HG_=[3,8],
     _HM_=[3,1],
     _Hx_=[1,25],
     _Hy_=[0,0],
     _Hz_=[0,5],
     _HA_=[3,16],
     _Hr_=[1,2],
     _Hs_=[4,0],
     _Ht_=[1,15],
     _Hu_=[1,22],
     _Hv_=[1,24],
     _Hw_=[1,21],
     _Hm_=[0,7],
     _Hn_=[3,17],
     _Ho_=[3,2],
     _Hp_=[3,18],
     _Hg_=[3,5],
     _Hh_=[1,29],
     _Hi_=[4,1],
     _Hj_=[24,[0,1,[0,1,0]]],
     _Hk_=[0,8],
     _Hl_=[4,3],
     _Hq_=[0,1],
     _HB_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),2347,21],
     _HW_=[1,17],
     _He_=[0,0],
     _Hf_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),2421,21],
     _GG_=[0,[16,0],caml_string_of_jsbytes("%t")],
     _F8_=[0,[16,0],caml_string_of_jsbytes("%t")],
     _F__=[0,0],
     _F$_=[0,[16,[12,32,[2,0,0]]],caml_string_of_jsbytes("%t %s")],
     _F9_=[0,[16,[12,32,[4,0,0,0,0]]],caml_string_of_jsbytes("%t %d")],
     _Gk_=
      [0,[16,[12,32,[16,[12,32,[16,0]]]]],caml_string_of_jsbytes("%t %t %t")],
     _Gx_=[0,0],
     _Gy_=
      [0,
       [11,
        caml_string_of_jsbytes("CREATE_CONTRACT { parameter "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("; storage "),
          [2,0,[11,caml_string_of_jsbytes("; code "),[16,[12,125,0]]]]]]],
       caml_string_of_jsbytes
        ("CREATE_CONTRACT { parameter %s; storage %s; code %t}")],
     _Gu_=[0,0],
     _Gv_=[0,0],
     _Gw_=
      [0,
       [11,
        caml_string_of_jsbytes("LAMBDA "),
        [2,0,[12,32,[2,0,[12,32,[16,0]]]]]],
       caml_string_of_jsbytes("LAMBDA %s %s %t")],
     _Gt_=[0,[16,[12,32,[4,0,0,0,0]]],caml_string_of_jsbytes("%t %d")],
     _Gr_=[0,[16,[12,32,[4,0,0,0,0]]],caml_string_of_jsbytes("%t %d")],
     _Gs_=[0,[16,0],caml_string_of_jsbytes("%t")],
     _Go_=
      [0,
       [11,caml_string_of_jsbytes("; "),[16,0]],
       caml_string_of_jsbytes("; %t")],
     _Gl_=[0,0],
     _Gm_=
      [0,
       [11,caml_string_of_jsbytes("PUSH "),[2,0,[12,32,[16,0]]]],
       caml_string_of_jsbytes("PUSH %s %t")],
     _Gj_=[0,[16,0],caml_string_of_jsbytes("%t")],
     _Gi_=
      [0,
       [11,caml_string_of_jsbytes("DIP "),[4,3,0,0,[12,32,[16,0]]]],
       caml_string_of_jsbytes("DIP %i %t")],
     _Gg_=
      [0,
       [11,caml_string_of_jsbytes("ERROR "),[2,0,0]],
       caml_string_of_jsbytes("ERROR %s")],
     _Gf_=[0,[16,[2,0,0]],caml_string_of_jsbytes("%t%s")],
     _Gd_=[0,0],
     _Ge_=
      [0,
       [11,caml_string_of_jsbytes("CONTRACT "),[12,37,[2,0,[12,32,[2,0,0]]]]],
       caml_string_of_jsbytes("CONTRACT %%%s %s")],
     _Ga_=[0,0],
     _Gb_=[0,0],
     _Gc_=
      [0,
       [16,[12,32,[2,0,[12,32,[2,0,0]]]]],
       caml_string_of_jsbytes("%t %s %s")],
     _F7_=
      [0,
       [11,
        caml_string_of_jsbytes("{ "),
        [16,[11,caml_string_of_jsbytes(" }"),0]]],
       caml_string_of_jsbytes("{ %t }")],
     _F6_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _Gn_=
      [0,
       [11,caml_string_of_jsbytes("{ "),[16,0]],
       caml_string_of_jsbytes("{ %t")],
     _Gp_=[0,[11,caml_string_of_jsbytes(" }"),0],caml_string_of_jsbytes(" }")],
     _Gq_=[0,[11,caml_string_of_jsbytes("{}"),0],caml_string_of_jsbytes("{}")],
     _Gh_=[0,[16,[12,32,[16,0]]],caml_string_of_jsbytes("%t %t")],
     _F2_=
      [0,
       [11,caml_string_of_jsbytes("Elt "),[16,[12,32,[16,0]]]],
       caml_string_of_jsbytes("Elt %t %t")],
     _F3_=
      [0,
       [11,caml_string_of_jsbytes("; Elt "),[16,[12,32,[16,0]]]],
       caml_string_of_jsbytes("; Elt %t %t")],
     _F1_=
      [0,
       [11,caml_string_of_jsbytes("Elt "),[16,[12,32,[16,0]]]],
       caml_string_of_jsbytes("Elt %t %t")],
     _FW_=[0,[16,0],caml_string_of_jsbytes("%t")],
     _FX_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _FY_=
      [0,
       [11,caml_string_of_jsbytes("; "),[2,0,0]],
       caml_string_of_jsbytes("; %s")],
     _FV_=
      [0,
       [11,caml_string_of_jsbytes("Some "),[16,0]],
       caml_string_of_jsbytes("Some %t")],
     _FU_=
      [0,
       [11,caml_string_of_jsbytes("Right "),[16,0]],
       caml_string_of_jsbytes("Right %t")],
     _FT_=
      [0,
       [11,caml_string_of_jsbytes("Left "),[16,0]],
       caml_string_of_jsbytes("Left %t")],
     _FS_=
      [0,
       [11,caml_string_of_jsbytes("Pair "),[16,[12,32,[16,0]]]],
       caml_string_of_jsbytes("Pair %t %t")],
     _FK_=[0,[12,40,[16,[12,41,0]]],caml_string_of_jsbytes("(%t)")],
     _FL_=
      [0,[11,caml_string_of_jsbytes("Unit"),0],caml_string_of_jsbytes("Unit")],
     _FM_=
      [0,[11,caml_string_of_jsbytes("None"),0],caml_string_of_jsbytes("None")],
     _FN_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _FO_=
      [0,[11,caml_string_of_jsbytes("True"),0],caml_string_of_jsbytes("True")],
     _FP_=
      [0,
       [11,caml_string_of_jsbytes("False"),0],
       caml_string_of_jsbytes("False")],
     _FQ_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _FR_=
      [0,
       [11,caml_string_of_jsbytes("0x"),[2,0,0]],
       caml_string_of_jsbytes("0x%s")],
     _FZ_=[0,[12,123,0],caml_string_of_jsbytes("{")],
     _F0_=[0,[12,125,0],caml_string_of_jsbytes("}")],
     _F4_=[0,[12,123,0],caml_string_of_jsbytes("{")],
     _F5_=[0,[12,125,0],caml_string_of_jsbytes("}")],
     _Fg_=[0,0],
     _Fy_=
      [0,
       [11,caml_string_of_jsbytes("PAIR "),[4,0,0,0,0]],
       caml_string_of_jsbytes("PAIR %d")],
     _Fx_=
      [0,
       [11,caml_string_of_jsbytes("UNPAIR "),[4,0,0,0,0]],
       caml_string_of_jsbytes("UNPAIR %d")],
     _Fv_=[0,0],
     _Fw_=
      [0,
       [11,caml_string_of_jsbytes("PUSH "),[2,0,[12,32,0]]],
       caml_string_of_jsbytes("PUSH %s ")],
     _Fu_=
      [0,
       [11,caml_string_of_jsbytes("DUG "),[4,0,0,0,0]],
       caml_string_of_jsbytes("DUG %d")],
     _Ft_=
      [0,
       [11,caml_string_of_jsbytes("DIG "),[4,0,0,0,0]],
       caml_string_of_jsbytes("DIG %d")],
     _Fs_=
      [0,
       [11,caml_string_of_jsbytes("DUP "),[4,0,0,0,0]],
       caml_string_of_jsbytes("DUP %d")],
     _Fr_=
      [0,
       [11,caml_string_of_jsbytes("DROP "),[4,0,0,0,0]],
       caml_string_of_jsbytes("DROP %d")],
     _Fp_=
      [0,
       [11,caml_string_of_jsbytes("# "),[2,0,0]],
       caml_string_of_jsbytes("# %s")],
     _Fn_=
      [0,
       [11,caml_string_of_jsbytes("UPDATE "),[4,0,0,0,0]],
       caml_string_of_jsbytes("UPDATE %d")],
     _Fj_=[0,0],
     _Fm_=
      [0,
       [11,caml_string_of_jsbytes("GET "),[4,0,0,0,0]],
       caml_string_of_jsbytes("GET %d")],
     _Fk_=[0,0],
     _Fl_=
      [0,
       [11,caml_string_of_jsbytes("CONTRACT "),[12,37,[2,0,[12,32,[2,0,0]]]]],
       caml_string_of_jsbytes("CONTRACT %%%s %s")],
     _Fh_=[0,0],
     _Fi_=[0,0],
     _Ff_=
      [0,
       [11,caml_string_of_jsbytes("SAPLING_EMPTY_STATE "),[4,0,0,0,0]],
       caml_string_of_jsbytes("SAPLING_EMPTY_STATE %d")],
     _Fe_=
      [0,
       [11,caml_string_of_jsbytes("SELF "),[12,37,[2,0,0]]],
       caml_string_of_jsbytes("SELF %%%s")],
     _E$_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]]]],
       caml_string_of_jsbytes("<span class='%s'>%s<\/span>")],
     _E__=[0,[12,59,0],caml_string_of_jsbytes(";")],
     _Fo_=
      [0,
       [11,caml_string_of_jsbytes("MIerror: "),[2,0,0]],
       caml_string_of_jsbytes("MIerror: %s")],
     _Fq_=
      [0,
       [11,caml_string_of_jsbytes("DIP "),[4,3,0,0,0]],
       caml_string_of_jsbytes("DIP %i")],
     _Fz_=
      [0,
       [11,caml_string_of_jsbytes("LAMBDA"),0],
       caml_string_of_jsbytes("LAMBDA")],
     _FA_=[0,0],
     _FB_=
      [0,
       [11,caml_string_of_jsbytes("  "),[2,0,0]],
       caml_string_of_jsbytes("  %s")],
     _FC_=[0,0],
     _FD_=
      [0,
       [11,caml_string_of_jsbytes("  "),[2,0,0]],
       caml_string_of_jsbytes("  %s")],
     _FE_=
      [0,
       [11,caml_string_of_jsbytes("CREATE_CONTRACT"),0],
       caml_string_of_jsbytes("CREATE_CONTRACT")],
     _FF_=
      [0,
       [11,caml_string_of_jsbytes(" { parameter "),[2,0,[12,59,0]]],
       caml_string_of_jsbytes(" { parameter %s;")],
     _FG_=[0,0],
     _FH_=
      [0,
       [11,caml_string_of_jsbytes("   storage   "),[2,0,[12,59,0]]],
       caml_string_of_jsbytes("   storage   %s;")],
     _FI_=
      [0,
       [11,caml_string_of_jsbytes("   code"),0],
       caml_string_of_jsbytes("   code")],
     _FJ_=[0,[11,caml_string_of_jsbytes("};"),0],caml_string_of_jsbytes("};")],
     _Fd_=[0,0],
     _Fa_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _Fb_=[0,[12,32,[2,0,[12,32,[2,0,0]]]],caml_string_of_jsbytes(" %s %s")],
     _Fc_=
      [0,
       [11,caml_string_of_jsbytes(" # Error: "),[2,0,0]],
       caml_string_of_jsbytes(" # Error: %s")],
     _E9_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _E6_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),1594,8],
     _E7_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),1587,8],
     _E8_=[11,0],
     _E5_=
      [0,
       [11,
        caml_string_of_jsbytes("Literal "),
        [2,
         0,
         [11,caml_string_of_jsbytes(" does not have type "),[2,0,[12,46,0]]]]],
       caml_string_of_jsbytes("Literal %s does not have type %s.")],
     _E3_=[0,3,1],
     _E2_=[0,2,1],
     _E0_=[0,1,1],
     _E1_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),1407,17],
     _EY_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),1335,11],
     _ET_=[0,caml_string_of_jsbytes("self")],
     _ES_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),1300,11],
     _EP_=[0,1,1],
     _EH_=[0,1,1],
     _EG_=[0,1,1],
     _EF_=[0,1,1],
     _Ey_=[0,2,1],
     _Ez_=
      [0,
       [11,caml_string_of_jsbytes("SET_C"),[2,0,[12,82,0]]],
       caml_string_of_jsbytes("SET_C%sR")],
     _Ew_=[0,1,1],
     _Ex_=[0,[12,67,[2,0,[12,82,0]]],caml_string_of_jsbytes("C%sR")],
     _Ev_=[0,1,1],
     _Eu_=[0,1,1],
     _Er_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),1074,11],
     _Ed_=[0,2,1],
     _Ec_=[0,1,1],
     _D$_=[0,2,1],
     _D__=[1,caml_string_of_jsbytes("MAP: incompatible body")],
     _D9_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),870,11],
     _D7_=[1,caml_string_of_jsbytes("LAMBDA: non-singleton result stack")],
     _D8_=[1,caml_string_of_jsbytes("error")],
     _D6_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),846,11],
     _D5_=[1,caml_string_of_jsbytes("LOOP_LEFT: incompatible body")],
     _D4_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),828,11],
     _D3_=[1,caml_string_of_jsbytes("LOOP: incompatible body")],
     _D2_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),809,11],
     _D1_=[1,caml_string_of_jsbytes("LOOP: incompatible body")],
     _D0_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),792,11],
     _DZ_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),742,2],
     _DW_=[0,0],
     _DU_=[0,0],
     _DR_=
      [0,
       [11,
        caml_string_of_jsbytes("DUG "),
        [4,3,0,0,[11,caml_string_of_jsbytes(": stack too short"),0]]],
       caml_string_of_jsbytes("DUG %i: stack too short")],
     _DS_=[1,caml_string_of_jsbytes("DUG: empty stack")],
     _DP_=
      [0,
       [11,
        caml_string_of_jsbytes("DIG "),
        [4,3,0,0,[11,caml_string_of_jsbytes(": stack too short"),0]]],
       caml_string_of_jsbytes("DIG %i: stack too short")],
     _DQ_=
      [0,
       [11,
        caml_string_of_jsbytes("DIG "),
        [4,3,0,0,[11,caml_string_of_jsbytes(": stack too short"),0]]],
       caml_string_of_jsbytes("DIG %i: stack too short")],
     _DO_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),690,2],
     _DN_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),665,8],
     _DM_=[1,caml_string_of_jsbytes("DIP: body error")],
     _DL_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),672,11],
     _DK_=[1,caml_string_of_jsbytes("DIP: body error")],
     _DJ_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),658,11],
     _DI_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),643,11],
     _DH_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),630,11],
     _DG_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),612,11],
     _DF_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),594,11],
     _Dx_=[0,0],
     _Dy_=[1,caml_string_of_jsbytes("NEVER on empty stack")],
     _Du_=[0,0],
     _Dv_=[1,caml_string_of_jsbytes("FAILWITH on empty stack")],
     _Dt_=[1,caml_string_of_jsbytes("error")],
     _Ds_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),510,11],
     _Dq_=[0,caml_string_of_jsbytes("storage")],
     _Dr_=[0,caml_string_of_jsbytes("parameter")],
     _Do_=[0,0,1],
     _Dm_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),454,32],
     _Dl_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),454,56],
     _Dn_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),452,8],
     _Dk_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),440,28],
     _Dj_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),440,52],
     _Dh_=[1,caml_string_of_jsbytes("error")],
     _Dg_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),427,59],
     _Di_=[0,0],
     _Df_=[0,0],
     _De_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _C9_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _C__=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _C$_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _Da_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _Db_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _Dc_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _Dd_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _C8_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _C1_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _C2_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _C3_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _C4_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _C5_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _C6_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _C7_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _C0_=[0,0],
     _CW_=[0,0],
     _CX_=[0,0],
     _CU_=[0,0],
     _CS_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),276,14],
     _CT_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),285,14],
     _CQ_=[0,0],
     _CR_=[0,0],
     _CP_=[0,caml_string_of_jsbytes("smartML/lib/michelson.ml"),261,13],
     _CI_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _CJ_=
      [0,
       [11,caml_string_of_jsbytes("Pair "),[2,0,[12,32,[2,0,0]]]],
       caml_string_of_jsbytes("Pair %s %s")],
     _CK_=
      [0,
       [11,caml_string_of_jsbytes("Left "),[2,0,0]],
       caml_string_of_jsbytes("Left %s")],
     _CL_=
      [0,
       [11,caml_string_of_jsbytes("Right "),[2,0,0]],
       caml_string_of_jsbytes("Right %s")],
     _CM_=
      [0,
       [11,caml_string_of_jsbytes("Some "),[2,0,0]],
       caml_string_of_jsbytes("Some %s")],
     _CN_=[0,[12,123,[2,0,[12,125,0]]],caml_string_of_jsbytes("{%s}")],
     _CO_=
      [0,
       [11,caml_string_of_jsbytes("Elt "),[2,0,[12,32,[2,0,0]]]],
       caml_string_of_jsbytes("Elt %s %s")],
     _CH_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _CF_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _CB_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _CC_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _CD_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _CE_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _CA_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Cw_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,caml_string_of_jsbytes("{ "),0]],
       caml_string_of_jsbytes("@[<2>{ ")],
     _Cx_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _Cy_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _Cz_=
      [0,
       [17,[0,caml_string_of_jsbytes("@ "),1,0],[12,125,[17,0,0]]],
       caml_string_of_jsbytes("@ }@]")],
     _Cv_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Cq_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _Cr_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _Cs_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Cp_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _Co_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _Ct_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _Ch_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _Ci_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _Cj_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Cd_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _Cc_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _Ce_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _BT_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Int"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Int@ ")],
     _BU_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _BV_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bool"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bool@ ")],
     _BW_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _BX_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _BY_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("String"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>String@ ")],
     _BZ_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _B0_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _B1_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Bytes"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Bytes@ ")],
     _B2_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _B3_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _B4_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Pair ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Pair (@,")],
     _B5_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _B6_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _B7_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Left"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Left@ ")],
     _B8_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _B9_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Right"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Right@ ")],
     _B__=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _B$_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Some_"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Some_@ ")],
     _Ca_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Cb_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Seq"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Seq@ ")],
     _Cf_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Cg_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Elt"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Elt@ ")],
     _Ck_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Cl_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Instr"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Instr@ ")],
     _Cm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Cn_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("AnyMap"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>AnyMap@ ")],
     _Cu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _BS_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _BI_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _BG_=
      [0,
       [12,40,[18,[1,[0,0,caml_string_of_jsbytes("")]],0]],
       caml_string_of_jsbytes("(@[")],
     _BH_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _BJ_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Bx_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _Bw_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _By_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _Bs_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _Br_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _Bt_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _Bj_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _Bk_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     _Bi_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _Bl_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _Be_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _Bd_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _Bf_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _At_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _Au_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _As_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _Av_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _Ae_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MI0"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MI0@ ")],
     _Af_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Ag_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MI1"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MI1@ ")],
     _Ah_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Ai_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MI1_fail"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MI1_fail@ ")],
     _Aj_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Ak_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MI2"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MI2@ ")],
     _Al_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Am_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MI3"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MI3@ ")],
     _An_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Ao_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIerror"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIerror@ ")],
     _Ap_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _Aq_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Ar_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIcomment"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIcomment@ ")],
     _Aw_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Ax_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MImich"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MImich@ ")],
     _Ay_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Az_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIdip"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIdip@ ")],
     _AA_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _AB_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIdipn ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIdipn (@,")],
     _AC_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _AD_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _AE_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _AF_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIloop"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIloop@ ")],
     _AG_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _AH_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIloop_left"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIloop_left@ ")],
     _AI_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _AJ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIiter"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIiter@ ")],
     _AK_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _AL_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MImap"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MImap@ ")],
     _AM_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _AN_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIdropn"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIdropn@ ")],
     _AO_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _AP_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _AQ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIdup"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIdup@ ")],
     _AR_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _AS_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _AT_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIdig"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIdig@ ")],
     _AU_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _AV_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _AW_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIdug"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIdug@ ")],
     _AX_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _AY_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _AZ_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIif ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIif (@,")],
     _A0_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _A1_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _A2_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIif_left ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIif_left (@,")],
     _A3_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _A4_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _A5_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIif_none ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIif_none (@,")],
     _A6_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _A7_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _A8_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIif_cons ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIif_cons (@,")],
     _A9_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _A__=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _A$_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIpush ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIpush (@,")],
     _Ba_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _Bb_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _Bc_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIseq"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIseq@ ")],
     _Bg_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Bh_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIunpair"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIunpair@ ")],
     _Bm_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Bn_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIpairn"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIpairn@ ")],
     _Bo_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _Bp_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Bq_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIfield"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIfield@ ")],
     _Bu_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Bv_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIsetField"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIsetField@ ")],
     _Bz_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _BA_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("MIlambda ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>MIlambda (@,")],
     _BB_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _BC_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     _BD_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     _BE_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("MIcreate_contract {"),
         [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("@[<2>MIcreate_contract {@,")],
     _BF_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _BK_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _BL_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _BM_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _BN_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _BO_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _BP_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ="),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("@[%s =@ ")],
     _BQ_=[0,[17,0,0],caml_string_of_jsbytes("@]")],
     _BR_=[0,[17,0,[12,125,0]],caml_string_of_jsbytes("@]}")],
     _Ad_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Aa_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _z$_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _Ab_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _z__=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Stack_ok"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Stack_ok@ ")],
     _Ac_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _z9_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _CY_=[0,1000],
     _Dw_=[0,[0,1,0]],
     _Dz_=[0,[0,1,0]],
     _DA_=[0,2,1],
     _DB_=[0,1,2],
     _DC_=[0,1,1],
     _DD_=[0,2,1],
     _DE_=[0,1,1],
     _DT_=[0,2,2],
     _DV_=[0,1,0],
     _Ea_=[0,2,1],
     _Eb_=[0,2,1],
     _Ee_=[0,1,1],
     _Ef_=[0,0],
     _Eg_=[0,1,1],
     _Eh_=[0,1,1],
     _Ei_=[0,2,1],
     _Ej_=[0,2,1],
     _Ek_=[0,0],
     _El_=[0,2,1],
     _Em_=[0,2,1],
     _En_=[0,0],
     _Eo_=[0,2,1],
     _Ep_=[0,2,1],
     _Eq_=[0,0],
     _Es_=[0,[0,0,1]],
     _Et_=[0,1,1],
     _EA_=[0,3,1],
     _EB_=[0,3,2],
     _EC_=[0,2,1],
     _ED_=[0,2,1],
     _EE_=[0,2,1],
     _EI_=[0,3,1],
     _EJ_=[0,1,1],
     _EK_=[0,2,1],
     _EL_=[0,caml_string_of_jsbytes("level")],
     _EM_=[0,1,1],
     _EN_=[0,2,1],
     _EO_=[0,1,1],
     _EQ_=[0,3,1],
     _ER_=[0,1,1],
     _EU_=[0,[0,0,1]],
     _EV_=[0,1,1],
     _EW_=[0,1,1],
     _EX_=[0,1,1],
     _EZ_=[0,[0,3,2]],
     _Px_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),2197,10],
     _Jx_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _Jy_=
      [0,
       [12,34,[2,0,[11,caml_string_of_jsbytes(" as "),[2,0,[12,34,0]]]]],
       caml_string_of_jsbytes('"%s as %s"')],
     _Jz_=
      [0,
       [12,40,[2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(%s, %s)")],
     _KM_=[0,[2,0,[12,32,[2,0,0]]],caml_string_of_jsbytes("%s %s")],
     _KK_=
      [0,
       [12,35,[4,0,0,0,[11,caml_string_of_jsbytes(" = "),[2,0,0]]]],
       caml_string_of_jsbytes("#%d = %s")],
     _KF_=[0,[12,32,[2,0,0]],caml_string_of_jsbytes(" %s")],
     _KG_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("<span class='variant'>| "),
         [2,0,[11,caml_string_of_jsbytes("<\/span>"),[2,0,0]]]]],
       caml_string_of_jsbytes("%s<span class='variant'>| %s<\/span>%s")],
     _KB_=
      [0,
       [11,
        caml_string_of_jsbytes("<br>"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("<span class='record'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/span>: "),[2,0,[12,59,0]]]]]]],
       caml_string_of_jsbytes("<br>%s<span class='record'>%s<\/span>: %s;")],
     _Kq_=[0,[2,0,[12,40,[2,0,[12,41,0]]]],caml_string_of_jsbytes("%s(%s)")],
     _Kr_=[0,[2,0,[12,32,[2,0,0]]],caml_string_of_jsbytes("%s %s")],
     _Ks_=[0,[2,0,[12,60,[2,0,[12,62,0]]]],caml_string_of_jsbytes("%s<%s>")],
     _Ko_=[0,0],
     _Kp_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _Ku_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),549,8],
     _Kv_=
      [0,
       [11,caml_string_of_jsbytes("sp.TSet("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.TSet(%s)")],
     _Kw_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),462,17],
     _Kx_=
      [0,
       [2,0,[12,40,[2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("%s(%s, %s)")],
     _Ky_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.TLambda("),
        [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("sp.TLambda(%s, %s)")],
     _Kz_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),558,40],
     _KA_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.TBounded(["),
        [2,0,[11,caml_string_of_jsbytes("], t="),[2,0,[2,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("sp.TBounded([%s], t=%s%s)")],
     _KC_=[0,0],
     _KD_=
      [0,
       [2,
        0,
        [2,
         0,
         [11,
          caml_string_of_jsbytes("<span class='record'>{<\/span>"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("<br>"),
            [2,
             0,
             [11,
              caml_string_of_jsbytes("<span class='record'>}"),
              [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]]]]]]]],
       caml_string_of_jsbytes
        ("%s%s<span class='record'>{<\/span>%s<br>%s<span class='record'>}%s<\/span>")],
     _KE_=
      [0,
       [11,caml_string_of_jsbytes("sp.TRecord("),[2,0,[2,0,[12,41,[2,0,0]]]]],
       caml_string_of_jsbytes("sp.TRecord(%s%s)%s")],
     _KH_=[0,0],
     _KI_=
      [0,
       [11,caml_string_of_jsbytes("sp.TVariant("),[2,0,[12,41,[2,0,0]]]],
       caml_string_of_jsbytes("sp.TVariant(%s)%s")],
     _KJ_=
      [0,
       [11,caml_string_of_jsbytes("TRecord++("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("TRecord++(%s)")],
     _KL_=
      [0,
       [11,caml_string_of_jsbytes("TTuple++("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("TTuple++(%s)")],
     _KN_=
      [0,
       [11,caml_string_of_jsbytes("TVariant++("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("TVariant++(%s)")],
     _KP_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.TPair("),
        [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("sp.TPair(%s, %s)")],
     _KQ_=
      [0,
       [12,40,[2,0,[11,caml_string_of_jsbytes(" * "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(%s * %s)")],
     _KR_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.TTuple<"),
        [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,62,0]]]]],
       caml_string_of_jsbytes("sp.TTuple<%s, %s>")],
     _KO_=
      [0,
       [11,caml_string_of_jsbytes("sp.TTuple("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.TTuple(%s)")],
     _Kt_=
      [0,
       [11,caml_string_of_jsbytes("sp.TUnknown()"),0],
       caml_string_of_jsbytes("sp.TUnknown()")],
     _KS_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" = "),[2,0,0]]],
       caml_string_of_jsbytes("%s = %s")],
     _Lp_=[0,1],
     _Lo_=[0,1],
     _Lm_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" : "),[2,0,0]]],
       caml_string_of_jsbytes("%s : %s")],
     _Lj_=[0,1],
     _Ll_=[0,1],
     _Li_=[0,1],
     _Le_=[0,1],
     _Lf_=[0,1],
     _K9_=[0,1],
     _K__=[0,1],
     _K$_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),708,27],
     _Lb_=[0,1],
     _K2_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" = "),[2,0,0]]],
       caml_string_of_jsbytes("%s = %s")],
     _K0_=[0,1],
     _KZ_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.contract("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(").open_some()"),0]]]]],
       caml_string_of_jsbytes("sp.contract(%s, %s).open_some()")],
     _K1_=
      [0,
       [0,
        [11,caml_string_of_jsbytes("sp.record("),[2,0,[12,41,0]]],
        caml_string_of_jsbytes("sp.record(%s)")],
       caml_string_of_jsbytes(", ")],
     _K3_=
      [0,
       [0,[12,123,[2,0,[12,125,0]]],caml_string_of_jsbytes("{%s}")],
       caml_string_of_jsbytes("; ")],
     _K4_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),660,25],
     _K5_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<div class='subtype'><select class='selection'><option value='"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("'>"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("<\/option><\/select>"),
            [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]]]],
       caml_string_of_jsbytes
        ("<div class='subtype'><select class='selection'><option value='%s'>%s<\/option><\/select>%s<\/div>")],
     _K7_=
      [0,
       [11,caml_string_of_jsbytes("sp.some("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.some(%s)")],
     _K6_=[0,[2,0,[12,40,[2,0,[12,41,0]]]],caml_string_of_jsbytes("%s(%s)")],
     _Lc_=[0,[12,91,[2,0,[12,93,0]]],caml_string_of_jsbytes("[%s]")],
     _Ld_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.list(["),
        [2,0,[11,caml_string_of_jsbytes("])"),0]]],
       caml_string_of_jsbytes("sp.list([%s])")],
     _K8_=[0,caml_string_of_jsbytes(""),0],
     _La_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.list(["),
        [2,0,[11,caml_string_of_jsbytes("])"),0]]],
       caml_string_of_jsbytes("sp.list([%s])")],
     _Lg_=[0,caml_string_of_jsbytes(""),0],
     _Lh_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.set(["),
        [2,0,[11,caml_string_of_jsbytes("])"),0]]],
       caml_string_of_jsbytes("sp.set([%s])")],
     _Lk_=
      [0,caml_string_of_jsbytes("Key"),[0,caml_string_of_jsbytes("Value"),0]],
     _Ln_=[0,[12,123,[2,0,[12,125,0]]],caml_string_of_jsbytes("{%s}")],
     _Lq_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _Lr_=
      [0,
       [11,caml_string_of_jsbytes("lambda("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("lambda(%s)")],
     _Ls_=[0,1],
     _Lt_=[0,1],
     _Lu_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='address'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='address'>%s<\/span>")],
     _Lv_=
      [0,
       caml_string_of_jsbytes("Ticketer"),
       [0,
        caml_string_of_jsbytes("Content"),
        [0,caml_string_of_jsbytes("Amount"),0]]],
     _Lw_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.ticket(sp.address('"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("'), "),
          [2,0,[11,caml_string_of_jsbytes(", "),[15,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.ticket(sp.address('%s'), %s, %a)")],
     _Lx_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='operation'>Transfer "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" to "),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("<br>"),
            [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]]]],
       caml_string_of_jsbytes
        ("<div class='operation'>Transfer %s to %s<br>%s<\/div>")],
     _Ly_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='operation'>Set Delegate("),
        [2,0,[11,caml_string_of_jsbytes(")<\/div>"),0]]],
       caml_string_of_jsbytes
        ("<div class='operation'>Set Delegate(%s)<\/div>")],
     _Lz_=
      [0,
       [11,caml_string_of_jsbytes("sp.some("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.some(%s)")],
     _LA_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<div class='operation'>Create Contract(address: "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", baker: "),
          [2,0,[12,41,[2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]]]],
       caml_string_of_jsbytes
        ("<div class='operation'>Create Contract(address: %s, baker: %s)%s<\/div>")],
     _LB_=
      [0,
       [11,
        caml_string_of_jsbytes("Transfer\n     params: "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("\n     amount: "),
          [2,0,[11,caml_string_of_jsbytes("\n     to:     "),[2,0,0]]]]]],
       caml_string_of_jsbytes
        ("Transfer\n     params: %s\n     amount: %s\n     to:     %s")],
     _LC_=
      [0,
       [11,caml_string_of_jsbytes("Set Delegate("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("Set Delegate(%s)")],
     _LD_=
      [0,
       [11,caml_string_of_jsbytes("sp.some("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.some(%s)")],
     _LE_=
      [0,
       [11,
        caml_string_of_jsbytes("Create Contract(address: "),
        [2,0,[11,caml_string_of_jsbytes(", baker: "),[2,0,[12,41,[2,0,0]]]]]],
       caml_string_of_jsbytes("Create Contract(address: %s, baker: %s)%s")],
     _NE_=
      [0,
       [11,
        caml_string_of_jsbytes('("'),
        [2,0,[11,caml_string_of_jsbytes('", '),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes('("%s", %s)')],
     _Nz_=
      [0,
       [11,caml_string_of_jsbytes(", entry_point='"),[2,0,[12,39,0]]],
       caml_string_of_jsbytes(", entry_point='%s'")],
     _Nn_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" : "),[2,0,0]]],
       caml_string_of_jsbytes("%s : %s")],
     _Nj_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" = "),[2,0,0]]],
       caml_string_of_jsbytes("%s = %s")],
     _L7_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.check_signature("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.check_signature(%s, %s, %s)")],
     _L6_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1022,25],
     _L4_=[0,0],
     _L5_=[0,[2,0,[12,32,[2,0,0]]],caml_string_of_jsbytes("%s %s")],
     _L2_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.self_entry_point('"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.self_entry_point('%s')")],
     _L3_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.sapling_empty_state("),
        [4,3,0,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.sapling_empty_state(%i)")],
     _L0_=[0,0],
     _L1_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1002,19],
     _LZ_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),996,19],
     _LY_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),990,19],
     _LV_=[0,[2,0,[12,40,[2,0,[12,41,0]]]],caml_string_of_jsbytes("%s(%s)")],
     _LW_=[0,[2,0,[12,32,[2,0,0]]],caml_string_of_jsbytes("%s %s")],
     _LX_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),984,19],
     _LU_=[0,[2,0,[12,46,[2,0,0]]],caml_string_of_jsbytes("%s.%s")],
     _LT_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]]]],
       caml_string_of_jsbytes("<span class='%s'>%s<\/span>")],
     _LR_=[0,0],
     _LS_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _L8_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1050,24],
     _L__=[0,0],
     _Ma_=
      [0,
       [11,caml_string_of_jsbytes("params"),0],
       caml_string_of_jsbytes("params")],
     _L$_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".value"),0]],
       caml_string_of_jsbytes("%s.value")],
     _Mb_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _Mc_=
      [0,
       [11,caml_string_of_jsbytes("self."),[2,0,0]],
       caml_string_of_jsbytes("self.%s")],
     _Md_=
      [0,
       [11,caml_string_of_jsbytes("sp.test_account("),[3,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.test_account(%S)")],
     _Me_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.address('"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.address('%s')")],
     _Mf_=
      [0,
       [11,caml_string_of_jsbytes("sp.contract_balance("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.contract_balance(%s)")],
     _Mg_=
      [0,
       [11,caml_string_of_jsbytes("sp.contract_baker("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.contract_baker(%s)")],
     _Mh_=
      [0,
       [11,caml_string_of_jsbytes("sp.contract_data("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.contract_data(%s)")],
     _Mi_=
      [0,
       [11,caml_string_of_jsbytes("sp.contract_typed("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.contract_typed(%s)")],
     _Mj_=
      [0,
       [11,caml_string_of_jsbytes("sp.scenario_var("),[4,0,0,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.scenario_var(%d)")],
     _L9_=[0,0],
     _Mk_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.self_entry_point_address('"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.self_entry_point_address('%s')")],
     _Ml_=[0,0],
     _Mm_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".rev()"),0]],
       caml_string_of_jsbytes("%s.rev()")],
     _Mn_=[0,0],
     _Mo_=
      [0,
       [11,caml_string_of_jsbytes("- "),[2,0,0]],
       caml_string_of_jsbytes("- %s")],
     _Mp_=
      [0,[2,0,[12,91,[4,0,0,0,[12,93,0]]]],caml_string_of_jsbytes("%s[%d]")],
     _Mq_=[0,0],
     _Mr_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".rev_elements()"),0]],
       caml_string_of_jsbytes("%s.rev_elements()")],
     _Ms_=[0,0],
     _Mt_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".elements()"),0]],
       caml_string_of_jsbytes("%s.elements()")],
     _Mu_=[0,0],
     _Mv_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".rev_items()"),0]],
       caml_string_of_jsbytes("%s.rev_items()")],
     _Mw_=[0,0],
     _Mx_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".items()"),0]],
       caml_string_of_jsbytes("%s.items()")],
     _My_=[0,0],
     _Mz_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".rev_keys()"),0]],
       caml_string_of_jsbytes("%s.rev_keys()")],
     _MA_=[0,0],
     _MB_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".keys()"),0]],
       caml_string_of_jsbytes("%s.keys()")],
     _MC_=[0,0],
     _MD_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".rev_values()"),0]],
       caml_string_of_jsbytes("%s.rev_values()")],
     _ME_=[0,0],
     _MF_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".values()"),0]],
       caml_string_of_jsbytes("%s.values()")],
     _MG_=[0,0],
     _MH_=
      [0,
       [12,40,[2,0,[11,caml_string_of_jsbytes(" : "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(%s : %s)")],
     _MI_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1143,25],
     _MJ_=[0,0],
     _MK_=[0,[2,0,[12,46,[2,0,0]]],caml_string_of_jsbytes("%s.%s")],
     _ML_=
      [0,
       [11,
        caml_string_of_jsbytes("variant('"),
        [2,0,[11,caml_string_of_jsbytes("', "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("variant('%s', %s)")],
     _MN_=[0,0],
     _MO_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".is_some()"),0]],
       caml_string_of_jsbytes("%s.is_some()")],
     _MM_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(".is_variant('"),
         [2,0,[11,caml_string_of_jsbytes("')"),0]]]],
       caml_string_of_jsbytes("%s.is_variant('%s')")],
     _MP_=[0,0],
     _MQ_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".get_opt("),[2,0,[12,41,0]]]],
       caml_string_of_jsbytes("%s.get_opt(%s)")],
     _MR_=[0,0],
     _MS_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".contains("),[2,0,[12,41,0]]]],
       caml_string_of_jsbytes("%s.contains(%s)")],
     _MT_=[0,0],
     _MU_=[0,[2,0,[12,40,[2,0,[12,41,0]]]],caml_string_of_jsbytes("%s(%s)")],
     _MV_=[0,0],
     _MW_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".apply("),[2,0,[12,41,0]]]],
       caml_string_of_jsbytes("%s.apply(%s)")],
     _MX_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.cons("),
        [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("sp.cons(%s, %s)")],
     _MZ_=
      [0,
       [11,caml_string_of_jsbytes("sp.tez("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.tez(%s)")],
     _M0_=
      [0,
       [11,caml_string_of_jsbytes("sp.mutez("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.mutez(%s)")],
     _MY_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.split_tokens("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.split_tokens(%s, %s, %s)")],
     _M2_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.range("),
        [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("sp.range(%s, %s)")],
     _M1_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.range("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.range(%s, %s, %s)")],
     _M3_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.update_map("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.update_map(%s, %s, %s)")],
     _M4_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.get_and_update("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.get_and_update(%s, %s, %s)")],
     _M5_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.eif("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.eif(%s, %s, %s)")],
     _M6_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.test_ticket("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.test_ticket(%s, %s, %s)")],
     _M7_=
      [0,
       [11,caml_string_of_jsbytes("message = "),[2,0,0]],
       caml_string_of_jsbytes("message = %s")],
     _Na_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.as_nat("),
        [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("sp.as_nat(%s, %s)")],
     _M__=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".open_some("),[2,0,[12,41,0]]]],
       caml_string_of_jsbytes("%s.open_some(%s)")],
     _M$_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".open_some()"),0]],
       caml_string_of_jsbytes("%s.open_some()")],
     _M8_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(".open_variant('"),
         [2,0,[11,caml_string_of_jsbytes("', "),[2,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("%s.open_variant('%s', %s)")],
     _M9_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(".open_variant('"),
         [2,0,[11,caml_string_of_jsbytes("')"),0]]]],
       caml_string_of_jsbytes("%s.open_variant('%s')")],
     _Nb_=[0,0],
     _Nc_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(".get("),
         [2,
          0,
          [11,caml_string_of_jsbytes(", default_value = "),[2,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("%s.get(%s, default_value = %s)")],
     _Nd_=[0,0],
     _Ne_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(".get("),
         [2,0,[11,caml_string_of_jsbytes(", message = "),[2,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("%s.get(%s, message = %s)")],
     _Nf_=[0,0],
     _Ng_=[0,[2,0,[12,91,[2,0,[12,93,0]]]],caml_string_of_jsbytes("%s[%s]")],
     _Nh_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _Ni_=
      [0,
       [0,
        [11,caml_string_of_jsbytes("sp.record("),[2,0,[12,41,0]]],
        caml_string_of_jsbytes("sp.record(%s)")],
       caml_string_of_jsbytes(", ")],
     _Nk_=
      [0,
       [0,[12,123,[2,0,[12,125,0]]],caml_string_of_jsbytes("{%s}")],
       caml_string_of_jsbytes("; ")],
     _Nl_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1319,23],
     _Nm_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.list(["),
        [2,0,[11,caml_string_of_jsbytes("])"),0]]],
       caml_string_of_jsbytes("sp.list([%s])")],
     _No_=[0,[12,123,[2,0,[12,125,0]]],caml_string_of_jsbytes("{%s}")],
     _Np_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.set(["),
        [2,0,[11,caml_string_of_jsbytes("])"),0]]],
       caml_string_of_jsbytes("sp.set([%s])")],
     _Nq_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.sapling_verify_update("),
        [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("sp.sapling_verify_update(%s, %s)")],
     _Nr_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.michelson("),
        [3,0,[11,caml_string_of_jsbytes(")("),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("sp.michelson(%S)(%s)")],
     _Ns_=[0,0],
     _Nt_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(".map("),[2,0,[12,41,0]]]],
       caml_string_of_jsbytes("%s.map(%s)")],
     _Nu_=
      [0,
       [11,caml_string_of_jsbytes("sp.build_lambda(f"),[4,0,0,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.build_lambda(f%d)")],
     _Nw_=
      [0,
       [11,caml_string_of_jsbytes("sp.lambda_michelson("),[3,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.lambda_michelson(%S)")],
     _Nv_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.build_lambda(lambda lparams_"),
        [4,3,0,0,[11,caml_string_of_jsbytes(": "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("sp.build_lambda(lambda lparams_%i: %s)")],
     _Nx_=
      [0,
       [11,caml_string_of_jsbytes("lparams_"),[4,3,0,0,0]],
       caml_string_of_jsbytes("lparams_%i")],
     _Ny_=
      [0,
       [11,caml_string_of_jsbytes("create contract ..."),0],
       caml_string_of_jsbytes("create contract ...")],
     _NA_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.contract("),
        [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[2,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("sp.contract(%s, %s%s)")],
     _NB_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.slice("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.slice(%s, %s, %s)")],
     _NC_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.make_signature(secret_key = "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", message = "),
          [2,
           0,
           [11,caml_string_of_jsbytes(", message_format = "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes
        ("sp.make_signature(secret_key = %s, message = %s, message_format = %s)")],
     _ND_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.transfer_operation("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.transfer_operation(%s, %s, %s)")],
     _NF_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.ematch("),
        [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("sp.ematch(%s, %s)")],
     _NG_=
      [0,
       [11,caml_string_of_jsbytes("sp.has_entry_point("),[3,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.has_entry_point(%S)")],
     _NH_=[0,0],
     _NI_=[0,0],
     _NJ_=
      [0,
       [2,0,[12,32,[2,0,[12,32,[2,0,0]]]]],
       caml_string_of_jsbytes("%s %s %s")],
     _NZ_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with arg.match('"),
         [2,
          0,
          [11,
           caml_string_of_jsbytes("') as "),
           [2,0,[11,caml_string_of_jsbytes(":\n"),[15,[12,10,0]]]]]]]],
       caml_string_of_jsbytes("%swith arg.match('%s') as %s:\n%a\n")],
     _NW_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with arg.match('"),
         [2,
          0,
          [11,
           caml_string_of_jsbytes("') as "),
           [2,
            0,
            [11,
             caml_string_of_jsbytes(":<br>"),
             [15,[11,caml_string_of_jsbytes("<br>"),0]]]]]]]],
       caml_string_of_jsbytes("%swith arg.match('%s') as %s:<br>%a<br>")],
     _NQ_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("sp."),[2,0,[12,40,[2,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("%ssp.%s(%s)")],
     _NR_=[0,[2,0,[2,0,[2,0,0]]],caml_string_of_jsbytes("%s%s%s")],
     _NS_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1427,21],
     _NO_=[0,0],
     _NP_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1417,21],
     _NT_=
      [0,
       [0,
        [2,0,[11,caml_string_of_jsbytes("sp.if "),[2,0,[12,58,[2,0,[15,0]]]]]],
        caml_string_of_jsbytes("%ssp.if %s:%s%a")],
       [0,
        [2,0,[2,0,[11,caml_string_of_jsbytes("sp.else:"),[2,0,[15,0]]]]],
        caml_string_of_jsbytes("%s%ssp.else:%s%a")]],
     _NU_=
      [0,
       [0,
        [2,
         0,
         [11,
          caml_string_of_jsbytes("if "),
          [2,0,[11,caml_string_of_jsbytes(" then"),[2,0,[15,0]]]]]],
        caml_string_of_jsbytes("%sif %s then%s%a")],
       [0,
        [2,0,[2,0,[11,caml_string_of_jsbytes("else"),[2,0,[15,0]]]]],
        caml_string_of_jsbytes("%s%selse%s%a")]],
     _NV_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1440,25],
     _N2_=[0,0],
     _N3_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with "),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(".match('"),
           [2,
            0,
            [11,
             caml_string_of_jsbytes("') as "),
             [2,0,[11,caml_string_of_jsbytes(":<br>"),[15,0]]]]]]]]],
       caml_string_of_jsbytes("%swith %s.match('%s') as %s:<br>%a")],
     _N4_=[0,0],
     _N5_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with "),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(".match('"),
           [2,
            0,
            [11,
             caml_string_of_jsbytes("') as "),
             [2,0,[11,caml_string_of_jsbytes(":\n"),[15,0]]]]]]]]],
       caml_string_of_jsbytes("%swith %s.match('%s') as %s:\n%a")],
     _NX_=[0,0],
     _NY_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with "),
         [2,
          0,
          [11,caml_string_of_jsbytes(".match_cases() as arg:<br>"),[15,0]]]]],
       caml_string_of_jsbytes("%swith %s.match_cases() as arg:<br>%a")],
     _N0_=[0,0],
     _N1_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with "),
         [2,0,[11,caml_string_of_jsbytes(".match_cases() as arg:\n"),[15,0]]]]],
       caml_string_of_jsbytes("%swith %s.match_cases() as arg:\n%a")],
     _N6_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1519,50],
     _N7_=
      [0,
       [2,
        0,
        [15,
         [11,
          caml_string_of_jsbytes(" = sp.match_tuple("),
          [2,0,[11,caml_string_of_jsbytes(", "),[15,[12,41,[2,0,[15,0]]]]]]]]],
       caml_string_of_jsbytes("%s%a = sp.match_tuple(%s, %a)%s%a")],
     _N8_=
      [0,
       [2,
        0,
        [15,
         [11,
          caml_string_of_jsbytes(" = sp.match_record("),
          [2,0,[11,caml_string_of_jsbytes(", "),[15,[12,41,[2,0,[15,0]]]]]]]]],
       caml_string_of_jsbytes("%s%a = sp.match_record(%s, %a)%s%a")],
     _N9_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with sp.modify("),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(", "),
           [3,
            0,
            [11,caml_string_of_jsbytes(") as "),[3,0,[12,58,[2,0,[15,0]]]]]]]]]],
       caml_string_of_jsbytes("%swith sp.modify(%s, %S) as %S:%s%a")],
     _N__=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with sp.match_tuple("),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(", "),
           [15,[11,caml_string_of_jsbytes(") as "),[15,[12,58,[2,0,[15,0]]]]]]]]]],
       caml_string_of_jsbytes("%swith sp.match_tuple(%s, %a) as %a:%s%a")],
     _N$_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with sp.match_record("),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(", "),
           [3,
            0,
            [11,caml_string_of_jsbytes(") as "),[2,0,[12,58,[2,0,[15,0]]]]]]]]]],
       caml_string_of_jsbytes("%swith sp.match_record(%s, %S) as %s:%s%a")],
     _Oa_=[0,0],
     _Ob_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with sp.match_cons("),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(") as "),
           [2,0,[12,58,[2,0,[15,[2,0,[2,0,partial]]]]]]]]]],
       caml_string_of_jsbytes
        ("%swith sp.match_cons(%s) as %s:%s%a%s%selse:%s%a")],
     _Od_=
      [0,
       [2,
        0,
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" = sp.local("),
          [3,
           0,
           [11,
            caml_string_of_jsbytes(", "),
            [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]]]],
       caml_string_of_jsbytes("%s%s = sp.local(%S, %s, %s)")],
     _Oc_=
      [0,
       [2,
        0,
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" = sp.local("),
          [3,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("%s%s = sp.local(%S, %s)")],
     _Oh_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("sp.set_delegate("),[2,0,[12,41,0]]]],
       caml_string_of_jsbytes("%ssp.set_delegate(%s)")],
     _Oj_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("sp.send("),
         [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("%ssp.send(%s, %s)")],
     _Oi_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("sp.transfer("),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(", "),
           [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]]],
       caml_string_of_jsbytes("%ssp.transfer(%s, %s, %s)")],
     _Og_=
      [0,
       [2,0,[2,0,[11,caml_string_of_jsbytes(".push("),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("%s%s.push(%s)")],
     _Ok_=
      [0,
       [2,0,[2,0,[12,32,[2,0,[11,caml_string_of_jsbytes("= "),[2,0,0]]]]]],
       caml_string_of_jsbytes("%s%s %s= %s")],
     _Of_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1737,27],
     _Oe_=
      [0,
       [2,0,[2,0,[12,32,[2,0,[12,32,[2,0,0]]]]]],
       caml_string_of_jsbytes("%s%s %s %s")],
     _Ol_=
      [0,
       [2,0,[2,0,[12,32,[2,0,[12,91,[2,0,[12,93,0]]]]]]],
       caml_string_of_jsbytes("%s%s %s[%s]")],
     _Om_=
      [0,
       [2,0,[2,0,[12,46,[2,0,[12,40,[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("%s%s.%s(%s)")],
     _On_=
      [0,
       [2,
        0,
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" = sp.bind_block("),
          [3,0,[11,caml_string_of_jsbytes("):"),[2,0,0]]]]]],
       caml_string_of_jsbytes("%s%s = sp.bind_block(%S):%s")],
     _Oo_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("with "),[2,0,[12,58,[2,0,0]]]]],
       caml_string_of_jsbytes("%swith %s:%s")],
     _Op_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _Oq_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("let "),
         [2,0,[11,caml_string_of_jsbytes(" ="),[2,0,0]]]]],
       caml_string_of_jsbytes("%slet %s =%s")],
     _Or_=
      [0,
       [2,0,[2,0,[11,caml_string_of_jsbytes("in"),[2,0,0]]]],
       caml_string_of_jsbytes("%s%sin%s")],
     _Os_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1612,23],
     _Ot_=
      [0,
       [2,
        0,
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" = sp.local("),
          [3,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,[2,0,0]]]]]]]],
       caml_string_of_jsbytes("%s%s = sp.local(%S, %s)%s")],
     _Ou_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("let"),
         [12,
          37,
          [11,
           caml_string_of_jsbytes("var "),
           [2,
            0,
            [11,
             caml_string_of_jsbytes(" = "),
             [2,0,[11,caml_string_of_jsbytes(" in"),[2,0,0]]]]]]]]],
       caml_string_of_jsbytes("%slet%%var %s = %s in%s")],
     _Ov_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1596,23],
     _Ox_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1570,25],
     _Ow_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")],
     _Oy_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("sp.for "),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(" in "),
           [2,0,[11,caml_string_of_jsbytes(":\n<br>"),[15,0]]]]]]],
       caml_string_of_jsbytes("%ssp.for %s in %s:\n<br>%a")],
     _Oz_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("sp.for "),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(" in "),
           [2,0,[11,caml_string_of_jsbytes(":\n"),[15,0]]]]]]],
       caml_string_of_jsbytes("%ssp.for %s in %s:\n%a")],
     _OA_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("sp.while "),
         [2,0,[11,caml_string_of_jsbytes(":\n<br>"),[15,0]]]]],
       caml_string_of_jsbytes("%ssp.while %s:\n<br>%a")],
     _OB_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("sp.while "),
         [2,0,[11,caml_string_of_jsbytes(":\n"),[15,0]]]]],
       caml_string_of_jsbytes("%ssp.while %s:\n%a")],
     _OF_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("pass"),0]],
       caml_string_of_jsbytes("%spass")],
     _OG_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1619,23],
     _OC_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("sp.result("),[2,0,[12,41,0]]]],
       caml_string_of_jsbytes("%ssp.result(%s)")],
     _OD_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")],
     _OE_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1626,23],
     _OH_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("# "),[2,0,0]]],
       caml_string_of_jsbytes("%s# %s")],
     _OI_=[0,0],
     _OJ_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("set_type ("),
         [2,0,[11,caml_string_of_jsbytes(" : "),[2,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("%sset_type (%s : %s)")],
     _OK_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1777,23],
     _OL_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with sp.set_result_type("),
         [2,0,[11,caml_string_of_jsbytes("):\n<br>"),0]]]],
       caml_string_of_jsbytes("%swith sp.set_result_type(%s):\n<br>")],
     _OM_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("with sp.set_entry_point("),
         [3,
          0,
          [11,
           caml_string_of_jsbytes(", "),
           [2,0,[11,caml_string_of_jsbytes("):\n<br>"),0]]]]]],
       caml_string_of_jsbytes("%swith sp.set_entry_point(%S, %s):\n<br>")],
     _NN_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("def "),
         [2,
          0,
          [12,40,[2,0,[11,caml_string_of_jsbytes("):"),[2,0,[15,[2,0,0]]]]]]]]],
       caml_string_of_jsbytes("%sdef %s(%s):%s%a%s")],
     _Ps_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='error'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes("<div class='error'>%s<\/div>")],
     _Pt_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _Pr_=
      [0,
       [11,caml_string_of_jsbytes("WrongCondition: "),[2,0,0]],
       caml_string_of_jsbytes("WrongCondition: %s")],
     _Pp_=[0,0],
     _Pq_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<button class='text-button' onClick='showLine("),
        [4,
         3,
         0,
         0,
         [11,
          caml_string_of_jsbytes(")'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/button>"),0]]]]],
       caml_string_of_jsbytes
        ("<button class='text-button' onClick='showLine(%i)'>%s<\/button>")],
     _Po_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),2135,22],
     _Pm_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<button class='text-button' onClick='showLine("),
        [4,
         3,
         0,
         0,
         [11,
          caml_string_of_jsbytes(")'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/button>"),0]]]]],
       caml_string_of_jsbytes
        ("<button class='text-button' onClick='showLine(%i)'>%s<\/button>")],
     _Pn_=[0,[12,40,[2,0,[12,41,[2,0,0]]]],caml_string_of_jsbytes("(%s)%s")],
     _Pj_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<button class='text-button' onClick='showLine("),
        [4,
         3,
         0,
         0,
         [11,
          caml_string_of_jsbytes(")'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/button>"),0]]]]],
       caml_string_of_jsbytes
        ("<button class='text-button' onClick='showLine(%i)'>%s<\/button>")],
     _Pk_=
      [0,
       [12,40,[2,0,[11,caml_string_of_jsbytes(" : "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(%s : %s)")],
     _Pl_=
      [0,
       [12,40,[2,0,[11,caml_string_of_jsbytes(" : "),[2,0,[12,41,[2,0,0]]]]]],
       caml_string_of_jsbytes("(%s : %s)%s")],
     _Ph_=
      [0,
       [11,caml_string_of_jsbytes("line "),[4,3,0,0,0]],
       caml_string_of_jsbytes("line %i")],
     _Pi_=
      [0,
       [11,caml_string_of_jsbytes(" ("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes(" (%s)")],
     _Pg_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='type'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='type'>%s<\/span>")],
     _Pf_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _OZ_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _OW_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _OU_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _OV_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='on'>"),
        [2,
         0,
         [2,
          0,
          [11,
           caml_string_of_jsbytes("<span class='keyword'>def<\/span> "),
           [2,
            0,
            [11,
             caml_string_of_jsbytes("(<span class='self'>self<\/span>"),
             [2,
              0,
              [11,
               caml_string_of_jsbytes
                (")<span class='keyword'>:<\/span><br><div class='indent5'>"),
               [15,[11,caml_string_of_jsbytes("<\/div><\/div>"),0]]]]]]]]]],
       caml_string_of_jsbytes
        ("<div class='on'>%s%s<span class='keyword'>def<\/span> %s(<span class='self'>self<\/span>%s)<span class='keyword'>:<\/span><br><div class='indent5'>%a<\/div><\/div>")],
     _OX_=
      [0,
       [2,
        0,
        [2,
         0,
         [11,
          caml_string_of_jsbytes("  def "),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("(self"),
            [2,0,[11,caml_string_of_jsbytes("):\n"),[15,0]]]]]]]],
       caml_string_of_jsbytes("%s%s  def %s(self%s):\n%a")],
     _OY_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='on'>let<span class='keyword'>"),
        [12,
         37,
         [11,
          caml_string_of_jsbytes("entry_point<\/span> "),
          [2,
           0,
           [11,
            caml_string_of_jsbytes(" <span class='self'>self<\/span>"),
            [2,
             0,
             [11,
              caml_string_of_jsbytes
               ("<span class='keyword'> =<\/span><br><div class='indent5'>"),
              [15,[11,caml_string_of_jsbytes("<\/div><\/div>"),0]]]]]]]]],
       caml_string_of_jsbytes
        ("<div class='on'>let<span class='keyword'>%%entry_point<\/span> %s <span class='self'>self<\/span>%s<span class='keyword'> =<\/span><br><div class='indent5'>%a<\/div><\/div>")],
     _O0_=
      [0,
       [11,
        caml_string_of_jsbytes("\n  let"),
        [12,
         37,
         [11,
          caml_string_of_jsbytes("entry_point "),
          [2,
           0,
           [11,
            caml_string_of_jsbytes(" self"),
            [2,0,[11,caml_string_of_jsbytes(" =\n"),[15,0]]]]]]]],
       caml_string_of_jsbytes("\n  let%%entry_point %s self%s =\n%a")],
     _O1_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),2003,21],
     _OP_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='indent5'>&nbsp;&nbsp;self.init("),
        [2,0,[11,caml_string_of_jsbytes(")<\/div>"),0]]],
       caml_string_of_jsbytes
        ("<div class='indent5'>&nbsp;&nbsp;self.init(%s)<\/div>")],
     _O$_=
      [0,
       [11,caml_string_of_jsbytes("\n    self.init("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("\n    self.init(%s)")],
     _Pa_=
      [0,
       [11,
        caml_string_of_jsbytes("<br>&nbsp;&nbsp;&nbsp;&nbsp;~storage:"),
        [2,0,0]],
       caml_string_of_jsbytes("<br>&nbsp;&nbsp;&nbsp;&nbsp;~storage:%s")],
     _Pd_=
      [0,
       [11,caml_string_of_jsbytes("\n      ~storage:"),[2,0,0]],
       caml_string_of_jsbytes("\n      ~storage:%s")],
     _Pb_=
      [0,
       [12,91,[12,37,[11,caml_string_of_jsbytes("expr "),[2,0,[12,93,0]]]]],
       caml_string_of_jsbytes("[%%expr %s]")],
     _Pc_=
      [0,
       [12,
        91,
        [12,
         37,
         [11,
          caml_string_of_jsbytes("expr"),
          [2,0,[12,123,[2,0,[11,caml_string_of_jsbytes("}]"),0]]]]]]],
       caml_string_of_jsbytes("[%%expr%s{%s}]")],
     _Pe_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1875,25],
     _OQ_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<div class='on'><span class='keyword'>def<\/span> __init__(self)<span class='keyword'>:<\/span><div class='indent5'>&nbsp;&nbsp;self.init_type("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(")<\/div>\n"),
          [2,0,[11,caml_string_of_jsbytes("<\/div><br>"),0]]]]],
       caml_string_of_jsbytes
        ("<div class='on'><span class='keyword'>def<\/span> __init__(self)<span class='keyword'>:<\/span><div class='indent5'>&nbsp;&nbsp;self.init_type(%s)<\/div>\n%s<\/div><br>")],
     _O7_=
      [0,
       [11,
        caml_string_of_jsbytes("  def __init__(self):\n    self.init_type("),
        [2,0,[12,41,[2,0,0]]]],
       caml_string_of_jsbytes
        ("  def __init__(self):\n    self.init_type(%s)%s")],
     _O8_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<div class='on'><span class='keyword'>let<\/span> init () <span class='keyword'>=<\/span><div class='indent5'>&nbsp;&nbsp;Basics.build_contract<br>&nbsp;&nbsp;&nbsp;&nbsp;~tstorage:"),
        [2,
         0,
         [2,
          0,
          [11,
           caml_string_of_jsbytes("\n<br>&nbsp;&nbsp;&nbsp;&nbsp;["),
           [2,0,[11,caml_string_of_jsbytes("]<\/div><\/div>"),0]]]]]],
       caml_string_of_jsbytes
        ("<div class='on'><span class='keyword'>let<\/span> init () <span class='keyword'>=<\/span><div class='indent5'>&nbsp;&nbsp;Basics.build_contract<br>&nbsp;&nbsp;&nbsp;&nbsp;~tstorage:%s%s\n<br>&nbsp;&nbsp;&nbsp;&nbsp;[%s]<\/div><\/div>")],
     _O9_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("  let init storage =\n    Basics.build_contract\n      ~tstorage:"),
        [2,0,[2,0,[11,caml_string_of_jsbytes("\n      ["),[2,0,[12,93,0]]]]]],
       caml_string_of_jsbytes
        ("  let init storage =\n    Basics.build_contract\n      ~tstorage:%s%s\n      [%s]")],
     _O__=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1911,19],
     _OR_=
      [0,
       [11,
        caml_string_of_jsbytes("<h3>New contract: "),
        [2,0,[11,caml_string_of_jsbytes("<\/h3>"),0]]],
       caml_string_of_jsbytes("<h3>New contract: %s<\/h3>")],
     _OS_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='contract'>"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("<h3>Balance: "),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("<\/h3>\n<h3>Storage:<\/h3>\n"),
            [2,0,[11,caml_string_of_jsbytes("\n<h3>Code:<\/h3>\n"),0]]]]]]],
       caml_string_of_jsbytes
        ("<div class='contract'>%s<h3>Balance: %s<\/h3>\n<h3>Storage:<\/h3>\n%s\n<h3>Code:<\/h3>\n")],
     _OT_=
      [0,
       [11,
        caml_string_of_jsbytes("import smartpy as sp"),
        [2,
         0,
         [2,
          0,
          [11,
           caml_string_of_jsbytes("class Contract(sp.Contract):"),
           [2,0,[2,0,0]]]]]],
       caml_string_of_jsbytes
        ("import smartpy as sp%s%sclass Contract(sp.Contract):%s%s")],
     _O5_=
      [0,
       [11,
        caml_string_of_jsbytes("open Smartml"),
        [2,0,[2,0,[11,caml_string_of_jsbytes("module Contract = struct"),0]]]],
       caml_string_of_jsbytes("open Smartml%s%smodule Contract = struct")],
     _O6_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),1948,19],
     _O3_=
      [0,
       [2,0,[12,10,[2,0,[2,0,[11,caml_string_of_jsbytes("end"),0]]]]],
       caml_string_of_jsbytes("%s\n%s%send")],
     _O4_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),2009,19],
     _O2_=
      [0,
       [11,caml_string_of_jsbytes("<\/div>"),0],
       caml_string_of_jsbytes("<\/div>")],
     _OO_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" = "),[2,0,0]]],
       caml_string_of_jsbytes("%s = %s")],
     _ON_=
      [0,
       [11,
        caml_string_of_jsbytes("<div id='storageDivInternal'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes("<div id='storageDivInternal'>%s<\/div>")],
     _NM_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _NL_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _NK_=[0,[11,caml_string_of_jsbytes(", "),0],caml_string_of_jsbytes(", ")],
     _LQ_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),956,19],
     _LP_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),943,17],
     _LN_=[0,[12,102,[4,0,0,0,0]],caml_string_of_jsbytes("f%d")],
     _LO_=
      [0,
       [11,caml_string_of_jsbytes("lparams_"),[4,0,0,0,0]],
       caml_string_of_jsbytes("lparams_%d")],
     _LK_=[0,0],
     _LL_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _LM_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]]]],
       caml_string_of_jsbytes("<span class='%s'>%s<\/span>")],
     _LG_=[0,0],
     _LH_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _LI_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" : <span class='type'>"),
         [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]]],
       caml_string_of_jsbytes("%s : <span class='type'>%s<\/span>")],
     _LJ_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]]]],
       caml_string_of_jsbytes("<span class='%s'>%s<\/span>")],
     _LF_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]]]],
       caml_string_of_jsbytes("<span class='%s'>%s<\/span>")],
     _KY_=[0,0],
     _KX_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='address'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='address'>%s<\/span>")],
     _KV_=[0,[4,3,0,0,0],caml_string_of_jsbytes("%i")],
     _KW_=
      [0,
       [11,caml_string_of_jsbytes("Dyn_"),[4,3,0,0,0]],
       caml_string_of_jsbytes("Dyn_%i")],
     _KT_=[0,0],
     _KU_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='type'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='type'>%s<\/span>")],
     _JV_=
      [0,
       [11,
        caml_string_of_jsbytes("<input type='text' value='"),
        [2,0,[11,caml_string_of_jsbytes("' readonly><\/input>"),0]]],
       caml_string_of_jsbytes
        ("<input type='text' value='%s' readonly><\/input>")],
     _JW_=[0,[12,39,[2,0,[12,39,0]]],caml_string_of_jsbytes("'%s'")],
     _JX_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='bytes'>0x"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='bytes'>0x%s<\/span>")],
     _JY_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.bytes('0x"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.bytes('0x%s')")],
     _JZ_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='bytes'>0x"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='bytes'>0x%s<\/span>")],
     _J0_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.chain_id('0x"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.chain_id('0x%s')")],
     _J1_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='timestamp'>timestamp("),
        [2,0,[11,caml_string_of_jsbytes(")<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='timestamp'>timestamp(%s)<\/span>")],
     _J2_=
      [0,
       [11,caml_string_of_jsbytes("sp.timestamp("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.timestamp(%s)")],
     _J3_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='token'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='token'>%s<\/span>")],
     _J4_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='address'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='address'>%s<\/span>")],
     _J5_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='key'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='key'>%s<\/span>")],
     _J6_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.key('"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.key('%s')")],
     _J7_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='key'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='key'>%s<\/span>")],
     _J8_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.secret_key('"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.secret_key('%s')")],
     _J9_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='key'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='key'>%s<\/span>")],
     _J__=
      [0,
       [11,
        caml_string_of_jsbytes("sp.key_hash('"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.key_hash('%s')")],
     _J$_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='key'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='key'>%s<\/span>")],
     _Ka_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.baker_hash('"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.baker_hash('%s')")],
     _Kb_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='signature'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='signature'>%s<\/span>")],
     _Kc_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.signature('"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.signature('%s')")],
     _Kd_=
      [0,caml_string_of_jsbytes("key"),[0,caml_string_of_jsbytes("amount"),0]],
     _Ke_=[0,[12,91,[2,0,[12,93,0]]],caml_string_of_jsbytes("[%s]")],
     _Kf_=[0,[0,caml_string_of_jsbytes("SaplingState"),0],0],
     _Kg_=[0,[12,91,[2,0,[12,93,0]]],caml_string_of_jsbytes("[%s]")],
     _Kh_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.sapling_test_transaction("),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [3,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("sp.sapling_test_transaction(%S, %S, %s)")],
     _Ki_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='bytes'>0x"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='bytes'>0x%s<\/span>")],
     _Kj_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.bls12_381_g1('0x"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.bls12_381_g1('0x%s')")],
     _Kk_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='bytes'>0x"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='bytes'>0x%s<\/span>")],
     _Kl_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.bls12_381_g2('0x"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.bls12_381_g2('0x%s')")],
     _Km_=
      [0,
       [11,
        caml_string_of_jsbytes("<span class='bytes'>0x"),
        [2,0,[11,caml_string_of_jsbytes("<\/span>"),0]]],
       caml_string_of_jsbytes("<span class='bytes'>0x%s<\/span>")],
     _Kn_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.bls12_381_fr('0x"),
        [2,0,[11,caml_string_of_jsbytes("')"),0]]],
       caml_string_of_jsbytes("sp.bls12_381_fr('0x%s')")],
     _JO_=[0,[12,39,[2,0,[12,39,0]]],caml_string_of_jsbytes("'%s'")],
     _JP_=[0,[12,34,[2,0,[12,34,0]]],caml_string_of_jsbytes('"%s"')],
     _JQ_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),222,21],
     _JN_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),216,21],
     _JK_=[0,[2,0,[12,40,[2,0,[12,41,0]]]],caml_string_of_jsbytes("%s(%s)")],
     _JL_=[0,[2,0,[12,32,[2,0,0]]],caml_string_of_jsbytes("%s %s")],
     _JM_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),203,21],
     _JI_=[0,[12,37,[2,0,0]],caml_string_of_jsbytes("%%%s")],
     _JJ_=[0,0,caml_string_of_jsbytes("")],
     _JR_=[0,caml_string_of_jsbytes("smartML/lib/printer.ml"),231,23],
     _JS_=[0,0],
     _JT_=[0,[2,0,[2,0,[2,0,0]]],caml_string_of_jsbytes("%s%s%s")],
     _JU_=
      [0,
       [11,
        caml_string_of_jsbytes("sp.address('"),
        [2,0,[15,[11,caml_string_of_jsbytes("')"),0]]]],
       caml_string_of_jsbytes("sp.address('%s%a')")],
     _JF_=
      [0,
       [2,
        0,
        [12,
         46,
         [2,
          0,
          [11,
           caml_string_of_jsbytes
            ("<img height=20 width=20 src='static/img/tezos.svg' alt='tz'/>"),
           0]]]],
       caml_string_of_jsbytes
        ("%s.%s<img height=20 width=20 src='static/img/tezos.svg' alt='tz'/>")],
     _JG_=
      [0,
       [11,caml_string_of_jsbytes("sp.tez("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.tez(%s)")],
     _JH_=
      [0,
       [11,caml_string_of_jsbytes("sp.mutez("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.mutez(%s)")],
     _JD_=
      [0,
       [11,
        caml_string_of_jsbytes("<td class='dataColumn'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/td>"),0]]],
       caml_string_of_jsbytes("<td class='dataColumn'>%s<\/td>")],
     _JB_=
      [0,
       [11,
        caml_string_of_jsbytes("<td class='data'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/td>"),0]]],
       caml_string_of_jsbytes("<td class='data'>%s<\/td>")],
     _JC_=
      [0,
       [11,
        caml_string_of_jsbytes("<tr>"),
        [2,0,[11,caml_string_of_jsbytes("<\/tr>"),0]]],
       caml_string_of_jsbytes("<tr>%s<\/tr>")],
     _JE_=
      [0,
       [11,
        caml_string_of_jsbytes("<table class='recordList'><tr>"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("<\/tr>"),
          [2,0,[11,caml_string_of_jsbytes("<\/table>"),0]]]]],
       caml_string_of_jsbytes
        ("<table class='recordList'><tr>%s<\/tr>%s<\/table>")],
     _JA_=
      [0,
       [11,caml_string_of_jsbytes(".layout("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes(".layout(%s)")],
     _PO_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _PG_=
      [0,
       [2,
        0,
        [3,
         0,
         [11,
          caml_string_of_jsbytes(": ("),
          [2,0,[11,caml_string_of_jsbytes(", "),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("%s%S: (%s, %s)")],
     _PF_=
      [0,
       [2,0,[3,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]],
       caml_string_of_jsbytes("%s%S: %s")],
     _PH_=
      [0,
       [11,caml_string_of_jsbytes("import smartpy as sp\n\n"),0],
       caml_string_of_jsbytes("import smartpy as sp\n\n")],
     _PI_=
      [0,
       [11,caml_string_of_jsbytes("tstorage = "),[2,0,[12,10,0]]],
       caml_string_of_jsbytes("tstorage = %s\n")],
     _PJ_=
      [0,
       [11,caml_string_of_jsbytes("tparameter = "),[2,0,[12,10,0]]],
       caml_string_of_jsbytes("tparameter = %s\n")],
     _PK_=
      [0,
       [11,caml_string_of_jsbytes("tglobals = {"),0],
       caml_string_of_jsbytes("tglobals = {")],
     _PL_=
      [0,[11,caml_string_of_jsbytes(" }\n"),0],caml_string_of_jsbytes(" }\n")],
     _PM_=
      [0,
       [11,caml_string_of_jsbytes("tviews = {"),0],
       caml_string_of_jsbytes("tviews = {")],
     _PN_=
      [0,[11,caml_string_of_jsbytes(" }\n"),0],caml_string_of_jsbytes(" }\n")],
     _PE_=[0,[16,[15,0]],caml_string_of_jsbytes("%t%a")],
     _PD_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Py_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("/theme.js"),0]],
       caml_string_of_jsbytes("%s/theme.js")],
     _Pz_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("/smart.js"),0]],
       caml_string_of_jsbytes("%s/smart.js")],
     _PA_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("/typography.css"),0]],
       caml_string_of_jsbytes("%s/typography.css")],
     _PB_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("/smart.css"),0]],
       caml_string_of_jsbytes("%s/smart.css")],
     _PC_=
      [0,
       [11,
        caml_string_of_jsbytes("<html><head><style>"),
        [2,
         0,
         [2,
          0,
          [11,
           caml_string_of_jsbytes
            ("button{font-size:inherit;}<\/style><script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'><\/script><script>"),
           [2,
            0,
            [2,
             0,
             [11,
              caml_string_of_jsbytes
               ("<\/script><\/head><body><div id='outputPanel'>"),
              [2,0,[11,caml_string_of_jsbytes("<\/div><\/div><\/html>"),0]]]]]]]]],
       caml_string_of_jsbytes
        ("<html><head><style>%s%sbutton{font-size:inherit;}<\/style><script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'><\/script><script>%s%s<\/script><\/head><body><div id='outputPanel'>%s<\/div><\/div><\/html>")],
     _P4_=[0,936573133,caml_string_of_jsbytes("in type")],
     _P5_=[0,[12,39,[2,0,[12,39,0]]],caml_string_of_jsbytes("'%s'")],
     _P6_=[0,936573133,caml_string_of_jsbytes("Missing field or variant")],
     _Qa_=[0,[0,936573133,caml_string_of_jsbytes("memo_size mismatch")],0],
     _P__=[0,caml_string_of_jsbytes("smartML/lib/unifier.ml"),214,12],
     _P7_=[0,936573133,caml_string_of_jsbytes("in type")],
     _P8_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _P9_=[0,936573133,caml_string_of_jsbytes("Missing component")],
     _P0_=[0,936573133,caml_string_of_jsbytes("and")],
     _P1_=
      [0,
       [11,
        caml_string_of_jsbytes("non matching names ["),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("] and ["),
          [2,0,[11,caml_string_of_jsbytes("] in variant constructors"),0]]]]],
       caml_string_of_jsbytes
        ("non matching names [%s] and [%s] in variant constructors")],
     _P2_=[0,936573133,caml_string_of_jsbytes("and")],
     _P3_=[0,936573133,caml_string_of_jsbytes("Incompatible variant types:")],
     _PZ_=
      [0,
       [11,caml_string_of_jsbytes("Different layouts for types"),0],
       caml_string_of_jsbytes("Different layouts for types")],
     _PW_=
      [0,
       [11,
        caml_string_of_jsbytes("non matching names ["),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("] and ["),
          [2,0,[11,caml_string_of_jsbytes("] in records"),0]]]]],
       caml_string_of_jsbytes("non matching names [%s] and [%s] in records")],
     _PX_=
      [0,
       [11,
        caml_string_of_jsbytes("missing field "),
        [2,0,[11,caml_string_of_jsbytes(" in record"),0]]],
       caml_string_of_jsbytes("missing field %s in record")],
     _PY_=
      [0,
       [11,caml_string_of_jsbytes("Different layouts for types"),0],
       caml_string_of_jsbytes("Different layouts for types")],
     _PV_=[0,[0,936573133,caml_string_of_jsbytes("bounded mismatch")],0],
     _PU_=
      [0,
       [0,936573133,caml_string_of_jsbytes("Type sp.TInt / sp.TNat mismatch")],
       0],
     _P$_=[0,936573133,caml_string_of_jsbytes("Tuples differ in lengths:")],
     _PS_=[0,936573133,caml_string_of_jsbytes("is not")],
     _PT_=[0,caml_string_of_jsbytes("smartML/lib/unifier.ml"),95,6],
     _PP_=[0,936573133,caml_string_of_jsbytes("and")],
     _PQ_=[0,936573133,caml_string_of_jsbytes("Non matching layouts")],
     _Rg_=
      [0,
       [11,
        caml_string_of_jsbytes("    Progress (defaulting): "),
        [9,0,[12,10,0]]],
       caml_string_of_jsbytes("    Progress (defaulting): %b\n")],
     _Rf_=
      [0,
       [11,caml_string_of_jsbytes("    Progress: "),[9,0,[12,10,0]]],
       caml_string_of_jsbytes("    Progress: %b\n")],
     _Re_=
      [0,
       [11,
        caml_string_of_jsbytes("  Pass #"),
        [4,0,0,0,[11,caml_string_of_jsbytes("...\n"),0]]],
       caml_string_of_jsbytes("  Pass #%d...\n")],
     _Rd_=
      [0,
       [11,caml_string_of_jsbytes("    "),[2,0,[12,10,0]]],
       caml_string_of_jsbytes("    %s\n")],
     _Rh_=[0,936573133,caml_string_of_jsbytes("Missing typing information")],
     _QX_=
      [0,
       [11,
        caml_string_of_jsbytes("HasAdd "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("HasAdd %a, %a")],
     _QY_=
      [0,
       [11,
        caml_string_of_jsbytes("HasMul "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("HasMul %a, %a")],
     _QZ_=
      [0,
       [11,
        caml_string_of_jsbytes("HasSub "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("HasSub %a, %a")],
     _Q0_=
      [0,
       [11,
        caml_string_of_jsbytes("HasDiv "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("HasDiv %a, %a")],
     _Q1_=
      [0,
       [11,
        caml_string_of_jsbytes("HasBitArithmetic "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("HasBitArithmetic %a, %a")],
     _Q2_=
      [0,
       [11,
        caml_string_of_jsbytes("HasMap "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("HasMap %a, %a")],
     _Q3_=
      [0,
       [11,caml_string_of_jsbytes("IsComparable "),[15,0]],
       caml_string_of_jsbytes("IsComparable %a")],
     _Q4_=
      [0,
       [11,
        caml_string_of_jsbytes("HasGetItem "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("HasGetItem %a, %a")],
     _Q5_=
      [0,
       [11,
        caml_string_of_jsbytes("HasContains "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("HasContains %a, %a")],
     _Q6_=
      [0,
       [11,caml_string_of_jsbytes("HasSize "),[15,0]],
       caml_string_of_jsbytes("HasSize %a")],
     _Q7_=
      [0,
       [11,caml_string_of_jsbytes("HasSlice "),[15,0]],
       caml_string_of_jsbytes("HasSlice %a")],
     _Q8_=
      [0,
       [11,
        caml_string_of_jsbytes("AssertEqual "),
        [15,[11,caml_string_of_jsbytes(", "),[15,0]]]],
       caml_string_of_jsbytes("AssertEqual %a, %a")],
     _Q9_=
      [0,
       [11,caml_string_of_jsbytes("IsInt "),[15,0]],
       caml_string_of_jsbytes("IsInt %a")],
     _Q__=
      [0,
       [11,caml_string_of_jsbytes("SaplingVerify "),[15,[12,32,[15,0]]]],
       caml_string_of_jsbytes("SaplingVerify %a %a")],
     _Q$_=
      [0,
       [11,caml_string_of_jsbytes("HasNeg "),[15,[12,32,[15,0]]]],
       caml_string_of_jsbytes("HasNeg %a %a")],
     _Ra_=
      [0,
       [11,caml_string_of_jsbytes("HasInt "),[15,0]],
       caml_string_of_jsbytes("HasInt %a")],
     _Rb_=
      [0,
       [11,caml_string_of_jsbytes("HasInt "),[2,0,[12,32,[15,0]]]],
       caml_string_of_jsbytes("HasInt %s %a")],
     _Rc_=
      [0,
       [11,
        caml_string_of_jsbytes("IsAnyMap "),
        [15,
         [11,
          caml_string_of_jsbytes(", "),
          [15,[11,caml_string_of_jsbytes(", "),[15,0]]]]]],
       caml_string_of_jsbytes("IsAnyMap %a, %a, %a")],
     _QV_=[0,936573133,caml_string_of_jsbytes("cannot be cast to Int")],
     _QW_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _QS_=
      [0,
       [11,
        caml_string_of_jsbytes
         (" You can use:\n - sp.utils.vector(..) to create a map from a list,\n - sp.utils.matrix(..) to create a map of maps from a list of lists,\n - sp.utils.cube(..) for a list of lists of lists."),
        0],
       caml_string_of_jsbytes
        (" You can use:\n - sp.utils.vector(..) to create a map from a list,\n - sp.utils.matrix(..) to create a map of maps from a list of lists,\n - sp.utils.cube(..) for a list of lists of lists.")],
     _QT_=[0,936573133,caml_string_of_jsbytes("A list is not a map.")],
     _QQ_=[0,936573133,caml_string_of_jsbytes("is not compatible with type")],
     _QR_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _QP_=[0,1],
     _QO_=[0,caml_string_of_jsbytes("smartML/lib/solver.ml"),301,15],
     _QU_=[0,caml_string_of_jsbytes("smartML/lib/solver.ml"),262,8],
     _QN_=[0,caml_string_of_jsbytes("smartML/lib/solver.ml"),147,10],
     _QM_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qd_=[0,936573133,caml_string_of_jsbytes("cannot be added in ")],
     _Qe_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qf_=[0,936573133,caml_string_of_jsbytes("cannot be multiplied ")],
     _Qg_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qh_=[0,936573133,caml_string_of_jsbytes("cannot be subtracted in ")],
     _Qi_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qj_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("Allowed types are (int|nat, int|nat) and (tez, tez|nat)")],
     _Qk_=[0,936573133,caml_string_of_jsbytes("cannot be divided in ")],
     _Ql_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qm_=[0,936573133,caml_string_of_jsbytes("cannot be xor-ed in ")],
     _Qn_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qo_=[0,936573133,caml_string_of_jsbytes("cannot be map in ")],
     _Qp_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qq_=
      [0,
       [0,936573133,caml_string_of_jsbytes("doesn't have a comparable type")],
       0],
     _Qr_=[0,936573133,caml_string_of_jsbytes("Type error")],
     _Qs_=[0,936573133,caml_string_of_jsbytes("cannot get item")],
     _Qt_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qu_=[0,936573133,caml_string_of_jsbytes("cannot contains")],
     _Qv_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qw_=[0,936573133,caml_string_of_jsbytes("has no length or size")],
     _Qx_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _Qy_=[0,936573133,caml_string_of_jsbytes("cannot be sliced")],
     _Qz_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _QA_=[0,caml_string_of_jsbytes("smartML/lib/solver.ml"),36,21],
     _QB_=[0,936573133,caml_string_of_jsbytes("memo_size error")],
     _QC_=[0,936573133,caml_string_of_jsbytes("cannot be negated")],
     _QD_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _QE_=[0,936573133,caml_string_of_jsbytes("cannot be cast to Int")],
     _QF_=[0,936573133,caml_string_of_jsbytes("Type Error")],
     _QG_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("cannot be used twice because it contains a ticket.")],
     _QH_=[0,936573133,caml_string_of_jsbytes("of type")],
     _QI_=[0,936573133,caml_string_of_jsbytes("Variable")],
     _QJ_=[0,936573133,caml_string_of_jsbytes("to")],
     _QK_=[0,936573133,caml_string_of_jsbytes("is not a map from")],
     _QL_=[0,936573133,caml_string_of_jsbytes("of type")],
     _Ug_=[0,[0,936573133,caml_string_of_jsbytes("defaulter")],0],
     _Uf_=[0,936573133,caml_string_of_jsbytes("scenario set_delegate")],
     _Ue_=[0,936573133,caml_string_of_jsbytes("not a boolean expression")],
     _Ub_=[0,936573133,caml_string_of_jsbytes("with argument")],
     _Uc_=[0,936573133,caml_string_of_jsbytes("which lacks entry point")],
     _Ud_=[0,936573133,caml_string_of_jsbytes("is of type")],
     _T$_=[0,936573133,caml_string_of_jsbytes("but got")],
     _Ua_=
      [0,936573133,caml_string_of_jsbytes("entry point expects parameter")],
     _T__=
      [0,
       936573133,
       caml_string_of_jsbytes("is not a valid optional baker in sp.contract")],
     _T9_=
      [0,
       936573133,
       caml_string_of_jsbytes("is not a valid amount in sp.create_contract")],
     _T8_=
      [0,
       936573133,
       caml_string_of_jsbytes("sp.create_contract: incompatible storage type")],
     _T6_=
      [0,
       936573133,
       caml_string_of_jsbytes("sp.has_entry_point: incompatible type")],
     _T5_=
      [0,
       936573133,
       caml_string_of_jsbytes("incompatible result types in match")],
     _T4_=
      [0,[0,936573133,caml_string_of_jsbytes("incoherent scrutinee type")],0],
     _T2_=[0,936573133,caml_string_of_jsbytes(")")],
     _T3_=[0,936573133,caml_string_of_jsbytes("transfer(")],
     _T1_=[0,936573133,caml_string_of_jsbytes("sp.make_signature")],
     _T0_=[0,936573133,caml_string_of_jsbytes("sp.slice")],
     _TX_=[0,936573133,caml_string_of_jsbytes("map")],
     _TW_=[0,936573133,caml_string_of_jsbytes("Empty stack at instruction")],
     _TV_=[0,936573133,caml_string_of_jsbytes("sp.michelson")],
     _TU_=
      [0,
       936573133,
       caml_string_of_jsbytes("is expected to be a sapling transaction ")],
     _TT_=
      [0,
       936573133,
       caml_string_of_jsbytes("is expected to be a sapling state ")],
     _TR_=[0,936573133,caml_string_of_jsbytes("is not an element of")],
     _TS_=[0,936573133,caml_string_of_jsbytes("bad type for set element")],
     _TP_=[0,936573133,caml_string_of_jsbytes("is not a")],
     _TQ_=[0,936573133,caml_string_of_jsbytes("bad type for map key")],
     _TN_=[0,936573133,caml_string_of_jsbytes("is not a")],
     _TO_=[0,936573133,caml_string_of_jsbytes("bad type for map value")],
     _TL_=[0,936573133,caml_string_of_jsbytes("is not a")],
     _TM_=[0,936573133,caml_string_of_jsbytes("bad type for list item")],
     _TK_=[0,936573133,caml_string_of_jsbytes("bad type for default value.")],
     _TI_=[0,936573133,caml_string_of_jsbytes("has no constructor")],
     _TJ_=[0,936573133,caml_string_of_jsbytes("Variant error")],
     _T7_=[0,caml_string_of_jsbytes("smartML/lib/checker.ml"),1569,12],
     _TH_=[0,caml_string_of_jsbytes("smartML/lib/checker.ml"),1595,28],
     _TZ_=
      [0,
       [11,caml_string_of_jsbytes("lambda "),[4,0,0,0,0]],
       caml_string_of_jsbytes("lambda %d")],
     _TY_=[0,caml_string_of_jsbytes("smartML/lib/checker.ml"),1580,44],
     _TE_=[0,936573133,caml_string_of_jsbytes("is not")],
     _TF_=[0,936573133,caml_string_of_jsbytes("lambda result type")],
     _TG_=
      [0,
       [11,caml_string_of_jsbytes("lambda "),[4,0,0,0,0]],
       caml_string_of_jsbytes("lambda %d")],
     _TD_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("is not a valid ticketer (it should be an address)")],
     _TC_=[0,936573133,caml_string_of_jsbytes("is not a valid ticket amount")],
     _TB_=
      [0,
       936573133,
       caml_string_of_jsbytes("incompatible result types in if-then-else")],
     _TA_=
      [0,
       936573133,
       caml_string_of_jsbytes("non-boolean condition in if-then-else")],
     _Ty_=[0,936573133,caml_string_of_jsbytes(", but should be an option.")],
     _Tz_=[0,936573133,caml_string_of_jsbytes("is of type")],
     _Tw_=[0,936573133,caml_string_of_jsbytes(", but should be an option.")],
     _Tx_=[0,936573133,caml_string_of_jsbytes("is of type")],
     _Tv_=
      [0,
       936573133,
       caml_string_of_jsbytes("Range takes integers, it cannot be applied to")],
     _Tt_=[0,936573133,caml_string_of_jsbytes(")")],
     _Tu_=[0,936573133,caml_string_of_jsbytes("sp.split_tokens(")],
     _Tq_=[0,936573133,caml_string_of_jsbytes("is not a nat or a bool")],
     _Tr_=[0,936573133,caml_string_of_jsbytes("^")],
     _Ts_=[0,936573133,caml_string_of_jsbytes("bad type for xor:")],
     _Tn_=
      [0,936573133,caml_string_of_jsbytes("Both expressions must be of type")],
     _To_=[0,936573133,caml_string_of_jsbytes("/")],
     _Tp_=[0,936573133,caml_string_of_jsbytes("in expression")],
     _Tk_=[0,936573133,caml_string_of_jsbytes("is not a nat or a bool")],
     _Tl_=[0,936573133,caml_string_of_jsbytes("|")],
     _Tm_=[0,936573133,caml_string_of_jsbytes("bad type for or:")],
     _Th_=[0,936573133,caml_string_of_jsbytes("is not a nat or a bool")],
     _Ti_=[0,936573133,caml_string_of_jsbytes("&")],
     _Tj_=[0,936573133,caml_string_of_jsbytes("bad type for and:")],
     _Tg_=[0,936573133,caml_string_of_jsbytes("is not a ticket")],
     _Tf_=
      [0,
       936573133,
       caml_string_of_jsbytes("is not a ticket decomposition (nat * nat) for")],
     _Te_=[0,936573133,caml_string_of_jsbytes("is not a valid ticket amount")],
     _Tc_=[0,936573133,caml_string_of_jsbytes(")")],
     _Td_=[0,936573133,caml_string_of_jsbytes("sp.add_seconds(")],
     _Tb_=[0,936573133,caml_string_of_jsbytes("cannot cons")],
     _Ta_=[0,936573133,caml_string_of_jsbytes("does not apply to")],
     _S$_=[0,936573133,caml_string_of_jsbytes("does not apply to")],
     _S9_=[0,936573133,caml_string_of_jsbytes("and")],
     _S__=[0,936573133,caml_string_of_jsbytes("Incompatible variant types")],
     _S6_=[0,936573133,caml_string_of_jsbytes("of type")],
     _S7_=[0,936573133,caml_string_of_jsbytes("has no field")],
     _S8_=[0,936573133,caml_string_of_jsbytes("Attribute error")],
     _S4_=[0,936573133,caml_string_of_jsbytes("Expected type:")],
     _S5_=[0,936573133,caml_string_of_jsbytes("Mismatch type annotation")],
     _S3_=[0,936573133,caml_string_of_jsbytes("unpack")],
     _S2_=[0,936573133,caml_string_of_jsbytes(".values()")],
     _S1_=[0,936573133,caml_string_of_jsbytes(".keys()")],
     _S0_=[0,936573133,caml_string_of_jsbytes(".items()")],
     _SZ_=[0,936573133,caml_string_of_jsbytes(".elements()")],
     _SW_=[0,936573133,caml_string_of_jsbytes("of type")],
     _SX_=[0,936573133,caml_string_of_jsbytes("has no component")],
     _SY_=[0,936573133,caml_string_of_jsbytes("Attribute error")],
     _SV_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("voting_power requires tz1[1-3] address as parameter")],
     _SU_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("voting_power requires tz1[1-3] address as parameter")],
     _ST_=
      [0,
       936573133,
       caml_string_of_jsbytes("is not a valid list of BLS12 pairs")],
     _SS_=[0,936573133,caml_string_of_jsbytes("is not a valid ticket list")],
     _SR_=[0,936573133,caml_string_of_jsbytes("is not a valid ticket")],
     _SQ_=[0,936573133,caml_string_of_jsbytes("sum")],
     _SP_=[0,936573133,caml_string_of_jsbytes("sp.sign")],
     _SO_=[0,936573133,caml_string_of_jsbytes("not an optional hash")],
     _SN_=[0,936573133,caml_string_of_jsbytes(".rev()")],
     _SL_=[0,936573133,caml_string_of_jsbytes(")")],
     _SM_=[0,936573133,caml_string_of_jsbytes("sp.implicit_account(")],
     _SJ_=[0,936573133,caml_string_of_jsbytes(")")],
     _SK_=[0,936573133,caml_string_of_jsbytes("sp.to_address(")],
     _SI_=[0,936573133,caml_string_of_jsbytes("sp.concat")],
     _SH_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("sp.contract: incompatible type or missing entry_point ")],
     _SE_=
      [0,
       936573133,
       caml_string_of_jsbytes("sp.nat cannot take negative values")],
     _SF_=
      [0,
       936573133,
       caml_string_of_jsbytes("sp.tez/sp.mutez cannot take negative values")],
     _SG_=[0,0],
     _SB_=[0,936573133,caml_string_of_jsbytes("Got:")],
     _SC_=[0,936573133,caml_string_of_jsbytes("as its first argument")],
     _SD_=[0,936573133,caml_string_of_jsbytes("expects a")],
     _Sy_=[0,936573133,caml_string_of_jsbytes("Got:")],
     _Sz_=[0,936573133,caml_string_of_jsbytes("as its second argument")],
     _SA_=[0,936573133,caml_string_of_jsbytes("expects a")],
     _Sv_=[0,936573133,caml_string_of_jsbytes("Got:")],
     _Sw_=[0,936573133,caml_string_of_jsbytes("as its third argument")],
     _Sx_=[0,936573133,caml_string_of_jsbytes("expects a")],
     _Ss_=[0,936573133,caml_string_of_jsbytes("Got:")],
     _St_=[0,936573133,caml_string_of_jsbytes("as its first argument")],
     _Su_=[0,936573133,caml_string_of_jsbytes("expects a")],
     _Sp_=[0,936573133,caml_string_of_jsbytes("Got:")],
     _Sq_=[0,936573133,caml_string_of_jsbytes("as its second argument")],
     _Sr_=[0,936573133,caml_string_of_jsbytes("expects a")],
     _Sn_=[0,936573133,caml_string_of_jsbytes("Got:")],
     _So_=[0,936573133,caml_string_of_jsbytes("expects a")],
     _Sm_=
      [0,
       936573133,
       caml_string_of_jsbytes("sp.self_entry_point: incompatible type")],
     _Sl_=
      [0,
       936573133,
       caml_string_of_jsbytes("is not a valid amount in sp.create_contract")],
     _Sk_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("is not a valid optional baker in sp.create_contract")],
     _Sj_=
      [0,
       936573133,
       caml_string_of_jsbytes("is not a valid storage in sp.create_contract")],
     _Sh_=[0,936573133,caml_string_of_jsbytes("instead of")],
     _Si_=[0,936573133,caml_string_of_jsbytes("Invalid storage type:")],
     _Sg_=
      [0,936573133,caml_string_of_jsbytes("incompatible entry points layout")],
     _Sf_=
      [0,
       [0,
        936573133,
        caml_string_of_jsbytes("incompatible lazy parameter type")],
       0],
     _Se_=
      [0,
       [0,
        936573133,
        caml_string_of_jsbytes("incompatible non-lazy parameter type")],
       0],
     _Sd_=
      [0,
       [0,936573133,caml_string_of_jsbytes("incompatible parameter type")],
       0],
     _Sb_=[0,936573133,caml_string_of_jsbytes(" has a sp.result.")],
     _Sc_=[0,936573133,caml_string_of_jsbytes("Entry point ")],
     _R$_=[0,936573133,caml_string_of_jsbytes("has unused parameter.")],
     _Sa_=[0,936573133,caml_string_of_jsbytes("Entry point")],
     _RC_=
      [0,
       936573133,
       caml_string_of_jsbytes("sp.set_entry_point: incompatible type")],
     _RA_=[0,936573133,caml_string_of_jsbytes(", but got")],
     _RB_=[0,936573133,caml_string_of_jsbytes("Expected entry point of type")],
     _Rx_=[0,936573133,caml_string_of_jsbytes(")")],
     _Ry_=[0,936573133,caml_string_of_jsbytes("(")],
     _Rz_=[0,936573133,caml_string_of_jsbytes(".")],
     _Rv_=[0,936573133,caml_string_of_jsbytes("not a boolean expression")],
     _Ru_=[0,936573133,caml_string_of_jsbytes("Bad type in sp.never")],
     _Rw_=[0,caml_string_of_jsbytes("smartML/lib/checker.ml"),566,12],
     _R__=[0,936573133,caml_string_of_jsbytes("is not compatible with type")],
     _R9_=[0,936573133,caml_string_of_jsbytes("is not compatible with type")],
     _R8_=[0,936573133,caml_string_of_jsbytes("while")],
     _R7_=[0,936573133,caml_string_of_jsbytes("while body has non-unit type")],
     _R6_=
      [0,
       [11,
        caml_string_of_jsbytes("for ("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" : "),
          [2,0,[11,caml_string_of_jsbytes(") in"),0]]]]],
       caml_string_of_jsbytes("for (%s : %s) in")],
     _R5_=
      [0,936573133,caml_string_of_jsbytes("for-loop body has non-unit type")],
     _R3_=[0,936573133,caml_string_of_jsbytes("=")],
     _R4_=[0,936573133,caml_string_of_jsbytes("set")],
     _R1_=[0,936573133,caml_string_of_jsbytes("Expected type:")],
     _R2_=
      [0,
       936573133,
       caml_string_of_jsbytes("match list scrutinee is not a list:")],
     _R0_=
      [0,
       936573133,
       caml_string_of_jsbytes("sp.match_cons: cannot unify branches")],
     _RY_=[0,936573133,caml_string_of_jsbytes("Expected type:")],
     _RZ_=
      [0,
       936573133,
       caml_string_of_jsbytes("sp.match_record scrutinee is not a record:")],
     _RX_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("sp.modify_record result type must not have an sp.result")],
     _RV_=[0,936573133,caml_string_of_jsbytes("Expected type:")],
     _RW_=[0,936573133,caml_string_of_jsbytes("scrutinee is not a tuple:")],
     _RT_=[0,936573133,caml_string_of_jsbytes("Expected type:")],
     _RU_=[0,936573133,caml_string_of_jsbytes("sp.match_record result type:")],
     _RQ_=[0,936573133,caml_string_of_jsbytes("Expected type:")],
     _RR_=[0,936573133,caml_string_of_jsbytes("sp.match result type:")],
     _RO_=[0,936573133,caml_string_of_jsbytes("Expected type:")],
     _RP_=
      [0,
       936573133,
       caml_string_of_jsbytes("match tuple scrutinee is not a record:")],
     _RL_=[0,936573133,caml_string_of_jsbytes("Expected type:")],
     _RM_=
      [0,
       936573133,
       caml_string_of_jsbytes("match tuple scrutinee is not a tuple:")],
     _RI_=[0,936573133,caml_string_of_jsbytes("Expected type:")],
     _RJ_=
      [0,
       936573133,
       caml_string_of_jsbytes("match scrutinee has incompatible type:")],
     _RG_=[0,936573133,caml_string_of_jsbytes("instead of")],
     _RH_=[0,936573133,caml_string_of_jsbytes("match branch has type")],
     _RE_=[0,936573133,caml_string_of_jsbytes(":")],
     _RF_=[0,936573133,caml_string_of_jsbytes("sp.if")],
     _RD_=[0,936573133,caml_string_of_jsbytes("sp.if: cannot unify branches")],
     _RK_=
      [0,
       936573133,
       caml_string_of_jsbytes("Matched tuple must have at least two elements")],
     _RN_=
      [0,
       936573133,
       caml_string_of_jsbytes("Must match at least one record field")],
     _RS_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("sp.modify_tuple requires at least two arguments ")],
     _Rt_=
      [0,
       [0,936573133,caml_string_of_jsbytes("Argument to None must be unit.")],
       0],
     _Rs_=
      [0,
       [11,caml_string_of_jsbytes("Missing variable "),[3,0,[12,46,0]]],
       caml_string_of_jsbytes("Missing variable %S.")],
     _Rq_=[0,0],
     _Rr_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" variable "),
         [3,
          0,
          [11,
           caml_string_of_jsbytes(" escapes its scope. (inside_contract: "),
           [9,0,[12,41,0]]]]]],
       caml_string_of_jsbytes
        ("%s variable %S escapes its scope. (inside_contract: %b)")],
     _Rp_=
      [0,
       [11,
        caml_string_of_jsbytes("Variable name "),
        [3,0,[11,caml_string_of_jsbytes(" already in use."),0]]],
       caml_string_of_jsbytes("Variable name %S already in use.")],
     _Ro_=[0,936573133,caml_string_of_jsbytes("Declaration Error")],
     _Rk_=
      [0,
       [11,caml_string_of_jsbytes("scenario_var"),[4,0,0,0,0]],
       caml_string_of_jsbytes("scenario_var%d")],
     _Rj_=
      [0,
       [11,caml_string_of_jsbytes("dynamic_contract"),[4,0,0,0,0]],
       caml_string_of_jsbytes("dynamic_contract%d")],
     _Ri_=
      [0,
       [11,caml_string_of_jsbytes("static_contract"),[4,0,0,0,0]],
       caml_string_of_jsbytes("static_contract%d")],
     _UM_=[0,5],
     _UB_=[5,[3,caml_string_of_jsbytes("__parameter__")]],
     _UA_=[5,[3,caml_string_of_jsbytes("__storage__")]],
     _Uz_=[1,1],
     _Uy_=[1,0],
     _Ux_=[0,0],
     _Uw_=[0,1],
     _Uv_=[0,11],
     _Uu_=[0,12],
     _Ut_=[0,9],
     _Us_=[0,10],
     _Ur_=[0,13],
     _Uq_=[0,2],
     _Up_=[0,3],
     _Uo_=[0,5],
     _Un_=[0,6],
     _Um_=[0,7],
     _Ul_=[0,8],
     _Uk_=[0,[0,1]],
     _Uj_=[0,[0,0]],
     _Ui_=[0,4],
     _Uh_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _UC_=[0,4],
     _UD_=[0,6],
     _UE_=[0,3],
     _UF_=[0,0],
     _UG_=[0,1],
     _UH_=[0,2],
     _UI_=[5,0],
     _UJ_=[0,7],
     _UK_=[0,[0,0]],
     _UL_=[0,5],
     _UN_=[0,936573133,caml_string_of_jsbytes("is not a variable")],
     _UO_=[0,936573133,caml_string_of_jsbytes("Syntax Error")],
     _VR_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),597,27],
     _VS_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),596,14],
     _VT_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),604,14],
     _VQ_=
      [0,
       936573133,
       caml_string_of_jsbytes("zero_of_type not implemented on type")],
     _VP_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),639,6],
     _VX_=
      [0,
       [11,caml_string_of_jsbytes("parse_record "),[2,0,[12,32,[2,0,0]]]],
       caml_string_of_jsbytes("parse_record %s %s")],
     _VY_=
      [0,
       [11,caml_string_of_jsbytes("parse_variant "),[2,0,[12,32,[2,0,0]]]],
       caml_string_of_jsbytes("parse_variant %s %s")],
     _V0_=
      [0,
       [11,caml_string_of_jsbytes("Bad map pair "),[2,0,[12,32,0]]],
       caml_string_of_jsbytes("Bad map pair %s ")],
     _VZ_=
      [0,
       [11,caml_string_of_jsbytes("to_value "),[2,0,[12,32,[2,0,0]]]],
       caml_string_of_jsbytes("to_value %s %s")],
     _V1_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),846,17],
     _V2_=
      [0,
       [11,
        caml_string_of_jsbytes("to_value tuple || "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" || "),
          [2,0,[11,caml_string_of_jsbytes(" ||"),0]]]]],
       caml_string_of_jsbytes("to_value tuple || %s || %s ||")],
     _V3_=
      [0,
       [11,
        caml_string_of_jsbytes("to_value (sapling) "),
        [2,0,[12,32,[2,0,0]]]],
       caml_string_of_jsbytes("to_value (sapling) %s %s")],
     _VW_=[0,936573133,caml_string_of_jsbytes("is not an operation")],
     _VV_=[0,936573133,caml_string_of_jsbytes("is not a closure")],
     _VU_=[0,[2,0,[4,3,0,0,0]],caml_string_of_jsbytes("%s%i")],
     _VO_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),538,26],
     _VM_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),539,9],
     _VN_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),542,6],
     _VL_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),528,42],
     _VK_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),513,18],
     _VJ_=
      [0,
       [0,
        936573133,
        caml_string_of_jsbytes("Invalid / operation with different types")],
       0],
     _VC_=[0,936573133,caml_string_of_jsbytes("in type")],
     _VD_=[0,14832,0],
     _VE_=[0,936573133,caml_string_of_jsbytes("is not compatible with")],
     _VF_=[0,14832,0],
     _VG_=[0,936573133,caml_string_of_jsbytes("of type")],
     _VH_=[0,936573133,caml_string_of_jsbytes("=")],
     _VB_=[0,caml_string_of_jsbytes("Value.variant")],
     _VI_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),449,12],
     _VA_=[0,936573133,caml_string_of_jsbytes("is not a tuple")],
     _Vz_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),393,15],
     _Vx_=[0,936573133,caml_string_of_jsbytes(">>")],
     _Vy_=
      [0,
       936573133,
       caml_string_of_jsbytes("shift_left with too big shift value")],
     _Vv_=[0,936573133,caml_string_of_jsbytes("<<")],
     _Vw_=
      [0,
       936573133,
       caml_string_of_jsbytes("shift_left with too big shift value")],
     _Vq_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),297,15],
     _Vs_=
      [0,
       [11,caml_string_of_jsbytes("multiplyG1ByFr: "),[2,0,0]],
       caml_string_of_jsbytes("multiplyG1ByFr: %s")],
     _Vt_=
      [0,
       [11,caml_string_of_jsbytes("multiplyG2ByFr: "),[2,0,0]],
       caml_string_of_jsbytes("multiplyG2ByFr: %s")],
     _Vu_=
      [0,
       [11,caml_string_of_jsbytes("multiplyFrByFr: "),[2,0,0]],
       caml_string_of_jsbytes("multiplyFrByFr: %s")],
     _Vr_=
      [0,
       [11,caml_string_of_jsbytes("multiplyFrByInt: "),[2,0,0]],
       caml_string_of_jsbytes("multiplyFrByInt: %s")],
     _Vm_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),247,15],
     _Vn_=
      [0,
       [11,caml_string_of_jsbytes("add(G1, G1): "),[2,0,0]],
       caml_string_of_jsbytes("add(G1, G1): %s")],
     _Vo_=
      [0,
       [11,caml_string_of_jsbytes("add(G2, G2): "),[2,0,0]],
       caml_string_of_jsbytes("add(G2, G2): %s")],
     _Vp_=
      [0,
       [11,caml_string_of_jsbytes("add(Fr, Fr): "),[2,0,0]],
       caml_string_of_jsbytes("add(Fr, Fr): %s")],
     _Vl_=
      [0,
       936573133,
       caml_string_of_jsbytes("Invalid + operation with different types ")],
     _Vk_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),238,9],
     _Vj_=[0,936573133,caml_string_of_jsbytes("is not an key_hash")],
     _Vi_=[0,936573133,caml_string_of_jsbytes("is not an address")],
     _Vh_=[0,936573133,caml_string_of_jsbytes("is not a chain_id")],
     _Vg_=[0,936573133,caml_string_of_jsbytes("is not a timestamp")],
     _Vf_=[0,936573133,caml_string_of_jsbytes("is not a mutez")],
     _Ve_=[0,936573133,caml_string_of_jsbytes("is not an integer")],
     _U__=[0,[0,936573133,caml_string_of_jsbytes("]")],0],
     _U$_=[0,936573133,caml_string_of_jsbytes("[")],
     _Va_=[0,936573133,caml_string_of_jsbytes("Bad getItem")],
     _Vb_=[0,936573133,caml_string_of_jsbytes("while evaluating")],
     _Vc_=[0,936573133,caml_string_of_jsbytes("is not in")],
     _Vd_=[0,936573133,caml_string_of_jsbytes("Missing item in map:")],
     _U9_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),166,9],
     _U8_=[0,936573133,caml_string_of_jsbytes("is not a set")],
     _U7_=[0,936573133,caml_string_of_jsbytes("is not a map")],
     _U6_=[0,936573133,caml_string_of_jsbytes("is not a list")],
     _U5_=[0,936573133,caml_string_of_jsbytes("is not a bool")],
     _UZ_=[0,936573133,caml_string_of_jsbytes("Key: ")],
     _U0_=[0,936573133,caml_string_of_jsbytes("expected a key of type")],
     _U1_=[0,936573133,caml_string_of_jsbytes("Invalid key type in map")],
     _U2_=[0,936573133,caml_string_of_jsbytes("Value: ")],
     _U3_=[0,936573133,caml_string_of_jsbytes("expected a value of type")],
     _U4_=[0,936573133,caml_string_of_jsbytes("Invalid value type in map")],
     _UY_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),101,22],
     _UX_=[0,caml_string_of_jsbytes("smartML/lib/value.ml"),83,22],
     _UW_=[0,936573133,caml_string_of_jsbytes("is not a sapling state")],
     _UV_=[0,936573133,caml_string_of_jsbytes("is not a sapling transaction")],
     _UU_=[0,936573133,caml_string_of_jsbytes("is not a string")],
     _US_=[0,[0,936573133,caml_string_of_jsbytes("into bool.")],0],
     _UT_=[0,936573133,caml_string_of_jsbytes("Cannot convert value")],
     _UQ_=[0,[0,936573133,caml_string_of_jsbytes("into int.")],0],
     _UR_=[0,936573133,caml_string_of_jsbytes("Cannot convert value")],
     _UP_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Wf_=
      [0,
       [12,39,[2,0,[11,caml_string_of_jsbytes("','"),[2,0,[12,39,0]]]]],
       caml_string_of_jsbytes("'%s','%s'")],
     _We_=
      [0,
       [11,
        caml_string_of_jsbytes("<option value='"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/option>"),0]]]]],
       caml_string_of_jsbytes("<option value='%s'>%s<\/option>")],
     _Wd_=
      [0,
       [11,
        caml_string_of_jsbytes("<div id='"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("' class='"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("'>"),
            [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]]]],
       caml_string_of_jsbytes("<div id='%s' class='%s'>%s<\/div>")],
     _Wk_=[0,caml_string_of_jsbytes("inputGuiR: layout")],
     _Wi_=[0,caml_string_of_jsbytes("smartML/lib/value_gui.ml"),254,24],
     _Wh_=
      [0,
       [11,caml_string_of_jsbytes("Badly formed contract '"),[2,0,[12,39,0]]],
       caml_string_of_jsbytes("Badly formed contract '%s'")],
     _Wb_=
      [0,
       [11,caml_string_of_jsbytes("Badly formed address '"),[2,0,[12,39,0]]],
       caml_string_of_jsbytes("Badly formed address '%s'")],
     _Wa_=[0,caml_string_of_jsbytes("smartML/lib/value_gui.ml"),102,15],
     _V$_=
      [0,
       [11,
        caml_string_of_jsbytes("<input type='checkbox' id='"),
        [2,0,[11,caml_string_of_jsbytes("'>"),0]]],
       caml_string_of_jsbytes("<input type='checkbox' id='%s'>")],
     _Wj_=[0,caml_string_of_jsbytes("smartML/lib/value_gui.ml"),80,6],
     _Wc_=[0,caml_string_of_jsbytes("smartML/lib/value_gui.ml"),137,15],
     _Wg_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<div class='subtype'><select class='selection' id='"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("' onchange=\"setSelectVisibility('"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("',"),
            [2,
             0,
             [11,
              caml_string_of_jsbytes(')">'),
              [2,0,[11,caml_string_of_jsbytes("<\/select>"),[2,0,partial$0]]]]]]]]]],
       caml_string_of_jsbytes
        ("<div class='subtype'><select class='selection' id='%s' onchange=\"setSelectVisibility('%s',%s)\">%s<\/select>%s<\/div>")],
     _V__=
      [0,
       [11,
        caml_string_of_jsbytes("InputGui of partial types ("),
        [2,0,[11,caml_string_of_jsbytes(") not implemented"),0]]],
       caml_string_of_jsbytes
        ("InputGui of partial types (%s) not implemented")],
     _Wl_=[0,caml_string_of_jsbytes("smartML/lib/value_gui.ml"),301,11],
     _V7_=[0,caml_string_of_jsbytes("smartML/lib/value_gui.ml"),47,14],
     _V8_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" is not a nat"),0]],
       caml_string_of_jsbytes("%s is not a nat")],
     _V5_=
      [0,
       [11,caml_string_of_jsbytes(" ("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes(" (%s)")],
     _V6_=
      [0,
       [11,
        caml_string_of_jsbytes("Cannot convert '"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("' into "),
          [2,0,[11,caml_string_of_jsbytes(" for path "),[2,0,[2,0,0]]]]]]],
       caml_string_of_jsbytes("Cannot convert '%s' into %s for path %s%s")],
     _V4_=
      [0,
       [11,
        caml_string_of_jsbytes("<input type='text' id='"),
        [2,0,[11,caml_string_of_jsbytes("'>"),0]]],
       caml_string_of_jsbytes("<input type='text' id='%s'>")],
     _Wo_=[0,caml_string_of_jsbytes("smartML/lib/closer.ml"),96,40],
     _Wp_=[0,caml_string_of_jsbytes("smartML/lib/closer.ml"),69,8],
     _Wq_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Wu_=[0,0],
     _Ws_=[0,0],
     _Wt_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),21,21],
     _Wv_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),33,23],
     _Ww_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),34,18],
     _WF_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _WE_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _WD_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _WG_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _WC_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Stack_ok"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Stack_ok@ ")],
     _WH_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Xe_=[0,0,0],
     _Xf_=[4,1],
     _Xg_=[1,2],
     _Xb_=[0,0,0],
     _Xc_=[4,1],
     _W__=[0,0,0],
     _W$_=[3,9],
     _W8_=[0,0,0],
     _WV_=
      [0,
       [11,caml_string_of_jsbytes("Variable not found: "),[2,0,0]],
       caml_string_of_jsbytes("Variable not found: %s")],
     _WW_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),220,24],
     _WX_=[0,0,0],
     _WY_=[0,0,0],
     _WZ_=[0,0,0],
     _W0_=[0,0,[0,0,0]],
     _W1_=[1,26],
     _W2_=[0,0,0],
     _W3_=[0,0,0],
     _W6_=[0,0,0],
     _W4_=[0,0,[0,0,0]],
     _W5_=[4,2],
     _W7_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),270,20],
     _W9_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),290,17],
     _Xa_=[0,0,0],
     _Xd_=[0,0,0],
     _Xh_=[0,0,0],
     _Xi_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),367,22],
     _Xj_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),319,44],
     _Xk_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),369,18],
     _Xl_=[0,0,[0,0,0]],
     _Xm_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),371,24],
     _Xn_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),378,22],
     _Xo_=[0,0],
     _Xp_=[0,0],
     _WU_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),203,11],
     _WT_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),191,8],
     _WS_=[0,caml_string_of_jsbytes("compile_stack_op dug")],
     _WR_=[0,caml_string_of_jsbytes("compile_stack_op dig")],
     _WQ_=[0,caml_string_of_jsbytes("compile_stack_op dup")],
     _WO_=[0,caml_string_of_jsbytes(""),0],
     _WP_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _WM_=
      [0,
       [11,
        caml_string_of_jsbytes("join_stacks: "),
        [15,[11,caml_string_of_jsbytes(" vs. "),[15,0]]]],
       caml_string_of_jsbytes("join_stacks: %a vs. %a")],
     _WL_=[0,0,0],
     _WI_=
      [0,
       [11,caml_string_of_jsbytes("stack_remove "),[4,0,0,0,[12,32,[15,0]]]],
       caml_string_of_jsbytes("stack_remove %d %a")],
     _WJ_=[0,caml_string_of_jsbytes("stack_remove")],
     _Wz_=[0,caml_string_of_jsbytes("smartML/lib/michel_compiler.ml"),56,19],
     _WA_=[26,[0,1,0]],
     _WB_=[26,[0,0,0]],
     _Wy_=[1,14],
     _Wx_=[0,8],
     _Xr_=
      [0,
       [12,59,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(";@ ")],
     _Xs_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _Xq_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [12,91,0]],
       caml_string_of_jsbytes("@[<2>[")],
     _Xt_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],[12,93,[17,0,0]]],
       caml_string_of_jsbytes("@,]@]")],
     _XU_=
      [0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),386,17],
     _XT_=
      [0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),369,17],
     _XQ_=
      [0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),316,17],
     _XO_=
      [0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),308,17],
     _XN_=[0,2,2],
     _XP_=[0,1,2],
     _XR_=[0,3,2],
     _XS_=
      [0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),318,17],
     _XV_=[0,3,2],
     _XM_=[0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),296,9],
     _XL_=
      [0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),284,36],
     _XK_=[0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),290,9],
     _XJ_=[0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),252,9],
     _XI_=[0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),248,9],
     _XH_=
      [0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),232,18],
     _XF_=
      [0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),179,10],
     _XG_=
      [0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),173,10],
     _XE_=
      [0,
       [11,
        caml_string_of_jsbytes("combine_branches:\n  "),
        [15,
         [11,
          caml_string_of_jsbytes("\n  "),
          [15,[11,caml_string_of_jsbytes("\n\n"),[15,[12,10,[15,0]]]]]]]],
       caml_string_of_jsbytes("combine_branches:\n  %a\n  %a\n\n%a\n%a")],
     _XD_=[0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),98,9],
     _XC_=[0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),93,13],
     _XB_=[0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),88,13],
     _XA_=[0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),83,13],
     _Xz_=[0,caml_string_of_jsbytes("smartML/lib/michel_decompiler.ml"),78,13],
     _Xy_=[0,caml_string_of_jsbytes("op_var")],
     _Xx_=[0,caml_string_of_jsbytes("op_vector")],
     _Xw_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _Xu_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Stack_ok"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Stack_ok@ ")],
     _Xv_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _X3_=
      [0,
       [11,
        caml_string_of_jsbytes("Data_encoding.micheline_size error "),
        [15,0]],
       caml_string_of_jsbytes("Data_encoding.micheline_size error %a")],
     _X2_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _X1_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _XW_=
      caml_list_of_js_array
       ([caml_string_of_jsbytes("False"),
         caml_string_of_jsbytes("Elt"),
         caml_string_of_jsbytes("Left"),
         caml_string_of_jsbytes("None"),
         caml_string_of_jsbytes("Pair"),
         caml_string_of_jsbytes("Right"),
         caml_string_of_jsbytes("Some"),
         caml_string_of_jsbytes("True"),
         caml_string_of_jsbytes("Unit"),
         caml_string_of_jsbytes("PACK"),
         caml_string_of_jsbytes("UNPACK"),
         caml_string_of_jsbytes("BLAKE2B"),
         caml_string_of_jsbytes("SHA256"),
         caml_string_of_jsbytes("SHA512"),
         caml_string_of_jsbytes("ABS"),
         caml_string_of_jsbytes("ADD"),
         caml_string_of_jsbytes("AMOUNT"),
         caml_string_of_jsbytes("AND"),
         caml_string_of_jsbytes("BALANCE"),
         caml_string_of_jsbytes("CAR"),
         caml_string_of_jsbytes("CDR"),
         caml_string_of_jsbytes("CHECK_SIGNATURE"),
         caml_string_of_jsbytes("COMPARE"),
         caml_string_of_jsbytes("CONCAT"),
         caml_string_of_jsbytes("CONS"),
         caml_string_of_jsbytes("CREATE_ACCOUNT"),
         caml_string_of_jsbytes("CREATE_CONTRACT"),
         caml_string_of_jsbytes("IMPLICIT_ACCOUNT"),
         caml_string_of_jsbytes("DIP"),
         caml_string_of_jsbytes("DROP"),
         caml_string_of_jsbytes("DUP"),
         caml_string_of_jsbytes("EDIV"),
         caml_string_of_jsbytes("EMPTY_MAP"),
         caml_string_of_jsbytes("EMPTY_SET"),
         caml_string_of_jsbytes("EQ"),
         caml_string_of_jsbytes("EXEC"),
         caml_string_of_jsbytes("FAILWITH"),
         caml_string_of_jsbytes("GE"),
         caml_string_of_jsbytes("GET"),
         caml_string_of_jsbytes("GT"),
         caml_string_of_jsbytes("HASH_KEY"),
         caml_string_of_jsbytes("IF"),
         caml_string_of_jsbytes("IF_CONS"),
         caml_string_of_jsbytes("IF_LEFT"),
         caml_string_of_jsbytes("IF_NONE"),
         caml_string_of_jsbytes("INT"),
         caml_string_of_jsbytes("LAMBDA"),
         caml_string_of_jsbytes("LE"),
         caml_string_of_jsbytes("LEFT"),
         caml_string_of_jsbytes("LOOP"),
         caml_string_of_jsbytes("LSL"),
         caml_string_of_jsbytes("LSR"),
         caml_string_of_jsbytes("LT"),
         caml_string_of_jsbytes("MAP"),
         caml_string_of_jsbytes("MEM"),
         caml_string_of_jsbytes("MUL"),
         caml_string_of_jsbytes("NEG"),
         caml_string_of_jsbytes("NEQ"),
         caml_string_of_jsbytes("NIL"),
         caml_string_of_jsbytes("NONE"),
         caml_string_of_jsbytes("NOT"),
         caml_string_of_jsbytes("NOW"),
         caml_string_of_jsbytes("OR"),
         caml_string_of_jsbytes("PAIR"),
         caml_string_of_jsbytes("PUSH"),
         caml_string_of_jsbytes("RIGHT"),
         caml_string_of_jsbytes("SIZE"),
         caml_string_of_jsbytes("SOME"),
         caml_string_of_jsbytes("SOURCE"),
         caml_string_of_jsbytes("SENDER"),
         caml_string_of_jsbytes("SELF"),
         caml_string_of_jsbytes("STEPS_TO_QUOTA"),
         caml_string_of_jsbytes("SUB"),
         caml_string_of_jsbytes("SWAP"),
         caml_string_of_jsbytes("TRANSFER_TOKENS"),
         caml_string_of_jsbytes("SET_DELEGATE"),
         caml_string_of_jsbytes("UNIT"),
         caml_string_of_jsbytes("UPDATE"),
         caml_string_of_jsbytes("XOR"),
         caml_string_of_jsbytes("ITER"),
         caml_string_of_jsbytes("LOOP_LEFT"),
         caml_string_of_jsbytes("ADDRESS"),
         caml_string_of_jsbytes("CONTRACT"),
         caml_string_of_jsbytes("ISNAT"),
         caml_string_of_jsbytes("CAST"),
         caml_string_of_jsbytes("RENAME"),
         caml_string_of_jsbytes("bool"),
         caml_string_of_jsbytes("contract"),
         caml_string_of_jsbytes("int"),
         caml_string_of_jsbytes("key"),
         caml_string_of_jsbytes("key_hash"),
         caml_string_of_jsbytes("lambda"),
         caml_string_of_jsbytes("list"),
         caml_string_of_jsbytes("map"),
         caml_string_of_jsbytes("big_map"),
         caml_string_of_jsbytes("nat"),
         caml_string_of_jsbytes("option"),
         caml_string_of_jsbytes("or"),
         caml_string_of_jsbytes("pair"),
         caml_string_of_jsbytes("set"),
         caml_string_of_jsbytes("signature"),
         caml_string_of_jsbytes("string"),
         caml_string_of_jsbytes("bytes"),
         caml_string_of_jsbytes("mutez"),
         caml_string_of_jsbytes("timestamp"),
         caml_string_of_jsbytes("unit"),
         caml_string_of_jsbytes("operation"),
         caml_string_of_jsbytes("address"),
         caml_string_of_jsbytes("SLICE"),
         caml_string_of_jsbytes("DIG"),
         caml_string_of_jsbytes("DUG"),
         caml_string_of_jsbytes("EMPTY_BIG_MAP"),
         caml_string_of_jsbytes("APPLY"),
         caml_string_of_jsbytes("chain_id"),
         caml_string_of_jsbytes("CHAIN_ID"),
         caml_string_of_jsbytes("LEVEL"),
         caml_string_of_jsbytes("SELF_ADDRESS"),
         caml_string_of_jsbytes("never"),
         caml_string_of_jsbytes("NEVER"),
         caml_string_of_jsbytes("UNPAIR"),
         caml_string_of_jsbytes("VOTING_POWER"),
         caml_string_of_jsbytes("TOTAL_VOTING_POWER"),
         caml_string_of_jsbytes("KECCAK"),
         caml_string_of_jsbytes("SHA3"),
         caml_string_of_jsbytes("PAIRING_CHECK"),
         caml_string_of_jsbytes("bls12_381_g1"),
         caml_string_of_jsbytes("bls12_381_g2"),
         caml_string_of_jsbytes("bls12_381_fr"),
         caml_string_of_jsbytes("sapling_state"),
         caml_string_of_jsbytes("sapling_transaction"),
         caml_string_of_jsbytes("SAPLING_EMPTY_STATE"),
         caml_string_of_jsbytes("SAPLING_VERIFY_UPDATE"),
         caml_string_of_jsbytes("ticket"),
         caml_string_of_jsbytes("TICKET"),
         caml_string_of_jsbytes("READ_TICKET"),
         caml_string_of_jsbytes("SPLIT_TICKET"),
         caml_string_of_jsbytes("JOIN_TICKETS"),
         caml_string_of_jsbytes("GET_AND_UPDATE"),
         caml_string_of_jsbytes("baker_hash"),
         caml_string_of_jsbytes("baker_operation"),
         caml_string_of_jsbytes("pvss_key"),
         caml_string_of_jsbytes("SUBMIT_PROPOSALS"),
         caml_string_of_jsbytes("SUBMIT_BALLOT"),
         caml_string_of_jsbytes("SET_BAKER_ACTIVE"),
         caml_string_of_jsbytes("TOGGLE_BAKER_DELEGATIONS"),
         caml_string_of_jsbytes("SET_BAKER_CONSENSUS_KEY"),
         caml_string_of_jsbytes("SET_BAKER_PVSS_KEY")]),
     _XZ_=
      [0,
       [0,
        caml_string_of_jsbytes("K_parameter"),
        caml_string_of_jsbytes("parameter")],
       [0,
        [0,
         caml_string_of_jsbytes("K_storage"),
         caml_string_of_jsbytes("storage")],
        [0,
         [0,caml_string_of_jsbytes("K_code"),caml_string_of_jsbytes("code")],
         0]]],
     _Z2_=[0,0,0],
     _Z1_=[0,[14,1],0],
     _Ze_=
      [0,caml_string_of_jsbytes("smartML/lib/michelson_rewriter.ml"),676,21],
     _ZY_=[16,1],
     _ZZ_=[0,[15,1],0],
     _Z0_=[0,[3,14],[0,[2,0],0]],
     _YQ_=[0,1,1],
     _YR_=[0,0,0],
     _YS_=[0,2,1],
     _YT_=[0,0,[0,0,0]],
     _YU_=[0,2,1],
     _YV_=[0,0,0],
     _YW_=[16,2],
     _ZV_=[0,2,1],
     _ZW_=[0,0,0],
     _YX_=[0,3,1],
     _YY_=[0,0,[0,0,[0,0,0]]],
     _ZB_=[0,[1,8],0],
     _ZC_=[0,[1,3],0],
     _ZD_=[16,1],
     _ZE_=[0,[16,1],[0,0,0]],
     _ZF_=[0,[2,1],0],
     _ZG_=[0,[2,0],0],
     _ZH_=[0,1,1],
     _ZI_=[0,[16,1],0],
     _ZJ_=[15,1],
     _ZK_=[0,[15,1],[0,[15,1],0]],
     _ZL_=[0,[24,[0,1,[0,1,0]]],0],
     _ZM_=[0,[24,[0,1,[0,1,0]]],[0,[16,1],0]],
     _ZO_=[0,0,[0,0,0]],
     _ZP_=[0,[3,10],[0,[1,3],0]],
     _ZQ_=[0,[3,10],[0,[1,8],0]],
     _ZR_=[0,[3,10],[0,[1,12],0]],
     _ZS_=[0,[3,10],[0,[1,10],0]],
     _ZN_=[0,0,0],
     _ZT_=[0,[26,[0,1,0]],0],
     _ZU_=[0,0,0],
     _Zu_=[0,1,1],
     _Zv_=[0,1,1],
     _Zw_=[0,[16,1],0],
     _Zx_=[0,1,1],
     _Zy_=[0,1,1],
     _Zz_=[16,1],
     _ZA_=[16,1],
     _Zm_=[2,0],
     _Zn_=[0,[15,1],[0,[17,2],0]],
     _Zp_=[0,1,1],
     _Zq_=[0,[16,1],0],
     _Zr_=[16,1],
     _Zo_=[0,[3,14],[0,[2,0],0]],
     _Zs_=[16,1],
     _Zt_=[16,1],
     _Zk_=[0,0,[0,[15,1],0]],
     _Zj_=[0,[15,1],0],
     _Zl_=[0,1,1],
     _Zi_=[0,2,1],
     _Zf_=[0,[26,[0,0,0]],0],
     _Zh_=[0,0,0],
     _Y5_=[0,1,2],
     _Y6_=[0,0,0],
     _Zd_=[0,1,2],
     _Zb_=[0,1,2],
     _Zc_=[0,[16,1],[0,0,0]],
     _Za_=[0,1,2],
     _Y__=[0,1,2],
     _Y$_=[0,0,0],
     _Y7_=[0,1,2],
     _Y8_=[0,3,1],
     _Y9_=[0,3,2],
     _Y3_=[16,1],
     _Y4_=[16,1],
     _Y2_=[0,1,1],
     _Y0_=[0,[16,1],0],
     _Y1_=[15,1],
     _YZ_=[0,2,1],
     _Zg_=[26,[0,1,0]],
     _ZX_=[0,[16,1],[0,[3,9],[0,[16,1],0]]],
     _YH_=[0,[1,13],0],
     _YI_=[0,[16,1],[0,0,0]],
     _YJ_=[0,0,0],
     _YK_=[0,0],
     _YL_=[0,[16,1]],
     _YM_=[16,3],
     _YD_=[0,0,0],
     _YE_=[0,0,0],
     _YB_=[0,0,0],
     _YC_=[0,0,0],
     _YA_=[0,0],
     _Yt_=[16,1],
     _Yu_=[16,1],
     _Yx_=[0,0],
     _Yy_=[16,1],
     _Yz_=[16,1],
     _Yw_=[16,1],
     _Yv_=[16,1],
     _YN_=[0,0,0],
     _YF_=[0,[1,13],0],
     _YG_=[0,[1,13],0],
     _Ys_=
      [0,caml_string_of_jsbytes("smartML/lib/michelson_rewriter.ml"),281,9],
     _Yr_=
      [0,caml_string_of_jsbytes("smartML/lib/michelson_rewriter.ml"),272,9],
     _Yn_=[0,[14,2],0],
     _Yo_=[0,1,0],
     _Yq_=[0,[0,8],0],
     _Yp_=[0,[15,1],0],
     _Ym_=[0,[0,[0,0]],[0,[1,16],0]],
     _Yl_=[0,[0,5],0],
     _Yj_=[0,[1,[4,4]],0],
     _Yk_=[0,[1,[4,3]],0],
     _Yh_=[15,1],
     _Yi_=[0,1,0],
     _Yg_=[0,0,0],
     _Yf_=[0,[26,[0,1,0]],0],
     _Ye_=[0,[26,[0,0,0]],0],
     _Yc_=[0,[15,1],[0,[26,[0,0,0]],[0,1,[0,[26,[0,1,0]],0]]]],
     _Yd_=[0,[15,1],[0,[26,[0,1,0]],[0,1,[0,[26,[0,0,0]],0]]]],
     _X5_=[0,[5,caml_string_of_jsbytes("DROP n with n negative")],0],
     _X4_=[0,[16,1],0],
     _X6_=[0,[3,[0,0,0]],0],
     _X7_=[0,[3,[0,0,0]],0],
     _X8_=[24,[0,1,[0,1,0]]],
     _X9_=[0,[3,[0,0,0]],0],
     _X__=[0,[16,1],[0,[3,[0,0,0]],0]],
     _X$_=[16,1],
     _Ya_=[24,[0,1,[0,1,0]]],
     _Yb_=[0,[16,1],[0,[3,[0,0,0]],0]],
     _Z3_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T_var"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T_var@ ")],
     _Z4_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _Z5_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Z6_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T_lambda_parameter"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T_lambda_parameter@ ")],
     _Z7_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _Z8_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _Z9_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("T_match_cons ("),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("(@[<2>T_match_cons (@,")],
     _Z__=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _Z$_=
      [0,
       [12,44,[17,[0,caml_string_of_jsbytes("@ "),1,0],0]],
       caml_string_of_jsbytes(",@ ")],
     __a_=[0,[9,0,0],caml_string_of_jsbytes("%B")],
     __b_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@,"),0,0],
        [11,caml_string_of_jsbytes("))"),[17,0,0]]],
       caml_string_of_jsbytes("@,))@]")],
     __c_=[0,[15,0],caml_string_of_jsbytes("%a")],
     __s_=[0,0,0],
     __W_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),549,21],
     __X_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" at "),
         [2,
          0,
          [11,caml_string_of_jsbytes(" (looking till "),[4,0,0,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("%s at %s (looking till %d)")],
     __Y_=
      [0,
       [11,caml_string_of_jsbytes("dropping"),0],
       caml_string_of_jsbytes("dropping")],
     __Z_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),525,19],
     __0_=
      [0,
       [11,caml_string_of_jsbytes("adapt_stack "),[4,0,0,0,0]],
       caml_string_of_jsbytes("adapt_stack %d")],
     _$d_=[0,0],
     _$e_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),686,40],
     _$L_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("Forbidden expression in left position of an assignment.")],
     _$M_=[15,1],
     _$N_=[0,[16,1],0],
     _$O_=[0,[16,1],[0,[3,[0,0,0]],0]],
     _$P_=[3,[0,0,0]],
     _acU_=[0,caml_string_of_jsbytes("storage")],
     _acR_=[0,0],
     _acT_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),2600,14],
     _acS_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),2603,24],
     _acQ_=[0,[1,0],0],
     _acM_=[0,[17,2],[0,[3,[0,0,0]],[0,[16,1],[0,[3,[0,0,0]],0]]]],
     _acN_=[0,0],
     _acO_=[0,[1,0],0],
     _acK_=[16,1],
     _acL_=
      [0,
       [11,caml_string_of_jsbytes("Global variable: "),[2,0,0]],
       caml_string_of_jsbytes("Global variable: %s")],
     _acH_=[0,0],
     _acI_=[0,0],
     _acJ_=[0,0],
     _acP_=[0,0],
     _acB_=[0,[1,0],0],
     _acC_=[3,14],
     _acD_=[0,[16,2],[0,[16,2],[0,[3,[0,0,0]],0]]],
     _acE_=[0,[16,3],[0,[15,1],[0,[17,4],[0,[16,1],[0,[3,12],0]]]]],
     _acF_=[0,0],
     _acG_=[15,1],
     _acz_=[0,1,0],
     _acA_=[0,0,0],
     _acy_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),2332,13],
     _acx_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),2315,13],
     _acw_=[0,[1,0],0],
     _acv_=[3,[0,0,0]],
     _acs_=[3,[0,0,0]],
     _act_=[3,[0,0,0]],
     _acu_=[3,[0,0,0]],
     _acr_=
      [0,
       [11,
        caml_string_of_jsbytes("== "),
        [2,0,[11,caml_string_of_jsbytes(" =="),0]]],
       caml_string_of_jsbytes("== %s ==")],
     _aco_=[4,1],
     _acp_=[1,2],
     _acq_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),2229,8],
     _acl_=
      [0,
       [11,caml_string_of_jsbytes("check for next loop: "),[2,0,0]],
       caml_string_of_jsbytes("check for next loop: %s")],
     _ach_=
      [0,
       [11,caml_string_of_jsbytes("Invalid lexpr (CFor): "),[2,0,0]],
       caml_string_of_jsbytes("Invalid lexpr (CFor): %s")],
     _ace_=[4,1],
     _acf_=
      [0,
       [11,caml_string_of_jsbytes("Invalid lexpr (CSetVar): "),[2,0,0]],
       caml_string_of_jsbytes("Invalid lexpr (CSetVar): %s")],
     _acc_=
      [0,
       [11,caml_string_of_jsbytes("Invalid lexpr (CSetVar): "),[2,0,0]],
       caml_string_of_jsbytes("Invalid lexpr (CSetVar): %s")],
     _aca_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),2025,21],
     _ab9_=[0,0],
     _ab7_=[2,1],
     _ab8_=[0,0],
     _ab__=
      [0,
       [11,caml_string_of_jsbytes("if "),[2,0,[12,58,0]]],
       caml_string_of_jsbytes("if %s:")],
     _ab$_=
      [0,
       [11,
        caml_string_of_jsbytes("with "),
        [2,0,[11,caml_string_of_jsbytes(".match_cases(...):"),0]]],
       caml_string_of_jsbytes("with %s.match_cases(...):")],
     _acb_=
      [0,
       [11,
        caml_string_of_jsbytes("with sp.match_cons("),
        [2,0,[11,caml_string_of_jsbytes(") as "),[2,0,[12,58,0]]]]],
       caml_string_of_jsbytes("with sp.match_cons(%s) as %s:")],
     _acd_=
      [0,
       [11,caml_string_of_jsbytes("invalid lexpr"),0],
       caml_string_of_jsbytes("invalid lexpr")],
     _acg_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1952,8],
     _ack_=
      [0,
       [11,
        caml_string_of_jsbytes("for "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" in "),
          [2,0,[11,caml_string_of_jsbytes(": ... ("),[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("for %s in %s: ... (%s)")],
     _acj_=
      [0,
       [11,caml_string_of_jsbytes("map.items error: "),[2,0,0]],
       caml_string_of_jsbytes("map.items error: %s")],
     _aci_=
      [0,
       [11,
        caml_string_of_jsbytes("for "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" in "),
          [2,0,[11,caml_string_of_jsbytes(": ..."),0]]]]],
       caml_string_of_jsbytes("for %s in %s: ...")],
     _acm_=
      [0,
       [11,
        caml_string_of_jsbytes("while "),
        [2,0,[11,caml_string_of_jsbytes(" : ..."),0]]],
       caml_string_of_jsbytes("while %s : ...")],
     _acn_=
      [0,
       [11,caml_string_of_jsbytes("sp.result("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("sp.result(%s)")],
     _ab5_=[4,1],
     _ab6_=[1,2],
     _ab3_=[4,1],
     _ab4_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1910,14],
     _ab1_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("sp.modify_record or similar instructions may be required")],
     _ab2_=
      [0,
       936573133,
       caml_string_of_jsbytes("Missing target (strict_unzip_lexpr)")],
     _abZ_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("sp.modify_record or similar instructions may be required")],
     _ab0_=
      [0,936573133,caml_string_of_jsbytes("Missing target (unzip_lexpr)")],
     _abY_=[3,[0,0,0]],
     _abQ_=[1,12],
     _abR_=[1,3],
     _abS_=[3,10],
     _abT_=[1,10],
     _abU_=[1,10],
     _abV_=[1,12],
     _abW_=[1,12],
     _abX_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1846,13],
     _abP_=[3,0],
     _abO_=[3,10],
     _abH_=[0,0],
     _abK_=[0,0],
     _abL_=[0,0],
     _abM_=[0,0],
     _abN_=[0,0],
     _abI_=[0,0],
     _abJ_=[0,0],
     _abG_=[3,9],
     _abF_=[3,13],
     _abE_=[4,3],
     _abC_=[4,0],
     _abB_=[3,[0,0,0]],
     _abA_=
      [0,
       [11,caml_string_of_jsbytes("map compilation error"),0],
       caml_string_of_jsbytes("map compilation error")],
     _aby_=[0,[16,1],[0,[3,14],0]],
     _abz_=[16,1],
     _abx_=[3,16],
     _abw_=[4,1],
     _abu_=[4,1],
     _abv_=[1,2],
     _abt_=[3,9],
     _abs_=[3,[0,0,0]],
     _abr_=[0,caml_string_of_jsbytes("compiler: record")],
     _abq_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1517,17],
     _abp_=[3,[0,0,0]],
     _abj_=[0,[4,2],[0,[3,[0,0,0]],0]],
     _abi_=[4,1],
     _abe_=[3,9],
     _abf_=[16,1],
     _abg_=[15,1],
     _abh_=
      [0,
       [11,caml_string_of_jsbytes("find_target "),[2,0,0]],
       caml_string_of_jsbytes("find_target %s")],
     _abb_=[3,6],
     _abc_=[3,1],
     _aa5_=[16,1],
     _aa6_=[0,0],
     _aa7_=[0,0],
     _aa8_=[1,9],
     _aa9_=[3,10],
     _aa__=[17,2],
     _aa$_=[15,1],
     _aba_=[15,1],
     _aaV_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1394,24],
     _aaW_=[3,12],
     _aaX_=[3,13],
     _aaY_=[3,13],
     _aaZ_=[3,14],
     _aa0_=[3,15],
     _aa1_=[3,9],
     _aa2_=[3,0],
     _aa3_=[3,17],
     _aa4_=[3,18],
     _abd_=[3,1],
     _abk_=[0,0],
     _abl_=[0,0],
     _abm_=
      [0,
       [11,caml_string_of_jsbytes("of_some: Get-item:"),[4,0,0,0,0]],
       caml_string_of_jsbytes("of_some: Get-item:%d")],
     _abn_=[0,0],
     _abo_=[3,12],
     _abD_=
      [0,
       [11,
        caml_string_of_jsbytes("Expression "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (" cannot be converted to Michelson (missing pre-evaluation)"),
          0]]],
       caml_string_of_jsbytes
        ("Expression %s cannot be converted to Michelson (missing pre-evaluation)")],
     _aaH_=[3,[0,0,0]],
     _aaI_=[1,26],
     _aaF_=[3,0],
     _aaD_=[3,10],
     _aaw_=[0,5],
     _aau_=[3,11],
     _aat_=[1,14],
     _aav_=[1,16],
     _aax_=[1,17],
     _aay_=
      [0,
       [11,caml_string_of_jsbytes("map.items error: "),[2,0,0]],
       caml_string_of_jsbytes("map.items error: %s")],
     _aaz_=[1,5],
     _aaA_=[1,18],
     _aaB_=
      [0,
       [11,
        caml_string_of_jsbytes("Expression "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (" cannot be converted to Michelson (missing pre-evaluation)"),
          0]]],
       caml_string_of_jsbytes
        ("Expression %s cannot be converted to Michelson (missing pre-evaluation)")],
     _aaC_=[1,25],
     _aaE_=[1,15],
     _aaG_=[1,6],
     _aaJ_=[1,27],
     _aaK_=[1,28],
     _aaL_=[1,29],
     _aaN_=[26,[0,1,0]],
     _aaM_=[26,[0,0,0]],
     _aaO_=
      [0,
       [11,caml_string_of_jsbytes("set.elements error: "),[2,0,0]],
       caml_string_of_jsbytes("set.elements error: %s")],
     _aaP_=
      [0,
       [11,caml_string_of_jsbytes("map.items error: "),[2,0,0]],
       caml_string_of_jsbytes("map.items error: %s")],
     _aaQ_=
      [0,
       [11,caml_string_of_jsbytes("map.keys error: "),[2,0,0]],
       caml_string_of_jsbytes("map.keys error: %s")],
     _aaR_=
      [0,
       [11,caml_string_of_jsbytes("map.values error: "),[2,0,0]],
       caml_string_of_jsbytes("map.values error: %s")],
     _aaS_=
      [0,
       [11,
        caml_string_of_jsbytes("EAttr '"),
        [2,0,[11,caml_string_of_jsbytes("', "),[2,0,0]]]],
       caml_string_of_jsbytes("EAttr '%s', %s")],
     _aaU_=[0,caml_string_of_jsbytes("compiler: variant")],
     _aaT_=
      [0,
       [11,
        caml_string_of_jsbytes("EVariant: not a variant: '"),
        [2,0,[11,caml_string_of_jsbytes("' '"),[2,0,[12,39,0]]]]],
       caml_string_of_jsbytes("EVariant: not a variant: '%s' '%s'")],
     _aap_=[3,[0,0,0]],
     _aar_=
      [0,
       [11,
        caml_string_of_jsbytes("No conversion for expression "),
        [2,0,[11,caml_string_of_jsbytes(" of type "),[2,0,0]]]],
       caml_string_of_jsbytes("No conversion for expression %s of type %s")],
     _aan_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1224,24],
     _aao_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1228,26],
     _aaq_=
      [0,
       [11,
        caml_string_of_jsbytes("Expression "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (" cannot be converted to Michelson (missing pre-evaluation)"),
          0]]],
       caml_string_of_jsbytes
        ("Expression %s cannot be converted to Michelson (missing pre-evaluation)")],
     _aam_=[1,[6,0]],
     _aaj_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" = sp.modify("),
         [2,0,[11,caml_string_of_jsbytes(", "),[3,0,[12,41,0]]]]]],
       caml_string_of_jsbytes("%s = sp.modify(%s, %S)")],
     _aak_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(" = sp.modify_tuple("),
         [2,0,[11,caml_string_of_jsbytes(", "),[15,[12,41,0]]]]]],
       caml_string_of_jsbytes("%a = sp.modify_tuple(%s, %a)")],
     _aal_=
      [0,
       [11,
        caml_string_of_jsbytes("with sp.modify_record("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [3,0,[11,caml_string_of_jsbytes(") as "),[2,0,[12,58,0]]]]]]],
       caml_string_of_jsbytes("with sp.modify_record(%s, %S) as %s:")],
     _aag_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1187,26],
     _aah_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(" = sp.match_tuple("),
         [2,0,[11,caml_string_of_jsbytes(", "),[15,[12,41,0]]]]]],
       caml_string_of_jsbytes("%a = sp.match_tuple(%s, %a)")],
     _aai_=
      [0,
       [15,
        [11,
         caml_string_of_jsbytes(" = sp.match_record("),
         [2,0,[11,caml_string_of_jsbytes(", "),[15,[12,41,0]]]]]],
       caml_string_of_jsbytes("%a = sp.match_record(%s, %a)")],
     _aaf_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _aad_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _aab_=[1,2],
     _$8_=[16,1],
     _$9_=[16,2],
     _$__=[4,2],
     _$$_=[17,3],
     _aaa_=[15,1],
     _$4_=[3,12],
     _$5_=[17,2],
     _$6_=[15,1],
     _$2_=[4,1],
     _$3_=[16,1],
     _$7_=[15,1],
     _$1_=[0,caml_string_of_jsbytes("compile_variant")],
     _$0_=
      [0,
       [11,
        caml_string_of_jsbytes("Bad variant expecting Left/Right but got "),
        [2,0,0]],
       caml_string_of_jsbytes("Bad variant expecting Left/Right but got %s")],
     _$Z_=[1,2],
     _$Y_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1112,11],
     _$X_=[3,[0,0,0]],
     _$W_=[0,[2,0,[12,46,[2,0,0]]],caml_string_of_jsbytes("%s.%s")],
     _$V_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1106,11],
     _$U_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),1082,11],
     _$T_=[0,[16,1],0],
     _$S_=[0,caml_string_of_jsbytes("explode")],
     _$R_=[0,[2,0,[12,46,[2,0,0]]],caml_string_of_jsbytes("%s.%s")],
     _$Q_=[0,caml_string_of_jsbytes("compile_record")],
     _$J_=[0,[2,0,[12,46,[2,0,0]]],caml_string_of_jsbytes("%s.%s")],
     _$K_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),887,15],
     _$F_=[3,9],
     _$G_=[0,[16,1],0],
     _$q_=[0,0],
     _$o_=[0,0],
     _$m_=[0,[3,10],[0,[1,8],0]],
     _$n_=[0,[3,10],[0,[1,3],0]],
     _$p_=[3,7],
     _$r_=[3,8],
     _$s_=[3,11],
     _$t_=[3,11],
     _$u_=[3,0],
     _$v_=[3,2],
     _$w_=[3,6],
     _$x_=[3,6],
     _$y_=[3,6],
     _$z_=[0,[3,10],[0,[1,10],0]],
     _$A_=[0,[3,10],[0,[1,9],0]],
     _$B_=[0,[3,10],[0,[1,12],0]],
     _$C_=[0,[3,10],[0,[1,11],0]],
     _$D_=[3,5],
     _$E_=[3,1],
     _$l_=[16,1],
     _$k_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),759,11],
     _$f_=[0,0],
     _$g_=
      [0,
       [11,
        caml_string_of_jsbytes("timestamp "),
        [4,0,0,0,[11,caml_string_of_jsbytes(" out of range"),0]]],
       caml_string_of_jsbytes("timestamp %d out of range")],
     _$h_=[0,[12,37,[2,0,0]],caml_string_of_jsbytes("%%%s")],
     _$i_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")],
     _$j_=
      [0,
       [0,
        936573133,
        caml_string_of_jsbytes("Secret keys are forbidden in contracts")],
       0],
     _$c_=
      [0,
       [11,caml_string_of_jsbytes("Missing layout for record "),[2,0,0]],
       caml_string_of_jsbytes("Missing layout for record %s")],
     _$b_=
      [0,
       [11,
        caml_string_of_jsbytes("Missing layout field "),
        [3,0,[11,caml_string_of_jsbytes(" in ["),[2,0,[12,93,0]]]]],
       caml_string_of_jsbytes("Missing layout field %S in [%s]")],
     __9_=
      [0,
       [11,caml_string_of_jsbytes("unzip_target: "),[2,0,0]],
       caml_string_of_jsbytes("unzip_target: %s")],
     __7_=[0,0,0],
     __8_=
      [0,
       [11,caml_string_of_jsbytes("drop_target skipping "),[2,0,0]],
       caml_string_of_jsbytes("drop_target skipping %s")],
     __1_=
      [0,
       [11,caml_string_of_jsbytes("result     : "),[2,0,0]],
       caml_string_of_jsbytes("result     : %s")],
     __2_=
      [0,
       [11,caml_string_of_jsbytes("available  : "),[2,0,0]],
       caml_string_of_jsbytes("available  : %s")],
     __3_=
      [0,
       [11,caml_string_of_jsbytes("desired stack failed"),0],
       caml_string_of_jsbytes("desired stack failed")],
     __4_=
      [0,
       [11,caml_string_of_jsbytes("not adapting failed stack"),0],
       caml_string_of_jsbytes("not adapting failed stack")],
     __5_=
      [0,
       [11,caml_string_of_jsbytes("desired     : "),[2,0,0]],
       caml_string_of_jsbytes("desired     : %s")],
     __6_=
      [0,
       [11,caml_string_of_jsbytes("current    : "),[2,0,0]],
       caml_string_of_jsbytes("current    : %s")],
     __U_=
      [0,
       [11,
        caml_string_of_jsbytes("fetch_target "),
        [2,0,[11,caml_string_of_jsbytes(" in ["),[2,0,[12,93,0]]]]],
       caml_string_of_jsbytes("fetch_target %s in [%s]")],
     __T_=
      [0,
       [11,caml_string_of_jsbytes("tag_top"),0],
       caml_string_of_jsbytes("tag_top")],
     __N_=[0,[3,[0,0,0]],0],
     __O_=[3,[0,0,0]],
     __P_=[3,[0,0,0]],
     __R_=[0,[3,[0,0,0]],0],
     __S_=[0,0],
     __Q_=[2,0],
     __K_=[15,1],
     __L_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),444,18],
     __J_=[15,1],
     __G_=
      [0,
       [11,caml_string_of_jsbytes("FAILED"),0],
       caml_string_of_jsbytes("FAILED")],
     __F_=
      [0,
       [11,
        caml_string_of_jsbytes("[ "),
        [2,0,[11,caml_string_of_jsbytes(" ]"),0]]],
       caml_string_of_jsbytes("[ %s ]")],
     __H_=[26,[0,0,0]],
     __I_=[26,[0,1,0]],
     __C_=
      [0,
       [11,caml_string_of_jsbytes("emit_instr: "),[15,0]],
       caml_string_of_jsbytes("emit_instr: %a")],
     __B_=
      [0,[11,caml_string_of_jsbytes("..."),0],caml_string_of_jsbytes("...")],
     __D_=[0,0],
     __E_=[0,0],
     __z_=[0,0],
     __A_=[0,0],
     __w_=[0,0],
     __x_=[0,0],
     __y_=[0,0],
     __v_=[0,0],
     __u_=[0,0,0,0],
     __t_=[1,[0,caml_string_of_jsbytes("__top__")]],
     __q_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),163,11],
     __r_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),158,12],
     __p_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),154,11],
     __m_=[0,0,1],
     __n_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),129,11],
     __o_=[0,caml_string_of_jsbytes("smartML/lib/compiler.ml"),133,11],
     __j_=
      [0,
       [11,caml_string_of_jsbytes("var("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("var(%s)")],
     __k_=
      [0,
       [11,caml_string_of_jsbytes("lambda_parameter("),[4,3,0,0,[12,41,0]]],
       caml_string_of_jsbytes("lambda_parameter(%i)")],
     __l_=
      [0,
       [11,
        caml_string_of_jsbytes("match_cons("),
        [2,0,[11,caml_string_of_jsbytes(")."),[2,0,0]]]],
       caml_string_of_jsbytes("match_cons(%s).%s")],
     __i_=[0,[15,0],caml_string_of_jsbytes("%a")],
     __d_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Compiler.ST_none"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Compiler.ST_none@ ")],
     __e_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     __f_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     __g_=
      [0,
       [12,
        40,
        [18,
         [1,
          [0,
           [11,caml_string_of_jsbytes("<2>"),0],
           caml_string_of_jsbytes("<2>")]],
         [11,
          caml_string_of_jsbytes("Compiler.ST_target"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],0]]]],
       caml_string_of_jsbytes("(@[<2>Compiler.ST_target@ ")],
     __h_=[0,[17,0,[12,41,0]],caml_string_of_jsbytes("@])")],
     _aej_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Type-error: make_signature expects bytes, not: "),
        [2,0,0]],
       caml_string_of_jsbytes
        ("Type-error: make_signature expects bytes, not: %s")],
     _aei_=[0,936573133,caml_string_of_jsbytes("Type error in secret key")],
     _ad1_=[0,[2,0,[12,91,[2,0,[12,93,0]]]],caml_string_of_jsbytes("%s[%s]")],
     _adW_=[0,936573133,caml_string_of_jsbytes("in")],
     _adX_=[0,936573133,caml_string_of_jsbytes("Bad ticketer in test_ticket")],
     _adB_=
      [0,
       [11,
        caml_string_of_jsbytes("Expected a list of pairs (g1, g2) "),
        [17,[0,caml_string_of_jsbytes("@ "),1,0],[2,0,0]]],
       caml_string_of_jsbytes("Expected a list of pairs (g1, g2) @ %s")],
     _adj_=
      [0,
       [11,
        caml_string_of_jsbytes("Error while concatenating string/bytes:"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("not a list of strings/bytes:"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],[2,0,0]]]]],
       caml_string_of_jsbytes
        ("Error while concatenating string/bytes:@ not a list of strings/bytes:@ %s")],
     _ac3_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),252,24],
     _ac4_=[0,caml_string_of_jsbytes("no storage")],
     _ac5_=
      [0,
       [11,caml_string_of_jsbytes("Missing global variable "),[2,0,0]],
       caml_string_of_jsbytes("Missing global variable %s")],
     _ac6_=
      [0,
       [11,caml_string_of_jsbytes("Not a variant argument: "),[2,0,0]],
       caml_string_of_jsbytes("Not a variant argument: %s")],
     _ac7_=
      [0,
       [11,
        caml_string_of_jsbytes("Missing var "),
        [2,0,[11,caml_string_of_jsbytes(" in env ["),[2,0,[12,93,0]]]]],
       caml_string_of_jsbytes("Missing var %s in env [%s]")],
     _ac8_=
      [0,
       [11,
        caml_string_of_jsbytes("Missing var "),
        [2,0,[11,caml_string_of_jsbytes(" in env ["),[2,0,[12,93,0]]]]],
       caml_string_of_jsbytes("Missing var %s in env [%s]")],
     _ac9_=
      [0,
       936573133,
       caml_string_of_jsbytes("Missing contract balance for id: ")],
     _ac__=[0,936573133,caml_string_of_jsbytes("Missing contract for id: ")],
     _ac$_=
      [0,
       936573133,
       caml_string_of_jsbytes("Missing contract storage for id: ")],
     _ada_=[0,936573133,caml_string_of_jsbytes("Missing contract for id: ")],
     _adc_=[0,caml_string_of_jsbytes("")],
     _adb_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),376,29],
     _add_=[0,936573133,caml_string_of_jsbytes("Missing contract for id: ")],
     _ade_=
      [0,
       936573133,
       caml_string_of_jsbytes("Missing scenario variable for id: ")],
     _adf_=
      [0,
       [11,
        caml_string_of_jsbytes("Error while concatenating string/bytes:"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("not a list:"),
          [17,[0,caml_string_of_jsbytes("@ "),1,0],[2,0,0]]]]],
       caml_string_of_jsbytes
        ("Error while concatenating string/bytes:@ not a list:@ %s")],
     _adg_=[0,936573133,caml_string_of_jsbytes(")")],
     _adh_=[0,936573133,caml_string_of_jsbytes("or")],
     _adi_=
      [0,
       936573133,
       caml_string_of_jsbytes("Bad type in concat (should apply to lists of ")],
     _adk_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),491,19],
     _adn_=
      [0,
       [11,caml_string_of_jsbytes("negateG1: "),[2,0,0]],
       caml_string_of_jsbytes("negateG1: %s")],
     _ado_=
      [0,
       [11,caml_string_of_jsbytes("negateG2: "),[2,0,0]],
       caml_string_of_jsbytes("negateG2: %s")],
     _adp_=
      [0,
       [11,caml_string_of_jsbytes("negateFr: "),[2,0,0]],
       caml_string_of_jsbytes("negateFr: %s")],
     _adl_=[0,936573133,caml_string_of_jsbytes("of value")],
     _adm_=
      [0,
       936573133,
       caml_string_of_jsbytes("Type-error: Cannot negate expression")],
     _adq_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _adr_=
      [0,
       936573133,
       caml_string_of_jsbytes("Could not pack bytes due to invalid content")],
     _ads_=
      [0,
       [11,caml_string_of_jsbytes("Unregistered delegate ("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("Unregistered delegate (%s)")],
     _adt_=[0,936573133,caml_string_of_jsbytes("Bad type for sp.len")],
     _adv_=
      [0,
       [11,caml_string_of_jsbytes("convertFrToInt: "),[2,0,0]],
       caml_string_of_jsbytes("convertFrToInt: %s")],
     _adu_=[0,936573133,caml_string_of_jsbytes("Cannot cast to Int")],
     _adw_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),694,19],
     _ady_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),707,19],
     _adx_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),708,17],
     _adz_=
      [0,
       [11,
        caml_string_of_jsbytes("Expected a list "),
        [17,[0,caml_string_of_jsbytes("@ "),1,0],[2,0,0]]],
       caml_string_of_jsbytes("Expected a list @ %s")],
     _adA_=
      [0,
       [11,caml_string_of_jsbytes("pairingCheck: "),[2,0,0]],
       caml_string_of_jsbytes("pairingCheck: %s")],
     _adC_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),760,17],
     _adD_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),522,19],
     _adE_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),502,19],
     _adF_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),508,19],
     _adG_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),516,19],
     _adH_=
      [0,
       [11,
        caml_string_of_jsbytes("Could not unpack bytes ("),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(") due to invalid content: "),
          [15,[12,46,0]]]]],
       caml_string_of_jsbytes
        ("Could not unpack bytes (%s) due to invalid content: %a.")],
     _adI_=
      [0,
       [11,
        caml_string_of_jsbytes("Missing field in record ["),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("] ["),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("] ["),
            [2,0,[11,caml_string_of_jsbytes("]."),0]]]]]]],
       caml_string_of_jsbytes("Missing field in record [%s] [%s] [%s].")],
     _adJ_=[0,0],
     _adK_=
      [0,
       [11,
        caml_string_of_jsbytes("Not a variant "),
        [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]],
       caml_string_of_jsbytes("Not a variant %s: %s")],
     _adL_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),832,19],
     _adN_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),932,24],
     _adM_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),936,19],
     _adO_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),952,19],
     _adP_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),890,21],
     _adQ_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),878,21],
     _adR_=
      [0,
       [11,caml_string_of_jsbytes("Range with 0 step"),0],
       caml_string_of_jsbytes("Range with 0 step")],
     _adS_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),998,27],
     _adT_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1024,19],
     _adU_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1037,19],
     _adV_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1053,19],
     _adY_=
      [0,
       [11,
        caml_string_of_jsbytes("Not a variant "),
        [2,0,[11,caml_string_of_jsbytes(" (from "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("Not a variant %s (from %s)")],
     _adZ_=
      [0,
       [11,
        caml_string_of_jsbytes("Not the proper variant constructor ["),
        [2,0,[11,caml_string_of_jsbytes("] != ["),[2,0,[12,93,0]]]]],
       caml_string_of_jsbytes
        ("Not the proper variant constructor [%s] != [%s]")],
     _ad0_=[0,936573133,caml_string_of_jsbytes("Message:")],
     _ad2_=[0,936573133,caml_string_of_jsbytes("Bad type while evaluating")],
     _ad3_=[0,caml_string_of_jsbytes("interpreter: layout")],
     _ad4_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1141,13],
     _ad5_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" is not a map: "),[2,0,0]]],
       caml_string_of_jsbytes("%s is not a map: %s")],
     _ad6_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1146,15],
     _ad7_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1297,26],
     _ad9_=[0,caml_string_of_jsbytes("interpreter: layout")],
     _ad8_=
      [0,
       [11,caml_string_of_jsbytes("Not a list or a map "),[2,0,0]],
       caml_string_of_jsbytes("Not a list or a map %s")],
     _ad__=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1267,17],
     _ad$_=[0,936573133,caml_string_of_jsbytes("wrong result for EContract:")],
     _aea_=
      [0,936573133,caml_string_of_jsbytes(") with only one entry point.")],
     _aeb_=[0,936573133,caml_string_of_jsbytes(") for contract (")],
     _aec_=[0,936573133,caml_string_of_jsbytes("Entry point annotation (")],
     _aed_=[0,936573133,caml_string_of_jsbytes("Please set a stable type.")],
     _aee_=[0,936573133,caml_string_of_jsbytes("instead of")],
     _aef_=[0,936573133,caml_string_of_jsbytes(").")],
     _aeg_=[0,936573133,caml_string_of_jsbytes("Wrong type for contract(")],
     _aeh_=
      [0,
       [11,
        caml_string_of_jsbytes("Error while slicing string/bytes: "),
        [2,0,0]],
       caml_string_of_jsbytes("Error while slicing string/bytes: %s")],
     _aek_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1254,17],
     _ael_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1259,17],
     _aem_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1342,20],
     _aen_=[0,936573133,caml_string_of_jsbytes("Sender is undefined")],
     _aeo_=[0,936573133,caml_string_of_jsbytes("Source is undefined")],
     _aep_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("Interpreter. sp.self is not available in this context: ")],
     _aeq_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("Interpreter. sp.self is not available in this context: ")],
     _aer_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("Interpreter. sp.self is not available in this context: ")],
     _aeu_=
      [0,
       [11,
        caml_string_of_jsbytes("Type-error: hash_key expects a key, not: "),
        [2,0,0]],
       caml_string_of_jsbytes("Type-error: hash_key expects a key, not: %s")],
     _aes_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1452,11],
     _aet_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1479,9],
     _aev_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1486,9],
     _aey_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Type-error: check_signature expects bytes (3rd argument), not: "),
        [2,0,0]],
       caml_string_of_jsbytes
        ("Type-error: check_signature expects bytes (3rd argument), not: %s")],
     _aex_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Type-error: check_signature expects a signature, not: "),
        [2,0,0]],
       caml_string_of_jsbytes
        ("Type-error: check_signature expects a signature, not: %s")],
     _aew_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Type-error: check_signature expects a key, not: "),
        [2,0,0]],
       caml_string_of_jsbytes
        ("Type-error: check_signature expects a key, not: %s")],
     _aez_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1529,9],
     _aeA_=[0,936573133,caml_string_of_jsbytes("is not a map")],
     _aeB_=[0,936573133,caml_string_of_jsbytes("GetItem")],
     _aeC_=[0,936573133,caml_string_of_jsbytes("Interpreter Error")],
     _aeT_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1881,51],
     _aeL_=[0,caml_string_of_jsbytes("match")],
     _aeD_=[0,[0,936573133,caml_string_of_jsbytes(")")],0],
     _aeE_=[0,936573133,caml_string_of_jsbytes("(")],
     _aeF_=[0,936573133,caml_string_of_jsbytes("Failure:")],
     _aeH_=[0,936573133,caml_string_of_jsbytes("Message:")],
     _aeI_=[0,936573133,caml_string_of_jsbytes("Wrong condition:")],
     _aeG_=
      [0,
       [11,
        caml_string_of_jsbytes("Failed condition ["),
        [2,0,[11,caml_string_of_jsbytes("] in line "),[2,0,0]]]],
       caml_string_of_jsbytes("Failed condition [%s] in line %s")],
     _aeJ_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1725,13],
     _aeK_=[0,caml_string_of_jsbytes("match")],
     _aeM_=[0,caml_string_of_jsbytes("match")],
     _aeN_=
      [0,
       [11,
        caml_string_of_jsbytes("Line "),
        [2,
         0,
         [11,caml_string_of_jsbytes(": Cannot assign to '"),[2,0,[12,39,0]]]]],
       caml_string_of_jsbytes("Line %s: Cannot assign to '%s'")],
     _aeP_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1746,16],
     _aeO_=
      [0,
       [11,
        caml_string_of_jsbytes("Line "),
        [2,
         0,
         [11,caml_string_of_jsbytes(": Cannot assign to '"),[2,0,[12,39,0]]]]],
       caml_string_of_jsbytes("Line %s: Cannot assign to '%s'")],
     _aeQ_=
      [0,
       [11,
        caml_string_of_jsbytes("Line "),
        [2,
         0,
         [11,caml_string_of_jsbytes(": Cannot assign to '"),[2,0,[12,39,0]]]]],
       caml_string_of_jsbytes("Line %s: Cannot assign to '%s'")],
     _aeR_=
      [0,
       [11,
        caml_string_of_jsbytes("Line "),
        [2,
         0,
         [11,caml_string_of_jsbytes(": Cannot remove from '"),[2,0,[12,39,0]]]]],
       caml_string_of_jsbytes("Line %s: Cannot remove from '%s'")],
     _aeS_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1833,13],
     _aeU_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1914,47],
     _aeX_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),2037,36],
     _aeZ_=[0,936573133,caml_string_of_jsbytes("Missing storage in contract")],
     _ae0_=[0,936573133,caml_string_of_jsbytes("Interpreter Error")],
     _aeY_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),1990,24],
     _aeW_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),2045,25],
     _aeV_=[0,936573133,caml_string_of_jsbytes("Failure:")],
     _ae1_=
      [0,
       [11,caml_string_of_jsbytes("Channel not found: "),[2,0,0]],
       caml_string_of_jsbytes("Channel not found: %s")],
     _ae2_=[0,caml_string_of_jsbytes("smartML/lib/interpreter.ml"),2095,11],
     _ac1_=[0,936573133,caml_string_of_jsbytes("Command doesn't return unit")],
     _ac0_=[0,caml_string_of_jsbytes("no storage")],
     _acX_=
      [0,
       [11,
        caml_string_of_jsbytes("Line "),
        [2,
         0,
         [11,caml_string_of_jsbytes(": Impossible: attribute not found"),0]]],
       caml_string_of_jsbytes("Line %s: Impossible: attribute not found")],
     _acY_=
      [0,
       [11,
        caml_string_of_jsbytes("Line "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": Key '"),
          [2,0,[11,caml_string_of_jsbytes("' not found."),0]]]]],
       caml_string_of_jsbytes("Line %s: Key '%s' not found.")],
     _acZ_=
      [0,
       [11,
        caml_string_of_jsbytes("Line "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": Index '"),
          [4,0,0,0,[11,caml_string_of_jsbytes("' out of range."),0]]]]],
       caml_string_of_jsbytes("Line %s: Index '%d' out of range.")],
     _acV_=
      [0,936573133,caml_string_of_jsbytes("Missing environment to compute")],
     _ae3_=[0,936573133,caml_string_of_jsbytes("sp.reduce")],
     _ae8_=
      [0,
       [11,caml_string_of_jsbytes("Literal format error: "),[15,0]],
       caml_string_of_jsbytes("Literal format error: %a")],
     _ae$_=[0,caml_string_of_jsbytes("smartML/lib/import.ml"),267,18],
     _ae__=
      [0,
       [11,caml_string_of_jsbytes("Cannot parse inline michelson "),[2,0,0]],
       caml_string_of_jsbytes("Cannot parse inline michelson %s")],
     _afe_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("sp.bounded can only be applied to simple literals (integers, strings, addresses, etc.), not containers (records, variants, lists, etc.) nor general expressions.")],
     _afd_=
      [0,
       [11,
        caml_string_of_jsbytes("make_signature: Wrong message format : "),
        [3,0,[11,caml_string_of_jsbytes(" (l. "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes
        ("make_signature: Wrong message format : %S (l. %s)")],
     _afc_=
      [0,
       [11,caml_string_of_jsbytes("match_cons_"),[2,0,0]],
       caml_string_of_jsbytes("match_cons_%s")],
     _afb_=
      [0,
       [11,
        caml_string_of_jsbytes("Only supported tuples are pairs: "),
        [2,0,0]],
       caml_string_of_jsbytes("Only supported tuples are pairs: %s")],
     _afa_=
      [0,
       [11,
        caml_string_of_jsbytes("Expression format error (a "),
        [4,3,0,0,[11,caml_string_of_jsbytes(") "),[2,0,0]]]],
       caml_string_of_jsbytes("Expression format error (a %i) %s")],
     _aff_=
      [0,
       [11,caml_string_of_jsbytes("import_map_entry: '"),[2,0,[12,39,0]]],
       caml_string_of_jsbytes("import_map_entry: '%s'")],
     _afg_=[0,caml_string_of_jsbytes("smartML/lib/import.ml"),835,19],
     _afh_=[0,936573133,caml_string_of_jsbytes("... x ...")],
     _afi_=[0,936573133,caml_string_of_jsbytes("    ...")],
     _afj_=[0,936573133,caml_string_of_jsbytes("with x:")],
     _afk_=[0,936573133,caml_string_of_jsbytes("x = sp.bind_block('x'):")],
     _afl_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("Command format error. sp.bind_block() can be used as follows:")],
     _afm_=
      [0,
       [11,caml_string_of_jsbytes("match_cons_"),[2,0,0]],
       caml_string_of_jsbytes("match_cons_%s")],
     _afo_=[0,caml_string_of_jsbytes("smartML/lib/import.ml"),1114,25],
     _afn_=[0,caml_string_of_jsbytes("smartML/lib/import.ml"),1125,15],
     _ae9_=
      [0,
       [11,caml_string_of_jsbytes("Contract_id format error: "),[15,0]],
       caml_string_of_jsbytes("Contract_id format error: %a")],
     _ae6_=[0,1],
     _ae7_=[0,0],
     _ae5_=
      [0,
       [11,caml_string_of_jsbytes("Bad attribute format "),[3,0,0]],
       caml_string_of_jsbytes("Bad attribute format %S")],
     _ae4_=
      [0,
       [11,caml_string_of_jsbytes("Bad attribute format "),[3,0,0]],
       caml_string_of_jsbytes("Bad attribute format %S")],
     _afp_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _afq_=[0,936573133,caml_string_of_jsbytes("Flag parse errors")],
     _afr_=[0,caml_string_of_jsbytes("smartML/lib/scenario.ml"),126,19],
     _afR_=[0,caml_string_of_jsbytes("smartML/lib/tezos_scenario.ml"),593,24],
     _afQ_=[0,936573133,caml_string_of_jsbytes("Computing address")],
     _afP_=[0,936573133,caml_string_of_jsbytes("Computing valid")],
     _afO_=[0,936573133,caml_string_of_jsbytes("Computing amount")],
     _afM_=
      [0,
       [11,caml_string_of_jsbytes("compute store "),[2,0,0]],
       caml_string_of_jsbytes("compute store %s")],
     _afK_=[0,936573133,caml_string_of_jsbytes("Computing expression")],
     _afH_=
      [0,
       [11,caml_string_of_jsbytes("New contract: "),[2,0,0]],
       caml_string_of_jsbytes("New contract: %s")],
     _afG_=[0,caml_string_of_jsbytes("smartML/lib/tezos_scenario.ml"),505,33],
     _afF_=
      [0,
       [11,
        caml_string_of_jsbytes("New contract "),
        [2,0,[11,caml_string_of_jsbytes(" (l. "),[4,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes("New contract %s (l. %d)")],
     _afI_=[0,caml_string_of_jsbytes("smartML/lib/tezos_scenario.ml"),495,20],
     _afJ_=
      [0,
       [11,
        caml_string_of_jsbytes("Compute variable "),
        [4,3,0,0,[11,caml_string_of_jsbytes(" (l. "),[4,0,0,0,[12,41,0]]]]],
       caml_string_of_jsbytes("Compute variable %i (l. %d)")],
     _afL_=
      [0,
       [11,caml_string_of_jsbytes("compute tezos"),0],
       caml_string_of_jsbytes("compute tezos")],
     _afN_=
      [0,
       [11,
        caml_string_of_jsbytes("Calling message "),
        [2,
         0,
         [12,
          35,
          [2,0,[11,caml_string_of_jsbytes(" (l. "),[4,0,0,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("Calling message %s#%s (l. %d)")],
     _afU_=[0,caml_string_of_jsbytes("smartML/lib/tezos_scenario.ml"),591,24],
     _afS_=[0,936573133,caml_string_of_jsbytes("Computing params")],
     _afT_=[0,0],
     _afV_=[0,caml_string_of_jsbytes("smartML/lib/tezos_scenario.ml"),536,18],
     _afW_=
      [0,
       [11,
        caml_string_of_jsbytes("Verifying condition (l. "),
        [4,0,0,0,[12,41,0]]],
       caml_string_of_jsbytes("Verifying condition (l. %d)")],
     _afE_=[0,[12,107,[2,0,0]],caml_string_of_jsbytes("k%s")],
     _afB_=[0,[12,40,[2,0,[12,41,0]]],caml_string_of_jsbytes("(%s)")],
     _afC_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _afD_=
      [0,
       [11,caml_string_of_jsbytes("Pair "),[15,[12,32,[15,0]]]],
       caml_string_of_jsbytes("Pair %a %a")],
     _afz_=
      [0,
       [11,caml_string_of_jsbytes("missing variable: "),[3,0,0]],
       caml_string_of_jsbytes("missing variable: %S")],
     _afA_=
      [0,
       [11,caml_string_of_jsbytes("missing storage: "),[3,0,0]],
       caml_string_of_jsbytes("missing storage: %S")],
     _afy_=
      [0,
       [11,
        caml_string_of_jsbytes("===== Computed: "),
        [2,0,[11,caml_string_of_jsbytes(" ======"),0]]],
       caml_string_of_jsbytes("===== Computed: %s ======")],
     _afw_=[0,[12,118,[4,3,0,0,0]],caml_string_of_jsbytes("v%i")],
     _afv_=[0,[12,107,[2,0,0]],caml_string_of_jsbytes("k%s")],
     _afu_=[0,[12,107,[2,0,0]],caml_string_of_jsbytes("k%s")],
     _aft_=[0,[12,118,[4,3,0,0,0]],caml_string_of_jsbytes("v%i")],
     _afx_=[0,[3,2],0],
     _agc_=
      [0,
       [12,40,[2,0,[12,32,[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(%s %s)")],
     _aga_=
      [0,
       [12,40,[2,0,[12,32,[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(%s %s)")],
     _af1_=
      [0,
       [11,caml_string_of_jsbytes("(tvar "),[3,0,[12,41,0]]],
       caml_string_of_jsbytes("(tvar %S)")],
     _af2_=[0,caml_string_of_jsbytes("smartML/lib/export.ml"),22,8],
     _af3_=
      [0,
       [11,caml_string_of_jsbytes("(option "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(option %s)")],
     _af4_=
      [0,
       [11,caml_string_of_jsbytes("(list "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(list %s)")],
     _af5_=
      [0,
       [11,caml_string_of_jsbytes("(set "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(set %s)")],
     _af6_=
      [0,
       [11,caml_string_of_jsbytes("(contract "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(contract %s)")],
     _af7_=
      [0,
       [11,caml_string_of_jsbytes("(ticket "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(ticket %s)")],
     _af8_=
      [0,
       [11,caml_string_of_jsbytes("(map "),[2,0,[12,32,[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(map %s %s)")],
     _af9_=
      [0,
       [11,caml_string_of_jsbytes("(lambda "),[2,0,[12,32,[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(lambda %s %s)")],
     _af__=[0,caml_string_of_jsbytes("smartML/lib/export.ml"),94,40],
     _af$_=
      [0,
       [11,
        caml_string_of_jsbytes("(bounded "),
        [2,0,[12,32,[2,0,[12,32,[2,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("(bounded %s %s %s)")],
     _agb_=
      [0,
       [11,
        caml_string_of_jsbytes("(record ("),
        [2,0,[11,caml_string_of_jsbytes(") "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(record (%s) %s)")],
     _agd_=
      [0,
       [11,
        caml_string_of_jsbytes("(variant ("),
        [2,0,[11,caml_string_of_jsbytes(") "),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(variant (%s) %s)")],
     _age_=
      [0,
       [11,caml_string_of_jsbytes("(tuple "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(tuple %s)")],
     _agf_=
      [0,
       [11,caml_string_of_jsbytes("(sapling_state "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(sapling_state %s)")],
     _agg_=
      [0,
       [11,caml_string_of_jsbytes("(sapling_transaction "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(sapling_transaction %s)")],
     _afZ_=
      [0,
       [12,40,[2,0,[12,32,[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("(%s %s)")],
     _afX_=
      [0,
       [11,
        caml_string_of_jsbytes("(***"),
        [2,0,[11,caml_string_of_jsbytes("***)"),0]]],
       caml_string_of_jsbytes("(***%s***)")],
     _afY_=
      [0,
       [11,
        caml_string_of_jsbytes("(***"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" as "),
          [2,0,[11,caml_string_of_jsbytes("***)"),0]]]]],
       caml_string_of_jsbytes("(***%s as %s***)")],
     _af0_=
      [0,
       [11,caml_string_of_jsbytes("(Some "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(Some %s)")],
     _agk_=
      [0,
       [11,caml_string_of_jsbytes("json_of_value: "),[2,0,0]],
       caml_string_of_jsbytes("json_of_value: %s")],
     _agl_=[0,0],
     _agm_=[0,0],
     _agn_=[0,caml_string_of_jsbytes("smartML/lib/metadata.ml"),91,19],
     _agj_=[2,caml_string_of_jsbytes("")],
     _agi_=
      [0,
       [11,caml_string_of_jsbytes("json_of_literal: "),[2,0,0]],
       caml_string_of_jsbytes("json_of_literal: %s")],
     _agh_=[0,[2,0,[12,37,[2,0,0]]],caml_string_of_jsbytes("%s%%%s")],
     _ago_=
      [0,
       [11,caml_string_of_jsbytes("<div "),[2,0,[12,62,0]]],
       caml_string_of_jsbytes("<div %s>")],
     _ahg_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<button type='button' onClick=\"smartmlCtx.call_exn_handler('addInputGui', '"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("', '"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes
             ("', smartmlCtx.call_exn_handler('importType', '"),
            [2,
             0,
             [11,
              caml_string_of_jsbytes("'))\">"),
              [2,
               0,
               [11,
                caml_string_of_jsbytes("<\/button>\n<div id='"),
                [2,0,partial$1]]]]]]]]]],
       caml_string_of_jsbytes
        ("<button type='button' onClick=\"smartmlCtx.call_exn_handler('addInputGui', '%s', '%s', smartmlCtx.call_exn_handler('importType', '%s'))\">%s<\/button>\n<div id='%s'><\/div>")],
     _aha_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<button type='button' class='explorer_button' onClick=\"var t = smartmlCtx.call_exn_handler('importType', '"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           ("'); var tstorage = smartmlCtx.call_exn_handler('importType', '"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes
             ("');if (t) smartmlCtx.call_exn_handler('callGui', '"),
            [2,
             0,
             [11,
              caml_string_of_jsbytes("', "),
              [4,3,0,0,[11,caml_string_of_jsbytes(", '"),[2,0,partial$2]]]]]]]]]],
       caml_string_of_jsbytes
        ("<button type='button' class='explorer_button' onClick=\"var t = smartmlCtx.call_exn_handler('importType', '%s'); var tstorage = smartmlCtx.call_exn_handler('importType', '%s');if (t) smartmlCtx.call_exn_handler('callGui', '%s', %i, '%s', t, tstorage,%i)\">%s<\/button><\/form>\n<div id='%s'><\/div>")],
     _ahb_=[0,caml_string_of_jsbytes("<h4>Transaction<\/h4>")],
     _ahc_=[0,caml_string_of_jsbytes("<h4>Edit Storage<\/h4>")],
     _ahd_=[0,caml_string_of_jsbytes("<h4>Context<\/h4>")],
     _ahe_=
      [0,
       [11,caml_string_of_jsbytes("<form><h3>Simulation Builder<\/h3>"),0],
       caml_string_of_jsbytes("<form><h3>Simulation Builder<\/h3>")],
     _ahf_=[0,caml_string_of_jsbytes("class='simulationBuilder'")],
     _ag8_=[0,caml_string_of_jsbytes("class='tabcontentshow'")],
     _ag9_=[0,caml_string_of_jsbytes("")],
     _ag3_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<span class='partialType'>Warning: unknown types or type errors: "),
        [2,0,[11,caml_string_of_jsbytes(".<\/span><br>"),0]]],
       caml_string_of_jsbytes
        ("<span class='partialType'>Warning: unknown types or type errors: %s.<\/span><br>")],
     _ag2_=[0,0],
     _agZ_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ag0_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='white-space-pre'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes("<div class='white-space-pre'>%s<\/div>")],
     _ag1_=[0,0],
     _ag4_=[0,caml_string_of_jsbytes("")],
     _ag5_=[0,0],
     _ag6_=[0,0],
     _ag7_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='contract'><h3>Storage:<\/h3>"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("<p><h3>Entry points:<\/h3>"),
          [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]],
       caml_string_of_jsbytes
        ("<div class='contract'><h3>Storage:<\/h3>%s<p><h3>Entry points:<\/h3>%s<\/div>")],
     _ag__=[0,caml_string_of_jsbytes("class='tabs'")],
     _agX_=
      [0,
       [11,
        caml_string_of_jsbytes
         ('<button class="text-button" onClick=\'showLine('),
        [4,
         3,
         0,
         0,
         [11,
          caml_string_of_jsbytes(")'>(line "),
          [4,3,0,0,[11,caml_string_of_jsbytes(")<\/button>"),0]]]]],
       caml_string_of_jsbytes
        ("<button class=\"text-button\" onClick='showLine(%i)'>(line %i)<\/button>")],
     _agY_=[0,caml_string_of_jsbytes("(no location info)")],
     _agW_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<button class='centertextbutton extramarginbottom' onClick='smartpyContext.gotoOrigination(contractSizes"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(".innerHTML, storageCode"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes(".innerText, contractCode"),
            [2,
             0,
             [11,
              caml_string_of_jsbytes(".innerText, storageCodeJson"),
              [2,
               0,
               [11,
                caml_string_of_jsbytes(".innerText, contractCodeJson"),
                [2,0,partial$3]]]]]]]]]],
       caml_string_of_jsbytes
        ("<button class='centertextbutton extramarginbottom' onClick='smartpyContext.gotoOrigination(contractSizes%s.innerHTML, storageCode%s.innerText, contractCode%s.innerText, storageCodeJson%s.innerText, contractCodeJson%s.innerText,storageCode%s.innerHTML, contractCode%s.innerHTML, storageCodeJson%s.innerHTML, contractCodeJson%s.innerHTML)'>Deploy Michelson Contract<\/button>%s")],
     _agI_=[0,caml_string_of_jsbytes("<h2>Michelson Code<\/h2>")],
     _agF_=[0,caml_string_of_jsbytes("<h2>Michelson Code<\/h2>")],
     _agC_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _agD_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _agE_=[0,caml_string_of_jsbytes("white-space-pre-wrap")],
     _agG_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='white-space-pre'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes("<div class='white-space-pre'>%s<\/div>")],
     _agV_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='white-space-pre'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes("<div class='white-space-pre'>%s<\/div>")],
     _agH_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='white-space-pre'>Error: "),
        [2,0,[12,10,[2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]],
       caml_string_of_jsbytes
        ("<div class='white-space-pre'>Error: %s\n%s<\/div>")],
     _agT_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _agU_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='white-space-pre'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes("<div class='white-space-pre'>%s<\/div>")],
     _agJ_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='white-space-pre'>Error: "),
        [2,0,[12,10,[2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]],
       caml_string_of_jsbytes
        ("<div class='white-space-pre'>Error: %s\n%s<\/div>")],
     _agK_=[0,caml_string_of_jsbytes("<h2>JSON Representation<\/h2>")],
     _agL_=[0,caml_string_of_jsbytes("<h2>JSON Representation<\/h2>")],
     _agM_=[0,caml_string_of_jsbytes("<h2>Initial Storage<\/h2>")],
     _agN_=[0,caml_string_of_jsbytes("")],
     _agO_=[0,caml_string_of_jsbytes("")],
     _agP_=[0,caml_string_of_jsbytes("<h2>Initial Storage<\/h2>")],
     _agQ_=[0,caml_string_of_jsbytes("<h2>Sizes<\/h2>")],
     _agR_=[0,0],
     _agS_=[0,0],
     _agx_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _agy_=
      [0,
       [11,
        caml_string_of_jsbytes("<tr><td class='pad10'><span class='item'>"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (": <\/span><\/td><td class='pad10'><div class='progress' style='height: 20px; width: 150px;'><div class='progress-bar' style='width:"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes
             (";' role='progressbar' style='aria-valuenow='10'><\/div><\/div><\/td><td class='pad10, code_right'>"),
            [4,0,0,0,[11,caml_string_of_jsbytes(" Bytes<\/td><\/tr>"),0]]]]]]],
       caml_string_of_jsbytes
        ("<tr><td class='pad10'><span class='item'>%s: <\/span><\/td><td class='pad10'><div class='progress' style='height: 20px; width: 150px;'><div class='progress-bar' style='width:%s;' role='progressbar' style='aria-valuenow='10'><\/div><\/div><\/td><td class='pad10, code_right'>%d Bytes<\/td><\/tr>")],
     _agz_=
      [0,
       [11,
        caml_string_of_jsbytes("Big map originations ("),
        [4,3,0,0,[12,41,0]]],
       caml_string_of_jsbytes("Big map originations (%i)")],
     _agA_=
      [0,
       [11,
        caml_string_of_jsbytes("<table>"),
        [2,
         0,
         [2,
          0,
          [2,
           0,
           [2,
            0,
            [2,0,[2,0,[2,0,[2,0,[11,caml_string_of_jsbytes("<\/table>"),0]]]]]]]]]],
       caml_string_of_jsbytes("<table>%s%s%s%s%s%s%s%s<\/table>")],
     _agB_=
      [0,
       [11,
        caml_string_of_jsbytes("<table>"),
        [2,0,[2,0,[2,0,[11,caml_string_of_jsbytes("<\/table>"),0]]]]],
       caml_string_of_jsbytes("<table>%s%s%s<\/table>")],
     _agw_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<div class='menu'> <button onClick='copyMichelson(this);'>Copy<\/button><\/div><div id='"),
        [2,
         0,
         [2,
          0,
          [11,
           caml_string_of_jsbytes("' class='michelson "),
           [2,
            0,
            [11,
             caml_string_of_jsbytes("'>"),
             [15,[11,caml_string_of_jsbytes("<\/div>"),0]]]]]]]],
       caml_string_of_jsbytes
        ("<div class='menu'> <button onClick='copyMichelson(this);'>Copy<\/button><\/div><div id='%s%s' class='michelson %s'>%a<\/div>")],
     _agv_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<div class='tabs'><div class='tab'><span class='title'>"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("<\/span>"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("<\/div>"),
            [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]]]],
       caml_string_of_jsbytes
        ("<div class='tabs'><div class='tab'><span class='title'>%s<\/span>%s<\/div>%s<\/div>")],
     _agr_=
      [0,
       [11,
        caml_string_of_jsbytes("openTabLazy(event, "),
        [4,
         3,
         0,
         0,
         [11,
          caml_string_of_jsbytes(", "),
          [4,3,0,0,[11,caml_string_of_jsbytes(");"),0]]]]],
       caml_string_of_jsbytes("openTabLazy(event, %i, %i);")],
     _agu_=
      [0,
       [11,
        caml_string_of_jsbytes("openTab(event, "),
        [4,3,0,0,[11,caml_string_of_jsbytes(");"),0]]],
       caml_string_of_jsbytes("openTab(event, %i);")],
     _ags_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<button name='button_generatedMichelson' class='tablinks"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("' onclick='"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("'>"),
            [2,0,[11,caml_string_of_jsbytes("<\/button>"),0]]]]]]],
       caml_string_of_jsbytes
        ("<button name='button_generatedMichelson' class='tablinks%s' onclick='%s'>%s<\/button>")],
     _agt_=
      [0,
       [11,
        caml_string_of_jsbytes("class='tabcontent' style='display: "),
        [2,0,[11,caml_string_of_jsbytes(";'"),0]]],
       caml_string_of_jsbytes("class='tabcontent' style='display: %s;'")],
     _agq_=[0,caml_string_of_jsbytes("")],
     _agp_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ahi_=
      [0,
       [11,
        caml_string_of_jsbytes("<h4>SubSteps<\/h4><div class='steps'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes
        ("<h4>SubSteps<\/h4><div class='steps'>%s<\/div>")],
     _ahj_=
      [0,
       [11,caml_string_of_jsbytes("<h4>Locals<\/h4> "),[2,0,0]],
       caml_string_of_jsbytes("<h4>Locals<\/h4> %s")],
     _ahk_=
      [0,
       [11,caml_string_of_jsbytes("<h4>Elements<\/h4> "),[2,0,0]],
       caml_string_of_jsbytes("<h4>Elements<\/h4> %s")],
     _ahl_=
      [0,
       [11,caml_string_of_jsbytes("<h4>Iterators<\/h4> "),[2,0,0]],
       caml_string_of_jsbytes("<h4>Iterators<\/h4> %s")],
     _ahm_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='steps'><h4>Command "),
        [15,
         [11,
          caml_string_of_jsbytes("<\/h4><div class='white-space-pre-wrap'>"),
          [2,
           0,
           [11,
            caml_string_of_jsbytes("<\/div>"),
            [2,
             0,
             [2,
              0,
              [2,
               0,
               [2,
                0,
                [11,caml_string_of_jsbytes("<h4>Storage<\/h4>"),partial$4]]]]]]]]]],
       caml_string_of_jsbytes
        ("<div class='steps'><h4>Command %a<\/h4><div class='white-space-pre-wrap'>%s<\/div>%s%s%s%s<h4>Storage<\/h4>%s<\/div>")],
     _ahv_=[0,caml_string_of_jsbytes(""),-1],
     _ahn_=
      [0,
       [11,
        caml_string_of_jsbytes("<h3>Steps<\/h3><div>"),
        [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes("<h3>Steps<\/h3><div>%s<\/div>")],
     _aho_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='execMessage execMessage"),
        [2,
         0,
         [2,
          0,
          [11,
           caml_string_of_jsbytes("'>"),
           [2,
            0,
            [11,
             caml_string_of_jsbytes("<h3>Transaction ["),
             [2,
              0,
              [11,
               caml_string_of_jsbytes("] by ["),
               [2,
                0,
                [11,caml_string_of_jsbytes("] at time [timestamp("),partial$6]]]]]]]]]],
       caml_string_of_jsbytes
        ("<div class='execMessage execMessage%s%s'>%s<h3>Transaction [%s] by [%s] at time [timestamp(%s)] to %s<\/h3>%s<h3>Balance: %s<\/h3>%s<\/div>%s(<button class='text-button' onClick='showLine(%i)'>line %i<\/button>)")],
     _ahp_=[0,caml_string_of_jsbytes("white-space-pre-wrap")],
     _ahq_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='white-space-pre'>"),
        [15,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes("<div class='white-space-pre'>%a<\/div>")],
     _ahr_=[0,0],
     _ahu_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Warning: private entry point, showing only entry point specific Michelson. "),
        [2,0,0]],
       caml_string_of_jsbytes
        ("Warning: private entry point, showing only entry point specific Michelson. %s")],
     _ahs_=[0,caml_string_of_jsbytes("")],
     _aht_=[0,0],
     _ahw_=
      [0,
       [11,
        caml_string_of_jsbytes("<h3>Operations:<\/h3>"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("<h3>Storage:<\/h3><div class='subtype'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]],
       caml_string_of_jsbytes
        ("<h3>Operations:<\/h3>%s<h3>Storage:<\/h3><div class='subtype'>%s<\/div>")],
     _ahx_=
      [0,
       [11,caml_string_of_jsbytes("<h3>Error:<\/h3>"),[2,0,0]],
       caml_string_of_jsbytes("<h3>Error:<\/h3>%s")],
     _ahh_=[0,[15,0],caml_string_of_jsbytes("%a")],
     _ahB_=[0,caml_string_of_jsbytes("smartML/lib/rewriter.ml"),51,25],
     _ahA_=[0,caml_string_of_jsbytes("smartML/lib/rewriter.ml"),50,28],
     _ahG_=[0,0],
     _ahI_=[0,caml_string_of_jsbytes("smartML/lib/decompiler.ml"),357,25],
     _ahH_=
      [0,
       [11,caml_string_of_jsbytes("to_cmd: "),[15,0]],
       caml_string_of_jsbytes("to_cmd: %a")],
     _ahJ_=
      [0,
       [11,
        caml_string_of_jsbytes("assign_to: lhs "),
        [15,[11,caml_string_of_jsbytes(" rhs "),[15,0]]]],
       caml_string_of_jsbytes("assign_to: lhs %a rhs %a")],
     _ahK_=[0,caml_string_of_jsbytes("smartML/lib/decompiler.ml"),475,20],
     _ahP_=
      [0,
       [11,caml_string_of_jsbytes("ep"),[4,0,0,0,0]],
       caml_string_of_jsbytes("ep%d")],
     _ahO_=[0,caml_string_of_jsbytes("smartML/lib/decompiler.ml"),506,14],
     _ahN_=[0,caml_string_of_jsbytes("__parameter")],
     _ahM_=[0,caml_string_of_jsbytes("smartML/lib/decompiler.ml"),494,9],
     _ahF_=[0,caml_string_of_jsbytes("smartML/lib/decompiler.ml"),179,11],
     _ahE_=[0,caml_string_of_jsbytes("smartML/lib/decompiler.ml"),110,11],
     _ahD_=[0,caml_string_of_jsbytes("smartML/lib/decompiler.ml"),104,9],
     _ahC_=
      [0,
       [11,caml_string_of_jsbytes("[Error: "),[2,0,[12,93,0]]],
       caml_string_of_jsbytes("[Error: %s]")],
     _ai3_=[0,14832,0],
     _ai4_=[0,936573133,caml_string_of_jsbytes("Error in Scenario")],
     _ai2_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("<div style='border: double; padding: 5px; margin-bottom: 10px'>"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("<\/br>"),
          [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]]]],
       caml_string_of_jsbytes
        ("<div style='border: double; padding: 5px; margin-bottom: 10px'>%s<\/br>%s<\/div>")],
     _aiJ_=[0,936573133,caml_string_of_jsbytes("Computing valid")],
     _aiI_=[0,936573133,caml_string_of_jsbytes("Computing exception")],
     _aiK_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("Unexpected error in transaction, please use .run(valid=False, ..)")],
     _aiL_=
      [0,
       [11,caml_string_of_jsbytes(" -> !!! Unexpected ERROR !!! "),[2,0,0]],
       caml_string_of_jsbytes(" -> !!! Unexpected ERROR !!! %s")],
     _aiM_=
      [0,
       106380200,
       caml_string_of_jsbytes("Reverted transaction - unexpected error")],
     _aiN_=
      [0,
       [11,
        caml_string_of_jsbytes(" -> --- Expected failure in transaction --- "),
        [2,0,0]],
       caml_string_of_jsbytes
        (" -> --- Expected failure in transaction --- %s")],
     _aiO_=[0,106380200,caml_string_of_jsbytes("Reverted transaction")],
     _aiP_=[0,936573133,caml_string_of_jsbytes("Expected:")],
     _aiQ_=[0,936573133,caml_string_of_jsbytes("Received:")],
     _aiR_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("Wrong or unsupported exception matching (expected failure in transaction)")],
     _aiS_=
      [0,
       [11,
        caml_string_of_jsbytes
         (" -> !!! Wrong or unsupported exception matching !!! Expected failure in transaction --- "),
        [2,0,0]],
       caml_string_of_jsbytes
        (" -> !!! Wrong or unsupported exception matching !!! Expected failure in transaction --- %s")],
     _aiT_=
      [0,
       106380200,
       caml_string_of_jsbytes
        ("Reverted transaction - wrong or unsupported exception matching")],
     _aiU_=
      [0,
       [11,
        caml_string_of_jsbytes(" -> --- Expected failure in transaction --- "),
        [2,0,0]],
       caml_string_of_jsbytes
        (" -> --- Expected failure in transaction --- %s")],
     _aiV_=[0,106380200,caml_string_of_jsbytes("Reverted transaction")],
     _aiW_=
      [0,
       936573133,
       caml_string_of_jsbytes
        ("Unexpected Exception declaration in valid operation, please remove the exception declaration.")],
     _aiX_=
      [0,
       [11,
        caml_string_of_jsbytes
         (" -> !!! Unexpected Exception declaration in valid operation !!!"),
        0],
       caml_string_of_jsbytes
        (" -> !!! Unexpected Exception declaration in valid operation !!!")],
     _aiY_=
      [0,
       106380200,
       caml_string_of_jsbytes("Reverted transaction - unexpected error")],
     _aiZ_=
      [0,
       936573133,
       caml_string_of_jsbytes("Expected error in transaction but valid.")],
     _ai0_=
      [0,
       [11,caml_string_of_jsbytes(" -> !!! Valid but expected ERROR !!!"),0],
       caml_string_of_jsbytes(" -> !!! Valid but expected ERROR !!!")],
     _ai1_=[0,72682334,caml_string_of_jsbytes("Valid but expected ERROR")],
     _aiG_=
      [0,
       [11,caml_string_of_jsbytes(" ("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes(" (%s)")],
     _aiF_=
      [0,
       [11,
        caml_string_of_jsbytes("Follow-up-transfer: "),
        [2,0,[11,caml_string_of_jsbytes(" ("),[2,0,[12,41,[2,0,0]]]]]],
       caml_string_of_jsbytes("Follow-up-transfer: %s (%s)%s")],
     _aiA_=[0,936573133,caml_string_of_jsbytes("Missing template id")],
     _aiB_=[0,936573133,caml_string_of_jsbytes("not found")],
     _aiC_=[0,936573133,caml_string_of_jsbytes("Contract id")],
     _aiv_=
      [0,
       [2,
        0,
        [11,caml_string_of_jsbytes("/step_"),[4,0,[0,2,3],0,[12,95,[2,0,0]]]]],
       caml_string_of_jsbytes("%s/step_%03d_%s")],
     _aiw_=
      [0,
       [11,caml_string_of_jsbytes(" => "),[2,0,[12,32,[4,0,0,0,0]]]],
       caml_string_of_jsbytes(" => %s %d")],
     _aih_=[0,936573133,caml_string_of_jsbytes("Computing chain_id")],
     _aif_=[0,936573133,caml_string_of_jsbytes("Computing amount")],
     _aie_=[0,936573133,caml_string_of_jsbytes("Computing level")],
     _aid_=[0,936573133,caml_string_of_jsbytes("Computing now")],
     _aib_=[0,936573133,caml_string_of_jsbytes("Computing expression")],
     _aic_=
      [0,caml_string_of_jsbytes("smartML/lib/smartml_scenario.ml"),550,14],
     _aig_=[0,936573133,caml_string_of_jsbytes("Computing params")],
     _aii_=[0,936573133,caml_string_of_jsbytes("Python Error")],
     _aij_=
      [0,
       [11,caml_string_of_jsbytes(" !!! Python Error: "),[2,0,0]],
       caml_string_of_jsbytes(" !!! Python Error: %s")],
     _aik_=
      [0,
       [12,
        60,
        [2,0,[12,62,[2,0,[11,caml_string_of_jsbytes("<\/"),[2,0,[12,62,0]]]]]]],
       caml_string_of_jsbytes("<%s>%s<\/%s>")],
     _ain_=
      [0,
       [11,
        caml_string_of_jsbytes("<span id='label"),
        [4,3,0,0,[11,caml_string_of_jsbytes("'><\/span>"),0]]],
       caml_string_of_jsbytes("<span id='label%i'><\/span>")],
     _ail_=
      [0,
       [12,32,[2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]],
       caml_string_of_jsbytes(" %s: %s")],
     _aim_=
      [0,
       [12,
        60,
        [2,0,[12,62,[2,0,[11,caml_string_of_jsbytes("<\/"),[2,0,[12,62,0]]]]]]],
       caml_string_of_jsbytes("<%s>%s<\/%s>")],
     _aio_=
      [0,
       [11,
        caml_string_of_jsbytes("Verifying "),
        [2,0,[11,caml_string_of_jsbytes("..."),0]]],
       caml_string_of_jsbytes("Verifying %s...")],
     _aip_=[0,936573133,caml_string_of_jsbytes("Computing condition")],
     _aiq_=
      [0,
       [11,
        caml_string_of_jsbytes("Verification Error: <br>"),
        [2,0,[11,caml_string_of_jsbytes("<br> is false."),0]]],
       caml_string_of_jsbytes("Verification Error: <br>%s<br> is false.")],
     _air_=[0,936573133,caml_string_of_jsbytes("is false")],
     _ais_=[0,936573133,caml_string_of_jsbytes("Verification Error")],
     _ait_=
      [0,
       [11,
        caml_string_of_jsbytes("Computing "),
        [2,0,[11,caml_string_of_jsbytes("..."),0]]],
       caml_string_of_jsbytes("Computing %s...")],
     _aiu_=[0,936573133,caml_string_of_jsbytes("Computing expression")],
     _aix_=
      [0,
       [11,
        caml_string_of_jsbytes("<div class='execMessage'>"),
        [2,0,[11,caml_string_of_jsbytes("<\/div>"),0]]],
       caml_string_of_jsbytes("<div class='execMessage'>%s<\/div>")],
     _aiy_=
      [0,
       [11,caml_string_of_jsbytes(" => "),[2,0,0]],
       caml_string_of_jsbytes(" => %s")],
     _aiz_=[0,936573133,caml_string_of_jsbytes("Computing baker")],
     _aiD_=[0,936573133,caml_string_of_jsbytes(", got")],
     _aiE_=
      [0,
       936573133,
       caml_string_of_jsbytes("Expected dynamic contract from template")],
     _ah__=[0,936573133,caml_string_of_jsbytes("Balance < 0")],
     _ah6_=[0,936573133,caml_string_of_jsbytes("Computing voting powers")],
     _aia_=
      [0,
       [11,caml_string_of_jsbytes("Missing contract in scenario "),[2,0,0]],
       caml_string_of_jsbytes("Missing contract in scenario %s")],
     _ah7_=
      [0,
       [11,
        caml_string_of_jsbytes("Executing "),
        [2,0,[12,40,[2,0,[11,caml_string_of_jsbytes(")..."),0]]]]],
       caml_string_of_jsbytes("Executing %s(%s)...")],
     _ah$_=
      [0,
       [11,
        caml_string_of_jsbytes("Executing (queue) "),
        [2,0,[12,40,[2,0,[11,caml_string_of_jsbytes(")..."),0]]]]],
       caml_string_of_jsbytes("Executing (queue) %s(%s)...")],
     _ah8_=[0,caml_string_of_jsbytes("No contract")],
     _ah9_=
      [0,
       [11,caml_string_of_jsbytes(" -> "),[2,0,0]],
       caml_string_of_jsbytes(" -> %s")],
     _ah5_=
      [0,
       [11,caml_string_of_jsbytes("Missing contract in scenario "),[2,0,0]],
       caml_string_of_jsbytes("Missing contract in scenario %s")],
     _ah1_=[0,[4,3,0,0,0],caml_string_of_jsbytes("%i")],
     _ah0_=[0,[2,0,[12,95,[4,0,0,0,0]]],caml_string_of_jsbytes("%s_%d")],
     _ah2_=
      [0,
       [0,
        936573133,
        caml_string_of_jsbytes("Error in generated Michelson contract")],
       0],
     _ah3_=
      [0,
       [0,
        936573133,
        caml_string_of_jsbytes
         ("Error (unknown) in generated Michelson contract")],
       0],
     _ah4_=
      [0,
       [11,
        caml_string_of_jsbytes("Warning: unknown types or type errors: "),
        [2,0,0]],
       caml_string_of_jsbytes("Warning: unknown types or type errors: %s")],
     _ahZ_=[0,936573133,caml_string_of_jsbytes("Computing address")],
     _ahX_=
      [0,
       [11,
        caml_string_of_jsbytes("<li><a href='#label"),
        [4,
         3,
         0,
         0,
         [11,
          caml_string_of_jsbytes("'>"),
          [2,0,[11,caml_string_of_jsbytes("<\/a>"),0]]]]],
       caml_string_of_jsbytes("<li><a href='#label%i'>%s<\/a>")],
     _ahY_=[0,[2,0,[12,32,[2,0,0]]],caml_string_of_jsbytes("%s %s")],
     _ahW_=[0,1,0],
     _ahU_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes("/step_"),
         [4,
          0,
          [0,2,3],
          0,
          [11,caml_string_of_jsbytes("_cont_"),[2,0,[12,95,[2,0,0]]]]]]],
       caml_string_of_jsbytes("%s/step_%03d_cont_%s_%s")],
     _ahV_=
      [0,
       [11,caml_string_of_jsbytes(" => "),[2,0,[12,32,[4,0,0,0,0]]]],
       caml_string_of_jsbytes(" => %s %d")],
     _ahS_=[0,[2,0,[12,47,[2,0,0]]],caml_string_of_jsbytes("%s/%s")],
     _ahT_=
      [0,
       [11,caml_string_of_jsbytes(" => "),[2,0,[12,32,[4,0,0,0,0]]]],
       caml_string_of_jsbytes(" => %s %d")],
     _ahR_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")],
     _ahQ_=[0,[2,0,[12,10,0]],caml_string_of_jsbytes("%s\n")];
    function equal_language(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 1;break;
        case 1:if(1 === rhs)return 1;break;
        default:if(2 <= rhs)return 1}
      return 0}
    function compare_language(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 0;break;
        case 1:if(1 === rhs)return 0;break;
        default:if(2 <= rhs)return 0}
      function to_int(param)
       {switch(param){case 0:return 0;case 1:return 1;default:return 2}}
      var _cOq_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_cOq_)}
    function pp_language(fmt,param)
     {switch(param)
       {case 0:return caml_call2(Stdlib_format[13],fmt,cst_SmartPy);
        case 1:return caml_call2(Stdlib_format[13],fmt,cst_SmartML);
        default:return caml_call2(Stdlib_format[13],fmt,cst_SmartTS)}}
    function show_language(x)
     {return caml_call3(Stdlib_format[127],_a_,pp_language,x)}
    function equal_protocol(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 1;break;
        case 1:if(1 === rhs)return 1;break;
        case 2:if(2 === rhs)return 1;break;
        default:if(3 <= rhs)return 1}
      return 0}
    function compare_protocol(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 0;break;
        case 1:if(1 === rhs)return 0;break;
        case 2:if(2 === rhs)return 0;break;
        default:if(3 <= rhs)return 0}
      function to_int(param)
       {switch(param)
         {case 0:return 0;case 1:return 1;case 2:return 2;default:return 3}}
      var _cOp_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_cOp_)}
    function pp_protocol(fmt,param)
     {switch(param)
       {case 0:return caml_call2(Stdlib_format[13],fmt,cst_Delphi);
        case 1:return caml_call2(Stdlib_format[13],fmt,cst_Edo);
        case 2:return caml_call2(Stdlib_format[13],fmt,cst_Florence);
        default:return caml_call2(Stdlib_format[13],fmt,cst_Granada)}}
    function show_protocol(x)
     {return caml_call3(Stdlib_format[127],_b_,pp_protocol,x)}
    function equal_exceptions(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 1;break;
        case 1:if(1 === rhs)return 1;break;
        case 2:if(2 === rhs)return 1;break;
        case 3:if(3 === rhs)return 1;break;
        case 4:if(4 === rhs)return 1;break;
        case 5:if(5 === rhs)return 1;break;
        default:if(6 <= rhs)return 1}
      return 0}
    function compare_exceptions(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 0;break;
        case 1:if(1 === rhs)return 0;break;
        case 2:if(2 === rhs)return 0;break;
        case 3:if(3 === rhs)return 0;break;
        case 4:if(4 === rhs)return 0;break;
        case 5:if(5 === rhs)return 0;break;
        default:if(6 <= rhs)return 0}
      function to_int(param)
       {switch(param)
         {case 0:return 0;
          case 1:return 1;
          case 2:return 2;
          case 3:return 3;
          case 4:return 4;
          case 5:return 5;
          default:return 6}}
      var _cOo_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_cOo_)}
    function pp_exceptions(fmt,param)
     {switch(param)
       {case 0:return caml_call2(Stdlib_format[13],fmt,cst_FullDebug);
        case 1:return caml_call2(Stdlib_format[13],fmt,cst_Message);
        case 2:return caml_call2(Stdlib_format[13],fmt,cst_VerifyOrLine);
        case 3:return caml_call2(Stdlib_format[13],fmt,cst_DefaultLine);
        case 4:return caml_call2(Stdlib_format[13],fmt,cst_Line);
        case 5:return caml_call2(Stdlib_format[13],fmt,cst_DefaultUnit);
        default:return caml_call2(Stdlib_format[13],fmt,cst_Unit)}}
    function show_exceptions(x)
     {return caml_call3(Stdlib_format[127],_c_,pp_exceptions,x)}
    function equal_default_layout(lhs,rhs)
     {if(lhs){if(rhs)return 1}else if(! rhs)return 1;return 0}
    function compare_default_layout(lhs,rhs)
     {if(lhs){if(rhs)return 0}else if(! rhs)return 0;
      function to_int(param){return param?1:0}
      var _cOn_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_cOn_)}
    function pp_default_layout(fmt,param)
     {return param
              ?caml_call2(Stdlib_format[13],fmt,cst_Comb)
              :caml_call2(Stdlib_format[13],fmt,cst_Tree)}
    function show_default_layout(x)
     {return caml_call3(Stdlib_format[127],_d_,pp_default_layout,x)}
    var equal=function _cOm_(_cOk_,_cOl_){return _cOm_.fun(_cOk_,_cOl_)};
    caml_update_dummy
     (equal,
      function(lhs,rhs)
       {var
         _cN5_=lhs[1] === rhs[1]?1:0,
         _cN6_=_cN5_?lhs[2] === rhs[2]?1:0:_cN5_,
         _cN7_=_cN6_?lhs[3] === rhs[3]?1:0:_cN6_,
         _cN8_=_cN7_?lhs[4] === rhs[4]?1:0:_cN7_,
         _cN9_=_cN8_?lhs[5] === rhs[5]?1:0:_cN8_,
         _cN__=_cN9_?equal_protocol(lhs[6],rhs[6]):_cN9_,
         _cN$_=_cN__?lhs[7] === rhs[7]?1:0:_cN__,
         _cOa_=_cN$_?equal_exceptions(lhs[8],rhs[8]):_cN$_,
         _cOb_=_cOa_?equal_default_layout(lhs[9],rhs[9]):_cOa_,
         _cOc_=_cOb_?equal_default_layout(lhs[10],rhs[10]):_cOb_,
         _cOd_=_cOc_?lhs[11] === rhs[11]?1:0:_cOc_,
         _cOe_=_cOd_?lhs[12] === rhs[12]?1:0:_cOd_,
         _cOf_=_cOe_?lhs[13] === rhs[13]?1:0:_cOe_,
         _cOg_=_cOf_?lhs[14] === rhs[14]?1:0:_cOf_,
         _cOh_=_cOg_?lhs[15] === rhs[15]?1:0:_cOg_,
         _cOi_=_cOh_?lhs[16] === rhs[16]?1:0:_cOh_;
        if(_cOi_)
         {var x=lhs[17],y=rhs[17];
          for(;;)
           {if(x)
             {if(y)
               {var y$0=y[2],b=y[1],x$0=x[2],a=x[1],_cOj_=equal_language(a,b);
                if(_cOj_){var x=x$0,y=y$0;continue}
                return _cOj_}}
            else
             if(! y)return 1;
            return 0}}
        return _cOi_});
    var
     pp=function _cN4_(_cN2_,_cN3_){return _cN4_.fun(_cN2_,_cN3_)},
     show=function _cN1_(_cN0_){return _cN1_.fun(_cN0_)};
    caml_update_dummy
     (pp,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_e_);
        caml_call3(Stdlib_format[123],fmt,_f_,cst_simplify);
        var _cNL_=x[1];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_g_),_cNL_);
        caml_call2(Stdlib_format[123],fmt,_h_);
        caml_call2(Stdlib_format[123],fmt,_i_);
        caml_call3(Stdlib_format[123],fmt,_j_,cst_simplify_via_michel);
        var _cNM_=x[2];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_k_),_cNM_);
        caml_call2(Stdlib_format[123],fmt,_l_);
        caml_call2(Stdlib_format[123],fmt,_m_);
        caml_call3(Stdlib_format[123],fmt,_n_,cst_decompile);
        var _cNN_=x[3];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_o_),_cNN_);
        caml_call2(Stdlib_format[123],fmt,_p_);
        caml_call2(Stdlib_format[123],fmt,_q_);
        caml_call3(Stdlib_format[123],fmt,_r_,cst_erase_comments);
        var _cNO_=x[4];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_s_),_cNO_);
        caml_call2(Stdlib_format[123],fmt,_t_);
        caml_call2(Stdlib_format[123],fmt,_u_);
        caml_call3(Stdlib_format[123],fmt,_v_,cst_disable_dup_check);
        var _cNP_=x[5];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_w_),_cNP_);
        caml_call2(Stdlib_format[123],fmt,_x_);
        caml_call2(Stdlib_format[123],fmt,_y_);
        caml_call3(Stdlib_format[123],fmt,_z_,cst_protocol);
        pp_protocol(fmt,x[6]);
        caml_call2(Stdlib_format[123],fmt,_A_);
        caml_call2(Stdlib_format[123],fmt,_B_);
        caml_call3(Stdlib_format[123],fmt,_C_,cst_lazy_entry_points);
        var _cNQ_=x[7];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_D_),_cNQ_);
        caml_call2(Stdlib_format[123],fmt,_E_);
        caml_call2(Stdlib_format[123],fmt,_F_);
        caml_call3(Stdlib_format[123],fmt,_G_,cst_exceptions);
        pp_exceptions(fmt,x[8]);
        caml_call2(Stdlib_format[123],fmt,_H_);
        caml_call2(Stdlib_format[123],fmt,_I_);
        caml_call3(Stdlib_format[123],fmt,_J_,cst_default_variant_layout);
        pp_default_layout(fmt,x[9]);
        caml_call2(Stdlib_format[123],fmt,_K_);
        caml_call2(Stdlib_format[123],fmt,_L_);
        caml_call3(Stdlib_format[123],fmt,_M_,cst_default_record_layout);
        pp_default_layout(fmt,x[10]);
        caml_call2(Stdlib_format[123],fmt,_N_);
        caml_call2(Stdlib_format[123],fmt,_O_);
        caml_call3(Stdlib_format[123],fmt,_P_,cst_initial_cast);
        var _cNR_=x[11];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_Q_),_cNR_);
        caml_call2(Stdlib_format[123],fmt,_R_);
        caml_call2(Stdlib_format[123],fmt,_S_);
        caml_call3(Stdlib_format[123],fmt,_T_,cst_erase_var_annots);
        var _cNS_=x[12];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_U_),_cNS_);
        caml_call2(Stdlib_format[123],fmt,_V_);
        caml_call2(Stdlib_format[123],fmt,_W_);
        caml_call3(Stdlib_format[123],fmt,_X_,cst_pairn);
        var _cNT_=x[13];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_Y_),_cNT_);
        caml_call2(Stdlib_format[123],fmt,_Z_);
        caml_call2(Stdlib_format[123],fmt,___);
        caml_call3(Stdlib_format[123],fmt,_$_,cst_dump_michel);
        var _cNU_=x[14];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_aa_),_cNU_);
        caml_call2(Stdlib_format[123],fmt,_ab_);
        caml_call2(Stdlib_format[123],fmt,_ac_);
        caml_call3(Stdlib_format[123],fmt,_ad_,cst_single_entry_point_annotat);
        var _cNV_=x[15];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_ae_),_cNV_);
        caml_call2(Stdlib_format[123],fmt,_af_);
        caml_call2(Stdlib_format[123],fmt,_ag_);
        caml_call3(Stdlib_format[123],fmt,_ah_,cst_warn_unused);
        var _cNW_=x[16];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_ai_),_cNW_);
        caml_call2(Stdlib_format[123],fmt,_aj_);
        caml_call2(Stdlib_format[123],fmt,_ak_);
        caml_call3(Stdlib_format[123],fmt,_al_,cst_languages);
        var _cNX_=x[17];
        caml_call2(Stdlib_format[123],fmt,_am_);
        var _cNY_=0;
        function _cNZ_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_an_);
          pp_language(fmt,x);
          return 1}
        caml_call3(Stdlib_list[22],_cNZ_,_cNY_,_cNX_);
        caml_call2(Stdlib_format[123],fmt,_ao_);
        caml_call2(Stdlib_format[123],fmt,_ap_);
        return caml_call2(Stdlib_format[123],fmt,_aq_)});
    caml_update_dummy
     (show,function(x){return caml_call3(Stdlib_format[127],_ar_,pp,x)});
    function equal_bool_flag(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 1;break;
        case 1:if(1 === rhs)return 1;break;
        case 2:if(2 === rhs)return 1;break;
        case 3:if(3 === rhs)return 1;break;
        case 4:if(4 === rhs)return 1;break;
        case 5:if(5 === rhs)return 1;break;
        case 6:if(6 === rhs)return 1;break;
        case 7:if(7 === rhs)return 1;break;
        case 8:if(8 === rhs)return 1;break;
        case 9:if(9 === rhs)return 1;break;
        case 10:if(10 === rhs)return 1;break;
        default:if(11 <= rhs)return 1}
      return 0}
    function compare_bool_flag(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 0;break;
        case 1:if(1 === rhs)return 0;break;
        case 2:if(2 === rhs)return 0;break;
        case 3:if(3 === rhs)return 0;break;
        case 4:if(4 === rhs)return 0;break;
        case 5:if(5 === rhs)return 0;break;
        case 6:if(6 === rhs)return 0;break;
        case 7:if(7 === rhs)return 0;break;
        case 8:if(8 === rhs)return 0;break;
        case 9:if(9 === rhs)return 0;break;
        case 10:if(10 === rhs)return 0;break;
        default:if(11 <= rhs)return 0}
      function to_int(param)
       {switch(param)
         {case 0:return 0;
          case 1:return 1;
          case 2:return 2;
          case 3:return 3;
          case 4:return 4;
          case 5:return 5;
          case 6:return 6;
          case 7:return 7;
          case 8:return 8;
          case 9:return 9;
          case 10:return 10;
          default:return 11}}
      var _cNK_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_cNK_)}
    function pp_bool_flag(fmt,param)
     {switch(param)
       {case 0:return caml_call2(Stdlib_format[13],fmt,cst_Config_Decompile);
        case 1:
         return caml_call2(Stdlib_format[13],fmt,cst_Config_Disable_dup_check);
        case 2:
         return caml_call2(Stdlib_format[13],fmt,cst_Config_Dump_michel);
        case 3:
         return caml_call2(Stdlib_format[13],fmt,cst_Config_Erase_comments);
        case 4:
         return caml_call2(Stdlib_format[13],fmt,cst_Config_Erase_var_annots);
        case 5:
         return caml_call2(Stdlib_format[13],fmt,cst_Config_Initial_cast);
        case 6:return caml_call2(Stdlib_format[13],fmt,cst_Config_Pairn);
        case 7:return caml_call2(Stdlib_format[13],fmt,cst_Config_Simplify);
        case 8:
         return caml_call2
                 (Stdlib_format[13],fmt,cst_Config_Simplify_via_michel);
        case 9:
         return caml_call2
                 (Stdlib_format[13],fmt,cst_Config_Single_entry_point_);
        case 10:
         return caml_call2(Stdlib_format[13],fmt,cst_Config_Warn_unused);
        default:
         return caml_call2(Stdlib_format[13],fmt,cst_Config_Lazy_entry_points)}}
    function show_bool_flag(x)
     {return caml_call3(Stdlib_format[127],_as_,pp_bool_flag,x)}
    var equal_flag=function _cNJ_(_cNH_,_cNI_){return _cNJ_.fun(_cNH_,_cNI_)};
    caml_update_dummy
     (equal_flag,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var
              rhs1=match[2],
              rhs0=match[1],
              lhs1=lhs[2],
              lhs0=lhs[1],
              _cNG_=equal_bool_flag(lhs0,rhs0);
             return _cNG_?lhs1 === rhs1?1:0:_cNG_}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];
             return equal_default_layout(lhs0$0,rhs0$0)}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$1=match[1],lhs0$1=lhs[1];
             return equal_default_layout(lhs0$1,rhs0$1)}
           break;
          case 3:
           if(3 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1];
             return equal_exceptions(lhs0$2,rhs0$2)}
           break;
          case 4:
           if(4 === match[0])
            {var rhs0$3=match[1],lhs0$3=lhs[1];
             return equal_protocol(lhs0$3,rhs0$3)}
           break;
          default:
           if(5 === match[0])
            {var rhs0$4=match[1],lhs0$4=lhs[1],x=lhs0$4,y=rhs0$4;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    _cNF_=equal_language(a,b);
                   if(_cNF_){var x=x$0,y=y$0;continue}
                   return _cNF_}}
               else
                if(! y)return 1;
               return 0}}}
        return 0});
    var
     compare_flag=
      function _cNE_(_cNC_,_cND_){return _cNE_.fun(_cNC_,_cND_)};
    caml_update_dummy
     (compare_flag,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var
              rhs1=match[2],
              rhs0=match[1],
              lhs1=lhs[2],
              lhs0=lhs[1],
              x$2=compare_bool_flag(lhs0,rhs0);
             return 0 === x$2?caml_int_compare(lhs1,rhs1):x$2}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];
             return compare_default_layout(lhs0$0,rhs0$0)}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$1=match[1],lhs0$1=lhs[1];
             return compare_default_layout(lhs0$1,rhs0$1)}
           break;
          case 3:
           if(3 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1];
             return compare_exceptions(lhs0$2,rhs0$2)}
           break;
          case 4:
           if(4 === match[0])
            {var rhs0$3=match[1],lhs0$3=lhs[1];
             return compare_protocol(lhs0$3,rhs0$3)}
           break;
          default:
           if(5 === match[0])
            {var rhs0$4=match[1],lhs0$4=lhs[1],x=lhs0$4,y=rhs0$4;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    x$1=compare_language(a,b);
                   if(0 === x$1){var x=x$0,y=y$0;continue}
                   return x$1}
                 return 1}
               return y?-1:0}}}
        function to_int(param)
         {switch(param[0])
           {case 0:return 0;
            case 1:return 1;
            case 2:return 2;
            case 3:return 3;
            case 4:return 4;
            default:return 5}}
        var _cNB_=to_int(match);
        return caml_int_compare(to_int(lhs),_cNB_)});
    var
     pp_flag=function _cNA_(_cNy_,_cNz_){return _cNA_.fun(_cNy_,_cNz_)},
     show_flag=function _cNx_(_cNw_){return _cNx_.fun(_cNw_)};
    caml_update_dummy
     (pp_flag,
      function(fmt,param)
       {switch(param[0])
         {case 0:
           var a1=param[2],a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_at_);
           pp_bool_flag(fmt,a0);
           caml_call2(Stdlib_format[123],fmt,_au_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_av_),a1);
           return caml_call2(Stdlib_format[123],fmt,_aw_);
          case 1:
           var a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_ax_);
           pp_default_layout(fmt,a0$0);
           return caml_call2(Stdlib_format[123],fmt,_ay_);
          case 2:
           var a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_az_);
           pp_default_layout(fmt,a0$1);
           return caml_call2(Stdlib_format[123],fmt,_aA_);
          case 3:
           var a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_aB_);
           pp_exceptions(fmt,a0$2);
           return caml_call2(Stdlib_format[123],fmt,_aC_);
          case 4:
           var a0$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_aD_);
           pp_protocol(fmt,a0$3);
           return caml_call2(Stdlib_format[123],fmt,_aE_);
          default:
           var a0$4=param[1];
           caml_call2(Stdlib_format[123],fmt,_aF_);
           caml_call2(Stdlib_format[123],fmt,_aG_);
           var
            _cNu_=0,
            _cNv_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_aH_);
               pp_language(fmt,x);
               return 1};
           caml_call3(Stdlib_list[22],_cNv_,_cNu_,a0$4);
           caml_call2(Stdlib_format[123],fmt,_aI_);
           return caml_call2(Stdlib_format[123],fmt,_aJ_)}});
    caml_update_dummy
     (show_flag,
      function(x){return caml_call3(Stdlib_format[127],_aK_,pp_flag,x)});
    function _aL_(param)
     {var switch$0=caml_string_compare(param,cst_lazy_entry_points$0);
      if(0 <= switch$0)
       {if(! (0 < switch$0))return _aR_;
        if(! caml_string_notequal(param,cst_pairn$0))return _aQ_;
        if(! caml_string_notequal(param,cst_simplify$0))return _aP_;
        if(! caml_string_notequal(param,cst_simplify_via_michel$0))
         return _aO_;
        if(! caml_string_notequal(param,cst_single_entry_point_annotat$0))
         return _aN_;
        if(! caml_string_notequal(param,cst_warn_unused$0))return _aM_}
      else
       {if(! caml_string_notequal(param,cst_decompile$0))return _aX_;
        if(! caml_string_notequal(param,cst_disable_dup_check$0))return _aW_;
        if(! caml_string_notequal(param,cst_dump_michel$0))return _aV_;
        if(! caml_string_notequal(param,cst_erase_comments$0))return _aU_;
        if(! caml_string_notequal(param,cst_erase_var_annots$0))return _aT_;
        if(! caml_string_notequal(param,cst_initial_cast$0))return _aS_}
      return 0}
    function protocol_of_string(protocol)
     {var match=caml_call1(Utils_String[30],protocol);
      return caml_string_notequal(match,cst_delphi)
              ?caml_string_notequal(match,cst_edo)
                ?caml_string_notequal(match,cst_florence)
                  ?caml_string_notequal(match,cst_granada)
                    ?caml_call3(Stdlib_printf[9],Stdlib[2],_aY_,protocol)
                    :3
                  :2
                :1
              :0}
    function layout_of_string(layout)
     {var match=caml_call1(Utils_String[30],layout);
      return caml_string_notequal(match,cst_comb)
              ?caml_string_notequal(match,cst_tree)
                ?caml_call3(Stdlib_printf[9],Stdlib[2],_aZ_,layout)
                :0
              :1}
    function parse_flag(param)
     {if(param)
       {var _cNm_=param[1],switch$0=0;
        if(caml_string_notequal(_cNm_,cst_default_record_layout$0))
         if(caml_string_notequal(_cNm_,cst_default_variant_layout$0))
          if(caml_string_notequal(_cNm_,cst_exceptions$0))
           if(caml_string_notequal(_cNm_,cst_languages$0))
            if(caml_string_notequal(_cNm_,cst_protocol$0))
             switch$0 = 1;
            else
             {var _cNn_=param[2];
              if(_cNn_)
               {if(! _cNn_[2])
                 {var protocol=_cNn_[1];
                  return [0,[4,protocol_of_string(protocol)]]}}
              else
               switch$0 = 1}
           else
            {var _cNo_=param[2];
             if(_cNo_)
              {if(! _cNo_[2])
                {var
                  languages$0=_cNo_[1],
                  read=
                   function(language)
                    {return caml_string_notequal(language,cst_smartml)
                             ?caml_string_notequal(language,cst_smartpy)
                               ?caml_string_notequal(language,cst_smartts)
                                 ?caml_call3(Stdlib_printf[9],Stdlib[2],_a1_,language)
                                 :2
                               :0
                             :1},
                  _cNg_=caml_call1(Utils_String[30],languages$0),
                  _cNh_=Base_String[92],
                  _cNi_=
                   caml_call2(_cNh_,_cNg_,function(x){return 32 !== x?1:0}),
                  _cNj_=caml_call2(Utils_String[34],44,_cNi_),
                  _cNk_=function(x){return caml_string_notequal(x,cst)},
                  _cNl_=caml_call2(Utils_List[40],_cNk_,_cNj_),
                  languages=caml_call2(Utils_List[20],read,_cNl_),
                  _cNp_=
                   languages
                   ||
                   caml_call1(Stdlib[2],cst_Empty_languages_flag_is_fo);
                 return [0,[5,_cNp_]]}}
             else
              switch$0 = 1}
          else
           {var _cNq_=param[2];
            if(_cNq_)
             {if(! _cNq_[2])
               {var
                 exceptions=_cNq_[1],
                 match=caml_call1(Utils_String[30],exceptions),
                 _cNr_=
                  caml_string_notequal(match,cst_debug_message)
                   ?caml_string_notequal(match,cst_default_line)
                     ?caml_string_notequal(match,cst_default_unit)
                       ?caml_string_notequal(match,cst_full_debug)
                         ?caml_string_notequal(match,cst_line)
                           ?caml_string_notequal(match,cst_unit)
                             ?caml_string_notequal(match,cst_verify_or_line)
                               ?caml_call3(Stdlib_printf[9],Stdlib[2],_a0_,exceptions)
                               :2
                             :6
                           :4
                         :0
                       :5
                     :3
                   :1;
                return [0,[3,_cNr_]]}}
            else
             switch$0 = 1}
         else
          {var _cNs_=param[2];
           if(_cNs_)
            {if(! _cNs_[2])
              {var layout=_cNs_[1];return [0,[2,layout_of_string(layout)]]}}
           else
            switch$0 = 1}
        else
         {var _cNt_=param[2];
          if(_cNt_)
           {if(! _cNt_[2])
             {var layout$0=_cNt_[1];return [0,[1,layout_of_string(layout$0)]]}}
          else
           switch$0 = 1}
        if(switch$0 && ! param[2])
         {if(caml_string_equal(caml_call3(Utils_String[4],_cNm_,0,3),cst_no))
           var
            flag=
             caml_call3
              (Utils_String[4],_cNm_,3,caml_ml_string_length(_cNm_) - 3 | 0),
            flag$0=_aL_(flag),
            b=0;
          else
           var flag$1=_aL_(_cNm_),flag$0=flag$1,b=1;
          var _cNf_=function(bf){return [0,bf,b]};
          return caml_call2(Utils_Option[17],_cNf_,flag$0)}}
      return 0}
    function is_initial_flag(param)
     {switch(param[0]){case 1:case 2:case 4:return 1;default:return 0}}
    function apply_flag(config,param)
     {switch(param[0])
       {case 0:
         var b=param[2],bf=param[1];
         switch(bf)
          {case 0:
            return [0,
                    config[1],
                    config[2],
                    b,
                    config[4],
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    config[13],
                    config[14],
                    config[15],
                    config[16],
                    config[17]];
           case 1:
            return [0,
                    config[1],
                    config[2],
                    config[3],
                    config[4],
                    b,
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    config[13],
                    config[14],
                    config[15],
                    config[16],
                    config[17]];
           case 2:
            return [0,
                    config[1],
                    config[2],
                    config[3],
                    config[4],
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    config[13],
                    b,
                    config[15],
                    config[16],
                    config[17]];
           case 3:
            return [0,
                    config[1],
                    config[2],
                    config[3],
                    b,
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    config[13],
                    config[14],
                    config[15],
                    config[16],
                    config[17]];
           case 4:
            return [0,
                    config[1],
                    config[2],
                    config[3],
                    config[4],
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    b,
                    config[13],
                    config[14],
                    config[15],
                    config[16],
                    config[17]];
           case 5:
            return [0,
                    config[1],
                    config[2],
                    config[3],
                    config[4],
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    b,
                    config[12],
                    config[13],
                    config[14],
                    config[15],
                    config[16],
                    config[17]];
           case 6:
            return [0,
                    config[1],
                    config[2],
                    config[3],
                    config[4],
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    b,
                    config[14],
                    config[15],
                    config[16],
                    config[17]];
           case 7:
            return [0,
                    b,
                    config[2],
                    config[3],
                    config[4],
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    config[13],
                    config[14],
                    config[15],
                    config[16],
                    config[17]];
           case 8:
            return [0,
                    config[1],
                    b,
                    config[3],
                    config[4],
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    config[13],
                    config[14],
                    config[15],
                    config[16],
                    config[17]];
           case 9:
            return [0,
                    config[1],
                    config[2],
                    config[3],
                    config[4],
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    config[13],
                    config[14],
                    b,
                    config[16],
                    config[17]];
           case 10:
            return [0,
                    config[1],
                    config[2],
                    config[3],
                    config[4],
                    config[5],
                    config[6],
                    config[7],
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    config[13],
                    config[14],
                    config[15],
                    b,
                    config[17]];
           default:
            return [0,
                    config[1],
                    config[2],
                    config[3],
                    config[4],
                    config[5],
                    config[6],
                    b,
                    config[8],
                    config[9],
                    config[10],
                    config[11],
                    config[12],
                    config[13],
                    config[14],
                    config[15],
                    config[16],
                    config[17]]}
        case 1:
         var default_record_layout=param[1];
         return [0,
                 config[1],
                 config[2],
                 config[3],
                 config[4],
                 config[5],
                 config[6],
                 config[7],
                 config[8],
                 config[9],
                 default_record_layout,
                 config[11],
                 config[12],
                 config[13],
                 config[14],
                 config[15],
                 config[16],
                 config[17]];
        case 2:
         var default_variant_layout=param[1];
         return [0,
                 config[1],
                 config[2],
                 config[3],
                 config[4],
                 config[5],
                 config[6],
                 config[7],
                 config[8],
                 default_variant_layout,
                 config[10],
                 config[11],
                 config[12],
                 config[13],
                 config[14],
                 config[15],
                 config[16],
                 config[17]];
        case 3:
         var exceptions=param[1];
         return [0,
                 config[1],
                 config[2],
                 config[3],
                 config[4],
                 config[5],
                 config[6],
                 config[7],
                 exceptions,
                 config[9],
                 config[10],
                 config[11],
                 config[12],
                 config[13],
                 config[14],
                 config[15],
                 config[16],
                 config[17]];
        case 4:
         var protocol=param[1];
         return [0,
                 config[1],
                 config[2],
                 config[3],
                 config[4],
                 config[5],
                 protocol,
                 config[7],
                 config[8],
                 config[9],
                 config[10],
                 config[11],
                 config[12],
                 config[13],
                 config[14],
                 config[15],
                 config[16],
                 config[17]];
        default:
         var languages=param[1];
         return [0,
                 config[1],
                 config[2],
                 config[3],
                 config[4],
                 config[5],
                 config[6],
                 config[7],
                 config[8],
                 config[9],
                 config[10],
                 config[11],
                 config[12],
                 config[13],
                 config[14],
                 config[15],
                 config[16],
                 languages]}}
    var
     Smartml_Config=
      [0,
       equal_language,
       compare_language,
       pp_language,
       show_language,
       equal_protocol,
       compare_protocol,
       pp_protocol,
       show_protocol,
       equal_exceptions,
       compare_exceptions,
       pp_exceptions,
       show_exceptions,
       equal_default_layout,
       compare_default_layout,
       pp_default_layout,
       show_default_layout,
       equal,
       pp,
       show,
       config,
       equal_bool_flag,
       compare_bool_flag,
       pp_bool_flag,
       show_bool_flag,
       equal_flag,
       compare_flag,
       pp_flag,
       show_flag,
       parse_flag,
       apply_flag,
       protocol_of_string,
       is_initial_flag];
    caml_register_global(6445,Smartml_Config,"Smartml__Config");
    function equal_dynamic_id(lhs,rhs){return lhs[1] === rhs[1]?1:0}
    var
     compare_dynamic_id=
      function _cNe_(_cNc_,_cNd_){return _cNe_.fun(_cNc_,_cNd_)};
    caml_update_dummy
     (compare_dynamic_id,
      function(lhs,rhs){return caml_int_compare(lhs[1],rhs[1])});
    function pp_dynamic_id(fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_a2_);
      caml_call3(Stdlib_format[123],fmt,_a3_,cst_dynamic_id);
      var _cNb_=x[1];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_a4_),_cNb_);
      caml_call2(Stdlib_format[123],fmt,_a5_);
      return caml_call2(Stdlib_format[123],fmt,_a6_)}
    function show_dynamic_id(x)
     {return caml_call3(Stdlib_format[127],_a7_,pp_dynamic_id,x)}
    function equal_static_id(lhs,rhs){return lhs[1] === rhs[1]?1:0}
    var
     compare_static_id=
      function _cNa_(_cM__,_cM$_){return _cNa_.fun(_cM__,_cM$_)};
    caml_update_dummy
     (compare_static_id,
      function(lhs,rhs){return caml_int_compare(lhs[1],rhs[1])});
    function pp_static_id(fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_a8_);
      caml_call3(Stdlib_format[123],fmt,_a9_,cst_static_id);
      var _cM9_=x[1];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_a__),_cM9_);
      caml_call2(Stdlib_format[123],fmt,_a$_);
      return caml_call2(Stdlib_format[123],fmt,_ba_)}
    function show_static_id(x)
     {return caml_call3(Stdlib_format[127],_bb_,pp_static_id,x)}
    var
     equal_contract_id=
      function _cM8_(_cM6_,_cM7_){return _cM8_.fun(_cM6_,_cM7_)};
    caml_update_dummy
     (equal_contract_id,
      function(lhs,match)
       {if(0 === lhs[0])
         {var _cM4_=lhs[1];
          if(0 === match[0])
           {var rhs0=match[1];return equal_static_id(_cM4_,rhs0)}}
        else
         {var _cM5_=lhs[1];
          if(0 !== match[0])
           {var rhs0$0=match[1];return equal_dynamic_id(_cM5_,rhs0$0)}}
        return 0});
    var
     compare_contract_id=
      function _cM3_(_cM1_,_cM2_){return _cM3_.fun(_cM1_,_cM2_)};
    caml_update_dummy
     (compare_contract_id,
      function(lhs,match)
       {if(0 === lhs[0])
         {var _cMY_=lhs[1];
          if(0 === match[0])
           {var rhs0=match[1];
            return caml_call1(caml_call1(compare_static_id,_cMY_),rhs0)}}
        else
         {var _cM0_=lhs[1];
          if(0 !== match[0])
           {var rhs0$0=match[1];
            return caml_call1(caml_call1(compare_dynamic_id,_cM0_),rhs0$0)}}
        function to_int(param){return 0 === param[0]?0:1}
        var _cMZ_=to_int(match);
        return caml_int_compare(to_int(lhs),_cMZ_)});
    var
     pp_contract_id=function _cMX_(_cMV_,_cMW_){return _cMX_.fun(_cMV_,_cMW_)},
     show_contract_id=function _cMU_(_cMT_){return _cMU_.fun(_cMT_)};
    caml_update_dummy
     (pp_contract_id,
      function(fmt,param)
       {if(0 === param[0])
         {var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_bc_);
          pp_static_id(fmt,a0);
          return caml_call2(Stdlib_format[123],fmt,_bd_)}
        var a0$0=param[1];
        caml_call2(Stdlib_format[123],fmt,_be_);
        pp_dynamic_id(fmt,a0$0);
        return caml_call2(Stdlib_format[123],fmt,_bf_)});
    caml_update_dummy
     (show_contract_id,
      function(x){return caml_call3(Stdlib_format[127],_bg_,pp_contract_id,x)});
    var
     include=
      [0,
       equal_dynamic_id,
       compare_dynamic_id,
       pp_dynamic_id,
       show_dynamic_id,
       equal_static_id,
       compare_static_id,
       pp_static_id,
       show_static_id,
       equal_contract_id,
       compare_contract_id,
       pp_contract_id,
       show_contract_id];
    caml_register_global(6446,include,"Smartml__Ids");
    function equal_l(lhs,rhs)
     {var _cMS_=caml_string_equal(lhs[1],rhs[1]);
      return _cMS_?caml_string_equal(lhs[2],rhs[2]):_cMS_}
    var compare_l=function _cMR_(_cMP_,_cMQ_){return _cMR_.fun(_cMP_,_cMQ_)};
    caml_update_dummy
     (compare_l,
      function(lhs,rhs)
       {var x=caml_string_compare(lhs[1],rhs[1]);
        return 0 === x?caml_string_compare(lhs[2],rhs[2]):x});
    function pp_l(fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_bh_);
      caml_call3(Stdlib_format[123],fmt,_bi_,cst_source);
      var _cMN_=x[1];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_bj_),_cMN_);
      caml_call2(Stdlib_format[123],fmt,_bk_);
      caml_call2(Stdlib_format[123],fmt,_bl_);
      caml_call3(Stdlib_format[123],fmt,_bm_,cst_target);
      var _cMO_=x[2];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_bn_),_cMO_);
      caml_call2(Stdlib_format[123],fmt,_bo_);
      return caml_call2(Stdlib_format[123],fmt,_bp_)}
    function show_l(x){return caml_call3(Stdlib_format[127],_bq_,pp_l,x)}
    var equal$0=function _cMM_(_cML_){return _cMM_.fun(_cML_)};
    caml_update_dummy
     (equal$0,
      function(x)
       {function _cMJ_(x){return function(_cMK_){return equal_l(x,_cMK_)}}
        return caml_call1(caml_call1(Utils_Binary_tree[1],_cMJ_),x)});
    var compare=function _cMI_(_cMH_){return _cMI_.fun(_cMH_)};
    caml_update_dummy
     (compare,
      function(x)
       {function _cMG_(x){return caml_call1(compare_l,x)}
        return caml_call1(caml_call1(Utils_Binary_tree[2],_cMG_),x)});
    var
     pp$0=function _cMF_(_cME_){return _cMF_.fun(_cME_)},
     show$0=function _cMD_(_cMC_){return _cMD_.fun(_cMC_)};
    caml_update_dummy
     (pp$0,
      function(fmt)
       {function _cMA_(fmt){return function(_cMB_){return pp_l(fmt,_cMB_)}}
        return caml_call2(Utils_Binary_tree[3],_cMA_,fmt)});
    caml_update_dummy
     (show$0,function(x){return caml_call3(Stdlib_format[127],_br_,pp$0,x)});
    function leaf(source,target){return [0,[0,source,target]]}
    var
     Smartml_Layout=
      [0,equal_l,compare_l,pp_l,show_l,equal$0,compare,pp$0,show$0,leaf];
    caml_register_global(6448,Smartml_Layout,"Smartml__Layout");
    var
     equal_unknown=
      function _cMz_(_cMw_,_cMx_,_cMy_){return _cMz_.fun(_cMw_,_cMx_,_cMy_)},
     equal$1=
      function _cMv_(_cMs_,_cMt_,_cMu_){return _cMv_.fun(_cMs_,_cMt_,_cMu_)};
    caml_update_dummy
     (equal_unknown,
      function(poly_a,lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 1}
        else
         if(0 === lhs[0])
          {var _cMq_=lhs[1];
           if(typeof match !== "number" && 1 !== match[0])
            {var rhs0=match[1];return caml_call2(poly_a,_cMq_,rhs0)}}
         else
          {var _cMr_=lhs[1];
           if(typeof match !== "number" && 0 !== match[0])
            {var rhs0$0=match[1];
             return caml_call1
                     (caml_call1(caml_call1(equal$1,poly_a),_cMr_),rhs0$0)}}
        return 0});
    caml_update_dummy
     (equal$1,
      function(poly_a,a,b)
       {var _cMo_=b[1],_cMp_=a[1];
        return caml_call1
                (caml_call1(caml_call1(equal_unknown,poly_a),_cMp_),_cMo_)});
    var
     compare_unknown=
      function _cMn_(_cMk_,_cMl_,_cMm_){return _cMn_.fun(_cMk_,_cMl_,_cMm_)},
     compare$0=
      function _cMj_(_cMg_,_cMh_,_cMi_){return _cMj_.fun(_cMg_,_cMh_,_cMi_)};
    caml_update_dummy
     (compare_unknown,
      function(poly_a,lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 0}
        else
         if(0 === lhs[0])
          {var _cMe_=lhs[1];
           if(typeof match !== "number" && 1 !== match[0])
            {var rhs0=match[1];return caml_call2(poly_a,_cMe_,rhs0)}}
         else
          {var _cMf_=lhs[1];
           if(typeof match !== "number" && 0 !== match[0])
            {var rhs0$0=match[1];
             return caml_call1
                     (caml_call1(caml_call1(compare$0,poly_a),_cMf_),rhs0$0)}}
        function to_int(param)
         {return typeof param === "number"?0:0 === param[0]?1:2}
        var _cMd_=to_int(match);
        return caml_int_compare(to_int(lhs),_cMd_)});
    caml_update_dummy
     (compare$0,
      function(poly_a,a,b)
       {var _cMb_=b[1],_cMc_=a[1];
        return caml_call1
                (caml_call1(caml_call1(compare_unknown,poly_a),_cMc_),_cMb_)});
    var
     pp_unknown=
      function _cMa_(_cL9_,_cL__,_cL$_){return _cMa_.fun(_cL9_,_cL__,_cL$_)},
     show_unknown=function _cL8_(_cL6_,_cL7_){return _cL8_.fun(_cL6_,_cL7_)},
     pp$1=
      function _cL5_(_cL2_,_cL3_,_cL4_){return _cL5_.fun(_cL2_,_cL3_,_cL4_)},
     show$1=function _cL1_(_cLZ_,_cL0_){return _cL1_.fun(_cLZ_,_cL0_)};
    caml_update_dummy
     (pp_unknown,
      function(poly_a,fmt,param)
       {if(typeof param === "number")
         return caml_call2(Stdlib_format[13],fmt,cst_Unknown);
        else
         {if(0 === param[0])
           {var a0=param[1];
            caml_call2(Stdlib_format[123],fmt,_bs_);
            caml_call1(caml_call1(poly_a,fmt),a0);
            return caml_call2(Stdlib_format[123],fmt,_bt_)}
          var a0$0=param[1];
          caml_call2(Stdlib_format[123],fmt,_bu_);
          caml_call1
           (caml_call2(pp$1,function(fmt){return caml_call1(poly_a,fmt)},fmt),
            a0$0);
          return caml_call2(Stdlib_format[123],fmt,_bv_)}});
    caml_update_dummy
     (show_unknown,
      function(poly_a,x)
       {var _cLY_=caml_call1(pp_unknown,poly_a);
        return caml_call3(Stdlib_format[127],_bw_,_cLY_,x)});
    caml_update_dummy
     (pp$1,
      function(poly_a,fmt,x)
       {caml_call2(Stdlib_format[13],fmt,cst_ref);
        var _cLX_=x[1];
        caml_call1
         (caml_call2
           (pp_unknown,function(fmt){return caml_call1(poly_a,fmt)},fmt),
          _cLX_);
        return caml_call2(Stdlib_format[13],fmt,cst$0)});
    caml_update_dummy
     (show$1,
      function(poly_a,x)
       {var _cLW_=caml_call1(pp$1,poly_a);
        return caml_call3(Stdlib_format[127],_bx_,_cLW_,x)});
    function normalize(r)
     {var r$0=r;
      for(;;)
       {var _cLV_=r$0[1];
        if(typeof _cLV_ !== "number" && 1 === _cLV_[0])
         {var r$1=_cLV_[1],r$0=r$1;continue}
        return r$0}}
    function equal$2(eq,r1,r2)
     {var _cLU_=normalize(r2);
      return caml_call3(equal$1,eq,normalize(r1),_cLU_)}
    function get(r)
     {var r$0=r;
      for(;;)
       {var _cLT_=r$0[1];
        if(typeof _cLT_ === "number")
         return 0;
        else
         {if(0 === _cLT_[0]){var x=_cLT_[1];return [0,x]}
          var r$1=_cLT_[1],r$0=r$1;
          continue}}}
    function unknown(param){return [0,0]}
    function value(x){return [0,[0,x]]}
    function equalize(r1,r2)
     {var r1$0=normalize(r1),r2$0=normalize(r2);
      if(r1$0 !== r2$0)
       {var _cLQ_=r1$0[1],_cLR_=r2$0[1],switch$0=0;
        if(typeof _cLQ_ === "number")
         {r1$0[1] = [1,r2$0];return 1}
        else
         if(0 === _cLQ_[0])
          {var _cLS_=_cLQ_[1];
           if(typeof _cLR_ === "number")
            switch$0 = 1;
           else
            if(0 === _cLR_[0])
             {var b=_cLR_[1];
              if(caml_equal(_cLS_,b))
               {if(r1$0[1] !== r2$0[1])r1$0[1] = [1,r2$0];return 1}}}
         else
          switch$0 = 1;
        if(switch$0 && typeof _cLR_ === "number"){r2$0[1] = [1,r1$0];return 1}
        return 0}
      return 1}
    function equalize_merge(merge,r1,r2)
     {var r1$0=normalize(r1),r2$0=normalize(r2);
      if(r1$0 !== r2$0)
       {var _cLN_=r1$0[1],_cLO_=r2$0[1],switch$0=0;
        if(typeof _cLN_ === "number")
         {r1$0[1] = [1,r2$0];return 1}
        else
         if(0 === _cLN_[0])
          {var _cLP_=_cLN_[1];
           if(typeof _cLO_ !== "number")
            {if(0 === _cLO_[0])
              {var b=_cLO_[1];
               if(caml_equal(_cLP_,b))
                {if(r1$0[1] !== r2$0[1])r1$0[1] = [1,r2$0];return 1}
               var match=caml_call2(merge,_cLP_,b);
               if(match)
                {var r=match[1];r2$0[1] = [0,r];r1$0[1] = [1,r2$0];return 1}
               return 0}
             switch$0 = 1}}
        if(! switch$0 && typeof _cLO_ === "number")
         {r2$0[1] = [1,r1$0];return 1}
        throw [0,Assert_failure,_by_]}
      return 1}
    function set(r,x){return equalize(r,value(x))}
    function default$0(r,x)
     {var match=get(r);
      if(match)return 0;
      var success=set(r,x);
      if(success)return 0;
      throw [0,Assert_failure,_bz_]}
    var
     Smartml_Unknown=
      [0,
       equal$2,
       pp$1,
       show$1,
       compare$0,
       unknown,
       value,
       get,
       set,
       default$0,
       normalize,
       equalize,
       equalize_merge];
    caml_register_global(6450,Smartml_Unknown,"Smartml__Unknown");
    var
     pp_sapling_test_state=
      function _cLM_(_cLK_,_cLL_){return _cLM_.fun(_cLK_,_cLL_)},
     show_sapling_test_state=function _cLJ_(_cLI_){return _cLJ_.fun(_cLI_)};
    caml_update_dummy
     (pp_sapling_test_state,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_bA_);
        caml_call3(Stdlib_format[123],fmt,_bB_,cst_Literal_test);
        var _cLD_=x[1];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_bC_),_cLD_);
        caml_call2(Stdlib_format[123],fmt,_bD_);
        caml_call2(Stdlib_format[123],fmt,_bE_);
        caml_call3(Stdlib_format[123],fmt,_bF_,cst_memo);
        var _cLE_=x[2];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_bG_),_cLE_);
        caml_call2(Stdlib_format[123],fmt,_bH_);
        caml_call2(Stdlib_format[123],fmt,_bI_);
        caml_call3(Stdlib_format[123],fmt,_bJ_,cst_elements);
        var _cLF_=x[3];
        caml_call2(Stdlib_format[123],fmt,_bK_);
        var _cLG_=0;
        function _cLH_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_bL_);
          var a1=x[2],a0=x[1];
          caml_call2(Stdlib_format[123],fmt,_bM_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_bN_),a0);
          caml_call2(Stdlib_format[123],fmt,_bO_);
          caml_call1(caml_call1(Utils_Bigint[3],fmt),a1);
          caml_call2(Stdlib_format[123],fmt,_bP_);
          return 1}
        caml_call3(Stdlib_list[22],_cLH_,_cLG_,_cLF_);
        caml_call2(Stdlib_format[123],fmt,_bQ_);
        caml_call2(Stdlib_format[123],fmt,_bR_);
        return caml_call2(Stdlib_format[123],fmt,_bS_)});
    caml_update_dummy
     (show_sapling_test_state,
      function(x)
       {return caml_call3(Stdlib_format[127],_bT_,pp_sapling_test_state,x)});
    var
     equal_sapling_test_state=
      function _cLC_(_cLA_,_cLB_){return _cLC_.fun(_cLA_,_cLB_)};
    caml_update_dummy
     (equal_sapling_test_state,
      function(lhs,rhs)
       {var
         _cLw_=lhs[1] === rhs[1]?1:0,
         _cLx_=_cLw_?lhs[2] === rhs[2]?1:0:_cLw_;
        if(_cLx_)
         {var x=lhs[3],y=rhs[3];
          for(;;)
           {if(x)
             {if(y)
               {var
                 y$0=y[2],
                 b=y[1],
                 x$0=x[2],
                 a=x[1],
                 rhs1=b[2],
                 rhs0=b[1],
                 lhs1=a[2],
                 lhs0=a[1],
                 _cLy_=caml_string_equal(lhs0,rhs0),
                 _cLz_=
                  _cLy_
                   ?caml_call1(caml_call1(Utils_Bigint[1],lhs1),rhs1)
                   :_cLy_;
                if(_cLz_){var x=x$0,y=y$0;continue}
                return _cLz_}}
            else
             if(! y)return 1;
            return 0}}
        return _cLx_});
    var
     compare_sapling_test_state=
      function _cLv_(_cLt_,_cLu_){return _cLv_.fun(_cLt_,_cLu_)};
    caml_update_dummy
     (compare_sapling_test_state,
      function(lhs,rhs)
       {var x=caml_int_compare(lhs[1],rhs[1]);
        if(0 === x)
         {var x$0=caml_int_compare(lhs[2],rhs[2]);
          if(0 === x$0)
           {var x$1=lhs[3],y=rhs[3];
            for(;;)
             {if(x$1)
               {if(y)
                 {var
                   y$0=y[2],
                   b=y[1],
                   x$2=x$1[2],
                   a=x$1[1],
                   rhs1=b[2],
                   rhs0=b[1],
                   lhs1=a[2],
                   lhs0=a[1],
                   x$3=caml_string_compare(lhs0,rhs0),
                   x$4=
                    0 === x$3
                     ?caml_call1(caml_call1(Utils_Bigint[2],lhs1),rhs1)
                     :x$3;
                  if(0 === x$4){var x$1=x$2,y=y$0;continue}
                  return x$4}
                return 1}
              return y?-1:0}}
          return x$0}
        return x});
    var
     pp_sapling_test_transaction=
      function _cLs_(_cLq_,_cLr_){return _cLs_.fun(_cLq_,_cLr_)},
     show_sapling_test_transaction=
      function _cLp_(_cLo_){return _cLp_.fun(_cLo_)};
    caml_update_dummy
     (pp_sapling_test_transaction,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_bU_);
        caml_call3(Stdlib_format[123],fmt,_bV_,cst_Literal_source);
        var _cLk_=x[1];
        if(_cLk_)
         {var x$0=_cLk_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_bW_),x$0);
          caml_call2(Stdlib_format[13],fmt,cst$1)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None);
        caml_call2(Stdlib_format[123],fmt,_bX_);
        caml_call2(Stdlib_format[123],fmt,_bY_);
        caml_call3(Stdlib_format[123],fmt,_bZ_,cst_target$0);
        var _cLl_=x[2];
        if(_cLl_)
         {var x$1=_cLl_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$0);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_b0_),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$2)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$0);
        caml_call2(Stdlib_format[123],fmt,_b1_);
        caml_call2(Stdlib_format[123],fmt,_b2_);
        caml_call3(Stdlib_format[123],fmt,_b3_,cst_amount);
        var _cLm_=x[3];
        caml_call1(caml_call1(Utils_Bigint[3],fmt),_cLm_);
        caml_call2(Stdlib_format[123],fmt,_b4_);
        caml_call2(Stdlib_format[123],fmt,_b5_);
        caml_call3(Stdlib_format[123],fmt,_b6_,cst_memo$0);
        var _cLn_=x[4];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_b7_),_cLn_);
        caml_call2(Stdlib_format[123],fmt,_b8_);
        return caml_call2(Stdlib_format[123],fmt,_b9_)});
    caml_update_dummy
     (show_sapling_test_transaction,
      function(x)
       {return caml_call3
                (Stdlib_format[127],_b__,pp_sapling_test_transaction,x)});
    var
     equal_sapling_test_transaction=
      function _cLj_(_cLh_,_cLi_){return _cLj_.fun(_cLh_,_cLi_)};
    caml_update_dummy
     (equal_sapling_test_transaction,
      function(lhs,rhs)
       {var _cK__=rhs[1],_cK$_=lhs[1],switch$0=0;
        if(_cK$_)
         if(_cK__)
          var b=_cK__[1],a=_cK$_[1],_cLa_=caml_string_equal(a,b);
         else
          switch$0 = 1;
        else
         if(_cK__)switch$0 = 1;else var _cLa_=1;
        if(switch$0)var _cLa_=0;
        if(_cLa_)
         {var _cLb_=rhs[2],_cLc_=lhs[2],switch$1=0;
          if(_cLc_)
           if(_cLb_)
            var b$0=_cLb_[1],a$0=_cLc_[1],_cLd_=caml_string_equal(a$0,b$0);
           else
            switch$1 = 1;
          else
           if(_cLb_)switch$1 = 1;else var _cLd_=1;
          if(switch$1)var _cLd_=0;
          var _cLe_=_cLd_}
        else
         var _cLe_=_cLa_;
        if(_cLe_)
         var
          _cLf_=rhs[3],
          _cLg_=caml_call1(caml_call1(Utils_Bigint[1],lhs[3]),_cLf_);
        else
         var _cLg_=_cLe_;
        return _cLg_?lhs[4] === rhs[4]?1:0:_cLg_});
    var
     compare_sapling_test_transacti=
      function _cK9_(_cK7_,_cK8_){return _cK9_.fun(_cK7_,_cK8_)};
    caml_update_dummy
     (compare_sapling_test_transacti,
      function(lhs,rhs)
       {var _cK0_=rhs[1],_cK1_=lhs[1];
        if(_cK1_)
         {var _cK2_=_cK1_[1];
          if(_cK0_)var b=_cK0_[1],x=caml_string_compare(_cK2_,b);else var x=1}
        else
         var x=_cK0_?-1:0;
        if(0 === x)
         {var _cK3_=rhs[2],_cK4_=lhs[2];
          if(_cK4_)
           {var _cK5_=_cK4_[1];
            if(_cK3_)
             var b$0=_cK3_[1],x$0=caml_string_compare(_cK5_,b$0);
            else
             var x$0=1}
          else
           var x$0=_cK3_?-1:0;
          if(0 === x$0)
           {var
             _cK6_=rhs[3],
             x$1=caml_call1(caml_call1(Utils_Bigint[2],lhs[3]),_cK6_);
            return 0 === x$1?caml_int_compare(lhs[4],rhs[4]):x$1}
          return x$0}
        return x});
    var equal$3=function _cKZ_(_cKX_,_cKY_){return _cKZ_.fun(_cKX_,_cKY_)};
    caml_update_dummy
     (equal$3,
      function(lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 1}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];return lhs0 === rhs0?1:0}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var
               rhsi=match[1],
               lhsi=lhs[1],
               _cKV_=caml_call1(caml_call1(Utils_Bigint[1],lhsi),rhsi);
              return _cKV_?1:_cKV_}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_string_equal(lhs0$0,rhs0$0)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_string_equal(lhs0$1,rhs0$1)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_string_equal(lhs0$2,rhs0$2)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$3=match[1],lhs0$3=lhs[1];
              return caml_call1(caml_call1(Utils_Bigint[1],lhs0$3),rhs0$3)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_call1(caml_call1(Utils_Bigint[1],lhs0$4),rhs0$4)}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var
               rhs1=match[2],
               rhs0$5=match[1],
               lhs1=lhs[2],
               lhs0$5=lhs[1],
               _cKW_=caml_string_equal(lhs0$5,rhs0$5);
              if(_cKW_)
               {if(lhs1)
                 {if(rhs1)
                   {var b=rhs1[1],a=lhs1[1];return caml_string_equal(a,b)}}
                else
                 if(! rhs1)return 1;
                return 0}
              return _cKW_}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_string_equal(lhs0$6,rhs0$6)}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1];
              return caml_string_equal(lhs0$7,rhs0$7)}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var rhs0$8=match[1],lhs0$8=lhs[1];
              return caml_string_equal(lhs0$8,rhs0$8)}
            break;
           case 11:
            if(typeof match !== "number" && 11 === match[0])
             {var rhs0$9=match[1],lhs0$9=lhs[1];
              return caml_string_equal(lhs0$9,rhs0$9)}
            break;
           case 12:
            if(typeof match !== "number" && 12 === match[0])
             {var rhs0$10=match[1],lhs0$10=lhs[1];
              return caml_string_equal(lhs0$10,rhs0$10)}
            break;
           case 13:
            if(typeof match !== "number" && 13 === match[0])
             {var rhs0$11=match[1],lhs0$11=lhs[1];
              return caml_call1
                      (caml_call1(equal_sapling_test_state,lhs0$11),rhs0$11)}
            break;
           case 14:
            if(typeof match !== "number" && 14 === match[0])
             {var rhs0$12=match[1],lhs0$12=lhs[1];
              return caml_call1
                      (caml_call1(equal_sapling_test_transaction,lhs0$12),rhs0$12)}
            break;
           case 15:
            if(typeof match !== "number" && 15 === match[0])
             {var rhs0$13=match[1],lhs0$13=lhs[1];
              return caml_string_equal(lhs0$13,rhs0$13)}
            break;
           case 16:
            if(typeof match !== "number" && 16 === match[0])
             {var rhs0$14=match[1],lhs0$14=lhs[1];
              return caml_string_equal(lhs0$14,rhs0$14)}
            break;
           default:
            if(typeof match !== "number" && 17 === match[0])
             {var rhs0$15=match[1],lhs0$15=lhs[1];
              return caml_string_equal(lhs0$15,rhs0$15)}}
        return 0});
    var compare$1=function _cKU_(_cKS_,_cKT_){return _cKU_.fun(_cKS_,_cKT_)};
    caml_update_dummy
     (compare$1,
      function(lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 0}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_int_compare(lhs0,rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var
               rhsi=match[1],
               lhsi=lhs[1],
               x=caml_call1(caml_call1(Utils_Bigint[2],lhsi),rhsi);
              return 0 === x?0:x}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_string_compare(lhs0$0,rhs0$0)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_string_compare(lhs0$1,rhs0$1)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_string_compare(lhs0$2,rhs0$2)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$3=match[1],lhs0$3=lhs[1];
              return caml_call1(caml_call1(Utils_Bigint[2],lhs0$3),rhs0$3)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_call1(caml_call1(Utils_Bigint[2],lhs0$4),rhs0$4)}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var
               rhs1=match[2],
               rhs0$5=match[1],
               lhs1=lhs[2],
               lhs0$5=lhs[1],
               x$0=caml_string_compare(lhs0$5,rhs0$5);
              if(0 === x$0)
               {if(lhs1)
                 {var _cKR_=lhs1[1];
                  if(rhs1){var b=rhs1[1];return caml_string_compare(_cKR_,b)}
                  return 1}
                return rhs1?-1:0}
              return x$0}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_string_compare(lhs0$6,rhs0$6)}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1];
              return caml_string_compare(lhs0$7,rhs0$7)}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var rhs0$8=match[1],lhs0$8=lhs[1];
              return caml_string_compare(lhs0$8,rhs0$8)}
            break;
           case 11:
            if(typeof match !== "number" && 11 === match[0])
             {var rhs0$9=match[1],lhs0$9=lhs[1];
              return caml_string_compare(lhs0$9,rhs0$9)}
            break;
           case 12:
            if(typeof match !== "number" && 12 === match[0])
             {var rhs0$10=match[1],lhs0$10=lhs[1];
              return caml_string_compare(lhs0$10,rhs0$10)}
            break;
           case 13:
            if(typeof match !== "number" && 13 === match[0])
             {var rhs0$11=match[1],lhs0$11=lhs[1];
              return caml_call1
                      (caml_call1(compare_sapling_test_state,lhs0$11),rhs0$11)}
            break;
           case 14:
            if(typeof match !== "number" && 14 === match[0])
             {var rhs0$12=match[1],lhs0$12=lhs[1];
              return caml_call1
                      (caml_call1(compare_sapling_test_transacti,lhs0$12),rhs0$12)}
            break;
           case 15:
            if(typeof match !== "number" && 15 === match[0])
             {var rhs0$13=match[1],lhs0$13=lhs[1];
              return caml_string_compare(lhs0$13,rhs0$13)}
            break;
           case 16:
            if(typeof match !== "number" && 16 === match[0])
             {var rhs0$14=match[1],lhs0$14=lhs[1];
              return caml_string_compare(lhs0$14,rhs0$14)}
            break;
           default:
            if(typeof match !== "number" && 17 === match[0])
             {var rhs0$15=match[1],lhs0$15=lhs[1];
              return caml_string_compare(lhs0$15,rhs0$15)}}
        function to_int(param)
         {if(typeof param === "number")
           return 0;
          else
           switch(param[0])
            {case 0:return 1;
             case 1:return 2;
             case 2:return 3;
             case 3:return 4;
             case 4:return 5;
             case 5:return 6;
             case 6:return 7;
             case 7:return 8;
             case 8:return 9;
             case 9:return 10;
             case 10:return 11;
             case 11:return 12;
             case 12:return 13;
             case 13:return 14;
             case 14:return 15;
             case 15:return 16;
             case 16:return 17;
             default:return 18}}
        var _cKQ_=to_int(match);
        return caml_int_compare(to_int(lhs),_cKQ_)});
    var
     pp$2=function _cKP_(_cKN_,_cKO_){return _cKP_.fun(_cKN_,_cKO_)},
     show$2=function _cKM_(_cKL_){return _cKM_.fun(_cKL_)};
    caml_update_dummy
     (pp$2,
      function(fmt,param)
       {if(typeof param === "number")
         return caml_call2(Stdlib_format[13],fmt,cst_Unit$0);
        else
         switch(param[0])
          {case 0:
            var a0=param[1];
            caml_call2(Stdlib_format[123],fmt,_b$_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_ca_),a0);
            return caml_call2(Stdlib_format[123],fmt,_cb_);
           case 1:
            var ais_nat=param[2],ai=param[1];
            caml_call2(Stdlib_format[123],fmt,_cc_);
            caml_call3(Stdlib_format[123],fmt,_cd_,cst_i);
            caml_call1(caml_call1(Utils_Bigint[3],fmt),ai);
            caml_call2(Stdlib_format[123],fmt,_ce_);
            caml_call2(Stdlib_format[123],fmt,_cf_);
            caml_call3(Stdlib_format[123],fmt,_cg_,cst_is_nat);
            caml_call1
             (caml_call2
               (pp$1,
                function(fmt){return caml_call2(Stdlib_format[123],fmt,_ch_)},
                fmt),
              ais_nat);
            caml_call2(Stdlib_format[123],fmt,_ci_);
            return caml_call2(Stdlib_format[123],fmt,_cj_);
           case 2:
            var a0$0=param[1];
            caml_call2(Stdlib_format[123],fmt,_ck_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cl_),a0$0);
            return caml_call2(Stdlib_format[123],fmt,_cm_);
           case 3:
            var a0$1=param[1];
            caml_call2(Stdlib_format[123],fmt,_cn_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_co_),a0$1);
            return caml_call2(Stdlib_format[123],fmt,_cp_);
           case 4:
            var a0$2=param[1];
            caml_call2(Stdlib_format[123],fmt,_cq_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cr_),a0$2);
            return caml_call2(Stdlib_format[123],fmt,_cs_);
           case 5:
            var a0$3=param[1];
            caml_call2(Stdlib_format[123],fmt,_ct_);
            caml_call1(caml_call1(Utils_Bigint[3],fmt),a0$3);
            return caml_call2(Stdlib_format[123],fmt,_cu_);
           case 6:
            var a0$4=param[1];
            caml_call2(Stdlib_format[123],fmt,_cv_);
            caml_call1(caml_call1(Utils_Bigint[3],fmt),a0$4);
            return caml_call2(Stdlib_format[123],fmt,_cw_);
           case 7:
            var a1=param[2],a0$5=param[1];
            caml_call2(Stdlib_format[123],fmt,_cx_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cy_),a0$5);
            caml_call2(Stdlib_format[123],fmt,_cz_);
            if(a1)
             {var x=a1[1];
              caml_call2(Stdlib_format[13],fmt,cst_Some$1);
              caml_call1(caml_call2(Stdlib_format[123],fmt,_cA_),x);
              caml_call2(Stdlib_format[13],fmt,cst$3)}
            else
             caml_call2(Stdlib_format[13],fmt,cst_None$1);
            return caml_call2(Stdlib_format[123],fmt,_cB_);
           case 8:
            var a0$6=param[1];
            caml_call2(Stdlib_format[123],fmt,_cC_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cD_),a0$6);
            return caml_call2(Stdlib_format[123],fmt,_cE_);
           case 9:
            var a0$7=param[1];
            caml_call2(Stdlib_format[123],fmt,_cF_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cG_),a0$7);
            return caml_call2(Stdlib_format[123],fmt,_cH_);
           case 10:
            var a0$8=param[1];
            caml_call2(Stdlib_format[123],fmt,_cI_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cJ_),a0$8);
            return caml_call2(Stdlib_format[123],fmt,_cK_);
           case 11:
            var a0$9=param[1];
            caml_call2(Stdlib_format[123],fmt,_cL_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cM_),a0$9);
            return caml_call2(Stdlib_format[123],fmt,_cN_);
           case 12:
            var a0$10=param[1];
            caml_call2(Stdlib_format[123],fmt,_cO_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cP_),a0$10);
            return caml_call2(Stdlib_format[123],fmt,_cQ_);
           case 13:
            var a0$11=param[1];
            caml_call2(Stdlib_format[123],fmt,_cR_);
            caml_call1(caml_call1(pp_sapling_test_state,fmt),a0$11);
            return caml_call2(Stdlib_format[123],fmt,_cS_);
           case 14:
            var a0$12=param[1];
            caml_call2(Stdlib_format[123],fmt,_cT_);
            caml_call1(caml_call1(pp_sapling_test_transaction,fmt),a0$12);
            return caml_call2(Stdlib_format[123],fmt,_cU_);
           case 15:
            var a0$13=param[1];
            caml_call2(Stdlib_format[123],fmt,_cV_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cW_),a0$13);
            return caml_call2(Stdlib_format[123],fmt,_cX_);
           case 16:
            var a0$14=param[1];
            caml_call2(Stdlib_format[123],fmt,_cY_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_cZ_),a0$14);
            return caml_call2(Stdlib_format[123],fmt,_c0_);
           default:
            var a0$15=param[1];
            caml_call2(Stdlib_format[123],fmt,_c1_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_c2_),a0$15);
            return caml_call2(Stdlib_format[123],fmt,_c3_)}});
    caml_update_dummy
     (show$2,function(x){return caml_call3(Stdlib_format[127],_c4_,pp$2,x)});
    var unit=0;
    function bool(x){return [0,x]}
    function int$0(i){return [1,i,value(0)]}
    function nat(i){return [1,i,value(1)]}
    function intOrNat(is_nat,i){return [1,i,is_nat]}
    function small_int(i){return int$0(caml_call1(Utils_Bigint[5],i))}
    function small_nat(i){return nat(caml_call1(Utils_Bigint[5],i))}
    function string(s){return [2,s]}
    function bytes(s){return [3,s]}
    function chain_id(s){return [4,s]}
    function timestamp(i){return [5,i]}
    function mutez(i){return [6,i]}
    function address(entry_point,s){return [7,s,entry_point]}
    function key(s){return [8,s]}
    function secret_key(s){return [9,s]}
    function key_hash(s){return [10,s]}
    function baker_hash(h){return [11,h]}
    function signature(s){return [12,s]}
    function sapling_test_state(memo,elements)
     {return [13,[0,1,memo,elements]]}
    function sapling_state_real(memo){return [13,[0,0,memo,0]]}
    function sapling_test_transaction(memo,source,target,amount)
     {return [14,[0,source,target,amount,memo]]}
    function unBool(param)
     {if(typeof param !== "number" && 0 === param[0])
       {var b=param[1];return [0,b]}
      return 0}
    function unInt(param)
     {if(typeof param !== "number" && 1 === param[0])
       {var i=param[1];return [0,i]}
      return 0}
    function bls12_381_g1(s){return [15,s]}
    function bls12_381_g2(s){return [16,s]}
    function bls12_381_fr(s){return [17,s]}
    var
     Smartml_Literal=
      [0,
       pp_sapling_test_state,
       show_sapling_test_state,
       equal_sapling_test_state,
       compare_sapling_test_state,
       pp_sapling_test_transaction,
       show_sapling_test_transaction,
       equal_sapling_test_transaction,
       compare_sapling_test_transacti,
       equal$3,
       compare$1,
       pp$2,
       show$2,
       unit,
       bool,
       int$0,
       nat,
       intOrNat,
       small_int,
       small_nat,
       string,
       bytes,
       chain_id,
       timestamp,
       mutez,
       address,
       key,
       secret_key,
       key_hash,
       baker_hash,
       signature,
       sapling_test_state,
       sapling_state_real,
       sapling_test_transaction,
       unBool,
       unInt,
       bls12_381_g1,
       bls12_381_g2,
       bls12_381_fr];
    caml_register_global(6452,Smartml_Literal,"Smartml__Literal");
    function pp_account(fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_c5_);
      caml_call3(Stdlib_format[123],fmt,_c6_,cst_pkh);
      var _cKI_=x[1];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_c7_),_cKI_);
      caml_call2(Stdlib_format[123],fmt,_c8_);
      caml_call2(Stdlib_format[123],fmt,_c9_);
      caml_call3(Stdlib_format[123],fmt,_c__,cst_pk);
      var _cKJ_=x[2];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_c$_),_cKJ_);
      caml_call2(Stdlib_format[123],fmt,_da_);
      caml_call2(Stdlib_format[123],fmt,_db_);
      caml_call3(Stdlib_format[123],fmt,_dc_,cst_sk);
      var _cKK_=x[3];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_dd_),_cKK_);
      caml_call2(Stdlib_format[123],fmt,_de_);
      return caml_call2(Stdlib_format[123],fmt,_df_)}
    function show_account(x)
     {return caml_call3(Stdlib_format[127],_dg_,pp_account,x)}
    function test_primitives(P)
     {var results=[0,0];
      function assert_bool(cond,s)
       {var _cKE_=results[1];
        try
         {var _cKH_=caml_call1(cond,0)?[0,s]:[1,s],_cKG_=_cKH_}
        catch(e)
         {e = caml_wrap_exception(e);
          var
           _cKF_=caml_call1(Stdlib_printexc[1],e),
           _cKG_=[1,caml_call3(Stdlib_format[126],_dh_,s,_cKF_)]}
        results[1] = [0,_cKG_,_cKE_];
        return 0}
      function assertf(cond,fmt)
       {function _cKC_(_cKD_){return assert_bool(cond,_cKD_)}
        return caml_call2(Stdlib_format[134],_cKC_,fmt)}
      var a1=caml_call1(P[2][8],cst_a1),a2=caml_call1(P[2][8],cst_a2);
      assertf(function(param){return caml_notequal(a1,a2)},_di_);
      var a3=caml_call1(P[2][8],cst_a1$0);
      assertf(function(param){return caml_equal(a1,a3)},_dj_);
      assertf
       (function(param)
         {var s1=caml_call2(P[2][6],a1[3],b1);
          return caml_call3(P[2][7],a1[2],s1,b1)},
        _dk_);
      assertf
       (function(param)
         {var s1=caml_call2(P[2][6],a1[3],b1);
          return 1 - caml_call3(P[2][7],a2[2],s1,b1)},
        _dl_);
      assertf
       (function(param)
         {var _cKB_=a1[1];
          return caml_string_equal(caml_call1(P[2][9],a1[2]),_cKB_)},
        _dm_);
      return caml_call1(Stdlib_list[9],results[1])}
    var Smartml_Primitives=[0,pp_account,show_account,test_primitives];
    caml_register_global(6454,Smartml_Primitives,"Smartml__Primitives");
    function sort_row(r)
     {function _cKz_(param,_cKA_)
       {var lbl2=_cKA_[1],lbl1=param[1];return caml_compare(lbl1,lbl2)}
      return caml_call2(Base_List[59],r,_cKz_)}
    function equal_row(poly_t)
     {return function(x$1,y$1)
       {var x=x$1,y=y$1;
        for(;;)
         {if(x)
           {if(y)
             {var
               y$0=y[2],
               b=y[1],
               x$0=x[2],
               a=x[1],
               rhs1=b[2],
               rhs0=b[1],
               lhs1=a[2],
               lhs0=a[1],
               _cKx_=caml_string_equal(lhs0,rhs0),
               _cKy_=_cKx_?caml_call2(poly_t,lhs1,rhs1):_cKx_;
              if(_cKy_){var x=x$0,y=y$0;continue}
              return _cKy_}}
          else
           if(! y)return 1;
          return 0}}}
    var compare_row=function _cKw_(_cKv_){return _cKw_.fun(_cKv_)};
    caml_update_dummy
     (compare_row,
      function(poly_t)
       {return function(x$3,y$1)
         {var x=x$3,y=y$1;
          for(;;)
           {if(x)
             {if(y)
               {var
                 y$0=y[2],
                 b=y[1],
                 x$0=x[2],
                 a=x[1],
                 rhs1=b[2],
                 rhs0=b[1],
                 lhs1=a[2],
                 lhs0=a[1],
                 x$1=caml_string_compare(lhs0,rhs0),
                 x$2=0 === x$1?caml_call2(poly_t,lhs1,rhs1):x$1;
                if(0 === x$2){var x=x$0,y=y$0;continue}
                return x$2}
              return 1}
            return y?-1:0}}});
    function map_row(poly_t)
     {function _cKu_(param)
       {var a1=param[2],a0=param[1];return [0,a0,caml_call1(poly_t,a1)]}
      return caml_call1(Stdlib_list[17],_cKu_)}
    function fold_row(poly_t)
     {function _cKt_(acc,param)
       {var a1=param[2];return caml_call2(poly_t,acc,a1)}
      return caml_call1(Stdlib_list[22],_cKt_)}
    function pp_row(poly_t,fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_dn_);
      var _cKr_=0;
      function _cKs_(sep,x)
       {if(sep)caml_call2(Stdlib_format[123],fmt,_do_);
        var a1=x[2],a0=x[1];
        caml_call2(Stdlib_format[123],fmt,_dp_);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_dq_),a0);
        caml_call2(Stdlib_format[123],fmt,_dr_);
        caml_call1(caml_call1(poly_t,fmt),a1);
        caml_call2(Stdlib_format[123],fmt,_ds_);
        return 1}
      caml_call3(Stdlib_list[22],_cKs_,_cKr_,x);
      return caml_call2(Stdlib_format[123],fmt,_dt_)}
    function show_row(poly_t,x)
     {function _cKo_(_cKp_,_cKq_){return pp_row(poly_t,_cKp_,_cKq_)}
      return caml_call3(Stdlib_format[127],_du_,_cKo_,x)}
    function equal_bounded_cases(poly_t,lhs,rhs)
     {var _cKm_=lhs[1] === rhs[1]?1:0;
      if(_cKm_)
       {var x=lhs[2],y=rhs[2];
        for(;;)
         {if(x)
           {if(y)
             {var
               y$0=y[2],
               b=y[1],
               x$0=x[2],
               a=x[1],
               _cKn_=caml_call2(poly_t,a,b);
              if(_cKn_){var x=x$0,y=y$0;continue}
              return _cKn_}}
          else
           if(! y)return 1;
          return 0}}
      return _cKm_}
    function map_bounded_cases(poly_t,x)
     {var
       _cKk_=x[2],
       _cKl_=caml_call1(caml_call1(Stdlib_list[17],poly_t),_cKk_);
      return [0,x[1],_cKl_]}
    function fold_bounded_cases(poly_t,acc,x)
     {var _cKj_=x[2];
      return caml_call2(caml_call1(Stdlib_list[22],poly_t),acc,_cKj_)}
    function pp_bounded_cases(poly_t,fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_dv_);
      caml_call3(Stdlib_format[123],fmt,_dw_,cst_final);
      var _cKf_=x[1];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_dx_),_cKf_);
      caml_call2(Stdlib_format[123],fmt,_dy_);
      caml_call2(Stdlib_format[123],fmt,_dz_);
      caml_call3(Stdlib_format[123],fmt,_dA_,cst_cases);
      var _cKg_=x[2];
      caml_call2(Stdlib_format[123],fmt,_dB_);
      var _cKh_=0;
      function _cKi_(sep,x)
       {if(sep)caml_call2(Stdlib_format[123],fmt,_dC_);
        caml_call1(caml_call1(poly_t,fmt),x);
        return 1}
      caml_call3(Stdlib_list[22],_cKi_,_cKh_,_cKg_);
      caml_call2(Stdlib_format[123],fmt,_dD_);
      caml_call2(Stdlib_format[123],fmt,_dE_);
      return caml_call2(Stdlib_format[123],fmt,_dF_)}
    function show_bounded_cases(poly_t,x)
     {function _cKc_(_cKd_,_cKe_){return pp_bounded_cases(poly_t,_cKd_,_cKe_)}
      return caml_call3(Stdlib_format[127],_dG_,_cKc_,x)}
    var
     compare_bounded_cases=
      function _cKb_(_cJ__,_cJ$_,_cKa_){return _cKb_.fun(_cJ__,_cJ$_,_cKa_)};
    caml_update_dummy
     (compare_bounded_cases,
      function(poly_t,lhs,rhs)
       {var x=caml_int_compare(lhs[1],rhs[1]);
        if(0 === x)
         {var x$0=lhs[2],y=rhs[2];
          for(;;)
           {if(x$0)
             {if(y)
               {var
                 y$0=y[2],
                 b=y[1],
                 x$1=x$0[2],
                 a=x$0[1],
                 x$2=caml_call2(poly_t,a,b);
                if(0 === x$2){var x$0=x$1,y=y$0;continue}
                return x$2}
              return 1}
            return y?-1:0}}
        return x});
    var
     equal_f=
      function _cJ9_(_cJ6_,_cJ7_,_cJ8_){return _cJ9_.fun(_cJ6_,_cJ7_,_cJ8_)},
     equal_unknownType_f=
      function _cJ5_(_cJ2_,_cJ3_,_cJ4_){return _cJ5_.fun(_cJ2_,_cJ3_,_cJ4_)};
    caml_update_dummy
     (equal_f,
      function(poly_t,lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 1}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_string_equal(lhs0,rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_call1
                      (caml_call1(Michelson_base_Type[1],lhs0$0),rhs0$0)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var
               rhs1=match[2],
               rhs0$1=match[1],
               lhs1=lhs[2],
               lhs0$1=lhs[1],
               _cJR_=
                caml_call1(caml_call1(Michelson_base_Type[5],lhs0$1),rhs0$1);
              return _cJR_?caml_call2(poly_t,lhs1,rhs1):_cJR_}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var
               rhs2=match[3],
               rhs1$0=match[2],
               rhs0$2=match[1],
               lhs2=lhs[3],
               lhs1$0=lhs[2],
               lhs0$2=lhs[1],
               _cJS_=
                caml_call1(caml_call1(Michelson_base_Type[9],lhs0$2),rhs0$2),
               _cJT_=_cJS_?caml_call2(poly_t,lhs1$0,rhs1$0):_cJS_;
              return _cJT_?caml_call2(poly_t,lhs2,rhs2):_cJT_}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhsisNat=match[1],lhsisNat=lhs[1];
              return equal$2
                      (function(a,b){return a === b?1:0},lhsisNat,rhsisNat)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var
               rhscases=match[2],
               rhst=match[1],
               lhscases=lhs[2],
               lhst=lhs[1],
               _cJU_=caml_call2(poly_t,lhst,rhst);
              return _cJU_
                      ?equal$2
                        (function(x)
                          {function _cJ0_(x){return caml_call1(equal$3,x)}
                           return function(_cJ1_)
                            {return equal_bounded_cases(_cJ0_,x,_cJ1_)}},
                         lhscases,
                         rhscases)
                      :_cJU_}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var
               rhsrow=match[2],
               rhslayout=match[1],
               lhsrow=lhs[2],
               lhslayout=lhs[1],
               _cJZ_=
                equal$2
                 (function(x){return caml_call1(equal$0,x)},
                  lhslayout,
                  rhslayout);
              return _cJZ_
                      ?caml_call1(caml_call1(equal_row(poly_t),lhsrow),rhsrow)
                      :_cJZ_}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var
               rhsrow$0=match[2],
               rhslayout$0=match[1],
               lhsrow$0=lhs[2],
               lhslayout$0=lhs[1],
               _cJY_=
                equal$2
                 (function(x){return caml_call1(equal$0,x)},
                  lhslayout$0,
                  rhslayout$0);
              return _cJY_
                      ?caml_call1(caml_call1(equal_row(poly_t),lhsrow$0),rhsrow$0)
                      :_cJY_}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var
               rhs0$3=match[1],
               lhs0$3=lhs[1],
               _cJV_=rhs0$3[1],
               _cJW_=lhs0$3[1];
              return caml_call1
                      (caml_call1(caml_call1(equal_unknownType_f,poly_t),_cJW_),
                       _cJV_)}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1],x=lhs0$4,y=rhs0$4;
              for(;;)
               {if(x)
                 {if(y)
                   {var
                     y$0=y[2],
                     b=y[1],
                     x$0=x[2],
                     a=x[1],
                     _cJX_=caml_call2(poly_t,a,b);
                    if(_cJX_){var x=x$0,y=y$0;continue}
                    return _cJX_}}
                else
                 if(! y)return 1;
                return 0}}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var rhsmemo=match[1],lhsmemo=lhs[1];
              return equal$2
                      (function(a,b){return a === b?1:0},lhsmemo,rhsmemo)}
            break;
           default:
            if(typeof match !== "number" && 11 === match[0])
             {var rhsmemo$0=match[1],lhsmemo$0=lhs[1];
              return equal$2
                      (function(a,b){return a === b?1:0},lhsmemo$0,rhsmemo$0)}}
        return 0});
    caml_update_dummy
     (equal_unknownType_f,
      function(poly_t,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_string_equal(lhs0,rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1],x=lhs0$0,y=rhs0$0;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    rhs1=b[2],
                    rhs0$1=b[1],
                    lhs1=a[2],
                    lhs0$1=a[1],
                    _cJL_=caml_string_equal(lhs0$1,rhs0$1),
                    _cJM_=_cJL_?caml_call2(poly_t,lhs1,rhs1):_cJL_;
                   if(_cJM_){var x=x$0,y=y$0;continue}
                   return _cJM_}}
               else
                if(! y)return 1;
               return 0}}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1],x$1=lhs0$2,y$1=rhs0$2;
             for(;;)
              {if(x$1)
                {if(y$1)
                  {var
                    y$2=y$1[2],
                    b$0=y$1[1],
                    x$2=x$1[2],
                    a$0=x$1[1],
                    rhs1$0=b$0[2],
                    rhs0$3=b$0[1],
                    lhs1$0=a$0[2],
                    lhs0$3=a$0[1],
                    _cJN_=lhs0$3 === rhs0$3?1:0,
                    _cJO_=_cJN_?caml_call2(poly_t,lhs1$0,rhs1$0):_cJN_;
                   if(_cJO_){var x$1=x$2,y$1=y$2;continue}
                   return _cJO_}}
               else
                if(! y$1)return 1;
               return 0}}
           break;
          case 3:
           if(3 === match[0])
            {var rhs0$4=match[1],lhs0$4=lhs[1],x$3=lhs0$4,y$3=rhs0$4;
             for(;;)
              {if(x$3)
                {if(y$3)
                  {var
                    y$4=y$3[2],
                    b$1=y$3[1],
                    x$4=x$3[2],
                    a$1=x$3[1],
                    rhs1$1=b$1[2],
                    rhs0$5=b$1[1],
                    lhs1$1=a$1[2],
                    lhs0$5=a$1[1],
                    _cJP_=caml_string_equal(lhs0$5,rhs0$5),
                    _cJQ_=_cJP_?caml_call2(poly_t,lhs1$1,rhs1$1):_cJP_;
                   if(_cJQ_){var x$3=x$4,y$3=y$4;continue}
                   return _cJQ_}}
               else
                if(! y$3)return 1;
               return 0}}
           break;
          default:
           if(4 === match[0])
            {var rhs0$6=match[1],lhs0$6=lhs[1];
             return caml_call2(poly_t,lhs0$6,rhs0$6)}}
        return 0});
    function map_f(poly_t,param)
     {if(typeof param === "number")
       return 0;
      else
       switch(param[0])
        {case 0:var a0=param[1];return [0,a0];
         case 1:var a0$0=param[1];return [1,a0$0];
         case 2:
          var a1=param[2],a0$1=param[1];return [2,a0$1,caml_call1(poly_t,a1)];
         case 3:
          var
           a2=param[3],
           a1$0=param[2],
           a0$2=param[1],
           _cJK_=caml_call1(poly_t,a2);
          return [3,a0$2,caml_call1(poly_t,a1$0),_cJK_];
         case 4:var aisNat=param[1];return [4,aisNat];
         case 5:
          var acases=param[2],at=param[1];
          return [5,caml_call1(poly_t,at),acases];
         case 6:
          var arow=param[2],alayout=param[1];
          return [6,alayout,caml_call1(map_row(poly_t),arow)];
         case 7:
          var arow$0=param[2],alayout$0=param[1];
          return [7,alayout$0,caml_call1(map_row(poly_t),arow$0)];
         case 8:
          var a0$3=param[1],contents=a0$3[1];
          return [8,[0,map_unknownType_f(poly_t,contents)]];
         case 9:
          var a0$4=param[1];
          return [9,caml_call1(caml_call1(Stdlib_list[17],poly_t),a0$4)];
         case 10:var amemo=param[1];return [10,amemo];
         default:var amemo$0=param[1];return [11,amemo$0]}}
    function map_unknownType_f(poly_t,param)
     {switch(param[0])
       {case 0:var a0=param[1];return [0,a0];
        case 1:
         var
          a0$0=param[1],
          _cJH_=
           function(param)
            {var a1=param[2],a0=param[1];return [0,a0,caml_call1(poly_t,a1)]};
         return [1,caml_call1(caml_call1(Stdlib_list[17],_cJH_),a0$0)];
        case 2:
         var
          a0$1=param[1],
          _cJI_=
           function(param)
            {var a1=param[2],a0=param[1];return [0,a0,caml_call1(poly_t,a1)]};
         return [2,caml_call1(caml_call1(Stdlib_list[17],_cJI_),a0$1)];
        case 3:
         var
          a0$2=param[1],
          _cJJ_=
           function(param)
            {var a1=param[2],a0=param[1];return [0,a0,caml_call1(poly_t,a1)]};
         return [3,caml_call1(caml_call1(Stdlib_list[17],_cJJ_),a0$2)];
        default:var a0$3=param[1];return [4,caml_call1(poly_t,a0$3)]}}
    function fold_unknownType_f(poly_t,acc,param)
     {switch(param[0])
       {case 0:return acc;
        case 1:
         var
          a0=param[1],
          _cJE_=
           function(acc,param)
            {var a1=param[2];return caml_call2(poly_t,acc,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_cJE_),acc,a0);
        case 2:
         var
          a0$0=param[1],
          _cJF_=
           function(acc,param)
            {var a1=param[2];return caml_call2(poly_t,acc,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_cJF_),acc,a0$0);
        case 3:
         var
          a0$1=param[1],
          _cJG_=
           function(acc,param)
            {var a1=param[2];return caml_call2(poly_t,acc,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_cJG_),acc,a0$1);
        default:var a0$2=param[1];return caml_call2(poly_t,acc,a0$2)}}
    function fold_f(poly_t,acc,param)
     {if(typeof param === "number")
       return acc;
      else
       switch(param[0])
        {case 0:return acc;
         case 1:return acc;
         case 2:var a1=param[2];return caml_call2(poly_t,acc,a1);
         case 3:
          var a2=param[3],a1$0=param[2],acc$0=caml_call2(poly_t,acc,a1$0);
          return caml_call2(poly_t,acc$0,a2);
         case 4:return acc;
         case 5:var at=param[1],acc$1=caml_call2(poly_t,acc,at);return acc$1;
         case 6:
          var arow=param[2];return caml_call2(fold_row(poly_t),acc,arow);
         case 7:
          var arow$0=param[2];return caml_call2(fold_row(poly_t),acc,arow$0);
         case 8:var a0=param[1];return fold_unknownType_f(poly_t,acc,a0[1]);
         case 9:
          var a0$0=param[1];
          return caml_call2(caml_call1(Stdlib_list[22],poly_t),acc,a0$0);
         case 10:return acc;
         default:return acc}}
    var
     pp_f=
      function _cJD_(_cJA_,_cJB_,_cJC_){return _cJD_.fun(_cJA_,_cJB_,_cJC_)},
     show_f=function _cJz_(_cJx_,_cJy_){return _cJz_.fun(_cJx_,_cJy_)},
     pp_unknownType_f=
      function _cJw_(_cJt_,_cJu_,_cJv_){return _cJw_.fun(_cJt_,_cJu_,_cJv_)},
     show_unknownType_f=
      function _cJs_(_cJq_,_cJr_){return _cJs_.fun(_cJq_,_cJr_)};
    caml_update_dummy
     (pp_f,
      function(poly_t,fmt,param)
       {if(typeof param === "number")
         return caml_call2(Stdlib_format[13],fmt,cst_TSecretKey);
        else
         switch(param[0])
          {case 0:
            var a0=param[1];
            caml_call2(Stdlib_format[123],fmt,_dH_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_dI_),a0);
            return caml_call2(Stdlib_format[123],fmt,_dJ_);
           case 1:
            var a0$0=param[1];
            caml_call2(Stdlib_format[123],fmt,_dK_);
            caml_call1(caml_call1(Michelson_base_Type[3],fmt),a0$0);
            return caml_call2(Stdlib_format[123],fmt,_dL_);
           case 2:
            var a1=param[2],a0$1=param[1];
            caml_call2(Stdlib_format[123],fmt,_dM_);
            caml_call1(caml_call1(Michelson_base_Type[7],fmt),a0$1);
            caml_call2(Stdlib_format[123],fmt,_dN_);
            caml_call1(caml_call1(poly_t,fmt),a1);
            return caml_call2(Stdlib_format[123],fmt,_dO_);
           case 3:
            var a2=param[3],a1$0=param[2],a0$2=param[1];
            caml_call2(Stdlib_format[123],fmt,_dP_);
            caml_call1(caml_call1(Michelson_base_Type[11],fmt),a0$2);
            caml_call2(Stdlib_format[123],fmt,_dQ_);
            caml_call1(caml_call1(poly_t,fmt),a1$0);
            caml_call2(Stdlib_format[123],fmt,_dR_);
            caml_call1(caml_call1(poly_t,fmt),a2);
            return caml_call2(Stdlib_format[123],fmt,_dS_);
           case 4:
            var aisNat=param[1];
            caml_call2(Stdlib_format[123],fmt,_dT_);
            caml_call3(Stdlib_format[123],fmt,_dU_,cst_isNat);
            caml_call1
             (caml_call2
               (pp$1,
                function(fmt){return caml_call2(Stdlib_format[123],fmt,_dV_)},
                fmt),
              aisNat);
            caml_call2(Stdlib_format[123],fmt,_dW_);
            return caml_call2(Stdlib_format[123],fmt,_dX_);
           case 5:
            var acases=param[2],at=param[1];
            caml_call2(Stdlib_format[123],fmt,_dY_);
            caml_call3(Stdlib_format[123],fmt,_dZ_,cst_t);
            caml_call1(caml_call1(poly_t,fmt),at);
            caml_call2(Stdlib_format[123],fmt,_d0_);
            caml_call2(Stdlib_format[123],fmt,_d1_);
            caml_call3(Stdlib_format[123],fmt,_d2_,cst_cases$0);
            caml_call1
             (caml_call2
               (pp$1,
                function(fmt)
                 {function _cJo_(fmt){return caml_call1(pp$2,fmt)}
                  return function(_cJp_)
                   {return pp_bounded_cases(_cJo_,fmt,_cJp_)}},
                fmt),
              acases);
            caml_call2(Stdlib_format[123],fmt,_d3_);
            return caml_call2(Stdlib_format[123],fmt,_d4_);
           case 6:
            var arow=param[2],alayout=param[1];
            caml_call2(Stdlib_format[123],fmt,_d5_);
            caml_call3(Stdlib_format[123],fmt,_d6_,cst_layout);
            caml_call1
             (caml_call2(pp$1,function(fmt){return caml_call1(pp$0,fmt)},fmt),
              alayout);
            caml_call2(Stdlib_format[123],fmt,_d7_);
            caml_call2(Stdlib_format[123],fmt,_d8_);
            caml_call3(Stdlib_format[123],fmt,_d9_,cst_row);
            pp_row(function(fmt){return caml_call1(poly_t,fmt)},fmt,arow);
            caml_call2(Stdlib_format[123],fmt,_d__);
            return caml_call2(Stdlib_format[123],fmt,_d$_);
           case 7:
            var arow$0=param[2],alayout$0=param[1];
            caml_call2(Stdlib_format[123],fmt,_ea_);
            caml_call3(Stdlib_format[123],fmt,_eb_,cst_layout$0);
            caml_call1
             (caml_call2(pp$1,function(fmt){return caml_call1(pp$0,fmt)},fmt),
              alayout$0);
            caml_call2(Stdlib_format[123],fmt,_ec_);
            caml_call2(Stdlib_format[123],fmt,_ed_);
            caml_call3(Stdlib_format[123],fmt,_ee_,cst_row$0);
            pp_row(function(fmt){return caml_call1(poly_t,fmt)},fmt,arow$0);
            caml_call2(Stdlib_format[123],fmt,_ef_);
            return caml_call2(Stdlib_format[123],fmt,_eg_);
           case 8:
            var a0$3=param[1];
            caml_call2(Stdlib_format[123],fmt,_eh_);
            caml_call2(Stdlib_format[13],fmt,cst_ref$0);
            var _cJl_=a0$3[1];
            caml_call1
             (caml_call2
               (pp_unknownType_f,
                function(fmt){return caml_call1(poly_t,fmt)},
                fmt),
              _cJl_);
            caml_call2(Stdlib_format[13],fmt,cst$4);
            return caml_call2(Stdlib_format[123],fmt,_ei_);
           case 9:
            var a0$4=param[1];
            caml_call2(Stdlib_format[123],fmt,_ej_);
            caml_call2(Stdlib_format[123],fmt,_ek_);
            var
             _cJm_=0,
             _cJn_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_el_);
                caml_call1(caml_call1(poly_t,fmt),x);
                return 1};
            caml_call3(Stdlib_list[22],_cJn_,_cJm_,a0$4);
            caml_call2(Stdlib_format[123],fmt,_em_);
            return caml_call2(Stdlib_format[123],fmt,_en_);
           case 10:
            var amemo=param[1];
            caml_call2(Stdlib_format[123],fmt,_eo_);
            caml_call3(Stdlib_format[123],fmt,_ep_,cst_memo$1);
            caml_call1
             (caml_call2
               (pp$1,
                function(fmt){return caml_call2(Stdlib_format[123],fmt,_eq_)},
                fmt),
              amemo);
            caml_call2(Stdlib_format[123],fmt,_er_);
            return caml_call2(Stdlib_format[123],fmt,_es_);
           default:
            var amemo$0=param[1];
            caml_call2(Stdlib_format[123],fmt,_et_);
            caml_call3(Stdlib_format[123],fmt,_eu_,cst_memo$2);
            caml_call1
             (caml_call2
               (pp$1,
                function(fmt){return caml_call2(Stdlib_format[123],fmt,_ev_)},
                fmt),
              amemo$0);
            caml_call2(Stdlib_format[123],fmt,_ew_);
            return caml_call2(Stdlib_format[123],fmt,_ex_)}});
    caml_update_dummy
     (show_f,
      function(poly_t,x)
       {var _cJk_=caml_call1(pp_f,poly_t);
        return caml_call3(Stdlib_format[127],_ey_,_cJk_,x)});
    caml_update_dummy
     (pp_unknownType_f,
      function(poly_t,fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_ez_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_eA_),a0);
           return caml_call2(Stdlib_format[123],fmt,_eB_);
          case 1:
           var a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_eC_);
           caml_call2(Stdlib_format[123],fmt,_eD_);
           var
            _cJe_=0,
            _cJf_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_eE_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_eF_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_eG_),a0);
               caml_call2(Stdlib_format[123],fmt,_eH_);
               caml_call1(caml_call1(poly_t,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_eI_);
               return 1};
           caml_call3(Stdlib_list[22],_cJf_,_cJe_,a0$0);
           caml_call2(Stdlib_format[123],fmt,_eJ_);
           return caml_call2(Stdlib_format[123],fmt,_eK_);
          case 2:
           var a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_eL_);
           caml_call2(Stdlib_format[123],fmt,_eM_);
           var
            _cJg_=0,
            _cJh_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_eN_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_eO_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_eP_),a0);
               caml_call2(Stdlib_format[123],fmt,_eQ_);
               caml_call1(caml_call1(poly_t,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_eR_);
               return 1};
           caml_call3(Stdlib_list[22],_cJh_,_cJg_,a0$1);
           caml_call2(Stdlib_format[123],fmt,_eS_);
           return caml_call2(Stdlib_format[123],fmt,_eT_);
          case 3:
           var a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_eU_);
           caml_call2(Stdlib_format[123],fmt,_eV_);
           var
            _cJi_=0,
            _cJj_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_eW_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_eX_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_eY_),a0);
               caml_call2(Stdlib_format[123],fmt,_eZ_);
               caml_call1(caml_call1(poly_t,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_e0_);
               return 1};
           caml_call3(Stdlib_list[22],_cJj_,_cJi_,a0$2);
           caml_call2(Stdlib_format[123],fmt,_e1_);
           return caml_call2(Stdlib_format[123],fmt,_e2_);
          default:
           var a0$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_e3_);
           caml_call1(caml_call1(poly_t,fmt),a0$3);
           return caml_call2(Stdlib_format[123],fmt,_e4_)}});
    caml_update_dummy
     (show_unknownType_f,
      function(poly_t,x)
       {var _cJd_=caml_call1(pp_unknownType_f,poly_t);
        return caml_call3(Stdlib_format[127],_e5_,_cJd_,x)});
    var
     compare_f=
      function _cJc_(_cI$_,_cJa_,_cJb_){return _cJc_.fun(_cI$_,_cJa_,_cJb_)},
     compare_unknownType_f=
      function _cI__(_cI7_,_cI8_,_cI9_){return _cI__.fun(_cI7_,_cI8_,_cI9_)};
    caml_update_dummy
     (compare_f,
      function(poly_t,lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 0}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_string_compare(lhs0,rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_call1
                      (caml_call1(Michelson_base_Type[2],lhs0$0),rhs0$0)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var
               rhs1=match[2],
               rhs0$1=match[1],
               lhs1=lhs[2],
               lhs0$1=lhs[1],
               x=caml_call1(caml_call1(Michelson_base_Type[6],lhs0$1),rhs0$1);
              return 0 === x?caml_call2(poly_t,lhs1,rhs1):x}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var
               rhs2=match[3],
               rhs1$0=match[2],
               rhs0$2=match[1],
               lhs2=lhs[3],
               lhs1$0=lhs[2],
               lhs0$2=lhs[1],
               x$0=
                caml_call1(caml_call1(Michelson_base_Type[10],lhs0$2),rhs0$2);
              if(0 === x$0)
               {var x$1=caml_call2(poly_t,lhs1$0,rhs1$0);
                return 0 === x$1?caml_call2(poly_t,lhs2,rhs2):x$1}
              return x$0}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhsisNat=match[1],lhsisNat=lhs[1];
              return caml_call1
                      (caml_call1(caml_call1(compare$0,caml_int_compare),lhsisNat),
                       rhsisNat)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var
               rhscases=match[2],
               rhst=match[1],
               lhscases=lhs[2],
               lhst=lhs[1],
               x$2=caml_call2(poly_t,lhst,rhst);
              return 0 === x$2
                      ?caml_call1
                        (caml_call1
                          (caml_call1
                            (compare$0,
                             function(x)
                              {return caml_call1
                                       (caml_call1
                                         (compare_bounded_cases,
                                          function(x){return caml_call1(compare$1,x)}),
                                        x)}),
                           lhscases),
                         rhscases)
                      :x$2}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var
               rhsrow=match[2],
               rhslayout=match[1],
               lhsrow=lhs[2],
               lhslayout=lhs[1],
               x$3=
                caml_call1
                 (caml_call1
                   (caml_call1
                     (compare$0,function(x){return caml_call1(compare,x)}),
                    lhslayout),
                  rhslayout);
              return 0 === x$3
                      ?caml_call1
                        (caml_call1(caml_call1(compare_row,poly_t),lhsrow),rhsrow)
                      :x$3}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var
               rhsrow$0=match[2],
               rhslayout$0=match[1],
               lhsrow$0=lhs[2],
               lhslayout$0=lhs[1],
               x$4=
                caml_call1
                 (caml_call1
                   (caml_call1
                     (compare$0,function(x){return caml_call1(compare,x)}),
                    lhslayout$0),
                  rhslayout$0);
              return 0 === x$4
                      ?caml_call1
                        (caml_call1(caml_call1(compare_row,poly_t),lhsrow$0),
                         rhsrow$0)
                      :x$4}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var
               rhs0$3=match[1],
               lhs0$3=lhs[1],
               _cI5_=rhs0$3[1],
               _cI6_=lhs0$3[1];
              return caml_call1
                      (caml_call1(caml_call1(compare_unknownType_f,poly_t),_cI6_),
                       _cI5_)}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1],x$5=lhs0$4,y=rhs0$4;
              for(;;)
               {if(x$5)
                 {if(y)
                   {var
                     y$0=y[2],
                     b=y[1],
                     x$6=x$5[2],
                     a=x$5[1],
                     x$7=caml_call2(poly_t,a,b);
                    if(0 === x$7){var x$5=x$6,y=y$0;continue}
                    return x$7}
                  return 1}
                return y?-1:0}}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var rhsmemo=match[1],lhsmemo=lhs[1];
              return caml_call1
                      (caml_call1(caml_call1(compare$0,caml_int_compare),lhsmemo),
                       rhsmemo)}
            break;
           default:
            if(typeof match !== "number" && 11 === match[0])
             {var rhsmemo$0=match[1],lhsmemo$0=lhs[1];
              return caml_call1
                      (caml_call1
                        (caml_call1(compare$0,caml_int_compare),lhsmemo$0),
                       rhsmemo$0)}}
        function to_int(param)
         {if(typeof param === "number")
           return 10;
          else
           switch(param[0])
            {case 0:return 0;
             case 1:return 1;
             case 2:return 2;
             case 3:return 3;
             case 4:return 4;
             case 5:return 5;
             case 6:return 6;
             case 7:return 7;
             case 8:return 8;
             case 9:return 9;
             case 10:return 11;
             default:return 12}}
        var _cI4_=to_int(match);
        return caml_int_compare(to_int(lhs),_cI4_)});
    caml_update_dummy
     (compare_unknownType_f,
      function(poly_t,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_string_compare(lhs0,rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1],x=lhs0$0,y=rhs0$0;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    rhs1=b[2],
                    rhs0$1=b[1],
                    lhs1=a[2],
                    lhs0$1=a[1],
                    x$1=caml_string_compare(lhs0$1,rhs0$1),
                    x$2=0 === x$1?caml_call2(poly_t,lhs1,rhs1):x$1;
                   if(0 === x$2){var x=x$0,y=y$0;continue}
                   return x$2}
                 return 1}
               return y?-1:0}}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1],x$3=lhs0$2,y$1=rhs0$2;
             for(;;)
              {if(x$3)
                {if(y$1)
                  {var
                    y$2=y$1[2],
                    b$0=y$1[1],
                    x$4=x$3[2],
                    a$0=x$3[1],
                    rhs1$0=b$0[2],
                    rhs0$3=b$0[1],
                    lhs1$0=a$0[2],
                    lhs0$3=a$0[1],
                    x$5=caml_int_compare(lhs0$3,rhs0$3),
                    x$6=0 === x$5?caml_call2(poly_t,lhs1$0,rhs1$0):x$5;
                   if(0 === x$6){var x$3=x$4,y$1=y$2;continue}
                   return x$6}
                 return 1}
               return y$1?-1:0}}
           break;
          case 3:
           if(3 === match[0])
            {var rhs0$4=match[1],lhs0$4=lhs[1],x$7=lhs0$4,y$3=rhs0$4;
             for(;;)
              {if(x$7)
                {if(y$3)
                  {var
                    y$4=y$3[2],
                    b$1=y$3[1],
                    x$8=x$7[2],
                    a$1=x$7[1],
                    rhs1$1=b$1[2],
                    rhs0$5=b$1[1],
                    lhs1$1=a$1[2],
                    lhs0$5=a$1[1],
                    x$9=caml_string_compare(lhs0$5,rhs0$5),
                    x$10=0 === x$9?caml_call2(poly_t,lhs1$1,rhs1$1):x$9;
                   if(0 === x$10){var x$7=x$8,y$3=y$4;continue}
                   return x$10}
                 return 1}
               return y$3?-1:0}}
           break;
          default:
           if(4 === match[0])
            {var rhs0$6=match[1],lhs0$6=lhs[1];
             return caml_call2(poly_t,lhs0$6,rhs0$6)}}
        function to_int(param)
         {switch(param[0])
           {case 0:return 0;
            case 1:return 1;
            case 2:return 2;
            case 3:return 3;
            default:return 4}}
        var _cI3_=to_int(match);
        return caml_int_compare(to_int(lhs),_cI3_)});
    var equal$4=function _cI2_(_cI0_,_cI1_){return _cI2_.fun(_cI0_,_cI1_)};
    caml_update_dummy
     (equal$4,
      function(poly_a,x){return caml_call1(caml_call1(equal_f,poly_a),x)});
    var compare$2=function _cIZ_(_cIX_,_cIY_){return _cIZ_.fun(_cIX_,_cIY_)};
    caml_update_dummy
     (compare$2,
      function(poly_a,x){return caml_call1(caml_call1(compare_f,poly_a),x)});
    var
     pp$3=function _cIW_(_cIU_,_cIV_){return _cIW_.fun(_cIU_,_cIV_)},
     show$3=function _cIT_(_cIR_,_cIS_){return _cIT_.fun(_cIR_,_cIS_)};
    caml_update_dummy
     (pp$3,
      function(poly_a,fmt)
       {return caml_call2
                (pp_f,function(fmt){return caml_call1(poly_a,fmt)},fmt)});
    caml_update_dummy
     (show$3,
      function(poly_a,x)
       {var _cIQ_=caml_call1(pp$3,poly_a);
        return caml_call3(Stdlib_format[127],_e6_,_cIQ_,x)});
    function map(poly_a){return function(_cIP_){return map_f(poly_a,_cIP_)}}
    caml_call1(Utils_Control[9],[0]);
    var
     equal$5=caml_call1(Utils_Control[11],[0,equal$4])[1],
     compare$3=caml_call1(Utils_Control[12],[0,compare$2])[1],
     _e7_=caml_call1(Utils_Control[13],[0,show$3,pp$3]),
     show$4=_e7_[1],
     pp$4=_e7_[2],
     include$0=caml_call1(Utils_Control[10],[0,map]),
     unF=include$0[1],
     cata=include$0[2],
     para=include$0[3],
     equal_tvariable=
      function _cIO_(_cIM_,_cIN_){return _cIO_.fun(_cIM_,_cIN_)};
    caml_update_dummy
     (equal_tvariable,
      function(param,_cIK_)
       {var
         rhs1=_cIK_[2],
         rhs0=_cIK_[1],
         lhs1=param[2],
         lhs0=param[1],
         _cIL_=caml_string_equal(lhs0,rhs0);
        return _cIL_?caml_call1(caml_call1(equal$5,lhs1),rhs1):_cIL_});
    var
     pp_tvariable=function _cIJ_(_cIH_,_cII_){return _cIJ_.fun(_cIH_,_cII_)},
     show_tvariable=function _cIG_(_cIF_){return _cIG_.fun(_cIF_)};
    caml_update_dummy
     (pp_tvariable,
      function(fmt,param)
       {var a1=param[2],a0=param[1];
        caml_call2(Stdlib_format[123],fmt,_e8_);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_e9_),a0);
        caml_call2(Stdlib_format[123],fmt,_e__);
        caml_call1(caml_call1(pp$4,fmt),a1);
        return caml_call2(Stdlib_format[123],fmt,_e$_)});
    caml_update_dummy
     (show_tvariable,
      function(x){return caml_call3(Stdlib_format[127],_fa_,pp_tvariable,x)});
    function tree_layout(l)
     {var l$0=[0,l];
      function layout(n)
       {if(1 === n)
         {var _cIE_=l$0[1];
          if(_cIE_)
           {var rest=_cIE_[2],a=_cIE_[1];l$0[1] = rest;return leaf(a,a)}
          throw [0,Assert_failure,_fb_]}
        var n2=n / 2 | 0,l1=layout(n2),l2=layout(n - n2 | 0);
        return [1,l1,l2]}
      var size=caml_call1(Utils_List[4],l$0[1]);
      if(0 === size)caml_call1(Stdlib[2],cst_default_layout_of_size_0);
      return layout(size)}
    function comb_layout(right_left,param)
     {if(param)
       {var _cIz_=param[1];
        if(param[2])
         {var xs=param[2];
          if(847852583 <= right_left)
           {var _cIA_=leaf(_cIz_,_cIz_),_cIB_=comb_layout(right_left,xs);
            return caml_call2(Utils_Binary_tree[39],_cIB_,_cIA_)}
          var _cIC_=comb_layout(right_left,xs),_cID_=leaf(_cIz_,_cIz_);
          return caml_call2(Utils_Binary_tree[39],_cID_,_cIC_)}
        return leaf(_cIz_,_cIz_)}
      return caml_call1(Stdlib[2],cst_comb_layout)}
    function comb_layout_of_row(right_left,r)
     {return comb_layout(right_left,r)}
    function default_layout_of_row(layout,r)
     {return layout?comb_layout_of_row(-57574468,r):tree_layout(r)}
    function unknown_raw(x){return [0,[8,x]]}
    function getRepr(t)
     {var t$0=t;
      for(;;)
       {var u=caml_call1(unF,t$0);
        if(typeof u !== "number" && 8 === u[0])
         {var _cIy_=u[1][1];
          if(4 === _cIy_[0]){var t$1=_cIy_[1],t$0=t$1;continue}}
        return u}}
    var
     normalize$0=
      caml_call1
       (cata,
        function(x)
         {var switch$0=0;
          if(typeof x === "number")
           switch$0 = 1;
          else
           switch(x[0])
            {case 4:var isNat=x[1],_cIx_=[4,normalize(isNat)];break;
             case 5:var cases=x[2],t=x[1],_cIx_=[5,t,normalize(cases)];break;
             case 6:
              var row=x[2],layout=x[1],_cIx_=[6,normalize(layout),row];break;
             case 7:
              var
               row$0=x[2],
               layout$0=x[1],
               _cIx_=[7,normalize(layout$0),row$0];
              break;
             case 8:
              var _cIw_=x[1][1];
              if(4 === _cIw_[0])
               var match=_cIw_[1],t$0=match[1],_cIx_=t$0;
              else
               var _cIx_=x;
              break;
             case 10:var memo=x[1],_cIx_=[10,normalize(memo)];break;
             case 11:var memo$0=x[1],_cIx_=[11,normalize(memo$0)];break;
             default:switch$0 = 1}
          if(switch$0)var _cIx_=x;
          return [0,_cIx_]});
    function mk0(t){return [0,[1,t]]}
    function mk1(t,t1){return [0,[2,t,t1]]}
    function mk2(t,t1,t2){return [0,[3,t,t1,t2]]}
    var unit$0=[0,_fc_],address$0=[0,_fd_];
    function contract(t){return [0,[2,3,t]]}
    var bool$0=[0,_fe_],bytes$0=[0,_ff_];
    function variant(layout,row){return [0,[7,layout,sort_row(row)]]}
    function variant_default_layout(default_layout,row)
     {var _cIt_=sort_row(row);
      function _cIu_(_cIv_){return _cIv_[1]}
      return [0,
              [7,
               value
                (default_layout_of_row
                  (default_layout,caml_call2(Utils_List[20],_cIu_,row))),
               _cIt_]]}
    var key_hash$0=[0,_fg_],baker_hash$0=[0,_fh_];
    function baker_type_of_protocol(param)
     {return 3 <= param?baker_hash$0:key_hash$0}
    function int_raw(isNat){return [0,[4,isNat]]}
    function int$1(param){return int_raw(value(0))}
    function nat$0(param){return int_raw(value(1))}
    function intOrNat$0(param){return int_raw(unknown(0))}
    var
     key$0=[0,_fi_],
     chain_id$0=[0,_fj_],
     secret_key$0=[0,0],
     operation=[0,_fk_];
    function sapling_state(memo)
     {var
       _cIs_=unknown(0),
       memo$0=caml_call3(Utils_Option[12],_cIs_,value,memo);
      return [0,[10,memo$0]]}
    function sapling_transaction(memo)
     {var
       _cIr_=unknown(0),
       memo$0=caml_call3(Utils_Option[12],_cIr_,value,memo);
      return [0,[11,memo$0]]}
    var never=[0,_fl_];
    function map$0(big,tkey,tvalue)
     {return big?[0,[3,2,tkey,tvalue]]:[0,[3,1,tkey,tvalue]]}
    function set$0(telement){return [0,[2,2,telement]]}
    function record(layout,row){return [0,[6,layout,sort_row(row)]]}
    function record_default_layout(layout,row)
     {function _cIp_(_cIq_){return _cIq_[1]}
      var
       layout$0=
        value
         (default_layout_of_row(layout,caml_call2(Utils_List[20],_cIp_,row)));
      return [0,[6,layout$0,sort_row(row)]]}
    function record_or_unit(layout,l){return l?record(layout,l):unit$0}
    function variant_or_unit(layout,l){return l?variant(layout,l):unit$0}
    var signature$0=[0,_fm_];
    function option(t){return [0,[2,0,t]]}
    function key_value(tkey,tvalue)
     {return record_default_layout
              (1,[0,[0,cst_key,tkey],[0,[0,cst_value,tvalue],0]])}
    function head_tail(thead,ttail)
     {return record_default_layout
              (1,[0,[0,cst_head,thead],[0,[0,cst_tail,ttail],0]])}
    function tor(t,u)
     {return variant_default_layout
              (1,[0,[0,cst_Left,t],[0,[0,cst_Right,u],0]])}
    var string$0=[0,_fn_];
    function bounded(t,final$0,cases)
     {var cases$0=caml_call2(Utils_List[52],compare$1,cases);
      return [0,[5,t,value([0,final$0,cases$0])]]}
    var timestamp$0=[0,_fo_],token=[0,_fp_];
    function uvariant(name,t){return unknown_raw([0,[3,[0,[0,name,t],0]]])}
    function urecord(fields)
     {function cmp(param,_cIo_)
       {var y=_cIo_[1],x=param[1];return caml_compare(x,y)}
      var fields$0=caml_call2(Utils_List[52],cmp,fields);
      return unknown_raw([0,[1,fields$0]])}
    function utuple(i,t){return unknown_raw([0,[2,[0,[0,i,t],0]]])}
    var
     account=
      record_default_layout
       (1,
        [0,
         [0,cst_seed,string$0],
         [0,
          [0,cst_address,address$0],
          [0,
           [0,cst_public_key,key$0],
           [0,
            [0,cst_public_key_hash,key_hash$0],
            [0,[0,cst_secret_key,secret_key$0],0]]]]]);
    function pair(t1,t2){return [0,[9,[0,t1,[0,t2,0]]]]}
    function tuple(ts){return [0,[9,ts]]}
    function list(t){return [0,[2,1,t]]}
    function ticket(t){return [0,[2,4,t]]}
    function lambda(t1,t2){return [0,[3,0,t1,t2]]}
    var
     bls12_381_g1$0=[0,_fq_],
     bls12_381_g2$0=[0,_fr_],
     bls12_381_fr$0=[0,_fs_],
     has_unknowns=
      caml_call1
       (cata,
        function(x)
         {if(typeof x !== "number" && 8 === x[0])return 1;
          var _cIk_=0;
          return fold_f
                  (function(_cIm_,_cIl_)
                    {var _cIn_=_cIm_ || _cIl_;return _cIn_},
                   _cIk_,
                   x)}),
     is_hot=
      caml_call1
       (cata,
        function(t)
         {if(typeof t !== "number")
           switch(t[0])
            {case 2:
              var _cIi_=t[1];
              if(3 === _cIi_)return 1;
              if(4 <= _cIi_)return 0;
              break;
             case 3:
              var _cIj_=t[1];
              if(typeof _cIj_ === "number" && ! _cIj_)return 1;
              break;
             case 8:return 2
             }
          return fold_f(Utils_Ternary[2],1,t)});
    function view_variant(t)
     {var match=getRepr(t);
      if(typeof match !== "number")
       switch(match[0])
        {case 2:
          if(! match[1])
           {var
             t$0=match[2],
             row=[0,[0,cst_None$2,unit$0],[0,[0,cst_Some$2,t$0],0]],
             _cIg_=function(_cIh_){return _cIh_[1]},
             layout=
              default_layout_of_row(1,caml_call2(Utils_List[20],_cIg_,row));
            return [0,[0,value(layout),row]]}
          break;
         case 7:
          var row$0=match[2],layout$0=match[1];return [0,[0,layout$0,row$0]]
         }
      return 0}
    function f(param,_cId_,_cIc_)
     {switch(_cIc_[0])
       {case 0:
         var _cIe_=_cIc_[1];
         if(typeof _cIe_ === "number")
          switch(_cIe_)
           {case 2:return nat$0(0);
            case 3:return int$1(0);
            default:return [0,[1,_cIe_]]}
         else
          {if(0 === _cIe_[0]){var memo=_cIe_[1];return [0,[10,value(memo)]]}
           var memo$0=_cIe_[1];
           return [0,[11,value(memo$0)]]}
        case 1:var t1=_cIc_[2],c=_cIc_[1];return [0,[2,c,t1]];
        case 2:
         var _cIf_=_cIc_[1];
         if(typeof _cIf_ === "number")
          switch(_cIf_)
           {case 0:var t2=_cIc_[3],t1$0=_cIc_[2];return [0,[3,_cIf_,t1$0,t2]];
            case 1:
             var tvalue=_cIc_[3],tkey=_cIc_[2];return map$0(0,tkey,tvalue);
            default:
             var tvalue$0=_cIc_[3],tkey$0=_cIc_[2];
             return map$0(1,tkey$0,tvalue$0)}
         else
          {if(0 === _cIf_[0])
            {var t2$0=_cIc_[3],t1$1=_cIc_[2];return pair(t1$1,t2$0)}
           var t2$1=_cIc_[3],t1$2=_cIc_[2];
           return variant_default_layout
                   (1,[0,[0,cst_Left$0,t1$2],[0,[0,cst_Right$0,t2$1],0]])}
        default:throw [0,Assert_failure,_ft_]}}
    var of_mtype=caml_call1(Michelson_base_Type[26],f);
    function type_of_literal(param)
     {if(typeof param === "number")
       return unit$0;
      else
       switch(param[0])
        {case 0:return bool$0;
         case 1:var is_nat=param[2];return int_raw(is_nat);
         case 2:return string$0;
         case 3:return bytes$0;
         case 4:return chain_id$0;
         case 5:return timestamp$0;
         case 6:return token;
         case 7:return address$0;
         case 8:return key$0;
         case 9:return secret_key$0;
         case 10:return key_hash$0;
         case 11:return baker_hash$0;
         case 12:return signature$0;
         case 13:
          var match=param[1],memo=match[2];return sapling_state([0,memo]);
         case 14:
          var match$0=param[1],memo$0=match$0[4];
          return sapling_transaction([0,memo$0]);
         case 15:return bls12_381_g1$0;
         case 16:return bls12_381_g2$0;
         default:return bls12_381_fr$0}}
    var
     Smartml_Type=
      [0,
       equal_row,
       pp_row,
       show_row,
       compare_row,
       map_row,
       fold_row,
       sort_row,
       equal_bounded_cases,
       map_bounded_cases,
       fold_bounded_cases,
       pp_bounded_cases,
       show_bounded_cases,
       compare_bounded_cases,
       equal_f,
       equal_unknownType_f,
       pp_f,
       show_f,
       pp_unknownType_f,
       show_unknownType_f,
       compare_f,
       compare_unknownType_f,
       map_f,
       map_unknownType_f,
       fold_f,
       fold_unknownType_f,
       unF,
       cata,
       para,
       equal$5,
       compare$3,
       show$4,
       pp$4,
       equal_tvariable,
       pp_tvariable,
       show_tvariable,
       tree_layout,
       default_layout_of_row,
       comb_layout,
       comb_layout_of_row,
       getRepr,
       normalize$0,
       mk0,
       mk1,
       mk2,
       unit$0,
       address$0,
       contract,
       bool$0,
       bytes$0,
       key_hash$0,
       baker_hash$0,
       baker_type_of_protocol,
       int_raw,
       int$1,
       nat$0,
       intOrNat$0,
       key$0,
       key_value,
       head_tail,
       chain_id$0,
       secret_key$0,
       operation,
       sapling_state,
       sapling_transaction,
       never,
       map$0,
       set$0,
       record,
       variant,
       record_default_layout,
       variant_default_layout,
       record_or_unit,
       variant_or_unit,
       signature$0,
       option,
       tor,
       string$0,
       bounded,
       timestamp$0,
       token,
       uvariant,
       urecord,
       utuple,
       unknown_raw,
       account,
       pair,
       tuple,
       list,
       ticket,
       lambda,
       has_unknowns,
       bls12_381_g1$0,
       bls12_381_g2$0,
       bls12_381_fr$0,
       is_hot,
       view_variant,
       of_mtype,
       type_of_literal];
    caml_register_global(6459,Smartml_Type,"Smartml__Type");
    function equal_typed(lhs,rhs){return 0}
    function compare_typed(lhs,rhs)
     {function to_int(param){throw [0,Match_failure,_fu_]}
      var _cIb_=to_int(rhs);
      return caml_compare(to_int(lhs),_cIb_)}
    function pp_typed(fmt,param){throw [0,Match_failure,_fv_]}
    function show_typed(x)
     {return caml_call3(Stdlib_format[127],_fw_,pp_typed,x)}
    function equal_untyped(lhs,rhs){return 0}
    function compare_untyped(lhs,rhs)
     {function to_int(param){throw [0,Match_failure,_fx_]}
      var _cIa_=to_int(rhs);
      return caml_compare(to_int(lhs),_cIa_)}
    function pp_untyped(fmt,param){throw [0,Match_failure,_fy_]}
    function show_untyped(x)
     {return caml_call3(Stdlib_format[127],_fz_,pp_untyped,x)}
    function elim_typed(param){throw [0,Match_failure,_fA_]}
    function elim_untyped(param){throw [0,Match_failure,_fB_]}
    function get_extra(param){var x=param[1];return x}
    function equal_extra(eq,param,x,match)
     {if(x){var y=match[1],x$0=x[1];return caml_call2(eq,x$0,y)}return 1}
    function compare_extra(cmp,param,x,match)
     {if(x){var y=match[1],x$0=x[1];return caml_call2(cmp,x$0,y)}return 0}
    function pp_extra(pp,param,ppf,_cH$_)
     {if(_cH$_)
       {var x=_cH$_[1];return caml_call4(Stdlib_format[123],ppf,_fC_,pp,x)}
      return caml_call2(Stdlib_format[123],ppf,_fD_)}
    function show_extra(pp1,pp2)
     {function _cH8_(_cH9_,_cH__){return pp_extra(pp1,pp2,_cH9_,_cH__)}
      return caml_call2(Stdlib_format[127],_fE_,_cH8_)}
    function map_extra(f,param,_cH7_)
     {if(_cH7_){var x=_cH7_[1];return [0,caml_call1(f,x)]}return 0}
    function fold_extra(f,param,s,_cH6_)
     {if(_cH6_){var x=_cH6_[1];return caml_call2(f,s,x)}return s}
    function pp_record_f(poly_v,fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_fF_);
      var _cH4_=0;
      function _cH5_(sep,x)
       {if(sep)caml_call2(Stdlib_format[123],fmt,_fG_);
        var a1=x[2],a0=x[1];
        caml_call2(Stdlib_format[123],fmt,_fH_);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_fI_),a0);
        caml_call2(Stdlib_format[123],fmt,_fJ_);
        caml_call1(caml_call1(poly_v,fmt),a1);
        caml_call2(Stdlib_format[123],fmt,_fK_);
        return 1}
      caml_call3(Stdlib_list[22],_cH5_,_cH4_,x);
      return caml_call2(Stdlib_format[123],fmt,_fL_)}
    function show_record_f(poly_v,x)
     {function _cH1_(_cH2_,_cH3_){return pp_record_f(poly_v,_cH2_,_cH3_)}
      return caml_call3(Stdlib_format[127],_fM_,_cH1_,x)}
    function sort_record(r)
     {function _cHZ_(param,_cH0_)
       {var lbl2=_cH0_[1],lbl1=param[1];return caml_compare(lbl1,lbl2)}
      return caml_call2(Base_List[59],r,_cHZ_)}
    function equal_record_f(eq_val,x,y)
     {function eq_entry(param,_cHX_)
       {var
         val2=_cHX_[2],
         lbl2=_cHX_[1],
         val1=param[2],
         lbl1=param[1],
         _cHY_=caml_equal(lbl1,lbl2);
        return _cHY_?caml_call2(eq_val,val1,val2):_cHY_}
      var _cHV_=sort_record(y),_cHW_=sort_record(x);
      return caml_call3(Base_List[140],eq_entry,_cHW_,_cHV_)}
    function compare_record_f(cmp_val,x,y)
     {function cmp_entry(param,_cHU_)
       {var
         val2=_cHU_[2],
         lbl2=_cHU_[1],
         val1=param[2],
         lbl1=param[1],
         c=caml_compare(lbl1,lbl2);
        return 0 === c?caml_call2(cmp_val,val1,val2):c}
      var _cHS_=sort_record(y),_cHT_=sort_record(x);
      return caml_call3(Base_List[1],cmp_entry,_cHT_,_cHS_)}
    function pp_binOpInfix(fmt,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[13],fmt,cst_BNeq);
         case 1:return caml_call2(Stdlib_format[13],fmt,cst_BEq);
         case 2:return caml_call2(Stdlib_format[13],fmt,cst_BAnd);
         case 3:return caml_call2(Stdlib_format[13],fmt,cst_BOr);
         case 4:return caml_call2(Stdlib_format[13],fmt,cst_BAdd);
         case 5:return caml_call2(Stdlib_format[13],fmt,cst_BSub);
         case 6:return caml_call2(Stdlib_format[13],fmt,cst_BDiv);
         case 7:return caml_call2(Stdlib_format[13],fmt,cst_BEDiv);
         case 8:return caml_call2(Stdlib_format[13],fmt,cst_BMod);
         case 9:return caml_call2(Stdlib_format[13],fmt,cst_BLt);
         case 10:return caml_call2(Stdlib_format[13],fmt,cst_BLe);
         case 11:return caml_call2(Stdlib_format[13],fmt,cst_BGt);
         case 12:return caml_call2(Stdlib_format[13],fmt,cst_BGe);
         default:return caml_call2(Stdlib_format[13],fmt,cst_BXor)}
      var aoverloaded=param[1];
      caml_call2(Stdlib_format[123],fmt,_fN_);
      caml_call3(Stdlib_format[123],fmt,_fO_,cst_overloaded);
      caml_call1(caml_call2(Stdlib_format[123],fmt,_fP_),aoverloaded);
      caml_call2(Stdlib_format[123],fmt,_fQ_);
      return caml_call2(Stdlib_format[123],fmt,_fR_)}
    function show_binOpInfix(x)
     {return caml_call3(Stdlib_format[127],_fS_,pp_binOpInfix,x)}
    function equal_binOpInfix(lhs,match)
     {if(typeof lhs === "number")
       switch(lhs)
        {case 0:if(typeof match === "number" && ! match)return 1;break;
         case 1:if(typeof match === "number" && 1 === match)return 1;break;
         case 2:if(typeof match === "number" && 2 === match)return 1;break;
         case 3:if(typeof match === "number" && 3 === match)return 1;break;
         case 4:if(typeof match === "number" && 4 === match)return 1;break;
         case 5:if(typeof match === "number" && 5 === match)return 1;break;
         case 6:if(typeof match === "number" && 6 === match)return 1;break;
         case 7:if(typeof match === "number" && 7 === match)return 1;break;
         case 8:if(typeof match === "number" && 8 === match)return 1;break;
         case 9:if(typeof match === "number" && 9 === match)return 1;break;
         case 10:if(typeof match === "number" && 10 === match)return 1;break;
         case 11:if(typeof match === "number" && 11 === match)return 1;break;
         case 12:if(typeof match === "number" && 12 === match)return 1;break;
         default:if(typeof match === "number" && 13 <= match)return 1}
      else
       if(typeof match !== "number")
        {var rhsoverloaded=match[1],lhsoverloaded=lhs[1];
         return lhsoverloaded === rhsoverloaded?1:0}
      return 0}
    var
     compare_binOpInfix=
      function _cHR_(_cHP_,_cHQ_){return _cHR_.fun(_cHP_,_cHQ_)};
    caml_update_dummy
     (compare_binOpInfix,
      function(lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 0;break;
           case 1:if(typeof match === "number" && 1 === match)return 0;break;
           case 2:if(typeof match === "number" && 2 === match)return 0;break;
           case 3:if(typeof match === "number" && 3 === match)return 0;break;
           case 4:if(typeof match === "number" && 4 === match)return 0;break;
           case 5:if(typeof match === "number" && 5 === match)return 0;break;
           case 6:if(typeof match === "number" && 6 === match)return 0;break;
           case 7:if(typeof match === "number" && 7 === match)return 0;break;
           case 8:if(typeof match === "number" && 8 === match)return 0;break;
           case 9:if(typeof match === "number" && 9 === match)return 0;break;
           case 10:
            if(typeof match === "number" && 10 === match)return 0;break;
           case 11:
            if(typeof match === "number" && 11 === match)return 0;break;
           case 12:
            if(typeof match === "number" && 12 === match)return 0;break;
           default:if(typeof match === "number" && 13 <= match)return 0}
        else
         if(typeof match !== "number")
          {var rhsoverloaded=match[1],lhsoverloaded=lhs[1];
           return caml_int_compare(lhsoverloaded,rhsoverloaded)}
        function to_int(param)
         {if(typeof param === "number")
           switch(param)
            {case 0:return 0;
             case 1:return 1;
             case 2:return 2;
             case 3:return 3;
             case 4:return 4;
             case 5:return 5;
             case 6:return 6;
             case 7:return 7;
             case 8:return 9;
             case 9:return 10;
             case 10:return 11;
             case 11:return 12;
             case 12:return 13;
             default:return 14}
          return 8}
        var _cHO_=to_int(match);
        return caml_int_compare(to_int(lhs),_cHO_)});
    function pp_binOpPrefix(fmt,param)
     {return param
              ?caml_call2(Stdlib_format[13],fmt,cst_BMin)
              :caml_call2(Stdlib_format[13],fmt,cst_BMax)}
    function show_binOpPrefix(x)
     {return caml_call3(Stdlib_format[127],_fT_,pp_binOpPrefix,x)}
    function equal_binOpPrefix(lhs,rhs)
     {if(lhs){if(rhs)return 1}else if(! rhs)return 1;return 0}
    var
     equal_micheline=
      function _cHN_(_cHL_,_cHM_){return _cHN_.fun(_cHL_,_cHM_)};
    caml_update_dummy
     (equal_micheline,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_string_equal(lhs0,rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];
             return caml_string_equal(lhs0$0,rhs0$0)}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$1=match[1],lhs0$1=lhs[1];
             return caml_string_equal(lhs0$1,rhs0$1)}
           break;
          case 3:
           if(3 === match[0])
            {var
              rhsarguments=match[3],
              rhsannotations=match[2],
              rhsname=match[1],
              lhsarguments=lhs[3],
              lhsannotations=lhs[2],
              lhsname=lhs[1],
              _cHF_=caml_string_equal(lhsname,rhsname);
             if(_cHF_)
              {var x=lhsannotations,y=rhsannotations;
               for(;;)
                {var switch$0=0;
                 if(x)
                  if(y)
                   {var
                     y$0=y[2],
                     b=y[1],
                     x$0=x[2],
                     a=x[1],
                     _cHG_=caml_string_equal(a,b);
                    if(_cHG_){var x=x$0,y=y$0;continue}
                    var _cHH_=_cHG_}
                  else
                   switch$0 = 1;
                 else
                  if(y)switch$0 = 1;else var _cHH_=1;
                 if(switch$0)var _cHH_=0;
                 var _cHI_=_cHH_;
                 break}}
             else
              var _cHI_=_cHF_;
             if(_cHI_)
              {var x$1=lhsarguments,y$1=rhsarguments;
               for(;;)
                {if(x$1)
                  {if(y$1)
                    {var
                      y$2=y$1[2],
                      b$0=y$1[1],
                      x$2=x$1[2],
                      a$0=x$1[1],
                      _cHJ_=caml_call1(caml_call1(equal_micheline,a$0),b$0);
                     if(_cHJ_){var x$1=x$2,y$1=y$2;continue}
                     return _cHJ_}}
                 else
                  if(! y$1)return 1;
                 return 0}}
             return _cHI_}
           break;
          default:
           if(4 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1],x$3=lhs0$2,y$3=rhs0$2;
             for(;;)
              {if(x$3)
                {if(y$3)
                  {var
                    y$4=y$3[2],
                    b$1=y$3[1],
                    x$4=x$3[2],
                    a$1=x$3[1],
                    _cHK_=caml_call1(caml_call1(equal_micheline,a$1),b$1);
                   if(_cHK_){var x$3=x$4,y$3=y$4;continue}
                   return _cHK_}}
               else
                if(! y$3)return 1;
               return 0}}}
        return 0});
    var
     pp_micheline=function _cHE_(_cHC_,_cHD_){return _cHE_.fun(_cHC_,_cHD_)},
     show_micheline=function _cHB_(_cHA_){return _cHB_.fun(_cHA_)};
    caml_update_dummy
     (pp_micheline,
      function(fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_fU_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_fV_),a0);
           return caml_call2(Stdlib_format[123],fmt,_fW_);
          case 1:
           var a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_fX_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_fY_),a0$0);
           return caml_call2(Stdlib_format[123],fmt,_fZ_);
          case 2:
           var a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_f0_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_f1_),a0$1);
           return caml_call2(Stdlib_format[123],fmt,_f2_);
          case 3:
           var aarguments=param[3],aannotations=param[2],aname=param[1];
           caml_call2(Stdlib_format[123],fmt,_f3_);
           caml_call3(Stdlib_format[123],fmt,_f4_,cst_name);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_f5_),aname);
           caml_call2(Stdlib_format[123],fmt,_f6_);
           caml_call2(Stdlib_format[123],fmt,_f7_);
           caml_call3(Stdlib_format[123],fmt,_f8_,cst_annotations);
           caml_call2(Stdlib_format[123],fmt,_f9_);
           var
            _cHu_=0,
            _cHv_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_f__);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_f$_),x);
               return 1};
           caml_call3(Stdlib_list[22],_cHv_,_cHu_,aannotations);
           caml_call2(Stdlib_format[123],fmt,_ga_);
           caml_call2(Stdlib_format[123],fmt,_gb_);
           caml_call2(Stdlib_format[123],fmt,_gc_);
           caml_call3(Stdlib_format[123],fmt,_gd_,cst_arguments);
           caml_call2(Stdlib_format[123],fmt,_ge_);
           var
            _cHw_=0,
            _cHx_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_gf_);
               caml_call1(caml_call1(pp_micheline,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cHx_,_cHw_,aarguments);
           caml_call2(Stdlib_format[123],fmt,_gg_);
           caml_call2(Stdlib_format[123],fmt,_gh_);
           return caml_call2(Stdlib_format[123],fmt,_gi_);
          default:
           var a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_gj_);
           caml_call2(Stdlib_format[123],fmt,_gk_);
           var
            _cHy_=0,
            _cHz_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_gl_);
               caml_call1(caml_call1(pp_micheline,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cHz_,_cHy_,a0$2);
           caml_call2(Stdlib_format[123],fmt,_gm_);
           return caml_call2(Stdlib_format[123],fmt,_gn_)}});
    caml_update_dummy
     (show_micheline,
      function(x){return caml_call3(Stdlib_format[127],_go_,pp_micheline,x)});
    function map_micheline(param)
     {switch(param[0])
       {case 0:var a0=param[1];return [0,a0];
        case 1:var a0$0=param[1];return [1,a0$0];
        case 2:var a0$1=param[1];return [2,a0$1];
        case 3:
         var aarguments=param[3],aannotations=param[2],aname=param[1];
         return [3,aname,aannotations,aarguments];
        default:var a0$2=param[1];return [4,a0$2]}}
    var
     compare_micheline=
      function _cHt_(_cHr_,_cHs_){return _cHt_.fun(_cHr_,_cHs_)};
    caml_update_dummy
     (compare_micheline,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_string_compare(lhs0,rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];
             return caml_string_compare(lhs0$0,rhs0$0)}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$1=match[1],lhs0$1=lhs[1];
             return caml_string_compare(lhs0$1,rhs0$1)}
           break;
          case 3:
           if(3 === match[0])
            {var
              rhsarguments=match[3],
              rhsannotations=match[2],
              rhsname=match[1],
              lhsarguments=lhs[3],
              lhsannotations=lhs[2],
              lhsname=lhs[1],
              x=caml_string_compare(lhsname,rhsname);
             if(0 === x)
              {var x$0=lhsannotations,y=rhsannotations;
               for(;;)
                {if(x$0)
                  if(y)
                   {var
                     y$0=y[2],
                     b=y[1],
                     x$1=x$0[2],
                     a=x$0[1],
                     x$2=caml_string_compare(a,b);
                    if(0 === x$2){var x$0=x$1,y=y$0;continue}
                    var x$3=x$2}
                  else
                   var x$3=1;
                 else
                  var x$3=y?-1:0;
                 if(0 === x$3)
                  {var x$4=lhsarguments,y$1=rhsarguments;
                   for(;;)
                    {if(x$4)
                      {if(y$1)
                        {var
                          y$2=y$1[2],
                          b$0=y$1[1],
                          x$5=x$4[2],
                          a$0=x$4[1],
                          x$6=caml_call1(caml_call1(compare_micheline,a$0),b$0);
                         if(0 === x$6){var x$4=x$5,y$1=y$2;continue}
                         return x$6}
                       return 1}
                     return y$1?-1:0}}
                 return x$3}}
             return x}
           break;
          default:
           if(4 === match[0])
            {var rhs0$2=match[1],lhs0$2=lhs[1],x$7=lhs0$2,y$3=rhs0$2;
             for(;;)
              {if(x$7)
                {if(y$3)
                  {var
                    y$4=y$3[2],
                    b$1=y$3[1],
                    x$8=x$7[2],
                    a$1=x$7[1],
                    x$9=caml_call1(caml_call1(compare_micheline,a$1),b$1);
                   if(0 === x$9){var x$7=x$8,y$3=y$4;continue}
                   return x$9}
                 return 1}
               return y$3?-1:0}}}
        function to_int(param)
         {switch(param[0])
           {case 0:return 0;
            case 1:return 1;
            case 2:return 2;
            case 3:return 3;
            default:return 4}}
        var _cHq_=to_int(match);
        return caml_int_compare(to_int(lhs),_cHq_)});
    var
     equal_inline_michelson=
      function _cHp_(_cHm_,_cHn_,_cHo_){return _cHp_.fun(_cHm_,_cHn_,_cHo_)};
    caml_update_dummy
     (equal_inline_michelson,
      function(poly_t,lhs,rhs)
       {var _cHf_=caml_string_equal(lhs[1],rhs[1]);
        if(_cHf_)
         var
          _cHg_=rhs[2],
          _cHh_=caml_call1(caml_call1(equal_micheline,lhs[2]),_cHg_);
        else
         var _cHh_=_cHf_;
        if(_cHh_)
         {var x=lhs[3],y=rhs[3];
          for(;;)
           {var switch$0=0;
            if(x)
             if(y)
              {var
                y$0=y[2],
                b=y[1],
                x$0=x[2],
                a=x[1],
                _cHi_=caml_call2(poly_t,a,b);
               if(_cHi_){var x=x$0,y=y$0;continue}
               var _cHj_=_cHi_}
             else
              switch$0 = 1;
            else
             if(y)switch$0 = 1;else var _cHj_=1;
            if(switch$0)var _cHj_=0;
            var _cHk_=_cHj_;
            break}}
        else
         var _cHk_=_cHh_;
        if(_cHk_)
         {var x$1=lhs[4],y$1=rhs[4];
          for(;;)
           {if(x$1)
             {if(y$1)
               {var
                 y$2=y$1[2],
                 b$0=y$1[1],
                 x$2=x$1[2],
                 a$0=x$1[1],
                 _cHl_=caml_call2(poly_t,a$0,b$0);
                if(_cHl_){var x$1=x$2,y$1=y$2;continue}
                return _cHl_}}
            else
             if(! y$1)return 1;
            return 0}}
        return _cHk_});
    var
     pp_inline_michelson=
      function _cHe_(_cHb_,_cHc_,_cHd_){return _cHe_.fun(_cHb_,_cHc_,_cHd_)},
     show_inline_michelson=
      function _cHa_(_cG__,_cG$_){return _cHa_.fun(_cG__,_cG$_)};
    caml_update_dummy
     (pp_inline_michelson,
      function(poly_t,fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_gp_);
        caml_call3(Stdlib_format[123],fmt,_gq_,cst_name$0);
        var _cG2_=x[1];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_gr_),_cG2_);
        caml_call2(Stdlib_format[123],fmt,_gs_);
        caml_call2(Stdlib_format[123],fmt,_gt_);
        caml_call3(Stdlib_format[123],fmt,_gu_,cst_parsed);
        var _cG3_=x[2];
        caml_call1(caml_call1(pp_micheline,fmt),_cG3_);
        caml_call2(Stdlib_format[123],fmt,_gv_);
        caml_call2(Stdlib_format[123],fmt,_gw_);
        caml_call3(Stdlib_format[123],fmt,_gx_,cst_typesIn);
        var _cG4_=x[3];
        caml_call2(Stdlib_format[123],fmt,_gy_);
        var _cG5_=0;
        function _cG6_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_gz_);
          caml_call1(caml_call1(poly_t,fmt),x);
          return 1}
        caml_call3(Stdlib_list[22],_cG6_,_cG5_,_cG4_);
        caml_call2(Stdlib_format[123],fmt,_gA_);
        caml_call2(Stdlib_format[123],fmt,_gB_);
        caml_call2(Stdlib_format[123],fmt,_gC_);
        caml_call3(Stdlib_format[123],fmt,_gD_,cst_typesOut);
        var _cG7_=x[4];
        caml_call2(Stdlib_format[123],fmt,_gE_);
        var _cG8_=0;
        function _cG9_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_gF_);
          caml_call1(caml_call1(poly_t,fmt),x);
          return 1}
        caml_call3(Stdlib_list[22],_cG9_,_cG8_,_cG7_);
        caml_call2(Stdlib_format[123],fmt,_gG_);
        caml_call2(Stdlib_format[123],fmt,_gH_);
        return caml_call2(Stdlib_format[123],fmt,_gI_)});
    caml_update_dummy
     (show_inline_michelson,
      function(poly_t,x)
       {var _cG1_=caml_call1(pp_inline_michelson,poly_t);
        return caml_call3(Stdlib_format[127],_gJ_,_cG1_,x)});
    function map_inline_michelson(poly_t,x)
     {var
       _cGX_=x[4],
       _cGY_=caml_call1(caml_call1(Stdlib_list[17],poly_t),_cGX_),
       _cGZ_=x[3],
       _cG0_=caml_call1(caml_call1(Stdlib_list[17],poly_t),_cGZ_);
      return [0,x[1],x[2],_cG0_,_cGY_]}
    var
     compare_inline_michelson=
      function _cGW_(_cGT_,_cGU_,_cGV_){return _cGW_.fun(_cGT_,_cGU_,_cGV_)};
    caml_update_dummy
     (compare_inline_michelson,
      function(poly_t,lhs,rhs)
       {var x=caml_string_compare(lhs[1],rhs[1]);
        if(0 === x)
         {var
           _cGS_=rhs[2],
           x$0=caml_call1(caml_call1(compare_micheline,lhs[2]),_cGS_);
          if(0 === x$0)
           {var x$1=lhs[3],y=rhs[3];
            for(;;)
             {if(x$1)
               if(y)
                {var
                  y$0=y[2],
                  b=y[1],
                  x$2=x$1[2],
                  a=x$1[1],
                  x$3=caml_call2(poly_t,a,b);
                 if(0 === x$3){var x$1=x$2,y=y$0;continue}
                 var x$4=x$3}
               else
                var x$4=1;
              else
               var x$4=y?-1:0;
              if(0 === x$4)
               {var x$5=lhs[4],y$1=rhs[4];
                for(;;)
                 {if(x$5)
                   {if(y$1)
                     {var
                       y$2=y$1[2],
                       b$0=y$1[1],
                       x$6=x$5[2],
                       a$0=x$5[1],
                       x$7=caml_call2(poly_t,a$0,b$0);
                      if(0 === x$7){var x$5=x$6,y$1=y$2;continue}
                      return x$7}
                    return 1}
                  return y$1?-1:0}}
              return x$4}}
          return x$0}
        return x});
    var
     equal_line_no=
      function _cGR_(_cGP_,_cGQ_){return _cGR_.fun(_cGP_,_cGQ_)};
    caml_update_dummy
     (equal_line_no,
      function(x$1,y$1)
       {var x=x$1,y=y$1;
        for(;;)
         {if(x)
           {if(y)
             {var
               y$0=y[2],
               b=y[1],
               x$0=x[2],
               a=x[1],
               rhs1=b[2],
               rhs0=b[1],
               lhs1=a[2],
               lhs0=a[1],
               _cGN_=caml_string_equal(lhs0,rhs0),
               _cGO_=_cGN_?lhs1 === rhs1?1:0:_cGN_;
              if(_cGO_){var x=x$0,y=y$0;continue}
              return _cGO_}}
          else
           if(! y)return 1;
          return 0}});
    var
     compare_line_no=
      function _cGM_(_cGK_,_cGL_){return _cGM_.fun(_cGK_,_cGL_)};
    caml_update_dummy
     (compare_line_no,
      function(x$3,y$1)
       {var x=x$3,y=y$1;
        for(;;)
         {if(x)
           {if(y)
             {var
               y$0=y[2],
               b=y[1],
               x$0=x[2],
               a=x[1],
               rhs1=b[2],
               rhs0=b[1],
               lhs1=a[2],
               lhs0=a[1],
               x$1=caml_string_compare(lhs0,rhs0),
               x$2=0 === x$1?caml_int_compare(lhs1,rhs1):x$1;
              if(0 === x$2){var x=x$0,y=y$0;continue}
              return x$2}
            return 1}
          return y?-1:0}});
    function pp_line_no(fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_gK_);
      var _cGI_=0;
      function _cGJ_(sep,x)
       {if(sep)caml_call2(Stdlib_format[123],fmt,_gL_);
        var a1=x[2],a0=x[1];
        caml_call2(Stdlib_format[123],fmt,_gM_);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_gN_),a0);
        caml_call2(Stdlib_format[123],fmt,_gO_);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_gP_),a1);
        caml_call2(Stdlib_format[123],fmt,_gQ_);
        return 1}
      caml_call3(Stdlib_list[22],_cGJ_,_cGI_,x);
      return caml_call2(Stdlib_format[123],fmt,_gR_)}
    function show_line_no(x)
     {return caml_call3(Stdlib_format[127],_gS_,pp_line_no,x)}
    var
     equal_entry_point=
      function _cGH_(_cGC_,_cGD_,_cGE_,_cGF_,_cGG_)
       {return _cGH_.fun(_cGC_,_cGD_,_cGE_,_cGF_,_cGG_)};
    caml_update_dummy
     (equal_entry_point,
      function(poly_command,poly_type,poly_switch,lhs,rhs)
       {var _cGl_=caml_string_equal(lhs[1],rhs[1]);
        if(_cGl_)
         {var _cGm_=rhs[2],_cGn_=lhs[2],switch$0=0;
          if(typeof _cGn_ === "number")
           {if(919067353 <= _cGn_)
             {if(919067353 === _cGm_){var _cGo_=1;switch$0 = 1}}
            else
             if(120414939 === _cGm_){var _cGo_=1;switch$0 = 1}}
          else
           if(typeof _cGm_ !== "number" && -306175688 === _cGm_[1])
            {var
              rhs$0=_cGm_[2],
              lhs$0=_cGn_[2],
              _cGo_=caml_call1(caml_call1(equal$5,lhs$0),rhs$0);
             switch$0 = 1}
          if(! switch$0)var _cGo_=0;
          var _cGp_=_cGo_}
        else
         var _cGp_=_cGl_;
        var _cGq_=_cGp_?lhs[3] === rhs[3]?1:0:_cGp_;
        if(_cGq_)
         {var _cGr_=rhs[4],_cGs_=lhs[4],switch$1=0;
          if(_cGs_)
           if(_cGr_)
            var b=_cGr_[1],a=_cGs_[1],_cGt_=a === b?1:0;
           else
            switch$1 = 1;
          else
           if(_cGr_)switch$1 = 1;else var _cGt_=1;
          if(switch$1)var _cGt_=0;
          var _cGu_=_cGt_}
        else
         var _cGu_=_cGq_;
        if(_cGu_)
         {var _cGv_=rhs[5],_cGw_=lhs[5],switch$2=0;
          if(_cGw_)
           if(_cGv_)
            var b$0=_cGv_[1],a$0=_cGw_[1],_cGx_=a$0 === b$0?1:0;
           else
            switch$2 = 1;
          else
           if(_cGv_)switch$2 = 1;else var _cGx_=1;
          if(switch$2)var _cGx_=0;
          var _cGy_=_cGx_}
        else
         var _cGy_=_cGu_;
        if(_cGy_)
         var
          _cGz_=rhs[6],
          _cGA_=caml_call1(caml_call1(equal_line_no,lhs[6]),_cGz_);
        else
         var _cGA_=_cGy_;
        var _cGB_=_cGA_?caml_call2(poly_command,lhs[7],rhs[7]):_cGA_;
        return _cGB_?equal_extra(poly_type,poly_switch,lhs[8],rhs[8]):_cGB_});
    var
     compare_entry_point=
      function _cGk_(_cGf_,_cGg_,_cGh_,_cGi_,_cGj_)
       {return _cGk_.fun(_cGf_,_cGg_,_cGh_,_cGi_,_cGj_)};
    caml_update_dummy
     (compare_entry_point,
      function(poly_command,poly_type,poly_switch,lhs,rhs)
       {var x=caml_string_compare(lhs[1],rhs[1]);
        if(0 === x)
         {var _cF7_=rhs[2],_cF8_=lhs[2],switch$0=0;
          if(typeof _cF8_ === "number")
           {if(919067353 <= _cF8_)
             {if(919067353 === _cF7_){var x$0=0;switch$0 = 1}}
            else
             if(120414939 === _cF7_){var x$0=0;switch$0 = 1}}
          else
           if(typeof _cF7_ !== "number" && -306175688 === _cF7_[1])
            {var
              rhs$0=_cF7_[2],
              lhs$0=_cF8_[2],
              x$0=caml_call1(caml_call1(compare$3,lhs$0),rhs$0);
             switch$0 = 1}
          if(! switch$0)
           var
            to_int=
             function(param)
              {return typeof param === "number"?919067353 <= param?0:1:2},
            _cF9_=to_int(_cF7_),
            x$0=caml_int_compare(to_int(_cF8_),_cF9_);
          if(0 === x$0)
           {var x$1=caml_int_compare(lhs[3],rhs[3]);
            if(0 === x$1)
             {var _cF__=rhs[4],_cF$_=lhs[4];
              if(_cF$_)
               {var _cGa_=_cF$_[1];
                if(_cF__)
                 var b=_cF__[1],x$2=caml_int_compare(_cGa_,b);
                else
                 var x$2=1}
              else
               var x$2=_cF__?-1:0;
              if(0 === x$2)
               {var _cGb_=rhs[5],_cGc_=lhs[5];
                if(_cGc_)
                 {var _cGd_=_cGc_[1];
                  if(_cGb_)
                   var b$0=_cGb_[1],x$3=caml_int_compare(_cGd_,b$0);
                  else
                   var x$3=1}
                else
                 var x$3=_cGb_?-1:0;
                if(0 === x$3)
                 {var
                   _cGe_=rhs[6],
                   x$4=caml_call1(caml_call1(compare_line_no,lhs[6]),_cGe_);
                  if(0 === x$4)
                   {var x$5=caml_call2(poly_command,lhs[7],rhs[7]);
                    return 0 === x$5
                            ?compare_extra(poly_type,poly_switch,lhs[8],rhs[8])
                            :x$5}
                  return x$4}
                return x$3}
              return x$2}
            return x$1}
          return x$0}
        return x});
    var
     pp_entry_point=
      function _cF6_(_cF1_,_cF2_,_cF3_,_cF4_,_cF5_)
       {return _cF6_.fun(_cF1_,_cF2_,_cF3_,_cF4_,_cF5_)},
     show_entry_point=
      function _cF0_(_cFW_,_cFX_,_cFY_,_cFZ_)
       {return _cF0_.fun(_cFW_,_cFX_,_cFY_,_cFZ_)};
    caml_update_dummy
     (pp_entry_point,
      function(poly_command,poly_type,poly_switch,fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_gT_);
        caml_call3(Stdlib_format[123],fmt,_gU_,cst_channel);
        var _cFO_=x[1];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_gV_),_cFO_);
        caml_call2(Stdlib_format[123],fmt,_gW_);
        caml_call2(Stdlib_format[123],fmt,_gX_);
        caml_call3(Stdlib_format[123],fmt,_gY_,cst_tparameter_ep);
        var _cFP_=x[2];
        if(typeof _cFP_ === "number")
         if(919067353 <= _cFP_)
          caml_call2(Stdlib_format[13],fmt,cst_Absent);
         else
          caml_call2(Stdlib_format[13],fmt,cst_Present);
        else
         {var x$0=_cFP_[2];
          caml_call2(Stdlib_format[123],fmt,_gZ_);
          caml_call1(caml_call1(pp$4,fmt),x$0);
          caml_call2(Stdlib_format[123],fmt,_g0_)}
        caml_call2(Stdlib_format[123],fmt,_g1_);
        caml_call2(Stdlib_format[123],fmt,_g2_);
        caml_call3(Stdlib_format[123],fmt,_g3_,cst_originate);
        var _cFQ_=x[3];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_g4_),_cFQ_);
        caml_call2(Stdlib_format[123],fmt,_g5_);
        caml_call2(Stdlib_format[123],fmt,_g6_);
        caml_call3(Stdlib_format[123],fmt,_g7_,cst_lazify);
        var _cFR_=x[4];
        if(_cFR_)
         {var x$1=_cFR_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$3);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_g8_),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$5)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$3);
        caml_call2(Stdlib_format[123],fmt,_g9_);
        caml_call2(Stdlib_format[123],fmt,_g__);
        caml_call3(Stdlib_format[123],fmt,_g$_,cst_lazy_no_code);
        var _cFS_=x[5];
        if(_cFS_)
         {var x$2=_cFS_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$4);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_ha_),x$2);
          caml_call2(Stdlib_format[13],fmt,cst$6)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$4);
        caml_call2(Stdlib_format[123],fmt,_hb_);
        caml_call2(Stdlib_format[123],fmt,_hc_);
        caml_call3(Stdlib_format[123],fmt,_hd_,cst_line_no);
        pp_line_no(fmt,x[6]);
        caml_call2(Stdlib_format[123],fmt,_he_);
        caml_call2(Stdlib_format[123],fmt,_hf_);
        caml_call3(Stdlib_format[123],fmt,_hg_,cst_body);
        var _cFT_=x[7];
        caml_call1(caml_call1(poly_command,fmt),_cFT_);
        caml_call2(Stdlib_format[123],fmt,_hh_);
        caml_call2(Stdlib_format[123],fmt,_hi_);
        caml_call3(Stdlib_format[123],fmt,_hj_,cst_tparameter_ep_derived);
        var _cFU_=x[8];
        function _cFV_(fmt){return caml_call1(poly_switch,fmt)}
        pp_extra
         (function(fmt){return caml_call1(poly_type,fmt)},_cFV_,fmt,_cFU_);
        caml_call2(Stdlib_format[123],fmt,_hk_);
        return caml_call2(Stdlib_format[123],fmt,_hl_)});
    caml_update_dummy
     (show_entry_point,
      function(poly_command,poly_type,poly_switch,x)
       {var
         _cFN_=
          caml_call1
           (caml_call1(caml_call1(pp_entry_point,poly_command),poly_type),
            poly_switch);
        return caml_call3(Stdlib_format[127],_hm_,_cFN_,x)});
    function fold_entry_point(poly_command,poly_type,poly_switch,acc,x)
     {var acc$0=caml_call2(poly_command,acc,x[7]);
      return fold_extra(poly_type,poly_switch,acc$0,x[8])}
    var
     equal_offchain_view=
      function _cFM_(_cFH_,_cFI_,_cFJ_,_cFK_,_cFL_)
       {return _cFM_.fun(_cFH_,_cFI_,_cFJ_,_cFK_,_cFL_)};
    caml_update_dummy
     (equal_offchain_view,
      function(poly_command,poly_type,poly_switch,lhs,rhs)
       {var
         _cFA_=caml_string_equal(lhs[1],rhs[1]),
         _cFB_=_cFA_?lhs[2] === rhs[2]?1:0:_cFA_,
         _cFC_=_cFB_?lhs[3] === rhs[3]?1:0:_cFB_,
         _cFD_=_cFC_?caml_call2(poly_command,lhs[4],rhs[4]):_cFC_,
         _cFE_=_cFD_?caml_string_equal(lhs[5],rhs[5]):_cFD_;
        if(_cFE_)
         {var _cFF_=rhs[6],_cFG_=lhs[6];
          return equal_extra
                  (function(x,y)
                    {if(x)
                      {if(y){var b=y[1],a=x[1];return caml_call2(poly_type,a,b)}}
                     else
                      if(! y)return 1;
                     return 0},
                   poly_switch,
                   _cFG_,
                   _cFF_)}
        return _cFE_});
    var
     compare_offchain_view=
      function _cFz_(_cFu_,_cFv_,_cFw_,_cFx_,_cFy_)
       {return _cFz_.fun(_cFu_,_cFv_,_cFw_,_cFx_,_cFy_)};
    caml_update_dummy
     (compare_offchain_view,
      function(poly_command,poly_type,poly_switch,lhs,rhs)
       {var x=caml_string_compare(lhs[1],rhs[1]);
        if(0 === x)
         {var x$0=caml_int_compare(lhs[2],rhs[2]);
          if(0 === x$0)
           {var x$1=caml_int_compare(lhs[3],rhs[3]);
            if(0 === x$1)
             {var x$2=caml_call2(poly_command,lhs[4],rhs[4]);
              if(0 === x$2)
               {var x$3=caml_string_compare(lhs[5],rhs[5]);
                if(0 === x$3)
                 {var _cFr_=rhs[6],_cFs_=lhs[6];
                  return compare_extra
                          (function(x,y)
                            {if(x)
                              {var _cFt_=x[1];
                               if(y){var b=y[1];return caml_call2(poly_type,_cFt_,b)}
                               return 1}
                             return y?-1:0},
                           poly_switch,
                           _cFs_,
                           _cFr_)}
                return x$3}
              return x$2}
            return x$1}
          return x$0}
        return x});
    var
     pp_offchain_view=
      function _cFq_(_cFl_,_cFm_,_cFn_,_cFo_,_cFp_)
       {return _cFq_.fun(_cFl_,_cFm_,_cFn_,_cFo_,_cFp_)},
     show_offchain_view=
      function _cFk_(_cFg_,_cFh_,_cFi_,_cFj_)
       {return _cFk_.fun(_cFg_,_cFh_,_cFi_,_cFj_)};
    caml_update_dummy
     (pp_offchain_view,
      function(poly_command,poly_type,poly_switch,fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_hn_);
        caml_call3(Stdlib_format[123],fmt,_ho_,cst_name$1);
        var _cE$_=x[1];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_hp_),_cE$_);
        caml_call2(Stdlib_format[123],fmt,_hq_);
        caml_call2(Stdlib_format[123],fmt,_hr_);
        caml_call3(Stdlib_format[123],fmt,_hs_,cst_has_param);
        var _cFa_=x[2];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_ht_),_cFa_);
        caml_call2(Stdlib_format[123],fmt,_hu_);
        caml_call2(Stdlib_format[123],fmt,_hv_);
        caml_call3(Stdlib_format[123],fmt,_hw_,cst_pure);
        var _cFb_=x[3];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_hx_),_cFb_);
        caml_call2(Stdlib_format[123],fmt,_hy_);
        caml_call2(Stdlib_format[123],fmt,_hz_);
        caml_call3(Stdlib_format[123],fmt,_hA_,cst_body$0);
        var _cFc_=x[4];
        caml_call1(caml_call1(poly_command,fmt),_cFc_);
        caml_call2(Stdlib_format[123],fmt,_hB_);
        caml_call2(Stdlib_format[123],fmt,_hC_);
        caml_call3(Stdlib_format[123],fmt,_hD_,cst_doc);
        var _cFd_=x[5];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_hE_),_cFd_);
        caml_call2(Stdlib_format[123],fmt,_hF_);
        caml_call2(Stdlib_format[123],fmt,_hG_);
        caml_call3(Stdlib_format[123],fmt,_hH_,cst_tparameter_derived);
        var _cFe_=x[6];
        function _cFf_(fmt){return caml_call1(poly_switch,fmt)}
        pp_extra
         (function(fmt,param)
           {if(param)
             {var x=param[1];
              caml_call2(Stdlib_format[13],fmt,cst_Some$5);
              caml_call1(caml_call1(poly_type,fmt),x);
              return caml_call2(Stdlib_format[13],fmt,cst$7)}
            return caml_call2(Stdlib_format[13],fmt,cst_None$5)},
          _cFf_,
          fmt,
          _cFe_);
        caml_call2(Stdlib_format[123],fmt,_hI_);
        return caml_call2(Stdlib_format[123],fmt,_hJ_)});
    caml_update_dummy
     (show_offchain_view,
      function(poly_command,poly_type,poly_switch,x)
       {var
         _cE__=
          caml_call1
           (caml_call1(caml_call1(pp_offchain_view,poly_command),poly_type),
            poly_switch);
        return caml_call3(Stdlib_format[127],_hK_,_cE__,x)});
    function fold_offchain_view(poly_command,poly_type,poly_switch,acc,x)
     {var acc$0=caml_call2(poly_command,acc,x[4]),_cE9_=x[6];
      return fold_extra
              (function(acc,param)
                {if(param){var x=param[1];return caml_call2(poly_type,acc,x)}
                 return acc},
               poly_switch,
               acc$0,
               _cE9_)}
    var
     equal_address=
      function _cE8_(_cE6_,_cE7_){return _cE8_.fun(_cE6_,_cE7_)};
    caml_update_dummy
     (equal_address,
      function(lhs,match)
       {if(0 === lhs[0])
         {var _cE4_=lhs[1];
          if(0 === match[0])
           {var rhs0=match[1];return caml_string_equal(_cE4_,rhs0)}}
        else
         {var _cE5_=lhs[1];
          if(0 !== match[0])
           {var rhs0$0=match[1];
            return caml_call1(caml_call1(equal_contract_id,_cE5_),rhs0$0)}}
        return 0});
    var
     compare_address=
      function _cE3_(_cE1_,_cE2_){return _cE3_.fun(_cE1_,_cE2_)};
    caml_update_dummy
     (compare_address,
      function(lhs,match)
       {if(0 === lhs[0])
         {var _cEY_=lhs[1];
          if(0 === match[0])
           {var rhs0=match[1];return caml_string_compare(_cEY_,rhs0)}}
        else
         {var _cE0_=lhs[1];
          if(0 !== match[0])
           {var rhs0$0=match[1];
            return caml_call1(caml_call1(compare_contract_id,_cE0_),rhs0$0)}}
        function to_int(param){return 0 === param[0]?0:1}
        var _cEZ_=to_int(match);
        return caml_int_compare(to_int(lhs),_cEZ_)});
    var
     pp_address=function _cEX_(_cEV_,_cEW_){return _cEX_.fun(_cEV_,_cEW_)},
     show_address=function _cEU_(_cET_){return _cEU_.fun(_cET_)};
    caml_update_dummy
     (pp_address,
      function(fmt,param)
       {if(0 === param[0])
         {var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_hL_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_hM_),a0);
          return caml_call2(Stdlib_format[123],fmt,_hN_)}
        var a0$0=param[1];
        caml_call2(Stdlib_format[123],fmt,_hO_);
        caml_call1(caml_call1(pp_contract_id,fmt),a0$0);
        return caml_call2(Stdlib_format[123],fmt,_hP_)});
    caml_update_dummy
     (show_address,
      function(x){return caml_call3(Stdlib_format[127],_hQ_,pp_address,x)});
    function equal_contract_derived(poly_type,lhs,rhs)
     {var _cEJ_=caml_call2(poly_type,lhs[1],rhs[1]);
      if(_cEJ_)
       {var _cEK_=rhs[2],_cEL_=lhs[2],switch$0=0;
        if(_cEL_)
         if(_cEK_)
          var b=_cEK_[1],a=_cEL_[1],_cEM_=caml_call2(poly_type,a,b);
         else
          switch$0 = 1;
        else
         if(_cEK_)switch$0 = 1;else var _cEM_=1;
        if(switch$0)var _cEM_=0;
        var _cEN_=_cEM_}
      else
       var _cEN_=_cEJ_;
      if(_cEN_)
       {var _cEO_=rhs[3],_cEP_=lhs[3],switch$1=0;
        if(_cEP_)
         if(_cEO_)
          var b$0=_cEO_[1],a$0=_cEP_[1],_cEQ_=caml_call2(poly_type,a$0,b$0);
         else
          switch$1 = 1;
        else
         if(_cEO_)switch$1 = 1;else var _cEQ_=1;
        if(switch$1)var _cEQ_=0;
        var _cER_=_cEQ_}
      else
       var _cER_=_cEN_;
      var _cES_=_cER_?caml_call2(poly_type,lhs[4],rhs[4]):_cER_;
      return _cES_?caml_call2(poly_type,lhs[5],rhs[5]):_cES_}
    function compare_contract_derived(poly_type,lhs,rhs)
     {var x=caml_call2(poly_type,lhs[1],rhs[1]);
      if(0 === x)
       {var _cED_=rhs[2],_cEE_=lhs[2];
        if(_cEE_)
         {var _cEF_=_cEE_[1];
          if(_cED_)
           var b=_cED_[1],x$0=caml_call2(poly_type,_cEF_,b);
          else
           var x$0=1}
        else
         var x$0=_cED_?-1:0;
        if(0 === x$0)
         {var _cEG_=rhs[3],_cEH_=lhs[3];
          if(_cEH_)
           {var _cEI_=_cEH_[1];
            if(_cEG_)
             var b$0=_cEG_[1],x$1=caml_call2(poly_type,_cEI_,b$0);
            else
             var x$1=1}
          else
           var x$1=_cEG_?-1:0;
          if(0 === x$1)
           {var x$2=caml_call2(poly_type,lhs[4],rhs[4]);
            return 0 === x$2?caml_call2(poly_type,lhs[5],rhs[5]):x$2}
          return x$1}
        return x$0}
      return x}
    function pp_contract_derived(poly_type,fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_hR_);
      caml_call3(Stdlib_format[123],fmt,_hS_,cst_tparameter);
      var _cEy_=x[1];
      caml_call1(caml_call1(poly_type,fmt),_cEy_);
      caml_call2(Stdlib_format[123],fmt,_hT_);
      caml_call2(Stdlib_format[123],fmt,_hU_);
      caml_call3(Stdlib_format[123],fmt,_hV_,cst_tparameter_lazy);
      var _cEz_=x[2];
      if(_cEz_)
       {var x$0=_cEz_[1];
        caml_call2(Stdlib_format[13],fmt,cst_Some$6);
        caml_call1(caml_call1(poly_type,fmt),x$0);
        caml_call2(Stdlib_format[13],fmt,cst$8)}
      else
       caml_call2(Stdlib_format[13],fmt,cst_None$6);
      caml_call2(Stdlib_format[123],fmt,_hW_);
      caml_call2(Stdlib_format[123],fmt,_hX_);
      caml_call3(Stdlib_format[123],fmt,_hY_,cst_tparameter_non_lazy);
      var _cEA_=x[3];
      if(_cEA_)
       {var x$1=_cEA_[1];
        caml_call2(Stdlib_format[13],fmt,cst_Some$7);
        caml_call1(caml_call1(poly_type,fmt),x$1);
        caml_call2(Stdlib_format[13],fmt,cst$9)}
      else
       caml_call2(Stdlib_format[13],fmt,cst_None$7);
      caml_call2(Stdlib_format[123],fmt,_hZ_);
      caml_call2(Stdlib_format[123],fmt,_h0_);
      caml_call3(Stdlib_format[123],fmt,_h1_,cst_tparameter_full);
      var _cEB_=x[4];
      caml_call1(caml_call1(poly_type,fmt),_cEB_);
      caml_call2(Stdlib_format[123],fmt,_h2_);
      caml_call2(Stdlib_format[123],fmt,_h3_);
      caml_call3(Stdlib_format[123],fmt,_h4_,cst_tstorage);
      var _cEC_=x[5];
      caml_call1(caml_call1(poly_type,fmt),_cEC_);
      caml_call2(Stdlib_format[123],fmt,_h5_);
      return caml_call2(Stdlib_format[123],fmt,_h6_)}
    function show_contract_derived(poly_type,x)
     {function _cEv_(_cEw_,_cEx_)
       {return pp_contract_derived(poly_type,_cEw_,_cEx_)}
      return caml_call3(Stdlib_format[127],_h7_,_cEv_,x)}
    function map_contract_derived(poly_type,x)
     {var
       _cEp_=caml_call1(poly_type,x[5]),
       _cEq_=caml_call1(poly_type,x[4]),
       _cEr_=x[3];
      if(_cEr_)
       var x$0=_cEr_[1],_cEs_=[0,caml_call1(poly_type,x$0)];
      else
       var _cEs_=0;
      var _cEt_=x[2];
      if(_cEt_)
       var x$1=_cEt_[1],_cEu_=[0,caml_call1(poly_type,x$1)];
      else
       var _cEu_=0;
      return [0,caml_call1(poly_type,x[1]),_cEu_,_cEs_,_cEq_,_cEp_]}
    function fold_contract_derived(poly_type,acc,x)
     {var acc$0=caml_call2(poly_type,acc,x[1]),_cEn_=x[2];
      if(_cEn_)
       var x$0=_cEn_[1],acc$1=caml_call2(poly_type,acc$0,x$0);
      else
       var acc$1=acc$0;
      var _cEo_=x[3];
      if(_cEo_)
       var x$1=_cEo_[1],acc$2=caml_call2(poly_type,acc$1,x$1);
      else
       var acc$2=acc$1;
      var acc$3=caml_call2(poly_type,acc$2,x[4]);
      return caml_call2(poly_type,acc$3,x[5])}
    var
     pp_contract_f=
      function _cEm_(_cEg_,_cEh_,_cEi_,_cEj_,_cEk_,_cEl_)
       {return _cEm_.fun(_cEg_,_cEh_,_cEi_,_cEj_,_cEk_,_cEl_)},
     show_contract_f=
      function _cEf_(_cEa_,_cEb_,_cEc_,_cEd_,_cEe_)
       {return _cEf_.fun(_cEa_,_cEb_,_cEc_,_cEd_,_cEe_)};
    caml_update_dummy
     (pp_contract_f,
      function(poly_expr,poly_command,poly_type,poly_switch,fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_h8_);
        caml_call3(Stdlib_format[123],fmt,_h9_,cst_template_id);
        var _cDH_=x[1];
        if(_cDH_)
         {var x$0=_cDH_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$8);
          pp_static_id(fmt,x$0);
          caml_call2(Stdlib_format[13],fmt,cst$10)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$8);
        caml_call2(Stdlib_format[123],fmt,_h__);
        caml_call2(Stdlib_format[123],fmt,_h$_);
        caml_call3(Stdlib_format[123],fmt,_ia_,cst_balance);
        var _cDI_=x[2];
        if(_cDI_)
         {var x$1=_cDI_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$9);
          caml_call1(caml_call1(poly_expr,fmt),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$11)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$9);
        caml_call2(Stdlib_format[123],fmt,_ib_);
        caml_call2(Stdlib_format[123],fmt,_ic_);
        caml_call3(Stdlib_format[123],fmt,_id_,cst_storage);
        var _cDJ_=x[3];
        if(_cDJ_)
         {var x$2=_cDJ_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$10);
          caml_call1(caml_call1(poly_expr,fmt),x$2);
          caml_call2(Stdlib_format[13],fmt,cst$12)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$10);
        caml_call2(Stdlib_format[123],fmt,_ie_);
        caml_call2(Stdlib_format[123],fmt,_if_);
        caml_call3(Stdlib_format[123],fmt,_ig_,cst_baker);
        var _cDK_=x[4];
        if(_cDK_)
         {var x$3=_cDK_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$11);
          caml_call1(caml_call1(poly_expr,fmt),x$3);
          caml_call2(Stdlib_format[13],fmt,cst$13)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$11);
        caml_call2(Stdlib_format[123],fmt,_ih_);
        caml_call2(Stdlib_format[123],fmt,_ii_);
        caml_call3(Stdlib_format[123],fmt,_ij_,cst_tstorage_explicit);
        var _cDL_=x[5];
        if(_cDL_)
         {var x$4=_cDL_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$12);
          caml_call1(caml_call1(poly_type,fmt),x$4);
          caml_call2(Stdlib_format[13],fmt,cst$14)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$12);
        caml_call2(Stdlib_format[123],fmt,_ik_);
        caml_call2(Stdlib_format[123],fmt,_il_);
        caml_call3(Stdlib_format[123],fmt,_im_,cst_entry_points);
        var _cDM_=x[6];
        caml_call2(Stdlib_format[123],fmt,_in_);
        var _cDN_=0;
        function _cDO_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_io_);
          function _cD__(fmt){return caml_call1(poly_switch,fmt)}
          function _cD$_(fmt){return caml_call1(poly_type,fmt)}
          caml_call1
           (caml_call4
             (pp_entry_point,
              function(fmt){return caml_call1(poly_command,fmt)},
              _cD$_,
              _cD__,
              fmt),
            x);
          return 1}
        caml_call3(Stdlib_list[22],_cDO_,_cDN_,_cDM_);
        caml_call2(Stdlib_format[123],fmt,_ip_);
        caml_call2(Stdlib_format[123],fmt,_iq_);
        caml_call2(Stdlib_format[123],fmt,_ir_);
        caml_call3(Stdlib_format[123],fmt,_is_,cst_entry_points_layout);
        var _cDP_=x[7];
        if(_cDP_)
         {var x$5=_cDP_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$13);
          caml_call1(caml_call1(pp$0,fmt),x$5);
          caml_call2(Stdlib_format[13],fmt,cst$15)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$13);
        caml_call2(Stdlib_format[123],fmt,_it_);
        caml_call2(Stdlib_format[123],fmt,_iu_);
        caml_call3(Stdlib_format[123],fmt,_iv_,cst_unknown_parts);
        var _cDQ_=x[8];
        if(_cDQ_)
         {var x$6=_cDQ_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$14);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_iw_),x$6);
          caml_call2(Stdlib_format[13],fmt,cst$16)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$14);
        caml_call2(Stdlib_format[123],fmt,_ix_);
        caml_call2(Stdlib_format[123],fmt,_iy_);
        caml_call3(Stdlib_format[123],fmt,_iz_,cst_flags);
        var _cDR_=x[9];
        caml_call2(Stdlib_format[123],fmt,_iA_);
        var _cDS_=0;
        function _cDT_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_iB_);
          caml_call1(caml_call1(pp_flag,fmt),x);
          return 1}
        caml_call3(Stdlib_list[22],_cDT_,_cDS_,_cDR_);
        caml_call2(Stdlib_format[123],fmt,_iC_);
        caml_call2(Stdlib_format[123],fmt,_iD_);
        caml_call2(Stdlib_format[123],fmt,_iE_);
        caml_call3(Stdlib_format[123],fmt,_iF_,cst_global_variables);
        var _cDU_=x[10];
        caml_call2(Stdlib_format[123],fmt,_iG_);
        var _cDV_=0;
        function _cDW_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_iH_);
          var a1=x[2],a0=x[1];
          caml_call2(Stdlib_format[123],fmt,_iI_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_iJ_),a0);
          caml_call2(Stdlib_format[123],fmt,_iK_);
          caml_call1(caml_call1(poly_expr,fmt),a1);
          caml_call2(Stdlib_format[123],fmt,_iL_);
          return 1}
        caml_call3(Stdlib_list[22],_cDW_,_cDV_,_cDU_);
        caml_call2(Stdlib_format[123],fmt,_iM_);
        caml_call2(Stdlib_format[123],fmt,_iN_);
        caml_call2(Stdlib_format[123],fmt,_iO_);
        caml_call3(Stdlib_format[123],fmt,_iP_,cst_metadata);
        var _cDX_=x[11];
        caml_call2(Stdlib_format[123],fmt,_iQ_);
        var _cDY_=0;
        function _cDZ_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_iR_);
          var a1=x[2],a0=x[1];
          caml_call2(Stdlib_format[123],fmt,_iS_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_iT_),a0);
          caml_call2(Stdlib_format[123],fmt,_iU_);
          function _cD9_(fmt){return caml_call1(poly_expr,fmt)}
          caml_call1(caml_call2(Utils_Misc[13],_cD9_,fmt),a1);
          caml_call2(Stdlib_format[123],fmt,_iV_);
          return 1}
        caml_call3(Stdlib_list[22],_cDZ_,_cDY_,_cDX_);
        caml_call2(Stdlib_format[123],fmt,_iW_);
        caml_call2(Stdlib_format[123],fmt,_iX_);
        caml_call2(Stdlib_format[123],fmt,_iY_);
        caml_call3(Stdlib_format[123],fmt,_iZ_,cst_views);
        var _cD0_=x[12];
        caml_call2(Stdlib_format[123],fmt,_i0_);
        var _cD1_=0;
        function _cD2_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_i1_);
          function _cD7_(fmt){return caml_call1(poly_switch,fmt)}
          function _cD8_(fmt){return caml_call1(poly_type,fmt)}
          caml_call1
           (caml_call4
             (pp_offchain_view,
              function(fmt){return caml_call1(poly_command,fmt)},
              _cD8_,
              _cD7_,
              fmt),
            x);
          return 1}
        caml_call3(Stdlib_list[22],_cD2_,_cD1_,_cD0_);
        caml_call2(Stdlib_format[123],fmt,_i2_);
        caml_call2(Stdlib_format[123],fmt,_i3_);
        caml_call2(Stdlib_format[123],fmt,_i4_);
        caml_call3(Stdlib_format[123],fmt,_i5_,cst_derived);
        var _cD3_=x[13];
        function _cD4_(fmt){return caml_call1(poly_switch,fmt)}
        pp_extra
         (function(fmt)
           {function _cD5_(fmt){return caml_call1(poly_type,fmt)}
            return function(_cD6_)
             {return pp_contract_derived(_cD5_,fmt,_cD6_)}},
          _cD4_,
          fmt,
          _cD3_);
        caml_call2(Stdlib_format[123],fmt,_i6_);
        return caml_call2(Stdlib_format[123],fmt,_i7_)});
    caml_update_dummy
     (show_contract_f,
      function(poly_expr,poly_command,poly_type,poly_switch,x)
       {var
         _cDG_=
          caml_call1
           (caml_call1
             (caml_call1(caml_call1(pp_contract_f,poly_expr),poly_command),
              poly_type),
            poly_switch);
        return caml_call3(Stdlib_format[127],_i8_,_cDG_,x)});
    function map_contract_f(poly_expr,poly_command,poly_type,poly_switch,x)
     {var
       _cDa_=x[13],
       _cDy_=
        map_extra
         (function(_cDF_){return map_contract_derived(poly_type,_cDF_)},
          poly_switch,
          _cDa_),
       _cDb_=x[12];
      function _cDc_(x)
       {var
         _cDB_=x[6],
         _cDE_=
          map_extra
           (function(param)
             {if(param){var x=param[1];return [0,caml_call1(poly_type,x)]}
              return 0},
            poly_switch,
            _cDB_),
         _cDC_=x[5],
         _cDD_=caml_call1(poly_command,x[4]);
        return [0,x[1],x[2],x[3],_cDD_,_cDC_,_cDE_]}
      var
       _cDd_=caml_call1(caml_call1(Stdlib_list[17],_cDc_),_cDb_),
       _cDe_=x[11];
      function _cDf_(param)
       {var a1=param[2],a0=param[1];
        return [0,a0,caml_call1(caml_call1(Utils_Misc[15],poly_expr),a1)]}
      var
       _cDg_=caml_call1(caml_call1(Stdlib_list[17],_cDf_),_cDe_),
       _cDh_=x[10];
      function _cDi_(param)
       {var a1=param[2],a0=param[1];return [0,a0,caml_call1(poly_expr,a1)]}
      var
       _cDj_=caml_call1(caml_call1(Stdlib_list[17],_cDi_),_cDh_),
       _cDk_=x[9],
       _cDl_=x[8],
       _cDm_=x[7],
       _cDn_=x[6];
      function _cDo_(x)
       {var
         _cDA_=map_extra(poly_type,poly_switch,x[8]),
         _cDz_=caml_call1(poly_command,x[7]);
        return [0,x[1],x[2],x[3],x[4],x[5],x[6],_cDz_,_cDA_]}
      var
       _cDp_=caml_call1(caml_call1(Stdlib_list[17],_cDo_),_cDn_),
       _cDq_=x[5];
      if(_cDq_)
       var x$0=_cDq_[1],_cDr_=[0,caml_call1(poly_type,x$0)];
      else
       var _cDr_=0;
      var _cDs_=x[4];
      if(_cDs_)
       var x$1=_cDs_[1],_cDt_=[0,caml_call1(poly_expr,x$1)];
      else
       var _cDt_=0;
      var _cDu_=x[3];
      if(_cDu_)
       var x$2=_cDu_[1],_cDv_=[0,caml_call1(poly_expr,x$2)];
      else
       var _cDv_=0;
      var _cDw_=x[2];
      if(_cDw_)
       var x$3=_cDw_[1],_cDx_=[0,caml_call1(poly_expr,x$3)];
      else
       var _cDx_=0;
      return [0,
              x[1],
              _cDx_,
              _cDv_,
              _cDt_,
              _cDr_,
              _cDp_,
              _cDm_,
              _cDl_,
              _cDk_,
              _cDj_,
              _cDg_,
              _cDd_,
              _cDy_]}
    function fold_contract_f
     (poly_expr,poly_command,poly_type,poly_switch,acc,x)
     {var _cCT_=x[2];
      if(_cCT_)
       var x$0=_cCT_[1],acc$0=caml_call2(poly_expr,acc,x$0);
      else
       var acc$0=acc;
      var _cCU_=x[3];
      if(_cCU_)
       var x$1=_cCU_[1],acc$1=caml_call2(poly_expr,acc$0,x$1);
      else
       var acc$1=acc$0;
      var _cCV_=x[4];
      if(_cCV_)
       var x$2=_cCV_[1],acc$2=caml_call2(poly_expr,acc$1,x$2);
      else
       var acc$2=acc$1;
      var _cCW_=x[5];
      if(_cCW_)
       var x$3=_cCW_[1],acc$3=caml_call2(poly_type,acc$2,x$3);
      else
       var acc$3=acc$2;
      var _cCX_=x[6];
      function _cCY_(_cC__,_cC$_)
       {return fold_entry_point
                (poly_command,poly_type,poly_switch,_cC__,_cC$_)}
      var
       acc$4=caml_call2(caml_call1(Stdlib_list[22],_cCY_),acc$3,_cCX_),
       _cCZ_=x[10];
      function _cC0_(acc,param)
       {var a1=param[2];return caml_call2(poly_expr,acc,a1)}
      var
       acc$5=caml_call2(caml_call1(Stdlib_list[22],_cC0_),acc$4,_cCZ_),
       _cC1_=x[11];
      function _cC2_(acc,param)
       {var a1=param[2];
        return caml_call2(caml_call1(Utils_Misc[16],poly_expr),acc,a1)}
      var
       acc$6=caml_call2(caml_call1(Stdlib_list[22],_cC2_),acc$5,_cC1_),
       _cC3_=x[12];
      function _cC4_(_cC8_,_cC9_)
       {return fold_offchain_view
                (poly_command,poly_type,poly_switch,_cC8_,_cC9_)}
      var
       acc$7=caml_call2(caml_call1(Stdlib_list[22],_cC4_),acc$6,_cC3_),
       _cC5_=x[13];
      return fold_extra
              (function(_cC6_,_cC7_)
                {return fold_contract_derived(poly_type,_cC6_,_cC7_)},
               poly_switch,
               acc$7,
               _cC5_)}
    var
     equal_contract_f=
      function _cCS_(_cCM_,_cCN_,_cCO_,_cCP_,_cCQ_,_cCR_)
       {return _cCS_.fun(_cCM_,_cCN_,_cCO_,_cCP_,_cCQ_,_cCR_)};
    caml_update_dummy
     (equal_contract_f,
      function(poly_expr,poly_command,poly_type,poly_switch,lhs,rhs)
       {var _cB3_=rhs[1],_cB4_=lhs[1],switch$0=0;
        if(_cB4_)
         if(_cB3_)
          var b=_cB3_[1],a=_cB4_[1],_cB5_=equal_static_id(a,b);
         else
          switch$0 = 1;
        else
         if(_cB3_)switch$0 = 1;else var _cB5_=1;
        if(switch$0)var _cB5_=0;
        if(_cB5_)
         {var _cB6_=rhs[2],_cB7_=lhs[2],switch$1=0;
          if(_cB7_)
           if(_cB6_)
            var b$0=_cB6_[1],a$0=_cB7_[1],_cB8_=caml_call2(poly_expr,a$0,b$0);
           else
            switch$1 = 1;
          else
           if(_cB6_)switch$1 = 1;else var _cB8_=1;
          if(switch$1)var _cB8_=0;
          var _cB9_=_cB8_}
        else
         var _cB9_=_cB5_;
        if(_cB9_)
         {var _cB__=rhs[3],_cB$_=lhs[3],switch$2=0;
          if(_cB$_)
           if(_cB__)
            var b$1=_cB__[1],a$1=_cB$_[1],_cCa_=caml_call2(poly_expr,a$1,b$1);
           else
            switch$2 = 1;
          else
           if(_cB__)switch$2 = 1;else var _cCa_=1;
          if(switch$2)var _cCa_=0;
          var _cCb_=_cCa_}
        else
         var _cCb_=_cB9_;
        if(_cCb_)
         {var _cCc_=rhs[4],_cCd_=lhs[4],switch$3=0;
          if(_cCd_)
           if(_cCc_)
            var b$2=_cCc_[1],a$2=_cCd_[1],_cCe_=caml_call2(poly_expr,a$2,b$2);
           else
            switch$3 = 1;
          else
           if(_cCc_)switch$3 = 1;else var _cCe_=1;
          if(switch$3)var _cCe_=0;
          var _cCf_=_cCe_}
        else
         var _cCf_=_cCb_;
        if(_cCf_)
         {var _cCg_=rhs[5],_cCh_=lhs[5],switch$4=0;
          if(_cCh_)
           if(_cCg_)
            var b$3=_cCg_[1],a$3=_cCh_[1],_cCi_=caml_call2(poly_type,a$3,b$3);
           else
            switch$4 = 1;
          else
           if(_cCg_)switch$4 = 1;else var _cCi_=1;
          if(switch$4)var _cCi_=0;
          var _cCj_=_cCi_}
        else
         var _cCj_=_cCf_;
        if(_cCj_)
         {var x=lhs[6],y=rhs[6];
          for(;;)
           {var switch$5=0;
            if(x)
             if(y)
              {var
                y$0=y[2],
                b$4=y[1],
                x$0=x[2],
                a$4=x[1],
                _cCk_=
                 caml_call1
                  (caml_call1
                    (caml_call3
                      (equal_entry_point,poly_command,poly_type,poly_switch),
                     a$4),
                   b$4);
               if(_cCk_){var x=x$0,y=y$0;continue}
               var _cCl_=_cCk_}
             else
              switch$5 = 1;
            else
             if(y)switch$5 = 1;else var _cCl_=1;
            if(switch$5)var _cCl_=0;
            var _cCm_=_cCl_;
            break}}
        else
         var _cCm_=_cCj_;
        if(_cCm_)
         {var _cCn_=rhs[7],_cCo_=lhs[7],switch$6=0;
          if(_cCo_)
           if(_cCn_)
            var
             b$5=_cCn_[1],
             a$5=_cCo_[1],
             _cCp_=caml_call1(caml_call1(equal$0,a$5),b$5);
           else
            switch$6 = 1;
          else
           if(_cCn_)switch$6 = 1;else var _cCp_=1;
          if(switch$6)var _cCp_=0;
          var _cCq_=_cCp_}
        else
         var _cCq_=_cCm_;
        if(_cCq_)
         {var _cCr_=rhs[8],_cCs_=lhs[8],switch$7=0;
          if(_cCs_)
           if(_cCr_)
            var b$6=_cCr_[1],a$6=_cCs_[1],_cCt_=caml_string_equal(a$6,b$6);
           else
            switch$7 = 1;
          else
           if(_cCr_)switch$7 = 1;else var _cCt_=1;
          if(switch$7)var _cCt_=0;
          var _cCu_=_cCt_}
        else
         var _cCu_=_cCq_;
        if(_cCu_)
         {var x$1=lhs[9],y$1=rhs[9];
          for(;;)
           {var switch$8=0;
            if(x$1)
             if(y$1)
              {var
                y$2=y$1[2],
                b$7=y$1[1],
                x$2=x$1[2],
                a$7=x$1[1],
                _cCv_=caml_call1(caml_call1(equal_flag,a$7),b$7);
               if(_cCv_){var x$1=x$2,y$1=y$2;continue}
               var _cCw_=_cCv_}
             else
              switch$8 = 1;
            else
             if(y$1)switch$8 = 1;else var _cCw_=1;
            if(switch$8)var _cCw_=0;
            var _cCx_=_cCw_;
            break}}
        else
         var _cCx_=_cCu_;
        if(_cCx_)
         {var x$3=lhs[10],y$3=rhs[10];
          for(;;)
           {var switch$9=0;
            if(x$3)
             if(y$3)
              {var
                y$4=y$3[2],
                b$8=y$3[1],
                x$4=x$3[2],
                a$8=x$3[1],
                rhs1=b$8[2],
                rhs0=b$8[1],
                lhs1=a$8[2],
                lhs0=a$8[1],
                _cCy_=caml_string_equal(lhs0,rhs0),
                _cCz_=_cCy_?caml_call2(poly_expr,lhs1,rhs1):_cCy_;
               if(_cCz_){var x$3=x$4,y$3=y$4;continue}
               var _cCA_=_cCz_}
             else
              switch$9 = 1;
            else
             if(y$3)switch$9 = 1;else var _cCA_=1;
            if(switch$9)var _cCA_=0;
            var _cCB_=_cCA_;
            break}}
        else
         var _cCB_=_cCx_;
        if(_cCB_)
         {var x$5=lhs[11],y$5=rhs[11];
          for(;;)
           {var switch$10=0;
            if(x$5)
             if(y$5)
              {var
                y$6=y$5[2],
                b$9=y$5[1],
                x$6=x$5[2],
                a$9=x$5[1],
                rhs1$0=b$9[2],
                rhs0$0=b$9[1],
                lhs1$0=a$9[2],
                lhs0$0=a$9[1],
                _cCC_=caml_string_equal(lhs0$0,rhs0$0),
                _cCD_=
                 _cCC_
                  ?caml_call1
                    (caml_call1(caml_call1(Utils_Misc[17],poly_expr),lhs1$0),
                     rhs1$0)
                  :_cCC_;
               if(_cCD_){var x$5=x$6,y$5=y$6;continue}
               var _cCE_=_cCD_}
             else
              switch$10 = 1;
            else
             if(y$5)switch$10 = 1;else var _cCE_=1;
            if(switch$10)var _cCE_=0;
            var _cCF_=_cCE_;
            break}}
        else
         var _cCF_=_cCB_;
        if(_cCF_)
         {var x$7=lhs[12],y$7=rhs[12];
          for(;;)
           {var switch$11=0;
            if(x$7)
             if(y$7)
              {var
                y$8=y$7[2],
                b$10=y$7[1],
                x$8=x$7[2],
                a$10=x$7[1],
                _cCG_=
                 caml_call1
                  (caml_call1
                    (caml_call3
                      (equal_offchain_view,poly_command,poly_type,poly_switch),
                     a$10),
                   b$10);
               if(_cCG_){var x$7=x$8,y$7=y$8;continue}
               var _cCH_=_cCG_}
             else
              switch$11 = 1;
            else
             if(y$7)switch$11 = 1;else var _cCH_=1;
            if(switch$11)var _cCH_=0;
            var _cCI_=_cCH_;
            break}}
        else
         var _cCI_=_cCF_;
        if(_cCI_)
         {var _cCJ_=rhs[13],_cCK_=lhs[13];
          return equal_extra
                  (function(x)
                    {return function(_cCL_)
                      {return equal_contract_derived(poly_type,x,_cCL_)}},
                   poly_switch,
                   _cCK_,
                   _cCJ_)}
        return _cCI_});
    var
     compare_contract_f=
      function _cB2_(_cBW_,_cBX_,_cBY_,_cBZ_,_cB0_,_cB1_)
       {return _cB2_.fun(_cBW_,_cBX_,_cBY_,_cBZ_,_cB0_,_cB1_)};
    caml_update_dummy
     (compare_contract_f,
      function(poly_expr,poly_command,poly_type,poly_switch,lhs,rhs)
       {var _cBy_=rhs[1],_cBz_=lhs[1];
        if(_cBz_)
         {var _cBA_=_cBz_[1];
          if(_cBy_)
           var b=_cBy_[1],x=caml_call1(caml_call1(compare_static_id,_cBA_),b);
          else
           var x=1}
        else
         var x=_cBy_?-1:0;
        if(0 === x)
         {var _cBB_=rhs[2],_cBC_=lhs[2];
          if(_cBC_)
           {var _cBD_=_cBC_[1];
            if(_cBB_)
             var b$0=_cBB_[1],x$0=caml_call2(poly_expr,_cBD_,b$0);
            else
             var x$0=1}
          else
           var x$0=_cBB_?-1:0;
          if(0 === x$0)
           {var _cBE_=rhs[3],_cBF_=lhs[3];
            if(_cBF_)
             {var _cBG_=_cBF_[1];
              if(_cBE_)
               var b$1=_cBE_[1],x$1=caml_call2(poly_expr,_cBG_,b$1);
              else
               var x$1=1}
            else
             var x$1=_cBE_?-1:0;
            if(0 === x$1)
             {var _cBH_=rhs[4],_cBI_=lhs[4];
              if(_cBI_)
               {var _cBJ_=_cBI_[1];
                if(_cBH_)
                 var b$2=_cBH_[1],x$2=caml_call2(poly_expr,_cBJ_,b$2);
                else
                 var x$2=1}
              else
               var x$2=_cBH_?-1:0;
              if(0 === x$2)
               {var _cBK_=rhs[5],_cBL_=lhs[5];
                if(_cBL_)
                 {var _cBM_=_cBL_[1];
                  if(_cBK_)
                   var b$3=_cBK_[1],x$3=caml_call2(poly_type,_cBM_,b$3);
                  else
                   var x$3=1}
                else
                 var x$3=_cBK_?-1:0;
                if(0 === x$3)
                 {var x$4=lhs[6],y=rhs[6];
                  for(;;)
                   {if(x$4)
                     if(y)
                      {var
                        y$0=y[2],
                        b$4=y[1],
                        x$5=x$4[2],
                        a=x$4[1],
                        x$6=
                         caml_call1
                          (caml_call1
                            (caml_call3
                              (compare_entry_point,poly_command,poly_type,poly_switch),
                             a),
                           b$4);
                       if(0 === x$6){var x$4=x$5,y=y$0;continue}
                       var x$7=x$6}
                     else
                      var x$7=1;
                    else
                     var x$7=y?-1:0;
                    if(0 === x$7)
                     {var _cBN_=rhs[7],_cBO_=lhs[7];
                      if(_cBO_)
                       {var _cBP_=_cBO_[1];
                        if(_cBN_)
                         var
                          b$5=_cBN_[1],
                          x$8=caml_call1(caml_call1(compare,_cBP_),b$5);
                        else
                         var x$8=1}
                      else
                       var x$8=_cBN_?-1:0;
                      if(0 === x$8)
                       {var _cBQ_=rhs[8],_cBR_=lhs[8];
                        if(_cBR_)
                         {var _cBS_=_cBR_[1];
                          if(_cBQ_)
                           var b$6=_cBQ_[1],x$9=caml_string_compare(_cBS_,b$6);
                          else
                           var x$9=1}
                        else
                         var x$9=_cBQ_?-1:0;
                        if(0 === x$9)
                         {var x$10=lhs[9],y$1=rhs[9];
                          for(;;)
                           {if(x$10)
                             if(y$1)
                              {var
                                y$2=y$1[2],
                                b$7=y$1[1],
                                x$11=x$10[2],
                                a$0=x$10[1],
                                x$12=caml_call1(caml_call1(compare_flag,a$0),b$7);
                               if(0 === x$12){var x$10=x$11,y$1=y$2;continue}
                               var x$13=x$12}
                             else
                              var x$13=1;
                            else
                             var x$13=y$1?-1:0;
                            if(0 === x$13)
                             {var x$14=lhs[10],y$3=rhs[10];
                              for(;;)
                               {if(x$14)
                                 if(y$3)
                                  {var
                                    y$4=y$3[2],
                                    b$8=y$3[1],
                                    x$15=x$14[2],
                                    a$1=x$14[1],
                                    rhs1=b$8[2],
                                    rhs0=b$8[1],
                                    lhs1=a$1[2],
                                    lhs0=a$1[1],
                                    x$16=caml_string_compare(lhs0,rhs0),
                                    x$17=0 === x$16?caml_call2(poly_expr,lhs1,rhs1):x$16;
                                   if(0 === x$17){var x$14=x$15,y$3=y$4;continue}
                                   var x$18=x$17}
                                 else
                                  var x$18=1;
                                else
                                 var x$18=y$3?-1:0;
                                if(0 === x$18)
                                 {var x$19=lhs[11],y$5=rhs[11];
                                  for(;;)
                                   {if(x$19)
                                     if(y$5)
                                      {var
                                        y$6=y$5[2],
                                        b$9=y$5[1],
                                        x$20=x$19[2],
                                        a$2=x$19[1],
                                        rhs1$0=b$9[2],
                                        rhs0$0=b$9[1],
                                        lhs1$0=a$2[2],
                                        lhs0$0=a$2[1],
                                        x$21=caml_string_compare(lhs0$0,rhs0$0),
                                        x$22=
                                         0 === x$21
                                          ?caml_call1
                                            (caml_call1(caml_call1(Utils_Misc[18],poly_expr),lhs1$0),
                                             rhs1$0)
                                          :x$21;
                                       if(0 === x$22){var x$19=x$20,y$5=y$6;continue}
                                       var x$23=x$22}
                                     else
                                      var x$23=1;
                                    else
                                     var x$23=y$5?-1:0;
                                    if(0 === x$23)
                                     {var x$24=lhs[12],y$7=rhs[12];
                                      for(;;)
                                       {if(x$24)
                                         if(y$7)
                                          {var
                                            y$8=y$7[2],
                                            b$10=y$7[1],
                                            x$25=x$24[2],
                                            a$3=x$24[1],
                                            x$26=
                                             caml_call1
                                              (caml_call1
                                                (caml_call3
                                                  (compare_offchain_view,poly_command,poly_type,poly_switch),
                                                 a$3),
                                               b$10);
                                           if(0 === x$26){var x$24=x$25,y$7=y$8;continue}
                                           var x$27=x$26}
                                         else
                                          var x$27=1;
                                        else
                                         var x$27=y$7?-1:0;
                                        if(0 === x$27)
                                         {var _cBT_=rhs[13],_cBU_=lhs[13];
                                          return compare_extra
                                                  (function(x)
                                                    {return function(_cBV_)
                                                      {return compare_contract_derived(poly_type,x,_cBV_)}},
                                                   poly_switch,
                                                   _cBU_,
                                                   _cBT_)}
                                        return x$27}}
                                    return x$23}}
                                return x$18}}
                            return x$13}}
                        return x$9}
                      return x$8}
                    return x$7}}
                return x$3}
              return x$2}
            return x$1}
          return x$0}
        return x});
    var
     pp_lambda_f=
      function _cBx_(_cBs_,_cBt_,_cBu_,_cBv_,_cBw_)
       {return _cBx_.fun(_cBs_,_cBt_,_cBu_,_cBv_,_cBw_)},
     show_lambda_f=
      function _cBr_(_cBn_,_cBo_,_cBp_,_cBq_)
       {return _cBr_.fun(_cBn_,_cBo_,_cBp_,_cBq_)};
    caml_update_dummy
     (pp_lambda_f,
      function(poly_command,poly_type,poly_switch,fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_i9_);
        caml_call3(Stdlib_format[123],fmt,_i__,cst_id);
        var _cBf_=x[1];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_i$_),_cBf_);
        caml_call2(Stdlib_format[123],fmt,_ja_);
        caml_call2(Stdlib_format[123],fmt,_jb_);
        caml_call3(Stdlib_format[123],fmt,_jc_,cst_name$2);
        var _cBg_=x[2];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_jd_),_cBg_);
        caml_call2(Stdlib_format[123],fmt,_je_);
        caml_call2(Stdlib_format[123],fmt,_jf_);
        caml_call3(Stdlib_format[123],fmt,_jg_,cst_body$1);
        var _cBh_=x[3];
        caml_call1(caml_call1(poly_command,fmt),_cBh_);
        caml_call2(Stdlib_format[123],fmt,_jh_);
        caml_call2(Stdlib_format[123],fmt,_ji_);
        caml_call3(Stdlib_format[123],fmt,_jj_,cst_clean_stack);
        var _cBi_=x[4];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_jk_),_cBi_);
        caml_call2(Stdlib_format[123],fmt,_jl_);
        caml_call2(Stdlib_format[123],fmt,_jm_);
        caml_call3(Stdlib_format[123],fmt,_jn_,cst_tParams);
        var _cBj_=x[5];
        function _cBk_(fmt){return caml_call1(poly_switch,fmt)}
        pp_extra
         (function(fmt){return caml_call1(poly_type,fmt)},_cBk_,fmt,_cBj_);
        caml_call2(Stdlib_format[123],fmt,_jo_);
        caml_call2(Stdlib_format[123],fmt,_jp_);
        caml_call3(Stdlib_format[123],fmt,_jq_,cst_tResult);
        var _cBl_=x[6];
        function _cBm_(fmt){return caml_call1(poly_switch,fmt)}
        pp_extra
         (function(fmt){return caml_call1(poly_type,fmt)},_cBm_,fmt,_cBl_);
        caml_call2(Stdlib_format[123],fmt,_jr_);
        return caml_call2(Stdlib_format[123],fmt,_js_)});
    caml_update_dummy
     (show_lambda_f,
      function(poly_command,poly_type,poly_switch,x)
       {var
         _cBe_=
          caml_call1
           (caml_call1(caml_call1(pp_lambda_f,poly_command),poly_type),
            poly_switch);
        return caml_call3(Stdlib_format[127],_jt_,_cBe_,x)});
    function fold_lambda_f(poly_command,poly_type,poly_switch,acc,x)
     {var
       acc$0=caml_call2(poly_command,acc,x[3]),
       acc$1=fold_extra(poly_type,poly_switch,acc$0,x[5]);
      return fold_extra(poly_type,poly_switch,acc$1,x[6])}
    function equal_lcontract(poly_type,lhs,rhs)
     {var _cA$_=caml_string_equal(lhs[1],rhs[1]);
      if(_cA$_)
       {var _cBa_=rhs[2],_cBb_=lhs[2],switch$0=0;
        if(_cBb_)
         if(_cBa_)
          var b=_cBa_[1],a=_cBb_[1],_cBc_=caml_string_equal(a,b);
         else
          switch$0 = 1;
        else
         if(_cBa_)switch$0 = 1;else var _cBc_=1;
        if(switch$0)var _cBc_=0;
        var _cBd_=_cBc_}
      else
       var _cBd_=_cA$_;
      return _cBd_?caml_call2(poly_type,lhs[3],rhs[3]):_cBd_}
    var
     compare_lcontract=
      function _cA__(_cA7_,_cA8_,_cA9_){return _cA__.fun(_cA7_,_cA8_,_cA9_)};
    caml_update_dummy
     (compare_lcontract,
      function(poly_type,lhs,rhs)
       {var x=caml_string_compare(lhs[1],rhs[1]);
        if(0 === x)
         {var _cA4_=rhs[2],_cA5_=lhs[2];
          if(_cA5_)
           {var _cA6_=_cA5_[1];
            if(_cA4_)
             var b=_cA4_[1],x$0=caml_string_compare(_cA6_,b);
            else
             var x$0=1}
          else
           var x$0=_cA4_?-1:0;
          return 0 === x$0?caml_call2(poly_type,lhs[3],rhs[3]):x$0}
        return x});
    function pp_lcontract(poly_type,fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_ju_);
      caml_call3(Stdlib_format[123],fmt,_jv_,cst_address$0);
      var _cA1_=x[1];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_jw_),_cA1_);
      caml_call2(Stdlib_format[123],fmt,_jx_);
      caml_call2(Stdlib_format[123],fmt,_jy_);
      caml_call3(Stdlib_format[123],fmt,_jz_,cst_entry_point);
      var _cA2_=x[2];
      if(_cA2_)
       {var x$0=_cA2_[1];
        caml_call2(Stdlib_format[13],fmt,cst_Some$15);
        caml_call1(caml_call2(Stdlib_format[123],fmt,_jA_),x$0);
        caml_call2(Stdlib_format[13],fmt,cst$17)}
      else
       caml_call2(Stdlib_format[13],fmt,cst_None$15);
      caml_call2(Stdlib_format[123],fmt,_jB_);
      caml_call2(Stdlib_format[123],fmt,_jC_);
      caml_call3(Stdlib_format[123],fmt,_jD_,cst_type);
      var _cA3_=x[3];
      caml_call1(caml_call1(poly_type,fmt),_cA3_);
      caml_call2(Stdlib_format[123],fmt,_jE_);
      return caml_call2(Stdlib_format[123],fmt,_jF_)}
    function show_lcontract(poly_type,x)
     {function _cAY_(_cAZ_,_cA0_){return pp_lcontract(poly_type,_cAZ_,_cA0_)}
      return caml_call3(Stdlib_format[127],_jG_,_cAY_,x)}
    function map_lcontract(poly_type,x)
     {var _cAX_=caml_call1(poly_type,x[3]);return [0,x[1],x[2],_cAX_]}
    function fold_lcontract(poly_type,acc,x)
     {return caml_call2(poly_type,acc,x[3])}
    var
     equal_prim0=
      function _cAW_(_cAT_,_cAU_,_cAV_){return _cAW_.fun(_cAT_,_cAU_,_cAV_)};
    caml_update_dummy
     (equal_prim0,
      function(poly_type,lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 1}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_call1(caml_call1(equal$3,lhs0),rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return equal_lcontract(poly_type,lhs0$0,rhs0$0)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_call1(caml_call1(equal$3,lhs0$1),rhs0$1)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_string_equal(lhs0$2,rhs0$2)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$3=match[1],lhs0$3=lhs[1];
              return caml_string_equal(lhs0$3,rhs0$3)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_string_equal(lhs0$4,rhs0$4)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$5=match[1],lhs0$5=lhs[1];
              return caml_string_equal(lhs0$5,rhs0$5)}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_string_equal(lhs0$6,rhs0$6)}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1];
              return caml_string_equal(lhs0$7,rhs0$7)}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var rhsseed=match[1],lhsseed=lhs[1];
              return caml_string_equal(lhsseed,rhsseed)}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var
               rhs1=match[2],
               rhs0$8=match[1],
               lhs1=lhs[2],
               lhs0$8=lhs[1],
               _cAR_=caml_call1(caml_call1(equal_contract_id,lhs0$8),rhs0$8);
              if(_cAR_)
               {if(lhs1)
                 {if(rhs1)
                   {var b=rhs1[1],a=lhs1[1];return caml_string_equal(a,b)}}
                else
                 if(! rhs1)return 1;
                return 0}
              return _cAR_}
            break;
           case 11:
            if(typeof match !== "number" && 11 === match[0])
             {var rhs0$9=match[1],lhs0$9=lhs[1];
              return caml_call1(caml_call1(equal_contract_id,lhs0$9),rhs0$9)}
            break;
           case 12:
            if(typeof match !== "number" && 12 === match[0])
             {var rhs0$10=match[1],lhs0$10=lhs[1];
              return caml_call1(caml_call1(equal_contract_id,lhs0$10),rhs0$10)}
            break;
           case 13:
            if(typeof match !== "number" && 13 === match[0])
             {var rhs0$11=match[1],lhs0$11=lhs[1];
              return caml_call1(caml_call1(equal_contract_id,lhs0$11),rhs0$11)}
            break;
           case 14:
            if(typeof match !== "number" && 14 === match[0])
             {var
               rhs1$0=match[2],
               rhs0$12=match[1],
               lhs1$0=lhs[2],
               lhs0$12=lhs[1],
               _cAS_=caml_call1(caml_call1(equal_contract_id,lhs0$12),rhs0$12);
              if(_cAS_)
               {if(lhs1$0)
                 {if(rhs1$0)
                   {var b$0=rhs1$0[1],a$0=lhs1$0[1];
                    return caml_string_equal(a$0,b$0)}}
                else
                 if(! rhs1$0)return 1;
                return 0}
              return _cAS_}
            break;
           default:
            if(typeof match !== "number" && 15 === match[0])
             {var rhs0$13=match[1],lhs0$13=lhs[1];
              return lhs0$13 === rhs0$13?1:0}}
        return 0});
    var
     compare_prim0=
      function _cAQ_(_cAN_,_cAO_,_cAP_){return _cAQ_.fun(_cAN_,_cAO_,_cAP_)};
    caml_update_dummy
     (compare_prim0,
      function(poly_type,lhs,match)
       {if(typeof lhs === "number")
         {if(typeof match === "number")return 0}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_call1(caml_call1(compare$1,lhs0),rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_call1
                      (caml_call1(caml_call1(compare_lcontract,poly_type),lhs0$0),
                       rhs0$0)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_call1(caml_call1(compare$1,lhs0$1),rhs0$1)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_string_compare(lhs0$2,rhs0$2)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$3=match[1],lhs0$3=lhs[1];
              return caml_string_compare(lhs0$3,rhs0$3)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_string_compare(lhs0$4,rhs0$4)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$5=match[1],lhs0$5=lhs[1];
              return caml_string_compare(lhs0$5,rhs0$5)}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_string_compare(lhs0$6,rhs0$6)}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1];
              return caml_string_compare(lhs0$7,rhs0$7)}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var rhsseed=match[1],lhsseed=lhs[1];
              return caml_string_compare(lhsseed,rhsseed)}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var
               rhs1=match[2],
               rhs0$8=match[1],
               lhs1=lhs[2],
               lhs0$8=lhs[1],
               x=caml_call1(caml_call1(compare_contract_id,lhs0$8),rhs0$8);
              if(0 === x)
               {if(lhs1)
                 {var _cAL_=lhs1[1];
                  if(rhs1){var b=rhs1[1];return caml_string_compare(_cAL_,b)}
                  return 1}
                return rhs1?-1:0}
              return x}
            break;
           case 11:
            if(typeof match !== "number" && 11 === match[0])
             {var rhs0$9=match[1],lhs0$9=lhs[1];
              return caml_call1(caml_call1(compare_contract_id,lhs0$9),rhs0$9)}
            break;
           case 12:
            if(typeof match !== "number" && 12 === match[0])
             {var rhs0$10=match[1],lhs0$10=lhs[1];
              return caml_call1
                      (caml_call1(compare_contract_id,lhs0$10),rhs0$10)}
            break;
           case 13:
            if(typeof match !== "number" && 13 === match[0])
             {var rhs0$11=match[1],lhs0$11=lhs[1];
              return caml_call1
                      (caml_call1(compare_contract_id,lhs0$11),rhs0$11)}
            break;
           case 14:
            if(typeof match !== "number" && 14 === match[0])
             {var
               rhs1$0=match[2],
               rhs0$12=match[1],
               lhs1$0=lhs[2],
               lhs0$12=lhs[1],
               x$0=caml_call1(caml_call1(compare_contract_id,lhs0$12),rhs0$12);
              if(0 === x$0)
               {if(lhs1$0)
                 {var _cAM_=lhs1$0[1];
                  if(rhs1$0)
                   {var b$0=rhs1$0[1];return caml_string_compare(_cAM_,b$0)}
                  return 1}
                return rhs1$0?-1:0}
              return x$0}
            break;
           default:
            if(typeof match !== "number" && 15 === match[0])
             {var rhs0$13=match[1],lhs0$13=lhs[1];
              return caml_int_compare(lhs0$13,rhs0$13)}}
        function to_int(param)
         {if(typeof param === "number")
           return 3;
          else
           switch(param[0])
            {case 0:return 0;
             case 1:return 1;
             case 2:return 2;
             case 3:return 4;
             case 4:return 5;
             case 5:return 6;
             case 6:return 7;
             case 7:return 8;
             case 8:return 9;
             case 9:return 10;
             case 10:return 11;
             case 11:return 12;
             case 12:return 13;
             case 13:return 14;
             case 14:return 15;
             default:return 16}}
        var _cAK_=to_int(match);
        return caml_int_compare(to_int(lhs),_cAK_)});
    var
     pp_prim0=
      function _cAJ_(_cAG_,_cAH_,_cAI_){return _cAJ_.fun(_cAG_,_cAH_,_cAI_)},
     show_prim0=function _cAF_(_cAD_,_cAE_){return _cAF_.fun(_cAD_,_cAE_)};
    caml_update_dummy
     (pp_prim0,
      function(poly_type,fmt,param)
       {if(typeof param === "number")
         return caml_call2(Stdlib_format[13],fmt,cst_ELevel);
        else
         switch(param[0])
          {case 0:
            var a0=param[1];
            caml_call2(Stdlib_format[123],fmt,_jH_);
            caml_call1(caml_call1(pp$2,fmt),a0);
            return caml_call2(Stdlib_format[123],fmt,_jI_);
           case 1:
            var a0$0=param[1];
            caml_call2(Stdlib_format[123],fmt,_jJ_);
            pp_lcontract
             (function(fmt){return caml_call1(poly_type,fmt)},fmt,a0$0);
            return caml_call2(Stdlib_format[123],fmt,_jK_);
           case 2:
            var a0$1=param[1];
            caml_call2(Stdlib_format[123],fmt,_jL_);
            caml_call1(caml_call1(pp$2,fmt),a0$1);
            return caml_call2(Stdlib_format[123],fmt,_jM_);
           case 3:
            var a0$2=param[1];
            caml_call2(Stdlib_format[123],fmt,_jN_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_jO_),a0$2);
            return caml_call2(Stdlib_format[123],fmt,_jP_);
           case 4:
            var a0$3=param[1];
            caml_call2(Stdlib_format[123],fmt,_jQ_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_jR_),a0$3);
            return caml_call2(Stdlib_format[123],fmt,_jS_);
           case 5:
            var a0$4=param[1];
            caml_call2(Stdlib_format[123],fmt,_jT_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_jU_),a0$4);
            return caml_call2(Stdlib_format[123],fmt,_jV_);
           case 6:
            var a0$5=param[1];
            caml_call2(Stdlib_format[123],fmt,_jW_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_jX_),a0$5);
            return caml_call2(Stdlib_format[123],fmt,_jY_);
           case 7:
            var a0$6=param[1];
            caml_call2(Stdlib_format[123],fmt,_jZ_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_j0_),a0$6);
            return caml_call2(Stdlib_format[123],fmt,_j1_);
           case 8:
            var a0$7=param[1];
            caml_call2(Stdlib_format[123],fmt,_j2_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_j3_),a0$7);
            return caml_call2(Stdlib_format[123],fmt,_j4_);
           case 9:
            var aseed=param[1];
            caml_call2(Stdlib_format[123],fmt,_j5_);
            caml_call3(Stdlib_format[123],fmt,_j6_,cst_seed$0);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_j7_),aseed);
            caml_call2(Stdlib_format[123],fmt,_j8_);
            return caml_call2(Stdlib_format[123],fmt,_j9_);
           case 10:
            var a1=param[2],a0$8=param[1];
            caml_call2(Stdlib_format[123],fmt,_j__);
            caml_call1(caml_call1(pp_contract_id,fmt),a0$8);
            caml_call2(Stdlib_format[123],fmt,_j$_);
            if(a1)
             {var x=a1[1];
              caml_call2(Stdlib_format[13],fmt,cst_Some$16);
              caml_call1(caml_call2(Stdlib_format[123],fmt,_ka_),x);
              caml_call2(Stdlib_format[13],fmt,cst$18)}
            else
             caml_call2(Stdlib_format[13],fmt,cst_None$16);
            return caml_call2(Stdlib_format[123],fmt,_kb_);
           case 11:
            var a0$9=param[1];
            caml_call2(Stdlib_format[123],fmt,_kc_);
            caml_call1(caml_call1(pp_contract_id,fmt),a0$9);
            return caml_call2(Stdlib_format[123],fmt,_kd_);
           case 12:
            var a0$10=param[1];
            caml_call2(Stdlib_format[123],fmt,_ke_);
            caml_call1(caml_call1(pp_contract_id,fmt),a0$10);
            return caml_call2(Stdlib_format[123],fmt,_kf_);
           case 13:
            var a0$11=param[1];
            caml_call2(Stdlib_format[123],fmt,_kg_);
            caml_call1(caml_call1(pp_contract_id,fmt),a0$11);
            return caml_call2(Stdlib_format[123],fmt,_kh_);
           case 14:
            var a1$0=param[2],a0$12=param[1];
            caml_call2(Stdlib_format[123],fmt,_ki_);
            caml_call1(caml_call1(pp_contract_id,fmt),a0$12);
            caml_call2(Stdlib_format[123],fmt,_kj_);
            if(a1$0)
             {var x$0=a1$0[1];
              caml_call2(Stdlib_format[13],fmt,cst_Some$17);
              caml_call1(caml_call2(Stdlib_format[123],fmt,_kk_),x$0);
              caml_call2(Stdlib_format[13],fmt,cst$19)}
            else
             caml_call2(Stdlib_format[13],fmt,cst_None$17);
            return caml_call2(Stdlib_format[123],fmt,_kl_);
           default:
            var a0$13=param[1];
            caml_call2(Stdlib_format[123],fmt,_km_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_kn_),a0$13);
            return caml_call2(Stdlib_format[123],fmt,_ko_)}});
    caml_update_dummy
     (show_prim0,
      function(poly_type,x)
       {var _cAC_=caml_call1(pp_prim0,poly_type);
        return caml_call3(Stdlib_format[127],_kp_,_cAC_,x)});
    function map_prim0(poly_type,param)
     {if(typeof param === "number")
       return 0;
      else
       switch(param[0])
        {case 0:var a0=param[1];return [0,a0];
         case 1:var a0$0=param[1];return [1,map_lcontract(poly_type,a0$0)];
         case 2:var a0$1=param[1];return [2,a0$1];
         case 3:var a0$2=param[1];return [3,a0$2];
         case 4:var a0$3=param[1];return [4,a0$3];
         case 5:var a0$4=param[1];return [5,a0$4];
         case 6:var a0$5=param[1];return [6,a0$5];
         case 7:var a0$6=param[1];return [7,a0$6];
         case 8:var a0$7=param[1];return [8,a0$7];
         case 9:var aseed=param[1];return [9,aseed];
         case 10:var a1=param[2],a0$8=param[1];return [10,a0$8,a1];
         case 11:var a0$9=param[1];return [11,a0$9];
         case 12:var a0$10=param[1];return [12,a0$10];
         case 13:var a0$11=param[1];return [13,a0$11];
         case 14:var a1$0=param[2],a0$12=param[1];return [14,a0$12,a1$0];
         default:var a0$13=param[1];return [15,a0$13]}}
    function fold_prim0(poly_type,acc,param)
     {if(typeof param === "number")
       return acc;
      else
       switch(param[0])
        {case 0:return acc;
         case 1:var a0=param[1];return fold_lcontract(poly_type,acc,a0);
         case 2:return acc;
         case 3:return acc;
         case 4:return acc;
         case 5:return acc;
         case 6:return acc;
         case 7:return acc;
         case 8:return acc;
         case 9:return acc;
         case 10:return acc;
         case 11:return acc;
         case 12:return acc;
         case 13:return acc;
         case 14:return acc;
         default:return acc}}
    function equal_prim1(poly_type,lhs,match)
     {if(typeof lhs === "number")
       switch(lhs)
        {case 0:if(typeof match === "number" && ! match)return 1;break;
         case 1:if(typeof match === "number" && 1 === match)return 1;break;
         case 2:if(typeof match === "number" && 2 === match)return 1;break;
         case 3:if(typeof match === "number" && 3 === match)return 1;break;
         case 4:if(typeof match === "number" && 4 === match)return 1;break;
         case 5:if(typeof match === "number" && 5 === match)return 1;break;
         case 6:if(typeof match === "number" && 6 === match)return 1;break;
         case 7:if(typeof match === "number" && 7 === match)return 1;break;
         case 8:if(typeof match === "number" && 8 === match)return 1;break;
         case 9:if(typeof match === "number" && 9 === match)return 1;break;
         case 10:if(typeof match === "number" && 10 === match)return 1;break;
         case 11:if(typeof match === "number" && 11 === match)return 1;break;
         case 12:if(typeof match === "number" && 12 === match)return 1;break;
         case 13:if(typeof match === "number" && 13 === match)return 1;break;
         case 14:if(typeof match === "number" && 14 === match)return 1;break;
         case 15:if(typeof match === "number" && 15 === match)return 1;break;
         default:if(typeof match === "number" && 16 <= match)return 1}
      else
       switch(lhs[0])
        {case 0:
          if(typeof match !== "number" && 0 === match[0])
           {var rhs0=match[1],lhs0=lhs[1];return lhs0 === rhs0?1:0}
          break;
         case 1:
          if(typeof match !== "number" && 1 === match[0])
           {var rhs0$0=match[1],lhs0$0=lhs[1];return lhs0$0 === rhs0$0?1:0}
          break;
         case 2:
          if(typeof match !== "number" && 2 === match[0])
           {var rhs0$1=match[1],lhs0$1=lhs[1];return lhs0$1 === rhs0$1?1:0}
          break;
         case 3:
          if(typeof match !== "number" && 3 === match[0])
           {var rhs0$2=match[1],lhs0$2=lhs[1];return lhs0$2 === rhs0$2?1:0}
          break;
         case 4:
          if(typeof match !== "number" && 4 === match[0])
           {var rhs0$3=match[1],lhs0$3=lhs[1];return lhs0$3 === rhs0$3?1:0}
          break;
         case 5:
          if(typeof match !== "number" && 5 === match[0])
           {var rhs0$4=match[1],lhs0$4=lhs[1];
            return caml_call2(poly_type,lhs0$4,rhs0$4)}
          break;
         case 6:
          if(typeof match !== "number" && 6 === match[0])
           {var rhs0$5=match[1],lhs0$5=lhs[1];
            return caml_call2(poly_type,lhs0$5,rhs0$5)}
          break;
         case 7:
          if(typeof match !== "number" && 7 === match[0])
           {var rhs0$6=match[1],lhs0$6=lhs[1];
            return caml_string_equal(lhs0$6,rhs0$6)}
          break;
         case 8:
          if(typeof match !== "number" && 8 === match[0])
           {var rhs0$7=match[1],lhs0$7=lhs[1];
            return caml_string_equal(lhs0$7,rhs0$7)}
          break;
         default:
          if(typeof match !== "number" && 9 === match[0])
           {var rhs0$8=match[1],lhs0$8=lhs[1];
            return caml_string_equal(lhs0$8,rhs0$8)}}
      return 0}
    var
     compare_prim1=
      function _cAB_(_cAy_,_cAz_,_cAA_){return _cAB_.fun(_cAy_,_cAz_,_cAA_)};
    caml_update_dummy
     (compare_prim1,
      function(poly_type,lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 0;break;
           case 1:if(typeof match === "number" && 1 === match)return 0;break;
           case 2:if(typeof match === "number" && 2 === match)return 0;break;
           case 3:if(typeof match === "number" && 3 === match)return 0;break;
           case 4:if(typeof match === "number" && 4 === match)return 0;break;
           case 5:if(typeof match === "number" && 5 === match)return 0;break;
           case 6:if(typeof match === "number" && 6 === match)return 0;break;
           case 7:if(typeof match === "number" && 7 === match)return 0;break;
           case 8:if(typeof match === "number" && 8 === match)return 0;break;
           case 9:if(typeof match === "number" && 9 === match)return 0;break;
           case 10:
            if(typeof match === "number" && 10 === match)return 0;break;
           case 11:
            if(typeof match === "number" && 11 === match)return 0;break;
           case 12:
            if(typeof match === "number" && 12 === match)return 0;break;
           case 13:
            if(typeof match === "number" && 13 === match)return 0;break;
           case 14:
            if(typeof match === "number" && 14 === match)return 0;break;
           case 15:
            if(typeof match === "number" && 15 === match)return 0;break;
           default:if(typeof match === "number" && 16 <= match)return 0}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_int_compare(lhs0,rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_int_compare(lhs0$0,rhs0$0)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_int_compare(lhs0$1,rhs0$1)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_int_compare(lhs0$2,rhs0$2)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$3=match[1],lhs0$3=lhs[1];
              return caml_int_compare(lhs0$3,rhs0$3)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_call2(poly_type,lhs0$4,rhs0$4)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$5=match[1],lhs0$5=lhs[1];
              return caml_call2(poly_type,lhs0$5,rhs0$5)}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_string_compare(lhs0$6,rhs0$6)}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1];
              return caml_string_compare(lhs0$7,rhs0$7)}
            break;
           default:
            if(typeof match !== "number" && 9 === match[0])
             {var rhs0$8=match[1],lhs0$8=lhs[1];
              return caml_string_compare(lhs0$8,rhs0$8)}}
        function to_int(param)
         {if(typeof param === "number")
           switch(param)
            {case 0:return 0;
             case 1:return 1;
             case 2:return 3;
             case 3:return 7;
             case 4:return 9;
             case 5:return 10;
             case 6:return 11;
             case 7:return 12;
             case 8:return 13;
             case 9:return 14;
             case 10:return 15;
             case 11:return 16;
             case 12:return 22;
             case 13:return 23;
             case 14:return 24;
             case 15:return 25;
             default:return 26}
          else
           switch(param[0])
            {case 0:return 2;
             case 1:return 4;
             case 2:return 5;
             case 3:return 6;
             case 4:return 8;
             case 5:return 17;
             case 6:return 18;
             case 7:return 19;
             case 8:return 20;
             default:return 21}}
        var _cAx_=to_int(match);
        return caml_int_compare(to_int(lhs),_cAx_)});
    function pp_prim1(poly_type,fmt,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return caml_call2(Stdlib_format[13],fmt,cst_EConcat_list);
         case 1:return caml_call2(Stdlib_format[13],fmt,cst_EAddress);
         case 2:
          return caml_call2(Stdlib_format[13],fmt,cst_EImplicit_account);
         case 3:return caml_call2(Stdlib_format[13],fmt,cst_EListRev);
         case 4:return caml_call2(Stdlib_format[13],fmt,cst_ENeg);
         case 5:return caml_call2(Stdlib_format[13],fmt,cst_EPack);
         case 6:return caml_call2(Stdlib_format[13],fmt,cst_EToConstant);
         case 7:return caml_call2(Stdlib_format[13],fmt,cst_ESetDelegate);
         case 8:return caml_call2(Stdlib_format[13],fmt,cst_ESign);
         case 9:return caml_call2(Stdlib_format[13],fmt,cst_ESize);
         case 10:return caml_call2(Stdlib_format[13],fmt,cst_ESum);
         case 11:return caml_call2(Stdlib_format[13],fmt,cst_EToInt);
         case 12:return caml_call2(Stdlib_format[13],fmt,cst_EReadTicket);
         case 13:return caml_call2(Stdlib_format[13],fmt,cst_EJoinTickets);
         case 14:return caml_call2(Stdlib_format[13],fmt,cst_EPairingCheck);
         case 15:return caml_call2(Stdlib_format[13],fmt,cst_EVotingPower);
         default:return caml_call2(Stdlib_format[13],fmt,cst_EUnbounded)}
      else
       switch(param[0])
        {case 0:
          var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_kq_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_kr_),a0);
          return caml_call2(Stdlib_format[123],fmt,_ks_);
         case 1:
          var a0$0=param[1];
          caml_call2(Stdlib_format[123],fmt,_kt_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_ku_),a0$0);
          return caml_call2(Stdlib_format[123],fmt,_kv_);
         case 2:
          var a0$1=param[1];
          caml_call2(Stdlib_format[123],fmt,_kw_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_kx_),a0$1);
          return caml_call2(Stdlib_format[123],fmt,_ky_);
         case 3:
          var a0$2=param[1];
          caml_call2(Stdlib_format[123],fmt,_kz_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_kA_),a0$2);
          return caml_call2(Stdlib_format[123],fmt,_kB_);
         case 4:
          var a0$3=param[1];
          caml_call2(Stdlib_format[123],fmt,_kC_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_kD_),a0$3);
          return caml_call2(Stdlib_format[123],fmt,_kE_);
         case 5:
          var a0$4=param[1];
          caml_call2(Stdlib_format[123],fmt,_kF_);
          caml_call1(caml_call1(poly_type,fmt),a0$4);
          return caml_call2(Stdlib_format[123],fmt,_kG_);
         case 6:
          var a0$5=param[1];
          caml_call2(Stdlib_format[123],fmt,_kH_);
          caml_call1(caml_call1(poly_type,fmt),a0$5);
          return caml_call2(Stdlib_format[123],fmt,_kI_);
         case 7:
          var a0$6=param[1];
          caml_call2(Stdlib_format[123],fmt,_kJ_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_kK_),a0$6);
          return caml_call2(Stdlib_format[123],fmt,_kL_);
         case 8:
          var a0$7=param[1];
          caml_call2(Stdlib_format[123],fmt,_kM_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_kN_),a0$7);
          return caml_call2(Stdlib_format[123],fmt,_kO_);
         default:
          var a0$8=param[1];
          caml_call2(Stdlib_format[123],fmt,_kP_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_kQ_),a0$8);
          return caml_call2(Stdlib_format[123],fmt,_kR_)}}
    function show_prim1(poly_type,x)
     {function _cAu_(_cAv_,_cAw_){return pp_prim1(poly_type,_cAv_,_cAw_)}
      return caml_call3(Stdlib_format[127],_kS_,_cAu_,x)}
    function map_prim1(poly_type,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return 0;
         case 1:return 1;
         case 2:return 2;
         case 3:return 3;
         case 4:return 4;
         case 5:return 5;
         case 6:return 6;
         case 7:return 7;
         case 8:return 8;
         case 9:return 9;
         case 10:return 10;
         case 11:return 11;
         case 12:return 12;
         case 13:return 13;
         case 14:return 14;
         case 15:return 15;
         default:return 16}
      else
       switch(param[0])
        {case 0:var a0=param[1];return [0,a0];
         case 1:var a0$0=param[1];return [1,a0$0];
         case 2:var a0$1=param[1];return [2,a0$1];
         case 3:var a0$2=param[1];return [3,a0$2];
         case 4:var a0$3=param[1];return [4,a0$3];
         case 5:var a0$4=param[1];return [5,caml_call1(poly_type,a0$4)];
         case 6:var a0$5=param[1];return [6,caml_call1(poly_type,a0$5)];
         case 7:var a0$6=param[1];return [7,a0$6];
         case 8:var a0$7=param[1];return [8,a0$7];
         default:var a0$8=param[1];return [9,a0$8]}}
    function fold_prim1(poly_type,acc,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return acc;
         case 1:return acc;
         case 2:return acc;
         case 3:return acc;
         case 4:return acc;
         case 5:return acc;
         case 6:return acc;
         case 7:return acc;
         case 8:return acc;
         case 9:return acc;
         case 10:return acc;
         case 11:return acc;
         case 12:return acc;
         case 13:return acc;
         case 14:return acc;
         case 15:return acc;
         default:return acc}
      else
       switch(param[0])
        {case 0:return acc;
         case 1:return acc;
         case 2:return acc;
         case 3:return acc;
         case 4:return acc;
         case 5:var a0=param[1];return caml_call2(poly_type,acc,a0);
         case 6:var a0$0=param[1];return caml_call2(poly_type,acc,a0$0);
         case 7:return acc;
         case 8:return acc;
         default:return acc}}
    var
     equal_prim2=
      function _cAt_(_cAq_,_cAr_,_cAs_){return _cAt_.fun(_cAq_,_cAr_,_cAs_)};
    caml_update_dummy
     (equal_prim2,
      function(poly_type,lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 1;break;
           case 1:if(typeof match === "number" && 1 === match)return 1;break;
           case 2:if(typeof match === "number" && 2 === match)return 1;break;
           case 3:if(typeof match === "number" && 3 === match)return 1;break;
           case 4:if(typeof match === "number" && 4 === match)return 1;break;
           case 5:if(typeof match === "number" && 5 === match)return 1;break;
           case 6:if(typeof match === "number" && 6 === match)return 1;break;
           default:if(typeof match === "number" && 7 <= match)return 1}
        else
         if(0 === lhs[0])
          {if(typeof match !== "number" && 0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];return equal_binOpInfix(lhs0,rhs0)}}
         else
          if(typeof match !== "number" && 1 === match[0])
           {var rhs0$0=match[1],lhs0$0=lhs[1];
            return equal_binOpPrefix(lhs0$0,rhs0$0)}
        return 0});
    var
     compare_prim2=
      function _cAp_(_cAm_,_cAn_,_cAo_){return _cAp_.fun(_cAm_,_cAn_,_cAo_)};
    caml_update_dummy
     (compare_prim2,
      function(poly_type,lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 0;break;
           case 1:if(typeof match === "number" && 1 === match)return 0;break;
           case 2:if(typeof match === "number" && 2 === match)return 0;break;
           case 3:if(typeof match === "number" && 3 === match)return 0;break;
           case 4:if(typeof match === "number" && 4 === match)return 0;break;
           case 5:if(typeof match === "number" && 5 === match)return 0;break;
           case 6:if(typeof match === "number" && 6 === match)return 0;break;
           default:if(typeof match === "number" && 7 <= match)return 0}
        else
         if(0 === lhs[0])
          {if(typeof match !== "number" && 0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_call1(caml_call1(compare_binOpInfix,lhs0),rhs0)}}
         else
          if(typeof match !== "number" && 1 === match[0])
           {var rhs0$0=match[1],lhs0$0=lhs[1];
            if(lhs0$0){if(rhs0$0)return 0}else if(! rhs0$0)return 0;
            var to_int=function(param){return param?1:0},_cAk_=to_int(rhs0$0);
            return caml_int_compare(to_int(lhs0$0),_cAk_)}
        function to_int$0(param)
         {if(typeof param === "number")
           switch(param)
            {case 0:return 0;
             case 1:return 3;
             case 2:return 4;
             case 3:return 5;
             case 4:return 6;
             case 5:return 7;
             case 6:return 8;
             default:return 9}
          else
           return 0 === param[0]?1:2}
        var _cAl_=to_int$0(match);
        return caml_int_compare(to_int$0(lhs),_cAl_)});
    var
     pp_prim2=
      function _cAj_(_cAg_,_cAh_,_cAi_){return _cAj_.fun(_cAg_,_cAh_,_cAi_)},
     show_prim2=function _cAf_(_cAd_,_cAe_){return _cAf_.fun(_cAd_,_cAe_)};
    caml_update_dummy
     (pp_prim2,
      function(poly_type,fmt,param)
       {if(typeof param === "number")
         switch(param)
          {case 0:return caml_call2(Stdlib_format[13],fmt,cst_EGetOpt);
           case 1:return caml_call2(Stdlib_format[13],fmt,cst_EContains);
           case 2:return caml_call2(Stdlib_format[13],fmt,cst_ECallLambda);
           case 3:return caml_call2(Stdlib_format[13],fmt,cst_EApplyLambda);
           case 4:return caml_call2(Stdlib_format[13],fmt,cst_ECons);
           case 5:return caml_call2(Stdlib_format[13],fmt,cst_EAdd_seconds);
           case 6:return caml_call2(Stdlib_format[13],fmt,cst_ETicket);
           default:return caml_call2(Stdlib_format[13],fmt,cst_ESplitTicket)}
        else
         {if(0 === param[0])
           {var a0=param[1];
            caml_call2(Stdlib_format[123],fmt,_kT_);
            pp_binOpInfix(fmt,a0);
            return caml_call2(Stdlib_format[123],fmt,_kU_)}
          var a0$0=param[1];
          caml_call2(Stdlib_format[123],fmt,_kV_);
          pp_binOpPrefix(fmt,a0$0);
          return caml_call2(Stdlib_format[123],fmt,_kW_)}});
    caml_update_dummy
     (show_prim2,
      function(poly_type,x)
       {var _cAc_=caml_call1(pp_prim2,poly_type);
        return caml_call3(Stdlib_format[127],_kX_,_cAc_,x)});
    function map_prim2(poly_type,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return 0;
         case 1:return 1;
         case 2:return 2;
         case 3:return 3;
         case 4:return 4;
         case 5:return 5;
         case 6:return 6;
         default:return 7}
      else
       {if(0 === param[0]){var a0=param[1];return [0,a0]}
        var a0$0=param[1];
        return [1,a0$0]}}
    function fold_prim2(poly_type,acc,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return acc;
         case 1:return acc;
         case 2:return acc;
         case 3:return acc;
         case 4:return acc;
         case 5:return acc;
         case 6:return acc;
         default:return acc}
      else
       return 0 === param[0]?acc:acc}
    function equal_prim3(poly_type,lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 1;break;
        case 1:if(1 === rhs)return 1;break;
        case 2:if(2 === rhs)return 1;break;
        case 3:if(3 === rhs)return 1;break;
        case 4:if(4 === rhs)return 1;break;
        default:if(5 <= rhs)return 1}
      return 0}
    function compare_prim3(poly_type,lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 0;break;
        case 1:if(1 === rhs)return 0;break;
        case 2:if(2 === rhs)return 0;break;
        case 3:if(3 === rhs)return 0;break;
        case 4:if(4 === rhs)return 0;break;
        default:if(5 <= rhs)return 0}
      function to_int(param)
       {switch(param)
         {case 0:return 0;
          case 1:return 1;
          case 2:return 2;
          case 3:return 3;
          case 4:return 4;
          default:return 5}}
      var _cAb_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_cAb_)}
    function pp_prim3(poly_type,fmt,param)
     {switch(param)
       {case 0:return caml_call2(Stdlib_format[13],fmt,cst_ESplit_tokens);
        case 1:return caml_call2(Stdlib_format[13],fmt,cst_ERange);
        case 2:return caml_call2(Stdlib_format[13],fmt,cst_EUpdate_map);
        case 3:return caml_call2(Stdlib_format[13],fmt,cst_EGet_and_update);
        case 4:return caml_call2(Stdlib_format[13],fmt,cst_EIf);
        default:return caml_call2(Stdlib_format[13],fmt,cst_ETest_ticket)}}
    function show_prim3(poly_type,x)
     {function _cz__(_cz$_,_cAa_){return pp_prim3(poly_type,_cz$_,_cAa_)}
      return caml_call3(Stdlib_format[127],_kY_,_cz__,x)}
    function map_prim3(poly_type,param)
     {switch(param)
       {case 0:return 0;
        case 1:return 1;
        case 2:return 2;
        case 3:return 3;
        case 4:return 4;
        default:return 5}}
    function fold_prim3(poly_type,acc,param)
     {switch(param)
       {case 0:return acc;
        case 1:return acc;
        case 2:return acc;
        case 3:return acc;
        case 4:return acc;
        default:return acc}}
    var
     equal_expr_f=
      function _cz9_(_cz3_,_cz4_,_cz5_,_cz6_,_cz7_,_cz8_)
       {return _cz9_.fun(_cz3_,_cz4_,_cz5_,_cz6_,_cz7_,_cz8_)};
    caml_update_dummy
     (equal_expr_f,
      function(poly_expr,poly_command,poly_type,poly_switch,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var
              rhs0=match[1],
              lhs0=lhs[1],
              _czh_=function(x){return caml_call1(Michelson_base_Type[22],x)};
             return caml_call1
                     (caml_call1
                       (caml_call1(Michelson_base_Primitive[1],_czh_),lhs0),
                      rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var
              rhs1=match[2],
              rhs0$0=match[1],
              lhs1=lhs[2],
              lhs0$0=lhs[1],
              _czi_=function(x){return caml_call1(Michelson_base_Type[22],x)},
              _czj_=
               caml_call1
                (caml_call1
                  (caml_call1(Michelson_base_Primitive[7],_czi_),lhs0$0),
                 rhs0$0);
             return _czj_?caml_call2(poly_expr,lhs1,rhs1):_czj_}
           break;
          case 2:
           if(2 === match[0])
            {var
              rhs1$0=match[2],
              rhs0$1=match[1],
              lhs1$0=lhs[2],
              lhs0$1=lhs[1],
              _czk_=
               caml_call1
                (caml_call1(Michelson_base_Primitive[12],lhs0$1),rhs0$1);
             return _czk_?caml_call2(poly_expr,lhs1$0,rhs1$0):_czk_}
           break;
          case 3:
           if(3 === match[0])
            {var
              rhs2=match[3],
              rhs1$1=match[2],
              rhs0$2=match[1],
              lhs2=lhs[3],
              lhs1$1=lhs[2],
              lhs0$2=lhs[1],
              _czl_=
               caml_call1
                (caml_call1(Michelson_base_Primitive[16],lhs0$2),rhs0$2),
              _czm_=_czl_?caml_call2(poly_expr,lhs1$1,rhs1$1):_czl_;
             return _czm_?caml_call2(poly_expr,lhs2,rhs2):_czm_}
           break;
          case 4:
           if(4 === match[0])
            {var
              rhs3=match[4],
              rhs2$0=match[3],
              rhs1$2=match[2],
              rhs0$3=match[1],
              lhs3=lhs[4],
              lhs2$0=lhs[3],
              lhs1$2=lhs[2],
              lhs0$3=lhs[1],
              _czn_=
               caml_call1
                (caml_call1(Michelson_base_Primitive[20],lhs0$3),rhs0$3),
              _czo_=_czn_?caml_call2(poly_expr,lhs1$2,rhs1$2):_czn_,
              _czp_=_czo_?caml_call2(poly_expr,lhs2$0,rhs2$0):_czo_;
             return _czp_?caml_call2(poly_expr,lhs3,rhs3):_czp_}
           break;
          case 5:
           if(5 === match[0])
            {var rhs0$4=match[1],lhs0$4=lhs[1];
             return caml_call1
                     (caml_call1(caml_call1(equal_prim0,poly_type),lhs0$4),
                      rhs0$4)}
           break;
          case 6:
           if(6 === match[0])
            {var
              rhs1$3=match[2],
              rhs0$5=match[1],
              lhs1$3=lhs[2],
              lhs0$5=lhs[1],
              _cz2_=equal_prim1(poly_type,lhs0$5,rhs0$5);
             return _cz2_?caml_call2(poly_expr,lhs1$3,rhs1$3):_cz2_}
           break;
          case 7:
           if(7 === match[0])
            {var
              rhs2$1=match[3],
              rhs1$4=match[2],
              rhs0$6=match[1],
              lhs2$1=lhs[3],
              lhs1$4=lhs[2],
              lhs0$6=lhs[1],
              _czq_=
               caml_call1
                (caml_call1(caml_call1(equal_prim2,poly_type),lhs0$6),rhs0$6),
              _czr_=_czq_?caml_call2(poly_expr,lhs1$4,rhs1$4):_czq_;
             return _czr_?caml_call2(poly_expr,lhs2$1,rhs2$1):_czr_}
           break;
          case 8:
           if(8 === match[0])
            {var
              rhs3$0=match[4],
              rhs2$2=match[3],
              rhs1$5=match[2],
              rhs0$7=match[1],
              lhs3$0=lhs[4],
              lhs2$2=lhs[3],
              lhs1$5=lhs[2],
              lhs0$7=lhs[1],
              _cz1_=equal_prim3(poly_type,lhs0$7,rhs0$7),
              _czs_=_cz1_?caml_call2(poly_expr,lhs1$5,rhs1$5):_cz1_,
              _czt_=_czs_?caml_call2(poly_expr,lhs2$2,rhs2$2):_czs_;
             return _czt_?caml_call2(poly_expr,lhs3$0,rhs3$0):_czt_}
           break;
          case 9:
           if(9 === match[0])
            {var
              rhs2$3=match[3],
              rhs1$6=match[2],
              rhs0$8=match[1],
              lhs2$3=lhs[3],
              lhs1$6=lhs[2],
              lhs0$8=lhs[1],
              _czu_=caml_string_equal(lhs0$8,rhs0$8),
              _czv_=_czu_?caml_call2(poly_expr,lhs1$6,rhs1$6):_czu_;
             if(_czv_)
              {if(lhs2$3)
                {if(rhs2$3)
                  {var b=rhs2$3[1],a=lhs2$3[1];
                   return caml_call2(poly_expr,a,b)}}
               else
                if(! rhs2$3)return 1;
               return 0}
             return _czv_}
           break;
          case 10:
           if(10 === match[0])
            {var
              rhsmissing_message=match[4],
              rhsdefault_value=match[3],
              rhskey=match[2],
              rhsitems=match[1],
              lhsmissing_message=lhs[4],
              lhsdefault_value=lhs[3],
              lhskey=lhs[2],
              lhsitems=lhs[1],
              _czw_=caml_call2(poly_expr,lhsitems,rhsitems),
              _czx_=_czw_?caml_call2(poly_expr,lhskey,rhskey):_czw_;
             if(_czx_)
              {var switch$0=0;
               if(lhsdefault_value)
                if(rhsdefault_value)
                 var
                  b$0=rhsdefault_value[1],
                  a$0=lhsdefault_value[1],
                  _czy_=caml_call2(poly_expr,a$0,b$0);
                else
                 switch$0 = 1;
               else
                if(rhsdefault_value)switch$0 = 1;else var _czy_=1;
               if(switch$0)var _czy_=0;
               var _czz_=_czy_}
             else
              var _czz_=_czx_;
             if(_czz_)
              {if(lhsmissing_message)
                {if(rhsmissing_message)
                  {var b$1=rhsmissing_message[1],a$1=lhsmissing_message[1];
                   return caml_call2(poly_expr,a$1,b$1)}}
               else
                if(! rhsmissing_message)return 1;
               return 0}
             return _czz_}
           break;
          case 11:
           if(11 === match[0])
            {var rhs0$9=match[1],lhs0$9=lhs[1],x=lhs0$9,y=rhs0$9;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b$2=y[1],
                    x$0=x[2],
                    a$2=x[1],
                    _czA_=caml_call2(poly_expr,a$2,b$2);
                   if(_czA_){var x=x$0,y=y$0;continue}
                   return _czA_}}
               else
                if(! y)return 1;
               return 0}}
           break;
          case 12:
           if(12 === match[0])
            {var rhs0$10=match[1],lhs0$10=lhs[1],x$1=lhs0$10,y$1=rhs0$10;
             for(;;)
              {if(x$1)
                {if(y$1)
                  {var
                    y$2=y$1[2],
                    b$3=y$1[1],
                    x$2=x$1[2],
                    a$3=x$1[1],
                    rhs1$7=b$3[2],
                    rhs0$11=b$3[1],
                    lhs1$7=a$3[2],
                    lhs0$11=a$3[1],
                    _czB_=caml_string_equal(lhs0$11,rhs0$11),
                    _czC_=_czB_?caml_call2(poly_expr,lhs1$7,rhs1$7):_czB_;
                   if(_czC_){var x$1=x$2,y$1=y$2;continue}
                   return _czC_}}
               else
                if(! y$1)return 1;
               return 0}}
           break;
          case 13:
           if(13 === match[0])
            {var rhs0$12=match[1],lhs0$12=lhs[1],x$3=lhs0$12,y$3=rhs0$12;
             for(;;)
              {if(x$3)
                {if(y$3)
                  {var
                    y$4=y$3[2],
                    b$4=y$3[1],
                    x$4=x$3[2],
                    a$4=x$3[1],
                    _czD_=caml_call2(poly_expr,a$4,b$4);
                   if(_czD_){var x$3=x$4,y$3=y$4;continue}
                   return _czD_}}
               else
                if(! y$3)return 1;
               return 0}}
           break;
          case 14:
           if(14 === match[0])
            {var
              rhs1$8=match[2],
              rhs0$13=match[1],
              lhs1$8=lhs[2],
              lhs0$13=lhs[1],
              _czE_=lhs0$13 === rhs0$13?1:0;
             if(_czE_)
              {var x$5=lhs1$8,y$5=rhs1$8;
               for(;;)
                {if(x$5)
                  {if(y$5)
                    {var
                      y$6=y$5[2],
                      b$5=y$5[1],
                      x$6=x$5[2],
                      a$5=x$5[1],
                      rhs1$9=b$5[2],
                      rhs0$14=b$5[1],
                      lhs1$9=a$5[2],
                      lhs0$14=a$5[1],
                      _czF_=caml_call2(poly_expr,lhs0$14,rhs0$14),
                      _czG_=_czF_?caml_call2(poly_expr,lhs1$9,rhs1$9):_czF_;
                     if(_czG_){var x$5=x$6,y$5=y$6;continue}
                     return _czG_}}
                 else
                  if(! y$5)return 1;
                 return 0}}
             return _czE_}
           break;
          case 15:
           if(15 === match[0])
            {var rhs0$15=match[1],lhs0$15=lhs[1],x$7=lhs0$15,y$7=rhs0$15;
             for(;;)
              {if(x$7)
                {if(y$7)
                  {var
                    y$8=y$7[2],
                    b$6=y$7[1],
                    x$8=x$7[2],
                    a$6=x$7[1],
                    _czH_=caml_call2(poly_expr,a$6,b$6);
                   if(_czH_){var x$7=x$8,y$7=y$8;continue}
                   return _czH_}}
               else
                if(! y$7)return 1;
               return 0}}
           break;
          case 16:
           if(16 === match[0])
            {var
              rhstransaction=match[2],
              rhsstate=match[1],
              lhstransaction=lhs[2],
              lhsstate=lhs[1],
              _czI_=caml_call2(poly_expr,lhsstate,rhsstate);
             return _czI_
                     ?caml_call2(poly_expr,lhstransaction,rhstransaction)
                     :_czI_}
           break;
          case 17:
           if(17 === match[0])
            {var
              rhs1$10=match[2],
              rhs0$16=match[1],
              lhs1$10=lhs[2],
              lhs0$16=lhs[1],
              _czJ_=
               caml_call1
                (caml_call1
                  (caml_call1(equal_inline_michelson,poly_type),lhs0$16),
                 rhs0$16);
             if(_czJ_)
              {var x$9=lhs1$10,y$9=rhs1$10;
               for(;;)
                {if(x$9)
                  {if(y$9)
                    {var
                      y$10=y$9[2],
                      b$7=y$9[1],
                      x$10=x$9[2],
                      a$7=x$9[1],
                      _czK_=caml_call2(poly_expr,a$7,b$7);
                     if(_czK_){var x$9=x$10,y$9=y$10;continue}
                     return _czK_}}
                 else
                  if(! y$9)return 1;
                 return 0}}
             return _czJ_}
           break;
          case 18:
           if(18 === match[0])
            {var
              rhsl=match[2],
              rhsf=match[1],
              lhsl=lhs[2],
              lhsf=lhs[1],
              _czL_=caml_call2(poly_expr,lhsf,rhsf);
             return _czL_?caml_call2(poly_expr,lhsl,rhsl):_czL_}
           break;
          case 19:
           if(19 === match[0])
            {var rhs0$17=match[1],lhs0$17=lhs[1];
             return lhs0$17[1] === rhs0$17[1]?1:0}
           break;
          case 20:
           if(20 === match[0])
            {var
              rhsname=match[2],
              rhsid=match[1],
              lhsname=lhs[2],
              lhsid=lhs[1],
              _czM_=lhsid === rhsid?1:0;
             return _czM_?caml_string_equal(lhsname,rhsname):_czM_}
           break;
          case 21:
           if(21 === match[0])
            {var
              rhsstorage=match[4],
              rhsbalance=match[3],
              rhsbaker=match[2],
              rhscontract_template=match[1],
              lhsstorage=lhs[4],
              lhsbalance=lhs[3],
              lhsbaker=lhs[2],
              lhscontract_template=lhs[1],
              _czN_=
               caml_call1
                (caml_call1
                  (caml_call4
                    (equal_contract_f,
                     poly_expr,
                     poly_command,
                     poly_type,
                     poly_switch),
                   lhscontract_template),
                 rhscontract_template),
              _czO_=_czN_?caml_call2(poly_expr,lhsbaker,rhsbaker):_czN_,
              _czP_=_czO_?caml_call2(poly_expr,lhsbalance,rhsbalance):_czO_;
             return _czP_?caml_call2(poly_expr,lhsstorage,rhsstorage):_czP_}
           break;
          case 22:
           if(22 === match[0])
            {var
              rhsaddress=match[3],
              rhsarg_type=match[2],
              rhsentry_point=match[1],
              lhsaddress=lhs[3],
              lhsarg_type=lhs[2],
              lhsentry_point=lhs[1],
              switch$1=0;
             if(lhsentry_point)
              if(rhsentry_point)
               var
                b$8=rhsentry_point[1],
                a$8=lhsentry_point[1],
                _czQ_=caml_string_equal(a$8,b$8);
              else
               switch$1 = 1;
             else
              if(rhsentry_point)switch$1 = 1;else var _czQ_=1;
             if(switch$1)var _czQ_=0;
             var
              _czR_=
               _czQ_?caml_call2(poly_type,lhsarg_type,rhsarg_type):_czQ_;
             return _czR_?caml_call2(poly_expr,lhsaddress,rhsaddress):_czR_}
           break;
          case 23:
           if(23 === match[0])
            {var
              rhsbuffer=match[3],
              rhslength=match[2],
              rhsoffset=match[1],
              lhsbuffer=lhs[3],
              lhslength=lhs[2],
              lhsoffset=lhs[1],
              _czS_=caml_call2(poly_expr,lhsoffset,rhsoffset),
              _czT_=_czS_?caml_call2(poly_expr,lhslength,rhslength):_czS_;
             return _czT_?caml_call2(poly_expr,lhsbuffer,rhsbuffer):_czT_}
           break;
          case 24:
           if(24 === match[0])
            {var
              rhsmessage_format=match[3],
              rhsmessage=match[2],
              rhssecret_key=match[1],
              lhsmessage_format=lhs[3],
              lhsmessage=lhs[2],
              lhssecret_key=lhs[1],
              _czU_=caml_call2(poly_expr,lhssecret_key,rhssecret_key),
              _czV_=_czU_?caml_call2(poly_expr,lhsmessage,rhsmessage):_czU_;
             if(_czV_)
              {if(4099528 <= lhsmessage_format)
                {if(4099528 === rhsmessage_format)return 1}
               else
                if(3603131 === rhsmessage_format)return 1;
               return 0}
             return _czV_}
           break;
          case 25:
           if(25 === match[0])
            {var
              rhsdestination=match[3],
              rhsamount=match[2],
              rhsarg=match[1],
              lhsdestination=lhs[3],
              lhsamount=lhs[2],
              lhsarg=lhs[1],
              _czW_=caml_call2(poly_expr,lhsarg,rhsarg),
              _czX_=_czW_?caml_call2(poly_expr,lhsamount,rhsamount):_czW_;
             return _czX_
                     ?caml_call2(poly_expr,lhsdestination,rhsdestination)
                     :_czX_}
           break;
          case 26:
           if(26 === match[0])
            {var
              rhs1$11=match[2],
              rhs0$18=match[1],
              lhs1$11=lhs[2],
              lhs0$18=lhs[1],
              _czY_=caml_call2(poly_expr,lhs0$18,rhs0$18);
             if(_czY_)
              {var x$11=lhs1$11,y$11=rhs1$11;
               for(;;)
                {if(x$11)
                  {if(y$11)
                    {var
                      y$12=y$11[2],
                      b$9=y$11[1],
                      x$12=x$11[2],
                      a$9=x$11[1],
                      rhs1$12=b$9[2],
                      rhs0$19=b$9[1],
                      lhs1$12=a$9[2],
                      lhs0$19=a$9[1],
                      _czZ_=caml_string_equal(lhs0$19,rhs0$19),
                      _cz0_=_czZ_?caml_call2(poly_expr,lhs1$12,rhs1$12):_czZ_;
                     if(_cz0_){var x$11=x$12,y$11=y$12;continue}
                     return _cz0_}}
                 else
                  if(! y$11)return 1;
                 return 0}}
             return _czY_}
           break;
          default:
           if(27 === match[0])
            {var rhs0$20=match[1],lhs0$20=lhs[1];
             return caml_string_equal(lhs0$20,rhs0$20)}}
        return 0});
    var
     compare_expr_f=
      function _czg_(_cza_,_czb_,_czc_,_czd_,_cze_,_czf_)
       {return _czg_.fun(_cza_,_czb_,_czc_,_czd_,_cze_,_czf_)};
    caml_update_dummy
     (compare_expr_f,
      function(poly_expr,poly_command,poly_type,poly_switch,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var
              rhs0=match[1],
              lhs0=lhs[1],
              _cy4_=function(x){return caml_call1(Michelson_base_Type[23],x)};
             return caml_call1
                     (caml_call1
                       (caml_call1(Michelson_base_Primitive[2],_cy4_),lhs0),
                      rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var
              rhs1=match[2],
              rhs0$0=match[1],
              lhs1=lhs[2],
              lhs0$0=lhs[1],
              _cy6_=function(x){return caml_call1(Michelson_base_Type[23],x)},
              x=
               caml_call1
                (caml_call1
                  (caml_call1(Michelson_base_Primitive[8],_cy6_),lhs0$0),
                 rhs0$0);
             return 0 === x?caml_call2(poly_expr,lhs1,rhs1):x}
           break;
          case 2:
           if(2 === match[0])
            {var
              rhs1$0=match[2],
              rhs0$1=match[1],
              lhs1$0=lhs[2],
              lhs0$1=lhs[1],
              x$0=
               caml_call1
                (caml_call1(Michelson_base_Primitive[13],lhs0$1),rhs0$1);
             return 0 === x$0?caml_call2(poly_expr,lhs1$0,rhs1$0):x$0}
           break;
          case 3:
           if(3 === match[0])
            {var
              rhs2=match[3],
              rhs1$1=match[2],
              rhs0$2=match[1],
              lhs2=lhs[3],
              lhs1$1=lhs[2],
              lhs0$2=lhs[1],
              x$1=
               caml_call1
                (caml_call1(Michelson_base_Primitive[17],lhs0$2),rhs0$2);
             if(0 === x$1)
              {var x$2=caml_call2(poly_expr,lhs1$1,rhs1$1);
               return 0 === x$2?caml_call2(poly_expr,lhs2,rhs2):x$2}
             return x$1}
           break;
          case 4:
           if(4 === match[0])
            {var
              rhs3=match[4],
              rhs2$0=match[3],
              rhs1$2=match[2],
              rhs0$3=match[1],
              lhs3=lhs[4],
              lhs2$0=lhs[3],
              lhs1$2=lhs[2],
              lhs0$3=lhs[1],
              x$3=
               caml_call1
                (caml_call1(Michelson_base_Primitive[21],lhs0$3),rhs0$3);
             if(0 === x$3)
              {var x$4=caml_call2(poly_expr,lhs1$2,rhs1$2);
               if(0 === x$4)
                {var x$5=caml_call2(poly_expr,lhs2$0,rhs2$0);
                 return 0 === x$5?caml_call2(poly_expr,lhs3,rhs3):x$5}
               return x$4}
             return x$3}
           break;
          case 5:
           if(5 === match[0])
            {var rhs0$4=match[1],lhs0$4=lhs[1];
             return caml_call1
                     (caml_call1(caml_call1(compare_prim0,poly_type),lhs0$4),
                      rhs0$4)}
           break;
          case 6:
           if(6 === match[0])
            {var
              rhs1$3=match[2],
              rhs0$5=match[1],
              lhs1$3=lhs[2],
              lhs0$5=lhs[1],
              x$6=
               caml_call1
                (caml_call1(caml_call1(compare_prim1,poly_type),lhs0$5),
                 rhs0$5);
             return 0 === x$6?caml_call2(poly_expr,lhs1$3,rhs1$3):x$6}
           break;
          case 7:
           if(7 === match[0])
            {var
              rhs2$1=match[3],
              rhs1$4=match[2],
              rhs0$6=match[1],
              lhs2$1=lhs[3],
              lhs1$4=lhs[2],
              lhs0$6=lhs[1],
              x$7=
               caml_call1
                (caml_call1(caml_call1(compare_prim2,poly_type),lhs0$6),
                 rhs0$6);
             if(0 === x$7)
              {var x$8=caml_call2(poly_expr,lhs1$4,rhs1$4);
               return 0 === x$8?caml_call2(poly_expr,lhs2$1,rhs2$1):x$8}
             return x$7}
           break;
          case 8:
           if(8 === match[0])
            {var
              rhs3$0=match[4],
              rhs2$2=match[3],
              rhs1$5=match[2],
              rhs0$7=match[1],
              lhs3$0=lhs[4],
              lhs2$2=lhs[3],
              lhs1$5=lhs[2],
              lhs0$7=lhs[1],
              x$57=compare_prim3(poly_type,lhs0$7,rhs0$7);
             if(0 === x$57)
              {var x$9=caml_call2(poly_expr,lhs1$5,rhs1$5);
               if(0 === x$9)
                {var x$10=caml_call2(poly_expr,lhs2$2,rhs2$2);
                 return 0 === x$10?caml_call2(poly_expr,lhs3$0,rhs3$0):x$10}
               return x$9}
             return x$57}
           break;
          case 9:
           if(9 === match[0])
            {var
              rhs2$3=match[3],
              rhs1$6=match[2],
              rhs0$8=match[1],
              lhs2$3=lhs[3],
              lhs1$6=lhs[2],
              lhs0$8=lhs[1],
              x$11=caml_string_compare(lhs0$8,rhs0$8);
             if(0 === x$11)
              {var x$12=caml_call2(poly_expr,lhs1$6,rhs1$6);
               if(0 === x$12)
                {if(lhs2$3)
                  {var _cy7_=lhs2$3[1];
                   if(rhs2$3)
                    {var b=rhs2$3[1];return caml_call2(poly_expr,_cy7_,b)}
                   return 1}
                 return rhs2$3?-1:0}
               return x$12}
             return x$11}
           break;
          case 10:
           if(10 === match[0])
            {var
              rhsmissing_message=match[4],
              rhsdefault_value=match[3],
              rhskey=match[2],
              rhsitems=match[1],
              lhsmissing_message=lhs[4],
              lhsdefault_value=lhs[3],
              lhskey=lhs[2],
              lhsitems=lhs[1],
              x$13=caml_call2(poly_expr,lhsitems,rhsitems);
             if(0 === x$13)
              {var x$14=caml_call2(poly_expr,lhskey,rhskey);
               if(0 === x$14)
                {if(lhsdefault_value)
                  {var _cy8_=lhsdefault_value[1];
                   if(rhsdefault_value)
                    var
                     b$0=rhsdefault_value[1],
                     x$15=caml_call2(poly_expr,_cy8_,b$0);
                   else
                    var x$15=1}
                 else
                  var x$15=rhsdefault_value?-1:0;
                 if(0 === x$15)
                  {if(lhsmissing_message)
                    {var _cy9_=lhsmissing_message[1];
                     if(rhsmissing_message)
                      {var b$1=rhsmissing_message[1];
                       return caml_call2(poly_expr,_cy9_,b$1)}
                     return 1}
                   return rhsmissing_message?-1:0}
                 return x$15}
               return x$14}
             return x$13}
           break;
          case 11:
           if(11 === match[0])
            {var rhs0$9=match[1],lhs0$9=lhs[1],x$16=lhs0$9,y=rhs0$9;
             for(;;)
              {if(x$16)
                {if(y)
                  {var
                    y$0=y[2],
                    b$2=y[1],
                    x$17=x$16[2],
                    a=x$16[1],
                    x$18=caml_call2(poly_expr,a,b$2);
                   if(0 === x$18){var x$16=x$17,y=y$0;continue}
                   return x$18}
                 return 1}
               return y?-1:0}}
           break;
          case 12:
           if(12 === match[0])
            {var rhs0$10=match[1],lhs0$10=lhs[1],x$19=lhs0$10,y$1=rhs0$10;
             for(;;)
              {if(x$19)
                {if(y$1)
                  {var
                    y$2=y$1[2],
                    b$3=y$1[1],
                    x$20=x$19[2],
                    a$0=x$19[1],
                    rhs1$7=b$3[2],
                    rhs0$11=b$3[1],
                    lhs1$7=a$0[2],
                    lhs0$11=a$0[1],
                    x$21=caml_string_compare(lhs0$11,rhs0$11),
                    x$22=0 === x$21?caml_call2(poly_expr,lhs1$7,rhs1$7):x$21;
                   if(0 === x$22){var x$19=x$20,y$1=y$2;continue}
                   return x$22}
                 return 1}
               return y$1?-1:0}}
           break;
          case 13:
           if(13 === match[0])
            {var rhs0$12=match[1],lhs0$12=lhs[1],x$23=lhs0$12,y$3=rhs0$12;
             for(;;)
              {if(x$23)
                {if(y$3)
                  {var
                    y$4=y$3[2],
                    b$4=y$3[1],
                    x$24=x$23[2],
                    a$1=x$23[1],
                    x$25=caml_call2(poly_expr,a$1,b$4);
                   if(0 === x$25){var x$23=x$24,y$3=y$4;continue}
                   return x$25}
                 return 1}
               return y$3?-1:0}}
           break;
          case 14:
           if(14 === match[0])
            {var
              rhs1$8=match[2],
              rhs0$13=match[1],
              lhs1$8=lhs[2],
              lhs0$13=lhs[1],
              x$26=caml_int_compare(lhs0$13,rhs0$13);
             if(0 === x$26)
              {var x$27=lhs1$8,y$5=rhs1$8;
               for(;;)
                {if(x$27)
                  {if(y$5)
                    {var
                      y$6=y$5[2],
                      b$5=y$5[1],
                      x$28=x$27[2],
                      a$2=x$27[1],
                      rhs1$9=b$5[2],
                      rhs0$14=b$5[1],
                      lhs1$9=a$2[2],
                      lhs0$14=a$2[1],
                      x$29=caml_call2(poly_expr,lhs0$14,rhs0$14),
                      x$30=0 === x$29?caml_call2(poly_expr,lhs1$9,rhs1$9):x$29;
                     if(0 === x$30){var x$27=x$28,y$5=y$6;continue}
                     return x$30}
                   return 1}
                 return y$5?-1:0}}
             return x$26}
           break;
          case 15:
           if(15 === match[0])
            {var rhs0$15=match[1],lhs0$15=lhs[1],x$31=lhs0$15,y$7=rhs0$15;
             for(;;)
              {if(x$31)
                {if(y$7)
                  {var
                    y$8=y$7[2],
                    b$6=y$7[1],
                    x$32=x$31[2],
                    a$3=x$31[1],
                    x$33=caml_call2(poly_expr,a$3,b$6);
                   if(0 === x$33){var x$31=x$32,y$7=y$8;continue}
                   return x$33}
                 return 1}
               return y$7?-1:0}}
           break;
          case 16:
           if(16 === match[0])
            {var
              rhstransaction=match[2],
              rhsstate=match[1],
              lhstransaction=lhs[2],
              lhsstate=lhs[1],
              x$34=caml_call2(poly_expr,lhsstate,rhsstate);
             return 0 === x$34
                     ?caml_call2(poly_expr,lhstransaction,rhstransaction)
                     :x$34}
           break;
          case 17:
           if(17 === match[0])
            {var
              rhs1$10=match[2],
              rhs0$16=match[1],
              lhs1$10=lhs[2],
              lhs0$16=lhs[1],
              x$35=
               caml_call1
                (caml_call1
                  (caml_call1(compare_inline_michelson,poly_type),lhs0$16),
                 rhs0$16);
             if(0 === x$35)
              {var x$36=lhs1$10,y$9=rhs1$10;
               for(;;)
                {if(x$36)
                  {if(y$9)
                    {var
                      y$10=y$9[2],
                      b$7=y$9[1],
                      x$37=x$36[2],
                      a$4=x$36[1],
                      x$38=caml_call2(poly_expr,a$4,b$7);
                     if(0 === x$38){var x$36=x$37,y$9=y$10;continue}
                     return x$38}
                   return 1}
                 return y$9?-1:0}}
             return x$35}
           break;
          case 18:
           if(18 === match[0])
            {var
              rhsl=match[2],
              rhsf=match[1],
              lhsl=lhs[2],
              lhsf=lhs[1],
              x$39=caml_call2(poly_expr,lhsf,rhsf);
             return 0 === x$39?caml_call2(poly_expr,lhsl,rhsl):x$39}
           break;
          case 19:
           if(19 === match[0])
            {var rhs0$17=match[1],lhs0$17=lhs[1];
             return caml_int_compare(lhs0$17[1],rhs0$17[1])}
           break;
          case 20:
           if(20 === match[0])
            {var
              rhsname=match[2],
              rhsid=match[1],
              lhsname=lhs[2],
              lhsid=lhs[1],
              x$40=caml_int_compare(lhsid,rhsid);
             return 0 === x$40?caml_string_compare(lhsname,rhsname):x$40}
           break;
          case 21:
           if(21 === match[0])
            {var
              rhsstorage=match[4],
              rhsbalance=match[3],
              rhsbaker=match[2],
              rhscontract_template=match[1],
              lhsstorage=lhs[4],
              lhsbalance=lhs[3],
              lhsbaker=lhs[2],
              lhscontract_template=lhs[1],
              x$41=
               caml_call1
                (caml_call1
                  (caml_call4
                    (compare_contract_f,
                     poly_expr,
                     poly_command,
                     poly_type,
                     poly_switch),
                   lhscontract_template),
                 rhscontract_template);
             if(0 === x$41)
              {var x$42=caml_call2(poly_expr,lhsbaker,rhsbaker);
               if(0 === x$42)
                {var x$43=caml_call2(poly_expr,lhsbalance,rhsbalance);
                 return 0 === x$43
                         ?caml_call2(poly_expr,lhsstorage,rhsstorage)
                         :x$43}
               return x$42}
             return x$41}
           break;
          case 22:
           if(22 === match[0])
            {var
              rhsaddress=match[3],
              rhsarg_type=match[2],
              rhsentry_point=match[1],
              lhsaddress=lhs[3],
              lhsarg_type=lhs[2],
              lhsentry_point=lhs[1];
             if(lhsentry_point)
              {var _cy__=lhsentry_point[1];
               if(rhsentry_point)
                var b$8=rhsentry_point[1],x$44=caml_string_compare(_cy__,b$8);
               else
                var x$44=1}
             else
              var x$44=rhsentry_point?-1:0;
             if(0 === x$44)
              {var x$45=caml_call2(poly_type,lhsarg_type,rhsarg_type);
               return 0 === x$45
                       ?caml_call2(poly_expr,lhsaddress,rhsaddress)
                       :x$45}
             return x$44}
           break;
          case 23:
           if(23 === match[0])
            {var
              rhsbuffer=match[3],
              rhslength=match[2],
              rhsoffset=match[1],
              lhsbuffer=lhs[3],
              lhslength=lhs[2],
              lhsoffset=lhs[1],
              x$46=caml_call2(poly_expr,lhsoffset,rhsoffset);
             if(0 === x$46)
              {var x$47=caml_call2(poly_expr,lhslength,rhslength);
               return 0 === x$47
                       ?caml_call2(poly_expr,lhsbuffer,rhsbuffer)
                       :x$47}
             return x$46}
           break;
          case 24:
           if(24 === match[0])
            {var
              rhsmessage_format=match[3],
              rhsmessage=match[2],
              rhssecret_key=match[1],
              lhsmessage_format=lhs[3],
              lhsmessage=lhs[2],
              lhssecret_key=lhs[1],
              x$48=caml_call2(poly_expr,lhssecret_key,rhssecret_key);
             if(0 === x$48)
              {var x$49=caml_call2(poly_expr,lhsmessage,rhsmessage);
               if(0 === x$49)
                {if(4099528 <= lhsmessage_format)
                  {if(4099528 === rhsmessage_format)return 0}
                 else
                  if(3603131 === rhsmessage_format)return 0;
                 var
                  to_int$0=function(param){return 4099528 <= param?0:1},
                  _cy$_=to_int$0(rhsmessage_format);
                 return caml_int_compare(to_int$0(lhsmessage_format),_cy$_)}
               return x$49}
             return x$48}
           break;
          case 25:
           if(25 === match[0])
            {var
              rhsdestination=match[3],
              rhsamount=match[2],
              rhsarg=match[1],
              lhsdestination=lhs[3],
              lhsamount=lhs[2],
              lhsarg=lhs[1],
              x$50=caml_call2(poly_expr,lhsarg,rhsarg);
             if(0 === x$50)
              {var x$51=caml_call2(poly_expr,lhsamount,rhsamount);
               return 0 === x$51
                       ?caml_call2(poly_expr,lhsdestination,rhsdestination)
                       :x$51}
             return x$50}
           break;
          case 26:
           if(26 === match[0])
            {var
              rhs1$11=match[2],
              rhs0$18=match[1],
              lhs1$11=lhs[2],
              lhs0$18=lhs[1],
              x$52=caml_call2(poly_expr,lhs0$18,rhs0$18);
             if(0 === x$52)
              {var x$53=lhs1$11,y$11=rhs1$11;
               for(;;)
                {if(x$53)
                  {if(y$11)
                    {var
                      y$12=y$11[2],
                      b$9=y$11[1],
                      x$54=x$53[2],
                      a$5=x$53[1],
                      rhs1$12=b$9[2],
                      rhs0$19=b$9[1],
                      lhs1$12=a$5[2],
                      lhs0$19=a$5[1],
                      x$55=caml_string_compare(lhs0$19,rhs0$19),
                      x$56=0 === x$55?caml_call2(poly_expr,lhs1$12,rhs1$12):x$55;
                     if(0 === x$56){var x$53=x$54,y$11=y$12;continue}
                     return x$56}
                   return 1}
                 return y$11?-1:0}}
             return x$52}
           break;
          default:
           if(27 === match[0])
            {var rhs0$20=match[1],lhs0$20=lhs[1];
             return caml_string_compare(lhs0$20,rhs0$20)}}
        function to_int(param)
         {switch(param[0])
           {case 0:return 0;
            case 1:return 1;
            case 2:return 2;
            case 3:return 3;
            case 4:return 4;
            case 5:return 5;
            case 6:return 6;
            case 7:return 7;
            case 8:return 8;
            case 9:return 9;
            case 10:return 10;
            case 11:return 11;
            case 12:return 12;
            case 13:return 13;
            case 14:return 14;
            case 15:return 15;
            case 16:return 16;
            case 17:return 17;
            case 18:return 18;
            case 19:return 19;
            case 20:return 20;
            case 21:return 21;
            case 22:return 22;
            case 23:return 23;
            case 24:return 24;
            case 25:return 25;
            case 26:return 26;
            default:return 27}}
        var _cy5_=to_int(match);
        return caml_int_compare(to_int(lhs),_cy5_)});
    var
     pp_expr_f=
      function _cy3_(_cyX_,_cyY_,_cyZ_,_cy0_,_cy1_,_cy2_)
       {return _cy3_.fun(_cyX_,_cyY_,_cyZ_,_cy0_,_cy1_,_cy2_)},
     show_expr_f=
      function _cyW_(_cyR_,_cyS_,_cyT_,_cyU_,_cyV_)
       {return _cyW_.fun(_cyR_,_cyS_,_cyT_,_cyU_,_cyV_)};
    caml_update_dummy
     (pp_expr_f,
      function(poly_expr,poly_command,poly_type,poly_switch,fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_kZ_);
           var
            _cyw_=
             function(fmt){return caml_call1(Michelson_base_Type[24],fmt)};
           caml_call1(caml_call2(Michelson_base_Primitive[3],_cyw_,fmt),a0);
           return caml_call2(Stdlib_format[123],fmt,_k0_);
          case 1:
           var a1=param[2],a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_k1_);
           var
            _cyx_=
             function(fmt){return caml_call1(Michelson_base_Type[24],fmt)};
           caml_call1(caml_call2(Michelson_base_Primitive[9],_cyx_,fmt),a0$0);
           caml_call2(Stdlib_format[123],fmt,_k2_);
           caml_call1(caml_call1(poly_expr,fmt),a1);
           return caml_call2(Stdlib_format[123],fmt,_k3_);
          case 2:
           var a1$0=param[2],a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_k4_);
           caml_call1(caml_call1(Michelson_base_Primitive[14],fmt),a0$1);
           caml_call2(Stdlib_format[123],fmt,_k5_);
           caml_call1(caml_call1(poly_expr,fmt),a1$0);
           return caml_call2(Stdlib_format[123],fmt,_k6_);
          case 3:
           var a2=param[3],a1$1=param[2],a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_k7_);
           caml_call1(caml_call1(Michelson_base_Primitive[18],fmt),a0$2);
           caml_call2(Stdlib_format[123],fmt,_k8_);
           caml_call1(caml_call1(poly_expr,fmt),a1$1);
           caml_call2(Stdlib_format[123],fmt,_k9_);
           caml_call1(caml_call1(poly_expr,fmt),a2);
           return caml_call2(Stdlib_format[123],fmt,_k__);
          case 4:
           var a3=param[4],a2$0=param[3],a1$2=param[2],a0$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_k$_);
           caml_call1(caml_call1(Michelson_base_Primitive[22],fmt),a0$3);
           caml_call2(Stdlib_format[123],fmt,_la_);
           caml_call1(caml_call1(poly_expr,fmt),a1$2);
           caml_call2(Stdlib_format[123],fmt,_lb_);
           caml_call1(caml_call1(poly_expr,fmt),a2$0);
           caml_call2(Stdlib_format[123],fmt,_lc_);
           caml_call1(caml_call1(poly_expr,fmt),a3);
           return caml_call2(Stdlib_format[123],fmt,_ld_);
          case 5:
           var a0$4=param[1];
           caml_call2(Stdlib_format[123],fmt,_le_);
           caml_call1
            (caml_call2
              (pp_prim0,function(fmt){return caml_call1(poly_type,fmt)},fmt),
             a0$4);
           return caml_call2(Stdlib_format[123],fmt,_lf_);
          case 6:
           var a1$3=param[2],a0$5=param[1];
           caml_call2(Stdlib_format[123],fmt,_lg_);
           pp_prim1(function(fmt){return caml_call1(poly_type,fmt)},fmt,a0$5);
           caml_call2(Stdlib_format[123],fmt,_lh_);
           caml_call1(caml_call1(poly_expr,fmt),a1$3);
           return caml_call2(Stdlib_format[123],fmt,_li_);
          case 7:
           var a2$1=param[3],a1$4=param[2],a0$6=param[1];
           caml_call2(Stdlib_format[123],fmt,_lj_);
           caml_call1
            (caml_call2
              (pp_prim2,function(fmt){return caml_call1(poly_type,fmt)},fmt),
             a0$6);
           caml_call2(Stdlib_format[123],fmt,_lk_);
           caml_call1(caml_call1(poly_expr,fmt),a1$4);
           caml_call2(Stdlib_format[123],fmt,_ll_);
           caml_call1(caml_call1(poly_expr,fmt),a2$1);
           return caml_call2(Stdlib_format[123],fmt,_lm_);
          case 8:
           var a3$0=param[4],a2$2=param[3],a1$5=param[2],a0$7=param[1];
           caml_call2(Stdlib_format[123],fmt,_ln_);
           pp_prim3(function(fmt){return caml_call1(poly_type,fmt)},fmt,a0$7);
           caml_call2(Stdlib_format[123],fmt,_lo_);
           caml_call1(caml_call1(poly_expr,fmt),a1$5);
           caml_call2(Stdlib_format[123],fmt,_lp_);
           caml_call1(caml_call1(poly_expr,fmt),a2$2);
           caml_call2(Stdlib_format[123],fmt,_lq_);
           caml_call1(caml_call1(poly_expr,fmt),a3$0);
           return caml_call2(Stdlib_format[123],fmt,_lr_);
          case 9:
           var a2$3=param[3],a1$6=param[2],a0$8=param[1];
           caml_call2(Stdlib_format[123],fmt,_ls_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_lt_),a0$8);
           caml_call2(Stdlib_format[123],fmt,_lu_);
           caml_call1(caml_call1(poly_expr,fmt),a1$6);
           caml_call2(Stdlib_format[123],fmt,_lv_);
           if(a2$3)
            {var x=a2$3[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$18);
             caml_call1(caml_call1(poly_expr,fmt),x);
             caml_call2(Stdlib_format[13],fmt,cst$20)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$18);
           return caml_call2(Stdlib_format[123],fmt,_lw_);
          case 10:
           var
            amissing_message=param[4],
            adefault_value=param[3],
            akey=param[2],
            aitems=param[1];
           caml_call2(Stdlib_format[123],fmt,_lx_);
           caml_call3(Stdlib_format[123],fmt,_ly_,cst_items);
           caml_call1(caml_call1(poly_expr,fmt),aitems);
           caml_call2(Stdlib_format[123],fmt,_lz_);
           caml_call2(Stdlib_format[123],fmt,_lA_);
           caml_call3(Stdlib_format[123],fmt,_lB_,cst_key$0);
           caml_call1(caml_call1(poly_expr,fmt),akey);
           caml_call2(Stdlib_format[123],fmt,_lC_);
           caml_call2(Stdlib_format[123],fmt,_lD_);
           caml_call3(Stdlib_format[123],fmt,_lE_,cst_default_value);
           if(adefault_value)
            {var x$0=adefault_value[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$19);
             caml_call1(caml_call1(poly_expr,fmt),x$0);
             caml_call2(Stdlib_format[13],fmt,cst$21)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$19);
           caml_call2(Stdlib_format[123],fmt,_lF_);
           caml_call2(Stdlib_format[123],fmt,_lG_);
           caml_call3(Stdlib_format[123],fmt,_lH_,cst_missing_message);
           if(amissing_message)
            {var x$1=amissing_message[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$20);
             caml_call1(caml_call1(poly_expr,fmt),x$1);
             caml_call2(Stdlib_format[13],fmt,cst$22)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$20);
           caml_call2(Stdlib_format[123],fmt,_lI_);
           return caml_call2(Stdlib_format[123],fmt,_lJ_);
          case 11:
           var a0$9=param[1];
           caml_call2(Stdlib_format[123],fmt,_lK_);
           caml_call2(Stdlib_format[123],fmt,_lL_);
           var
            _cyy_=0,
            _cyz_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_lM_);
               caml_call1(caml_call1(poly_expr,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cyz_,_cyy_,a0$9);
           caml_call2(Stdlib_format[123],fmt,_lN_);
           return caml_call2(Stdlib_format[123],fmt,_lO_);
          case 12:
           var a0$10=param[1];
           caml_call2(Stdlib_format[123],fmt,_lP_);
           caml_call2(Stdlib_format[123],fmt,_lQ_);
           var
            _cyA_=0,
            _cyB_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_lR_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_lS_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_lT_),a0);
               caml_call2(Stdlib_format[123],fmt,_lU_);
               caml_call1(caml_call1(poly_expr,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_lV_);
               return 1};
           caml_call3(Stdlib_list[22],_cyB_,_cyA_,a0$10);
           caml_call2(Stdlib_format[123],fmt,_lW_);
           return caml_call2(Stdlib_format[123],fmt,_lX_);
          case 13:
           var a0$11=param[1];
           caml_call2(Stdlib_format[123],fmt,_lY_);
           caml_call2(Stdlib_format[123],fmt,_lZ_);
           var
            _cyC_=0,
            _cyD_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_l0_);
               caml_call1(caml_call1(poly_expr,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cyD_,_cyC_,a0$11);
           caml_call2(Stdlib_format[123],fmt,_l1_);
           return caml_call2(Stdlib_format[123],fmt,_l2_);
          case 14:
           var a1$7=param[2],a0$12=param[1];
           caml_call2(Stdlib_format[123],fmt,_l3_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_l4_),a0$12);
           caml_call2(Stdlib_format[123],fmt,_l5_);
           caml_call2(Stdlib_format[123],fmt,_l6_);
           var
            _cyE_=0,
            _cyF_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_l7_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_l8_);
               caml_call1(caml_call1(poly_expr,fmt),a0);
               caml_call2(Stdlib_format[123],fmt,_l9_);
               caml_call1(caml_call1(poly_expr,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_l__);
               return 1};
           caml_call3(Stdlib_list[22],_cyF_,_cyE_,a1$7);
           caml_call2(Stdlib_format[123],fmt,_l$_);
           return caml_call2(Stdlib_format[123],fmt,_ma_);
          case 15:
           var a0$13=param[1];
           caml_call2(Stdlib_format[123],fmt,_mb_);
           caml_call2(Stdlib_format[123],fmt,_mc_);
           var
            _cyG_=0,
            _cyH_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_md_);
               caml_call1(caml_call1(poly_expr,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cyH_,_cyG_,a0$13);
           caml_call2(Stdlib_format[123],fmt,_me_);
           return caml_call2(Stdlib_format[123],fmt,_mf_);
          case 16:
           var atransaction=param[2],astate=param[1];
           caml_call2(Stdlib_format[123],fmt,_mg_);
           caml_call3(Stdlib_format[123],fmt,_mh_,cst_state);
           caml_call1(caml_call1(poly_expr,fmt),astate);
           caml_call2(Stdlib_format[123],fmt,_mi_);
           caml_call2(Stdlib_format[123],fmt,_mj_);
           caml_call3(Stdlib_format[123],fmt,_mk_,cst_transaction);
           caml_call1(caml_call1(poly_expr,fmt),atransaction);
           caml_call2(Stdlib_format[123],fmt,_ml_);
           return caml_call2(Stdlib_format[123],fmt,_mm_);
          case 17:
           var a1$8=param[2],a0$14=param[1];
           caml_call2(Stdlib_format[123],fmt,_mn_);
           caml_call1
            (caml_call2
              (pp_inline_michelson,
               function(fmt){return caml_call1(poly_type,fmt)},
               fmt),
             a0$14);
           caml_call2(Stdlib_format[123],fmt,_mo_);
           caml_call2(Stdlib_format[123],fmt,_mp_);
           var
            _cyI_=0,
            _cyJ_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_mq_);
               caml_call1(caml_call1(poly_expr,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cyJ_,_cyI_,a1$8);
           caml_call2(Stdlib_format[123],fmt,_mr_);
           return caml_call2(Stdlib_format[123],fmt,_ms_);
          case 18:
           var al=param[2],af=param[1];
           caml_call2(Stdlib_format[123],fmt,_mt_);
           caml_call3(Stdlib_format[123],fmt,_mu_,cst_f);
           caml_call1(caml_call1(poly_expr,fmt),af);
           caml_call2(Stdlib_format[123],fmt,_mv_);
           caml_call2(Stdlib_format[123],fmt,_mw_);
           caml_call3(Stdlib_format[123],fmt,_mx_,cst_l);
           caml_call1(caml_call1(poly_expr,fmt),al);
           caml_call2(Stdlib_format[123],fmt,_my_);
           return caml_call2(Stdlib_format[123],fmt,_mz_);
          case 19:
           var a0$15=param[1];
           caml_call2(Stdlib_format[123],fmt,_mA_);
           var
            _cyK_=function(fmt){return caml_call1(poly_switch,fmt)},
            _cyL_=function(fmt){return caml_call1(poly_type,fmt)};
           caml_call1
            (caml_call4
              (pp_lambda_f,
               function(fmt){return caml_call1(poly_command,fmt)},
               _cyL_,
               _cyK_,
               fmt),
             a0$15);
           return caml_call2(Stdlib_format[123],fmt,_mB_);
          case 20:
           var aname=param[2],aid=param[1];
           caml_call2(Stdlib_format[123],fmt,_mC_);
           caml_call3(Stdlib_format[123],fmt,_mD_,cst_id$0);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_mE_),aid);
           caml_call2(Stdlib_format[123],fmt,_mF_);
           caml_call2(Stdlib_format[123],fmt,_mG_);
           caml_call3(Stdlib_format[123],fmt,_mH_,cst_name$3);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_mI_),aname);
           caml_call2(Stdlib_format[123],fmt,_mJ_);
           return caml_call2(Stdlib_format[123],fmt,_mK_);
          case 21:
           var
            astorage=param[4],
            abalance=param[3],
            abaker=param[2],
            acontract_template=param[1];
           caml_call2(Stdlib_format[123],fmt,_mL_);
           caml_call3(Stdlib_format[123],fmt,_mM_,cst_contract_template);
           var
            _cyM_=function(fmt){return caml_call1(poly_switch,fmt)},
            _cyN_=function(fmt){return caml_call1(poly_type,fmt)},
            _cyO_=function(fmt){return caml_call1(poly_command,fmt)};
           caml_call1
            (caml_call5
              (pp_contract_f,
               function(fmt){return caml_call1(poly_expr,fmt)},
               _cyO_,
               _cyN_,
               _cyM_,
               fmt),
             acontract_template);
           caml_call2(Stdlib_format[123],fmt,_mN_);
           caml_call2(Stdlib_format[123],fmt,_mO_);
           caml_call3(Stdlib_format[123],fmt,_mP_,cst_baker$0);
           caml_call1(caml_call1(poly_expr,fmt),abaker);
           caml_call2(Stdlib_format[123],fmt,_mQ_);
           caml_call2(Stdlib_format[123],fmt,_mR_);
           caml_call3(Stdlib_format[123],fmt,_mS_,cst_balance$0);
           caml_call1(caml_call1(poly_expr,fmt),abalance);
           caml_call2(Stdlib_format[123],fmt,_mT_);
           caml_call2(Stdlib_format[123],fmt,_mU_);
           caml_call3(Stdlib_format[123],fmt,_mV_,cst_storage$0);
           caml_call1(caml_call1(poly_expr,fmt),astorage);
           caml_call2(Stdlib_format[123],fmt,_mW_);
           return caml_call2(Stdlib_format[123],fmt,_mX_);
          case 22:
           var aaddress=param[3],aarg_type=param[2],aentry_point=param[1];
           caml_call2(Stdlib_format[123],fmt,_mY_);
           caml_call3(Stdlib_format[123],fmt,_mZ_,cst_entry_point$0);
           if(aentry_point)
            {var x$2=aentry_point[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$21);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_m0_),x$2);
             caml_call2(Stdlib_format[13],fmt,cst$23)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$21);
           caml_call2(Stdlib_format[123],fmt,_m1_);
           caml_call2(Stdlib_format[123],fmt,_m2_);
           caml_call3(Stdlib_format[123],fmt,_m3_,cst_arg_type);
           caml_call1(caml_call1(poly_type,fmt),aarg_type);
           caml_call2(Stdlib_format[123],fmt,_m4_);
           caml_call2(Stdlib_format[123],fmt,_m5_);
           caml_call3(Stdlib_format[123],fmt,_m6_,cst_address$1);
           caml_call1(caml_call1(poly_expr,fmt),aaddress);
           caml_call2(Stdlib_format[123],fmt,_m7_);
           return caml_call2(Stdlib_format[123],fmt,_m8_);
          case 23:
           var abuffer=param[3],alength=param[2],aoffset=param[1];
           caml_call2(Stdlib_format[123],fmt,_m9_);
           caml_call3(Stdlib_format[123],fmt,_m__,cst_offset);
           caml_call1(caml_call1(poly_expr,fmt),aoffset);
           caml_call2(Stdlib_format[123],fmt,_m$_);
           caml_call2(Stdlib_format[123],fmt,_na_);
           caml_call3(Stdlib_format[123],fmt,_nb_,cst_length);
           caml_call1(caml_call1(poly_expr,fmt),alength);
           caml_call2(Stdlib_format[123],fmt,_nc_);
           caml_call2(Stdlib_format[123],fmt,_nd_);
           caml_call3(Stdlib_format[123],fmt,_ne_,cst_buffer);
           caml_call1(caml_call1(poly_expr,fmt),abuffer);
           caml_call2(Stdlib_format[123],fmt,_nf_);
           return caml_call2(Stdlib_format[123],fmt,_ng_);
          case 24:
           var
            amessage_format=param[3],
            amessage=param[2],
            asecret_key=param[1];
           caml_call2(Stdlib_format[123],fmt,_nh_);
           caml_call3(Stdlib_format[123],fmt,_ni_,cst_secret_key$0);
           caml_call1(caml_call1(poly_expr,fmt),asecret_key);
           caml_call2(Stdlib_format[123],fmt,_nj_);
           caml_call2(Stdlib_format[123],fmt,_nk_);
           caml_call3(Stdlib_format[123],fmt,_nl_,cst_message);
           caml_call1(caml_call1(poly_expr,fmt),amessage);
           caml_call2(Stdlib_format[123],fmt,_nm_);
           caml_call2(Stdlib_format[123],fmt,_nn_);
           caml_call3(Stdlib_format[123],fmt,_no_,cst_message_format);
           if(4099528 <= amessage_format)
            caml_call2(Stdlib_format[13],fmt,cst_Raw);
           else
            caml_call2(Stdlib_format[13],fmt,cst_Hex);
           caml_call2(Stdlib_format[123],fmt,_np_);
           return caml_call2(Stdlib_format[123],fmt,_nq_);
          case 25:
           var adestination=param[3],aamount=param[2],aarg=param[1];
           caml_call2(Stdlib_format[123],fmt,_nr_);
           caml_call3(Stdlib_format[123],fmt,_ns_,cst_arg);
           caml_call1(caml_call1(poly_expr,fmt),aarg);
           caml_call2(Stdlib_format[123],fmt,_nt_);
           caml_call2(Stdlib_format[123],fmt,_nu_);
           caml_call3(Stdlib_format[123],fmt,_nv_,cst_amount$0);
           caml_call1(caml_call1(poly_expr,fmt),aamount);
           caml_call2(Stdlib_format[123],fmt,_nw_);
           caml_call2(Stdlib_format[123],fmt,_nx_);
           caml_call3(Stdlib_format[123],fmt,_ny_,cst_destination);
           caml_call1(caml_call1(poly_expr,fmt),adestination);
           caml_call2(Stdlib_format[123],fmt,_nz_);
           return caml_call2(Stdlib_format[123],fmt,_nA_);
          case 26:
           var a1$9=param[2],a0$16=param[1];
           caml_call2(Stdlib_format[123],fmt,_nB_);
           caml_call1(caml_call1(poly_expr,fmt),a0$16);
           caml_call2(Stdlib_format[123],fmt,_nC_);
           caml_call2(Stdlib_format[123],fmt,_nD_);
           var
            _cyP_=0,
            _cyQ_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_nE_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_nF_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_nG_),a0);
               caml_call2(Stdlib_format[123],fmt,_nH_);
               caml_call1(caml_call1(poly_expr,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_nI_);
               return 1};
           caml_call3(Stdlib_list[22],_cyQ_,_cyP_,a1$9);
           caml_call2(Stdlib_format[123],fmt,_nJ_);
           return caml_call2(Stdlib_format[123],fmt,_nK_);
          default:
           var a0$17=param[1];
           caml_call2(Stdlib_format[123],fmt,_nL_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_nM_),a0$17);
           return caml_call2(Stdlib_format[123],fmt,_nN_)}});
    caml_update_dummy
     (show_expr_f,
      function(poly_expr,poly_command,poly_type,poly_switch,x)
       {var
         _cyv_=
          caml_call1
           (caml_call1
             (caml_call1(caml_call1(pp_expr_f,poly_expr),poly_command),
              poly_type),
            poly_switch);
        return caml_call3(Stdlib_format[127],_nO_,_cyv_,x)});
    function map_expr_f(poly_expr,poly_command,poly_type,poly_switch,param)
     {switch(param[0])
       {case 0:var a0=param[1];return [0,a0];
        case 1:
         var a1=param[2],a0$0=param[1];
         return [1,a0$0,caml_call1(poly_expr,a1)];
        case 2:
         var a1$0=param[2],a0$1=param[1];
         return [2,a0$1,caml_call1(poly_expr,a1$0)];
        case 3:
         var
          a2=param[3],
          a1$1=param[2],
          a0$2=param[1],
          _cx1_=caml_call1(poly_expr,a2);
         return [3,a0$2,caml_call1(poly_expr,a1$1),_cx1_];
        case 4:
         var
          a3=param[4],
          a2$0=param[3],
          a1$2=param[2],
          a0$3=param[1],
          _cx2_=caml_call1(poly_expr,a3),
          _cx3_=caml_call1(poly_expr,a2$0);
         return [4,a0$3,caml_call1(poly_expr,a1$2),_cx3_,_cx2_];
        case 5:var a0$4=param[1];return [5,map_prim0(poly_type,a0$4)];
        case 6:
         var a1$3=param[2],a0$5=param[1],_cx4_=caml_call1(poly_expr,a1$3);
         return [6,map_prim1(poly_type,a0$5),_cx4_];
        case 7:
         var
          a2$1=param[3],
          a1$4=param[2],
          a0$6=param[1],
          _cx5_=caml_call1(poly_expr,a2$1),
          _cx6_=caml_call1(poly_expr,a1$4);
         return [7,map_prim2(poly_type,a0$6),_cx6_,_cx5_];
        case 8:
         var
          a3$0=param[4],
          a2$2=param[3],
          a1$5=param[2],
          a0$7=param[1],
          _cx7_=caml_call1(poly_expr,a3$0),
          _cx8_=caml_call1(poly_expr,a2$2),
          _cx9_=caml_call1(poly_expr,a1$5);
         return [8,map_prim3(poly_type,a0$7),_cx9_,_cx8_,_cx7_];
        case 9:
         var a2$3=param[3],a1$6=param[2],a0$8=param[1];
         if(a2$3)
          var x=a2$3[1],_cx__=[0,caml_call1(poly_expr,x)];
         else
          var _cx__=0;
         return [9,a0$8,caml_call1(poly_expr,a1$6),_cx__];
        case 10:
         var
          amissing_message=param[4],
          adefault_value=param[3],
          akey=param[2],
          aitems=param[1];
         if(amissing_message)
          var x$0=amissing_message[1],_cx$_=[0,caml_call1(poly_expr,x$0)];
         else
          var _cx$_=0;
         if(adefault_value)
          var x$1=adefault_value[1],_cya_=[0,caml_call1(poly_expr,x$1)];
         else
          var _cya_=0;
         var _cyb_=caml_call1(poly_expr,akey);
         return [10,caml_call1(poly_expr,aitems),_cyb_,_cya_,_cx$_];
        case 11:
         var a0$9=param[1];
         return [11,caml_call1(caml_call1(Stdlib_list[17],poly_expr),a0$9)];
        case 12:
         var
          a0$10=param[1],
          _cyc_=
           function(param)
            {var a1=param[2],a0=param[1];
             return [0,a0,caml_call1(poly_expr,a1)]};
         return [12,caml_call1(caml_call1(Stdlib_list[17],_cyc_),a0$10)];
        case 13:
         var a0$11=param[1];
         return [13,caml_call1(caml_call1(Stdlib_list[17],poly_expr),a0$11)];
        case 14:
         var
          a1$7=param[2],
          a0$12=param[1],
          _cyd_=
           function(param)
            {var a1=param[2],a0=param[1],_cyu_=caml_call1(poly_expr,a1);
             return [0,caml_call1(poly_expr,a0),_cyu_]};
         return [14,a0$12,caml_call1(caml_call1(Stdlib_list[17],_cyd_),a1$7)];
        case 15:
         var a0$13=param[1];
         return [15,caml_call1(caml_call1(Stdlib_list[17],poly_expr),a0$13)];
        case 16:
         var
          atransaction=param[2],
          astate=param[1],
          _cye_=caml_call1(poly_expr,atransaction);
         return [16,caml_call1(poly_expr,astate),_cye_];
        case 17:
         var
          a1$8=param[2],
          a0$14=param[1],
          _cyf_=caml_call1(caml_call1(Stdlib_list[17],poly_expr),a1$8);
         return [17,map_inline_michelson(poly_type,a0$14),_cyf_];
        case 18:
         var al=param[2],af=param[1],_cyg_=caml_call1(poly_expr,al);
         return [18,caml_call1(poly_expr,af),_cyg_];
        case 19:
         var
          a0$15=param[1],
          _cys_=map_extra(poly_type,poly_switch,a0$15[6]),
          _cyt_=map_extra(poly_type,poly_switch,a0$15[5]),
          _cxZ_=a0$15[4],
          _cx0_=caml_call1(poly_command,a0$15[3]);
         return [19,[0,a0$15[1],a0$15[2],_cx0_,_cxZ_,_cyt_,_cys_]];
        case 20:var aname=param[2],aid=param[1];return [20,aid,aname];
        case 21:
         var
          astorage=param[4],
          abalance=param[3],
          abaker=param[2],
          acontract_template=param[1],
          _cyh_=caml_call1(poly_expr,astorage),
          _cyi_=caml_call1(poly_expr,abalance),
          _cyj_=caml_call1(poly_expr,abaker);
         return [21,
                 map_contract_f
                  (poly_expr,
                   poly_command,
                   poly_type,
                   poly_switch,
                   acontract_template),
                 _cyj_,
                 _cyi_,
                 _cyh_];
        case 22:
         var
          aaddress=param[3],
          aarg_type=param[2],
          aentry_point=param[1],
          _cyk_=caml_call1(poly_expr,aaddress);
         return [22,aentry_point,caml_call1(poly_type,aarg_type),_cyk_];
        case 23:
         var
          abuffer=param[3],
          alength=param[2],
          aoffset=param[1],
          _cyl_=caml_call1(poly_expr,abuffer),
          _cym_=caml_call1(poly_expr,alength);
         return [23,caml_call1(poly_expr,aoffset),_cym_,_cyl_];
        case 24:
         var
          amessage_format=param[3],
          amessage=param[2],
          asecret_key=param[1],
          _cyn_=caml_call1(poly_expr,amessage);
         return [24,caml_call1(poly_expr,asecret_key),_cyn_,amessage_format];
        case 25:
         var
          adestination=param[3],
          aamount=param[2],
          aarg=param[1],
          _cyo_=caml_call1(poly_expr,adestination),
          _cyp_=caml_call1(poly_expr,aamount);
         return [25,caml_call1(poly_expr,aarg),_cyp_,_cyo_];
        case 26:
         var
          a1$9=param[2],
          a0$16=param[1],
          _cyq_=
           function(param)
            {var a1=param[2],a0=param[1];
             return [0,a0,caml_call1(poly_expr,a1)]},
          _cyr_=caml_call1(caml_call1(Stdlib_list[17],_cyq_),a1$9);
         return [26,caml_call1(poly_expr,a0$16),_cyr_];
        default:var a0$17=param[1];return [27,a0$17]}}
    function fold_expr_f
     (poly_expr,poly_command,poly_type,poly_switch,acc$1,param)
     {switch(param[0])
       {case 0:return acc$1;
        case 1:var a1=param[2];return caml_call2(poly_expr,acc$1,a1);
        case 2:var a1$0=param[2];return caml_call2(poly_expr,acc$1,a1$0);
        case 3:
         var a2=param[3],a1$1=param[2],acc$2=caml_call2(poly_expr,acc$1,a1$1);
         return caml_call2(poly_expr,acc$2,a2);
        case 4:
         var
          a3=param[4],
          a2$0=param[3],
          a1$2=param[2],
          acc$3=caml_call2(poly_expr,acc$1,a1$2),
          acc$4=caml_call2(poly_expr,acc$3,a2$0);
         return caml_call2(poly_expr,acc$4,a3);
        case 5:var a0=param[1];return fold_prim0(poly_type,acc$1,a0);
        case 6:
         var
          a1$3=param[2],
          a0$0=param[1],
          acc$24=fold_prim1(poly_type,acc$1,a0$0);
         return caml_call2(poly_expr,acc$24,a1$3);
        case 7:
         var
          a2$1=param[3],
          a1$4=param[2],
          a0$1=param[1],
          acc$25=fold_prim2(poly_type,acc$1,a0$1),
          acc$5=caml_call2(poly_expr,acc$25,a1$4);
         return caml_call2(poly_expr,acc$5,a2$1);
        case 8:
         var
          a3$0=param[4],
          a2$2=param[3],
          a1$5=param[2],
          a0$2=param[1],
          acc$26=fold_prim3(poly_type,acc$1,a0$2),
          acc$6=caml_call2(poly_expr,acc$26,a1$5),
          acc$7=caml_call2(poly_expr,acc$6,a2$2);
         return caml_call2(poly_expr,acc$7,a3$0);
        case 9:
         var
          a2$3=param[3],
          a1$6=param[2],
          acc$8=caml_call2(poly_expr,acc$1,a1$6);
         if(a2$3){var x=a2$3[1];return caml_call2(poly_expr,acc$8,x)}
         return acc$8;
        case 10:
         var
          amissing_message=param[4],
          adefault_value=param[3],
          akey=param[2],
          aitems=param[1],
          acc$9=caml_call2(poly_expr,acc$1,aitems),
          acc$10=caml_call2(poly_expr,acc$9,akey);
         if(adefault_value)
          var x$0=adefault_value[1],acc$11=caml_call2(poly_expr,acc$10,x$0);
         else
          var acc$11=acc$10;
         if(amissing_message)
          {var x$1=amissing_message[1];
           return caml_call2(poly_expr,acc$11,x$1)}
         return acc$11;
        case 11:
         var a0$3=param[1];
         return caml_call2(caml_call1(Stdlib_list[22],poly_expr),acc$1,a0$3);
        case 12:
         var
          a0$4=param[1],
          _cxW_=
           function(acc,param)
            {var a1=param[2];return caml_call2(poly_expr,acc,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_cxW_),acc$1,a0$4);
        case 13:
         var a0$5=param[1];
         return caml_call2(caml_call1(Stdlib_list[22],poly_expr),acc$1,a0$5);
        case 14:
         var
          a1$7=param[2],
          _cxX_=
           function(acc,param)
            {var a1=param[2],a0=param[1],acc$0=caml_call2(poly_expr,acc,a0);
             return caml_call2(poly_expr,acc$0,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_cxX_),acc$1,a1$7);
        case 15:
         var a0$6=param[1];
         return caml_call2(caml_call1(Stdlib_list[22],poly_expr),acc$1,a0$6);
        case 16:
         var
          atransaction=param[2],
          astate=param[1],
          acc$12=caml_call2(poly_expr,acc$1,astate);
         return caml_call2(poly_expr,acc$12,atransaction);
        case 17:
         var
          a1$8=param[2],
          a0$7=param[1],
          _cxU_=a0$7[3],
          acc=caml_call2(caml_call1(Stdlib_list[22],poly_type),acc$1,_cxU_),
          _cxV_=a0$7[4],
          acc$0=caml_call2(caml_call1(Stdlib_list[22],poly_type),acc,_cxV_);
         return caml_call2(caml_call1(Stdlib_list[22],poly_expr),acc$0,a1$8);
        case 18:
         var al=param[2],af=param[1],acc$13=caml_call2(poly_expr,acc$1,af);
         return caml_call2(poly_expr,acc$13,al);
        case 19:
         var a0$8=param[1];
         return fold_lambda_f(poly_command,poly_type,poly_switch,acc$1,a0$8);
        case 20:return acc$1;
        case 21:
         var
          astorage=param[4],
          abalance=param[3],
          abaker=param[2],
          acontract_template=param[1],
          acc$27=
           fold_contract_f
            (poly_expr,
             poly_command,
             poly_type,
             poly_switch,
             acc$1,
             acontract_template),
          acc$14=caml_call2(poly_expr,acc$27,abaker),
          acc$15=caml_call2(poly_expr,acc$14,abalance);
         return caml_call2(poly_expr,acc$15,astorage);
        case 22:
         var
          aaddress=param[3],
          aarg_type=param[2],
          acc$16=caml_call2(poly_type,acc$1,aarg_type);
         return caml_call2(poly_expr,acc$16,aaddress);
        case 23:
         var
          abuffer=param[3],
          alength=param[2],
          aoffset=param[1],
          acc$17=caml_call2(poly_expr,acc$1,aoffset),
          acc$18=caml_call2(poly_expr,acc$17,alength);
         return caml_call2(poly_expr,acc$18,abuffer);
        case 24:
         var
          amessage=param[2],
          asecret_key=param[1],
          acc$19=caml_call2(poly_expr,acc$1,asecret_key),
          acc$20=caml_call2(poly_expr,acc$19,amessage);
         return acc$20;
        case 25:
         var
          adestination=param[3],
          aamount=param[2],
          aarg=param[1],
          acc$21=caml_call2(poly_expr,acc$1,aarg),
          acc$22=caml_call2(poly_expr,acc$21,aamount);
         return caml_call2(poly_expr,acc$22,adestination);
        case 26:
         var
          a1$9=param[2],
          a0$9=param[1],
          acc$23=caml_call2(poly_expr,acc$1,a0$9),
          _cxY_=
           function(acc,param)
            {var a1=param[2];return caml_call2(poly_expr,acc,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_cxY_),acc$23,a1$9);
        default:return acc$1}}
    function equal_record_field_binding(lhs,rhs)
     {var _cxT_=caml_string_equal(lhs[1],rhs[1]);
      return _cxT_?caml_string_equal(lhs[2],rhs[2]):_cxT_}
    var
     compare_record_field_binding=
      function _cxS_(_cxQ_,_cxR_){return _cxS_.fun(_cxQ_,_cxR_)};
    caml_update_dummy
     (compare_record_field_binding,
      function(lhs,rhs)
       {var x=caml_string_compare(lhs[1],rhs[1]);
        return 0 === x?caml_string_compare(lhs[2],rhs[2]):x});
    function pp_record_field_binding(fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_nP_);
      caml_call3(Stdlib_format[123],fmt,_nQ_,cst_var);
      var _cxO_=x[1];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_nR_),_cxO_);
      caml_call2(Stdlib_format[123],fmt,_nS_);
      caml_call2(Stdlib_format[123],fmt,_nT_);
      caml_call3(Stdlib_format[123],fmt,_nU_,cst_field);
      var _cxP_=x[2];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_nV_),_cxP_);
      caml_call2(Stdlib_format[123],fmt,_nW_);
      return caml_call2(Stdlib_format[123],fmt,_nX_)}
    function show_record_field_binding(x)
     {return caml_call3(Stdlib_format[127],_nY_,pp_record_field_binding,x)}
    var
     equal_pattern=
      function _cxN_(_cxL_,_cxM_){return _cxN_.fun(_cxL_,_cxM_)};
    caml_update_dummy
     (equal_pattern,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           var _cxE_=lhs[1];
           if(0 === match[0])
            {var rhs0=match[1];return caml_string_equal(_cxE_,rhs0)}
           break;
          case 1:
           var _cxF_=lhs[1];
           if(1 === match[0])
            {var rhs0$0=match[1],x=_cxF_,y=rhs0$0;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    _cxG_=caml_string_equal(a,b);
                   if(_cxG_){var x=x$0,y=y$0;continue}
                   return _cxG_}}
               else
                if(! y)return 1;
               return 0}}
           break;
          default:
           var _cxH_=lhs[2],_cxI_=lhs[1];
           if(2 === match[0])
            {var
              rhs1=match[2],
              rhs0$1=match[1],
              _cxJ_=caml_string_equal(_cxI_,rhs0$1);
             if(_cxJ_)
              {var x$1=_cxH_,y$1=rhs1;
               for(;;)
                {if(x$1)
                  {if(y$1)
                    {var
                      y$2=y$1[2],
                      b$0=y$1[1],
                      x$2=x$1[2],
                      a$0=x$1[1],
                      _cxK_=equal_record_field_binding(a$0,b$0);
                     if(_cxK_){var x$1=x$2,y$1=y$2;continue}
                     return _cxK_}}
                 else
                  if(! y$1)return 1;
                 return 0}}
             return _cxJ_}}
        return 0});
    var
     compare_pattern=
      function _cxD_(_cxB_,_cxC_){return _cxD_.fun(_cxB_,_cxC_)};
    caml_update_dummy
     (compare_pattern,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           var _cxw_=lhs[1];
           if(0 === match[0])
            {var rhs0=match[1];return caml_string_compare(_cxw_,rhs0)}
           break;
          case 1:
           var _cxy_=lhs[1];
           if(1 === match[0])
            {var rhs0$0=match[1],x=_cxy_,y=rhs0$0;
             for(;;)
              {if(x)
                {if(y)
                  {var
                    y$0=y[2],
                    b=y[1],
                    x$0=x[2],
                    a=x[1],
                    x$1=caml_string_compare(a,b);
                   if(0 === x$1){var x=x$0,y=y$0;continue}
                   return x$1}
                 return 1}
               return y?-1:0}}
           break;
          default:
           var _cxz_=lhs[2],_cxA_=lhs[1];
           if(2 === match[0])
            {var
              rhs1=match[2],
              rhs0$1=match[1],
              x$2=caml_string_compare(_cxA_,rhs0$1);
             if(0 === x$2)
              {var x$3=_cxz_,y$1=rhs1;
               for(;;)
                {if(x$3)
                  {if(y$1)
                    {var
                      y$2=y$1[2],
                      b$0=y$1[1],
                      x$4=x$3[2],
                      a$0=x$3[1],
                      x$5=
                       caml_call1(caml_call1(compare_record_field_binding,a$0),b$0);
                     if(0 === x$5){var x$3=x$4,y$1=y$2;continue}
                     return x$5}
                   return 1}
                 return y$1?-1:0}}
             return x$2}}
        function to_int(param)
         {switch(param[0]){case 0:return 0;case 1:return 1;default:return 2}}
        var _cxx_=to_int(match);
        return caml_int_compare(to_int(lhs),_cxx_)});
    var
     pp_pattern=function _cxv_(_cxt_,_cxu_){return _cxv_.fun(_cxt_,_cxu_)},
     show_pattern=function _cxs_(_cxr_){return _cxs_.fun(_cxr_)};
    caml_update_dummy
     (pp_pattern,
      function(fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_nZ_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_n0_),a0);
           return caml_call2(Stdlib_format[123],fmt,_n1_);
          case 1:
           var a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_n2_);
           caml_call2(Stdlib_format[123],fmt,_n3_);
           var
            _cxn_=0,
            _cxo_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_n4_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_n5_),x);
               return 1};
           caml_call3(Stdlib_list[22],_cxo_,_cxn_,a0$0);
           caml_call2(Stdlib_format[123],fmt,_n6_);
           return caml_call2(Stdlib_format[123],fmt,_n7_);
          default:
           var a1=param[2],a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_n8_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_n9_),a0$1);
           caml_call2(Stdlib_format[123],fmt,_n__);
           caml_call2(Stdlib_format[123],fmt,_n$_);
           var
            _cxp_=0,
            _cxq_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_oa_);
               pp_record_field_binding(fmt,x);
               return 1};
           caml_call3(Stdlib_list[22],_cxq_,_cxp_,a1);
           caml_call2(Stdlib_format[123],fmt,_ob_);
           return caml_call2(Stdlib_format[123],fmt,_oc_)}});
    caml_update_dummy
     (show_pattern,
      function(x){return caml_call3(Stdlib_format[127],_od_,pp_pattern,x)});
    var
     pp_command_f=
      function _cxm_(_cxh_,_cxi_,_cxj_,_cxk_,_cxl_)
       {return _cxm_.fun(_cxh_,_cxi_,_cxj_,_cxk_,_cxl_)},
     show_command_f=
      function _cxg_(_cxc_,_cxd_,_cxe_,_cxf_)
       {return _cxg_.fun(_cxc_,_cxd_,_cxe_,_cxf_)};
    caml_update_dummy
     (pp_command_f,
      function(poly_expr,poly_command,poly_type,fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_oe_);
           caml_call1(caml_call1(poly_expr,fmt),a0);
           return caml_call2(Stdlib_format[123],fmt,_of_);
          case 1:
           var a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_og_);
           caml_call1(caml_call1(poly_expr,fmt),a0$0);
           return caml_call2(Stdlib_format[123],fmt,_oh_);
          case 2:
           var a1=param[2],a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_oi_);
           caml_call1(caml_call1(poly_expr,fmt),a0$1);
           caml_call2(Stdlib_format[123],fmt,_oj_);
           if(a1)
            {var x=a1[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$22);
             caml_call1(caml_call1(poly_expr,fmt),x);
             caml_call2(Stdlib_format[13],fmt,cst$24)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$22);
           return caml_call2(Stdlib_format[123],fmt,_ok_);
          case 3:
           var a2=param[3],a1$0=param[2],a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_ol_);
           caml_call1(caml_call1(poly_expr,fmt),a0$2);
           caml_call2(Stdlib_format[123],fmt,_om_);
           caml_call1(caml_call1(poly_command,fmt),a1$0);
           caml_call2(Stdlib_format[123],fmt,_on_);
           caml_call1(caml_call1(poly_command,fmt),a2);
           return caml_call2(Stdlib_format[123],fmt,_oo_);
          case 4:
           var a1$1=param[2],a0$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_op_);
           caml_call1(caml_call1(poly_expr,fmt),a0$3);
           caml_call2(Stdlib_format[123],fmt,_oq_);
           caml_call2(Stdlib_format[123],fmt,_or_);
           var
            _cxa_=0,
            _cxb_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_os_);
               var a2=x[3],a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_ot_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_ou_),a0);
               caml_call2(Stdlib_format[123],fmt,_ov_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_ow_),a1);
               caml_call2(Stdlib_format[123],fmt,_ox_);
               caml_call1(caml_call1(poly_command,fmt),a2);
               caml_call2(Stdlib_format[123],fmt,_oy_);
               return 1};
           caml_call3(Stdlib_list[22],_cxb_,_cxa_,a1$1);
           caml_call2(Stdlib_format[123],fmt,_oz_);
           return caml_call2(Stdlib_format[123],fmt,_oA_);
          case 5:
           var a2$0=param[3],a1$2=param[2],a0$4=param[1];
           caml_call2(Stdlib_format[123],fmt,_oB_);
           caml_call1(caml_call1(poly_expr,fmt),a0$4);
           caml_call2(Stdlib_format[123],fmt,_oC_);
           caml_call1(caml_call1(pp_pattern,fmt),a1$2);
           caml_call2(Stdlib_format[123],fmt,_oD_);
           caml_call1(caml_call1(poly_command,fmt),a2$0);
           return caml_call2(Stdlib_format[123],fmt,_oE_);
          case 6:
           var a2$1=param[3],a1$3=param[2],a0$5=param[1];
           caml_call2(Stdlib_format[123],fmt,_oF_);
           caml_call1(caml_call1(poly_expr,fmt),a0$5);
           caml_call2(Stdlib_format[123],fmt,_oG_);
           caml_call1(caml_call1(pp_pattern,fmt),a1$3);
           caml_call2(Stdlib_format[123],fmt,_oH_);
           caml_call1(caml_call1(poly_command,fmt),a2$1);
           return caml_call2(Stdlib_format[123],fmt,_oI_);
          case 7:
           var
            ako_match=param[4],
            aok_match=param[3],
            aid=param[2],
            aexpr=param[1];
           caml_call2(Stdlib_format[123],fmt,_oJ_);
           caml_call3(Stdlib_format[123],fmt,_oK_,cst_expr);
           caml_call1(caml_call1(poly_expr,fmt),aexpr);
           caml_call2(Stdlib_format[123],fmt,_oL_);
           caml_call2(Stdlib_format[123],fmt,_oM_);
           caml_call3(Stdlib_format[123],fmt,_oN_,cst_id$1);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_oO_),aid);
           caml_call2(Stdlib_format[123],fmt,_oP_);
           caml_call2(Stdlib_format[123],fmt,_oQ_);
           caml_call3(Stdlib_format[123],fmt,_oR_,cst_ok_match);
           caml_call1(caml_call1(poly_command,fmt),aok_match);
           caml_call2(Stdlib_format[123],fmt,_oS_);
           caml_call2(Stdlib_format[123],fmt,_oT_);
           caml_call3(Stdlib_format[123],fmt,_oU_,cst_ko_match);
           caml_call1(caml_call1(poly_command,fmt),ako_match);
           caml_call2(Stdlib_format[123],fmt,_oV_);
           return caml_call2(Stdlib_format[123],fmt,_oW_);
          case 8:
           var a1$4=param[2],a0$6=param[1];
           caml_call2(Stdlib_format[123],fmt,_oX_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_oY_),a0$6);
           caml_call2(Stdlib_format[123],fmt,_oZ_);
           caml_call1(caml_call1(poly_expr,fmt),a1$4);
           return caml_call2(Stdlib_format[123],fmt,_o0_);
          case 9:
           var a1$5=param[2],a0$7=param[1];
           caml_call2(Stdlib_format[123],fmt,_o1_);
           caml_call1(caml_call1(poly_expr,fmt),a0$7);
           caml_call2(Stdlib_format[123],fmt,_o2_);
           caml_call1(caml_call1(poly_expr,fmt),a1$5);
           return caml_call2(Stdlib_format[123],fmt,_o3_);
          case 10:
           var a1$6=param[2],a0$8=param[1];
           caml_call2(Stdlib_format[123],fmt,_o4_);
           caml_call1(caml_call1(poly_expr,fmt),a0$8);
           caml_call2(Stdlib_format[123],fmt,_o5_);
           caml_call1(caml_call1(poly_expr,fmt),a1$6);
           return caml_call2(Stdlib_format[123],fmt,_o6_);
          case 11:
           var a2$2=param[3],a1$7=param[2],a0$9=param[1];
           caml_call2(Stdlib_format[123],fmt,_o7_);
           caml_call1(caml_call1(poly_expr,fmt),a0$9);
           caml_call2(Stdlib_format[123],fmt,_o8_);
           caml_call1(caml_call1(poly_expr,fmt),a1$7);
           caml_call2(Stdlib_format[123],fmt,_o9_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_o__),a2$2);
           return caml_call2(Stdlib_format[123],fmt,_o$_);
          case 12:
           var a2$3=param[3],a1$8=param[2],a0$10=param[1];
           caml_call2(Stdlib_format[123],fmt,_pa_);
           if(a0$10)
            {var x$0=a0$10[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$23);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_pb_),x$0);
             caml_call2(Stdlib_format[13],fmt,cst$25)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$23);
           caml_call2(Stdlib_format[123],fmt,_pc_);
           caml_call1(caml_call1(poly_command,fmt),a1$8);
           caml_call2(Stdlib_format[123],fmt,_pd_);
           caml_call1(caml_call1(poly_command,fmt),a2$3);
           return caml_call2(Stdlib_format[123],fmt,_pe_);
          case 13:
           var a2$4=param[3],a1$9=param[2],a0$11=param[1];
           caml_call2(Stdlib_format[123],fmt,_pf_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_pg_),a0$11);
           caml_call2(Stdlib_format[123],fmt,_ph_);
           caml_call1(caml_call1(poly_expr,fmt),a1$9);
           caml_call2(Stdlib_format[123],fmt,_pi_);
           caml_call1(caml_call1(poly_command,fmt),a2$4);
           return caml_call2(Stdlib_format[123],fmt,_pj_);
          case 14:
           var a1$10=param[2],a0$12=param[1];
           caml_call2(Stdlib_format[123],fmt,_pk_);
           caml_call1(caml_call1(poly_expr,fmt),a0$12);
           caml_call2(Stdlib_format[123],fmt,_pl_);
           caml_call1(caml_call1(poly_command,fmt),a1$10);
           return caml_call2(Stdlib_format[123],fmt,_pm_);
          case 15:
           var a0$13=param[1];
           caml_call2(Stdlib_format[123],fmt,_pn_);
           caml_call1(caml_call1(poly_expr,fmt),a0$13);
           return caml_call2(Stdlib_format[123],fmt,_po_);
          case 16:
           var a0$14=param[1];
           caml_call2(Stdlib_format[123],fmt,_pp_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_pq_),a0$14);
           return caml_call2(Stdlib_format[123],fmt,_pr_);
          case 17:
           var a1$11=param[2],a0$15=param[1];
           caml_call2(Stdlib_format[123],fmt,_ps_);
           caml_call1(caml_call1(poly_expr,fmt),a0$15);
           caml_call2(Stdlib_format[123],fmt,_pt_);
           caml_call1(caml_call1(poly_type,fmt),a1$11);
           return caml_call2(Stdlib_format[123],fmt,_pu_);
          case 18:
           var a1$12=param[2],a0$16=param[1];
           caml_call2(Stdlib_format[123],fmt,_pv_);
           caml_call1(caml_call1(poly_command,fmt),a0$16);
           caml_call2(Stdlib_format[123],fmt,_pw_);
           caml_call1(caml_call1(poly_type,fmt),a1$12);
           return caml_call2(Stdlib_format[123],fmt,_px_);
          case 19:
           var a0$17=param[1];
           caml_call2(Stdlib_format[123],fmt,_py_);
           caml_call1(caml_call1(poly_expr,fmt),a0$17);
           return caml_call2(Stdlib_format[123],fmt,_pz_);
          default:
           var a1$13=param[2],a0$18=param[1];
           caml_call2(Stdlib_format[123],fmt,_pA_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_pB_),a0$18);
           caml_call2(Stdlib_format[123],fmt,_pC_);
           caml_call1(caml_call1(poly_expr,fmt),a1$13);
           return caml_call2(Stdlib_format[123],fmt,_pD_)}});
    caml_update_dummy
     (show_command_f,
      function(poly_expr,poly_command,poly_type,x)
       {var
         _cw$_=
          caml_call1
           (caml_call1(caml_call1(pp_command_f,poly_expr),poly_command),
            poly_type);
        return caml_call3(Stdlib_format[127],_pE_,_cw$_,x)});
    function map_command_f(poly_expr,poly_command,poly_type,param)
     {switch(param[0])
       {case 0:var a0=param[1];return [0,caml_call1(poly_expr,a0)];
        case 1:var a0$0=param[1];return [1,caml_call1(poly_expr,a0$0)];
        case 2:
         var a1=param[2],a0$1=param[1];
         if(a1)var x=a1[1],_cwU_=[0,caml_call1(poly_expr,x)];else var _cwU_=0;
         return [2,caml_call1(poly_expr,a0$1),_cwU_];
        case 3:
         var
          a2=param[3],
          a1$0=param[2],
          a0$2=param[1],
          _cwV_=caml_call1(poly_command,a2),
          _cwW_=caml_call1(poly_command,a1$0);
         return [3,caml_call1(poly_expr,a0$2),_cwW_,_cwV_];
        case 4:
         var
          a1$1=param[2],
          a0$3=param[1],
          _cwX_=
           function(param)
            {var a2=param[3],a1=param[2],a0=param[1];
             return [0,a0,a1,caml_call1(poly_command,a2)]},
          _cwY_=caml_call1(caml_call1(Stdlib_list[17],_cwX_),a1$1);
         return [4,caml_call1(poly_expr,a0$3),_cwY_];
        case 5:
         var
          a2$0=param[3],
          a1$2=param[2],
          a0$4=param[1],
          _cwZ_=caml_call1(poly_command,a2$0);
         return [5,caml_call1(poly_expr,a0$4),a1$2,_cwZ_];
        case 6:
         var
          a2$1=param[3],
          a1$3=param[2],
          a0$5=param[1],
          _cw0_=caml_call1(poly_command,a2$1);
         return [6,caml_call1(poly_expr,a0$5),a1$3,_cw0_];
        case 7:
         var
          ako_match=param[4],
          aok_match=param[3],
          aid=param[2],
          aexpr=param[1],
          _cw1_=caml_call1(poly_command,ako_match),
          _cw2_=caml_call1(poly_command,aok_match);
         return [7,caml_call1(poly_expr,aexpr),aid,_cw2_,_cw1_];
        case 8:
         var a1$4=param[2],a0$6=param[1];
         return [8,a0$6,caml_call1(poly_expr,a1$4)];
        case 9:
         var a1$5=param[2],a0$7=param[1],_cw3_=caml_call1(poly_expr,a1$5);
         return [9,caml_call1(poly_expr,a0$7),_cw3_];
        case 10:
         var a1$6=param[2],a0$8=param[1],_cw4_=caml_call1(poly_expr,a1$6);
         return [10,caml_call1(poly_expr,a0$8),_cw4_];
        case 11:
         var
          a2$2=param[3],
          a1$7=param[2],
          a0$9=param[1],
          _cw5_=caml_call1(poly_expr,a1$7);
         return [11,caml_call1(poly_expr,a0$9),_cw5_,a2$2];
        case 12:
         var
          a2$3=param[3],
          a1$8=param[2],
          a0$10=param[1],
          _cw6_=caml_call1(poly_command,a2$3);
         return [12,a0$10,caml_call1(poly_command,a1$8),_cw6_];
        case 13:
         var
          a2$4=param[3],
          a1$9=param[2],
          a0$11=param[1],
          _cw7_=caml_call1(poly_command,a2$4);
         return [13,a0$11,caml_call1(poly_expr,a1$9),_cw7_];
        case 14:
         var
          a1$10=param[2],
          a0$12=param[1],
          _cw8_=caml_call1(poly_command,a1$10);
         return [14,caml_call1(poly_expr,a0$12),_cw8_];
        case 15:var a0$13=param[1];return [15,caml_call1(poly_expr,a0$13)];
        case 16:var a0$14=param[1];return [16,a0$14];
        case 17:
         var a1$11=param[2],a0$15=param[1],_cw9_=caml_call1(poly_type,a1$11);
         return [17,caml_call1(poly_expr,a0$15),_cw9_];
        case 18:
         var a1$12=param[2],a0$16=param[1],_cw__=caml_call1(poly_type,a1$12);
         return [18,caml_call1(poly_command,a0$16),_cw__];
        case 19:var a0$17=param[1];return [19,caml_call1(poly_expr,a0$17)];
        default:
         var a1$13=param[2],a0$18=param[1];
         return [20,a0$18,caml_call1(poly_expr,a1$13)]}}
    function fold_command_f(poly_expr,poly_command,poly_type,acc,param)
     {switch(param[0])
       {case 0:var a0=param[1];return caml_call2(poly_expr,acc,a0);
        case 1:var a0$0=param[1];return caml_call2(poly_expr,acc,a0$0);
        case 2:
         var a1=param[2],a0$1=param[1],acc$0=caml_call2(poly_expr,acc,a0$1);
         if(a1){var x=a1[1];return caml_call2(poly_expr,acc$0,x)}
         return acc$0;
        case 3:
         var
          a2=param[3],
          a1$0=param[2],
          a0$2=param[1],
          acc$1=caml_call2(poly_expr,acc,a0$2),
          acc$2=caml_call2(poly_command,acc$1,a1$0);
         return caml_call2(poly_command,acc$2,a2);
        case 4:
         var
          a1$1=param[2],
          a0$3=param[1],
          acc$3=caml_call2(poly_expr,acc,a0$3),
          _cwT_=
           function(acc,param)
            {var a2=param[3];return caml_call2(poly_command,acc,a2)};
         return caml_call2(caml_call1(Stdlib_list[22],_cwT_),acc$3,a1$1);
        case 5:
         var a2$0=param[3],a0$4=param[1],acc$4=caml_call2(poly_expr,acc,a0$4);
         return caml_call2(poly_command,acc$4,a2$0);
        case 6:
         var a2$1=param[3],a0$5=param[1],acc$5=caml_call2(poly_expr,acc,a0$5);
         return caml_call2(poly_command,acc$5,a2$1);
        case 7:
         var
          ako_match=param[4],
          aok_match=param[3],
          aexpr=param[1],
          acc$6=caml_call2(poly_expr,acc,aexpr),
          acc$7=caml_call2(poly_command,acc$6,aok_match);
         return caml_call2(poly_command,acc$7,ako_match);
        case 8:var a1$2=param[2];return caml_call2(poly_expr,acc,a1$2);
        case 9:
         var a1$3=param[2],a0$6=param[1],acc$8=caml_call2(poly_expr,acc,a0$6);
         return caml_call2(poly_expr,acc$8,a1$3);
        case 10:
         var a1$4=param[2],a0$7=param[1],acc$9=caml_call2(poly_expr,acc,a0$7);
         return caml_call2(poly_expr,acc$9,a1$4);
        case 11:
         var
          a1$5=param[2],
          a0$8=param[1],
          acc$10=caml_call2(poly_expr,acc,a0$8),
          acc$11=caml_call2(poly_expr,acc$10,a1$5);
         return acc$11;
        case 12:
         var
          a2$2=param[3],
          a1$6=param[2],
          acc$12=caml_call2(poly_command,acc,a1$6);
         return caml_call2(poly_command,acc$12,a2$2);
        case 13:
         var
          a2$3=param[3],
          a1$7=param[2],
          acc$13=caml_call2(poly_expr,acc,a1$7);
         return caml_call2(poly_command,acc$13,a2$3);
        case 14:
         var
          a1$8=param[2],
          a0$9=param[1],
          acc$14=caml_call2(poly_expr,acc,a0$9);
         return caml_call2(poly_command,acc$14,a1$8);
        case 15:var a0$10=param[1];return caml_call2(poly_expr,acc,a0$10);
        case 16:return acc;
        case 17:
         var
          a1$9=param[2],
          a0$11=param[1],
          acc$15=caml_call2(poly_expr,acc,a0$11);
         return caml_call2(poly_type,acc$15,a1$9);
        case 18:
         var
          a1$10=param[2],
          a0$12=param[1],
          acc$16=caml_call2(poly_command,acc,a0$12);
         return caml_call2(poly_type,acc$16,a1$10);
        case 19:var a0$13=param[1];return caml_call2(poly_expr,acc,a0$13);
        default:var a1$11=param[2];return caml_call2(poly_expr,acc,a1$11)}}
    var
     equal_command_f=
      function _cwS_(_cwN_,_cwO_,_cwP_,_cwQ_,_cwR_)
       {return _cwS_.fun(_cwN_,_cwO_,_cwP_,_cwQ_,_cwR_)};
    caml_update_dummy
     (equal_command_f,
      function(poly_expr,poly_command,poly_type,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_call2(poly_expr,lhs0,rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];
             return caml_call2(poly_expr,lhs0$0,rhs0$0)}
           break;
          case 2:
           if(2 === match[0])
            {var
              rhs1=match[2],
              rhs0$1=match[1],
              lhs1=lhs[2],
              lhs0$1=lhs[1],
              _cwm_=caml_call2(poly_expr,lhs0$1,rhs0$1);
             if(_cwm_)
              {if(lhs1)
                {if(rhs1)
                  {var b=rhs1[1],a=lhs1[1];return caml_call2(poly_expr,a,b)}}
               else
                if(! rhs1)return 1;
               return 0}
             return _cwm_}
           break;
          case 3:
           if(3 === match[0])
            {var
              rhs2=match[3],
              rhs1$0=match[2],
              rhs0$2=match[1],
              lhs2=lhs[3],
              lhs1$0=lhs[2],
              lhs0$2=lhs[1],
              _cwn_=caml_call2(poly_expr,lhs0$2,rhs0$2),
              _cwo_=_cwn_?caml_call2(poly_command,lhs1$0,rhs1$0):_cwn_;
             return _cwo_?caml_call2(poly_command,lhs2,rhs2):_cwo_}
           break;
          case 4:
           if(4 === match[0])
            {var
              rhs1$1=match[2],
              rhs0$3=match[1],
              lhs1$1=lhs[2],
              lhs0$3=lhs[1],
              _cwp_=caml_call2(poly_expr,lhs0$3,rhs0$3);
             if(_cwp_)
              {var x=lhs1$1,y=rhs1$1;
               for(;;)
                {if(x)
                  {if(y)
                    {var
                      y$0=y[2],
                      b$0=y[1],
                      x$0=x[2],
                      a$0=x[1],
                      rhs2$0=b$0[3],
                      rhs1$2=b$0[2],
                      rhs0$4=b$0[1],
                      lhs2$0=a$0[3],
                      lhs1$2=a$0[2],
                      lhs0$4=a$0[1],
                      _cwq_=caml_string_equal(lhs0$4,rhs0$4),
                      _cwr_=_cwq_?caml_string_equal(lhs1$2,rhs1$2):_cwq_,
                      _cws_=_cwr_?caml_call2(poly_command,lhs2$0,rhs2$0):_cwr_;
                     if(_cws_){var x=x$0,y=y$0;continue}
                     return _cws_}}
                 else
                  if(! y)return 1;
                 return 0}}
             return _cwp_}
           break;
          case 5:
           if(5 === match[0])
            {var
              rhs2$1=match[3],
              rhs1$3=match[2],
              rhs0$5=match[1],
              lhs2$1=lhs[3],
              lhs1$3=lhs[2],
              lhs0$5=lhs[1],
              _cwt_=caml_call2(poly_expr,lhs0$5,rhs0$5),
              _cwu_=
               _cwt_?caml_call1(caml_call1(equal_pattern,lhs1$3),rhs1$3):_cwt_;
             return _cwu_?caml_call2(poly_command,lhs2$1,rhs2$1):_cwu_}
           break;
          case 6:
           if(6 === match[0])
            {var
              rhs2$2=match[3],
              rhs1$4=match[2],
              rhs0$6=match[1],
              lhs2$2=lhs[3],
              lhs1$4=lhs[2],
              lhs0$6=lhs[1],
              _cwv_=caml_call2(poly_expr,lhs0$6,rhs0$6),
              _cww_=
               _cwv_?caml_call1(caml_call1(equal_pattern,lhs1$4),rhs1$4):_cwv_;
             return _cww_?caml_call2(poly_command,lhs2$2,rhs2$2):_cww_}
           break;
          case 7:
           if(7 === match[0])
            {var
              rhsko_match=match[4],
              rhsok_match=match[3],
              rhsid=match[2],
              rhsexpr=match[1],
              lhsko_match=lhs[4],
              lhsok_match=lhs[3],
              lhsid=lhs[2],
              lhsexpr=lhs[1],
              _cwx_=caml_call2(poly_expr,lhsexpr,rhsexpr),
              _cwy_=_cwx_?caml_string_equal(lhsid,rhsid):_cwx_,
              _cwz_=
               _cwy_?caml_call2(poly_command,lhsok_match,rhsok_match):_cwy_;
             return _cwz_
                     ?caml_call2(poly_command,lhsko_match,rhsko_match)
                     :_cwz_}
           break;
          case 8:
           if(8 === match[0])
            {var
              rhs1$5=match[2],
              rhs0$7=match[1],
              lhs1$5=lhs[2],
              lhs0$7=lhs[1],
              _cwA_=caml_string_equal(lhs0$7,rhs0$7);
             return _cwA_?caml_call2(poly_expr,lhs1$5,rhs1$5):_cwA_}
           break;
          case 9:
           if(9 === match[0])
            {var
              rhs1$6=match[2],
              rhs0$8=match[1],
              lhs1$6=lhs[2],
              lhs0$8=lhs[1],
              _cwB_=caml_call2(poly_expr,lhs0$8,rhs0$8);
             return _cwB_?caml_call2(poly_expr,lhs1$6,rhs1$6):_cwB_}
           break;
          case 10:
           if(10 === match[0])
            {var
              rhs1$7=match[2],
              rhs0$9=match[1],
              lhs1$7=lhs[2],
              lhs0$9=lhs[1],
              _cwC_=caml_call2(poly_expr,lhs0$9,rhs0$9);
             return _cwC_?caml_call2(poly_expr,lhs1$7,rhs1$7):_cwC_}
           break;
          case 11:
           if(11 === match[0])
            {var
              rhs2$3=match[3],
              rhs1$8=match[2],
              rhs0$10=match[1],
              lhs2$3=lhs[3],
              lhs1$8=lhs[2],
              lhs0$10=lhs[1],
              _cwD_=caml_call2(poly_expr,lhs0$10,rhs0$10),
              _cwE_=_cwD_?caml_call2(poly_expr,lhs1$8,rhs1$8):_cwD_;
             return _cwE_?lhs2$3 === rhs2$3?1:0:_cwE_}
           break;
          case 12:
           if(12 === match[0])
            {var
              rhs2$4=match[3],
              rhs1$9=match[2],
              rhs0$11=match[1],
              lhs2$4=lhs[3],
              lhs1$9=lhs[2],
              lhs0$11=lhs[1],
              switch$0=0;
             if(lhs0$11)
              if(rhs0$11)
               var
                b$1=rhs0$11[1],
                a$1=lhs0$11[1],
                _cwF_=caml_string_equal(a$1,b$1);
              else
               switch$0 = 1;
             else
              if(rhs0$11)switch$0 = 1;else var _cwF_=1;
             if(switch$0)var _cwF_=0;
             var _cwG_=_cwF_?caml_call2(poly_command,lhs1$9,rhs1$9):_cwF_;
             return _cwG_?caml_call2(poly_command,lhs2$4,rhs2$4):_cwG_}
           break;
          case 13:
           if(13 === match[0])
            {var
              rhs2$5=match[3],
              rhs1$10=match[2],
              rhs0$12=match[1],
              lhs2$5=lhs[3],
              lhs1$10=lhs[2],
              lhs0$12=lhs[1],
              _cwH_=caml_string_equal(lhs0$12,rhs0$12),
              _cwI_=_cwH_?caml_call2(poly_expr,lhs1$10,rhs1$10):_cwH_;
             return _cwI_?caml_call2(poly_command,lhs2$5,rhs2$5):_cwI_}
           break;
          case 14:
           if(14 === match[0])
            {var
              rhs1$11=match[2],
              rhs0$13=match[1],
              lhs1$11=lhs[2],
              lhs0$13=lhs[1],
              _cwJ_=caml_call2(poly_expr,lhs0$13,rhs0$13);
             return _cwJ_?caml_call2(poly_command,lhs1$11,rhs1$11):_cwJ_}
           break;
          case 15:
           if(15 === match[0])
            {var rhs0$14=match[1],lhs0$14=lhs[1];
             return caml_call2(poly_expr,lhs0$14,rhs0$14)}
           break;
          case 16:
           if(16 === match[0])
            {var rhs0$15=match[1],lhs0$15=lhs[1];
             return caml_string_equal(lhs0$15,rhs0$15)}
           break;
          case 17:
           if(17 === match[0])
            {var
              rhs1$12=match[2],
              rhs0$16=match[1],
              lhs1$12=lhs[2],
              lhs0$16=lhs[1],
              _cwK_=caml_call2(poly_expr,lhs0$16,rhs0$16);
             return _cwK_?caml_call2(poly_type,lhs1$12,rhs1$12):_cwK_}
           break;
          case 18:
           if(18 === match[0])
            {var
              rhs1$13=match[2],
              rhs0$17=match[1],
              lhs1$13=lhs[2],
              lhs0$17=lhs[1],
              _cwL_=caml_call2(poly_command,lhs0$17,rhs0$17);
             return _cwL_?caml_call2(poly_type,lhs1$13,rhs1$13):_cwL_}
           break;
          case 19:
           if(19 === match[0])
            {var rhs0$18=match[1],lhs0$18=lhs[1];
             return caml_call2(poly_expr,lhs0$18,rhs0$18)}
           break;
          default:
           if(20 === match[0])
            {var
              rhs1$14=match[2],
              rhs0$19=match[1],
              lhs1$14=lhs[2],
              lhs0$19=lhs[1],
              _cwM_=caml_string_equal(lhs0$19,rhs0$19);
             return _cwM_?caml_call2(poly_expr,lhs1$14,rhs1$14):_cwM_}}
        return 0});
    var
     compare_command_f=
      function _cwl_(_cwg_,_cwh_,_cwi_,_cwj_,_cwk_)
       {return _cwl_.fun(_cwg_,_cwh_,_cwi_,_cwj_,_cwk_)};
    caml_update_dummy
     (compare_command_f,
      function(poly_expr,poly_command,poly_type,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_call2(poly_expr,lhs0,rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];
             return caml_call2(poly_expr,lhs0$0,rhs0$0)}
           break;
          case 2:
           if(2 === match[0])
            {var
              rhs1=match[2],
              rhs0$1=match[1],
              lhs1=lhs[2],
              lhs0$1=lhs[1],
              x=caml_call2(poly_expr,lhs0$1,rhs0$1);
             if(0 === x)
              {if(lhs1)
                {var _cwe_=lhs1[1];
                 if(rhs1){var b=rhs1[1];return caml_call2(poly_expr,_cwe_,b)}
                 return 1}
               return rhs1?-1:0}
             return x}
           break;
          case 3:
           if(3 === match[0])
            {var
              rhs2=match[3],
              rhs1$0=match[2],
              rhs0$2=match[1],
              lhs2=lhs[3],
              lhs1$0=lhs[2],
              lhs0$2=lhs[1],
              x$0=caml_call2(poly_expr,lhs0$2,rhs0$2);
             if(0 === x$0)
              {var x$1=caml_call2(poly_command,lhs1$0,rhs1$0);
               return 0 === x$1?caml_call2(poly_command,lhs2,rhs2):x$1}
             return x$0}
           break;
          case 4:
           if(4 === match[0])
            {var
              rhs1$1=match[2],
              rhs0$3=match[1],
              lhs1$1=lhs[2],
              lhs0$3=lhs[1],
              x$2=caml_call2(poly_expr,lhs0$3,rhs0$3);
             if(0 === x$2)
              {var x$3=lhs1$1,y=rhs1$1;
               for(;;)
                {if(x$3)
                  {if(y)
                    {var
                      y$0=y[2],
                      b$0=y[1],
                      x$4=x$3[2],
                      a=x$3[1],
                      rhs2$0=b$0[3],
                      rhs1$2=b$0[2],
                      rhs0$4=b$0[1],
                      lhs2$0=a[3],
                      lhs1$2=a[2],
                      lhs0$4=a[1],
                      x$5=caml_string_compare(lhs0$4,rhs0$4);
                     if(0 === x$5)
                      var
                       x$6=caml_string_compare(lhs1$2,rhs1$2),
                       x$7=0 === x$6?caml_call2(poly_command,lhs2$0,rhs2$0):x$6;
                     else
                      var x$7=x$5;
                     if(0 === x$7){var x$3=x$4,y=y$0;continue}
                     return x$7}
                   return 1}
                 return y?-1:0}}
             return x$2}
           break;
          case 5:
           if(5 === match[0])
            {var
              rhs2$1=match[3],
              rhs1$3=match[2],
              rhs0$5=match[1],
              lhs2$1=lhs[3],
              lhs1$3=lhs[2],
              lhs0$5=lhs[1],
              x$8=caml_call2(poly_expr,lhs0$5,rhs0$5);
             if(0 === x$8)
              {var x$9=caml_call1(caml_call1(compare_pattern,lhs1$3),rhs1$3);
               return 0 === x$9?caml_call2(poly_command,lhs2$1,rhs2$1):x$9}
             return x$8}
           break;
          case 6:
           if(6 === match[0])
            {var
              rhs2$2=match[3],
              rhs1$4=match[2],
              rhs0$6=match[1],
              lhs2$2=lhs[3],
              lhs1$4=lhs[2],
              lhs0$6=lhs[1],
              x$10=caml_call2(poly_expr,lhs0$6,rhs0$6);
             if(0 === x$10)
              {var x$11=caml_call1(caml_call1(compare_pattern,lhs1$4),rhs1$4);
               return 0 === x$11?caml_call2(poly_command,lhs2$2,rhs2$2):x$11}
             return x$10}
           break;
          case 7:
           if(7 === match[0])
            {var
              rhsko_match=match[4],
              rhsok_match=match[3],
              rhsid=match[2],
              rhsexpr=match[1],
              lhsko_match=lhs[4],
              lhsok_match=lhs[3],
              lhsid=lhs[2],
              lhsexpr=lhs[1],
              x$12=caml_call2(poly_expr,lhsexpr,rhsexpr);
             if(0 === x$12)
              {var x$13=caml_string_compare(lhsid,rhsid);
               if(0 === x$13)
                {var x$14=caml_call2(poly_command,lhsok_match,rhsok_match);
                 return 0 === x$14
                         ?caml_call2(poly_command,lhsko_match,rhsko_match)
                         :x$14}
               return x$13}
             return x$12}
           break;
          case 8:
           if(8 === match[0])
            {var
              rhs1$5=match[2],
              rhs0$7=match[1],
              lhs1$5=lhs[2],
              lhs0$7=lhs[1],
              x$15=caml_string_compare(lhs0$7,rhs0$7);
             return 0 === x$15?caml_call2(poly_expr,lhs1$5,rhs1$5):x$15}
           break;
          case 9:
           if(9 === match[0])
            {var
              rhs1$6=match[2],
              rhs0$8=match[1],
              lhs1$6=lhs[2],
              lhs0$8=lhs[1],
              x$16=caml_call2(poly_expr,lhs0$8,rhs0$8);
             return 0 === x$16?caml_call2(poly_expr,lhs1$6,rhs1$6):x$16}
           break;
          case 10:
           if(10 === match[0])
            {var
              rhs1$7=match[2],
              rhs0$9=match[1],
              lhs1$7=lhs[2],
              lhs0$9=lhs[1],
              x$17=caml_call2(poly_expr,lhs0$9,rhs0$9);
             return 0 === x$17?caml_call2(poly_expr,lhs1$7,rhs1$7):x$17}
           break;
          case 11:
           if(11 === match[0])
            {var
              rhs2$3=match[3],
              rhs1$8=match[2],
              rhs0$10=match[1],
              lhs2$3=lhs[3],
              lhs1$8=lhs[2],
              lhs0$10=lhs[1],
              x$18=caml_call2(poly_expr,lhs0$10,rhs0$10);
             if(0 === x$18)
              {var x$19=caml_call2(poly_expr,lhs1$8,rhs1$8);
               return 0 === x$19?caml_int_compare(lhs2$3,rhs2$3):x$19}
             return x$18}
           break;
          case 12:
           if(12 === match[0])
            {var
              rhs2$4=match[3],
              rhs1$9=match[2],
              rhs0$11=match[1],
              lhs2$4=lhs[3],
              lhs1$9=lhs[2],
              lhs0$11=lhs[1];
             if(lhs0$11)
              {var _cwf_=lhs0$11[1];
               if(rhs0$11)
                var b$1=rhs0$11[1],x$20=caml_string_compare(_cwf_,b$1);
               else
                var x$20=1}
             else
              var x$20=rhs0$11?-1:0;
             if(0 === x$20)
              {var x$21=caml_call2(poly_command,lhs1$9,rhs1$9);
               return 0 === x$21?caml_call2(poly_command,lhs2$4,rhs2$4):x$21}
             return x$20}
           break;
          case 13:
           if(13 === match[0])
            {var
              rhs2$5=match[3],
              rhs1$10=match[2],
              rhs0$12=match[1],
              lhs2$5=lhs[3],
              lhs1$10=lhs[2],
              lhs0$12=lhs[1],
              x$22=caml_string_compare(lhs0$12,rhs0$12);
             if(0 === x$22)
              {var x$23=caml_call2(poly_expr,lhs1$10,rhs1$10);
               return 0 === x$23?caml_call2(poly_command,lhs2$5,rhs2$5):x$23}
             return x$22}
           break;
          case 14:
           if(14 === match[0])
            {var
              rhs1$11=match[2],
              rhs0$13=match[1],
              lhs1$11=lhs[2],
              lhs0$13=lhs[1],
              x$24=caml_call2(poly_expr,lhs0$13,rhs0$13);
             return 0 === x$24?caml_call2(poly_command,lhs1$11,rhs1$11):x$24}
           break;
          case 15:
           if(15 === match[0])
            {var rhs0$14=match[1],lhs0$14=lhs[1];
             return caml_call2(poly_expr,lhs0$14,rhs0$14)}
           break;
          case 16:
           if(16 === match[0])
            {var rhs0$15=match[1],lhs0$15=lhs[1];
             return caml_string_compare(lhs0$15,rhs0$15)}
           break;
          case 17:
           if(17 === match[0])
            {var
              rhs1$12=match[2],
              rhs0$16=match[1],
              lhs1$12=lhs[2],
              lhs0$16=lhs[1],
              x$25=caml_call2(poly_expr,lhs0$16,rhs0$16);
             return 0 === x$25?caml_call2(poly_type,lhs1$12,rhs1$12):x$25}
           break;
          case 18:
           if(18 === match[0])
            {var
              rhs1$13=match[2],
              rhs0$17=match[1],
              lhs1$13=lhs[2],
              lhs0$17=lhs[1],
              x$26=caml_call2(poly_command,lhs0$17,rhs0$17);
             return 0 === x$26?caml_call2(poly_type,lhs1$13,rhs1$13):x$26}
           break;
          case 19:
           if(19 === match[0])
            {var rhs0$18=match[1],lhs0$18=lhs[1];
             return caml_call2(poly_expr,lhs0$18,rhs0$18)}
           break;
          default:
           if(20 === match[0])
            {var
              rhs1$14=match[2],
              rhs0$19=match[1],
              lhs1$14=lhs[2],
              lhs0$19=lhs[1],
              x$27=caml_string_compare(lhs0$19,rhs0$19);
             return 0 === x$27?caml_call2(poly_expr,lhs1$14,rhs1$14):x$27}}
        function to_int(param)
         {switch(param[0])
           {case 0:return 0;
            case 1:return 1;
            case 2:return 2;
            case 3:return 3;
            case 4:return 4;
            case 5:return 5;
            case 6:return 6;
            case 7:return 7;
            case 8:return 8;
            case 9:return 9;
            case 10:return 10;
            case 11:return 11;
            case 12:return 12;
            case 13:return 13;
            case 14:return 14;
            case 15:return 15;
            case 16:return 16;
            case 17:return 17;
            case 18:return 18;
            case 19:return 19;
            default:return 20}}
        var _cwd_=to_int(match);
        return caml_int_compare(to_int(lhs),_cwd_)});
    function string_of_line_no(param)
     {if(param){var match=param[1],i=match[2];return caml_call1(Stdlib[33],i)}
      return cst_no_location_info}
    function head_line_no(param)
     {if(param){var match=param[1],hd=match[2];return hd}return -1}
    var
     pp_texpr=function _cwc_(_cwa_,_cwb_){return _cwc_.fun(_cwa_,_cwb_)},
     show_texpr=function _cv$_(_cv__){return _cv$_.fun(_cv__)},
     pp_tcommand=function _cv9_(_cv7_,_cv8_){return _cv9_.fun(_cv7_,_cv8_)},
     show_tcommand=function _cv6_(_cv5_){return _cv6_.fun(_cv5_)};
    caml_update_dummy
     (pp_texpr,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_pF_);
        caml_call3(Stdlib_format[123],fmt,_pG_,cst_e);
        var _cvZ_=x[1];
        function _cv0_(fmt)
         {return function(_cv4_){return pp_typed(fmt,_cv4_)}}
        function _cv1_(fmt){return caml_call1(pp$4,fmt)}
        function _cv2_(fmt){return caml_call1(pp_tcommand,fmt)}
        caml_call1
         (caml_call5
           (pp_expr_f,
            function(fmt){return caml_call1(pp_texpr,fmt)},
            _cv2_,
            _cv1_,
            _cv0_,
            fmt),
          _cvZ_);
        caml_call2(Stdlib_format[123],fmt,_pH_);
        caml_call2(Stdlib_format[123],fmt,_pI_);
        caml_call3(Stdlib_format[123],fmt,_pJ_,cst_et);
        var _cv3_=x[2];
        caml_call1(caml_call1(pp$4,fmt),_cv3_);
        caml_call2(Stdlib_format[123],fmt,_pK_);
        caml_call2(Stdlib_format[123],fmt,_pL_);
        caml_call3(Stdlib_format[123],fmt,_pM_,cst_line_no$0);
        pp_line_no(fmt,x[3]);
        caml_call2(Stdlib_format[123],fmt,_pN_);
        return caml_call2(Stdlib_format[123],fmt,_pO_)});
    caml_update_dummy
     (show_texpr,
      function(x){return caml_call3(Stdlib_format[127],_pP_,pp_texpr,x)});
    caml_update_dummy
     (pp_tcommand,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_pQ_);
        caml_call3(Stdlib_format[123],fmt,_pR_,cst_c);
        var _cvV_=x[1];
        function _cvW_(fmt){return caml_call1(pp$4,fmt)}
        function _cvX_(fmt){return caml_call1(pp_tcommand,fmt)}
        caml_call1
         (caml_call4
           (pp_command_f,
            function(fmt){return caml_call1(pp_texpr,fmt)},
            _cvX_,
            _cvW_,
            fmt),
          _cvV_);
        caml_call2(Stdlib_format[123],fmt,_pS_);
        caml_call2(Stdlib_format[123],fmt,_pT_);
        caml_call3(Stdlib_format[123],fmt,_pU_,cst_ct);
        var _cvY_=x[2];
        caml_call1(caml_call1(pp$4,fmt),_cvY_);
        caml_call2(Stdlib_format[123],fmt,_pV_);
        caml_call2(Stdlib_format[123],fmt,_pW_);
        caml_call3(Stdlib_format[123],fmt,_pX_,cst_line_no$1);
        pp_line_no(fmt,x[3]);
        caml_call2(Stdlib_format[123],fmt,_pY_);
        return caml_call2(Stdlib_format[123],fmt,_pZ_)});
    caml_update_dummy
     (show_tcommand,
      function(x){return caml_call3(Stdlib_format[127],_p0_,pp_tcommand,x)});
    var
     equal_texpr=function _cvU_(_cvS_,_cvT_){return _cvU_.fun(_cvS_,_cvT_)},
     equal_tcommand=function _cvR_(_cvP_,_cvQ_){return _cvR_.fun(_cvP_,_cvQ_)};
    caml_update_dummy
     (equal_texpr,
      function(lhs,rhs)
       {var _cvF_=rhs[1],_cvG_=lhs[1];
        function _cvH_(x){return function(_cvO_){return 0}}
        function _cvI_(x){return caml_call1(equal$5,x)}
        function _cvJ_(x){return caml_call1(equal_tcommand,x)}
        var
         _cvK_=
          caml_call1
           (caml_call1
             (caml_call4
               (equal_expr_f,
                function(x){return caml_call1(equal_texpr,x)},
                _cvJ_,
                _cvI_,
                _cvH_),
              _cvG_),
            _cvF_);
        if(_cvK_)
         var _cvL_=rhs[2],_cvM_=caml_call1(caml_call1(equal$5,lhs[2]),_cvL_);
        else
         var _cvM_=_cvK_;
        if(_cvM_)
         {var _cvN_=rhs[3];
          return caml_call1(caml_call1(equal_line_no,lhs[3]),_cvN_)}
        return _cvM_});
    caml_update_dummy
     (equal_tcommand,
      function(lhs,rhs)
       {var _cvx_=rhs[1],_cvy_=lhs[1];
        function _cvz_(x){return caml_call1(equal$5,x)}
        function _cvA_(x){return caml_call1(equal_tcommand,x)}
        var
         _cvB_=
          caml_call1
           (caml_call1
             (caml_call3
               (equal_command_f,
                function(x){return caml_call1(equal_texpr,x)},
                _cvA_,
                _cvz_),
              _cvy_),
            _cvx_);
        if(_cvB_)
         var _cvC_=rhs[2],_cvD_=caml_call1(caml_call1(equal$5,lhs[2]),_cvC_);
        else
         var _cvD_=_cvB_;
        if(_cvD_)
         {var _cvE_=rhs[3];
          return caml_call1(caml_call1(equal_line_no,lhs[3]),_cvE_)}
        return _cvD_});
    var
     compare_texpr=function _cvw_(_cvu_,_cvv_){return _cvw_.fun(_cvu_,_cvv_)},
     compare_tcommand=
      function _cvt_(_cvr_,_cvs_){return _cvt_.fun(_cvr_,_cvs_)};
    caml_update_dummy
     (compare_texpr,
      function(lhs,rhs)
       {var _cvj_=rhs[1],_cvk_=lhs[1];
        function _cvl_(x)
         {return function(_cvq_){return compare_typed(x,_cvq_)}}
        function _cvm_(x){return caml_call1(compare$3,x)}
        function _cvn_(x){return caml_call1(compare_tcommand,x)}
        var
         x=
          caml_call1
           (caml_call1
             (caml_call4
               (compare_expr_f,
                function(x){return caml_call1(compare_texpr,x)},
                _cvn_,
                _cvm_,
                _cvl_),
              _cvk_),
            _cvj_);
        if(0 === x)
         {var _cvo_=rhs[2],x$0=caml_call1(caml_call1(compare$3,lhs[2]),_cvo_);
          if(0 === x$0)
           {var _cvp_=rhs[3];
            return caml_call1(caml_call1(compare_line_no,lhs[3]),_cvp_)}
          return x$0}
        return x});
    caml_update_dummy
     (compare_tcommand,
      function(lhs,rhs)
       {var _cvd_=rhs[1],_cve_=lhs[1];
        function _cvf_(x){return caml_call1(compare$3,x)}
        function _cvg_(x){return caml_call1(compare_tcommand,x)}
        var
         x=
          caml_call1
           (caml_call1
             (caml_call3
               (compare_command_f,
                function(x){return caml_call1(compare_texpr,x)},
                _cvg_,
                _cvf_),
              _cve_),
            _cvd_);
        if(0 === x)
         {var _cvh_=rhs[2],x$0=caml_call1(caml_call1(compare$3,lhs[2]),_cvh_);
          if(0 === x$0)
           {var _cvi_=rhs[3];
            return caml_call1(caml_call1(compare_line_no,lhs[3]),_cvi_)}
          return x$0}
        return x});
    function build_texpr(line_no,e,et){return [0,e,et,line_no]}
    function build_tcommand(line_no,c,ct){return [0,c,ct,line_no]}
    var
     equal_expr=function _cvc_(_cva_,_cvb_){return _cvc_.fun(_cva_,_cvb_)},
     equal_command=function _cu$_(_cu9_,_cu__){return _cu$_.fun(_cu9_,_cu__)};
    caml_update_dummy
     (equal_expr,
      function(lhs,rhs)
       {var _cu1_=rhs[1],_cu2_=lhs[1];
        function _cu3_(x){return function(_cu8_){return 0}}
        function _cu4_(x){return caml_call1(equal$5,x)}
        function _cu5_(x){return caml_call1(equal_command,x)}
        var
         _cu6_=
          caml_call1
           (caml_call1
             (caml_call4
               (equal_expr_f,
                function(x){return caml_call1(equal_expr,x)},
                _cu5_,
                _cu4_,
                _cu3_),
              _cu2_),
            _cu1_);
        if(_cu6_)
         {var _cu7_=rhs[2];
          return caml_call1(caml_call1(equal_line_no,lhs[2]),_cu7_)}
        return _cu6_});
    caml_update_dummy
     (equal_command,
      function(lhs,rhs)
       {var _cuV_=rhs[1],_cuW_=lhs[1];
        function _cuX_(x){return caml_call1(equal$5,x)}
        function _cuY_(x){return caml_call1(equal_command,x)}
        var
         _cuZ_=
          caml_call1
           (caml_call1
             (caml_call3
               (equal_command_f,
                function(x){return caml_call1(equal_expr,x)},
                _cuY_,
                _cuX_),
              _cuW_),
            _cuV_);
        if(_cuZ_)
         {var _cu0_=rhs[2];
          return caml_call1(caml_call1(equal_line_no,lhs[2]),_cu0_)}
        return _cuZ_});
    var
     compare_expr=function _cuU_(_cuS_,_cuT_){return _cuU_.fun(_cuS_,_cuT_)},
     compare_command=
      function _cuR_(_cuP_,_cuQ_){return _cuR_.fun(_cuP_,_cuQ_)};
    caml_update_dummy
     (compare_expr,
      function(lhs,rhs)
       {var _cuI_=rhs[1],_cuJ_=lhs[1];
        function _cuK_(x)
         {return function(_cuO_){return compare_untyped(x,_cuO_)}}
        function _cuL_(x){return caml_call1(compare$3,x)}
        function _cuM_(x){return caml_call1(compare_command,x)}
        var
         x=
          caml_call1
           (caml_call1
             (caml_call4
               (compare_expr_f,
                function(x){return caml_call1(compare_expr,x)},
                _cuM_,
                _cuL_,
                _cuK_),
              _cuJ_),
            _cuI_);
        if(0 === x)
         {var _cuN_=rhs[2];
          return caml_call1(caml_call1(compare_line_no,lhs[2]),_cuN_)}
        return x});
    caml_update_dummy
     (compare_command,
      function(lhs,rhs)
       {var _cuD_=rhs[1],_cuE_=lhs[1];
        function _cuF_(x){return caml_call1(compare$3,x)}
        function _cuG_(x){return caml_call1(compare_command,x)}
        var
         x=
          caml_call1
           (caml_call1
             (caml_call3
               (compare_command_f,
                function(x){return caml_call1(compare_expr,x)},
                _cuG_,
                _cuF_),
              _cuE_),
            _cuD_);
        if(0 === x)
         {var _cuH_=rhs[2];
          return caml_call1(caml_call1(compare_line_no,lhs[2]),_cuH_)}
        return x});
    var
     pp_expr=function _cuC_(_cuA_,_cuB_){return _cuC_.fun(_cuA_,_cuB_)},
     show_expr=function _cuz_(_cuy_){return _cuz_.fun(_cuy_)},
     pp_command=function _cux_(_cuv_,_cuw_){return _cux_.fun(_cuv_,_cuw_)},
     show_command=function _cuu_(_cut_){return _cuu_.fun(_cut_)};
    caml_update_dummy
     (pp_expr,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_p1_);
        caml_call3(Stdlib_format[123],fmt,_p2_,cst_e$0);
        var _cuo_=x[1];
        function _cup_(fmt)
         {return function(_cus_){return pp_untyped(fmt,_cus_)}}
        function _cuq_(fmt){return caml_call1(pp$4,fmt)}
        function _cur_(fmt){return caml_call1(pp_command,fmt)}
        caml_call1
         (caml_call5
           (pp_expr_f,
            function(fmt){return caml_call1(pp_expr,fmt)},
            _cur_,
            _cuq_,
            _cup_,
            fmt),
          _cuo_);
        caml_call2(Stdlib_format[123],fmt,_p3_);
        caml_call2(Stdlib_format[123],fmt,_p4_);
        caml_call3(Stdlib_format[123],fmt,_p5_,cst_line_no$2);
        pp_line_no(fmt,x[2]);
        caml_call2(Stdlib_format[123],fmt,_p6_);
        return caml_call2(Stdlib_format[123],fmt,_p7_)});
    caml_update_dummy
     (show_expr,
      function(x){return caml_call3(Stdlib_format[127],_p8_,pp_expr,x)});
    caml_update_dummy
     (pp_command,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_p9_);
        caml_call3(Stdlib_format[123],fmt,_p__,cst_c$0);
        var _cul_=x[1];
        function _cum_(fmt){return caml_call1(pp$4,fmt)}
        function _cun_(fmt){return caml_call1(pp_command,fmt)}
        caml_call1
         (caml_call4
           (pp_command_f,
            function(fmt){return caml_call1(pp_expr,fmt)},
            _cun_,
            _cum_,
            fmt),
          _cul_);
        caml_call2(Stdlib_format[123],fmt,_p$_);
        caml_call2(Stdlib_format[123],fmt,_qa_);
        caml_call3(Stdlib_format[123],fmt,_qb_,cst_line_no$3);
        pp_line_no(fmt,x[2]);
        caml_call2(Stdlib_format[123],fmt,_qc_);
        return caml_call2(Stdlib_format[123],fmt,_qd_)});
    caml_update_dummy
     (show_command,
      function(x){return caml_call3(Stdlib_format[127],_qe_,pp_command,x)});
    var
     Untyped=
      [0,
       equal_expr,
       equal_command,
       compare_expr,
       compare_command,
       pp_expr,
       show_expr,
       pp_command,
       show_command];
    function equal_expr_modulo_line_nos(e1,e2)
     {return caml_call6
              (equal_expr_f,
               equal_expr_modulo_line_nos,
               equal_command_modulo_line_nos,
               equal$5,
               equal_untyped,
               e1[1],
               e2[1])}
    function equal_command_modulo_line_nos(c1,c2)
     {return caml_call5
              (equal_command_f,
               equal_expr_modulo_line_nos,
               equal_command_modulo_line_nos,
               equal$5,
               c1[1],
               c2[1])}
    function cata_t(param)
     {var f_ttype=param[3],f_tcommand=param[2],f_texpr=param[1];
      function ce(param)
       {var line_no=param[3],et=param[2],e=param[1];
        return caml_call3
                (f_texpr,
                 line_no,
                 et,
                 map_expr_f(ce,cc,f_ttype,Utils_Control[1],e))}
      function cc(param)
       {var line_no=param[3],ct=param[2],c=param[1];
        if(12 === c[0] && ! c[1])
         {var c2=c[3],c1=c[2],c1$0=cc(c1);
          return caml_call3(f_tcommand,line_no,ct,[12,0,c1$0,cc(c2)])}
        return caml_call3
                (f_tcommand,line_no,ct,map_command_f(ce,cc,f_ttype,c))}
      return [0,ce,cc]}
    function cata_texpr(alg){return cata_t(alg)[1]}
    function cata_tcommand(alg){return cata_t(alg)[2]}
    function para_talg(p_texpr,p_tcommand,p_ttype)
     {function f_texpr(line_no,et,e)
       {var _cue_=caml_call3(p_texpr,line_no,et,e),_cuf_=Utils_Control[1];
        function _cug_(_cuk_){return _cuk_[1]}
        function _cuh_(_cuj_){return _cuj_[1]}
        return [0,
                [0,
                 map_expr_f
                  (function(_cui_){return _cui_[1]},_cuh_,_cug_,_cuf_,e),
                 et,
                 line_no],
                _cue_]}
      function f_tcommand(line_no,ct,c)
       {var _ct__=caml_call3(p_tcommand,line_no,ct,c);
        function _ct$_(_cud_){return _cud_[1]}
        function _cua_(_cuc_){return _cuc_[1]}
        return [0,
                [0,
                 map_command_f(function(_cub_){return _cub_[1]},_cua_,_ct$_,c),
                 ct,
                 line_no],
                _ct__]}
      function f_ttype(t){return [0,t,caml_call1(p_ttype,t)]}
      return [0,f_texpr,f_tcommand,f_ttype]}
    function para_texpr(alg,e){return caml_call1(cata_texpr(alg),e)[2]}
    function para_tcommand(alg,c){return caml_call1(cata_tcommand(alg),c)[2]}
    function cata$0(param)
     {var f_type=param[3],f_command=param[2],f_expr=param[1];
      function ce(param)
       {var line_no=param[2],e=param[1];
        return caml_call2
                (f_expr,line_no,map_expr_f(ce,cc,f_type,Utils_Control[1],e))}
      function cc(param)
       {var line_no=param[2],c=param[1];
        if(12 === c[0] && ! c[1])
         {var c2=c[3],c1=c[2],c1$0=cc(c1);
          return caml_call2(f_command,line_no,[12,0,c1$0,cc(c2)])}
        return caml_call2(f_command,line_no,map_command_f(ce,cc,f_type,c))}
      return [0,ce,cc]}
    function cata_expr(alg){return cata$0(alg)[1]}
    function cata_command(alg){return cata$0(alg)[2]}
    function monoid_alg(append,empty)
     {function _ct5_(param){return empty}
      function _ct6_(param)
       {return function(_ct9_)
         {return fold_command_f(append,append,append,empty,_ct9_)}}
      return [0,
              function(param)
               {function _ct7_(param){return elim_untyped}
                return function(_ct8_)
                 {return fold_expr_f(append,append,append,_ct7_,empty,_ct8_)}},
              _ct6_,
              _ct5_]}
    function para_alg(p_expr,p_command,p_type)
     {function f_expr(line_no,e)
       {var _ctY_=caml_call2(p_expr,line_no,e),_ctZ_=Utils_Control[1];
        function _ct0_(_ct4_){return _ct4_[1]}
        function _ct1_(_ct3_){return _ct3_[1]}
        return [0,
                [0,
                 map_expr_f
                  (function(_ct2_){return _ct2_[1]},_ct1_,_ct0_,_ctZ_,e),
                 line_no],
                _ctY_]}
      function f_command(line_no,c)
       {var _ctS_=caml_call2(p_command,line_no,c);
        function _ctT_(_ctX_){return _ctX_[1]}
        function _ctU_(_ctW_){return _ctW_[1]}
        return [0,
                [0,
                 map_command_f(function(_ctV_){return _ctV_[1]},_ctU_,_ctT_,c),
                 line_no],
                _ctS_]}
      function f_type(t){return [0,t,caml_call1(p_type,t)]}
      return [0,f_expr,f_command,f_type]}
    function para_expr(alg,e){return caml_call1(cata_expr(alg),e)[2]}
    function para_command(alg,c){return caml_call1(cata_command(alg),c)[2]}
    function monoid_talg(append,empty)
     {function _ctL_(param){return empty}
      function _ctM_(param,_ctQ_)
       {return function(_ctR_)
         {return fold_command_f(append,append,append,empty,_ctR_)}}
      return [0,
              function(param,_ctN_)
               {function _ctO_(param){return elim_typed}
                return function(_ctP_)
                 {return fold_expr_f(append,append,append,_ctO_,empty,_ctP_)}},
              _ctM_,
              _ctL_]}
    var
     _qf_=1,
     size_talg=
      monoid_talg(function(_ctK_,_ctJ_){return _ctK_ + _ctJ_ | 0},_qf_),
     size_tcommand=cata_tcommand(size_talg),
     size_texpr=cata_texpr(size_talg),
     pp_lambda=function _ctI_(_ctH_){return _ctI_.fun(_ctH_)},
     show_lambda=function _ctG_(_ctF_){return _ctG_.fun(_ctF_)};
    caml_update_dummy
     (pp_lambda,
      function(fmt)
       {function _ctC_(fmt)
         {return function(_ctE_){return pp_untyped(fmt,_ctE_)}}
        function _ctD_(fmt){return caml_call1(pp$4,fmt)}
        return caml_call4
                (pp_lambda_f,
                 function(fmt){return caml_call1(Untyped[7],fmt)},
                 _ctD_,
                 _ctC_,
                 fmt)});
    caml_update_dummy
     (show_lambda,
      function(x){return caml_call3(Stdlib_format[127],_qg_,pp_lambda,x)});
    function map_lambda(x){return x}
    function fold_lambda(acc,param){return acc}
    var
     pp_tlambda=function _ctB_(_ctA_){return _ctB_.fun(_ctA_)},
     show_tlambda=function _ctz_(_cty_){return _ctz_.fun(_cty_)};
    caml_update_dummy
     (pp_tlambda,
      function(fmt)
       {function _ctv_(fmt)
         {return function(_ctx_){return pp_typed(fmt,_ctx_)}}
        function _ctw_(fmt){return caml_call1(pp$4,fmt)}
        return caml_call4
                (pp_lambda_f,
                 function(fmt){return caml_call1(pp_tcommand,fmt)},
                 _ctw_,
                 _ctv_,
                 fmt)});
    caml_update_dummy
     (show_tlambda,
      function(x){return caml_call3(Stdlib_format[127],_qh_,pp_tlambda,x)});
    function map_tlambda(x){return x}
    function fold_tlambda(acc,param){return acc}
    function equal_lambda(l1,l2){return l1[1] === l2[1]?1:0}
    function compare_lambda(l1,l2){return caml_int_compare(l1[1],l2[1])}
    function equal_tlambda(l1,l2){return l1[1] === l2[1]?1:0}
    function compare_tlambda(l1,l2){return caml_int_compare(l1[1],l2[1])}
    var
     equal_contract=
      function _ctu_(_cts_,_ctt_){return _ctu_.fun(_cts_,_ctt_)};
    caml_update_dummy
     (equal_contract,
      function(lhs,rhs)
       {var _ctm_=rhs[1],_ctn_=lhs[1];
        function _cto_(x){return function(_ctr_){return 0}}
        function _ctp_(x){return caml_call1(equal$5,x)}
        function _ctq_(x){return caml_call1(Untyped[2],x)}
        return caml_call1
                (caml_call1
                  (caml_call4
                    (equal_contract_f,
                     function(x){return caml_call1(Untyped[1],x)},
                     _ctq_,
                     _ctp_,
                     _cto_),
                   _ctn_),
                 _ctm_)});
    var
     compare_contract=
      function _ctl_(_ctj_,_ctk_){return _ctl_.fun(_ctj_,_ctk_)};
    caml_update_dummy
     (compare_contract,
      function(lhs,rhs)
       {var _ctd_=rhs[1],_cte_=lhs[1];
        function _ctf_(x)
         {return function(_cti_){return compare_untyped(x,_cti_)}}
        function _ctg_(x){return caml_call1(compare$3,x)}
        function _cth_(x){return caml_call1(Untyped[4],x)}
        return caml_call1
                (caml_call1
                  (caml_call4
                    (compare_contract_f,
                     function(x){return caml_call1(Untyped[3],x)},
                     _cth_,
                     _ctg_,
                     _ctf_),
                   _cte_),
                 _ctd_)});
    var
     pp_contract=function _ctc_(_cta_,_ctb_){return _ctc_.fun(_cta_,_ctb_)},
     show_contract=function _cs$_(_cs__){return _cs$_.fun(_cs__)};
    caml_update_dummy
     (pp_contract,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_qi_);
        caml_call3(Stdlib_format[123],fmt,_qj_,cst_contract);
        var _cs5_=x[1];
        function _cs6_(fmt)
         {return function(_cs9_){return pp_untyped(fmt,_cs9_)}}
        function _cs7_(fmt){return caml_call1(pp$4,fmt)}
        function _cs8_(fmt){return caml_call1(Untyped[7],fmt)}
        caml_call1
         (caml_call5
           (pp_contract_f,
            function(fmt){return caml_call1(Untyped[5],fmt)},
            _cs8_,
            _cs7_,
            _cs6_,
            fmt),
          _cs5_);
        caml_call2(Stdlib_format[123],fmt,_qk_);
        return caml_call2(Stdlib_format[123],fmt,_ql_)});
    caml_update_dummy
     (show_contract,
      function(x){return caml_call3(Stdlib_format[127],_qm_,pp_contract,x)});
    var
     equal_tcontract=
      function _cs4_(_cs2_,_cs3_){return _cs4_.fun(_cs2_,_cs3_)};
    caml_update_dummy
     (equal_tcontract,
      function(lhs,rhs)
       {var _csW_=rhs[1],_csX_=lhs[1];
        function _csY_(x){return function(_cs1_){return 0}}
        function _csZ_(x){return caml_call1(equal$5,x)}
        function _cs0_(x){return caml_call1(equal_tcommand,x)}
        return caml_call1
                (caml_call1
                  (caml_call4
                    (equal_contract_f,
                     function(x){return caml_call1(equal_texpr,x)},
                     _cs0_,
                     _csZ_,
                     _csY_),
                   _csX_),
                 _csW_)});
    var
     compare_tcontract=
      function _csV_(_csT_,_csU_){return _csV_.fun(_csT_,_csU_)};
    caml_update_dummy
     (compare_tcontract,
      function(lhs,rhs)
       {var _csN_=rhs[1],_csO_=lhs[1];
        function _csP_(x)
         {return function(_csS_){return compare_typed(x,_csS_)}}
        function _csQ_(x){return caml_call1(compare$3,x)}
        function _csR_(x){return caml_call1(compare_tcommand,x)}
        return caml_call1
                (caml_call1
                  (caml_call4
                    (compare_contract_f,
                     function(x){return caml_call1(compare_texpr,x)},
                     _csR_,
                     _csQ_,
                     _csP_),
                   _csO_),
                 _csN_)});
    var
     pp_tcontract=function _csM_(_csK_,_csL_){return _csM_.fun(_csK_,_csL_)},
     show_tcontract=function _csJ_(_csI_){return _csJ_.fun(_csI_)};
    caml_update_dummy
     (pp_tcontract,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_qn_);
        caml_call3(Stdlib_format[123],fmt,_qo_,cst_tcontract);
        var _csD_=x[1];
        function _csE_(fmt)
         {return function(_csH_){return pp_typed(fmt,_csH_)}}
        function _csF_(fmt){return caml_call1(pp$4,fmt)}
        function _csG_(fmt){return caml_call1(pp_tcommand,fmt)}
        caml_call1
         (caml_call5
           (pp_contract_f,
            function(fmt){return caml_call1(pp_texpr,fmt)},
            _csG_,
            _csF_,
            _csE_,
            fmt),
          _csD_);
        caml_call2(Stdlib_format[123],fmt,_qp_);
        return caml_call2(Stdlib_format[123],fmt,_qq_)});
    caml_update_dummy
     (show_tcontract,
      function(x){return caml_call3(Stdlib_format[127],_qr_,pp_tcontract,x)});
    var
     equal_value_f=
      function _csC_(_csz_,_csA_,_csB_){return _csC_.fun(_csz_,_csA_,_csB_)},
     equal$6=function _csy_(_csw_,_csx_){return _csy_.fun(_csw_,_csx_)},
     equal_operation=
      function _csv_(_cst_,_csu_){return _csv_.fun(_cst_,_csu_)},
     equal_instance=function _css_(_csq_,_csr_){return _css_.fun(_csq_,_csr_)},
     equal_contract_state=
      function _csp_(_csn_,_cso_){return _csp_.fun(_csn_,_cso_)};
    caml_update_dummy
     (equal_value_f,
      function(poly_v,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_call1(caml_call1(equal$3,lhs0),rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];
             return caml_call1(caml_call1(equal$3,lhs0$0),rhs0$0)}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$1=match[1],lhs0$1=lhs[1];
             return equal_lcontract
                     (function(x){return caml_call1(equal$5,x)},lhs0$1,rhs0$1)}
           break;
          case 3:
           if(3 === match[0])
            {var
              rhs1=match[2],
              rhs0$2=match[1],
              lhs1=lhs[2],
              lhs0$2=lhs[1],
              _cr5_=caml_call1(caml_call1(equal$0,lhs0$2),rhs0$2);
             if(_cr5_)
              {var x=lhs1,y=rhs1;
               for(;;)
                {if(x)
                  {if(y)
                    {var
                      y$0=y[2],
                      b=y[1],
                      x$0=x[2],
                      a=x[1],
                      rhs1$0=b[2],
                      rhs0$3=b[1],
                      lhs1$0=a[2],
                      lhs0$3=a[1],
                      _cr6_=caml_string_equal(lhs0$3,rhs0$3),
                      _cr7_=_cr6_?caml_call2(poly_v,lhs1$0,rhs1$0):_cr6_;
                     if(_cr7_){var x=x$0,y=y$0;continue}
                     return _cr7_}}
                 else
                  if(! y)return 1;
                 return 0}}
             return _cr5_}
           break;
          case 4:
           if(4 === match[0])
            {var
              rhs3=match[4],
              rhs2=match[3],
              rhs1$1=match[2],
              rhs0$4=match[1],
              lhs3=lhs[4],
              lhs2=lhs[3],
              lhs1$1=lhs[2],
              lhs0$4=lhs[1],
              _cr8_=caml_call1(caml_call1(equal$0,lhs0$4),rhs0$4),
              _cr9_=
               _cr8_
                ?caml_call1
                  (caml_call1
                    (equal_row(function(x){return caml_call1(equal$5,x)}),
                     lhs1$1),
                   rhs1$1)
                :_cr8_,
              _cr__=_cr9_?caml_string_equal(lhs2,rhs2):_cr9_;
             return _cr__?caml_call2(poly_v,lhs3,rhs3):_cr__}
           break;
          case 5:
           if(5 === match[0])
            {var
              rhs1$2=match[2],
              rhs0$5=match[1],
              lhs1$2=lhs[2],
              lhs0$5=lhs[1],
              _cr$_=caml_call1(caml_call1(equal$5,lhs0$5),rhs0$5);
             if(_cr$_)
              {var x$1=lhs1$2,y$1=rhs1$2;
               for(;;)
                {if(x$1)
                  {if(y$1)
                    {var
                      y$2=y$1[2],
                      b$0=y$1[1],
                      x$2=x$1[2],
                      a$0=x$1[1],
                      _csa_=caml_call2(poly_v,a$0,b$0);
                     if(_csa_){var x$1=x$2,y$1=y$2;continue}
                     return _csa_}}
                 else
                  if(! y$1)return 1;
                 return 0}}
             return _cr$_}
           break;
          case 6:
           if(6 === match[0])
            {var
              rhs1$3=match[2],
              rhs0$6=match[1],
              lhs1$3=lhs[2],
              lhs0$6=lhs[1],
              _csb_=caml_call1(caml_call1(equal$5,lhs0$6),rhs0$6);
             if(_csb_)
              {var x$3=lhs1$3,y$3=rhs1$3;
               for(;;)
                {if(x$3)
                  {if(y$3)
                    {var
                      y$4=y$3[2],
                      b$1=y$3[1],
                      x$4=x$3[2],
                      a$1=x$3[1],
                      _csc_=caml_call2(poly_v,a$1,b$1);
                     if(_csc_){var x$3=x$4,y$3=y$4;continue}
                     return _csc_}}
                 else
                  if(! y$3)return 1;
                 return 0}}
             return _csb_}
           break;
          case 7:
           if(7 === match[0])
            {var
              rhs3$0=match[4],
              rhs2$0=match[3],
              rhs1$4=match[2],
              rhs0$7=match[1],
              lhs3$0=lhs[4],
              lhs2$0=lhs[3],
              lhs1$4=lhs[2],
              lhs0$7=lhs[1],
              _csd_=caml_call1(caml_call1(equal$5,lhs0$7),rhs0$7),
              _cse_=_csd_?caml_call1(caml_call1(equal$5,lhs1$4),rhs1$4):_csd_,
              _csf_=_cse_?lhs2$0 === rhs2$0?1:0:_cse_;
             if(_csf_)
              {var x$5=lhs3$0,y$5=rhs3$0;
               for(;;)
                {if(x$5)
                  {if(y$5)
                    {var
                      y$6=y$5[2],
                      b$2=y$5[1],
                      x$6=x$5[2],
                      a$2=x$5[1],
                      rhs1$5=b$2[2],
                      rhs0$8=b$2[1],
                      lhs1$5=a$2[2],
                      lhs0$8=a$2[1],
                      _csg_=caml_call2(poly_v,lhs0$8,rhs0$8),
                      _csh_=_csg_?caml_call2(poly_v,lhs1$5,rhs1$5):_csg_;
                     if(_csh_){var x$5=x$6,y$5=y$6;continue}
                     return _csh_}}
                 else
                  if(! y$5)return 1;
                 return 0}}
             return _csf_}
           break;
          case 8:
           if(8 === match[0])
            {var rhs0$9=match[1],lhs0$9=lhs[1],x$7=lhs0$9,y$7=rhs0$9;
             for(;;)
              {if(x$7)
                {if(y$7)
                  {var
                    y$8=y$7[2],
                    b$3=y$7[1],
                    x$8=x$7[2],
                    a$3=x$7[1],
                    _csi_=caml_call2(poly_v,a$3,b$3);
                   if(_csi_){var x$7=x$8,y$7=y$8;continue}
                   return _csi_}}
               else
                if(! y$7)return 1;
               return 0}}
           break;
          case 9:
           if(9 === match[0])
            {var
              rhs1$6=match[2],
              rhs0$10=match[1],
              lhs1$6=lhs[2],
              lhs0$10=lhs[1],
              _csm_=equal_tlambda(lhs0$10,rhs0$10);
             if(_csm_)
              {var x$9=lhs1$6,y$9=rhs1$6;
               for(;;)
                {if(x$9)
                  {if(y$9)
                    {var
                      y$10=y$9[2],
                      b$4=y$9[1],
                      x$10=x$9[2],
                      a$4=x$9[1],
                      _csj_=caml_call2(poly_v,a$4,b$4);
                     if(_csj_){var x$9=x$10,y$9=y$10;continue}
                     return _csj_}}
                 else
                  if(! y$9)return 1;
                 return 0}}
             return _csm_}
           break;
          case 10:
           if(10 === match[0])
            {var rhs0$11=match[1],lhs0$11=lhs[1];
             return caml_call1(caml_call1(equal_operation,lhs0$11),rhs0$11)}
           break;
          default:
           if(11 === match[0])
            {var
              rhs2$1=match[3],
              rhs1$7=match[2],
              rhs0$12=match[1],
              lhs2$1=lhs[3],
              lhs1$7=lhs[2],
              lhs0$12=lhs[1],
              _csk_=caml_string_equal(lhs0$12,rhs0$12),
              _csl_=_csk_?caml_call2(poly_v,lhs1$7,rhs1$7):_csk_;
             return _csl_
                     ?caml_call1(caml_call1(Utils_Bigint[1],lhs2$1),rhs2$1)
                     :_csl_}}
        return 0});
    caml_update_dummy
     (equal$6,
      function(lhs,rhs)
       {var _cr3_=rhs[1],_cr4_=lhs[1];
        return caml_call1
                (caml_call1
                  (caml_call1
                    (equal_value_f,function(x){return caml_call1(equal$6,x)}),
                   _cr4_),
                 _cr3_)});
    caml_update_dummy
     (equal_operation,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           var _crU_=lhs[3],_crV_=lhs[2],_crW_=lhs[1];
           if(0 === match[0])
            {var
              rhsamount=match[3],
              rhsdestination=match[2],
              rhsparams=match[1],
              _crX_=caml_call1(caml_call1(equal$6,_crW_),rhsparams),
              _crY_=
               _crX_
                ?equal_lcontract
                  (function(x){return caml_call1(equal$5,x)},
                   _crV_,
                   rhsdestination)
                :_crX_;
             return _crY_
                     ?caml_call1(caml_call1(Utils_Bigint[1],_crU_),rhsamount)
                     :_crY_}
           break;
          case 1:
           var _crZ_=lhs[1];
           if(1 === match[0])
            {var rhs0=match[1];
             if(_crZ_)
              {if(rhs0)
                {var b=rhs0[1],a=_crZ_[1];return caml_string_equal(a,b)}}
             else
              if(! rhs0)return 1;
             return 0}
           break;
          default:
           var _cr0_=lhs[2],_cr1_=lhs[1];
           if(2 === match[0])
            {var
              rhsinstance=match[2],
              rhsid=match[1],
              _cr2_=caml_call1(caml_call1(equal_contract_id,_cr1_),rhsid);
             return _cr2_
                     ?caml_call1(caml_call1(equal_instance,_cr0_),rhsinstance)
                     :_cr2_}}
        return 0});
    caml_update_dummy
     (equal_instance,
      function(lhs,rhs)
       {var
         _crR_=rhs[1],
         _crS_=caml_call1(caml_call1(equal_tcontract,lhs[1]),_crR_);
        if(_crS_)
         {var _crT_=rhs[2];
          return caml_call1(caml_call1(equal_contract_state,lhs[2]),_crT_)}
        return _crS_});
    caml_update_dummy
     (equal_contract_state,
      function(lhs,rhs)
       {var
         _cry_=rhs[1],
         _crz_=caml_call1(caml_call1(Utils_Bigint[1],lhs[1]),_cry_);
        if(_crz_)
         {var _crA_=rhs[2],_crB_=lhs[2],switch$0=0;
          if(_crB_)
           if(_crA_)
            var
             b=_crA_[1],
             a=_crB_[1],
             _crC_=caml_call1(caml_call1(equal$6,a),b);
           else
            switch$0 = 1;
          else
           if(_crA_)switch$0 = 1;else var _crC_=1;
          if(switch$0)var _crC_=0;
          var _crD_=_crC_}
        else
         var _crD_=_crz_;
        if(_crD_)
         {var _crE_=rhs[3],_crF_=lhs[3],switch$1=0;
          if(_crF_)
           if(_crE_)
            var b$0=_crE_[1],a$0=_crF_[1],_crG_=caml_string_equal(a$0,b$0);
           else
            switch$1 = 1;
          else
           if(_crE_)switch$1 = 1;else var _crG_=1;
          if(switch$1)var _crG_=0;
          var _crH_=_crG_}
        else
         var _crH_=_crD_;
        if(_crH_)
         {var x=lhs[4],y=rhs[4];
          for(;;)
           {var switch$2=0;
            if(x)
             if(y)
              {var
                y$0=y[2],
                b$1=y[1],
                x$0=x[2],
                a$1=x[1],
                rhs1=b$1[2],
                rhs0=b$1[1],
                lhs1=a$1[2],
                lhs0=a$1[1],
                _crI_=caml_string_equal(lhs0,rhs0);
               if(_crI_)
                {var switch$3=0;
                 if(typeof lhs1 === "number")
                  if(418396260 === lhs1)
                   if(418396260 === rhs1)var _crK_=1;else switch$3 = 1;
                  else
                   if(919067353 === lhs1 && 919067353 === rhs1)
                    var _crK_=1;
                   else
                    switch$3 = 1;
                 else
                  if
                   (-964680357
                    ===
                    lhs1[1]
                    &&
                    !
                    (typeof rhs1 === "number" || ! (-964680357 === rhs1[1])))
                   {var
                     rhs$0=rhs1[2],
                     lhs$0=lhs1[2],
                     rhs1$0=rhs$0[2],
                     rhs0$0=rhs$0[1],
                     lhs1$0=lhs$0[2],
                     lhs0$0=lhs$0[1],
                     _crQ_=equal_tlambda(lhs0$0,rhs0$0);
                    if(_crQ_)
                     {var x$1=lhs1$0,y$1=rhs1$0;
                      for(;;)
                       {var switch$4=0;
                        if(x$1)
                         {if(y$1)
                           {var
                             y$2=y$1[2],
                             b$2=y$1[1],
                             x$2=x$1[2],
                             a$2=x$1[1],
                             _crJ_=caml_call1(caml_call1(equal$6,a$2),b$2);
                            if(_crJ_){var x$1=x$2,y$1=y$2;continue}
                            var _crK_=_crJ_;
                            switch$4 = 1}}
                        else
                         if(! y$1){var _crK_=1;switch$4 = 1}
                        if(! switch$4)var _crK_=0;
                        break}}
                    else
                     var _crK_=_crQ_}
                  else
                   switch$3 = 1;
                 if(switch$3)var _crK_=0}
               else
                var _crK_=_crI_;
               if(_crK_){var x=x$0,y=y$0;continue}
               var _crL_=_crK_}
             else
              switch$2 = 1;
            else
             if(y)switch$2 = 1;else var _crL_=1;
            if(switch$2)var _crL_=0;
            var _crM_=_crL_;
            break}}
        else
         var _crM_=_crH_;
        if(_crM_)
         {var x$3=lhs[5],y$3=rhs[5];
          for(;;)
           {if(x$3)
             {if(y$3)
               {var
                 y$4=y$3[2],
                 b$3=y$3[1],
                 x$4=x$3[2],
                 a$3=x$3[1],
                 rhs1$1=b$3[2],
                 rhs0$1=b$3[1],
                 lhs1$1=a$3[2],
                 lhs0$1=a$3[1],
                 _crN_=caml_string_equal(lhs0$1,rhs0$1);
                if(_crN_)
                 var
                  _crO_=function(x){return caml_call1(equal$6,x)},
                  _crP_=
                   caml_call1
                    (caml_call1(caml_call1(Utils_Misc[17],_crO_),lhs1$1),rhs1$1);
                else
                 var _crP_=_crN_;
                if(_crP_){var x$3=x$4,y$3=y$4;continue}
                return _crP_}}
            else
             if(! y$3)return 1;
            return 0}}
        return _crM_});
    var
     compare_value_f=
      function _crx_(_cru_,_crv_,_crw_){return _crx_.fun(_cru_,_crv_,_crw_)},
     compare$4=function _crt_(_crr_,_crs_){return _crt_.fun(_crr_,_crs_)},
     compare_operation=
      function _crq_(_cro_,_crp_){return _crq_.fun(_cro_,_crp_)},
     compare_instance=
      function _crn_(_crl_,_crm_){return _crn_.fun(_crl_,_crm_)},
     compare_contract_state=
      function _crk_(_cri_,_crj_){return _crk_.fun(_cri_,_crj_)};
    caml_update_dummy
     (compare_value_f,
      function(poly_v,lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var rhs0=match[1],lhs0=lhs[1];
             return caml_call1(caml_call1(compare$1,lhs0),rhs0)}
           break;
          case 1:
           if(1 === match[0])
            {var rhs0$0=match[1],lhs0$0=lhs[1];
             return caml_call1(caml_call1(compare$1,lhs0$0),rhs0$0)}
           break;
          case 2:
           if(2 === match[0])
            {var rhs0$1=match[1],lhs0$1=lhs[1];
             return caml_call1
                     (caml_call1
                       (caml_call1
                         (compare_lcontract,
                          function(x){return caml_call1(compare$3,x)}),
                        lhs0$1),
                      rhs0$1)}
           break;
          case 3:
           if(3 === match[0])
            {var
              rhs1=match[2],
              rhs0$2=match[1],
              lhs1=lhs[2],
              lhs0$2=lhs[1],
              x=caml_call1(caml_call1(compare,lhs0$2),rhs0$2);
             if(0 === x)
              {var x$0=lhs1,y=rhs1;
               for(;;)
                {if(x$0)
                  {if(y)
                    {var
                      y$0=y[2],
                      b=y[1],
                      x$1=x$0[2],
                      a=x$0[1],
                      rhs1$0=b[2],
                      rhs0$3=b[1],
                      lhs1$0=a[2],
                      lhs0$3=a[1],
                      x$2=caml_string_compare(lhs0$3,rhs0$3),
                      x$3=0 === x$2?caml_call2(poly_v,lhs1$0,rhs1$0):x$2;
                     if(0 === x$3){var x$0=x$1,y=y$0;continue}
                     return x$3}
                   return 1}
                 return y?-1:0}}
             return x}
           break;
          case 4:
           if(4 === match[0])
            {var
              rhs3=match[4],
              rhs2=match[3],
              rhs1$1=match[2],
              rhs0$4=match[1],
              lhs3=lhs[4],
              lhs2=lhs[3],
              lhs1$1=lhs[2],
              lhs0$4=lhs[1],
              x$4=caml_call1(caml_call1(compare,lhs0$4),rhs0$4);
             if(0 === x$4)
              {var
                x$5=
                 caml_call1
                  (caml_call1
                    (caml_call1
                      (compare_row,function(x){return caml_call1(compare$3,x)}),
                     lhs1$1),
                   rhs1$1);
               if(0 === x$5)
                {var x$6=caml_string_compare(lhs2,rhs2);
                 return 0 === x$6?caml_call2(poly_v,lhs3,rhs3):x$6}
               return x$5}
             return x$4}
           break;
          case 5:
           if(5 === match[0])
            {var
              rhs1$2=match[2],
              rhs0$5=match[1],
              lhs1$2=lhs[2],
              lhs0$5=lhs[1],
              x$7=caml_call1(caml_call1(compare$3,lhs0$5),rhs0$5);
             if(0 === x$7)
              {var x$8=lhs1$2,y$1=rhs1$2;
               for(;;)
                {if(x$8)
                  {if(y$1)
                    {var
                      y$2=y$1[2],
                      b$0=y$1[1],
                      x$9=x$8[2],
                      a$0=x$8[1],
                      x$10=caml_call2(poly_v,a$0,b$0);
                     if(0 === x$10){var x$8=x$9,y$1=y$2;continue}
                     return x$10}
                   return 1}
                 return y$1?-1:0}}
             return x$7}
           break;
          case 6:
           if(6 === match[0])
            {var
              rhs1$3=match[2],
              rhs0$6=match[1],
              lhs1$3=lhs[2],
              lhs0$6=lhs[1],
              x$11=caml_call1(caml_call1(compare$3,lhs0$6),rhs0$6);
             if(0 === x$11)
              {var x$12=lhs1$3,y$3=rhs1$3;
               for(;;)
                {if(x$12)
                  {if(y$3)
                    {var
                      y$4=y$3[2],
                      b$1=y$3[1],
                      x$13=x$12[2],
                      a$1=x$12[1],
                      x$14=caml_call2(poly_v,a$1,b$1);
                     if(0 === x$14){var x$12=x$13,y$3=y$4;continue}
                     return x$14}
                   return 1}
                 return y$3?-1:0}}
             return x$11}
           break;
          case 7:
           if(7 === match[0])
            {var
              rhs3$0=match[4],
              rhs2$0=match[3],
              rhs1$4=match[2],
              rhs0$7=match[1],
              lhs3$0=lhs[4],
              lhs2$0=lhs[3],
              lhs1$4=lhs[2],
              lhs0$7=lhs[1],
              x$15=caml_call1(caml_call1(compare$3,lhs0$7),rhs0$7);
             if(0 === x$15)
              {var x$16=caml_call1(caml_call1(compare$3,lhs1$4),rhs1$4);
               if(0 === x$16)
                {var x$17=caml_int_compare(lhs2$0,rhs2$0);
                 if(0 === x$17)
                  {var x$18=lhs3$0,y$5=rhs3$0;
                   for(;;)
                    {if(x$18)
                      {if(y$5)
                        {var
                          y$6=y$5[2],
                          b$2=y$5[1],
                          x$19=x$18[2],
                          a$2=x$18[1],
                          rhs1$5=b$2[2],
                          rhs0$8=b$2[1],
                          lhs1$5=a$2[2],
                          lhs0$8=a$2[1],
                          x$20=caml_call2(poly_v,lhs0$8,rhs0$8),
                          x$21=0 === x$20?caml_call2(poly_v,lhs1$5,rhs1$5):x$20;
                         if(0 === x$21){var x$18=x$19,y$5=y$6;continue}
                         return x$21}
                       return 1}
                     return y$5?-1:0}}
                 return x$17}
               return x$16}
             return x$15}
           break;
          case 8:
           if(8 === match[0])
            {var rhs0$9=match[1],lhs0$9=lhs[1],x$22=lhs0$9,y$7=rhs0$9;
             for(;;)
              {if(x$22)
                {if(y$7)
                  {var
                    y$8=y$7[2],
                    b$3=y$7[1],
                    x$23=x$22[2],
                    a$3=x$22[1],
                    x$24=caml_call2(poly_v,a$3,b$3);
                   if(0 === x$24){var x$22=x$23,y$7=y$8;continue}
                   return x$24}
                 return 1}
               return y$7?-1:0}}
           break;
          case 9:
           if(9 === match[0])
            {var
              rhs1$6=match[2],
              rhs0$10=match[1],
              lhs1$6=lhs[2],
              lhs0$10=lhs[1],
              x$30=compare_tlambda(lhs0$10,rhs0$10);
             if(0 === x$30)
              {var x$25=lhs1$6,y$9=rhs1$6;
               for(;;)
                {if(x$25)
                  {if(y$9)
                    {var
                      y$10=y$9[2],
                      b$4=y$9[1],
                      x$26=x$25[2],
                      a$4=x$25[1],
                      x$27=caml_call2(poly_v,a$4,b$4);
                     if(0 === x$27){var x$25=x$26,y$9=y$10;continue}
                     return x$27}
                   return 1}
                 return y$9?-1:0}}
             return x$30}
           break;
          case 10:
           if(10 === match[0])
            {var rhs0$11=match[1],lhs0$11=lhs[1];
             return caml_call1(caml_call1(compare_operation,lhs0$11),rhs0$11)}
           break;
          default:
           if(11 === match[0])
            {var
              rhs2$1=match[3],
              rhs1$7=match[2],
              rhs0$12=match[1],
              lhs2$1=lhs[3],
              lhs1$7=lhs[2],
              lhs0$12=lhs[1],
              x$28=caml_string_compare(lhs0$12,rhs0$12);
             if(0 === x$28)
              {var x$29=caml_call2(poly_v,lhs1$7,rhs1$7);
               return 0 === x$29
                       ?caml_call1(caml_call1(Utils_Bigint[2],lhs2$1),rhs2$1)
                       :x$29}
             return x$28}}
        function to_int(param)
         {switch(param[0])
           {case 0:return 0;
            case 1:return 1;
            case 2:return 2;
            case 3:return 3;
            case 4:return 4;
            case 5:return 5;
            case 6:return 6;
            case 7:return 7;
            case 8:return 8;
            case 9:return 9;
            case 10:return 10;
            default:return 11}}
        var _crh_=to_int(match);
        return caml_int_compare(to_int(lhs),_crh_)});
    caml_update_dummy
     (compare$4,
      function(lhs,rhs)
       {var _crf_=rhs[1],_crg_=lhs[1];
        return caml_call1
                (caml_call1
                  (caml_call1
                    (compare_value_f,
                     function(x){return caml_call1(compare$4,x)}),
                   _crg_),
                 _crf_)});
    caml_update_dummy
     (compare_operation,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           var _cq9_=lhs[3],_cq__=lhs[2],_cq$_=lhs[1];
           if(0 === match[0])
            {var
              rhsamount=match[3],
              rhsdestination=match[2],
              rhsparams=match[1],
              x=caml_call1(caml_call1(compare$4,_cq$_),rhsparams);
             if(0 === x)
              {var
                x$0=
                 caml_call1
                  (caml_call1
                    (caml_call1
                      (compare_lcontract,
                       function(x){return caml_call1(compare$3,x)}),
                     _cq__),
                   rhsdestination);
               return 0 === x$0
                       ?caml_call1(caml_call1(Utils_Bigint[2],_cq9_),rhsamount)
                       :x$0}
             return x}
           break;
          case 1:
           var _crb_=lhs[1];
           if(1 === match[0])
            {var rhs0=match[1];
             if(_crb_)
              {var _crc_=_crb_[1];
               if(rhs0){var b=rhs0[1];return caml_string_compare(_crc_,b)}
               return 1}
             return rhs0?-1:0}
           break;
          default:
           var _crd_=lhs[2],_cre_=lhs[1];
           if(2 === match[0])
            {var
              rhsinstance=match[2],
              rhsid=match[1],
              x$1=caml_call1(caml_call1(compare_contract_id,_cre_),rhsid);
             return 0 === x$1
                     ?caml_call1(caml_call1(compare_instance,_crd_),rhsinstance)
                     :x$1}}
        function to_int(param)
         {switch(param[0]){case 0:return 0;case 1:return 1;default:return 2}}
        var _cra_=to_int(match);
        return caml_int_compare(to_int(lhs),_cra_)});
    caml_update_dummy
     (compare_instance,
      function(lhs,rhs)
       {var
         _cq7_=rhs[1],
         x=caml_call1(caml_call1(compare_tcontract,lhs[1]),_cq7_);
        if(0 === x)
         {var _cq8_=rhs[2];
          return caml_call1(caml_call1(compare_contract_state,lhs[2]),_cq8_)}
        return x});
    caml_update_dummy
     (compare_contract_state,
      function(lhs,rhs)
       {var
         _cqY_=rhs[1],
         x=caml_call1(caml_call1(Utils_Bigint[2],lhs[1]),_cqY_);
        if(0 === x)
         {var _cqZ_=rhs[2],_cq0_=lhs[2];
          if(_cq0_)
           {var _cq1_=_cq0_[1];
            if(_cqZ_)
             var b=_cqZ_[1],x$0=caml_call1(caml_call1(compare$4,_cq1_),b);
            else
             var x$0=1}
          else
           var x$0=_cqZ_?-1:0;
          if(0 === x$0)
           {var _cq2_=rhs[3],_cq3_=lhs[3];
            if(_cq3_)
             {var _cq4_=_cq3_[1];
              if(_cq2_)
               var b$0=_cq2_[1],x$1=caml_string_compare(_cq4_,b$0);
              else
               var x$1=1}
            else
             var x$1=_cq2_?-1:0;
            if(0 === x$1)
             {var x$2=lhs[4],y=rhs[4];
              for(;;)
               {if(x$2)
                 if(y)
                  {var
                    y$0=y[2],
                    b$1=y[1],
                    x$3=x$2[2],
                    a=x$2[1],
                    rhs1=b$1[2],
                    rhs0=b$1[1],
                    lhs1=a[2],
                    lhs0=a[1],
                    x$4=caml_string_compare(lhs0,rhs0);
                   if(0 === x$4)
                    {var switch$0=0;
                     if(typeof lhs1 === "number")
                      if(919067353 <= lhs1)
                       if(919067353 === rhs1)var x$8=0;else switch$0 = 1;
                      else
                       if(418396260 === rhs1)var x$8=0;else switch$0 = 1;
                     else
                      if(typeof rhs1 === "number" || ! (-964680357 === rhs1[1]))
                       switch$0 = 1;
                      else
                       {var
                         rhs$0=rhs1[2],
                         lhs$0=lhs1[2],
                         rhs1$0=rhs$0[2],
                         rhs0$0=rhs$0[1],
                         lhs1$0=lhs$0[2],
                         lhs0$0=lhs$0[1],
                         x$14=compare_tlambda(lhs0$0,rhs0$0);
                        if(0 === x$14)
                         {var x$5=lhs1$0,y$1=rhs1$0;
                          for(;;)
                           {if(x$5)
                             if(y$1)
                              {var
                                y$2=y$1[2],
                                b$2=y$1[1],
                                x$6=x$5[2],
                                a$0=x$5[1],
                                x$7=caml_call1(caml_call1(compare$4,a$0),b$2);
                               if(0 === x$7){var x$5=x$6,y$1=y$2;continue}
                               var x$8=x$7}
                             else
                              var x$8=1;
                            else
                             var x$8=y$1?-1:0;
                            break}}
                        else
                         var x$8=x$14}
                     if(switch$0)
                      var
                       to_int=
                        function(param)
                         {return typeof param === "number"?919067353 <= param?1:0:2},
                       _cq5_=to_int(rhs1),
                       x$8=caml_int_compare(to_int(lhs1),_cq5_)}
                   else
                    var x$8=x$4;
                   if(0 === x$8){var x$2=x$3,y=y$0;continue}
                   var x$9=x$8}
                 else
                  var x$9=1;
                else
                 var x$9=y?-1:0;
                if(0 === x$9)
                 {var x$10=lhs[5],y$3=rhs[5];
                  for(;;)
                   {if(x$10)
                     {if(y$3)
                       {var
                         y$4=y$3[2],
                         b$3=y$3[1],
                         x$11=x$10[2],
                         a$1=x$10[1],
                         rhs1$1=b$3[2],
                         rhs0$1=b$3[1],
                         lhs1$1=a$1[2],
                         lhs0$1=a$1[1],
                         x$12=caml_string_compare(lhs0$1,rhs0$1);
                        if(0 === x$12)
                         var
                          _cq6_=function(x){return caml_call1(compare$4,x)},
                          x$13=
                           caml_call1
                            (caml_call1(caml_call1(Utils_Misc[18],_cq6_),lhs1$1),rhs1$1);
                        else
                         var x$13=x$12;
                        if(0 === x$13){var x$10=x$11,y$3=y$4;continue}
                        return x$13}
                      return 1}
                    return y$3?-1:0}}
                return x$9}}
            return x$1}
          return x$0}
        return x});
    var
     pp_value_f=
      function _cqX_(_cqU_,_cqV_,_cqW_){return _cqX_.fun(_cqU_,_cqV_,_cqW_)},
     show_value_f=function _cqT_(_cqR_,_cqS_){return _cqT_.fun(_cqR_,_cqS_)},
     pp_value=function _cqQ_(_cqO_,_cqP_){return _cqQ_.fun(_cqO_,_cqP_)},
     show_value=function _cqN_(_cqM_){return _cqN_.fun(_cqM_)},
     pp_operation=function _cqL_(_cqJ_,_cqK_){return _cqL_.fun(_cqJ_,_cqK_)},
     show_operation=function _cqI_(_cqH_){return _cqI_.fun(_cqH_)},
     pp_instance=function _cqG_(_cqE_,_cqF_){return _cqG_.fun(_cqE_,_cqF_)},
     show_instance=function _cqD_(_cqC_){return _cqD_.fun(_cqC_)},
     pp_contract_state=
      function _cqB_(_cqz_,_cqA_){return _cqB_.fun(_cqz_,_cqA_)},
     show_contract_state=function _cqy_(_cqx_){return _cqy_.fun(_cqx_)};
    caml_update_dummy
     (pp_value_f,
      function(poly_v,fmt,param)
       {switch(param[0])
         {case 0:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_qs_);
           caml_call1(caml_call1(pp$2,fmt),a0);
           return caml_call2(Stdlib_format[123],fmt,_qt_);
          case 1:
           var a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_qu_);
           caml_call1(caml_call1(pp$2,fmt),a0$0);
           return caml_call2(Stdlib_format[123],fmt,_qv_);
          case 2:
           var a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_qw_);
           pp_lcontract(function(fmt){return caml_call1(pp$4,fmt)},fmt,a0$1);
           return caml_call2(Stdlib_format[123],fmt,_qx_);
          case 3:
           var a1=param[2],a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_qy_);
           caml_call1(caml_call1(pp$0,fmt),a0$2);
           caml_call2(Stdlib_format[123],fmt,_qz_);
           caml_call2(Stdlib_format[123],fmt,_qA_);
           var
            _cql_=0,
            _cqm_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_qB_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_qC_);
               caml_call1(caml_call2(Stdlib_format[123],fmt,_qD_),a0);
               caml_call2(Stdlib_format[123],fmt,_qE_);
               caml_call1(caml_call1(poly_v,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_qF_);
               return 1};
           caml_call3(Stdlib_list[22],_cqm_,_cql_,a1);
           caml_call2(Stdlib_format[123],fmt,_qG_);
           return caml_call2(Stdlib_format[123],fmt,_qH_);
          case 4:
           var a3=param[4],a2=param[3],a1$0=param[2],a0$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_qI_);
           caml_call1(caml_call1(pp$0,fmt),a0$3);
           caml_call2(Stdlib_format[123],fmt,_qJ_);
           pp_row(function(fmt){return caml_call1(pp$4,fmt)},fmt,a1$0);
           caml_call2(Stdlib_format[123],fmt,_qK_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_qL_),a2);
           caml_call2(Stdlib_format[123],fmt,_qM_);
           caml_call1(caml_call1(poly_v,fmt),a3);
           return caml_call2(Stdlib_format[123],fmt,_qN_);
          case 5:
           var a1$1=param[2],a0$4=param[1];
           caml_call2(Stdlib_format[123],fmt,_qO_);
           caml_call1(caml_call1(pp$4,fmt),a0$4);
           caml_call2(Stdlib_format[123],fmt,_qP_);
           caml_call2(Stdlib_format[123],fmt,_qQ_);
           var
            _cqn_=0,
            _cqo_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_qR_);
               caml_call1(caml_call1(poly_v,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cqo_,_cqn_,a1$1);
           caml_call2(Stdlib_format[123],fmt,_qS_);
           return caml_call2(Stdlib_format[123],fmt,_qT_);
          case 6:
           var a1$2=param[2],a0$5=param[1];
           caml_call2(Stdlib_format[123],fmt,_qU_);
           caml_call1(caml_call1(pp$4,fmt),a0$5);
           caml_call2(Stdlib_format[123],fmt,_qV_);
           caml_call2(Stdlib_format[123],fmt,_qW_);
           var
            _cqp_=0,
            _cqq_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_qX_);
               caml_call1(caml_call1(poly_v,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cqq_,_cqp_,a1$2);
           caml_call2(Stdlib_format[123],fmt,_qY_);
           return caml_call2(Stdlib_format[123],fmt,_qZ_);
          case 7:
           var a3$0=param[4],a2$0=param[3],a1$3=param[2],a0$6=param[1];
           caml_call2(Stdlib_format[123],fmt,_q0_);
           caml_call1(caml_call1(pp$4,fmt),a0$6);
           caml_call2(Stdlib_format[123],fmt,_q1_);
           caml_call1(caml_call1(pp$4,fmt),a1$3);
           caml_call2(Stdlib_format[123],fmt,_q2_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_q3_),a2$0);
           caml_call2(Stdlib_format[123],fmt,_q4_);
           caml_call2(Stdlib_format[123],fmt,_q5_);
           var
            _cqr_=0,
            _cqs_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_q6_);
               var a1=x[2],a0=x[1];
               caml_call2(Stdlib_format[123],fmt,_q7_);
               caml_call1(caml_call1(poly_v,fmt),a0);
               caml_call2(Stdlib_format[123],fmt,_q8_);
               caml_call1(caml_call1(poly_v,fmt),a1);
               caml_call2(Stdlib_format[123],fmt,_q9_);
               return 1};
           caml_call3(Stdlib_list[22],_cqs_,_cqr_,a3$0);
           caml_call2(Stdlib_format[123],fmt,_q__);
           return caml_call2(Stdlib_format[123],fmt,_q$_);
          case 8:
           var a0$7=param[1];
           caml_call2(Stdlib_format[123],fmt,_ra_);
           caml_call2(Stdlib_format[123],fmt,_rb_);
           var
            _cqt_=0,
            _cqu_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_rc_);
               caml_call1(caml_call1(poly_v,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cqu_,_cqt_,a0$7);
           caml_call2(Stdlib_format[123],fmt,_rd_);
           return caml_call2(Stdlib_format[123],fmt,_re_);
          case 9:
           var a1$4=param[2],a0$8=param[1];
           caml_call2(Stdlib_format[123],fmt,_rf_);
           caml_call1(caml_call1(pp_tlambda,fmt),a0$8);
           caml_call2(Stdlib_format[123],fmt,_rg_);
           caml_call2(Stdlib_format[123],fmt,_rh_);
           var
            _cqv_=0,
            _cqw_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_ri_);
               caml_call1(caml_call1(poly_v,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cqw_,_cqv_,a1$4);
           caml_call2(Stdlib_format[123],fmt,_rj_);
           return caml_call2(Stdlib_format[123],fmt,_rk_);
          case 10:
           var a0$9=param[1];
           caml_call2(Stdlib_format[123],fmt,_rl_);
           caml_call1(caml_call1(pp_operation,fmt),a0$9);
           return caml_call2(Stdlib_format[123],fmt,_rm_);
          default:
           var a2$1=param[3],a1$5=param[2],a0$10=param[1];
           caml_call2(Stdlib_format[123],fmt,_rn_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_ro_),a0$10);
           caml_call2(Stdlib_format[123],fmt,_rp_);
           caml_call1(caml_call1(poly_v,fmt),a1$5);
           caml_call2(Stdlib_format[123],fmt,_rq_);
           caml_call1(caml_call1(Utils_Bigint[3],fmt),a2$1);
           return caml_call2(Stdlib_format[123],fmt,_rr_)}});
    caml_update_dummy
     (show_value_f,
      function(poly_v,x)
       {var _cqk_=caml_call1(pp_value_f,poly_v);
        return caml_call3(Stdlib_format[127],_rs_,_cqk_,x)});
    caml_update_dummy
     (pp_value,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_rt_);
        caml_call3(Stdlib_format[123],fmt,_ru_,cst_v);
        var _cqj_=x[1];
        caml_call1
         (caml_call2
           (pp_value_f,function(fmt){return caml_call1(pp_value,fmt)},fmt),
          _cqj_);
        caml_call2(Stdlib_format[123],fmt,_rv_);
        return caml_call2(Stdlib_format[123],fmt,_rw_)});
    caml_update_dummy
     (show_value,
      function(x){return caml_call3(Stdlib_format[127],_rx_,pp_value,x)});
    caml_update_dummy
     (pp_operation,
      function(fmt,param)
       {switch(param[0])
         {case 0:
           var aamount=param[3],adestination=param[2],aparams=param[1];
           caml_call2(Stdlib_format[123],fmt,_ry_);
           caml_call3(Stdlib_format[123],fmt,_rz_,cst_params);
           caml_call1(caml_call1(pp_value,fmt),aparams);
           caml_call2(Stdlib_format[123],fmt,_rA_);
           caml_call2(Stdlib_format[123],fmt,_rB_);
           caml_call3(Stdlib_format[123],fmt,_rC_,cst_destination$0);
           pp_lcontract
            (function(fmt){return caml_call1(pp$4,fmt)},fmt,adestination);
           caml_call2(Stdlib_format[123],fmt,_rD_);
           caml_call2(Stdlib_format[123],fmt,_rE_);
           caml_call3(Stdlib_format[123],fmt,_rF_,cst_amount$1);
           caml_call1(caml_call1(Utils_Bigint[3],fmt),aamount);
           caml_call2(Stdlib_format[123],fmt,_rG_);
           return caml_call2(Stdlib_format[123],fmt,_rH_);
          case 1:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_rI_);
           if(a0)
            {var x=a0[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$24);
             caml_call1(caml_call2(Stdlib_format[123],fmt,_rJ_),x);
             caml_call2(Stdlib_format[13],fmt,cst$26)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$24);
           return caml_call2(Stdlib_format[123],fmt,_rK_);
          default:
           var ainstance=param[2],aid=param[1];
           caml_call2(Stdlib_format[123],fmt,_rL_);
           caml_call3(Stdlib_format[123],fmt,_rM_,cst_id$2);
           caml_call1(caml_call1(pp_contract_id,fmt),aid);
           caml_call2(Stdlib_format[123],fmt,_rN_);
           caml_call2(Stdlib_format[123],fmt,_rO_);
           caml_call3(Stdlib_format[123],fmt,_rP_,cst_instance);
           caml_call1(caml_call1(pp_instance,fmt),ainstance);
           caml_call2(Stdlib_format[123],fmt,_rQ_);
           return caml_call2(Stdlib_format[123],fmt,_rR_)}});
    caml_update_dummy
     (show_operation,
      function(x){return caml_call3(Stdlib_format[127],_rS_,pp_operation,x)});
    caml_update_dummy
     (pp_instance,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_rT_);
        caml_call3(Stdlib_format[123],fmt,_rU_,cst_template);
        var _cqh_=x[1];
        caml_call1(caml_call1(pp_tcontract,fmt),_cqh_);
        caml_call2(Stdlib_format[123],fmt,_rV_);
        caml_call2(Stdlib_format[123],fmt,_rW_);
        caml_call3(Stdlib_format[123],fmt,_rX_,cst_state$0);
        var _cqi_=x[2];
        caml_call1(caml_call1(pp_contract_state,fmt),_cqi_);
        caml_call2(Stdlib_format[123],fmt,_rY_);
        return caml_call2(Stdlib_format[123],fmt,_rZ_)});
    caml_update_dummy
     (show_instance,
      function(x){return caml_call3(Stdlib_format[127],_r0_,pp_instance,x)});
    caml_update_dummy
     (pp_contract_state,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_r1_);
        caml_call3(Stdlib_format[123],fmt,_r2_,cst_balance$1);
        var _cp7_=x[1];
        caml_call1(caml_call1(Utils_Bigint[3],fmt),_cp7_);
        caml_call2(Stdlib_format[123],fmt,_r3_);
        caml_call2(Stdlib_format[123],fmt,_r4_);
        caml_call3(Stdlib_format[123],fmt,_r5_,cst_storage$1);
        var _cp8_=x[2];
        if(_cp8_)
         {var x$0=_cp8_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$25);
          caml_call1(caml_call1(pp_value,fmt),x$0);
          caml_call2(Stdlib_format[13],fmt,cst$27)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$25);
        caml_call2(Stdlib_format[123],fmt,_r6_);
        caml_call2(Stdlib_format[123],fmt,_r7_);
        caml_call3(Stdlib_format[123],fmt,_r8_,cst_baker$1);
        var _cp9_=x[3];
        if(_cp9_)
         {var x$1=_cp9_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$26);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_r9_),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$28)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$26);
        caml_call2(Stdlib_format[123],fmt,_r__);
        caml_call2(Stdlib_format[123],fmt,_r$_);
        caml_call3(Stdlib_format[123],fmt,_sa_,cst_lazy_entry_points$1);
        var _cp__=x[4];
        caml_call2(Stdlib_format[123],fmt,_sb_);
        var _cp$_=0;
        function _cqa_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_sc_);
          var a1=x[2],a0=x[1];
          caml_call2(Stdlib_format[123],fmt,_sd_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_se_),a0);
          caml_call2(Stdlib_format[123],fmt,_sf_);
          if(typeof a1 === "number")
           if(919067353 <= a1)
            caml_call2(Stdlib_format[13],fmt,cst_Absent$0);
           else
            caml_call2(Stdlib_format[13],fmt,cst_Initial);
          else
           {var x$0=a1[2];
            caml_call2(Stdlib_format[123],fmt,_sg_);
            var a1$0=x$0[2],a0$0=x$0[1];
            caml_call2(Stdlib_format[123],fmt,_sh_);
            caml_call1(caml_call1(pp_tlambda,fmt),a0$0);
            caml_call2(Stdlib_format[123],fmt,_si_);
            caml_call2(Stdlib_format[123],fmt,_sj_);
            var
             _cqf_=0,
             _cqg_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_sk_);
                caml_call1(caml_call1(pp_value,fmt),x);
                return 1};
            caml_call3(Stdlib_list[22],_cqg_,_cqf_,a1$0);
            caml_call2(Stdlib_format[123],fmt,_sl_);
            caml_call2(Stdlib_format[123],fmt,_sm_);
            caml_call2(Stdlib_format[123],fmt,_sn_)}
          caml_call2(Stdlib_format[123],fmt,_so_);
          return 1}
        caml_call3(Stdlib_list[22],_cqa_,_cp$_,_cp__);
        caml_call2(Stdlib_format[123],fmt,_sp_);
        caml_call2(Stdlib_format[123],fmt,_sq_);
        caml_call2(Stdlib_format[123],fmt,_sr_);
        caml_call3(Stdlib_format[123],fmt,_ss_,cst_metadata$0);
        var _cqb_=x[5];
        caml_call2(Stdlib_format[123],fmt,_st_);
        var _cqc_=0;
        function _cqd_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_su_);
          var a1=x[2],a0=x[1];
          caml_call2(Stdlib_format[123],fmt,_sv_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_sw_),a0);
          caml_call2(Stdlib_format[123],fmt,_sx_);
          function _cqe_(fmt){return caml_call1(pp_value,fmt)}
          caml_call1(caml_call2(Utils_Misc[13],_cqe_,fmt),a1);
          caml_call2(Stdlib_format[123],fmt,_sy_);
          return 1}
        caml_call3(Stdlib_list[22],_cqd_,_cqc_,_cqb_);
        caml_call2(Stdlib_format[123],fmt,_sz_);
        caml_call2(Stdlib_format[123],fmt,_sA_);
        return caml_call2(Stdlib_format[123],fmt,_sB_)});
    caml_update_dummy
     (show_contract_state,
      function(x)
       {return caml_call3(Stdlib_format[127],_sC_,pp_contract_state,x)});
    function map_value_f(poly_v,param)
     {switch(param[0])
       {case 0:var a0=param[1];return [0,a0];
        case 1:var a0$0=param[1];return [1,a0$0];
        case 2:var a0$1=param[1];return [2,a0$1];
        case 3:
         var
          a1=param[2],
          a0$2=param[1],
          _cp4_=
           function(param)
            {var a1=param[2],a0=param[1];return [0,a0,caml_call1(poly_v,a1)]};
         return [3,a0$2,caml_call1(caml_call1(Stdlib_list[17],_cp4_),a1)];
        case 4:
         var a3=param[4],a2=param[3],a1$0=param[2],a0$3=param[1];
         return [4,a0$3,a1$0,a2,caml_call1(poly_v,a3)];
        case 5:
         var a1$1=param[2],a0$4=param[1];
         return [5,a0$4,caml_call1(caml_call1(Stdlib_list[17],poly_v),a1$1)];
        case 6:
         var a1$2=param[2],a0$5=param[1];
         return [6,a0$5,caml_call1(caml_call1(Stdlib_list[17],poly_v),a1$2)];
        case 7:
         var
          a3$0=param[4],
          a2$0=param[3],
          a1$3=param[2],
          a0$6=param[1],
          _cp5_=
           function(param)
            {var a1=param[2],a0=param[1],_cp6_=caml_call1(poly_v,a1);
             return [0,caml_call1(poly_v,a0),_cp6_]};
         return [7,
                 a0$6,
                 a1$3,
                 a2$0,
                 caml_call1(caml_call1(Stdlib_list[17],_cp5_),a3$0)];
        case 8:
         var a0$7=param[1];
         return [8,caml_call1(caml_call1(Stdlib_list[17],poly_v),a0$7)];
        case 9:
         var a1$4=param[2],a0$8=param[1];
         return [9,a0$8,caml_call1(caml_call1(Stdlib_list[17],poly_v),a1$4)];
        case 10:var a0$9=param[1];return [10,a0$9];
        default:
         var a2$1=param[3],a1$5=param[2],a0$10=param[1];
         return [11,a0$10,caml_call1(poly_v,a1$5),a2$1]}}
    function map_value(x){return [0,x[1]]}
    function map_operation(param)
     {switch(param[0])
       {case 0:
         var aamount=param[3],adestination=param[2],aparams=param[1];
         return [0,aparams,adestination,aamount];
        case 1:var a0=param[1];return [1,a0];
        default:var ainstance=param[2],aid=param[1];return [2,aid,ainstance]}}
    function map_instance(x){return [0,x[1],x[2]]}
    function map_contract_state(x){return [0,x[1],x[2],x[3],x[4],x[5]]}
    function fold_value_f(poly_v,acc,param)
     {switch(param[0])
       {case 0:return acc;
        case 1:return acc;
        case 2:return acc;
        case 3:
         var
          a1=param[2],
          _cp2_=
           function(acc,param)
            {var a1=param[2];return caml_call2(poly_v,acc,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_cp2_),acc,a1);
        case 4:var a3=param[4];return caml_call2(poly_v,acc,a3);
        case 5:
         var a1$0=param[2];
         return caml_call2(caml_call1(Stdlib_list[22],poly_v),acc,a1$0);
        case 6:
         var a1$1=param[2];
         return caml_call2(caml_call1(Stdlib_list[22],poly_v),acc,a1$1);
        case 7:
         var
          a3$0=param[4],
          _cp3_=
           function(acc,param)
            {var a1=param[2],a0=param[1],acc$0=caml_call2(poly_v,acc,a0);
             return caml_call2(poly_v,acc$0,a1)};
         return caml_call2(caml_call1(Stdlib_list[22],_cp3_),acc,a3$0);
        case 8:
         var a0=param[1];
         return caml_call2(caml_call1(Stdlib_list[22],poly_v),acc,a0);
        case 9:
         var a1$2=param[2];
         return caml_call2(caml_call1(Stdlib_list[22],poly_v),acc,a1$2);
        case 10:return acc;
        default:
         var a1$3=param[2],acc$0=caml_call2(poly_v,acc,a1$3);return acc$0}}
    function fold_value(acc,x){return acc}
    function fold_operation(acc,param)
     {switch(param[0]){case 0:return acc;case 1:return acc;default:return acc}}
    function fold_instance(acc,x){return acc}
    function fold_contract_state(acc,x){return acc}
    function build_value(v){return [0,v]}
    function cata_value(f,param)
     {var v=param[1];
      return caml_call1
              (f,map_value_f(function(_cp1_){return cata_value(f,_cp1_)},v))}
    function f$0(param)
     {switch(param[0])
       {case 0:var l=param[1];return type_of_literal(l);
        case 1:
         var l$0=param[1];return bounded(type_of_literal(l$0),0,[0,l$0,0]);
        case 2:var match=param[1],type=match[3];return contract(type);
        case 3:
         var row=param[2],layout=param[1];return record(value(layout),row);
        case 4:
         var _cpT_=param[2],_cpS_=param[1];
         if(_cpT_ && ! caml_string_notequal(_cpT_[1][1],cst_None$27))
          {var _cpU_=_cpT_[2];
           if(_cpU_)
            {var _cpV_=_cpU_[1];
             if(! caml_string_notequal(_cpV_[1],cst_Some$27) && ! _cpU_[2])
              {var t=_cpV_[2];return option(t)}}}
         var row$0=param[2];
         return variant(value(_cpS_),row$0);
        case 5:var t$0=param[1];return list(t$0);
        case 6:var telement=param[1];return set$0(telement);
        case 7:
         var big=param[3],tvalue=param[2],tkey=param[1];
         return map$0(big,tkey,tvalue);
        case 8:var ts=param[1];return tuple(ts);
        case 9:
         var
          args=param[2],
          l$1=param[1],
          t$4=lambda(l$1[5][1],l$1[6][1]),
          args$0=args,
          t$1=t$4;
         for(;;)
          {if(args$0)
            {var _cpW_=t$1[1],switch$0=0;
             if(typeof _cpW_ === "number" || ! (3 === _cpW_[0]))
              switch$0 = 1;
             else
              {var _cpX_=_cpW_[1];
               if(typeof _cpX_ === "number" && ! _cpX_)
                {var _cpY_=_cpW_[2][1],switch$1=0;
                 if(typeof _cpY_ !== "number" && 9 === _cpY_[0])
                  {var _cpZ_=_cpY_[1];
                   if(_cpZ_)
                    {var _cp0_=_cpZ_[2];
                     if(_cp0_)
                      {if(! _cp0_[2])
                        {var
                          t$2=_cpW_[3],
                          t2=_cp0_[1],
                          args$1=args$0[2],
                          t$3=lambda(t2,t$2),
                          args$0=args$1,
                          t$1=t$3;
                         continue}
                       switch$1 = 1}
                     else
                      switch$1 = 1}
                   else
                    switch$1 = 1}}}
             return caml_call1(Stdlib[2],cst_not_a_lambda)}
           return t$1}
        case 10:return operation;
        default:var t$5=param[2];return ticket(t$5)}}
    function type_of_value(_cpR_){return cata_value(f$0,_cpR_)}
    var
     pp_tmessage=function _cpQ_(_cpO_,_cpP_){return _cpQ_.fun(_cpO_,_cpP_)},
     show_tmessage=function _cpN_(_cpM_){return _cpN_.fun(_cpM_)};
    caml_update_dummy
     (pp_tmessage,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_sD_);
        caml_call3(Stdlib_format[123],fmt,_sE_,cst_channel$0);
        var _cpK_=x[1];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_sF_),_cpK_);
        caml_call2(Stdlib_format[123],fmt,_sG_);
        caml_call2(Stdlib_format[123],fmt,_sH_);
        caml_call3(Stdlib_format[123],fmt,_sI_,cst_params$0);
        var _cpL_=x[2];
        caml_call1(caml_call1(pp_value,fmt),_cpL_);
        caml_call2(Stdlib_format[123],fmt,_sJ_);
        return caml_call2(Stdlib_format[123],fmt,_sK_)});
    caml_update_dummy
     (show_tmessage,
      function(x){return caml_call3(Stdlib_format[127],_sL_,pp_tmessage,x)});
    function size_tcontract(param)
     {var entry_points=param[6],_cpI_=0;
      function _cpJ_(s,ep){return s + caml_call1(size_tcommand,ep[7]) | 0}
      return caml_call3(Utils_List[25],_cpJ_,_cpI_,entry_points)}
    var
     pp_smart_except=
      function _cpH_(_cpF_,_cpG_){return _cpH_.fun(_cpF_,_cpG_)},
     show_smart_except=function _cpE_(_cpD_){return _cpE_.fun(_cpD_)};
    caml_update_dummy
     (pp_smart_except,
      function(fmt,param)
       {if(typeof param === "number")
         return caml_call2(Stdlib_format[13],fmt,cst_Br);
        var _cpy_=param[1];
        if(172818814 <= _cpy_)
         {if(771172693 === _cpy_)
           {var x=param[2];
            caml_call2(Stdlib_format[123],fmt,_sM_);
            caml_call1(caml_call1(pp_texpr,fmt),x);
            return caml_call2(Stdlib_format[123],fmt,_sN_)}
          if(936573133 <= _cpy_)
           {if(937565914 <= _cpy_)
             {var x$0=param[2];
              caml_call2(Stdlib_format[123],fmt,_sO_);
              caml_call1(caml_call1(pp$4,fmt),x$0);
              return caml_call2(Stdlib_format[123],fmt,_sP_)}
            var x$1=param[2];
            caml_call2(Stdlib_format[123],fmt,_sQ_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_sR_),x$1);
            return caml_call2(Stdlib_format[123],fmt,_sS_)}
          if(848053268 <= _cpy_)
           {var x$2=param[2];
            caml_call2(Stdlib_format[123],fmt,_sT_);
            pp_line_no(fmt,x$2);
            return caml_call2(Stdlib_format[123],fmt,_sU_)}
          var x$3=param[2];
          caml_call2(Stdlib_format[123],fmt,_sV_);
          caml_call2(Stdlib_format[123],fmt,_sW_);
          var
           _cpz_=0,
           _cpA_=
            function(sep,x)
             {if(sep)caml_call2(Stdlib_format[123],fmt,_sX_);
              caml_call1(caml_call1(pp_texpr,fmt),x);
              return 1};
          caml_call3(Stdlib_list[22],_cpA_,_cpz_,x$3);
          caml_call2(Stdlib_format[123],fmt,_sY_);
          return caml_call2(Stdlib_format[123],fmt,_sZ_)}
        if(4100400 <= _cpy_)
         {if(33867591 <= _cpy_)
           {var x$4=param[2];
            caml_call2(Stdlib_format[123],fmt,_s0_);
            caml_call1(caml_call1(Untyped[5],fmt),x$4);
            return caml_call2(Stdlib_format[123],fmt,_s1_)}
          var x$5=param[2];
          caml_call2(Stdlib_format[123],fmt,_s2_);
          caml_call2(Stdlib_format[123],fmt,_s3_);
          var
           _cpB_=0,
           _cpC_=
            function(sep,x)
             {if(sep)caml_call2(Stdlib_format[123],fmt,_s4_);
              caml_call1(caml_call1(pp_smart_except,fmt),x);
              return 1};
          caml_call3(Stdlib_list[22],_cpC_,_cpB_,x$5);
          caml_call2(Stdlib_format[123],fmt,_s5_);
          return caml_call2(Stdlib_format[123],fmt,_s6_)}
        if(-512962225 <= _cpy_)
         {var x$6=param[2];
          caml_call2(Stdlib_format[123],fmt,_s7_);
          caml_call1(caml_call1(pp$2,fmt),x$6);
          return caml_call2(Stdlib_format[123],fmt,_s8_)}
        var x$7=param[2];
        caml_call2(Stdlib_format[123],fmt,_s9_);
        caml_call1(caml_call1(pp_value,fmt),x$7);
        return caml_call2(Stdlib_format[123],fmt,_s__)});
    caml_update_dummy
     (show_smart_except,
      function(x)
       {return caml_call3(Stdlib_format[127],_s$_,pp_smart_except,x)});
    function pp_lazy_smart_except_list(fmt,param)
     {return caml_call2(Stdlib_format[13],fmt,cst_fun)}
    var
     equal_typing_constraint=
      function _cpx_(_cpv_,_cpw_){return _cpx_.fun(_cpv_,_cpw_)};
    caml_update_dummy
     (equal_typing_constraint,
      function(lhs,match)
       {switch(lhs[0])
         {case 0:
           if(0 === match[0])
            {var
              rhs2=match[3],
              rhs1=match[2],
              rhs0=match[1],
              lhs2=lhs[3],
              lhs1=lhs[2],
              lhs0=lhs[1],
              _co8_=caml_call1(caml_call1(equal_texpr,lhs0),rhs0),
              _co9_=_co8_?caml_call1(caml_call1(equal_texpr,lhs1),rhs1):_co8_;
             return _co9_?caml_call1(caml_call1(equal_texpr,lhs2),rhs2):_co9_}
           break;
          case 1:
           if(1 === match[0])
            {var
              rhs3=match[4],
              rhs2$0=match[3],
              rhs1$0=match[2],
              rhs0$0=match[1],
              lhs3=lhs[4],
              lhs2$0=lhs[3],
              lhs1$0=lhs[2],
              lhs0$0=lhs[1],
              _co__=caml_call1(caml_call1(equal_texpr,lhs0$0),rhs0$0),
              _co$_=
               _co__?caml_call1(caml_call1(equal_texpr,lhs1$0),rhs1$0):_co__,
              _cpa_=
               _co$_?caml_call1(caml_call1(equal_texpr,lhs2$0),rhs2$0):_co$_;
             return _cpa_?lhs3 === rhs3?1:0:_cpa_}
           break;
          case 2:
           if(2 === match[0])
            {var
              rhs2$1=match[3],
              rhs1$1=match[2],
              rhs0$1=match[1],
              lhs2$1=lhs[3],
              lhs1$1=lhs[2],
              lhs0$1=lhs[1],
              _cpb_=caml_call1(caml_call1(equal_texpr,lhs0$1),rhs0$1),
              _cpc_=
               _cpb_?caml_call1(caml_call1(equal_texpr,lhs1$1),rhs1$1):_cpb_;
             return _cpc_
                     ?caml_call1(caml_call1(equal_texpr,lhs2$1),rhs2$1)
                     :_cpc_}
           break;
          case 3:
           if(3 === match[0])
            {var
              rhs2$2=match[3],
              rhs1$2=match[2],
              rhs0$2=match[1],
              lhs2$2=lhs[3],
              lhs1$2=lhs[2],
              lhs0$2=lhs[1],
              _cpd_=caml_call1(caml_call1(equal_texpr,lhs0$2),rhs0$2),
              _cpe_=
               _cpd_?caml_call1(caml_call1(equal_texpr,lhs1$2),rhs1$2):_cpd_;
             return _cpe_
                     ?caml_call1(caml_call1(equal_texpr,lhs2$2),rhs2$2)
                     :_cpe_}
           break;
          case 4:
           if(4 === match[0])
            {var
              rhs2$3=match[3],
              rhs1$3=match[2],
              rhs0$3=match[1],
              lhs2$3=lhs[3],
              lhs1$3=lhs[2],
              lhs0$3=lhs[1],
              _cpf_=caml_call1(caml_call1(equal_texpr,lhs0$3),rhs0$3),
              _cpg_=
               _cpf_?caml_call1(caml_call1(equal_texpr,lhs1$3),rhs1$3):_cpf_;
             return _cpg_
                     ?caml_call1(caml_call1(equal_texpr,lhs2$3),rhs2$3)
                     :_cpg_}
           break;
          case 5:
           if(5 === match[0])
            {var
              rhs2$4=match[3],
              rhs1$4=match[2],
              rhs0$4=match[1],
              lhs2$4=lhs[3],
              lhs1$4=lhs[2],
              lhs0$4=lhs[1],
              _cph_=caml_call1(caml_call1(equal_texpr,lhs0$4),rhs0$4),
              _cpi_=
               _cph_?caml_call1(caml_call1(equal_texpr,lhs1$4),rhs1$4):_cph_;
             return _cpi_
                     ?caml_call1(caml_call1(equal_texpr,lhs2$4),rhs2$4)
                     :_cpi_}
           break;
          case 6:
           if(6 === match[0])
            {var rhs0$5=match[1],lhs0$5=lhs[1];
             return caml_call1(caml_call1(equal_texpr,lhs0$5),rhs0$5)}
           break;
          case 7:
           if(7 === match[0])
            {var
              rhs2$5=match[3],
              rhs1$5=match[2],
              rhs0$6=match[1],
              lhs2$5=lhs[3],
              lhs1$5=lhs[2],
              lhs0$6=lhs[1],
              _cpj_=caml_call1(caml_call1(equal_texpr,lhs0$6),rhs0$6),
              _cpk_=
               _cpj_?caml_call1(caml_call1(equal_texpr,lhs1$5),rhs1$5):_cpj_;
             return _cpk_?caml_call1(caml_call1(equal$5,lhs2$5),rhs2$5):_cpk_}
           break;
          case 8:
           if(8 === match[0])
            {var
              rhs2$6=match[3],
              rhs1$6=match[2],
              rhs0$7=match[1],
              lhs2$6=lhs[3],
              lhs1$6=lhs[2],
              lhs0$7=lhs[1],
              _cpl_=caml_call1(caml_call1(equal_texpr,lhs0$7),rhs0$7),
              _cpm_=
               _cpl_?caml_call1(caml_call1(equal_texpr,lhs1$6),rhs1$6):_cpl_;
             return _cpm_
                     ?caml_call1(caml_call1(equal_line_no,lhs2$6),rhs2$6)
                     :_cpm_}
           break;
          case 9:
           if(9 === match[0])
            {var rhs0$8=match[1],lhs0$8=lhs[1];
             return caml_call1(caml_call1(equal_texpr,lhs0$8),rhs0$8)}
           break;
          case 10:
           if(10 === match[0])
            {var rhs0$9=match[1],lhs0$9=lhs[1];
             return caml_call1(caml_call1(equal_texpr,lhs0$9),rhs0$9)}
           break;
          case 11:
           if(11 === match[0])
            {var
              rhs1$7=match[2],
              rhs0$10=match[1],
              lhs1$7=lhs[2],
              lhs0$10=lhs[1],
              _cpn_=caml_call1(caml_call1(equal$5,lhs0$10),rhs0$10),
              _cpo_=_cpn_?caml_call1(caml_call1(equal$5,lhs1$7),rhs1$7):_cpn_;
             return _cpo_?1:_cpo_}
           break;
          case 12:
           if(12 === match[0])
            {var
              rhs0$11=match[1],
              lhs0$11=lhs[1],
              _cpp_=caml_call1(caml_call1(equal$5,lhs0$11),rhs0$11);
             return _cpp_?1:_cpp_}
           break;
          case 13:
           if(13 === match[0])
            {var
              rhs1$8=match[2],
              rhs0$12=match[1],
              lhs1$8=lhs[2],
              lhs0$12=lhs[1],
              _cpq_=caml_call1(caml_call1(equal_texpr,lhs0$12),rhs0$12);
             return _cpq_
                     ?caml_call1(caml_call1(equal_texpr,lhs1$8),rhs1$8)
                     :_cpq_}
           break;
          case 14:
           if(14 === match[0])
            {var
              rhs1$9=match[2],
              rhs0$13=match[1],
              lhs1$9=lhs[2],
              lhs0$13=lhs[1],
              _cpr_=caml_call1(caml_call1(equal_texpr,lhs0$13),rhs0$13);
             return _cpr_?caml_call1(caml_call1(equal$5,lhs1$9),rhs1$9):_cpr_}
           break;
          case 15:
           if(15 === match[0])
            {var rhs0$14=match[1],lhs0$14=lhs[1];
             return caml_call1(caml_call1(equal_texpr,lhs0$14),rhs0$14)}
           break;
          case 16:
           if(16 === match[0])
            {var
              rhs1$10=match[2],
              rhs0$15=match[1],
              lhs1$10=lhs[2],
              lhs0$15=lhs[1],
              _cps_=caml_string_equal(lhs0$15,rhs0$15);
             return _cps_
                     ?caml_call1(caml_call1(equal$5,lhs1$10),rhs1$10)
                     :_cps_}
           break;
          default:
           if(17 === match[0])
            {var
              rhs2$7=match[3],
              rhs1$11=match[2],
              rhs0$16=match[1],
              lhs2$7=lhs[3],
              lhs1$11=lhs[2],
              lhs0$16=lhs[1],
              _cpt_=caml_call1(caml_call1(equal$5,lhs0$16),rhs0$16),
              _cpu_=
               _cpt_?caml_call1(caml_call1(equal$5,lhs1$11),rhs1$11):_cpt_;
             return _cpu_
                     ?caml_call1(caml_call1(equal_texpr,lhs2$7),rhs2$7)
                     :_cpu_}}
        return 0});
    var
     pp_typing_constraint=
      function _co7_(_co5_,_co6_){return _co7_.fun(_co5_,_co6_)},
     show_typing_constraint=function _co4_(_co3_){return _co4_.fun(_co3_)};
    caml_update_dummy
     (pp_typing_constraint,
      function(fmt,param)
       {switch(param[0])
         {case 0:
           var a2=param[3],a1=param[2],a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_ta_);
           caml_call1(caml_call1(pp_texpr,fmt),a0);
           caml_call2(Stdlib_format[123],fmt,_tb_);
           caml_call1(caml_call1(pp_texpr,fmt),a1);
           caml_call2(Stdlib_format[123],fmt,_tc_);
           caml_call1(caml_call1(pp_texpr,fmt),a2);
           return caml_call2(Stdlib_format[123],fmt,_td_);
          case 1:
           var a3=param[4],a2$0=param[3],a1$0=param[2],a0$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_te_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$0);
           caml_call2(Stdlib_format[123],fmt,_tf_);
           caml_call1(caml_call1(pp_texpr,fmt),a1$0);
           caml_call2(Stdlib_format[123],fmt,_tg_);
           caml_call1(caml_call1(pp_texpr,fmt),a2$0);
           caml_call2(Stdlib_format[123],fmt,_th_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_ti_),a3);
           return caml_call2(Stdlib_format[123],fmt,_tj_);
          case 2:
           var a2$1=param[3],a1$1=param[2],a0$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_tk_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$1);
           caml_call2(Stdlib_format[123],fmt,_tl_);
           caml_call1(caml_call1(pp_texpr,fmt),a1$1);
           caml_call2(Stdlib_format[123],fmt,_tm_);
           caml_call1(caml_call1(pp_texpr,fmt),a2$1);
           return caml_call2(Stdlib_format[123],fmt,_tn_);
          case 3:
           var a2$2=param[3],a1$2=param[2],a0$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_to_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$2);
           caml_call2(Stdlib_format[123],fmt,_tp_);
           caml_call1(caml_call1(pp_texpr,fmt),a1$2);
           caml_call2(Stdlib_format[123],fmt,_tq_);
           caml_call1(caml_call1(pp_texpr,fmt),a2$2);
           return caml_call2(Stdlib_format[123],fmt,_tr_);
          case 4:
           var a2$3=param[3],a1$3=param[2],a0$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_ts_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$3);
           caml_call2(Stdlib_format[123],fmt,_tt_);
           caml_call1(caml_call1(pp_texpr,fmt),a1$3);
           caml_call2(Stdlib_format[123],fmt,_tu_);
           caml_call1(caml_call1(pp_texpr,fmt),a2$3);
           return caml_call2(Stdlib_format[123],fmt,_tv_);
          case 5:
           var a2$4=param[3],a1$4=param[2],a0$4=param[1];
           caml_call2(Stdlib_format[123],fmt,_tw_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$4);
           caml_call2(Stdlib_format[123],fmt,_tx_);
           caml_call1(caml_call1(pp_texpr,fmt),a1$4);
           caml_call2(Stdlib_format[123],fmt,_ty_);
           caml_call1(caml_call1(pp_texpr,fmt),a2$4);
           return caml_call2(Stdlib_format[123],fmt,_tz_);
          case 6:
           var a0$5=param[1];
           caml_call2(Stdlib_format[123],fmt,_tA_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$5);
           return caml_call2(Stdlib_format[123],fmt,_tB_);
          case 7:
           var a2$5=param[3],a1$5=param[2],a0$6=param[1];
           caml_call2(Stdlib_format[123],fmt,_tC_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$6);
           caml_call2(Stdlib_format[123],fmt,_tD_);
           caml_call1(caml_call1(pp_texpr,fmt),a1$5);
           caml_call2(Stdlib_format[123],fmt,_tE_);
           caml_call1(caml_call1(pp$4,fmt),a2$5);
           return caml_call2(Stdlib_format[123],fmt,_tF_);
          case 8:
           var a2$6=param[3],a1$6=param[2],a0$7=param[1];
           caml_call2(Stdlib_format[123],fmt,_tG_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$7);
           caml_call2(Stdlib_format[123],fmt,_tH_);
           caml_call1(caml_call1(pp_texpr,fmt),a1$6);
           caml_call2(Stdlib_format[123],fmt,_tI_);
           pp_line_no(fmt,a2$6);
           return caml_call2(Stdlib_format[123],fmt,_tJ_);
          case 9:
           var a0$8=param[1];
           caml_call2(Stdlib_format[123],fmt,_tK_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$8);
           return caml_call2(Stdlib_format[123],fmt,_tL_);
          case 10:
           var a0$9=param[1];
           caml_call2(Stdlib_format[123],fmt,_tM_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$9);
           return caml_call2(Stdlib_format[123],fmt,_tN_);
          case 11:
           var a2$7=param[3],a1$7=param[2],a0$10=param[1];
           caml_call2(Stdlib_format[123],fmt,_tO_);
           caml_call1(caml_call1(pp$4,fmt),a0$10);
           caml_call2(Stdlib_format[123],fmt,_tP_);
           caml_call1(caml_call1(pp$4,fmt),a1$7);
           caml_call2(Stdlib_format[123],fmt,_tQ_);
           pp_lazy_smart_except_list(fmt,a2$7);
           return caml_call2(Stdlib_format[123],fmt,_tR_);
          case 12:
           var a1$8=param[2],a0$11=param[1];
           caml_call2(Stdlib_format[123],fmt,_tS_);
           caml_call1(caml_call1(pp$4,fmt),a0$11);
           caml_call2(Stdlib_format[123],fmt,_tT_);
           pp_lazy_smart_except_list(fmt,a1$8);
           return caml_call2(Stdlib_format[123],fmt,_tU_);
          case 13:
           var a1$9=param[2],a0$12=param[1];
           caml_call2(Stdlib_format[123],fmt,_tV_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$12);
           caml_call2(Stdlib_format[123],fmt,_tW_);
           caml_call1(caml_call1(pp_texpr,fmt),a1$9);
           return caml_call2(Stdlib_format[123],fmt,_tX_);
          case 14:
           var a1$10=param[2],a0$13=param[1];
           caml_call2(Stdlib_format[123],fmt,_tY_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$13);
           caml_call2(Stdlib_format[123],fmt,_tZ_);
           caml_call1(caml_call1(pp$4,fmt),a1$10);
           return caml_call2(Stdlib_format[123],fmt,_t0_);
          case 15:
           var a0$14=param[1];
           caml_call2(Stdlib_format[123],fmt,_t1_);
           caml_call1(caml_call1(pp_texpr,fmt),a0$14);
           return caml_call2(Stdlib_format[123],fmt,_t2_);
          case 16:
           var a1$11=param[2],a0$15=param[1];
           caml_call2(Stdlib_format[123],fmt,_t3_);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_t4_),a0$15);
           caml_call2(Stdlib_format[123],fmt,_t5_);
           caml_call1(caml_call1(pp$4,fmt),a1$11);
           return caml_call2(Stdlib_format[123],fmt,_t6_);
          default:
           var a2$8=param[3],a1$12=param[2],a0$16=param[1];
           caml_call2(Stdlib_format[123],fmt,_t7_);
           caml_call1(caml_call1(pp$4,fmt),a0$16);
           caml_call2(Stdlib_format[123],fmt,_t8_);
           caml_call1(caml_call1(pp$4,fmt),a1$12);
           caml_call2(Stdlib_format[123],fmt,_t9_);
           caml_call1(caml_call1(pp_texpr,fmt),a2$8);
           return caml_call2(Stdlib_format[123],fmt,_t__)}});
    caml_update_dummy
     (show_typing_constraint,
      function(x)
       {return caml_call3(Stdlib_format[127],_t$_,pp_typing_constraint,x)});
    var
     pp_error=function _co2_(_co0_,_co1_){return _co2_.fun(_co0_,_co1_)},
     show_error=function _coZ_(_coY_){return _coZ_.fun(_coY_)};
    caml_update_dummy
     (pp_error,
      function(fmt,param)
       {var a1=param[2],a0=param[1];
        caml_call2(Stdlib_format[123],fmt,_ua_);
        caml_call1(caml_call1(pp_value,fmt),a0);
        caml_call2(Stdlib_format[123],fmt,_ub_);
        caml_call2(Stdlib_format[123],fmt,_uc_);
        var _coW_=0;
        function _coX_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_ud_);
          caml_call1(caml_call1(pp_smart_except,fmt),x);
          return 1}
        caml_call3(Stdlib_list[22],_coX_,_coW_,a1);
        caml_call2(Stdlib_format[123],fmt,_ue_);
        return caml_call2(Stdlib_format[123],fmt,_uf_)});
    caml_update_dummy
     (show_error,
      function(x){return caml_call3(Stdlib_format[127],_ug_,pp_error,x)});
    var
     pp_step=function _coV_(_coT_,_coU_){return _coV_.fun(_coT_,_coU_)},
     show_step=function _coS_(_coR_){return _coS_.fun(_coR_)};
    caml_update_dummy
     (pp_step,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_uh_);
        caml_call3(Stdlib_format[123],fmt,_ui_,cst_command);
        var _coy_=x[1];
        caml_call1(caml_call1(pp_tcommand,fmt),_coy_);
        caml_call2(Stdlib_format[123],fmt,_uj_);
        caml_call2(Stdlib_format[123],fmt,_uk_);
        caml_call3(Stdlib_format[123],fmt,_ul_,cst_iters);
        var _coz_=x[2];
        caml_call2(Stdlib_format[123],fmt,_um_);
        var _coA_=0;
        function _coB_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_un_);
          var a1=x[2],a0=x[1];
          caml_call2(Stdlib_format[123],fmt,_uo_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_up_),a0);
          caml_call2(Stdlib_format[123],fmt,_uq_);
          var a1$0=a1[2],a0$0=a1[1];
          caml_call2(Stdlib_format[123],fmt,_ur_);
          caml_call1(caml_call1(pp_value,fmt),a0$0);
          caml_call2(Stdlib_format[123],fmt,_us_);
          if(a1$0)
           {var x$0=a1$0[1];
            caml_call2(Stdlib_format[13],fmt,cst_Some$28);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_ut_),x$0);
            caml_call2(Stdlib_format[13],fmt,cst$29)}
          else
           caml_call2(Stdlib_format[13],fmt,cst_None$28);
          caml_call2(Stdlib_format[123],fmt,_uu_);
          caml_call2(Stdlib_format[123],fmt,_uv_);
          return 1}
        caml_call3(Stdlib_list[22],_coB_,_coA_,_coz_);
        caml_call2(Stdlib_format[123],fmt,_uw_);
        caml_call2(Stdlib_format[123],fmt,_ux_);
        caml_call2(Stdlib_format[123],fmt,_uy_);
        caml_call3(Stdlib_format[123],fmt,_uz_,cst_locals);
        var _coC_=x[3];
        caml_call2(Stdlib_format[123],fmt,_uA_);
        var _coD_=0;
        function _coE_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_uB_);
          var a1=x[2],a0=x[1];
          caml_call2(Stdlib_format[123],fmt,_uC_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_uD_),a0);
          caml_call2(Stdlib_format[123],fmt,_uE_);
          caml_call1(caml_call1(pp_value,fmt),a1);
          caml_call2(Stdlib_format[123],fmt,_uF_);
          return 1}
        caml_call3(Stdlib_list[22],_coE_,_coD_,_coC_);
        caml_call2(Stdlib_format[123],fmt,_uG_);
        caml_call2(Stdlib_format[123],fmt,_uH_);
        caml_call2(Stdlib_format[123],fmt,_uI_);
        caml_call3(Stdlib_format[123],fmt,_uJ_,cst_storage$2);
        var _coF_=x[4];
        caml_call1(caml_call1(pp_value,fmt),_coF_);
        caml_call2(Stdlib_format[123],fmt,_uK_);
        caml_call2(Stdlib_format[123],fmt,_uL_);
        caml_call3(Stdlib_format[123],fmt,_uM_,cst_balance$2);
        var _coG_=x[5];
        caml_call1(caml_call1(Utils_Bigint[3],fmt),_coG_);
        caml_call2(Stdlib_format[123],fmt,_uN_);
        caml_call2(Stdlib_format[123],fmt,_uO_);
        caml_call3(Stdlib_format[123],fmt,_uP_,cst_operations);
        var _coH_=x[6];
        caml_call2(Stdlib_format[123],fmt,_uQ_);
        var _coI_=0;
        function _coJ_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_uR_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_uS_),x);
          return 1}
        caml_call3(Stdlib_list[22],_coJ_,_coI_,_coH_);
        caml_call2(Stdlib_format[123],fmt,_uT_);
        caml_call2(Stdlib_format[123],fmt,_uU_);
        caml_call2(Stdlib_format[123],fmt,_uV_);
        caml_call3(Stdlib_format[123],fmt,_uW_,cst_substeps);
        var _coK_=x[7];
        caml_call2(Stdlib_format[13],fmt,cst_ref$1);
        var _coL_=_coK_[1];
        caml_call2(Stdlib_format[123],fmt,_uX_);
        var _coM_=0;
        function _coN_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_uY_);
          caml_call1(caml_call1(pp_step,fmt),x);
          return 1}
        caml_call3(Stdlib_list[22],_coN_,_coM_,_coL_);
        caml_call2(Stdlib_format[123],fmt,_uZ_);
        caml_call2(Stdlib_format[13],fmt,cst$30);
        caml_call2(Stdlib_format[123],fmt,_u0_);
        caml_call2(Stdlib_format[123],fmt,_u1_);
        caml_call3(Stdlib_format[123],fmt,_u2_,cst_elements$0);
        var _coO_=x[8];
        caml_call2(Stdlib_format[123],fmt,_u3_);
        var _coP_=0;
        function _coQ_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_u4_);
          var a1=x[2],a0=x[1];
          caml_call2(Stdlib_format[123],fmt,_u5_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_u6_),a0);
          caml_call2(Stdlib_format[123],fmt,_u7_);
          caml_call1(caml_call1(pp_value,fmt),a1);
          caml_call2(Stdlib_format[123],fmt,_u8_);
          return 1}
        caml_call3(Stdlib_list[22],_coQ_,_coP_,_coO_);
        caml_call2(Stdlib_format[123],fmt,_u9_);
        caml_call2(Stdlib_format[123],fmt,_u__);
        return caml_call2(Stdlib_format[123],fmt,_u$_)});
    caml_update_dummy
     (show_step,
      function(x){return caml_call3(Stdlib_format[127],_va_,pp_step,x)});
    var
     pp_exec_message=
      function _cox_(_cou_,_cov_,_cow_){return _cox_.fun(_cou_,_cov_,_cow_)},
     show_exec_message=
      function _cot_(_cor_,_cos_){return _cot_.fun(_cor_,_cos_)};
    caml_update_dummy
     (pp_exec_message,
      function(poly_html,fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_vb_);
        caml_call3(Stdlib_format[123],fmt,_vc_,cst_ok);
        var _cog_=x[1];
        caml_call1(caml_call2(Stdlib_format[123],fmt,_vd_),_cog_);
        caml_call2(Stdlib_format[123],fmt,_ve_);
        caml_call2(Stdlib_format[123],fmt,_vf_);
        caml_call3(Stdlib_format[123],fmt,_vg_,cst_contract$0);
        var _coh_=x[2];
        if(_coh_)
         {var x$0=_coh_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$29);
          caml_call1(caml_call1(pp_instance,fmt),x$0);
          caml_call2(Stdlib_format[13],fmt,cst$31)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$29);
        caml_call2(Stdlib_format[123],fmt,_vh_);
        caml_call2(Stdlib_format[123],fmt,_vi_);
        caml_call3(Stdlib_format[123],fmt,_vj_,cst_operations$0);
        var _coi_=x[3];
        caml_call2(Stdlib_format[123],fmt,_vk_);
        var _coj_=0;
        function _cok_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_vl_);
          caml_call1(caml_call1(pp_operation,fmt),x);
          return 1}
        caml_call3(Stdlib_list[22],_cok_,_coj_,_coi_);
        caml_call2(Stdlib_format[123],fmt,_vm_);
        caml_call2(Stdlib_format[123],fmt,_vn_);
        caml_call2(Stdlib_format[123],fmt,_vo_);
        caml_call3(Stdlib_format[123],fmt,_vp_,cst_error);
        var _col_=x[4];
        if(_col_)
         {var x$1=_col_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$30);
          caml_call1(caml_call1(pp_error,fmt),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$32)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$30);
        caml_call2(Stdlib_format[123],fmt,_vq_);
        caml_call2(Stdlib_format[123],fmt,_vr_);
        caml_call3(Stdlib_format[123],fmt,_vs_,cst_html);
        var _com_=x[5];
        caml_call1(caml_call1(poly_html,fmt),_com_);
        caml_call2(Stdlib_format[123],fmt,_vt_);
        caml_call2(Stdlib_format[123],fmt,_vu_);
        caml_call3(Stdlib_format[123],fmt,_vv_,cst_storage$3);
        var _con_=x[6];
        caml_call1(caml_call1(pp_value,fmt),_con_);
        caml_call2(Stdlib_format[123],fmt,_vw_);
        caml_call2(Stdlib_format[123],fmt,_vx_);
        caml_call3(Stdlib_format[123],fmt,_vy_,cst_steps);
        var _coo_=x[7];
        caml_call2(Stdlib_format[123],fmt,_vz_);
        var _cop_=0;
        function _coq_(sep,x)
         {if(sep)caml_call2(Stdlib_format[123],fmt,_vA_);
          caml_call1(caml_call1(pp_step,fmt),x);
          return 1}
        caml_call3(Stdlib_list[22],_coq_,_cop_,_coo_);
        caml_call2(Stdlib_format[123],fmt,_vB_);
        caml_call2(Stdlib_format[123],fmt,_vC_);
        return caml_call2(Stdlib_format[123],fmt,_vD_)});
    caml_update_dummy
     (show_exec_message,
      function(poly_html,x)
       {var _cof_=caml_call1(pp_exec_message,poly_html);
        return caml_call3(Stdlib_format[127],_vE_,_cof_,x)});
    var
     Execution=
      [0,
       pp_error,
       show_error,
       pp_step,
       show_step,
       pp_exec_message,
       show_exec_message],
     SmartExcept=[248,cst_Smartml_Basics_SmartExcept,caml_fresh_oo_id(0)];
    function scenario_state(config)
     {var
       _coa_=Utils_Bigint[6],
       _cob_=Utils_Bigint[6],
       _coc_=caml_call2(Stdlib_hashtbl[1],0,5),
       _cod_=caml_call2(Stdlib_hashtbl[1],0,5),
       _coe_=caml_call2(Stdlib_hashtbl[1],0,5);
      return [0,
              caml_call2(Stdlib_hashtbl[1],0,5),
              _coe_,
              _cod_,
              _coc_,
              [0,0],
              config,
              _cob_,
              _coa_]}
    function copy_scenario_state(param)
     {var
       next_dynamic_address_id=param[5],
       rev_addresses=param[4],
       addresses=param[3],
       variables=param[2],
       contracts=param[1],
       config=param[6],
       time=param[7],
       level=param[8],
       contracts$0=caml_call1(Stdlib_hashtbl[4],contracts),
       variables$0=caml_call1(Stdlib_hashtbl[4],variables),
       addresses$0=caml_call1(Stdlib_hashtbl[4],addresses),
       rev_addresses$0=caml_call1(Stdlib_hashtbl[4],rev_addresses),
       next_dynamic_address_id$0=[0,next_dynamic_address_id[1]];
      return [0,
              contracts$0,
              variables$0,
              addresses$0,
              rev_addresses$0,
              next_dynamic_address_id$0,
              config,
              time,
              level]}
    function get_parameter_type(param,name)
     {var tcontract=param[1],_cn__=tcontract[6];
      function _cn$_(param){var x=param[1];return caml_string_equal(name,x)}
      var filtered_entry_points=caml_call2(Utils_List[40],_cn$_,_cn__);
      if(filtered_entry_points && ! filtered_entry_points[2])
       {var match=filtered_entry_points[1],tparameter_ep_derived=match[8];
        return [0,tparameter_ep_derived[1]]}
      return 0}
    function exists_talg(exclude_create_contract,f_expr,f_command)
     {function sub(b1,param){var b2=param[2],b1$0=b1 || b2;return b1$0}
      function p_texpr(line_no,et,e)
       {var switch$0=0;
        if(21 === e[0])
         {var storage=e[4],balance=e[3],baker=e[2];
          if(exclude_create_contract)
           {var _cn4_=baker[2];
            if(_cn4_)
             var _cn5_=_cn4_;
            else
             var _cn6_=balance[2],_cn5_=_cn6_ || storage[2];
            var holds_below=_cn5_;
            switch$0 = 1}}
        if(! switch$0)
         var
          _cnY_=0,
          holds_below=
           fold_expr_f(sub,sub,sub,function(param){return elim_typed},_cnY_,e);
        var _cnZ_=Utils_Control[1];
        function _cn0_(_cn9_){return _cn9_[1]}
        function _cn1_(_cn8_){return _cn8_[1]}
        var
         _cn2_=
          caml_call1
           (f_expr,
            [0,
             map_expr_f(function(_cn7_){return _cn7_[1]},_cn1_,_cn0_,_cnZ_,e),
             et,
             line_no]),
         _cn3_=_cn2_ || holds_below;
        return _cn3_}
      function p_tcommand(line_no,ct,c)
       {function _cnS_(_cnX_){return _cnX_[1]}
        function _cnT_(_cnW_){return _cnW_[1]}
        var
         _cnU_=
          caml_call1
           (f_command,
            [0,
             map_command_f(function(_cnV_){return _cnV_[1]},_cnT_,_cnS_,c),
             ct,
             line_no]);
        return _cnU_?_cnU_:fold_command_f(sub,sub,sub,0,c)}
      function p_ttype(param){return 0}
      return para_talg(p_texpr,p_tcommand,p_ttype)}
    function exists_expr(exclude_create_contract,f_expr,f_command)
     {var _cnQ_=exists_talg(exclude_create_contract,f_expr,f_command);
      return function(_cnR_){return para_texpr(_cnQ_,_cnR_)}}
    function exists_command(exclude_create_contract,f_expr,f_command)
     {var _cnO_=exists_talg(exclude_create_contract,f_expr,f_command);
      return function(_cnP_){return para_tcommand(_cnO_,_cnP_)}}
    function exists_contract(exclude_create_contract,f_expr,f_command,c)
     {var
       f_expr$0=exists_expr(exclude_create_contract,f_expr,f_command),
       f_command$0=exists_command(exclude_create_contract,f_expr$0,f_command),
       c$0=
        map_contract_f
         (f_expr$0,f_command$0,Utils_Control[1],Utils_Control[1],c),
       _cnA_=0;
      function _cnB_(_cnN_){return _cnN_[1]}
      var _cnC_=caml_call1(Utils_Control[21],_cnB_);
      function _cnD_(_cnM_){return _cnM_[1]}
      var _cnE_=caml_call1(Utils_Control[21],_cnD_);
      function _cnF_(_cnK_,_cnJ_){var _cnL_=_cnK_ || _cnJ_;return _cnL_}
      return fold_contract_f
              (function(_cnH_,_cnG_){var _cnI_=_cnH_ || _cnG_;return _cnI_},
               _cnF_,
               _cnE_,
               _cnC_,
               _cnA_,
               c$0)}
    var
     pp_account_or_address=
      function _cnz_(_cnw_,_cnx_,_cny_){return _cnz_.fun(_cnw_,_cnx_,_cny_)},
     show_account_or_address=
      function _cnv_(_cnt_,_cnu_){return _cnv_.fun(_cnt_,_cnu_)};
    caml_update_dummy
     (pp_account_or_address,
      function(poly_address,fmt,param)
       {if(0 === param[0])
         {var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_vF_);
          pp_account(fmt,a0);
          return caml_call2(Stdlib_format[123],fmt,_vG_)}
        var a0$0=param[1];
        caml_call2(Stdlib_format[123],fmt,_vH_);
        caml_call1(caml_call1(poly_address,fmt),a0$0);
        return caml_call2(Stdlib_format[123],fmt,_vI_)});
    caml_update_dummy
     (show_account_or_address,
      function(poly_address,x)
       {var _cns_=caml_call1(pp_account_or_address,poly_address);
        return caml_call3(Stdlib_format[127],_vJ_,_cns_,x)});
    function map_account_or_address(poly_address,param)
     {if(0 === param[0]){var a0=param[1];return [0,a0]}
      var a0$0=param[1];
      return [1,caml_call1(poly_address,a0$0)]}
    var
     pp_action_f=
      function _cnr_(_cnl_,_cnm_,_cnn_,_cno_,_cnp_,_cnq_)
       {return _cnr_.fun(_cnl_,_cnm_,_cnn_,_cno_,_cnp_,_cnq_)},
     show_action_f=
      function _cnk_(_cnf_,_cng_,_cnh_,_cni_,_cnj_)
       {return _cnk_.fun(_cnf_,_cng_,_cnh_,_cni_,_cnj_)};
    caml_update_dummy
     (pp_action_f,
      function(poly_expr,poly_command,poly_type,poly_switch,fmt,param)
       {switch(param[0])
         {case 0:
           var
            ashow=param[5],
            aaccept_unknown_types=param[4],
            aline_no=param[3],
            acontract=param[2],
            aid=param[1];
           caml_call2(Stdlib_format[123],fmt,_vK_);
           caml_call3(Stdlib_format[123],fmt,_vL_,cst_id$3);
           caml_call1(caml_call1(pp_contract_id,fmt),aid);
           caml_call2(Stdlib_format[123],fmt,_vM_);
           caml_call2(Stdlib_format[123],fmt,_vN_);
           caml_call3(Stdlib_format[123],fmt,_vO_,cst_contract$1);
           var
            _cna_=function(fmt){return caml_call1(poly_switch,fmt)},
            _cnb_=function(fmt){return caml_call1(poly_type,fmt)},
            _cnc_=function(fmt){return caml_call1(poly_command,fmt)};
           caml_call1
            (caml_call5
              (pp_contract_f,
               function(fmt){return caml_call1(poly_expr,fmt)},
               _cnc_,
               _cnb_,
               _cna_,
               fmt),
             acontract);
           caml_call2(Stdlib_format[123],fmt,_vP_);
           caml_call2(Stdlib_format[123],fmt,_vQ_);
           caml_call3(Stdlib_format[123],fmt,_vR_,cst_line_no$4);
           pp_line_no(fmt,aline_no);
           caml_call2(Stdlib_format[123],fmt,_vS_);
           caml_call2(Stdlib_format[123],fmt,_vT_);
           caml_call3(Stdlib_format[123],fmt,_vU_,cst_accept_unknown_types);
           caml_call1
            (caml_call2(Stdlib_format[123],fmt,_vV_),aaccept_unknown_types);
           caml_call2(Stdlib_format[123],fmt,_vW_);
           caml_call2(Stdlib_format[123],fmt,_vX_);
           caml_call3(Stdlib_format[123],fmt,_vY_,cst_show);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_vZ_),ashow);
           caml_call2(Stdlib_format[123],fmt,_v0_);
           return caml_call2(Stdlib_format[123],fmt,_v1_);
          case 1:
           var aline_no$0=param[3],aexpression=param[2],aid$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_v2_);
           caml_call3(Stdlib_format[123],fmt,_v3_,cst_id$4);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_v4_),aid$0);
           caml_call2(Stdlib_format[123],fmt,_v5_);
           caml_call2(Stdlib_format[123],fmt,_v6_);
           caml_call3(Stdlib_format[123],fmt,_v7_,cst_expression);
           caml_call1(caml_call1(poly_expr,fmt),aexpression);
           caml_call2(Stdlib_format[123],fmt,_v8_);
           caml_call2(Stdlib_format[123],fmt,_v9_);
           caml_call3(Stdlib_format[123],fmt,_v__,cst_line_no$5);
           pp_line_no(fmt,aline_no$0);
           caml_call2(Stdlib_format[123],fmt,_v$_);
           return caml_call2(Stdlib_format[123],fmt,_wa_);
          case 2:
           var aline_no$1=param[2],aid$1=param[1];
           caml_call2(Stdlib_format[123],fmt,_wb_);
           caml_call3(Stdlib_format[123],fmt,_wc_,cst_id$5);
           caml_call1(caml_call1(pp_contract_id,fmt),aid$1);
           caml_call2(Stdlib_format[123],fmt,_wd_);
           caml_call2(Stdlib_format[123],fmt,_we_);
           caml_call3(Stdlib_format[123],fmt,_wf_,cst_line_no$6);
           pp_line_no(fmt,aline_no$1);
           caml_call2(Stdlib_format[123],fmt,_wg_);
           return caml_call2(Stdlib_format[123],fmt,_wh_);
          case 3:
           var
            aexport=param[17],
            ashow$0=param[16],
            amessage=param[15],
            avoting_powers=param[14],
            alevel=param[13],
            aamount=param[12],
            atime=param[11],
            achain_id=param[10],
            asender=param[9],
            asource=param[8],
            amessageClass=param[7],
            atitle=param[6],
            aline_no$2=param[5],
            aparams=param[4],
            aexception=param[3],
            avalid=param[2],
            aid$2=param[1];
           caml_call2(Stdlib_format[123],fmt,_wi_);
           caml_call3(Stdlib_format[123],fmt,_wj_,cst_id$6);
           caml_call1(caml_call1(pp_contract_id,fmt),aid$2);
           caml_call2(Stdlib_format[123],fmt,_wk_);
           caml_call2(Stdlib_format[123],fmt,_wl_);
           caml_call3(Stdlib_format[123],fmt,_wm_,cst_valid);
           caml_call1(caml_call1(poly_expr,fmt),avalid);
           caml_call2(Stdlib_format[123],fmt,_wn_);
           caml_call2(Stdlib_format[123],fmt,_wo_);
           caml_call3(Stdlib_format[123],fmt,_wp_,cst_exception);
           if(aexception)
            {var x=aexception[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$31);
             caml_call1(caml_call1(poly_expr,fmt),x);
             caml_call2(Stdlib_format[13],fmt,cst$33)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$31);
           caml_call2(Stdlib_format[123],fmt,_wq_);
           caml_call2(Stdlib_format[123],fmt,_wr_);
           caml_call3(Stdlib_format[123],fmt,_ws_,cst_params$1);
           caml_call1(caml_call1(poly_expr,fmt),aparams);
           caml_call2(Stdlib_format[123],fmt,_wt_);
           caml_call2(Stdlib_format[123],fmt,_wu_);
           caml_call3(Stdlib_format[123],fmt,_wv_,cst_line_no$7);
           pp_line_no(fmt,aline_no$2);
           caml_call2(Stdlib_format[123],fmt,_ww_);
           caml_call2(Stdlib_format[123],fmt,_wx_);
           caml_call3(Stdlib_format[123],fmt,_wy_,cst_title);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_wz_),atitle);
           caml_call2(Stdlib_format[123],fmt,_wA_);
           caml_call2(Stdlib_format[123],fmt,_wB_);
           caml_call3(Stdlib_format[123],fmt,_wC_,cst_messageClass);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_wD_),amessageClass);
           caml_call2(Stdlib_format[123],fmt,_wE_);
           caml_call2(Stdlib_format[123],fmt,_wF_);
           caml_call3(Stdlib_format[123],fmt,_wG_,cst_source$0);
           if(asource)
            {var x$0=asource[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$32);
             caml_call1
              (caml_call2
                (pp_account_or_address,
                 function(fmt){return caml_call1(poly_expr,fmt)},
                 fmt),
               x$0);
             caml_call2(Stdlib_format[13],fmt,cst$34)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$32);
           caml_call2(Stdlib_format[123],fmt,_wH_);
           caml_call2(Stdlib_format[123],fmt,_wI_);
           caml_call3(Stdlib_format[123],fmt,_wJ_,cst_sender);
           if(asender)
            {var x$1=asender[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$33);
             caml_call1
              (caml_call2
                (pp_account_or_address,
                 function(fmt){return caml_call1(poly_expr,fmt)},
                 fmt),
               x$1);
             caml_call2(Stdlib_format[13],fmt,cst$35)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$33);
           caml_call2(Stdlib_format[123],fmt,_wK_);
           caml_call2(Stdlib_format[123],fmt,_wL_);
           caml_call3(Stdlib_format[123],fmt,_wM_,cst_chain_id);
           if(achain_id)
            {var x$2=achain_id[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$34);
             caml_call1(caml_call1(poly_expr,fmt),x$2);
             caml_call2(Stdlib_format[13],fmt,cst$36)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$34);
           caml_call2(Stdlib_format[123],fmt,_wN_);
           caml_call2(Stdlib_format[123],fmt,_wO_);
           caml_call3(Stdlib_format[123],fmt,_wP_,cst_time);
           if(atime)
            {var x$3=atime[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$35);
             caml_call1(caml_call1(poly_expr,fmt),x$3);
             caml_call2(Stdlib_format[13],fmt,cst$37)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$35);
           caml_call2(Stdlib_format[123],fmt,_wQ_);
           caml_call2(Stdlib_format[123],fmt,_wR_);
           caml_call3(Stdlib_format[123],fmt,_wS_,cst_amount$2);
           caml_call1(caml_call1(poly_expr,fmt),aamount);
           caml_call2(Stdlib_format[123],fmt,_wT_);
           caml_call2(Stdlib_format[123],fmt,_wU_);
           caml_call3(Stdlib_format[123],fmt,_wV_,cst_level);
           if(alevel)
            {var x$4=alevel[1];
             caml_call2(Stdlib_format[13],fmt,cst_Some$36);
             caml_call1(caml_call1(poly_expr,fmt),x$4);
             caml_call2(Stdlib_format[13],fmt,cst$38)}
           else
            caml_call2(Stdlib_format[13],fmt,cst_None$36);
           caml_call2(Stdlib_format[123],fmt,_wW_);
           caml_call2(Stdlib_format[123],fmt,_wX_);
           caml_call3(Stdlib_format[123],fmt,_wY_,cst_voting_powers);
           caml_call1(caml_call1(poly_expr,fmt),avoting_powers);
           caml_call2(Stdlib_format[123],fmt,_wZ_);
           caml_call2(Stdlib_format[123],fmt,_w0_);
           caml_call3(Stdlib_format[123],fmt,_w1_,cst_message$0);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_w2_),amessage);
           caml_call2(Stdlib_format[123],fmt,_w3_);
           caml_call2(Stdlib_format[123],fmt,_w4_);
           caml_call3(Stdlib_format[123],fmt,_w5_,cst_show$0);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_w6_),ashow$0);
           caml_call2(Stdlib_format[123],fmt,_w7_);
           caml_call2(Stdlib_format[123],fmt,_w8_);
           caml_call3(Stdlib_format[123],fmt,_w9_,cst_export);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_w__),aexport);
           caml_call2(Stdlib_format[123],fmt,_w$_);
           return caml_call2(Stdlib_format[123],fmt,_xa_);
          case 4:
           var amessage$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_xb_);
           caml_call3(Stdlib_format[123],fmt,_xc_,cst_message$1);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_xd_),amessage$0);
           caml_call2(Stdlib_format[123],fmt,_xe_);
           return caml_call2(Stdlib_format[123],fmt,_xf_);
          case 5:
           var aline_no$3=param[3],ainner=param[2],atag=param[1];
           caml_call2(Stdlib_format[123],fmt,_xg_);
           caml_call3(Stdlib_format[123],fmt,_xh_,cst_tag);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_xi_),atag);
           caml_call2(Stdlib_format[123],fmt,_xj_);
           caml_call2(Stdlib_format[123],fmt,_xk_);
           caml_call3(Stdlib_format[123],fmt,_xl_,cst_inner);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_xm_),ainner);
           caml_call2(Stdlib_format[123],fmt,_xn_);
           caml_call2(Stdlib_format[123],fmt,_xo_);
           caml_call3(Stdlib_format[123],fmt,_xp_,cst_line_no$8);
           pp_line_no(fmt,aline_no$3);
           caml_call2(Stdlib_format[123],fmt,_xq_);
           return caml_call2(Stdlib_format[123],fmt,_xr_);
          case 6:
           var aline_no$4=param[2],acondition=param[1];
           caml_call2(Stdlib_format[123],fmt,_xs_);
           caml_call3(Stdlib_format[123],fmt,_xt_,cst_condition);
           caml_call1(caml_call1(poly_expr,fmt),acondition);
           caml_call2(Stdlib_format[123],fmt,_xu_);
           caml_call2(Stdlib_format[123],fmt,_xv_);
           caml_call3(Stdlib_format[123],fmt,_xw_,cst_line_no$9);
           pp_line_no(fmt,aline_no$4);
           caml_call2(Stdlib_format[123],fmt,_xx_);
           return caml_call2(Stdlib_format[123],fmt,_xy_);
          case 7:
           var
            aline_no$5=param[5],
            acompile=param[4],
            astripStrings=param[3],
            ahtml=param[2],
            aexpression$0=param[1];
           caml_call2(Stdlib_format[123],fmt,_xz_);
           caml_call3(Stdlib_format[123],fmt,_xA_,cst_expression$0);
           caml_call1(caml_call1(poly_expr,fmt),aexpression$0);
           caml_call2(Stdlib_format[123],fmt,_xB_);
           caml_call2(Stdlib_format[123],fmt,_xC_);
           caml_call3(Stdlib_format[123],fmt,_xD_,cst_html$0);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_xE_),ahtml);
           caml_call2(Stdlib_format[123],fmt,_xF_);
           caml_call2(Stdlib_format[123],fmt,_xG_);
           caml_call3(Stdlib_format[123],fmt,_xH_,cst_stripStrings);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_xI_),astripStrings);
           caml_call2(Stdlib_format[123],fmt,_xJ_);
           caml_call2(Stdlib_format[123],fmt,_xK_);
           caml_call3(Stdlib_format[123],fmt,_xL_,cst_compile);
           caml_call1(caml_call2(Stdlib_format[123],fmt,_xM_),acompile);
           caml_call2(Stdlib_format[123],fmt,_xN_);
           caml_call2(Stdlib_format[123],fmt,_xO_);
           caml_call3(Stdlib_format[123],fmt,_xP_,cst_line_no$10);
           pp_line_no(fmt,aline_no$5);
           caml_call2(Stdlib_format[123],fmt,_xQ_);
           return caml_call2(Stdlib_format[123],fmt,_xR_);
          case 8:
           var a0=param[1];
           caml_call2(Stdlib_format[123],fmt,_xS_);
           caml_call2(Stdlib_format[123],fmt,_xT_);
           var
            _cnd_=0,
            _cne_=
             function(sep,x)
              {if(sep)caml_call2(Stdlib_format[123],fmt,_xU_);
               caml_call1(caml_call1(pp_smart_except,fmt),x);
               return 1};
           caml_call3(Stdlib_list[22],_cne_,_cnd_,a0);
           caml_call2(Stdlib_format[123],fmt,_xV_);
           return caml_call2(Stdlib_format[123],fmt,_xW_);
          case 9:
           var abaker=param[3],aline_no$6=param[2],aid$3=param[1];
           caml_call2(Stdlib_format[123],fmt,_xX_);
           caml_call3(Stdlib_format[123],fmt,_xY_,cst_id$7);
           caml_call1(caml_call1(pp_contract_id,fmt),aid$3);
           caml_call2(Stdlib_format[123],fmt,_xZ_);
           caml_call2(Stdlib_format[123],fmt,_x0_);
           caml_call3(Stdlib_format[123],fmt,_x1_,cst_line_no$11);
           pp_line_no(fmt,aline_no$6);
           caml_call2(Stdlib_format[123],fmt,_x2_);
           caml_call2(Stdlib_format[123],fmt,_x3_);
           caml_call3(Stdlib_format[123],fmt,_x4_,cst_baker$2);
           caml_call1(caml_call1(poly_expr,fmt),abaker);
           caml_call2(Stdlib_format[123],fmt,_x5_);
           return caml_call2(Stdlib_format[123],fmt,_x6_);
          case 10:
           var aline_no$7=param[3],amodel_id=param[2],aid$4=param[1];
           caml_call2(Stdlib_format[123],fmt,_x7_);
           caml_call3(Stdlib_format[123],fmt,_x8_,cst_id$8);
           pp_dynamic_id(fmt,aid$4);
           caml_call2(Stdlib_format[123],fmt,_x9_);
           caml_call2(Stdlib_format[123],fmt,_x__);
           caml_call3(Stdlib_format[123],fmt,_x$_,cst_model_id);
           caml_call1(caml_call1(pp_contract_id,fmt),amodel_id);
           caml_call2(Stdlib_format[123],fmt,_ya_);
           caml_call2(Stdlib_format[123],fmt,_yb_);
           caml_call3(Stdlib_format[123],fmt,_yc_,cst_line_no$12);
           pp_line_no(fmt,aline_no$7);
           caml_call2(Stdlib_format[123],fmt,_yd_);
           return caml_call2(Stdlib_format[123],fmt,_ye_);
          default:
           var aline_no$8=param[2],aflag=param[1];
           caml_call2(Stdlib_format[123],fmt,_yf_);
           caml_call3(Stdlib_format[123],fmt,_yg_,cst_flag);
           caml_call1(caml_call1(pp_flag,fmt),aflag);
           caml_call2(Stdlib_format[123],fmt,_yh_);
           caml_call2(Stdlib_format[123],fmt,_yi_);
           caml_call3(Stdlib_format[123],fmt,_yj_,cst_line_no$13);
           pp_line_no(fmt,aline_no$8);
           caml_call2(Stdlib_format[123],fmt,_yk_);
           return caml_call2(Stdlib_format[123],fmt,_yl_)}});
    caml_update_dummy
     (show_action_f,
      function(poly_expr,poly_command,poly_type,poly_switch,x)
       {var
         _cm$_=
          caml_call1
           (caml_call1
             (caml_call1(caml_call1(pp_action_f,poly_expr),poly_command),
              poly_type),
            poly_switch);
        return caml_call3(Stdlib_format[127],_ym_,_cm$_,x)});
    function pp_scenario_kind(fmt,x)
     {caml_call2(Stdlib_format[123],fmt,_yn_);
      caml_call3(Stdlib_format[123],fmt,_yo_,cst_kind);
      var _cm__=x[1];
      caml_call1(caml_call2(Stdlib_format[123],fmt,_yp_),_cm__);
      caml_call2(Stdlib_format[123],fmt,_yq_);
      return caml_call2(Stdlib_format[123],fmt,_yr_)}
    function show_scenario_kind(x)
     {return caml_call3(Stdlib_format[127],_ys_,pp_scenario_kind,x)}
    function map_scenario_f(poly_expr,poly_command,poly_type,poly_switch,x)
     {var _cmW_=x[4],_cmX_=x[3],_cmY_=x[2];
      function _cmZ_(param)
       {switch(param[0])
         {case 0:
           var
            ashow=param[5],
            aaccept_unknown_types=param[4],
            aline_no=param[3],
            acontract=param[2],
            aid=param[1];
           return [0,
                   aid,
                   map_contract_f
                    (poly_expr,poly_command,poly_type,poly_switch,acontract),
                   aline_no,
                   aaccept_unknown_types,
                   ashow];
          case 1:
           var aline_no$0=param[3],aexpression=param[2],aid$0=param[1];
           return [1,aid$0,caml_call1(poly_expr,aexpression),aline_no$0];
          case 2:
           var aline_no$1=param[2],aid$1=param[1];return [2,aid$1,aline_no$1];
          case 3:
           var
            aexport=param[17],
            ashow$0=param[16],
            amessage=param[15],
            avoting_powers=param[14],
            alevel=param[13],
            aamount=param[12],
            atime=param[11],
            achain_id=param[10],
            asender=param[9],
            asource=param[8],
            amessageClass=param[7],
            atitle=param[6],
            aline_no$2=param[5],
            aparams=param[4],
            aexception=param[3],
            avalid=param[2],
            aid$2=param[1],
            _cm1_=caml_call1(poly_expr,avoting_powers);
           if(alevel)
            var x=alevel[1],_cm2_=[0,caml_call1(poly_expr,x)];
           else
            var _cm2_=0;
           var _cm3_=caml_call1(poly_expr,aamount);
           if(atime)
            var x$0=atime[1],_cm4_=[0,caml_call1(poly_expr,x$0)];
           else
            var _cm4_=0;
           if(achain_id)
            var x$1=achain_id[1],_cm5_=[0,caml_call1(poly_expr,x$1)];
           else
            var _cm5_=0;
           if(asender)
            var
             x$2=asender[1],
             _cm6_=[0,map_account_or_address(poly_expr,x$2)];
           else
            var _cm6_=0;
           if(asource)
            var
             x$3=asource[1],
             _cm7_=[0,map_account_or_address(poly_expr,x$3)];
           else
            var _cm7_=0;
           var _cm8_=caml_call1(poly_expr,aparams);
           if(aexception)
            var x$4=aexception[1],_cm9_=[0,caml_call1(poly_expr,x$4)];
           else
            var _cm9_=0;
           return [3,
                   aid$2,
                   caml_call1(poly_expr,avalid),
                   _cm9_,
                   _cm8_,
                   aline_no$2,
                   atitle,
                   amessageClass,
                   _cm7_,
                   _cm6_,
                   _cm5_,
                   _cm4_,
                   _cm3_,
                   _cm2_,
                   _cm1_,
                   amessage,
                   ashow$0,
                   aexport];
          case 4:var amessage$0=param[1];return [4,amessage$0];
          case 5:
           var aline_no$3=param[3],ainner=param[2],atag=param[1];
           return [5,atag,ainner,aline_no$3];
          case 6:
           var aline_no$4=param[2],acondition=param[1];
           return [6,caml_call1(poly_expr,acondition),aline_no$4];
          case 7:
           var
            aline_no$5=param[5],
            acompile=param[4],
            astripStrings=param[3],
            ahtml=param[2],
            aexpression$0=param[1];
           return [7,
                   caml_call1(poly_expr,aexpression$0),
                   ahtml,
                   astripStrings,
                   acompile,
                   aline_no$5];
          case 8:var a0=param[1];return [8,a0];
          case 9:
           var abaker=param[3],aline_no$6=param[2],aid$3=param[1];
           return [9,aid$3,aline_no$6,caml_call1(poly_expr,abaker)];
          case 10:
           var aline_no$7=param[3],amodel_id=param[2],aid$4=param[1];
           return [10,aid$4,amodel_id,aline_no$7];
          default:
           var aline_no$8=param[2],aflag=param[1];return [11,aflag,aline_no$8]}}
      var _cm0_=caml_call1(caml_call1(Stdlib_list[17],_cmZ_),_cmY_);
      return [0,x[1],_cm0_,_cmX_,_cmW_]}
    var
     erase_types_alg=[],
     erase_contract_aux=function _cmV_(_cmU_){return _cmV_.fun(_cmU_)};
    function _yt_(t){return t}
    function _yu_(line_no,param,c){return [0,c,line_no]}
    caml_update_dummy
     (erase_types_alg,
      [0,
       function(line_no,param,e)
        {switch(e[0])
          {case 19:
            var l=e[1],l$0=[0,l[1],l[2],l[3],l[4],0,0],e$0=[19,l$0];break;
           case 21:
            var
             storage=e[4],
             balance=e[3],
             baker=e[2],
             c=e[1],
             c$0=caml_call1(erase_contract_aux,c),
             e$0=[21,c$0,baker,balance,storage];
            break;
           default:var e$0=e}
         return [0,e$0,line_no]},
       _yu_,
       _yt_]);
    caml_update_dummy
     (erase_contract_aux,
      function(init)
       {var _cmI_=0,_cmJ_=init[12];
        function _cmK_(ov){return [0,ov[1],ov[2],ov[3],ov[4],ov[5],0]}
        var
         _cmL_=caml_call2(Utils_List[20],_cmK_,_cmJ_),
         _cmM_=init[11],
         _cmN_=init[10],
         _cmO_=init[9],
         _cmP_=init[8],
         _cmQ_=init[7],
         _cmR_=init[6];
        function _cmS_(ep)
         {return [0,ep[1],ep[2],ep[3],ep[4],ep[5],ep[6],ep[7],0]}
        var _cmT_=caml_call2(Utils_List[20],_cmS_,_cmR_);
        return [0,
                init[1],
                init[2],
                init[3],
                init[4],
                init[5],
                _cmT_,
                _cmQ_,
                _cmP_,
                _cmO_,
                _cmN_,
                _cmM_,
                _cmL_,
                _cmI_]});
    var
     erase_types_command=cata_tcommand(erase_types_alg),
     erase_types_expr=cata_texpr(erase_types_alg);
    function erase_types_contract(param)
     {var
       c=param[1],
       c$0=
        map_contract_f
         (erase_types_expr,
          erase_types_command,
          Utils_Control[1],
          Utils_Control[1],
          c);
      return [0,caml_call1(erase_contract_aux,c$0)]}
    function layout_records_f(line_no,et,e)
     {if(12 === e[0])
       {var l=e[1],match=getRepr(et),switch$0=0;
        if(typeof match !== "number" && 6 === match[0])
         {var layout$1=match[1],layout=get(layout$1);switch$0 = 1}
        if(! switch$0)var layout=0;
        if(layout)
         var
          layout$0=layout[1],
          f=
           function(param)
            {var target=param[2],source=param[1];return [0,source,target]},
          _cmF_=caml_call1(Utils_Binary_tree[41],layout$0),
          fields=caml_call2(Utils_List[20],f,_cmF_);
        else
         var
          _cmH_=function(param){var x=param[1];return [0,x,x]},
          fields=caml_call2(Utils_List[20],_cmH_,l);
        var
         _cmG_=
          function(param)
           {var n=param[1],x=caml_call2(Utils_List[43],n,l);return [0,n,x]},
         e$0=[12,caml_call2(Utils_List[20],_cmG_,fields)];
        return [0,e$0,et,line_no]}
      return [0,e,et,line_no]}
    var
     _yv_=Utils_Control[1],
     layout_records_alg=
      [0,
       layout_records_f,
       function(line_no,ct,c){return [0,c,ct,line_no]},
       _yv_],
     layout_records_expr=cata_texpr(layout_records_alg),
     layout_records_command=cata_tcommand(layout_records_alg);
    function layout_records_instance(param)
     {var state=param[2],template=param[1],tcontract=template[1];
      function _cmE_(x){return x}
      return [0,
              [0,
               map_contract_f
                (layout_records_expr,
                 layout_records_command,
                 function(x){return x},
                 _cmE_,
                 tcontract)],
              state]}
    function check_initial_flag(line_no,flag)
     {var _cmC_=is_initial_flag(flag);
      if(_cmC_)
       {var _cmD_=caml_call1(show_flag,flag);
        throw [0,
               SmartExcept,
               [0,
                [0,936573133,caml_call2(Stdlib_printf[4],_yw_,_cmD_)],
                [0,[0,848053268,line_no],0]]]}
      return _cmC_}
    function build_contract
     (balance,
      storage,
      baker,
      tstorage_explicit,
      opt,
      _cmB_,
      _cmA_,
      _cmz_,
      entry_points_layout,
      entry_points)
     {if(opt)var sth=opt[1],flags=sth;else var flags=0;
      if(_cmB_)
       var sth$0=_cmB_[1],global_variables=sth$0;
      else
       var global_variables=0;
      if(_cmA_)var sth$1=_cmA_[1],metadata=sth$1;else var metadata=0;
      if(_cmz_)var sth$2=_cmz_[1],views=sth$2;else var views=0;
      return [0,
              0,
              balance,
              storage,
              baker,
              tstorage_explicit,
              entry_points,
              entry_points_layout,
              0,
              flags,
              global_variables,
              metadata,
              views,
              0]}
    function build_entry_point
     (name,tparameter,opt,lazify,lazy_no_code,line_no,body)
     {if(opt)var sth=opt[1],originate=sth;else var originate=1;
      var line_no$0=caml_call2(Utils_Option[45],body[2],line_no),_cmx_=0;
      if(tparameter)
       var t=tparameter[1],_cmy_=[0,-306175688,t];
      else
       var _cmy_=919067353;
      return [0,name,_cmy_,originate,lazify,lazy_no_code,line_no$0,body,_cmx_]}
    function _yx_(M)
     {function sequence_meta(m)
       {switch(m[0])
         {case 0:
           var
            xs=m[1],
            _cmp_=function(xs){return [0,xs]},
            _cmq_=caml_call2(M[15],sequence_meta,xs);
           return caml_call2(M[6],_cmq_,_cmp_);
          case 1:
           var
            xs$0=m[1],
            f=
             function(param)
              {var v=param[2],k=param[1];
               function _cmu_(param){var v=param[2],k=param[1];return [0,k,v]}
               var _cmv_=sequence_meta(v),_cmw_=caml_call2(M[7],k,_cmv_);
               return caml_call2(M[6],_cmw_,_cmu_)},
            _cmr_=function(xs){return [1,xs]},
            _cms_=caml_call2(M[15],f,xs$0);
           return caml_call2(M[6],_cms_,_cmr_);
          case 2:
           var x=m[1],_cmt_=function(x){return [2,x]};
           return caml_call2(M[6],x,_cmt_);
          default:return caml_call1(M[2],m)}}
      function sequence_entry_point(x)
       {function _cmo_(body)
         {return [0,x[1],x[2],x[3],x[4],x[5],x[6],body,x[8]]}
        return caml_call2(M[6],x[7],_cmo_)}
      function sequence_offchain_view(x)
       {function _cmn_(body){return [0,x[1],x[2],x[3],body,x[5],x[6]]}
        return caml_call2(M[6],x[4],_cmn_)}
      function sequence_command_f(e)
       {switch(e[0])
         {case 0:
           var e$0=e[1],_clN_=function(e){return [0,e]};
           return caml_call2(M[5],_clN_,e$0);
          case 1:
           var e$1=e[1],_clO_=function(e){return [1,e]};
           return caml_call2(M[5],_clO_,e$1);
          case 2:
           var
            m=e[2],
            e$2=e[1],
            _clP_=caml_call1(M[20],m),
            _clQ_=function(e,m){return [2,e,m]},
            _clR_=caml_call2(M[5],_clQ_,e$2);
           return caml_call2(M[9],_clR_,_clP_);
          case 3:
           var
            c2=e[3],
            c1=e[2],
            e$3=e[1],
            _clS_=function(e,c1,c2){return [3,e,c1,c2]},
            _clT_=caml_call2(M[5],_clS_,e$3),
            _clU_=caml_call2(M[9],_clT_,c1);
           return caml_call2(M[9],_clU_,c2);
          case 4:
           var
            cases=e[2],
            scrutinee=e[1],
            _clV_=
             function(scrutinee)
              {function _cmj_(cases)
                {return caml_call1(M[2],[4,scrutinee,cases])}
               function _cmk_(param)
                {var b=param[3],a=param[2],c=param[1];
                 function _cmm_(b){return caml_call1(M[2],[0,c,a,b])}
                 return caml_call2(M[24],b,_cmm_)}
               var _cml_=caml_call3(Utils_Control[3],M[15],cases,_cmk_);
               return caml_call2(M[24],_cml_,_cmj_)};
           return caml_call2(M[24],scrutinee,_clV_);
          case 5:
           var
            c=e[3],
            p=e[2],
            e$4=e[1],
            _clW_=function(param){var c=param[2],e=param[1];return [5,e,p,c]},
            _clX_=caml_call2(M[7],e$4,c);
           return caml_call2(M[6],_clX_,_clW_);
          case 6:
           var
            c$0=e[3],
            p$0=e[2],
            e$5=e[1],
            _clY_=
             function(param){var c=param[2],e=param[1];return [6,e,p$0,c]},
            _clZ_=caml_call2(M[7],e$5,c$0);
           return caml_call2(M[6],_clZ_,_clY_);
          case 7:
           var
            ko_match=e[4],
            ok_match=e[3],
            id=e[2],
            expr=e[1],
            _cl0_=
             function(expr,ok_match,ko_match)
              {return [7,expr,id,ok_match,ko_match]},
            _cl1_=caml_call2(M[5],_cl0_,expr),
            _cl2_=caml_call2(M[9],_cl1_,ok_match);
           return caml_call2(M[9],_cl2_,ko_match);
          case 8:
           var e$6=e[2],x=e[1],_cl3_=function(e){return [8,x,e]};
           return caml_call2(M[5],_cl3_,e$6);
          case 9:
           var
            e2=e[2],
            e1=e[1],
            _cl4_=function(e1,e2){return [9,e1,e2]},
            _cl5_=caml_call2(M[5],_cl4_,e1);
           return caml_call2(M[9],_cl5_,e2);
          case 10:
           var
            e2$0=e[2],
            e1$0=e[1],
            _cl6_=function(e1,e2){return [10,e1,e2]},
            _cl7_=caml_call2(M[5],_cl6_,e1$0);
           return caml_call2(M[9],_cl7_,e2$0);
          case 11:
           var
            b=e[3],
            e2$1=e[2],
            e1$1=e[1],
            _cl8_=function(e1,e2){return [11,e1,e2,b]},
            _cl9_=caml_call2(M[5],_cl8_,e1$1);
           return caml_call2(M[9],_cl9_,e2$1);
          case 12:
           var
            c2$0=e[3],
            c1$0=e[2],
            x$0=e[1],
            _cl__=
             function(c1)
              {function _cmi_(c2){return caml_call1(M[2],[12,x$0,c1,c2])}
               return caml_call2(M[24],c2$0,_cmi_)};
           return caml_call2(M[24],c1$0,_cl__);
          case 13:
           var
            c$1=e[3],
            e$7=e[2],
            x$1=e[1],
            _cl$_=function(e,c){return [13,x$1,e,c]},
            _cma_=caml_call2(M[5],_cl$_,e$7);
           return caml_call2(M[9],_cma_,c$1);
          case 14:
           var
            c$2=e[2],
            e$8=e[1],
            _cmb_=function(e,c){return [14,e,c]},
            _cmc_=caml_call2(M[5],_cmb_,e$8);
           return caml_call2(M[9],_cmc_,c$2);
          case 15:
           var e$9=e[1],_cmd_=function(e){return [15,e]};
           return caml_call2(M[5],_cmd_,e$9);
          case 16:return caml_call1(M[2],e);
          case 17:
           var t=e[2],e$10=e[1],_cme_=function(e){return [17,e,t]};
           return caml_call2(M[5],_cme_,e$10);
          case 18:
           var t$0=e[2],c$3=e[1],_cmf_=function(c){return [18,c,t$0]};
           return caml_call2(M[5],_cmf_,c$3);
          case 19:
           var e$11=e[1],_cmg_=function(e){return [19,e]};
           return caml_call2(M[5],_cmg_,e$11);
          default:
           var e$12=e[2],s=e[1],_cmh_=function(e){return [20,s,e]};
           return caml_call2(M[5],_cmh_,e$12)}}
      function sequence_expr_f(e)
       {switch(e[0])
         {case 0:return caml_call1(M[2],e);
          case 1:
           var e$0=e[2],p=e[1],_ckG_=function(e){return [1,p,e]};
           return caml_call2(M[5],_ckG_,e$0);
          case 2:
           var e$1=e[2],p$0=e[1],_ckH_=function(e){return [2,p$0,e]};
           return caml_call2(M[5],_ckH_,e$1);
          case 3:
           var
            e2=e[3],
            e1=e[2],
            p$1=e[1],
            _ckI_=function(e1,e2){return [3,p$1,e1,e2]},
            _ckJ_=caml_call2(M[5],_ckI_,e1);
           return caml_call2(M[9],_ckJ_,e2);
          case 4:
           var
            e3=e[4],
            e2$0=e[3],
            e1$0=e[2],
            p$2=e[1],
            _ckK_=function(e1,e2,e3){return [4,p$2,e1,e2,e3]},
            _ckL_=caml_call2(M[5],_ckK_,e1$0),
            _ckM_=caml_call2(M[9],_ckL_,e2$0);
           return caml_call2(M[9],_ckM_,e3);
          case 5:return caml_call1(M[2],e);
          case 6:
           var e$2=e[2],p$3=e[1],_ckN_=function(e){return [6,p$3,e]};
           return caml_call2(M[5],_ckN_,e$2);
          case 7:
           var
            e2$1=e[3],
            e1$1=e[2],
            p$4=e[1],
            _ckO_=function(e1,e2){return [7,p$4,e1,e2]},
            _ckP_=caml_call2(M[5],_ckO_,e1$1);
           return caml_call2(M[9],_ckP_,e2$1);
          case 8:
           var
            e3$0=e[4],
            e2$2=e[3],
            e1$2=e[2],
            p$5=e[1],
            _ckQ_=function(e1,e2,e3){return [8,p$5,e1,e2,e3]},
            _ckR_=caml_call2(M[5],_ckQ_,e1$2),
            _ckS_=caml_call2(M[9],_ckR_,e2$2);
           return caml_call2(M[9],_ckS_,e3$0);
          case 9:
           var
            e2$3=e[3],
            e1$3=e[2],
            v=e[1],
            _ckT_=caml_call1(M[20],e2$3),
            _ckU_=function(e1,e2){return [9,v,e1,e2]},
            _ckV_=caml_call2(M[5],_ckU_,e1$3);
           return caml_call2(M[9],_ckV_,_ckT_);
          case 10:
           var
            missing_message=e[4],
            default_value=e[3],
            key=e[2],
            items=e[1],
            _ckW_=caml_call1(M[20],missing_message),
            _ckX_=caml_call1(M[20],default_value),
            _ckY_=
             function(items,key,default_value,missing_message)
              {return [10,items,key,default_value,missing_message]},
            _ckZ_=caml_call2(M[5],_ckY_,items),
            _ck0_=caml_call2(M[9],_ckZ_,key),
            _ck1_=caml_call2(M[9],_ck0_,_ckX_);
           return caml_call2(M[9],_ck1_,_ckW_);
          case 11:
           var
            es=e[1],
            _ck2_=caml_call1(M[19],es),
            _ck3_=function(es){return [11,es]};
           return caml_call2(M[5],_ck3_,_ck2_);
          case 12:
           var
            es$0=e[1],
            _ck4_=caml_call2(M[15],M[22],es$0),
            _ck5_=function(es){return [12,es]};
           return caml_call2(M[5],_ck5_,_ck4_);
          case 13:
           var
            es$1=e[1],
            _ck6_=caml_call1(M[19],es$1),
            _ck7_=function(es){return [13,es]};
           return caml_call2(M[5],_ck7_,_ck6_);
          case 14:
           var
            es$2=e[2],
            big=e[1],
            _ck8_=caml_call2(M[15],M[23],es$2),
            _ck9_=function(es){return [14,big,es]};
           return caml_call2(M[5],_ck9_,_ck8_);
          case 15:
           var
            es$3=e[1],
            _ck__=caml_call1(M[19],es$3),
            _ck$_=function(es){return [15,es]};
           return caml_call2(M[5],_ck$_,_ck__);
          case 16:
           var
            transaction=e[2],
            state=e[1],
            _cla_=function(state,transaction){return [16,state,transaction]},
            _clb_=caml_call2(M[5],_cla_,state);
           return caml_call2(M[9],_clb_,transaction);
          case 17:
           var
            es$4=e[2],
            instrs=e[1],
            _clc_=caml_call1(M[19],es$4),
            _cld_=function(es){return [17,instrs,es]};
           return caml_call2(M[5],_cld_,_clc_);
          case 18:
           var
            l=e[2],
            f=e[1],
            _cle_=function(f,l){return [18,f,l]},
            _clf_=caml_call2(M[5],_cle_,f);
           return caml_call2(M[9],_clf_,l);
          case 19:
           var
            match=e[1],
            tResult=match[6],
            tParams=match[5],
            clean_stack=match[4],
            body=match[3],
            name=match[2],
            id=match[1],
            _clg_=
             function(body)
              {return [19,[0,id,name,body,clean_stack,tParams,tResult]]};
           return caml_call2(M[5],_clg_,body);
          case 20:return caml_call1(M[2],e);
          case 21:
           var
            storage=e[4],
            balance=e[3],
            baker=e[2],
            contract_template=e[1],
            _ckD_=
             function(balance)
              {function _clx_(storage)
                {function _clz_(baker)
                  {function _clB_(entry_points)
                    {function _clD_(global_variables)
                      {function _clF_(metadata)
                        {function _clL_(views)
                          {return caml_call1
                                   (M[2],
                                    [0,
                                     contract_template[1],
                                     balance,
                                     storage,
                                     baker,
                                     contract_template[5],
                                     entry_points,
                                     contract_template[7],
                                     contract_template[8],
                                     contract_template[9],
                                     global_variables,
                                     metadata,
                                     views,
                                     contract_template[13]])}
                         var
                          _clM_=
                           caml_call2
                            (M[15],sequence_offchain_view,contract_template[12]);
                         return caml_call2(M[24],_clM_,_clL_)}
                       var _clG_=contract_template[11];
                       function _clH_(param)
                        {var y=param[2],x=param[1];
                         function _clJ_(y){return [0,x,y]}
                         var _clK_=sequence_meta(y);
                         return caml_call2(M[6],_clK_,_clJ_)}
                       var _clI_=caml_call2(M[15],_clH_,_clG_);
                       return caml_call2(M[24],_clI_,_clF_)}
                     var _clE_=caml_call2(M[15],M[22],contract_template[10]);
                     return caml_call2(M[24],_clE_,_clD_)}
                   var
                    _clC_=
                     caml_call2(M[15],sequence_entry_point,contract_template[6]);
                   return caml_call2(M[24],_clC_,_clB_)}
                 var _clA_=caml_call1(M[20],contract_template[4]);
                 return caml_call2(M[24],_clA_,_clz_)}
               var _cly_=caml_call1(M[20],contract_template[3]);
               return caml_call2(M[24],_cly_,_clx_)},
            _ckE_=caml_call1(M[20],contract_template[2]),
            _ckF_=caml_call2(M[24],_ckE_,_ckD_),
            _clh_=
             function(contract_template,baker,balance,storage)
              {return [21,contract_template,baker,balance,storage]},
            _cli_=caml_call2(M[5],_clh_,_ckF_),
            _clj_=caml_call2(M[9],_cli_,baker),
            _clk_=caml_call2(M[9],_clj_,balance);
           return caml_call2(M[9],_clk_,storage);
          case 22:
           var
            address=e[3],
            arg_type=e[2],
            entry_point=e[1],
            _cll_=function(address){return [22,entry_point,arg_type,address]};
           return caml_call2(M[5],_cll_,address);
          case 23:
           var
            buffer=e[3],
            length=e[2],
            offset=e[1],
            _clm_=
             function(offset,length,buffer){return [23,offset,length,buffer]},
            _cln_=caml_call2(M[5],_clm_,offset),
            _clo_=caml_call2(M[9],_cln_,length);
           return caml_call2(M[9],_clo_,buffer);
          case 24:
           var
            message_format=e[3],
            message=e[2],
            secret_key=e[1],
            _clp_=
             function(secret_key,message)
              {return [24,secret_key,message,message_format]},
            _clq_=caml_call2(M[5],_clp_,secret_key);
           return caml_call2(M[9],_clq_,message);
          case 25:
           var
            destination=e[3],
            amount=e[2],
            arg=e[1],
            _clr_=
             function(arg,amount,destination)
              {return [25,arg,amount,destination]},
            _cls_=caml_call2(M[5],_clr_,arg),
            _clt_=caml_call2(M[9],_cls_,amount);
           return caml_call2(M[9],_clt_,destination);
          case 26:
           var
            cases=e[2],
            scrutinee=e[1],
            _clu_=caml_call2(M[15],M[22],cases),
            _clv_=function(scrutinee,cases){return [26,scrutinee,cases]},
            _clw_=caml_call2(M[5],_clv_,scrutinee);
           return caml_call2(M[9],_clw_,_clu_);
          default:return caml_call1(M[2],e)}}
      function cata(param)
       {var fm_type=param[3],fm_command=param[2],fm_expr=param[1];
        function ce(param)
         {var line_no=param[2],e=param[1];
          function _ckB_(e){return caml_call2(fm_expr,line_no,e)}
          var
           _ckC_=
            sequence_expr_f(map_expr_f(ce,cc,fm_type,Utils_Control[1],e));
          return caml_call2(M[24],_ckC_,_ckB_)}
        function cc(param)
         {var line_no=param[2],c=param[1];
          function _ckz_(c){return caml_call2(fm_command,line_no,c)}
          var _ckA_=sequence_command_f(map_command_f(ce,cc,fm_type,c));
          return caml_call2(M[24],_ckA_,_ckz_)}
        return [0,ce,cc]}
      function cataM_expr(alg){return cata(alg)[1]}
      function cataM_command(alg){return cata(alg)[2]}
      return [0,
              sequence_meta,
              sequence_command_f,
              sequence_expr_f,
              cataM_expr,
              cataM_command]}
    var
     _yy_=
      [0,
       equal_texpr,
       equal_tcommand,
       compare_texpr,
       compare_tcommand,
       pp_texpr,
       show_texpr,
       pp_tcommand,
       show_tcommand,
       build_texpr,
       build_tcommand],
     Smartml_Basics=
      [0,
       equal_dynamic_id,
       compare_dynamic_id,
       pp_dynamic_id,
       show_dynamic_id,
       equal_static_id,
       compare_static_id,
       pp_static_id,
       show_static_id,
       equal_contract_id,
       compare_contract_id,
       pp_contract_id,
       show_contract_id,
       equal_typed,
       compare_typed,
       pp_typed,
       show_typed,
       equal_untyped,
       compare_untyped,
       pp_untyped,
       show_untyped,
       elim_typed,
       elim_untyped,
       equal_extra,
       compare_extra,
       pp_extra,
       show_extra,
       fold_extra,
       get_extra,
       map_extra,
       equal_record_f,
       compare_record_f,
       pp_record_f,
       show_record_f,
       pp_binOpInfix,
       show_binOpInfix,
       equal_binOpInfix,
       pp_binOpPrefix,
       show_binOpPrefix,
       equal_binOpPrefix,
       equal_micheline,
       pp_micheline,
       show_micheline,
       map_micheline,
       compare_micheline,
       equal_inline_michelson,
       pp_inline_michelson,
       show_inline_michelson,
       map_inline_michelson,
       compare_inline_michelson,
       equal_line_no,
       compare_line_no,
       pp_line_no,
       show_line_no,
       pp_entry_point,
       show_entry_point,
       fold_entry_point,
       pp_offchain_view,
       show_offchain_view,
       fold_offchain_view,
       equal_address,
       compare_address,
       pp_address,
       show_address,
       equal_contract_derived,
       compare_contract_derived,
       pp_contract_derived,
       show_contract_derived,
       map_contract_derived,
       fold_contract_derived,
       pp_contract_f,
       show_contract_f,
       fold_contract_f,
       equal_contract_f,
       compare_contract_f,
       map_contract_f,
       pp_lambda_f,
       show_lambda_f,
       fold_lambda_f,
       equal_lcontract,
       compare_lcontract,
       pp_lcontract,
       show_lcontract,
       map_lcontract,
       fold_lcontract,
       equal_prim0,
       compare_prim0,
       pp_prim0,
       show_prim0,
       map_prim0,
       fold_prim0,
       equal_prim1,
       compare_prim1,
       pp_prim1,
       show_prim1,
       map_prim1,
       fold_prim1,
       equal_prim2,
       compare_prim2,
       pp_prim2,
       show_prim2,
       map_prim2,
       fold_prim2,
       equal_prim3,
       compare_prim3,
       pp_prim3,
       show_prim3,
       map_prim3,
       fold_prim3,
       equal_expr_f,
       compare_expr_f,
       pp_expr_f,
       show_expr_f,
       fold_expr_f,
       map_expr_f,
       equal_record_field_binding,
       compare_record_field_binding,
       pp_record_field_binding,
       show_record_field_binding,
       equal_pattern,
       compare_pattern,
       pp_pattern,
       show_pattern,
       pp_command_f,
       show_command_f,
       map_command_f,
       fold_command_f,
       equal_command_f,
       compare_command_f,
       string_of_line_no,
       head_line_no,
       _yy_,
       Untyped,
       equal_expr_modulo_line_nos,
       equal_command_modulo_line_nos,
       cata_texpr,
       cata_tcommand,
       monoid_talg,
       para_texpr,
       para_tcommand,
       para_talg,
       cata_expr,
       cata_command,
       monoid_alg,
       para_alg,
       para_expr,
       para_command,
       equal_lambda,
       compare_lambda,
       pp_lambda,
       show_lambda,
       map_lambda,
       fold_lambda,
       equal_tlambda,
       compare_tlambda,
       pp_tlambda,
       show_tlambda,
       map_tlambda,
       fold_tlambda,
       equal_contract,
       compare_contract,
       pp_contract,
       show_contract,
       equal_tcontract,
       compare_tcontract,
       pp_tcontract,
       show_tcontract,
       equal_value_f,
       equal$6,
       equal_operation,
       equal_instance,
       equal_contract_state,
       compare_value_f,
       compare$4,
       compare_operation,
       compare_instance,
       compare_contract_state,
       pp_value_f,
       show_value_f,
       pp_value,
       show_value,
       pp_operation,
       show_operation,
       pp_instance,
       show_instance,
       pp_contract_state,
       show_contract_state,
       map_value_f,
       map_value,
       map_operation,
       map_instance,
       map_contract_state,
       fold_value_f,
       fold_value,
       fold_operation,
       fold_instance,
       fold_contract_state,
       build_value,
       cata_value,
       type_of_value,
       pp_tmessage,
       show_tmessage,
       pp_smart_except,
       show_smart_except,
       SmartExcept,
       equal_typing_constraint,
       pp_typing_constraint,
       show_typing_constraint,
       Execution,
       scenario_state,
       copy_scenario_state,
       get_parameter_type,
       exists_expr,
       exists_command,
       exists_contract,
       pp_account_or_address,
       show_account_or_address,
       map_account_or_address,
       pp_action_f,
       show_action_f,
       pp_scenario_kind,
       show_scenario_kind,
       map_scenario_f,
       size_texpr,
       size_tcommand,
       size_tcontract,
       erase_types_expr,
       erase_types_command,
       erase_types_contract,
       layout_records_expr,
       layout_records_command,
       layout_records_instance,
       _yx_,
       check_initial_flag,
       build_contract,
       build_entry_point];
    caml_register_global(6464,Smartml_Basics,"Smartml__Basics");
    function to_json(param)
     {switch(param[0])
       {case 0:var i=param[1];return [4,[0,[0,cst_int,[2,i]],0]];
        case 1:var s=param[1];return [4,[0,[0,cst_string,[2,s]],0]];
        case 2:
         var s$0=param[1];
         return [4,[0,[0,cst_bytes,[2,caml_call1(Utils_Misc[4][1],s$0)]],0]];
        case 3:
         var
          arguments$0=param[3],
          annotations=param[2],
          name=param[1],
          entries=0;
         if(0 === annotations)
          var entries$0=entries;
         else
          var
           _cky_=function(x){return [2,x]},
           entries$0=
            [0,
             [0,cst_annots,[3,caml_call2(Utils_List[20],_cky_,annotations)]],
             entries];
         var
          entries$1=
           0 === arguments$0
            ?entries$0
            :[0,
              [0,cst_args,[3,caml_call2(Utils_List[20],to_json,arguments$0)]],
              entries$0];
         return [4,[0,[0,cst_prim,[2,name]],entries$1]];
        default:
         var xs=param[1];return [3,caml_call2(Utils_List[20],to_json,xs)]}}
    function pp_as_json(margin,max_indent,param,ppf,x)
     {var _ckx_=to_json(x);
      return caml_call5(Utils_Misc[19],margin,max_indent,0,ppf,_ckx_)}
    function unAnnot(annots)
     {if(annots)
       {var _ckw_=caml_call2(Utils_String[7],cst$39,annots);
        return caml_call2(Stdlib_printf[4],_yz_,_ckw_)}
      return cst$40}
    function pretty(indent,param)
     {switch(param[0])
       {case 0:
         var i=param[1];return caml_call3(Stdlib_printf[4],_yA_,indent,i);
        case 1:
         var s=param[1];return caml_call3(Stdlib_printf[4],_yB_,indent,s);
        case 2:
         var s$0=param[1],_ckj_=caml_call1(Utils_Misc[4][1],s$0);
         return caml_call3(Stdlib_printf[4],_yC_,indent,_ckj_);
        case 3:
         var _ckk_=param[1];
         if(param[3])
          {var
            arguments$0=param[3],
            annotations=param[2],
            _ckl_=
             function(x)
              {return pretty(caml_call2(Stdlib[28],indent,cst$41),x)},
            _ckm_=caml_call2(Utils_List[20],_ckl_,arguments$0),
            _ckn_=caml_call2(Utils_String[7],cst$42,_ckm_),
            _cko_=unAnnot(annotations);
           return caml_call6
                   (Stdlib_printf[4],_yD_,indent,_ckk_,_cko_,_ckn_,indent)}
         var annotations$0=param[2],_ckp_=unAnnot(annotations$0);
         return caml_call4(Stdlib_printf[4],_yE_,indent,_ckk_,_ckp_);
        default:
         var _ckq_=param[1];
         if(_ckq_)
          {var
            _ckr_=caml_call2(Stdlib[28],indent,cst$43),
            _cks_=function(_ckv_){return pretty(_ckr_,_ckv_)},
            _ckt_=caml_call2(Utils_List[20],_cks_,_ckq_),
            _cku_=caml_call2(Utils_String[7],cst$44,_ckt_);
           return caml_call4(Stdlib_printf[4],_yF_,indent,_cku_,indent)}
         return caml_call2(Stdlib_printf[4],_yG_,indent)}}
    function left(x){return [3,cst_Left$1,0,[0,x,0]]}
    function right(x){return [3,cst_Right$1,0,[0,x,0]]}
    function annotName(t)
     {return caml_call3(Utils_String[4],t,1,caml_ml_string_length(t) - 1 | 0)}
    function extractAnnot(default$0,param)
     {if(param)
       {var _cke_=param[2],_ckf_=param[1];
        if(_cke_)
         {var n2=_cke_[1];
          if(caml_string_equal(caml_call3(Utils_String[4],_ckf_,0,1),cst$45))
           return annotName(_ckf_);
          if(caml_string_equal(caml_call3(Utils_String[4],n2,0,1),cst$46))
           return annotName(n2);
          var
           _ckg_=annotName(n2),
           _ckh_=caml_call2(Stdlib[28],cst$47,_ckg_),
           _cki_=annotName(_ckf_);
          return caml_call2(Stdlib[28],_cki_,_ckh_)}
        return annotName(_ckf_)}
      return default$0}
    function identity(x)
     {var
       _ckc_=pretty(cst$48,x),
       _ckd_=caml_call2(Stdlib[28],cst_Not_handled,_ckc_);
      return caml_call1(Stdlib[2],_ckd_)}
    function unString(param)
     {if(typeof param !== "number" && -976970511 === param[1])
       {var s=param[2];return s}
      throw [0,Assert_failure,_yH_]}
    function parse(json)
     {if(typeof json === "number")return _yI_;
      var _cj2_=json[1];
      if(365180284 <= _cj2_)
       {if(848054398 <= _cj2_)
         {if(963043957 <= _cj2_)
           {var l=json[2];
            if(l)
             {var _cj3_=l[1],_cj4_=_cj3_[1];
              if(caml_string_notequal(_cj4_,cst_bytes$0))
               if(caml_string_notequal(_cj4_,cst_int$0))
                {if(! caml_string_notequal(_cj4_,cst_string$0))
                  {var _cj8_=_cj3_[2];
                   if
                    (typeof _cj8_
                     !==
                     "number"
                     &&
                     -976970511
                     ===
                     _cj8_[1]
                     &&
                     !
                     l[2])
                    {var s=_cj8_[2];return [1,s]}}}
               else
                {var _cj9_=_cj3_[2];
                 if
                  (typeof _cj9_
                   !==
                   "number"
                   &&
                   -976970511
                   ===
                   _cj9_[1]
                   &&
                   !
                   l[2])
                  {var s$0=_cj9_[2];return [0,s$0]}}
              else
               {var _cj__=_cj3_[2];
                if
                 (typeof _cj__
                  !==
                  "number"
                  &&
                  -976970511
                  ===
                  _cj__[1]
                  &&
                  !
                  l[2])
                 {var s$1=_cj__[2];
                  return [2,caml_call1(Utils_Misc[4][2],s$1)]}}}
            var match=caml_call3(Utils_List[82],0,cst_prim$0,l);
            if(match)
             {var _cj5_=match[1];
              if(typeof _cj5_ !== "number" && -976970511 === _cj5_[1])
               {var
                 name=_cj5_[2],
                 match$0=caml_call3(Utils_List[82],0,cst_annots$0,l),
                 switch$0=0;
                if(match$0)
                 {var _cj6_=match$0[1];
                  if(typeof _cj6_ !== "number" && 848054398 === _cj6_[1])
                   {var
                     annots=_cj6_[2],
                     annotations=caml_call2(Utils_List[20],unString,annots);
                    switch$0 = 1}}
                if(! switch$0)var annotations=0;
                var
                 match$1=caml_call3(Utils_List[82],0,cst_args$0,l),
                 switch$1=0;
                if(match$1)
                 {var _cj7_=match$1[1];
                  if(typeof _cj7_ !== "number" && 848054398 === _cj7_[1])
                   {var
                     args=_cj7_[2],
                     arguments$0=caml_call2(Utils_List[20],parse,args);
                    switch$1 = 1}}
                if(! switch$1)var arguments$0=0;
                return [3,name,annotations,arguments$0]}}
            throw [0,Assert_failure,_yJ_]}
          var l$0=json[2];
          return [4,caml_call2(Utils_List[20],parse,l$0)]}
        if(737456202 <= _cj2_)
         {var b=json[2],_cj$_=0,_cka_=0,_ckb_=b?cst_true:cst_false;
          return [3,_ckb_,_cka_,_cj$_]}
        throw [0,Assert_failure,_yK_]}
      if(3654863 <= _cj2_)throw [0,Assert_failure,_yL_];
      var s$2=json[2];
      return [1,s$2]}
    function int$2(s){return [0,s]}
    function string$1(s){return [1,s]}
    function bytes$1(s){return [2,s]}
    function primitive(name,opt,arguments$0)
     {if(opt)var sth=opt[1],annotations=sth;else var annotations=0;
      return [3,name,annotations,arguments$0]}
    function sequence(l){return [4,l]}
    var
     Smartml_Micheline=
      [0,
       unAnnot,
       pretty,
       to_json,
       pp_as_json,
       left,
       right,
       annotName,
       extractAnnot,
       identity,
       unString,
       parse,
       int$2,
       string$1,
       bytes$1,
       primitive,
       sequence];
    caml_register_global(6465,Smartml_Micheline,"Smartml__Micheline");
    var
     _yY_=Michelson_base_Type[13],
     _yZ_=Michelson_base_Type[14],
     _y0_=Michelson_base_Type[15],
     _y6_=Michelson_base_Type[21],
     _y7_=Michelson_base_Type[22],
     _y8_=Michelson_base_Type[23],
     _y9_=Michelson_base_Type[24],
     _y$_=Michelson_base_Type[26],
     _za_=Michelson_base_Type[27],
     _zb_=Michelson_base_Type[28],
     _zc_=Michelson_base_Type[29],
     _zd_=Michelson_base_Type[30],
     _ze_=Michelson_base_Type[31],
     _zf_=Michelson_base_Type[32],
     _zg_=Michelson_base_Type[33],
     _zh_=Michelson_base_Type[34],
     _zi_=Michelson_base_Type[35],
     _zj_=Michelson_base_Type[36],
     _zk_=Michelson_base_Type[37],
     _zl_=Michelson_base_Type[38],
     _zm_=Michelson_base_Type[39],
     _zn_=Michelson_base_Type[40],
     _zo_=Michelson_base_Type[41],
     _zp_=Michelson_base_Type[42],
     _zq_=Michelson_base_Type[43],
     _zr_=Michelson_base_Type[44],
     _zs_=Michelson_base_Type[45],
     _zt_=Michelson_base_Type[46],
     _zu_=Michelson_base_Type[47],
     _zv_=Michelson_base_Type[48],
     _zw_=Michelson_base_Type[49],
     _zx_=Michelson_base_Type[50],
     _zy_=Michelson_base_Type[51],
     _zz_=Michelson_base_Type[52],
     _zA_=Michelson_base_Type[53],
     _zB_=Michelson_base_Type[54],
     _zC_=Michelson_base_Type[55],
     _zD_=Michelson_base_Type[56],
     _zE_=Michelson_base_Type[57],
     _zF_=Michelson_base_Type[58],
     _zG_=Michelson_base_Type[59],
     _zH_=Michelson_base_Type[60],
     _zI_=Michelson_base_Type[61],
     _zJ_=Michelson_base_Type[62],
     _zK_=Michelson_base_Primitive[1],
     _zL_=Michelson_base_Primitive[2],
     _zM_=Michelson_base_Primitive[3],
     _zQ_=Michelson_base_Primitive[7],
     _zR_=Michelson_base_Primitive[8],
     _zS_=Michelson_base_Primitive[9],
     _zV_=Michelson_base_Primitive[12],
     _zW_=Michelson_base_Primitive[13],
     _zX_=Michelson_base_Primitive[14],
     _zZ_=Michelson_base_Primitive[16],
     _z0_=Michelson_base_Primitive[17],
     _z1_=Michelson_base_Primitive[18],
     _z3_=Michelson_base_Primitive[20],
     _z4_=Michelson_base_Primitive[21],
     _z5_=Michelson_base_Primitive[22],
     _z7_=include$1[1],
     _yM_=Michelson_base_Type[1],
     _yN_=Michelson_base_Type[2],
     _yO_=Michelson_base_Type[3],
     _yP_=Michelson_base_Type[4],
     _yQ_=Michelson_base_Type[5],
     _yR_=Michelson_base_Type[6],
     _yS_=Michelson_base_Type[7],
     _yT_=Michelson_base_Type[8],
     _yU_=Michelson_base_Type[9],
     _yV_=Michelson_base_Type[10],
     _yW_=Michelson_base_Type[11],
     _yX_=Michelson_base_Type[12],
     _y1_=Michelson_base_Type[16],
     _y2_=Michelson_base_Type[17],
     _y3_=Michelson_base_Type[18],
     _y4_=Michelson_base_Type[19],
     _y5_=Michelson_base_Type[20],
     _y__=Michelson_base_Type[25],
     _zN_=Michelson_base_Primitive[4],
     _zO_=Michelson_base_Primitive[5],
     _zP_=Michelson_base_Primitive[6],
     _zT_=Michelson_base_Primitive[10],
     _zU_=Michelson_base_Primitive[11],
     _zY_=Michelson_base_Primitive[15],
     _z2_=Michelson_base_Primitive[19],
     _z6_=Michelson_base_Primitive[23];
    function cata_mtype_stripped(f)
     {return caml_call1(_y$_,function(param,_cj1_,x){return caml_call1(f,x)})}
    var
     has_missing_type=
      cata_mtype_stripped
       (function(x)
         {if(3 === x[0]){var t=x[1];return [0,t,0]}
          return caml_call3(_y6_,Stdlib[37],0,x)}),
     remove_annots=
      cata_mtype_stripped
       (function(x)
         {if(2 === x[0])
           {var _cj0_=x[1];
            if(typeof _cj0_ !== "number")
             {if(0 === _cj0_[0])
               {var snd=x[3],fst=x[2];return caml_call4(_zH_,0,0,fst,snd)}
              var right=x[3],left=x[2];
              return caml_call4(_zI_,0,0,left,right)}}
          return caml_call3(_za_,0,0,x)});
    function equal_ad_step(lhs,rhs)
     {if(lhs){if(rhs)return 1}else if(! rhs)return 1;return 0}
    function compare_ad_step(lhs,rhs)
     {if(lhs){if(rhs)return 0}else if(! rhs)return 0;
      function to_int(param){return param?1:0}
      var _cjZ_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_cjZ_)}
    function pp_ad_step(fmt,param)
     {return param
              ?caml_call2(Stdlib_format[13],fmt,cst_D)
              :caml_call2(Stdlib_format[13],fmt,cst_A)}
    function show_ad_step(x)
     {return caml_call3(Stdlib_format[127],_z8_,pp_ad_step,x)}
    var equal_tezos_int=function _cjY_(_cjX_){return _cjY_.fun(_cjX_)};
    caml_update_dummy
     (equal_tezos_int,function(x){return caml_call1(Utils_Bigint[1],x)});
    var compare_tezos_int=function _cjW_(_cjV_){return _cjW_.fun(_cjV_)};
    caml_update_dummy
     (compare_tezos_int,function(x){return caml_call1(Utils_Bigint[2],x)});
    var
     pp_tezos_int=function _cjU_(_cjT_){return _cjU_.fun(_cjT_)},
     show_tezos_int=function _cjS_(_cjR_){return _cjS_.fun(_cjR_)};
    caml_update_dummy
     (pp_tezos_int,function(fmt){return caml_call1(Utils_Bigint[3],fmt)});
    caml_update_dummy
     (show_tezos_int,
      function(x){return caml_call3(Stdlib_format[127],_z9_,pp_tezos_int,x)});
    var
     equal_stack=
      function _cjQ_(_cjO_,_cjP_){return _cjQ_.fun(_cjO_,_cjP_)};
    caml_update_dummy
     (equal_stack,
      function(lhs,rhs)
       {if(lhs)
         {if(rhs)
           {var rhs0=rhs[1],lhs0=lhs[1],x=lhs0,y=rhs0;
            for(;;)
             {if(x)
               {if(y)
                 {var
                   y$0=y[2],
                   b=y[1],
                   x$0=x[2],
                   a=x[1],
                   _cjN_=caml_call1(caml_call1(_y7_,a),b);
                  if(_cjN_){var x=x$0,y=y$0;continue}
                  return _cjN_}}
              else
               if(! y)return 1;
              return 0}}}
        else
         if(! rhs)return 1;
        return 0});
    var
     compare_stack=
      function _cjM_(_cjK_,_cjL_){return _cjM_.fun(_cjK_,_cjL_)};
    caml_update_dummy
     (compare_stack,
      function(lhs,rhs)
       {if(lhs)
         {if(rhs)
           {var rhs0=rhs[1],lhs0=lhs[1],x=lhs0,y=rhs0;
            for(;;)
             {if(x)
               {if(y)
                 {var
                   y$0=y[2],
                   b=y[1],
                   x$0=x[2],
                   a=x[1],
                   x$1=caml_call1(caml_call1(_y8_,a),b);
                  if(0 === x$1){var x=x$0,y=y$0;continue}
                  return x$1}
                return 1}
              return y?-1:0}}}
        else
         if(! rhs)return 0;
        function to_int(param){return param?0:1}
        var _cjJ_=to_int(rhs);
        return caml_int_compare(to_int(lhs),_cjJ_)});
    var
     pp_stack=function _cjI_(_cjG_,_cjH_){return _cjI_.fun(_cjG_,_cjH_)},
     show_stack=function _cjF_(_cjE_){return _cjF_.fun(_cjE_)};
    caml_update_dummy
     (pp_stack,
      function(fmt,param)
       {if(param)
         {var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_z__);
          caml_call2(Stdlib_format[123],fmt,_z$_);
          var
           _cjC_=0,
           _cjD_=
            function(sep,x)
             {if(sep)caml_call2(Stdlib_format[123],fmt,_Aa_);
              caml_call1(caml_call1(_y9_,fmt),x);
              return 1};
          caml_call3(Stdlib_list[22],_cjD_,_cjC_,a0);
          caml_call2(Stdlib_format[123],fmt,_Ab_);
          return caml_call2(Stdlib_format[123],fmt,_Ac_)}
        return caml_call2(Stdlib_format[13],fmt,cst_Stack_failed)});
    caml_update_dummy
     (show_stack,
      function(x){return caml_call3(Stdlib_format[127],_Ad_,pp_stack,x)});
    var
     equal_instr_f=
      function _cjB_(_cjx_,_cjy_,_cjz_,_cjA_)
       {return _cjB_.fun(_cjx_,_cjy_,_cjz_,_cjA_)};
    caml_update_dummy
     (equal_instr_f,
      function(poly_i,poly_literal,lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 1;break;
           case 1:if(typeof match === "number" && 1 === match)return 1;break;
           case 2:if(typeof match === "number" && 2 === match)return 1;break;
           default:if(typeof match === "number" && 3 <= match)return 1}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_call1
                      (caml_call1
                        (caml_call1(_zK_,function(x){return caml_call1(_y7_,x)}),
                         lhs0),
                       rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_call1
                      (caml_call1
                        (caml_call1(_zQ_,function(x){return caml_call1(_y7_,x)}),
                         lhs0$0),
                       rhs0$0)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_call1(caml_call1(_zV_,lhs0$1),rhs0$1)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_call1(caml_call1(_zZ_,lhs0$2),rhs0$2)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$3=match[1],lhs0$3=lhs[1];
              return caml_call1(caml_call1(_z3_,lhs0$3),rhs0$3)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_string_equal(lhs0$4,rhs0$4)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$5=match[1],lhs0$5=lhs[1],x=lhs0$5,y=rhs0$5;
              for(;;)
               {if(x)
                 {if(y)
                   {var
                     y$0=y[2],
                     b=y[1],
                     x$0=x[2],
                     a=x[1],
                     _cjh_=caml_string_equal(a,b);
                    if(_cjh_){var x=x$0,y=y$0;continue}
                    return _cjh_}}
                else
                 if(! y)return 1;
                return 0}}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_call1
                      (caml_call1
                        (caml_call1
                          (equal_inline_michelson,
                           function(x){return caml_call1(_y7_,x)}),
                         lhs0$6),
                       rhs0$6)}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1];
              return caml_call2(poly_i,lhs0$7,rhs0$7)}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var
               rhs1=match[2],
               rhs0$8=match[1],
               lhs1=lhs[2],
               lhs0$8=lhs[1],
               _cji_=lhs0$8 === rhs0$8?1:0;
              return _cji_?caml_call2(poly_i,lhs1,rhs1):_cji_}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var rhs0$9=match[1],lhs0$9=lhs[1];
              return caml_call2(poly_i,lhs0$9,rhs0$9)}
            break;
           case 11:
            if(typeof match !== "number" && 11 === match[0])
             {var rhs0$10=match[1],lhs0$10=lhs[1];
              return caml_call2(poly_i,lhs0$10,rhs0$10)}
            break;
           case 12:
            if(typeof match !== "number" && 12 === match[0])
             {var rhs0$11=match[1],lhs0$11=lhs[1];
              return caml_call2(poly_i,lhs0$11,rhs0$11)}
            break;
           case 13:
            if(typeof match !== "number" && 13 === match[0])
             {var rhs0$12=match[1],lhs0$12=lhs[1];
              return caml_call2(poly_i,lhs0$12,rhs0$12)}
            break;
           case 14:
            if(typeof match !== "number" && 14 === match[0])
             {var rhs0$13=match[1],lhs0$13=lhs[1];
              return lhs0$13 === rhs0$13?1:0}
            break;
           case 15:
            if(typeof match !== "number" && 15 === match[0])
             {var rhs0$14=match[1],lhs0$14=lhs[1];
              return lhs0$14 === rhs0$14?1:0}
            break;
           case 16:
            if(typeof match !== "number" && 16 === match[0])
             {var rhs0$15=match[1],lhs0$15=lhs[1];
              return lhs0$15 === rhs0$15?1:0}
            break;
           case 17:
            if(typeof match !== "number" && 17 === match[0])
             {var rhs0$16=match[1],lhs0$16=lhs[1];
              return lhs0$16 === rhs0$16?1:0}
            break;
           case 18:
            if(typeof match !== "number" && 18 === match[0])
             {var
               rhs1$0=match[2],
               rhs0$17=match[1],
               lhs1$0=lhs[2],
               lhs0$17=lhs[1],
               _cjj_=caml_call2(poly_i,lhs0$17,rhs0$17);
              return _cjj_?caml_call2(poly_i,lhs1$0,rhs1$0):_cjj_}
            break;
           case 19:
            if(typeof match !== "number" && 19 === match[0])
             {var
               rhs1$1=match[2],
               rhs0$18=match[1],
               lhs1$1=lhs[2],
               lhs0$18=lhs[1],
               _cjk_=caml_call2(poly_i,lhs0$18,rhs0$18);
              return _cjk_?caml_call2(poly_i,lhs1$1,rhs1$1):_cjk_}
            break;
           case 20:
            if(typeof match !== "number" && 20 === match[0])
             {var
               rhs1$2=match[2],
               rhs0$19=match[1],
               lhs1$2=lhs[2],
               lhs0$19=lhs[1],
               _cjl_=caml_call2(poly_i,lhs0$19,rhs0$19);
              return _cjl_?caml_call2(poly_i,lhs1$2,rhs1$2):_cjl_}
            break;
           case 21:
            if(typeof match !== "number" && 21 === match[0])
             {var
               rhs1$3=match[2],
               rhs0$20=match[1],
               lhs1$3=lhs[2],
               lhs0$20=lhs[1],
               _cjm_=caml_call2(poly_i,lhs0$20,rhs0$20);
              return _cjm_?caml_call2(poly_i,lhs1$3,rhs1$3):_cjm_}
            break;
           case 22:
            if(typeof match !== "number" && 22 === match[0])
             {var
               rhs1$4=match[2],
               rhs0$21=match[1],
               lhs1$4=lhs[2],
               lhs0$21=lhs[1],
               _cjn_=caml_call1(caml_call1(_y7_,lhs0$21),rhs0$21);
              return _cjn_?caml_call2(poly_literal,lhs1$4,rhs1$4):_cjn_}
            break;
           case 23:
            if(typeof match !== "number" && 23 === match[0])
             {var rhs0$22=match[1],lhs0$22=lhs[1],x$1=lhs0$22,y$1=rhs0$22;
              for(;;)
               {if(x$1)
                 {if(y$1)
                   {var
                     y$2=y$1[2],
                     b$0=y$1[1],
                     x$2=x$1[2],
                     a$0=x$1[1],
                     _cjo_=caml_call2(poly_i,a$0,b$0);
                    if(_cjo_){var x$1=x$2,y$1=y$2;continue}
                    return _cjo_}}
                else
                 if(! y$1)return 1;
                return 0}}
            break;
           case 24:
            if(typeof match !== "number" && 24 === match[0])
             {var rhs0$23=match[1],lhs0$23=lhs[1],x$3=lhs0$23,y$3=rhs0$23;
              for(;;)
               {if(x$3)
                 {if(y$3)
                   {var
                     y$4=y$3[2],
                     b$1=y$3[1],
                     x$4=x$3[2],
                     a$1=x$3[1],
                     _cjp_=a$1 === b$1?1:0;
                    if(_cjp_){var x$3=x$4,y$3=y$4;continue}
                    return _cjp_}}
                else
                 if(! y$3)return 1;
                return 0}}
            break;
           case 25:
            if(typeof match !== "number" && 25 === match[0])
             {var rhs0$24=match[1],lhs0$24=lhs[1];
              return lhs0$24 === rhs0$24?1:0}
            break;
           case 26:
            if(typeof match !== "number" && 26 === match[0])
             {var rhs0$25=match[1],lhs0$25=lhs[1],x$5=lhs0$25,y$5=rhs0$25;
              for(;;)
               {if(x$5)
                 {if(y$5)
                   {var
                     y$6=y$5[2],
                     b$2=y$5[1],
                     x$6=x$5[2],
                     a$2=x$5[1],
                     _cjw_=equal_ad_step(a$2,b$2);
                    if(_cjw_){var x$5=x$6,y$5=y$6;continue}
                    return _cjw_}}
                else
                 if(! y$5)return 1;
                return 0}}
            break;
           case 27:
            if(typeof match !== "number" && 27 === match[0])
             {var rhs0$26=match[1],lhs0$26=lhs[1],x$7=lhs0$26,y$7=rhs0$26;
              for(;;)
               {if(x$7)
                 {if(y$7)
                   {var
                     y$8=y$7[2],
                     b$3=y$7[1],
                     x$8=x$7[2],
                     a$3=x$7[1],
                     _cjv_=equal_ad_step(a$3,b$3);
                    if(_cjv_){var x$7=x$8,y$7=y$8;continue}
                    return _cjv_}}
                else
                 if(! y$7)return 1;
                return 0}}
            break;
           case 28:
            if(typeof match !== "number" && 28 === match[0])
             {var
               rhs2=match[3],
               rhs1$5=match[2],
               rhs0$27=match[1],
               lhs2=lhs[3],
               lhs1$5=lhs[2],
               lhs0$27=lhs[1],
               _cjq_=caml_call1(caml_call1(_y7_,lhs0$27),rhs0$27),
               _cjr_=_cjq_?caml_call1(caml_call1(_y7_,lhs1$5),rhs1$5):_cjq_;
              return _cjr_?caml_call2(poly_i,lhs2,rhs2):_cjr_}
            break;
           default:
            if(typeof match !== "number" && 29 === match[0])
             {var
               rhscode=match[3],
               rhststorage=match[2],
               rhstparameter=match[1],
               lhscode=lhs[3],
               lhststorage=lhs[2],
               lhstparameter=lhs[1],
               rhs1$6=rhstparameter[2],
               rhs0$28=rhstparameter[1],
               lhs1$6=lhstparameter[2],
               lhs0$28=lhstparameter[1],
               _cjs_=caml_call1(caml_call1(_y7_,lhs0$28),rhs0$28);
              if(_cjs_)
               {var switch$0=0;
                if(lhs1$6)
                 if(rhs1$6)
                  var
                   b$4=rhs1$6[1],
                   a$4=lhs1$6[1],
                   _cjt_=caml_string_equal(a$4,b$4);
                 else
                  switch$0 = 1;
                else
                 if(rhs1$6)switch$0 = 1;else var _cjt_=1;
                if(switch$0)var _cjt_=0}
              else
               var _cjt_=_cjs_;
              var
               _cju_=
                _cjt_
                 ?caml_call1(caml_call1(_y7_,lhststorage),rhststorage)
                 :_cjt_;
              return _cju_?caml_call2(poly_i,lhscode,rhscode):_cju_}}
        return 0});
    var
     compare_instr_f=
      function _cjg_(_cjc_,_cjd_,_cje_,_cjf_)
       {return _cjg_.fun(_cjc_,_cjd_,_cje_,_cjf_)};
    caml_update_dummy
     (compare_instr_f,
      function(poly_i,poly_literal,lhs,match)
       {if(typeof lhs === "number")
         switch(lhs)
          {case 0:if(typeof match === "number" && ! match)return 0;break;
           case 1:if(typeof match === "number" && 1 === match)return 0;break;
           case 2:if(typeof match === "number" && 2 === match)return 0;break;
           default:if(typeof match === "number" && 3 <= match)return 0}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_call1
                      (caml_call1
                        (caml_call1(_zL_,function(x){return caml_call1(_y8_,x)}),
                         lhs0),
                       rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_call1
                      (caml_call1
                        (caml_call1(_zR_,function(x){return caml_call1(_y8_,x)}),
                         lhs0$0),
                       rhs0$0)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_call1(caml_call1(_zW_,lhs0$1),rhs0$1)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_call1(caml_call1(_z0_,lhs0$2),rhs0$2)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var rhs0$3=match[1],lhs0$3=lhs[1];
              return caml_call1(caml_call1(_z4_,lhs0$3),rhs0$3)}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_string_compare(lhs0$4,rhs0$4)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$5=match[1],lhs0$5=lhs[1],x=lhs0$5,y=rhs0$5;
              for(;;)
               {if(x)
                 {if(y)
                   {var
                     y$0=y[2],
                     b=y[1],
                     x$0=x[2],
                     a=x[1],
                     x$1=caml_string_compare(a,b);
                    if(0 === x$1){var x=x$0,y=y$0;continue}
                    return x$1}
                  return 1}
                return y?-1:0}}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_call1
                      (caml_call1
                        (caml_call1
                          (compare_inline_michelson,
                           function(x){return caml_call1(_y8_,x)}),
                         lhs0$6),
                       rhs0$6)}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1];
              return caml_call2(poly_i,lhs0$7,rhs0$7)}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var
               rhs1=match[2],
               rhs0$8=match[1],
               lhs1=lhs[2],
               lhs0$8=lhs[1],
               x$2=caml_int_compare(lhs0$8,rhs0$8);
              return 0 === x$2?caml_call2(poly_i,lhs1,rhs1):x$2}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var rhs0$9=match[1],lhs0$9=lhs[1];
              return caml_call2(poly_i,lhs0$9,rhs0$9)}
            break;
           case 11:
            if(typeof match !== "number" && 11 === match[0])
             {var rhs0$10=match[1],lhs0$10=lhs[1];
              return caml_call2(poly_i,lhs0$10,rhs0$10)}
            break;
           case 12:
            if(typeof match !== "number" && 12 === match[0])
             {var rhs0$11=match[1],lhs0$11=lhs[1];
              return caml_call2(poly_i,lhs0$11,rhs0$11)}
            break;
           case 13:
            if(typeof match !== "number" && 13 === match[0])
             {var rhs0$12=match[1],lhs0$12=lhs[1];
              return caml_call2(poly_i,lhs0$12,rhs0$12)}
            break;
           case 14:
            if(typeof match !== "number" && 14 === match[0])
             {var rhs0$13=match[1],lhs0$13=lhs[1];
              return caml_int_compare(lhs0$13,rhs0$13)}
            break;
           case 15:
            if(typeof match !== "number" && 15 === match[0])
             {var rhs0$14=match[1],lhs0$14=lhs[1];
              return caml_int_compare(lhs0$14,rhs0$14)}
            break;
           case 16:
            if(typeof match !== "number" && 16 === match[0])
             {var rhs0$15=match[1],lhs0$15=lhs[1];
              return caml_int_compare(lhs0$15,rhs0$15)}
            break;
           case 17:
            if(typeof match !== "number" && 17 === match[0])
             {var rhs0$16=match[1],lhs0$16=lhs[1];
              return caml_int_compare(lhs0$16,rhs0$16)}
            break;
           case 18:
            if(typeof match !== "number" && 18 === match[0])
             {var
               rhs1$0=match[2],
               rhs0$17=match[1],
               lhs1$0=lhs[2],
               lhs0$17=lhs[1],
               x$3=caml_call2(poly_i,lhs0$17,rhs0$17);
              return 0 === x$3?caml_call2(poly_i,lhs1$0,rhs1$0):x$3}
            break;
           case 19:
            if(typeof match !== "number" && 19 === match[0])
             {var
               rhs1$1=match[2],
               rhs0$18=match[1],
               lhs1$1=lhs[2],
               lhs0$18=lhs[1],
               x$4=caml_call2(poly_i,lhs0$18,rhs0$18);
              return 0 === x$4?caml_call2(poly_i,lhs1$1,rhs1$1):x$4}
            break;
           case 20:
            if(typeof match !== "number" && 20 === match[0])
             {var
               rhs1$2=match[2],
               rhs0$19=match[1],
               lhs1$2=lhs[2],
               lhs0$19=lhs[1],
               x$5=caml_call2(poly_i,lhs0$19,rhs0$19);
              return 0 === x$5?caml_call2(poly_i,lhs1$2,rhs1$2):x$5}
            break;
           case 21:
            if(typeof match !== "number" && 21 === match[0])
             {var
               rhs1$3=match[2],
               rhs0$20=match[1],
               lhs1$3=lhs[2],
               lhs0$20=lhs[1],
               x$6=caml_call2(poly_i,lhs0$20,rhs0$20);
              return 0 === x$6?caml_call2(poly_i,lhs1$3,rhs1$3):x$6}
            break;
           case 22:
            if(typeof match !== "number" && 22 === match[0])
             {var
               rhs1$4=match[2],
               rhs0$21=match[1],
               lhs1$4=lhs[2],
               lhs0$21=lhs[1],
               x$7=caml_call1(caml_call1(_y8_,lhs0$21),rhs0$21);
              return 0 === x$7?caml_call2(poly_literal,lhs1$4,rhs1$4):x$7}
            break;
           case 23:
            if(typeof match !== "number" && 23 === match[0])
             {var rhs0$22=match[1],lhs0$22=lhs[1],x$8=lhs0$22,y$1=rhs0$22;
              for(;;)
               {if(x$8)
                 {if(y$1)
                   {var
                     y$2=y$1[2],
                     b$0=y$1[1],
                     x$9=x$8[2],
                     a$0=x$8[1],
                     x$10=caml_call2(poly_i,a$0,b$0);
                    if(0 === x$10){var x$8=x$9,y$1=y$2;continue}
                    return x$10}
                  return 1}
                return y$1?-1:0}}
            break;
           case 24:
            if(typeof match !== "number" && 24 === match[0])
             {var rhs0$23=match[1],lhs0$23=lhs[1],x$11=lhs0$23,y$3=rhs0$23;
              for(;;)
               {if(x$11)
                 {if(y$3)
                   {var
                     y$4=y$3[2],
                     b$1=y$3[1],
                     x$12=x$11[2],
                     a$1=x$11[1],
                     x$13=caml_int_compare(a$1,b$1);
                    if(0 === x$13){var x$11=x$12,y$3=y$4;continue}
                    return x$13}
                  return 1}
                return y$3?-1:0}}
            break;
           case 25:
            if(typeof match !== "number" && 25 === match[0])
             {var rhs0$24=match[1],lhs0$24=lhs[1];
              return caml_int_compare(lhs0$24,rhs0$24)}
            break;
           case 26:
            if(typeof match !== "number" && 26 === match[0])
             {var rhs0$25=match[1],lhs0$25=lhs[1],x$14=lhs0$25,y$5=rhs0$25;
              for(;;)
               {if(x$14)
                 {if(y$5)
                   {var
                     y$6=y$5[2],
                     b$2=y$5[1],
                     x$15=x$14[2],
                     a$2=x$14[1],
                     x$24=compare_ad_step(a$2,b$2);
                    if(0 === x$24){var x$14=x$15,y$5=y$6;continue}
                    return x$24}
                  return 1}
                return y$5?-1:0}}
            break;
           case 27:
            if(typeof match !== "number" && 27 === match[0])
             {var rhs0$26=match[1],lhs0$26=lhs[1],x$16=lhs0$26,y$7=rhs0$26;
              for(;;)
               {if(x$16)
                 {if(y$7)
                   {var
                     y$8=y$7[2],
                     b$3=y$7[1],
                     x$17=x$16[2],
                     a$3=x$16[1],
                     x$23=compare_ad_step(a$3,b$3);
                    if(0 === x$23){var x$16=x$17,y$7=y$8;continue}
                    return x$23}
                  return 1}
                return y$7?-1:0}}
            break;
           case 28:
            if(typeof match !== "number" && 28 === match[0])
             {var
               rhs2=match[3],
               rhs1$5=match[2],
               rhs0$27=match[1],
               lhs2=lhs[3],
               lhs1$5=lhs[2],
               lhs0$27=lhs[1],
               x$18=caml_call1(caml_call1(_y8_,lhs0$27),rhs0$27);
              if(0 === x$18)
               {var x$19=caml_call1(caml_call1(_y8_,lhs1$5),rhs1$5);
                return 0 === x$19?caml_call2(poly_i,lhs2,rhs2):x$19}
              return x$18}
            break;
           default:
            if(typeof match !== "number" && 29 === match[0])
             {var
               rhscode=match[3],
               rhststorage=match[2],
               rhstparameter=match[1],
               lhscode=lhs[3],
               lhststorage=lhs[2],
               lhstparameter=lhs[1],
               rhs1$6=rhstparameter[2],
               rhs0$28=rhstparameter[1],
               lhs1$6=lhstparameter[2],
               lhs0$28=lhstparameter[1],
               x$20=caml_call1(caml_call1(_y8_,lhs0$28),rhs0$28);
              if(0 === x$20)
               if(lhs1$6)
                {var _cjb_=lhs1$6[1];
                 if(rhs1$6)
                  var b$4=rhs1$6[1],x$21=caml_string_compare(_cjb_,b$4);
                 else
                  var x$21=1}
               else
                var x$21=rhs1$6?-1:0;
              else
               var x$21=x$20;
              if(0 === x$21)
               {var x$22=caml_call1(caml_call1(_y8_,lhststorage),rhststorage);
                return 0 === x$22?caml_call2(poly_i,lhscode,rhscode):x$22}
              return x$21}}
        function to_int(param)
         {if(typeof param === "number")
           switch(param)
            {case 0:return 14;
             case 1:return 25;
             case 2:return 32;
             default:return 33}
          else
           switch(param[0])
            {case 0:return 0;
             case 1:return 1;
             case 2:return 2;
             case 3:return 3;
             case 4:return 4;
             case 5:return 5;
             case 6:return 6;
             case 7:return 7;
             case 8:return 8;
             case 9:return 9;
             case 10:return 10;
             case 11:return 11;
             case 12:return 12;
             case 13:return 13;
             case 14:return 15;
             case 15:return 16;
             case 16:return 17;
             case 17:return 18;
             case 18:return 19;
             case 19:return 20;
             case 20:return 21;
             case 21:return 22;
             case 22:return 23;
             case 23:return 24;
             case 24:return 26;
             case 25:return 27;
             case 26:return 28;
             case 27:return 29;
             case 28:return 30;
             default:return 31}}
        var _cja_=to_int(match);
        return caml_int_compare(to_int(lhs),_cja_)});
    var
     pp_instr_f=
      function _ci$_(_ci7_,_ci8_,_ci9_,_ci__)
       {return _ci$_.fun(_ci7_,_ci8_,_ci9_,_ci__)},
     show_instr_f=
      function _ci6_(_ci3_,_ci4_,_ci5_){return _ci6_.fun(_ci3_,_ci4_,_ci5_)};
    caml_update_dummy
     (pp_instr_f,
      function(poly_i,poly_literal,fmt,param)
       {if(typeof param === "number")
         switch(param)
          {case 0:return caml_call2(Stdlib_format[13],fmt,cst_MIdrop);
           case 1:return caml_call2(Stdlib_format[13],fmt,cst_MIswap);
           case 2:
            return caml_call2(Stdlib_format[13],fmt,cst_MIconcat_unresolved);
           default:return caml_call2(Stdlib_format[13],fmt,cst_MIlevel)}
        else
         switch(param[0])
          {case 0:
            var a0=param[1];
            caml_call2(Stdlib_format[123],fmt,_Ae_);
            caml_call1
             (caml_call2(_zM_,function(fmt){return caml_call1(_y9_,fmt)},fmt),
              a0);
            return caml_call2(Stdlib_format[123],fmt,_Af_);
           case 1:
            var a0$0=param[1];
            caml_call2(Stdlib_format[123],fmt,_Ag_);
            caml_call1
             (caml_call2(_zS_,function(fmt){return caml_call1(_y9_,fmt)},fmt),
              a0$0);
            return caml_call2(Stdlib_format[123],fmt,_Ah_);
           case 2:
            var a0$1=param[1];
            caml_call2(Stdlib_format[123],fmt,_Ai_);
            caml_call1(caml_call1(_zX_,fmt),a0$1);
            return caml_call2(Stdlib_format[123],fmt,_Aj_);
           case 3:
            var a0$2=param[1];
            caml_call2(Stdlib_format[123],fmt,_Ak_);
            caml_call1(caml_call1(_z1_,fmt),a0$2);
            return caml_call2(Stdlib_format[123],fmt,_Al_);
           case 4:
            var a0$3=param[1];
            caml_call2(Stdlib_format[123],fmt,_Am_);
            caml_call1(caml_call1(_z5_,fmt),a0$3);
            return caml_call2(Stdlib_format[123],fmt,_An_);
           case 5:
            var a0$4=param[1];
            caml_call2(Stdlib_format[123],fmt,_Ao_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_Ap_),a0$4);
            return caml_call2(Stdlib_format[123],fmt,_Aq_);
           case 6:
            var a0$5=param[1];
            caml_call2(Stdlib_format[123],fmt,_Ar_);
            caml_call2(Stdlib_format[123],fmt,_As_);
            var
             _ciT_=0,
             _ciU_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_At_);
                caml_call1(caml_call2(Stdlib_format[123],fmt,_Au_),x);
                return 1};
            caml_call3(Stdlib_list[22],_ciU_,_ciT_,a0$5);
            caml_call2(Stdlib_format[123],fmt,_Av_);
            return caml_call2(Stdlib_format[123],fmt,_Aw_);
           case 7:
            var a0$6=param[1];
            caml_call2(Stdlib_format[123],fmt,_Ax_);
            caml_call1
             (caml_call2
               (pp_inline_michelson,
                function(fmt){return caml_call1(_y9_,fmt)},
                fmt),
              a0$6);
            return caml_call2(Stdlib_format[123],fmt,_Ay_);
           case 8:
            var a0$7=param[1];
            caml_call2(Stdlib_format[123],fmt,_Az_);
            caml_call1(caml_call1(poly_i,fmt),a0$7);
            return caml_call2(Stdlib_format[123],fmt,_AA_);
           case 9:
            var a1=param[2],a0$8=param[1];
            caml_call2(Stdlib_format[123],fmt,_AB_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_AC_),a0$8);
            caml_call2(Stdlib_format[123],fmt,_AD_);
            caml_call1(caml_call1(poly_i,fmt),a1);
            return caml_call2(Stdlib_format[123],fmt,_AE_);
           case 10:
            var a0$9=param[1];
            caml_call2(Stdlib_format[123],fmt,_AF_);
            caml_call1(caml_call1(poly_i,fmt),a0$9);
            return caml_call2(Stdlib_format[123],fmt,_AG_);
           case 11:
            var a0$10=param[1];
            caml_call2(Stdlib_format[123],fmt,_AH_);
            caml_call1(caml_call1(poly_i,fmt),a0$10);
            return caml_call2(Stdlib_format[123],fmt,_AI_);
           case 12:
            var a0$11=param[1];
            caml_call2(Stdlib_format[123],fmt,_AJ_);
            caml_call1(caml_call1(poly_i,fmt),a0$11);
            return caml_call2(Stdlib_format[123],fmt,_AK_);
           case 13:
            var a0$12=param[1];
            caml_call2(Stdlib_format[123],fmt,_AL_);
            caml_call1(caml_call1(poly_i,fmt),a0$12);
            return caml_call2(Stdlib_format[123],fmt,_AM_);
           case 14:
            var a0$13=param[1];
            caml_call2(Stdlib_format[123],fmt,_AN_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_AO_),a0$13);
            return caml_call2(Stdlib_format[123],fmt,_AP_);
           case 15:
            var a0$14=param[1];
            caml_call2(Stdlib_format[123],fmt,_AQ_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_AR_),a0$14);
            return caml_call2(Stdlib_format[123],fmt,_AS_);
           case 16:
            var a0$15=param[1];
            caml_call2(Stdlib_format[123],fmt,_AT_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_AU_),a0$15);
            return caml_call2(Stdlib_format[123],fmt,_AV_);
           case 17:
            var a0$16=param[1];
            caml_call2(Stdlib_format[123],fmt,_AW_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_AX_),a0$16);
            return caml_call2(Stdlib_format[123],fmt,_AY_);
           case 18:
            var a1$0=param[2],a0$17=param[1];
            caml_call2(Stdlib_format[123],fmt,_AZ_);
            caml_call1(caml_call1(poly_i,fmt),a0$17);
            caml_call2(Stdlib_format[123],fmt,_A0_);
            caml_call1(caml_call1(poly_i,fmt),a1$0);
            return caml_call2(Stdlib_format[123],fmt,_A1_);
           case 19:
            var a1$1=param[2],a0$18=param[1];
            caml_call2(Stdlib_format[123],fmt,_A2_);
            caml_call1(caml_call1(poly_i,fmt),a0$18);
            caml_call2(Stdlib_format[123],fmt,_A3_);
            caml_call1(caml_call1(poly_i,fmt),a1$1);
            return caml_call2(Stdlib_format[123],fmt,_A4_);
           case 20:
            var a1$2=param[2],a0$19=param[1];
            caml_call2(Stdlib_format[123],fmt,_A5_);
            caml_call1(caml_call1(poly_i,fmt),a0$19);
            caml_call2(Stdlib_format[123],fmt,_A6_);
            caml_call1(caml_call1(poly_i,fmt),a1$2);
            return caml_call2(Stdlib_format[123],fmt,_A7_);
           case 21:
            var a1$3=param[2],a0$20=param[1];
            caml_call2(Stdlib_format[123],fmt,_A8_);
            caml_call1(caml_call1(poly_i,fmt),a0$20);
            caml_call2(Stdlib_format[123],fmt,_A9_);
            caml_call1(caml_call1(poly_i,fmt),a1$3);
            return caml_call2(Stdlib_format[123],fmt,_A__);
           case 22:
            var a1$4=param[2],a0$21=param[1];
            caml_call2(Stdlib_format[123],fmt,_A$_);
            caml_call1(caml_call1(_y9_,fmt),a0$21);
            caml_call2(Stdlib_format[123],fmt,_Ba_);
            caml_call1(caml_call1(poly_literal,fmt),a1$4);
            return caml_call2(Stdlib_format[123],fmt,_Bb_);
           case 23:
            var a0$22=param[1];
            caml_call2(Stdlib_format[123],fmt,_Bc_);
            caml_call2(Stdlib_format[123],fmt,_Bd_);
            var
             _ciV_=0,
             _ciW_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_Be_);
                caml_call1(caml_call1(poly_i,fmt),x);
                return 1};
            caml_call3(Stdlib_list[22],_ciW_,_ciV_,a0$22);
            caml_call2(Stdlib_format[123],fmt,_Bf_);
            return caml_call2(Stdlib_format[123],fmt,_Bg_);
           case 24:
            var a0$23=param[1];
            caml_call2(Stdlib_format[123],fmt,_Bh_);
            caml_call2(Stdlib_format[123],fmt,_Bi_);
            var
             _ciX_=0,
             _ciY_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_Bj_);
                caml_call1(caml_call2(Stdlib_format[123],fmt,_Bk_),x);
                return 1};
            caml_call3(Stdlib_list[22],_ciY_,_ciX_,a0$23);
            caml_call2(Stdlib_format[123],fmt,_Bl_);
            return caml_call2(Stdlib_format[123],fmt,_Bm_);
           case 25:
            var a0$24=param[1];
            caml_call2(Stdlib_format[123],fmt,_Bn_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_Bo_),a0$24);
            return caml_call2(Stdlib_format[123],fmt,_Bp_);
           case 26:
            var a0$25=param[1];
            caml_call2(Stdlib_format[123],fmt,_Bq_);
            caml_call2(Stdlib_format[123],fmt,_Br_);
            var
             _ciZ_=0,
             _ci0_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_Bs_);
                pp_ad_step(fmt,x);
                return 1};
            caml_call3(Stdlib_list[22],_ci0_,_ciZ_,a0$25);
            caml_call2(Stdlib_format[123],fmt,_Bt_);
            return caml_call2(Stdlib_format[123],fmt,_Bu_);
           case 27:
            var a0$26=param[1];
            caml_call2(Stdlib_format[123],fmt,_Bv_);
            caml_call2(Stdlib_format[123],fmt,_Bw_);
            var
             _ci1_=0,
             _ci2_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_Bx_);
                pp_ad_step(fmt,x);
                return 1};
            caml_call3(Stdlib_list[22],_ci2_,_ci1_,a0$26);
            caml_call2(Stdlib_format[123],fmt,_By_);
            return caml_call2(Stdlib_format[123],fmt,_Bz_);
           case 28:
            var a2=param[3],a1$5=param[2],a0$27=param[1];
            caml_call2(Stdlib_format[123],fmt,_BA_);
            caml_call1(caml_call1(_y9_,fmt),a0$27);
            caml_call2(Stdlib_format[123],fmt,_BB_);
            caml_call1(caml_call1(_y9_,fmt),a1$5);
            caml_call2(Stdlib_format[123],fmt,_BC_);
            caml_call1(caml_call1(poly_i,fmt),a2);
            return caml_call2(Stdlib_format[123],fmt,_BD_);
           default:
            var acode=param[3],atstorage=param[2],atparameter=param[1];
            caml_call2(Stdlib_format[123],fmt,_BE_);
            caml_call3(Stdlib_format[123],fmt,_BF_,cst_tparameter$0);
            var a1$6=atparameter[2],a0$28=atparameter[1];
            caml_call2(Stdlib_format[123],fmt,_BG_);
            caml_call1(caml_call1(_y9_,fmt),a0$28);
            caml_call2(Stdlib_format[123],fmt,_BH_);
            if(a1$6)
             {var x=a1$6[1];
              caml_call2(Stdlib_format[13],fmt,cst_Some$37);
              caml_call1(caml_call2(Stdlib_format[123],fmt,_BI_),x);
              caml_call2(Stdlib_format[13],fmt,cst$49)}
            else
             caml_call2(Stdlib_format[13],fmt,cst_None$37);
            caml_call2(Stdlib_format[123],fmt,_BJ_);
            caml_call2(Stdlib_format[123],fmt,_BK_);
            caml_call2(Stdlib_format[123],fmt,_BL_);
            caml_call3(Stdlib_format[123],fmt,_BM_,cst_tstorage$0);
            caml_call1(caml_call1(_y9_,fmt),atstorage);
            caml_call2(Stdlib_format[123],fmt,_BN_);
            caml_call2(Stdlib_format[123],fmt,_BO_);
            caml_call3(Stdlib_format[123],fmt,_BP_,cst_code);
            caml_call1(caml_call1(poly_i,fmt),acode);
            caml_call2(Stdlib_format[123],fmt,_BQ_);
            return caml_call2(Stdlib_format[123],fmt,_BR_)}});
    caml_update_dummy
     (show_instr_f,
      function(poly_i,poly_literal,x)
       {var _ciS_=caml_call1(caml_call1(pp_instr_f,poly_i),poly_literal);
        return caml_call3(Stdlib_format[127],_BS_,_ciS_,x)});
    function map_instr_f(poly_i,poly_literal,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return 0;case 1:return 1;case 2:return 2;default:return 3}
      else
       switch(param[0])
        {case 0:var a0=param[1];return [0,a0];
         case 1:var a0$0=param[1];return [1,a0$0];
         case 2:var a0$1=param[1];return [2,a0$1];
         case 3:var a0$2=param[1];return [3,a0$2];
         case 4:var a0$3=param[1];return [4,a0$3];
         case 5:var a0$4=param[1];return [5,a0$4];
         case 6:var a0$5=param[1];return [6,a0$5];
         case 7:var a0$6=param[1];return [7,a0$6];
         case 8:var a0$7=param[1];return [8,caml_call1(poly_i,a0$7)];
         case 9:
          var a1=param[2],a0$8=param[1];return [9,a0$8,caml_call1(poly_i,a1)];
         case 10:var a0$9=param[1];return [10,caml_call1(poly_i,a0$9)];
         case 11:var a0$10=param[1];return [11,caml_call1(poly_i,a0$10)];
         case 12:var a0$11=param[1];return [12,caml_call1(poly_i,a0$11)];
         case 13:var a0$12=param[1];return [13,caml_call1(poly_i,a0$12)];
         case 14:var a0$13=param[1];return [14,a0$13];
         case 15:var a0$14=param[1];return [15,a0$14];
         case 16:var a0$15=param[1];return [16,a0$15];
         case 17:var a0$16=param[1];return [17,a0$16];
         case 18:
          var a1$0=param[2],a0$17=param[1],_ciO_=caml_call1(poly_i,a1$0);
          return [18,caml_call1(poly_i,a0$17),_ciO_];
         case 19:
          var a1$1=param[2],a0$18=param[1],_ciP_=caml_call1(poly_i,a1$1);
          return [19,caml_call1(poly_i,a0$18),_ciP_];
         case 20:
          var a1$2=param[2],a0$19=param[1],_ciQ_=caml_call1(poly_i,a1$2);
          return [20,caml_call1(poly_i,a0$19),_ciQ_];
         case 21:
          var a1$3=param[2],a0$20=param[1],_ciR_=caml_call1(poly_i,a1$3);
          return [21,caml_call1(poly_i,a0$20),_ciR_];
         case 22:
          var a1$4=param[2],a0$21=param[1];
          return [22,a0$21,caml_call1(poly_literal,a1$4)];
         case 23:
          var a0$22=param[1];
          return [23,caml_call1(caml_call1(Stdlib_list[17],poly_i),a0$22)];
         case 24:var a0$23=param[1];return [24,a0$23];
         case 25:var a0$24=param[1];return [25,a0$24];
         case 26:var a0$25=param[1];return [26,a0$25];
         case 27:var a0$26=param[1];return [27,a0$26];
         case 28:
          var a2=param[3],a1$5=param[2],a0$27=param[1];
          return [28,a0$27,a1$5,caml_call1(poly_i,a2)];
         default:
          var acode=param[3],atstorage=param[2],atparameter=param[1];
          return [29,atparameter,atstorage,caml_call1(poly_i,acode)]}}
    function fold_instr_f(poly_i,poly_literal,acc,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return acc;
         case 1:return acc;
         case 2:return acc;
         default:return acc}
      else
       switch(param[0])
        {case 0:return acc;
         case 1:return acc;
         case 2:return acc;
         case 3:return acc;
         case 4:return acc;
         case 5:return acc;
         case 6:return acc;
         case 7:return acc;
         case 8:var a0=param[1];return caml_call2(poly_i,acc,a0);
         case 9:var a1=param[2];return caml_call2(poly_i,acc,a1);
         case 10:var a0$0=param[1];return caml_call2(poly_i,acc,a0$0);
         case 11:var a0$1=param[1];return caml_call2(poly_i,acc,a0$1);
         case 12:var a0$2=param[1];return caml_call2(poly_i,acc,a0$2);
         case 13:var a0$3=param[1];return caml_call2(poly_i,acc,a0$3);
         case 14:return acc;
         case 15:return acc;
         case 16:return acc;
         case 17:return acc;
         case 18:
          var a1$0=param[2],a0$4=param[1],acc$0=caml_call2(poly_i,acc,a0$4);
          return caml_call2(poly_i,acc$0,a1$0);
         case 19:
          var a1$1=param[2],a0$5=param[1],acc$1=caml_call2(poly_i,acc,a0$5);
          return caml_call2(poly_i,acc$1,a1$1);
         case 20:
          var a1$2=param[2],a0$6=param[1],acc$2=caml_call2(poly_i,acc,a0$6);
          return caml_call2(poly_i,acc$2,a1$2);
         case 21:
          var a1$3=param[2],a0$7=param[1],acc$3=caml_call2(poly_i,acc,a0$7);
          return caml_call2(poly_i,acc$3,a1$3);
         case 22:var a1$4=param[2];return caml_call2(poly_literal,acc,a1$4);
         case 23:
          var a0$8=param[1];
          return caml_call2(caml_call1(Stdlib_list[22],poly_i),acc,a0$8);
         case 24:return acc;
         case 25:return acc;
         case 26:return acc;
         case 27:return acc;
         case 28:var a2=param[3];return caml_call2(poly_i,acc,a2);
         default:var acode=param[3];return caml_call2(poly_i,acc,acode)}}
    var
     equal_literal_f=
      function _ciN_(_ciJ_,_ciK_,_ciL_,_ciM_)
       {return _ciN_.fun(_ciJ_,_ciK_,_ciL_,_ciM_)};
    caml_update_dummy
     (equal_literal_f,
      function(poly_instr,poly_literal,lhs,match)
       {if(typeof lhs === "number")
         {if(0 === lhs)
           {if(typeof match === "number" && ! match)return 1}
          else
           if(typeof match === "number" && match)return 1}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_call1(caml_call1(equal_tezos_int,lhs0),rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];return lhs0$0 === rhs0$0?1:0}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_string_equal(lhs0$1,rhs0$1)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_string_equal(lhs0$2,rhs0$2)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var
               rhs1=match[2],
               rhs0$3=match[1],
               lhs1=lhs[2],
               lhs0$3=lhs[1],
               _ciE_=caml_call2(poly_literal,lhs0$3,rhs0$3);
              return _ciE_?caml_call2(poly_literal,lhs1,rhs1):_ciE_}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_call2(poly_literal,lhs0$4,rhs0$4)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$5=match[1],lhs0$5=lhs[1];
              return caml_call2(poly_literal,lhs0$5,rhs0$5)}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_call2(poly_literal,lhs0$6,rhs0$6)}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1],x=lhs0$7,y=rhs0$7;
              for(;;)
               {if(x)
                 {if(y)
                   {var
                     y$0=y[2],
                     b=y[1],
                     x$0=x[2],
                     a=x[1],
                     _ciF_=caml_call2(poly_literal,a,b);
                    if(_ciF_){var x=x$0,y=y$0;continue}
                    return _ciF_}}
                else
                 if(! y)return 1;
                return 0}}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var
               rhs0$8=match[1],
               lhs0$8=lhs[1],
               rhs1$0=rhs0$8[2],
               rhs0$9=rhs0$8[1],
               lhs1$0=lhs0$8[2],
               lhs0$9=lhs0$8[1],
               _ciG_=caml_call2(poly_literal,lhs0$9,rhs0$9);
              return _ciG_?caml_call2(poly_literal,lhs1$0,rhs1$0):_ciG_}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var rhs0$10=match[1],lhs0$10=lhs[1];
              return caml_call2(poly_instr,lhs0$10,rhs0$10)}
            break;
           default:
            if(typeof match !== "number" && 11 === match[0])
             {var rhs0$11=match[1],lhs0$11=lhs[1],x$1=lhs0$11,y$1=rhs0$11;
              for(;;)
               {if(x$1)
                 {if(y$1)
                   {var
                     y$2=y$1[2],
                     b$0=y$1[1],
                     x$2=x$1[2],
                     a$0=x$1[1],
                     rhs1$1=b$0[2],
                     rhs0$12=b$0[1],
                     lhs1$1=a$0[2],
                     lhs0$12=a$0[1],
                     _ciH_=caml_call2(poly_literal,lhs0$12,rhs0$12),
                     _ciI_=_ciH_?caml_call2(poly_literal,lhs1$1,rhs1$1):_ciH_;
                    if(_ciI_){var x$1=x$2,y$1=y$2;continue}
                    return _ciI_}}
                else
                 if(! y$1)return 1;
                return 0}}}
        return 0});
    var
     compare_literal_f=
      function _ciD_(_ciz_,_ciA_,_ciB_,_ciC_)
       {return _ciD_.fun(_ciz_,_ciA_,_ciB_,_ciC_)};
    caml_update_dummy
     (compare_literal_f,
      function(poly_instr,poly_literal,lhs,match)
       {if(typeof lhs === "number")
         {if(0 === lhs)
           {if(typeof match === "number" && ! match)return 0}
          else
           if(typeof match === "number" && match)return 0}
        else
         switch(lhs[0])
          {case 0:
            if(typeof match !== "number" && 0 === match[0])
             {var rhs0=match[1],lhs0=lhs[1];
              return caml_call1(caml_call1(compare_tezos_int,lhs0),rhs0)}
            break;
           case 1:
            if(typeof match !== "number" && 1 === match[0])
             {var rhs0$0=match[1],lhs0$0=lhs[1];
              return caml_int_compare(lhs0$0,rhs0$0)}
            break;
           case 2:
            if(typeof match !== "number" && 2 === match[0])
             {var rhs0$1=match[1],lhs0$1=lhs[1];
              return caml_string_compare(lhs0$1,rhs0$1)}
            break;
           case 3:
            if(typeof match !== "number" && 3 === match[0])
             {var rhs0$2=match[1],lhs0$2=lhs[1];
              return caml_string_compare(lhs0$2,rhs0$2)}
            break;
           case 4:
            if(typeof match !== "number" && 4 === match[0])
             {var
               rhs1=match[2],
               rhs0$3=match[1],
               lhs1=lhs[2],
               lhs0$3=lhs[1],
               x=caml_call2(poly_literal,lhs0$3,rhs0$3);
              return 0 === x?caml_call2(poly_literal,lhs1,rhs1):x}
            break;
           case 5:
            if(typeof match !== "number" && 5 === match[0])
             {var rhs0$4=match[1],lhs0$4=lhs[1];
              return caml_call2(poly_literal,lhs0$4,rhs0$4)}
            break;
           case 6:
            if(typeof match !== "number" && 6 === match[0])
             {var rhs0$5=match[1],lhs0$5=lhs[1];
              return caml_call2(poly_literal,lhs0$5,rhs0$5)}
            break;
           case 7:
            if(typeof match !== "number" && 7 === match[0])
             {var rhs0$6=match[1],lhs0$6=lhs[1];
              return caml_call2(poly_literal,lhs0$6,rhs0$6)}
            break;
           case 8:
            if(typeof match !== "number" && 8 === match[0])
             {var rhs0$7=match[1],lhs0$7=lhs[1],x$0=lhs0$7,y=rhs0$7;
              for(;;)
               {if(x$0)
                 {if(y)
                   {var
                     y$0=y[2],
                     b=y[1],
                     x$1=x$0[2],
                     a=x$0[1],
                     x$2=caml_call2(poly_literal,a,b);
                    if(0 === x$2){var x$0=x$1,y=y$0;continue}
                    return x$2}
                  return 1}
                return y?-1:0}}
            break;
           case 9:
            if(typeof match !== "number" && 9 === match[0])
             {var
               rhs0$8=match[1],
               lhs0$8=lhs[1],
               rhs1$0=rhs0$8[2],
               rhs0$9=rhs0$8[1],
               lhs1$0=lhs0$8[2],
               lhs0$9=lhs0$8[1],
               x$3=caml_call2(poly_literal,lhs0$9,rhs0$9);
              return 0 === x$3?caml_call2(poly_literal,lhs1$0,rhs1$0):x$3}
            break;
           case 10:
            if(typeof match !== "number" && 10 === match[0])
             {var rhs0$10=match[1],lhs0$10=lhs[1];
              return caml_call2(poly_instr,lhs0$10,rhs0$10)}
            break;
           default:
            if(typeof match !== "number" && 11 === match[0])
             {var rhs0$11=match[1],lhs0$11=lhs[1],x$4=lhs0$11,y$1=rhs0$11;
              for(;;)
               {if(x$4)
                 {if(y$1)
                   {var
                     y$2=y$1[2],
                     b$0=y$1[1],
                     x$5=x$4[2],
                     a$0=x$4[1],
                     rhs1$1=b$0[2],
                     rhs0$12=b$0[1],
                     lhs1$1=a$0[2],
                     lhs0$12=a$0[1],
                     x$6=caml_call2(poly_literal,lhs0$12,rhs0$12),
                     x$7=0 === x$6?caml_call2(poly_literal,lhs1$1,rhs1$1):x$6;
                    if(0 === x$7){var x$4=x$5,y$1=y$2;continue}
                    return x$7}
                  return 1}
                return y$1?-1:0}}}
        function to_int(param)
         {if(typeof param === "number")
           return 0 === param?4:6;
          else
           switch(param[0])
            {case 0:return 0;
             case 1:return 1;
             case 2:return 2;
             case 3:return 3;
             case 4:return 5;
             case 5:return 7;
             case 6:return 8;
             case 7:return 9;
             case 8:return 10;
             case 9:return 11;
             case 10:return 12;
             default:return 13}}
        var _ciy_=to_int(match);
        return caml_int_compare(to_int(lhs),_ciy_)});
    var
     pp_literal_f=
      function _cix_(_cit_,_ciu_,_civ_,_ciw_)
       {return _cix_.fun(_cit_,_ciu_,_civ_,_ciw_)},
     show_literal_f=
      function _cis_(_cip_,_ciq_,_cir_){return _cis_.fun(_cip_,_ciq_,_cir_)};
    caml_update_dummy
     (pp_literal_f,
      function(poly_instr,poly_literal,fmt,param)
       {if(typeof param === "number")
         return 0 === param
                 ?caml_call2(Stdlib_format[13],fmt,cst_Unit$1)
                 :caml_call2(Stdlib_format[13],fmt,cst_None$38);
        else
         switch(param[0])
          {case 0:
            var a0=param[1];
            caml_call2(Stdlib_format[123],fmt,_BT_);
            caml_call1(caml_call1(pp_tezos_int,fmt),a0);
            return caml_call2(Stdlib_format[123],fmt,_BU_);
           case 1:
            var a0$0=param[1];
            caml_call2(Stdlib_format[123],fmt,_BV_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_BW_),a0$0);
            return caml_call2(Stdlib_format[123],fmt,_BX_);
           case 2:
            var a0$1=param[1];
            caml_call2(Stdlib_format[123],fmt,_BY_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_BZ_),a0$1);
            return caml_call2(Stdlib_format[123],fmt,_B0_);
           case 3:
            var a0$2=param[1];
            caml_call2(Stdlib_format[123],fmt,_B1_);
            caml_call1(caml_call2(Stdlib_format[123],fmt,_B2_),a0$2);
            return caml_call2(Stdlib_format[123],fmt,_B3_);
           case 4:
            var a1=param[2],a0$3=param[1];
            caml_call2(Stdlib_format[123],fmt,_B4_);
            caml_call1(caml_call1(poly_literal,fmt),a0$3);
            caml_call2(Stdlib_format[123],fmt,_B5_);
            caml_call1(caml_call1(poly_literal,fmt),a1);
            return caml_call2(Stdlib_format[123],fmt,_B6_);
           case 5:
            var a0$4=param[1];
            caml_call2(Stdlib_format[123],fmt,_B7_);
            caml_call1(caml_call1(poly_literal,fmt),a0$4);
            return caml_call2(Stdlib_format[123],fmt,_B8_);
           case 6:
            var a0$5=param[1];
            caml_call2(Stdlib_format[123],fmt,_B9_);
            caml_call1(caml_call1(poly_literal,fmt),a0$5);
            return caml_call2(Stdlib_format[123],fmt,_B__);
           case 7:
            var a0$6=param[1];
            caml_call2(Stdlib_format[123],fmt,_B$_);
            caml_call1(caml_call1(poly_literal,fmt),a0$6);
            return caml_call2(Stdlib_format[123],fmt,_Ca_);
           case 8:
            var a0$7=param[1];
            caml_call2(Stdlib_format[123],fmt,_Cb_);
            caml_call2(Stdlib_format[123],fmt,_Cc_);
            var
             _cil_=0,
             _cim_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_Cd_);
                caml_call1(caml_call1(poly_literal,fmt),x);
                return 1};
            caml_call3(Stdlib_list[22],_cim_,_cil_,a0$7);
            caml_call2(Stdlib_format[123],fmt,_Ce_);
            return caml_call2(Stdlib_format[123],fmt,_Cf_);
           case 9:
            var a0$8=param[1];
            caml_call2(Stdlib_format[123],fmt,_Cg_);
            var a1$0=a0$8[2],a0$9=a0$8[1];
            caml_call2(Stdlib_format[123],fmt,_Ch_);
            caml_call1(caml_call1(poly_literal,fmt),a0$9);
            caml_call2(Stdlib_format[123],fmt,_Ci_);
            caml_call1(caml_call1(poly_literal,fmt),a1$0);
            caml_call2(Stdlib_format[123],fmt,_Cj_);
            return caml_call2(Stdlib_format[123],fmt,_Ck_);
           case 10:
            var a0$10=param[1];
            caml_call2(Stdlib_format[123],fmt,_Cl_);
            caml_call1(caml_call1(poly_instr,fmt),a0$10);
            return caml_call2(Stdlib_format[123],fmt,_Cm_);
           default:
            var a0$11=param[1];
            caml_call2(Stdlib_format[123],fmt,_Cn_);
            caml_call2(Stdlib_format[123],fmt,_Co_);
            var
             _cin_=0,
             _cio_=
              function(sep,x)
               {if(sep)caml_call2(Stdlib_format[123],fmt,_Cp_);
                var a1=x[2],a0=x[1];
                caml_call2(Stdlib_format[123],fmt,_Cq_);
                caml_call1(caml_call1(poly_literal,fmt),a0);
                caml_call2(Stdlib_format[123],fmt,_Cr_);
                caml_call1(caml_call1(poly_literal,fmt),a1);
                caml_call2(Stdlib_format[123],fmt,_Cs_);
                return 1};
            caml_call3(Stdlib_list[22],_cio_,_cin_,a0$11);
            caml_call2(Stdlib_format[123],fmt,_Ct_);
            return caml_call2(Stdlib_format[123],fmt,_Cu_)}});
    caml_update_dummy
     (show_literal_f,
      function(poly_instr,poly_literal,x)
       {var
         _cik_=
          caml_call1(caml_call1(pp_literal_f,poly_instr),poly_literal);
        return caml_call3(Stdlib_format[127],_Cv_,_cik_,x)});
    function map_literal_f(poly_instr,poly_literal,param)
     {if(typeof param === "number")
       return 0 === param?0:1;
      else
       switch(param[0])
        {case 0:var a0=param[1];return [0,a0];
         case 1:var a0$0=param[1];return [1,a0$0];
         case 2:var a0$1=param[1];return [2,a0$1];
         case 3:var a0$2=param[1];return [3,a0$2];
         case 4:
          var a1=param[2],a0$3=param[1],_cig_=caml_call1(poly_literal,a1);
          return [4,caml_call1(poly_literal,a0$3),_cig_];
         case 5:var a0$4=param[1];return [5,caml_call1(poly_literal,a0$4)];
         case 6:var a0$5=param[1];return [6,caml_call1(poly_literal,a0$5)];
         case 7:var a0$6=param[1];return [7,caml_call1(poly_literal,a0$6)];
         case 8:
          var a0$7=param[1];
          return [8,caml_call1(caml_call1(Stdlib_list[17],poly_literal),a0$7)];
         case 9:
          var
           a0$8=param[1],
           a1$0=a0$8[2],
           a0$9=a0$8[1],
           _cih_=caml_call1(poly_literal,a1$0);
          return [9,[0,caml_call1(poly_literal,a0$9),_cih_]];
         case 10:var a0$10=param[1];return [10,caml_call1(poly_instr,a0$10)];
         default:
          var
           a0$11=param[1],
           _cii_=
            function(param)
             {var a1=param[2],a0=param[1],_cij_=caml_call1(poly_literal,a1);
              return [0,caml_call1(poly_literal,a0),_cij_]};
          return [11,caml_call1(caml_call1(Stdlib_list[17],_cii_),a0$11)]}}
    function fold_literal_f(poly_instr,poly_literal,acc,param)
     {if(typeof param === "number")
       return 0 === param?acc:acc;
      else
       switch(param[0])
        {case 0:return acc;
         case 1:return acc;
         case 2:return acc;
         case 3:return acc;
         case 4:
          var a1=param[2],a0=param[1],acc$0=caml_call2(poly_literal,acc,a0);
          return caml_call2(poly_literal,acc$0,a1);
         case 5:var a0$0=param[1];return caml_call2(poly_literal,acc,a0$0);
         case 6:var a0$1=param[1];return caml_call2(poly_literal,acc,a0$1);
         case 7:var a0$2=param[1];return caml_call2(poly_literal,acc,a0$2);
         case 8:
          var a0$3=param[1];
          return caml_call2(caml_call1(Stdlib_list[22],poly_literal),acc,a0$3);
         case 9:
          var
           a0$4=param[1],
           a1$0=a0$4[2],
           a0$5=a0$4[1],
           acc$1=caml_call2(poly_literal,acc,a0$5);
          return caml_call2(poly_literal,acc$1,a1$0);
         case 10:var a0$6=param[1];return caml_call2(poly_instr,acc,a0$6);
         default:
          var
           a0$7=param[1],
           _cif_=
            function(acc,param)
             {var
               a1=param[2],
               a0=param[1],
               acc$0=caml_call2(poly_literal,acc,a0);
              return caml_call2(poly_literal,acc$0,a1)};
          return caml_call2(caml_call1(Stdlib_list[22],_cif_),acc,a0$7)}}
    function sequence_literal_f(l)
     {if(typeof l !== "number")
       switch(l[0])
        {case 4:
          var y=l[2],x=l[1],_ch5_=function(x,y){return [4,x,y]};
          return caml_call3(Utils_Control[15][20],_ch5_,x,y);
         case 5:
          var x$0=l[1],_ch6_=function(x){return [5,x]};
          return caml_call2(Utils_Control[15][11],_ch6_,x$0);
         case 6:
          var x$1=l[1],_ch7_=function(x){return [6,x]};
          return caml_call2(Utils_Control[15][11],_ch7_,x$1);
         case 7:
          var x$2=l[1],_ch8_=function(x){return [7,x]};
          return caml_call2(Utils_Control[15][11],_ch8_,x$2);
         case 8:
          var
           xs=l[1],
           _ch9_=caml_call1(Utils_Control[15][26],xs),
           _ch__=function(x){return [8,x]};
          return caml_call2(Utils_Control[15][11],_ch__,_ch9_);
         case 9:
          var
           match=l[1],
           y$0=match[2],
           x$3=match[1],
           _ch$_=function(x,y){return [9,[0,x,y]]};
          return caml_call3(Utils_Control[15][20],_ch$_,x$3,y$0);
         case 10:
          var x$4=l[1],_cia_=function(x){return [10,x]};
          return caml_call2(Utils_Control[15][11],_cia_,x$4);
         case 11:
          var
           xs$0=l[1],
           _cib_=caml_call1(Utils_Control[15][20],Utils_Control[2]),
           _cic_=caml_call1(Utils_Control[22],_cib_),
           _cid_=caml_call2(Utils_Control[15][22],_cic_,xs$0),
           _cie_=function(x){return [11,x]};
          return caml_call2(Utils_Control[15][11],_cie_,_cid_)
         }
      return [0,l]}
    function sequence_instr_f(instr)
     {if(typeof instr !== "number")
       switch(instr[0])
        {case 8:
          var x=instr[1],_chQ_=function(x){return [8,x]};
          return caml_call2(Utils_Control[15][11],_chQ_,x);
         case 9:
          var x$0=instr[2],n=instr[1],_chR_=function(x){return [9,n,x]};
          return caml_call2(Utils_Control[15][11],_chR_,x$0);
         case 10:
          var x$1=instr[1],_chS_=function(x){return [10,x]};
          return caml_call2(Utils_Control[15][11],_chS_,x$1);
         case 11:
          var x$2=instr[1],_chT_=function(x){return [11,x]};
          return caml_call2(Utils_Control[15][11],_chT_,x$2);
         case 12:
          var x$3=instr[1],_chU_=function(x){return [12,x]};
          return caml_call2(Utils_Control[15][11],_chU_,x$3);
         case 13:
          var x$4=instr[1],_chV_=function(x){return [13,x]};
          return caml_call2(Utils_Control[15][11],_chV_,x$4);
         case 18:
          var
           i2=instr[2],
           i1=instr[1],
           _chW_=function(i1,i2){return [18,i1,i2]};
          return caml_call3(Utils_Control[15][20],_chW_,i1,i2);
         case 19:
          var
           i2$0=instr[2],
           i1$0=instr[1],
           _chX_=function(i1,i2){return [19,i1,i2]};
          return caml_call3(Utils_Control[15][20],_chX_,i1$0,i2$0);
         case 20:
          var
           i2$1=instr[2],
           i1$1=instr[1],
           _chY_=function(i1,i2){return [20,i1,i2]};
          return caml_call3(Utils_Control[15][20],_chY_,i1$1,i2$1);
         case 21:
          var
           i2$2=instr[2],
           i1$2=instr[1],
           _chZ_=function(i1,i2){return [21,i1,i2]};
          return caml_call3(Utils_Control[15][20],_chZ_,i1$2,i2$2);
         case 22:
          var l=instr[2],t=instr[1],_ch0_=function(l){return [22,t,l]};
          return caml_call2(Utils_Control[15][11],_ch0_,l);
         case 23:
          var
           is=instr[1],
           _ch1_=caml_call1(Utils_Control[15][26],is),
           _ch2_=function(is){return [23,is]};
          return caml_call2(Utils_Control[15][11],_ch2_,_ch1_);
         case 28:
          var
           i=instr[3],
           t2=instr[2],
           t1=instr[1],
           _ch3_=function(x){return [28,t1,t2,x]};
          return caml_call2(Utils_Control[15][11],_ch3_,i);
         case 29:
          var
           code=instr[3],
           tstorage=instr[2],
           tparameter=instr[1],
           _ch4_=function(code){return [29,tparameter,tstorage,code]};
          return caml_call2(Utils_Control[15][11],_ch4_,code)
         }
      return caml_call1(Utils_Control[15][9],instr)}
    var
     equal_instr=function _chP_(_chN_,_chO_){return _chP_.fun(_chN_,_chO_)},
     equal_literal=function _chM_(_chK_,_chL_){return _chM_.fun(_chK_,_chL_)};
    caml_update_dummy
     (equal_instr,
      function(lhs,rhs)
       {var _chH_=rhs[1],_chI_=lhs[1];
        function _chJ_(x){return caml_call1(equal_literal,x)}
        return caml_call1
                (caml_call1
                  (caml_call2
                    (equal_instr_f,
                     function(x){return caml_call1(equal_instr,x)},
                     _chJ_),
                   _chI_),
                 _chH_)});
    caml_update_dummy
     (equal_literal,
      function(lhs,rhs)
       {var _chE_=rhs[1],_chF_=lhs[1];
        function _chG_(x){return caml_call1(equal_literal,x)}
        return caml_call1
                (caml_call1
                  (caml_call2
                    (equal_literal_f,
                     function(x){return caml_call1(equal_instr,x)},
                     _chG_),
                   _chF_),
                 _chE_)});
    var
     compare_instr=function _chD_(_chB_,_chC_){return _chD_.fun(_chB_,_chC_)},
     compare_literal=
      function _chA_(_chy_,_chz_){return _chA_.fun(_chy_,_chz_)};
    caml_update_dummy
     (compare_instr,
      function(lhs,rhs)
       {var _chv_=rhs[1],_chw_=lhs[1];
        function _chx_(x){return caml_call1(compare_literal,x)}
        return caml_call1
                (caml_call1
                  (caml_call2
                    (compare_instr_f,
                     function(x){return caml_call1(compare_instr,x)},
                     _chx_),
                   _chw_),
                 _chv_)});
    caml_update_dummy
     (compare_literal,
      function(lhs,rhs)
       {var _chs_=rhs[1],_cht_=lhs[1];
        function _chu_(x){return caml_call1(compare_literal,x)}
        return caml_call1
                (caml_call1
                  (caml_call2
                    (compare_literal_f,
                     function(x){return caml_call1(compare_instr,x)},
                     _chu_),
                   _cht_),
                 _chs_)});
    var
     pp_instr=function _chr_(_chp_,_chq_){return _chr_.fun(_chp_,_chq_)},
     show_instr=function _cho_(_chn_){return _cho_.fun(_chn_)},
     pp_literal=function _chm_(_chk_,_chl_){return _chm_.fun(_chk_,_chl_)},
     show_literal=function _chj_(_chi_){return _chj_.fun(_chi_)};
    caml_update_dummy
     (pp_instr,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_Cw_);
        caml_call3(Stdlib_format[123],fmt,_Cx_,cst_instr);
        var _chg_=x[1];
        function _chh_(fmt){return caml_call1(pp_literal,fmt)}
        caml_call1
         (caml_call3
           (pp_instr_f,
            function(fmt){return caml_call1(pp_instr,fmt)},
            _chh_,
            fmt),
          _chg_);
        caml_call2(Stdlib_format[123],fmt,_Cy_);
        return caml_call2(Stdlib_format[123],fmt,_Cz_)});
    caml_update_dummy
     (show_instr,
      function(x){return caml_call3(Stdlib_format[127],_CA_,pp_instr,x)});
    caml_update_dummy
     (pp_literal,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_CB_);
        caml_call3(Stdlib_format[123],fmt,_CC_,cst_literal);
        var _che_=x[1];
        function _chf_(fmt){return caml_call1(pp_literal,fmt)}
        caml_call1
         (caml_call3
           (pp_literal_f,
            function(fmt){return caml_call1(pp_instr,fmt)},
            _chf_,
            fmt),
          _che_);
        caml_call2(Stdlib_format[123],fmt,_CD_);
        return caml_call2(Stdlib_format[123],fmt,_CE_)});
    caml_update_dummy
     (show_literal,
      function(x){return caml_call3(Stdlib_format[127],_CF_,pp_literal,x)});
    function map_instr(x){return [0,x[1]]}
    function map_literal(x){return [0,x[1]]}
    function fold_instr(acc,x){return acc}
    function fold_literal(acc,x){return acc}
    function cata$1(param)
     {var f_literal=param[2],f_instr=param[1];
      function cata_instr(param)
       {var instr=param[1];
        return caml_call1(f_instr,map_instr_f(cata_instr,cata_literal,instr))}
      function cata_literal(param)
       {var literal=param[1];
        return caml_call1
                (f_literal,map_literal_f(cata_instr,cata_literal,literal))}
      return [0,cata_instr,cata_literal]}
    function cata_instr(alg){return cata$1(alg)[1]}
    function cata_literal(alg){return cata$1(alg)[2]}
    function compare$5(x,y){return caml_call2(compare_literal,x,y)}
    function int$3(i){return [0,[0,i]]}
    function small_int$0(i){return [0,[0,caml_call1(Utils_Bigint[5],i)]]}
    function bool$1(x){return [0,[1,x]]}
    function string$2(x){return [0,[2,x]]}
    function bytes$2(x){return [0,[3,x]]}
    function left$0(x){return [0,[5,x]]}
    function right$0(x){return [0,[6,x]]}
    function some(x){return [0,[7,x]]}
    function pair$0(x1,x2){return [0,[4,x1,x2]]}
    function list$0(xs){return [0,[8,xs]]}
    function set$1(xs){return [0,[8,caml_call2(Base_List[108],compare$5,xs)]]}
    function seq(xs){return [0,[8,xs]]}
    function f$1(k,v){return [0,[9,[0,k,v]]]}
    function mk_map(xs)
     {function _chc_(param,_chd_)
       {var k2=_chd_[1],k1=param[1];return compare$5(k1,k2)}
      return [0,[11,caml_call2(Base_List[108],_chc_,xs)]]}
    var sapling_empty_state=seq(0);
    function instr(body){return [0,[10,body]]}
    function _CG_(instr_to_string,protect)
     {function continue$0(protect){return _CG_(instr_to_string,protect)}
      function prot(protect,s)
       {return protect?caml_call2(Stdlib_printf[4],_CH_,s):s}
      return function(param)
       {var literal=param[1];
        if(typeof literal === "number")
         return 0 === literal?cst_Unit$2:cst_None$39;
        else
         switch(literal[0])
          {case 0:var i=literal[1];return caml_call1(Big_int[33],i);
           case 1:return literal[1]?cst_True:cst_False;
           case 2:var s=literal[1];return caml_call2(Stdlib_printf[4],_CI_,s);
           case 3:
            var
             string_bytes=literal[1],
             _cg3_=caml_call1(Utils_Misc[4][1],string_bytes);
            return caml_call2(Stdlib[28],cst_0x,_cg3_);
           case 4:
            var
             r=literal[2],
             l=literal[1],
             _cg4_=caml_call1(continue$0(1),r),
             _cg5_=caml_call1(continue$0(1),l);
            return prot(protect,caml_call3(Stdlib_printf[4],_CJ_,_cg5_,_cg4_));
           case 5:
            var l$0=literal[1],_cg6_=caml_call1(continue$0(1),l$0);
            return prot(protect,caml_call2(Stdlib_printf[4],_CK_,_cg6_));
           case 6:
            var l$1=literal[1],_cg7_=caml_call1(continue$0(1),l$1);
            return prot(protect,caml_call2(Stdlib_printf[4],_CL_,_cg7_));
           case 7:
            var l$2=literal[1],_cg8_=caml_call1(continue$0(1),l$2);
            return prot(protect,caml_call2(Stdlib_printf[4],_CM_,_cg8_));
           case 8:
            var
             xs=literal[1],
             _cg9_=
              function(x)
               {var x$0=caml_call1(continue$0(0),x);
                return caml_string_equal(x$0,cst$50)?0:[0,x$0]},
             _cg__=caml_call2(Utils_List[23],_cg9_,xs),
             _cg$_=caml_call2(Utils_String[7],cst$51,_cg__);
            return caml_call2(Stdlib_printf[4],_CN_,_cg$_);
           case 9:
            var
             match=literal[1],
             v=match[2],
             k=match[1],
             _cha_=caml_call1(continue$0(1),v),
             _chb_=caml_call1(continue$0(1),k);
            return caml_call3(Stdlib_printf[4],_CO_,_chb_,_cha_);
           case 10:var i$0=literal[1];return caml_call1(instr_to_string,i$0);
           default:
            var
             xs$0=literal[1],
             f=
              function(param)
               {var v=param[2],k=param[1];return [0,[9,[0,k,v]]]},
             xs$1=[0,[8,caml_call2(Utils_List[20],f,xs$0)]];
            return caml_call1(continue$0(protect),xs$1)}}}
    function to_michelson_string(_cg2_){return _CG_(_cg2_,1)}
    function string_of_ad_path(p)
     {function f(param){return param?cst_D$0:cst_A$0}
      var _cg1_=caml_call2(Utils_List[20],f,p);
      return caml_call2(Utils_String[7],cst$52,_cg1_)}
    function insert_field_annot(a,e)
     {if(a)
       {var _cgY_=a[1];
        if(caml_string_notequal(_cgY_,cst$53))
         {var a$0=[0,caml_call2(Stdlib[28],cst$54,_cgY_)];
          if(0 === e[0]){var s=e[1];return [1,[0,[0,s],[0,a$0,0]]]}
          var _cgZ_=e[1];
          if(_cgZ_)
           {var _cg0_=_cgZ_[1];
            if(0 === _cg0_[0])
             {var xs=_cgZ_[2],s$0=_cg0_[1];return [1,[0,[0,s$0],[0,a$0,xs]]]}}
          throw [0,Assert_failure,_CP_]}}
      return e}
    function buffer_mtype(full,human,protect,annot,html,b,t)
     {var
       is_full=caml_equal(full,_CQ_),
       _cgL_=caml_equal(human,_CR_),
       is_human=_cgL_?1 - is_full:_cgL_;
      function f(annot_type,annot_variable,mt)
       {function get(pref,param)
         {if(param)
           {var s=param[1];return [0,[0,caml_call2(Stdlib[28],pref,s)]]}
          return 0}
        var
         _cgQ_=[0,get(cst$55,annot_variable),0],
         _cgR_=[0,get(cst$56,annot_type),_cgQ_],
         annots=caml_call1(Base_List[121],_cgR_);
        function call(s,l)
         {return [1,caml_call2(Stdlib[37],[0,[0,s],annots],l)]}
        if(annot_variable)
         {var a=annot_variable[1];
          if(is_human)
           {var match=caml_call2(Base_String[80],a,46);
            if(match)
             {var xs$0=match[2],hd=match[1],param=xs$0;
              for(;;)
               {if(param)
                 {var _cgS_=param[1],switch$0=0;
                  if
                   (caml_string_notequal(_cgS_,cst_left)
                    &&
                    caml_string_notequal(_cgS_,cst_right))
                   {if(! param[2])
                     {var
                       _cgT_=caml_call2(Stdlib[28],cst$58,_cgS_),
                       _cgU_=caml_call2(Stdlib[28],hd,_cgT_);
                      return [0,caml_call2(Stdlib[28],cst$59,_cgU_)]}
                    switch$0 = 1}
                  if(! switch$0){var param$0=param[2],param=param$0;continue}}
                return [0,caml_call2(Stdlib[28],cst$57,a)]}}
            throw [0,Assert_failure,_CT_]}}
        switch(mt[0])
         {case 0:
           var
            t=mt[1],
            match$0=caml_call1(_yY_,t),
            memo=match$0[2],
            s=match$0[1],
            xs=[0,[0,s],annots],
            _cgV_=function(memo){return call(s,[0,[0,memo],0])};
           if(xs)
            {if(xs[2])var _cgW_=[1,xs];else var x=xs[1],_cgW_=x;
             return caml_call3(Utils_Option[12],_cgW_,_cgV_,memo)}
           throw [0,Assert_failure,_CS_];
          case 1:
           var t1=mt[2],t$0=mt[1];return call(caml_call1(_yZ_,t$0),[0,t1,0]);
          case 2:
           var
            t2=mt[3],
            t1$0=mt[2],
            t$1=mt[1],
            match$1=caml_call1(_y0_,t$1),
            a2=match$1[3],
            a1=match$1[2],
            t$2=match$1[1],
            _cgX_=[0,insert_field_annot(a2,t2),0];
           return call(t$2,[0,insert_field_annot(a1,t1$0),_cgX_]);
          default:
           var s$0=mt[1];
           return call(cst_missing_type_conversion,[0,[0,s$0],0])}}
      var
       s_expr=caml_call1(caml_call1(_y$_,f),t),
       s_expr$0=insert_field_annot(annot,s_expr);
      function sexp_to_string_flat(param)
       {if(0 === param[0])
         {var s=param[1],_cgN_=caml_call1(Base_Sexp[20][7],s);
          return caml_call2(Stdlib_buffer[14],b,_cgN_)}
        var _cgO_=param[1];
        if(_cgO_)
         {var t=_cgO_[2],h=_cgO_[1],switch$0=0;
          if
           (0
            ===
            h[0]
            &&
            !
            caml_string_notequal(h[1],cst_missing_type_conversion$0)
            &&
            html)
           {var is_partial=1;switch$0 = 1}
          if(! switch$0)var is_partial=0;
          caml_call2(Stdlib_buffer[10],b,40);
          if(is_partial)
           caml_call2(Stdlib_buffer[14],b,cst_span_class_partialType);
          sexp_to_string_flat(h);
          var
           _cgP_=
            function(elt)
             {caml_call2(Stdlib_buffer[10],b,32);
              return sexp_to_string_flat(elt)};
          caml_call2(Base_List[8],t,_cgP_);
          if(is_partial)caml_call2(Stdlib_buffer[14],b,cst_span);
          return caml_call2(Stdlib_buffer[10],b,41)}
        return caml_call2(Stdlib_buffer[14],b,cst$60)}
      if(protect)return sexp_to_string_flat(s_expr$0);
      if(0 === s_expr$0[0])
       {var a=s_expr$0[1],_cgM_=caml_call1(Base_Sexp[20][7],a);
        return caml_call2(Stdlib_buffer[14],b,_cgM_)}
      var l=s_expr$0[1];
      return caml_call4(Utils_Misc[24],b,cst$61,sexp_to_string_flat,l)}
    function string_of_mtype(full,human,protect,annot,html,t)
     {function _cgK_(b)
       {return buffer_mtype(full,human,protect,annot,html,b,t)}
      return caml_call1(Utils_Misc[22],_cgK_)}
    function string_of_tparameter(html,param)
     {var annot=param[2],tparameter=param[1];
      return string_of_mtype(0,0,_CU_,annot,html,tparameter)}
    function _CV_(f,param)
     {var se=param[2],full=param[1],_cgG_=0,_cgH_=0,_cgI_=0,_cgJ_=full?_CX_:0;
      return string_of_mtype(_cgJ_,_CW_,_cgI_,_cgH_,_cgG_,se)}
    var _CZ_=caml_call2(Utils_Misc[6],_CY_,_CV_);
    function string_of_ok_stack(full,stack)
     {function _cgE_(t){return caml_call1(_CZ_,[0,caml_equal(full,_C0_),t])}
      var _cgF_=caml_call2(Utils_List[20],_cgE_,stack);
      return caml_call2(Utils_String[7],cst$62,_cgF_)}
    function string_of_stack(full,param)
     {if(param){var stack=param[1];return string_of_ok_stack(full,stack)}
      return cst_FAILED}
    function strip_annots(param)
     {var mt=param[1];return caml_call3(_za_,0,0,mt)}
    function strip_annot_variable(param)
     {var annot_type=param[2],mt=param[1];
      return caml_call3(_za_,annot_type,0,mt)}
    var
     equal_tliteral=function _cgD_(_cgB_,_cgC_){return _cgD_.fun(_cgB_,_cgC_)},
     equal_tinstr=function _cgA_(_cgy_,_cgz_){return _cgA_.fun(_cgy_,_cgz_)};
    caml_update_dummy
     (equal_tliteral,
      function(lhs,rhs)
       {var _cgr_=rhs[1],_cgs_=lhs[1];
        function _cgt_(x){return caml_call1(equal_tliteral,x)}
        var
         _cgu_=
          caml_call1
           (caml_call1
             (caml_call2
               (equal_literal_f,
                function(x){return caml_call1(equal_tinstr,x)},
                _cgt_),
              _cgs_),
            _cgr_);
        if(_cgu_)
         {var
           _cgv_=rhs[2],
           _cgw_=lhs[2],
           _cgx_=function(x){return caml_call1(_y7_,x)};
          return caml_call1
                  (caml_call1(caml_call1(Utils_Control[15][1],_cgx_),_cgw_),
                   _cgv_)}
        return _cgu_});
    caml_update_dummy
     (equal_tinstr,
      function(lhs,rhs)
       {var _cgk_=rhs[1],_cgl_=lhs[1];
        function _cgm_(x){return caml_call1(equal_tliteral,x)}
        var
         _cgn_=
          caml_call1
           (caml_call1
             (caml_call2
               (equal_instr_f,
                function(x){return caml_call1(equal_tinstr,x)},
                _cgm_),
              _cgl_),
            _cgk_);
        if(_cgn_)
         {var
           _cgo_=rhs[2],
           _cgp_=lhs[2],
           _cgq_=function(x){return caml_call1(equal_stack,x)};
          return caml_call1
                  (caml_call1(caml_call1(Utils_Control[15][1],_cgq_),_cgp_),
                   _cgo_)}
        return _cgn_});
    var
     compare_tliteral=
      function _cgj_(_cgh_,_cgi_){return _cgj_.fun(_cgh_,_cgi_)},
     compare_tinstr=function _cgg_(_cge_,_cgf_){return _cgg_.fun(_cge_,_cgf_)};
    caml_update_dummy
     (compare_tliteral,
      function(lhs,rhs)
       {var _cf__=rhs[1],_cf$_=lhs[1];
        function _cga_(x){return caml_call1(compare_tliteral,x)}
        var
         x=
          caml_call1
           (caml_call1
             (caml_call2
               (compare_literal_f,
                function(x){return caml_call1(compare_tinstr,x)},
                _cga_),
              _cf$_),
            _cf__);
        if(0 === x)
         {var
           _cgb_=rhs[2],
           _cgc_=lhs[2],
           _cgd_=function(x){return caml_call1(_y8_,x)};
          return caml_call1
                  (caml_call1(caml_call1(Utils_Control[15][2],_cgd_),_cgc_),
                   _cgb_)}
        return x});
    caml_update_dummy
     (compare_tinstr,
      function(lhs,rhs)
       {var _cf4_=rhs[1],_cf5_=lhs[1];
        function _cf6_(x){return caml_call1(compare_tliteral,x)}
        var
         x=
          caml_call1
           (caml_call1
             (caml_call2
               (compare_instr_f,
                function(x){return caml_call1(compare_tinstr,x)},
                _cf6_),
              _cf5_),
            _cf4_);
        if(0 === x)
         {var
           _cf7_=rhs[2],
           _cf8_=lhs[2],
           _cf9_=function(x){return caml_call1(compare_stack,x)};
          return caml_call1
                  (caml_call1(caml_call1(Utils_Control[15][2],_cf9_),_cf8_),
                   _cf7_)}
        return x});
    var
     pp_tliteral=function _cf3_(_cf1_,_cf2_){return _cf3_.fun(_cf1_,_cf2_)},
     show_tliteral=function _cf0_(_cfZ_){return _cf0_.fun(_cfZ_)},
     pp_tinstr=function _cfY_(_cfW_,_cfX_){return _cfY_.fun(_cfW_,_cfX_)},
     show_tinstr=function _cfV_(_cfU_){return _cfV_.fun(_cfU_)};
    caml_update_dummy
     (pp_tliteral,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_C1_);
        caml_call3(Stdlib_format[123],fmt,_C2_,cst_tliteral);
        var _cfQ_=x[1];
        function _cfR_(fmt){return caml_call1(pp_tliteral,fmt)}
        caml_call1
         (caml_call3
           (pp_literal_f,
            function(fmt){return caml_call1(pp_tinstr,fmt)},
            _cfR_,
            fmt),
          _cfQ_);
        caml_call2(Stdlib_format[123],fmt,_C3_);
        caml_call2(Stdlib_format[123],fmt,_C4_);
        caml_call3(Stdlib_format[123],fmt,_C5_,cst_t$0);
        var _cfS_=x[2];
        function _cfT_(fmt){return caml_call1(_y9_,fmt)}
        caml_call1(caml_call2(Utils_Control[15][3],_cfT_,fmt),_cfS_);
        caml_call2(Stdlib_format[123],fmt,_C6_);
        return caml_call2(Stdlib_format[123],fmt,_C7_)});
    caml_update_dummy
     (show_tliteral,
      function(x){return caml_call3(Stdlib_format[127],_C8_,pp_tliteral,x)});
    caml_update_dummy
     (pp_tinstr,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_C9_);
        caml_call3(Stdlib_format[123],fmt,_C__,cst_tinstr);
        var _cfM_=x[1];
        function _cfN_(fmt){return caml_call1(pp_tliteral,fmt)}
        caml_call1
         (caml_call3
           (pp_instr_f,
            function(fmt){return caml_call1(pp_tinstr,fmt)},
            _cfN_,
            fmt),
          _cfM_);
        caml_call2(Stdlib_format[123],fmt,_C$_);
        caml_call2(Stdlib_format[123],fmt,_Da_);
        caml_call3(Stdlib_format[123],fmt,_Db_,cst_stack);
        var _cfO_=x[2];
        function _cfP_(fmt){return caml_call1(pp_stack,fmt)}
        caml_call1(caml_call2(Utils_Control[15][3],_cfP_,fmt),_cfO_);
        caml_call2(Stdlib_format[123],fmt,_Dc_);
        return caml_call2(Stdlib_format[123],fmt,_Dd_)});
    caml_update_dummy
     (show_tinstr,
      function(x){return caml_call3(Stdlib_format[127],_De_,pp_tinstr,x)});
    function tcata(param)
     {var f_tliteral=param[2],f_tinstr=param[1];
      function cata_tinstr(param)
       {var stack=param[2],tinstr=param[1];
        return caml_call2
                (f_tinstr,stack,map_instr_f(cata_tinstr,cata_tliteral,tinstr))}
      function cata_tliteral(param)
       {var t=param[2],tliteral=param[1];
        return caml_call2
                (f_tliteral,
                 t,
                 map_literal_f(cata_tinstr,cata_tliteral,tliteral))}
      return [0,cata_tinstr,cata_tliteral]}
    function cata_tinstr(alg){return tcata(alg)[1]}
    function cata_tliteral(alg){return tcata(alg)[2]}
    function para_alg$0(p_instr,p_literal)
     {function f_instr(i)
       {var _cfI_=caml_call1(p_instr,i);
        function _cfJ_(_cfL_){return _cfL_[1]}
        return [0,
                [0,map_instr_f(function(_cfK_){return _cfK_[1]},_cfJ_,i)],
                _cfI_]}
      function f_literal(l)
       {var _cfE_=caml_call1(p_literal,l);
        function _cfF_(_cfH_){return _cfH_[1]}
        return [0,
                [0,map_literal_f(function(_cfG_){return _cfG_[1]},_cfF_,l)],
                _cfE_]}
      return [0,f_instr,f_literal]}
    function f_tinstr(param,instr){return [0,instr]}
    function f_tliteral(param,literal){return [0,literal]}
    var
     match=tcata([0,f_tinstr,f_tliteral]),
     erase_types_literal=match[2],
     erase_types_instr=match[1];
    function mk_spec_raw(name,commutative,arities,rule)
     {return [0,name,rule,caml_equal(commutative,_Df_),arities]}
    function mk_spec(name,commutative,arities,rule)
     {function rule$0(tparameter,stack,instr)
       {var match=caml_call3(rule,tparameter,stack,instr);
        if(match){var x=match[1];return x}
        var msg=caml_call2(Stdlib[28],name,cst_unexpected_stack);
        function _cfD_(param){throw [0,Assert_failure,_Dg_]}
        var
         tinstr=
          map_instr_f(function(x){return caml_call1(x,_Dh_)},_cfD_,instr);
        return [0,tinstr,[1,msg]]}
      return [0,name,rule$0,caml_equal(commutative,_Di_),arities]}
    function mk_spec_no_sub(name,commutative,arities,rule)
     {function rule$0(tparameter,stack,instr)
       {function _cfC_(param){throw [0,Assert_failure,_Dj_]}
        var
         tinstr=
          map_instr_f
           (function(param){throw [0,Assert_failure,_Dk_]},_cfC_,instr),
         stack$0=caml_call2(rule,tparameter,stack);
        return [0,[0,tinstr,stack$0]]}
      return mk_spec(name,commutative,arities,rule$0)}
    function mk_spec_basic(name,commutative,param,rule)
     {var a_out=param[2],a_in=param[1];
      function rule$0(param,stack,instr)
       {var match=caml_call1(rule,stack);
        if(match)
         {var xs=match[1];
          if(caml_call1(Utils_List[4],xs) === a_out)
           {var
             _cfA_=function(param){throw [0,Assert_failure,_Dl_]},
             tinstr=
              map_instr_f
               (function(param){throw [0,Assert_failure,_Dm_]},_cfA_,instr),
             _cfB_=caml_call2(Utils_List[67],a_in,stack),
             stack$0=[0,[0,caml_call2(Stdlib[37],xs,_cfB_)]];
            return [0,[0,tinstr,stack$0]]}
          throw [0,Assert_failure,_Dn_]}
        return 0}
      return mk_spec(name,commutative,[0,[0,a_in,a_out]],rule$0)}
    function mk_spec_const(name,t)
     {return mk_spec_basic(name,0,_Do_,function(param){return [0,[0,t,0]]})}
    function unifiable_types(t,u)
     {var _cfz_=caml_call2(_z7_,t,u);return caml_call1(Base_Result[19],_cfz_)}
    function unify_ok_stacks(s1,s2)
     {if(s1)
       {if(s2)
         {var
           s2$0=s2[2],
           se2=s2[1],
           s1$0=s1[2],
           se1=s1[1],
           _cfw_=unify_ok_stacks(s1$0,s2$0),
           match=caml_call2(_z7_,se1,se2);
          if(0 === match[0])var t=match[1],_cfx_=[0,t];else var _cfx_=0;
          var _cfy_=function(x,xs){return [0,x,xs]};
          return caml_call3(Utils_Option[26],_cfy_,_cfx_,_cfw_)}}
      else
       if(! s2)return _Dp_;
      return 0}
    function unifiable_ok_stacks(t,u)
     {var _cfv_=unify_ok_stacks(t,u);
      return caml_call1(Utils_Option[47],_cfv_)}
    function unify_stacks(s1,match)
     {if(s1)
       {if(match)
         {var
           s2=match[1],
           s1$0=s1[1],
           _cft_=unify_ok_stacks(s1$0,s2),
           _cfu_=function(x){return [0,x]};
          return caml_call2(Utils_Option[17],_cfu_,_cft_)}
        return [0,s1]}
      return [0,match]}
    function initial_stack(tparameter,tstorage)
     {return [0,
              [0,
               caml_call4
                (_zH_,
                 0,
                 0,
                 [0,tparameter[1],tparameter[2],_Dr_],
                 [0,tstorage[1],tstorage[2],_Dq_]),
               0]]}
    function rule(param,stack,_cfs_)
     {if(typeof _cfs_ !== "number" && 23 === _cfs_[0])
       {var xs=_cfs_[1],stack$2=[0,[0,stack]],r=0,stack$0=stack$2,param$0=xs;
        for(;;)
         {if(param$0)
           {var
             xs$0=param$0[2],
             x=param$0[1],
             x$0=caml_call1(x,stack$0),
             stack$1=x$0[2],
             r$0=[0,x$0,r],
             r=r$0,
             stack$0=stack$1,
             param$0=xs$0;
            continue}
          return [0,[0,[23,caml_call1(Utils_List[12],r)],stack$0]]}}
      throw [0,Assert_failure,_Ds_]}
    var mi_seq=mk_spec(cst_instruction_sequence,0,0,rule);
    function rule$0(param,stack){return [0,[0,stack]]}
    var mi_comment=mk_spec_no_sub(cst_comment_instruction,0,0,rule$0);
    function rule$1(param,stack){return _Dt_}
    var mi_error=mk_spec_no_sub(cst_error_instruction,0,0,rule$1);
    function rule$2(param,_cfr_){return _cfr_?_Du_:_Dv_}
    var mi_failwith=mk_spec_no_sub(cst_FAILWITH,0,_Dw_,rule$2);
    function rule$3(param,_cfo_)
     {if(_cfo_)
       {var _cfp_=_cfo_[1][1];
        if(0 === _cfp_[0])
         {var _cfq_=_cfp_[1];
          if(typeof _cfq_ === "number" && 15 === _cfq_)return _Dx_}}
      return _Dy_}
    var
     mi_never=mk_spec_no_sub(cst_NEVER,0,_Dz_,rule$3),
     mi_ticket=
      mk_spec_basic
       (cst_TICKET,
        0,
        _DA_,
        function(param)
         {if(param)
           {var _cfl_=param[2];
            if(_cfl_)
             {var _cfm_=_cfl_[1][1];
              if(0 === _cfm_[0])
               {var _cfn_=_cfm_[1];
                if(typeof _cfn_ === "number" && 2 === _cfn_)
                 {var t=param[1];return [0,[0,caml_call1(_zD_,t),0]]}}}}
          return 0}),
     mi_read_ticket=
      mk_spec_basic
       (cst_READ_TICKET,
        0,
        _DB_,
        function(param)
         {if(param)
           {var _cfj_=param[1][1];
            if(1 === _cfj_[0] && 4 <= _cfj_[1])
             {var t=_cfj_[2],_cfk_=[0,caml_call1(_zD_,t),0];
              return [0,
                      [0,
                       caml_call4(_zH_,0,0,_zn_,caml_call4(_zH_,0,0,t,_zg_)),
                       _cfk_]]}}
          return 0}),
     mi_join_tickets=
      mk_spec_basic
       (cst_JOIN_TICKETS,
        0,
        _DC_,
        function(param)
         {if(param)
           {var _cfd_=param[1][1];
            if(2 === _cfd_[0])
             {var switch$0=0,_cfe_=_cfd_[1];
              if(typeof _cfe_ === "number" || 1 === _cfe_[0])
               switch$0 = 1;
              else
               {var _cff_=_cfd_[2],_cfg_=_cff_[1];
                if(1 === _cfg_[0] && 4 <= _cfg_[1])
                 {var _cfh_=_cfd_[3],_cfi_=_cfh_[1];
                  if
                   (1
                    ===
                    _cfi_[0]
                    &&
                    4
                    <=
                    _cfi_[1]
                    &&
                    unifiable_types(_cff_,_cfh_))
                   return [0,[0,caml_call1(_zz_,_cff_),0]]}}}}
          return 0}),
     mi_split_ticket=
      mk_spec_basic
       (cst_SPLIT_TICKET,
        0,
        _DD_,
        function(param)
         {if(param)
           {var _ce6_=param[1],_ce7_=_ce6_[1];
            if(1 === _ce7_[0] && 4 <= _ce7_[1])
             {var _ce8_=param[2];
              if(_ce8_)
               {var _ce9_=_ce8_[1][1];
                if(2 === _ce9_[0])
                 {var switch$0=0,_ce__=_ce9_[1];
                  if(typeof _ce__ === "number" || 1 === _ce__[0])
                   switch$0 = 1;
                  else
                   {var _ce$_=_ce9_[2][1];
                    if(0 === _ce$_[0])
                     {var _cfa_=_ce$_[1];
                      if(typeof _cfa_ === "number" && 2 === _cfa_)
                       {var _cfb_=_ce9_[3][1];
                        if(0 === _cfb_[0])
                         {var _cfc_=_cfb_[1];
                          if(typeof _cfc_ === "number" && 2 === _cfc_)
                           return [0,
                                   [0,caml_call1(_zz_,caml_call4(_zH_,0,0,_ce6_,_ce6_)),0]]}}}}}}}}
          return 0}),
     mi_pairing_check=
      mk_spec_basic
       (cst_PAIRING_CHECK,
        0,
        _DE_,
        function(param)
         {if(param)
           {var _ceZ_=param[1][1];
            if(1 === _ceZ_[0] && 1 === _ceZ_[1])
             {var _ce0_=_ceZ_[2][1];
              if(2 === _ce0_[0])
               {var switch$0=0,_ce1_=_ce0_[1];
                if(typeof _ce1_ === "number" || 1 === _ce1_[0])
                 switch$0 = 1;
                else
                 {var _ce2_=_ce0_[2][1];
                  if(0 === _ce2_[0])
                   {var _ce3_=_ce2_[1];
                    if(typeof _ce3_ === "number" && 16 === _ce3_)
                     {var _ce4_=_ce0_[3][1];
                      if(0 === _ce4_[0])
                       {var _ce5_=_ce4_[1];
                        if(typeof _ce5_ === "number" && 17 === _ce5_)
                         return [0,[0,_zf_,0]]}}}}}}}
          return 0});
    function cond_aux(x,y)
     {function _ceU_(sx)
       {function _ceV_(sy)
         {var
           _ceW_=unify_stacks(sx,sy),
           _ceX_=Utils_Control[15][5],
           _ceY_=caml_call1(Utils_Control[15][6],cst_cannot_unify_branches);
          return caml_call3(Utils_Option[12],_ceY_,_ceX_,_ceW_)}
        return caml_call2(Utils_Control[15][31],y[2],_ceV_)}
      return caml_call2(Utils_Control[15][31],x[2],_ceU_)}
    function rule$4(param,stack,instr)
     {if(stack)
       {var _ceS_=stack[1][1];
        if(0 === _ceS_[0])
         {var _ceT_=_ceS_[1];
          if
           (typeof _ceT_
            ===
            "number"
            &&
            1
            ===
            _ceT_
            &&
            typeof instr
            !==
            "number"
            &&
            18
            ===
            instr[0])
           {var
             y=instr[2],
             x=instr[1],
             tail=stack[2],
             x$0=caml_call1(x,[0,[0,tail]]),
             y$0=caml_call1(y,[0,[0,tail]]);
            return [0,[0,[18,x$0,y$0],cond_aux(x$0,y$0)]]}}}
      if(typeof instr !== "number" && 18 === instr[0])return 0;
      throw [0,Assert_failure,_DF_]}
    var mi_if=mk_spec(cst_IF,0,0,rule$4);
    function rule$5(param,stack,instr)
     {if(stack)
       {var _ceQ_=stack[1][1];
        if
         (1
          ===
          _ceQ_[0]
          &&
          !
          _ceQ_[1]
          &&
          typeof instr
          !==
          "number"
          &&
          20
          ===
          instr[0])
         {var y=instr[2],x=instr[1],tail=stack[2],t=_ceQ_[2],_ceR_=t[3];
          if(_ceR_)
           var v=_ceR_[1],a=caml_call2(Stdlib[28],v,cst_some);
          else
           var a=cst_some$0;
          var
           t$0=[0,t[1],t[2],[0,a]],
           x$0=caml_call1(x,[0,[0,tail]]),
           y$0=caml_call1(y,[0,[0,[0,t$0,tail]]]);
          return [0,[0,[20,x$0,y$0],cond_aux(x$0,y$0)]]}}
      if(typeof instr !== "number" && 20 === instr[0])return 0;
      throw [0,Assert_failure,_DG_]}
    var mi_if_none=mk_spec(cst_IF_NONE,0,0,rule$5);
    function rule$6(param,stack,instr)
     {if(stack)
       {var _ceG_=stack[1],_ceH_=_ceG_[1];
        if(2 === _ceH_[0])
         {var _ceI_=_ceH_[1],switch$0=0;
          if(typeof _ceI_ === "number" || 0 === _ceI_[0])
           switch$0 = 1;
          else
           if(typeof instr !== "number" && 19 === instr[0])
            {var
              y=instr[2],
              x=instr[1],
              tail=stack[2],
              annot_variable=_ceG_[3],
              u=_ceH_[3],
              t=_ceH_[2],
              annot_right=_ceI_[2],
              annot_left=_ceI_[1],
              fa=
               function(v)
                {var
                  _ceO_=caml_call2(Utils_Option[45],cst_left$0,annot_left),
                  _ceP_=caml_call2(Stdlib[28],cst$63,_ceO_);
                 return caml_call2(Stdlib[28],v,_ceP_)},
              _ceJ_=caml_call2(Utils_Option[17],fa,annot_variable),
              t$0=[0,t[1],t[2],_ceJ_],
              fa$0=
               function(v)
                {var
                  _ceM_=caml_call2(Utils_Option[45],cst_right$0,annot_right),
                  _ceN_=caml_call2(Stdlib[28],cst$64,_ceM_);
                 return caml_call2(Stdlib[28],v,_ceN_)},
              _ceK_=caml_call2(Utils_Option[17],fa$0,annot_variable),
              u$0=[0,u[1],u[2],_ceK_],
              x$0=caml_call1(x,[0,[0,[0,t$0,tail]]]),
              y$0=caml_call1(y,[0,[0,[0,u$0,tail]]]),
              _ceL_=[0,[19,x$0,y$0],cond_aux(x$0,y$0)];
             return caml_call1(Utils_Option[15],_ceL_)}}}
      if(typeof instr !== "number" && 19 === instr[0])return 0;
      throw [0,Assert_failure,_DH_]}
    var mi_if_left=mk_spec(cst_IF_LEFT,0,0,rule$6);
    function rule$7(param,stack,instr)
     {if(stack)
       {var _ceE_=stack[1][1];
        if
         (1
          ===
          _ceE_[0]
          &&
          1
          ===
          _ceE_[1]
          &&
          typeof instr
          !==
          "number"
          &&
          21
          ===
          instr[0])
         {var
           y=instr[2],
           x=instr[1],
           tail=stack[2],
           t=_ceE_[2],
           x$0=caml_call1(x,[0,[0,[0,t,[0,caml_call1(_zA_,t),tail]]]]),
           y$0=caml_call1(y,[0,[0,tail]]),
           _ceF_=[0,[21,x$0,y$0],cond_aux(x$0,y$0)];
          return caml_call1(Utils_Option[15],_ceF_)}}
      if(typeof instr !== "number" && 21 === instr[0])return 0;
      throw [0,Assert_failure,_DI_]}
    var mi_if_cons=mk_spec(cst_IF_CONS,0,0,rule$7);
    function rule$8(param,stack,_ceB_)
     {if(typeof _ceB_ !== "number" && 8 === _ceB_[0])
       {var body=_ceB_[1];
        if(stack)
         {var
           tail=stack[2],
           t=stack[1],
           body$0=caml_call1(body,[0,[0,tail]]),
           tinstr=[8,body$0],
           _ceC_=body$0[2];
          if(0 === _ceC_[0])
           {var _ceD_=_ceC_[1];
            if(_ceD_)
             {var tail$0=_ceD_[1];return [0,[0,tinstr,[0,[0,[0,t,tail$0]]]]]}}
          return [0,[0,tinstr,_DK_]]}
        return 0}
      throw [0,Assert_failure,_DJ_]}
    var mi_dip=mk_spec(cst_DIP,0,0,rule$8);
    function rule$9(param,stack,_cex_)
     {if(typeof _cex_ !== "number" && 9 === _cex_[0])
       {var body=_cex_[2],n=_cex_[1];
        if(n < caml_call1(Utils_List[4],stack))
         {if(0 <= n)
           {var
             body$0=
              caml_call1(body,[0,[0,caml_call2(Utils_List[67],n,stack)]]),
             tinstr=[9,n,body$0],
             _cey_=body$0[2];
            if(0 === _cey_[0])
             {var _cez_=_cey_[1];
              if(_cez_)
               {var stack$0=_cez_[1],_ceA_=caml_call2(Utils_List[66],n,stack);
                return [0,
                        [0,tinstr,[0,[0,caml_call2(Stdlib[37],_ceA_,stack$0)]]]]}}
            return [0,[0,tinstr,_DM_]]}
          throw [0,Assert_failure,_DN_]}}
      throw [0,Assert_failure,_DL_]}
    var mi_dipn=mk_spec(cst_DIPn,0,0,rule$9);
    function is_hot$0(param,_ceu_,mt)
     {var switch$0=0;
      switch(mt[0])
       {case 1:
         var _cev_=mt[1];
         if(3 === _cev_)switch$0 = 1;else if(4 <= _cev_)return 0;
         break;
        case 2:
         var _cew_=mt[1];
         if(typeof _cew_ === "number" && ! _cew_)switch$0 = 1;
         break;
        case 3:return 2
        }
      return switch$0?1:caml_call3(_y6_,Utils_Ternary[2],1,mt)}
    var is_hot$1=caml_call1(_y$_,is_hot$0);
    function is_duppable(t){return 0 !== caml_call1(is_hot$1,t)?1:0}
    var
     mi_swap=
      mk_spec_basic
       (cst_SWAP,
        0,
        _DT_,
        function(param)
         {if(param)
           {var _cet_=param[2];
            if(_cet_){var b=_cet_[1],a=param[1];return [0,[0,b,[0,a,0]]]}}
          return 0}),
     mi_drop=
      mk_spec_basic(cst_DROP,0,_DV_,function(param){return param?_DU_:0}),
     _DX_=0;
    function _DY_(acc,x){var _ces_=x?1:0;return acc + _ces_ | 0}
    var unpair_size=caml_call2(Utils_List[25],_DY_,_DX_);
    function rule$10(param,stack,instr)
     {if(stack)
       {if(typeof instr !== "number" && 12 === instr[0])
         {var body=instr[1],tail=stack[2],c=stack[1],_ceo_=c[1],switch$0=0;
          switch(_ceo_[0])
           {case 1:
             var switcher=_ceo_[1] - 1 | 0;
             if(! (1 < switcher >>> 0)){var t=_ceo_[2],el=[0,t];switch$0 = 1}
             break;
            case 2:
             var _cer_=_ceo_[1];
             if(typeof _cer_ === "number" && 1 === _cer_)
              {var v=_ceo_[3],k=_ceo_[2],el=[0,caml_call4(_zH_,0,0,k,v)];
               switch$0 = 1}
             break
            }
          if(! switch$0)var el=0;
          if(el)
           {var
             el$0=el[1],
             body$0=caml_call1(body,[0,[0,[0,el$0,tail]]]),
             tinstr=[12,body$0],
             _cep_=body$0[2];
            if(0 === _cep_[0])
             {var _ceq_=_cep_[1];
              if(_ceq_)
               {var stack$0=_ceq_[1];
                if(unifiable_ok_stacks(tail,stack$0))
                 return [0,[0,tinstr,[0,[0,tail]]]]}}
            return [0,[0,tinstr,_D1_]]}
          return 0}}
      else
       if(typeof instr !== "number" && 12 === instr[0])return 0;
      throw [0,Assert_failure,_D0_]}
    var mi_iter=mk_spec(cst_ITER,0,0,rule$10);
    function rule$11(param,stack,_ceg_)
     {if(typeof _ceg_ !== "number" && 10 === _ceg_[0])
       {var body=_ceg_[1];
        if(stack)
         {var _ceh_=stack[1][1];
          if(0 === _ceh_[0])
           {var _cei_=_ceh_[1];
            if(typeof _cei_ === "number" && 1 === _cei_)
             {var
               tail=stack[2],
               body$0=caml_call1(body,[0,[0,tail]]),
               tinstr=[10,body$0],
               _cej_=body$0[2];
              if(0 === _cej_[0])
               {var _cek_=_cej_[1];
                if(_cek_)
                 {var _cel_=_cek_[1];
                  if(_cel_)
                   {var _cem_=_cel_[1][1];
                    if(0 === _cem_[0])
                     {var _cen_=_cem_[1];
                      if(typeof _cen_ === "number" && 1 === _cen_)
                       {var tail$0=_cel_[2];
                        if(unifiable_ok_stacks(tail,tail$0))
                         return [0,[0,tinstr,[0,[0,tail]]]]}}}}}
              return [0,[0,tinstr,_D3_]]}}}
        return 0}
      throw [0,Assert_failure,_D2_]}
    var mi_loop=mk_spec(cst_LOOP,0,0,rule$11);
    function rule$12(param,stack,_cd__)
     {if(typeof _cd__ !== "number" && 11 === _cd__[0])
       {var body=_cd__[1];
        if(stack)
         {var _cd$_=stack[1][1];
          if(2 === _cd$_[0])
           {var _cea_=_cd$_[1];
            if(typeof _cea_ !== "number" && 0 !== _cea_[0])
             {var
               tail=stack[2],
               b=_cd$_[3],
               a=_cd$_[2],
               body$0=caml_call1(body,[0,[0,[0,a,tail]]]),
               tinstr=[11,body$0],
               _ceb_=body$0[2];
              if(0 === _ceb_[0])
               {var _cec_=_ceb_[1];
                if(_cec_)
                 {var _ced_=_cec_[1];
                  if(_ced_)
                   {var _cee_=_ced_[1][1];
                    if(2 === _cee_[0])
                     {var switch$0=0,_cef_=_cee_[1];
                      if(typeof _cef_ === "number" || 1 === _cef_[0])
                       switch$0 = 1;
                      else
                       {var tail$0=_ced_[2],b$0=_cee_[3],a$0=_cee_[2];
                        if
                         (unifiable_types(a,a$0)
                          &&
                          unifiable_types(b,b$0)
                          &&
                          unifiable_ok_stacks(tail,tail$0))
                         return [0,[0,tinstr,[0,[0,[0,b,tail]]]]]}}}}}
              return [0,[0,tinstr,_D5_]]}}}
        return 0}
      throw [0,Assert_failure,_D4_]}
    var mi_loop_left=mk_spec(cst_LOOP_LEFT,0,0,rule$12);
    function rule$13(param,stack,_cd4_)
     {if(typeof _cd4_ !== "number" && 28 === _cd4_[0])
       {var
         body=_cd4_[3],
         t_out=_cd4_[2],
         t_in=_cd4_[1],
         body$0=caml_call1(body,[0,[0,[0,t_in,0]]]),
         tinstr=[28,t_in,t_out,body$0],
         ok=[0,[0,[0,caml_call2(_zE_,t_in,t_out),stack]]],
         _cd5_=body$0[2];
        if(0 === _cd5_[0])
         {var _cd6_=_cd5_[1];
          if(_cd6_)
           {var _cd7_=_cd6_[1],switch$0=0;
            if(_cd7_ && ! _cd7_[2])
             {var t_out$0=_cd7_[1];
              if(unifiable_types(t_out,t_out$0)){var _cd8_=ok;switch$0 = 1}}
            if(! switch$0)var _cd8_=_D7_;
            var _cd9_=_cd8_}
          else
           var _cd9_=ok;
          var stack$0=_cd9_}
        else
         var stack$0=_D8_;
        return [0,tinstr,stack$0]}
      throw [0,Assert_failure,_D6_]}
    var mi_lambda=mk_spec_raw(cst_LAMBDA,0,0,rule$13);
    function rule$14(param,stack,instr)
     {if(stack)
       {if(typeof instr !== "number" && 13 === instr[0])
         {var body=instr[1],tail=stack[2],c=stack[1],_cdY_=c[1],switch$0=0;
          switch(_cdY_[0])
           {case 1:
             if(1 === _cdY_[1])
              {var v$1=_cdY_[2],wrap_v=[0,[0,_zA_,v$1]];switch$0 = 1}
             break;
            case 2:
             var _cd2_=_cdY_[1];
             if(typeof _cd2_ === "number" && 1 === _cd2_)
              {var
                v$2=_cdY_[3],
                k=_cdY_[2],
                _cd3_=caml_call4(_zH_,0,0,k,v$2),
                wrap_v=[0,[0,caml_call1(_zF_,k),_cd3_]];
               switch$0 = 1}
             break
            }
          if(! switch$0)var wrap_v=0;
          if(wrap_v)
           {var
             match=wrap_v[1],
             v=match[2],
             wrap=match[1],
             body$0=caml_call1(body,[0,[0,[0,v,tail]]]),
             tinstr=[13,body$0],
             _cdZ_=body$0[2];
            if(0 === _cdZ_[0])
             {var _cd0_=_cdZ_[1];
              if(_cd0_)
               {var _cd1_=_cd0_[1];
                if(_cd1_)
                 {var tail$0=_cd1_[2],v$0=_cd1_[1];
                  if(unifiable_ok_stacks(tail,tail$0))
                   return [0,[0,tinstr,[0,[0,[0,caml_call1(wrap,v$0),tail]]]]]}}}
            return [0,[0,tinstr,_D__]]}
          return 0}}
      else
       if(typeof instr !== "number" && 13 === instr[0])return 0;
      throw [0,Assert_failure,_D9_]}
    var
     mi_map=mk_spec(cst_MAP,0,0,rule$14),
     mi_cons=
      mk_spec_basic
       (cst_CONS,
        0,
        _Ea_,
        function(param)
         {if(param)
           {var _cdW_=param[2];
            if(_cdW_)
             {var _cdX_=_cdW_[1][1];
              if(1 === _cdX_[0] && 1 === _cdX_[1])
               {var a=_cdX_[2],a$0=param[1],match=caml_call2(_z7_,a$0,a);
                if(0 === match[0])
                 {var t=match[1];
                  return [0,[0,caml_call1(_zA_,strip_annots(t)),0]]}
                return 0}}}
          return 0}),
     mi_get=
      mk_spec_basic
       (cst_GET,
        0,
        _Eb_,
        function(param)
         {if(param)
           {var _cdS_=param[2];
            if(_cdS_)
             {var _cdT_=_cdS_[1][1];
              if(2 === _cdT_[0])
               {var _cdU_=_cdT_[1];
                if(typeof _cdU_ === "number")
                 {var _cdV_=param[1];
                  switch(_cdU_)
                   {case 0:break;
                    case 1:
                     var value=_cdT_[3],key=_cdT_[2];
                     if(unifiable_types(_cdV_,key))
                      return [0,[0,caml_call1(_zz_,value),0]];
                     break;
                    default:
                     var value$0=_cdT_[3],key$0=_cdT_[2];
                     if(unifiable_types(_cdV_,key$0))
                      return [0,[0,caml_call1(_zz_,value$0),0]]}}}}}
          return 0});
    function get_comb_type(n,t)
     {var n$0=n,t$0=t;
      for(;;)
       {if(0 === n$0)return [0,t$0];
        var _cdQ_=t$0[1];
        if(2 === _cdQ_[0])
         {var _cdR_=_cdQ_[1];
          if(typeof _cdR_ !== "number" && 1 !== _cdR_[0])
           {var fst=_cdQ_[2];
            if(1 === n$0)return [0,fst];
            var t$1=_cdQ_[3],n$1=n$0 - 2 | 0,n$0=n$1,t$0=t$1;
            continue}}
        return 0}}
    var
     mi_eq=
      mk_spec_basic
       (cst_EQ,
        _Ef_,
        _Ee_,
        function(param)
         {if(param)
           {var _cdO_=param[1][1];
            if(0 === _cdO_[0])
             {var _cdP_=_cdO_[1];
              if(typeof _cdP_ === "number" && 3 === _cdP_)
               return [0,[0,_zf_,0]]}}
          return 0}),
     mi_neq=[0,cst_NEQ,mi_eq[2],mi_eq[3],mi_eq[4]],
     mi_lt=[0,cst_LT,mi_neq[2],0,mi_neq[4]],
     mi_le=[0,cst_LE,mi_lt[2],mi_lt[3],mi_lt[4]],
     mi_gt=[0,cst_GT,mi_lt[2],mi_lt[3],mi_lt[4]],
     mi_ge=[0,cst_GE,mi_lt[2],mi_lt[3],mi_lt[4]],
     mi_neg=
      mk_spec_basic
       (cst_NEG,
        0,
        _Eg_,
        function(param)
         {if(param)
           {var _cdM_=param[1][1];
            if(0 === _cdM_[0])
             {var _cdN_=_cdM_[1];
              if(typeof _cdN_ === "number" && 2 <= _cdN_)
               {var switcher=_cdN_ - 2 | 0;
                switch(switcher)
                 {case 0:return [0,[0,_zh_,0]];
                  case 1:return [0,[0,_zh_,0]];
                  case 14:return [0,[0,_zw_,0]];
                  case 15:return [0,[0,_zx_,0]];
                  case 16:return [0,[0,_zy_,0]]
                  }}}}
          return 0}),
     mi_int=
      mk_spec_basic
       (cst_INT,
        0,
        _Eh_,
        function(param)
         {if(param)
           {var _cdK_=param[1][1];
            if(0 === _cdK_[0])
             {var _cdL_=_cdK_[1];
              if(typeof _cdL_ === "number")
               {if(2 === _cdL_)return [0,[0,_zh_,0]];
                if(18 <= _cdL_)return [0,[0,_zh_,0]]}}}
          return 0});
    function is_comparable(mtype)
     {var mtype$0=mtype;
      for(;;)
       {var _cdH_=mtype$0[1];
        switch(_cdH_[0])
         {case 0:
           var _cdI_=_cdH_[1];
           if(typeof _cdI_ === "number" && 14 !== _cdI_ && ! (16 <= _cdI_))
            return 1;
           break;
          case 1:
           if(! _cdH_[1]){var mtype$1=_cdH_[2],mtype$0=mtype$1;continue}break;
          case 2:
           if(typeof _cdH_[1] !== "number")
            {var t2=_cdH_[3],t1=_cdH_[2],_cdJ_=is_comparable(t1);
             if(_cdJ_){var mtype$0=t2;continue}
             return _cdJ_}
           break
          }
        return 0}}
    var
     mi_compare=
      mk_spec_basic
       (cst_COMPARE,
        0,
        _Ei_,
        function(param)
         {if(param)
           {var _cdG_=param[2];
            if(_cdG_)
             {var b=_cdG_[1],a=param[1];
              if(is_comparable(a) && is_comparable(b) && unifiable_types(a,b))
               return [0,[0,_zh_,0]]}}
          return 0}),
     mi_add=
      mk_spec_basic
       (cst_ADD,
        _Ek_,
        _Ej_,
        function(param)
         {if(param)
           {var _cdj_=param[1][1];
            if(0 === _cdj_[0])
             {var _cdk_=_cdj_[1];
              if(typeof _cdk_ === "number")
               switch(_cdk_)
                {case 2:
                  var _cdl_=param[2];
                  if(_cdl_)
                   {var _cdm_=_cdl_[1][1];
                    if(0 === _cdm_[0])
                     {var _cdn_=_cdm_[1];
                      if(typeof _cdn_ === "number")
                       {if(2 === _cdn_)return [0,[0,_zg_,0]];
                        if(3 === _cdn_)return [0,[0,_zh_,0]]}}}
                  break;
                 case 3:
                  var _cdo_=param[2];
                  if(_cdo_)
                   {var _cdp_=_cdo_[1][1];
                    if(0 === _cdp_[0])
                     {var _cdq_=_cdp_[1];
                      if(typeof _cdq_ === "number" && ! (9 <= _cdq_))
                       switch(_cdq_)
                        {case 2:return [0,[0,_zh_,0]];
                         case 3:return [0,[0,_zh_,0]];
                         case 8:return [0,[0,_zm_,0]]
                         }}}
                  break;
                 case 4:
                  var _cdr_=param[2];
                  if(_cdr_)
                   {var _cds_=_cdr_[1][1];
                    if(0 === _cds_[0])
                     {var _cdt_=_cds_[1];
                      if(typeof _cdt_ === "number" && 4 === _cdt_)
                       return [0,[0,_zi_,0]]}}
                  break;
                 case 8:
                  var _cdu_=param[2];
                  if(_cdu_)
                   {var _cdv_=_cdu_[1][1];
                    if(0 === _cdv_[0])
                     {var _cdw_=_cdv_[1];
                      if(typeof _cdw_ === "number" && 3 === _cdw_)
                       return [0,[0,_zm_,0]]}}
                  break;
                 case 16:
                  var _cdx_=param[2];
                  if(_cdx_)
                   {var _cdy_=_cdx_[1][1];
                    if(0 === _cdy_[0])
                     {var _cdz_=_cdy_[1];
                      if(typeof _cdz_ === "number" && 16 === _cdz_)
                       return [0,[0,_zw_,0]]}}
                  break;
                 case 17:
                  var _cdA_=param[2];
                  if(_cdA_)
                   {var _cdB_=_cdA_[1][1];
                    if(0 === _cdB_[0])
                     {var _cdC_=_cdB_[1];
                      if(typeof _cdC_ === "number" && 17 === _cdC_)
                       return [0,[0,_zx_,0]]}}
                  break;
                 case 18:
                  var _cdD_=param[2];
                  if(_cdD_)
                   {var _cdE_=_cdD_[1][1];
                    if(0 === _cdE_[0])
                     {var _cdF_=_cdE_[1];
                      if(typeof _cdF_ === "number" && 18 <= _cdF_)
                       return [0,[0,_zy_,0]]}}
                  break
                 }}}
          return 0}),
     mi_sub=
      mk_spec_basic
       (cst_SUB,
        0,
        _El_,
        function(param)
         {if(param)
           {var _cc7_=param[1][1];
            if(0 === _cc7_[0])
             {var _cc8_=_cc7_[1];
              if(typeof _cc8_ === "number" && ! (9 <= _cc8_))
               switch(_cc8_)
                {case 2:
                  var _cc9_=param[2];
                  if(_cc9_)
                   {var _cc__=_cc9_[1][1];
                    if(0 === _cc__[0])
                     {var _cc$_=_cc__[1];
                      if(typeof _cc$_ === "number")
                       {if(2 === _cc$_)return [0,[0,_zh_,0]];
                        if(3 === _cc$_)return [0,[0,_zh_,0]]}}}
                  break;
                 case 3:
                  var _cda_=param[2];
                  if(_cda_)
                   {var _cdb_=_cda_[1][1];
                    if(0 === _cdb_[0])
                     {var _cdc_=_cdb_[1];
                      if(typeof _cdc_ === "number")
                       {if(2 === _cdc_)return [0,[0,_zh_,0]];
                        if(3 === _cdc_)return [0,[0,_zh_,0]]}}}
                  break;
                 case 4:
                  var _cdd_=param[2];
                  if(_cdd_)
                   {var _cde_=_cdd_[1][1];
                    if(0 === _cde_[0])
                     {var _cdf_=_cde_[1];
                      if(typeof _cdf_ === "number" && 4 === _cdf_)
                       return [0,[0,_zi_,0]]}}
                  break;
                 case 8:
                  var _cdg_=param[2];
                  if(_cdg_)
                   {var _cdh_=_cdg_[1][1];
                    if(0 === _cdh_[0])
                     {var _cdi_=_cdh_[1];
                      if(typeof _cdi_ === "number")
                       {if(3 === _cdi_)return [0,[0,_zm_,0]];
                        if(8 === _cdi_)return [0,[0,_zh_,0]]}}}
                  break
                 }}}
          return 0}),
     mi_mul=
      mk_spec_basic
       (cst_MUL,
        _En_,
        _Em_,
        function(param)
         {if(param)
           {var _ccN_=param[1][1];
            if(0 === _ccN_[0])
             {var _ccO_=_ccN_[1];
              if(typeof _ccO_ === "number")
               switch(_ccO_)
                {case 2:
                  var _ccP_=param[2];
                  if(_ccP_)
                   {var _ccQ_=_ccP_[1][1];
                    if(0 === _ccQ_[0])
                     {var _ccR_=_ccQ_[1];
                      if(typeof _ccR_ === "number")
                       if(5 <= _ccR_)
                        {if(18 <= _ccR_)return [0,[0,_zy_,0]]}
                       else
                        switch(_ccR_)
                         {case 2:return [0,[0,_zg_,0]];
                          case 3:return [0,[0,_zh_,0]];
                          case 4:return [0,[0,_zi_,0]]
                          }}}
                  break;
                 case 3:
                  var _ccS_=param[2];
                  if(_ccS_)
                   {var _ccT_=_ccS_[1][1];
                    if(0 === _ccT_[0])
                     {var _ccU_=_ccT_[1];
                      if(typeof _ccU_ === "number")
                       {var switcher=_ccU_ - 2 | 0;
                        if(! (1 < switcher >>> 0))
                         return switcher?[0,[0,_zh_,0]]:[0,[0,_zh_,0]];
                        if(16 <= switcher)return [0,[0,_zy_,0]]}}}
                  break;
                 case 4:
                  var _ccV_=param[2];
                  if(_ccV_)
                   {var _ccW_=_ccV_[1][1];
                    if(0 === _ccW_[0])
                     {var _ccX_=_ccW_[1];
                      if(typeof _ccX_ === "number" && 2 === _ccX_)
                       return [0,[0,_zi_,0]]}}
                  break;
                 case 16:
                  var _ccY_=param[2];
                  if(_ccY_)
                   {var _ccZ_=_ccY_[1][1];
                    if(0 === _ccZ_[0])
                     {var _cc0_=_ccZ_[1];
                      if(typeof _cc0_ === "number" && 18 <= _cc0_)
                       return [0,[0,_zw_,0]]}}
                  break;
                 case 17:
                  var _cc1_=param[2];
                  if(_cc1_)
                   {var _cc2_=_cc1_[1][1];
                    if(0 === _cc2_[0])
                     {var _cc3_=_cc2_[1];
                      if(typeof _cc3_ === "number" && 18 <= _cc3_)
                       return [0,[0,_zx_,0]]}}
                  break;
                 case 18:
                  var _cc4_=param[2];
                  if(_cc4_)
                   {var _cc5_=_cc4_[1][1];
                    if(0 === _cc5_[0])
                     {var _cc6_=_cc5_[1];
                      if(typeof _cc6_ === "number")
                       {var switcher$0=_cc6_ - 2 | 0;
                        if(! (1 < switcher$0 >>> 0))
                         return switcher$0?[0,[0,_zy_,0]]:[0,[0,_zy_,0]];
                        if(16 <= switcher$0)return [0,[0,_zy_,0]]}}}
                  break
                 }}}
          return 0}),
     mi_ediv=
      mk_spec_basic
       (cst_EDIV,
        0,
        _Eo_,
        function(param)
         {if(param)
           {var _ccC_=param[1][1];
            if(0 === _ccC_[0])
             {var _ccD_=_ccC_[1];
              if(typeof _ccD_ === "number" && ! (5 <= _ccD_))
               switch(_ccD_)
                {case 2:
                  var _ccE_=param[2];
                  if(_ccE_)
                   {var _ccF_=_ccE_[1][1];
                    if(0 === _ccF_[0])
                     {var _ccG_=_ccF_[1];
                      if(typeof _ccG_ === "number")
                       {if(2 === _ccG_)
                         return [0,
                                 [0,caml_call1(_zz_,caml_call4(_zH_,0,0,_zg_,_zg_)),0]];
                        if(3 === _ccG_)
                         return [0,
                                 [0,caml_call1(_zz_,caml_call4(_zH_,0,0,_zh_,_zg_)),0]]}}}
                  break;
                 case 3:
                  var _ccH_=param[2];
                  if(_ccH_)
                   {var _ccI_=_ccH_[1][1];
                    if(0 === _ccI_[0])
                     {var _ccJ_=_ccI_[1];
                      if(typeof _ccJ_ === "number")
                       {if(2 === _ccJ_)
                         return [0,
                                 [0,caml_call1(_zz_,caml_call4(_zH_,0,0,_zh_,_zg_)),0]];
                        if(3 === _ccJ_)
                         return [0,
                                 [0,caml_call1(_zz_,caml_call4(_zH_,0,0,_zh_,_zg_)),0]]}}}
                  break;
                 case 4:
                  var _ccK_=param[2];
                  if(_ccK_)
                   {var _ccL_=_ccK_[1][1];
                    if(0 === _ccL_[0])
                     {var _ccM_=_ccL_[1];
                      if(typeof _ccM_ === "number")
                       {var switcher=_ccM_ - 2 | 0;
                        if(! (2 < switcher >>> 0))
                         switch(switcher)
                          {case 0:
                            return [0,
                                    [0,caml_call1(_zz_,caml_call4(_zH_,0,0,_zi_,_zi_)),0]];
                           case 1:break;
                           default:
                            return [0,
                                    [0,caml_call1(_zz_,caml_call4(_zH_,0,0,_zg_,_zi_)),0]]}}}}
                  break
                 }}}
          return 0}),
     mi_and=
      mk_spec_basic
       (cst_AND,
        _Eq_,
        _Ep_,
        function(param)
         {if(param)
           {var _ccu_=param[1][1];
            if(0 === _ccu_[0])
             {var _ccv_=_ccu_[1];
              if(typeof _ccv_ === "number" && ! (3 <= _ccv_))
               switch(_ccv_)
                {case 0:break;
                 case 1:
                  var _ccw_=param[2];
                  if(_ccw_)
                   {var _ccx_=_ccw_[1][1];
                    if(0 === _ccx_[0])
                     {var _ccy_=_ccx_[1];
                      if(typeof _ccy_ === "number" && 1 === _ccy_)
                       return [0,[0,_zf_,0]]}}
                  break;
                 default:
                  var _ccz_=param[2];
                  if(_ccz_)
                   {var _ccA_=_ccz_[1][1];
                    if(0 === _ccA_[0])
                     {var _ccB_=_ccA_[1];
                      if(typeof _ccB_ === "number" && 2 === _ccB_)
                       return [0,[0,_zg_,0]]}}}}}
          return 0}),
     mi_or=[0,cst_OR,mi_and[2],mi_and[3],mi_and[4]],
     mi_xor=[0,cst_XOR,mi_or[2],mi_or[3],mi_or[4]],
     mi_unit=mk_spec_const(cst_UNIT,_ze_);
    function rule$15(param,stack,_ccs_)
     {if(typeof _ccs_ !== "number" && 22 === _ccs_[0])
       {var
         l=_ccs_[2],
         t=_ccs_[1],
         l$0=caml_call1(l,t),
         tinstr=[22,t,l$0],
         _cct_=l$0[2];
        if(0 === _cct_[0])
         var stack$0=[0,[0,[0,t,stack]]];
        else
         var e=_cct_[1],stack$0=[1,e];
        return [0,tinstr,stack$0]}
      throw [0,Assert_failure,_Er_]}
    var
     mi_push=mk_spec_raw(cst_PUSH,0,_Es_,rule$15),
     mi_some=
      mk_spec_basic
       (cst_SOME,
        0,
        _Et_,
        function(param)
         {if(param)
           {var t=param[1];return [0,[0,caml_call1(_zz_,strip_annots(t)),0]]}
          return 0});
    function ad_path_in_type(ops,t)
     {var ops$0=ops,t$0=t;
      for(;;)
       {if(ops$0)
         {if(ops$0[1])
           {var _cco_=t$0[1];
            if(2 === _cco_[0])
             {var _ccp_=_cco_[1];
              if(typeof _ccp_ !== "number" && 1 !== _ccp_[0])
               {var t$1=_cco_[3],ops$1=ops$0[2],ops$0=ops$1,t$0=t$1;continue}}}
          else
           {var _ccq_=t$0[1];
            if(2 === _ccq_[0])
             {var _ccr_=_ccq_[1];
              if(typeof _ccr_ !== "number" && 1 !== _ccr_[0])
               {var t$2=_ccq_[2],ops$2=ops$0[2],ops$0=ops$2,t$0=t$2;continue}}}
          return 0}
        return [0,t$0]}}
    var
     mi_update=
      mk_spec_basic
       (cst_UPDATE$0,
        0,
        _EA_,
        function(param)
         {if(param)
           {var _cb3_=param[2];
            if(_cb3_)
             {var _cb4_=_cb3_[1][1],_cb5_=param[1];
              switch(_cb4_[0])
               {case 0:
                 var _cb6_=_cb4_[1];
                 if(typeof _cb6_ === "number" && 1 === _cb6_)
                  {var _cb7_=_cb3_[2];
                   if(_cb7_)
                    {var _cb8_=_cb7_[1][1];
                     if(1 === _cb8_[0] && 2 === _cb8_[1])
                      {var
                        k=_cb8_[2],
                        _cb9_=function(k){return [0,caml_call1(_zB_,k),0]},
                        _cb__=caml_call2(_z7_,_cb5_,k),
                        _cb$_=caml_call1(Base_Result[21],_cb__);
                       return caml_call2(Base_Option[29],_cb$_,_cb9_)}}}
                 break;
                case 1:
                 if(! _cb4_[1])
                  {var _cca_=_cb3_[2];
                   if(_cca_)
                    {var _ccb_=_cca_[1][1];
                     if(2 === _ccb_[0])
                      {var _ccc_=_ccb_[1];
                       if(typeof _ccc_ === "number")
                        {var _ccd_=_cb4_[2];
                         switch(_ccc_)
                          {case 0:break;
                           case 1:
                            var
                             v=_ccb_[3],
                             k$0=_ccb_[2],
                             _cce_=caml_call2(_z7_,_ccd_,v),
                             _ccf_=caml_call1(Base_Result[21],_cce_),
                             _ccg_=caml_call2(_z7_,_cb5_,k$0),
                             _cch_=caml_call1(Base_Result[21],_ccg_),
                             _cci_=function(k,v){return [0,caml_call2(_zF_,k,v),0]};
                            return caml_call3(Utils_Option[26],_cci_,_cch_,_ccf_);
                           default:
                            var
                             v$0=_ccb_[3],
                             k$1=_ccb_[2],
                             _ccj_=caml_call2(_z7_,_ccd_,v$0),
                             _cck_=caml_call1(Base_Result[21],_ccj_),
                             _ccl_=caml_call2(_z7_,_cb5_,k$1),
                             _ccm_=caml_call1(Base_Result[21],_ccl_),
                             _ccn_=function(k,v){return [0,caml_call2(_zG_,k,v),0]};
                            return caml_call3(Utils_Option[26],_ccn_,_ccm_,_cck_)}}}}}
                 break
                }}}
          return 0}),
     mi_get_and_update=
      mk_spec_basic
       (cst_GET_AND_UPDATE,
        0,
        _EB_,
        function(param)
         {if(param)
           {var _cbK_=param[2];
            if(_cbK_)
             {var _cbL_=_cbK_[1][1];
              if(1 === _cbL_[0] && ! _cbL_[1])
               {var _cbM_=_cbK_[2];
                if(_cbM_)
                 {var _cbN_=_cbM_[1][1];
                  if(2 === _cbN_[0])
                   {var _cbO_=_cbN_[1];
                    if(typeof _cbO_ === "number")
                     {var _cbP_=_cbL_[2],_cbQ_=param[1];
                      switch(_cbO_)
                       {case 0:break;
                        case 1:
                         var
                          v=_cbN_[3],
                          k=_cbN_[2],
                          _cbR_=caml_call2(_z7_,_cbP_,v),
                          _cbS_=caml_call1(Base_Result[21],_cbR_),
                          _cbT_=caml_call2(_z7_,_cbQ_,k),
                          _cbU_=caml_call1(Base_Result[21],_cbT_),
                          _cbV_=
                           function(k,v)
                            {var _cb1_=[0,caml_call2(_zF_,k,v),0];
                             return [0,caml_call1(_zz_,v),_cb1_]};
                         return caml_call3(Utils_Option[26],_cbV_,_cbU_,_cbS_);
                        default:
                         var
                          v$0=_cbN_[3],
                          k$0=_cbN_[2],
                          _cbW_=caml_call2(_z7_,_cbP_,v$0),
                          _cbX_=caml_call1(Base_Result[21],_cbW_),
                          _cbY_=caml_call2(_z7_,_cbQ_,k$0),
                          _cbZ_=caml_call1(Base_Result[21],_cbY_),
                          _cb0_=
                           function(k,v)
                            {var _cb2_=[0,caml_call2(_zG_,k,v),0];
                             return [0,caml_call1(_zz_,v),_cb2_]};
                         return caml_call3(Utils_Option[26],_cb0_,_cbZ_,_cbX_)}}}}}}}
          return 0}),
     mi_mem=
      mk_spec_basic
       (cst_MEM,
        0,
        _EC_,
        function(param)
         {if(param)
           {var _cbG_=param[2];
            if(_cbG_)
             {var _cbH_=_cbG_[1][1],_cbI_=param[1];
              switch(_cbH_[0])
               {case 1:
                 if(2 === _cbH_[1])
                  {var k=_cbH_[2];
                   if(unifiable_types(_cbI_,k))return [0,[0,_zf_,0]]}
                 break;
                case 2:
                 var _cbJ_=_cbH_[1];
                 if(typeof _cbJ_ === "number")
                  switch(_cbJ_)
                   {case 0:break;
                    case 1:
                     var k$0=_cbH_[2];
                     if(unifiable_types(_cbI_,k$0))return [0,[0,_zf_,0]];
                     break;
                    default:
                     var k$1=_cbH_[2];
                     if(unifiable_types(_cbI_,k$1))return [0,[0,_zf_,0]]}
                 break
                }}}
          return 0}),
     mi_exec=
      mk_spec_basic
       (cst_EXEC,
        0,
        _ED_,
        function(param)
         {if(param)
           {var _cbD_=param[2];
            if(_cbD_)
             {var _cbE_=_cbD_[1][1];
              if(2 === _cbE_[0])
               {var _cbF_=_cbE_[1];
                if(typeof _cbF_ === "number" && ! _cbF_)
                 {var v=_cbE_[3],k=_cbE_[2],k$0=param[1];
                  return unifiable_types(k$0,k)?[0,[0,v,0]]:0}}}}
          return 0}),
     mi_apply=
      mk_spec_basic
       (cst_APPLY,
        0,
        _EE_,
        function(param)
         {if(param)
           {var _cby_=param[2];
            if(_cby_)
             {var _cbz_=_cby_[1][1];
              if(2 === _cbz_[0])
               {var _cbA_=_cbz_[1];
                if(typeof _cbA_ === "number" && ! _cbA_)
                 {var _cbB_=_cbz_[2][1];
                  if(2 === _cbB_[0])
                   {var switch$0=0,_cbC_=_cbB_[1];
                    if(typeof _cbC_ === "number" || 1 === _cbC_[0])
                     switch$0 = 1;
                    else
                     {var v=_cbz_[3],k=_cbB_[3],k$0=_cbB_[2],k$1=param[1];
                      if(unifiable_types(k$1,k$0))
                       return [0,[0,caml_call2(_zE_,k,v),0]]}}}}}}
          return 0}),
     mi_transfer_tokens=
      mk_spec_basic
       (cst_TRANSFER_TOKENS,
        0,
        _EI_,
        function(param)
         {if(param)
           {var _cbt_=param[2];
            if(_cbt_)
             {var _cbu_=_cbt_[1][1];
              if(0 === _cbu_[0])
               {var _cbv_=_cbu_[1];
                if(typeof _cbv_ === "number" && 4 === _cbv_)
                 {var _cbw_=_cbt_[2];
                  if(_cbw_)
                   {var _cbx_=_cbw_[1][1];
                    if(1 === _cbx_[0] && 3 === _cbx_[1])
                     {var p=_cbx_[2],p$0=param[1];
                      if(unifiable_types(p$0,p))return [0,[0,_zs_,0]]}}}}}}
          return 0}),
     mi_set_delegate=
      mk_spec_basic
       (cst_SET_DELEGATE,
        0,
        _EJ_,
        function(param)
         {if(param)
           {var _cbq_=param[1][1];
            if(1 === _cbq_[0] && ! _cbq_[1])
             {var _cbr_=_cbq_[2][1];
              if(0 === _cbr_[0])
               {var _cbs_=_cbr_[1];
                if(typeof _cbs_ === "number")
                 {var switcher=_cbs_ - 11 | 0;
                  if(! (1 < switcher >>> 0))return [0,[0,_zs_,0]]}}}}
          return 0}),
     mi_sapling_verify_update=
      mk_spec_basic
       (cst_SAPLING_VERIFY_UPDATE,
        0,
        _EK_,
        function(param)
         {if(param)
           {var _cbl_=param[1][1];
            if(0 === _cbl_[0])
             {var _cbm_=_cbl_[1],switch$0=0;
              if(typeof _cbm_ === "number" || 0 === _cbm_[0])
               switch$0 = 1;
              else
               {var _cbn_=param[2];
                if(_cbn_)
                 {var _cbo_=_cbn_[1][1];
                  if(0 === _cbo_[0])
                   {var _cbp_=_cbo_[1],switch$1=0;
                    if(typeof _cbp_ !== "number" && 1 !== _cbp_[0])
                     {var m2=_cbp_[1],m1=_cbm_[1];
                      if(m1 === m2)
                       return [0,
                               [0,
                                caml_call1
                                 (_zz_,caml_call4(_zH_,0,0,_zh_,caml_call1(_zt_,m1))),
                                0]];
                      switch$1 = 1}}}}}}
          return 0}),
     mi_level=mk_spec_const(cst_LEVEL,[0,_zg_[1],_zg_[2],_EL_]),
     mi_concat1=
      mk_spec_basic
       (cst_CONCAT,
        0,
        _EM_,
        function(param)
         {if(param)
           {var _cbi_=param[1][1];
            if(1 === _cbi_[0] && 1 === _cbi_[1])
             {var _cbj_=_cbi_[2][1];
              if(0 === _cbj_[0])
               {var _cbk_=_cbj_[1];
                if(typeof _cbk_ === "number")
                 {var switcher=_cbk_ - 5 | 0;
                  if(! (1 < switcher >>> 0))
                   return [0,[0,caml_call3(_za_,0,0,_cbj_),0]]}}}}
          return 0}),
     mi_concat2=
      mk_spec_basic
       (cst_CONCAT$0,
        0,
        _EN_,
        function(param)
         {if(param)
           {var _cba_=param[1][1];
            if(0 === _cba_[0])
             {var _cbb_=_cba_[1];
              if(typeof _cbb_ === "number")
               {var switch$0=0;
                if(5 === _cbb_)
                 {var _cbc_=param[2];
                  if(_cbc_)
                   {var _cbd_=_cbc_[1][1];
                    if(0 === _cbd_[0])
                     {var _cbe_=_cbd_[1];
                      if(typeof _cbe_ === "number" && 5 === _cbe_)switch$0 = 1}}}
                else
                 if(6 === _cbb_)
                  {var _cbf_=param[2];
                   if(_cbf_)
                    {var _cbg_=_cbf_[1][1];
                     if(0 === _cbg_[0])
                      {var _cbh_=_cbg_[1];
                       if(typeof _cbh_ === "number" && 6 === _cbh_)switch$0 = 1}}}
                if(switch$0)return [0,[0,caml_call3(_za_,0,0,_cba_),0]]}}}
          return 0});
    function rule$16(tparameter,stack,instr)
     {var
       match=caml_call3(mi_concat1[2],tparameter,stack,instr),
       r1=match[2],
       instr1=match[1];
      return 0 === r1[0]
              ?[0,instr1,r1]
              :caml_call3(mi_concat2[2],tparameter,stack,instr)}
    var
     mi_concat_unresolved=[0,cst_CONCAT$1,rule$16,0,0],
     mi_pack=
      mk_spec_basic
       (cst_PACK,0,_EO_,function(param){return param?[0,[0,_zk_,0]]:0}),
     mi_slice=
      mk_spec_basic
       (cst_SLICE,
        0,
        _EQ_,
        function(param)
         {if(param)
           {var _ca4_=param[1][1];
            if(0 === _ca4_[0])
             {var _ca5_=_ca4_[1];
              if(typeof _ca5_ === "number" && 2 === _ca5_)
               {var _ca6_=param[2];
                if(_ca6_)
                 {var _ca7_=_ca6_[1][1];
                  if(0 === _ca7_[0])
                   {var _ca8_=_ca7_[1];
                    if(typeof _ca8_ === "number" && 2 === _ca8_)
                     {var _ca9_=_ca6_[2];
                      if(_ca9_)
                       {var _ca__=_ca9_[1][1];
                        if(0 === _ca__[0])
                         {var _ca$_=_ca__[1];
                          if(typeof _ca$_ === "number")
                           {if(5 === _ca$_)return [0,[0,caml_call1(_zz_,_zj_),0]];
                            if(6 === _ca$_)return [0,[0,caml_call1(_zz_,_zk_),0]]}}}}}}}}}
          return 0}),
     mi_size=
      mk_spec_basic
       (cst_SIZE,
        0,
        _ER_,
        function(param)
         {if(param)
           {var _ca1_=param[1][1],switch$0=0;
            switch(_ca1_[0])
             {case 0:
               var _ca2_=_ca1_[1];
               if(typeof _ca2_ === "number" && ! (1 < (_ca2_ - 5 | 0) >>> 0))
                switch$0 = 1;
               break;
              case 1:if(! (1 < (_ca1_[1] - 1 | 0) >>> 0))switch$0 = 1;break;
              case 2:
               var _ca3_=_ca1_[1];
               if(typeof _ca3_ === "number" && _ca3_)switch$0 = 1;
               break
              }
            if(switch$0)return [0,[0,_zg_,0]]}
          return 0});
    function rule$17(tparameter,stack,param)
     {if(typeof param !== "number" && 0 === param[0])
       {var _caX_=param[1];
        if(typeof _caX_ !== "number" && 0 === _caX_[0])
         {var
           ep_name=_caX_[1],
           tinstr=[0,[0,ep_name]],
           mt_contract=
            function(t)
             {var _ca0_=caml_call1(_zC_,t);return [0,_ca0_[1],_ca0_[2],_ET_]};
          if(ep_name)
           {var
             ep_name$0=ep_name[1],
             find_ep=
              function(param)
               {var param$0=param;
                for(;;)
                 {var annot=param$0[2],t=param$0[1],_caY_=t[1];
                  if(annot)
                   {var a=annot[1];
                    if(caml_string_equal(a,ep_name$0))return [0,t]}
                  else
                   if(2 === _caY_[0])
                    {var _caZ_=_caY_[1];
                     if(typeof _caZ_ !== "number" && 0 !== _caZ_[0])
                      {var
                        right=_caY_[3],
                        left=_caY_[2],
                        annot_right=_caZ_[2],
                        annot_left=_caZ_[1],
                        match=find_ep([0,left,annot_left]);
                       if(match){var t$0=match[1];return [0,t$0]}
                       var param$1=[0,right,annot_right],param$0=param$1;
                       continue}}
                  return 0}},
             match=find_ep(tparameter);
            if(match)
             {var t=match[1];
              return [0,[0,tinstr,[0,[0,[0,mt_contract(t),stack]]]]]}
            return 0}
          return [0,[0,tinstr,[0,[0,[0,mt_contract(tparameter[1]),stack]]]]]}}
      throw [0,Assert_failure,_ES_]}
    var
     mi_self=mk_spec(cst_SELF,0,_EU_,rule$17),
     mi_address=
      mk_spec_basic
       (cst_ADDRESS,
        0,
        _EV_,
        function(param)
         {if(param)
           {var _caW_=param[1][1];
            if(1 === _caW_[0] && 3 === _caW_[1])return [0,[0,_zn_,0]]}
          return 0}),
     mi_implicit_account=
      mk_spec_basic
       (cst_IMPLICIT_ACCOUNT,
        0,
        _EW_,
        function(param)
         {if(param)
           {var _caU_=param[1][1];
            if(0 === _caU_[0])
             {var _caV_=_caU_[1];
              if(typeof _caV_ === "number" && 11 === _caV_)
               return [0,[0,caml_call1(_zC_,_ze_),0]]}}
          return 0}),
     mi_voting_power=
      mk_spec_basic
       (cst_VOTING_POWER,
        0,
        _EX_,
        function(param)
         {if(param)
           {var _caS_=param[1][1];
            if(0 === _caS_[0])
             {var _caT_=_caS_[1];
              if(typeof _caT_ === "number")
               {var switcher=_caT_ - 11 | 0;
                if(! (1 < switcher >>> 0))return [0,[0,_zg_,0]]}}}
          return 0});
    function rule$18(param,stack,_caK_)
     {if(typeof _caK_ !== "number" && 29 === _caK_[0])
       {var code=_caK_[3],tstorage=_caK_[2],tparameter=_caK_[1];
        if(stack)
         {var _caL_=stack[1][1];
          if(1 === _caL_[0] && ! _caL_[1])
           {var _caM_=_caL_[2][1];
            if(0 === _caM_[0])
             {var _caN_=_caM_[1];
              if(typeof _caN_ === "number")
               {var switcher=_caN_ - 11 | 0;
                if(! (1 < switcher >>> 0))
                 {var _caO_=stack[2];
                  if(_caO_)
                   {var _caP_=_caO_[1][1];
                    if(0 === _caP_[0])
                     {var _caQ_=_caP_[1];
                      if(typeof _caQ_ === "number" && 4 === _caQ_)
                       {var _caR_=_caO_[2];
                        if(_caR_)
                         {var
                           tail=_caR_[2],
                           storage=_caR_[1],
                           code$0=
                            caml_call1(code,[0,initial_stack(tparameter[1],tstorage)]);
                          if(unifiable_types(storage,tstorage))
                           {var
                             tinstr=[29,tparameter,tstorage,code$0],
                             stack$0=[0,[0,[0,_zs_,[0,_zn_,tail]]]];
                            return [0,[0,tinstr,stack$0]]}
                          return 0}}}}}}}}}
        return 0}
      throw [0,Assert_failure,_EY_]}
    var mi_create_contract=mk_spec(cst_CREATE_CONTRACT,0,_EZ_,rule$18);
    function spec_of_prim1(p)
     {function mk(name)
       {var match=caml_call1(include$1[3],p),t=match[2],t1=match[1];
        function f(param)
         {if(param)
           {var x=param[1];if(unifiable_types(x,t1))return [0,[0,t,0]]}
          return 0}
        return mk_spec_basic(name,0,_E0_,f)}
      if(typeof p === "number")
       switch(p)
        {case 2:return mi_some;
         case 3:return mi_eq;
         case 4:return mk(cst_ABS);
         case 5:return mi_neg;
         case 6:return mi_int;
         case 7:return mk(cst_ISNAT);
         case 8:return mi_neq;
         case 9:return mi_le;
         case 10:return mi_lt;
         case 11:return mi_ge;
         case 12:return mi_gt;
         case 13:return mk(cst_NOT);
         case 14:return mi_concat1;
         case 15:return mi_size;
         case 16:return mi_address;
         case 17:return mi_implicit_account;
         case 18:return mi_pack;
         case 19:return mk(cst_HASH_KEY);
         case 20:return mk(cst_BLAKE2B);
         case 21:return mk(cst_SHA256);
         case 22:return mk(cst_SHA512);
         case 23:return mk(cst_KECCAK);
         case 24:return mk(cst_SHA3);
         case 25:return mi_set_delegate;
         case 26:return mi_read_ticket;
         case 27:return mi_join_tickets;
         case 28:return mi_pairing_check;
         case 29:return mi_voting_power;
         default:throw [0,Assert_failure,_E1_]}
      else
       switch(p[0])
        {case 0:
          var t=p[3],annot_right=p[2],annot_left=p[1];
          return mk_spec_basic
                  (cst_LEFT,
                   0,
                   _Eu_,
                   function(param)
                    {if(param)
                      {var a=param[1];
                       return [0,
                               [0,
                                caml_call4(_zI_,annot_left,annot_right,strip_annots(a),t),
                                0]]}
                     return 0});
         case 1:
          var t$0=p[3],annot_right$0=p[2],annot_left$0=p[1];
          return mk_spec_basic
                  (cst_RIGHT,
                   0,
                   _Ev_,
                   function(param)
                    {if(param)
                      {var b=param[1];
                       return [0,
                               [0,
                                caml_call4
                                 (_zI_,annot_left$0,annot_right$0,t$0,strip_annots(b)),
                                0]]}
                     return 0});
         case 2:
          var t$1=p[2];
          return mk_spec_basic
                  (cst_CONTRACT,
                   0,
                   _EF_,
                   function(param)
                    {if(param)
                      {var _caI_=param[1][1];
                       if(0 === _caI_[0])
                        {var _caJ_=_caI_[1];
                         if(typeof _caJ_ === "number" && 9 === _caJ_)
                          return [0,[0,caml_call1(_zz_,caml_call1(_zC_,t$1)),0]]}}
                     return 0});
         case 3:
          var t$2=p[1];
          return mk_spec_basic
                  (cst_UNPACK,
                   0,
                   _EP_,
                   function(param)
                    {if(param)
                      {var _caG_=param[1][1];
                       if(0 === _caG_[0])
                        {var _caH_=_caG_[1];
                         if(typeof _caH_ === "number" && 6 === _caH_)
                          return [0,[0,caml_call1(_zz_,t$2),0]]}}
                     return 0});
         case 4:
          var n=p[1];
          return mk_spec_basic
                  (cst_GET$0,
                   0,
                   _Ec_,
                   function(param)
                    {if(param)
                      {var
                        t=param[1],
                        _caE_=get_comb_type(n,t),
                        _caF_=function(t){return [0,t,0]};
                       return caml_call2(Utils_Option[17],_caF_,_caE_)}
                     return 0});
         case 5:
          var t$3=p[1];
          return mk_spec_basic
                  (cst_CAST,
                   0,
                   _EG_,
                   function(param)
                    {if(param)
                      {var t=param[1];
                       if(unifiable_types(t$3,t))return [0,[0,t$3,0]]}
                     return 0});
         default:
          var a=p[1];
          return mk_spec_basic
                  (cst_RENAME,
                   0,
                   _EH_,
                   function(param)
                    {if(param){var t=param[1];return [0,[0,[0,t[1],t[2],a],0]]}
                     return 0})}}
    function spec_of_instr(strict_dup,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return mi_drop;
         case 1:return mi_swap;
         case 2:return mi_concat_unresolved;
         default:return mi_level}
      else
       switch(param[0])
        {case 0:
          var
           p=param[1],
           mk=
            function(name)
             {var t=caml_call1(include$1[2],p);return mk_spec_const(name,t)};
          if(typeof p === "number")
           switch(p)
            {case 0:return mk(cst_SENDER);
             case 1:return mk(cst_SOURCE);
             case 2:return mk(cst_AMOUNT);
             case 3:return mk(cst_BALANCE);
             case 4:return mk(cst_NOW);
             case 5:return mk(cst_SELF_ADDRESS);
             case 6:return mk(cst_CHAIN_ID);
             case 7:return mk(cst_TOTAL_VOTING_POWER);
             default:return mi_unit}
          else
           switch(p[0])
            {case 0:return mi_self;
             case 1:return mk(cst_SAPLING_EMPTY_STATE);
             case 2:
              var t=p[1];return mk_spec_const(cst_NONE,caml_call1(_zz_,t));
             case 3:
              var t$0=p[1];return mk_spec_const(cst_NIL,caml_call1(_zA_,t$0));
             case 4:
              var t$1=p[1];
              return mk_spec_const(cst_EMPTY_SET,caml_call1(_zB_,t$1));
             case 5:
              var v=p[2],k=p[1];
              return mk_spec_const(cst_EMPTY_MAP,caml_call2(_zF_,k,v));
             default:
              var v$0=p[2],k$0=p[1];
              return mk_spec_const(cst_EMPTY_BIG_MAP,caml_call2(_zG_,k$0,v$0))}
         case 1:var p$0=param[1];return spec_of_prim1(p$0);
         case 2:return param[1]?mi_never:mi_failwith;
         case 3:
          var
           p$1=param[1],
           mk$0=
            function(name)
             {var
               match=caml_call1(include$1[4],p$1),
               t=match[3],
               t2=match[2],
               t1=match[1];
              function f(param)
               {if(param)
                 {var _caD_=param[2];
                  if(_caD_)
                   {var x2=_caD_[1],x1=param[1];
                    if(unifiable_types(x1,t1) && unifiable_types(x2,t2))
                     return [0,[0,t,0]]}}
                return 0}
              return mk_spec_basic(name,0,_E2_,f)};
          if(typeof p$1 === "number")
           switch(p$1)
            {case 0:return mi_add;
             case 1:return mi_mul;
             case 2:return mi_sub;
             case 3:return mk$0(cst_LSR);
             case 4:return mk$0(cst_LSL);
             case 5:return mi_xor;
             case 6:return mi_ediv;
             case 7:return mi_and;
             case 8:return mi_or;
             case 9:return mi_cons;
             case 10:return mi_compare;
             case 11:return mi_concat2;
             case 12:return mi_get;
             case 13:return mi_mem;
             case 14:return mi_exec;
             case 15:return mi_apply;
             case 16:return mi_sapling_verify_update;
             case 17:return mi_ticket;
             default:return mi_split_ticket}
          else
           {if(0 === p$1[0])
             {var annot_snd=p$1[2],annot_fst=p$1[1];
              return mk_spec_basic
                      (cst_PAIR$0,
                       0,
                       _D$_,
                       function(param)
                        {if(param)
                          {var _caC_=param[2];
                           if(_caC_)
                            {var b=_caC_[1],a=param[1];
                             return [0,[0,caml_call4(_zH_,annot_fst,annot_snd,a,b),0]]}}
                         return 0})}
            var n=p$1[1];
            return mk_spec_basic
                    (cst_UPDATE,
                     0,
                     _Ed_,
                     function(param)
                      {if(param)
                        {var _caB_=param[2],_caA_=param[1];
                         if(_caB_)
                          {var t=_caB_[1],match=get_comb_type(n,t);
                           if(match)
                            {var t2=match[1];
                             return unifiable_types(_caA_,t2)?[0,[0,t,0]]:0}
                           return 0}}
                       return 0})}
         case 4:
          var p$2=param[1];
          switch(p$2)
           {case 0:return mi_slice;
            case 1:return mi_update;
            case 2:return mi_get_and_update;
            case 3:return mi_transfer_tokens;
            default:
             var
              match=caml_call1(include$1[5],p$2),
              t$2=match[4],
              t3=match[3],
              t2=match[2],
              t1=match[1],
              f=
               function(param)
                {if(param)
                  {var _cay_=param[2];
                   if(_cay_)
                    {var _caz_=_cay_[2];
                     if(_caz_)
                      {var x3=_caz_[1],x2=_cay_[1],x1=param[1];
                       if
                        (unifiable_types(x1,t1)
                         &&
                         unifiable_types(x2,t2)
                         &&
                         unifiable_types(x3,t3))
                        return [0,[0,t$2,0]]}}}
                 return 0};
             return mk_spec_basic(name,0,_E3_,f)}
         case 5:return mi_error;
         case 6:return mi_comment;
         case 7:
          var
           match$0=param[1],
           typesOut=match$0[4],
           typesIn=match$0[3],
           name$0=match$0[1],
           _caq_=
            function(stack)
             {return caml_call3(Base_List[105],stack,typesIn,_y7_)
                      ?[0,typesOut]
                      :0},
           _car_=caml_call1(Utils_List[4],typesOut);
          return mk_spec_basic
                  (name$0,0,[0,caml_call1(Utils_List[4],typesIn),_car_],_caq_);
         case 8:return mi_dip;
         case 9:return mi_dipn;
         case 10:return mi_loop;
         case 11:return mi_loop_left;
         case 12:return mi_iter;
         case 13:return mi_map;
         case 14:
          var n$0=param[1];
          return mk_spec_basic
                  (cst_DROP$0,
                   0,
                   [0,n$0,0],
                   function(param){return param?_DW_:0});
         case 15:
          var i=param[1];
          if(1 <= i)
           {var acc=0;
            return mk_spec_basic
                    (cst_DUP,
                     0,
                     [0,i,i + 1 | 0],
                     function(param$1)
                      {var acc$0=acc,n=i,param=param$1;
                       for(;;)
                        {if(param)
                          {var x=param[1];
                           if(1 === n)
                            {if(strict_dup && ! is_duppable(x))return 0;
                             return [0,[0,x,caml_call1(Utils_List[12],[0,x,acc$0])]]}
                           var
                            param$0=param[2],
                            n$0=n - 1 | 0,
                            acc$1=[0,x,acc$0],
                            acc$0=acc$1,
                            n=n$0,
                            param=param$0;
                           continue}
                         return 0}})}
          throw [0,Assert_failure,_DO_];
         case 16:
          var
           n$1=param[1],
           rule=
            function(param,stack)
             {var match=caml_call2(Utils_List[64],n$1,stack);
              if(match)
               {var match$0=match[1],lo=match$0[2],hi=match$0[1];
                if(lo)
                 {var lo$0=lo[2],x=lo[1];
                  return [0,[0,caml_call2(Stdlib[37],[0,x,hi],lo$0)]]}
                return [1,caml_call2(Stdlib_printf[4],_DP_,n$1)]}
              return [1,caml_call2(Stdlib_printf[4],_DQ_,n$1)]};
          return mk_spec_no_sub(cst_DIG,0,0,rule);
         case 17:
          var
           n$2=param[1],
           rule$0=
            function(param,_cax_)
             {if(_cax_)
               {var tail=_cax_[2],x=_cax_[1];
                if(caml_call1(Utils_List[4],tail) < n$2)
                 return [1,caml_call2(Stdlib_printf[4],_DR_,n$2)];
                var
                 match=caml_call3(Utils_List[65],0,n$2,tail),
                 lo=match[2],
                 hi=match[1];
                return [0,[0,caml_call2(Stdlib[37],hi,[0,x,lo])]]}
              return _DS_};
          return mk_spec_no_sub(cst_DUG,0,0,rule$0);
         case 18:return mi_if;
         case 19:return mi_if_left;
         case 20:return mi_if_none;
         case 21:return mi_if_cons;
         case 22:return mi_push;
         case 23:return mi_seq;
         case 24:
          var n$3=param[1];
          if(2 <= caml_call1(Utils_List[4],n$3))
           {var
             acc$0=0,
             _cal_=
              function(stack$1)
               {var acc=acc$0,fields=n$3,stack=stack$1;
                for(;;)
                 {if(fields)
                   {if(stack)
                     {var _cau_=stack[1];
                      if(fields[1] && ! fields[2])
                       return [0,caml_call1(Utils_List[12],[0,_cau_,acc])];
                      var _cav_=_cau_[1];
                      if(2 === _cav_[0])
                       {var _caw_=_cav_[1];
                        if(typeof _caw_ !== "number" && 1 !== _caw_[0])
                         {var
                           fields$0=fields[2],
                           select=fields[1],
                           rest=stack[2],
                           snd=_cav_[3],
                           fst=_cav_[2],
                           acc$1=select?[0,fst,acc]:acc,
                           stack$0=[0,snd,rest],
                           acc=acc$1,
                           fields=fields$0,
                           stack=stack$0;
                          continue}}}
                    return 0}
                  return [0,caml_call1(Utils_List[12],acc)]}};
            return mk_spec_basic
                    (cst_UNPAIR,0,[0,1,caml_call1(unpair_size,n$3)],_cal_)}
          throw [0,Assert_failure,_DZ_];
         case 25:
          var n$4=param[1],acc$1=0;
          return mk_spec_basic
                  (cst_PAIR,
                   0,
                   [0,n$4,1],
                   function(stack$1)
                    {var acc=acc$1,n=n$4,stack=stack$1;
                     for(;;)
                      {if(0 === n)
                        {if(acc)
                          {var
                            rest$0=acc[2],
                            x$0=acc[1],
                            acc$0=x$0,
                            param=rest$0,
                            _cat_=0;
                           for(;;)
                            {if(param)
                              {var
                                rest=param[2],
                                x=param[1],
                                acc$2=caml_call4(_zH_,0,0,x,acc$0),
                                acc$0=acc$2,
                                param=rest;
                               continue}
                             return [0,[0,acc$0,_cat_]]}}
                         return 0}
                       if(stack)
                        {var
                          stack$0=stack[2],
                          se=stack[1],
                          n$0=n - 1 | 0,
                          acc$3=[0,se,acc],
                          acc=acc$3,
                          n=n$0,
                          stack=stack$0;
                         continue}
                       return 0}});
         case 26:
          var
           steps=param[1],
           _cam_=
            function(param)
             {if(param)
               {var t=param[1],match=ad_path_in_type(steps,t);
                if(match){var t$0=match[1];return [0,[0,t$0,0]]}
                return 0}
              return 0},
           _can_=string_of_ad_path(steps);
          return mk_spec_basic
                  (caml_call2(Stdlib_printf[4],_Ex_,_can_),0,_Ew_,_cam_);
         case 27:
          var
           steps$0=param[1],
           _cao_=
            function(param)
             {if(param)
               {var _cas_=param[2];
                if(_cas_)
                 {var x=_cas_[1],t=param[1],match=ad_path_in_type(steps$0,t);
                  if(match)
                   {var x$0=match[1];
                    if(unifiable_types(x,x$0))return [0,[0,t,0]]}
                  return 0}}
              return 0},
           _cap_=string_of_ad_path(steps$0);
          return mk_spec_basic
                  (caml_call2(Stdlib_printf[4],_Ez_,_cap_),0,_Ey_,_cao_);
         case 28:return mi_lambda;
         default:return mi_create_contract}}
    function is_commutative(instr){return spec_of_instr(1,instr)[3]}
    function f_literal(literal)
     {if(typeof literal !== "number" && 8 === literal[0])
       {var _cah_=literal[1];
        if(_cah_)
         {var _cai_=_cah_[1][1];
          if(typeof _cai_ !== "number")
           switch(_cai_[0])
            {case 9:
              var
               f=
                function(param)
                 {var _cak_=param[1];
                  if(typeof _cak_ !== "number" && 9 === _cak_[0])
                   {var match=_cak_[1],v=match[2],k=match[1];return [0,k,v]}
                  return caml_call1(Stdlib[2],cst_sanitize_Elt_followed_by_n)};
              return [0,[11,caml_call2(Utils_List[20],f,_cah_)]];
             case 10:
              var
               f$0=
                function(param)
                 {var _caj_=param[1];
                  if(typeof _caj_ !== "number" && 10 === _caj_[0])
                   {var i=_caj_[1];return i}
                  return caml_call1(Stdlib[2],cst_sanitize_instruction_follo)};
              return [0,[10,[0,[23,caml_call2(Utils_List[20],f$0,_cah_)]]]]
             }}}
      return [0,literal]}
    function f_instr(instr){return [0,instr]}
    var
     match$0=cata$1([0,f_instr,f_literal]),
     sanitize_literal=match$0[2],
     sanitize_instr=match$0[1];
    function match_comb(t,xs)
     {var _caf_=t[1];
      if(xs)
       {if(! xs[2]){var x$0=xs[1];return [0,[0,t,x$0],0]}
        if(2 === _caf_[0])
         {var _cag_=_caf_[1];
          if(typeof _cag_ !== "number" && 1 !== _cag_[0])
           {var xs$0=xs[2],x=xs[1],snd=_caf_[3],fst=_caf_[2];
            return [0,[0,fst,x],match_comb(snd,xs$0)]}}}
      return caml_call1(Stdlib[2],cst_match_comb)}
    function comb_literal(param)
     {if(param)
       {var _b$9_=param[1],_b$__=param[2];
        if(_b$__ && ! _b$__[2])
         {var
           x2=_b$__[1],
           _cac_=x2[2],
           _cad_=_b$9_[2],
           _cae_=function(eta){return caml_call3(_zH_,0,0,eta)};
          return [0,
                  [4,_b$9_,x2],
                  caml_call3(Utils_Control[15][20],_cae_,_cad_,_cac_)]}
        var
         xs=param[2],
         xs$0=comb_literal(xs),
         _b$$_=xs$0[2],
         _caa_=_b$9_[2],
         _cab_=function(eta){return caml_call3(_zH_,0,0,eta)};
        return [0,
                [4,_b$9_,xs$0],
                caml_call3(Utils_Control[15][20],_cab_,_caa_,_b$$_)]}
      throw [0,Assert_failure,_E4_]}
    function typecheck_alg(strict_dup,tparameter)
     {function p_instr(i$0,stack$1)
       {function _b$4_(_b$8_){return _b$8_[2]}
        var i=map_instr_f(function(_b$7_){return _b$7_[2]},_b$4_,i$0);
        function on_error_stack(msg)
         {function _b$6_(x){return caml_call1(x,err$0)}
          var
           tinstr=
            map_instr_f(function(x){return caml_call1(x,err$0)},_b$6_,i);
          return [0,tinstr,[1,msg]]}
        if(typeof i !== "number" && 6 === i[0])return [0,i,stack$1];
        if(0 === stack$1[0])
         {var _b$5_=stack$1[1];
          if(_b$5_)
           {var
             stack=_b$5_[1],
             match=spec_of_instr(strict_dup,i),
             rule=match[2],
             okify=function(f,x){return caml_call1(f,[0,x])},
             match$0=
              caml_call3
               (rule,tparameter,stack,map_instr_f(Utils_Control[1],okify,i)),
             stack$0=match$0[2],
             tinstr=match$0[1];
            return [0,tinstr,stack$0]}
          return on_error_stack(cst_instruction_on_failed_stac)}
        return on_error_stack(cst_previous_error)}
      function p_literal(literal,t$0)
       {function _b$v_(_b$3_){return _b$3_[2]}
        var
         tliteral=
          map_literal_f(function(_b$2_){return _b$2_[2]},_b$v_,literal);
        function _b$w_(t)
         {var _b$B_=t[1];
          switch(_b$B_[0])
           {case 0:
             var switch$0=0,_b$C_=_b$B_[1];
             if(typeof _b$C_ === "number")
              switch(_b$C_)
               {case 0:
                 if(typeof tliteral === "number" && ! tliteral)switch$0 = 1;
                 break;
                case 1:
                 var switch$1=0;
                 if(typeof tliteral !== "number" && 1 === tliteral[0])
                  {switch$0 = 1;switch$1 = 1}
                 break;
                case 2:
                 var switch$2=0;
                 if(typeof tliteral !== "number" && 0 === tliteral[0])
                  {switch$0 = 1;switch$2 = 1}
                 break;
                case 3:
                 var switch$3=0;
                 if(typeof tliteral === "number" || ! (0 === tliteral[0]))
                  switch$3 = 1;
                 else
                  switch$0 = 1;
                 break;
                case 4:
                 var switch$4=0;
                 if(typeof tliteral === "number" || ! (0 === tliteral[0]))
                  switch$4 = 1;
                 else
                  switch$0 = 1;
                 break;
                case 5:
                 var switch$5=0;
                 if(typeof tliteral === "number" || ! (2 === tliteral[0]))
                  switch$5 = 1;
                 else
                  switch$0 = 1;
                 break;
                case 6:
                 var switch$6=0;
                 if(typeof tliteral === "number" || ! (3 === tliteral[0]))
                  switch$6 = 1;
                 else
                  switch$0 = 1;
                 break;
                case 7:
                 var switch$7=0;
                 if(typeof tliteral === "number" || ! (3 === tliteral[0]))
                  switch$7 = 1;
                 else
                  switch$0 = 1;
                 break;
                case 8:
                 var switch$8=0;
                 if(typeof tliteral === "number")
                  switch$8 = 1;
                 else
                  switch(tliteral[0])
                   {case 0:case 2:switch$0 = 1;break;default:switch$8 = 1}
                 break;
                case 9:
                 var switch$9=0;
                 if(typeof tliteral === "number")
                  switch$9 = 1;
                 else
                  switch(tliteral[0])
                   {case 2:case 3:switch$0 = 1;break;default:switch$9 = 1}
                 break;
                case 10:
                 var switch$10=0;
                 if(typeof tliteral === "number")
                  switch$10 = 1;
                 else
                  switch(tliteral[0])
                   {case 2:case 3:switch$0 = 1;break;default:switch$10 = 1}
                 break;
                case 11:
                 var switch$11=0;
                 if(typeof tliteral === "number")
                  switch$11 = 1;
                 else
                  switch(tliteral[0])
                   {case 2:case 3:switch$0 = 1;break;default:switch$11 = 1}
                 break;
                case 12:
                 var switch$12=0;
                 if(typeof tliteral === "number")
                  switch$12 = 1;
                 else
                  switch(tliteral[0])
                   {case 2:case 3:switch$0 = 1;break;default:switch$12 = 1}
                 break;
                case 13:
                 var switch$13=0;
                 if(typeof tliteral === "number")
                  switch$13 = 1;
                 else
                  switch(tliteral[0])
                   {case 2:case 3:switch$0 = 1;break;default:switch$13 = 1}
                 break;
                case 16:
                 var switch$14=0;
                 if(typeof tliteral === "number" || ! (3 === tliteral[0]))
                  switch$14 = 1;
                 else
                  switch$0 = 1;
                 break;
                case 17:
                 var switch$15=0;
                 if(typeof tliteral === "number" || ! (3 === tliteral[0]))
                  switch$15 = 1;
                 else
                  switch$0 = 1;
                 break;
                case 18:
                 var switch$16=0;
                 if(typeof tliteral === "number" || ! (3 === tliteral[0]))
                  switch$16 = 1;
                 else
                  switch$0 = 1;
                 break
                }
             else
              if(0 === _b$C_[0])
               {var switch$17=0;
                if(typeof tliteral === "number" || ! (8 === tliteral[0]))
                 switch$17 = 1;
                else
                 if(! tliteral[1])switch$0 = 1}
              else
               {var switch$18=0;
                if(typeof tliteral === "number" || ! (2 === tliteral[0]))
                 switch$18 = 1;
                else
                 if
                  (!
                   caml_string_notequal
                    (tliteral[1],cst_FAKE_SAPLING_TRANSACTION))
                  switch$0 = 1}
             if(switch$0)return caml_call1(Utils_Control[15][9],tliteral);
             break;
            case 1:
             switch(_b$B_[1])
              {case 0:
                var _b$E_=_b$B_[2];
                if(typeof tliteral === "number")
                 {if(0 !== tliteral)return caml_call1(Utils_Control[15][9],1)}
                else
                 if(7 === tliteral[0])
                  {var x=tliteral[1],_b$F_=[7,caml_call1(x,[0,_b$E_])];
                   return caml_call1(Utils_Control[15][9],_b$F_)}
                break;
               case 3:
                if(typeof tliteral !== "number" && 2 === tliteral[0])
                 return caml_call1(Utils_Control[15][9],tliteral);
                break;
               case 4:break;
               default:
                if(typeof tliteral !== "number" && 8 === tliteral[0])
                 {var
                   xs=tliteral[1],
                   t$1=_b$B_[2],
                   _b$G_=function(x){return caml_call1(x,[0,t$1])},
                   _b$H_=[8,caml_call2(Utils_List[20],_b$G_,xs)];
                  return caml_call1(Utils_Control[15][9],_b$H_)}}
             break;
            case 2:
             var _b$I_=_b$B_[1];
             if(typeof _b$I_ === "number")
              if(0 === _b$I_)
               {var switch$19=0,_b$J_=_b$B_[2];
                if(typeof tliteral === "number")
                 switch$19 = 1;
                else
                 switch(tliteral[0])
                  {case 8:if(tliteral[1])throw [0,Assert_failure,_E6_];break;
                   case 10:
                    var
                     i=tliteral[1],
                     _b$K_=[10,caml_call1(i,[0,[0,[0,_b$J_,0]]])];
                    return caml_call1(Utils_Control[15][9],_b$K_);
                   default:switch$19 = 1}}
              else
               {var _b$L_=_b$B_[3],_b$M_=_b$B_[2];
                if(typeof tliteral !== "number")
                 switch(tliteral[0])
                  {case 8:
                    if(tliteral[1])throw [0,Assert_failure,_E7_];
                    return caml_call1(Utils_Control[15][9],_E8_);
                   case 11:
                    var
                     xs$0=tliteral[1],
                     f=
                      function(param)
                       {var v=param[2],k=param[1],_b$1_=caml_call1(v,[0,_b$L_]);
                        return [0,caml_call1(k,[0,_b$M_]),_b$1_]},
                     _b$N_=[11,caml_call2(Utils_List[20],f,xs$0)];
                    return caml_call1(Utils_Control[15][9],_b$N_)
                   }}
             else
              if(0 === _b$I_[0])
               {var _b$O_=_b$B_[3],_b$P_=_b$B_[2];
                if(typeof tliteral !== "number")
                 switch(tliteral[0])
                  {case 4:
                    var
                     x2=tliteral[2],
                     x1=tliteral[1],
                     _b$Q_=caml_call1(x2,[0,_b$O_]),
                     _b$R_=[4,caml_call1(x1,[0,_b$P_]),_b$Q_];
                    return caml_call1(Utils_Control[15][9],_b$R_);
                   case 8:
                    var
                     xs$1=tliteral[1],
                     _b$S_=match_comb(t,xs$1),
                     _b$T_=
                      function(param)
                       {var x=param[2],t=param[1];return caml_call1(x,[0,t])},
                     xs$2=caml_call2(Utils_List[20],_b$T_,_b$S_),
                     _b$U_=comb_literal(xs$2)[1];
                    return caml_call1(Utils_Control[15][9],_b$U_)
                   }}
              else
               {var _b$V_=_b$B_[3],_b$W_=_b$B_[2];
                if(typeof tliteral !== "number")
                 switch(tliteral[0])
                  {case 5:
                    var x$0=tliteral[1],_b$X_=[5,caml_call1(x$0,[0,_b$W_])];
                    return caml_call1(Utils_Control[15][9],_b$X_);
                   case 6:
                    var x$1=tliteral[1],_b$Y_=[6,caml_call1(x$1,[0,_b$V_])];
                    return caml_call1(Utils_Control[15][9],_b$Y_)
                   }}
             break
            }
          function _b$D_(_b$0_){return _b$0_[1]}
          var
           literal$0=
            map_literal_f(function(_b$Z_){return _b$Z_[1]},_b$D_,literal),
           l=caml_call1(to_michelson_string(show_instr),[0,literal$0]),
           t$0=string_of_mtype(0,0,0,0,0,t),
           msg=caml_call3(Stdlib_printf[4],_E5_,l,t$0);
          return caml_call1(Utils_Control[15][6],msg)}
        function _b$x_(param){return cst_type_error}
        var
         _b$y_=caml_call2(Utils_Control[15][43],_b$x_,t$0),
         r=caml_call2(Utils_Control[15][31],_b$y_,_b$w_);
        if(0 === r[0])
         {var
           tliteral$0=r[1],
           _b$z_=function(param){var t=param[2];return t},
           r$0=
            sequence_literal_f
             (map_literal_f
               (function(param){var stack=param[2];return stack},
                _b$z_,
                tliteral$0)),
           t=caml_call1(Utils_Control[15][42],r$0)?err:t$0;
          return [0,tliteral$0,t]}
        var msg=r[1];
        function _b$A_(f){return caml_call1(f,err)}
        var
         tliteral$1=
          map_literal_f(function(f){return caml_call1(f,err)},_b$A_,tliteral);
        return [0,tliteral$1,[1,msg]]}
      return para_alg$0(p_instr,p_literal)}
    function typecheck_instr(strict_dup,tparameter,stack,i)
     {var i$0=caml_call1(sanitize_instr,i);
      return caml_call1
              (caml_call1
                 (cata_instr(typecheck_alg(strict_dup,tparameter)),i$0)
                [2],
               [0,stack])}
    function typecheck_literal(strict_dup,tparameter,t,l)
     {var l$0=caml_call1(sanitize_literal,l);
      return caml_call1
              (caml_call1
                 (cata_literal(typecheck_alg(strict_dup,tparameter)),l$0)
                [2],
               [0,t])}
    function name_of_instr_exn(instr)
     {if(typeof instr !== "number")
       switch(instr[0])
        {case 5:return caml_call1(Stdlib[2],cst_name_of_instr_exn_MIerror);
         case 6:return caml_call1(Stdlib[2],cst_name_of_instr_exn_MIcommen);
         case 8:return cst_DIP$0;
         case 9:return cst_DIPN;
         case 10:return cst_LOOP$0;
         case 11:return cst_LOOP_LEFT$0;
         case 12:return cst_ITER$0;
         case 13:return cst_MAP$0;
         case 16:return cst_DIG$0;
         case 17:return cst_DUG$0;
         case 18:return cst_IF$0;
         case 19:return cst_IF_LEFT$0;
         case 20:return cst_IF_NONE$0;
         case 21:return cst_IF_CONS$0;
         case 23:return caml_call1(Stdlib[2],cst_name_of_instr_exn_MIseq);
         case 28:return cst_LAMBDA$0;
         case 29:return cst_CREATE_CONTRACT$0
         }
      return spec_of_instr(1,instr)[1]}
    function two_field_annots(param)
     {var _b$q_=param[1];
      if(_b$q_)
       {var _b$r_=param[2],_b$s_=_b$q_[1];
        if(_b$r_)
         {var a2=_b$r_[1],_b$t_=[0,caml_call2(Stdlib[28],cst$65,a2),0];
          return [0,caml_call2(Stdlib[28],cst$66,_b$s_),_b$t_]}
        return [0,caml_call2(Stdlib[28],cst$67,_b$s_),0]}
      var _b$u_=param[2];
      if(_b$u_)
       {var a2$0=_b$u_[1];
        return [0,cst$69,[0,caml_call2(Stdlib[28],cst$68,a2$0),0]]}
      return 0}
    function buffer_tinstr(html,show_stack,sub,new_line$0,b,indent,x)
     {var new_line=new_line$0?cst$70:cst$99;
      function f_tliteral(param,x,indent,protect)
       {var prot=caml_call4(Utils_Misc[23],b,protect,cst$72,cst$71);
        function elt(param)
         {var v=param[2],k=param[1];
          caml_call2(Stdlib_buffer[14],b,cst_Elt);
          caml_call2(k,indent,1);
          caml_call2(Stdlib_buffer[14],b,cst$73);
          return caml_call2(v,indent,1)}
        function sub1(name,x)
         {return caml_call1
                  (prot,
                   function(param)
                    {caml_call2(Stdlib_buffer[14],b,name);
                     caml_call2(Stdlib_buffer[14],b,cst$74);
                     return caml_call2(x,indent,1)})}
        if(typeof x === "number")
         return 0 === x
                 ?caml_call2(Stdlib_buffer[14],b,cst_Unit$3)
                 :caml_call2(Stdlib_buffer[14],b,cst_None$40);
        else
         switch(x[0])
          {case 0:
            var i=x[1],_b$l_=caml_call1(Big_int[33],i);
            return caml_call2(Stdlib_buffer[14],b,_b$l_);
           case 1:
            return x[1]
                    ?caml_call2(Stdlib_buffer[14],b,cst_True$0)
                    :caml_call2(Stdlib_buffer[14],b,cst_False$0);
           case 2:var s=x[1];return caml_call3(Stdlib_printf[5],b,_E9_,s);
           case 3:
            var string_bytes=x[1];
            caml_call2(Stdlib_buffer[14],b,cst_0x$0);
            var _b$m_=caml_call1(Utils_Misc[4][1],string_bytes);
            return caml_call2(Stdlib_buffer[14],b,_b$m_);
           case 4:
            var r=x[2],l=x[1];
            return caml_call1
                    (prot,
                     function(param)
                      {caml_call2(Stdlib_buffer[14],b,cst_Pair);
                       caml_call2(l,indent,1);
                       caml_call2(Stdlib_buffer[14],b,cst$75);
                       return caml_call2(r,indent,1)});
           case 5:var x$0=x[1];return sub1(cst_Left$2,x$0);
           case 6:var x$1=x[1];return sub1(cst_Right$2,x$1);
           case 7:var x$2=x[1];return sub1(cst_Some$38,x$2);
           case 8:
            var
             xs=x[1],
             _b$n_=
              function(param)
               {function _b$p_(x){return caml_call2(x,indent,0)}
                return caml_call4(Utils_Misc[24],b,cst$76,_b$p_,xs)};
            return caml_call5(Utils_Misc[23],b,1,cst$78,cst$77,_b$n_);
           case 9:var match=x[1],v=match[2],k=match[1];return elt([0,k,v]);
           case 10:var i$0=x[1];return caml_call2(i$0,0,indent + 2 | 0);
           default:
            var
             xs$0=x[1],
             _b$o_=
              function(param)
               {return caml_call4(Utils_Misc[24],b,cst$79,elt,xs$0)};
            return caml_call5(Utils_Misc[23],b,1,cst$81,cst$80,_b$o_)}}
      function f_tinstr(stack,x,sub,indent)
       {function spaces(n)
         {if(html)
           {var
             _b$j_=function(param){return cst_nbsp},
             _b$k_=caml_call2(Utils_List[13],n,_b$j_);
            return caml_call2(Utils_String[7],cst$82,_b$k_)}
          return caml_call2(Utils_String[1],n,32)}
        function out(x)
         {function _b$i_(param){return 0}
          return caml_call3(Stdlib_printf[10],_b$i_,b,x)}
        function out_str(x){return caml_call2(Stdlib_buffer[14],b,x)}
        function do_indent(param)
         {var
           _b$g_=caml_string_equal(new_line,cst$83)?1:indent,
           _b$h_=spaces(_b$g_);
          return caml_call2(Stdlib_buffer[14],b,_b$h_)}
        function line(x)
         {do_indent(0);
          function _b$f_(param){return out_str(new_line)}
          return caml_call3(Stdlib_printf[10],_b$f_,b,x)}
        function line_str(x){do_indent(0);out_str(x);return out_str(new_line)}
        function with_stack(s)
         {do_indent(0);
          var l1=caml_call1(Stdlib_buffer[7],b);
          caml_call1(s,0);
          var l2=caml_call1(Stdlib_buffer[7],b);
          out(_E__);
          return show_stack
                  ?out_str
                    (spaces(caml_call2(Stdlib[17],0,10 - (l2 - l1 | 0) | 0)))
                  :show_stack}
        function span(className,text)
         {return html?caml_call3(Stdlib_printf[4],_E$_,className,text):text}
        function sub1(name,code)
         {line_str(name);
          caml_call2(code,1,indent + 2 | 0);
          return out_str(cst$84)}
        function sub2(name,l,r)
         {line_str(name);
          caml_call2(l,1,indent + 2 | 0);
          out_str(new_line);
          caml_call2(r,1,indent + 2 | 0);
          return out_str(cst$85)}
        var switch$0=0;
        if(typeof x === "number")
         switch$0 = 1;
        else
         switch(x[0])
          {case 0:
            var _b_R_=x[1],switch$1=0;
            if(typeof _b_R_ === "number")
             {switch$0 = 1;switch$1 = 1}
            else
             switch(_b_R_[0])
              {case 0:
                var _b_S_=_b_R_[1];
                if(_b_S_)
                 {var entrypoint=_b_S_[1];
                  with_stack
                   (function(param){return caml_call1(out(_Fe_),entrypoint)})}
                else
                 {switch$0 = 1;switch$1 = 1}
                break;
               case 1:
                var memo=_b_R_[1];
                with_stack(function(param){return caml_call1(out(_Ff_),memo)});
                break;
               case 5:
               case 6:
                var v=_b_R_[2],k=_b_R_[1];
                with_stack
                 (function(param)
                   {out_str(name_of_instr_exn(x));
                    out_str(cst$88);
                    var
                     _b$d_=[0,string_of_mtype(0,0,_Fh_,0,html,v),0],
                     _b$e_=[0,string_of_mtype(0,0,_Fi_,0,html,k),_b$d_];
                    return out_str(caml_call2(Utils_String[7],cst$89,_b$e_))});
                break;
               default:var t=_b_R_[1];switch$0 = 2;switch$1 = 1}
            break;
           case 1:
            var _b_T_=x[1],switch$2=0;
            if(typeof _b_T_ === "number")
             {switch$0 = 1;switch$2 = 1}
            else
             switch(_b_T_[0])
              {case 2:
                var _b_U_=_b_T_[1];
                if(_b_U_)
                 {var t$1=_b_T_[2],ep=_b_U_[1];
                  with_stack
                   (function(param)
                     {var _b$c_=string_of_mtype(0,0,_Fk_,0,html,t$1);
                      return caml_call2(out(_Fl_),ep,_b$c_)})}
                else
                 {var t=_b_T_[2];switch$0 = 2;switch$2 = 1}
                break;
               case 4:
                var n=_b_T_[1];
                with_stack(function(param){return caml_call1(out(_Fm_),n)});
                break;
               case 6:
                var a=_b_T_[1];
                with_stack
                 (function(param)
                   {out_str(name_of_instr_exn(x));
                    if(a){var a$0=a[1];out_str(cst$92);return out_str(a$0)}
                    return 0});
                break;
               case 0:
               case 1:
                var t$0=_b_T_[3],a2=_b_T_[2],a1=_b_T_[1];
                with_stack
                 (function(param)
                   {var
                     _b$a_=two_field_annots([0,a1,a2]),
                     _b$b_=[0,name_of_instr_exn(x),_b$a_];
                    out_str(caml_call2(Utils_String[7],cst$90,_b$b_));
                    out_str(cst$91);
                    return out_str(string_of_mtype(0,0,_Fj_,0,html,t$0))});
                break;
               default:var t=_b_T_[1];switch$0 = 2;switch$2 = 1}
            break;
           case 3:
            var _b_V_=x[1],switch$3=0;
            if(typeof _b_V_ === "number")
             switch$0 = 1;
            else
             if(0 === _b_V_[0])
              {var a2$0=_b_V_[2],a1$0=_b_V_[1];
               with_stack
                (function(param)
                  {var
                    _b___=two_field_annots([0,a1$0,a2$0]),
                    _b_$_=[0,name_of_instr_exn(x),_b___];
                   return out_str(caml_call2(Utils_String[7],cst$93,_b_$_))});
               switch$3 = 1}
             else
              {var n$0=_b_V_[1];
               with_stack(function(param){return caml_call1(out(_Fn_),n$0)});
               switch$3 = 1}
            break;
           case 5:
            var error=x[1];
            do_indent(0);
            out_str
             (span(cst_partialType$0,caml_call2(Stdlib_printf[4],_Fo_,error)));
            break;
           case 6:
            var
             comments=x[1],
             _b_W_=caml_call1(Utils_String[34],10),
             _b_X_=caml_call2(Utils_List[20],_b_W_,comments),
             lines=caml_call1(Utils_List[16],_b_X_),
             _b_Y_=
              function(i,line)
               {if(0 !== i)out_str(new_line);
                do_indent(0);
                return out_str
                        (span(cst_comment$0,caml_call2(Stdlib_printf[4],_Fp_,line)))};
            caml_call2(Utils_List[19],_b_Y_,lines);
            break;
           case 8:var code=x[1];sub1(cst_DIP$1,code);break;
           case 9:
            var code$0=x[2],n$1=x[1];
            sub1(caml_call2(Stdlib_printf[4],_Fq_,n$1),code$0);
            break;
           case 10:var code$1=x[1];sub1(cst_LOOP$1,code$1);break;
           case 11:var code$2=x[1];sub1(cst_LOOP_LEFT$1,code$2);break;
           case 12:var code$3=x[1];sub1(cst_ITER$1,code$3);break;
           case 13:var code$4=x[1];sub1(cst_MAP$1,code$4);break;
           case 14:
            var n$2=x[1];
            with_stack(function(param){return caml_call1(out(_Fr_),n$2)});
            break;
           case 15:
            var _b_Z_=x[1];
            if(1 === _b_Z_)
             with_stack(function(param){return out_str(cst_DUP$0)});
            else
             with_stack(function(param){return caml_call1(out(_Fs_),_b_Z_)});
            break;
           case 16:
            var n$3=x[1];
            with_stack(function(param){return caml_call1(out(_Ft_),n$3)});
            break;
           case 17:
            var n$4=x[1];
            with_stack(function(param){return caml_call1(out(_Fu_),n$4)});
            break;
           case 18:var r=x[2],l=x[1];sub2(cst_IF$1,l,r);break;
           case 19:var r$0=x[2],l$0=x[1];sub2(cst_IF_LEFT$1,l$0,r$0);break;
           case 20:var r$1=x[2],l$1=x[1];sub2(cst_IF_NONE$1,l$1,r$1);break;
           case 21:var r$2=x[2],l$2=x[1];sub2(cst_IF_CONS$1,l$2,r$2);break;
           case 22:
            var l$3=x[2],t$2=x[1];
            with_stack
             (function(param)
               {var _b_9_=string_of_mtype(0,0,_Fv_,0,html,t$2);
                caml_call1(out(_Fw_),_b_9_);
                return caml_call2(l$3,indent,1)});
            break;
           case 23:
            var _b_0_=x[1];
            if(_b_0_)
             {do_indent(0);
              out_str(cst$94);
              var
               _b_1_=
                function(i)
                 {out_str(new_line);return caml_call2(i,0,indent + 2 | 0)};
              caml_call2(Utils_List[18],_b_1_,_b_0_);
              out_str(new_line);
              do_indent(0);
              out_str(cst$95);
              if(1 - sub)out_str(cst$96)}
            else
             {do_indent(0);out_str(cst$97)}
            break;
           case 24:
            var _b_2_=x[1],switch$4=0;
            if(_b_2_ && _b_2_[1])
             {var _b_3_=_b_2_[2];
              if(_b_3_ && _b_3_[1] && ! _b_3_[2])
               {with_stack(function(param){return out_str(cst_UNPAIR$0)});
                switch$4 = 1}}
            if(! switch$4)
             with_stack
              (function(param)
                {var _b_8_=caml_call1(unpair_size,_b_2_);
                 return caml_call1(out(_Fx_),_b_8_)});
            break;
           case 25:
            var n$5=x[1];
            with_stack(function(param){return caml_call1(out(_Fy_),n$5)});
            break;
           case 28:
            var l$4=x[3],t2=x[2],t1=x[1];
            line(_Fz_);
            var _b_4_=string_of_mtype(0,0,_FA_,0,html,t1);
            caml_call1(line(_FB_),_b_4_);
            var _b_5_=string_of_mtype(0,0,_FC_,0,html,t2);
            caml_call1(line(_FD_),_b_5_);
            caml_call2(l$4,1,indent + 2 | 0);
            out_str(cst$98);
            break;
           case 29:
            var
             code$5=x[3],
             tstorage=x[2],
             match=x[1],
             annot=match[2],
             t$3=match[1];
            line(_FE_);
            var _b_6_=string_of_tparameter(html,[0,t$3,annot]);
            caml_call1(line(_FF_),_b_6_);
            var _b_7_=string_of_mtype(0,0,_FG_,0,html,tstorage);
            caml_call1(line(_FH_),_b_7_);
            line(_FI_);
            caml_call2(code$5,1,indent + 5 | 0);
            out(_FJ_);
            break;
           default:switch$0 = 1}
        switch(switch$0)
         {case 2:
           with_stack
            (function(param)
              {out_str(name_of_instr_exn(x));
               out_str(cst$87);
               return buffer_mtype(0,0,_Fg_,0,html,b,t)});
           break;
          case 1:
           with_stack(function(param){return out_str(name_of_instr_exn(x))});
           break
          }
        var switch$5=0;
        if(typeof x !== "number" && 5 === x[0]){var full=_Fd_;switch$5 = 1}
        if(! switch$5)var full=0;
        var _b_M_=show_stack?1 - sub:show_stack;
        if(_b_M_)
         {if(0 === stack[0])
           {var
             inst=stack[1],
             _b_N_=string_of_stack(full,inst),
             _b_O_=span(cst_stack$0,caml_call2(Stdlib_printf[4],_Fa_,_b_N_)),
             _b_P_=span(cst_comment,cst$86);
            return caml_call2(out(_Fb_),_b_P_,_b_O_)}
          var msg=stack[1],_b_Q_=span(cst_partialType,msg);
          return caml_call1(out(_Fc_),_b_Q_)}
        return _b_M_}
      return caml_call3(cata_tinstr([0,f_tinstr,f_tliteral]),x,sub,indent)}
    function wrap_in_seq(i)
     {var _b_L_=i[1];
      if(typeof _b_L_ !== "number" && 23 === _b_L_[0])return i;
      return [0,[23,[0,i,0]],i[2]]}
    function f_tinstr$0(stack,tinstr)
     {if(typeof tinstr !== "number" && 23 === tinstr[0])
       return [0,tinstr,stack];
      return [0,map_instr_f(wrap_in_seq,Utils_Control[1],tinstr),stack]}
    var
     insert_subsequences=
      cata_tinstr([0,f_tinstr$0,function(t,tliteral){return [0,tliteral,t]}]);
    function display_tinstr(show_stack,new_line,indent,inst)
     {var inst$0=caml_call1(insert_subsequences,inst);
      function _b_K_(b)
       {return buffer_tinstr(0,show_stack,1,new_line,b,indent,inst$0)}
      return caml_call1(Utils_Misc[22],_b_K_)}
    function render_tinstr(show_stack,indent,inst)
     {var inst$0=caml_call1(insert_subsequences,inst);
      function _b_J_(b)
       {return buffer_tinstr(1,show_stack,1,1,b,indent,inst$0)}
      return caml_call1(Utils_Misc[22],_b_J_)}
    function pretty_literal_f(literal,wrap,ppf)
     {function wrap$0(x)
       {return wrap
                ?caml_call3(Stdlib_format[123],ppf,_FK_,x)
                :caml_call1(x,ppf)}
      if(typeof literal === "number")
       return 0 === literal
               ?caml_call2(Stdlib_format[123],ppf,_FL_)
               :caml_call2(Stdlib_format[123],ppf,_FM_);
      else
       switch(literal[0])
        {case 0:
          var i=literal[1],_b_w_=caml_call1(Big_int[33],i);
          return caml_call3(Stdlib_format[123],ppf,_FN_,_b_w_);
         case 1:
          return literal[1]
                  ?caml_call2(Stdlib_format[123],ppf,_FO_)
                  :caml_call2(Stdlib_format[123],ppf,_FP_);
         case 2:
          var s=literal[1];return caml_call3(Stdlib_format[123],ppf,_FQ_,s);
         case 3:
          var s$0=literal[1],_b_x_=caml_call1(Utils_Misc[4][1],s$0);
          return caml_call3(Stdlib_format[123],ppf,_FR_,_b_x_);
         case 4:
          var r=literal[2],l=literal[1];
          return wrap$0
                  (function(ppf)
                    {var _b_D_=caml_call1(r,1),_b_E_=caml_call1(l,1);
                     return caml_call4(Stdlib_format[123],ppf,_FS_,_b_E_,_b_D_)});
         case 5:
          var x=literal[1];
          return wrap$0
                  (function(ppf)
                    {var _b_C_=caml_call1(x,1);
                     return caml_call3(Stdlib_format[123],ppf,_FT_,_b_C_)});
         case 6:
          var x$0=literal[1];
          return wrap$0
                  (function(ppf)
                    {var _b_B_=caml_call1(x$0,1);
                     return caml_call3(Stdlib_format[123],ppf,_FU_,_b_B_)});
         case 7:
          var x$1=literal[1];
          return wrap$0
                  (function(ppf)
                    {var _b_A_=caml_call1(x$1,1);
                     return caml_call3(Stdlib_format[123],ppf,_FV_,_b_A_)});
         case 8:
          var
           xs=literal[1],
           f=
            function(i,x)
             {var
               x$0=caml_call1(x,0),
               s=caml_call2(Stdlib_format[127],_FW_,x$0);
              if(0 !== i && ! caml_string_equal(s,cst$100))
               return caml_call3(Stdlib_format[123],ppf,_FY_,s);
              return caml_call3(Stdlib_format[123],ppf,_FX_,s)};
          caml_call2(Stdlib_format[123],ppf,_FZ_);
          caml_call2(Utils_List[19],f,xs);
          return caml_call2(Stdlib_format[123],ppf,_F0_);
         case 9:
          var match=literal[1],v=match[2],k=match[1];
          return wrap$0
                  (function(ppf)
                    {var _b_y_=caml_call1(v,1),_b_z_=caml_call1(k,1);
                     return caml_call4(Stdlib_format[123],ppf,_F1_,_b_z_,_b_y_)});
         case 10:var i$0=literal[1];return caml_call2(i$0,1,ppf);
         default:
          var
           xs$0=literal[1],
           f$0=
            function(i,param)
             {var v=param[2],k=param[1];
              if(0 === i)
               {var _b_F_=caml_call1(v,1),_b_G_=caml_call1(k,1);
                return caml_call4(Stdlib_format[123],ppf,_F2_,_b_G_,_b_F_)}
              var _b_H_=caml_call1(v,1),_b_I_=caml_call1(k,1);
              return caml_call4(Stdlib_format[123],ppf,_F3_,_b_I_,_b_H_)};
          caml_call2(Stdlib_format[123],ppf,_F4_);
          caml_call2(Utils_List[19],f$0,xs$0);
          return caml_call2(Stdlib_format[123],ppf,_F5_)}}
    function pretty_instr_f(i,wrap,ppf)
     {function name(ppf)
       {var _b_v_=name_of_instr_exn(i);
        return caml_call3(Stdlib_format[123],ppf,_F6_,_b_v_)}
      function wrap$0(x)
       {return wrap
                ?caml_call3(Stdlib_format[123],ppf,_F7_,x)
                :caml_call1(x,ppf)}
      var switch$0=0;
      if(typeof i === "number")
       switch$0 = 1;
      else
       switch(i[0])
        {case 0:
          var _b97_=i[1],switch$1=0;
          if(typeof _b97_ !== "number")
           switch(_b97_[0])
            {case 0:break;
             case 1:var n=_b97_[1];switch$1 = 1;break;
             case 5:
             case 6:
              var v=_b97_[2],k=_b97_[1];
              return wrap$0
                      (function(ppf)
                        {var
                          _b_t_=string_of_mtype(0,0,_Ga_,0,0,v),
                          _b_u_=string_of_mtype(0,0,_Gb_,0,0,k);
                         return caml_call5
                                 (Stdlib_format[123],ppf,_Gc_,name,_b_u_,_b_t_)});
             default:var t=_b97_[1];switch$0 = 2;switch$1 = 1}
          if(! switch$1)switch$0 = 1;
          break;
         case 1:
          var _b98_=i[1],switch$2=0;
          if(typeof _b98_ === "number")
           {switch$0 = 1;switch$2 = 1}
          else
           switch(_b98_[0])
            {case 2:
              var _b9__=_b98_[1];
              if(_b9__)
               {var t$0=_b98_[2],ep=_b9__[1];
                return wrap$0
                        (function(ppf)
                          {var _b_s_=string_of_mtype(0,0,_Gd_,0,0,t$0);
                           return caml_call4(Stdlib_format[123],ppf,_Ge_,ep,_b_s_)})}
              var _b99_=_b98_[2];
              break;
             case 3:var _b99_=_b98_[1];break;
             case 4:var n=_b98_[1];switch$2 = 1;break;
             case 5:var t=_b98_[1];switch$0 = 2;switch$2 = 1;break;
             case 6:
              var
               a=_b98_[1],
               _b9$_=caml_call1(Stdlib[28],cst$101),
               a$0=caml_call3(Utils_Option[12],cst$102,_b9$_,a);
              return wrap$0
                      (function(ppf)
                        {return caml_call4(Stdlib_format[123],ppf,_Gf_,name,a$0)});
             default:var _b99_=_b98_[3]}
          if(! switch$2){var t=_b99_;switch$0 = 2}
          break;
         case 3:
          var _b_a_=i[1],switch$3=0;
          if(typeof _b_a_ === "number" || 0 === _b_a_[0])
           switch$3 = 1;
          else
           var n=_b_a_[1];
          if(switch$3)switch$0 = 1;
          break;
         case 5:
          var msg=i[1];
          return wrap$0
                  (function(ppf)
                    {return caml_call3(Stdlib_format[123],ppf,_Gg_,msg)});
         case 6:return wrap$0(function(ppf){return 0});
         case 9:
          var i$1=i[2],n$0=i[1];
          return wrap$0
                  (function(ppf)
                    {var _b_r_=caml_call1(i$1,1);
                     return caml_call4(Stdlib_format[123],ppf,_Gi_,n$0,_b_r_)});
         case 15:
          var _b_c_=i[1];
          if(1 === _b_c_)
           return wrap$0
                   (function(ppf)
                     {return caml_call3(Stdlib_format[123],ppf,_Gj_,name)});
          var n=_b_c_;
          break;
         case 22:
          var l=i[2],t$1=i[1];
          return wrap$0
                  (function(ppf)
                    {var
                      t=string_of_mtype(0,0,_Gl_,0,0,t$1),
                      l$0=caml_call1(l,1);
                     return caml_call4(Stdlib_format[123],ppf,_Gm_,t,l$0)});
         case 23:
          var _b_d_=i[1];
          if(_b_d_)
           {var xs=_b_d_[2],x=_b_d_[1],_b_e_=caml_call1(x,0);
            caml_call3(Stdlib_format[123],ppf,_Gn_,_b_e_);
            var
             _b_f_=
              function(x)
               {var _b_q_=caml_call1(x,0);
                return caml_call3(Stdlib_format[123],ppf,_Go_,_b_q_)};
            caml_call2(Utils_List[18],_b_f_,xs);
            return caml_call2(Stdlib_format[123],ppf,_Gp_)}
          return caml_call2(Stdlib_format[123],ppf,_Gq_);
         case 24:
          var _b_g_=i[1];
          if(_b_g_ && _b_g_[1])
           {var _b_h_=_b_g_[2];
            if(_b_h_ && _b_h_[1] && ! _b_h_[2])
             return wrap$0
                     (function(ppf)
                       {return caml_call3(Stdlib_format[123],ppf,_Gs_,name)})}
          return wrap$0
                  (function(ppf)
                    {var _b_p_=caml_call1(unpair_size,_b_g_);
                     return caml_call4(Stdlib_format[123],ppf,_Gr_,name,_b_p_)});
         case 25:
          var n$1=i[1];
          return wrap$0
                  (function(ppf)
                    {return caml_call4(Stdlib_format[123],ppf,_Gt_,name,n$1)});
         case 28:
          var c=i[3],t2=i[2],t1=i[1];
          return wrap$0
                  (function(ppf)
                    {var
                      t1$0=string_of_mtype(0,0,_Gu_,0,0,t1),
                      t2$0=string_of_mtype(0,0,_Gv_,0,0,t2),
                      _b_o_=caml_call1(c,1);
                     return caml_call5
                             (Stdlib_format[123],ppf,_Gw_,t1$0,t2$0,_b_o_)});
         case 29:
          var
           code=i[3],
           tstorage=i[2],
           match=i[1],
           annot=match[2],
           tparameter=match[1];
          return wrap$0
                  (function(ppf)
                    {var
                      _b_l_=caml_call1(code,1),
                      _b_m_=string_of_mtype(0,0,_Gx_,0,0,tstorage),
                      _b_n_=string_of_tparameter(0,[0,tparameter,annot]);
                     return caml_call5
                             (Stdlib_format[123],ppf,_Gy_,_b_n_,_b_m_,_b_l_)});
         case 14:
         case 16:
         case 17:var n=i[1];break;
         case 18:
         case 19:
         case 20:
         case 21:
          var i2=i[2],i1=i[1];
          return wrap$0
                  (function(ppf)
                    {var _b_j_=caml_call1(i2,1),_b_k_=caml_call1(i1,1);
                     return caml_call5
                             (Stdlib_format[123],ppf,_Gk_,name,_b_k_,_b_j_)});
         case 8:
         case 10:
         case 11:
         case 12:
         case 13:
          var i$0=i[1],_b_b_=caml_call1(i$0,1);
          return caml_call4(Stdlib_format[123],ppf,_Gh_,name,_b_b_);
         default:switch$0 = 1}
      switch(switch$0)
       {case 0:
         return wrap$0
                 (function(ppf)
                   {return caml_call4(Stdlib_format[123],ppf,_F9_,name,n)});
        case 2:
         return wrap$0
                 (function(ppf)
                   {var _b_i_=string_of_mtype(0,0,_F__,0,0,t);
                    return caml_call4(Stdlib_format[123],ppf,_F$_,name,_b_i_)});
        default:
         return wrap$0
                 (function(ppf)
                   {return caml_call3(Stdlib_format[123],ppf,_F8_,name)})}}
    var _Gz_=1;
    function _GA_(_b96_,_b95_){return _b96_ + _b95_ | 0}
    function _GB_(_b94_,_b93_){return _b94_ + _b93_ | 0}
    function f_instr$0(_b92_){return fold_instr_f(_GB_,_GA_,_Gz_,_b92_)}
    var _GC_=1;
    function _GD_(_b91_,_b90_){return _b91_ + _b90_ | 0}
    function _GE_(_b9Z_,_b9Y_){return _b9Z_ + _b9Y_ | 0}
    function f_literal$0(_b9X_){return fold_literal_f(_GE_,_GD_,_GC_,_b9X_)}
    var
     match$1=cata$1([0,f_instr$0,f_literal$0]),
     pretty_alg=[0,pretty_instr_f,pretty_literal_f],
     _GF_=match$1[1],
     pretty_literal=cata_literal(pretty_alg);
    function string_of_literal(m)
     {var _b9W_=caml_call2(pretty_literal,m,1);
      return caml_call2(Stdlib_format[127],_GG_,_b9W_)}
    function mtype(x){return mtype_annotated(x)[1]}
    function mtype_annotated(p)
     {if(3 === p[0])
       {var
         arguments$0=p[3],
         annotations=p[2],
         name=p[1],
         switch$0=caml_string_compare(name,cst_map),
         switch$3=0;
        if(0 <= switch$0)
         {if(0 < switch$0)
           {var
             switch$1=caml_string_compare(name,cst_sapling_state),
             switch$4=0;
            if(0 <= switch$1)
             if(0 < switch$1)
              if(caml_string_notequal(name,cst_sapling_transaction))
               if(caml_string_notequal(name,cst_set))
                if(caml_string_notequal(name,cst_signature))
                 if(caml_string_notequal(name,cst_string$1))
                  if(caml_string_notequal(name,cst_ticket))
                   if(caml_string_notequal(name,cst_timestamp))
                    if(caml_string_notequal(name,cst_unit$0) || arguments$0)
                     switch$4 = 1;
                    else
                     var mt_unit=_ze_;
                   else
                    if(arguments$0)switch$4 = 1;else var mt_unit=_zm_;
                  else
                   if(arguments$0 && ! arguments$0[2])
                    var t=arguments$0[1],mt_unit=caml_call1(_zD_,mtype(t));
                   else
                    switch$4 = 1;
                 else
                  if(arguments$0)switch$4 = 1;else var mt_unit=_zj_;
                else
                 if(arguments$0)switch$4 = 1;else var mt_unit=_zr_;
               else
                if(arguments$0 && ! arguments$0[2])
                 var t$0=arguments$0[1],mt_unit=caml_call1(_zB_,mtype(t$0));
                else
                 switch$4 = 1;
              else
               if(arguments$0)
                {var _b9F_=arguments$0[1];
                 if(0 === _b9F_[0] && ! arguments$0[2])
                  var
                   memo=_b9F_[1],
                   mt_unit=caml_call1(_zu_,caml_int_of_string(memo));
                 else
                  switch$4 = 1}
               else
                switch$4 = 1;
             else
              if(arguments$0)
               {var _b9G_=arguments$0[1];
                if(0 === _b9G_[0] && ! arguments$0[2])
                 var
                  memo$0=_b9G_[1],
                  mt_unit=caml_call1(_zt_,caml_int_of_string(memo$0));
                else
                 switch$4 = 1}
              else
               switch$4 = 1;
            else
             if(caml_string_notequal(name,cst_mutez))
              if(caml_string_notequal(name,cst_nat))
               if(caml_string_notequal(name,cst_never))
                if(caml_string_notequal(name,cst_operation))
                 if(caml_string_notequal(name,cst_option))
                  if(caml_string_notequal(name,cst_or))
                   if(caml_string_notequal(name,cst_pair))
                    switch$4 = 1;
                   else
                    {var switch$5=0;
                     if(arguments$0)
                      {var _b9H_=arguments$0[2];
                       if(_b9H_ && ! _b9H_[2])
                        {var
                          t2=_b9H_[1],
                          t1=arguments$0[1],
                          match$1=mtype_annotated(t1),
                          annot_fst=match$1[2],
                          fst=match$1[1],
                          match$2=mtype_annotated(t2),
                          annot_snd=match$2[2],
                          snd=match$2[1],
                          mt_unit=caml_call4(_zH_,annot_fst,annot_snd,fst,snd);
                         switch$5 = 1}}
                     if(! switch$5)
                      {var
                        match=
                         caml_call2(Utils_List[22],mtype_annotated,arguments$0);
                       if(! match)throw [0,Assert_failure,_GI_];
                       var
                        rest=match[2],
                        match$0=match[1],
                        annot=match$0[2],
                        last=match$0[1],
                        _b9I_=[0,last,annot],
                        _b9J_=
                         function(param,_b9V_)
                          {var
                            annot_fst=_b9V_[2],
                            fst=_b9V_[1],
                            annot_snd=param[2],
                            snd=param[1];
                           return [0,caml_call4(_zH_,annot_fst,annot_snd,fst,snd),0]},
                        mt_unit=caml_call3(Utils_List[25],_b9J_,_b9I_,rest)[1]}}
                  else
                   if(arguments$0)
                    {var _b9K_=arguments$0[2];
                     if(_b9K_ && ! _b9K_[2])
                      var
                       t2$0=_b9K_[1],
                       t1$0=arguments$0[1],
                       match$3=mtype_annotated(t1$0),
                       annot_left=match$3[2],
                       left=match$3[1],
                       match$4=mtype_annotated(t2$0),
                       annot_right=match$4[2],
                       right=match$4[1],
                       mt_unit=caml_call4(_zI_,annot_left,annot_right,left,right);
                     else
                      switch$4 = 1}
                   else
                    switch$4 = 1;
                 else
                  if(arguments$0 && ! arguments$0[2])
                   var t$1=arguments$0[1],mt_unit=caml_call1(_zz_,mtype(t$1));
                  else
                   switch$4 = 1;
                else
                 if(arguments$0)switch$4 = 1;else var mt_unit=_zs_;
               else
                if(arguments$0)switch$4 = 1;else var mt_unit=_zv_;
              else
               if(arguments$0)switch$4 = 1;else var mt_unit=_zg_;
             else
              if(arguments$0)switch$4 = 1;else var mt_unit=_zi_;
            if(! switch$4){var mt_unit$0=mt_unit;switch$3 = 1}}
          else
           if(arguments$0)
            {var _b9L_=arguments$0[2];
             if(_b9L_ && ! _b9L_[2])
              {var
                t2$1=_b9L_[1],
                t1$1=arguments$0[1],
                _b9M_=mtype(t2$1),
                mt_unit$0=caml_call2(_zF_,mtype(t1$1),_b9M_);
               switch$3 = 1}}}
        else
         {var switch$2=caml_string_compare(name,cst_bytes$1),switch$6=0;
          if(0 <= switch$2)
           if(0 < switch$2)
            if(caml_string_notequal(name,cst_chain_id$0))
             if(caml_string_notequal(name,cst_contract$2))
              if(caml_string_notequal(name,cst_int$1))
               if(caml_string_notequal(name,cst_key$1))
                if(caml_string_notequal(name,cst_key_hash))
                 if(caml_string_notequal(name,cst_lambda))
                  if
                   (caml_string_notequal(name,cst_list)
                    ||
                    !
                    (arguments$0 && ! arguments$0[2]))
                   switch$6 = 1;
                  else
                   var t$2=arguments$0[1],_b9N_=caml_call1(_zA_,mtype(t$2));
                 else
                  if(arguments$0)
                   {var _b9O_=arguments$0[2];
                    if(_b9O_ && ! _b9O_[2])
                     var
                      t2$2=_b9O_[1],
                      t1$2=arguments$0[1],
                      _b9P_=mtype(t2$2),
                      _b9N_=caml_call2(_zE_,mtype(t1$2),_b9P_);
                    else
                     switch$6 = 1}
                  else
                   switch$6 = 1;
                else
                 if(arguments$0)switch$6 = 1;else var _b9N_=_zp_;
               else
                if(arguments$0)switch$6 = 1;else var _b9N_=_zo_;
              else
               if(arguments$0)switch$6 = 1;else var _b9N_=_zh_;
             else
              if(arguments$0 && ! arguments$0[2])
               var t$3=arguments$0[1],_b9N_=caml_call1(_zC_,mtype(t$3));
              else
               switch$6 = 1;
            else
             if(arguments$0)switch$6 = 1;else var _b9N_=_zl_;
           else
            if(arguments$0)switch$6 = 1;else var _b9N_=_zk_;
          else
           if(caml_string_notequal(name,cst_address$2))
            if(caml_string_notequal(name,cst_baker_hash))
             if(caml_string_notequal(name,cst_big_map))
              if(caml_string_notequal(name,cst_bls12_381_fr))
               if(caml_string_notequal(name,cst_bls12_381_g1))
                if(caml_string_notequal(name,cst_bls12_381_g2))
                 if(caml_string_notequal(name,cst_bool) || arguments$0)
                  switch$6 = 1;
                 else
                  var _b9N_=_zf_;
                else
                 if(arguments$0)switch$6 = 1;else var _b9N_=_zx_;
               else
                if(arguments$0)switch$6 = 1;else var _b9N_=_zw_;
              else
               if(arguments$0)switch$6 = 1;else var _b9N_=_zy_;
             else
              if(arguments$0)
               {var _b9Q_=arguments$0[2];
                if(_b9Q_ && ! _b9Q_[2])
                 var
                  t2$3=_b9Q_[1],
                  t1$3=arguments$0[1],
                  _b9R_=mtype(t2$3),
                  _b9N_=caml_call2(_zG_,mtype(t1$3),_b9R_);
                else
                 switch$6 = 1}
              else
               switch$6 = 1;
            else
             if(arguments$0)switch$6 = 1;else var _b9N_=_zq_;
           else
            if(arguments$0)switch$6 = 1;else var _b9N_=_zn_;
          if(! switch$6){var mt_unit$0=_b9N_;switch$3 = 1}}
        if(switch$3)
         var mt=mt_unit$0;
        else
         var
          _b9C_=pretty(cst$104,p),
          mt=caml_call3(_za_,0,0,[3,caml_call2(Stdlib_printf[4],_GH_,_b9C_)]);
        var
         _b9D_=[0,mt,0],
         _b9E_=
          function(param,a)
           {var fa=param[2],mt=param[1];
            function update(param)
             {return param
                      ?caml_call1(Stdlib[2],cst_duplicate_annotation)
                      :[0,
                        caml_call3
                         (Utils_String[4],a,1,caml_ml_string_length(a) - 1 | 0)]}
            var match=caml_string_get(a,0);
            if(37 === match)return [0,mt,update(fa)];
            if(58 === match)
             {var _b9S_=mt[3],_b9T_=update(mt[2]);
              return [0,[0,mt[1],_b9T_,_b9S_],fa]}
            if(64 === match)
             {var _b9U_=update(mt[3]);return [0,[0,mt[1],mt[2],_b9U_],fa]}
            return caml_call1(Stdlib[2],cst_cannot_parse_annotation)};
        return caml_call3(Utils_List[25],_b9E_,_b9D_,annotations)}
      var
       _b9A_=pretty(cst$103,p),
       _b9B_=caml_call2(Stdlib[28],cst_Parse_type_error,_b9A_);
      return caml_call1(Stdlib[2],_b9B_)}
    function literal(x)
     {switch(x[0])
       {case 0:var i=x[1];return int$3(caml_call1(Big_int[34],i));
        case 1:var s=x[1];return string$2(s);
        case 2:var s$0=x[1];return bytes$2(s$0);
        case 3:
         var arguments$0=x[3],name=x[1];
         if(caml_string_notequal(name,cst_Elt$0))
          {if(caml_string_notequal(name,cst_False$1))
            {if(caml_string_notequal(name,cst_Left$3))
              {if(caml_string_notequal(name,cst_None$41))
                {if(! caml_string_notequal(name,cst_Pair$0))
                  {var match=caml_call1(Utils_List[12],arguments$0);
                   if(match)
                    {var
                      l=match[2],
                      a=match[1],
                      _b9w_=literal(a),
                      _b9x_=function(x,y){return pair$0(literal(y),x)};
                     return caml_call3(Utils_List[25],_b9x_,_b9w_,l)}
                   throw [0,Assert_failure,_GJ_]}
                 if(caml_string_notequal(name,cst_Right$3))
                  {if(caml_string_notequal(name,cst_Some$39))
                    {if(caml_string_notequal(name,cst_True$1))
                      {if
                        (! caml_string_notequal(name,cst_Unit$4) && ! arguments$0)
                        return unit$1}
                     else
                      if(! arguments$0)return bool$1(1)}
                   else
                    if(arguments$0 && ! arguments$0[2])
                     {var x$0=arguments$0[1];return some(literal(x$0))}}
                 else
                  if(arguments$0 && ! arguments$0[2])
                   {var x$1=arguments$0[1];return right$0(literal(x$1))}}
               else
                if(! arguments$0)return none}
             else
              if(arguments$0 && ! arguments$0[2])
               {var x$2=arguments$0[1];return left$0(literal(x$2))}}
           else
            if(! arguments$0)return bool$1(0)}
         else
          if(arguments$0)
           {var _b9y_=arguments$0[2];
            if(_b9y_ && ! _b9y_[2])
             {var v=_b9y_[1],k=arguments$0[1],_b9z_=literal(v);
              return f$1(literal(k),_b9z_)}}
         return instr(instruction(x));
        default:var xs=x[1];return seq(caml_call2(Utils_List[20],literal,xs))}}
    function instruction(x)
     {function err(param)
       {var _b9v_=caml_call1(show_micheline,x);
        return [5,caml_call2(Stdlib_printf[4],_GK_,_b9v_)]}
      function cmp(instr){return [23,[0,_GL_,[0,[0,instr],0]]]}
      var fail=[23,[0,[0,[22,_ze_,unit$1]],_GM_]];
      function if_op(instr,x,y)
       {var _b9u_=instruction(y);
        return [23,[0,[0,instr],[0,[0,[18,instruction(x),_b9u_]],0]]]}
      function ifcmp_op(instr,x,y)
       {var _b9t_=instruction(y);
        return [23,[0,_GN_,[0,[0,instr],[0,[0,[18,instruction(x),_b9t_]],0]]]]}
      function assert_op(instr)
       {return [23,[0,[0,instr],[0,[0,[18,_GO_,[0,fail]]],0]]]}
      function assert_cmp_op(instr)
       {return [23,[0,_GQ_,[0,[0,instr],[0,[0,[18,_GP_,[0,fail]]],0]]]]}
      switch(x[0])
       {case 3:
         var
          arguments$0=x[3],
          annotations=x[2],
          name=x[1],
          switch$3=caml_string_compare(name,cst_IMPLICIT_ACCOUNT$0),
          switch$21=0;
         if(0 <= switch$3)
          {if(0 < switch$3)
            {var switch$4=caml_string_compare(name,cst_RENAME$0),switch$22=0;
             if(0 <= switch$4)
              if(0 < switch$4)
               {var
                 switch$5=caml_string_compare(name,cst_SOURCE$0),
                 switch$23=0;
                if(0 <= switch$5)
                 if(0 < switch$5)
                  {var
                    switch$6=caml_string_compare(name,cst_TRANSFER_TOKENS$0),
                    switch$24=0;
                   if(0 <= switch$6)
                    if(0 < switch$6)
                     if(caml_string_notequal(name,cst_UNIT$0))
                      if(caml_string_notequal(name,cst_UNPAIR$1))
                       if(caml_string_notequal(name,cst_UPDATE$1))
                        if(caml_string_notequal(name,cst_VOTING_POWER$0))
                         if(caml_string_notequal(name,cst_XOR$0) || arguments$0)
                          {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                         else
                          var _b8z_=_Hg_;
                        else
                         if(arguments$0)
                          {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                         else
                          var _b8z_=_Hh_;
                       else
                        if(arguments$0)
                         {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                        else
                         var _b8z_=_Hi_;
                      else
                       if(arguments$0)
                        {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                       else
                        var _b8z_=_Hj_;
                     else
                      if(arguments$0)
                       {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                      else
                       var _b8z_=_Hk_;
                    else
                     if(arguments$0)
                      {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                     else
                      var _b8z_=_Hl_;
                   else
                    if(caml_string_notequal(name,cst_SPLIT_TICKET$0))
                     if(caml_string_notequal(name,cst_SUB$0))
                      if(caml_string_notequal(name,cst_SWAP$0))
                       if(caml_string_notequal(name,cst_TICKET$0))
                        if
                         (caml_string_notequal(name,cst_TOTAL_VOTING_POWER$0)
                          ||
                          arguments$0)
                         {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                        else
                         var _b8z_=_Hm_;
                       else
                        if(arguments$0)
                         {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                        else
                         var _b8z_=_Hn_;
                      else
                       if(arguments$0)
                        {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                       else
                        var _b8z_=1;
                     else
                      if(arguments$0)
                       {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                      else
                       var _b8z_=_Ho_;
                    else
                     if(arguments$0)
                      {switch$22 = 1;switch$23 = 1;switch$24 = 1}
                     else
                      var _b8z_=_Hp_;
                   if(! switch$24)var _b8A_=_b8z_}
                 else
                  if(arguments$0)
                   {switch$22 = 1;switch$23 = 1}
                  else
                   var _b8A_=_Hq_;
                else
                 {var
                   switch$10=caml_string_compare(name,cst_SHA256$0),
                   switch$25=0;
                  if(0 <= switch$10)
                   if(0 < switch$10)
                    if(caml_string_notequal(name,cst_SHA3$0))
                     if(caml_string_notequal(name,cst_SHA512$0))
                      if(caml_string_notequal(name,cst_SIZE$0))
                       if(caml_string_notequal(name,cst_SLICE$0))
                        if(caml_string_notequal(name,cst_SOME$0) || arguments$0)
                         {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                        else
                         var _b8D_=_Hr_;
                       else
                        if(arguments$0)
                         {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                        else
                         var _b8D_=_Hs_;
                      else
                       if(arguments$0)
                        {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                       else
                        var _b8D_=_Ht_;
                     else
                      if(arguments$0)
                       {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                      else
                       var _b8D_=_Hu_;
                    else
                     if(arguments$0)
                      {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                     else
                      var _b8D_=_Hv_;
                   else
                    if(arguments$0)
                     {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                    else
                     var _b8D_=_Hw_;
                  else
                   if(caml_string_notequal(name,cst_SAPLING_VERIFY_UPDATE$0))
                    if(caml_string_notequal(name,cst_SELF$0))
                     if(caml_string_notequal(name,cst_SELF_ADDRESS$0))
                      if(caml_string_notequal(name,cst_SENDER$0))
                       if
                        (caml_string_notequal(name,cst_SET_DELEGATE$0)
                         ||
                         arguments$0)
                        {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                       else
                        var _b8D_=_Hx_;
                      else
                       if(arguments$0)
                        {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                       else
                        var _b8D_=_Hy_;
                     else
                      if(arguments$0)
                       {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                      else
                       var _b8D_=_Hz_;
                    else
                     if(arguments$0)
                      {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                     else
                      {if(annotations)
                        var
                         entry_point$1=annotations[1],
                         entry_point$2=
                          caml_call2(Base_String[98],entry_point$1,cst$106);
                       else
                        var entry_point$2=0;
                       var _b8D_=[0,[0,entry_point$2]]}
                   else
                    if(arguments$0)
                     {switch$22 = 1;switch$23 = 1;switch$25 = 1}
                    else
                     var _b8D_=_HA_;
                  if(! switch$25)var _b8A_=_b8D_}
                if(! switch$23)var _b8B_=_b8A_}
              else
               if(arguments$0)
                switch$22 = 1;
               else
                {if(annotations)
                  {if(annotations[2])throw [0,Assert_failure,_HB_];
                   var
                    a=annotations[1],
                    a$0=caml_call2(Base_String[98],a,cst$107)}
                 else
                  var a$0=0;
                 var _b8B_=[1,[6,a$0]]}
             else
              {var switch$11=caml_string_compare(name,cst_MUL$0),switch$26=0;
               if(0 <= switch$11)
                if(0 < switch$11)
                 {var
                   switch$12=caml_string_compare(name,cst_OR$0),
                   switch$27=0;
                  if(0 <= switch$12)
                   if(0 < switch$12)
                    if(caml_string_notequal(name,cst_PACK$0))
                     if(caml_string_notequal(name,cst_PAIR$2))
                      if(caml_string_notequal(name,cst_PAIRING_CHECK$0))
                       if(caml_string_notequal(name,cst_PUSH$0))
                        if
                         (caml_string_notequal(name,cst_READ_TICKET$0)
                          ||
                          arguments$0)
                         {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                        else
                         var _b8E_=_HC_;
                       else
                        if(arguments$0)
                         {var _b8G_=arguments$0[2];
                          if(_b8G_)
                           if(_b8G_[2])
                            {switch$21 = 1;switch$22 = 1;switch$26 = 1;switch$27 = 1}
                           else
                            var
                             l$1=_b8G_[1],
                             t$7=arguments$0[1],
                             _b8H_=literal(l$1),
                             _b8E_=[22,mtype(t$7),_b8H_];
                          else
                           {switch$22 = 1;switch$26 = 1;switch$27 = 1}}
                        else
                         {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                      else
                       if(arguments$0)
                        {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                       else
                        var _b8E_=_HD_;
                     else
                      if(arguments$0)
                       {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                      else
                       var _b8E_=_HE_;
                    else
                     if(arguments$0)
                      {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                     else
                      var _b8E_=_HF_;
                   else
                    if(arguments$0)
                     {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                    else
                     var _b8E_=_HG_;
                  else
                   if(caml_string_notequal(name,cst_NEG$0))
                    if(caml_string_notequal(name,cst_NEQ$0))
                     if(caml_string_notequal(name,cst_NEVER$0))
                      if(caml_string_notequal(name,cst_NOT$0))
                       if(caml_string_notequal(name,cst_NOW$0) || arguments$0)
                        {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                       else
                        var _b8E_=_HH_;
                      else
                       if(arguments$0)
                        {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                       else
                        var _b8E_=_HI_;
                     else
                      if(arguments$0)
                       {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                      else
                       var _b8E_=_HJ_;
                    else
                     if(arguments$0)
                      {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                     else
                      var _b8E_=_HK_;
                   else
                    if(arguments$0)
                     {switch$22 = 1;switch$26 = 1;switch$27 = 1}
                    else
                     var _b8E_=_HL_;
                  if(! switch$27)var _b8F_=_b8E_}
                else
                 if(arguments$0)
                  {switch$22 = 1;switch$26 = 1}
                 else
                  var _b8F_=_HM_;
               else
                {var switch$13=caml_string_compare(name,cst_LE$0),switch$28=0;
                 if(0 <= switch$13)
                  if(0 < switch$13)
                   if(caml_string_notequal(name,cst_LEVEL$0))
                    if(caml_string_notequal(name,cst_LSL$0))
                     if(caml_string_notequal(name,cst_LSR$0))
                      if(caml_string_notequal(name,cst_LT$0))
                       if(caml_string_notequal(name,cst_MEM$0) || arguments$0)
                        {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                       else
                        var _b8I_=_HN_;
                      else
                       if(arguments$0)
                        {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                       else
                        var _b8I_=_HO_;
                     else
                      if(arguments$0)
                       {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                      else
                       var _b8I_=_HP_;
                    else
                     if(arguments$0)
                      {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                     else
                      var _b8I_=_HQ_;
                   else
                    if(arguments$0)
                     {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                    else
                     var _b8I_=3;
                  else
                   if(arguments$0)
                    {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                   else
                    var _b8I_=_HR_;
                 else
                  if(caml_string_notequal(name,cst_INT$0))
                   if(caml_string_notequal(name,cst_ISNAT$0))
                    if(caml_string_notequal(name,cst_JOIN_TICKETS$0))
                     if(caml_string_notequal(name,cst_KECCAK$0))
                      if(caml_string_notequal(name,cst_LAMBDA$1) || ! arguments$0)
                       {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                      else
                       {var _b8J_=arguments$0[2];
                        if(_b8J_)
                         {var _b8K_=_b8J_[2];
                          if(_b8K_ && ! _b8K_[2])
                           var
                            x$8=_b8K_[1],
                            u=_b8J_[1],
                            t$8=arguments$0[1],
                            _b8L_=instruction(x$8),
                            _b8M_=mtype(u),
                            _b8I_=[28,mtype(t$8),_b8M_,_b8L_];
                          else
                           {switch$21 = 1;switch$22 = 1;switch$26 = 1;switch$28 = 1}}
                        else
                         {switch$22 = 1;switch$26 = 1;switch$28 = 1}}
                     else
                      if(arguments$0)
                       {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                      else
                       var _b8I_=_HS_;
                    else
                     if(arguments$0)
                      {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                     else
                      var _b8I_=_HT_;
                   else
                    if(arguments$0)
                     {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                    else
                     var _b8I_=_HU_;
                  else
                   if(arguments$0)
                    {switch$22 = 1;switch$26 = 1;switch$28 = 1}
                   else
                    var _b8I_=_HV_;
                 if(! switch$28)var _b8F_=_b8I_}
               if(! switch$26)var _b8B_=_b8F_}
             if(! switch$22){var _b8C_=_b8B_;switch$21 = 2}}
           else
            if(! arguments$0){var _b8C_=_HW_;switch$21 = 2}}
         else
          {var switch$14=caml_string_compare(name,cst_FAILWITH$0),switch$29=0;
           if(0 <= switch$14)
            if(0 < switch$14)
             {var
               switch$15=caml_string_compare(name,cst_IFCMPNEQ),
               switch$30=0;
              if(0 <= switch$15)
               if(0 < switch$15)
                {var
                  switch$16=caml_string_compare(name,cst_IFNEQ),
                  switch$31=0;
                 if(0 <= switch$16)
                  if(0 < switch$16)
                   if(caml_string_notequal(name,cst_IF_CONS$2))
                    if(caml_string_notequal(name,cst_IF_LEFT$2))
                     if(caml_string_notequal(name,cst_IF_NONE$2))
                      if(caml_string_notequal(name,cst_IF_RIGHT))
                       if(caml_string_notequal(name,cst_IF_SOME) || ! arguments$0)
                        {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                       else
                        {var _b8N_=arguments$0[2];
                         if(_b8N_)
                          if(_b8N_[2])
                           {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                          else
                           var
                            y=_b8N_[1],
                            x$9=arguments$0[1],
                            _b8O_=instruction(x$9),
                            _b8P_=[20,instruction(y),_b8O_];
                         else
                          {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                      else
                       if(arguments$0)
                        {var _b8S_=arguments$0[2];
                         if(_b8S_)
                          if(_b8S_[2])
                           {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                          else
                           var
                            y$0=_b8S_[1],
                            x$10=arguments$0[1],
                            _b8T_=instruction(x$10),
                            _b8P_=[19,instruction(y$0),_b8T_];
                         else
                          {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                       else
                        {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                     else
                      if(arguments$0)
                       {var _b8U_=arguments$0[2];
                        if(_b8U_)
                         if(_b8U_[2])
                          {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                         else
                          var
                           y$1=_b8U_[1],
                           x$11=arguments$0[1],
                           _b8V_=instruction(y$1),
                           _b8P_=[20,instruction(x$11),_b8V_];
                        else
                         {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                      else
                       {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                    else
                     if(arguments$0)
                      {var _b8W_=arguments$0[2];
                       if(_b8W_)
                        if(_b8W_[2])
                         {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                        else
                         var
                          y$2=_b8W_[1],
                          x$12=arguments$0[1],
                          _b8X_=instruction(y$2),
                          _b8P_=[19,instruction(x$12),_b8X_];
                       else
                        {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                     else
                      {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                   else
                    if(arguments$0)
                     {var _b8Y_=arguments$0[2];
                      if(_b8Y_)
                       if(_b8Y_[2])
                        {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                       else
                        var
                         y$3=_b8Y_[1],
                         x$13=arguments$0[1],
                         _b8Z_=instruction(y$3),
                         _b8P_=[21,instruction(x$13),_b8Z_];
                      else
                       {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                    else
                     {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                  else
                   if(arguments$0)
                    {var _b80_=arguments$0[2];
                     if(_b80_)
                      if(_b80_[2])
                       {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                      else
                       var
                        y$4=_b80_[1],
                        x$14=arguments$0[1],
                        _b8P_=if_op(_HX_,x$14,y$4);
                     else
                      {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                   else
                    {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                 else
                  if(caml_string_notequal(name,cst_IFEQ))
                   if(caml_string_notequal(name,cst_IFGE))
                    if(caml_string_notequal(name,cst_IFGT))
                     if(caml_string_notequal(name,cst_IFLE))
                      if(caml_string_notequal(name,cst_IFLT) || ! arguments$0)
                       {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                      else
                       {var _b81_=arguments$0[2];
                        if(_b81_)
                         if(_b81_[2])
                          {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                         else
                          var
                           y$5=_b81_[1],
                           x$15=arguments$0[1],
                           _b8P_=if_op(_HY_,x$15,y$5);
                        else
                         {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                     else
                      if(arguments$0)
                       {var _b82_=arguments$0[2];
                        if(_b82_)
                         if(_b82_[2])
                          {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                         else
                          var
                           y$6=_b82_[1],
                           x$16=arguments$0[1],
                           _b8P_=if_op(_HZ_,x$16,y$6);
                        else
                         {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                      else
                       {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                    else
                     if(arguments$0)
                      {var _b83_=arguments$0[2];
                       if(_b83_)
                        if(_b83_[2])
                         {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                        else
                         var
                          y$7=_b83_[1],
                          x$17=arguments$0[1],
                          _b8P_=if_op(_H0_,x$17,y$7);
                       else
                        {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                     else
                      {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                   else
                    if(arguments$0)
                     {var _b84_=arguments$0[2];
                      if(_b84_)
                       if(_b84_[2])
                        {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                       else
                        var
                         y$8=_b84_[1],
                         x$18=arguments$0[1],
                         _b8P_=if_op(_H1_,x$18,y$8);
                      else
                       {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                    else
                     {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                  else
                   if(arguments$0)
                    {var _b85_=arguments$0[2];
                     if(_b85_)
                      if(_b85_[2])
                       {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$31 = 1}
                      else
                       var
                        y$9=_b85_[1],
                        x$19=arguments$0[1],
                        _b8P_=if_op(_H2_,x$19,y$9);
                     else
                      {switch$29 = 1;switch$30 = 1;switch$31 = 1}}
                   else
                    {switch$29 = 1;switch$30 = 1;switch$31 = 1}
                 if(! switch$31)var _b8Q_=_b8P_}
               else
                if(arguments$0)
                 {var _b86_=arguments$0[2];
                  if(_b86_)
                   if(_b86_[2])
                    {switch$21 = 1;switch$29 = 1;switch$30 = 1}
                   else
                    var
                     y$10=_b86_[1],
                     x$20=arguments$0[1],
                     _b8Q_=ifcmp_op(_H3_,x$20,y$10);
                  else
                   {switch$29 = 1;switch$30 = 1}}
                else
                 {switch$29 = 1;switch$30 = 1}
              else
               {var switch$17=caml_string_compare(name,cst_IF$2),switch$32=0;
                if(0 <= switch$17)
                 if(0 < switch$17)
                  if(caml_string_notequal(name,cst_IFCMPEQ))
                   if(caml_string_notequal(name,cst_IFCMPGE))
                    if(caml_string_notequal(name,cst_IFCMPGT))
                     if(caml_string_notequal(name,cst_IFCMPLE))
                      if(caml_string_notequal(name,cst_IFCMPLT) || ! arguments$0)
                       {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                      else
                       {var _b87_=arguments$0[2];
                        if(_b87_)
                         if(_b87_[2])
                          {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$32 = 1}
                         else
                          var
                           y$11=_b87_[1],
                           x$21=arguments$0[1],
                           _b88_=ifcmp_op(_H4_,x$21,y$11);
                        else
                         {switch$29 = 1;switch$30 = 1;switch$32 = 1}}
                     else
                      if(arguments$0)
                       {var _b89_=arguments$0[2];
                        if(_b89_)
                         if(_b89_[2])
                          {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$32 = 1}
                         else
                          var
                           y$12=_b89_[1],
                           x$22=arguments$0[1],
                           _b88_=ifcmp_op(_H5_,x$22,y$12);
                        else
                         {switch$29 = 1;switch$30 = 1;switch$32 = 1}}
                      else
                       {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                    else
                     if(arguments$0)
                      {var _b8__=arguments$0[2];
                       if(_b8__)
                        if(_b8__[2])
                         {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$32 = 1}
                        else
                         var
                          y$13=_b8__[1],
                          x$23=arguments$0[1],
                          _b88_=ifcmp_op(_H6_,x$23,y$13);
                       else
                        {switch$29 = 1;switch$30 = 1;switch$32 = 1}}
                     else
                      {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                   else
                    if(arguments$0)
                     {var _b8$_=arguments$0[2];
                      if(_b8$_)
                       if(_b8$_[2])
                        {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$32 = 1}
                       else
                        var
                         y$14=_b8$_[1],
                         x$24=arguments$0[1],
                         _b88_=ifcmp_op(_H7_,x$24,y$14);
                      else
                       {switch$29 = 1;switch$30 = 1;switch$32 = 1}}
                    else
                     {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                  else
                   if(arguments$0)
                    {var _b9a_=arguments$0[2];
                     if(_b9a_)
                      if(_b9a_[2])
                       {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$32 = 1}
                      else
                       var
                        y$15=_b9a_[1],
                        x$25=arguments$0[1],
                        _b88_=ifcmp_op(_H8_,x$25,y$15);
                     else
                      {switch$29 = 1;switch$30 = 1;switch$32 = 1}}
                   else
                    {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                 else
                  if(arguments$0)
                   {var _b9b_=arguments$0[2];
                    if(_b9b_)
                     if(_b9b_[2])
                      {switch$21 = 1;switch$29 = 1;switch$30 = 1;switch$32 = 1}
                     else
                      var
                       y$16=_b9b_[1],
                       x$26=arguments$0[1],
                       _b9c_=instruction(y$16),
                       _b88_=[18,instruction(x$26),_b9c_];
                    else
                     {switch$29 = 1;switch$30 = 1;switch$32 = 1}}
                  else
                   {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                else
                 if(caml_string_notequal(name,cst_GE$0))
                  if(caml_string_notequal(name,cst_GET$2))
                   if(caml_string_notequal(name,cst_GET_AND_UPDATE$0))
                    if(caml_string_notequal(name,cst_GT$0))
                     if(caml_string_notequal(name,cst_HASH_KEY$0) || arguments$0)
                      {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                     else
                      var _b88_=_H9_;
                    else
                     if(arguments$0)
                      {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                     else
                      var _b88_=_H__;
                   else
                    if(arguments$0)
                     {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                    else
                     var _b88_=_H$_;
                  else
                   if(arguments$0)
                    {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                   else
                    var _b88_=_Ia_;
                 else
                  if(arguments$0)
                   {switch$29 = 1;switch$30 = 1;switch$32 = 1}
                  else
                   var _b88_=_Ib_;
                if(! switch$32)var _b8Q_=_b88_}
              if(! switch$30)var _b8R_=_b8Q_}
            else
             if(arguments$0)switch$29 = 1;else var _b8R_=_Ic_;
           else
            {var
              switch$18=caml_string_compare(name,cst_COMPARE$0),
              switch$33=0;
             if(0 <= switch$18)
              if(0 < switch$18)
               {var
                 switch$19=caml_string_compare(name,cst_EDIV$0),
                 switch$34=0;
                if(0 <= switch$19)
                 if(0 < switch$19)
                  if(caml_string_notequal(name,cst_EMPTY_BIG_MAP$0))
                   if(caml_string_notequal(name,cst_EMPTY_MAP$0))
                    if(caml_string_notequal(name,cst_EMPTY_SET$0))
                     if(caml_string_notequal(name,cst_EQ$0))
                      if(caml_string_notequal(name,cst_EXEC$0) || arguments$0)
                       {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                      else
                       var _b9d_=_Id_;
                     else
                      if(arguments$0)
                       {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                      else
                       var _b9d_=_Ie_;
                    else
                     if(arguments$0)
                      if(arguments$0[2])
                       {switch$21 = 1;switch$29 = 1;switch$33 = 1;switch$34 = 1}
                      else
                       var
                        t$9=arguments$0[1],
                        _b9f_=set$1(0),
                        _b9d_=[22,caml_call1(_zB_,mtype(t$9)),_b9f_];
                     else
                      {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                   else
                    if(arguments$0)
                     {var _b9g_=arguments$0[2];
                      if(_b9g_)
                       if(_b9g_[2])
                        {switch$21 = 1;switch$29 = 1;switch$33 = 1;switch$34 = 1}
                       else
                        var
                         v=_b9g_[1],
                         k=arguments$0[1],
                         _b9h_=mk_map(0),
                         _b9i_=mtype(v),
                         _b9d_=[22,caml_call2(_zF_,mtype(k),_b9i_),_b9h_];
                      else
                       {switch$29 = 1;switch$33 = 1;switch$34 = 1}}
                    else
                     {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                  else
                   if(arguments$0)
                    {var _b9j_=arguments$0[2];
                     if(_b9j_)
                      if(_b9j_[2])
                       {switch$21 = 1;switch$29 = 1;switch$33 = 1;switch$34 = 1}
                      else
                       var
                        v$0=_b9j_[1],
                        k$0=arguments$0[1],
                        _b9k_=mtype(v$0),
                        _b9d_=[0,[6,mtype(k$0),_b9k_]];
                     else
                      {switch$29 = 1;switch$33 = 1;switch$34 = 1}}
                   else
                    {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                 else
                  if(arguments$0)
                   {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                  else
                   var _b9d_=_If_;
                else
                 if(caml_string_notequal(name,cst_CONCAT$2))
                  if(caml_string_notequal(name,cst_CONS$0))
                   if(caml_string_notequal(name,cst_DIP$2))
                    if(caml_string_notequal(name,cst_DROP$2))
                     if(caml_string_notequal(name,cst_DUP$2) || arguments$0)
                      {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                     else
                      var _b9d_=_Ig_;
                    else
                     if(arguments$0)
                      {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                     else
                      var _b9d_=0;
                   else
                    if(arguments$0)
                     {var _b9l_=arguments$0[1],switch$35=0;
                      if(arguments$0[2])
                       if(0 === _b9l_[0])
                        {var _b9m_=arguments$0[2];
                         if(_b9m_[2])
                          {switch$21 = 1;
                           switch$29 = 1;
                           switch$33 = 1;
                           switch$34 = 1;
                           switch$35 = 1}
                         else
                          var
                           x$27=_b9m_[1],
                           i$1=_b9l_[1],
                           _b9n_=instruction(x$27),
                           _b9o_=[9,caml_int_of_string(i$1),_b9n_]}
                       else
                        {switch$21 = 1;
                         switch$29 = 1;
                         switch$33 = 1;
                         switch$34 = 1;
                         switch$35 = 1}
                      else
                       var _b9o_=[8,instruction(_b9l_)];
                      if(! switch$35)var _b9d_=_b9o_}
                    else
                     {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                  else
                   if(arguments$0)
                    {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                   else
                    var _b9d_=_Ih_;
                 else
                  if(arguments$0)
                   {switch$29 = 1;switch$33 = 1;switch$34 = 1}
                  else
                   var _b9d_=2;
                if(! switch$34)var _b9e_=_b9d_}
              else
               if(arguments$0)
                {switch$29 = 1;switch$33 = 1}
               else
                var _b9e_=_Ii_;
             else
              {var
                switch$20=caml_string_compare(name,cst_BALANCE$0),
                switch$36=0;
               if(0 <= switch$20)
                if(0 < switch$20)
                 if(caml_string_notequal(name,cst_BLAKE2B$0))
                  if(caml_string_notequal(name,cst_CAR))
                   if(caml_string_notequal(name,cst_CDR))
                    if(caml_string_notequal(name,cst_CHAIN_ID$0))
                     if
                      (caml_string_notequal(name,cst_CHECK_SIGNATURE)
                       ||
                       arguments$0)
                      {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                     else
                      var _b9p_=_Ij_;
                    else
                     if(arguments$0)
                      {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                     else
                      var _b9p_=_Ik_;
                   else
                    if(arguments$0)
                     {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                    else
                     var _b9p_=_Il_;
                  else
                   if(arguments$0)
                    {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                   else
                    var _b9p_=_Im_;
                 else
                  if(arguments$0)
                   {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                  else
                   var _b9p_=_In_;
                else
                 if(arguments$0)
                  {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                 else
                  var _b9p_=_Io_;
               else
                if(caml_string_notequal(name,cst_ABS$0))
                 if(caml_string_notequal(name,cst_ADD$0))
                  if(caml_string_notequal(name,cst_ADDRESS$0))
                   if(caml_string_notequal(name,cst_AMOUNT$0))
                    if(caml_string_notequal(name,cst_AND$0))
                     if(caml_string_notequal(name,cst_APPLY$0) || arguments$0)
                      {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                     else
                      var _b9p_=_Ip_;
                    else
                     if(arguments$0)
                      {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                     else
                      var _b9p_=_Iq_;
                   else
                    if(arguments$0)
                     {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                    else
                     var _b9p_=_Ir_;
                  else
                   if(arguments$0)
                    {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                   else
                    var _b9p_=_Is_;
                 else
                  if(arguments$0)
                   {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                  else
                   var _b9p_=_It_;
                else
                 if(arguments$0)
                  {switch$29 = 1;switch$33 = 1;switch$36 = 1}
                 else
                  var _b9p_=_Iu_;
               if(! switch$36)var _b9e_=_b9p_}
             if(! switch$33)var _b8R_=_b9e_}
           if(! switch$29){var _b8C_=_b8R_;switch$21 = 2}}
         var switch$37=0;
         switch(switch$21)
          {case 2:var _b78_=_b8C_;switch$37 = 1;break;
           case 0:
            if(arguments$0)
             {if(! arguments$0[2])
               {var x$0=arguments$0[1],switch$38=0;
                if
                 (caml_equal(caml_call2(Utils_String[15],name,68),_He_)
                  &&
                  caml_equal
                   (caml_call2(Utils_String[15],name,80),
                    [0,caml_ml_string_length(name) - 1 | 0])
                  &&
                  2
                  <
                  caml_ml_string_length(name))
                 {var
                   _b79_=caml_ml_string_length(name) - 2 | 0,
                   _b7__=function(c){return 73 === c?1:0};
                  if(caml_call2(Base_String[11],name,_b7__) === _b79_)
                   {var
                     _b7$_=
                      [9,caml_ml_string_length(name) - 2 | 0,instruction(x$0)];
                    switch$38 = 1}}
                var switch$39=0;
                if(! switch$38)
                 {var
                   switch$7=caml_string_compare(name,cst_LOOP$2),
                   switch$40=0;
                  if(0 <= switch$7)
                   if(0 < switch$7)
                    {var
                      switch$8=caml_string_compare(name,cst_RIGHT$0),
                      switch$41=0;
                     if(0 <= switch$8)
                      if(0 < switch$8)
                       if(caml_string_notequal(name,cst_SAPLING_EMPTY_STATE$0))
                        if(caml_string_notequal(name,cst_UNPACK$0))
                         if(caml_string_notequal(name,cst_UNPAIR$2))
                          if(caml_string_notequal(name,cst_UPDATE$2))
                           {switch$39 = 1;switch$40 = 1;switch$41 = 1}
                          else
                           {var _b8a_=arguments$0[1];
                            if(0 === _b8a_[0])
                             var x$1=_b8a_[1],_b8b_=[3,[1,caml_int_of_string(x$1)]];
                            else
                             {switch$39 = 1;switch$40 = 1;switch$41 = 1}}
                         else
                          {var _b8d_=arguments$0[1];
                           if(0 === _b8d_[0])
                            var
                             n$0=_b8d_[1],
                             _b8e_=caml_int_of_string(n$0),
                             _b8b_=[24,caml_call2(Utils_List[84],_b8e_,1)];
                           else
                            {switch$39 = 1;switch$40 = 1;switch$41 = 1}}
                        else
                         var t=arguments$0[1],_b8b_=[1,[3,mtype(t)]];
                       else
                        {var _b8f_=arguments$0[1];
                         if(0 === _b8f_[0])
                          var memo=_b8f_[1],_b8b_=[0,[1,caml_int_of_string(memo)]];
                         else
                          {switch$39 = 1;switch$40 = 1;switch$41 = 1}}
                      else
                       var t$0=arguments$0[1],_b8b_=[1,[1,0,0,mtype(t$0)]];
                     else
                      if(caml_string_notequal(name,cst_LOOP_LEFT$2))
                       if(caml_string_notequal(name,cst_MAP$2))
                        if(caml_string_notequal(name,cst_NIL$0))
                         if(caml_string_notequal(name,cst_NONE$0))
                          if(caml_string_notequal(name,cst_PAIR$1))
                           {switch$39 = 1;switch$40 = 1;switch$41 = 1}
                          else
                           {var _b8g_=arguments$0[1];
                            if(0 === _b8g_[0])
                             var n$1=_b8g_[1],_b8b_=[25,caml_int_of_string(n$1)];
                            else
                             {switch$39 = 1;switch$40 = 1;switch$41 = 1}}
                         else
                          var t$1=arguments$0[1],_b8b_=[0,[2,mtype(t$1)]];
                        else
                         var t$2=arguments$0[1],_b8b_=[0,[3,mtype(t$2)]];
                       else
                        var x$2=arguments$0[1],_b8b_=[13,instruction(x$2)];
                      else
                       var x$3=arguments$0[1],_b8b_=[11,instruction(x$3)];
                     if(! switch$41)var _b8c_=_b8b_}
                   else
                    var x$4=arguments$0[1],_b8c_=[10,instruction(x$4)];
                  else
                   {var
                     switch$9=caml_string_compare(name,cst_DUG$1),
                     switch$42=0;
                    if(0 <= switch$9)
                     if(0 < switch$9)
                      if(caml_string_notequal(name,cst_DUP$1))
                       if(caml_string_notequal(name,cst_GET$1))
                        if(caml_string_notequal(name,cst_ITER$2))
                         if(caml_string_notequal(name,cst_LEFT$0))
                          {switch$39 = 1;switch$40 = 1;switch$42 = 1}
                         else
                          var t$3=arguments$0[1],_b8h_=[1,[0,0,0,mtype(t$3)]];
                        else
                         var x$5=arguments$0[1],_b8h_=[12,instruction(x$5)];
                       else
                        {var _b8i_=arguments$0[1];
                         if(0 === _b8i_[0])
                          var x$6=_b8i_[1],_b8h_=[1,[4,caml_int_of_string(x$6)]];
                         else
                          {switch$39 = 1;switch$40 = 1;switch$42 = 1}}
                      else
                       {var _b8j_=arguments$0[1];
                        if(0 === _b8j_[0])
                         var n$2=_b8j_[1],_b8h_=[15,caml_int_of_string(n$2)];
                        else
                         {switch$39 = 1;switch$40 = 1;switch$42 = 1}}
                     else
                      {var _b8k_=arguments$0[1];
                       if(0 === _b8k_[0])
                        var i=_b8k_[1],_b8h_=[17,caml_int_of_string(i)];
                       else
                        {switch$39 = 1;switch$40 = 1;switch$42 = 1}}
                    else
                     if(caml_string_notequal(name,cst_CAST$0))
                      if(caml_string_notequal(name,cst_CONTRACT$0))
                       if(caml_string_notequal(name,cst_CREATE_CONTRACT$1))
                        if(caml_string_notequal(name,cst_DIG$1))
                         if(caml_string_notequal(name,cst_DROP$1))
                          {switch$39 = 1;switch$40 = 1;switch$42 = 1}
                         else
                          {var _b8l_=arguments$0[1];
                           if(0 === _b8l_[0])
                            var n$3=_b8l_[1],_b8h_=[14,caml_int_of_string(n$3)];
                           else
                            {switch$39 = 1;switch$40 = 1;switch$42 = 1}}
                        else
                         {var _b8m_=arguments$0[1];
                          if(0 === _b8m_[0])
                           var i$0=_b8m_[1],_b8h_=[16,caml_int_of_string(i$0)];
                          else
                           {switch$39 = 1;switch$40 = 1;switch$42 = 1}}
                       else
                        {var x$7=arguments$0[1],switch$43=0;
                         if(4 === x$7[0])
                          {var _b8n_=x$7[1];
                           if(_b8n_)
                            {var _b8o_=_b8n_[1];
                             if
                              (3
                               ===
                               _b8o_[0]
                               &&
                               !
                               caml_string_notequal(_b8o_[1],cst_parameter))
                              {var _b8p_=_b8o_[3];
                               if(_b8p_ && ! _b8p_[2])
                                {var _b8q_=_b8n_[2];
                                 if(_b8q_)
                                  {var _b8r_=_b8q_[1];
                                   if(3 === _b8r_[0])
                                    {var _b8s_=_b8p_[1];
                                     if(! caml_string_notequal(_b8r_[1],cst_storage$4))
                                      {var _b8t_=_b8r_[3];
                                       if(_b8t_ && ! _b8t_[2])
                                        {var _b8u_=_b8q_[2];
                                         if(_b8u_)
                                          {var _b8v_=_b8u_[1];
                                           if(3 === _b8v_[0])
                                            {var _b8w_=_b8t_[1];
                                             if(! caml_string_notequal(_b8v_[1],cst_code$0))
                                              {var _b8x_=_b8v_[3];
                                               if(_b8x_ && ! _b8x_[2] && ! _b8u_[2])
                                                {var
                                                  code=_b8x_[1],
                                                  code$0=instruction(code),
                                                  tstorage=mtype(_b8w_),
                                                  tparameter=[0,mtype(_b8s_),0],
                                                  _b8h_=[29,tparameter,tstorage,code$0];
                                                 switch$43 = 1}}}}}}}}}}}}
                         if(! switch$43)throw [0,Assert_failure,_Hf_]}
                      else
                       {var t$4=arguments$0[1];
                        if(annotations)
                         var
                          entry_point=annotations[1],
                          entry_point$0=
                           caml_call2(Base_String[98],entry_point,cst$105);
                        else
                         var entry_point$0=0;
                        var _b8h_=[1,[2,entry_point$0,mtype(t$4)]]}
                     else
                      var t$5=arguments$0[1],t$6=mtype(t$5),_b8h_=[1,[5,t$6]];
                    if(! switch$42)var _b8c_=_b8h_}
                  if(! switch$40)var _b7$_=_b8c_}
                if(! switch$39){var _b78_=_b7$_;switch$37 = 1}}}
            else
             {var
               switch$0=caml_string_compare(name,cst_ASSERT_CMPLT),
               switch$44=0;
              if(0 <= switch$0)
               if(0 < switch$0)
                {var switch$1=caml_string_compare(name,cst_CMPGT);
                 if(0 <= switch$1)
                  if(0 < switch$1)
                   if(caml_string_notequal(name,cst_CMPLE))
                    if(caml_string_notequal(name,cst_CMPLT))
                     if(caml_string_notequal(name,cst_CMPNEQ))
                      if(caml_string_notequal(name,cst_FAIL))
                       switch$44 = 1;
                      else
                       var _b8y_=fail;
                     else
                      var _b8y_=cmp(_GV_);
                    else
                     var _b8y_=cmp(_GW_);
                   else
                    var _b8y_=cmp(_GX_);
                  else
                   var _b8y_=cmp(_GY_);
                 else
                  if(caml_string_notequal(name,cst_ASSERT_CMPNEQ))
                   if(caml_string_notequal(name,cst_ASSERT_NONE))
                    if(caml_string_notequal(name,cst_ASSERT_SOME))
                     if(caml_string_notequal(name,cst_CMPEQ))
                      if(caml_string_notequal(name,cst_CMPGE))
                       switch$44 = 1;
                      else
                       var _b8y_=cmp(_GZ_);
                     else
                      var _b8y_=cmp(_G0_);
                    else
                     var _b8y_=[20,[0,fail],_G1_];
                   else
                    var _b8y_=[20,_G2_,[0,fail]];
                  else
                   var _b8y_=assert_cmp_op(_G3_)}
               else
                var _b8y_=assert_cmp_op(_G4_);
              else
               {var switch$2=caml_string_compare(name,cst_ASSERTLT);
                if(0 <= switch$2)
                 if(0 < switch$2)
                  if(caml_string_notequal(name,cst_ASSERTNEQ))
                   if(caml_string_notequal(name,cst_ASSERT_CMPEQ))
                    if(caml_string_notequal(name,cst_ASSERT_CMPGE))
                     if(caml_string_notequal(name,cst_ASSERT_CMPGT))
                      if(caml_string_notequal(name,cst_ASSERT_CMPLE))
                       switch$44 = 1;
                      else
                       var _b8y_=assert_cmp_op(_G5_);
                     else
                      var _b8y_=assert_cmp_op(_G6_);
                    else
                     var _b8y_=assert_cmp_op(_G7_);
                   else
                    var _b8y_=assert_cmp_op(_G8_);
                  else
                   var _b8y_=assert_op(_G9_);
                 else
                  var _b8y_=assert_op(_G__);
                else
                 if(caml_string_notequal(name,cst_ASSERT))
                  if(caml_string_notequal(name,cst_ASSERTEQ))
                   if(caml_string_notequal(name,cst_ASSERTGE))
                    if(caml_string_notequal(name,cst_ASSERTGT))
                     if(caml_string_notequal(name,cst_ASSERTLE))
                      switch$44 = 1;
                     else
                      var _b8y_=assert_op(_G$_);
                    else
                     var _b8y_=assert_op(_Ha_);
                   else
                    var _b8y_=assert_op(_Hb_);
                  else
                   var _b8y_=assert_op(_Hc_);
                 else
                  var _b8y_=[18,_Hd_,[0,fail]]}
              if(switch$44)
               {var switch$45=0;
                if
                 (caml_equal(caml_call2(Utils_String[15],name,68),_GR_)
                  &&
                  caml_equal
                   (caml_call2(Utils_String[15],name,80),
                    [0,caml_ml_string_length(name) - 1 | 0])
                  &&
                  2
                  <
                  caml_ml_string_length(name))
                 {var
                   _b74_=caml_ml_string_length(name) - 2 | 0,
                   _b75_=function(c){return 85 === c?1:0};
                  if(caml_call2(Base_String[11],name,_b75_) === _b74_)
                   var
                    n=caml_ml_string_length(name) - 3 | 0,
                    _b8y_=[23,[0,[0,[16,n]],[0,_GS_,[0,[0,[17,n + 1 | 0]],0]]]];
                  else
                   switch$45 = 1}
                else
                 switch$45 = 1;
                if(switch$45)
                 {var switch$46=0;
                  if
                   (caml_equal(caml_call2(Utils_String[15],name,67),_GT_)
                    &&
                    caml_equal
                     (caml_call2(Utils_String[15],name,82),
                      [0,caml_ml_string_length(name) - 1 | 0]))
                   {var
                     _b76_=
                      function(acc,c)
                       {if(acc)
                         {var _b9s_=acc[1];
                          if(65 === c)return [0,[0,0,_b9s_]];
                          if(68 === c)return [0,[0,1,_b9s_]]}
                        return 0},
                     _b77_=
                      caml_call3
                       (Utils_String[4],name,1,caml_ml_string_length(name) - 2 | 0),
                     l=caml_call3(Base_String[6],_b77_,_GU_,_b76_);
                    if(l)
                     var l$0=l[1],_b8y_=[26,caml_call1(Utils_List[12],l$0)];
                    else
                     var _b8y_=err(0)}
                  else
                   switch$46 = 1;
                  if(switch$46)var _b8y_=err(0)}}
              var _b78_=_b8y_;
              switch$37 = 1}
            break
           }
         if(! switch$37)var _b78_=err(0);
         var instr=_b78_;
         break;
        case 4:
         var _b9q_=x[1],switch$47=0;
         if(_b9q_ && ! _b9q_[2])
          {var x$28=_b9q_[1],_b9r_=instruction(x$28)[1];switch$47 = 1}
         if(! switch$47)
          var _b9r_=[23,caml_call2(Utils_List[20],instruction,_b9q_)];
         var instr=_b9r_;
         break;
        default:var instr=err(0)}
      return [0,instr]}
    function mtype$0(annot_field)
     {var
       _b7Q_=
        caml_call1
         (_y$_,
          function(annot_type,annot_variable,t,annot_field)
           {function get(pref)
             {var _b73_=caml_call1(Stdlib[28],pref);
              return caml_call1(Utils_Option[17],_b73_)}
            var
             _b7S_=[0,caml_call1(get(cst$108),annot_variable),0],
             _b7T_=[0,caml_call1(get(cst$109),annot_type),_b7S_],
             _b7U_=[0,caml_call1(get(cst$110),annot_field),_b7T_],
             annotations=caml_call1(Base_List[121],_b7U_),
             _b7V_=[0,annotations];
            function prim(_b71_)
             {return function(_b72_){return primitive(_b71_,_b7V_,_b72_)}}
            switch(t[0])
             {case 0:
               var
                t$0=t[1],
                match=caml_call1(_yY_,t$0),
                memo=match[2],
                t$1=match[1],
                _b7W_=function(x){return caml_call1(prim(t$1),[0,[0,x],0])},
                _b7X_=caml_call1(prim(t$1),0);
               return caml_call3(Utils_Option[12],_b7X_,_b7W_,memo);
              case 1:
               var t1=t[2],t$2=t[1],_b7Y_=[0,caml_call1(t1,0),0];
               return caml_call1(prim(caml_call1(_yZ_,t$2)),_b7Y_);
              case 2:
               var
                t2=t[3],
                t1$0=t[2],
                t$3=t[1],
                match$0=caml_call1(_y0_,t$3),
                a2=match$0[3],
                a1=match$0[2],
                t$4=match$0[1],
                _b7Z_=[0,caml_call1(t2,a2),0],
                _b70_=[0,caml_call1(t1$0,a1),_b7Z_];
               return caml_call1(prim(t$4),_b70_);
              default:
               var msg=t[1];
               return primitive
                       (cst_ERROR,
                        0,
                        [0,caml_call3(Stdlib_format[134],string$1,_Iv_,msg),0])}});
      return function(_b7R_){return caml_call2(_b7Q_,_b7R_,annot_field)}}
    function dip_seq(i){return primitive(cst_DIP$3,0,[0,[4,i],0])}
    function c_ad_r(s)
     {try {var other=caml_string_get(s,0)}catch(_b7P_){return 0}
      if(65 === other)
       {var _b7N_=c_ad_r(caml_call2(Base_String[102],s,1));
        return [0,primitive(cst_CAR$0,0,0),_b7N_]}
      if(68 === other)
       {var _b7O_=c_ad_r(caml_call2(Base_String[102],s,1));
        return [0,primitive(cst_CDR$0,0,0),_b7O_]}
      return caml_call4(Stdlib_format[134],Stdlib[2],_Iw_,other,s)}
    function set_c_ad_r(s)
     {try
       {var other=caml_string_get(s,0)}
      catch(_b7M_){return caml_call3(Stdlib_format[134],Stdlib[2],_Ix_,s)}
      if(65 === other)
       {if(1 < caml_ml_string_length(s))
         {var
           _b7A_=[0,primitive(cst_PAIR$3,0,0),0],
           _b7B_=[0,primitive(cst_SWAP$1,0,0),_b7A_],
           _b7C_=[0,primitive(cst_CDR$1,0,0),_b7B_],
           _b7D_=set_c_ad_r(caml_call2(Base_String[102],s,1)),
           _b7E_=[0,dip_seq([0,primitive(cst_CAR$1,0,0),_b7D_]),_b7C_];
          return [0,primitive(cst_DUP$3,0,0),_b7E_]}
        var
         _b7F_=[0,primitive(cst_PAIR$4,0,0),0],
         _b7G_=[0,primitive(cst_SWAP$2,0,0),_b7F_];
        return [0,primitive(cst_CDR$2,0,0),_b7G_]}
      if(68 === other)
       {if(1 < caml_ml_string_length(s))
         {var
           _b7H_=[0,primitive(cst_PAIR$5,0,0),0],
           _b7I_=[0,primitive(cst_CAR$2,0,0),_b7H_],
           _b7J_=set_c_ad_r(caml_call2(Base_String[102],s,1)),
           _b7K_=[0,dip_seq([0,primitive(cst_CDR$3,0,0),_b7J_]),_b7I_];
          return [0,primitive(cst_DUP$4,0,0),_b7K_]}
        var _b7L_=[0,primitive(cst_PAIR$6,0,0),0];
        return [0,primitive(cst_CAR$3,0,0),_b7L_]}
      return caml_call4(Stdlib_format[134],Stdlib[2],_Iy_,other,s)}
    function literal$0(param)
     {var param$0=param;
      for(;;)
       {var l=param$0[1];
        if(typeof l === "number")
         return 0 === l?primitive(cst_Unit$5,0,0):primitive(cst_None$42,0,0);
        else
         switch(l[0])
          {case 0:var bi=l[1];return [0,caml_call1(Big_int[33],bi)];
           case 1:
            return l[1]?primitive(cst_True$2,0,0):primitive(cst_False$2,0,0);
           case 2:var s=l[1];return [1,s];
           case 3:var b=l[1];return [2,b];
           case 4:
            var right=l[2],left=l[1],_b7x_=[0,literal$0(right),0];
            return primitive(cst_Pair$1,0,[0,literal$0(left),_b7x_]);
           case 5:
            var e=l[1];return primitive(cst_Left$4,0,[0,literal$0(e),0]);
           case 6:
            var e$0=l[1];return primitive(cst_Right$4,0,[0,literal$0(e$0),0]);
           case 7:
            var l$0=l[1];return primitive(cst_Some$40,0,[0,literal$0(l$0),0]);
           case 8:
            var xs=l[1];return [4,caml_call2(Base_List[72],xs,literal$0)];
           case 9:
            var match=l[1],v=match[2],k=match[1],_b7y_=[0,literal$0(v),0];
            return primitive(cst_Elt$1,0,[0,literal$0(k),_b7y_]);
           case 10:var x=l[1];return [4,instruction$0(x)];
           default:
            var
             xs$0=l[1],
             _b7z_=
              function(param)
               {var v=param[2],k=param[1];return [0,[9,[0,k,v]]]},
             xs$1=caml_call2(Utils_List[20],_b7z_,xs$0),
             param$1=[0,[8,xs$1]],
             param$0=param$1;
            continue}}}
    function instruction$0(the_instruction)
     {function prim0(annotations,n){return [0,primitive(n,annotations,0),0]}
      function primn(annotations,n,l){return [0,primitive(n,annotations,l),0]}
      function rec_instruction(instr){return [4,instruction$0(instr)]}
      var _b65_=the_instruction[1];
      if(typeof _b65_ !== "number")
       switch(_b65_[0])
        {case 0:
          var _b67_=_b65_[1];
          if(typeof _b67_ !== "number")
           switch(_b67_[0])
            {case 0:
              var _b68_=_b67_[1];
              if(_b68_)
               {var entry_point=_b68_[1];
                return primn
                        ([0,[0,caml_call2(Stdlib[28],cst$111,entry_point),0]],
                         cst_SELF$1,
                         0)}
              break;
             case 1:
              var memo=_b67_[1];
              return primn
                      (0,
                       cst_SAPLING_EMPTY_STATE$1,
                       [0,[0,caml_call1(Stdlib[33],memo)],0]);
             case 2:
              var mty=_b67_[1];
              return primn(0,cst_NONE$1,[0,caml_call1(mtype$0(0),mty),0]);
             case 3:
              var mty$0=_b67_[1];
              return primn(0,cst_NIL$1,[0,caml_call1(mtype$0(0),mty$0),0]);
             case 4:
              var mty$1=_b67_[1];
              return primn
                      (0,cst_EMPTY_SET$1,[0,caml_call1(mtype$0(0),mty$1),0]);
             case 5:
              var v=_b67_[2],k=_b67_[1],_b69_=[0,caml_call1(mtype$0(0),v),0];
              return primn
                      (0,cst_EMPTY_MAP$1,[0,caml_call1(mtype$0(0),k),_b69_]);
             default:
              var
               v$0=_b67_[2],
               k$0=_b67_[1],
               _b6__=[0,caml_call1(mtype$0(0),v$0),0];
              return primn
                      (0,cst_EMPTY_BIG_MAP$1,[0,caml_call1(mtype$0(0),k$0),_b6__])}
          break;
         case 1:
          var _b6$_=_b65_[1];
          if(typeof _b6$_ !== "number")
           switch(_b6$_[0])
            {case 0:
              var
               mty$2=_b6$_[3],
               a2=_b6$_[2],
               a1=_b6$_[1],
               _b7a_=[0,caml_call1(mtype$0(0),mty$2),0];
              return primn([0,two_field_annots([0,a1,a2])],cst_LEFT$1,_b7a_);
             case 1:
              var
               mty$3=_b6$_[3],
               a2$0=_b6$_[2],
               a1$0=_b6$_[1],
               _b7b_=[0,caml_call1(mtype$0(0),mty$3),0];
              return primn
                      ([0,two_field_annots([0,a1$0,a2$0])],cst_RIGHT$1,_b7b_);
             case 2:
              var _b7c_=_b6$_[1];
              if(_b7c_)
               {var
                 mty$4=_b6$_[2],
                 entry_point$0=_b7c_[1],
                 _b7d_=[0,caml_call1(mtype$0(0),mty$4),0];
                return primn
                        ([0,[0,caml_call2(Stdlib[28],cst$112,entry_point$0),0]],
                         cst_CONTRACT$1,
                         _b7d_)}
              var mty$5=_b6$_[2];
              return primn
                      (0,cst_CONTRACT$2,[0,caml_call1(mtype$0(0),mty$5),0]);
             case 3:
              var mty$6=_b6$_[1];
              return primn(0,cst_UNPACK$1,[0,caml_call1(mtype$0(0),mty$6),0]);
             case 4:
              var n=_b6$_[1];
              return primn(0,cst_GET$3,[0,[0,caml_call1(Base_Int[10],n)],0]);
             case 5:
              var t=_b6$_[1];
              return primn(0,cst_CAST$1,[0,caml_call1(mtype$0(0),t),0]);
             default:
              var _b7e_=_b6$_[1];
              if(_b7e_)
               {var a=_b7e_[1];
                return primn
                        ([0,[0,caml_call2(Stdlib[28],cst$113,a),0]],cst_RENAME$1,0)}
              return primn(0,cst_RENAME$2,0)}
          break;
         case 3:
          var _b7f_=_b65_[1];
          if(typeof _b7f_ !== "number")
           {if(0 === _b7f_[0])
             {var a2$1=_b7f_[2],a1$1=_b7f_[1];
              return primn([0,two_field_annots([0,a1$1,a2$1])],cst_PAIR$7,0)}
            var n$0=_b7f_[1];
            return primn
                    (0,cst_UPDATE$3,[0,[0,caml_call1(Base_Int[10],n$0)],0])}
          break;
         case 5:var s=_b65_[1];return primn(0,cst_ERROR$0,[0,[1,s],0]);
         case 6:return 0;
         case 8:
          var instr=_b65_[1];
          return primn(0,cst_DIP$4,[0,rec_instruction(instr),0]);
         case 9:
          var
           instr$0=_b65_[2],
           n$1=_b65_[1],
           _b7g_=[0,rec_instruction(instr$0),0];
          return primn(0,cst_DIP$5,[0,[0,caml_call1(Base_Int[10],n$1)],_b7g_]);
         case 10:
          var instr$1=_b65_[1];
          return primn(0,cst_LOOP$3,[0,rec_instruction(instr$1),0]);
         case 11:
          var instr$2=_b65_[1];
          return primn(0,cst_LOOP_LEFT$3,[0,rec_instruction(instr$2),0]);
         case 12:
          var instr$3=_b65_[1];
          return primn(0,cst_ITER$3,[0,rec_instruction(instr$3),0]);
         case 13:
          var instr$4=_b65_[1];
          return primn(0,cst_MAP$3,[0,rec_instruction(instr$4),0]);
         case 14:
          var n$2=_b65_[1];
          return primn(0,cst_DROP$3,[0,[0,caml_call1(Base_Int[10],n$2)],0]);
         case 15:
          var _b7h_=_b65_[1];
          return 1 === _b7h_
                  ?primn(0,cst_DUP$5,0)
                  :primn(0,cst_DUP$6,[0,[0,caml_call1(Base_Int[10],_b7h_)],0]);
         case 16:
          var n$3=_b65_[1];
          return primn(0,cst_DIG$2,[0,[0,caml_call1(Base_Int[10],n$3)],0]);
         case 17:
          var n$4=_b65_[1];
          return primn(0,cst_DUG$2,[0,[0,caml_call1(Base_Int[10],n$4)],0]);
         case 18:
          var e=_b65_[2],t$0=_b65_[1],_b7i_=[0,rec_instruction(e),0];
          return primn(0,cst_IF$3,[0,rec_instruction(t$0),_b7i_]);
         case 19:
          var e$0=_b65_[2],t$1=_b65_[1],_b7j_=[0,rec_instruction(e$0),0];
          return primn(0,cst_IF_LEFT$3,[0,rec_instruction(t$1),_b7j_]);
         case 20:
          var e$1=_b65_[2],t$2=_b65_[1],_b7k_=[0,rec_instruction(e$1),0];
          return primn(0,cst_IF_NONE$3,[0,rec_instruction(t$2),_b7k_]);
         case 21:
          var e$2=_b65_[2],t$3=_b65_[1],_b7l_=[0,rec_instruction(e$2),0];
          return primn(0,cst_IF_CONS$3,[0,rec_instruction(t$3),_b7l_]);
         case 22:
          var lit=_b65_[2],mt=_b65_[1],_b7m_=[0,literal$0(lit),0];
          return primn(0,cst_PUSH$1,[0,caml_call1(mtype$0(0),mt),_b7m_]);
         case 23:
          var ils=_b65_[1];return caml_call2(Base_List[77],ils,instruction$0);
         case 24:
          var _b7n_=_b65_[1];
          if(_b7n_ && _b7n_[1])
           {var _b7o_=_b7n_[2];
            if(_b7o_ && _b7o_[1] && ! _b7o_[2])return primn(0,cst_UNPAIR$4,0)}
          var _b7p_=caml_call1(unpair_size,_b7n_);
          return primn
                  (0,cst_UNPAIR$3,[0,[0,caml_call1(Base_Int[10],_b7p_)],0]);
         case 25:
          var n$5=_b65_[1];
          return primn(0,cst_PAIR$8,[0,[0,caml_call1(Base_Int[10],n$5)],0]);
         case 26:var op=_b65_[1];return c_ad_r(string_of_ad_path(op));
         case 27:var op$0=_b65_[1];return set_c_ad_r(string_of_ad_path(op$0));
         case 28:
          var
           b=_b65_[3],
           t2=_b65_[2],
           t1=_b65_[1],
           _b7q_=[0,rec_instruction(b),0],
           _b7r_=[0,caml_call1(mtype$0(0),t2),_b7q_];
          return primn(0,cst_LAMBDA$2,[0,caml_call1(mtype$0(0),t1),_b7r_]);
         case 29:
          var
           code=_b65_[3],
           tstorage=_b65_[2],
           match=_b65_[1],
           annot_field=match[2],
           tparameter=match[1],
           _b7s_=primn(0,cst_code$1,[0,rec_instruction(code),0]),
           _b7t_=primn(0,cst_storage$5,[0,caml_call1(mtype$0(0),tstorage),0]),
           _b7u_=caml_call2(Stdlib[37],_b7t_,_b7s_),
           _b7v_=
            primn
             (0,
              cst_parameter$0,
              [0,caml_call1(mtype$0(annot_field),tparameter),0]);
          return primn
                  (0,
                   cst_CREATE_CONTRACT$2,
                   [0,[4,caml_call2(Stdlib[37],_b7v_,_b7u_)],0])
         }
      try
       {var _b66_=prim0(0,name_of_instr_exn(_b65_));return _b66_}
      catch(_b7w_){return [0,[4,[0,primitive(cst_ERROR_NOT_SIMPLE,0,0),0]],0]}}
    function f_tinstr$1(param,instr){return 0}
    function f_tliteral$0(t,literal)
     {var switch$0=0;
      if(0 === t[0])
       {var _b6Y_=t[1][1];
        if(2 === _b6Y_[0])
         {var _b60_=_b6Y_[1];
          if(typeof _b60_ === "number" && 2 <= _b60_){var i=1;switch$0 = 1}}}
      if(! switch$0)var i=0;
      function _b6Z_(_b64_,_b63_){return _b64_ + _b63_ | 0}
      return fold_literal_f
              (function(_b62_,_b61_){return _b62_ + _b61_ | 0},
               _b6Z_,
               i,
               literal)}
    var
     count_bigmaps=cata_tliteral([0,f_tinstr$1,f_tliteral$0]),
     pp_contract$0=function _b6X_(_b6V_,_b6W_){return _b6X_.fun(_b6V_,_b6W_)},
     show_contract$0=function _b6U_(_b6T_){return _b6U_.fun(_b6T_)};
    caml_update_dummy
     (pp_contract$0,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_Iz_);
        caml_call3(Stdlib_format[123],fmt,_IA_,cst_tparameter$1);
        var _b6O_=x[1],a1=_b6O_[2],a0=_b6O_[1];
        caml_call2(Stdlib_format[123],fmt,_IB_);
        caml_call1(caml_call1(_y9_,fmt),a0);
        caml_call2(Stdlib_format[123],fmt,_IC_);
        if(a1)
         {var x$0=a1[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$41);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_ID_),x$0);
          caml_call2(Stdlib_format[13],fmt,cst$114)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$43);
        caml_call2(Stdlib_format[123],fmt,_IE_);
        caml_call2(Stdlib_format[123],fmt,_IF_);
        caml_call2(Stdlib_format[123],fmt,_IG_);
        caml_call3(Stdlib_format[123],fmt,_IH_,cst_tstorage$1);
        var _b6P_=x[2];
        caml_call1(caml_call1(_y9_,fmt),_b6P_);
        caml_call2(Stdlib_format[123],fmt,_II_);
        caml_call2(Stdlib_format[123],fmt,_IJ_);
        caml_call3(Stdlib_format[123],fmt,_IK_,cst_code$2);
        var _b6Q_=x[3];
        caml_call1(caml_call1(pp_instr,fmt),_b6Q_);
        caml_call2(Stdlib_format[123],fmt,_IL_);
        caml_call2(Stdlib_format[123],fmt,_IM_);
        caml_call3(Stdlib_format[123],fmt,_IN_,cst_lazy_entry_points$2);
        var _b6R_=x[4];
        if(_b6R_)
         {var x$1=_b6R_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$42);
          caml_call1(caml_call1(pp_literal,fmt),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$115)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$44);
        caml_call2(Stdlib_format[123],fmt,_IO_);
        caml_call2(Stdlib_format[123],fmt,_IP_);
        caml_call3(Stdlib_format[123],fmt,_IQ_,cst_storage$6);
        var _b6S_=x[5];
        if(_b6S_)
         {var x$2=_b6S_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$43);
          caml_call1(caml_call1(pp_literal,fmt),x$2);
          caml_call2(Stdlib_format[13],fmt,cst$116)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$45);
        caml_call2(Stdlib_format[123],fmt,_IR_);
        return caml_call2(Stdlib_format[123],fmt,_IS_)});
    caml_update_dummy
     (show_contract$0,
      function(x){return caml_call3(Stdlib_format[127],_IT_,pp_contract$0,x)});
    var
     pp_tcontract$0=function _b6N_(_b6L_,_b6M_){return _b6N_.fun(_b6L_,_b6M_)},
     show_tcontract$0=function _b6K_(_b6J_){return _b6K_.fun(_b6J_)};
    caml_update_dummy
     (pp_tcontract$0,
      function(fmt,x)
       {caml_call2(Stdlib_format[123],fmt,_IU_);
        caml_call3(Stdlib_format[123],fmt,_IV_,cst_tparameter$2);
        var _b6E_=x[1],a1=_b6E_[2],a0=_b6E_[1];
        caml_call2(Stdlib_format[123],fmt,_IW_);
        caml_call1(caml_call1(_y9_,fmt),a0);
        caml_call2(Stdlib_format[123],fmt,_IX_);
        if(a1)
         {var x$0=a1[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$44);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_IY_),x$0);
          caml_call2(Stdlib_format[13],fmt,cst$117)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$46);
        caml_call2(Stdlib_format[123],fmt,_IZ_);
        caml_call2(Stdlib_format[123],fmt,_I0_);
        caml_call2(Stdlib_format[123],fmt,_I1_);
        caml_call3(Stdlib_format[123],fmt,_I2_,cst_tstorage$2);
        var _b6F_=x[2];
        caml_call1(caml_call1(_y9_,fmt),_b6F_);
        caml_call2(Stdlib_format[123],fmt,_I3_);
        caml_call2(Stdlib_format[123],fmt,_I4_);
        caml_call3(Stdlib_format[123],fmt,_I5_,cst_code$3);
        var _b6G_=x[3];
        caml_call1(caml_call1(pp_tinstr,fmt),_b6G_);
        caml_call2(Stdlib_format[123],fmt,_I6_);
        caml_call2(Stdlib_format[123],fmt,_I7_);
        caml_call3(Stdlib_format[123],fmt,_I8_,cst_lazy_entry_points$3);
        var _b6H_=x[4];
        if(_b6H_)
         {var x$1=_b6H_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$45);
          caml_call1(caml_call1(pp_tliteral,fmt),x$1);
          caml_call2(Stdlib_format[13],fmt,cst$118)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$47);
        caml_call2(Stdlib_format[123],fmt,_I9_);
        caml_call2(Stdlib_format[123],fmt,_I__);
        caml_call3(Stdlib_format[123],fmt,_I$_,cst_storage$7);
        var _b6I_=x[5];
        if(_b6I_)
         {var x$2=_b6I_[1];
          caml_call2(Stdlib_format[13],fmt,cst_Some$46);
          caml_call1(caml_call1(pp_tliteral,fmt),x$2);
          caml_call2(Stdlib_format[13],fmt,cst$119)}
        else
         caml_call2(Stdlib_format[13],fmt,cst_None$48);
        caml_call2(Stdlib_format[123],fmt,_Ja_);
        return caml_call2(Stdlib_format[123],fmt,_Jb_)});
    caml_update_dummy
     (show_tcontract$0,
      function(x){return caml_call3(Stdlib_format[127],_Jc_,pp_tcontract$0,x)});
    function erase_types_contract$0(param)
     {var
       storage=param[5],
       lazy_entry_points=param[4],
       code=param[3],
       tstorage=param[2],
       tparameter=param[1],
       lazy_entry_points$0=
        caml_call2(Utils_Option[17],erase_types_literal,lazy_entry_points),
       code$0=caml_call1(erase_types_instr,code),
       storage$0=caml_call2(Utils_Option[17],erase_types_literal,storage);
      return [0,tparameter,tstorage,code$0,lazy_entry_points$0,storage$0]}
    function string_of_tliteral(x)
     {return string_of_literal(caml_call1(erase_types_literal,x))}
    function typecheck_contract(strict_dup,param)
     {var
       storage=param[5],
       lazy_entry_points=param[4],
       code=param[3],
       tstorage=param[2],
       tparameter=param[1],
       xs$0=
        typecheck_instr
         (strict_dup,tparameter,initial_stack(tparameter[1],tstorage),code);
      function _b6t_(_b6D_)
       {return typecheck_literal(strict_dup,tparameter,tstorage,_b6D_)}
      var storage$0=caml_call2(Utils_Option[17],_b6t_,storage),_b6u_=xs$0[2];
      if(0 === _b6u_[0])
       {var _b6v_=_b6u_[1];
        if(_b6v_)
         {var _b6w_=_b6v_[1],switch$0=0;
          if(_b6w_)
           {var _b6x_=_b6w_[1][1];
            if(2 === _b6x_[0])
             {var switch$1=0,_b6C_=_b6x_[1];
              if(typeof _b6C_ !== "number" && 1 !== _b6C_[0])
               if(_b6w_[2])
                switch$1 = 1;
               else
                {var snd$0=_b6x_[3],fst=_b6x_[2],switch$2=0;
                 if
                  (unifiable_types(fst,caml_call1(_zA_,_zs_))
                   &&
                   unifiable_types(snd$0,tstorage))
                  {var _b6z_=xs$0;switch$0 = 1;switch$1 = 1;switch$2 = 1}
                 if(! switch$2)switch$1 = 1}}}
          if(! switch$0)
           {var
             x=[0,[5,unexpected_final_stack_error],xs$0[2]],
             _b6r_=xs$0[1],
             switch$3=0;
            if(typeof _b6r_ !== "number" && 23 === _b6r_[0])
             {var
               xs=_b6r_[1],
               _b6s_=x[2],
               _b6y_=[0,[23,caml_call2(Stdlib[37],xs,[0,x,0])],_b6s_];
              switch$3 = 1}
            if(! switch$3)var _b6y_=[0,[23,[0,xs$0,[0,x,0]]],x[2]];
            var _b6z_=_b6y_}}
        else
         var _b6z_=xs$0;
        var code$0=_b6z_}
      else
       var code$0=xs$0;
      var _b6A_=tstorage[1],switch$4=0;
      if(2 === _b6A_[0])
       {var switch$5=0,_b6B_=_b6A_[1];
        if(typeof _b6B_ !== "number" && 1 !== _b6B_[0])
         if(lazy_entry_points)
          {var
            x$0=lazy_entry_points[1],
            snd=_b6A_[3],
            lazy_entry_points$0=
             [0,typecheck_literal(strict_dup,tparameter,snd,x$0)];
           switch$4 = 1;
           switch$5 = 1}
         else
          switch$5 = 1}
      if(! switch$4)
       var
        lazy_entry_points$0=
         lazy_entry_points
          ?caml_call1(Stdlib[2],cst_lazy_entry_points_but_stor)
          :0;
      return [0,tparameter,tstorage,code$0,lazy_entry_points$0,storage$0]}
    function has_error_tcontract(accept_missings,param)
     {var code=param[3],tstorage=param[2],tparameter=param[1];
      function has_missing_type$0(t)
       {return accept_missings?0:caml_call1(has_missing_type,t)}
      function f_tinstr(stack,instr)
       {if(0 === stack[0])
         {var switch$0=0;
          if(typeof instr !== "number")
           switch(instr[0])
            {case 0:
              var _b6c_=instr[1],switch$1=0;
              if(typeof _b6c_ !== "number")
               switch(_b6c_[0])
                {case 0:
                 case 1:break;
                 case 5:
                 case 6:
                  var
                   v=_b6c_[2],
                   k=_b6c_[1],
                   _b6d_=has_missing_type$0(v),
                   _b6e_=has_missing_type$0(k);
                  return caml_call2(Stdlib[37],_b6e_,_b6d_);
                 default:var t=_b6c_[1];switch$0 = 1;switch$1 = 1}
              break;
             case 1:
              var _b6f_=instr[1],switch$2=0;
              if(typeof _b6f_ !== "number")
               switch(_b6f_[0])
                {case 2:var t=_b6f_[2];switch$0 = 1;switch$2 = 1;break;
                 case 3:var t=_b6f_[1];switch$0 = 1;switch$2 = 1;break;
                 case 0:
                 case 1:var t=_b6f_[3];switch$0 = 1;switch$2 = 1;break
                 }
              break;
             case 5:var s=instr[1];return [0,s,0];
             case 7:
              var
               match=instr[1],
               typesOut=match[4],
               typesIn=match[3],
               _b6g_=caml_call2(Base_List[77],typesOut,has_missing_type$0),
               _b6h_=caml_call2(Base_List[77],typesIn,has_missing_type$0);
              return caml_call2(Stdlib[37],_b6h_,_b6g_);
             case 22:var t$0=instr[1];return has_missing_type$0(t$0);
             case 28:
              var
               t2=instr[2],
               t1=instr[1],
               _b6i_=0,
               _b6j_=function(_b6q_){return _b6q_[1]},
               _b6k_=caml_call1(Utils_Control[21],_b6j_),
               _b6l_=fold_instr_f(Stdlib[37],_b6k_,_b6i_,instr),
               _b6m_=has_missing_type$0(t2),
               _b6n_=caml_call2(Stdlib[37],_b6m_,_b6l_),
               _b6o_=has_missing_type$0(t1);
              return caml_call2(Stdlib[37],_b6o_,_b6n_)
             }
          if(switch$0)return has_missing_type$0(t);
          var
           _b5$_=0,
           _b6a_=function(_b6p_){return _b6p_[1]},
           _b6b_=caml_call1(Utils_Control[21],_b6a_);
          return fold_instr_f(Stdlib[37],_b6b_,_b5$_,instr)}
        var s$0=stack[1];
        return [0,s$0,0]}
      function f_tliteral(t,param)
       {if(0 === t[0]){var t$0=t[1];return has_missing_type$0(t$0)}
        var msg=t[1];
        return [0,msg,0]}
      var e=caml_call1(cata_tinstr([0,f_tinstr,f_tliteral]),code);
      if(accept_missings)
       var errors=e;
      else
       var
        _b58_=caml_call1(has_missing_type,tparameter[1]),
        _b59_=caml_call1(has_missing_type,tstorage),
        _b5__=caml_call2(Stdlib[37],_b59_,_b58_),
        errors=caml_call2(Stdlib[37],e,_b5__);
      var acc=0,param$0=errors;
      for(;;)
       {if(param$0)
         {var _b56_=param$0[1],_b57_=param$0[2];
          if(_b57_)
           {var rest=_b57_[2],e2=_b57_[1];
            if(caml_equal(_b56_,e2))
             {var param$1=[0,_b56_,rest],param$0=param$1;continue}}
          var
           param$2=param$0[2],
           acc$0=[0,_b56_,acc],
           acc=acc$0,
           param$0=param$2;
          continue}
        return caml_call1(Utils_List[12],acc)}}
    function to_micheline_tcontract(param)
     {var
       code=param[3],
       tstorage=param[2],
       match=param[1],
       annot_field=match[2],
       tparameter=match[1],
       l=instruction$0(caml_call1(erase_types_instr,code)),
       switch$0=0;
      if(l && 4 === l[1][0] && ! l[2]){var code$0=l;switch$0 = 1}
      if(! switch$0)var code$0=[0,[4,l],0];
      var
       _b54_=[0,primitive(cst_code$4,0,code$0),0],
       _b55_=
        [0,
         primitive
          (cst_parameter$1,
           0,
           [0,caml_call1(mtype$0(annot_field),tparameter),0]),
         _b54_];
      return [4,
              [0,
               primitive
                (cst_storage$8,0,[0,caml_call1(mtype$0(0),tstorage),0]),
               _b55_]]}
    function display_tcontract(param)
     {var
       code=param[3],
       tstorage=param[2],
       tparameter=param[1],
       _b51_=display_tinstr(1,1,2,code),
       _b52_=string_of_mtype(0,0,_Jd_,0,0,tstorage),
       _b53_=string_of_tparameter(0,tparameter);
      return caml_call4(Stdlib_printf[4],_Je_,_b53_,_b52_,_b51_)}
    function render_tcontract(param)
     {var
       code=param[3],
       tstorage=param[2],
       tparameter=param[1],
       _b5Y_=render_tinstr(1,2,code),
       _b5Z_=string_of_mtype(0,0,_Jf_,0,1,tstorage),
       _b50_=string_of_tparameter(1,tparameter);
      return caml_call4(Stdlib_printf[4],_Jg_,_b50_,_b5Z_,_b5Y_)}
    function render_tcontract_no_types(param)
     {var
       code=param[3],
       tstorage=param[2],
       tparameter=param[1],
       _b5V_=render_tinstr(0,2,code),
       _b5W_=string_of_mtype(0,0,_Jh_,0,1,tstorage),
       _b5X_=string_of_tparameter(1,tparameter);
      return caml_call4(Stdlib_printf[4],_Ji_,_b5X_,_b5W_,_b5V_)}
    function profile_of_arity(param)
     {var n=param[2],m=param[1];return [0,m,[0,n - m | 0]]}
    function arity_of_profile(param)
     {var _b5T_=param[2],_b5U_=param[1];
      if(_b5T_){var d=_b5T_[1];return [0,_b5U_,[0,_b5U_ + d | 0]]}
      return [0,_b5U_,0]}
    function symbol(x,y)
     {if(x)
       {var x$0=x[1];
        if(caml_notequal(x$0,y))
         return caml_call1(Utils_Control[15][6],cst_profile_unequal_p)}
      return caml_call1(Utils_Control[15][9],0)}
    function if_some(d,x)
     {function _b5S_(param){return x}
      return caml_call2(Utils_Option[17],_b5S_,d)}
    function same(x,match)
     {if(x)
       {var _b5R_=x[1];
        if(match)
         {var y=match[1];
          return caml_equal(_b5R_,y)
                  ?caml_call1(Utils_Control[15][9],[0,_b5R_])
                  :caml_call1(Utils_Control[15][6],cst_profile_unequal_d)}
        return caml_call1(Utils_Control[15][9],[0,_b5R_])}
      if(match)
       {var y$0=match[1];return caml_call1(Utils_Control[15][9],[0,y$0])}
      return caml_call1(Utils_Control[15][9],0)}
    function _Jj_(x){return x - 1 | 0}
    var pred=caml_call1(Utils_Option[17],_Jj_);
    function _Jk_(x){return x + 1 | 0}
    var succ=caml_call1(Utils_Option[17],_Jk_);
    function f_instr$1(i)
     {function _b49_(i)
       {if(typeof i === "number")
         {if(2 === i)
           return caml_call1(Stdlib[2],cst_profile_CONCAT_arity_undet)}
        else
         switch(i[0])
          {case 2:return caml_call1(Utils_Control[15][9],_Jm_);
           case 5:return caml_call1(Utils_Control[15][9],_Jn_);
           case 6:return caml_call1(Utils_Control[15][9],_Jo_);
           case 8:
            var match=i[1],d=match[2],p=match[1];
            return caml_call1(Utils_Control[15][9],[0,p + 1 | 0,d]);
           case 9:
            var match$0=i[2],d$0=match$0[2],p$0=match$0[1],i$0=i[1];
            return caml_call1(Utils_Control[15][9],[0,p$0 + i$0 | 0,d$0]);
           case 10:
            var
             match$1=i[1],
             d$1=match$1[2],
             p$1=match$1[1],
             _b5b_=
              function(param)
               {var _b5Q_=[0,p$1 + 1 | 0,if_some(d$1,-1)];
                return caml_call1(Utils_Control[15][9],_b5Q_)},
             _b5c_=symbol(d$1,1);
            return caml_call2(Utils_Control[15][31],_b5c_,_b5b_);
           case 11:
            var
             match$2=i[1],
             d$2=match$2[2],
             p$2=match$2[1],
             _b5d_=
              function(param)
               {var
                 _b5O_=if_some(d$2,0),
                 _b5P_=[0,caml_call2(Stdlib[17],1,p$2),_b5O_];
                return caml_call1(Utils_Control[15][9],_b5P_)},
             _b5e_=symbol(d$2,1);
            return caml_call2(Utils_Control[15][31],_b5e_,_b5d_);
           case 12:
            var
             match$3=i[1],
             d$3=match$3[2],
             p$3=match$3[1],
             _b5f_=
              function(param)
               {return caml_call1(Utils_Control[15][9],[0,p$3,_Jp_])},
             _b5g_=symbol(d$3,-1);
            return caml_call2(Utils_Control[15][31],_b5g_,_b5f_);
           case 13:
            var
             match$4=i[1],
             d$4=match$4[2],
             p$4=match$4[1],
             _b5h_=
              function(param)
               {var _b5N_=[0,p$4,if_some(d$4,0)];
                return caml_call1(Utils_Control[15][9],_b5N_)},
             _b5i_=symbol(d$4,0);
            return caml_call2(Utils_Control[15][31],_b5i_,_b5h_);
           case 18:
            var
             _b5j_=i[2],
             d2=_b5j_[2],
             p2=_b5j_[1],
             match$5=i[1],
             d1=match$5[2],
             p1=match$5[1],
             _b5k_=
              function(d)
               {var
                 _b5L_=caml_call1(pred,d),
                 _b5M_=[0,caml_call2(Stdlib[17],p1,p2) + 1 | 0,_b5L_];
                return caml_call1(Utils_Control[15][9],_b5M_)},
             _b5l_=same(d1,d2);
            return caml_call2(Utils_Control[15][31],_b5l_,_b5k_);
           case 19:
            var
             _b5m_=i[2],
             d2$0=_b5m_[2],
             p2$0=_b5m_[1],
             match$6=i[1],
             d1$0=match$6[2],
             p1$0=match$6[1],
             _b5n_=
              function(d)
               {var _b5K_=[0,caml_call2(Stdlib[17],p1$0,p2$0),d];
                return caml_call1(Utils_Control[15][9],_b5K_)},
             _b5o_=same(d1$0,d2$0);
            return caml_call2(Utils_Control[15][31],_b5o_,_b5n_);
           case 20:
            var
             _b5p_=i[2],
             d2$1=_b5p_[2],
             p2$1=_b5p_[1],
             match$7=i[1],
             d1$1=match$7[2],
             p1$1=match$7[1],
             _b5q_=
              function(d)
               {var _b5J_=[0,caml_call2(Stdlib[17],p1$1 + 1 | 0,p2$1),d];
                return caml_call1(Utils_Control[15][9],_b5J_)},
             _b5r_=same(caml_call1(pred,d1$1),d2$1);
            return caml_call2(Utils_Control[15][31],_b5r_,_b5q_);
           case 21:
            var
             _b5s_=i[2],
             d2$2=_b5s_[2],
             p2$2=_b5s_[1],
             match$8=i[1],
             d1$2=match$8[2],
             p1$2=match$8[1],
             _b5t_=
              function(d)
               {var
                 _b5I_=
                  [0,caml_call2(Stdlib[17],p1$2 + 1 | 0,p2$2 - 1 | 0),d];
                return caml_call1(Utils_Control[15][9],_b5I_)},
             _b5u_=caml_call1(pred,d2$2),
             _b5v_=same(caml_call1(succ,d1$2),_b5u_);
            return caml_call2(Utils_Control[15][31],_b5v_,_b5t_);
           case 23:
            var
             xs=i[1],
             f=
              function(param)
               {var _b5y_=param[1],_b5z_=param[2];
                if(0 === _b5z_[0])
                 {var _b5A_=_b5y_[2],_b5B_=_b5y_[1];
                  if(_b5A_)
                   {var
                     _b5C_=param[2][1],
                     _b5D_=_b5C_[2],
                     _b5E_=_b5C_[1],
                     _b5F_=_b5A_[1];
                    if(_b5D_)
                     {var
                       d2=_b5D_[1],
                       _b5G_=
                        [0,
                         caml_call2(Stdlib[17],_b5B_,_b5E_ - _b5F_ | 0),
                         [0,_b5F_ + d2 | 0]];
                      return caml_call1(Utils_Control[15][9],_b5G_)}
                    var
                     _b5H_=
                      [0,caml_call2(Stdlib[17],_b5B_,_b5E_ - _b5F_ | 0),0];
                    return caml_call1(Utils_Control[15][9],_b5H_)}
                  return caml_call1(Utils_Control[15][9],[0,_b5B_,0])}
                var e=_b5z_[1];
                return [1,e]},
             _b5w_=caml_call1(Utils_Control[15][9],_Jr_),
             _b5x_=caml_call1(Utils_Control[21],f);
            return caml_call3(Utils_List[26],_b5x_,xs,_b5w_);
           case 28:return caml_call1(Utils_Control[15][9],_Js_);
           case 16:
           case 17:
            var n=i[1];
            return caml_call1(Utils_Control[15][9],[0,n + 1 | 0,_Jq_])
           }
        var _b4$_=spec_of_instr(0,i)[4];
        if(_b4$_)
         {var a=_b4$_[1],_b5a_=profile_of_arity(a);
          return caml_call1(Utils_Control[15][9],_b5a_)}
        throw [0,Assert_failure,_Jl_]}
      var _b4__=sequence_instr_f(i);
      return caml_call2(Utils_Control[15][31],_b4__,_b49_)}
    var
     profile=
      cata_instr
       ([0,
         f_instr$1,
         function(param){return caml_call1(Utils_Control[15][9],0)}]);
    function has_arity(a,instr)
     {var pr=profile_of_arity(a);
      return caml_equal([0,pr],caml_call1(profile,[0,instr]))}
    function arity(instr)
     {var _b48_=caml_call1(profile,instr);
      return caml_call2(Utils_Control[15][11],arity_of_profile,_b48_)}
    function mtype_examples(t)
     {var _b4h_=t[1];
      switch(_b4h_[0])
       {case 0:
         var _b4i_=_b4h_[1];
         if(typeof _b4i_ === "number")
          switch(_b4i_)
           {case 0:return [0,unit$1,0];
            case 1:var _b4j_=[0,bool$1(1),0];return [0,bool$1(0),_b4j_];
            case 2:
             var
              _b4k_=[0,small_int$0(8),0],
              _b4l_=[0,small_int$0(4),_b4k_],
              _b4m_=[0,small_int$0(2),_b4l_];
             return [0,small_int$0(0),_b4m_];
            case 3:
             var
              _b4n_=[0,small_int$0(3),0],
              _b4o_=[0,small_int$0(5),_b4n_],
              _b4p_=[0,small_int$0(10),_b4o_];
             return [0,small_int$0(-2),_b4p_];
            case 4:
             var
              _b4q_=[0,small_int$0(3000000),0],
              _b4r_=[0,small_int$0(2000000),_b4q_],
              _b4s_=[0,small_int$0(1000),_b4r_];
             return [0,small_int$0(0),_b4s_];
            case 5:
             var
              _b4t_=[0,string$2(cst_SmartPy$0),0],
              _b4u_=[0,string$2(cst_bar),_b4t_],
              _b4v_=[0,string$2(cst_foo),_b4u_];
             return [0,string$2(cst$120),_b4v_];
            case 8:
             var
              _b4z_=[0,small_int$0(3000000),0],
              _b4A_=[0,small_int$0(2000000),_b4z_],
              _b4B_=[0,small_int$0(1000),_b4A_];
             return [0,small_int$0(0),_b4B_];
            case 9:
             var
              _b4C_=[0,string$2(cst_KT1),0],
              _b4D_=[0,string$2(cst_tz3),_b4C_],
              _b4E_=[0,string$2(cst_tz2),_b4D_];
             return [0,string$2(cst_tz1),_b4E_];
            case 10:
             var _b4F_=[0,string$2(cst_edpkvThfdv8Efh1MuqSTUk5EnU),0];
             return [0,string$2(cst_edpkuvNy6TuQ2z8o9wnoaTtTXk),_b4F_];
            case 11:
             var
              _b4G_=[0,string$2(cst_tz3$0),0],
              _b4H_=[0,string$2(cst_tz2$0),_b4G_];
             return [0,string$2(cst_tz1$0),_b4H_];
            case 12:
             var
              _b4I_=[0,string$2(cst_SG1c),0],
              _b4J_=[0,string$2(cst_SG1b),_b4I_];
             return [0,string$2(cst_SG1a),_b4J_];
            case 13:
             var _b4K_=[0,string$2(cst_edsigu),0];
             return [0,string$2(cst_edsigt),_b4K_];
            case 14:return [0,string$2(cst_operation$0),0];
            case 15:return [0,string$2(cst_no_value_in_type_never),0];
            default:
             var
              _b4w_=[0,bytes$2(caml_call1(Utils_Misc[4][2],cst_0FFF)),0],
              _b4x_=[0,bytes$2(caml_call1(Utils_Misc[4][2],cst_010203)),_b4w_],
              _b4y_=[0,bytes$2(caml_call1(Utils_Misc[4][2],cst_00)),_b4x_];
             return [0,bytes$2(cst$121),_b4y_]}
         else
          return 0 === _b4i_[0]
                  ?[0,seq(0),0]
                  :[0,string$2(cst_sapling_transaction$0),0];
        case 1:
         switch(_b4h_[1])
          {case 0:
            var
             t$0=_b4h_[2],
             _b4L_=mtype_examples(t$0),
             _b4M_=caml_call2(Utils_List[20],some,_b4L_);
            return caml_call2(Stdlib[37],_b4M_,[0,none,0]);
           case 1:
            var t$1=_b4h_[2],_b4N_=[0,seq(0),0];
            return [0,seq(mtype_examples(t$1)),_b4N_];
           case 2:var t$2=_b4h_[2];return [0,seq(mtype_examples(t$2)),0];
           case 3:
            var
             _b4O_=[0,string$2(cst_KT1d),0],
             _b4P_=[0,string$2(cst_KT1c),_b4O_],
             _b4Q_=[0,string$2(cst_KT1b),_b4P_];
            return [0,string$2(cst_KT1a),_b4Q_];
           default:return [0,string$2(cst_no_example_for_tickets),0]}
        case 2:
         var _b4R_=_b4h_[1];
         if(typeof _b4R_ === "number")
          {if(0 === _b4R_)return [0,seq(0),0];
           var
            v=_b4h_[3],
            k=_b4h_[2],
            l1=mtype_examples(k),
            l2=mtype_examples(v),
            acc=0,
            l1$0=l1,
            l2$0=l2;
           for(;;)
            {if(l1$0 && l2$0)
              {var
                l2$1=l2$0[2],
                a2=l2$0[1],
                l1$1=l1$0[2],
                a1=l1$0[1],
                acc$0=[0,f$1(a1,a2),acc],
                acc=acc$0,
                l1$0=l1$1,
                l2$0=l2$1;
               continue}
             var l=caml_call1(Utils_List[12],acc);
             return [0,seq(l),0]}}
         else
          {if(0 === _b4R_[0])
            {var
              snd=_b4h_[3],
              fst=_b4h_[2],
              l1$2=mtype_examples(fst),
              match=mtype_examples(snd);
             if(l1$2)
              {var _b4S_=l1$2[2];
               if(_b4S_ && match)
                {var _b4T_=match[2];
                 if(_b4T_)
                  {var
                    b2=_b4T_[1],
                    b1=match[1],
                    a2$0=_b4S_[1],
                    a1$0=l1$2[1],
                    _b4U_=[0,pair$0(a2$0,b1),0],
                    _b4V_=[0,pair$0(a1$0,b2),_b4U_],
                    _b4W_=[0,pair$0(a2$0,b2),_b4V_];
                   return [0,pair$0(a1$0,b1),_b4W_]}}}
             var
              _b4X_=0,
              _b4Y_=
               function(acc,b)
                {function _b47_(acc,a){return [0,pair$0(a,b),acc]}
                 return caml_call3(Utils_List[25],_b47_,acc,l1$2)};
             return caml_call3(Utils_List[25],_b4Y_,_b4X_,match)}
           var
            right=_b4h_[3],
            left=_b4h_[2],
            l1$3=mtype_examples(left),
            match$0=mtype_examples(right);
           if(l1$3)
            {var _b4Z_=l1$3[2];
             if(_b4Z_ && match$0)
              {var _b40_=match$0[2];
               if(_b40_)
                {var
                  b2$0=_b40_[1],
                  b1$0=match$0[1],
                  a2$1=_b4Z_[1],
                  a1$1=l1$3[1],
                  _b41_=[0,right$0(b2$0),0],
                  _b42_=[0,right$0(b1$0),_b41_],
                  _b43_=[0,left$0(a2$1),_b42_];
                 return [0,left$0(a1$1),_b43_]}}}
           var
            _b44_=0,
            _b45_=
             function(acc,b)
              {function _b46_(acc,a){return [0,pair$0(a,b),acc]}
               return caml_call3(Utils_List[25],_b46_,acc,l1$3)};
           return caml_call3(Utils_List[25],_b45_,_b44_,match$0)}
        default:
         var s=_b4h_[1];
         return [0,string$2(caml_call2(Stdlib_printf[4],_Jt_,s)),0]}}
    function on_instrs(f)
     {function f_instr(instr){return caml_call1(f,[0,instr])}
      function f_literal(literal){return [0,literal]}
      return cata_literal([0,f_instr,f_literal])}
    function display_instr(t1,instr)
     {var tinstr=typecheck_instr(0,[0,_ze_,0],[0,[0,t1,0]],instr);
      return display_tinstr(0,0,0,tinstr)}
    var
     _Ju_=[0,literal$0,mtype$0,instruction$0],
     _Jv_=[0,mtype,mtype_annotated,instruction,literal],
     _Jw_=
      [0,
       int$3,
       small_int$0,
       bool$1,
       string$2,
       bytes$2,
       unit$1,
       left$0,
       right$0,
       some,
       pair$0,
       none,
       list$0,
       set$1,
       mk_map,
       sapling_empty_state,
       instr,
       to_michelson_string,
       f$1,
       seq],
     Smartml_Michelson=
      [0,
       _yM_,
       _yN_,
       _yO_,
       _yP_,
       _yQ_,
       _yR_,
       _yS_,
       _yT_,
       _yU_,
       _yV_,
       _yW_,
       _yX_,
       _yY_,
       _yZ_,
       _y0_,
       _y1_,
       _y2_,
       _y3_,
       _y4_,
       _y5_,
       _y6_,
       _y7_,
       _y8_,
       _y9_,
       _y__,
       _y$_,
       _za_,
       _zb_,
       _zc_,
       _zd_,
       _ze_,
       _zf_,
       _zg_,
       _zh_,
       _zi_,
       _zj_,
       _zk_,
       _zl_,
       _zm_,
       _zn_,
       _zo_,
       _zp_,
       _zq_,
       _zr_,
       _zs_,
       _zt_,
       _zu_,
       _zv_,
       _zz_,
       _zA_,
       _zB_,
       _zC_,
       _zD_,
       _zE_,
       _zF_,
       _zG_,
       _zH_,
       _zI_,
       _zJ_,
       _zK_,
       _zL_,
       _zM_,
       _zN_,
       _zO_,
       _zP_,
       _zQ_,
       _zR_,
       _zS_,
       _zT_,
       _zU_,
       _zV_,
       _zW_,
       _zX_,
       _zY_,
       _zZ_,
       _z0_,
       _z1_,
       _z2_,
       _z3_,
       _z4_,
       _z5_,
       _z6_,
       cata_mtype_stripped,
       remove_annots,
       two_field_annots,
       _zw_,
       _zx_,
       _zy_,
       equal_ad_step,
       pp_ad_step,
       show_ad_step,
       equal_tezos_int,
       compare_tezos_int,
       pp_tezos_int,
       show_tezos_int,
       equal_stack,
       compare_stack,
       pp_stack,
       show_stack,
       equal_instr_f,
       compare_instr_f,
       pp_instr_f,
       show_instr_f,
       map_instr_f,
       fold_instr_f,
       equal_literal_f,
       compare_literal_f,
       pp_literal_f,
       show_literal_f,
       map_literal_f,
       fold_literal_f,
       equal_instr,
       equal_literal,
       compare_instr,
       compare_literal,
       pp_instr,
       show_instr,
       pp_literal,
       show_literal,
       map_instr,
       map_literal,
       fold_instr,
       fold_literal,
       equal_tinstr,
       equal_tliteral,
       compare_tinstr,
       compare_tliteral,
       pp_tinstr,
       show_tinstr,
       pp_tliteral,
       show_tliteral,
       count_bigmaps,
       _GF_,
       _Jw_,
       unifiable_types,
       unify_stacks,
       initial_stack,
       typecheck_instr,
       erase_types_instr,
       erase_types_literal,
       strip_annots,
       strip_annot_variable,
       string_of_mtype,
       string_of_ok_stack,
       string_of_stack,
       string_of_ad_path,
       string_of_literal,
       string_of_tliteral,
       _Jv_,
       _Ju_,
       pp_contract$0,
       show_contract$0,
       pp_tcontract$0,
       show_tcontract$0,
       typecheck_contract,
       erase_types_contract$0,
       to_micheline_tcontract,
       display_tcontract,
       render_tcontract,
       render_tcontract_no_types,
       has_error_tcontract,
       unexpected_final_stack_error,
       cata_instr,
       cata_tinstr,
       has_arity,
       mtype_examples,
       unpair_size,
       is_hot$1,
       is_duppable,
       unifiable_ok_stacks,
       para_alg$0,
       on_instrs,
       spec_of_prim1,
       spec_of_instr,
       arity,
       is_commutative,
       typecheck_literal,
       cata_literal,
       tcata,
       cata_tliteral,
       render_tinstr,
       display_tinstr,
       sequence_literal_f,
       sequence_instr_f,
       display_instr];
    caml_register_global(6473,Smartml_Michelson,"Smartml__Michelson");
    function intType(isNat)
     {var match=get(isNat);return match?match[1]?3900609:3654863:785140586}
    var Smartml_Typing=[0,intType];
    caml_register_global(6474,Smartml_Typing,"Smartml__Typing");
    function Build_printer(Language)
     {var language=Language[1];
      function _bUc_(param)
       {if(0 === param[0])
         {var match=param[1],target=match[2],source=match[1];
          return caml_string_equal(source,target)
                  ?caml_call2(Stdlib_printf[4],_Jx_,source)
                  :caml_call3(Stdlib_printf[4],_Jy_,source,target)}
        var l2=param[2],l1=param[1],_b4f_=_bUc_(l2),_b4g_=_bUc_(l1);
        return caml_call3(Stdlib_printf[4],_Jz_,_b4g_,_b4f_)}
      function layout_to_string(layout)
       {var match=get(layout);
        if(match)
         {var l=match[1],_b4e_=_bUc_(l);
          return caml_call2(Stdlib_printf[4],_JA_,_b4e_)}
        return cst$122}
      function unknown_memo(memo)
       {var
         _b4c_=get(memo),
         _b4d_=caml_call2(Utils_Option[17],Stdlib[33],_b4c_);
        return caml_call2(Utils_Option[2],_b4d_,cst$123)}
      var
       html=[0,1,string$3[2],string$3[3]],
       htmlStripStrings=[0,html[1],1,html[3]],
       types=[0,html[1],html[2],1],
       Options=[0,string$3,html,htmlStripStrings,types];
      function html_of_record_list(param,f)
       {var data=param[2],columns=param[1];
        function ppRow(row)
         {function _b3__(s)
           {var _b4b_=caml_call1(f,s);
            return caml_call2(Stdlib_printf[4],_JB_,_b4b_)}
          var
           _b3$_=caml_call2(Utils_List[20],_b3__,row),
           _b4a_=caml_call2(Utils_String[7],cst$124,_b3$_);
          return caml_call2(Stdlib_printf[4],_JC_,_b4a_)}
        var
         _b34_=caml_call2(Utils_List[20],ppRow,data),
         _b35_=caml_call2(Utils_String[7],cst$125,_b34_);
        function _b36_(s)
         {var _b39_=caml_call1(Utils_String[31],s);
          return caml_call2(Stdlib_printf[4],_JD_,_b39_)}
        var
         _b37_=caml_call2(Utils_List[20],_b36_,columns),
         _b38_=caml_call2(Utils_String[7],cst$126,_b37_);
        return caml_call3(Stdlib_printf[4],_JE_,_b38_,_b35_)}
      function ppAmount(html,amount)
       {var
         oneMillion=caml_call1(Utils_Bigint[5],1000000),
         match=caml_call2(Big_int[14],amount,oneMillion),
         modulo=match[2],
         quotient=match[1];
        if(html)
         {var mutez=caml_call1(Big_int[33],amount);
          if(7 <= caml_ml_string_length(mutez))
           var mutez$0=mutez;
          else
           var
            _b31_=
             caml_call3
              (Utils_String[4],
               cst_0000000,
               0,
               7 - caml_ml_string_length(mutez) | 0),
            mutez$0=caml_call2(Stdlib[28],_b31_,mutez);
          var
           _b3Z_=
            caml_call3
             (Utils_String[4],
              mutez$0,
              caml_ml_string_length(mutez$0) - 6 | 0,
              6),
           _b30_=
            caml_call3
             (Utils_String[4],
              mutez$0,
              0,
              caml_ml_string_length(mutez$0) - 6 | 0);
          return caml_call3(Stdlib_printf[4],_JF_,_b30_,_b3Z_)}
        if(0 === caml_call2(Big_int[23],modulo,Big_int[1]))
         {var _b32_=caml_call1(Big_int[33],quotient);
          return caml_call2(Stdlib_printf[4],_JG_,_b32_)}
        var _b33_=caml_call1(Big_int[33],amount);
        return caml_call2(Stdlib_printf[4],_JH_,_b33_)}
      function literal_to_sp_string(html,strip_strings)
       {return function(s$11)
         {function entry_point_opt(ppf,param)
           {if(param)
             {var ep=param[1];
              return caml_call3(Stdlib_format[123],ppf,_JI_,ep)}
            return caml_call2(Stdlib_format[123],ppf,_JJ_)}
          function apply(name,arguments$0)
           {switch(language)
             {case 0:
               var _b3Y_=caml_call2(Utils_String[7],cst$127,arguments$0);
               return caml_call3(Stdlib_format[126],_JK_,name,_b3Y_);
              case 1:
               var s=caml_call2(Utils_String[7],cst$128,arguments$0);
               return caml_string_equal(s,cst$129)
                       ?s
                       :caml_call3(Stdlib_format[126],_JL_,name,s);
              default:throw [0,Assert_failure,_JM_]}}
          switch(language)
           {case 0:var quote=cst$130;break;
            case 1:var quote=cst$132;break;
            default:var quote=cst$133}
          function mono(name,s)
           {switch(language)
             {case 0:return apply(caml_call2(Stdlib[28],cst_sp,name),[0,s,0]);
              case 1:var s$0=apply(name,[0,s,0]);return s$0;
              default:throw [0,Assert_failure,_JN_]}}
          function mono_string(name,s)
           {switch(language)
             {case 0:return mono(name,caml_call2(Stdlib_format[126],_JO_,s));
              case 1:return mono(name,caml_call2(Stdlib_format[126],_JP_,s));
              default:throw [0,Assert_failure,_JQ_]}}
          function mono_hex(name,s)
           {var _b3X_=caml_call1(Utils_Misc[4][1],s);
            return mono_string(name,caml_call2(Stdlib[28],cst_0x$1,_b3X_))}
          if(typeof s$11 === "number")
           switch(language)
            {case 0:return cst_sp_unit;
             case 1:return cst$131;
             default:throw [0,Assert_failure,_JR_]}
          else
           switch(s$11[0])
            {case 0:
              var x=s$11[1],_b3W_=caml_call1(Stdlib[30],x);
              return caml_call1(Utils_String[31],_b3W_);
             case 1:var i=s$11[1];return caml_call1(Big_int[33],i);
             case 2:
              var s=s$11[1];
              return caml_equal(strip_strings,_JS_)
                      ?s
                      :caml_call4(Stdlib_format[126],_JT_,quote,s,quote);
             case 3:var s$0=s$11[1];return mono_hex(cst_bytes$2,s$0);
             case 4:var s$1=s$11[1];return mono_hex(cst_chain_id$1,s$1);
             case 5:
              var i$0=s$11[1];
              return mono(cst_timestamp$0,caml_call1(Big_int[33],i$0));
             case 6:var i$1=s$11[1];return ppAmount(html,i$1);
             case 7:
              var epo=s$11[2],s$2=s$11[1];
              return caml_call4
                      (Stdlib_format[127],_JU_,s$2,entry_point_opt,epo);
             case 8:var s$3=s$11[1];return mono_string(cst_key$2,s$3);
             case 9:var s$4=s$11[1];return mono_string(cst_secret_key$1,s$4);
             case 10:var s$5=s$11[1];return mono_string(cst_key_hash$0,s$5);
             case 11:var s$6=s$11[1];return mono_string(cst_baker_hash$0,s$6);
             case 12:var s$7=s$11[1];return mono_string(cst_signature$0,s$7);
             case 13:return cst_sapling_test_state;
             case 14:return cst_sapling_test_transaction;
             case 15:var s$8=s$11[1];return mono_hex(cst_bls12_381_g1$0,s$8);
             case 16:var s$9=s$11[1];return mono_hex(cst_bls12_381_g2$0,s$9);
             default:var s$10=s$11[1];return mono_hex(cst_bls12_381_fr$0,s$10)}}}
      function literal_to_string(opt,_b3w_,lit)
       {if(opt)var sth=opt[1],deep=sth;else var deep=0;
        if(_b3w_)var sth$0=_b3w_[1],options=sth$0;else var options=Options[1];
        if(typeof lit === "number")
         return options[1]?cst$134:cst_sp_unit$0;
        else
         switch(lit[0])
          {case 0:
            var x=lit[1],_b3x_=caml_call1(Stdlib[30],x);
            return caml_call1(Utils_String[31],_b3x_);
           case 1:
            var i=lit[1],pp=caml_call1(Big_int[33],i);
            if(options[1] && ! deep)
             return caml_call2(Stdlib_printf[4],_JV_,pp);
            return pp;
           case 2:
            var s=lit[1];
            return options[2]?s:caml_call2(Stdlib_printf[4],_JW_,s);
           case 3:
            var s$0=lit[1];
            if(options[1])
             {var _b3y_=caml_call1(Utils_Misc[4][1],s$0);
              return caml_call2(Stdlib_printf[4],_JX_,_b3y_)}
            var _b3z_=caml_call1(Utils_Misc[4][1],s$0);
            return caml_call2(Stdlib_printf[4],_JY_,_b3z_);
           case 4:
            var s$1=lit[1];
            if(options[1])
             {var _b3A_=caml_call1(Utils_Misc[4][1],s$1);
              return caml_call2(Stdlib_printf[4],_JZ_,_b3A_)}
            var _b3B_=caml_call1(Utils_Misc[4][1],s$1);
            return caml_call2(Stdlib_printf[4],_J0_,_b3B_);
           case 5:
            var i$0=lit[1];
            if(options[1])
             {var _b3C_=caml_call1(Big_int[33],i$0);
              return caml_call2(Stdlib_printf[4],_J1_,_b3C_)}
            var _b3D_=caml_call1(Big_int[33],i$0);
            return caml_call2(Stdlib_printf[4],_J2_,_b3D_);
           case 6:
            var i$1=lit[1],amount=ppAmount(options[1],i$1);
            return options[1]?caml_call2(Stdlib_printf[4],_J3_,amount):amount;
           case 7:
            var address=lit[1];
            return options[1]
                    ?caml_call2(Stdlib_printf[4],_J4_,address)
                    :caml_call1(literal_to_sp_string(0,0),lit);
           case 8:
            var s$2=lit[1];
            return options[1]
                    ?caml_call2(Stdlib_printf[4],_J5_,s$2)
                    :caml_call2(Stdlib_printf[4],_J6_,s$2);
           case 9:
            var s$3=lit[1];
            return options[1]
                    ?caml_call2(Stdlib_printf[4],_J7_,s$3)
                    :caml_call2(Stdlib_printf[4],_J8_,s$3);
           case 10:
            var s$4=lit[1];
            return options[1]
                    ?caml_call2(Stdlib_printf[4],_J9_,s$4)
                    :caml_call2(Stdlib_printf[4],_J__,s$4);
           case 11:
            var s$5=lit[1];
            return options[1]
                    ?caml_call2(Stdlib_printf[4],_J$_,s$5)
                    :caml_call2(Stdlib_printf[4],_Ka_,s$5);
           case 12:
            var s$6=lit[1];
            return options[1]
                    ?caml_call2(Stdlib_printf[4],_Kb_,s$6)
                    :caml_call2(Stdlib_printf[4],_Kc_,s$6);
           case 13:
            var _b3E_=lit[1];
            if(_b3E_[1])
             {var
               elements=_b3E_[3],
               _b3F_=caml_call2(Utils_List[52],caml_compare,elements),
               _b3G_=
                function(param)
                 {var amount=param[2],key=param[1];
                  return [0,key,[0,caml_call1(Utils_Bigint[38],amount),0]]},
               l=caml_call2(Utils_List[20],_b3G_,_b3F_);
              if(options[1])
               return html_of_record_list([0,_Kd_,l],function(s){return s});
              var
               _b3H_=caml_call1(Utils_String[7],cst$135),
               _b3I_=caml_call2(Utils_List[20],_b3H_,l),
               _b3J_=caml_call2(Utils_String[7],cst$136,_b3I_);
              return caml_call2(Stdlib_printf[4],_Ke_,_b3J_)}
            if(options[1])
             return html_of_record_list(_Kf_,function(s){return s});
            var
             _b3K_=caml_call1(Utils_String[7],cst$137),
             _b3L_=caml_call2(Utils_List[20],_b3K_,0),
             _b3M_=caml_call2(Utils_String[7],cst$138,_b3L_);
            return caml_call2(Stdlib_printf[4],_Kg_,_b3M_);
           case 14:
            var
             match=lit[1],
             amount$0=match[3],
             target=match[2],
             source=match[1],
             _b3N_=caml_call1(Utils_Bigint[38],amount$0),
             _b3O_=caml_call2(Utils_Option[45],cst$139,target),
             _b3P_=caml_call2(Utils_Option[45],cst$140,source);
            return caml_call4(Stdlib_printf[4],_Kh_,_b3P_,_b3O_,_b3N_);
           case 15:
            var s$7=lit[1];
            if(options[1])
             {var _b3Q_=caml_call1(Utils_Misc[4][1],s$7);
              return caml_call2(Stdlib_printf[4],_Ki_,_b3Q_)}
            var _b3R_=caml_call1(Utils_Misc[4][1],s$7);
            return caml_call2(Stdlib_printf[4],_Kj_,_b3R_);
           case 16:
            var s$8=lit[1];
            if(options[1])
             {var _b3S_=caml_call1(Utils_Misc[4][1],s$8);
              return caml_call2(Stdlib_printf[4],_Kk_,_b3S_)}
            var _b3T_=caml_call1(Utils_Misc[4][1],s$8);
            return caml_call2(Stdlib_printf[4],_Kl_,_b3T_);
           default:
            var s$9=lit[1];
            if(options[1])
             {var _b3U_=caml_call1(Utils_Misc[4][1],s$9);
              return caml_call2(Stdlib_printf[4],_Km_,_b3U_)}
            var _b3V_=caml_call1(Utils_Misc[4][1],s$9);
            return caml_call2(Stdlib_printf[4],_Kn_,_b3V_)}}
      function _bUd_(multiline,toplevel,protect,opt,_b2J_,t)
       {var toplevel$0=toplevel,protect$0=protect,opt$0=opt,_b2K_=_b2J_,t$0=t;
        for(;;)
         {if(opt$0)var sth=opt$0[1],options=sth;else var options=Options[1];
          if(_b2K_)var sth$0=_b2K_[1],indent=sth$0;else var indent=cst$155;
          var
           prot$0=
            function(protect)
             {function prot(s)
               {switch(language)
                 {case 0:return s;
                  case 1:
                   return caml_equal(protect,_Ko_)
                           ?caml_call2(Stdlib_printf[4],_Kp_,s)
                           :s;
                  default:return s}}
              return prot},
           prot=prot$0(protect$0),
           shiftIdent=options[1]?cst_nbsp_nbsp:cst$154,
           cst=
            function(name)
             {switch(language)
               {case 0:
                 var _b3u_=caml_call1(Utils_String[31],name);
                 return caml_call2(Stdlib[28],cst_sp_T,_b3u_);
                case 1:return name;
                default:
                 var _b3v_=caml_call1(Utils_String[31],name);
                 return caml_call2(Stdlib[28],cst_T,_b3v_)}},
           mono$0=
            function(prot,cst)
             {function mono(name,arg)
               {var name$0=cst(name);
                switch(language)
                 {case 0:return caml_call3(Stdlib_printf[4],_Kq_,name$0,arg);
                  case 1:
                   return prot(caml_call3(Stdlib_printf[4],_Kr_,arg,name$0));
                  default:return caml_call3(Stdlib_printf[4],_Ks_,name$0,arg)}}
              return mono},
           mono=mono$0(prot,cst),
           match=getRepr(t$0);
          if(typeof match === "number")
           return cst(cst_secretkey);
          else
           switch(match[0])
            {case 1:
              var _b2L_=match[1];
              if(typeof _b2L_ === "number")
               switch(_b2L_)
                {case 0:return cst(cst_unit$1);
                 case 1:return cst(cst_bool$0);
                 case 4:return cst(cst_mutez$0);
                 case 5:return cst(cst_string$2);
                 case 6:return cst(cst_bytes$3);
                 case 7:return cst(cst_chainId);
                 case 8:return cst(cst_timestamp$1);
                 case 9:return cst(cst_address$3);
                 case 10:return cst(cst_key$3);
                 case 11:return cst(cst_keyHash);
                 case 12:return cst(cst_bakerHash);
                 case 13:return cst(cst_signature$1);
                 case 14:return cst(cst_operation$1);
                 case 15:return cst(cst_never$0);
                 case 16:return cst(cst_bls12_381_g1$1);
                 case 17:return cst(cst_bls12_381_g2$1);
                 case 18:return cst(cst_bls12_381_fr$1)
                 }
              throw [0,Assert_failure,_Ku_];
             case 2:
              switch(match[1])
               {case 0:
                 var
                  t$1=match[2],
                  _b2M_=caml_call2(Stdlib[28],shiftIdent,shiftIdent);
                 return mono
                         (cst_option$0,
                          _bUd_
                           (multiline,
                            0,
                            0,
                            [0,options],
                            [0,caml_call2(Stdlib[28],indent,_b2M_)],
                            t$1));
                case 1:
                 var t$2=match[2];
                 return mono
                         (cst_list$0,
                          _bUd_
                           (multiline,
                            0,
                            0,
                            [0,options],
                            [0,caml_call2(Stdlib[28],indent,shiftIdent)],
                            t$2));
                case 2:
                 var
                  telement=match[2],
                  _b2N_=
                   _bUd_
                    (multiline,
                     0,
                     0,
                     [0,options],
                     [0,caml_call2(Stdlib[28],indent,shiftIdent)],
                     telement);
                 return caml_call2(Stdlib_printf[4],_Kv_,_b2N_);
                case 3:
                 var t$3=match[2];
                 return mono
                         (cst_contract$3,
                          _bUd_
                           (multiline,
                            0,
                            0,
                            [0,options],
                            [0,caml_call2(Stdlib[28],indent,shiftIdent)],
                            t$3));
                default:
                 var t$4=match[2];
                 return mono
                         (cst_ticket$0,
                          _bUd_
                           (multiline,
                            0,
                            0,
                            [0,options],
                            [0,caml_call2(Stdlib[28],indent,shiftIdent)],
                            t$4))}
             case 3:
              var _b2O_=match[1];
              if(typeof _b2O_ === "number")
               {if(_b2O_)
                 {var tvalue=match[3],tkey=match[2];
                  if(typeof _b2O_ === "number")
                   {var switch$0=0;
                    switch(_b2O_)
                     {case 1:var name=cst(cst_map$0);switch$0 = 1;break;
                      case 2:var name=cst(cst_bigMap);switch$0 = 1;break
                      }
                    if(switch$0)
                     {var
                       _b2P_=
                        _bUd_
                         (multiline,
                          0,
                          0,
                          [0,options],
                          [0,caml_call2(Stdlib[28],indent,shiftIdent)],
                          tvalue),
                       _b2Q_=
                        _bUd_
                         (multiline,
                          0,
                          0,
                          [0,options],
                          [0,caml_call2(Stdlib[28],indent,shiftIdent)],
                          tkey);
                      return caml_call4(Stdlib_printf[4],_Kx_,name,_b2Q_,_b2P_)}}
                  throw [0,Assert_failure,_Kw_]}
                var
                 t2=match[3],
                 t1=match[2],
                 _b2R_=
                  _bUd_
                   (multiline,
                    0,
                    0,
                    [0,options],
                    [0,caml_call2(Stdlib[28],indent,shiftIdent)],
                    t2),
                 _b2S_=
                  _bUd_
                   (multiline,
                    0,
                    0,
                    [0,options],
                    [0,caml_call2(Stdlib[28],indent,shiftIdent)],
                    t1);
                return caml_call3(Stdlib_printf[4],_Ky_,_b2S_,_b2R_)}
              throw [0,Assert_failure,_Kz_];
             case 4:
              var isNat=match[1],match$0=intType(isNat);
              return 3900609 === match$0
                      ?cst(cst_nat$0)
                      :785140586 <= match$0?cst(cst_intOrNat):cst(cst_int$2);
             case 5:
              var cases=match[2],t$5=match[1],match$1=get(cases);
              if(match$1)
               var
                match$2=match$1[1],
                cases$0=match$2[2],
                final$0=match$2[1],
                cases$1=cases$0,
                final$1=final$0;
              else
               var cases$1=0,final$1=0;
              var
               final$2=final$1?cst$141:cst_final_False,
               _b2T_=_bUd_(multiline,0,0,[0,options],0,t$5),
               _b2U_=function(eta){return literal_to_string(0,0,eta)},
               _b2V_=caml_call2(Utils_List[20],_b2U_,cases$1),
               _b2W_=caml_call2(Utils_String[7],cst$142,_b2V_);
              return caml_call4(Stdlib_printf[4],_KA_,_b2W_,_b2T_,final$2);
             case 6:
              var row=match[2],layout=match[1];
              if(options[1])
               {var
                 _b2X_=layout_to_string(layout),
                 _b2Y_=
                  function(param)
                   {var
                     t=param[2],
                     s=param[1],
                     _b3r_=caml_call2(Stdlib[28],shiftIdent,shiftIdent),
                     _b3s_=
                      _bUd_
                       (multiline,
                        0,
                        0,
                        [0,options],
                        [0,caml_call2(Stdlib[28],indent,_b3r_)],
                        t),
                     _b3t_=caml_call2(Stdlib[28],indent,shiftIdent);
                    return caml_call4(Stdlib_printf[4],_KB_,_b3t_,s,_b3s_)},
                 _b2Z_=caml_call2(Utils_List[20],_b2Y_,row),
                 _b20_=caml_call2(Utils_String[7],cst$143,_b2Z_),
                 _b21_=caml_equal(toplevel$0,_KC_)?cst$144:cst_br;
                return caml_call6
                        (Stdlib_printf[4],_KD_,_b21_,indent,_b20_,indent,_b2X_)}
              var _b22_=layout_to_string(layout);
              if(multiline)
               var
                _b23_=caml_call2(Stdlib[28],indent,shiftIdent),
                _b24_=caml_call2(Stdlib[28],cst$145,_b23_);
              else
               var _b24_=cst$148;
              var _b25_=print_row([0,options],[0,_b24_],multiline,row);
              if(multiline)
               var
                _b26_=caml_call2(Stdlib[28],indent,shiftIdent),
                _b27_=caml_call2(Stdlib[28],cst$146,_b26_);
              else
               var _b27_=cst$147;
              return prot(caml_call4(Stdlib_printf[4],_KE_,_b27_,_b25_,_b22_));
             case 7:
              var row$0=match[2],layout$0=match[1];
              if(options[1])
               {var
                 ppVariant=
                  function(param)
                   {var t=param[2],s=param[1],match=getRepr(t),switch$0=0;
                    if(typeof match !== "number" && 1 === match[0])
                     {var _b3q_=match[1];
                      if(typeof _b3q_ === "number" && ! _b3q_)
                       {var t$0=cst$149;switch$0 = 1}}
                    if(! switch$0)
                     var
                      _b3p_=
                       _bUd_
                        (multiline,
                         0,
                         0,
                         [0,options],
                         [0,caml_call2(Stdlib[28],indent,shiftIdent)],
                         t),
                      t$0=caml_call2(Stdlib_printf[4],_KF_,_b3p_);
                    return caml_call4(Stdlib_printf[4],_KG_,indent,s,t$0)},
                 _b28_=caml_call2(Utils_List[20],ppVariant,row$0),
                 _b29_=caml_call2(Utils_String[7],cst_br$0,_b28_),
                 _b2__=caml_equal(toplevel$0,_KH_)?cst$150:cst_br$1;
                return caml_call2(Stdlib[28],_b2__,_b29_)}
              var
               _b2$_=layout_to_string(layout$0),
               _b3a_=print_row([0,options],0,multiline,row$0);
              return caml_call3(Stdlib_printf[4],_KI_,_b3a_,_b2$_);
             case 8:
              var _b3b_=match[1][1];
              switch(_b3b_[0])
               {case 0:break;
                case 1:
                 var l=_b3b_[1],_b3c_=print_row([0,options],0,multiline,l);
                 return caml_call2(Stdlib_printf[4],_KJ_,_b3c_);
                case 2:
                 var
                  l$0=_b3b_[1],
                  _b3d_=
                   function(param)
                    {var
                      t=param[2],
                      i=param[1],
                      _b3o_=_bUd_(multiline,0,0,[0,options],0,t);
                     return caml_call3(Stdlib_printf[4],_KK_,i,_b3o_)},
                  _b3e_=caml_call2(Utils_List[20],_b3d_,l$0),
                  _b3f_=caml_call2(Utils_String[7],cst$151,_b3e_);
                 return caml_call2(Stdlib_printf[4],_KL_,_b3f_);
                case 3:
                 var
                  l$1=_b3b_[1],
                  _b3g_=
                   function(param)
                    {var
                      t=param[2],
                      s=param[1],
                      _b3n_=_bUd_(multiline,0,0,[0,options],0,t);
                     return caml_call3(Stdlib_printf[4],_KM_,s,_b3n_)},
                  _b3h_=caml_call2(Utils_List[20],_b3g_,l$1),
                  _b3i_=caml_call2(Utils_String[7],cst$152,_b3h_);
                 return caml_call2(Stdlib_printf[4],_KN_,_b3i_);
                default:
                 var
                  t$6=_b3b_[1],
                  toplevel$0=0,
                  protect$0=0,
                  opt$0=0,
                  _b2K_=0,
                  t$0=t$6;
                 continue}
              break;
             case 9:
              var _b3j_=match[1];
              if(_b3j_)
               {var _b3k_=_b3j_[2];
                if(_b3k_ && ! _b3k_[2])
                 {var
                   t2$0=_b3k_[1],
                   t1$0=_b3j_[1],
                   t1$1=_bUd_(multiline,0,0,[0,options],0,t1$0),
                   t2$1=_bUd_(multiline,0,0,[0,options],0,t2$0);
                  switch(language)
                   {case 0:return caml_call3(Stdlib_printf[4],_KP_,t1$1,t2$1);
                    case 1:return caml_call3(Stdlib_printf[4],_KQ_,t1$1,t2$1);
                    default:return caml_call3(Stdlib_printf[4],_KR_,t1$1,t2$1)}}}
              var
               _b3l_=function(eta){return _bUd_(multiline,0,0,0,0,eta)},
               ts=caml_call2(Utils_List[20],_b3l_,_b3j_),
               _b3m_=caml_call2(Utils_String[7],cst$153,ts);
              return caml_call2(Stdlib_printf[4],_KO_,_b3m_);
             case 10:
              var memo=match[1];
              return mono(cst_saplingState,unknown_memo(memo));
             case 11:
              var memo$0=match[1];
              return mono(cst_saplingTransaction,unknown_memo(memo$0))
             }
          return options[1]
                  ?cst_span_class_partialType_sp_
                  :caml_call1(Stdlib_printf[4],_Kt_)}}
      function print_row(opt,_b2F_,multiline,row)
       {if(opt)var sth=opt[1],options=sth;else var options=Options[1];
        if(_b2F_)var sth$0=_b2F_[1],sep=sth$0;else var sep=cst$156;
        function _b2G_(param)
         {var
           t=param[2],
           s=param[1],
           _b2I_=_bUd_(multiline,0,0,[0,options],0,t);
          return caml_call3(Stdlib_printf[4],_KS_,s,_b2I_)}
        var _b2H_=caml_call2(Utils_List[20],_b2G_,row);
        return caml_call2(Utils_String[7],sep,_b2H_)}
      function type_to_string(multiline,toplevel,protect,opt,t)
       {if(opt)var sth=opt[1],options=sth;else var options=Options[1];
        var multiline$0=caml_equal(multiline,_KT_);
        if(options[1])
         {var _b2E_=_bUd_(multiline$0,toplevel,protect,[0,options],0,t);
          return caml_call2(Stdlib_printf[4],_KU_,_b2E_)}
        return _bUd_(multiline$0,toplevel,protect,[0,options],0,t)}
      function string_of_contract_id(param)
       {if(0 === param[0])
         {var match=param[1],static_id=match[1];
          return caml_call2(Stdlib_printf[4],_KV_,static_id)}
        var match$0=param[1],dynamic_id=match$0[1];
        return caml_call2(Stdlib_printf[4],_KW_,dynamic_id)}
      function address_of_contract_id(html,contract_id,entry_point)
       {if(0 === contract_id[0])
         var
          match=contract_id[1],
          static_id=match[1],
          address=caml_call3(Utils_Bs58[4],1,static_id,entry_point);
        else
         var
          match$0=contract_id[1],
          dynamic_id=match$0[1],
          address=caml_call3(Utils_Bs58[4],0,dynamic_id,entry_point);
        return html?caml_call2(Stdlib_printf[4],_KX_,address):address}
      function unrec(x)
       {var _b2B_=x[1];
        if(3 === _b2B_[0])
         {var l=_b2B_[2],_b2C_=function(_b2D_){return _b2D_[2]};
          return caml_call2(Utils_List[20],_b2C_,l)}
        return [0,x,0]}
      function is_range_keys(param)
       {var n=0,param$0=param;
        for(;;)
         {if(param$0)
           {var _b2x_=param$0[1][1][1];
            if(0 === _b2x_[0])
             {var _b2y_=_b2x_[1];
              if(typeof _b2y_ !== "number" && 1 === _b2y_[0])
               {var
                 l=param$0[2],
                 i=_b2y_[1],
                 _b2z_=caml_call1(Utils_Bigint[5],n),
                 _b2A_=caml_call2(Big_int[24],_b2z_,i);
                if(_b2A_){var n$0=n + 1 | 0,n=n$0,param$0=l;continue}
                return _b2A_}}
            return 0}
          return 1}}
      function is_vector(v)
       {var _b2u_=v[1];
        if(7 === _b2u_[0])
         {var l=_b2u_[4];
          if(is_range_keys(l))
           {var _b2v_=function(_b2w_){return _b2w_[2]};
            return [0,caml_call2(Utils_List[20],_b2v_,l)]}
          return 0}
        return 0}
      function is_matrix(l)
       {var match=is_vector(l);
        if(match)
         {var
           vect=match[1],
           new_line=
            function(lines,a)
             {var match=is_vector(a);
              if(lines && match)
               {var v=match[1],lines$0=lines[1];return [0,[0,v,lines$0]]}
              return 0},
           match$0=caml_call3(Utils_List[25],new_line,_KY_,vect);
          if(match$0)
           {var lines=match$0[1];
            if(2 <= caml_call1(Utils_List[4],lines))
             {var
               _b2t_=
                function(line){return 2 <= caml_call1(Utils_List[4],line)?1:0};
              if(caml_call2(Utils_List[32],_b2t_,lines))
               return [0,[0,0,caml_call1(Utils_List[12],lines)]]}}
          return 0}
        return 0}
      function is_record_list(param)
       {if(param && 3 === param[1][1][0])return 1;return 0}
      function operation_to_string(opt,operation)
       {if(opt)var sth=opt[1],options=sth;else var options=Options[1];
        if(options[1])
         switch(operation[0])
          {case 0:
            var
             amount=operation[3],
             match=operation[2],
             type=match[3],
             entry_point=match[2],
             address=match[1],
             params=operation[1],
             _b1$_=value_to_string(0,0,[0,options],params),
             _b2a_=
              value_to_string
               (0,0,[0,options],[0,[2,[0,address,entry_point,type]]]),
             _b2b_=literal_to_string(0,[0,options],[6,amount]);
            return caml_call4(Stdlib_printf[4],_Lx_,_b2b_,_b2a_,_b1$_);
           case 1:
            var _b2c_=operation[1];
            if(_b2c_)
             {var d=_b2c_[1],_b2d_=literal_to_string(0,[0,options],[10,d]);
              return caml_call2(Stdlib_printf[4],_Ly_,_b2d_)}
            return cst_div_class_operation_Remove;
           default:
            var
             match$0=operation[2][2],
             baker=match$0[3],
             storage=match$0[2],
             id=operation[1];
            if(baker)
             var
              baker$0=baker[1],
              _b2e_=literal_to_string(0,0,[10,baker$0]),
              baker$1=caml_call2(Stdlib_printf[4],_Lz_,_b2e_);
            else
             var baker$1=cst_sp_none$0;
            var
             _b2f_=[0,options],
             _b2g_=function(eta){return value_to_string(0,0,_b2f_,eta)},
             _b2h_=caml_call3(Base_Option[37],storage,cst$165,_b2g_),
             _b2i_=address_of_contract_id(options[1],id,0);
            return caml_call4(Stdlib_printf[4],_LA_,_b2i_,baker$1,_b2h_)}
        switch(operation[0])
         {case 0:
           var
            amount$0=operation[3],
            match$1=operation[2],
            type$0=match$1[3],
            entry_point$0=match$1[2],
            address$0=match$1[1],
            params$0=operation[1],
            _b2j_=
             value_to_string
              (0,0,[0,options],[0,[2,[0,address$0,entry_point$0,type$0]]]),
            _b2k_=literal_to_string(0,[0,options],[6,amount$0]),
            _b2l_=value_to_string(0,0,[0,options],params$0);
           return caml_call4(Stdlib_printf[4],_LB_,_b2l_,_b2k_,_b2j_);
          case 1:
           var _b2m_=operation[1];
           if(_b2m_)
            {var d$0=_b2m_[1],_b2n_=literal_to_string(0,[0,options],[10,d$0]);
             return caml_call2(Stdlib_printf[4],_LC_,_b2n_)}
           return cst_Remove_Delegate;
          default:
           var
            match$2=operation[2][2],
            baker$2=match$2[3],
            storage$0=match$2[2],
            id$0=operation[1];
           if(baker$2)
            var
             baker$3=baker$2[1],
             _b2o_=literal_to_string(0,0,[10,baker$3]),
             baker$4=caml_call2(Stdlib_printf[4],_LD_,_b2o_);
           else
            var baker$4=cst_sp_none$1;
           var
            _b2p_=[0,options],
            _b2q_=function(eta){return value_to_string(0,0,_b2p_,eta)},
            _b2r_=caml_call3(Base_Option[37],storage$0,cst$166,_b2q_),
            _b2s_=address_of_contract_id(options[1],id$0,0);
           return caml_call4(Stdlib_printf[4],_LE_,_b2s_,baker$4,_b2r_)}}
      function value_to_string(opt,_b03_,_b02_,v)
       {var opt$0=opt,_b05_=_b03_,_b04_=_b02_,v$0=v;
        for(;;)
         {if(opt$0)var sth=opt$0[1],deep=sth;else var deep=0;
          if(_b05_)
           var sth$0=_b05_[1],noEmptyList=sth$0;
          else
           var noEmptyList=0;
          if(_b04_)
           var sth$1=_b04_[1],options=sth$1;
          else
           var options=Options[1];
          var _b06_=v$0[1];
          switch(_b06_[0])
           {case 0:
             var x=_b06_[1];return literal_to_string([0,deep],[0,options],x);
            case 1:
             var x$0=_b06_[1];
             return literal_to_string([0,deep],[0,options],x$0);
            case 2:
             var
              match=_b06_[1],
              type=match[3],
              entry_point=match[2],
              address=match[1],
              _b07_=
               literal_to_string([0,deep],[0,options],[7,address,entry_point]),
              _b08_=type_to_string(0,0,0,0,type);
             return caml_call3(Stdlib_printf[4],_KZ_,_b08_,_b07_);
            case 3:
             var
              l=_b06_[2],
              layout=_b06_[1],
              f=
               function(param)
                {var target=param[2],source=param[1];return [0,source,target]},
              _b09_=caml_call1(Utils_Binary_tree[41],layout),
              fields=caml_call2(Utils_List[20],f,_b09_);
             if(options[1])
              {var
                _b0__=
                 function(s){return value_to_string(0,_K0_,[0,options],s)},
                _b0$_=0,
                _b1a_=
                 function(param)
                  {var source=param[1];
                   return caml_call2(Utils_List[43],source,l)},
                _b1b_=[0,caml_call2(Utils_List[20],_b1a_,fields),_b0$_],
                _b1c_=function(_b1__){return _b1__[2]};
               return html_of_record_list
                       ([0,caml_call2(Utils_List[20],_b1c_,fields),_b1b_],_b0__)}
             switch(language)
              {case 0:var match$0=_K1_;break;
               case 1:var match$0=_K3_;break;
               default:throw [0,Assert_failure,_K4_]}
             var
              sep=match$0[2],
              format=match$0[1],
              _b1d_=
               function(param)
                {var
                  n=param[1],
                  x=caml_call2(Utils_List[43],n,l),
                  _b19_=value_to_string(0,0,[0,options],x);
                 return caml_call3(Stdlib_printf[4],_K2_,n,_b19_)},
              _b1e_=caml_call2(Utils_List[20],_b1d_,fields),
              _b1f_=caml_call2(Utils_String[7],sep,_b1e_);
             return caml_call2(Stdlib_printf[4],format,_b1f_);
            case 4:
             var name=_b06_[3],v$1=_b06_[4];
             if(options[1])
              {var
                _b1g_=
                 value_to_string([0,deep],[0,noEmptyList],[0,options],v$1),
                _b1h_=caml_call1(Utils_String[31],name);
               return caml_call4(Stdlib_printf[4],_K5_,name,_b1h_,_b1g_)}
             if(caml_string_notequal(name,cst_None$49))
              {var _b1i_=_b06_[4][1];
               if(0 === _b1i_[0] && typeof _b1i_[1] === "number")return name;
               if(! caml_string_notequal(name,cst_Some$47))
                {var v$3=_b06_[4];
                 if(options[1])
                  {var opt$0=0,_b05_=0,_b04_=[0,options],v$0=v$3;continue}
                 var _b1k_=value_to_string(0,0,[0,options],v$3);
                 return caml_call2(Stdlib_printf[4],_K7_,_b1k_)}}
             else
              {var _b1l_=_b06_[4][1];
               if(0 === _b1l_[0] && typeof _b1l_[1] === "number")
                return options[1]?cst_None$50:cst_sp_none}
             var
              v$2=_b06_[4],
              x$1=_b06_[3],
              _b1j_=value_to_string(0,0,[0,options],v$2);
             return caml_call3(Stdlib_printf[4],_K6_,x$1,_b1j_);
            case 5:
             var _b1m_=_b06_[2];
             if(! _b1m_ && noEmptyList)return cst$160;
             if(deep && ! is_record_list(_b1m_))
              {if(options[1])
                {var
                  _b1w_=[0,options],
                  _b1x_=
                   function(eta){return value_to_string(_Lb_,0,_b1w_,eta)},
                  _b1y_=caml_call2(Utils_List[20],_b1x_,_b1m_),
                  _b1z_=caml_call2(Utils_String[7],cst$158,_b1y_);
                 return caml_call2(Stdlib_printf[4],_Lc_,_b1z_)}
               var
                _b1A_=[0,options],
                _b1B_=function(eta){return value_to_string(0,0,_b1A_,eta)},
                _b1C_=caml_call2(Utils_List[20],_b1B_,_b1m_),
                _b1D_=caml_call2(Utils_String[7],cst$159,_b1C_);
               return caml_call2(Stdlib_printf[4],_Ld_,_b1D_)}
             if(options[1])
              {var switch$0=0;
               if(_b1m_)
                {var _b1n_=_b1m_[1][1];
                 if(3 === _b1n_[0])
                  {var
                    r=_b1n_[2],
                    _b1p_=
                     function(param)
                      {var _b16_=param[1];
                       if(3 === _b16_[0])
                        {var r=_b16_[2],_b17_=function(_b18_){return _b18_[2]};
                         return caml_call2(Utils_List[20],_b17_,r)}
                       throw [0,Assert_failure,_K$_]},
                    _b1q_=caml_call2(Utils_List[20],_b1p_,_b1m_),
                    _b1r_=function(_b15_){return _b15_[1]},
                    l$0=[0,caml_call2(Utils_List[20],_b1r_,r),_b1q_];
                   switch$0 = 1}}
               if(! switch$0)
                var
                 _b1o_=function(x){return [0,x,0]},
                 l$0=[0,_K8_,caml_call2(Utils_List[20],_b1o_,_b1m_)];
               return html_of_record_list
                       (l$0,
                        function(s){return value_to_string(_K__,_K9_,[0,options],s)})}
             var
              l$1=_b06_[2],
              _b1s_=[0,options],
              _b1t_=function(eta){return value_to_string(0,0,_b1s_,eta)},
              _b1u_=caml_call2(Utils_List[20],_b1t_,l$1),
              _b1v_=caml_call2(Utils_String[7],cst$157,_b1u_);
             return caml_call2(Stdlib_printf[4],_La_,_b1v_);
            case 6:
             if(! _b06_[2] && noEmptyList)return cst$162;
             var set=_b06_[2];
             if(options[1])
              {var
                _b1E_=
                 function(s){return value_to_string(_Lf_,_Le_,[0,options],s)},
                _b1F_=function(x){return [0,x,0]};
               return html_of_record_list
                       ([0,_Lg_,caml_call2(Utils_List[20],_b1F_,set)],_b1E_)}
             var
              _b1G_=[0,options],
              _b1H_=function(eta){return value_to_string(0,0,_b1G_,eta)},
              _b1I_=caml_call2(Utils_List[20],_b1H_,set),
              _b1J_=caml_call2(Utils_String[7],cst$161,_b1I_);
             return caml_call2(Stdlib_printf[4],_Lh_,_b1J_);
            case 7:
             var map=_b06_[4],tvalue=_b06_[2];
             if(options[1])
              {var match$1=is_matrix(v$0);
               if(match$1)
                {var match$2=match$1[1],l$2=match$2[2],columns=match$2[1];
                 return html_of_record_list
                         ([0,columns,l$2],
                          function(s){return value_to_string(0,_Li_,[0,options],s)})}
               var match$3=getRepr(tvalue),switch$1=0;
               if(typeof match$3 !== "number" && 6 === match$3[0])
                {var
                  row=match$3[2],
                  _b1M_=
                   function(s){return value_to_string(0,_Ll_,[0,options],s)},
                  _b1N_=
                   function(param)
                    {var y=param[2],x=param[1];return [0,x,unrec(y)]},
                  _b1O_=caml_call2(Utils_List[20],_b1N_,map),
                  _b1P_=function(_b14_){return _b14_[1]},
                  result=
                   [0,
                    html_of_record_list
                     ([0,[0,cst_Key,caml_call2(Utils_List[20],_b1P_,row)],_b1O_],
                      _b1M_)];
                 switch$1 = 1}
               if(! switch$1)var result=0;
               if(result){var t=result[1];return t}
               var
                _b1K_=
                 function(s){return value_to_string(0,_Lj_,[0,options],s)},
                _b1L_=
                 function(param)
                  {var y=param[2],x=param[1];return [0,x,[0,y,0]]};
               return html_of_record_list
                       ([0,_Lk_,caml_call2(Utils_List[20],_b1L_,map)],_b1K_)}
             var
              _b1Q_=
               function(param)
                {var
                  v=param[2],
                  k=param[1],
                  _b12_=value_to_string(0,0,[0,options],v),
                  _b13_=value_to_string(0,0,[0,options],k);
                 return caml_call3(Stdlib_printf[4],_Lm_,_b13_,_b12_)},
              _b1R_=caml_call2(Utils_List[20],_b1Q_,map),
              _b1S_=caml_call2(Utils_String[7],cst$163,_b1R_);
             return caml_call2(Stdlib_printf[4],_Ln_,_b1S_);
            case 8:
             var vs=_b06_[1];
             if(options[1])
              return html_of_record_list
                      ([0,0,[0,vs,0]],
                       function(s){return value_to_string(0,_Lo_,[0,options],s)});
             var
              _b1T_=[0,options],
              _b1U_=function(eta){return value_to_string(0,_Lp_,_b1T_,eta)},
              vs$0=caml_call2(Utils_List[20],_b1U_,vs),
              _b1V_=caml_call2(Utils_String[7],cst$164,vs$0);
             return caml_call2(Stdlib_printf[4],_Lq_,_b1V_);
            case 9:
             var _b1W_=type_to_string(0,0,0,0,type_of_value(v$0));
             return caml_call2(Stdlib_printf[4],_Lr_,_b1W_);
            case 10:
             var operation=_b06_[1];
             return operation_to_string([0,options],operation);
            default:
             var amount=_b06_[3],content=_b06_[2],ticketer=_b06_[1];
             if(options[1])
              {var
                _b1X_=function(s){return s},
                _b1Y_=[0,caml_call1(Utils_Bigint[38],amount),0],
                _b1Z_=[0,value_to_string(_Lt_,_Ls_,[0,options],content),_b1Y_];
               return html_of_record_list
                       ([0,
                         _Lv_,
                         [0,[0,caml_call2(Stdlib_printf[4],_Lu_,ticketer),_b1Z_],0]],
                        _b1X_)}
             var
              _b10_=Utils_Bigint[3],
              _b11_=value_to_string(0,0,[0,options],content);
             return caml_call5
                     (Stdlib_format[127],_Lw_,ticketer,_b11_,_b10_,amount)}}}
      function vclass_to_string(param)
       {switch(param)
         {case 0:return cst_storage$9;
          case 1:return cst_local;
          case 2:return cst_param;
          case 3:return cst_iter;
          case 4:return cst_list_map;
          default:return cst_match_cons}}
      function with_vclass(html,vclass,x)
       {if(html)
         {var _b01_=vclass_to_string(vclass);
          return caml_call3(Stdlib_printf[4],_LF_,_b01_,x)}
        return x}
      function tvariable_to_string(opt,protect,param,vclass)
       {var t=param[2],s=param[1];
        if(opt)var sth=opt[1],options=sth;else var options=Options[1];
        var _b0X_=options[1];
        if(! _b0X_ && ! options[3])return s;
        if(options[3])
         {var
           _b0Y_=type_to_string(0,0,0,0,t),
           _b0Z_=with_vclass(_b0X_,vclass,s),
           s$0=caml_call3(Stdlib_printf[4],_LI_,_b0Z_,_b0Y_);
          return caml_equal(protect,_LG_)
                  ?caml_call2(Stdlib_printf[4],_LH_,s$0)
                  :s$0}
        var _b00_=vclass_to_string(vclass);
        return caml_call3(Stdlib_printf[4],_LJ_,_b00_,s)}
      function variable_to_string(opt,protect,s,vclass)
       {if(opt)var sth=opt[1],options=sth;else var options=Options[1];
        var _b0V_=options[1];
        if(! _b0V_ && ! options[3])return s;
        if(options[3])
         {var s$0=with_vclass(_b0V_,vclass,s);
          return caml_equal(protect,_LK_)
                  ?caml_call2(Stdlib_printf[4],_LL_,s$0)
                  :s$0}
        var _b0W_=vclass_to_string(vclass);
        return caml_call3(Stdlib_printf[4],_LM_,_b0W_,s)}
      function string_of_binOpInfix(op)
       {if(typeof op === "number")
         switch(op)
          {case 0:return 1 === language?cst$167:cst$168;
           case 1:return 1 === language?cst$169:cst$170;
           case 2:return cst$171;
           case 3:return cst$172;
           case 4:return cst$173;
           case 5:return cst$174;
           case 6:return cst$175;
           case 7:return cst_ediv;
           case 8:return cst$176;
           case 9:return cst$177;
           case 10:return cst$178;
           case 11:return cst$179;
           case 12:return cst$180;
           default:return cst$181}
        return cst$182}
      function string_of_binOpPrefix(param){return param?cst_min:cst_max}
      function p_expr(param,e)
       {if(19 === e[0])
         {var _b0S_=e[1],_b0T_=_b0S_[1];
          if(15 === _b0S_[3][1][1][0])return 0;
          var
           body=_b0S_[3],
           l=caml_call2(Stdlib_printf[4],_LN_,_b0T_),
           v=caml_call2(Stdlib_printf[4],_LO_,_b0T_);
          return [0,[0,l,v,body[1]],0]}
        var _b0N_=Utils_Control[1];
        function _b0O_(param){return 0}
        function _b0P_(param){return 0}
        var
         e$0=map_expr_f(function(_b0U_){return _b0U_[2]},_b0P_,_b0O_,_b0N_,e),
         _b0Q_=0;
        function _b0R_(param){return elim_untyped}
        return fold_expr_f(Stdlib[37],Stdlib[37],Stdlib[37],_b0R_,_b0Q_,e$0)}
      function p_command(param,_b0M_){return 0}
      var _bUe_=para_alg(p_expr,p_command,Utils_Control[1]);
      function _bUf_(_b0L_){return para_expr(_bUe_,_b0L_)}
      function collect_lambdas(param)
       {var c=param[1];
        function _b0K_(param){return 0}
        var c$0=map_command_f(_bUf_,function(param){return 0},_b0K_,c);
        return fold_command_f(Stdlib[37],Stdlib[37],Stdlib[37],0,c$0)}
      function prefix(language,name)
       {switch(language)
         {case 0:return caml_call2(Stdlib[28],cst_sp$0,name);
          case 1:return name;
          default:throw [0,Assert_failure,_LP_]}}
      function mprim0_to_string(p)
       {var match=spec_of_instr(1,[0,p]),name=match[1];
        return caml_call1(Utils_String[30],name)}
      function mprim1_to_string(language,p)
       {if(typeof p === "number")
         {if(7 === p)return cst_sp_is_nat;
          if(13 === p)
           switch(language)
            {case 0:return cst$183;
             case 1:return cst_not;
             default:throw [0,Assert_failure,_LQ_]}}
        var match=spec_of_instr(1,[1,p]),name=match[1];
        return prefix(language,caml_call1(Utils_String[30],name))}
      function mprim2_to_string(p)
       {var match=spec_of_instr(1,[3,p]),name=match[1];
        return caml_call1(Utils_String[30],name)}
      function mprim3_to_string(p)
       {var match=spec_of_instr(1,[4,p]),name=match[1];
        return caml_call1(Utils_String[30],name)}
      function expr_to_string(opt,protect,e)
       {if(opt)var sth=opt[1],options=sth;else var options=Options[1];
        function prot(s)
         {return caml_equal(protect,_LR_)
                  ?caml_call2(Stdlib_printf[4],_LS_,s)
                  :s}
        function htmlClass(name,s)
         {return options[1]?caml_call3(Stdlib_printf[4],_LT_,name,s):s}
        var _bX8_=[0,options];
        function to_string(_b0I_,_b0J_)
         {return expr_to_string(_bX8_,_b0I_,_b0J_)}
        function apply(name,arguments$0)
         {switch(language)
           {case 0:
             var _b0H_=caml_call2(Utils_String[7],cst$184,arguments$0);
             return caml_call3(Stdlib_printf[4],_LV_,name,_b0H_);
            case 1:
             var s=caml_call2(Utils_String[7],cst$185,arguments$0);
             return caml_string_equal(s,cst$186)
                     ?s
                     :caml_call3(Stdlib_printf[4],_LW_,name,s);
            default:throw [0,Assert_failure,_LX_]}}
        function std(name,arguments$0)
         {switch(language)
           {case 0:
             return apply(caml_call2(Stdlib[28],cst_sp$1,name),arguments$0);
            case 1:return prot(apply(name,arguments$0));
            default:throw [0,Assert_failure,_LY_]}}
        function pp_exprs(arguments$0)
         {switch(language)
           {case 0:
             var _b0E_=function(s){return to_string(0,s)};
             return caml_call2(Utils_List[20],_b0E_,arguments$0);
            case 1:
             var _b0F_=function(_b0G_){return to_string(_L0_,_b0G_)};
             return caml_call2(Utils_List[20],_b0F_,arguments$0);
            default:throw [0,Assert_failure,_L1_]}}
        function mono(name,s){return std(name,pp_exprs([0,s,0]))}
        function bin(name,x,y){return std(name,pp_exprs([0,x,[0,y,0]]))}
        var _bYc_=e[1];
        switch(_bYc_[0])
         {case 0:
           var p=_bYc_[1];
           if(typeof p !== "number")
            switch(p[0])
             {case 0:
               var _bX9_=p[1];
               if(_bX9_)
                {var name=_bX9_[1];
                 return caml_call2(Stdlib_printf[4],_L2_,name)}
               return prefix(language,cst_self$1);
              case 1:
               var memo=p[1];return caml_call2(Stdlib_printf[4],_L3_,memo)
              }
           return prefix(language,mprim0_to_string(p));
          case 1:
           var x=_bYc_[2],p$0=_bYc_[1];
           if(typeof p$0 === "number")
            {if(4 === p$0)return prot(apply(cst_abs,pp_exprs([0,x,0])));
             if(13 === p$0)
              {switch(language)
                {case 0:var op=cst$187;break;
                 case 1:var op=cst_not$0;break;
                 default:throw [0,Assert_failure,_L6_]}
               var _bX__=to_string(_L4_,x);
               return prot(caml_call3(Stdlib_printf[4],_L5_,op,_bX__))}}
           var
            arguments$0=pp_exprs([0,x,0]),
            name$0=mprim1_to_string(language,p$0);
           switch(language)
            {case 0:return apply(name$0,arguments$0);
             case 1:return prot(apply(name$0,arguments$0));
             default:throw [0,Assert_failure,_LZ_]}
          case 2:throw [0,Assert_failure,_L8_];
          case 3:
           var x2=_bYc_[3],x1=_bYc_[2],p$1=_bYc_[1];
           if(typeof p$1 === "number")
            {if(3 === p$1)return prot(infix(options,cst$188,x1,x2));
             if(4 === p$1)return prot(infix(options,cst$189,x1,x2))}
           return bin(mprim2_to_string(p$1),x1,x2);
          case 4:
           var x3=_bYc_[4],x2$0=_bYc_[3],x1$0=_bYc_[2],p$2=_bYc_[1];
           if(4 <= p$2)
            {var
              _bX$_=to_string(0,x3),
              _bYa_=to_string(0,x2$0),
              _bYb_=to_string(0,x1$0);
             return caml_call4(Stdlib_printf[4],_L7_,_bYb_,_bYa_,_bX$_)}
           var
            match=spec_of_instr(1,[4,p$2]),
            name$1=match[1],
            name$2=caml_call1(Utils_String[30],name$1);
           return std(name$2,pp_exprs([0,x1$0,[0,x2$0,[0,x3,0]]]));
          case 5:
           var prim=_bYc_[1];
           if(typeof prim === "number")
            return prefix(language,cst_level$0);
           else
            switch(prim[0])
             {case 1:
               var
                match$0=prim[1],
                entry_point=match$0[2],
                address=match$0[1],
                _bYe_=[7,address,entry_point],
                _bYf_=options[2]?_L__:0;
               return htmlClass
                       (cst_constant$0,
                        caml_call1(literal_to_sp_string(0,_bYf_),_bYe_));
              case 3:
               var _bYg_=prim[1];
               if(caml_string_notequal(_bYg_,cst_operations$1))
                {if(caml_string_notequal(_bYg_,cst_parameter$2))
                  {if(caml_string_notequal(_bYg_,cst_storage$10))
                    return caml_call2(Stdlib_printf[4],_L$_,_bYg_);
                   var _bX7_=htmlClass(cst_self$0,cst_self);
                   return caml_call3(Stdlib_printf[4],_LU_,_bX7_,s)}
                 return caml_call1(Stdlib_printf[4],_Ma_)}
               return prefix(language,cst_operations$2);
              case 4:
               var name$3=prim[1];
               return caml_call2(Stdlib_printf[4],_Mb_,name$3);
              case 5:
               var name$4=prim[1];
               return caml_call2(Stdlib_printf[4],_Mc_,name$4);
              case 6:var arg_name=prim[1];return arg_name;
              case 7:var x$0=prim[1];return with_vclass(options[1],3,x$0);
              case 8:var x$1=prim[1];return with_vclass(options[1],5,x$1);
              case 9:
               var seed=prim[1];return caml_call2(Stdlib_printf[4],_Md_,seed);
              case 10:
               var
                entry_point$0=prim[2],
                id=prim[1],
                _bYh_=address_of_contract_id(0,id,entry_point$0);
               return caml_call2(Stdlib_printf[4],_Me_,_bYh_);
              case 11:
               var id$0=prim[1],_bYi_=string_of_contract_id(id$0);
               return caml_call2(Stdlib_printf[4],_Mf_,_bYi_);
              case 12:
               var id$1=prim[1],_bYj_=string_of_contract_id(id$1);
               return caml_call2(Stdlib_printf[4],_Mg_,_bYj_);
              case 13:
               var id$2=prim[1],_bYk_=string_of_contract_id(id$2);
               return caml_call2(Stdlib_printf[4],_Mh_,_bYk_);
              case 14:
               var
                entry_point$1=prim[2],
                id$3=prim[1],
                _bYl_=address_of_contract_id(0,id$3,entry_point$1);
               return caml_call2(Stdlib_printf[4],_Mi_,_bYl_);
              case 15:
               var id$4=prim[1];return caml_call2(Stdlib_printf[4],_Mj_,id$4);
              default:
               var v=prim[1],_bYd_=options[2]?_L9_:0;
               return htmlClass
                       (cst_constant,caml_call1(literal_to_sp_string(0,_bYd_),v))}
          case 6:
           var x$2=_bYc_[2],prim$0=_bYc_[1];
           if(typeof prim$0 === "number")
            switch(prim$0)
             {case 0:return mono(cst_concat,x$2);
              case 1:
               var _bYm_=x$2[1];
               if(0 === _bYm_[0])
                {var _bYn_=_bYm_[1];
                 if(typeof _bYn_ !== "number" && 0 === _bYn_[0])
                  {var _bYo_=_bYn_[1];
                   if(_bYo_)
                    {var name$5=_bYo_[1];
                     return caml_call2(Stdlib_printf[4],_Mk_,name$5)}
                   return prefix(language,cst_self_address)}}
               return mono(cst_to_address,x$2);
              case 2:return mono(cst_implicit_account,x$2);
              case 3:
               var _bYp_=to_string(_Ml_,x$2);
               return caml_call2(Stdlib_printf[4],_Mm_,_bYp_);
              case 4:
               var _bYq_=to_string(_Mn_,x$2);
               return prot(caml_call2(Stdlib_printf[4],_Mo_,_bYq_));
              case 5:return mono(cst_pack,x$2);
              case 6:return mono(cst_to_constant,x$2);
              case 7:return mono(cst_set_delegate_operation,x$2);
              case 8:return mono(cst_sign,x$2);
              case 9:return mono(cst_len,x$2);
              case 10:return mono(cst_sum,x$2);
              case 11:return mono(cst_to_int,x$2);
              case 12:return mono(cst_read_ticket_raw,x$2);
              case 13:return mono(cst_join_tickets_raw,x$2);
              case 14:return mono(cst_pairing_check,x$2);
              case 15:return mono(cst_voting_power,x$2);
              default:return mono(cst_unbound,x$2)}
           else
            switch(prim$0[0])
             {case 0:
               var _bYr_=prim$0[1];
               if(0 === _bYr_)return mono(cst_fst,x$2);
               if(1 === _bYr_)return mono(cst_snd,x$2);
               var _bYs_=to_string(0,x$2);
               return caml_call3(Stdlib_printf[4],_Mp_,_bYs_,_bYr_);
              case 1:
               if(prim$0[1])
                {var _bYt_=to_string(_Mq_,x$2);
                 return caml_call2(Stdlib_printf[4],_Mr_,_bYt_)}
               var _bYu_=to_string(_Ms_,x$2);
               return caml_call2(Stdlib_printf[4],_Mt_,_bYu_);
              case 2:
               if(prim$0[1])
                {var _bYv_=to_string(_Mu_,x$2);
                 return caml_call2(Stdlib_printf[4],_Mv_,_bYv_)}
               var _bYw_=to_string(_Mw_,x$2);
               return caml_call2(Stdlib_printf[4],_Mx_,_bYw_);
              case 3:
               if(prim$0[1])
                {var _bYx_=to_string(_My_,x$2);
                 return caml_call2(Stdlib_printf[4],_Mz_,_bYx_)}
               var _bYy_=to_string(_MA_,x$2);
               return caml_call2(Stdlib_printf[4],_MB_,_bYy_);
              case 4:
               if(prim$0[1])
                {var _bYz_=to_string(_MC_,x$2);
                 return caml_call2(Stdlib_printf[4],_MD_,_bYz_)}
               var _bYA_=to_string(_ME_,x$2);
               return caml_call2(Stdlib_printf[4],_MF_,_bYA_);
              case 5:
               var
                t=prim$0[1],
                _bYB_=[0,type_to_string(0,0,0,0,t),0],
                _bYC_=pp_exprs([0,x$2,0]);
               return std(cst_unpack,caml_call2(Stdlib[37],_bYC_,_bYB_));
              case 6:
               var t$0=prim$0[1];
               switch(language)
                {case 0:
                  var
                   _bYD_=[0,type_to_string(0,0,_MG_,0,t$0),0],
                   _bYE_=pp_exprs([0,x$2,0]);
                  return std
                          (cst_set_type_expr,caml_call2(Stdlib[37],_bYE_,_bYD_));
                 case 1:
                  var
                   _bYF_=type_to_string(0,0,0,0,t$0),
                   _bYG_=expr_to_string(0,0,x$2);
                  return caml_call3(Stdlib_printf[4],_MH_,_bYG_,_bYF_);
                 default:throw [0,Assert_failure,_MI_]}
              case 7:
               var name$6=prim$0[1],_bYH_=to_string(_MJ_,x$2);
               return caml_call3(Stdlib_printf[4],_MK_,_bYH_,name$6);
              case 8:
               var name$7=prim$0[1];
               if(caml_string_notequal(name$7,cst_None$51))
                {if(! caml_string_notequal(name$7,cst_Some$48))
                  return mono(cst_some$1,x$2)}
               else
                {var _bYJ_=x$2[1];
                 if(5 === _bYJ_[0])
                  {var _bYK_=_bYJ_[1],switch$0=0;
                   if(typeof _bYK_ === "number" || ! (0 === _bYK_[0]))
                    switch$0 = 1;
                   else
                    if(typeof _bYK_[1] === "number")
                     return prefix(language,cst_none)}}
               var _bYI_=to_string(0,x$2);
               return caml_call3(Stdlib_printf[4],_ML_,name$7,_bYI_);
              default:
               var _bYL_=prim$0[1];
               if(caml_string_notequal(_bYL_,cst_Some$49))
                {var _bYM_=to_string(0,x$2);
                 return caml_call3(Stdlib_printf[4],_MM_,_bYM_,_bYL_)}
               var _bYN_=to_string(_MN_,x$2);
               return caml_call2(Stdlib_printf[4],_MO_,_bYN_)}
          case 7:
           var y=_bYc_[3],x$3=_bYc_[2],prim2=_bYc_[1];
           if(typeof prim2 === "number")
            switch(prim2)
             {case 0:
               var _bYO_=to_string(0,y),_bYP_=to_string(_MP_,x$3);
               return caml_call3(Stdlib_printf[4],_MQ_,_bYP_,_bYO_);
              case 1:
               var _bYQ_=to_string(0,y),_bYR_=to_string(_MR_,x$3);
               return prot(caml_call3(Stdlib_printf[4],_MS_,_bYR_,_bYQ_));
              case 2:
               var _bYS_=to_string(0,y),_bYT_=to_string(_MT_,x$3);
               return caml_call3(Stdlib_printf[4],_MU_,_bYT_,_bYS_);
              case 3:
               var _bYU_=to_string(0,y),_bYV_=to_string(_MV_,x$3);
               return caml_call3(Stdlib_printf[4],_MW_,_bYV_,_bYU_);
              case 4:
               var _bYW_=to_string(0,y),_bYX_=to_string(0,x$3);
               return caml_call3(Stdlib_printf[4],_MX_,_bYX_,_bYW_);
              case 5:return bin(cst_add_seconds,x$3,y);
              case 6:return bin(cst_ticket$1,x$3,y);
              default:return bin(cst_split_ticket_raw,x$3,y)}
           else
            {if(0 === prim2[0])
              {var _bYY_=prim2[1];
               if(typeof _bYY_ === "number")
                {if(7 === _bYY_)return bin(cst_ediv$0,x$3,y)}
               else
                if(_bYY_[1])return bin(cst_mul,x$3,y);
               return prot(infix(options,string_of_binOpInfix(_bYY_),x$3,y))}
             var f=prim2[1];
             return bin(string_of_binOpPrefix(f),x$3,y)}
          case 8:
           var z=_bYc_[4],y$0=_bYc_[3],x$4=_bYc_[2],prim3=_bYc_[1];
           switch(prim3)
            {case 0:
              var _bYZ_=x$4[1];
              if(5 === _bYZ_[0])
               {var _bY3_=_bYZ_[1],switch$1=0;
                if(typeof _bY3_ === "number" || ! (0 === _bY3_[0]))
                 switch$1 = 1;
                else
                 {var _bY4_=_bY3_[1],switch$2=0;
                  if(typeof _bY4_ !== "number" && 6 === _bY4_[0])
                   {var _bY5_=z[1];
                    if(5 === _bY5_[0])
                     {var _bY6_=_bY5_[1],switch$3=0;
                      if(typeof _bY6_ !== "number" && 0 === _bY6_[0])
                       {var _bY7_=_bY6_[1],switch$4=0;
                        if(typeof _bY7_ !== "number" && 1 === _bY7_[0])
                         {var
                           i=_bY7_[1],
                           tok=_bY4_[1],
                           _bY8_=caml_call1(Utils_Bigint[5],1000000);
                          if(caml_call2(Big_int[24],tok,_bY8_))
                           {var _bY9_=caml_call1(Utils_Bigint[5],1);
                            if(caml_call2(Big_int[24],i,_bY9_))
                             {var _bY__=to_string(0,y$0);
                              return caml_call2(Stdlib_printf[4],_MZ_,_bY__)}}
                          var _bY$_=caml_call1(Utils_Bigint[5],1);
                          if(caml_call2(Big_int[24],tok,_bY$_))
                           {var _bZa_=caml_call1(Utils_Bigint[5],1);
                            if(caml_call2(Big_int[24],i,_bZa_))
                             {var _bZb_=to_string(0,y$0);
                              return caml_call2(Stdlib_printf[4],_M0_,_bZb_)}}
                          switch$2 = 1;
                          switch$3 = 1;
                          switch$4 = 1}
                        if(! switch$4){switch$2 = 1;switch$3 = 1}}
                      if(! switch$3)switch$2 = 1}
                    else
                     switch$2 = 1}}}
              var
               _bY0_=to_string(0,z),
               _bY1_=to_string(0,y$0),
               _bY2_=to_string(0,x$4);
              return caml_call4(Stdlib_printf[4],_MY_,_bY2_,_bY1_,_bY0_);
             case 1:
              var _bZc_=z[1];
              if(5 === _bZc_[0])
               {var _bZg_=_bZc_[1],switch$5=0;
                if(typeof _bZg_ === "number" || ! (0 === _bZg_[0]))
                 switch$5 = 1;
                else
                 {var _bZh_=_bZg_[1],switch$6=0;
                  if(typeof _bZh_ !== "number" && 1 === _bZh_[0])
                   {var step=_bZh_[1],_bZi_=caml_call1(Utils_Bigint[5],1);
                    if(caml_call2(Big_int[24],step,_bZi_))
                     {var _bZj_=to_string(0,y$0),_bZk_=to_string(0,x$4);
                      return caml_call3(Stdlib_printf[4],_M2_,_bZk_,_bZj_)}
                    switch$6 = 1}}}
              var
               _bZd_=to_string(0,z),
               _bZe_=to_string(0,y$0),
               _bZf_=to_string(0,x$4);
              return caml_call4(Stdlib_printf[4],_M1_,_bZf_,_bZe_,_bZd_);
             case 2:
              var
               _bZl_=to_string(0,z),
               _bZm_=to_string(0,y$0),
               _bZn_=to_string(0,x$4);
              return caml_call4(Stdlib_printf[4],_M3_,_bZn_,_bZm_,_bZl_);
             case 3:
              var
               _bZo_=to_string(0,z),
               _bZp_=to_string(0,y$0),
               _bZq_=to_string(0,x$4);
              return caml_call4(Stdlib_printf[4],_M4_,_bZq_,_bZp_,_bZo_);
             case 4:
              var
               _bZr_=to_string(0,z),
               _bZs_=to_string(0,y$0),
               _bZt_=to_string(0,x$4);
              return caml_call4(Stdlib_printf[4],_M5_,_bZt_,_bZs_,_bZr_);
             default:
              var
               _bZu_=to_string(0,z),
               _bZv_=to_string(0,y$0),
               _bZw_=to_string(0,x$4);
              return caml_call4(Stdlib_printf[4],_M6_,_bZw_,_bZv_,_bZu_)}
          case 9:
           var missing_message=_bYc_[3],x$5=_bYc_[2],name$8=_bYc_[1];
           if(missing_message)
            var
             x$6=missing_message[1],
             _bZx_=to_string(0,x$6),
             missing_message$0=[0,caml_call2(Stdlib_printf[4],_M7_,_bZx_)];
           else
            var missing_message$0=0;
           if(caml_string_notequal(name$8,cst_Some$50))
            {if(missing_message$0)
              {var message=missing_message$0[1],_bZy_=to_string(0,x$5);
               return caml_call4(Stdlib_printf[4],_M8_,_bZy_,name$8,message)}
             var _bZz_=to_string(0,x$5);
             return caml_call3(Stdlib_printf[4],_M9_,_bZz_,name$8)}
           var _bZA_=x$5[1];
           if(1 === _bZA_[0])
            {var _bZD_=_bZA_[1];
             if(typeof _bZD_ === "number" && 7 === _bZD_)
              {var _bZE_=_bZA_[2];
               if(missing_message$0)
                {var message$1=missing_message$0[1],_bZF_=to_string(0,_bZE_);
                 return caml_call3(Stdlib_printf[4],_Na_,_bZF_,message$1)}
               return mono(cst_as_nat,_bZE_)}}
           if(missing_message$0)
            {var message$0=missing_message$0[1],_bZB_=to_string(0,x$5);
             return caml_call3(Stdlib_printf[4],_M__,_bZB_,message$0)}
           var _bZC_=to_string(0,x$5);
           return caml_call2(Stdlib_printf[4],_M$_,_bZC_);
          case 10:
           var _bZG_=_bYc_[3],_bZH_=_bYc_[2],_bZI_=_bYc_[1];
           if(_bZG_)
            {var
              d=_bZG_[1],
              _bZJ_=to_string(0,d),
              _bZK_=to_string(0,_bZH_),
              _bZL_=to_string(_Nb_,_bZI_);
             return caml_call4(Stdlib_printf[4],_Nc_,_bZL_,_bZK_,_bZJ_)}
           var _bZM_=_bYc_[4];
           if(_bZM_)
            {var
              message$2=_bZM_[1],
              _bZN_=to_string(0,message$2),
              _bZO_=to_string(0,_bZH_),
              _bZP_=to_string(_Nd_,_bZI_);
             return caml_call4(Stdlib_printf[4],_Ne_,_bZP_,_bZO_,_bZN_)}
           var _bZQ_=to_string(0,_bZH_),_bZR_=to_string(_Nf_,_bZI_);
           return caml_call3(Stdlib_printf[4],_Ng_,_bZR_,_bZQ_);
          case 11:
           var
            es=_bYc_[1],
            _bZS_=function(eta){return to_string(0,eta)},
            es$0=caml_call2(Utils_List[20],_bZS_,es),
            _bZT_=caml_call2(Utils_String[7],cst$190,es$0);
           return caml_call2(Stdlib_printf[4],_Nh_,_bZT_);
          case 12:
           var entries=_bYc_[1];
           switch(language)
            {case 0:var match$1=_Ni_;break;
             case 1:var match$1=_Nk_;break;
             default:throw [0,Assert_failure,_Nl_]}
           var
            sep=match$1[2],
            format=match$1[1],
            _bZU_=
             function(param)
              {var e=param[2],n=param[1],_b0D_=to_string(0,e);
               return caml_call3(Stdlib_printf[4],_Nj_,n,_b0D_)},
            _bZV_=caml_call2(Utils_List[20],_bZU_,entries),
            _bZW_=caml_call2(Utils_String[7],sep,_bZV_);
           return caml_call2(Stdlib_printf[4],format,_bZW_);
          case 13:
           var
            l=_bYc_[1],
            _bZX_=function(eta){return to_string(0,eta)},
            _bZY_=caml_call2(Utils_List[20],_bZX_,l),
            _bZZ_=caml_call2(Utils_String[7],cst$191,_bZY_);
           return caml_call2(Stdlib_printf[4],_Nm_,_bZZ_);
          case 14:
           var
            l$0=_bYc_[2],
            _bZ0_=
             function(param)
              {var
                e=param[2],
                k=param[1],
                _b0B_=to_string(0,e),
                _b0C_=to_string(0,k);
               return caml_call3(Stdlib_printf[4],_Nn_,_b0C_,_b0B_)},
            _bZ1_=caml_call2(Utils_List[20],_bZ0_,l$0),
            _bZ2_=caml_call2(Utils_String[7],cst$192,_bZ1_);
           return caml_call2(Stdlib_printf[4],_No_,_bZ2_);
          case 15:
           var
            l$1=_bYc_[1],
            _bZ3_=function(eta){return to_string(0,eta)},
            _bZ4_=caml_call2(Utils_List[20],_bZ3_,l$1),
            _bZ5_=caml_call2(Utils_String[7],cst$193,_bZ4_);
           return caml_call2(Stdlib_printf[4],_Np_,_bZ5_);
          case 16:
           var
            transaction=_bYc_[2],
            state=_bYc_[1],
            _bZ6_=to_string(0,transaction),
            _bZ7_=to_string(0,state);
           return caml_call3(Stdlib_printf[4],_Nq_,_bZ7_,_bZ6_);
          case 17:
           var
            exprs=_bYc_[2],
            michelson=_bYc_[1],
            _bZ8_=function(eta){return to_string(0,eta)},
            _bZ9_=caml_call2(Utils_List[20],_bZ8_,exprs),
            _bZ__=caml_call2(Utils_String[7],cst$194,_bZ9_);
           return caml_call3(Stdlib_printf[4],_Nr_,michelson[1],_bZ__);
          case 18:
           var
            l$2=_bYc_[2],
            f$0=_bYc_[1],
            _bZ$_=to_string(0,f$0),
            _b0a_=to_string(_Ns_,l$2);
           return caml_call3(Stdlib_printf[4],_Nt_,_b0a_,_bZ$_);
          case 19:
           var _b0b_=_bYc_[1],_b0c_=_b0b_[1],_b0d_=_b0b_[3][1];
           if(15 === _b0d_[0])
            {var _b0e_=_b0d_[1],_b0f_=_b0e_[1];
             if(17 === _b0f_[0])
              {var _b0h_=_b0f_[2];
               if(_b0h_)
                {var _b0i_=_b0h_[1][1];
                 if(20 === _b0i_[0] && ! _b0h_[2])
                  {var idl=_b0i_[1],michelson$0=_b0f_[1];
                   if(_b0c_ === idl)
                    return caml_call2(Stdlib_printf[4],_Nw_,michelson$0[1])}}}
             var _b0g_=to_string(0,_b0e_);
             return caml_call3(Stdlib_printf[4],_Nv_,_b0c_,_b0g_)}
           return caml_call2(Stdlib_printf[4],_Nu_,_b0c_);
          case 20:
           var id$5=_bYc_[1];return caml_call2(Stdlib_printf[4],_Nx_,id$5);
          case 21:return caml_call1(Stdlib_printf[4],_Ny_);
          case 22:
           var
            address$0=_bYc_[3],
            arg_type=_bYc_[2],
            entry_point$2=_bYc_[1],
            _b0j_=function(ep){return caml_call2(Stdlib_printf[4],_Nz_,ep)},
            _b0k_=caml_call3(Base_Option[37],entry_point$2,cst$195,_b0j_),
            _b0l_=to_string(0,address$0),
            _b0m_=type_to_string(0,0,0,0,arg_type);
           return caml_call4(Stdlib_printf[4],_NA_,_b0m_,_b0l_,_b0k_);
          case 23:
           var
            buffer=_bYc_[3],
            length=_bYc_[2],
            offset=_bYc_[1],
            _b0n_=to_string(0,length),
            _b0o_=to_string(0,offset),
            _b0p_=to_string(0,buffer);
           return prot(caml_call4(Stdlib_printf[4],_NB_,_b0p_,_b0o_,_b0n_));
          case 24:
           var
            message_format=_bYc_[3],
            message$3=_bYc_[2],
            secret_key=_bYc_[1],
            _b0q_=4099528 <= message_format?cst_Raw$0:cst_Hex$0,
            _b0r_=to_string(0,message$3),
            _b0s_=to_string(0,secret_key);
           return caml_call4(Stdlib_printf[4],_NC_,_b0s_,_b0r_,_b0q_);
          case 25:
           var
            destination=_bYc_[3],
            amount=_bYc_[2],
            arg=_bYc_[1],
            _b0t_=to_string(0,destination),
            _b0u_=to_string(0,amount),
            _b0v_=to_string(0,arg);
           return caml_call4(Stdlib_printf[4],_ND_,_b0v_,_b0u_,_b0t_);
          case 26:
           var
            clauses=_bYc_[2],
            scrutinee=_bYc_[1],
            _b0w_=
             function(param)
              {var rhs=param[2],cons=param[1],_b0A_=to_string(0,rhs);
               return caml_call3(Stdlib_printf[4],_NE_,cons,_b0A_)},
            _b0x_=caml_call2(Utils_List[20],_b0w_,clauses),
            _b0y_=caml_call2(Utils_String[7],cst$196,_b0x_),
            _b0z_=to_string(0,scrutinee);
           return caml_call3(Stdlib_printf[4],_NF_,_b0z_,_b0y_);
          default:var ep=_bYc_[1];return caml_call2(Stdlib_printf[4],_NG_,ep)}}
      function infix(options,op,x,y)
       {var
         x$0=expr_to_string([0,options],_NH_,x),
         y$0=expr_to_string([0,options],_NI_,y);
        return caml_call4(Stdlib_printf[4],_NJ_,x$0,op,y$0)}
      function comma(buf){return caml_call2(Stdlib_printf[5],buf,_NK_)}
      function _bUg_(buf){return caml_call2(Stdlib_printf[5],buf,_NL_)}
      var ppS=caml_call2(Utils_List[86],comma,_bUg_);
      function _bUh_(buf){return caml_call2(Stdlib_printf[5],buf,_NM_)}
      var pps=caml_call2(Utils_List[86],comma,_bUh_);
      function pp_command(opt,_bVq_)
       {if(opt)var sth=opt[1],indent=sth;else var indent=cst$208;
        if(_bVq_)var sth$0=_bVq_[1],options=sth$0;else var options=Options[1];
        var
         _bVr_=[0,options],
         shiftIdent=options[1]?cst_nbsp_nbsp$0:cst$207,
         newline=options[1]?cst_br$2:cst$206,
         _bVs_=[0,options];
        function arg(_bX5_,_bX6_){return expr_to_string(_bVs_,_bX5_,_bX6_)}
        function pp(indent$0,buf,c)
         {var indent$1=indent$0,c$0=c;
          for(;;)
           {var
             pp_exprs=
              function(arguments$0)
               {switch(language)
                 {case 0:
                   var _bX2_=function(eta){return arg(0,eta)};
                   return caml_call2(Utils_List[20],_bX2_,arguments$0);
                  case 1:
                   var _bX3_=function(_bX4_){return arg(_NO_,_bX4_)};
                   return caml_call2(Utils_List[20],_bX3_,arguments$0);
                  default:throw [0,Assert_failure,_NP_]}},
             std$0=
              function(indent)
               {function std(name,arguments$0)
                 {switch(language)
                   {case 0:
                     var _bX1_=caml_call2(Utils_String[7],cst$197,arguments$0);
                     return caml_call5
                             (Stdlib_printf[5],buf,_NQ_,indent,name,_bX1_);
                    case 1:
                     var
                      s=caml_call2(Utils_String[7],cst$198,arguments$0),
                      s$0=
                       caml_string_equal(s,cst$199)
                        ?s
                        :caml_call2(Stdlib[28],cst$200,s);
                     return caml_call5(Stdlib_printf[5],buf,_NR_,indent,name,s$0);
                    default:throw [0,Assert_failure,_NS_]}}
                return std},
             std=std$0(indent$1),
             mono$0=
              function(pp_exprs,std)
               {function mono(name,s){return std(name,pp_exprs([0,s,0]))}
                return mono},
             mono=mono$0(pp_exprs,std),
             _bVv_=collect_lambdas(c$0),
             _bVw_=
              function(param)
               {var
                 body=param[3],
                 v=param[2],
                 l=param[1],
                 ppc=
                  pp_command
                   ([0,caml_call2(Stdlib[28],indent,shiftIdent)],_bVr_);
                return caml_call9
                        (Stdlib_printf[5],
                         buf,
                         _NN_,
                         indent,
                         l,
                         v,
                         newline,
                         ppc,
                         body,
                         newline)};
            caml_call2(Utils_List[18],_bVw_,_bVv_);
            var _bVx_=c$0[1];
            switch(_bVx_[0])
             {case 0:var message=_bVx_[1];return mono(cst_never$1,message);
              case 1:
               var message$0=_bVx_[1];return mono(cst_failwith,message$0);
              case 2:
               var _bVy_=_bVx_[2],_bVz_=_bVx_[1];
               if(_bVy_)
                {var msg=_bVy_[1];
                 return std(name$0,pp_exprs([0,_bVz_,[0,msg,0]]))}
               return mono(cst_verify,_bVz_);
              case 3:
               var e=_bVx_[3],t=_bVx_[2],c$1=_bVx_[1];
               switch(language)
                {case 0:var match=_NT_;break;
                 case 1:var match=_NU_;break;
                 default:throw [0,Assert_failure,_NV_]}
               var
                else_format=match[2],
                then_format=match[1],
                _bVA_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                _bVB_=function(_bXZ_,_bX0_){return pp(_bVA_,_bXZ_,_bX0_)},
                _bVC_=arg(0,c$1);
               caml_call7
                (Stdlib_printf[5],
                 buf,
                 then_format,
                 indent$1,
                 _bVC_,
                 newline,
                 _bVB_,
                 t);
               var _bVD_=e[1];
               if(15 === _bVD_[0])
                {var _bVG_=_bVD_[1][1];
                 if(5 === _bVG_[0])
                  {var _bVH_=_bVG_[1],switch$0=0;
                   if(typeof _bVH_ === "number" || ! (0 === _bVH_[0]))
                    switch$0 = 1;
                   else
                    if(typeof _bVH_[1] === "number")return 0}}
               var
                _bVE_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                _bVF_=function(_bXX_,_bXY_){return pp(_bVE_,_bXX_,_bXY_)};
               return caml_call7
                       (Stdlib_printf[5],
                        buf,
                        else_format,
                        newline,
                        indent$1,
                        newline,
                        _bVF_,
                        e);
              case 4:
               var _bVI_=_bVx_[1],_bVJ_=_bVx_[2];
               if(_bVJ_ && ! _bVJ_[2])
                {var
                  match$0=_bVJ_[1],
                  c$2=match$0[3],
                  arg_name=match$0[2],
                  constructor=match$0[1];
                 if(options[1])
                  {var
                    _bVO_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                    _bVP_=function(_bXV_,_bXW_){return pp(_bVO_,_bXV_,_bXW_)},
                    _bVQ_=arg(_N2_,_bVI_);
                   return caml_call8
                           (Stdlib_printf[5],
                            buf,
                            _N3_,
                            indent$1,
                            _bVQ_,
                            constructor,
                            arg_name,
                            _bVP_,
                            c$2)}
                 var
                  _bVR_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                  _bVS_=function(_bXT_,_bXU_){return pp(_bVR_,_bXT_,_bXU_)},
                  _bVT_=arg(_N4_,_bVI_);
                 return caml_call8
                         (Stdlib_printf[5],
                          buf,
                          _N5_,
                          indent$1,
                          _bVT_,
                          constructor,
                          arg_name,
                          _bVS_,
                          c$2)}
               var cases=_bVx_[2];
               if(options[1])
                {var
                  _bVK_=
                   function(buf)
                    {function _bXM_(param)
                      {var
                        c=param[3],
                        arg_name=param[2],
                        constructor=param[1],
                        _bXN_=caml_call2(Stdlib[28],shiftIdent,shiftIdent),
                        _bXO_=caml_call2(Stdlib[28],indent$1,_bXN_);
                       function _bXP_(_bXR_,_bXS_){return pp(_bXO_,_bXR_,_bXS_)}
                       var _bXQ_=caml_call2(Stdlib[28],indent$1,shiftIdent);
                       return caml_call7
                               (Stdlib_printf[5],
                                buf,
                                _NW_,
                                _bXQ_,
                                constructor,
                                arg_name,
                                _bXP_,
                                c)}
                     return caml_call1(Utils_List[18],_bXM_)},
                  _bVL_=arg(_NX_,_bVI_);
                 return caml_call6
                         (Stdlib_printf[5],buf,_NY_,indent$1,_bVL_,_bVK_,cases)}
               var
                _bVM_=
                 function(buf)
                  {function _bXF_(param)
                    {var
                      c=param[3],
                      arg_name=param[2],
                      constructor=param[1],
                      _bXG_=caml_call2(Stdlib[28],shiftIdent,shiftIdent),
                      _bXH_=caml_call2(Stdlib[28],indent$1,_bXG_);
                     function _bXI_(_bXK_,_bXL_){return pp(_bXH_,_bXK_,_bXL_)}
                     var _bXJ_=caml_call2(Stdlib[28],indent$1,shiftIdent);
                     return caml_call7
                             (Stdlib_printf[5],
                              buf,
                              _NZ_,
                              _bXJ_,
                              constructor,
                              arg_name,
                              _bXI_,
                              c)}
                   return caml_call1(Utils_List[18],_bXF_)},
                _bVN_=arg(_N0_,_bVI_);
               return caml_call6
                       (Stdlib_printf[5],buf,_N1_,indent$1,_bVN_,_bVM_,cases);
              case 5:
               var _bVU_=_bVx_[2],_bVV_=_bVx_[1];
               switch(_bVU_[0])
                {case 0:throw [0,Assert_failure,_N6_];
                 case 1:
                  var
                   c$3=_bVx_[3],
                   ns=_bVU_[1],
                   f=caml_call2(Stdlib_printf[5],buf,_N7_),
                   _bVW_=function(_bXB_,_bXC_){return pp(indent$1,_bXB_,_bXC_)};
                  return caml_call9
                          (f,indent$1,pps,ns,arg(0,_bVV_),ppS,ns,newline,_bVW_,c$3);
                 default:
                  var
                   c$4=_bVx_[3],
                   bs=_bVU_[2],
                   _bVX_=function(param){var var$0=param[1];return var$0},
                   vs=caml_call2(Utils_List[20],_bVX_,bs),
                   _bVY_=function(param){var field=param[2];return field},
                   fs=caml_call2(Utils_List[20],_bVY_,bs),
                   f$0=caml_call2(Stdlib_printf[5],buf,_N8_),
                   _bVZ_=function(_bXD_,_bXE_){return pp(indent$1,_bXD_,_bXE_)};
                  return caml_call9
                          (f$0,indent$1,pps,vs,arg(0,_bVV_),ppS,fs,newline,_bVZ_,c$4)}
              case 6:
               var _bV0_=_bVx_[2],_bV1_=_bVx_[1];
               switch(_bV0_[0])
                {case 0:
                  var
                   c$5=_bVx_[3],
                   x=_bV0_[1],
                   indent$2=caml_call2(Stdlib[28],indent$1,shiftIdent),
                   f$1=caml_call2(Stdlib_printf[5],buf,_N9_),
                   _bV2_=function(_bXx_,_bXy_){return pp(indent$2,_bXx_,_bXy_)};
                  return caml_call7
                          (f$1,indent$1,arg(0,_bV1_),x,x,newline,_bV2_,c$5);
                 case 1:
                  var
                   c$6=_bVx_[3],
                   ls=_bV0_[1],
                   indent$3=caml_call2(Stdlib[28],indent$1,shiftIdent),
                   f$2=caml_call2(Stdlib_printf[5],buf,_N__),
                   _bV3_=function(_bXv_,_bXw_){return pp(indent$3,_bXv_,_bXw_)};
                  return caml_call9
                          (f$2,indent$1,arg(0,_bV1_),ppS,ls,pps,ls,newline,_bV3_,c$6);
                 default:
                  var
                   c$7=_bVx_[3],
                   name=_bV0_[1],
                   indent$4=caml_call2(Stdlib[28],indent$1,shiftIdent),
                   f$3=caml_call2(Stdlib_printf[5],buf,_N$_),
                   _bV4_=function(_bXz_,_bXA_){return pp(indent$4,_bXz_,_bXA_)};
                  return caml_call7
                          (f$3,indent$1,arg(0,_bV1_),name,name,newline,_bV4_,c$7)}
              case 7:
               var
                _bV5_=_bVx_[4],
                _bV6_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                _bV7_=function(_bXt_,_bXu_){return pp(_bV6_,_bXt_,_bXu_)},
                _bV8_=_bVx_[3],
                _bV9_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                _bV__=function(_bXr_,_bXs_){return pp(_bV9_,_bXr_,_bXs_)},
                _bV$_=_bVx_[2],
                _bWa_=arg(_Oa_,_bVx_[1]);
               return caml_call13
                       (Stdlib_printf[5],
                        buf,
                        _Ob_,
                        indent$1,
                        _bWa_,
                        _bV$_,
                        newline,
                        _bV__,
                        _bV8_,
                        newline,
                        indent$1,
                        newline,
                        _bV7_,
                        _bV5_);
              case 8:
               var _bWb_=_bVx_[1],_bWc_=_bVx_[2][1];
               if(6 === _bWc_[0])
                {var _bWg_=_bWc_[1];
                 if(typeof _bWg_ !== "number" && 6 === _bWg_[0])
                  {var
                    e$1=_bWc_[2],
                    t$0=_bWg_[1],
                    _bWh_=type_to_string(0,0,0,0,t$0),
                    _bWi_=arg(0,e$1),
                    _bWj_=tvariable_to_string([0,options],0,[0,_bWb_,t$0],1),
                    _bWk_=tvariable_to_string([0,options],0,[0,_bWb_,t$0],1);
                   return caml_call7
                           (Stdlib_printf[5],buf,_Od_,indent$1,_bWk_,_bWj_,_bWi_,_bWh_)}}
               var
                e$0=_bVx_[2],
                _bWd_=arg(0,e$0),
                _bWe_=variable_to_string([0,options],0,_bWb_,1),
                _bWf_=variable_to_string([0,options],0,_bWb_,1);
               return caml_call6
                       (Stdlib_printf[5],buf,_Oc_,indent$1,_bWf_,_bWe_,_bWd_);
              case 9:
               var t$1=_bVx_[2],s=_bVx_[1],_bWl_=t$1[1];
               if(7 === _bWl_[0])
                {var _bWo_=_bWl_[1],switch$1=0;
                 if(typeof _bWo_ === "number")
                  if(4 === _bWo_)
                   {var s$0=_bWl_[3],u=_bWl_[2];
                    if(caml_equal(s,s$0))
                     {var _bWp_=s[1],_bWq_=u[1];
                      if(5 === _bWp_[0])
                       {var _bWt_=_bWp_[1],switch$2=0;
                        if(typeof _bWt_ === "number" || ! (3 === _bWt_[0]))
                         switch$2 = 1;
                        else
                         if(! caml_string_notequal(_bWt_[1],cst_operations$3))
                          switch(_bWq_[0])
                           {case 6:
                             var _bWu_=_bWq_[1];
                             if(typeof _bWu_ === "number" && 7 === _bWu_)
                              {var e$2=_bWq_[2],_bWv_=arg(0,e$2);
                               return caml_call4(Stdlib_printf[5],buf,_Oh_,indent$1,_bWv_)}
                             break;
                            case 25:
                             var _bWx_=_bWq_[3][1],_bWw_=_bWq_[1];
                             if(9 === _bWx_[0])
                              {var _bWB_=_bWq_[2];
                               if(! caml_string_notequal(_bWx_[1],cst_Some$51))
                                {var _bWC_=_bWx_[2][1];
                                 if(22 === _bWC_[0])
                                  {var _bWD_=_bWC_[2][1],switch$3=0;
                                   if(typeof _bWD_ === "number" || ! (1 === _bWD_[0]))
                                    switch$3 = 1;
                                   else
                                    {var _bWE_=_bWD_[1];
                                     if(typeof _bWE_ === "number" && ! _bWE_ && ! _bWx_[3])
                                      {var
                                        address=_bWC_[3],
                                        _bWF_=arg(0,_bWB_),
                                        _bWG_=arg(0,address);
                                       return caml_call5
                                               (Stdlib_printf[5],buf,_Oj_,indent$1,_bWG_,_bWF_)}}}}}
                             var
                              destination=_bWq_[3],
                              amount=_bWq_[2],
                              _bWy_=arg(0,destination),
                              _bWz_=arg(0,amount),
                              _bWA_=arg(0,_bWw_);
                             return caml_call6
                                     (Stdlib_printf[5],buf,_Oi_,indent$1,_bWA_,_bWz_,_bWy_)
                            }}
                      var _bWr_=arg(0,u),_bWs_=arg(0,s);
                      return caml_call5
                              (Stdlib_printf[5],buf,_Og_,indent$1,_bWs_,_bWr_)}}
                  else
                   switch$1 = 1;
                 else
                  if(1 === _bWo_[0])
                   switch$1 = 1;
                  else
                   {var _bWH_=_bWo_[1],switch$4=0;
                    if(typeof _bWH_ === "number")
                     {if(2 < (_bWH_ - 4 | 0) >>> 0)switch$4 = 1}
                    else
                     if(_bWH_[1])switch$4 = 1;
                    if(! switch$4)
                     {var u$0=_bWl_[3],s$1=_bWl_[2];
                      if(equal_expr_modulo_line_nos(s,s$1))
                       {var
                         _bWI_=arg(0,u$0),
                         _bWJ_=string_of_binOpInfix(_bWH_),
                         _bWK_=arg(0,s);
                        return caml_call6
                                (Stdlib_printf[5],buf,_Ok_,indent$1,_bWK_,_bWJ_,_bWI_)}}}}
               switch(language)
                {case 0:var set_operator=cst$201;break;
                 case 1:var set_operator=cst$202;break;
                 default:throw [0,Assert_failure,_Of_]}
               var _bWm_=arg(0,t$1),_bWn_=arg(0,s);
               return caml_call6
                       (Stdlib_printf[5],
                        buf,
                        _Oe_,
                        indent$1,
                        _bWn_,
                        set_operator,
                        _bWm_);
              case 10:
               var
                item=_bVx_[2],
                expr=_bVx_[1],
                _bWL_=arg(0,item),
                _bWM_=arg(0,expr),
                _bWN_=options[1]?cst_span_class_keyword_del_spa:cst_del;
               return caml_call6
                       (Stdlib_printf[5],buf,_Ol_,indent$1,_bWN_,_bWM_,_bWL_);
              case 11:
               var
                add=_bVx_[3],
                element=_bVx_[2],
                expr$0=_bVx_[1],
                _bWO_=arg(0,element),
                _bWP_=add?cst_add:cst_remove,
                _bWQ_=arg(0,expr$0);
               return caml_call6
                       (Stdlib_printf[5],buf,_Om_,indent$1,_bWQ_,_bWP_,_bWO_);
              case 12:
               var _bWR_=_bVx_[1];
               if(_bWR_)
                {var _bWS_=_bWR_[1],_bWT_=_bVx_[2][1];
                 if(15 === _bWT_[0])
                  {var c2$0=_bVx_[3],e$3=_bWT_[1];
                   switch(language)
                    {case 0:
                      var _bWU_=arg(0,e$3);
                      caml_call7
                       (Stdlib_printf[5],
                        buf,
                        _Ot_,
                        indent$1,
                        _bWS_,
                        _bWS_,
                        _bWU_,
                        newline);
                      var c$0=c2$0;
                      continue;
                     case 1:
                      var _bWV_=arg(0,e$3);
                      caml_call6
                       (Stdlib_printf[5],buf,_Ou_,indent$1,_bWS_,_bWV_,newline);
                      var c$0=c2$0;
                      continue;
                     default:throw [0,Assert_failure,_Ov_]}}
                 var c2=_bVx_[3],c1=_bVx_[2];
                 switch(language)
                  {case 0:
                    caml_call6
                     (Stdlib_printf[5],buf,_On_,indent$1,_bWS_,_bWS_,newline);
                    caml_call5(Stdlib_printf[5],buf,_Oo_,indent$1,_bWS_,newline);
                    pp(caml_call2(Stdlib[28],indent$1,shiftIdent),buf,c1);
                    caml_call3(Stdlib_printf[5],buf,_Op_,newline);
                    var c$0=c2;
                    continue;
                   case 1:
                    caml_call5(Stdlib_printf[5],buf,_Oq_,indent$1,_bWS_,newline);
                    pp(caml_call2(Stdlib[28],indent$1,shiftIdent),buf,c1);
                    caml_call5
                     (Stdlib_printf[5],buf,_Or_,newline,indent$1,newline);
                    var c$0=c2;
                    continue;
                   default:throw [0,Assert_failure,_Os_]}}
               var c2$1=_bVx_[3],c1$0=_bVx_[2];
               pp(indent$1,buf,c1$0);
               switch(language)
                {case 0:var seq_separator=cst$203;break;
                 case 1:var seq_separator=cst$204;break;
                 default:throw [0,Assert_failure,_Ox_]}
               caml_call4(Stdlib_printf[5],buf,_Ow_,seq_separator,newline);
               var c$0=c2$1;
               continue;
              case 13:
               var c$8=_bVx_[3],e$4=_bVx_[2],var$0=_bVx_[1];
               if(options[1])
                {var
                  _bWW_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                  _bWX_=function(_bXp_,_bXq_){return pp(_bWW_,_bXp_,_bXq_)},
                  _bWY_=arg(0,e$4),
                  _bWZ_=variable_to_string([0,options],0,var$0,3);
                 return caml_call7
                         (Stdlib_printf[5],buf,_Oy_,indent$1,_bWZ_,_bWY_,_bWX_,c$8)}
               var
                _bW0_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                _bW1_=function(_bXn_,_bXo_){return pp(_bW0_,_bXn_,_bXo_)},
                _bW2_=arg(0,e$4),
                _bW3_=variable_to_string([0,options],0,var$0,3);
               return caml_call7
                       (Stdlib_printf[5],buf,_Oz_,indent$1,_bW3_,_bW2_,_bW1_,c$8);
              case 14:
               var c$9=_bVx_[2],e$5=_bVx_[1];
               if(options[1])
                {var
                  _bW4_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                  _bW5_=function(_bXl_,_bXm_){return pp(_bW4_,_bXl_,_bXm_)},
                  _bW6_=arg(0,e$5);
                 return caml_call6
                         (Stdlib_printf[5],buf,_OA_,indent$1,_bW6_,_bW5_,c$9)}
               var
                _bW7_=caml_call2(Stdlib[28],indent$1,shiftIdent),
                _bW8_=function(_bXj_,_bXk_){return pp(_bW7_,_bXj_,_bXk_)},
                _bW9_=arg(0,e$5);
               return caml_call6
                       (Stdlib_printf[5],buf,_OB_,indent$1,_bW9_,_bW8_,c$9);
              case 15:
               var _bW__=_bVx_[1],_bW$_=_bW__[1];
               if(5 === _bW$_[0])
                {var _bXc_=_bW$_[1],switch$5=0;
                 if(typeof _bXc_ === "number" || ! (0 === _bXc_[0]))
                  switch$5 = 1;
                 else
                  if(typeof _bXc_[1] === "number")
                   switch(language)
                    {case 0:
                      return caml_call3(Stdlib_printf[5],buf,_OF_,indent$1);
                     case 1:return std(cst$205,0);
                     default:throw [0,Assert_failure,_OG_]}}
               switch(language)
                {case 0:
                  var _bXa_=arg(0,_bW__);
                  return caml_call4(Stdlib_printf[5],buf,_OC_,indent$1,_bXa_);
                 case 1:
                  var _bXb_=arg(0,_bW__);
                  return caml_call4(Stdlib_printf[5],buf,_OD_,indent$1,_bXb_);
                 default:throw [0,Assert_failure,_OE_]}
              case 16:
               var s$2=_bVx_[1];
               return caml_call4(Stdlib_printf[5],buf,_OH_,indent$1,s$2);
              case 17:
               var t$2=_bVx_[2],e$6=_bVx_[1];
               switch(language)
                {case 0:
                  var
                   _bXd_=[0,type_to_string(0,0,_OI_,0,t$2),0],
                   _bXe_=pp_exprs([0,e$6,0]);
                  return std(cst_set_type,caml_call2(Stdlib[37],_bXe_,_bXd_));
                 case 1:
                  var _bXf_=type_to_string(0,0,0,0,t$2),_bXg_=arg(0,e$6);
                  return caml_call5
                          (Stdlib_printf[5],buf,_OJ_,indent$1,_bXg_,_bXf_);
                 default:throw [0,Assert_failure,_OK_]}
              case 18:
               var
                t$3=_bVx_[2],
                c$10=_bVx_[1],
                _bXh_=type_to_string(0,0,0,0,t$3);
               caml_call4(Stdlib_printf[5],buf,_OL_,indent$1,_bXh_);
               var
                indent$5=caml_call2(Stdlib[28],indent$1,shiftIdent),
                indent$1=indent$5,
                c$0=c$10;
               continue;
              case 19:var e$7=_bVx_[1];return mono(cst_trace,e$7);
              default:
               var e$8=_bVx_[2],s$3=_bVx_[1],_bXi_=arg(0,e$8);
               return caml_call5(Stdlib_printf[5],buf,_OM_,indent$1,s$3,_bXi_)}}}
        return function(_bVt_,_bVu_){return pp(indent,_bVt_,_bVu_)}}
      function command_to_string(indent,options,c)
       {var buf=caml_call1(Stdlib_buffer[1],64);
        caml_call2(pp_command(indent,options),buf,c);
        return caml_call1(Stdlib_buffer[2],buf)}
      function html_of_data(options,data)
       {var switch$0=0;
        if(options[1] && options[3])
         {var
           _bVm_=type_to_string(0,0,0,[0,options],type_of_value(data)),
           _bVn_=caml_call2(Stdlib[28],_bVm_,cst_br_br_br);
          switch$0 = 1}
        if(! switch$0)var _bVn_=cst$209;
        var
         _bVo_=value_to_string(0,0,[0,options],data),
         _bVp_=caml_call2(Stdlib_printf[4],_ON_,_bVo_);
        return caml_call2(Stdlib[28],_bVp_,_bVn_)}
      function init_html_of_data(options,v)
       {var _bVi_=v[1];
        switch(_bVi_[0])
         {case 0:if(typeof _bVi_[1] === "number")return 0;break;
          case 3:
           var
            l=_bVi_[2],
            _bVj_=
             function(param)
              {var
                v=param[2],
                n=param[1],
                x=[0,n,type_of_value(v)],
                _bVk_=value_to_string(0,0,0,v),
                _bVl_=tvariable_to_string([0,options],0,x,0);
               return caml_call3(Stdlib_printf[4],_OO_,_bVl_,_bVk_)};
           return caml_call2(Utils_List[20],_bVj_,l)
          }
        return [0,value_to_string(0,0,0,v),0]}
      function pp_contract(contract_id,opt,ppf,param)
       {var
         _bUU_=param[2],
         storage=_bUU_[2],
         balance=_bUU_[1],
         match=param[1][1],
         derived=match[13],
         entry_points=match[6];
        if(opt)var sth=opt[1],options=sth;else var options=Options[1];
        var
         tstorage=derived[1][5],
         newline=options[1]?cst_br$3:cst$221,
         indent=options[1]?cst_nbsp_nbsp$1:cst$220;
        if(storage)
         {var storage$0=storage[1];
          switch(language)
           {case 0:
             if(options[1])
              var sep=cst_br_nbsp_nbsp_nbsp_nbsp_nbs,init_f=_OP_;
             else
              var sep=cst$215,init_f=_O$_;
             var
              _bUV_=init_html_of_data(options,storage$0),
              _bUW_=caml_call2(Utils_String[7],sep,_bUV_),
              _bUX_=caml_call2(Stdlib_printf[4],init_f,_bUW_);
             break;
            case 1:
             if(options[1])
              var sep$0=cst_br_nbsp_nbsp_nbsp_nbsp_nbs$0,init_f$2=_Pa_;
             else
              var sep$0=cst$218,init_f$2=_Pd_;
             if(3 === storage$0[1][0])
              var
               _bU__=init_html_of_data(options,storage$0),
               _bU$_=caml_call2(Stdlib[28],sep$0,cst$216),
               _bVa_=caml_call2(Stdlib[28],cst$217,_bU$_),
               _bVb_=caml_call2(Utils_String[7],_bVa_,_bU__),
               storage$2=caml_call3(Stdlib_printf[4],_Pc_,sep$0,_bVb_);
             else
              var
               _bU9_=value_to_string(0,0,0,storage$0),
               storage$2=caml_call2(Stdlib_printf[4],_Pb_,_bU9_);
             var _bUX_=caml_call2(Stdlib_printf[4],init_f$2,storage$2);
             break;
            default:throw [0,Assert_failure,_Pe_]}
          var storage$1=_bUX_}
        else
         var storage$1=cst$219;
        switch(language)
         {case 0:
           var
            init_f$0=options[1]?_OQ_:_O7_,
            _bUY_=type_to_string(0,0,0,0,tstorage),
            init=caml_call3(Stdlib_printf[4],init_f$0,_bUY_,storage$1);
           break;
          case 1:
           var
            init_f$1=options[1]?_O8_:_O9_,
            _bU5_=function(n){return n[1]},
            _bU6_=caml_call2(Utils_List[20],_bU5_,entry_points),
            _bU7_=caml_call2(Utils_String[7],cst$214,_bU6_),
            _bU8_=type_to_string(0,0,0,0,tstorage),
            init=caml_call4(Stdlib_printf[4],init_f$1,_bU8_,storage$1,_bU7_);
           break;
          default:throw [0,Assert_failure,_O__]}
        if(contract_id)
         var
          contract_id$0=contract_id[1],
          _bUZ_=address_of_contract_id(options[1],contract_id$0,0),
          contract_id$1=caml_call2(Stdlib_printf[4],_OR_,_bUZ_);
        else
         var contract_id$1=cst$213;
        if(options[1])
         {var
           _bU0_=function(_bVh_){return html_of_data(options,_bVh_)},
           _bU1_=caml_call3(Base_Option[37],storage,cst$210,_bU0_),
           _bU2_=ppAmount(1,balance);
          caml_call5(Stdlib_format[123],ppf,_OS_,contract_id$1,_bU2_,_bU1_)}
        switch(language)
         {case 0:
           caml_call6
            (Stdlib_format[123],ppf,_OT_,newline,newline,newline,init);
           break;
          case 1:
           caml_call4(Stdlib_format[123],ppf,_O5_,newline,newline);break;
          default:throw [0,Assert_failure,_O6_]}
        function _bU3_(param)
         {var
           body=param[7],
           originate=param[3],
           tparameter_ep=param[2],
           channel=param[1];
          caml_call3(Stdlib_format[123],ppf,_OU_,newline);
          switch(language)
           {case 0:
             var
              iter_f=options[1]?_OV_:_OX_,
              switch$0=0,
              _bVc_=
               function(ppf,c)
                {var
                  c$0=
                   command_to_string
                    ([0,indent],[0,options],caml_call1(erase_types_command,c));
                 return caml_call3(Stdlib_format[123],ppf,_OW_,c$0)};
             if
              (typeof tparameter_ep
               ===
               "number"
               &&
               919067353
               <=
               tparameter_ep)
              {var _bVd_=cst$211;switch$0 = 1}
             if(! switch$0)var _bVd_=cst_params$2;
             var
              _bVe_=
               originate?cst_sp_entry_point:cst_sp_entry_point_private_Tru;
             return caml_call8
                     (Stdlib_format[123],
                      ppf,
                      iter_f,
                      _bVe_,
                      newline,
                      channel,
                      _bVd_,
                      _bVc_,
                      body);
            case 1:
             var
              iter_f$0=options[1]?_OY_:_O0_,
              switch$1=0,
              _bVf_=
               function(ppf,c)
                {var
                  c$0=
                   command_to_string
                    ([0,indent],[0,options],caml_call1(erase_types_command,c));
                 return caml_call3(Stdlib_format[123],ppf,_OZ_,c$0)};
             if
              (typeof tparameter_ep
               ===
               "number"
               &&
               919067353
               <=
               tparameter_ep)
              {var _bVg_=cst$212;switch$1 = 1}
             if(! switch$1)var _bVg_=cst_params$3;
             return caml_call6
                     (Stdlib_format[123],ppf,iter_f$0,channel,_bVg_,_bVf_,body);
            default:throw [0,Assert_failure,_O1_]}}
        caml_call2(Utils_List[18],_bU3_,entry_points);
        switch(language)
         {case 0:break;
          case 1:
           caml_call5(Stdlib_format[123],ppf,_O3_,newline,init,newline);break;
          default:throw [0,Assert_failure,_O4_]}
        var _bU4_=options[1];
        return _bU4_?caml_call2(Stdlib_format[123],ppf,_O2_):_bU4_}
      function contract_to_string(contract_id,options,c)
       {function _bUR_(_bUS_,_bUT_)
         {return pp_contract(contract_id,options,_bUS_,_bUT_)}
        return caml_call3(Stdlib_format[127],_Pf_,_bUR_,c)}
      function pp_tcontract(options,fmt,c)
       {return pp_contract(0,options,fmt,layout_records_instance(c))}
      function texpr_to_string(options,protect,x)
       {return expr_to_string
                (options,
                 protect,
                 caml_call1
                  (erase_types_expr,caml_call1(layout_records_expr,x)))}
      function tcommand_to_string(indent,options,x)
       {return command_to_string
                (indent,
                 options,
                 caml_call1
                  (erase_types_command,caml_call1(layout_records_command,x)))}
      function tcontract_to_string(contract_id,options,c)
       {return contract_to_string
                (contract_id,options,layout_records_instance(c))}
      function ppType(multiline,html,t)
       {if(html)
         {var _bUQ_=type_to_string(multiline,0,0,0,t);
          return caml_call2(Stdlib_printf[4],_Pg_,_bUQ_)}
        return type_to_string(multiline,0,0,0,t)}
      function of_file(param)
       {var l=param[2],s=param[1];
        if(-1 === l)return cst$222;
        var l$0=caml_call2(Stdlib_printf[4],_Ph_,l);
        if(caml_string_notequal(s,cst$223))
         var
          _bUP_=caml_call2(Stdlib[28],cst$224,l$0),
          s$0=caml_call2(Stdlib[28],s,_bUP_);
        else
         var s$0=l$0;
        return caml_call2(Stdlib_printf[4],_Pi_,s$0)}
      function ppExpr(html,e)
       {if(html)
         {var _bUI_=e[3];
          if(_bUI_)
           var
            match=_bUI_[1],
            l=match[2],
            pp=caml_call2(Stdlib_printf[4],_Pj_,l);
          else
           var pp=Utils_Control[1];
          var _bUJ_=ppType(0,html,e[2]),_bUK_=texpr_to_string(0,0,e);
          return caml_call1(pp,caml_call3(Stdlib_printf[4],_Pk_,_bUK_,_bUJ_))}
        var
         _bUL_=caml_call2(Utils_List[20],of_file,e[3]),
         _bUM_=caml_call2(Utils_String[7],cst$225,_bUL_),
         _bUN_=ppType(0,html,e[2]),
         _bUO_=texpr_to_string(0,0,e);
        return caml_call4(Stdlib_printf[4],_Pl_,_bUO_,_bUN_,_bUM_)}
      function ppExpr_untyped(html,e)
       {if(html)
         {var _bUE_=e[2];
          if(_bUE_)
           var
            match=_bUE_[1],
            l=match[2],
            pp=caml_call2(Stdlib_printf[4],_Pm_,l);
          else
           var pp=Utils_Control[1];
          return caml_call1(pp,expr_to_string(0,0,e))}
        var
         _bUF_=caml_call2(Utils_List[20],of_file,e[2]),
         _bUG_=caml_call2(Utils_String[7],cst$226,_bUF_),
         _bUH_=expr_to_string(0,0,e);
        return caml_call3(Stdlib_printf[4],_Pn_,_bUH_,_bUG_)}
      function simplify(x$3)
       {var acc=0,x=x$3;
        for(;;)
         {if(x)
           {var _bUx_=x[1];
            if(typeof _bUx_ === "number")
             {var rest=x[2],switch$0=0;
              if(acc && 14832 === acc[1]){var acc$0=acc;switch$0 = 1}
              if(! switch$0)var acc$0=[0,14832,acc];
              var acc=acc$0,x=rest;
              continue}
            var _bUy_=_bUx_[1];
            if(4100400 === _bUy_)
             {var
               rest$0=x[2],
               l=_bUx_[2],
               x$0=caml_call2(Stdlib[37],l,rest$0),
               x=x$0;
              continue}
            if(848053268 === _bUy_)
             {var rest$1=x[2],i=_bUx_[2];
              if(i)
               {var _bUz_=i[2],_bUA_=i[1];
                if(_bUz_)
                 {var
                   x$1=
                    [0,[0,848053268,[0,_bUA_,0]],[0,[0,848053268,_bUz_],rest$1]],
                   x=x$1;
                  continue}
                if(acc)
                 {var _bUB_=acc[1];
                  if(typeof _bUB_ === "number")
                   {if(14832 === _bUB_)
                     {var
                       acc$1=[0,[0,848053268,[0,_bUA_,0]],acc],
                       acc=acc$1,
                       x=rest$1;
                      continue}}
                  else
                   if(848053268 === _bUB_[1])
                    {var _bUC_=_bUB_[2];
                     if(_bUC_ && ! _bUC_[2])
                      {var _bUD_=acc[2];
                       if(_bUD_ && 14832 === _bUD_[1])
                        {var j=_bUC_[1];
                         if(caml_equal(_bUA_,j)){var x=rest$1;continue}}}}}
                var
                 acc$2=[0,[0,848053268,[0,_bUA_,0]],[0,14832,acc]],
                 acc=acc$2,
                 x=rest$1;
                continue}
              var x=rest$1;
              continue}
            var x$2=x[2],acc$3=[0,_bUx_,acc],acc=acc$3,x=x$2;
            continue}
          return caml_call1(Utils_List[12],acc)}}
      function flatten(acc,param)
       {var acc$0=acc,param$0=param;
        for(;;)
         {if(param$0)
           {var _bUv_=param$0[1];
            if(typeof _bUv_ === "number")
             {if(14832 === _bUv_)
               {var rest=param$0[2],_bUw_=flatten(0,rest);
                return [0,caml_call1(Utils_List[12],acc$0),_bUw_]}}
            else
             if(4100400 === _bUv_[1])
              {var
                rest$0=param$0[2],
                l=_bUv_[2],
                param$2=caml_call2(Stdlib[37],l,rest$0),
                param$0=param$2;
               continue}
            var
             param$1=param$0[2],
             acc$1=[0,_bUv_,acc$0],
             acc$0=acc$1,
             param$0=param$1;
            continue}
          return 0 === acc$0?0:[0,caml_call1(Utils_List[12],acc$0),0]}}
      function pp_smart_except(html,l)
       {var l$0=flatten(0,simplify(l));
        function f(xs)
         {function _bUn_(param)
           {if(typeof param !== "number")
             {var _bUp_=param[1];
              if(172818814 <= _bUp_)
               {if(771172693 === _bUp_)
                 {var expr=param[2];return ppExpr(html,expr)}
                if(936573133 <= _bUp_)
                 {if(937565914 <= _bUp_)
                   {var t=param[2];return ppType(_Pp_,html,t)}
                  var s=param[2];
                  return s}
                if(848053268 <= _bUp_)
                 {var line_no$0=param[2];
                  if(html)
                   {if(line_no$0)
                     var
                      match=line_no$0[1],
                      i=match[2],
                      s$0=match[1],
                      i$0=i,
                      line_no$1=[0,s$0,i];
                    else
                     var i$0=-1,line_no$1=line_no;
                    var _bUq_=of_file(line_no$1);
                    return caml_call3(Stdlib_printf[4],_Pq_,i$0,_bUq_)}
                  var _bUr_=caml_call2(Utils_List[20],of_file,line_no$0);
                  return caml_call2(Utils_String[7],cst$227,_bUr_)}
                var
                 exprs=param[2],
                 _bUs_=function(_bUu_){return ppExpr(html,_bUu_)},
                 _bUt_=caml_call2(Utils_List[20],_bUs_,exprs);
                return caml_call2(Utils_String[7],cst$228,_bUt_)}
              if(! (4100400 <= _bUp_))
               {if(-512962225 <= _bUp_)
                 {var literal=param[2];
                  return caml_call1(literal_to_sp_string(html,0),literal)}
                var value=param[2];
                return value_to_string(0,0,0,value)}
              if(33867591 <= _bUp_)
               {var expr$0=param[2];return ppExpr_untyped(html,expr$0)}}
            throw [0,Assert_failure,_Po_]}
          var _bUo_=caml_call2(Utils_List[20],_bUn_,xs);
          return caml_call2(Utils_String[7],cst$229,_bUo_)}
        var
         _bUl_=caml_call2(Utils_List[20],f,l$0),
         _bUm_=html?cst_br$4:cst$230;
        return caml_call2(Utils_String[7],_bUm_,_bUl_)}
      function wrong_condition_string(x)
       {var _bUk_=texpr_to_string(0,0,x);
        return caml_call2(Stdlib_printf[4],_Pr_,_bUk_)}
      function error_to_string(opt,operation)
       {if(opt)var sth=opt[1],options=sth;else var options=Options[1];
        if(options[1])
         {var message=operation[2],_bUi_=pp_smart_except(options[1],message);
          return caml_call2(Stdlib_printf[4],_Ps_,_bUi_)}
        var message$0=operation[2],_bUj_=pp_smart_except(0,message$0);
        return caml_call2(Stdlib_printf[4],_Pt_,_bUj_)}
      function exception_to_string(html,e)
       {if(e[1] === Stdlib[7]){var s=e[2];return s}
        if(e[1] === SmartExcept){var l=e[2];return pp_smart_except(html,l)}
        if(e[1] === Yojson[10][100][1])
         {var msg=e[2];return caml_call2(Stdlib[28],cst_Yojson_exception,msg)}
        return caml_call1(Stdlib_printexc[1],e)}
      return [0,
              language,
              layout_to_string,
              unknown_memo,
              Options,
              html_of_record_list,
              ppAmount,
              literal_to_sp_string,
              literal_to_string,
              print_row,
              type_to_string,
              string_of_contract_id,
              address_of_contract_id,
              unrec,
              is_range_keys,
              is_vector,
              is_matrix,
              is_record_list,
              value_to_string,
              operation_to_string,
              vclass_to_string,
              with_vclass,
              tvariable_to_string,
              variable_to_string,
              string_of_binOpInfix,
              string_of_binOpPrefix,
              collect_lambdas,
              prefix,
              mprim0_to_string,
              mprim1_to_string,
              mprim2_to_string,
              mprim3_to_string,
              expr_to_string,
              infix,
              pps,
              ppS,
              pp_command,
              command_to_string,
              html_of_data,
              init_html_of_data,
              pp_contract,
              contract_to_string,
              pp_tcontract,
              texpr_to_string,
              tcommand_to_string,
              tcontract_to_string,
              ppType,
              of_file,
              ppExpr,
              ppExpr_untyped,
              simplify,
              flatten,
              pp_smart_except,
              wrong_condition_string,
              error_to_string,
              exception_to_string]}
    var
     _Pu_=Build_printer([0,0]),
     SmartPy=
      [0,
       _Pu_[4],
       _Pu_[10],
       _Pu_[38],
       _Pu_[18],
       _Pu_[7],
       _Pu_[8],
       _Pu_[6],
       _Pu_[2],
       _Pu_[28],
       _Pu_[29],
       _Pu_[30],
       _Pu_[31],
       _Pu_[32],
       _Pu_[43],
       _Pu_[23],
       _Pu_[22],
       _Pu_[37],
       _Pu_[44],
       _Pu_[45],
       _Pu_[42],
       _Pu_[5],
       _Pu_[19],
       _Pu_[53],
       _Pu_[54],
       _Pu_[55],
       _Pu_[52],
       _Pu_[11],
       _Pu_[12]],
     _Pv_=Build_printer([0,1]),
     SmartML=
      [0,
       _Pv_[4],
       _Pv_[10],
       _Pv_[38],
       _Pv_[18],
       _Pv_[7],
       _Pv_[8],
       _Pv_[6],
       _Pv_[2],
       _Pv_[28],
       _Pv_[29],
       _Pv_[30],
       _Pv_[31],
       _Pv_[32],
       _Pv_[43],
       _Pv_[23],
       _Pv_[22],
       _Pv_[37],
       _Pv_[44],
       _Pv_[45],
       _Pv_[42],
       _Pv_[5],
       _Pv_[19],
       _Pv_[53],
       _Pv_[54],
       _Pv_[55],
       _Pv_[52],
       _Pv_[11],
       _Pv_[12]],
     _Pw_=Build_printer([0,2]),
     SmartTS=
      [0,
       _Pw_[4],
       _Pw_[10],
       _Pw_[38],
       _Pw_[18],
       _Pw_[7],
       _Pw_[8],
       _Pw_[6],
       _Pw_[2],
       _Pw_[28],
       _Pw_[29],
       _Pw_[30],
       _Pw_[31],
       _Pw_[32],
       _Pw_[43],
       _Pw_[23],
       _Pw_[22],
       _Pw_[37],
       _Pw_[44],
       _Pw_[45],
       _Pw_[42],
       _Pw_[5],
       _Pw_[19],
       _Pw_[53],
       _Pw_[54],
       _Pw_[55],
       _Pw_[52],
       _Pw_[11],
       _Pw_[12]];
    function get_by_language(param)
     {switch(param)
       {case 0:return SmartPy;case 1:return SmartML;default:return SmartTS}}
    function get$0(param)
     {var languages=param[17];
      if(languages)
       {var language=languages[1];return get_by_language(language)}
      throw [0,Assert_failure,_Px_]}
    var Smartml_Printer=[0,get_by_language,get$0];
    caml_register_global(6477,Smartml_Printer,"Smartml__Printer");
    function write(fn,ext,s)
     {var
       _bUa_=caml_call2(Stdlib[28],cst$231,ext),
       fn$0=caml_call2(Stdlib[28],fn,_bUa_);
      caml_call2(Utils_Io[2],fn$0,s);
      var _bUb_=caml_call2(Utils_String[34],10,s);
      return [0,fn$0,caml_call1(Utils_List[4],_bUb_)]}
    function ext_of_language(param)
     {switch(param)
       {case 0:return cst_py;case 1:return cst_ml;default:return cst_ts}}
    function write_pretty(language,opt,fn,c)
     {if(opt)var sth=opt[1],suffix=sth;else var suffix=cst$232;
      var
       Printer=get_by_language(language),
       _bT__=caml_call3(Printer[19],0,0,c),
       _bT$_=caml_call2(Stdlib[28],_bT__,suffix);
      return write(fn,ext_of_language(language),_bT$_)}
    function wrap_html_document(install,html)
     {var
       html$0=
        caml_call3
         (Base_String[69],
          html,
          cst_src_static_img,
          cst_src_https_SmartPy_io_stati),
       _bT2_=caml_call2(Stdlib_printf[4],_Py_,install),
       _bT3_=caml_call1(Utils_Io[1],_bT2_),
       _bT4_=caml_call2(Stdlib_printf[4],_Pz_,install),
       _bT5_=caml_call1(Utils_Io[1],_bT4_),
       _bT6_=caml_call2(Stdlib_printf[4],_PA_,install),
       _bT7_=caml_call1(Utils_Io[1],_bT6_),
       _bT8_=caml_call2(Stdlib_printf[4],_PB_,install),
       _bT9_=caml_call1(Utils_Io[1],_bT8_);
      return caml_call6(Stdlib_printf[4],_PC_,_bT9_,_bT7_,_bT5_,_bT3_,html$0)}
    function write_pretty_html(language,install,fn,c)
     {var
       Printer=get_by_language(language),
       html=caml_call3(Printer[19],0,[0,Printer[1][2]],c),
       _bT0_=wrap_html_document(install,html),
       _bT1_=ext_of_language(language);
      return write(fn,caml_call2(Stdlib[28],_bT1_,cst_html$1),_bT0_)}
    function write_contract_michelson(fn,c)
     {return write(fn,cst_tz,display_tcontract(c))}
    function write_micheline(fn,c)
     {var _bTU_=0,_bTV_=0,_bTW_=0;
      function _bTX_(_bTY_,_bTZ_)
       {return pp_as_json(_bTW_,_bTV_,_bTU_,_bTY_,_bTZ_)}
      var c$0=caml_call3(Stdlib_format[127],_PD_,_bTX_,c);
      return write(fn,cst_json,c$0)}
    function write_contract_michel(fn,c)
     {var pp=caml_call1(Michel_Expr[65],Michel_Expr[64]);
      function m(ppf){return caml_call2(Stdlib_format[40],ppf,160)}
      return write(fn,cst_michel,caml_call4(Stdlib_format[127],_PE_,m,pp,c))}
    function write_tvalue(fn,s)
     {var Printer=get_by_language(0);
      return write(fn,cst_py$0,caml_call4(Printer[4],0,0,0,s))}
    function write_mliteral(fn,s)
     {return write(fn,cst_tz$0,string_of_literal(s))}
    function write_html(fn,s){return write(fn,cst_html$2,s)}
    function write_csv(fn,lines)
     {var
       _bTS_=caml_call1(Utils_String[7],cst$233),
       _bTT_=caml_call2(Utils_List[20],_bTS_,lines);
      return write(fn,cst_csv,caml_call2(Utils_String[7],cst$234,_bTT_))}
    function pp_contract_types(param)
     {var
       match=param[1][1],
       derived=match[13],
       views=match[12],
       global_variables=match[10],
       Printer=get_by_language(0),
       tparameter=derived[1][1],
       tstorage=derived[1][5],
       buf=caml_call1(Stdlib_buffer[1],64);
      function pp_global(i,param)
       {var
         g=param[2],
         n=param[1],
         pref=0 === i?cst$235:cst$236,
         _bTR_=caml_call5(Printer[2],0,0,0,0,g[2]);
        return caml_call5(Stdlib_printf[5],buf,_PF_,pref,n,_bTR_)}
      function pp_view(i,param)
       {var
         tparameter_derived=param[6],
         body=param[4],
         name=param[1],
         pref=0 === i?cst$237:cst$239,
         arg=Printer[2],
         _bTP_=tparameter_derived[1];
        function _bTQ_(eta){return caml_call5(arg,0,0,0,0,eta)}
        var
         t1=caml_call3(Utils_Option[12],cst$238,_bTQ_,_bTP_),
         t2=caml_call5(Printer[2],0,0,0,0,body[2]);
        return caml_call6(Stdlib_printf[5],buf,_PG_,pref,name,t1,t2)}
      caml_call2(Stdlib_printf[5],buf,_PH_);
      var _bTN_=caml_call5(Printer[2],0,0,0,0,tstorage);
      caml_call3(Stdlib_printf[5],buf,_PI_,_bTN_);
      var _bTO_=caml_call5(Printer[2],0,0,0,0,tparameter);
      caml_call3(Stdlib_printf[5],buf,_PJ_,_bTO_);
      caml_call2(Stdlib_printf[5],buf,_PK_);
      caml_call2(Utils_List[19],pp_global,global_variables);
      caml_call2(Stdlib_printf[5],buf,_PL_);
      caml_call2(Stdlib_printf[5],buf,_PM_);
      caml_call2(Utils_List[19],pp_view,views);
      caml_call2(Stdlib_printf[5],buf,_PN_);
      return caml_call1(Stdlib_buffer[2],buf)}
    function write_contract_types(fn,c)
     {return write(fn,cst_py$1,pp_contract_types(c))}
    function write_metadata(fn,m)
     {var _bTM_=caml_call3(Utils_Misc[19],0,0,0);
      return write(fn,cst_json$0,caml_call3(Stdlib_format[127],_PO_,_bTM_,m))}
    var
     Smartml_Writer=
      [0,
       write_pretty,
       write_pretty_html,
       write_contract_michelson,
       write_micheline,
       write_contract_michel,
       write_tvalue,
       write_mliteral,
       pp_contract_types,
       write_contract_types,
       write_metadata,
       write_html,
       write_csv,
       wrap_html_document];
    caml_register_global(6480,Smartml_Writer,"Smartml__Writer");
    function get$1(param,x){var unzip=param[1];return caml_call1(unzip,x)[1]}
    function set$2(param,rhs,x)
     {var unzip=param[1];return caml_call1(caml_call1(unzip,x)[2],rhs)}
    function get_and_set(param,rhs,x)
     {var
       unzip=param[1],
       match=caml_call1(unzip,x),
       zip=match[2],
       focus=match[1];
      return [0,focus,caml_call1(zip,rhs)]}
    function modify(x,param,f)
     {var
       unzip=param[1],
       match=caml_call1(unzip,x),
       zip=match[2],
       focus=match[1];
      return caml_call1(zip,caml_call1(f,focus))}
    function unzip(x){return [0,x,function(x){return x}]}
    var acc=[0,unzip];
    function symbol$0(param,_bTJ_)
     {var b=_bTJ_[1],a=param[1];
      function unzip(x)
       {var za=caml_call1(a,x),zb=caml_call1(b,za[1]);
        function _bTK_(c)
         {var _bTL_=caml_call1(zb[2],c);return caml_call1(za[2],_bTL_)}
        return [0,zb[1],_bTK_]}
      return [0,unzip]}
    function some$0(err)
     {function unzip(param)
       {if(param){var x=param[1];return [0,x,function(x){return [0,x]}]}
        return caml_call1(Stdlib[2],err)}
      return [0,unzip]}
    function option$0(err)
     {function unzip(x)
       {return [0,
                [0,x],
                function(param)
                 {if(param){var x=param[1];return x}
                  return caml_call1(Stdlib[2],err)}]}
      return [0,unzip]}
    function assoc(equal,key)
     {function unzip(xs)
       {function _bTF_(param)
         {var k=param[1];return 1 - caml_call2(equal,k,key)}
        var
         _bTG_=caml_call2(Base_List[128],xs,_bTF_),
         _bTH_=_bTG_[2],
         _bTI_=_bTG_[1];
        if(_bTH_)
         {var post=_bTH_[2],match=_bTH_[1],v=match[2],k=match[1];
          return [0,
                  [0,v],
                  function(param)
                   {if(param)
                     {var v=param[1];
                      return caml_call2(Stdlib[37],_bTI_,[0,[0,k,v],post])}
                    return caml_call2(Stdlib[37],_bTI_,post)}]}
        return [0,
                0,
                function(param)
                 {if(param){var v=param[1];return [0,[0,key,v],xs]}return xs}]}
      return [0,unzip]}
    function assoc_exn(equal,key,err)
     {var _bTE_=some$0(err);return symbol$0(assoc(equal,key),_bTE_)}
    function nth(n)
     {function unzip(xs)
       {var _bTC_=caml_call2(Base_List[58],xs,n),_bTD_=_bTC_[2];
        if(_bTD_)
         {var post=_bTD_[2],x=_bTD_[1],pre=_bTC_[1];
          return [0,
                  [0,x],
                  function(param)
                   {if(param)
                     {var x=param[1];
                      return caml_call2(Stdlib[37],pre,[0,x,post])}
                    return caml_call1(Stdlib[2],cst_list_nth_cannot_delete)}]}
        return [0,
                0,
                function(param)
                 {return param
                          ?caml_call1(Stdlib[2],cst_list_nth_cannot_insert)
                          :xs}]}
      return [0,unzip]}
    function sorted_list(equal,elem)
     {function unzip(xs)
       {function _bTy_(k){return 1 - caml_call2(equal,k,elem)}
        var
         _bTz_=caml_call2(Base_List[128],xs,_bTy_),
         _bTA_=_bTz_[2],
         _bTB_=_bTz_[1];
        if(_bTA_)
         {var post=_bTA_[2],e=_bTA_[1];
          return [0,
                  1,
                  function(param)
                   {return param
                            ?caml_call2(Stdlib[37],_bTB_,[0,e,post])
                            :caml_call2(Stdlib[37],_bTB_,post)}]}
        return [0,0,function(param){return param?[0,elem,xs]:xs}]}
      return [0,unzip]}
    function ref(r)
     {return [0,
              function(param)
               {function _bTx_(x){r[1] = x;return 0}return [0,r[1],_bTx_]}]}
    var
     unref=
      [0,
       function(r){function _bTw_(x){r[1] = x;return r}return [0,r[1],_bTw_]}];
    function make(unzip){return [0,unzip]}
    function bi(f,g){return [0,function(x){return [0,caml_call1(f,x),g]}]}
    var
     Smartml_Lens=
      [0,
       get$1,
       set$2,
       get_and_set,
       modify,
       acc,
       symbol$0,
       assoc,
       assoc_exn,
       nth,
       sorted_list,
       some$0,
       option$0,
       ref,
       unref,
       make,
       bi];
    caml_register_global(6481,Smartml_Lens,"Smartml__Lens");
    var
     getTextRef=
      [0,
       function(param)
        {return caml_call1(Stdlib[2],cst_getText_not_implemented)}],
     setTextRef=
      [0,
       function(param,_bTv_)
        {return caml_call1(Stdlib[2],cst_setText_not_implemented)}],
     setValueRef=
      [0,
       function(param,_bTu_)
        {return caml_call1(Stdlib[2],cst_setValue_not_implemented)}],
     setOutputRef=
      [0,
       function(param)
        {return caml_call1(Stdlib[2],cst_setOutput_not_implemented)}],
     addOutputRef=
      [0,
       function(param)
        {return caml_call1(Stdlib[2],cst_addOutput_not_implemented)}],
     setOutputToMethodRef=
      [0,
       function(param,_bTt_)
        {return caml_call1(Stdlib[2],cst_setOutputToMethod_not_impl)}],
     isCheckedRef=
      [0,
       function(param)
        {return caml_call1(Stdlib[2],cst_getRadioValue_not_implemen)}],
     parseDateRef=
      [0,
       function(param)
        {return caml_call1(Stdlib[2],cst_parseDate_not_implemented)}];
    function getText(id){return caml_call1(getTextRef[1],id)}
    function setText(id,value){return caml_call2(setTextRef[1],id,value)}
    function setValue(id,value){return caml_call2(setValueRef[1],id,value)}
    function setOutput(value){return caml_call1(setOutputRef[1],value)}
    function addOutput(value){return caml_call1(addOutputRef[1],value)}
    function setOutputToMethod(methodName,output)
     {return caml_call2(setOutputToMethodRef[1],methodName,output)}
    function isChecked(id){return caml_call1(isCheckedRef[1],id)}
    function parseDate(t){return caml_call1(parseDateRef[1],t)}
    var
     Smartml_SmartDom=
      [0,
       getText,
       getTextRef,
       isChecked,
       isCheckedRef,
       parseDate,
       parseDateRef,
       setText,
       setTextRef,
       setValue,
       setValueRef,
       setOutput,
       addOutput,
       setOutputToMethod,
       setOutputRef,
       addOutputRef,
       setOutputToMethodRef];
    caml_register_global(6482,Smartml_SmartDom,"Smartml__SmartDom");
    var get_config=0;
    function return$0(x){return [1,x]}
    function bind(x,f){return [2,x,f]}
    function map$1(f,x){return [2,x,function(x){return [1,caml_call1(f,x)]}]}
    function apply(f,x)
     {return [2,
              f,
              function(f)
               {return [2,x,function(x){return [1,caml_call1(f,x)]}]}]}
    var
     include$2=caml_call1(Utils_Control[8],[0,map$1,return$0,apply,bind]),
     return$1=include$2[2],
     iter_list=include$2[16],
     iter2_list=include$2[18],
     let$0=include$2[24];
    function equalize$0(pp,r1,r2)
     {var r=equalize(r1,r2);
      return r?caml_call1(return$1,0):[0,caml_call1(pp,0)]}
    function fail_if(c,e){return c?[0,e]:caml_call1(return$1,0)}
    function assertEqual_layout(pp,l1,l2)
     {return caml_call2
              (let$0,
               get_config,
               function(config)
                {var _bTq_=get$0(config);
                 return equalize$0
                         (function(param)
                           {var
                             _bTr_=[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]],
                             _bTs_=
                              [0,
                               14832,
                               [0,
                                _PP_,
                                [0,14832,[0,[0,936573133,caml_call1(_bTq_[8],l2)],_bTr_]]]];
                            return [0,
                                    _PQ_,
                                    [0,14832,[0,[0,936573133,caml_call1(_bTq_[8],l1)],_bTs_]]]},
                          l1,
                          l2)})}
    function _PR_(t1,t2)
     {var t1$0=t1,t2$0=t2;
      for(;;)
       {var match=getRepr(t1$0),match$0=getRepr(t2$0),switch$0=0;
        if(typeof match === "number")
         if(typeof match$0 === "number")
          return caml_call1(return$1,0);
         else
          switch(match$0[0])
           {case 1:switch$0 = 2;break;case 8:switch$0 = 1;break}
        else
         switch(match[0])
          {case 1:
            var _bSf_=match[1];
            switch$0
            =
            typeof _bSf_ === "number" && 1 < (_bSf_ - 2 | 0) >>> 0?2:5;
            break;
           case 2:
            var _bSg_=match[1],switch$1=0,_bSh_=match[2];
            if(typeof match$0 !== "number")
             switch(match$0[0])
              {case 1:switch$0 = 2;switch$1 = 2;break;
               case 2:
                var t1$1=match$0[2],c$0=match$0[1];
                if(caml_call2(Michelson_base_Type[5],_bSg_,c$0))
                 {var t1$0=_bSh_,t2$0=t1$1;continue}
                switch$1 = 1;
                break;
               case 8:switch$1 = 1;break
               }
            switch(switch$1)
             {case 2:break;
              case 0:break;
              default:
               switch(_bSg_)
                {case 1:
                  var switch$2=0,_bSi_=match[2];
                  if(typeof match$0 !== "number" && 8 === match$0[0])
                   {switch$0 = 1;switch$2 = 1}
                  if(! switch$2 && 1 === match$0[1])
                   {var t2$1=match$0[2],t1$0=_bSi_,t2$0=t2$1;continue}
                  break;
                 case 2:
                  var switch$3=0,_bSj_=match[2];
                  if(typeof match$0 === "number" || ! (8 === match$0[0]))
                   switch$3 = 1;
                  else
                   switch$0 = 4;
                  if(switch$3 && 2 === match$0[1])
                   {var t2$2=match$0[2],t1$0=_bSj_,t2$0=t2$2;continue}
                  break;
                 case 4:
                  var switch$4=0,_bSk_=match[2];
                  if(typeof match$0 === "number" || ! (8 === match$0[0]))
                   switch$4 = 1;
                  else
                   switch$0 = 1;
                  if(switch$4 && 4 <= match$0[1])
                   {var t2$3=match$0[2],t1$0=_bSk_,t2$0=t2$3;continue}
                  break;
                 default:switch$0 = 1}}
            break;
           case 3:
            var _bSl_=match[1];
            if(typeof match$0 !== "number" && 3 === match$0[0])
             {var
               t2$4=match$0[3],
               t1$2=match$0[2],
               c$1=match$0[1],
               t2$5=match[3],
               t1$3=match[2];
              if(caml_call2(Michelson_base_Type[9],_bSl_,c$1))
               {var _bSq_=function(param){return _PR_(t2$5,t2$4)};
                return caml_call2(let$0,_PR_(t1$3,t1$2),_bSq_)}}
            if(typeof _bSl_ === "number")
             if(_bSl_)
              {var switch$5=0;
               if(typeof match$0 === "number")
                switch$5 = 1;
               else
                switch(match$0[0])
                 {case 1:switch$0 = 2;break;
                  case 8:switch$0 = 4;break;
                  default:switch$5 = 1}}
             else
              {var switch$6=0,_bSm_=match[3],_bSn_=match[2];
               if(typeof match$0 === "number")
                switch$6 = 1;
               else
                switch(match$0[0])
                 {case 1:switch$0 = 2;break;
                  case 3:
                   var _bSo_=match$0[1];
                   if(typeof _bSo_ === "number" && ! _bSo_)
                    {var
                      t22=match$0[3],
                      t21=match$0[2],
                      _bSp_=function(param){return _PR_(_bSm_,t22)};
                     return caml_call2(let$0,_PR_(_bSn_,t21),_bSp_)}
                   break;
                  case 8:switch$0 = 1;break;
                  default:switch$6 = 1}}
            else
             switch$0 = 2;
            break;
           case 4:
            var _bSr_=match[1],switch$7=0;
            if(typeof match$0 === "number")
             switch$7 = 1;
            else
             switch(match$0[0])
              {case 1:switch$0 = 2;break;
               case 4:
                var isNat2=match$0[1];
                return _bSr_ === isNat2
                        ?caml_call1(return$1,0)
                        :equalize$0(function(param){return _PU_},_bSr_,isNat2);
               case 8:switch$0 = 1;break;
               default:switch$7 = 1}
            break;
           case 5:
            var switch$8=0,_bSs_=match[2],_bSt_=match[1];
            if(typeof match$0 === "number")
             switch$8 = 1;
            else
             switch(match$0[0])
              {case 1:switch$0 = 2;break;
               case 5:
                var
                 cases2=match$0[2],
                 t2$6=match$0[1],
                 _bSu_=
                  function(param)
                   {function merge(cases1,cases2)
                     {var acc=0,l1=cases1[2],l2=cases2[2];
                      for(;;)
                       {if(l2)
                         {if(l1)
                           {var b=l2[1],l1$0=l1[2],a=l1[1],l2$0=l2[2];
                            if(caml_call2(equal$3,a,b))
                             {var acc$0=[0,a,acc],acc=acc$0,l1=l1$0,l2=l2$0;continue}
                            if(! (0 <= caml_call2(compare$1,a,b)))
                             {var acc$2=[0,a,acc],acc=acc$2,l1=l1$0;continue}}
                          var
                           l2$1=l2[2],
                           b$0=l2[1],
                           acc$1=[0,b$0,acc],
                           acc=acc$1,
                           l2=l2$1;
                          continue}
                        var
                         _bTn_=caml_call1(Utils_List[12],acc),
                         l=caml_call2(Stdlib[37],_bTn_,l1),
                         final1=cases1[1],
                         final2=cases2[1],
                         switch$0=0;
                        if(final1)
                         {var _bTo_=caml_call1(Utils_List[4],cases1[2]);
                          if(caml_call1(Utils_List[4],l) !== _bTo_)switch$0 = 1}
                        if(! switch$0)
                         {var switch$1=0;
                          if(final2)
                           {var _bTp_=caml_call1(Utils_List[4],cases2[2]);
                            if(caml_call1(Utils_List[4],l) === _bTp_)switch$1 = 1}
                          else
                           switch$1 = 1;
                          if(switch$1)
                           {var final1$0=final1 || final2;return [0,[0,final1$0,l]]}}
                        return 0}}
                    var r=equalize_merge(merge,_bSs_,cases2);
                    return r?caml_call1(return$1,0):[0,_PV_]};
                return caml_call2(let$0,_PR_(_bSt_,t2$6),_bSu_);
               case 8:switch$0 = 1;break;
               default:switch$8 = 1}
            break;
           case 6:
            var switch$9=0,_bSv_=match[2],_bSw_=match[1];
            if(typeof match$0 === "number")
             switch$9 = 1;
            else
             switch(match$0[0])
              {case 1:switch$0 = 2;break;
               case 6:
                var
                 l2=match$0[2],
                 lo2=match$0[1],
                 acc=
                  function(l1,l2)
                   {if(l1)
                     {var _bTi_=l1[1],_bTj_=_bTi_[1];
                      if(l2)
                       {var
                         l2$0=l2[2],
                         match=l2[1],
                         t2=match[2],
                         b=match[1],
                         l1$0=l1[2],
                         t1=_bTi_[2],
                         _bTk_=
                          function(param)
                           {function _bTm_(param){return acc(l1$0,l2$0)}
                            return caml_call2(let$0,_PR_(t1,t2),_bTm_)},
                         _bTl_=
                          [0,
                           [0,936573133,caml_call3(Stdlib_printf[4],_PW_,_bTj_,b)],
                           [0,
                            14832,
                            [0,[0,937565914,t1$0],[0,14832,[0,[0,937565914,t2$0],0]]]]];
                        return caml_call2
                                (let$0,fail_if(caml_string_notequal(_bTj_,b),_bTl_),_bTk_)}
                      var a=_bTj_}
                    else
                     {if(! l2)return caml_call1(return$1,0);var a=l2[1][1]}
                    return [0,
                            [0,
                             [0,936573133,caml_call2(Stdlib_printf[4],_PX_,a)],
                             [0,[0,937565914,t1$0],[0,[0,937565914,t2$0],0]]]]},
                 _bSx_=
                  function(param)
                   {function pp_layout(param)
                     {return [0,
                              [0,936573133,caml_call1(Stdlib_printf[4],_PY_)],
                              [0,[0,937565914,t1$0],[0,14832,[0,[0,937565914,t2$0],0]]]]}
                    return assertEqual_layout(pp_layout,_bSw_,lo2)},
                 _bSy_=caml_call2(Utils_List[52],caml_compare,l2);
                return caml_call2
                        (let$0,
                         acc(caml_call2(Utils_List[52],caml_compare,_bSv_),_bSy_),
                         _bSx_);
               case 8:switch$0 = 4;break;
               default:switch$9 = 1}
            break;
           case 7:
            var switch$10=0,_bSz_=match[2],_bSA_=match[1];
            if(typeof match$0 === "number")
             switch$10 = 1;
            else
             switch(match$0[0])
              {case 1:switch$0 = 2;break;
               case 7:
                var
                 l2$0=match$0[2],
                 lo2$0=match$0[1],
                 pp_layout=
                  function(param)
                   {return [0,
                            [0,936573133,caml_call1(Stdlib_printf[4],_PZ_)],
                            [0,[0,937565914,t1$0],[0,14832,[0,[0,937565914,t2$0],0]]]]},
                 _bSB_=
                  function(param)
                   {function acc(l1,l2)
                     {if(l1)
                       {if(l2)
                         {var
                           l2$0=l2[2],
                           _bTe_=l2[1],
                           t2=_bTe_[2],
                           b=_bTe_[1],
                           l1$0=l1[2],
                           match=l1[1],
                           t1=match[2],
                           a=match[1],
                           _bTf_=
                            function(param)
                             {function _bTh_(param){return acc(l1$0,l2$0)}
                              return caml_call2(let$0,_PR_(t1,t2),_bTh_)},
                           _bTg_=
                            [0,
                             [0,936573133,caml_call3(Stdlib_printf[4],_P1_,a,b)],
                             [0,[0,937565914,t1],[0,_P0_,[0,[0,937565914,t2],0]]]];
                          return caml_call2
                                  (let$0,fail_if(caml_string_notequal(a,b),_bTg_),_bTf_)}}
                      else
                       if(! l2)return caml_call1(return$1,0);
                      return [0,
                              [0,
                               _P3_,
                               [0,
                                14832,
                                [0,
                                 [0,937565914,t1$0],
                                 [0,14832,[0,_P2_,[0,14832,[0,[0,937565914,t2$0],0]]]]]]]]}
                    var _bTd_=caml_call2(Utils_List[52],caml_compare,l2$0);
                    return acc
                            (caml_call2(Utils_List[52],caml_compare,_bSz_),_bTd_)};
                return caml_call2
                        (let$0,assertEqual_layout(pp_layout,_bSA_,lo2$0),_bSB_);
               case 8:switch$0 = 4;break;
               default:switch$10 = 1}
            break;
           case 8:
            var _bSC_=match[1],switch$11=0;
            if(typeof match$0 === "number")
             switch$11 = 1;
            else
             switch(match$0[0])
              {case 1:switch$0 = 2;break;
               case 8:
                var t2$7=match$0[1];
                if(_bSC_ === t2$7)return caml_call1(return$1,0);
                switch$11 = 2;
                break;
               case 6:
               case 7:
               case 9:switch$11 = 2;break;
               default:switch$11 = 1}
            switch(switch$11)
             {case 0:break;
              case 1:switch$0 = 3;break;
              default:
               var _bSD_=_bSC_[1],switch$12=0;
               switch(_bSD_[0])
                {case 0:switch$0 = 3;break;
                 case 1:
                  var _bSE_=_bSD_[1],switch$13=0;
                  if(typeof match$0 !== "number")
                   switch(match$0[0])
                    {case 8:
                      var _bSG_=match$0[1],_bSH_=_bSG_[1];
                      switch(_bSH_[0])
                       {case 0:switch$0 = 1;switch$13 = 1;break;
                        case 1:
                         var
                          l2$2=_bSH_[1],
                          acc$0=
                           function(l1,l2)
                            {if(l1)
                              {var _bS__=l1[1];
                               if(l2)
                                {var b=l2[1],l1$0=l1[2];
                                 if(caml_lessthan(_bS__[1],b[1]))
                                  {var
                                    _bS$_=
                                     function(r){return caml_call1(return$1,[0,_bS__,r])};
                                   return caml_call2(let$0,acc$0(l1$0,l2),_bS$_)}
                                 var l2$0=l2[2];
                                 if(caml_lessthan(b[1],_bS__[1]))
                                  {var _bTa_=function(r){return caml_call1(return$1,[0,b,r])};
                                   return caml_call2(let$0,acc$0(l1,l2$0),_bTa_)}
                                 var
                                  l2$1=l2[2],
                                  match=l2[1],
                                  t2=match[2],
                                  l1$1=l1[2],
                                  t1=_bS__[2],
                                  a=_bS__[1],
                                  _bTb_=
                                   function(param)
                                    {function _bTc_(r)
                                      {return caml_call1(return$1,[0,[0,a,t1],r])}
                                     return caml_call2(let$0,acc$0(l1$1,l2$1),_bTc_)};
                                 return caml_call2(let$0,_PR_(t1,t2),_bTb_)}
                               var x=l1}
                             else
                              {if(! l2)return caml_call1(return$1,0);var x=l2}
                             return caml_call1(return$1,x)},
                          _bSI_=
                           function(l)
                            {_bSC_[1] = [1,l];
                             _bSG_[1] = [4,t1$0];
                             return caml_call1(return$1,0)},
                          _bSJ_=caml_call2(Utils_List[52],caml_compare,l2$2);
                         return caml_call2
                                 (let$0,
                                  acc$0(caml_call2(Utils_List[52],caml_compare,_bSE_),_bSJ_),
                                  _bSI_);
                        default:switch$13 = 1}
                      break;
                     case 7:
                     case 9:switch$13 = 1;break
                     }
                  if(! switch$13){var l2$1=match$0[2],l1=_bSE_;switch$12 = 1}
                  break;
                 case 2:
                  var _bSK_=_bSD_[1],switch$14=0;
                  if(typeof match$0 !== "number")
                   switch(match$0[0])
                    {case 8:
                      var _bSL_=match$0[1],_bSM_=_bSL_[1];
                      switch(_bSM_[0])
                       {case 0:switch$0 = 1;switch$14 = 1;break;
                        case 2:
                         var
                          l2$3=_bSM_[1],
                          acc$1=
                           function(l1,l2)
                            {if(l1)
                              {var _bS5_=l1[1];
                               if(l2)
                                {var b=l2[1],l1$0=l1[2];
                                 if(caml_lessthan(_bS5_[1],b[1]))
                                  {var
                                    _bS6_=
                                     function(r){return caml_call1(return$1,[0,_bS5_,r])};
                                   return caml_call2(let$0,acc$1(l1$0,l2),_bS6_)}
                                 var l2$0=l2[2];
                                 if(caml_lessthan(b[1],_bS5_[1]))
                                  {var _bS7_=function(r){return caml_call1(return$1,[0,b,r])};
                                   return caml_call2(let$0,acc$1(l1,l2$0),_bS7_)}
                                 var
                                  l2$1=l2[2],
                                  match=l2[1],
                                  t2=match[2],
                                  l1$1=l1[2],
                                  t1=_bS5_[2],
                                  a=_bS5_[1],
                                  _bS8_=
                                   function(param)
                                    {function _bS9_(r)
                                      {return caml_call1(return$1,[0,[0,a,t1],r])}
                                     return caml_call2(let$0,acc$1(l1$1,l2$1),_bS9_)};
                                 return caml_call2(let$0,_PR_(t1,t2),_bS8_)}
                               var x=l1}
                             else
                              {if(! l2)return caml_call1(return$1,0);var x=l2}
                             return caml_call1(return$1,x)},
                          _bSN_=
                           function(l)
                            {_bSC_[1] = [2,l];
                             _bSL_[1] = [4,t1$0];
                             return caml_call1(return$1,0)},
                          _bSO_=caml_call2(Utils_List[52],caml_compare,l2$3);
                         return caml_call2
                                 (let$0,
                                  acc$1(caml_call2(Utils_List[52],caml_compare,_bSK_),_bSO_),
                                  _bSN_);
                        default:switch$14 = 1}
                      break;
                     case 9:
                      var
                       l2$4=match$0[1],
                       checkInside$0=
                        function(param)
                         {var
                           t=param[2],
                           i=param[1],
                           match=caml_call2(Utils_List[11],l2$4,i);
                          if(match){var t2=match[1];return _PR_(t,t2)}
                          return [0,
                                  [0,
                                   _P9_,
                                   [0,
                                    [0,936573133,caml_call2(Stdlib_printf[4],_P8_,i)],
                                    [0,_P7_,[0,[0,937565914,t2$0],0]]]]]},
                       _bSP_=
                        function(param)
                         {_bSC_[1] = [4,t2$0];return caml_call1(return$1,0)};
                      return caml_call2
                              (let$0,caml_call2(iter_list,checkInside$0,_bSK_),_bSP_)
                     }
                  break;
                 case 3:
                  var _bSQ_=_bSD_[1],switch$15=0;
                  if(typeof match$0 === "number")
                   switch$15 = 1;
                  else
                   switch(match$0[0])
                    {case 7:var l2$1=match$0[2],l1=_bSQ_;switch$12 = 1;break;
                     case 8:
                      var _bSR_=match$0[1],_bSS_=_bSR_[1];
                      switch(_bSS_[0])
                       {case 0:switch$0 = 1;break;
                        case 3:
                         var
                          l2$5=_bSS_[1],
                          acc$2=
                           function(l1,l2)
                            {if(l1)
                              {var _bS0_=l1[1];
                               if(l2)
                                {var b=l2[1],l1$0=l1[2];
                                 if(caml_lessthan(_bS0_[1],b[1]))
                                  {var
                                    _bS1_=
                                     function(r){return caml_call1(return$1,[0,_bS0_,r])};
                                   return caml_call2(let$0,acc$2(l1$0,l2),_bS1_)}
                                 var l2$0=l2[2];
                                 if(caml_lessthan(b[1],_bS0_[1]))
                                  {var _bS2_=function(r){return caml_call1(return$1,[0,b,r])};
                                   return caml_call2(let$0,acc$2(l1,l2$0),_bS2_)}
                                 var
                                  l2$1=l2[2],
                                  match=l2[1],
                                  t2=match[2],
                                  b$0=match[1],
                                  l1$1=l1[2],
                                  t1=_bS0_[2],
                                  a=_bS0_[1];
                                 if(caml_equal(a,b$0))
                                  {var
                                    _bS3_=
                                     function(param)
                                      {function _bS4_(r)
                                        {return caml_call1(return$1,[0,[0,a,t1],r])}
                                       return caml_call2(let$0,acc$2(l1$1,l2$1),_bS4_)};
                                   return caml_call2(let$0,_PR_(t1,t2),_bS3_)}
                                 throw [0,Assert_failure,_P__]}
                               var x=l1}
                             else
                              {if(! l2)return caml_call1(return$1,0);var x=l2}
                             return caml_call1(return$1,x)},
                          _bST_=
                           function(l)
                            {_bSC_[1] = [3,l];
                             _bSR_[1] = [4,t1$0];
                             return caml_call1(return$1,0)},
                          _bSU_=caml_call2(Utils_List[52],caml_compare,l2$5);
                         return caml_call2
                                 (let$0,
                                  acc$2(caml_call2(Utils_List[52],caml_compare,_bSQ_),_bSU_),
                                  _bST_)
                        }
                      break;
                     default:switch$15 = 1}
                  break;
                 default:switch$0 = 1}
               if(switch$12)
                {var
                  checkInside=
                   function(param)
                    {var
                      t=param[2],
                      name=param[1],
                      match=caml_call3(Utils_List[82],0,name,l2$1);
                     if(match){var t2=match[1];return _PR_(t,t2)}
                     return [0,
                             [0,
                              _P6_,
                              [0,
                               [0,936573133,caml_call2(Stdlib_printf[4],_P5_,name)],
                               [0,_P4_,[0,[0,937565914,t2$0],0]]]]]},
                  _bSF_=
                   function(param)
                    {_bSC_[1] = [4,t2$0];return caml_call1(return$1,0)};
                 return caml_call2
                         (let$0,caml_call2(iter_list,checkInside,l1),_bSF_)}}
            break;
           case 9:
            var _bSV_=match[1],switch$16=0;
            if(typeof match$0 === "number")
             switch$16 = 1;
            else
             switch(match$0[0])
              {case 1:switch$0 = 2;break;
               case 8:switch$0 = 4;break;
               case 9:
                var ts2=match$0[1],_bSW_=caml_call1(Utils_List[4],ts2);
                return caml_call1(Utils_List[4],_bSV_) === _bSW_
                        ?caml_call3(iter2_list,_PR_,_bSV_,ts2)
                        :[0,
                          [0,_P$_,[0,[0,937565914,t1$0],[0,[0,937565914,t2$0],0]]]];
               default:switch$16 = 1}
            break;
           case 10:
            var switch$17=0,_bSX_=match[1];
            if(typeof match$0 === "number")
             switch$17 = 1;
            else
             switch(match$0[0])
              {case 1:switch$0 = 2;break;
               case 8:switch$0 = 1;break;
               case 10:var m2=match$0[1],m1=_bSX_;switch$0 = 6;break;
               default:switch$17 = 1}
            break;
           case 11:
            var switch$18=0,_bSY_=match[1];
            if(typeof match$0 === "number")
             switch$18 = 1;
            else
             switch(match$0[0])
              {case 1:switch$0 = 2;break;
               case 8:switch$0 = 1;break;
               case 11:var m2=match$0[1],m1=_bSY_;switch$0 = 6;break;
               default:switch$18 = 1}
            break;
           default:switch$0 = 2}
        var switch$19=0;
        switch(switch$0)
         {case 2:
           if(typeof match$0 === "number" || ! (1 === match$0[0]))
            switch$19 = 1;
           else
            {var _bSe_=match$0[1];
             switch$19
             =
             typeof _bSe_ === "number" && 1 < (_bSe_ - 2 | 0) >>> 0?1:3}
           break;
          case 3:switch$19 = 1;break;
          case 1:switch$19 = 2;break;
          case 0:break;
          case 5:switch$19 = 3;break;
          case 6:return equalize$0(function(param){return _Qa_},m1,m2);
          default:var _bSZ_=t2$0,t2$0=t1$0,t1$0=_bSZ_;continue}
        var switch$20=0;
        switch(switch$19)
         {case 1:
           if(typeof match !== "number")
            switch(match[0])
             {case 1:
               var switch$21=0,_bSc_=match[1];
               if(typeof match$0 !== "number")
                switch(match$0[0])
                 {case 1:
                   var c=match$0[1];
                   if(caml_call2(Michelson_base_Type[1],_bSc_,c))
                    return caml_call1(return$1,0);
                   switch$21 = 1;
                   break;
                  case 8:switch$20 = 1;switch$21 = 1;break
                  }
               break;
              case 8:
               var _bSd_=match[1];
               if(0 === _bSd_[1][0])
                {_bSd_[1] = [4,t2$0];return caml_call1(return$1,0)}
               switch$20 = 1;
               break;
              case 0:
              case 3:switch$20 = 1;break
              }
           break;
          case 2:switch$20 = 1;break;
          case 0:break;
          default:throw [0,Assert_failure,_PT_]}
        if(switch$20 && typeof match$0 !== "number" && 8 === match$0[0])
         {var _bSb_=match$0[1];
          if(0 === _bSb_[1][0])
           {_bSb_[1] = [4,t1$0];return caml_call1(return$1,0)}}
        return [0,[0,[0,937565914,t1$0],[0,_PS_,[0,[0,937565914,t2$0],0]]]]}}
    function assertEqual(config,t1,t2)
     {var _bSa_=_PR_(t1,t2);
      function run(param)
       {var param$0=param;
        for(;;)
         if(typeof param$0 === "number")
          return [0,config];
         else
          switch(param$0[0])
           {case 0:var e=param$0[1];return [1,e];
            case 1:var x=param$0[1];return [0,x];
            default:
             var f=param$0[2],x$0=param$0[1],match=run(x$0);
             if(0 === match[0])
              {var x$1=match[1],param$1=caml_call1(f,x$1),param$0=param$1;
               continue}
             var e$0=match[1];
             return [1,e$0]}}
      return run(_bSa_)}
    var Smartml_Unifier=[0,assertEqual];
    caml_register_global(6483,Smartml_Unifier,"Smartml__Unifier");
    function return$2(x,s){return [0,x,s]}
    function bind$0(x,f,s)
     {var match=caml_call1(x,s),s$0=match[2],y=match[1];
      return caml_call2(f,y,s$0)}
    function map$2(f,x)
     {function _bR8_(x)
       {var _bR__=caml_call1(f,x);
        return function(_bR$_){return [0,_bR__,_bR$_]}}
      return function(_bR9_){return bind$0(x,_bR8_,_bR9_)}}
    function apply$0(f,x)
     {function _bR2_(f)
       {function _bR4_(x)
         {var _bR6_=caml_call1(f,x);
          return function(_bR7_){return [0,_bR6_,_bR7_]}}
        return function(_bR5_){return bind$0(x,_bR4_,_bR5_)}}
      return function(_bR3_){return bind$0(f,_bR2_,_bR3_)}}
    function add_constraint(line_no,c,param)
     {var constraints=param[1];return [0,0,[0,[0,[0,line_no,c],constraints]]]}
    var
     include$3=caml_call1(Utils_Control[8],[0,map$2,return$2,apply$0,bind$0]),
     _Qb_=include$3[2],
     _Qc_=include$3[24];
    function unresolved_error(line_no,param)
     {switch(param[0])
       {case 0:
         var e2=param[3],e1=param[2],e=param[1];
         return [0,
                 _Qe_,
                 [0,
                  [0,172818814,[0,e1,[0,e2,0]]],
                  [0,_Qd_,[0,[0,771172693,e],[0,[0,848053268,e[3]],0]]]]];
        case 1:
         var e2$0=param[3],e1$0=param[2],e$0=param[1];
         return [0,
                 _Qg_,
                 [0,
                  [0,172818814,[0,e1$0,[0,e2$0,0]]],
                  [0,_Qf_,[0,[0,771172693,e$0],[0,[0,848053268,e$0[3]],0]]]]];
        case 2:
         var e2$1=param[3],e1$1=param[2],e$1=param[1];
         return [0,
                 _Qi_,
                 [0,
                  [0,172818814,[0,e1$1,[0,e2$1,0]]],
                  [0,_Qh_,[0,[0,771172693,e$1],[0,[0,848053268,line_no],0]]]]];
        case 3:
         var e2$2=param[3],e1$2=param[2],e$2=param[1];
         return [0,
                 _Ql_,
                 [0,
                  [0,172818814,[0,e1$2,[0,e2$2,0]]],
                  [0,
                   _Qk_,
                   [0,
                    [0,771172693,e$2],
                    [0,14832,[0,_Qj_,[0,[0,848053268,line_no],0]]]]]]];
        case 4:
         var e2$3=param[3],e1$3=param[2],e$3=param[1];
         return [0,
                 _Qn_,
                 [0,
                  [0,172818814,[0,e1$3,[0,e2$3,0]]],
                  [0,_Qm_,[0,[0,771172693,e$3],[0,[0,848053268,line_no],0]]]]];
        case 5:
         var e2$4=param[3],e1$4=param[2],e$4=param[1];
         return [0,
                 _Qp_,
                 [0,
                  [0,172818814,[0,e1$4,[0,e2$4,0]]],
                  [0,_Qo_,[0,[0,771172693,e$4],[0,[0,848053268,line_no],0]]]]];
        case 6:var e$5=param[1];return [0,_Qr_,[0,[0,771172693,e$5],_Qq_]];
        case 7:
         var pos=param[2],l=param[1];
         return [0,_Qt_,[0,[0,771172693,l],[0,_Qs_,[0,[0,771172693,pos],0]]]];
        case 8:
         var line_no$0=param[3],member=param[2],items=param[1];
         return [0,
                 _Qv_,
                 [0,
                  [0,771172693,items],
                  [0,
                   _Qu_,
                   [0,[0,771172693,member],[0,[0,848053268,line_no$0],0]]]]];
        case 9:
         var e$6=param[1];
         return [0,
                 _Qx_,
                 [0,[0,771172693,e$6],[0,_Qw_,[0,[0,848053268,e$6[3]],0]]]];
        case 10:
         var e$7=param[1];
         return [0,
                 _Qz_,
                 [0,[0,771172693,e$7],[0,_Qy_,[0,[0,848053268,e$7[3]],0]]]];
        case 11:throw [0,Assert_failure,_QA_];
        case 12:var pp=param[2];return caml_call1(pp,0);
        case 13:
         var transaction=param[2],state=param[1];
         return [0,
                 _QB_,
                 [0,
                  [0,172818814,[0,state,[0,transaction,0]]],
                  [0,[0,848053268,line_no],0]]];
        case 14:
         var e$8=param[1];
         return [0,
                 _QD_,
                 [0,[0,771172693,e$8],[0,_QC_,[0,[0,848053268,e$8[3]],0]]]];
        case 15:
         var e$9=param[1];
         return [0,
                 _QF_,
                 [0,[0,771172693,e$9],[0,_QE_,[0,[0,848053268,e$9[3]],0]]]];
        case 16:
         var t=param[2],n=param[1];
         return [0,
                 _QI_,
                 [0,
                  [0,936573133,n],
                  [0,
                   _QH_,
                   [0,[0,937565914,t],[0,_QG_,[0,[0,848053268,line_no],0]]]]]];
        default:
         var e$10=param[3],tv=param[2],tk=param[1];
         return [0,
                 [0,771172693,e$10],
                 [0,
                  _QL_,
                  [0,
                   [0,937565914,e$10[2]],
                   [0,
                    _QK_,
                    [0,
                     [0,937565914,tk],
                     [0,_QJ_,[0,[0,937565914,tv],[0,[0,848053268,line_no],0]]]]]]]]}}
    function assertEqual$0(config,pp,t1,t2)
     {var match=assertEqual(config,t1,t2);
      if(0 === match[0])return caml_call1(_Qb_,0);
      var e=match[1],_bR1_=[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]];
      throw [0,SmartExcept,caml_call2(Stdlib[37],[0,_QM_,[0,14832,e]],_bR1_)]}
    var
     is_comparable$0=
      caml_call1
       (cata,
        function(t)
         {var switch$0=0;
          if(typeof t !== "number")
           switch(t[0])
            {case 1:
              var _bRZ_=t[1];
              if(typeof _bRZ_ === "number")
               if(14 <= _bRZ_)
                {if(15 === _bRZ_)switch$0 = 1}
               else
                if(1 < (_bRZ_ - 2 | 0) >>> 0)switch$0 = 1;else switch$0 = 3;
              else
               switch$0 = 3;
              break;
             case 2:if(! t[1])switch$0 = 2;break;
             case 3:if(typeof t[1] !== "number")switch$0 = 3;break;
             case 8:
              var _bR0_=t[1][1];
              switch(_bR0_[0])
               {case 0:switch$0 = 4;break;
                case 4:var c=_bR0_[1];return c;
                default:switch$0 = 2}
              break;
             case 0:switch$0 = 4;break;
             case 4:
             case 5:switch$0 = 1;break;
             case 10:
             case 11:break;
             default:switch$0 = 2}
          switch(switch$0)
           {case 1:return 0;
            case 0:return 1;
            case 4:return 2;
            case 2:return fold_f(Utils_Ternary[1],0,t);
            default:throw [0,Assert_failure,_QN_]}});
    function apply_constraint(config,line_no,c)
     {function pp(param){return unresolved_error(line_no,c)}
      function unresolved(_bRY_){return add_constraint(line_no,c,_bRY_)}
      switch(c[0])
       {case 0:
         var e1=c[2],match=getRepr(e1[2]),switch$0=0;
         if(typeof match !== "number")
          switch(match[0])
           {case 1:
             var _bQY_=match[1];
             if(typeof _bQY_ === "number")
              if(7 <= _bQY_)
               {if(16 <= _bQY_)switch$0 = 1}
              else
               if(4 <= _bQY_)switch$0 = 1;
             break;
            case 8:return unresolved;
            case 4:switch$0 = 1;break
            }
         if(switch$0)return caml_call1(_Qb_,0);
         throw [0,SmartExcept,pp(0)];
        case 1:
         var
          overloaded=c[4],
          e2=c[3],
          e1$0=c[2],
          e=c[1],
          integer_mul=
           function(e,e1,e2)
            {function _bRN_(param)
              {function _bRP_(param)
                {function _bRR_(param)
                  {var
                    match=getRepr(e[2]),
                    match$0=getRepr(e1[2]),
                    match$1=getRepr(e2[2]);
                   if
                    (typeof match
                     !==
                     "number"
                     &&
                     4
                     ===
                     match[0]
                     &&
                     typeof match$0
                     !==
                     "number"
                     &&
                     4
                     ===
                     match$0[0]
                     &&
                     typeof match$1
                     !==
                     "number"
                     &&
                     4
                     ===
                     match$1[0])
                    {var
                      isNat2=match$1[1],
                      isNat1=match$0[1],
                      isNat=match[1],
                      match$2=get(isNat),
                      match$3=get(isNat1),
                      match$4=get(isNat2);
                     if(match$3 && match$3[1])
                      return assertEqual$0(config,pp,e[2],e2[2]);
                     if(match$4)
                      {if(match$4[1])return assertEqual$0(config,pp,e[2],e1[2])}
                     else
                      if(! match$3)
                       {if(match$2 && match$2[1])
                         {var
                           _bRU_=
                            function(param)
                             {var _bRW_=nat$0(0);
                              return assertEqual$0(config,pp,e2[2],_bRW_)},
                           _bRV_=nat$0(0);
                          return caml_call2
                                  (_Qc_,assertEqual$0(config,pp,e1[2],_bRV_),_bRU_)}
                        return unresolved}
                     var _bRT_=int$1(0);
                     return assertEqual$0(config,pp,e[2],_bRT_)}
                   throw [0,Assert_failure,_QO_]}
                 var _bRS_=intOrNat$0(0);
                 return caml_call2
                         (_Qc_,assertEqual$0(config,pp,e2[2],_bRS_),_bRR_)}
               var _bRQ_=intOrNat$0(0);
               return caml_call2
                       (_Qc_,assertEqual$0(config,pp,e1[2],_bRQ_),_bRP_)}
             var _bRO_=intOrNat$0(0);
             return caml_call2(_Qc_,assertEqual$0(config,pp,e[2],_bRO_),_bRN_)},
          match$0=getRepr(e[2]),
          match$1=getRepr(e1$0[2]),
          match$2=getRepr(e2[2]);
         if(typeof match$0 !== "number" && 4 === match$0[0])
          return overloaded?integer_mul(e,e1$0,e2):caml_call1(_Qb_,0);
         var switch$1=0;
         if(typeof match$1 === "number")
          switch$1 = 2;
         else
          switch(match$1[0])
           {case 1:
             var _bQ3_=match$1[1];
             if(typeof _bQ3_ === "number")
              if(16 <= _bQ3_)
               {var switch$2=0;
                if
                 (18
                  <=
                  _bQ3_
                  &&
                  typeof match$2
                  !==
                  "number"
                  &&
                  4
                  ===
                  match$2[0])
                 {switch$1 = 3;switch$2 = 1}
                if(! switch$2)
                 {var switch$3=0;
                  if(typeof match$2 !== "number" && 1 === match$2[0])
                   {var _bQ4_=match$2[1];
                    if(typeof _bQ4_ === "number" && 18 <= _bQ4_)
                     {switch$1 = 4;switch$3 = 1}
                    else
                     {switch$1 = 1;switch$3 = 1}}
                  if(! switch$3)switch$1 = 1}}
              else
               if(4 === _bQ3_)
                {var switch$4=0;
                 if(typeof match$2 === "number")
                  switch$4 = 1;
                 else
                  switch(match$2[0])
                   {case 1:switch$1 = 2;break;
                    case 4:
                     var
                      _bQ5_=
                       function(param){return assertEqual$0(config,pp,e[2],token)},
                      _bQ6_=nat$0(0);
                     return caml_call2
                             (_Qc_,assertEqual$0(config,pp,e2[2],_bQ6_),_bQ5_);
                    default:switch$4 = 1}}
               else
                switch$1 = 2;
             else
              switch$1 = 2;
             break;
            case 4:
             if(typeof match$2 !== "number")
              switch(match$2[0])
               {case 1:
                 var _bQ7_=match$2[1];
                 if(typeof _bQ7_ === "number")
                  {if(4 === _bQ7_)
                    {var
                      _bQ8_=
                       function(param){return assertEqual$0(config,pp,e[2],token)},
                      _bQ9_=nat$0(0);
                     return caml_call2
                             (_Qc_,assertEqual$0(config,pp,e1$0[2],_bQ9_),_bQ8_)}
                   if(18 <= _bQ7_)switch$1 = 3}
                 break;
                case 4:return integer_mul(e,e1$0,e2)
                }
             break;
            default:switch$1 = 2}
         var switch$5=0;
         switch(switch$1)
          {case 2:
            if(typeof match$0 === "number")
             switch$5 = 1;
            else
             switch(match$0[0])
              {case 1:
                var _bQZ_=match$0[1];
                if
                 (typeof _bQZ_ === "number" && ! (1 < (_bQZ_ - 16 | 0) >>> 0))
                 {var switch$6=0;
                  if(typeof match$2 !== "number" && 1 === match$2[0])
                   {var _bQ2_=match$2[1];
                    if(typeof _bQ2_ === "number" && 18 <= _bQ2_)
                     {switch$5 = 3;switch$6 = 1}
                    else
                     {switch$5 = 2;switch$6 = 1}}
                  if(! switch$6)switch$5 = 2}
                else
                 switch$5 = 1;
                break;
               case 8:break;
               default:switch$5 = 1}
            break;
           case 1:switch$5 = 2;break;
           case 0:break;
           case 3:return assertEqual$0(config,pp,e[2],bls12_381_fr$0);
           default:switch$5 = 3}
         var switch$7=0;
         switch(switch$5)
          {case 2:
            if(typeof match$1 !== "number" && 1 === match$1[0])
             {var _bQ0_=match$1[1];
              if(typeof _bQ0_ === "number")
               {var switcher=_bQ0_ - 16 | 0;
                if(! (1 < switcher >>> 0))
                 {var
                   _bQ1_=
                    function(param)
                     {return assertEqual$0(config,pp,e2[2],bls12_381_fr$0)};
                  return caml_call2
                          (_Qc_,assertEqual$0(config,pp,e[2],e1$0[2]),_bQ1_)}}}
            break;
           case 0:break;
           case 1:switch$7 = 1;break;
           default:return assertEqual$0(config,pp,e[2],e1$0[2])}
         if(! switch$7 && typeof match$0 !== "number" && 8 === match$0[0])
          return unresolved;
         throw [0,SmartExcept,pp(0)];
        case 2:
         var e1$1=c[2],e$0=c[1],match$3=getRepr(e1$1[2]);
         if(typeof match$3 !== "number")
          switch(match$3[0])
           {case 1:
             var _bQ__=match$3[1];
             if(typeof _bQ__ === "number")
              {if(4 === _bQ__)return assertEqual$0(config,pp,e1$1[2],e$0[2]);
               if(8 === _bQ__)
                {var _bQ$_=int$1(0);
                 return assertEqual$0(config,pp,e$0[2],_bQ$_)}}
             break;
            case 4:
             var _bRa_=int$1(0);return assertEqual$0(config,pp,e$0[2],_bRa_);
            case 8:return unresolved
            }
         throw [0,SmartExcept,pp(0)];
        case 3:
         var
          e2$0=c[3],
          e1$2=c[2],
          e$1=c[1],
          fix_cst_intOrNat_as_nat=
           function(x)
            {var _bRJ_=x[1],match=getRepr(x[2]),switch$0=0;
             if(5 === _bRJ_[0])
              {var switch$1=0,_bRK_=_bRJ_[1];
               if(typeof _bRK_ !== "number" && 0 === _bRK_[0])
                {if(typeof match !== "number" && 4 === match[0])
                  {var isNat$0=match[1],x$0=get(isNat$0);
                   if(x$0)return caml_call1(_Qb_,x$0);
                   var
                    _bRL_=function(param){return caml_call1(_Qb_,_QP_)},
                    _bRM_=nat$0(0);
                   return caml_call2
                           (_Qc_,assertEqual$0(config,pp,x[2],_bRM_),_bRL_)}
                 switch$1 = 1}
               if(! switch$1)switch$0 = 1}
             else
              switch$0 = 1;
             if(switch$0 && typeof match !== "number" && 4 === match[0])
              {var isNat=match[1];return caml_call1(_Qb_,get(isNat))}
             return caml_call1(_Qb_,0)},
          _bRb_=
           function(a_b)
            {if(typeof a_b === "number")return unresolved;
             var
              match=a_b[2],
              b=match[2],
              a=match[1],
              target_type=option(pair(a,b));
             function pp(param)
              {return [0,
                       _QR_,
                       [0,
                        [0,771172693,e$1],
                        [0,
                         _QQ_,
                         [0,
                          [0,937565914,target_type],
                          [0,14832,[0,[0,848053268,line_no],0]]]]]]}
             return assertEqual$0(config,pp,e$1[2],target_type)},
          match$4=getRepr(e1$2[2]),
          match$5=getRepr(e2$0[2]),
          switch$8=0;
         if(typeof match$5 !== "number")
          switch(match$5[0])
           {case 1:
             var _bRc_=match$5[1];
             if(typeof _bRc_ === "number" && 4 === _bRc_)
              {var
                _bRd_=
                 function(param)
                  {return caml_call1(_Qb_,[0,17692,[0,nat$0(0),token]])},
                _bRe_=
                 caml_call2(_Qc_,assertEqual$0(config,pp,e1$2[2],token),_bRd_);
               switch$8 = 1}
             break;
            case 4:
             if(typeof match$4 !== "number")
              switch(match$4[0])
               {case 1:
                 var _bRf_=match$4[1];
                 if(typeof _bRf_ === "number" && 4 === _bRf_)
                  {var
                    _bRg_=
                     function(param)
                      {return caml_call1(_Qb_,[0,17692,[0,token,token]])},
                    _bRh_=nat$0(0),
                    _bRe_=
                     caml_call2
                      (_Qc_,assertEqual$0(config,pp,e2$0[2],_bRh_),_bRg_);
                   switch$8 = 1}
                 break;
                case 4:
                 var
                  _bRi_=
                   function(r1)
                    {function _bRG_(r2)
                      {if(r1)
                        {var switch$0=0;
                         if(r1[1])
                          {if(r2)
                            {if(r2[1])
                              {var _bRH_=nat$0(0);
                               return caml_call1(_Qb_,[0,17692,[0,nat$0(0),_bRH_]])}
                             switch$0 = 1}}
                         else
                          if(r2)switch$0 = 1;
                         if(switch$0)
                          {var _bRI_=nat$0(0);
                           return caml_call1(_Qb_,[0,17692,[0,int$1(0),_bRI_]])}}
                       return caml_call1(_Qb_,785140586)}
                     return caml_call2(_Qc_,fix_cst_intOrNat_as_nat(e2$0),_bRG_)},
                  _bRe_=caml_call2(_Qc_,fix_cst_intOrNat_as_nat(e1$2),_bRi_);
                 switch$8 = 1;
                 break
                }
             break
            }
         if(switch$8)return caml_call2(_Qc_,_bRe_,_bRb_);
         throw [0,SmartExcept,pp(0)];
        case 4:
         var e1$3=c[2],e$2=c[1],match$6=getRepr(e1$3[2]);
         if(typeof match$6 !== "number")
          switch(match$6[0])
           {case 1:
             var _bRj_=match$6[1];
             if(typeof _bRj_ === "number" && 1 === _bRj_)
              return caml_call1(_Qb_,0);
             break;
            case 4:
             var _bRk_=nat$0(0);return assertEqual$0(config,pp,e$2[2],_bRk_);
            case 8:return unresolved
            }
         throw [0,SmartExcept,pp(0)];
        case 5:
         var f=c[3],l=c[2],e$3=c[1],match$7=getRepr(f[2]);
         if(typeof match$7 !== "number" && 3 === match$7[0])
          {var _bRl_=match$7[1];
           if(typeof _bRl_ === "number" && ! _bRl_)
            {var t=match$7[3],s=match$7[2],match$8=getRepr(l[2]);
             if(typeof match$8 !== "number")
              switch(match$8[0])
               {case 2:
                 if(1 === match$8[1])
                  {var
                    t$0=match$8[2],
                    _bRm_=
                     function(param)
                      {var _bRF_=list(t);
                       return assertEqual$0(config,pp,e$3[2],_bRF_)};
                   return caml_call2(_Qc_,assertEqual$0(config,pp,t$0,s),_bRm_)}
                 break;
                case 3:
                 var _bRn_=match$8[1];
                 if(typeof _bRn_ === "number" && 1 === _bRn_)
                  {var
                    tvalue=match$8[3],
                    tkey=match$8[2],
                    _bRo_=
                     function(param)
                      {var _bRE_=map$0(0,tkey,t);
                       return assertEqual$0(config,pp,e$3[2],_bRE_)};
                   return caml_call2
                           (_Qc_,
                            assertEqual$0(config,pp,key_value(tkey,tvalue),s),
                            _bRo_)}
                 break;
                case 8:return unresolved
                }
             throw [0,SmartExcept,pp(0)]}}
         throw [0,SmartExcept,pp(0)];
        case 6:
         var e$4=c[1],match$9=caml_call1(is_comparable$0,e$4[2]);
         switch(match$9)
          {case 0:return caml_call1(_Qb_,0);
           case 1:throw [0,SmartExcept,pp(0)];
           default:return unresolved}
        case 7:
         var t$1=c[3],pos=c[2],l$0=c[1],match$10=getRepr(l$0[2]);
         if(typeof match$10 !== "number")
          switch(match$10[0])
           {case 2:
             if(1 === match$10[1])
              {var
                _bRp_=
                 [0,
                  14832,
                  [0,
                   _QT_,
                   [0,
                    14832,
                    [0,[0,936573133,caml_call1(Stdlib_printf[4],_QS_)],0]]]];
               throw [0,SmartExcept,[0,[0,4100400,pp(0)],_bRp_]]}
             break;
            case 3:
             var _bRq_=match$10[1];
             if(typeof _bRq_ === "number" && _bRq_)
              {var
                tvalue$0=match$10[3],
                tkey$0=match$10[2],
                _bRr_=
                 function(param){return assertEqual$0(config,pp,tvalue$0,t$1)};
               return caml_call2
                       (_Qc_,assertEqual$0(config,pp,tkey$0,pos[2]),_bRr_)}
             break;
            case 8:return unresolved
            }
         throw [0,SmartExcept,pp(0)];
        case 8:
         var member=c[2],items=c[1],match$11=getRepr(items[2]);
         if(typeof match$11 !== "number")
          switch(match$11[0])
           {case 2:
             if(2 === match$11[1])
              {var telement=match$11[2];
               return assertEqual$0(config,pp,telement,member[2])}
             break;
            case 3:
             var _bRs_=match$11[1];
             if(typeof _bRs_ === "number" && _bRs_)
              {var tkey$1=match$11[2];
               return assertEqual$0(config,pp,tkey$1,member[2])}
             break;
            case 8:return unresolved
            }
         throw [0,SmartExcept,pp(0)];
        case 9:
         var e$5=c[1],match$12=getRepr(e$5[2]),switch$9=0;
         if(typeof match$12 !== "number")
          switch(match$12[0])
           {case 1:
             var _bRt_=match$12[1],switch$10=0;
             if(typeof _bRt_ === "number")
              if(7 <= _bRt_)
               switch$10 = 1;
              else
               switch(_bRt_)
                {case 5:
                 case 6:switch$9 = 1;switch$10 = 1;break;
                 case 2:
                 case 3:break;
                 default:switch$10 = 1}
             if(! switch$10)throw [0,Assert_failure,_QU_];
             break;
            case 2:if(! (1 < (match$12[1] - 1 | 0) >>> 0))switch$9 = 1;break;
            case 3:
             var _bRu_=match$12[1];
             if(typeof _bRu_ === "number" && 1 === _bRu_)
              return caml_call1(_Qb_,0);
             break;
            case 8:return unresolved
            }
         if(switch$9)return caml_call1(_Qb_,0);
         throw [0,SmartExcept,pp(0)];
        case 10:
         var e$6=c[1],match$13=getRepr(e$6[2]),switch$11=0;
         if(typeof match$13 !== "number")
          switch(match$13[0])
           {case 1:
             var _bRv_=match$13[1];
             if(typeof _bRv_ === "number" && ! (1 < (_bRv_ - 5 | 0) >>> 0))
              switch$11 = 1;
             break;
            case 8:return unresolved;
            case 5:switch$11 = 1;break
            }
         if(switch$11)return caml_call1(_Qb_,0);
         throw [0,SmartExcept,pp(0)];
        case 11:
         var pp$0=c[3],t2=c[2],t1=c[1];
         return assertEqual$0(config,pp$0,t1,t2);
        case 12:
         var pp$1=c[2],t$2=c[1],match$14=getRepr(t$2);
         if(typeof match$14 !== "number")
          switch(match$14[0])
           {case 4:return caml_call1(_Qb_,0);case 8:return unresolved}
         throw [0,SmartExcept,caml_call1(pp$1,0)];
        case 13:
         var
          transaction=c[2],
          state=c[1],
          match$15=getRepr(state[2]),
          match$16=getRepr(transaction[2]);
         if
          (typeof match$15
           !==
           "number"
           &&
           10
           ===
           match$15[0]
           &&
           typeof match$16
           !==
           "number"
           &&
           11
           ===
           match$16[0])
          {var m2=match$16[1],m1=match$15[1],r=equalize(m1,m2);
           if(1 - r)throw [0,SmartExcept,pp(0)];
           var match$17=get(m1),match$18=get(m2);
           if(match$17 && match$18)
            {var m2$0=match$18[1],m1$0=match$17[1];
             if(m1$0 === m2$0)return caml_call1(_Qb_,0);
             throw [0,SmartExcept,pp(0)]}
           return unresolved}
         throw [0,SmartExcept,pp(0)];
        case 14:
         var
          t$3=c[2],
          e$7=c[1],
          match$19=getRepr(t$3),
          match$20=getRepr(e$7[2]),
          switch$12=0;
         if(typeof match$19 !== "number" && 1 === match$19[0])
          {var _bRz_=match$19[1];
           if(typeof _bRz_ === "number" && 16 <= _bRz_)switch$12 = 1}
         if(! switch$12)
          {var switch$13=0;
           if(typeof match$20 !== "number")
            switch(match$20[0])
             {case 1:
               var _bRy_=match$20[1];
               if(typeof _bRy_ === "number" && 16 <= _bRy_)switch$13 = 1;
               break;
              case 4:switch$13 = 2;break
              }
           var switch$14=0;
           switch(switch$13)
            {case 0:
              var switch$15=0;
              if(typeof match$19 !== "number" && 4 === match$19[0])
               {switch$14 = 1;switch$15 = 1}
              if(! switch$15)
               {if(typeof match$20 !== "number" && 8 === match$20[0])
                 return unresolved;
                throw [0,SmartExcept,pp(0)]}
              break;
             case 1:break;
             default:switch$14 = 1}
           if(switch$14)
            {var
              _bRw_=
               function(param){return assertEqual$0(config,pp,t$3,int$1(0))},
              _bRx_=intOrNat$0(0);
             return caml_call2
                     (_Qc_,assertEqual$0(config,pp,e$7[2],_bRx_),_bRw_)}}
         return assertEqual$0(config,pp,t$3,e$7[2]);
        case 15:
         var
          e$8=c[1],
          pp$2=
           function(param)
            {return [0,
                     _QW_,
                     [0,[0,771172693,e$8],[0,_QV_,[0,[0,848053268,e$8[3]],0]]]]},
          match$21=getRepr(e$8[2]);
         if(typeof match$21 !== "number")
          switch(match$21[0])
           {case 1:
             var _bRA_=match$21[1];
             if(typeof _bRA_ === "number" && 18 <= _bRA_)
              return caml_call1(_Qb_,0);
             break;
            case 4:
             var _bRB_=nat$0(0);
             return assertEqual$0(config,pp$2,e$8[2],_bRB_);
            case 8:return unresolved
            }
         throw [0,SmartExcept,pp$2(0)];
        case 16:
         var t$4=c[2],match$22=caml_call1(is_hot,t$4);
         switch(match$22)
          {case 0:throw [0,SmartExcept,pp(0)];
           case 1:return caml_call1(_Qb_,0);
           default:return unresolved}
        default:
         var e$9=c[3],tv=c[2],tk=c[1],match$23=getRepr(e$9[2]);
         if(typeof match$23 !== "number")
          switch(match$23[0])
           {case 3:
             var _bRC_=match$23[1];
             if(typeof _bRC_ === "number" && _bRC_)
              {var
                tvalue$1=match$23[3],
                tkey$2=match$23[2],
                _bRD_=
                 function(param)
                  {function _bRX_(param){return caml_call1(_Qb_,0)}
                   return caml_call2
                           (_Qc_,assertEqual$0(config,pp,tv,tvalue$1),_bRX_)};
               return caml_call2
                       (_Qc_,assertEqual$0(config,pp,tk,tkey$2),_bRD_)}
             break;
            case 8:return unresolved
            }
         throw [0,SmartExcept,pp(0)]}}
    function default_constraint(config,line_no,c)
     {function pp(param){return unresolved_error(line_no,c)}
      function unresolved(_bQX_){return add_constraint(line_no,c,_bQX_)}
      if(17 === c[0])
       {var e=c[3],tvalue=c[2],tkey=c[1],_bQW_=map$0(0,tkey,tvalue);
        return assertEqual$0(config,pp,e[2],_bQW_)}
      return unresolved}
    function run(config,constraints)
     {function debug(v,f)
       {var _bQV_=v <= 0?1:0;return _bQV_?caml_call1(f,0):_bQV_}
      function step(f,param)
       {var
         c=param[2],
         line_no=param[1],
         x=caml_call3(f,config,line_no,c),
         match=caml_call1(x,s$0)[2],
         constraints=match[1];
        return constraints}
      function eq(param,_bQT_)
       {var
         c2=_bQT_[2],
         l2=_bQT_[1],
         c1=param[2],
         l1=param[1],
         _bQU_=caml_equal(l1,l2);
        return _bQU_?caml_call2(equal_typing_constraint,c1,c2):_bQU_}
      function progress(cs$0,cs)
       {var
         _bQQ_=caml_call1(Utils_List[4],cs),
         _bQR_=caml_call1(Utils_List[4],cs$0) !== _bQQ_?1:0,
         _bQS_=_bQR_ || 1 - caml_call3(Utils_List[33],eq,cs$0,cs);
        return _bQS_}
      debug
       (1,
        function(param)
         {return caml_call1(Stdlib[46],cst_Constraint_resolution)});
      var cs$2=caml_call1(Utils_List[12],constraints),i=1,cs=cs$2;
      for(;;)
       {if(cs)
         if(100 < i)
          var cs$3=cs;
         else
          {debug
            (2,
             function(cs)
               {return function(param)
                 {function _bQO_(param)
                   {var c=param[2];
                    switch(c[0])
                     {case 0:
                       var
                        e2=c[3],
                        e1=c[2],
                        _bQP_=
                         caml_call5(Stdlib_format[127],_QX_,pp$4,e1[2],pp$4,e2[2]);
                       break;
                      case 1:
                       var
                        e2$0=c[3],
                        e1$0=c[2],
                        _bQP_=
                         caml_call5
                          (Stdlib_format[127],_QY_,pp$4,e1$0[2],pp$4,e2$0[2]);
                       break;
                      case 2:
                       var
                        e2$1=c[3],
                        e1$1=c[2],
                        _bQP_=
                         caml_call5
                          (Stdlib_format[127],_QZ_,pp$4,e1$1[2],pp$4,e2$1[2]);
                       break;
                      case 3:
                       var
                        e2$2=c[3],
                        e1$2=c[2],
                        _bQP_=
                         caml_call5
                          (Stdlib_format[127],_Q0_,pp$4,e1$2[2],pp$4,e2$2[2]);
                       break;
                      case 4:
                       var
                        e2$3=c[3],
                        e1$3=c[2],
                        _bQP_=
                         caml_call5
                          (Stdlib_format[127],_Q1_,pp$4,e1$3[2],pp$4,e2$3[2]);
                       break;
                      case 5:
                       var
                        e2$4=c[3],
                        e1$4=c[2],
                        _bQP_=
                         caml_call5
                          (Stdlib_format[127],_Q2_,pp$4,e1$4[2],pp$4,e2$4[2]);
                       break;
                      case 6:
                       var
                        e=c[1],
                        _bQP_=caml_call3(Stdlib_format[127],_Q3_,pp$4,e[2]);
                       break;
                      case 7:
                       var
                        e2$5=c[2],
                        e1$5=c[1],
                        _bQP_=
                         caml_call5
                          (Stdlib_format[127],_Q4_,pp$4,e1$5[2],pp$4,e2$5[2]);
                       break;
                      case 8:
                       var
                        e2$6=c[2],
                        e1$6=c[1],
                        _bQP_=
                         caml_call5
                          (Stdlib_format[127],_Q5_,pp$4,e1$6[2],pp$4,e2$6[2]);
                       break;
                      case 9:
                       var
                        e$0=c[1],
                        _bQP_=caml_call3(Stdlib_format[127],_Q6_,pp$4,e$0[2]);
                       break;
                      case 10:
                       var
                        e$1=c[1],
                        _bQP_=caml_call3(Stdlib_format[127],_Q7_,pp$4,e$1[2]);
                       break;
                      case 11:
                       var
                        t2=c[2],
                        t1=c[1],
                        _bQP_=caml_call5(Stdlib_format[127],_Q8_,pp$4,t1,pp$4,t2);
                       break;
                      case 12:
                       var t=c[1],_bQP_=caml_call3(Stdlib_format[127],_Q9_,pp$4,t);
                       break;
                      case 13:
                       var
                        transaction=c[2],
                        state=c[1],
                        _bQP_=
                         caml_call5
                          (Stdlib_format[127],_Q__,pp$4,state[2],pp$4,transaction[2]);
                       break;
                      case 14:
                       var
                        t$0=c[2],
                        e$2=c[1],
                        _bQP_=
                         caml_call5(Stdlib_format[127],_Q$_,pp$4,e$2[2],pp$4,t$0);
                       break;
                      case 15:
                       var
                        e$3=c[1],
                        _bQP_=caml_call3(Stdlib_format[127],_Ra_,pp$4,e$3[2]);
                       break;
                      case 16:
                       var
                        t$1=c[2],
                        n=c[1],
                        _bQP_=caml_call4(Stdlib_format[127],_Rb_,n,pp$4,t$1);
                       break;
                      default:
                       var
                        e$4=c[3],
                        tv=c[2],
                        tk=c[1],
                        _bQP_=
                         caml_call7
                          (Stdlib_format[127],_Rc_,pp$4,tk,pp$4,tv,pp$4,e$4[2])}
                    return caml_call2(Stdlib_printf[2],_Rd_,_bQP_)}
                  return caml_call2(Utils_List[18],_bQO_,cs)}}
              (cs));
           debug
            (1,
             function(i)
               {return function(param)
                 {return caml_call2(Stdlib_printf[2],_Re_,i)}}
              (i));
           var
            _bQK_=function(_bQN_){return step(apply_constraint,_bQN_)},
            cs$0=caml_call2(Utils_List[24],_bQK_,cs),
            p=progress(cs,cs$0);
           debug
            (3,
             function(p)
               {return function(param)
                 {return caml_call2(Stdlib_printf[2],_Rf_,p)}}
              (p));
           if(p){var i$0=i + 1 | 0,i=i$0,cs=cs$0;continue}
           var
            _bQL_=function(_bQM_){return step(default_constraint,_bQM_)},
            cs$1=caml_call2(Utils_List[24],_bQL_,cs),
            p$0=progress(cs$0,cs$1);
           debug
            (3,
             function(p)
               {return function(param)
                 {return caml_call2(Stdlib_printf[2],_Rg_,p)}}
              (p$0));
           if(p$0){var i$1=i + 1 | 0,i=i$1,cs=cs$1;continue}
           var cs$3=cs$1}
        else
         var cs$3=0;
        var
         mandatory=
          function(param)
           {switch(param[2][0])
             {case 6:return 0;case 16:return 0;default:return 1}},
         match=caml_call2(Utils_List[38],mandatory,cs$3);
        if(match)
         {var match$0=match[1],c=match$0[2],line_no=match$0[1];
          throw [0,SmartExcept,[0,_Rh_,[0,14832,unresolved_error(line_no,c)]]]}
        return debug
                (1,
                 function(param)
                  {return caml_call1(Stdlib[46],cst_All_constraints_resolved)})}}
    var Smartml_Solver=[0,run];
    caml_register_global(6484,Smartml_Solver,"Smartml__Solver");
    var empty_env=Utils_String[42][1];
    function mk_env(xs)
     {function _bQI_(param){var t=param[2],x=param[1];return [0,x,[0,t,0]]}
      var _bQJ_=caml_call2(Utils_List[20],_bQI_,xs);
      return caml_call1(Utils_String[42][43],_bQJ_)}
    function string_of_dynamic_id(param)
     {var dynamic_id=param[1];
      return caml_call2(Stdlib_printf[4],_Rj_,dynamic_id)}
    function string_of_contract_id(param)
     {if(0 === param[0])
       {var id=param[1],static_id=id[1];
        return caml_call2(Stdlib_printf[4],_Ri_,static_id)}
      var id$0=param[1];
      return string_of_dynamic_id(id$0)}
    function string_of_scenario_var(i)
     {return caml_call2(Stdlib_printf[4],_Rk_,i)}
    function run$0(x,s){return caml_call1(x,s)}
    function return$3(x,s){return [0,x,s]}
    function bind$1(x,f,s)
     {var match=caml_call1(x,s),s$0=match[2],y=match[1];
      return caml_call2(f,y,s$0)}
    function map$3(f,x)
     {function _bQE_(x)
       {var _bQG_=caml_call1(f,x);
        return function(_bQH_){return [0,_bQG_,_bQH_]}}
      return function(_bQF_){return bind$1(x,_bQE_,_bQF_)}}
    function apply$1(f,x)
     {function _bQy_(f)
       {function _bQA_(x)
         {var _bQC_=caml_call1(f,x);
          return function(_bQD_){return [0,_bQC_,_bQD_]}}
        return function(_bQB_){return bind$1(x,_bQA_,_bQB_)}}
      return function(_bQz_){return bind$1(f,_bQy_,_bQz_)}}
    function set$3(s,param){return [0,0,s]}
    function get$2(s){return [0,s,s]}
    function map_list(f)
     {var acc=0;
      function _bQx_(s$1,param$0)
       {var acc$0=acc,s=s$1,param=param$0;
        for(;;)
         {if(param)
           {var
             xs=param[2],
             x=param[1],
             match=caml_call2(f,x,s),
             s$0=match[2],
             y=match[1],
             acc$1=[0,y,acc$0],
             acc$0=acc$1,
             s=s$0,
             param=xs;
            continue}
          return [0,caml_call1(Utils_List[12],acc$0),s]}}
      return caml_call1(Utils_Control[3],_bQx_)}
    var
     include$4=caml_call1(Utils_Control[8],[0,map$3,return$3,apply$1,bind$1]),
     bind$2=include$4[1],
     return$4=include$4[2],
     apply$2=include$4[3],
     map$4=include$4[4],
     symbol$1=include$4[5],
     let$1=include$4[6],
     and=include$4[7],
     Applicative_syntax=include$4[8],
     symbol$2=include$4[9],
     void$0=include$4[10],
     when=include$4[11],
     when_some=include$4[12],
     map2=include$4[13],
     map_option=include$4[14],
     map_list$0=include$4[15],
     iter_list$0=include$4[16],
     map2_list=include$4[17],
     iter2_list$0=include$4[18],
     sequence_list=include$4[19],
     sequence_option=include$4[20],
     sequence_fst=include$4[21],
     sequence_snd=include$4[22],
     sequence_pair=include$4[23],
     let$2=include$4[24],
     and$0=include$4[25],
     Monad_syntax=include$4[26],
     symbol_bind=include$4[27],
     symbol$3=include$4[28],
     join=include$4[29],
     bind2=include$4[30],
     unless=include$4[31],
     open=
      _yx_
       ([0,
         bind$2,
         return$4,
         apply$2,
         map$4,
         symbol$1,
         let$1,
         and,
         Applicative_syntax,
         symbol$2,
         void$0,
         when,
         when_some,
         map2,
         map_option,
         map_list$0,
         iter_list$0,
         map2_list,
         iter2_list$0,
         sequence_list,
         sequence_option,
         sequence_fst,
         sequence_snd,
         sequence_pair,
         let$2,
         and$0,
         Monad_syntax,
         symbol_bind,
         symbol$3,
         join,
         bind2,
         unless]),
     _Rm_=open[2],
     _Rn_=open[3],
     _Rl_=open[1],
     get_vars=
      caml_call2(let$2,get$2,function(s){return caml_call1(return$4,s[2])}),
     get_config$0=
      caml_call2(let$2,get$2,function(s){return caml_call1(return$4,s[5])});
    function modify$0(f)
     {return caml_call2
              (let$2,
               get$2,
               function(s)
                {var _bQv_=caml_call1(f,s);
                 return function(_bQw_){return set$3(_bQv_,_bQw_)}})}
    function set_vars(vars)
     {return modify$0(function(s){return [0,s[1],vars,s[3],s[4],s[5],s[6]]})}
    function set_inside_contract(inside_contract)
     {return modify$0
              (function(s)
                {return [0,s[1],s[2],s[3],inside_contract,s[5],s[6]]})}
    function modify_vars(f)
     {return modify$0
              (function(init)
                {var
                  _bQq_=init[6],
                  _bQr_=init[5],
                  _bQs_=init[4],
                  _bQt_=init[3],
                  _bQu_=caml_call1(f,init[2]);
                 return [0,init[1],_bQu_,_bQt_,_bQs_,_bQr_,_bQq_]})}
    var
     fresh_tvar=
      caml_call2
       (let$2,
        get$2,
        function(s)
         {var i=s[1];
          function _bQm_(param)
           {var _bQp_=caml_call1(Stdlib[33],i);
            return caml_call1
                    (return$4,
                     unknown_raw([0,[0,caml_call2(Stdlib[28],cst_a,_bQp_)]]))}
          var _bQn_=[0,i + 1 | 0,s[2],s[3],s[4],s[5],s[6]];
          return caml_call2
                  (let$2,function(_bQo_){return set$3(_bQn_,_bQo_)},_bQm_)});
    function pp_bin(line_no,op,x,y,param)
     {return [0,
              [0,936573133,op],
              [0,
               [0,172818814,[0,x,[0,y,0]]],
               [0,14832,[0,[0,848053268,line_no],0]]]]}
    function add_constraint$0(line_no,c)
     {return modify$0
              (function(st)
                {return [0,
                         st[1],
                         st[2],
                         [0,[0,line_no,c],st[3]],
                         st[4],
                         st[5],
                         st[6]]})}
    function assertEqual$1(line_no,pp,t1,t2)
     {var _bQl_=caml_call1(unF,t2);
      return caml_call1(unF,t1) !== _bQl_
              ?add_constraint$0(line_no,[11,t1,t2,pp])
              :caml_call1(return$4,0)}
    var
     solve_constraints=
      caml_call2
       (let$2,
        get$2,
        function(s)
         {return caml_call2
                  (let$2,
                   get_config$0,
                   function(config)
                    {run(config,s[3]);
                     return modify$0
                             (function(s){return [0,s[1],s[2],0,s[4],s[5],s[6]]})})});
    function err$1(line_no,msg)
     {throw [0,
             SmartExcept,
             [0,
              _Ro_,
              [0,14832,[0,[0,936573133,msg],[0,[0,848053268,line_no],0]]]]]}
    function add_var(line_no,name,t)
     {return modify_vars
              (function(vars)
                {var match=caml_call2(Utils_String[42][28],name,vars);
                 return match
                         ?err$1(line_no,caml_call2(Stdlib_printf[4],_Rp_,name))
                         :caml_call3(Utils_String[42][4],name,[0,t,0],vars)})}
    function check_var(line_no,meta,kind,name)
     {return caml_call2
              (let$2,
               get$2,
               function(param)
                {var
                  inside_contract=param[4],
                  vars=param[2],
                  match=caml_call2(Utils_String[42][28],name,vars);
                 if(match)
                  {var match$0=match[1],t=match$0[1];
                   if(inside_contract)
                    {var
                      occs=match$0[2],
                      switch$0=0,
                      _bQi_=
                       function(param)
                        {function _bQk_(param){return caml_call1(return$4,t)}
                         return caml_call2
                                 (let$2,
                                  set_vars
                                   (caml_call3
                                     (Utils_String[42][4],name,[0,t,occs + 1 | 0],vars)),
                                  _bQk_)};
                     if(1 === occs && ! caml_equal(meta,_Rq_))
                      {var _bQj_=add_constraint$0(line_no,[16,name,t]);
                       switch$0 = 1}
                     if(! switch$0)var _bQj_=caml_call1(return$4,0);
                     return caml_call2(let$2,_bQj_,_bQi_)}
                   return caml_call1(return$4,t)}
                 return err$1
                         (line_no,
                          caml_call4
                           (Stdlib_format[127],_Rr_,kind,name,inside_contract))})}
    function scoped(x)
     {return caml_call2
              (let$2,
               get_vars,
               function(old_vars)
                {return caml_call2
                         (let$2,
                          x,
                          function(r)
                           {function _bQh_(param){return caml_call1(return$4,r)}
                            return caml_call2(let$2,set_vars(old_vars),_bQh_)})})}
    function scoped_no_occs(x)
     {return caml_call2
              (let$2,
               get_vars,
               function(old_vars)
                {function _bQe_(param)
                  {return caml_call2
                           (let$2,
                            x,
                            function(r)
                             {function _bQg_(param){return caml_call1(return$4,r)}
                              return caml_call2(let$2,set_vars(old_vars),_bQg_)})}
                 function _bQf_(param){var n=param[1];return [0,n,0]}
                 return caml_call2
                         (let$2,
                          set_vars(caml_call2(Utils_String[42][33],_bQf_,old_vars)),
                          _bQe_)})}
    function scoped_branch(x)
     {return caml_call2
              (let$2,
               get_vars,
               function(old_vars)
                {return caml_call2
                         (let$2,
                          x,
                          function(r)
                           {return caml_call2
                                    (let$2,
                                     get_vars,
                                     function(new_vars)
                                      {function _bQa_(param)
                                        {var
                                          _bQb_=
                                           caml_call2(Utils_String[42][44],old_vars,new_vars);
                                         function _bQc_(_bQd_){return _bQd_[2]}
                                         return caml_call1
                                                 (return$4,
                                                  [0,caml_call2(Utils_String[42][33],_bQc_,_bQb_),r])}
                                       return caml_call2(let$2,set_vars(old_vars),_bQa_)})})})}
    function max_occs(b1,b2)
     {function f(param,x,y)
       {if(x)
         {var _bP8_=x[1],_bP9_=_bP8_[2],_bP__=_bP8_[1];
          if(y)
           {var match=y[1],occs2=match[2];
            return [0,[0,_bP__,caml_call2(Stdlib[17],_bP9_,occs2)]]}
          var occs=_bP9_,t=_bP__}
        else
         {if(! y)return 0;var _bP$_=y[1],occs=_bP$_[2],t=_bP$_[1]}
        return [0,[0,t,occs]]}
      return caml_call3(Utils_String[42][8],f,b1,b2)}
    function no_new_occs(line_no,old_vars,new_vars)
     {function f(name,x,y)
       {if(x)
         {var _bP7_=x[1];
          if(0 === _bP7_[2] && y && 1 === y[1][2])
           {var t=_bP7_[1];return [0,add_constraint$0(line_no,[16,name,t])]}}
        return 0}
      var
       _bP5_=caml_call3(Utils_String[42][8],f,old_vars,new_vars),
       _bP6_=caml_call1(Utils_String[42][42],_bP5_);
      return caml_call2(iter_list$0,Utils_Control[1],_bP6_)}
    function for_variant(line_no,name,t)
     {if(caml_string_notequal(name,cst_Left$5))
       {if(caml_string_notequal(name,cst_None$52))
         return caml_string_notequal(name,cst_Right$5)
                 ?caml_string_notequal(name,cst_Some$52)
                   ?caml_call1(return$4,uvariant(name,t))
                   :caml_call1(return$4,option(t))
                 :caml_call2
                   (let$2,
                    fresh_tvar,
                    function(u){return caml_call1(return$4,tor(u,t))});
        var
         _bP4_=
          function(param)
           {return caml_call2
                    (let$2,
                     fresh_tvar,
                     function(t){return caml_call1(return$4,option(t))})};
        return caml_call2
                (let$2,
                 assertEqual$1(line_no,function(param){return _Rt_},t,unit$0),
                 _bP4_)}
      return caml_call2
              (let$2,
               fresh_tvar,
               function(u){return caml_call1(return$4,tor(t,u))})}
    function check_command_f(line_no,c)
     {return caml_call2
              (let$2,
               get_config$0,
               function(config)
                {var Printer=get$0(config);
                 function assertEqual(_bP1_,_bP2_,_bP3_)
                  {return assertEqual$1(line_no,_bP1_,_bP2_,_bP3_)}
                 function add_var$0(_bPZ_,_bP0_)
                  {return add_var(line_no,_bPZ_,_bP0_)}
                 switch(c[0])
                  {case 3:
                    var c2=c[3],c1=c[2],cond=c[1];
                    return caml_call2
                            (let$2,
                             cond,
                             function(cond)
                              {function _bPR_(param)
                                {var c1=param[2],vars1=param[1];
                                 function _bPS_(param)
                                  {var c2=param[2],vars2=param[1];
                                   function _bPT_(param)
                                    {function _bPU_(param)
                                      {function _bPW_(param)
                                        {return caml_call1
                                                 (return$4,caml_call3(_yy_[10],line_no,[3,cond,c1,c2],c1[2]))}
                                       var _bPX_=c2[2],_bPY_=c1[2];
                                       return caml_call2
                                               (let$2,
                                                assertEqual
                                                 (function(param)
                                                   {return [0,_RD_,[0,[0,848053268,line_no],0]]},
                                                  _bPY_,
                                                  _bPX_),
                                                _bPW_)}
                                     var _bPV_=cond[2];
                                     return caml_call2
                                             (let$2,
                                              assertEqual
                                               (function(param)
                                                 {return [0,
                                                          _RF_,
                                                          [0,[0,771172693,cond],[0,_RE_,[0,[0,848053268,line_no],0]]]]},
                                                _bPV_,
                                                bool$0),
                                              _bPU_)}
                                   return caml_call2
                                           (let$2,set_vars(max_occs(vars1,vars2)),_bPT_)}
                                 return caml_call2(let$2,scoped_branch(c2),_bPS_)}
                               return caml_call2(let$2,scoped_branch(c1),_bPR_)});
                   case 4:
                    var cases=c[2],scrutinee=c[1];
                    return caml_call2
                            (let$2,
                             scrutinee,
                             function(scrutinee)
                              {return caml_call2
                                       (let$2,
                                        fresh_tvar,
                                        function(rt)
                                         {function check_case(param)
                                           {var body=param[3],arg_name=param[2],constructor=param[1];
                                            return scoped_branch
                                                    (caml_call2
                                                      (let$2,
                                                       fresh_tvar,
                                                       function(at)
                                                        {function _bPJ_(vt)
                                                          {function _bPK_(param)
                                                            {function _bPM_(param)
                                                              {return caml_call2
                                                                       (let$2,
                                                                        body,
                                                                        function(body)
                                                                         {function _bPN_(param)
                                                                           {function _bPP_(param)
                                                                             {return caml_call1(return$4,[0,constructor,arg_name,body])}
                                                                            return caml_call2
                                                                                    (let$2,
                                                                                     modify_vars
                                                                                      (function(vars)
                                                                                        {var match=caml_call2(Utils_String[42][28],arg_name,vars);
                                                                                         if(match)
                                                                                          {var
                                                                                            _bPQ_=
                                                                                             function(x,param)
                                                                                              {return 1 - caml_call2(Utils_String[33],arg_name,x)};
                                                                                           return caml_call2(Utils_String[42][16],_bPQ_,vars)}
                                                                                         return err$1
                                                                                                 (line_no,caml_call2(Stdlib_printf[4],_Rs_,arg_name))}),
                                                                                     _bPP_)}
                                                                          var _bPO_=body[2];
                                                                          return caml_call2
                                                                                  (let$2,
                                                                                   assertEqual
                                                                                    (function(param)
                                                                                      {return [0,
                                                                                               _RH_,
                                                                                               [0,
                                                                                                [0,937565914,body[2]],
                                                                                                [0,_RG_,[0,[0,937565914,rt],[0,[0,848053268,line_no],0]]]]]},
                                                                                     _bPO_,
                                                                                     rt),
                                                                                   _bPN_)})}
                                                             return caml_call2(let$2,add_var$0(arg_name,at),_bPM_)}
                                                           var _bPL_=scrutinee[2];
                                                           return caml_call2
                                                                   (let$2,
                                                                    assertEqual
                                                                     (function(param)
                                                                       {return [0,
                                                                                _RJ_,
                                                                                [0,
                                                                                 [0,771172693,scrutinee],
                                                                                 [0,
                                                                                  14832,
                                                                                  [0,_RI_,[0,[0,937565914,vt],[0,[0,848053268,line_no],0]]]]]]},
                                                                      _bPL_,
                                                                      vt),
                                                                    _bPK_)}
                                                         return caml_call2
                                                                 (let$2,for_variant(line_no,constructor,at),_bPJ_)}))}
                                          function _bPC_(cases)
                                           {function _bPD_(param)
                                             {function _bPH_(_bPI_){return _bPI_[2]}
                                              var c=[4,scrutinee,caml_call2(Utils_List[20],_bPH_,cases)];
                                              return caml_call1
                                                      (return$4,caml_call3(_yy_[10],line_no,c,rt))}
                                            function _bPE_(_bPG_){return _bPG_[1]}
                                            var _bPF_=caml_call2(Utils_List[20],_bPE_,cases);
                                            return caml_call2
                                                    (let$2,
                                                     set_vars
                                                      (caml_call3
                                                        (Utils_List[25],max_occs,Utils_String[42][1],_bPF_)),
                                                     _bPD_)}
                                          return caml_call2
                                                  (let$2,caml_call2(map_list$0,check_case,cases),_bPC_)})});
                   case 5:
                    var _bN__=c[2],_bN$_=c[1];
                    switch(_bN__[0])
                     {case 0:break;
                      case 1:
                       var c$0=c[3],ns=_bN__[1];
                       if(caml_call1(Utils_List[4],ns) < 2)
                        throw [0,SmartExcept,[0,_RK_,[0,[0,848053268,line_no],0]]];
                       return caml_call2
                               (let$2,
                                _bN$_,
                                function(scrutinee)
                                 {function _bPp_(ts)
                                   {function _bPq_(_bPv_){return _bPv_[2]}
                                    var t=tuple(caml_call2(Utils_List[20],_bPq_,ts));
                                    function _bPr_(param)
                                     {function _bPt_(c)
                                       {var c$0=[5,scrutinee,[1,ns],c];
                                        return caml_call1
                                                (return$4,caml_call3(_yy_[10],line_no,c$0,c[2]))}
                                      function _bPu_(param){return c$0}
                                      return caml_call2
                                              (let$2,
                                               scoped
                                                (caml_call2
                                                  (let$2,
                                                   caml_call2
                                                    (iter_list$0,caml_call1(Utils_Control[22],add_var$0),ts),
                                                   _bPu_)),
                                               _bPt_)}
                                    var _bPs_=scrutinee[2];
                                    return caml_call2
                                            (let$2,
                                             assertEqual
                                              (function(param)
                                                {return [0,
                                                         _RM_,
                                                         [0,
                                                          [0,771172693,scrutinee],
                                                          [0,
                                                           14832,
                                                           [0,_RL_,[0,[0,937565914,t],[0,[0,848053268,line_no],0]]]]]]},
                                               _bPs_,
                                               t),
                                             _bPr_)}
                                  return caml_call2
                                          (let$2,
                                           caml_call2
                                            (map_list$0,
                                             function(n)
                                              {return caml_call2
                                                       (let$2,
                                                        fresh_tvar,
                                                        function(t){return caml_call1(return$4,[0,n,t])})},
                                             ns),
                                           _bPp_)});
                      default:
                       var c$1=c[3],bs=_bN__[2],name=_bN__[1];
                       if(caml_call1(Utils_List[4],bs) < 1)
                        throw [0,SmartExcept,[0,_RN_,[0,[0,848053268,line_no],0]]];
                       var
                        _bOa_=
                         function(bs$0)
                          {function _bPw_(param)
                            {var t=param[2],match=param[1],var$0=match[1];
                             return [0,var$0,t]}
                           var vars=caml_call2(Utils_List[20],_bPw_,bs$0);
                           function _bPx_(param)
                            {var t=param[2],match=param[1],field=match[2];
                             return [0,field,t]}
                           var fields=caml_call2(Utils_List[20],_bPx_,bs$0);
                           return caml_call2
                                   (let$2,
                                    _bN$_,
                                    function(scrutinee)
                                     {var t=urecord(fields);
                                      function _bPy_(param)
                                       {function _bPA_(c)
                                         {var c$0=[5,scrutinee,[2,name,bs],c];
                                          return caml_call1
                                                  (return$4,caml_call3(_yy_[10],line_no,c$0,c[2]))}
                                        function _bPB_(param){return c$1}
                                        return caml_call2
                                                (let$2,
                                                 scoped
                                                  (caml_call2
                                                    (let$2,
                                                     caml_call2
                                                      (iter_list$0,caml_call1(Utils_Control[22],add_var$0),vars),
                                                     _bPB_)),
                                                 _bPA_)}
                                      var _bPz_=scrutinee[2];
                                      return caml_call2
                                              (let$2,
                                               assertEqual
                                                (function(param)
                                                  {return [0,
                                                           _RP_,
                                                           [0,
                                                            [0,771172693,scrutinee],
                                                            [0,
                                                             14832,
                                                             [0,_RO_,[0,[0,937565914,t],[0,[0,848053268,line_no],0]]]]]]},
                                                 _bPz_,
                                                 t),
                                               _bPy_)})};
                       return caml_call2
                               (let$2,
                                caml_call2
                                 (map_list$0,
                                  function(x)
                                   {return caml_call2
                                            (let$2,
                                             fresh_tvar,
                                             function(t){return caml_call1(return$4,[0,x,t])})},
                                  bs),
                                _bOa_)}
                    break;
                   case 6:
                    var _bOb_=c[2],_bOc_=c[1];
                    switch(_bOb_[0])
                     {case 0:
                       var body=c[3],var$0=_bOb_[1];
                       return caml_call2
                               (let$2,
                                _bOc_,
                                function(lhs)
                                 {function _bPf_(body)
                                   {function _bPh_(param)
                                     {var c=[6,lhs,[0,var$0],body];
                                      return caml_call1
                                              (return$4,caml_call3(_yy_[10],line_no,c,unit$0))}
                                    var _bPi_=lhs[2],_bPj_=body[2];
                                    return caml_call2
                                            (let$2,
                                             assertEqual
                                              (function(param)
                                                {return [0,
                                                         _RR_,
                                                         [0,
                                                          [0,937565914,body[2]],
                                                          [0,
                                                           14832,
                                                           [0,
                                                            _RQ_,
                                                            [0,[0,937565914,lhs[2]],[0,[0,848053268,line_no],0]]]]]]},
                                               _bPj_,
                                               _bPi_),
                                             _bPh_)}
                                  function _bPg_(param){return body}
                                  return caml_call2
                                          (let$2,
                                           scoped(caml_call2(let$2,add_var$0(var$0,lhs[2]),_bPg_)),
                                           _bPf_)});
                      case 1:
                       var body$0=c[3],vars=_bOb_[1];
                       if(caml_call1(Utils_List[4],vars) < 2)
                        throw [0,SmartExcept,[0,_RS_,[0,[0,848053268,line_no],0]]];
                       return caml_call2
                               (let$2,
                                _bOc_,
                                function(lhs)
                                 {function _bO8_(vars$0)
                                   {function _bO9_(_bPe_){return _bPe_[2]}
                                    var t=tuple(caml_call2(Utils_List[20],_bO9_,vars$0));
                                    function _bO__(param)
                                     {function _bPa_(body)
                                       {function _bPc_(param)
                                         {var c=[6,lhs,[1,vars],body];
                                          return caml_call1
                                                  (return$4,caml_call3(_yy_[10],line_no,c,unit$0))}
                                        var _bPd_=body[2];
                                        return caml_call2
                                                (let$2,
                                                 assertEqual
                                                  (function(param)
                                                    {return [0,
                                                             _RU_,
                                                             [0,
                                                              [0,937565914,body[2]],
                                                              [0,
                                                               14832,
                                                               [0,_RT_,[0,[0,937565914,t],[0,[0,848053268,line_no],0]]]]]]},
                                                   _bPd_,
                                                   t),
                                                 _bPc_)}
                                      function _bPb_(param){return body$0}
                                      return caml_call2
                                              (let$2,
                                               scoped
                                                (caml_call2
                                                  (let$2,
                                                   caml_call2
                                                    (iter_list$0,caml_call1(Utils_Control[22],add_var$0),vars$0),
                                                   _bPb_)),
                                               _bPa_)}
                                    var _bO$_=lhs[2];
                                    return caml_call2
                                            (let$2,
                                             assertEqual
                                              (function(param)
                                                {return [0,
                                                         _RW_,
                                                         [0,
                                                          [0,771172693,lhs],
                                                          [0,
                                                           14832,
                                                           [0,_RV_,[0,[0,937565914,t],[0,[0,848053268,line_no],0]]]]]]},
                                               _bO$_,
                                               t),
                                             _bO__)}
                                  return caml_call2
                                          (let$2,
                                           caml_call2
                                            (map_list$0,
                                             function(n)
                                              {return caml_call2
                                                       (let$2,
                                                        fresh_tvar,
                                                        function(t){return caml_call1(return$4,[0,n,t])})},
                                             vars),
                                           _bO8_)});
                      default:
                       var body$1=c[3],bs$0=_bOb_[2],name$0=_bOb_[1];
                       return caml_call2
                               (let$2,
                                _bOc_,
                                function(e)
                                 {var t=urecord(0);
                                  function _bPk_(param)
                                   {function _bPm_(param)
                                     {return caml_call2
                                              (let$2,
                                               body$1,
                                               function(body)
                                                {function _bPn_(param)
                                                  {var c=[6,e,[2,name$0,bs$0],body];
                                                   return caml_call1
                                                           (return$4,caml_call3(_yy_[10],line_no,c,unit$0))}
                                                 var _bPo_=body[2];
                                                 return caml_call2
                                                         (let$2,
                                                          assertEqual
                                                           (function(param)
                                                             {return [0,_RX_,[0,[0,848053268,line_no],0]]},
                                                            _bPo_,
                                                            unit$0),
                                                          _bPn_)})}
                                    return caml_call2(let$2,add_var$0(name$0,e[2]),_bPm_)}
                                  var _bPl_=e[2];
                                  return caml_call2
                                          (let$2,
                                           assertEqual
                                            (function(param)
                                              {return [0,
                                                       _RZ_,
                                                       [0,
                                                        [0,771172693,e],
                                                        [0,
                                                         14832,
                                                         [0,_RY_,[0,[0,937565914,t],[0,[0,848053268,line_no],0]]]]]]},
                                             _bPl_,
                                             t),
                                           _bPk_)})}
                   case 7:
                    var ko_match=c[4],ok_match=c[3],id=c[2],expr=c[1];
                    return caml_call2
                            (let$2,
                             expr,
                             function(expr)
                              {return caml_call2
                                       (let$2,
                                        fresh_tvar,
                                        function(at)
                                         {var vt=list(at);
                                          function _bOZ_(param)
                                           {function _bO1_(param)
                                             {var ok_match=param[2],vars1=param[1];
                                              function _bO3_(param)
                                               {var ko_match=param[2],vars2=param[1];
                                                function _bO4_(param)
                                                 {function _bO5_(param)
                                                   {var c=[7,expr,id,ok_match,ko_match];
                                                    return caml_call1
                                                            (return$4,caml_call3(_yy_[10],line_no,c,ok_match[2]))}
                                                  var _bO6_=ko_match[2],_bO7_=ok_match[2];
                                                  return caml_call2
                                                          (let$2,
                                                           assertEqual
                                                            (function(param)
                                                              {return [0,_R0_,[0,[0,848053268,line_no],0]]},
                                                             _bO7_,
                                                             _bO6_),
                                                           _bO5_)}
                                                return caml_call2
                                                        (let$2,set_vars(max_occs(vars1,vars2)),_bO4_)}
                                              return caml_call2(let$2,scoped_branch(ko_match),_bO3_)}
                                            var
                                             t=
                                              record_default_layout
                                               (1,[0,[0,cst_head$0,at],[0,[0,cst_tail$0,vt],0]]);
                                            function _bO2_(param){return ok_match}
                                            return caml_call2
                                                    (let$2,
                                                     scoped_branch(caml_call2(let$2,add_var$0(id,t),_bO2_)),
                                                     _bO1_)}
                                          var _bO0_=expr[2];
                                          return caml_call2
                                                  (let$2,
                                                   assertEqual
                                                    (function(param)
                                                      {return [0,
                                                               _R2_,
                                                               [0,
                                                                [0,771172693,expr],
                                                                [0,
                                                                 14832,
                                                                 [0,_R1_,[0,[0,937565914,vt],[0,[0,848053268,line_no],0]]]]]]},
                                                     _bO0_,
                                                     vt),
                                                   _bOZ_)})});
                   case 8:
                    var e=c[2],name$1=c[1];
                    return caml_call2
                            (let$2,
                             e,
                             function(e)
                              {function _bOY_(param)
                                {var c=[8,name$1,e];
                                 return caml_call1
                                         (return$4,caml_call3(_yy_[10],line_no,c,unit$0))}
                               return caml_call2(let$2,add_var$0(name$1,e[2]),_bOY_)});
                   case 9:
                    var
                     rhs=c[2],
                     lhs=c[1],
                     _bOd_=
                      function(lhs)
                       {return caml_call2
                                (let$2,
                                 rhs,
                                 function(rhs)
                                  {function _bOV_(param)
                                    {return caml_call1
                                             (return$4,caml_call3(_yy_[10],line_no,[9,lhs,rhs],unit$0))}
                                   var _bOW_=rhs[2],_bOX_=lhs[2];
                                   return caml_call2
                                           (let$2,
                                            assertEqual
                                             (function(param)
                                               {return [0,
                                                        _R4_,
                                                        [0,
                                                         [0,771172693,lhs],
                                                         [0,_R3_,[0,[0,771172693,rhs],[0,[0,848053268,line_no],0]]]]]},
                                              _bOX_,
                                              _bOW_),
                                            _bOV_)})};
                    return caml_call2(let$2,scoped_no_occs(lhs),_bOd_);
                   case 12:
                    var _bOe_=c[1];
                    if(_bOe_)
                     {var c2$0=c[3],c1$0=c[2],x=_bOe_[1];
                      return caml_call2
                              (let$2,
                               c1$0,
                               function(c1)
                                {function _bOU_(param)
                                  {return caml_call2
                                           (let$2,
                                            c2$0,
                                            function(c2)
                                             {return caml_call1
                                                      (return$4,
                                                       caml_call3(_yy_[10],line_no,[12,[0,x],c1,c2],c2[2]))})}
                                 return caml_call2(let$2,add_var$0(x,c1[2]),_bOU_)})}
                    var c2$1=c[3],c1$1=c[2];
                    return caml_call2
                            (let$2,
                             get$2,
                             function(state)
                              {var
                                match=run$0(c1$1,state),
                                state$0=match[2],
                                c1=match[1],
                                match$0=run$0(c2$1,state$0),
                                state$1=match$0[2],
                                c2=match$0[1];
                               function _bOS_(param)
                                {return caml_call1
                                         (return$4,caml_call3(_yy_[10],line_no,[12,0,c1,c2],c2[2]))}
                               return caml_call2
                                       (let$2,function(_bOT_){return set$3(state$1,_bOT_)},_bOS_)});
                   case 13:
                    var body$2=c[3],e$0=c[2],name$2=c[1];
                    return caml_call2
                            (let$2,
                             e$0,
                             function(e)
                              {return caml_call2
                                       (let$2,
                                        fresh_tvar,
                                        function(t)
                                         {function _bOI_(param)
                                           {return caml_call2
                                                    (let$2,
                                                     get_vars,
                                                     function(old_vars)
                                                      {function _bON_(param)
                                                        {var body=param[2],new_vars=param[1];
                                                         function _bOP_(param)
                                                          {function _bOQ_(param)
                                                            {return caml_call1
                                                                     (return$4,
                                                                      caml_call3(_yy_[10],line_no,[13,name$2,e,body],unit$0))}
                                                           var _bOR_=body[2];
                                                           return caml_call2
                                                                   (let$2,
                                                                    assertEqual
                                                                     (function(param)
                                                                       {return [0,
                                                                                _R5_,
                                                                                [0,[0,937565914,body[2]],[0,[0,848053268,line_no],0]]]},
                                                                      _bOR_,
                                                                      unit$0),
                                                                    _bOQ_)}
                                                         return caml_call2
                                                                 (let$2,no_new_occs(line_no,old_vars,new_vars),_bOP_)}
                                                       function _bOO_(param){return body$2}
                                                       return caml_call2
                                                               (let$2,
                                                                scoped_branch(caml_call2(let$2,add_var$0(name$2,t),_bOO_)),
                                                                _bON_)})}
                                          var _bOJ_=list(t),_bOK_=e[2];
                                          return caml_call2
                                                  (let$2,
                                                   assertEqual
                                                    (function(param)
                                                      {var
                                                        _bOL_=caml_call5(Printer[2],0,0,0,0,t),
                                                        _bOM_=caml_call4(Printer[15],0,0,name$2,3);
                                                       return [0,
                                                               [0,936573133,caml_call3(Stdlib_printf[4],_R6_,_bOM_,_bOL_)],
                                                               [0,[0,771172693,e],[0,[0,848053268,line_no],0]]]},
                                                     _bOK_,
                                                     _bOJ_),
                                                   _bOI_)})});
                   case 14:
                    var body$3=c[2],e$1=c[1];
                    return caml_call2
                            (let$2,
                             e$1,
                             function(e)
                              {function _bOC_(param)
                                {return caml_call2
                                         (let$2,
                                          get_vars,
                                          function(old_vars)
                                           {function _bOE_(param)
                                             {var body=param[2],new_vars=param[1];
                                              function _bOF_(param)
                                               {function _bOG_(param)
                                                 {return caml_call1
                                                          (return$4,caml_call3(_yy_[10],line_no,[14,e,body],unit$0))}
                                                var _bOH_=body[2];
                                                return caml_call2
                                                        (let$2,
                                                         assertEqual
                                                          (function(param)
                                                            {return [0,
                                                                     _R7_,
                                                                     [0,[0,937565914,body[2]],[0,[0,848053268,line_no],0]]]},
                                                           _bOH_,
                                                           unit$0),
                                                         _bOG_)}
                                              return caml_call2
                                                      (let$2,no_new_occs(line_no,old_vars,new_vars),_bOF_)}
                                            return caml_call2(let$2,scoped_branch(body$3),_bOE_)})}
                               var _bOD_=e[2];
                               return caml_call2
                                       (let$2,
                                        assertEqual
                                         (function(param)
                                           {return [0,
                                                    _R8_,
                                                    [0,[0,771172693,e],[0,[0,848053268,line_no],0]]]},
                                          _bOD_,
                                          bool$0),
                                        _bOC_)});
                   case 17:
                    var
                     t=c[2],
                     e$2=c[1],
                     _bOf_=
                      function(e)
                       {function _bOA_(param)
                         {return caml_call1
                                  (return$4,caml_call3(_yy_[10],line_no,[17,e,t],unit$0))}
                        var _bOB_=e[2];
                        return caml_call2
                                (let$2,
                                 assertEqual
                                  (function(param)
                                    {return [0,
                                             [0,771172693,e],
                                             [0,_R9_,[0,[0,937565914,t],[0,[0,848053268,line_no],0]]]]},
                                   _bOB_,
                                   t),
                                 _bOA_)};
                    return caml_call2(let$2,scoped_no_occs(e$2),_bOf_);
                   case 18:
                    var t$0=c[2],c$2=c[1];
                    return caml_call2
                            (let$2,
                             c$2,
                             function(c)
                              {function _bOy_(param)
                                {return caml_call1
                                         (return$4,caml_call3(_yy_[10],line_no,[18,c,t$0],t$0))}
                               var _bOz_=c[2];
                               return caml_call2
                                       (let$2,
                                        assertEqual
                                         (function(param)
                                           {return [0,
                                                    [0,937565914,c[2]],
                                                    [0,_R__,[0,[0,937565914,t$0],[0,[0,848053268,line_no],0]]]]},
                                          _bOz_,
                                          t$0),
                                        _bOy_)})
                   }
                 function _bN9_(c)
                  {function _bOg_(t)
                    {return caml_call1
                             (return$4,caml_call3(_yy_[10],line_no,c,t))}
                   switch(c[0])
                    {case 0:
                      var
                       e=c[1],
                       _bOh_=function(param){return fresh_tvar},
                       _bOi_=e[2],
                       _bOj_=
                        caml_call2
                         (let$2,
                          assertEqual
                           (function(param)
                             {return [0,
                                      _Ru_,
                                      [0,[0,771172693,e],[0,[0,848053268,line_no],0]]]},
                            _bOi_,
                            never),
                          _bOh_);
                      break;
                     case 1:var _bOj_=fresh_tvar;break;
                     case 2:
                      var
                       e$0=c[1],
                       _bOk_=function(param){return caml_call1(return$4,unit$0)},
                       _bOl_=e$0[2],
                       _bOj_=
                        caml_call2
                         (let$2,
                          assertEqual
                           (function(param)
                             {return [0,_Rv_,[0,[0,848053268,line_no],0]]},
                            _bOl_,
                            bool$0),
                          _bOk_);
                      break;
                     case 10:
                      var
                       y=c[2],
                       x=c[1],
                       _bOj_=
                        caml_call2
                         (let$2,
                          fresh_tvar,
                          function(tvalue)
                           {function _bOx_(param){return caml_call1(return$4,unit$0)}
                            return caml_call2
                                    (let$2,add_constraint$0(line_no,[17,y[2],tvalue,x]),_bOx_)});
                      break;
                     case 11:
                      var
                       add=c[3],
                       y$0=c[2],
                       x$0=c[1],
                       pp=
                        function(param)
                         {var
                           _bOv_=
                            [0,
                             _Ry_,
                             [0,
                              [0,771172693,y$0],
                              [0,_Rx_,[0,14832,[0,[0,848053268,line_no],0]]]]],
                           _bOw_=add?cst_add$0:cst_remove$0;
                          return [0,
                                  [0,771172693,x$0],
                                  [0,_Rz_,[0,[0,936573133,_bOw_],_bOv_]]]},
                       _bOm_=function(param){return caml_call1(return$4,unit$0)},
                       _bOn_=set$0(y$0[2]),
                       _bOj_=caml_call2(let$2,assertEqual(pp,x$0[2],_bOn_),_bOm_);
                      break;
                     case 15:
                      var e$1=c[1],_bOj_=caml_call1(return$4,e$1[2]);break;
                     case 20:
                      var
                       ep=c[2],
                       name=c[1],
                       _bOo_=
                        function(tparameter_lazy)
                         {function _bOp_(param)
                           {function _bOr_(tstorage)
                             {var
                               _bOs_=pair(list(operation),tstorage),
                               expected=lambda(pair(tparameter_lazy,tstorage),_bOs_);
                              function _bOt_(param){return caml_call1(return$4,unit$0)}
                              var _bOu_=ep[2];
                              return caml_call2
                                      (let$2,
                                       assertEqual
                                        (function(param)
                                          {return [0,
                                                   _RB_,
                                                   [0,
                                                    [0,937565914,expected],
                                                    [0,_RA_,[0,[0,937565914,ep[2]],[0,[0,848053268,line_no],0]]]]]},
                                         _bOu_,
                                         expected),
                                       _bOt_)}
                            return caml_call2
                                    (let$2,
                                     check_var(line_no,0,cst_Storage,cst_storage$11),
                                     _bOr_)}
                          return caml_call2
                                  (let$2,
                                   caml_call2
                                    (let$2,
                                     fresh_tvar,
                                     function(t_ep)
                                      {var _bOq_=uvariant(name,t_ep);
                                       return assertEqual
                                               (function(param)
                                                 {return [0,_RC_,[0,[0,848053268,line_no],0]]},
                                                _bOq_,
                                                tparameter_lazy)}),
                                   _bOp_)},
                       _bOj_=
                        caml_call2
                         (let$2,
                          check_var
                           (line_no,0,cst_Self_parameter_lazy,cst_parameter_lazy),
                          _bOo_);
                      break;
                     case 16:
                     case 19:var _bOj_=caml_call1(return$4,unit$0);break;
                     default:throw [0,Assert_failure,_Rw_]}
                   return caml_call2(let$2,_bOj_,_bOg_)}
                 return caml_call2(let$2,caml_call1(_Rm_,c),_bN9_)})}
    function check_contract_f(line_no,init)
     {var
       metadata=init[11],
       flags=init[9],
       entry_points_layout=init[7],
       entry_points=init[6],
       tstorage_explicit=init[5],
       baker=init[4],
       storage=init[3],
       balance=init[2];
      return caml_call2
              (let$2,
               get_config$0,
               function(config)
                {var
                  config$0=
                   caml_call3(Utils_List[25],apply_flag,config,flags);
                 function _bNg_(balance)
                  {function _bNh_(storage)
                    {function _bNi_(baker)
                      {function _bNj_(param)
                        {function _bNl_(param)
                          {return caml_call2
                                   (let$2,
                                    fresh_tvar,
                                    function(tstorage)
                                     {function _bNo_(param)
                                       {function _bNq_(param)
                                         {function _bNr_(metadata)
                                           {var line_no=0;
                                            function _bNt_(param)
                                             {function _bNu_(param)
                                               {function _bNv_(global_variables)
                                                 {function _bNw_(views)
                                                   {return caml_call2
                                                            (let$2,
                                                             fresh_tvar,
                                                             function(tparameter)
                                                              {return caml_call2
                                                                       (let$2,
                                                                        fresh_tvar,
                                                                        function(tparameter_lazy)
                                                                         {return caml_call2
                                                                                  (let$2,
                                                                                   fresh_tvar,
                                                                                   function(tparameter_non_lazy)
                                                                                    {function _bNE_(param)
                                                                                      {function _bNG_(entry_points)
                                                                                        {function _bN0_(ep){return ep[3]}
                                                                                         var
                                                                                          eps_public=
                                                                                           caml_call2(Utils_List[40],_bN0_,entry_points);
                                                                                         function _bN1_(ep)
                                                                                          {return caml_call2(Utils_Option[50],0,ep[4])}
                                                                                         var
                                                                                          match=caml_call2(Utils_List[42],_bN1_,eps_public),
                                                                                          eps_non_lazy=match[2],
                                                                                          eps_lazy=match[1];
                                                                                         function _bN2_(ep){return [0,ep[1],ep[8][1]]}
                                                                                         var mk_row=caml_call1(Utils_List[20],_bN2_);
                                                                                         function mk_variant(eps)
                                                                                          {if(eps)
                                                                                            {var _bN8_=caml_call1(mk_row,eps);
                                                                                             return variant(unknown(0),_bN8_)}
                                                                                           return unit$0}
                                                                                         function _bN3_(param)
                                                                                          {function _bN4_(param)
                                                                                            {function _bN5_(param)
                                                                                              {var
                                                                                                tparameter_lazy$0=eps_lazy?[0,tparameter_lazy]:0,
                                                                                                tparameter_non_lazy$0=eps_non_lazy?[0,tparameter_non_lazy]:0;
                                                                                               function _bN6_(param)
                                                                                                {var
                                                                                                  _bN7_=
                                                                                                   [0,
                                                                                                    [0,
                                                                                                     tparameter,
                                                                                                     tparameter_lazy$0,
                                                                                                     tparameter_non_lazy$0,
                                                                                                     mk_variant(entry_points),
                                                                                                     tstorage]];
                                                                                                 return caml_call1
                                                                                                         (return$4,
                                                                                                          [0,
                                                                                                           init[1],
                                                                                                           balance,
                                                                                                           storage,
                                                                                                           baker,
                                                                                                           init[5],
                                                                                                           entry_points,
                                                                                                           init[7],
                                                                                                           init[8],
                                                                                                           init[9],
                                                                                                           global_variables,
                                                                                                           metadata,
                                                                                                           views,
                                                                                                           _bN7_])}
                                                                                               return caml_call2(let$2,set_inside_contract(0),_bN6_)}
                                                                                             var t=mk_variant(eps_public);
                                                                                             return caml_call2
                                                                                                     (let$2,
                                                                                                      assertEqual$1(0,function(param){return _Sd_},t,tparameter),
                                                                                                      _bN5_)}
                                                                                           var t=mk_variant(eps_non_lazy);
                                                                                           return caml_call2
                                                                                                   (let$2,
                                                                                                    assertEqual$1
                                                                                                     (0,function(param){return _Se_},t,tparameter_non_lazy),
                                                                                                    _bN4_)}
                                                                                         var t=mk_variant(eps_lazy);
                                                                                         return caml_call2
                                                                                                 (let$2,
                                                                                                  assertEqual$1
                                                                                                   (0,function(param){return _Sf_},t,tparameter_lazy),
                                                                                                  _bN3_)}
                                                                                       return caml_call2
                                                                                               (let$2,
                                                                                                caml_call2
                                                                                                 (map_list$0,
                                                                                                  function(init)
                                                                                                   {function is_param(param)
                                                                                                     {var _bNY_=param[1];
                                                                                                      if(5 === _bNY_[0])
                                                                                                       {var _bNZ_=_bNY_[1],switch$0=0;
                                                                                                        if(typeof _bNZ_ === "number" || ! (3 === _bNZ_[0]))
                                                                                                         switch$0 = 1;
                                                                                                        else
                                                                                                         if(! caml_string_notequal(_bNZ_[1],cst_parameter$4))return 1}
                                                                                                      return 0}
                                                                                                    var
                                                                                                     uses_param=
                                                                                                      exists_command(0,is_param,function(param){return 0});
                                                                                                    function _bNH_(param)
                                                                                                     {function _bNI_(param)
                                                                                                       {function _bNJ_(tparameter_ep_derived)
                                                                                                         {function _bNM_(param)
                                                                                                           {function _bNN_(param)
                                                                                                             {function _bNO_(param)
                                                                                                               {function _bNP_(param)
                                                                                                                 {function _bNQ_(body)
                                                                                                                   {function _bNR_(param)
                                                                                                                     {function _bNT_(param)
                                                                                                                       {var
                                                                                                                         _bNV_=init[6],
                                                                                                                         _bNW_=init[5],
                                                                                                                         _bNX_=[0,caml_call2(Utils_Option[45],config$0[7],init[4])];
                                                                                                                        return caml_call1
                                                                                                                                (return$4,
                                                                                                                                 [0,
                                                                                                                                  init[1],
                                                                                                                                  init[2],
                                                                                                                                  init[3],
                                                                                                                                  _bNX_,
                                                                                                                                  _bNW_,
                                                                                                                                  _bNV_,
                                                                                                                                  body,
                                                                                                                                  [0,tparameter_ep_derived]])}
                                                                                                                      var switch$0=0;
                                                                                                                      if
                                                                                                                       (config$0[16]
                                                                                                                        &&
                                                                                                                        120414939
                                                                                                                        ===
                                                                                                                        init[2]
                                                                                                                        &&
                                                                                                                        !
                                                                                                                        caml_call1(uses_param,body))
                                                                                                                       {var
                                                                                                                         w=
                                                                                                                          [0,
                                                                                                                           _Sa_,
                                                                                                                           [0,
                                                                                                                            [0,936573133,init[1]],
                                                                                                                            [0,_R$_,[0,[0,848053268,init[6]],0]]]],
                                                                                                                         _bNU_=
                                                                                                                          function(s)
                                                                                                                           {return [0,0,[0,s[1],s[2],s[3],s[4],s[5],[0,w,s[6]]]]};
                                                                                                                        switch$0 = 1}
                                                                                                                      if(! switch$0)var _bNU_=caml_call1(return$4,0);
                                                                                                                      return caml_call2(let$2,_bNU_,_bNT_)}
                                                                                                                    var _bNS_=body[2];
                                                                                                                    return caml_call2
                                                                                                                            (let$2,
                                                                                                                             assertEqual$1
                                                                                                                              (line_no,
                                                                                                                               function(param)
                                                                                                                                {return [0,
                                                                                                                                         _Sc_,
                                                                                                                                         [0,
                                                                                                                                          [0,936573133,init[1]],
                                                                                                                                          [0,_Sb_,[0,14832,[0,[0,848053268,body[3]],0]]]]]},
                                                                                                                               _bNS_,
                                                                                                                               unit$0),
                                                                                                                             _bNR_)}
                                                                                                                  return caml_call2(let$2,init[7],_bNQ_)}
                                                                                                                return caml_call2
                                                                                                                        (let$2,
                                                                                                                         caml_call2
                                                                                                                          (iter_list$0,
                                                                                                                           function(param)
                                                                                                                            {var e=param[2],n=param[1];return add_var(line_no,n,e[2])},
                                                                                                                           global_variables),
                                                                                                                         _bNP_)}
                                                                                                              return caml_call2
                                                                                                                      (let$2,
                                                                                                                       add_var(line_no,cst_parameter_lazy$0,tparameter_lazy),
                                                                                                                       _bNO_)}
                                                                                                            return caml_call2
                                                                                                                    (let$2,
                                                                                                                     add_var(line_no,cst_contract$4,contract(tparameter)),
                                                                                                                     _bNN_)}
                                                                                                          return caml_call2
                                                                                                                  (let$2,
                                                                                                                   add_var(line_no,cst_parameter$5,tparameter_ep_derived),
                                                                                                                   _bNM_)}
                                                                                                        var _bNK_=init[2];
                                                                                                        if(typeof _bNK_ === "number")
                                                                                                         var
                                                                                                          _bNL_=
                                                                                                           919067353 <= _bNK_?caml_call1(return$4,unit$0):fresh_tvar;
                                                                                                        else
                                                                                                         var t=_bNK_[2],_bNL_=caml_call1(return$4,t);
                                                                                                        return caml_call2(let$2,_bNL_,_bNJ_)}
                                                                                                      return caml_call2
                                                                                                              (let$2,add_var(line_no,cst_storage$13,tstorage),_bNI_)}
                                                                                                    return scoped_no_occs
                                                                                                            (caml_call2
                                                                                                              (let$2,
                                                                                                               add_var(line_no,cst_operations$4,list(operation)),
                                                                                                               _bNH_))},
                                                                                                  entry_points),
                                                                                                _bNG_)}
                                                                                     return caml_call2
                                                                                             (let$2,
                                                                                              caml_call2
                                                                                               (when_some,
                                                                                                entry_points_layout,
                                                                                                function(l)
                                                                                                 {function f(param)
                                                                                                   {var target=param[2];
                                                                                                    return caml_call2
                                                                                                            (let$2,
                                                                                                             fresh_tvar,
                                                                                                             function(t){return caml_call1(return$4,[0,target,t])})}
                                                                                                  function _bNF_(row)
                                                                                                   {var t=variant(value(l),row);
                                                                                                    return assertEqual$1
                                                                                                            (0,
                                                                                                             function(param)
                                                                                                              {return [0,
                                                                                                                       _Sg_,
                                                                                                                       [0,[0,937565914,t],[0,[0,937565914,tparameter_non_lazy],0]]]},
                                                                                                             t,
                                                                                                             tparameter_non_lazy)}
                                                                                                  return caml_call2
                                                                                                          (let$2,
                                                                                                           caml_call2(map_list$0,f,caml_call1(Utils_Binary_tree[41],l)),
                                                                                                           _bNF_)}),
                                                                                              _bNE_)})})})}
                                                  var _bNx_=init[12];
                                                  return caml_call2
                                                          (let$2,
                                                           caml_call2
                                                            (map_list$0,
                                                             function(init)
                                                              {function _bNy_(param)
                                                                {return caml_call2
                                                                         (let$2,
                                                                          fresh_tvar,
                                                                          function(t)
                                                                           {function _bNz_(param)
                                                                             {function _bNB_(param)
                                                                               {function _bNC_(body)
                                                                                 {var _bND_=init[2]?[0,t]:0;
                                                                                  return caml_call1
                                                                                          (return$4,
                                                                                           [0,init[1],init[2],init[3],body,init[5],[0,_bND_]])}
                                                                                return caml_call2(let$2,init[4],_bNC_)}
                                                                              return caml_call2
                                                                                      (let$2,
                                                                                       caml_call2
                                                                                        (iter_list$0,
                                                                                         function(param)
                                                                                          {var e=param[2],n=param[1];return add_var(line_no,n,e[2])},
                                                                                         global_variables),
                                                                                       _bNB_)}
                                                                            var _bNA_=add_var(line_no,cst_parameter$3,t);
                                                                            return caml_call2
                                                                                    (let$2,caml_call2(when,init[2],_bNA_),_bNz_)})}
                                                               return scoped_no_occs
                                                                       (caml_call2
                                                                         (let$2,add_var(line_no,cst_storage$12,tstorage),_bNy_))},
                                                             _bNx_),
                                                           _bNw_)}
                                                return caml_call2
                                                        (let$2,caml_call2(map_list$0,sequence_snd,init[10]),_bNv_)}
                                              return caml_call2(let$2,set_vars(Utils_String[42][1]),_bNu_)}
                                            return scoped
                                                    (caml_call2(let$2,set_inside_contract(1),_bNt_))}
                                          return caml_call2
                                                  (let$2,
                                                   caml_call2
                                                    (map_list$0,
                                                     function(param)
                                                      {var y=param[2],x=param[1];
                                                       function _bNs_(y){return [0,x,y]}
                                                       return caml_call2(let$1,caml_call1(_Rl_,y),_bNs_)},
                                                     metadata),
                                                   _bNr_)}
                                        return caml_call2
                                                (let$2,
                                                 caml_call2
                                                  (when_some,
                                                   tstorage_explicit,
                                                   function(t)
                                                    {return assertEqual$1
                                                             (line_no,
                                                              function(param)
                                                               {return [0,
                                                                        _Si_,
                                                                        [0,
                                                                         [0,937565914,t],
                                                                         [0,
                                                                          _Sh_,
                                                                          [0,[0,937565914,tstorage],[0,[0,848053268,line_no],0]]]]]},
                                                              tstorage,
                                                              t)}),
                                                 _bNq_)}
                                      return caml_call2
                                              (let$2,
                                               caml_call2
                                                (when_some,
                                                 storage,
                                                 function(s)
                                                  {var _bNp_=s[2];
                                                   return assertEqual$1
                                                           (line_no,
                                                            function(param)
                                                             {return [0,
                                                                      [0,771172693,s],
                                                                      [0,
                                                                       _Sj_,
                                                                       [0,[0,937565914,tstorage],[0,[0,848053268,line_no],0]]]]},
                                                            tstorage,
                                                            _bNp_)}),
                                               _bNo_)})}
                         return caml_call2
                                 (let$2,
                                  caml_call2
                                   (when_some,
                                    baker,
                                    function(baker)
                                     {var _bNm_=option(key_hash$0),_bNn_=baker[2];
                                      return assertEqual$1
                                              (line_no,
                                               function(param)
                                                {return [0,
                                                         [0,771172693,baker],
                                                         [0,_Sk_,[0,[0,848053268,line_no],0]]]},
                                               _bNn_,
                                               _bNm_)}),
                                  _bNl_)}
                       return caml_call2
                               (let$2,
                                caml_call2
                                 (when_some,
                                  balance,
                                  function(balance)
                                   {var _bNk_=balance[2];
                                    return assertEqual$1
                                            (line_no,
                                             function(param)
                                              {return [0,
                                                       [0,771172693,balance],
                                                       [0,_Sl_,[0,[0,848053268,line_no],0]]]},
                                             _bNk_,
                                             token)}),
                                _bNj_)}
                     return caml_call2
                             (let$2,caml_call1(sequence_option,baker),_bNi_)}
                   return caml_call2
                           (let$2,caml_call1(sequence_option,storage),_bNh_)}
                 return caml_call2
                         (let$2,caml_call1(sequence_option,balance),_bNg_)})}
    function check_lambda(line_no,param)
     {var clean_stack=param[4],body=param[3],name=param[2],id=param[1];
      function _bNb_(param)
       {return caml_call2
                (let$2,
                 fresh_tvar,
                 function(tParams)
                  {return caml_call2
                           (let$2,
                            fresh_tvar,
                            function(tResult)
                             {function _bNd_(param)
                               {return caml_call2
                                        (let$2,
                                         body,
                                         function(body)
                                          {function _bNe_(param)
                                            {return caml_call1
                                                     (return$4,
                                                      [0,id,name,body,clean_stack,[0,tParams],[0,tResult]])}
                                           var _bNf_=body[2];
                                           return caml_call2
                                                   (let$2,
                                                    assertEqual$1
                                                     (line_no,
                                                      function(param)
                                                       {return [0,
                                                                _TF_,
                                                                [0,
                                                                 [0,937565914,body[2]],
                                                                 [0,
                                                                  _TE_,
                                                                  [0,[0,937565914,tResult],[0,[0,848053268,line_no],0]]]]]},
                                                      _bNf_,
                                                      tResult),
                                                    _bNe_)})}
                              return caml_call2
                                      (let$2,
                                       add_var
                                        (line_no,caml_call2(Stdlib_format[126],_TG_,id),tParams),
                                       _bNd_)})})}
      var
       _bNc_=
        clean_stack?set_vars(Utils_String[42][1]):caml_call1(return$4,0);
      return scoped_no_occs(caml_call2(let$2,_bNc_,_bNb_))}
    function check_expr_f(line_no,ee)
     {function assertEqual(_bM__,_bM$_,_bNa_)
       {return assertEqual$1(line_no,_bM__,_bM$_,_bNa_)}
      function add_constraint(_bM9_){return add_constraint$0(line_no,_bM9_)}
      function check_var$0(_bM6_,_bM7_,_bM8_)
       {return check_var(line_no,_bM6_,_bM7_,_bM8_)}
      switch(ee[0])
       {case 19:
         var
          match=ee[1],
          tResult=match[6],
          tParams=match[5],
          clean_stack=match[4],
          body=match[3],
          name=match[2],
          id=match[1],
          _bIR_=
           function(l)
            {var _bI1_=lambda(l[5][1],l[6][1]);
             return caml_call1
                     (return$4,caml_call3(_yy_[9],line_no,[19,l],_bI1_))};
         return caml_call2
                 (let$2,
                  check_lambda
                   (line_no,[0,id,name,body,clean_stack,tParams,tResult]),
                  _bIR_);
        case 21:
         var storage=ee[4],balance=ee[3],baker=ee[2],contract_template=ee[1];
         return caml_call2
                 (let$2,
                  get_config$0,
                  function(config)
                   {return caml_call2
                            (let$2,
                             baker,
                             function(baker)
                              {return caml_call2
                                       (let$2,
                                        balance,
                                        function(balance)
                                         {return caml_call2
                                                  (let$2,
                                                   storage,
                                                   function(storage)
                                                    {function _bIS_(param)
                                                      {function _bIV_(param)
                                                        {function _bIX_(c)
                                                          {function _bIY_(param)
                                                            {var
                                                              e=[21,c,baker,balance,storage],
                                                              et=
                                                               record_default_layout
                                                                (1,
                                                                 [0,
                                                                  [0,cst_operation$2,operation],
                                                                  [0,[0,cst_address$4,address$0],0]]);
                                                             return caml_call1(return$4,caml_call3(_yy_[9],line_no,e,et))}
                                                           var _bIZ_=c[13][1][5],_bI0_=storage[2];
                                                           return caml_call2
                                                                   (let$2,
                                                                    assertEqual
                                                                     (function(param)
                                                                       {return [0,_T8_,[0,[0,848053268,line_no],0]]},
                                                                      _bI0_,
                                                                      _bIZ_),
                                                                    _bIY_)}
                                                         return caml_call2
                                                                 (let$2,check_contract_f(line_no,contract_template),_bIX_)}
                                                       var _bIW_=balance[2];
                                                       return caml_call2
                                                               (let$2,
                                                                assertEqual
                                                                 (function(param)
                                                                   {return [0,
                                                                            [0,771172693,balance],
                                                                            [0,_T9_,[0,[0,848053268,line_no],0]]]},
                                                                  _bIW_,
                                                                  token),
                                                                _bIV_)}
                                                     var
                                                      _bIT_=option(baker_type_of_protocol(config[6])),
                                                      _bIU_=baker[2];
                                                     return caml_call2
                                                             (let$2,
                                                              assertEqual
                                                               (function(param)
                                                                 {return [0,
                                                                          [0,771172693,baker],
                                                                          [0,_T__,[0,[0,848053268,line_no],0]]]},
                                                                _bIU_,
                                                                _bIT_),
                                                              _bIS_)})})})});
        default:
         var
          _bIQ_=
           function(e)
            {switch(e[0])
              {case 19:
               case 21:throw [0,Assert_failure,_T7_];
               default:
                var
                 _bJM_=
                  function(et)
                   {return caml_call1
                            (return$4,caml_call3(_yy_[9],line_no,e,et))};
                switch(e[0])
                 {case 0:
                   var p=e[1],switch$0=0;
                   if(typeof p === "number" || ! (0 === p[0]))
                    switch$0 = 1;
                   else
                    {var _bI3_=p[1];
                     if(_bI3_)
                      var
                       name=_bI3_[1],
                       _bI4_=
                        function(t_contract)
                         {return caml_call2
                                  (let$2,
                                   fresh_tvar,
                                   function(t_ep)
                                    {function _bM4_(param)
                                      {return caml_call1(return$4,contract(t_ep))}
                                     var _bM5_=contract(uvariant(name,t_ep));
                                     return caml_call2
                                             (let$2,
                                              assertEqual$1
                                               (line_no,
                                                function(param){return [0,_Sm_,[0,[0,848053268,line_no],0]]},
                                                _bM5_,
                                                t_contract),
                                              _bM4_)})},
                       _bJN_=
                        caml_call2
                         (let$2,
                          check_var(line_no,0,cst_Self_parameter,cst_contract$5),
                          _bI4_);
                     else
                      var
                       _bJN_=
                        check_var
                         (line_no,0,cst_Self_parameter$0,cst_parameter_contract)}
                   if(switch$0)
                    var
                     _bJN_=
                      caml_call2
                       (let$2,
                        get_config$0,
                        function(config)
                         {get$0(config);
                          var t=caml_call1(include$1[2],p);
                          return caml_call1(return$4,caml_call1(of_mtype,t))});
                   var _bJO_=_bJN_;
                   break;
                  case 1:
                   var
                    x$0=e[2],
                    p$0=e[1],
                    _bJO_=
                     caml_call2
                      (let$2,
                       get_config$0,
                       function(config)
                        {var
                          Printer=get$0(config),
                          name=caml_call2(Printer[10],0,p$0),
                          match=caml_call1(include$1[3],p$0),
                          t=match[2],
                          t1=match[1],
                          t1$0=caml_call1(of_mtype,t1);
                         function _bM2_(param)
                          {return caml_call1(return$4,caml_call1(of_mtype,t))}
                         var _bM3_=x$0[2];
                         return caml_call2
                                 (let$2,
                                  assertEqual$1
                                   (line_no,
                                    function(param)
                                     {return [0,
                                              [0,936573133,name],
                                              [0,
                                               _So_,
                                               [0,
                                                [0,937565914,t1$0],
                                                [0,
                                                 14832,
                                                 [0,
                                                  _Sn_,
                                                  [0,[0,937565914,x$0[2]],[0,[0,848053268,line_no],0]]]]]]]},
                                    _bM3_,
                                    t1$0),
                                  _bM2_)});
                   break;
                  case 2:throw [0,Assert_failure,_TH_];
                  case 3:
                   var
                    x2=e[3],
                    x1=e[2],
                    p$1=e[1],
                    _bJO_=
                     caml_call2
                      (let$2,
                       get_config$0,
                       function(config)
                        {var
                          Printer=get$0(config),
                          name=caml_call1(Printer[11],p$1),
                          match=caml_call1(include$1[4],p$1),
                          t=match[3],
                          t2=match[2],
                          t1=match[1],
                          t1$0=caml_call1(of_mtype,t1),
                          t2$0=caml_call1(of_mtype,t2);
                         function _bMY_(param)
                          {function _bM0_(param)
                            {return caml_call1(return$4,caml_call1(of_mtype,t))}
                           var _bM1_=x2[2];
                           return caml_call2
                                   (let$2,
                                    assertEqual$1
                                     (line_no,
                                      function(param)
                                       {return [0,
                                                [0,936573133,name],
                                                [0,
                                                 _Sr_,
                                                 [0,
                                                  [0,937565914,t2$0],
                                                  [0,
                                                   _Sq_,
                                                   [0,
                                                    14832,
                                                    [0,_Sp_,[0,[0,937565914,x2[2]],[0,[0,848053268,line_no],0]]]]]]]]},
                                      _bM1_,
                                      t2$0),
                                    _bM0_)}
                         var _bMZ_=x1[2];
                         return caml_call2
                                 (let$2,
                                  assertEqual$1
                                   (line_no,
                                    function(param)
                                     {return [0,
                                              [0,936573133,name],
                                              [0,
                                               _Su_,
                                               [0,
                                                [0,937565914,t1$0],
                                                [0,
                                                 _St_,
                                                 [0,
                                                  14832,
                                                  [0,_Ss_,[0,[0,937565914,x1[2]],[0,[0,848053268,line_no],0]]]]]]]]},
                                    _bMZ_,
                                    t1$0),
                                  _bMY_)});
                   break;
                  case 4:
                   var
                    x3=e[4],
                    x2$0=e[3],
                    x1$0=e[2],
                    p$2=e[1],
                    _bJO_=
                     caml_call2
                      (let$2,
                       get_config$0,
                       function(config)
                        {var
                          Printer=get$0(config),
                          name=caml_call1(Printer[12],p$2),
                          match=caml_call1(include$1[5],p$2),
                          t=match[4],
                          t3=match[3],
                          t2=match[2],
                          t1=match[1],
                          t1$0=caml_call1(of_mtype,t1),
                          t2$0=caml_call1(of_mtype,t2),
                          t3$0=caml_call1(of_mtype,t3);
                         function _bMS_(param)
                          {function _bMU_(param)
                            {function _bMW_(param)
                              {return caml_call1(return$4,caml_call1(of_mtype,t))}
                             var _bMX_=x3[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$1
                                       (line_no,
                                        function(param)
                                         {return [0,
                                                  [0,936573133,name],
                                                  [0,
                                                   _Sx_,
                                                   [0,
                                                    [0,937565914,t3$0],
                                                    [0,
                                                     _Sw_,
                                                     [0,
                                                      14832,
                                                      [0,_Sv_,[0,[0,937565914,x3[2]],[0,[0,848053268,line_no],0]]]]]]]]},
                                        _bMX_,
                                        t3$0),
                                      _bMW_)}
                           var _bMV_=x2$0[2];
                           return caml_call2
                                   (let$2,
                                    assertEqual$1
                                     (line_no,
                                      function(param)
                                       {return [0,
                                                [0,936573133,name],
                                                [0,
                                                 _SA_,
                                                 [0,
                                                  [0,937565914,t2$0],
                                                  [0,
                                                   _Sz_,
                                                   [0,
                                                    14832,
                                                    [0,
                                                     _Sy_,
                                                     [0,[0,937565914,x2$0[2]],[0,[0,848053268,line_no],0]]]]]]]]},
                                      _bMV_,
                                      t2$0),
                                    _bMU_)}
                         var _bMT_=x1$0[2];
                         return caml_call2
                                 (let$2,
                                  assertEqual$1
                                   (line_no,
                                    function(param)
                                     {return [0,
                                              [0,936573133,name],
                                              [0,
                                               _SD_,
                                               [0,
                                                [0,937565914,t1$0],
                                                [0,
                                                 _SC_,
                                                 [0,
                                                  14832,
                                                  [0,
                                                   _SB_,
                                                   [0,[0,937565914,x1$0[2]],[0,[0,848053268,line_no],0]]]]]]]]},
                                    _bMT_,
                                    t1$0),
                                  _bMS_)});
                   break;
                  case 5:
                   var
                    p$3=e[1],
                    check_var$1=
                     function(_bMP_,_bMQ_,_bMR_)
                      {return check_var(line_no,_bMP_,_bMQ_,_bMR_)};
                   if(typeof p$3 === "number")
                    var _bJP_=caml_call1(return$4,nat$0(0));
                   else
                    switch(p$3[0])
                     {case 0:
                       var _bI5_=p$3[1],switch$1=0;
                       if(typeof _bI5_ === "number")
                        switch$1 = 1;
                       else
                        switch(_bI5_[0])
                         {case 1:
                           var is_nat=_bI5_[2],i=_bI5_[1],match=get(is_nat);
                           if(match && match[1] && ! (0 <= caml_call1(Big_int[22],i)))
                            throw [0,
                                   SmartExcept,
                                   [0,_SE_,[0,14832,[0,[0,848053268,line_no],0]]]];
                           var _bJP_=caml_call1(return$4,type_of_literal(_bI5_));
                           break;
                          case 6:
                           var i$0=_bI5_[1];
                           if(! (0 <= caml_call1(Big_int[22],i$0)))
                            throw [0,
                                   SmartExcept,
                                   [0,_SF_,[0,14832,[0,[0,848053268,line_no],0]]]];
                           switch$1 = 1;
                           break;
                          default:switch$1 = 1}
                       if(switch$1)
                        var _bJP_=caml_call1(return$4,type_of_literal(_bI5_));
                       break;
                      case 1:
                       var
                        match$0=p$3[1],
                        type=match$0[3],
                        _bJP_=caml_call1(return$4,contract(type));
                       break;
                      case 2:
                       var
                        x=p$3[1],
                        _bJP_=
                         caml_call1(return$4,bounded(type_of_literal(x),0,[0,x,0]));
                       break;
                      case 3:
                       var name$0=p$3[1],_bJP_=check_var$1(0,cst_Local,name$0);
                       break;
                      case 4:
                       var
                        name$1=p$3[1],
                        _bJP_=check_var$1(_SG_,cst_Meta_Local,name$1);
                       break;
                      case 5:
                       var n=p$3[1],_bJP_=check_var$1(0,cst_Global_var,n);break;
                      case 6:
                       var name$2=p$3[1],_bJP_=check_var$1(0,cst_Pattern,name$2);
                       break;
                      case 7:
                       var name$3=p$3[1],_bJP_=check_var$1(0,cst_Iterator,name$3);
                       break;
                      case 8:
                       var
                        name$4=p$3[1],
                        _bJP_=check_var$1(0,cst_Match_list,name$4);
                       break;
                      case 9:var _bJP_=caml_call1(return$4,account);break;
                      case 10:var _bJP_=caml_call1(return$4,address$0);break;
                      case 11:var _bJP_=caml_call1(return$4,token);break;
                      case 12:
                       var
                        _bJP_=
                         caml_call2
                          (let$2,
                           get_config$0,
                           function(config)
                            {return caml_call1
                                     (return$4,option(baker_type_of_protocol(config[6])))});
                       break;
                      case 13:
                       var
                        id=p$3[1],
                        _bI6_=string_of_contract_id(id),
                        name$5=caml_call2(Stdlib[28],_bI6_,cst_storage$14),
                        _bJP_=check_var$1(0,cst_Contract_var,name$5);
                       break;
                      case 14:
                       var
                        entry_point=p$3[2],
                        id$0=p$3[1],
                        name$6=string_of_contract_id(id$0),
                        _bI7_=
                         function(t)
                          {if(entry_point)
                            {var entry_point$0=entry_point[1];
                             return caml_call2
                                     (let$2,
                                      fresh_tvar,
                                      function(t_ep)
                                       {function _bMN_(param)
                                         {return caml_call1(return$4,contract(t_ep))}
                                        var _bMO_=contract(uvariant(entry_point$0,t_ep));
                                        return caml_call2
                                                (let$2,
                                                 assertEqual$1
                                                  (line_no,
                                                   function(param)
                                                    {return [0,
                                                             _SH_,
                                                             [0,
                                                              [0,936573133,entry_point$0],
                                                              [0,
                                                               [0,937565914,t_ep],
                                                               [0,[0,937565914,t],[0,[0,848053268,line_no],0]]]]]},
                                                   _bMO_,
                                                   t),
                                                 _bMN_)})}
                           return caml_call1(return$4,t)},
                        _bJP_=
                         caml_call2
                          (let$2,check_var$1(0,cst_Contract_var$0,name$6),_bI7_);
                       break;
                      default:
                       var
                        id$1=p$3[1],
                        name$7=string_of_scenario_var(id$1),
                        _bJP_=check_var$1(0,cst_Scenario_var,name$7)}
                   var _bJO_=_bJP_;
                   break;
                  case 6:
                   var
                    x$1=e[2],
                    p$4=e[1],
                    assertEqual$0=
                     function(_bMK_,_bML_,_bMM_)
                      {return assertEqual$1(line_no,_bMK_,_bML_,_bMM_)},
                    add_constraint$1=
                     function(_bMJ_){return add_constraint$0(line_no,_bMJ_)};
                   if(typeof p$4 === "number")
                    switch(p$4)
                     {case 0:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {function _bMi_(param){return caml_call1(return$4,t)}
                             var _bMj_=list(t),_bMk_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(_bMl_)
                                         {return [0,
                                                  _SI_,
                                                  [0,[0,771172693,x$1],[0,[0,848053268,line_no],0]]]},
                                        _bMk_,
                                        _bMj_),
                                      _bMi_)});
                       break;
                      case 1:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {function _bMf_(param)
                              {return caml_call1(return$4,address$0)}
                             var _bMg_=contract(t),_bMh_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  _SK_,
                                                  [0,[0,771172693,x$1],[0,_SJ_,[0,[0,848053268,line_no],0]]]]},
                                        _bMh_,
                                        _bMg_),
                                      _bMf_)});
                       break;
                      case 2:
                       var
                        _bI8_=
                         function(param)
                          {return caml_call1(return$4,contract(unit$0))},
                        _bI9_=x$1[2],
                        _bJQ_=
                         caml_call2
                          (let$2,
                           assertEqual$0
                            (function(param)
                              {return [0,
                                       _SM_,
                                       [0,[0,771172693,x$1],[0,_SL_,[0,[0,848053268,line_no],0]]]]},
                             _bI9_,
                             key_hash$0),
                           _bI8_);
                       break;
                      case 3:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {function _bMc_(param){return caml_call1(return$4,list(t))}
                             var _bMd_=list(t),_bMe_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  [0,771172693,x$1],
                                                  [0,_SN_,[0,[0,848053268,line_no],0]]]},
                                        _bMe_,
                                        _bMd_),
                                      _bMc_)});
                       break;
                      case 4:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {function _bMb_(param){return caml_call1(return$4,t)}
                             return caml_call2(let$2,add_constraint$1([14,x$1,t]),_bMb_)});
                       break;
                      case 5:var _bJQ_=caml_call1(return$4,bytes$0);break;
                      case 6:var _bJQ_=caml_call1(return$4,x$1[2]);break;
                      case 7:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           get_config$0,
                           function(config)
                            {function _bL__(param)
                              {return caml_call1(return$4,operation)}
                             var
                              _bL$_=option(baker_type_of_protocol(config[6])),
                              _bMa_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,_SO_,[0,[0,848053268,line_no],0]]},
                                        _bMa_,
                                        _bL$_),
                                      _bL__)});
                       break;
                      case 8:
                       var
                        _bI__=function(param){return caml_call1(return$4,int$1(0))},
                        _bI$_=int$1(0),
                        _bJa_=x$1[2],
                        _bJQ_=
                         caml_call2
                          (let$2,
                           assertEqual$0
                            (function(param)
                              {return [0,
                                       _SP_,
                                       [0,[0,771172693,x$1],[0,[0,848053268,line_no],0]]]},
                             _bJa_,
                             _bI$_),
                           _bI__);
                       break;
                      case 9:
                       var
                        _bJb_=function(param){return caml_call1(return$4,nat$0(0))},
                        _bJQ_=caml_call2(let$2,add_constraint$1([9,x$1]),_bJb_);
                       break;
                      case 10:
                       var
                        t=intOrNat$0(0),
                        _bJc_=function(param){return caml_call1(return$4,t)},
                        _bJd_=list(t),
                        _bJe_=x$1[2],
                        _bJQ_=
                         caml_call2
                          (let$2,
                           assertEqual$0
                            (function(param)
                              {return [0,
                                       _SQ_,
                                       [0,[0,771172693,x$1],[0,[0,848053268,line_no],0]]]},
                             _bJe_,
                             _bJd_),
                           _bJc_);
                       break;
                      case 11:
                       var
                        _bJf_=function(param){return caml_call1(return$4,int$1(0))},
                        _bJQ_=caml_call2(let$2,add_constraint$1([15,x$1]),_bJf_);
                       break;
                      case 12:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {function _bL7_(param)
                              {var t_data=tuple([0,address$0,[0,t,[0,nat$0(0),0]]]);
                               return caml_call1(return$4,pair(t_data,x$1[2]))}
                             var _bL8_=ticket(t),_bL9_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  [0,771172693,x$1],
                                                  [0,_SR_,[0,[0,848053268,line_no],0]]]},
                                        _bL9_,
                                        _bL8_),
                                      _bL7_)});
                       break;
                      case 13:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {var ticket_t=ticket(t);
                             function _bL4_(param)
                              {return caml_call1(return$4,option(ticket_t))}
                             var _bL5_=pair(ticket_t,ticket_t),_bL6_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  [0,771172693,x$1],
                                                  [0,_SS_,[0,[0,848053268,line_no],0]]]},
                                        _bL6_,
                                        _bL5_),
                                      _bL4_)});
                       break;
                      case 14:
                       var
                        _bJg_=function(param){return caml_call1(return$4,bool$0)},
                        _bJh_=list(pair(bls12_381_g1$0,bls12_381_g2$0)),
                        _bJi_=x$1[2],
                        _bJQ_=
                         caml_call2
                          (let$2,
                           assertEqual$0
                            (function(param)
                              {return [0,
                                       [0,771172693,x$1],
                                       [0,_ST_,[0,[0,848053268,line_no],0]]]},
                             _bJi_,
                             _bJh_),
                           _bJg_);
                       break;
                      case 15:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           get_config$0,
                           function(config)
                            {function _bL1_(param){return caml_call1(return$4,nat$0(0))}
                             var _bL2_=baker_type_of_protocol(config[6]),_bL3_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  [0,771172693,x$1],
                                                  [0,_SU_,[0,[0,848053268,line_no],0]]]},
                                        _bL3_,
                                        _bL2_),
                                      _bL1_)});
                       break;
                      default:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {function _bMm_(param){return caml_call1(return$4,t)}
                             var _bMn_=bounded(t,0,0),_bMo_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  [0,771172693,x$1],
                                                  [0,_SV_,[0,[0,848053268,line_no],0]]]},
                                        _bMo_,
                                        _bMn_),
                                      _bMm_)})}
                   else
                    switch(p$4[0])
                     {case 0:
                       var
                        i$1=p$4[1],
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {function _bME_(param){return caml_call1(return$4,t)}
                             var _bMF_=utuple(i$1,t),_bMG_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  _SY_,
                                                  [0,
                                                   [0,771172693,x$1],
                                                   [0,
                                                    _SX_,
                                                    [0,
                                                     [0,936573133,caml_call1(Stdlib[33],i$1)],
                                                     [0,
                                                      _SW_,
                                                      [0,[0,937565914,t],[0,14832,[0,[0,848053268,line_no],0]]]]]]]]},
                                        _bMG_,
                                        _bMF_),
                                      _bME_)});
                       break;
                      case 1:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(telement)
                            {function _bMB_(param)
                              {return caml_call1(return$4,list(telement))}
                             var _bMC_=set$0(telement),_bMD_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  [0,771172693,x$1],
                                                  [0,_SZ_,[0,[0,848053268,line_no],0]]]},
                                        _bMD_,
                                        _bMC_),
                                      _bMB_)});
                       break;
                      case 2:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(tkey)
                            {return caml_call2
                                     (let$2,
                                      fresh_tvar,
                                      function(tvalue)
                                       {function _bMy_(param)
                                         {return caml_call1(return$4,list(key_value(tkey,tvalue)))}
                                        var _bMz_=map$0(0,tkey,tvalue),_bMA_=x$1[2];
                                        return caml_call2
                                                (let$2,
                                                 assertEqual$0
                                                  (function(param)
                                                    {return [0,
                                                             [0,771172693,x$1],
                                                             [0,_S0_,[0,[0,848053268,line_no],0]]]},
                                                   _bMA_,
                                                   _bMz_),
                                                 _bMy_)})});
                       break;
                      case 3:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(tkey)
                            {return caml_call2
                                     (let$2,
                                      fresh_tvar,
                                      function(tvalue)
                                       {function _bMv_(param)
                                         {return caml_call1(return$4,list(tkey))}
                                        var _bMw_=map$0(0,tkey,tvalue),_bMx_=x$1[2];
                                        return caml_call2
                                                (let$2,
                                                 assertEqual$0
                                                  (function(param)
                                                    {return [0,
                                                             [0,771172693,x$1],
                                                             [0,_S1_,[0,[0,848053268,line_no],0]]]},
                                                   _bMx_,
                                                   _bMw_),
                                                 _bMv_)})});
                       break;
                      case 4:
                       var
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(tkey)
                            {return caml_call2
                                     (let$2,
                                      fresh_tvar,
                                      function(tvalue)
                                       {function _bMs_(param)
                                         {return caml_call1(return$4,list(tvalue))}
                                        var _bMt_=map$0(0,tkey,tvalue),_bMu_=x$1[2];
                                        return caml_call2
                                                (let$2,
                                                 assertEqual$0
                                                  (function(param)
                                                    {return [0,
                                                             [0,771172693,x$1],
                                                             [0,_S2_,[0,[0,848053268,line_no],0]]]},
                                                   _bMu_,
                                                   _bMt_),
                                                 _bMs_)})});
                       break;
                      case 5:
                       var
                        t$0=p$4[1],
                        pp$0=
                         function(param)
                          {return [0,
                                   _S3_,
                                   [0,
                                    [0,771172693,x$1],
                                    [0,[0,937565914,t$0],[0,[0,848053268,line_no],0]]]]},
                        _bJj_=
                         function(param){return caml_call1(return$4,option(t$0))},
                        _bJQ_=
                         caml_call2(let$2,assertEqual$0(pp$0,x$1[2],bytes$0),_bJj_);
                       break;
                      case 6:
                       var
                        t$1=p$4[1],
                        pp$1=
                         function(param)
                          {return [0,
                                   _S5_,
                                   [0,
                                    [0,771172693,x$1],
                                    [0,
                                     14832,
                                     [0,
                                      _S4_,
                                      [0,14832,[0,[0,937565914,t$1],[0,[0,848053268,line_no],0]]]]]]]},
                        _bJk_=function(param){return caml_call1(return$4,t$1)},
                        _bJQ_=caml_call2(let$2,assertEqual$0(pp$1,x$1[2],t$1),_bJk_);
                       break;
                      case 7:
                       var
                        name$8=p$4[1],
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {function _bMp_(param){return caml_call1(return$4,t)}
                             var _bMq_=urecord([0,[0,name$8,t],0]),_bMr_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  _S8_,
                                                  [0,
                                                   [0,771172693,x$1],
                                                   [0,
                                                    _S7_,
                                                    [0,
                                                     [0,936573133,name$8],
                                                     [0,
                                                      _S6_,
                                                      [0,[0,937565914,t],[0,14832,[0,[0,848053268,line_no],0]]]]]]]]},
                                        _bMr_,
                                        _bMq_),
                                      _bMp_)});
                       break;
                      case 8:
                       var name$9=p$4[1],_bJQ_=for_variant(line_no,name$9,x$1[2]);
                       break;
                      default:
                       var
                        name$10=p$4[1],
                        _bJQ_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {var switch$0=0;
                             if
                              (caml_string_notequal(name$10,cst_None$53)
                               &&
                               caml_string_notequal(name$10,cst_Some$53))
                              {var tvariant=uvariant(name$10,t);switch$0 = 1}
                             if(! switch$0)var tvariant=option(t);
                             function _bMH_(param){return caml_call1(return$4,bool$0)}
                             var _bMI_=x$1[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$0
                                       (function(param)
                                         {return [0,
                                                  _S__,
                                                  [0,
                                                   14832,
                                                   [0,
                                                    [0,937565914,x$1[2]],
                                                    [0,
                                                     14832,
                                                     [0,
                                                      _S9_,
                                                      [0,
                                                       14832,
                                                       [0,
                                                        [0,937565914,tvariant],
                                                        [0,14832,[0,[0,848053268,line_no],0]]]]]]]]]},
                                        _bMI_,
                                        tvariant),
                                      _bMH_)})}
                   var _bJO_=_bJQ_;
                   break;
                  case 7:
                   var
                    y=e[3],
                    x$2=e[2],
                    p$5=e[1],
                    assertEqual$2=
                     function(_bLY_,_bLZ_,_bL0_)
                      {return assertEqual$1(line_no,_bLY_,_bLZ_,_bL0_)},
                    add_constraint$2=
                     function(_bLX_){return add_constraint$0(line_no,_bLX_)},
                    pp_bin$0=
                     function(_bLT_,_bLU_,_bLV_,_bLW_)
                      {return pp_bin(line_no,_bLT_,_bLU_,_bLV_,_bLW_)},
                    pp_bin_op=
                     function(op,x,y,_bLS_)
                      {return [0,
                               [0,771172693,x],
                               [0,
                                [0,936573133,op],
                                [0,[0,771172693,y],[0,14832,[0,[0,848053268,line_no],0]]]]]};
                   if(typeof p$5 === "number")
                    switch(p$5)
                     {case 0:
                       var
                        _bJR_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(r)
                            {function _bLl_(param)
                              {return caml_call1(return$4,option(r))}
                             return caml_call2
                                     (let$2,add_constraint$2([17,y[2],r,x$2]),_bLl_)});
                       break;
                      case 1:
                       var
                        _bJl_=function(param){return caml_call1(return$4,bool$0)},
                        _bJR_=
                         caml_call2(let$2,add_constraint$2([8,x$2,y,line_no]),_bJl_);
                       break;
                      case 2:
                       var
                        _bJR_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {function _bLi_(param){return caml_call1(return$4,t)}
                             var _bLj_=lambda(y[2],t),_bLk_=x$2[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$2
                                       (function(param)
                                         {return [0,
                                                  [0,771172693,x$2],
                                                  [0,_S$_,[0,[0,771172693,y],[0,[0,848053268,line_no],0]]]]},
                                        _bLk_,
                                        _bLj_),
                                      _bLi_)});
                       break;
                      case 3:
                       var
                        _bJR_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t1)
                            {return caml_call2
                                     (let$2,
                                      fresh_tvar,
                                      function(t2)
                                       {function _bLf_(param)
                                         {return caml_call1(return$4,lambda(t1,t2))}
                                        var _bLg_=lambda(pair(y[2],t1),t2),_bLh_=x$2[2];
                                        return caml_call2
                                                (let$2,
                                                 assertEqual$2
                                                  (function(param)
                                                    {return [0,
                                                             [0,771172693,x$2],
                                                             [0,_Ta_,[0,[0,771172693,y],[0,[0,848053268,line_no],0]]]]},
                                                   _bLh_,
                                                   _bLg_),
                                                 _bLf_)})});
                       break;
                      case 4:
                       var
                        _bJm_=function(param){return caml_call1(return$4,y[2])},
                        _bJn_=list(x$2[2]),
                        _bJo_=y[2],
                        _bJR_=
                         caml_call2
                          (let$2,
                           assertEqual$2
                            (function(param)
                              {return [0,
                                       _Tb_,
                                       [0,
                                        [0,172818814,[0,x$2,[0,y,0]]],
                                        [0,[0,848053268,line_no],0]]]},
                             _bJo_,
                             _bJn_),
                           _bJm_);
                       break;
                      case 5:
                       var
                        pp$2=
                         function(param)
                          {return [0,
                                   _Td_,
                                   [0,
                                    [0,172818814,[0,x$2,[0,y,0]]],
                                    [0,_Tc_,[0,[0,848053268,line_no],0]]]]},
                        _bJp_=
                         function(param)
                          {function _bLd_(param)
                            {return caml_call1(return$4,timestamp$0)}
                           var _bLe_=y[2];
                           return caml_call2
                                   (let$2,assertEqual$2(pp$2,int$1(0),_bLe_),_bLd_)},
                        _bJR_=
                         caml_call2
                          (let$2,assertEqual$2(pp$2,timestamp$0,x$2[2]),_bJp_);
                       break;
                      case 6:
                       var
                        _bJq_=
                         function(param){return caml_call1(return$4,ticket(x$2[2]))},
                        _bJr_=nat$0(0),
                        _bJs_=y[2],
                        _bJR_=
                         caml_call2
                          (let$2,
                           assertEqual$2
                            (function(param)
                              {return [0,
                                       [0,771172693,y],
                                       [0,_Te_,[0,[0,848053268,line_no],0]]]},
                             _bJs_,
                             _bJr_),
                           _bJq_);
                       break;
                      default:
                       var
                        _bJR_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {var ticket_t=ticket(t);
                             function _bLm_(param)
                              {function _bLo_(param)
                                {return caml_call1(return$4,option(pair(ticket_t,ticket_t)))}
                               var _bLp_=nat$0(0),_bLq_=pair(nat$0(0),_bLp_),_bLr_=y[2];
                               return caml_call2
                                       (let$2,
                                        assertEqual$2
                                         (function(param)
                                           {return [0,
                                                    [0,771172693,y],
                                                    [0,_Tf_,[0,[0,771172693,x$2],[0,[0,848053268,line_no],0]]]]},
                                          _bLr_,
                                          _bLq_),
                                        _bLo_)}
                             var _bLn_=x$2[2];
                             return caml_call2
                                     (let$2,
                                      assertEqual$2
                                       (function(param)
                                         {return [0,
                                                  [0,771172693,x$2],
                                                  [0,_Tg_,[0,[0,848053268,line_no],0]]]},
                                        _bLn_,
                                        ticket_t),
                                      _bLm_)})}
                   else
                    if(0 === p$5[0])
                     {var op=p$5[1];
                      if(typeof op === "number")
                       switch(op)
                        {case 2:
                          var
                           pp$3=
                            function(param)
                             {return [0,
                                      _Tj_,
                                      [0,
                                       [0,771172693,x$2],
                                       [0,
                                        _Ti_,
                                        [0,
                                         [0,771172693,y],
                                         [0,_Th_,[0,14832,[0,[0,848053268,line_no],0]]]]]]]},
                           _bJu_=
                            function(param)
                             {var e$0=caml_call3(_yy_[9],line_no,e,x$2[2]);
                              function _bLE_(param){return caml_call1(return$4,x$2[2])}
                              return caml_call2
                                      (let$2,add_constraint$2([4,e$0,x$2,y]),_bLE_)},
                           _bJR_=
                            caml_call2(let$2,assertEqual$2(pp$3,x$2[2],y[2]),_bJu_);
                          break;
                         case 3:
                          var
                           pp$4=
                            function(param)
                             {return [0,
                                      _Tm_,
                                      [0,
                                       [0,771172693,x$2],
                                       [0,
                                        _Tl_,
                                        [0,
                                         [0,771172693,y],
                                         [0,_Tk_,[0,14832,[0,[0,848053268,line_no],0]]]]]]]},
                           _bJv_=
                            function(param)
                             {var e$0=caml_call3(_yy_[9],line_no,e,x$2[2]);
                              function _bLD_(param){return caml_call1(return$4,x$2[2])}
                              return caml_call2
                                      (let$2,add_constraint$2([4,e$0,x$2,y]),_bLD_)},
                           _bJR_=
                            caml_call2(let$2,assertEqual$2(pp$4,x$2[2],y[2]),_bJv_);
                          break;
                         case 4:
                          var
                           _bJw_=
                            function(param)
                             {var e$0=caml_call3(_yy_[9],line_no,e,x$2[2]);
                              function _bLC_(param){return caml_call1(return$4,x$2[2])}
                              return caml_call2
                                      (let$2,add_constraint$2([0,e$0,x$2,y]),_bLC_)},
                           _bJx_=y[2],
                           _bJy_=x$2[2],
                           _bJR_=
                            caml_call2
                             (let$2,
                              assertEqual$2
                               (function(_bLB_){return pp_bin_op(cst$240,x$2,y,_bLB_)},
                                _bJy_,
                                _bJx_),
                              _bJw_);
                          break;
                         case 5:
                          var
                           pp$5=function(_bLA_){return pp_bin_op(cst$241,x$2,y,_bLA_)},
                           _bJz_=
                            function(param)
                             {return caml_call2
                                      (let$2,
                                       fresh_tvar,
                                       function(et)
                                        {var e$0=caml_call3(_yy_[9],line_no,e,et);
                                         function _bLz_(param){return caml_call1(return$4,et)}
                                         return caml_call2
                                                 (let$2,add_constraint$2([2,e$0,x$2,y]),_bLz_)})},
                           _bJR_=
                            caml_call2(let$2,assertEqual$2(pp$5,x$2[2],y[2]),_bJz_);
                          break;
                         case 6:
                          var
                           pp$6=
                            function(param)
                             {return [0,
                                      _Tp_,
                                      [0,
                                       [0,771172693,x$2],
                                       [0,
                                        _To_,
                                        [0,
                                         [0,771172693,y],
                                         [0,
                                          14832,
                                          [0,
                                           _Tn_,
                                           [0,
                                            [0,937565914,nat$0(0)],
                                            [0,14832,[0,[0,848053268,line_no],0]]]]]]]]]},
                           _bJA_=
                            function(param)
                             {function _bLx_(param){return caml_call1(return$4,nat$0(0))}
                              var _bLy_=nat$0(0);
                              return caml_call2
                                      (let$2,assertEqual$2(pp$6,x$2[2],_bLy_),_bLx_)},
                           _bJR_=
                            caml_call2(let$2,assertEqual$2(pp$6,x$2[2],y[2]),_bJA_);
                          break;
                         case 7:
                          var
                           _bJR_=
                            caml_call2
                             (let$2,
                              fresh_tvar,
                              function(a)
                               {return caml_call2
                                        (let$2,
                                         fresh_tvar,
                                         function(b)
                                          {var
                                            et=option(pair(a,b)),
                                            e$0=caml_call3(_yy_[9],line_no,e,et);
                                           function _bLw_(param){return caml_call1(return$4,et)}
                                           return caml_call2
                                                   (let$2,add_constraint$2([3,e$0,x$2,y]),_bLw_)})});
                          break;
                         case 8:
                          var
                           pp$7=function(_bLv_){return pp_bin_op(cst$242,x$2,y,_bLv_)},
                           _bJB_=
                            function(param)
                             {function _bLt_(param){return caml_call1(return$4,nat$0(0))}
                              var _bLu_=intOrNat$0(0);
                              return caml_call2
                                      (let$2,assertEqual$2(pp$7,x$2[2],_bLu_),_bLt_)},
                           _bJR_=
                            caml_call2(let$2,assertEqual$2(pp$7,x$2[2],y[2]),_bJB_);
                          break;
                         case 13:
                          var
                           pp$8=
                            function(param)
                             {return [0,
                                      _Ts_,
                                      [0,
                                       [0,771172693,x$2],
                                       [0,
                                        _Tr_,
                                        [0,
                                         [0,771172693,y],
                                         [0,_Tq_,[0,14832,[0,[0,848053268,line_no],0]]]]]]]},
                           _bJC_=
                            function(param)
                             {var e$0=caml_call3(_yy_[9],line_no,e,x$2[2]);
                              function _bLs_(param){return caml_call1(return$4,x$2[2])}
                              return caml_call2
                                      (let$2,add_constraint$2([4,e$0,x$2,y]),_bLs_)},
                           _bJR_=
                            caml_call2(let$2,assertEqual$2(pp$8,x$2[2],y[2]),_bJC_);
                          break;
                         default:
                          var
                           _bJt_=function(param){return caml_call1(return$4,bool$0)},
                           pp=
                            function(_bLH_)
                             {return pp_bin(line_no,cst_comparison_between,x$2,y,_bLH_)},
                           _bI2_=
                            function(param)
                             {function _bLF_(param)
                               {function _bLG_(param){return caml_call1(return$4,0)}
                                return caml_call2
                                        (let$2,add_constraint$0(line_no,[6,y]),_bLG_)}
                              return caml_call2
                                      (let$2,add_constraint$0(line_no,[6,x$2]),_bLF_)},
                           _bJR_=
                            caml_call2
                             (let$2,
                              caml_call2
                               (let$2,assertEqual$1(line_no,pp,x$2[2],y[2]),_bI2_),
                              _bJt_)}
                      else
                       var
                        overloaded=op[1],
                        _bJR_=
                         caml_call2
                          (let$2,
                           fresh_tvar,
                           function(t)
                            {var e$0=caml_call3(_yy_[9],line_no,e,t);
                             function _bLI_(param)
                              {if(overloaded)return caml_call1(return$4,t);
                               function pp(_bLL_){return pp_bin_op(cst$243,x$2,y,_bLL_)}
                               function _bLJ_(param)
                                {function _bLK_(param){return caml_call1(return$4,x$2[2])}
                                 return caml_call2
                                         (let$2,assertEqual$2(pp,e$0[2],x$2[2]),_bLK_)}
                               return caml_call2(let$2,assertEqual$2(pp,x$2[2],y[2]),_bLJ_)}
                             return caml_call2
                                     (let$2,add_constraint$2([1,e$0,x$2,y,overloaded]),_bLI_)})}
                    else
                     if(p$5[1])
                      var
                       pp$9=function(_bLO_){return pp_bin$0(cst_min$0,x$2,y,_bLO_)},
                       _bJD_=
                        function(param)
                         {function _bLM_(param){return caml_call1(return$4,x$2[2])}
                          var _bLN_=intOrNat$0(0);
                          return caml_call2
                                  (let$2,assertEqual$2(pp$9,x$2[2],_bLN_),_bLM_)},
                       _bJR_=
                        caml_call2(let$2,assertEqual$2(pp$9,x$2[2],y[2]),_bJD_);
                     else
                      var
                       pp$10=
                        function(_bLR_){return pp_bin$0(cst_max$0,x$2,y,_bLR_)},
                       _bJE_=
                        function(param)
                         {function _bLP_(param){return caml_call1(return$4,x$2[2])}
                          var _bLQ_=intOrNat$0(0);
                          return caml_call2
                                  (let$2,assertEqual$2(pp$10,x$2[2],_bLQ_),_bLP_)},
                       _bJR_=
                        caml_call2(let$2,assertEqual$2(pp$10,x$2[2],y[2]),_bJE_);
                   var _bJO_=_bJR_;
                   break;
                  case 8:
                   var
                    z=e[4],
                    y$0=e[3],
                    x$3=e[2],
                    p$6=e[1],
                    assertEqual$3=
                     function(_bLa_,_bLb_,_bLc_)
                      {return assertEqual$1(line_no,_bLa_,_bLb_,_bLc_)},
                    add_constraint$3=
                     function(_bK$_){return add_constraint$0(line_no,_bK$_)};
                   switch(p$6)
                    {case 0:
                      var
                       pp$11=
                        function(param)
                         {return [0,
                                  _Tu_,
                                  [0,
                                   [0,172818814,[0,x$3,[0,y$0,[0,z,0]]]],
                                   [0,_Tt_,[0,[0,848053268,line_no],0]]]]},
                       _bJF_=
                        function(param)
                         {function _bK4_(param)
                           {function _bK6_(param){return caml_call1(return$4,token)}
                            var _bK7_=z[2];
                            return caml_call2
                                    (let$2,assertEqual$3(pp$11,nat$0(0),_bK7_),_bK6_)}
                          var _bK5_=y$0[2];
                          return caml_call2
                                  (let$2,assertEqual$3(pp$11,nat$0(0),_bK5_),_bK4_)},
                       _bJS_=
                        caml_call2(let$2,assertEqual$3(pp$11,token,x$3[2]),_bJF_);
                      break;
                     case 1:
                      var
                       pp$12=
                        function(param)
                         {return [0,
                                  _Tv_,
                                  [0,
                                   [0,172818814,[0,x$3,[0,y$0,[0,z,0]]]],
                                   [0,14832,[0,[0,848053268,line_no],0]]]]},
                       _bJG_=
                        function(param)
                         {function _bK2_(param)
                           {function _bK3_(param)
                             {return caml_call1(return$4,list(x$3[2]))}
                            return caml_call2
                                    (let$2,add_constraint$3([12,x$3[2],pp$12]),_bK3_)}
                          return caml_call2
                                  (let$2,assertEqual$3(pp$12,x$3[2],z[2]),_bK2_)},
                       _bJS_=
                        caml_call2(let$2,assertEqual$3(pp$12,x$3[2],y$0[2]),_bJG_);
                      break;
                     case 2:
                      var
                       _bJS_=
                        caml_call2
                         (let$2,
                          fresh_tvar,
                          function(tvalue)
                           {function pp(param)
                             {return [0,
                                      [0,771172693,z],
                                      [0,
                                       _Tx_,
                                       [0,[0,937565914,z[2]],[0,_Tw_,[0,[0,848053268,line_no],0]]]]]}
                            function _bKZ_(param)
                             {function _bK1_(param){return caml_call1(return$4,x$3[2])}
                              return caml_call2
                                      (let$2,add_constraint$3([17,y$0[2],tvalue,x$3]),_bK1_)}
                            var _bK0_=option(tvalue);
                            return caml_call2(let$2,assertEqual$3(pp,z[2],_bK0_),_bKZ_)});
                      break;
                     case 3:
                      var
                       _bJS_=
                        caml_call2
                         (let$2,
                          fresh_tvar,
                          function(tvalue)
                           {function pp(param)
                             {return [0,
                                      [0,771172693,z],
                                      [0,
                                       _Tz_,
                                       [0,[0,937565914,z[2]],[0,_Ty_,[0,[0,848053268,line_no],0]]]]]}
                            function _bKW_(param)
                             {function _bKY_(param)
                               {return caml_call1(return$4,pair(z[2],x$3[2]))}
                              return caml_call2
                                      (let$2,add_constraint$3([17,y$0[2],tvalue,x$3]),_bKY_)}
                            var _bKX_=option(tvalue);
                            return caml_call2(let$2,assertEqual$3(pp,z[2],_bKX_),_bKW_)});
                      break;
                     case 4:
                      var
                       _bJH_=
                        function(param)
                         {function _bKU_(param){return caml_call1(return$4,y$0[2])}
                          var _bKV_=x$3[2];
                          return caml_call2
                                  (let$2,
                                   assertEqual$3
                                    (function(param)
                                      {return [0,_TA_,[0,[0,848053268,line_no],0]]},
                                     _bKV_,
                                     bool$0),
                                   _bKU_)},
                       _bJI_=z[2],
                       _bJJ_=y$0[2],
                       _bJS_=
                        caml_call2
                         (let$2,
                          assertEqual$3
                           (function(param)
                             {return [0,_TB_,[0,[0,848053268,line_no],0]]},
                            _bJJ_,
                            _bJI_),
                          _bJH_);
                      break;
                     default:
                      var
                       _bJK_=
                        function(param)
                         {function _bK8_(param)
                           {return caml_call1(return$4,ticket(y$0[2]))}
                          var _bK9_=nat$0(0),_bK__=z[2];
                          return caml_call2
                                  (let$2,
                                   assertEqual$3
                                    (function(param)
                                      {return [0,
                                               [0,771172693,z],
                                               [0,_TC_,[0,[0,848053268,line_no],0]]]},
                                     _bK__,
                                     _bK9_),
                                   _bK8_)},
                       _bJL_=x$3[2],
                       _bJS_=
                        caml_call2
                         (let$2,
                          assertEqual$3
                           (function(param)
                             {return [0,
                                      [0,771172693,x$3],
                                      [0,_TD_,[0,[0,848053268,line_no],0]]]},
                            _bJL_,
                            address$0),
                          _bJK_)}
                   var _bJO_=_bJS_;
                   break;
                  case 9:
                   var
                    x$4=e[2],
                    name$11=e[1],
                    _bJT_=
                     function(et)
                      {var switch$0=0;
                       if
                        (caml_string_notequal(name$11,cst_None$54)
                         &&
                         caml_string_notequal(name$11,cst_Some$54))
                        {var tv=uvariant(name$11,et);switch$0 = 1}
                       if(! switch$0)var tv=option(et);
                       function _bKS_(param){return caml_call1(return$4,et)}
                       var _bKT_=x$4[2];
                       return caml_call2
                               (let$2,
                                assertEqual
                                 (function(param)
                                   {return [0,
                                            _TJ_,
                                            [0,
                                             [0,771172693,x$4],
                                             [0,
                                              _TI_,
                                              [0,
                                               [0,936573133,name$11],
                                               [0,14832,[0,[0,848053268,line_no],0]]]]]]},
                                  _bKT_,
                                  tv),
                                _bKS_)},
                    fresh_tvar$0=
                     caml_string_notequal(name$11,cst_None$55)
                      ?fresh_tvar
                      :caml_call1(return$4,unit$0),
                    _bJO_=caml_call2(let$2,fresh_tvar$0,_bJT_);
                   break;
                  case 10:
                   var
                    default_value=e[3],
                    key=e[2],
                    items=e[1],
                    _bJO_=
                     caml_call2
                      (let$2,
                       fresh_tvar,
                       function(et)
                        {function _bKO_(param)
                          {function _bKP_(param){return caml_call1(return$4,et)}
                           if(default_value)
                            var
                             e=default_value[1],
                             _bKQ_=e[2],
                             _bKR_=
                              assertEqual
                               (function(param)
                                 {return [0,
                                          [0,771172693,items],
                                          [0,
                                           _TK_,
                                           [0,[0,771172693,e],[0,14832,[0,[0,848053268,line_no],0]]]]]},
                                _bKQ_,
                                et);
                           else
                            var _bKR_=caml_call1(return$4,0);
                           return caml_call2(let$2,_bKR_,_bKP_)}
                         return caml_call2
                                 (let$2,add_constraint([7,items,key,et]),_bKO_)});
                   break;
                  case 11:
                   var
                    es=e[1],
                    _bJU_=function(param){var et=param[2];return et},
                    _bJO_=
                     caml_call1
                      (return$4,tuple(caml_call2(Utils_List[20],_bJU_,es)));
                   break;
                  case 12:
                   var
                    entries=e[1],
                    layout=unknown(0),
                    _bJV_=function(param){var et=param[2];return et},
                    _bJW_=caml_call1(Utils_Control[5],_bJV_),
                    row=caml_call2(Utils_List[20],_bJW_,entries),
                    _bJO_=caml_call1(return$4,record_or_unit(layout,row));
                   break;
                  case 13:
                   var
                    xs=e[1],
                    _bJO_=
                     caml_call2
                      (let$2,
                       fresh_tvar,
                       function(t)
                        {function item(x)
                          {var _bKN_=x[2];
                           return assertEqual
                                   (function(param)
                                     {return [0,
                                              _TM_,
                                              [0,
                                               [0,771172693,x],
                                               [0,_TL_,[0,[0,937565914,t],[0,[0,848053268,line_no],0]]]]]},
                                    _bKN_,
                                    t)}
                         function _bKM_(param){return caml_call1(return$4,list(t))}
                         return caml_call2
                                 (let$2,caml_call2(iter_list$0,item,xs),_bKM_)});
                   break;
                  case 14:
                   var
                    entries$0=e[2],
                    big=e[1],
                    _bJO_=
                     caml_call2
                      (let$2,
                       fresh_tvar,
                       function(tkey)
                        {return caml_call2
                                 (let$2,
                                  fresh_tvar,
                                  function(tvalue)
                                   {function item(param)
                                     {var v=param[2],k=param[1];
                                      function _bKI_(param)
                                       {function _bKK_(param){return caml_call1(return$4,0)}
                                        var _bKL_=v[2];
                                        return caml_call2
                                                (let$2,
                                                 assertEqual
                                                  (function(param)
                                                    {return [0,
                                                             _TO_,
                                                             [0,
                                                              [0,771172693,v],
                                                              [0,
                                                               _TN_,
                                                               [0,
                                                                [0,937565914,tvalue],
                                                                [0,14832,[0,[0,848053268,line_no],0]]]]]]},
                                                   _bKL_,
                                                   tvalue),
                                                 _bKK_)}
                                      var _bKJ_=k[2];
                                      return caml_call2
                                              (let$2,
                                               assertEqual
                                                (function(param)
                                                  {return [0,
                                                           _TQ_,
                                                           [0,
                                                            [0,771172693,k],
                                                            [0,
                                                             _TP_,
                                                             [0,[0,937565914,tkey],[0,14832,[0,[0,848053268,line_no],0]]]]]]},
                                                 _bKJ_,
                                                 tkey),
                                               _bKI_)}
                                    function _bKH_(param)
                                     {return caml_call1(return$4,map$0(big,tkey,tvalue))}
                                    return caml_call2
                                            (let$2,caml_call2(iter_list$0,item,entries$0),_bKH_)})});
                   break;
                  case 15:
                   var
                    entries$1=e[1],
                    _bJO_=
                     caml_call2
                      (let$2,
                       fresh_tvar,
                       function(telement)
                        {function check(k)
                          {var _bKG_=k[2];
                           return assertEqual
                                   (function(param)
                                     {return [0,
                                              _TS_,
                                              [0,
                                               [0,771172693,k],
                                               [0,
                                                _TR_,
                                                [0,
                                                 [0,937565914,set$0(telement)],
                                                 [0,14832,[0,[0,848053268,line_no],0]]]]]]},
                                    _bKG_,
                                    telement)}
                         function _bKF_(param)
                          {return caml_call1(return$4,set$0(telement))}
                         return caml_call2
                                 (let$2,caml_call2(iter_list$0,check,entries$1),_bKF_)});
                   break;
                  case 16:
                   var
                    transaction=e[2],
                    state=e[1],
                    _bJX_=
                     function(param)
                      {function _bKA_(param)
                        {function _bKD_(param)
                          {var _bKE_=state[2];
                           return caml_call1(return$4,option(pair(int$1(0),_bKE_)))}
                         return caml_call2
                                 (let$2,add_constraint([13,state,transaction]),_bKD_)}
                       var _bKB_=sapling_state(0),_bKC_=state[2];
                       return caml_call2
                               (let$2,
                                assertEqual
                                 (function(param)
                                   {return [0,
                                            [0,771172693,state],
                                            [0,_TT_,[0,[0,848053268,line_no],0]]]},
                                  _bKC_,
                                  _bKB_),
                                _bKA_)},
                    _bJY_=sapling_transaction(0),
                    _bJZ_=transaction[2],
                    _bJO_=
                     caml_call2
                      (let$2,
                       assertEqual
                        (function(param)
                          {return [0,
                                   [0,771172693,transaction],
                                   [0,_TU_,[0,[0,848053268,line_no],0]]]},
                         _bJZ_,
                         _bJY_),
                       _bJX_);
                   break;
                  case 17:
                   var
                    exprs=e[2],
                    michelson=e[1],
                    pp$13=
                     function(param)
                      {return [0,
                               _TV_,
                               [0,
                                [0,936573133,michelson[1]],
                                [0,[0,172818814,exprs],[0,[0,848053268,line_no],0]]]]},
                    matchTypes=
                     function(types,name,match,out)
                      {if(match)
                        {if(types)
                          {var
                            tin=match[2],
                            tt2=match[1],
                            types$0=types[2],
                            tt1=types[1],
                            _bKz_=
                             function(param){return matchTypes(types$0,name,tin,out)};
                           return caml_call2(let$2,assertEqual(pp$13,tt1,tt2),_bKz_)}
                         throw [0,SmartExcept,[0,_TW_,[0,[0,4100400,pp$13(0)],0]]]}
                       return caml_call1(return$4,caml_call2(Stdlib[37],out,types))},
                    _bJ0_=
                     function(typesOut)
                      {function err(message)
                        {throw [0,
                                SmartExcept,
                                [0,
                                 [0,936573133,message],
                                 [0,[0,4100400,pp$13(0)],[0,[0,848053268,line_no],0]]]]}
                       if(typesOut)
                        {if(typesOut[2])return err(cst_Too_many_output_types);
                         var t=typesOut[1];
                         return caml_call1(return$4,t)}
                       return err(cst_Empty_output_types)},
                    _bJ1_=
                     function(types)
                      {return matchTypes
                               (types,michelson[1],michelson[3],michelson[4])},
                    _bJ2_=function(e){return e[2]},
                    _bJO_=
                     caml_call2
                      (let$2,
                       caml_call2
                        (let$2,
                         caml_call1(return$4,caml_call2(Utils_List[20],_bJ2_,exprs)),
                         _bJ1_),
                       _bJ0_);
                   break;
                  case 18:
                   var
                    l=e[2],
                    f=e[1],
                    _bJO_=
                     caml_call2
                      (let$2,
                       fresh_tvar,
                       function(s)
                        {return caml_call2
                                 (let$2,
                                  fresh_tvar,
                                  function(t)
                                   {return caml_call2
                                            (let$2,
                                             fresh_tvar,
                                             function(target)
                                              {function _bKv_(param)
                                                {var e$0=caml_call3(_yy_[9],line_no,e,target);
                                                 function _bKy_(param){return caml_call1(return$4,target)}
                                                 return caml_call2(let$2,add_constraint([5,e$0,l,f]),_bKy_)}
                                               var _bKw_=lambda(s,t),_bKx_=f[2];
                                               return caml_call2
                                                       (let$2,
                                                        assertEqual
                                                         (function(param)
                                                           {return [0,
                                                                    _TX_,
                                                                    [0,[0,771172693,f],[0,[0,848053268,line_no],0]]]},
                                                          _bKx_,
                                                          _bKw_),
                                                        _bKv_)})})});
                   break;
                  case 20:
                   var
                    id$2=e[1],
                    _bJO_=
                     check_var$0
                      (0,cst_Lambda,caml_call2(Stdlib_format[126],_TZ_,id$2));
                   break;
                  case 22:
                   var
                    address=e[3],
                    arg_type=e[2],
                    _bJ3_=
                     function(param)
                      {return caml_call1(return$4,option(contract(arg_type)))},
                    _bJ4_=address[2],
                    _bJO_=
                     caml_call2
                      (let$2,
                       assertEqual
                        (function(param){return [0,[0,771172693,address],0]},
                         _bJ4_,
                         address$0),
                       _bJ3_);
                   break;
                  case 23:
                   var
                    buffer=e[3],
                    length=e[2],
                    offset=e[1],
                    pp$14=
                     function(expr,param)
                      {return [0,
                               _T0_,
                               [0,[0,771172693,expr],[0,[0,848053268,line_no],0]]]},
                    _bJ5_=
                     function(param)
                      {function _bKq_(param)
                        {function _bKu_(param)
                          {return caml_call1(return$4,option(buffer[2]))}
                         return caml_call2(let$2,add_constraint([10,buffer]),_bKu_)}
                       var _bKr_=nat$0(0),_bKs_=length[2];
                       return caml_call2
                               (let$2,
                                assertEqual
                                 (function(_bKt_){return pp$14(length,_bKt_)},_bKs_,_bKr_),
                                _bKq_)},
                    _bJ6_=nat$0(0),
                    _bJ7_=offset[2],
                    _bJO_=
                     caml_call2
                      (let$2,
                       assertEqual
                        (function(_bKp_){return pp$14(offset,_bKp_)},_bJ7_,_bJ6_),
                       _bJ5_);
                   break;
                  case 24:
                   var
                    message=e[2],
                    secret_key=e[1],
                    pp$15=
                     function(e,param)
                      {return [0,
                               _T1_,
                               [0,[0,771172693,e],[0,[0,848053268,line_no],0]]]},
                    _bJ8_=
                     function(param)
                      {function _bKm_(param)
                        {return caml_call1(return$4,signature$0)}
                       var _bKn_=message[2];
                       return caml_call2
                               (let$2,
                                assertEqual
                                 (function(_bKo_){return pp$15(message,_bKo_)},bytes$0,_bKn_),
                                _bKm_)},
                    _bJ9_=secret_key[2],
                    _bJO_=
                     caml_call2
                      (let$2,
                       assertEqual
                        (function(_bKl_){return pp$15(secret_key,_bKl_)},
                         secret_key$0,
                         _bJ9_),
                       _bJ8_);
                   break;
                  case 25:
                   var
                    destination=e[3],
                    amount=e[2],
                    arg=e[1],
                    pp$16=
                     function(param)
                      {return [0,
                               _T3_,
                               [0,
                                [0,172818814,[0,arg,[0,amount,[0,destination,0]]]],
                                [0,_T2_,[0,14832,[0,[0,848053268,line_no],0]]]]]},
                    _bJ__=
                     function(param)
                      {function _bKk_(param)
                        {return caml_call1(return$4,operation)}
                       return caml_call2
                               (let$2,assertEqual(pp$16,amount[2],token),_bKk_)},
                    _bJ$_=contract(arg[2]),
                    _bJO_=
                     caml_call2
                      (let$2,assertEqual(pp$16,destination[2],_bJ$_),_bJ__);
                   break;
                  case 26:
                   var
                    clauses=e[2],
                    scrutinee=e[1],
                    _bJO_=
                     caml_call2
                      (let$2,
                       fresh_tvar,
                       function(result_t)
                        {function _bKd_(row)
                          {function _bKh_(param){return caml_call1(return$4,result_t)}
                           var _bKi_=variant(unknown(0),row),_bKj_=scrutinee[2];
                           return caml_call2
                                   (let$2,
                                    assertEqual(function(param){return _T4_},_bKj_,_bKi_),
                                    _bKh_)}
                         return caml_call2
                                 (let$2,
                                  caml_call2
                                   (map_list$0,
                                    function(param)
                                     {var rhs=param[2],constructor=param[1];
                                      return caml_call2
                                              (let$2,
                                               fresh_tvar,
                                               function(arg_t)
                                                {function _bKe_(param)
                                                  {return caml_call1(return$4,[0,constructor,arg_t])}
                                                 var _bKf_=lambda(arg_t,result_t),_bKg_=rhs[2];
                                                 return caml_call2
                                                         (let$2,
                                                          assertEqual
                                                           (function(param)
                                                             {return [0,_T5_,[0,[0,848053268,line_no],0]]},
                                                            _bKg_,
                                                            _bKf_),
                                                          _bKe_)})},
                                    clauses),
                                  _bKd_)});
                   break;
                  case 27:
                   var
                    name$12=e[1],
                    _bKa_=
                     function(tparameter_lazy)
                      {function _bKb_(param){return caml_call1(return$4,bool$0)}
                       return caml_call2
                               (let$2,
                                caml_call2
                                 (let$2,
                                  fresh_tvar,
                                  function(t_ep)
                                   {var _bKc_=uvariant(name$12,t_ep);
                                    return assertEqual
                                            (function(param)
                                              {return [0,_T6_,[0,[0,848053268,line_no],0]]},
                                             _bKc_,
                                             tparameter_lazy)}),
                                _bKb_)},
                    _bJO_=
                     caml_call2
                      (let$2,
                       check_var$0
                        (0,cst_Self_parameter_lazy$0,cst_parameter_lazy$1),
                       _bKa_);
                   break;
                  default:throw [0,Assert_failure,_TY_]}
                return caml_call2(let$2,_bJO_,_bJM_)}};
         return caml_call2(let$2,caml_call1(_Rn_,ee),_bIQ_)}}
    var check=[0,check_expr_f,check_command_f,Utils_Control[1]];
    function check_command(x){return caml_call1(cata_command(check),x)}
    var check_expr=cata_expr(check);
    function check_contract(param)
     {var
       contract=param[1],
       c=
        map_contract_f
         (check_expr,check_command,Utils_Control[1],Utils_Control[1],contract);
      function _bIN_(tcontract)
       {var _bIO_=contract[9];
        function _bIP_(flag){return check_initial_flag(0,flag)}
        caml_call2(Utils_List[18],_bIP_,_bIO_);
        return caml_call1(return$4,[0,tcontract])}
      return caml_call2(let$2,check_contract_f(0,c),_bIN_)}
    function check_action(param)
     {switch(param[0])
       {case 0:
         var
          show=param[5],
          accept_unknown_types=param[4],
          line_no=param[3],
          contract$0=param[2],
          id=param[1],
          _bIa_=
           function(contract$0)
            {var
              c=contract$0[1],
              match=c[13][1],
              tparameter_full=match[4],
              tparameter=match[1];
             function _bIE_(param)
              {function _bIG_(param)
                {function _bIJ_(param)
                  {return caml_call1
                           (return$4,
                            [0,id,contract$0[1],line_no,accept_unknown_types,show])}
                 var
                  _bIK_=contract$0[1][13][1][5],
                  _bIL_=string_of_contract_id(id);
                 return caml_call2
                         (let$2,
                          add_var
                           (line_no,caml_call2(Stdlib[28],_bIL_,cst_storage$15),_bIK_),
                          _bIJ_)}
               var
                _bIH_=contract(tparameter_full),
                _bII_=string_of_contract_id(id);
               return caml_call2
                       (let$2,
                        add_var(line_no,caml_call2(Stdlib[28],_bII_,cst_full),_bIH_),
                        _bIG_)}
             var _bIF_=contract(tparameter);
             return caml_call2
                     (let$2,
                      add_var(line_no,string_of_contract_id(id),_bIF_),
                      _bIE_)};
         return caml_call2(let$2,check_contract([0,contract$0]),_bIa_);
        case 1:
         var
          line_no$0=param[3],
          expression=param[2],
          id$0=param[1],
          _bIb_=
           function(expression)
            {function _bIC_(param)
              {return caml_call1(return$4,[1,id$0,expression,line_no$0])}
             var _bID_=expression[2];
             return caml_call2
                     (let$2,
                      add_var(line_no$0,string_of_scenario_var(id$0),_bID_),
                      _bIC_)};
         return caml_call2(let$2,caml_call1(check_expr,expression),_bIb_);
        case 2:
         var line_no$1=param[2],id$1=param[1];
         return caml_call1(return$4,[2,id$1,line_no$1]);
        case 3:
         var
          export$0=param[17],
          show$0=param[16],
          message=param[15],
          voting_powers=param[14],
          level=param[13],
          amount=param[12],
          time=param[11],
          chain_id=param[10],
          sender=param[9],
          source=param[8],
          messageClass=param[7],
          title=param[6],
          line_no$2=param[5],
          params=param[4],
          exception=param[3],
          valid=param[2],
          id$2=param[1],
          _bIc_=
           function(valid)
            {function _bIo_(exception)
              {function _bIp_(params)
                {function _bIq_(voting_powers)
                  {function check_aa(param)
                    {if(0 === param[0])
                      {var a=param[1];return caml_call1(return$4,[0,a])}
                     var a$0=param[1];
                     function _bIB_(a){return caml_call1(return$4,[1,a])}
                     return caml_call2(let$2,caml_call1(check_expr,a$0),_bIB_)}
                   function _bIr_(source)
                    {function _bIs_(sender)
                      {function _bIt_(chain_id)
                        {function _bIu_(time)
                          {function _bIv_(amount)
                            {function _bIw_(level)
                              {var id=string_of_contract_id(id$2);
                               function _bIx_(c)
                                {return caml_call2
                                         (let$2,
                                          fresh_tvar,
                                          function(entry)
                                           {function _bIz_(param)
                                             {function pp(param)
                                               {return [0,
                                                        _Ua_,
                                                        [0,
                                                         14832,
                                                         [0,
                                                          [0,937565914,entry],
                                                          [0,
                                                           14832,
                                                           [0,
                                                            _T$_,
                                                            [0,
                                                             14832,
                                                             [0,[0,937565914,params[2]],[0,[0,848053268,line_no$2],0]]]]]]]]}
                                              function _bIA_(param)
                                               {return caml_call1
                                                        (return$4,
                                                         [3,
                                                          id$2,
                                                          valid,
                                                          exception,
                                                          params,
                                                          line_no$2,
                                                          title,
                                                          messageClass,
                                                          source,
                                                          sender,
                                                          chain_id,
                                                          time,
                                                          amount,
                                                          level,
                                                          voting_powers,
                                                          message,
                                                          show$0,
                                                          export$0])}
                                              return caml_call2
                                                      (let$2,assertEqual$1(line_no$2,pp,params[2],entry),_bIA_)}
                                            function pp(param)
                                             {return [0,
                                                      [0,936573133,id],
                                                      [0,
                                                       _Ud_,
                                                       [0,
                                                        [0,937565914,c],
                                                        [0,
                                                         _Uc_,
                                                         [0,
                                                          [0,936573133,message],
                                                          [0,
                                                           _Ub_,
                                                           [0,[0,937565914,entry],[0,[0,848053268,line_no$2],0]]]]]]]]}
                                            return caml_call2
                                                    (let$2,
                                                     assertEqual$1
                                                      (line_no$2,pp,c,contract(uvariant(message,entry))),
                                                     _bIz_)})}
                               var
                                _bIy_=
                                 0 === id$2[0]
                                  ?check_var
                                    (line_no$2,
                                     0,
                                     cst_contract_id,
                                     caml_call2(Stdlib[28],id,cst_full$0))
                                  :check_var(line_no$2,0,cst_contract_id$0,id);
                               return caml_call2(let$2,_bIy_,_bIx_)}
                             return caml_call2
                                     (let$2,caml_call2(map_option,check_expr,level),_bIw_)}
                           return caml_call2(let$2,caml_call1(check_expr,amount),_bIv_)}
                         return caml_call2
                                 (let$2,caml_call2(map_option,check_expr,time),_bIu_)}
                       return caml_call2
                               (let$2,caml_call2(map_option,check_expr,chain_id),_bIt_)}
                     return caml_call2
                             (let$2,caml_call2(map_option,check_aa,sender),_bIs_)}
                   return caml_call2
                           (let$2,caml_call2(map_option,check_aa,source),_bIr_)}
                 return caml_call2
                         (let$2,caml_call1(check_expr,voting_powers),_bIq_)}
               return caml_call2(let$2,caml_call1(check_expr,params),_bIp_)}
             return caml_call2
                     (let$2,caml_call2(map_option,check_expr,exception),_bIo_)};
         return caml_call2(let$2,caml_call1(check_expr,valid),_bIc_);
        case 4:
         var message$0=param[1];return caml_call1(return$4,[4,message$0]);
        case 5:
         var line_no$3=param[3],inner=param[2],tag=param[1];
         return caml_call1(return$4,[5,tag,inner,line_no$3]);
        case 6:
         var
          line_no$4=param[2],
          condition=param[1],
          _bId_=
           function(condition)
            {function pp(param){return [0,_Ue_,[0,[0,848053268,line_no$4],0]]}
             function _bIn_(param)
              {return caml_call1(return$4,[6,condition,line_no$4])}
             return caml_call2
                     (let$2,
                      assertEqual$1(line_no$4,pp,condition[2],bool$0),
                      _bIn_)};
         return caml_call2(let$2,caml_call1(check_expr,condition),_bId_);
        case 7:
         var
          line_no$5=param[5],
          compile=param[4],
          stripStrings=param[3],
          html=param[2],
          expression$0=param[1],
          _bIe_=
           function(expression)
            {return caml_call1
                     (return$4,
                      [7,expression,html,stripStrings,compile,line_no$5])};
         return caml_call2(let$2,caml_call1(check_expr,expression$0),_bIe_);
        case 8:var es=param[1];return caml_call1(return$4,[8,es]);
        case 9:
         var
          baker=param[3],
          line_no$6=param[2],
          id$3=param[1],
          _bIf_=
           function(baker)
            {var id=string_of_contract_id(id$3);
             function _bIk_(param)
              {function pp(param)
                {return [0,_Uf_,[0,[0,937565914,baker[2]],0]]}
               return caml_call2
                       (let$2,
                        get_config$0,
                        function(config)
                         {function _bIl_(param)
                           {return caml_call1(return$4,[9,id$3,line_no$6,baker])}
                          var _bIm_=option(baker_type_of_protocol(config[6]));
                          return caml_call2
                                  (let$2,assertEqual$1(0,pp,baker[2],_bIm_),_bIl_)})}
             return caml_call2
                     (let$2,check_var(line_no$6,0,cst_contract_id$1,id),_bIk_)};
         return caml_call2(let$2,caml_call1(check_expr,baker),_bIf_);
        case 10:
         var
          line_no$7=param[3],
          model_id=param[2],
          id$4=param[1],
          id$5=string_of_dynamic_id(id$4),
          model_id$0=string_of_contract_id(model_id),
          _bIg_=
           function(tcontract)
            {function _bIh_(tstorage)
              {function _bIi_(param)
                {function _bIj_(param)
                  {return caml_call1(return$4,[10,id$4,model_id,line_no$7])}
                 return caml_call2
                         (let$2,
                          add_var
                           (line_no$7,
                            caml_call2(Stdlib[28],id$5,cst_storage$16),
                            tstorage),
                          _bIj_)}
               return caml_call2
                       (let$2,add_var(line_no$7,id$5,tcontract),_bIi_)}
             return caml_call2
                     (let$2,
                      check_var
                       (line_no$7,
                        0,
                        cst_contract_id$2,
                        caml_call2(Stdlib[28],model_id$0,cst_storage$17)),
                      _bIh_)};
         return caml_call2
                 (let$2,
                  check_var(line_no$7,0,cst_contract_id$3,model_id$0),
                  _bIg_);
        default:
         return caml_call2
                 (let$2,
                  get_config$0,
                  function(config)
                   {check_initial_flag(param[2],param[1]);
                    function _bIM_(param$0){return caml_call1(return$4,param)}
                    var config$0=apply_flag(config,param[1]);
                    return caml_call2
                            (let$2,
                             modify$0
                              (function(s){return [0,s[1],s[2],s[3],s[4],config$0,s[6]]}),
                             _bIM_)})}}
    function default_if(condition,line_no,t)
     {var t$0=getRepr(t);
      if
       (typeof t$0
        !==
        "number"
        &&
        8
        ===
        t$0[0]
        &&
        0
        ===
        t$0[1][1][0]
        &&
        condition)
       {var
         _bH__=function(param){return caml_call1(return$4,unit$0)},
         _bH$_=[0,t$0];
        return caml_call2
                (let$2,
                 assertEqual$1
                  (line_no,function(param){return _Ug_},_bH$_,unit$0),
                 _bH__)}
      return caml_call1(return$4,[0,t$0])}
    function is_storage(param)
     {var _bH8_=param[1];
      if(5 === _bH8_[0])
       {var _bH9_=_bH8_[1],switch$0=0;
        if(typeof _bH9_ === "number" || ! (3 === _bH9_[0]))
         switch$0 = 1;
        else
         if(! caml_string_notequal(_bH9_[1],cst_storage$18))return 1}
      return 0}
    var
     f$2=function _bH7_(_bH6_){return _bH7_.fun(_bH6_)},
     default_entry_point=function _bH5_(_bH4_){return _bH5_.fun(_bH4_)},
     default_alg=[];
    caml_update_dummy
     (f$2,
      function(param)
       {var
         c=param[1],
         match=c[13][1],
         tstorage=match[5],
         tparameter_full=match[4],
         tparameter_non_lazy=match[3],
         tparameter_lazy=match[2],
         tparameter=match[1],
         uses_storage=
          exists_contract(1,is_storage,function(param){return 0},c);
        function _bHX_(tstorage)
         {function _bHY_(tparameter)
           {function _bHZ_(entry_points)
             {function _bH0_(global_variables)
               {return caml_call2
                        (let$2,
                         solve_constraints,
                         function(param)
                          {var
                            c$0=
                             [0,
                              c[1],
                              c[2],
                              c[3],
                              c[4],
                              c[5],
                              entry_points,
                              c[7],
                              c[8],
                              c[9],
                              global_variables,
                              c[11],
                              c[12],
                              [0,
                               [0,
                                tparameter,
                                tparameter_lazy,
                                tparameter_non_lazy,
                                tparameter_full,
                                tstorage]]],
                            _bH2_=c$0[3],
                            match=getRepr(tstorage);
                           if(! _bH2_ && typeof match !== "number" && 1 === match[0])
                            {var _bH3_=match[1];
                             if(typeof _bH3_ === "number" && ! _bH3_)
                              {var storage=[0,caml_call3(_yy_[9],0,[5,[0,unit]],unit$0)];
                               return caml_call1
                                       (return$4,
                                        [0,
                                         [0,
                                          c$0[1],
                                          c$0[2],
                                          storage,
                                          c$0[4],
                                          c$0[5],
                                          c$0[6],
                                          c$0[7],
                                          c$0[8],
                                          c$0[9],
                                          c$0[10],
                                          c$0[11],
                                          c$0[12],
                                          c$0[13]]])}}
                           return caml_call1(return$4,[0,c$0])})}
              function f(param)
               {var e=param[2],n=param[1];
                function _bH1_(e){return caml_call1(return$4,[0,n,e])}
                return caml_call2
                        (let$2,caml_call1(cata_texpr(default_alg),e),_bH1_)}
              return caml_call2(let$2,caml_call2(map_list$0,f,c[10]),_bH0_)}
            return caml_call2
                    (let$2,
                     caml_call2(map_list$0,default_entry_point,c[6]),
                     _bHZ_)}
          return caml_call2
                  (let$2,default_if(0 === c[6]?1:0,0,tparameter),_bHY_)}
        return caml_call2(let$2,default_if(1 - uses_storage,0,tstorage),_bHX_)});
    caml_update_dummy
     (default_entry_point,
      function(ep)
       {function _bHV_(body)
         {return caml_call1
                  (return$4,
                   [0,ep[1],ep[2],ep[3],ep[4],ep[5],ep[6],body,ep[8]])}
        var _bHW_=ep[7];
        return caml_call2
                (let$2,caml_call1(cata_tcommand(default_alg),_bHW_),_bHV_)});
    function f_texpr(line_no,et,e)
     {function _bHT_(e)
       {if(21 === e[0])
         {var
           storage=e[4],
           balance=e[3],
           baker=e[2],
           ct=e[1],
           _bHU_=
            function(ct)
             {return caml_call1
                      (return$4,
                       caml_call3
                        (_yy_[9],line_no,[21,ct[1],baker,balance,storage],et))};
          return caml_call2(let$2,caml_call1(f$2,[0,ct]),_bHU_)}
        return caml_call1(return$4,caml_call3(_yy_[9],line_no,e,et))}
      return caml_call2(let$2,caml_call1(_Rn_,e),_bHT_)}
    function f_tcommand(line_no,ct,c)
     {if(12 === c[0])
       {var c2=c[3],c1=c[2],x=c[1];
        return caml_call2
                (let$2,
                 c1,
                 function(c1)
                  {return caml_call2
                           (let$2,
                            c2,
                            function(c2)
                             {return caml_call1
                                      (return$4,caml_call3(_yy_[10],line_no,[12,x,c1,c2],ct))})})}
      function _bHS_(c)
       {return caml_call1(return$4,caml_call3(_yy_[10],line_no,c,ct))}
      return caml_call2(let$2,caml_call1(_Rm_,c),_bHS_)}
    caml_update_dummy
     (default_alg,[0,f_texpr,f_tcommand,function(t){return t}]);
    function default_action(c)
     {if(0 === c[0])
       {var
         contract=c[2],
         _bHR_=
          function(y)
           {return caml_call1(return$4,[0,c[1],y[1],c[3],c[4],c[5]])};
        return caml_call2(let$2,caml_call1(f$2,[0,contract]),_bHR_)}
      return caml_call1(return$4,c)}
    function run_with(config,f,vars,x)
     {return run$0(caml_call1(f,x),[0,0,vars,0,0,config,0])}
    function exec_with(config,f,vars,x){return run_with(config,f,vars,x)[1]}
    function check_lambda$0(config,vars)
     {var _bHN_=mk_env(vars);
      function _bHO_(param)
       {var
         clean_stack=param[4],
         body=param[3],
         name=param[2],
         id=param[1],
         body$0=check_command(body),
         e=[0,id,name,body$0,clean_stack,0,0];
        function _bHQ_(e)
         {return caml_call2
                  (let$2,
                   solve_constraints,
                   function(param){return caml_call1(return$4,e)})}
        return caml_call2(let$2,check_lambda(0,e),_bHQ_)}
      return function(_bHP_){return exec_with(config,_bHO_,_bHN_,_bHP_)}}
    function check_expr$0(config,vars)
     {var _bHJ_=mk_env(vars);
      function _bHK_(e)
       {function _bHM_(e)
         {return caml_call2
                  (let$2,
                   solve_constraints,
                   function(param){return caml_call1(return$4,e)})}
        return caml_call2(let$2,caml_call1(check_expr,e),_bHM_)}
      return function(_bHL_){return exec_with(config,_bHK_,_bHJ_,_bHL_)}}
    function check_command$0(config,vars)
     {var _bHF_=mk_env(vars);
      function _bHG_(c)
       {function _bHI_(c)
         {return caml_call2
                  (let$2,
                   solve_constraints,
                   function(param){return caml_call1(return$4,c)})}
        return caml_call2(let$2,check_command(c),_bHI_)}
      return function(_bHH_){return exec_with(config,_bHG_,_bHF_,_bHH_)}}
    function check_contract$0(config)
     {function _bHB_(c)
       {function _bHD_(c)
         {return caml_call2
                  (let$2,
                   solve_constraints,
                   function(param)
                    {function _bHE_(c)
                      {return caml_call2
                               (let$2,
                                solve_constraints,
                                function(param){return caml_call1(return$4,c)})}
                     return caml_call2(let$2,caml_call1(f$2,c),_bHE_)})}
        return caml_call2(let$2,check_contract(c),_bHD_)}
      return function(_bHC_){return exec_with(config,_bHB_,empty_env,_bHC_)}}
    function check_scenario(config,s)
     {var
       _bHx_=
        run_with
         (config,
          function(s)
           {function _bHy_(actions)
             {return caml_call2
                      (let$2,
                       solve_constraints,
                       function(param)
                        {function _bHA_(actions)
                          {return caml_call1(return$4,[0,s[1],actions,s[3],s[4]])}
                         return caml_call2
                                 (let$2,caml_call1(map_list(default_action),actions),_bHA_)})}
            var _bHz_=s[2];
            return caml_call2
                    (let$2,caml_call1(map_list(check_action),_bHz_),_bHy_)},
          empty_env,
          s),
       match=_bHx_[2],
       warnings=match[6],
       x=_bHx_[1];
      return [0,x,warnings]}
    var
     Smartml_Checker=
      [0,
       check_command$0,
       check_expr$0,
       check_lambda$0,
       check_contract$0,
       check_scenario];
    caml_register_global(6485,Smartml_Checker,"Smartml__Checker");
    var
     pp$5=function _bHw_(_bHv_){return _bHw_.fun(_bHv_)},
     show$5=function _bHu_(_bHt_){return _bHu_.fun(_bHt_)};
    caml_update_dummy(pp$5,function(fmt){return caml_call1(Untyped[5],fmt)});
    caml_update_dummy
     (show$5,function(x){return caml_call3(Stdlib_format[127],_Uh_,pp$5,x)});
    function add(line_no,x,y){return [0,[7,_Ui_,x,y],line_no]}
    function mul(line_no,x,y){return [0,[7,_Uj_,x,y],line_no]}
    function mul_overloaded(line_no,x,y){return [0,[7,_Uk_,x,y],line_no]}
    function lsl(line_no,x,y){return [0,[3,4,x,y],line_no]}
    function lsr(line_no,x,y){return [0,[3,3,x,y],line_no]}
    function e_mod(line_no,x,y){return [0,[7,_Ul_,x,y],line_no]}
    function ediv(line_no,x,y){return [0,[7,_Um_,x,y],line_no]}
    function div(line_no,x,y){return [0,[7,_Un_,x,y],line_no]}
    function sub(line_no,x,y){return [0,[7,_Uo_,x,y],line_no]}
    function b_or(line_no,e1,e2){return [0,[7,_Up_,e1,e2],line_no]}
    function b_and(line_no,e1,e2){return [0,[7,_Uq_,e1,e2],line_no]}
    function xor(line_no,e1,e2){return [0,[7,_Ur_,e1,e2],line_no]}
    function le(line_no,x,y){return [0,[7,_Us_,x,y],line_no]}
    function lt(line_no,x,y){return [0,[7,_Ut_,x,y],line_no]}
    function ge(line_no,x,y){return [0,[7,_Uu_,x,y],line_no]}
    function gt(line_no,x,y){return [0,[7,_Uv_,x,y],line_no]}
    function eq(line_no,x,y){return [0,[7,_Uw_,x,y],line_no]}
    function neq(line_no,x,y){return [0,[7,_Ux_,x,y],line_no]}
    function e_max(line_no,x,y){return [0,[7,_Uy_,x,y],line_no]}
    function e_min(line_no,x,y){return [0,[7,_Uz_,x,y],line_no]}
    function storage(line_no){return [0,_UA_,line_no]}
    function attr(line_no,x,name){return [0,[6,[7,name],x],line_no]}
    function variant$0(line_no,name,x){return [0,[6,[8,name],x],line_no]}
    function isVariant(line_no,name,x){return [0,[6,[9,name],x],line_no]}
    function variant_arg(line_no,arg_name)
     {return [0,[5,[6,arg_name]],line_no]}
    function openVariant(line_no,name,x,missing_message)
     {return [0,[9,name,x,missing_message],line_no]}
    function updateMap(line_no,map,key,value)
     {return [0,[8,2,map,key,value],line_no]}
    function params(line_no){return [0,_UB_,line_no]}
    function local(line_no,n){return [0,[5,[3,n]],line_no]}
    function meta_local(line_no,n){return [0,[5,[4,n]],line_no]}
    function operations(line_no){return local(line_no,cst_operations$5)}
    function global(line_no,n){return [0,[5,[5,n]],line_no]}
    function item(line_no,items,key,default_value,missing_message)
     {return [0,[10,items,key,default_value,missing_message],line_no]}
    function contains(line_no,items,member)
     {return [0,[7,1,items,member],line_no]}
    function sum(line_no,l){return [0,[6,10,l],line_no]}
    function range(line_no,a,b,step){return [0,[8,1,a,b,step],line_no]}
    function cons(line_no,x,l){return [0,[7,4,x,l],line_no]}
    function cst$244(line_no,x){return [0,[5,[0,x]],line_no]}
    function bounded$0(line_no,x){return [0,[5,[2,x]],line_no]}
    function unbounded(line_no,x){return [0,[6,16,x],line_no]}
    var unit$2=cst$244(0,unit);
    function type_annotation(line_no,e,t){return [0,[6,[6,t],e],line_no]}
    function has_entry_point(line_no,ep_name){return [0,[27,ep_name],line_no]}
    function record$0(line_no,entries){return [0,[12,entries],line_no]}
    function build_list(line_no,elems){return [0,[13,elems],line_no]}
    function build_map(line_no,big,entries)
     {return [0,[14,big,entries],line_no]}
    function build_set(line_no,entries){return [0,[15,entries],line_no]}
    function hash_key(line_no,e){return [0,[1,19,e],line_no]}
    function blake2b(line_no,e){return [0,[1,20,e],line_no]}
    function sha256(line_no,e){return [0,[1,21,e],line_no]}
    function sha512(line_no,e){return [0,[1,22,e],line_no]}
    function keccak(line_no,e){return [0,[1,23,e],line_no]}
    function sha3(line_no,e){return [0,[1,24,e],line_no]}
    function pack(e)
     {var _bHr_=[6,5,e];return function(_bHs_){return [0,_bHr_,_bHs_]}}
    function unpack(line_no,e,t){return [0,[6,[5,t],e],line_no]}
    function check_signature(line_no,message,signature,pk)
     {return [0,[4,4,message,signature,pk],line_no]}
    function account_of_seed(seed,line_no){return [0,[5,[9,seed]],line_no]}
    function make_signature(line_no,secret_key,message,message_format)
     {return [0,[24,secret_key,message,message_format],line_no]}
    function scenario_var(line_no,id){return [0,[5,[15,id]],line_no]}
    function to_constant(line_no,e){return [0,[6,6,e],line_no]}
    function split_tokens(line_no,mutez,quantity,total)
     {return [0,[8,0,mutez,quantity,total],line_no]}
    var now=[0,_UC_,0],chain_id$1=[0,_UD_,0];
    function add_seconds(line_no,t,s){return [0,[7,5,t,s],line_no]}
    function notE(line_no,x){return [0,[1,13,x],line_no]}
    function absE(line_no,x){return [0,[1,4,x],line_no]}
    function to_int(line_no,x){return [0,[6,11,x],line_no]}
    function is_nat(line_no,x){return [0,[1,7,x],line_no]}
    function negE(line_no,x){return [0,[6,4,x],line_no]}
    function signE(line_no,x){return [0,[6,8,x],line_no]}
    function slice(line_no,offset,length,buffer)
     {return [0,[23,offset,length,buffer],line_no]}
    function concat_list(line_no,l){return [0,[6,0,l],line_no]}
    function size(line_no,s){return [0,[6,9,s],line_no]}
    function iterator(line_no,name){return [0,[5,[7,name]],line_no]}
    function match_cons(line_no,name){return [0,[5,[8,name]],line_no]}
    var
     balance=[0,_UE_,0],
     sender=[0,_UF_,0],
     source=[0,_UG_,0],
     amount=[0,_UH_,0],
     level=[0,_UI_,0],
     total_voting_power=[0,_UJ_,0],
     self=[0,_UK_,0];
    function self_entry_point(line_no,name)
     {return [0,[0,[0,[0,name]]],line_no]}
    var self_address=[0,_UL_,0];
    function to_address(line_no,e)
     {var _bHp_=e[1];
      if(0 === _bHp_[0])
       {var _bHq_=_bHp_[1],switch$0=0;
        if(typeof _bHq_ === "number" || ! (0 === _bHq_[0]))
         switch$0 = 1;
        else
         if(! _bHq_[1])return [0,_UM_,line_no]}
      return [0,[6,1,e],line_no]}
    function implicit_account(line_no,e){return [0,[6,2,e],line_no]}
    function voting_power(line_no,e){return [0,[6,15,e],line_no]}
    function listRev(line_no,e){return [0,[6,3,e],line_no]}
    function listItems(line_no,e,rev){return [0,[6,[2,rev],e],line_no]}
    function listKeys(line_no,e,rev){return [0,[6,[3,rev],e],line_no]}
    function listValues(line_no,e,rev){return [0,[6,[4,rev],e],line_no]}
    function listElements(line_no,e,rev){return [0,[6,[1,rev],e],line_no]}
    function contract$0(line_no,entry_point,arg_type,address)
     {return [0,[22,entry_point,arg_type,address],line_no]}
    function tuple$0(line_no,es){return [0,[11,es],line_no]}
    function proj(line_no,i,e){return [0,[6,[0,i],e],line_no]}
    function first(line_no)
     {var _bHn_=0;return function(_bHo_){return proj(line_no,_bHn_,_bHo_)}}
    function second(line_no)
     {var _bHl_=1;return function(_bHm_){return proj(line_no,_bHl_,_bHm_)}}
    function none$0(line_no){return variant$0(line_no,cst_None$56,unit$2)}
    function some$1(line_no,e){return variant$0(line_no,cst_Some$55,e)}
    function left$1(line_no,l){return variant$0(line_no,cst_Left$6,l)}
    function right$1(line_no,r){return variant$0(line_no,cst_Right$6,r)}
    function inline_michelson(line_no,michelson,exprs)
     {return [0,[17,michelson,exprs],line_no]}
    function map_function(line_no,l,f){return [0,[18,f,l],line_no]}
    function call_lambda(line_no,lambda,parameter)
     {return [0,[7,2,lambda,parameter],line_no]}
    function apply_lambda(line_no,lambda,parameter)
     {return [0,[7,3,lambda,parameter],line_no]}
    function lambda$0(line_no,id,name,body,clean_stack)
     {return [0,[19,[0,id,name,body,clean_stack,0,0]],line_no]}
    function lambdaParams(line_no,id,name){return [0,[20,id,name],line_no]}
    function create_contract(line_no,baker,balance,storage,param)
     {var contract=param[1];
      return [0,[21,contract,baker,balance,storage],line_no]}
    function sapling_empty_state$0(memo){return [0,[0,[1,memo]],0]}
    function sapling_verify_update(line_no,state,transaction)
     {return [0,[16,state,transaction],line_no]}
    function set_delegate(line_no,e){return [0,[6,7,e],line_no]}
    function transfer(line_no,arg,amount,destination)
     {return [0,[25,arg,amount,destination],line_no]}
    function contract_address(line_no,entry_point,e)
     {return [0,[5,[10,e,entry_point]],line_no]}
    function contract_typed(line_no,entry_point,e)
     {return [0,[5,[14,e,entry_point]],line_no]}
    function contract_data(line_no,e){return [0,[5,[13,e]],line_no]}
    function contract_balance(line_no,e){return [0,[5,[11,e]],line_no]}
    function contract_baker(line_no,e){return [0,[5,[12,e]],line_no]}
    function ematch(line_no,scrutinee,clauses)
     {return [0,[26,scrutinee,clauses],line_no]}
    function eif(line_no,cond,a,b){return [0,[8,4,cond,a,b],line_no]}
    function allow_lambda_full_stack(x)
     {var line_no=x[2],e=x[1];
      if(19 === e[0])
       {var params=e[1];
        return [0,
                [19,[0,params[1],params[2],params[3],0,params[5],params[6]]],
                line_no]}
      return x}
    function test_ticket(line_no,ticketer,content,amount)
     {return [0,[8,5,ticketer,content,amount],line_no]}
    function build_ticket(line_no,content,amount)
     {return [0,[7,6,content,amount],line_no]}
    function read_ticket(line_no,ticket){return [0,[6,12,ticket],line_no]}
    function split_ticket(line_no,ticket,decomposition)
     {return [0,[7,7,ticket,decomposition],line_no]}
    function join_tickets(line_no,tickets){return [0,[6,13,tickets],line_no]}
    function pairing_check(line_no,pairs){return [0,[6,14,pairs],line_no]}
    function get_and_update(line_no,map,key,value)
     {return [0,[8,3,map,key,value],line_no]}
    function getOpt(line_no,m,k){return [0,[7,0,m,k],line_no]}
    function of_value(v)
     {var _bHf_=v[1],line_no=0;
      switch(_bHf_[0])
       {case 0:var l=_bHf_[1];return cst$244(line_no,l);
        case 1:var l$0=_bHf_[1];return bounded$0(line_no,l$0);
        case 2:var x=_bHf_[1];return [0,[5,[1,x]],line_no];
        case 3:
         var
          entries=_bHf_[2],
          _bHg_=
           function(param)
            {var l=param[2],fld=param[1];return [0,fld,of_value(l)]};
         return [0,[12,caml_call2(Stdlib_list[17],_bHg_,entries)],line_no];
        case 4:
         var arg=_bHf_[4],lbl=_bHf_[3];
         return [0,[6,[8,lbl],of_value(arg)],line_no];
        case 5:
         var elems=_bHf_[2];
         return [0,[13,caml_call2(Stdlib_list[17],of_value,elems)],line_no];
        case 6:
         var elems$0=_bHf_[2];
         return build_set
                 (line_no,caml_call2(Stdlib_list[17],of_value,elems$0));
        case 7:
         var
          entries$0=_bHf_[4],
          big=_bHf_[3],
          _bHh_=
           function(param)
            {var v=param[2],k=param[1],_bHk_=of_value(v);
             return [0,of_value(k),_bHk_]};
         return [0,
                 [14,big,caml_call2(Stdlib_list[17],_bHh_,entries$0)],
                 line_no];
        case 8:
         var vs=_bHf_[1];
         return tuple$0(line_no,caml_call2(Stdlib_list[17],of_value,vs));
        case 9:
         var
          args=_bHf_[2],
          match=_bHf_[1],
          body=match[3],
          name=match[2],
          id=match[1],
          _bHi_=
           lambda$0(line_no,id,name,caml_call1(erase_types_command,body),1),
          _bHj_=function(f,arg){return apply_lambda(line_no,f,of_value(arg))};
         return caml_call3(Stdlib_list[22],_bHj_,_bHi_,args);
        case 10:return caml_call1(Stdlib[2],cst_TODO_expr_of_value_Operati);
        default:
         var
          amount=_bHf_[3],
          content=_bHf_[2],
          ticketer=_bHf_[1],
          ticketer$0=cst$244(line_no,[7,ticketer,0]),
          content$0=of_value(content),
          amount$0=cst$244(line_no,int$0(amount));
         return test_ticket(line_no,ticketer$0,content$0,amount$0)}}
    var
     Smartml_Expr=
      [0,
       pp$5,
       show$5,
       amount,
       balance,
       chain_id$1,
       level,
       now,
       self,
       sender,
       source,
       total_voting_power,
       absE,
       implicit_account,
       is_nat,
       left$1,
       negE,
       notE,
       right$1,
       signE,
       some$1,
       sum,
       to_int,
       voting_power,
       add_seconds,
       map_function,
       call_lambda,
       apply_lambda,
       lsl,
       lsr,
       cons,
       add,
       mul,
       mul_overloaded,
       e_mod,
       ediv,
       div,
       sub,
       xor,
       le,
       lt,
       ge,
       gt,
       eq,
       neq,
       b_or,
       b_and,
       e_max,
       e_min,
       contains,
       sapling_verify_update,
       build_ticket,
       split_ticket,
       storage,
       operations,
       attr,
       variant$0,
       isVariant,
       variant_arg,
       openVariant,
       updateMap,
       params,
       local,
       meta_local,
       global,
       item,
       range,
       cst$244,
       bounded$0,
       unbounded,
       type_annotation,
       has_entry_point,
       record$0,
       build_list,
       build_map,
       build_set,
       hash_key,
       blake2b,
       sha256,
       sha512,
       keccak,
       sha3,
       pack,
       unpack,
       check_signature,
       account_of_seed,
       make_signature,
       scenario_var,
       to_constant,
       split_tokens,
       slice,
       concat_list,
       size,
       iterator,
       match_cons,
       self_entry_point,
       self_address,
       listRev,
       listItems,
       listKeys,
       listValues,
       listElements,
       contract$0,
       tuple$0,
       proj,
       first,
       second,
       none$0,
       inline_michelson,
       lambda$0,
       create_contract,
       lambdaParams,
       transfer,
       set_delegate,
       contract_data,
       ematch,
       to_address,
       contract_address,
       contract_typed,
       contract_balance,
       contract_baker,
       eif,
       allow_lambda_full_stack,
       sapling_empty_state$0,
       test_ticket,
       read_ticket,
       join_tickets,
       pairing_check,
       get_and_update,
       getOpt,
       unit$2,
       of_value];
    caml_register_global(6486,Smartml_Expr,"Smartml__Expr");
    function ifte(line_no,c,t,e){return [0,[3,c,t,e],line_no]}
    function ifteSome(line_no,c,t,e)
     {return ifte(line_no,isVariant(line_no,cst_Some$56,c),t,e)}
    function mk_match(line_no,scrutinee,cases)
     {return [0,[4,scrutinee,cases],line_no]}
    function mk_match_cons(line_no,expr,id,ok_match,ko_match)
     {return [0,[7,expr,id,ok_match,ko_match],line_no]}
    function mk_match_product(line_no,s,p,c){return [0,[5,s,p,c],line_no]}
    function mk_modify_product(line_no,s,p,c){return [0,[6,s,p,c],line_no]}
    function sp_failwith(line_no,message){return [0,[1,message],line_no]}
    function never$0(line_no,message){return [0,[0,message],line_no]}
    function verify(line_no,e,message){return [0,[2,e,message],line_no]}
    function forGroup(line_no,name,e,c){return [0,[13,name,e,c],line_no]}
    function whileLoop(line_no,e,l){return [0,[14,e,l],line_no]}
    function delItem(line_no,x,y){return [0,[10,x,y],line_no]}
    function updateSet(line_no,x,y,add){return [0,[11,x,y,add],line_no]}
    function set$4(line_no,x,y)
     {var x$0=x,y$0=y;
      for(;;)
       {var _bG5_=x$0[1],switch$0=0;
        switch(_bG5_[0])
         {case 5:
           var _bG6_=_bG5_[1],switch$1=0;
           if(typeof _bG6_ !== "number" && 3 === _bG6_[0])
            {var _bG7_=_bG6_[1];
             if(! caml_string_notequal(_bG7_,cst_operations$6))
              return [0,[9,x$0,y$0],line_no];
             switch$1 = caml_string_notequal(_bG7_,cst_storage$19)?1:1}
           if(! switch$1)switch$0 = 1;
           break;
          case 6:
           var switch$2=0,_bHe_=_bG5_[1];
           if(typeof _bHe_ !== "number" && 7 === _bHe_[0])switch$2 = 1;
           if(! switch$2)switch$0 = 1;
           break;
          case 10:break;
          default:switch$0 = 1}
        if(switch$0)
         throw [0,
                SmartExcept,
                [0,
                 _UO_,
                 [0,
                  14832,
                  [0,[0,33867591,x$0],[0,_UN_,[0,[0,848053268,line_no],0]]]]]];
        var _bG8_=y$0[1];
        if(8 === _bG8_[0] && 2 === _bG8_[1])
         {var _bG9_=_bG8_[4][1];
          if(6 === _bG9_[0])
           {var _bG__=_bG9_[1],switch$3=0;
            if(typeof _bG__ === "number" || ! (8 === _bG__[0]))
             switch$3 = 1;
            else
             {var _bG$_=_bG__[1],_bHa_=_bG8_[3],_bHb_=_bG8_[2];
              if(caml_string_notequal(_bG$_,cst_None$57))
               {if(! caml_string_notequal(_bG$_,cst_Some$57))
                 {var v=_bG9_[2];
                  if(caml_equal(x$0,_bHb_))
                   {var x$1=item(line_no,_bHb_,_bHa_,0,0),x$0=x$1,y$0=v;
                    continue}}}
              else
               {var _bHc_=_bG9_[2][1];
                if(5 === _bHc_[0])
                 {var _bHd_=_bHc_[1],switch$4=0;
                  if(typeof _bHd_ !== "number" && 0 === _bHd_[0])
                   if(typeof _bHd_[1] === "number")
                    {if(caml_equal(x$0,_bHb_))return delItem(line_no,x$0,_bHa_);
                     switch$4 = 1}
                   else
                    switch$4 = 1}}}}}
        return [0,[9,x$0,y$0],line_no]}}
    function defineLocal(line_no,name,e){return [0,[8,name,e],line_no]}
    function bind$3(line_no,x,c1,c2)
     {var x$0=x,c1$0=c1,c2$0=c2;
      for(;;)
       {var _bG4_=c1$0[1];
        if(12 === _bG4_[0])
         {var
           c1b=_bG4_[3],
           c1a=_bG4_[2],
           y=_bG4_[1],
           c2$1=bind$3(line_no,x$0,c1b,c2$0),
           x$0=y,
           c1$0=c1a,
           c2$0=c2$1;
          continue}
        return [0,[12,x$0,c1$0,c2$0],line_no]}}
    function result(line_no,x){return [0,[15,x],line_no]}
    function seq$0(line_no,commands)
     {var line_no$0=line_no,commands$0=commands;
      for(;;)
       {var switch$0=0;
        if(! line_no$0 && commands$0)
         {var c=commands$0[1],line_no$1=c[2];switch$0 = 1}
        if(! switch$0)var line_no$1=line_no$0;
        if(commands$0)
         {var _bG0_=commands$0[1];
          if(commands$0[2])
           {var _bG1_=_bG0_[1];
            if(15 === _bG1_[0])
             {var _bG2_=_bG1_[1][1];
              if(5 === _bG2_[0])
               {var _bG3_=_bG2_[1],switch$1=0;
                if(typeof _bG3_ === "number" || ! (0 === _bG3_[0]))
                 switch$1 = 1;
                else
                 if(typeof _bG3_[1] === "number")
                  {var
                    commands$1=commands$0[2],
                    line_no$0=line_no$1,
                    commands$0=commands$1;
                   continue}}}
            var xs=commands$0[2];
            return bind$3(line_no$1,0,_bG0_,seq$0(line_no$1,xs))}
          return _bG0_}
        return result(line_no$1,cst$244(line_no$1,unit))}}
    function setType(line_no,e,t){return [0,[17,e,t],line_no]}
    function comment(line_no,s){return [0,[16,s],line_no]}
    function set_result_type(line_no,c,t){return [0,[18,c,t],line_no]}
    function set_type(line_no,e,t){return [0,[17,e,t],line_no]}
    function trace(line_no,x){return [0,[19,x],line_no]}
    function set_entry_point(line_no,n,e){return [0,[20,n,e],line_no]}
    var
     Smartml_Command=
      [0,
       ifte,
       ifteSome,
       mk_match,
       sp_failwith,
       never$0,
       verify,
       forGroup,
       whileLoop,
       delItem,
       updateSet,
       set$4,
       defineLocal,
       bind$3,
       seq$0,
       setType,
       result,
       mk_match_cons,
       mk_match_product,
       mk_modify_product,
       comment,
       set_result_type,
       set_type,
       trace,
       set_entry_point];
    caml_register_global(6487,Smartml_Command,"Smartml__Command");
    var equal$7=function _bGZ_(_bGY_){return _bGZ_.fun(_bGY_)};
    caml_update_dummy(equal$7,function(x){return caml_call1(equal$6,x)});
    var
     pp$6=function _bGX_(_bGW_){return _bGX_.fun(_bGW_)},
     show$6=function _bGV_(_bGU_){return _bGV_.fun(_bGU_)};
    caml_update_dummy(pp$6,function(fmt){return caml_call1(pp_value,fmt)});
    caml_update_dummy
     (show$6,function(x){return caml_call3(Stdlib_format[127],_UP_,pp$6,x)});
    function literal$1(l){return [0,[0,l]]}
    function bounded$1(x){return [0,[1,x]]}
    function int$4(x){return literal$1(int$0(x))}
    function nat$1(x){return literal$1(nat(x))}
    function intOrNat$1(t,x){return literal$1([1,x,t])}
    function mutez$0(i){return literal$1([6,i])}
    function timestamp$1(i){return literal$1([5,i])}
    function int_of_value(v)
     {var _bGS_=v[1];
      if(0 === _bGS_[0])
       {var _bGT_=_bGS_[1];
        if(typeof _bGT_ !== "number" && 1 === _bGT_[0])
         {var i=_bGT_[1];return caml_call1(Big_int[38],i)}}
      throw [0,SmartExcept,[0,_UR_,[0,[0,-991563951,v],_UQ_]]]}
    function bool_of_value(v)
     {var _bGQ_=v[1];
      if(0 === _bGQ_[0])
       {var _bGR_=_bGQ_[1];
        if(typeof _bGR_ !== "number" && 0 === _bGR_[0])
         {var x=_bGR_[1];return x}}
      throw [0,SmartExcept,[0,_UT_,[0,[0,-991563951,v],_US_]]]}
    function compare$6(param,_bGP_)
     {var v2=_bGP_[1],v1=param[1];
      return caml_call3(compare_value_f,compare$6,v1,v2)}
    function lt$0(v1,v2){return compare$6(v1,v2) < 0?1:0}
    function le$0(v1,v2){return compare$6(v1,v2) <= 0?1:0}
    function openV(x){return x[1]}
    function string$4(s){return literal$1([2,s])}
    function bytes$3(s){return literal$1([3,s])}
    function bls12_381_g1$1(s){return literal$1([15,s])}
    function bls12_381_g2$1(s){return literal$1([16,s])}
    function bls12_381_fr$1(s){return literal$1([17,s])}
    function chain_id$2(s){return literal$1([4,s])}
    function unString$0(pp,x)
     {var _bGN_=x[1];
      if(0 === _bGN_[0])
       {var _bGO_=_bGN_[1];
        if(typeof _bGO_ !== "number" && 2 === _bGO_[0])
         {var s=_bGO_[1];return s}}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_UU_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function operation$0(op){return [0,[10,op]]}
    function unSaplingTransaction(pp,x)
     {var _bGL_=x[1];
      if(0 === _bGL_[0])
       {var _bGM_=_bGL_[1];
        if(typeof _bGM_ !== "number" && 14 === _bGM_[0])
         {var match=_bGM_[1],amount=match[3],target=match[2],source=match[1];
          return [0,source,target,amount]}}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_UV_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unSaplingState(pp,x)
     {var _bGJ_=x[1];
      if(0 === _bGJ_[0])
       {var _bGK_=_bGJ_[1];
        if(typeof _bGK_ !== "number" && 13 === _bGK_[0])
         {var match=_bGK_[1],elements=match[3],memo=match[2];
          return [0,memo,elements]}}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_UW_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function same_type(t1,t2)
     {var _bGI_=caml_call1(normalize$0,t2);
      return caml_call2(equal$5,caml_call1(normalize$0,t1),_bGI_)}
    function list$1(l,t)
     {function _bGH_(v)
       {if(same_type(t,type_of_value(v)))return 0;
        throw [0,Assert_failure,_UX_]}
      caml_call2(Utils_List[18],_bGH_,l);
      return [0,[5,t,l]]}
    function ticket$0(ticketer,content,amount)
     {return [0,[11,ticketer,content,amount]]}
    var
     VSet=caml_call1(Utils_Set[1],[0,compare$4]),
     VMap=caml_call1(Utils_Map[1],[0,compare$4]);
    function set$5(telement,xs)
     {function _bGF_(v)
       {if(same_type(telement,type_of_value(v)))return 0;
        throw [0,Assert_failure,_UY_]}
      caml_call2(Utils_List[18],_bGF_,xs);
      var _bGG_=caml_call1(VSet[36],xs),xs$0=caml_call1(VSet[22],_bGG_);
      return [0,[6,telement,xs$0]]}
    function map$5(big,tkey,tvalue,xs)
     {function _bGC_(param)
       {var v=param[2],k=param[1];
        if(1 - same_type(tkey,type_of_value(k)))
         throw [0,
                SmartExcept,
                [0,
                 _U1_,
                 [0,
                  14832,
                  [0,
                   [0,937565914,type_of_value(k)],
                   [0,
                    14832,
                    [0,
                     _U0_,
                     [0,
                      14832,
                      [0,
                       [0,937565914,tkey],
                       [0,14832,[0,_UZ_,[0,[0,-991563951,k],0]]]]]]]]]]];
        var _bGE_=1 - same_type(tvalue,type_of_value(v));
        if(_bGE_)
         throw [0,
                SmartExcept,
                [0,
                 _U4_,
                 [0,
                  14832,
                  [0,
                   [0,937565914,type_of_value(k)],
                   [0,
                    14832,
                    [0,
                     _U3_,
                     [0,
                      14832,
                      [0,
                       [0,937565914,tkey],
                       [0,14832,[0,_U2_,[0,[0,-991563951,k],0]]]]]]]]]]];
        return _bGE_}
      caml_call2(Utils_List[18],_bGC_,xs);
      var _bGD_=caml_call1(VMap[43],xs),xs$0=caml_call1(VMap[40],_bGD_);
      return [0,[7,tkey,tvalue,big,xs$0]]}
    var unit$3=literal$1(unit);
    function bool$2(x){return literal$1([0,x])}
    function unBool$0(pp,x)
     {var _bGA_=x[1];
      if(0 === _bGA_[0])
       {var _bGB_=_bGA_[1];
        if(typeof _bGB_ !== "number" && 0 === _bGB_[0])
         {var b=_bGB_[1];return b}}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_U5_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unList(pp,x)
     {var _bGz_=x[1];
      if(5 === _bGz_[0]){var l=_bGz_[2];return l}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_U6_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unMap(pp,x)
     {var _bGy_=x[1];
      if(7 === _bGy_[0]){var l=_bGy_[4];return l}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_U7_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unSet(pp,x)
     {var _bGx_=x[1];
      if(6 === _bGx_[0]){var l=_bGx_[2];return l}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_U8_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unOption(v)
     {var _bGv_=v[1];
      if(4 === _bGv_[0])
       {var _bGw_=_bGv_[3];
        if(! caml_string_notequal(_bGw_,cst_None$58))return 0;
        if(! caml_string_notequal(_bGw_,cst_Some$58))
         {var arg=_bGv_[4];return [0,arg]}}
      throw [0,Assert_failure,_U9_]}
    function getItem(pp,items,key,match,missing_message)
     {var _bGp_=items[1];
      if(7 === _bGp_[0])
       {var map=_bGp_[4],_bGq_=caml_call3(Utils_List[82],[0,equal$6],key,map);
        if(_bGq_){var v=_bGq_[1];return v}
        if(match)
         {var v$0=match[1],_bGr_=caml_obj_tag(v$0);
          return 250 === _bGr_
                  ?v$0[1]
                  :246 === _bGr_?caml_call1(CamlinternalLazy[2],v$0):v$0}
        if(missing_message)
         {var
           missing_message$0=missing_message[1],
           _bGt_=caml_obj_tag(missing_message$0),
           _bGs_=0,
           _bGu_=
            250 === _bGt_
             ?missing_message$0[1]
             :246 === _bGt_
               ?caml_call1(CamlinternalLazy[2],missing_message$0)
               :missing_message$0;
          throw [0,SmartExcept,[0,[0,-991563951,_bGu_],_bGs_]]}
        throw [0,
               SmartExcept,
               [0,
                _Vd_,
                [0,
                 [0,-991563951,key],
                 [0,
                  _Vc_,
                  [0,
                   [0,-991563951,items],
                   [0,_Vb_,[0,[0,936573133,caml_call1(pp,0)],0]]]]]]]}
      throw [0,
             SmartExcept,
             [0,
              _Va_,
              [0,[0,-991563951,items],[0,_U$_,[0,[0,-991563951,key],_U__]]]]]}
    function unInt$0(pp,x)
     {var _bGn_=x[1];
      if(0 === _bGn_[0])
       {var _bGo_=_bGn_[1];
        if(typeof _bGo_ !== "number" && 1 === _bGo_[0])
         {var i=_bGo_[1];return i}}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_Ve_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unMutez(pp,x)
     {var _bGl_=x[1];
      if(0 === _bGl_[0])
       {var _bGm_=_bGl_[1];
        if(typeof _bGm_ !== "number" && 6 === _bGm_[0])
         {var b=_bGm_[1];return b}}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_Vf_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unBls12_381(param)
     {var _bGj_=param[1];
      if(0 === _bGj_[0])
       {var _bGk_=_bGj_[1];
        if(typeof _bGk_ !== "number")
         switch(_bGk_[0])
          {case 15:var g1=_bGk_[1];return g1;
           case 16:var g2=_bGk_[1];return g2;
           case 17:var fr=_bGk_[1];return fr
           }}
      return caml_call1(Stdlib[2],cst_Not_a_BLS12_type)}
    function unTimestamp(pp,x)
     {var _bGh_=x[1];
      if(0 === _bGh_[0])
       {var _bGi_=_bGh_[1];
        if(typeof _bGi_ !== "number" && 5 === _bGi_[0])
         {var t=_bGi_[1];return t}}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_Vg_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unChain_id(pp,x)
     {var _bGf_=x[1];
      if(0 === _bGf_[0])
       {var _bGg_=_bGf_[1];
        if(typeof _bGg_ !== "number" && 4 === _bGg_[0])
         {var b=_bGg_[1];return b}}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_Vh_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unAddress(pp,x)
     {var _bGd_=x[1];
      if(0 === _bGd_[0])
       {var _bGe_=_bGd_[1];
        if(typeof _bGe_ !== "number" && 7 === _bGe_[0])
         {var b=_bGe_[1];return b}}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_Vi_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function unKey_hash(pp,x)
     {var _bGb_=x[1];
      if(0 === _bGb_[0])
       {var _bGc_=_bGb_[1];
        if(typeof _bGc_ !== "number")
         switch(_bGc_[0])
          {case 10:var b=_bGc_[1];return b;
           case 11:var b$0=_bGc_[1];return b$0
           }}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_Vj_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function un_baker(param)
     {var _bF9_=param[1];
      if(4 === _bF9_[0])
       {var _bF__=_bF9_[3];
        if(! caml_string_notequal(_bF__,cst_None$59))return 0;
        if(! caml_string_notequal(_bF__,cst_Some$59))
         {var _bF$_=_bF9_[4][1];
          if(0 === _bF$_[0])
           {var _bGa_=_bF$_[1];
            if(typeof _bGa_ !== "number")
             switch(_bGa_[0])
              {case 10:var b=_bGa_[1];return [0,b];
               case 11:var b$0=_bGa_[1];return [0,b$0]
               }}}}
      throw [0,Assert_failure,_Vk_]}
    function plus_inner(P,x,y)
     {var _bFK_=x[1],_bFL_=y[1];
      if(0 === _bFK_[0])
       {var _bFM_=_bFK_[1],switch$0=0;
        if(typeof _bFM_ === "number")
         switch$0 = 1;
        else
         switch(_bFM_[0])
          {case 1:
            if(0 === _bFL_[0])
             {var _bFN_=_bFL_[1];
              if(typeof _bFN_ !== "number" && 1 === _bFN_[0])
               {var j=_bFN_[1],i=_bFM_[1],match=getRepr(type_of_value(x));
                if(typeof match !== "number" && 4 === match[0])
                 {var isNat=match[1];
                  return intOrNat$1(isNat,caml_call2(Big_int[5],i,j))}
                throw [0,Assert_failure,_Vm_]}}
            break;
           case 2:
            if(0 === _bFL_[0])
             {var _bFO_=_bFL_[1];
              if(typeof _bFO_ !== "number" && 2 === _bFO_[0])
               {var y$0=_bFO_[1],x$0=_bFM_[1];
                return string$4(caml_call2(Stdlib[28],x$0,y$0))}}
            break;
           case 3:
            if(0 === _bFL_[0])
             {var _bFP_=_bFL_[1];
              if(typeof _bFP_ !== "number" && 3 === _bFP_[0])
               {var y$1=_bFP_[1],x$1=_bFM_[1];
                return bytes$3(caml_call2(Stdlib[28],x$1,y$1))}}
            break;
           case 6:
            if(0 === _bFL_[0])
             {var _bFQ_=_bFL_[1];
              if(typeof _bFQ_ !== "number" && 6 === _bFQ_[0])
               {var y$2=_bFQ_[1],x$2=_bFM_[1];
                return mutez$0(caml_call2(Big_int[5],x$2,y$2))}}
            break;
           case 15:
            if(0 === _bFL_[0])
             {var _bFR_=_bFL_[1];
              if(typeof _bFR_ !== "number" && 15 === _bFR_[0])
               {var y$3=_bFR_[1],x$3=_bFM_[1];
                try
                 {var
                   _bFU_=caml_call1(Utils_Misc[4][1],y$3),
                   _bFV_=caml_call1(Utils_Misc[4][1],x$3),
                   _bFW_=caml_call2(P[1][2],_bFV_,_bFU_),
                   _bFT_=_bFW_}
                catch(e)
                 {e = caml_wrap_exception(e);
                  var
                   _bFS_=caml_call1(Base_Exn[9],e),
                   _bFT_=caml_call3(Stdlib_printf[9],Stdlib[2],_Vn_,_bFS_)}
                return bls12_381_g1$1(caml_call1(Utils_Misc[4][2],_bFT_))}}
            break;
           case 16:
            if(0 === _bFL_[0])
             {var _bFX_=_bFL_[1];
              if(typeof _bFX_ !== "number" && 16 === _bFX_[0])
               {var y$4=_bFX_[1],x$4=_bFM_[1];
                try
                 {var
                   _bF0_=caml_call1(Utils_Misc[4][1],y$4),
                   _bF1_=caml_call1(Utils_Misc[4][1],x$4),
                   _bF2_=caml_call2(P[1][5],_bF1_,_bF0_),
                   _bFZ_=_bF2_}
                catch(e)
                 {e = caml_wrap_exception(e);
                  var
                   _bFY_=caml_call1(Base_Exn[9],e),
                   _bFZ_=caml_call3(Stdlib_printf[9],Stdlib[2],_Vo_,_bFY_)}
                return bls12_381_g2$1(caml_call1(Utils_Misc[4][2],_bFZ_))}}
            break;
           case 17:
            if(0 === _bFL_[0])
             {var _bF3_=_bFL_[1];
              if(typeof _bF3_ !== "number" && 17 === _bF3_[0])
               {var y$5=_bF3_[1],x$5=_bFM_[1];
                try
                 {var
                   _bF6_=caml_call1(Utils_Misc[4][1],y$5),
                   _bF7_=caml_call1(Utils_Misc[4][1],x$5),
                   _bF8_=caml_call2(P[1][8],_bF7_,_bF6_),
                   _bF5_=_bF8_}
                catch(e)
                 {e = caml_wrap_exception(e);
                  var
                   _bF4_=caml_call1(Base_Exn[9],e),
                   _bF5_=caml_call3(Stdlib_printf[9],Stdlib[2],_Vp_,_bF4_)}
                return bls12_381_fr$1(caml_call1(Utils_Misc[4][2],_bF5_))}}
            break;
           default:switch$0 = 1}}
      throw [0,
             SmartExcept,
             [0,_Vl_,[0,[0,-991563951,x],[0,[0,-991563951,y],0]]]]}
    function plus(primitives,x,y){return plus_inner(primitives,x,y)}
    function sub$0(x,y)
     {var _bFF_=x[1],_bFG_=y[1];
      if(0 === _bFF_[0])
       {var _bFH_=_bFF_[1],switch$0=0;
        if(typeof _bFH_ === "number")
         switch$0 = 1;
        else
         switch(_bFH_[0])
          {case 1:
            if(0 === _bFG_[0])
             {var _bFI_=_bFG_[1];
              if(typeof _bFI_ !== "number" && 1 === _bFI_[0])
               {var j=_bFI_[1],i=_bFH_[1];
                return int$4(caml_call2(Big_int[8],i,j))}}
            break;
           case 6:
            if(0 === _bFG_[0])
             {var _bFJ_=_bFG_[1];
              if(typeof _bFJ_ !== "number" && 6 === _bFJ_[0])
               {var y$0=_bFJ_[1],x$0=_bFH_[1];
                return mutez$0(caml_call2(Big_int[8],x$0,y$0))}}
            break;
           default:switch$0 = 1}}
      return caml_call1(Stdlib[2],cst_Invalid_operation_with_dif)}
    function mul$0(P,x,y)
     {var _bFb_=x[1],_bFc_=y[1];
      if(0 === _bFb_[0])
       {var _bFd_=_bFb_[1],switch$0=0;
        if(typeof _bFd_ === "number")
         switch$0 = 1;
        else
         switch(_bFd_[0])
          {case 1:
            if(0 === _bFc_[0])
             {var _bFe_=_bFc_[1],_bFf_=_bFd_[1],switch$1=0;
              if(typeof _bFe_ !== "number")
               switch(_bFe_[0])
                {case 1:
                  var j=_bFe_[1],match=getRepr(type_of_value(x));
                  if(typeof match !== "number" && 4 === match[0])
                   {var isNat=match[1];
                    return intOrNat$1(isNat,caml_call2(Big_int[10],_bFf_,j))}
                  throw [0,Assert_failure,_Vq_];
                 case 6:
                  var i=_bFf_,x$0=_bFe_[1];switch$0 = 3;switch$1 = 1;break;
                 case 17:
                  var fr=_bFe_[1],i$0=_bFf_;switch$0 = 2;switch$1 = 1;break
                 }}
            break;
           case 6:
            if(0 === _bFc_[0])
             {var _bFl_=_bFc_[1],switch$2=0;
              if(typeof _bFl_ !== "number" && 1 === _bFl_[0])
               {var i=_bFl_[1],x$0=_bFd_[1];switch$0 = 3;switch$2 = 1}}
            break;
           case 15:
            if(0 === _bFc_[0])
             {var _bFm_=_bFc_[1];
              if(typeof _bFm_ !== "number" && 17 === _bFm_[0])
               {var fr$0=_bFm_[1],x$1=_bFd_[1];
                try
                 {var
                   _bFp_=caml_call1(Utils_Misc[4][1],fr$0),
                   _bFq_=caml_call1(Utils_Misc[4][1],x$1),
                   _bFr_=caml_call2(P[1][3],_bFq_,_bFp_),
                   _bFo_=_bFr_}
                catch(e)
                 {e = caml_wrap_exception(e);
                  var
                   _bFn_=caml_call1(Base_Exn[9],e),
                   _bFo_=caml_call3(Stdlib_printf[9],Stdlib[2],_Vs_,_bFn_)}
                return bls12_381_g1$1(caml_call1(Utils_Misc[4][2],_bFo_))}}
            break;
           case 16:
            if(0 === _bFc_[0])
             {var _bFs_=_bFc_[1];
              if(typeof _bFs_ !== "number" && 17 === _bFs_[0])
               {var fr$1=_bFs_[1],x$2=_bFd_[1];
                try
                 {var
                   _bFv_=caml_call1(Utils_Misc[4][1],fr$1),
                   _bFw_=caml_call1(Utils_Misc[4][1],x$2),
                   _bFx_=caml_call2(P[1][6],_bFw_,_bFv_),
                   _bFu_=_bFx_}
                catch(e)
                 {e = caml_wrap_exception(e);
                  var
                   _bFt_=caml_call1(Base_Exn[9],e),
                   _bFu_=caml_call3(Stdlib_printf[9],Stdlib[2],_Vt_,_bFt_)}
                return bls12_381_g2$1(caml_call1(Utils_Misc[4][2],_bFu_))}}
            break;
           case 17:
            if(0 === _bFc_[0])
             {var _bFy_=_bFc_[1],_bFz_=_bFd_[1],switch$3=0;
              if(typeof _bFy_ === "number")
               switch$3 = 1;
              else
               switch(_bFy_[0])
                {case 1:var fr=_bFz_,i$0=_bFy_[1];switch$0 = 2;break;
                 case 17:
                  var fr$2=_bFy_[1];
                  try
                   {var
                     _bFC_=caml_call1(Utils_Misc[4][1],fr$2),
                     _bFD_=caml_call1(Utils_Misc[4][1],_bFz_),
                     _bFE_=caml_call2(P[1][10],_bFD_,_bFC_),
                     _bFB_=_bFE_}
                  catch(e)
                   {e = caml_wrap_exception(e);
                    var
                     _bFA_=caml_call1(Base_Exn[9],e),
                     _bFB_=caml_call3(Stdlib_printf[9],Stdlib[2],_Vu_,_bFA_)}
                  return bls12_381_fr$1(caml_call1(Utils_Misc[4][2],_bFB_));
                 default:switch$3 = 1}}
            break;
           default:switch$0 = 1}
        switch(switch$0)
         {case 1:break;
          case 0:break;
          case 2:
           try
            {var
              _bFi_=caml_call1(Big_int[33],i$0),
              _bFj_=caml_call1(Utils_Misc[4][1],fr),
              _bFk_=caml_call2(P[1][9],_bFj_,_bFi_),
              _bFh_=_bFk_}
           catch(e)
            {e = caml_wrap_exception(e);
             var
              _bFg_=caml_call1(Base_Exn[9],e),
              _bFh_=caml_call3(Stdlib_printf[9],Stdlib[2],_Vr_,_bFg_)}
           return bls12_381_fr$1(caml_call1(Utils_Misc[4][2],_bFh_));
          default:return mutez$0(caml_call2(Big_int[10],x$0,i))}}
      return caml_call1(Stdlib[2],cst_Invalid_operation_with_dif$0)}
    function shift_left(x,y)
     {var _bE7_=x[1],_bE8_=y[1];
      if(0 === _bE7_[0])
       {var _bE9_=_bE7_[1],switch$0=0;
        if(typeof _bE9_ === "number" || ! (1 === _bE9_[0]))
         switch$0 = 1;
        else
         if(0 === _bE8_[0])
          {var _bE__=_bE8_[1];
           if(typeof _bE__ !== "number" && 1 === _bE__[0])
            {var
              j=_bE__[1],
              i=_bE9_[1],
              _bE$_=caml_call1(Utils_Bigint[5],1000000);
             if(1 < caml_call2(Utils_Bigint[2],j,_bE$_))
              throw [0,
                     SmartExcept,
                     [0,
                      _Vw_,
                      [0,[0,-991563951,x],[0,_Vv_,[0,[0,-991563951,y],0]]]]];
             var _bFa_=caml_call1(Big_int[38],j);
             return nat$1(caml_call2(Big_int[53],i,_bFa_))}}}
      return caml_call1(Stdlib[2],cst_Invalid_operation_with_dif$1)}
    function shift_right(x,y)
     {var _bE1_=x[1],_bE2_=y[1];
      if(0 === _bE1_[0])
       {var _bE3_=_bE1_[1],switch$0=0;
        if(typeof _bE3_ === "number" || ! (1 === _bE3_[0]))
         switch$0 = 1;
        else
         if(0 === _bE2_[0])
          {var _bE4_=_bE2_[1];
           if(typeof _bE4_ !== "number" && 1 === _bE4_[0])
            {var
              j=_bE4_[1],
              i=_bE3_[1],
              _bE5_=caml_call1(Utils_Bigint[5],1000000);
             if(1 < caml_call2(Utils_Bigint[2],j,_bE5_))
              throw [0,
                     SmartExcept,
                     [0,
                      _Vy_,
                      [0,[0,-991563951,x],[0,_Vx_,[0,[0,-991563951,y],0]]]]];
             var _bE6_=caml_call1(Big_int[38],j);
             return nat$1(caml_call2(Big_int[54],i,_bE6_))}}}
      return caml_call1(Stdlib[2],cst_Invalid_operation_with_dif$2)}
    function xor$0(x,y)
     {var _bEW_=x[1],_bEX_=y[1];
      if(0 === _bEW_[0])
       {var _bEY_=_bEW_[1],switch$0=0;
        if(typeof _bEY_ === "number")
         switch$0 = 1;
        else
         switch(_bEY_[0])
          {case 0:
            if(0 === _bEX_[0])
             {var _bEZ_=_bEX_[1];
              if(typeof _bEZ_ !== "number" && 0 === _bEZ_[0])
               {var j=_bEZ_[1],i=_bEY_[1];return bool$2(i !== j?1:0)}}
            break;
           case 1:
            if(0 === _bEX_[0])
             {var _bE0_=_bEX_[1];
              if(typeof _bE0_ !== "number" && 1 === _bE0_[0])
               {var j$0=_bE0_[1],i$0=_bEY_[1];
                return nat$1(caml_call2(Big_int[52],i$0,j$0))}}
            break;
           default:switch$0 = 1}}
      return caml_call1(Stdlib[2],cst_Invalid_xor_operation_with)}
    function e_mod$0(x,y)
     {var _bES_=x[1],_bET_=y[1];
      if(0 === _bES_[0])
       {var _bEU_=_bES_[1],switch$0=0;
        if(typeof _bEU_ === "number" || ! (1 === _bEU_[0]))
         switch$0 = 1;
        else
         if(0 === _bET_[0])
          {var _bEV_=_bET_[1];
           if(typeof _bEV_ !== "number" && 1 === _bEV_[0])
            {var j=_bEV_[1],i=_bEU_[1],match=getRepr(type_of_value(x));
             if(typeof match !== "number" && 4 === match[0])
              {var isNat=match[1];
               return intOrNat$1(isNat,caml_call2(Big_int[16],i,j))}
             throw [0,Assert_failure,_Vz_]}}}
      return caml_call1(Stdlib[2],cst_Invalid_operation_with_dif$3)}
    function div_inner(x,y)
     {var _bEO_=x[1],_bEP_=y[1];
      if(0 === _bEO_[0])
       {var _bEQ_=_bEO_[1],switch$0=0;
        if(typeof _bEQ_ === "number" || ! (1 === _bEQ_[0]))
         switch$0 = 1;
        else
         if(0 === _bEP_[0])
          {var _bER_=_bEP_[1];
           if(typeof _bER_ !== "number" && 1 === _bER_[0])
            {var y$0=_bER_[1],x$0=_bEQ_[1];
             return nat$1(caml_call2(Big_int[15],x$0,y$0))}}}
      return caml_call1(Stdlib[2],cst_Invalid_operation_with_dif$4)}
    function div$0(x,y){return div_inner(x,y)}
    function minus(x,y)
     {var match=x[1],match$0=y[1];
      if(0 === match[0])
       {var _bEK_=match[1],switch$0=0;
        if(typeof _bEK_ === "number")
         switch$0 = 1;
        else
         switch(_bEK_[0])
          {case 1:
            if(0 === match$0[0])
             {var _bEL_=match$0[1];
              if(typeof _bEL_ !== "number" && 1 === _bEL_[0])
               {var y$0=_bEL_[1],x$0=_bEK_[1];
                return int$4(caml_call2(Big_int[8],x$0,y$0))}}
            break;
           case 5:
            if(0 === match$0[0])
             {var _bEM_=match$0[1];
              if(typeof _bEM_ !== "number" && 5 === _bEM_[0])
               {var y$1=_bEM_[1],x$1=_bEK_[1];
                return int$4(caml_call2(Big_int[8],x$1,y$1))}}
            break;
           case 6:
            if(0 === match$0[0])
             {var _bEN_=match$0[1];
              if(typeof _bEN_ !== "number" && 6 === _bEN_[0])
               {var y$2=_bEN_[1],x$2=_bEK_[1];
                return mutez$0(caml_call2(Big_int[8],x$2,y$2))}}
            break;
           default:switch$0 = 1}}
      return caml_call1(Stdlib[2],cst_Invalid_operation)}
    function key_hash$1(s){return literal$1([10,s])}
    function baker_hash$1(h){return literal$1([11,h])}
    function key$1(s){return literal$1([8,s])}
    function secret_key$1(s){return literal$1([9,s])}
    function signature$1(s){return literal$1([12,s])}
    function record$1(layout,l){return l?[0,[3,layout,l]]:unit$3}
    function record_comb(l)
     {if(l)
       {var
         _bEI_=function(_bEJ_){return _bEJ_[1]},
         layout=comb_layout(-57574468,caml_call2(Utils_List[20],_bEI_,l));
        return record$1(layout,l)}
      return unit$3}
    function tuple$1(vs){return [0,[8,vs]]}
    function untuple(pp,x)
     {var _bEH_=x[1];
      if(8 === _bEH_[0]){var vs=_bEH_[1];return vs}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_VA_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function un_record(param)
     {var _bEG_=param[1];
      if(3 === _bEG_[0]){var bs=_bEG_[2];return bs}
      return caml_call1(Stdlib[2],cst_unRecord)}
    function variant_with_type(no_check,line_no,name,x,t)
     {var match=view_variant(t);
      if(match)
       {var
         match$0=match[1],
         row=match$0[2],
         layout=match$0[1],
         _bEC_=get(layout),
         layout$0=caml_call2(Utils_Option[50],_VB_,_bEC_),
         vt=type_of_value(x),
         err=
          function(message,t$0)
           {var
             _bED_=
              [0,
               _VC_,
               [0,[0,937565914,t],[0,14832,[0,[0,848053268,line_no],0]]]];
            if(t$0)
             var
              t$1=t$0[1],
              _bEE_=
               [0,
                [0,937565914,vt],
                [0,_VE_,[0,14832,[0,[0,937565914,t$1],_VD_]]]];
            else
             var _bEE_=0;
            var _bEF_=caml_call2(Stdlib[37],_bEE_,_bED_);
            throw [0,
                   SmartExcept,
                   caml_call2
                    (Stdlib[37],
                     [0,
                      [0,936573133,message],
                      [0,
                       14832,
                       [0,
                        [0,936573133,name],
                        [0,
                         _VH_,
                         [0,[0,-991563951,x],[0,_VG_,[0,[0,937565914,vt],_VF_]]]]]]],
                     _bEF_)]};
        if(0 === no_check)
         {var match$1=caml_call3(Utils_List[82],0,name,row);
          if(match$1)
           {var t$0=match$1[1];
            if(1 - same_type(vt,t$0))
             err(cst_Variant_type_error_in_fiel,[0,t$0])}
          else
           err(cst_Variant_type_missing_field,0)}
        return [0,[4,layout$0,row,name,x]]}
      throw [0,Assert_failure,_VI_]}
    function none$1(t)
     {var row=[0,[0,cst_None$60,unit$0],[0,[0,cst_Some$60,t],0]];
      function _bEA_(_bEB_){return _bEB_[1]}
      var
       layout=
        default_layout_of_row(1,caml_call2(Utils_List[20],_bEA_,row));
      return [0,[4,layout,row,cst_None$61,unit$3]]}
    function some$2(x)
     {var
       tx=type_of_value(x),
       row=[0,[0,cst_None$62,unit$0],[0,[0,cst_Some$61,tx],0]];
      function _bEy_(_bEz_){return _bEz_[1]}
      var
       layout=
        default_layout_of_row(1,caml_call2(Utils_List[20],_bEy_,row));
      return [0,[4,layout,row,cst_Some$62,x]]}
    function option$1(t)
     {var _bEx_=none$1(t);return caml_call2(Utils_Option[12],_bEx_,some$2)}
    function ediv$0(x,y)
     {function ediv(x,y,a_t,b_t,a_f,b_f)
       {if(caml_call2(Big_int[24],Big_int[1],y))return none$1(pair(a_t,b_t));
        var _bEw_=[0,caml_call1(b_f,caml_call2(Big_int[16],x,y)),0];
        return some$2
                (tuple$1
                  ([0,caml_call1(a_f,caml_call2(Big_int[15],x,y)),_bEw_]))}
      var _bEn_=x[1],_bEo_=y[1];
      if(0 === _bEn_[0])
       {var _bEp_=_bEn_[1],switch$0=0;
        if(typeof _bEp_ === "number")
         switch$0 = 1;
        else
         switch(_bEp_[0])
          {case 1:
            if(0 === _bEo_[0])
             {var _bEq_=_bEo_[1];
              if(typeof _bEq_ !== "number" && 1 === _bEq_[0])
               {var
                 y$0=_bEq_[1],
                 x$0=_bEp_[1],
                 match=getRepr(type_of_value(x)),
                 match$0=getRepr(type_of_value(y));
                if
                 (typeof match
                  !==
                  "number"
                  &&
                  4
                  ===
                  match[0]
                  &&
                  typeof match$0
                  !==
                  "number"
                  &&
                  4
                  ===
                  match$0[0])
                 {var
                   isNat2=match$0[1],
                   isNat1=match[1],
                   match$1=get(isNat1),
                   match$2=get(isNat2),
                   switch$1=0;
                  if(match$1 && match$1[1] && match$2 && match$2[1])
                   {var _bEr_=1;switch$1 = 1}
                  if(! switch$1)var _bEr_=0;
                  if(_bEr_)
                   {var _bEs_=nat$0(0);
                    return ediv(x$0,y$0,nat$0(0),_bEs_,nat$1,nat$1)}
                  var _bEt_=nat$0(0);
                  return ediv(x$0,y$0,int$1(0),_bEt_,int$4,nat$1)}
                throw [0,Assert_failure,_VK_]}}
            break;
           case 6:
            if(0 === _bEo_[0])
             {var _bEu_=_bEo_[1],_bEv_=_bEp_[1];
              if(typeof _bEu_ !== "number")
               switch(_bEu_[0])
                {case 1:
                  var y$1=_bEu_[1];
                  return ediv(_bEv_,y$1,token,token,mutez$0,mutez$0);
                 case 6:
                  var y$2=_bEu_[1];
                  return ediv(_bEv_,y$2,nat$0(0),token,nat$1,mutez$0)
                 }}
            break;
           default:switch$0 = 1}}
      throw [0,SmartExcept,_VJ_]}
    function intXor(a,b)
     {var match=a[1],match$0=b[1];
      if(0 === match[0])
       {var switch$0=0,_bEl_=match[1];
        if(typeof _bEl_ === "number" || ! (1 === _bEl_[0]))
         switch$0 = 1;
        else
         if(0 === match$0[0])
          {var _bEm_=match$0[1];
           if(typeof _bEm_ !== "number" && 1 === _bEm_[0])
            throw [0,Assert_failure,_VL_]}}
      return caml_call1(Stdlib[2],cst_Invalid_intXor_operation)}
    function address$1(entry_point,s){return literal$1([7,s,entry_point])}
    function contract$1(entry_point,address,type)
     {return [0,[2,[0,address,entry_point,type]]]}
    function cons$0(x,l)
     {var
       match=caml_call1(normalize$0,type_of_value(l)),
       _bEj_=match[1],
       switch$0=0;
      if(typeof _bEj_ !== "number" && 2 === _bEj_[0])
       {if(1 === _bEj_[1])
         {var t=_bEj_[2];
          if(same_type(t,type_of_value(x)))
           {var _bEk_=l[1];
            if(5 === _bEk_[0])
             {var l$0=_bEk_[2],t$0=_bEk_[1];
              if(same_type(t$0,type_of_value(x)))return [0,[5,t$0,[0,x,l$0]]];
              throw [0,Assert_failure,_VN_]}
            return caml_call1(Stdlib[2],cst_Type_error_list)}
          throw [0,Assert_failure,_VO_]}
        switch$0 = 1}
      throw [0,Assert_failure,_VM_]}
    var
     lens_list=
      [0,
       function(param)
        {var _bEi_=param[1];
         if(5 === _bEi_[0])
          {var focus=_bEi_[2],t=_bEi_[1];
           return [0,focus,function(focus){return list$1(focus,t)}]}
         return caml_call1(Stdlib[2],cst_lens_list)}];
    function lens_list_nth(n){return symbol$0(lens_list,nth(n))}
    var
     lens_map=
      [0,
       function(param)
        {var _bEh_=param[1];
         if(7 === _bEh_[0])
          {var focus=_bEh_[4],big=_bEh_[3],tvalue=_bEh_[2],tkey=_bEh_[1];
           return [0,
                   focus,
                   function(focus){return map$5(big,tkey,tvalue,focus)}]}
         return caml_call1(Stdlib[2],cst_lens_map)}];
    function lens_map_at(key){return symbol$0(lens_map,assoc(equal$6,key))}
    var
     lens_set=
      [0,
       function(param)
        {var _bEg_=param[1];
         if(6 === _bEg_[0])
          {var focus=_bEg_[2],telement=_bEg_[1];
           return [0,focus,function(focus){return set$5(telement,focus)}]}
         return caml_call1(Stdlib[2],cst_lens_set)}];
    function lens_set_at(elem)
     {return symbol$0(lens_set,sorted_list(equal$6,elem))}
    var
     lens_record=
      [0,
       function(param)
        {var _bEe_=param[1];
         if(3 === _bEe_[0])
          {var focus=_bEe_[2],layout=_bEe_[1];
           return [0,focus,function(_bEf_){return record$1(layout,_bEf_)}]}
         return caml_call1(Stdlib[2],cst_lens_map$0)}];
    function lens_record_at(attr)
     {return symbol$0(lens_record,assoc(caml_string_equal,attr))}
    function checkType(t,v){return 0}
    function zero_of_type(t)
     {var match=getRepr(t),switch$0=0;
      if(typeof match === "number")
       return secret_key$1(cst$245);
      else
       switch(match[0])
        {case 1:
          var _bD__=match[1];
          if(typeof _bD__ === "number")
           switch(_bD__)
            {case 0:return unit$3;
             case 1:return bool$2(0);
             case 4:return mutez$0(Big_int[1]);
             case 5:return string$4(cst$246);
             case 6:return bytes$3(cst$247);
             case 7:return chain_id$2(cst$248);
             case 8:return timestamp$1(Big_int[1]);
             case 9:return address$1(0,cst$249);
             case 10:return key$1(cst$250);
             case 11:return key_hash$1(cst$251);
             case 12:return key_hash$1(cst$252);
             case 13:return signature$1(cst$253);
             case 14:return caml_call1(Stdlib[2],cst_zero_of_type_operation);
             case 15:return caml_call1(Stdlib[2],cst_zero_of_type_never);
             case 16:return bls12_381_g1$1(cst$254);
             case 17:return bls12_381_g2$1(cst$255);
             case 18:return bls12_381_fr$1(cst$256)
             }
          break;
         case 2:
          switch(match[1])
           {case 0:break;
            case 1:var t$0=match[2];return list$1(0,t$0);
            case 2:var telement=match[2];return set$5(telement,0);
            case 3:switch$0 = 1;break;
            default:
             var t$1=match[2],_bD$_=caml_call1(Utils_Bigint[5],0);
             return ticket$0(cst$257,zero_of_type(t$1),_bD$_)}
          break;
         case 3:
          var _bEa_=match[1];
          if(typeof _bEa_ === "number")
           {if(_bEa_)
             {var tvalue=match[3],tkey=match[2];
              return map$5(2 === _bEa_?1:0,tkey,tvalue,0)}
            switch$0 = 1}
          break;
         case 4:
          var isNat=match[1],match$0=intType(isNat);
          return 3900609 === match$0
                  ?nat$1(Big_int[1])
                  :785140586 <= match$0?int$4(Big_int[1]):int$4(Big_int[1]);
         case 5:
          var cases=match[2],match$1=get(cases);
          if(match$1)
           {var _bEb_=match$1[1][2];
            if(_bEb_){var case$0=_bEb_[1];return literal$1(case$0)}
            throw [0,Assert_failure,_VR_]}
          throw [0,Assert_failure,_VS_];
         case 6:
          var row=match[2],layout=match[1],match$2=get(layout);
          if(match$2)
           {var
             layout$0=match$2[1],
             _bEc_=
              function(param)
               {var t=param[2],lbl=param[1];return [0,lbl,zero_of_type(t)]};
            return record$1
                    (layout$0,caml_call1(caml_call1(Utils_List[20],_bEc_),row))}
          throw [0,Assert_failure,_VT_];
         case 7:
          var _bEd_=match[2];
          if(_bEd_)
           {var match$3=_bEd_[1],t0=match$3[2],cons=match$3[1];
            return variant_with_type(0,0,cons,zero_of_type(t0),t)}
          return caml_call1(Stdlib[2],cst_zero_of_type_empty_variant);
         case 9:
          var ts=match[1];
          return tuple$1(caml_call2(Utils_List[20],zero_of_type,ts));
         case 10:return caml_call1(Stdlib[2],cst_zero_of_type_sapling_state);
         case 11:return caml_call1(Stdlib[2],cst_zero_of_type_sapling_trans);
         default:return caml_call1(Stdlib[2],cst_zero_of_type_unknown)}
      if(switch$0)throw [0,SmartExcept,[0,_VQ_,[0,[0,937565914,t],0]]];
      throw [0,Assert_failure,_VP_]}
    function nextId(prefix)
     {var ids=[0,0];
      return function(param)
       {ids[1]++;return caml_call3(Stdlib_printf[4],_VU_,prefix,ids[1])}}
    function closure_init(l){return [0,[9,l,0]]}
    function closure_apply(v,x)
     {var _bD9_=v[1];
      if(9 === _bD9_[0])
       {var args=_bD9_[2],l=_bD9_[1];return [0,[9,l,[0,x,args]]]}
      return caml_call1(Stdlib[2],cst_closure_apply_not_a_closur)}
    function unclosure(pp,x)
     {var _bD8_=x[1];
      if(9 === _bD8_[0]){var args=_bD8_[2],l=_bD8_[1];return [0,l,args]}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_VV_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function project_literals(proj,v)
     {var Printer=get_by_language(0);
      function aux(acc,path,v)
       {var acc$0=acc,path$0=path,v$0=v;
        for(;;)
         {var _bD1_=v$0[1];
          switch(_bD1_[0])
           {case 2:return acc$0;
            case 3:
             var
              l$0=_bD1_[2],
              _bD2_=
               function(acc,param)
                {var v=param[2],f=param[1];return aux(acc,[0,f,path$0],v)};
             return caml_call3(Utils_List[25],_bD2_,acc$0,l$0);
            case 4:
             var
              v$1=_bD1_[4],
              f=_bD1_[3],
              path$1=[0,f,path$0],
              path$0=path$1,
              v$0=v$1;
             continue;
            case 7:
             var
              l$2=_bD1_[4],
              _bD4_=
               function(acc,param)
                {var
                  v=param[2],
                  f=param[1],
                  _bD7_=[0,caml_call4(Printer[4],0,0,0,f),path$0];
                 return aux(aux(acc,[0,cst_key$4,path$0],f),_bD7_,v)};
             return caml_call3(Utils_List[25],_bD4_,acc$0,l$2);
            case 8:
             var _bD5_=_bD1_[1];
             if(_bD5_)
              {var _bD6_=_bD5_[2];
               if(_bD6_ && ! _bD6_[2])
                {var
                  s=_bD6_[1],
                  f$0=_bD5_[1],
                  acc$1=aux(acc$0,[0,cst_fst$0,path$0],f$0),
                  path$2=[0,cst_snd$0,path$0],
                  acc$0=acc$1,
                  path$0=path$2,
                  v$0=s;
                 continue}}
             return caml_call1(Stdlib[2],cst_project_literals_TODO_n_tu);
            case 9:return acc$0;
            case 10:return acc$0;
            case 11:var v$2=_bD1_[2],v$0=v$2;continue;
            case 0:
            case 1:
             var l=_bD1_[1],match=caml_call1(proj,l);
             if(match){var a=match[1];return [0,[0,a,path$0],acc$0]}
             return acc$0;
            default:
             var l$1=_bD1_[2],_bD3_=function(acc,v){return aux(acc,path$0,v)};
             return caml_call3(Utils_List[25],_bD3_,acc$0,l$1)}}}
      var _bD0_=aux(0,0,v);
      return caml_call1(Utils_List[12],_bD0_)}
    function get_field_opt(field,v)
     {var _bDZ_=v[1];
      switch(_bDZ_[0])
       {case 3:var l=_bDZ_[2];return caml_call3(Utils_List[82],0,field,l);
        case 8:
         var vs=_bDZ_[1],param=vs;
         for(;;)
          {if(param)
            {var xs=param[2],x=param[1],match=get_field_opt(field,x);
             if(match){var x$0=match[1];return [0,x$0]}
             var param=xs;
             continue}
           return 0}
        default:return 0}}
    function unoperation(pp,x)
     {var _bDY_=x[1];
      if(10 === _bDY_[0]){var op=_bDY_[1];return op}
      throw [0,
             SmartExcept,
             [0,
              [0,-991563951,x],
              [0,_VW_,[0,14832,[0,[0,4100400,caml_call1(pp,0)],0]]]]]}
    function baker_value_of_protocol(param)
     {return 3 <= param?baker_hash$1:key_hash$1}
    function unPAIRn(x)
     {var switch$0=0;
      switch(x[0])
       {case 3:
         var _bDU_=x[1],switch$1=0;
         if
          (!
           caml_string_notequal(_bDU_,cst_Pair$2)
           ||
           !
           caml_string_notequal(_bDU_,cst_pair$0))
          switch$1 = 1;
         var switch$2=0;
         if(switch$1)
          {var _bDV_=x[3];
           if(_bDV_)
            {var _bDW_=_bDV_[2];
             if(_bDW_ && _bDW_[2])
              {var rest=_bDW_,m1=_bDV_[1];switch$0 = 1;switch$2 = 1}}}
         if(! switch$2 && ! caml_string_notequal(_bDU_,cst_pair$1))
          {var arguments$0=x[3];return [3,cst_Pair$3,0,arguments$0]}
         break;
        case 4:
         var _bDX_=x[1];
         if(_bDX_){var rest=_bDX_[2],m1=_bDX_[1];switch$0 = 1}
         break
        }
      return switch$0?[3,cst_Pair$5,0,[0,m1,[0,[3,cst_Pair$4,0,rest],0]]]:x}
    var id=[0,1000];
    function of_micheline(config$0,pp_mich)
     {var Printer=get$0(config$0);
      function to_value(t$0,m$2)
       {function err(param)
         {var
           _bDS_=pretty(cst$260,m$2),
           _bDT_=caml_call5(Printer[2],0,0,0,0,t$0);
          return caml_call4(Stdlib_printf[9],Stdlib[2],_VZ_,_bDT_,_bDS_)}
        var _bCO_=getRepr(t$0),switch$0=0;
        if(typeof _bCO_ !== "number")
         switch(_bCO_[0])
          {case 1:
            var _bCP_=_bCO_[1];
            if(typeof _bCP_ === "number")
             switch(_bCP_)
              {case 0:switch$0 = 2;break;
               case 1:
                if(3 === m$2[0])
                 {var _bCR_=m$2[1];
                  if(! caml_string_notequal(_bCR_,cst_False$3))
                   return bool$2(0);
                  if(! caml_string_notequal(_bCR_,cst_True$3))return bool$2(1)}
                break;
               case 4:
                if(! (1 < m$2[0]))
                 {var i=m$2[1];return mutez$0(caml_call1(Big_int[34],i))}
                break;
               case 5:
                if(1 === m$2[0]){var i$0=m$2[1];return string$4(i$0)}break;
               case 6:
                switch(m$2[0])
                 {case 1:
                   var i$1=m$2[1];
                   return bytes$3(caml_call1(Utils_Misc[4][2],i$1));
                  case 2:var i$2=m$2[1];return bytes$3(i$2)
                  }
                break;
               case 7:
                switch(m$2[0])
                 {case 1:
                   var i$3=m$2[1];
                   return chain_id$2(caml_call1(Utils_Misc[4][2],i$3));
                  case 2:var i$4=m$2[1];return chain_id$2(i$4)
                  }
                break;
               case 8:
                if(! (1 < m$2[0]))
                 {var
                   i$5=m$2[1],
                   i$6=
                    caml_call4(Base_String[50],0,0,i$5,90)?parseDate(i$5):i$5;
                  return timestamp$1(caml_call1(Big_int[34],i$6))}
                break;
               case 9:
                switch(m$2[0])
                 {case 1:var i$7=m$2[1];return address$1(0,i$7);
                  case 2:
                   var a$0=m$2[1],_bCS_=caml_call1(Utils_Misc[4][1],a$0);
                   return address$1(0,caml_call1(Utils_Bs58[14],_bCS_))
                  }
                break;
               case 10:
                switch(m$2[0])
                 {case 1:var i$8=m$2[1];return key$1(i$8);
                  case 2:
                   var b=m$2[1],_bCT_=caml_call1(Utils_Misc[4][1],b);
                   return key$1(caml_call1(Utils_Bs58[15],_bCT_))
                  }
                break;
               case 11:
                switch(m$2[0])
                 {case 1:var i$9=m$2[1];return key_hash$1(i$9);
                  case 2:
                   var b$0=m$2[1],_bCU_=caml_call1(Utils_Misc[4][1],b$0);
                   return key_hash$1(caml_call1(Utils_Bs58[12],_bCU_))
                  }
                break;
               case 13:
                switch(m$2[0])
                 {case 1:var i$10=m$2[1];return signature$1(i$10);
                  case 2:
                   var b$1=m$2[1],_bCV_=caml_call1(Utils_Misc[4][1],b$1);
                   return signature$1(caml_call1(Utils_Bs58[16],_bCV_))
                  }
                break;
               case 16:
                switch(m$2[0])
                 {case 1:var i$11=m$2[1];return key$1(i$11);
                  case 2:var i$12=m$2[1];return bls12_381_g1$1(i$12)
                  }
                break;
               case 17:
                switch(m$2[0])
                 {case 1:var i$13=m$2[1];return key$1(i$13);
                  case 2:var i$14=m$2[1];return bls12_381_g2$1(i$14)
                  }
                break;
               case 18:
                switch(m$2[0])
                 {case 1:var i$15=m$2[1];return key$1(i$15);
                  case 2:var i$16=m$2[1];return bls12_381_fr$1(i$16)
                  }
                break
               }
            break;
           case 2:
            switch(_bCO_[1])
             {case 0:
               if(3 === m$2[0])
                {var _bCW_=m$2[1],_bCX_=_bCO_[2];
                 if(caml_string_notequal(_bCW_,cst_None$63))
                  {if(! caml_string_notequal(_bCW_,cst_Some$63))
                    {var _bCY_=m$2[3];
                     if(_bCY_ && ! _bCY_[2])
                      {var x=_bCY_[1];return some$2(to_value(_bCX_,x))}}}
                 else
                  if(! m$2[3])return none$1(_bCX_)}
               break;
              case 1:
               if(4 === m$2[0])
                {var
                  l=m$2[1],
                  elt=_bCO_[2],
                  _bCZ_=function(_bDR_){return to_value(elt,_bDR_)};
                 return list$1(caml_call2(Utils_List[20],_bCZ_,l),elt)}
               break;
              case 2:
               if(4 === m$2[0])
                {var
                  l$0=m$2[1],
                  telement=_bCO_[2],
                  _bC0_=function(_bDQ_){return to_value(telement,_bDQ_)};
                 return set$5(telement,caml_call2(Utils_List[20],_bC0_,l$0))}
               break;
              case 3:
               switch(m$2[0])
                {case 1:var i$17=m$2[1];return address$1(0,i$17);
                 case 2:
                  var b$2=m$2[1],_bC1_=caml_call1(Utils_Misc[4][1],b$2);
                  return address$1(0,caml_call1(Utils_Bs58[14],_bC1_))
                 }
               break;
              default:
               if(3 === m$2[0])
                {var _bC2_=_bCO_[2];
                 if(! caml_string_notequal(m$2[1],cst_Pair$7))
                  {var _bC3_=m$2[3];
                   if(_bC3_)
                    {var _bC4_=_bC3_[1];
                     switch(_bC4_[0])
                      {case 1:
                        var _bC5_=_bC3_[2];
                        if(_bC5_)
                         {var _bC6_=_bC5_[2];
                          if(_bC6_)
                           {var _bC7_=_bC6_[1];
                            if(0 === _bC7_[0] && ! _bC6_[2])
                             {var
                               amount=_bC7_[1],
                               content=_bC5_[1],
                               ticketer=_bC4_[1],
                               content$0=to_value(_bC2_,content),
                               amount$0=caml_call1(Big_int[34],amount);
                              return ticket$0(ticketer,content$0,amount$0)}}}
                        break;
                       case 2:
                        var _bC8_=_bC3_[2];
                        if(_bC8_)
                         {var _bC9_=_bC8_[1];
                          if(3 === _bC9_[0])
                           {var _bC__=_bC4_[1];
                            if(! caml_string_notequal(_bC9_[1],cst_Pair$8))
                             {var _bC$_=_bC9_[3];
                              if(_bC$_)
                               {var _bDa_=_bC$_[2];
                                if(_bDa_)
                                 {var _bDb_=_bDa_[1];
                                  if(0 === _bDb_[0] && ! _bDa_[2] && ! _bC8_[2])
                                   {var
                                     amount$1=_bDb_[1],
                                     content$1=_bC$_[1],
                                     _bDc_=caml_call1(Utils_Misc[4][1],_bC__),
                                     ticketer$0=caml_call1(Utils_Bs58[14],_bDc_),
                                     content$2=to_value(_bC2_,content$1),
                                     amount$2=caml_call1(Big_int[34],amount$1);
                                    return ticket$0(ticketer$0,content$2,amount$2)}}}}}}
                        break
                       }}}}}
            break;
           case 3:
            var _bDd_=_bCO_[1];
            if(typeof _bDd_ === "number")
             {if(! _bDd_)
               {var t2=_bCO_[3],t1=_bCO_[2];
                id[1]++;
                var
                 _bCG_=id[1],
                 params=lambdaParams(0,_bCG_,name$1),
                 name=caml_call2(pp_mich,t1,m$2),
                 mich=[0,name,m$2,[0,t1,0],[0,t2,0]],
                 mich$0=inline_michelson(0,mich,[0,params,0]),
                 body=result(0,mich$0),
                 lambda=[0,_bCG_,name$1,body,0,0,0],
                 lambda$0=caml_call1(check_lambda$0(config,0),lambda);
                return closure_init(lambda$0)}
              var _bDe_=_bCO_[3],_bDf_=_bCO_[2];
              switch(m$2[0])
               {case 0:return map$5(2 === _bDd_?1:0,_bDf_,_bDe_,0);
                case 4:
                 var
                  l$1=m$2[1],
                  pairOfStorage=
                   function(p)
                    {if(3 === p[0] && ! caml_string_notequal(p[1],cst_Elt$2))
                      {var _bDN_=p[3];
                       if(_bDN_)
                        {var _bDO_=_bDN_[2];
                         if(_bDO_ && ! _bDO_[2])
                          {var v=_bDO_[1],k=_bDN_[1],_bDP_=to_value(_bDe_,v);
                           return [0,to_value(_bDf_,k),_bDP_]}}}
                     var
                      _bDL_=pretty(cst$261,p),
                      _bDM_=caml_call2(Stdlib_printf[4],_V0_,_bDL_);
                     return caml_call1(Stdlib[2],_bDM_)};
                 return map$5
                         (2 === _bDd_?1:0,
                          _bDf_,
                          _bDe_,
                          caml_call2(Utils_List[20],pairOfStorage,l$1))
                }}
            break;
           case 4:
            if(! (1 < m$2[0]))
             {var i$18=m$2[1],match$1=getRepr(t$0);
              if(typeof match$1 !== "number" && 4 === match$1[0])
               {var isNat=match$1[1];
                return intOrNat$1(isNat,caml_call1(Big_int[34],i$18))}
              throw [0,Assert_failure,_V1_]}
            break;
           case 6:switch$0 = _bCO_[2]?1:2;break;
           case 7:
            var _bDh_=_bCO_[2],_bDg_=_bCO_[1];
            if(_bDh_)
             {var _bDi_=_bDh_[1],_bDj_=_bDi_[1];
              if(caml_string_notequal(_bDj_,cst_Left$8))
               {if(! caml_string_notequal(_bDj_,cst_None$64))
                 {var _bDk_=_bDi_[2][1],switch$1=0;
                  if(typeof _bDk_ === "number" || ! (1 === _bDk_[0]))
                   switch$1 = 1;
                  else
                   {var _bDl_=_bDk_[1];
                    if(typeof _bDl_ === "number" && ! _bDl_)
                     {var _bDm_=_bDh_[2];
                      if(_bDm_)
                       {var _bDn_=_bDm_[1];
                        if
                         (!
                          caml_string_notequal(_bDn_[1],cst_Some$64)
                          &&
                          !
                          _bDm_[2]
                          &&
                          3
                          ===
                          m$2[0])
                         {var _bDo_=m$2[1],_bDp_=_bDn_[2];
                          if(caml_string_notequal(_bDo_,cst_None$65))
                           {if(! caml_string_notequal(_bDo_,cst_Some$65))
                             {var _bDq_=m$2[3];
                              if(_bDq_ && ! _bDq_[2])
                               {var x$0=_bDq_[1];return some$2(to_value(_bDp_,x$0))}}}
                          else
                           if(! m$2[3])return none$1(_bDp_)}}}}}}
              else
               {var _bDr_=_bDh_[2];
                if(_bDr_)
                 {var _bDs_=_bDr_[1],_bDt_=_bDi_[2];
                  if
                   (!
                    caml_string_notequal(_bDs_[1],cst_Right$8)
                    &&
                    !
                    _bDr_[2]
                    &&
                    3
                    ===
                    m$2[0])
                   {var _bDu_=m$2[1],_bDv_=_bDs_[2];
                    if(caml_string_notequal(_bDu_,cst_Left$9))
                     {if(! caml_string_notequal(_bDu_,cst_Right$9))
                       {var _bDw_=m$2[3];
                        if(_bDw_ && ! _bDw_[2])
                         {var x$1=_bDw_[1];
                          return variant_with_type
                                  (0,0,cst_Right$10,to_value(_bDv_,x$1),t$0)}}}
                    else
                     {var _bDx_=m$2[3];
                      if(_bDx_ && ! _bDx_[2])
                       {var x$2=_bDx_[1];
                        return variant_with_type
                                (0,0,cst_Left$10,to_value(_bDt_,x$2),t$0)}}}}}}
            var row$0=_bCO_[2],match$2=get(_bDg_);
            if(match$2)
             {var l$2=match$2[1],layout=l$2,m=m$2;
              for(;;)
               {if(0 === layout[0])
                 var
                  match=layout[1],
                  a=match[1],
                  t=caml_call2(Utils_List[43],a,row$0),
                  match$3=[0,a,to_value(t,m)];
                else
                 {if(3 === m[0])
                   {var _bCJ_=m[1],_bCK_=layout[2],_bCL_=layout[1];
                    if(caml_string_notequal(_bCJ_,cst_Left$7))
                     {if(! caml_string_notequal(_bCJ_,cst_Right$7))
                       {var _bCM_=m[3];
                        if(_bCM_ && ! _bCM_[2])
                         {var m$0=_bCM_[1],layout=_bCK_,m=m$0;continue}}}
                    else
                     {var _bCN_=m[3];
                      if(_bCN_ && ! _bCN_[2])
                       {var m$1=_bCN_[1],layout=_bCL_,m=m$1;continue}}}
                  var
                   _bCH_=pretty(cst$259,m),
                   _bCI_=caml_call1(show$0,layout),
                   match$3=
                    caml_call4(Stdlib_printf[9],Stdlib[2],_VY_,_bCI_,_bCH_)}
                var v=match$3[2],name$0=match$3[1];
                return variant_with_type(0,0,name$0,v,t$0)}}
            return err(0);
           case 9:
            var _bDy_=_bCO_[1];
            if(_bDy_)
             {var _bDz_=_bDy_[2];
              if(_bDz_ && ! _bDz_[2])
               {var t2$0=_bDz_[1],t1$0=_bDy_[1],match$4=unPAIRn(m$2);
                if
                 (3
                  ===
                  match$4[0]
                  &&
                  !
                  caml_string_notequal(match$4[1],cst_Pair$9))
                 {var _bDC_=match$4[3];
                  if(_bDC_)
                   {var _bDD_=_bDC_[2];
                    if(_bDD_ && ! _bDD_[2])
                     {var x2=_bDD_[1],x1=_bDC_[1],_bDE_=[0,to_value(t2$0,x2),0];
                      return tuple$1([0,to_value(t1$0,x1),_bDE_])}}}
                var
                 _bDA_=pretty(cst$262,m$2),
                 _bDB_=caml_call5(Printer[2],0,0,0,0,t$0);
                return caml_call4(Stdlib_printf[9],Stdlib[2],_V2_,_bDB_,_bDA_)}}
            break;
           case 10:
            var memo=_bCO_[1],match$5=get(memo);
            if(match$5)
             {var memo$0=match$5[1];
              return literal$1(sapling_state_real(memo$0))}
            var
             _bDF_=pretty(cst$263,m$2),
             _bDG_=caml_call5(Printer[2],0,0,0,0,t$0);
            return caml_call4(Stdlib_printf[9],Stdlib[2],_V3_,_bDG_,_bDF_)
           }
        var switch$2=0;
        switch(switch$0)
         {case 2:
           if
            (3
             ===
             m$2[0]
             &&
             !
             caml_string_notequal(m$2[1],cst_Unit$6)
             &&
             !
             m$2[3])
            return unit$3;
           break;
          case 1:break;
          default:switch$2 = 1}
        if(! switch$2 && typeof _bCO_ !== "number" && 6 === _bCO_[0])
         {var _bCQ_=_bCO_[1];
          if(_bCO_[2])
           {var row=_bCO_[2],match$0=get(_bCQ_);
            if(match$0)
             {var
               layout$0=match$0[1],
               aux=
                function(layout,m)
                 {if(0 === layout[0])
                   {var
                     match=layout[1],
                     a=match[1],
                     t=caml_call2(Utils_List[43],a,row);
                    return [0,[0,a,to_value(t,m)],0]}
                  var l2=layout[2],l1=layout[1],match$0=unPAIRn(m);
                  if
                   (3
                    ===
                    match$0[0]
                    &&
                    !
                    caml_string_notequal(match$0[1],cst_Pair$6))
                   {var _bDJ_=match$0[3];
                    if(_bDJ_)
                     {var _bDK_=_bDJ_[2];
                      if(_bDK_ && ! _bDK_[2])
                       {var m2=_bDK_[1],m1=_bDJ_[1],r1=aux(l1,m1),r2=aux(l2,m2);
                        return caml_call2(Stdlib[37],r1,r2)}}}
                  var _bDH_=pretty(cst$258,m),_bDI_=caml_call1(show$0,layout);
                  return caml_call4
                          (Stdlib_printf[9],Stdlib[2],_VX_,_bDI_,_bDH_)},
               entries=aux(layout$0,m$2);
              return record$1(layout$0,entries)}
            return err(0)}
          return unit$3}
        return err(0)}
      return to_value}
    var
     Smartml_Value=
      [0,
       equal$7,
       pp$6,
       show$6,
       literal$1,
       bounded$1,
       int$4,
       nat$1,
       intOrNat$1,
       mutez$0,
       int_of_value,
       bool_of_value,
       compare$6,
       lt$0,
       le$0,
       openV,
       string$4,
       bytes$3,
       bls12_381_g1$1,
       bls12_381_g2$1,
       bls12_381_fr$1,
       chain_id$2,
       unString$0,
       unAddress,
       unKey_hash,
       un_baker,
       list$1,
       set$5,
       map$5,
       unit$3,
       bool$2,
       unBool$0,
       unList,
       unMap,
       unSet,
       unOption,
       getItem,
       unInt$0,
       unMutez,
       unBls12_381,
       unTimestamp,
       unChain_id,
       plus_inner,
       plus,
       sub$0,
       mul$0,
       e_mod$0,
       div_inner,
       div$0,
       minus,
       key_hash$1,
       baker_hash$1,
       key$1,
       secret_key$1,
       signature$1,
       record$1,
       record_comb,
       tuple$1,
       untuple,
       un_record,
       variant_with_type,
       none$1,
       some$2,
       option$1,
       ediv$0,
       timestamp$1,
       intXor,
       address$1,
       contract$1,
       cons$0,
       lens_list,
       lens_list_nth,
       lens_map,
       lens_map_at,
       lens_set,
       lens_set_at,
       lens_record,
       lens_record_at,
       checkType,
       zero_of_type,
       nextId,
       shift_left,
       shift_right,
       xor$0,
       closure_init,
       closure_apply,
       unclosure,
       project_literals,
       get_field_opt,
       operation$0,
       unoperation,
       unSaplingTransaction,
       unSaplingState,
       ticket$0,
       baker_value_of_protocol,
       of_micheline];
    caml_register_global(6492,Smartml_Value,"Smartml__Value");
    function textInputGui(path,match,nextId,initialType,cont)
     {var id=caml_call1(nextId,0),gui=caml_call2(Stdlib_printf[4],_V4_,id);
      function get(withZeros)
       {var s=getText(id);
        try
         {var switch$0=0;
          if(! caml_string_notequal(s,cst$266) && match)
           {var x=match[1],_bCF_=caml_call1(cont,x);switch$0 = 1}
          if(! switch$0)var _bCF_=caml_call1(cont,s);
          return _bCF_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Stdlib[7])
           var error=exn[2],error$0=caml_call2(Stdlib_printf[4],_V5_,error);
          else
           var error$0=cst$265;
          var
           _bCC_=caml_call1(Utils_List[12],path),
           _bCD_=caml_call2(Utils_String[7],cst$264,_bCC_),
           _bCE_=caml_call5(Stdlib_printf[4],_V6_,s,initialType,_bCD_,error$0);
          return caml_call1(Stdlib[2],_bCE_)}}
      return [0,gui,get]}
    function error(s){return string$4(s)}
    function fields_of_layout(layout,row)
     {var match=get(layout);
      if(match)
       {var
         layout$0=match[1],
         leaf=
          function(param)
           {var target=param[2],source=param[1];
            return [0,[0,source,target],0]};
        return caml_call3(Utils_Binary_tree[6],leaf,Stdlib[37],layout$0)}
      function _bCB_(param){var x=param[1];return [0,x,x]}
      return caml_call2(Utils_List[20],_bCB_,row)}
    function input_list(f,t,path,nextId)
     {var
       _bCl_=[0,[0,cst_Four,tuple([0,t,[0,t,[0,t,[0,t,0]]]])],0],
       _bCm_=[0,[0,cst_Three,tuple([0,t,[0,t,[0,t,0]]])],_bCl_],
       input=
        _V9_
         ([0,cst_list$1,path],
          nextId,
          variant_default_layout
           (1,
            [0,
             [0,cst_Zero,unit$0],
             [0,[0,cst_One,t],[0,[0,cst_Two,pair(t,t)],_bCm_]]]));
      function get(context)
       {var _bCn_=caml_call1(input[2],context)[1];
        if(4 === _bCn_[0])
         {var _bCo_=_bCn_[3];
          if(caml_string_notequal(_bCo_,cst_Four$0))
           {if(! caml_string_notequal(_bCo_,cst_One$0))
             {var x$0=_bCn_[4];return caml_call2(f,[0,x$0,0],t)}
            if(caml_string_notequal(_bCo_,cst_Three$0))
             if(caml_string_notequal(_bCo_,cst_Two$0))
              {if(! caml_string_notequal(_bCo_,cst_Zero$0))
                return caml_call2(f,0,t)}
             else
              {var _bCp_=_bCn_[4][1];
               if(8 === _bCp_[0])
                {var _bCq_=_bCp_[1];
                 if(_bCq_)
                  {var _bCr_=_bCq_[2];
                   if(_bCr_ && ! _bCr_[2])
                    {var y=_bCr_[1],x=_bCq_[1];
                     return caml_call2(f,[0,x,[0,y,0]],t)}}}}
            else
             {var _bCs_=_bCn_[4][1];
              if(8 === _bCs_[0])
               {var _bCt_=_bCs_[1];
                if(_bCt_)
                 {var _bCu_=_bCt_[2];
                  if(_bCu_)
                   {var _bCv_=_bCu_[2];
                    if(_bCv_ && ! _bCv_[2])
                     {var x3=_bCv_[1],x2=_bCu_[1],x1=_bCt_[1];
                      return caml_call2(f,[0,x1,[0,x2,[0,x3,0]]],t)}}}}}}
          else
           {var _bCw_=_bCn_[4][1];
            if(8 === _bCw_[0])
             {var _bCx_=_bCw_[1];
              if(_bCx_)
               {var _bCy_=_bCx_[2];
                if(_bCy_)
                 {var _bCz_=_bCy_[2];
                  if(_bCz_)
                   {var _bCA_=_bCz_[2];
                    if(_bCA_ && ! _bCA_[2])
                     {var x4=_bCA_[1],x3$0=_bCz_[1],x2$0=_bCy_[1],x1$0=_bCx_[1];
                      return caml_call2(f,[0,x1$0,[0,x2$0,[0,x3$0,[0,x4,0]]]],t)}}}}}}}
        throw [0,Assert_failure,_Wl_]}
      return [0,input[1],get]}
    function _V9_(path,nextId,initialType)
     {var Printer=get_by_language(0),t=getRepr(initialType),switch$0=0;
      if(typeof t === "number")
       return textInputGui(path,0,nextId,cst_secret_key$2,secret_key$1);
      else
       switch(t[0])
        {case 1:
          var _bBx_=t[1];
          if(typeof _bBx_ === "number")
           switch(_bBx_)
            {case 0:return [0,cst$267,function(param){return unit$3}];
             case 1:
              var
               id=caml_call1(nextId,0),
               gui$4=caml_call2(Stdlib_printf[4],_V$_,id),
               get$0=function(param){return bool$2(isChecked(id))};
              return [0,gui$4,get$0];
             case 4:
              var
               _bBz_=[0,[0,cst_Mutez,nat$0(0)],0],
               match=
                _V9_
                 (path,
                  nextId,
                  variant_default_layout(1,[0,[0,cst_Tez,nat$0(0)],_bBz_])),
               get$1=match[2],
               gui$5=match[1],
               get$2=
                function(context)
                 {var _bCh_=caml_call1(get$1,context)[1];
                  if(4 === _bCh_[0])
                   {var _bCi_=_bCh_[3];
                    if(! caml_string_notequal(_bCi_,cst_Mutez$0))
                     {var i$0=_bCh_[4];
                      return mutez$0(unInt$0(function(param){return 0},i$0))}
                    if(! caml_string_notequal(_bCi_,cst_Tez$0))
                     {var
                       i=_bCh_[4],
                       _bCj_=unInt$0(function(param){return 0},i),
                       _bCk_=caml_call1(Utils_Bigint[5],1000000);
                      return mutez$0(caml_call2(Big_int[10],_bCk_,_bCj_))}}
                  throw [0,Assert_failure,_Wa_]};
              return [0,gui$5,get$2];
             case 5:return textInputGui(path,0,nextId,cst_string$3,string$4);
             case 6:
              return textInputGui
                      (path,
                       0,
                       nextId,
                       cst_bytes$4,
                       function(s){return bytes$3(caml_call1(Utils_Misc[4][2],s))});
             case 7:
              return textInputGui
                      (path,
                       0,
                       nextId,
                       cst_chainid,
                       function(s)
                        {return chain_id$2(caml_call1(Utils_Misc[4][2],s))});
             case 8:
              return textInputGui
                      (path,
                       0,
                       nextId,
                       cst_timestamp$2,
                       function(i){return timestamp$1(caml_call1(Big_int[34],i))});
             case 9:
              return textInputGui
                      (path,
                       0,
                       nextId,
                       cst_address$5,
                       function(s)
                        {var
                          _bCe_=caml_call2(Base_String[75],s,cst_tz$1),
                          _bCf_=_bCe_ || caml_call2(Base_String[75],s,cst_KT);
                         if(1 - _bCf_)
                          {var _bCg_=caml_call2(Stdlib_printf[4],_Wb_,s);
                           caml_call1(Stdlib[2],_bCg_)}
                         return address$1(0,s)});
             case 10:return textInputGui(path,0,nextId,cst_key$5,key$1);
             case 11:
              return textInputGui(path,0,nextId,cst_key_hash$1,key_hash$1);
             case 12:
              return textInputGui(path,0,nextId,cst_baker_hash$1,baker_hash$1);
             case 13:
              return textInputGui(path,0,nextId,cst_signature$2,signature$1);
             case 14:return [0,gui,function(param){return error(gui)}];
             case 15:return [0,gui$0,function(param){return error(gui$0)}];
             case 16:
              return textInputGui
                      (path,
                       0,
                       nextId,
                       cst_bls12_381_g1$2,
                       function(s)
                        {return bls12_381_g1$1(caml_call1(Utils_Misc[4][2],s))});
             case 17:
              return textInputGui
                      (path,
                       0,
                       nextId,
                       cst_bls12_381_g2$2,
                       function(s)
                        {return bls12_381_g2$1(caml_call1(Utils_Misc[4][2],s))});
             case 18:
              return textInputGui
                      (path,
                       0,
                       nextId,
                       cst_bls12_381_fr$2,
                       function(s)
                        {return bls12_381_fr$1(caml_call1(Utils_Misc[4][2],s))})
             }
          break;
         case 2:
          switch(t[1])
           {case 0:switch$0 = 1;break;
            case 1:var t$1=t[2];return input_list(list$1,t$1,path,nextId);
            case 2:
             var telement=t[2];
             return input_list
                     (function(l,telement){return set$5(telement,l)},
                      telement,
                      path,
                      nextId);
            case 3:
             var t$2=t[2];
             return textInputGui
                     (path,
                      0,
                      nextId,
                      cst_contract$6,
                      function(s)
                       {if(1 - caml_call2(Base_String[75],s,cst_KT$0))
                         {var _bCd_=caml_call2(Stdlib_printf[4],_Wh_,s);
                          caml_call1(Stdlib[2],_bCd_)}
                        return contract$1(0,s,t$2)});
            default:return [0,gui$1,function(param){return error(gui$1)}]}
          break;
         case 3:
          var _bBK_=t[1];
          if(typeof _bBK_ === "number")
           {if(_bBK_)
             {var tvalue=t[3],tkey=t[2],_bBL_=pair(tkey,tvalue);
              return input_list
                      (function(l,param)
                        {function _bB$_(param)
                          {var _bCa_=param[1];
                           if(8 === _bCa_[0])
                            {var _bCb_=_bCa_[1];
                             if(_bCb_)
                              {var _bCc_=_bCb_[2];
                               if(_bCc_ && ! _bCc_[2])
                                {var y=_bCc_[1],x=_bCb_[1];return [0,x,y]}}}
                           throw [0,Assert_failure,_Wi_]}
                         return map$5
                                 (2 === _bBK_?1:0,
                                  tkey,
                                  tvalue,
                                  caml_call2(Utils_List[20],_bB$_,l))},
                       _bBL_,
                       path,
                       nextId)}
            return textInputGui(path,0,nextId,cst_lambda$0,string$4)}
          break;
         case 4:
          var isNat=t[1];
          return textInputGui
                  (path,
                   0,
                   nextId,
                   cst_int$3,
                   function(s)
                    {var i=caml_call1(Big_int[34],s),match=intType(isNat);
                     if(106380200 <= match)
                      {if(785140586 <= match)return intOrNat$1(unknown(0),i);
                       throw [0,Assert_failure,_V7_]}
                     if(3900609 <= match)
                      {if(caml_call2(Big_int[23],i,Big_int[1]) < 0)
                        {var _bB__=caml_call2(Stdlib_printf[4],_V8_,s);
                         caml_call1(Stdlib[2],_bB__)}
                       return nat$1(i)}
                     return int$4(i)});
         case 5:throw [0,Assert_failure,_Wj_];
         case 6:
          var
           row$2=t[2],
           layout$2=t[1],
           _bBM_=
            function(param)
             {var t=param[2],name=param[1];
              return [0,name,_V9_([0,name,path],nextId,t)]},
           subs=caml_call2(Utils_List[20],_bBM_,row$2),
           fields$0=fields_of_layout(layout$2,row$2),
           _bBN_=function(x){return x},
           _bBO_=0,
           _bBP_=
            function(param)
             {var source=param[1];
              return caml_call2(Utils_List[43],source,subs)[1]},
           _bBQ_=[0,caml_call2(Utils_List[20],_bBP_,fields$0),_bBO_],
           _bBR_=function(_bB9_){return _bB9_[2]},
           _bBS_=[0,caml_call2(Utils_List[20],_bBR_,fields$0),_bBQ_],
           gui$7=caml_call2(Printer[21],_bBS_,_bBN_),
           get$4=
            function(context)
             {var
               _bB7_=get(layout$2),
               layout=caml_call2(Utils_Option[50],_Wk_,_bB7_);
              function _bB8_(param)
               {var input=param[2],name=param[1];
                return [0,name,caml_call1(input[2],context)]}
              return record$1(layout,caml_call2(Utils_List[20],_bB8_,subs))};
          return [0,gui$7,get$4];
         case 9:
          var
           ts=t[1],
           _bBT_=
            function(i,t)
             {var name=caml_call1(Stdlib[33],i);
              return [0,name,_V9_([0,name,path],nextId,t)]},
           subs$0=caml_call2(Utils_List[21],_bBT_,ts),
           _bBU_=function(x){return x},
           _bBV_=0,
           _bBW_=function(param){var input=param[2];return input[1]},
           _bBX_=[0,0,[0,caml_call2(Utils_List[20],_bBW_,subs$0),_bBV_]],
           gui$8=caml_call2(Printer[21],_bBX_,_bBU_),
           get$5=
            function(context)
             {function _bB6_(param)
               {var input=param[2];return caml_call1(input[2],context)}
              return tuple$1(caml_call2(Utils_List[20],_bB6_,subs$0))};
          return [0,gui$8,get$5];
         case 10:return [0,gui$2,function(param){return error(gui$2)}];
         case 11:return [0,gui$3,function(param){return error(gui$3)}];
         case 7:switch$0 = 1;break;
         default:
          var
           _bBw_=caml_call5(Printer[2],0,0,0,0,initialType),
           notImplemented=caml_call2(Stdlib_printf[4],_V__,_bBw_);
          return [0,
                  notImplemented,
                  function(param){return error(notImplemented)}]}
      if(switch$0)
       {var switch$1=0;
        if(typeof t !== "number")
         switch(t[0])
          {case 2:
            if(! t[1])
             {var
               t$0=t[2],
               row=[0,[0,cst_None$66,unit$0],[0,[0,cst_Some$66,t$0],0]],
               _bBA_=function(_bB5_){return _bB5_[1]},
               layout=
                default_layout_of_row(1,caml_call2(Utils_List[20],_bBA_,row)),
               match$0=[0,[0,t$0],value(layout),row];
              switch$1 = 1}
            break;
           case 7:
            var row$1=t[2],layout$1=t[1],match$0=[0,0,layout$1,row$1];
            switch$1 = 1;
            break
           }
        if(switch$1)
         {var
           row$0=match$0[3],
           layout$0=match$0[2],
           is_option=match$0[1],
           monoSelectionId=caml_call1(nextId,0),
           putRadio=
            function(i,param)
             {var
               target=param[2],
               name=param[1],
               t=caml_call2(Utils_List[43],name,row$0),
               input=_V9_([0,name,path],nextId,t),
               id=caml_call1(nextId,0),
               _bB3_=input[1],
               _bB4_=0 === i?cst$268:cst_hidden,
               gui=caml_call4(Stdlib_printf[4],_Wd_,id,_bB4_,_bB3_);
              function get(x)
               {if(is_option)
                 {var t=is_option[1];
                  return caml_string_equal(name,cst_None$67)
                          ?none$1(t)
                          :some$2(caml_call1(input[2],x))}
                return variant_with_type
                        (0,0,name,caml_call1(input[2],x),initialType)}
              return [0,target,id,[0,gui,get]]},
           fields=fields_of_layout(layout$0,row$0),
           radios=caml_call2(Utils_List[21],putRadio,fields),
           _bBB_=function(param){var input=param[3];return input[1]},
           _bBC_=caml_call2(Utils_List[20],_bBB_,radios),
           _bBD_=caml_call2(Utils_String[7],cst$269,_bBC_),
           _bBE_=
            function(param)
             {var name=param[1],_bB2_=caml_call1(Utils_String[31],name);
              return caml_call3(Stdlib_printf[4],_We_,name,_bB2_)},
           _bBF_=caml_call2(Utils_List[20],_bBE_,radios),
           _bBG_=caml_call2(Utils_String[7],cst$270,_bBF_),
           _bBH_=
            function(param)
             {var id=param[2],name=param[1];
              return caml_call3(Stdlib_printf[4],_Wf_,name,id)},
           _bBI_=caml_call2(Utils_List[20],_bBH_,radios),
           _bBJ_=caml_call2(Utils_String[7],cst$271,_bBI_),
           gui$6=
            caml_call6
             (Stdlib_printf[4],
              _Wg_,
              monoSelectionId,
              monoSelectionId,
              _bBJ_,
              _bBG_,
              _bBD_),
           get$3=
            function(context)
             {var selected=getText(monoSelectionId);
              function _bBY_(param)
               {var name=param[1];return caml_string_equal(name,selected)}
              var match=caml_call2(Utils_List[38],_bBY_,radios);
              if(match)
               {var match$0=match[1],input=match$0[3];
                return caml_call1(input[2],context)}
              var
               _bBZ_=caml_call5(Printer[2],0,0,0,0,initialType),
               _bB0_=caml_call2(Stdlib[28],cst_in,_bBZ_),
               _bB1_=caml_call2(Stdlib[28],selected,_bB0_);
              return error
                      (caml_call2(Stdlib[28],cst_Missing_constructor,_bB1_))};
          return [0,gui$6,get$3]}
        throw [0,Assert_failure,_Wc_]}
      var _bBy_=caml_call1(show$4,[0,t]);
      return caml_call1(Stdlib[2],_bBy_)}
    function inputGuiR(opt,nextId,initialType)
     {if(opt)var sth=opt[1],path=sth;else var path=0;
      return _V9_(path,nextId,initialType)}
    var Smartml_Value_gui=[0,inputGuiR];
    caml_register_global(6493,Smartml_Value_gui,"Smartml__Value_gui");
    var
     _Wm_=0,
     _Wn_=
      monoid_talg
       (function(_bBu_,_bBt_){var _bBv_=_bBu_ || _bBt_;return _bBv_},_Wm_),
     has_unknowns_talg=[0,_Wn_[1],_Wn_[2],has_unknowns],
     has_unknowns_expr=cata_texpr(has_unknowns_talg),
     has_unknowns_command=cata_tcommand(has_unknowns_talg),
     id$0=[0,0];
    function close_layout(default$1,row,layout)
     {function _bBr_(_bBs_){return _bBs_[1]}
      default$0
       (layout,
        default_layout_of_row(default$1,caml_call2(Utils_List[20],_bBr_,row)));
      return layout}
    function close_type(config)
     {function f(t0)
       {if(typeof t0 !== "number")
         switch(t0[0])
          {case 3:
            if(typeof t0[1] !== "number")throw [0,Assert_failure,_Wo_];break;
           case 5:
            var cases=t0[2],t=t0[1],match=get(cases);
            if(match)
             var match$0=match[1],cases$0=match$0[2],cases$1=cases$0;
            else
             var cases$1=0;
            return bounded(t,1,cases$1);
           case 6:
            var row=t0[2],layout=t0[1];
            return record_or_unit(close_layout(config[10],row,layout),row);
           case 7:
            var row$0=t0[2],layout$0=t0[1];
            return variant(close_layout(config[9],row$0,layout$0),row$0);
           case 8:
            var _bBo_=t0[1],_bBp_=_bBo_[1];
            switch(_bBp_[0])
             {case 0:break;
              case 1:
               var l=_bBp_[1],t$0=record_default_layout(config[10],l);
               _bBo_[1] = [4,t$0];
               return t$0;
              case 2:
               var l$0=_bBp_[1];
               if(caml_equal(l$0,caml_call2(Utils_List[52],caml_compare,l$0)))
                {var
                  mk=
                   function(i0,param)
                    {if(param)
                      {var xs=param[2],match=param[1],t=match[2],i=match[1];
                       if(i === i0)return [0,t,mk(i0 + 1 | 0,xs)];
                       var
                        _bBq_=mk(i0 + 1 | 0,[0,[0,i,t],xs]),
                        v=caml_call1(Stdlib[33],id$0[1]);
                       id$0[1]++;
                       return [0,
                               unknown_raw([0,[0,caml_call2(Stdlib[28],cst_c$1,v)]]),
                               _bBq_]}
                     return 0},
                  t$1=tuple(mk(0,l$0));
                 _bBo_[1] = [4,t$1];
                 return t$1}
               throw [0,Assert_failure,_Wp_];
              case 3:
               var l$1=_bBp_[1],t$2=variant_default_layout(config[9],l$1);
               _bBo_[1] = [4,t$2];
               return t$2;
              default:var t$3=_bBp_[1];_bBo_[1] = [4,t$3];return t$3}
            break
           }
        return [0,t0]}
      return caml_call1(cata,f)}
    function close_talg(config)
     {function f_texpr(line_no,et,e)
       {var _bBn_=caml_call1(close_type(config),et);
        return caml_call3(_yy_[9],line_no,e,_bBn_)}
      function f_tcommand(line_no,ct,c)
       {var _bBm_=caml_call1(close_type(config),ct);
        return caml_call3(_yy_[10],line_no,c,_bBm_)}
      return [0,f_texpr,f_tcommand,close_type(config)]}
    function close_expr(config){return cata_texpr(close_talg(config))}
    function close_command(config){return cata_tcommand(close_talg(config))}
    function close_contract(config,param)
     {var
       c=param[1],
       config$0=caml_call3(Utils_List[25],apply_flag,config,c[9]),
       tparameter=c[13][1][1],
       tstorage=c[13][1][5],
       _bBb_=Utils_Control[1],
       _bBc_=close_type(config$0),
       _bBd_=close_command(config$0),
       init=map_contract_f(close_expr(config$0),_bBd_,_bBc_,_bBb_,c),
       derived=init[13],
       global_variables=init[10],
       entry_points=init[6],
       _bBe_=init[12],
       _bBf_=init[11],
       _bBg_=init[10],
       _bBh_=init[9];
      function _bA4_(param)
       {var e=param[2],name=param[1];
        return [0,name,caml_call1(has_unknowns_expr,e)]}
      var _bA5_=caml_call2(Utils_List[20],_bA4_,global_variables);
      function _bA6_(param)
       {var
         tparameter_ep_derived=param[8],
         body=param[7],
         channel=param[1],
         _bBj_=caml_call1(has_unknowns_command,body),
         _bBk_=[0,[0,caml_call2(Stdlib[28],channel,cst_command$0),_bBj_],0],
         _bBl_=caml_call1(has_unknowns,tparameter_ep_derived[1]);
        return [0,[0,caml_call2(Stdlib[28],channel,cst_type$0),_bBl_],_bBk_]}
      var
       _bA7_=caml_call2(Utils_List[20],_bA6_,entry_points),
       _bA8_=caml_call1(Utils_List[16],_bA7_),
       _bA9_=caml_call2(Stdlib[37],_bA8_,_bA5_),
       _bA__=[0,[0,cst_tparameter$3,caml_call1(has_unknowns,tparameter)],0],
       _bA$_=[0,[0,cst_storage$20,caml_call1(has_unknowns,tstorage)],_bA__],
       xs=caml_call2(Stdlib[37],_bA$_,_bA9_);
      function _bBa_(param){var b=param[2],s=param[1];return b?[0,s]:0}
      var
       xs$0=caml_call2(Utils_List[23],_bBa_,xs),
       _bBi_=0 === xs$0?0:[0,caml_call2(Utils_String[7],cst$272,xs$0)],
       c$0=
        [0,
         init[1],
         init[2],
         init[3],
         init[4],
         init[5],
         init[6],
         init[7],
         _bBi_,
         _bBh_,
         _bBg_,
         _bBf_,
         _bBe_,
         derived];
      return [0,c$0]}
    function close_scenario(config)
     {var
       _bAZ_=Utils_Control[1],
       _bA0_=close_type(config),
       _bA1_=close_command(config),
       _bA2_=close_expr(config);
      return function(_bA3_)
       {return map_scenario_f(_bA2_,_bA1_,_bA0_,_bAZ_,_bA3_)}}
    var
     Smartml_Closer=
      [0,close_type,close_expr,close_command,close_contract,close_scenario];
    caml_register_global(6494,Smartml_Closer,"Smartml__Closer");
    function pp$7(fmt,param)
     {switch(param)
       {case 0:return caml_call2(Stdlib_format[13],fmt,cst_HO_none);
        case 1:return caml_call2(Stdlib_format[13],fmt,cst_HO_at_most_one);
        default:return caml_call2(Stdlib_format[13],fmt,cst_HO_many)}}
    function show$7(x){return caml_call3(Stdlib_format[127],_Wq_,pp$7,x)}
    function equal$8(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 1;break;
        case 1:if(1 === rhs)return 1;break;
        default:if(2 <= rhs)return 1}
      return 0}
    function compare$7(lhs,rhs)
     {switch(lhs)
       {case 0:if(! rhs)return 0;break;
        case 1:if(1 === rhs)return 0;break;
        default:if(2 <= rhs)return 0}
      function to_int(param)
       {switch(param){case 0:return 0;case 1:return 1;default:return 2}}
      var _bAY_=to_int(rhs);
      return caml_int_compare(to_int(lhs),_bAY_)}
    function or(ho1,ho2)
     {if(ho1)
       {if(ho2)
         {if(2 <= ho1){if(2 <= ho2)return 2;var x=ho1}else var x=ho2;return x}
        var x$0=ho1}
      else
       var x$0=ho2;
      return x$0}
    function add$0(ho1,ho2)
     {if(ho1){if(ho2)return 2;var x=ho1}else var x=ho2;return x}
    function widen(param){return param?2:0}
    function has_operations_f(param)
     {switch(param[0])
       {case 3:var y=param[3],x=param[2];return or(x[2],y[2]);
        case 4:
         var
          cases=param[2],
          _bAQ_=0,
          _bAR_=function(acc,param){var body=param[3];return or(acc,body[2])};
         return caml_call3(Utils_List[25],_bAR_,_bAQ_,cases);
        case 5:var c=param[3];return c[2];
        case 6:var c$0=param[3];return c$0[2];
        case 7:
         var ko_match=param[4],ok_match=param[3];
         return or(ok_match[2],ko_match[2]);
        case 9:
         var _bAS_=param[1][1][1];
         if(5 === _bAS_[0])
          {var _bAT_=_bAS_[1],switch$0=0;
           if(typeof _bAT_ === "number" || ! (3 === _bAT_[0]))
            switch$0 = 1;
           else
            if(! caml_string_notequal(_bAT_[1],cst_operations$7))
             {var rhs=param[2],_bAU_=rhs[1][1];
              switch(_bAU_[0])
               {case 7:
                 var _bAV_=_bAU_[1];
                 if(typeof _bAV_ === "number" && 4 === _bAV_)
                  {var _bAW_=_bAU_[3][1];
                   if(5 === _bAW_[0])
                    {var _bAX_=_bAW_[1],switch$1=0;
                     if(typeof _bAX_ === "number" || ! (3 === _bAX_[0]))
                      switch$1 = 1;
                     else
                      if(! caml_string_notequal(_bAX_[1],cst_operations$8))
                       return 1}}
                 break;
                case 13:if(! _bAU_[1])return 0;break
                }
              return 2}}
         return 0;
        case 12:var c2=param[3],c1=param[2];return add$0(c1[2],c2[2]);
        case 13:var c$1=param[3];break;
        case 14:var c$1=param[2];break;
        case 18:var c$2=param[1];return c$2[2];
        default:return 0}
      return widen(c$1[2])}
    function p_texpr(line_no,et,e){return 0}
    function p_tcommand(param,_bAP_){return has_operations_f}
    function p_ttype(param){return 0}
    var _Wr_=para_talg(p_texpr,p_tcommand,p_ttype);
    function has_operations(_bAO_){return para_tcommand(_Wr_,_bAO_)}
    var
     Smartml_Has_operations=
      [0,pp$7,show$7,equal$8,compare$7,or,add$0,widen,has_operations];
    caml_register_global
     (6495,Smartml_Has_operations,"Smartml__Has_operations");
    function arg(with_annots,t)
     {switch(t[0])
       {case 0:var t$0=t[1];return caml_call1(_zb_,t$0);
        case 1:var t1=t[2],t$1=t[1];return caml_call2(_zc_,t$1,arg(0,t1));
        case 2:
         var t2=t[3],t1$0=t[2],t$2=t[1],_bAF_=arg(0,t2);
         return caml_call3(_zd_,t$2,arg(0,t1$0),_bAF_);
        case 3:
         var
          r=t[1],
          mt_pair=
           function(param,_bAN_)
            {var
              t2=_bAN_[2],
              annot_snd=_bAN_[1],
              t1=param[2],
              annot_fst=param[1];
             return caml_equal(with_annots,_Ws_)
                     ?[0,0,caml_call4(_zH_,annot_fst,annot_snd,t1,t2)]
                     :[0,0,caml_call4(_zH_,0,0,t1,t2)]},
          _bAG_=function(eta){return arg(0,eta)},
          _bAH_=caml_call1(Utils_Control[5],_bAG_),
          _bAI_=caml_call3(Utils_Binary_tree[6],_bAH_,mt_pair,r);
         if(_bAI_[1])throw [0,Assert_failure,_Wt_];
         var t$3=_bAI_[2];
         return t$3;
        case 4:
         var r$0=t[1],match=caml_call1(Michel_Type[54],t);
         if(match){var t$4=match[1];return caml_call1(_zz_,arg(0,t$4))}
         var
          mt_or=
           function(param,_bAM_)
            {var
              t2=_bAM_[2],
              annot_right=_bAM_[1],
              t1=param[2],
              annot_left=param[1];
             return caml_equal(with_annots,_Wu_)
                     ?[0,0,caml_call4(_zI_,annot_left,annot_right,t1,t2)]
                     :[0,0,caml_call4(_zI_,0,0,t1,t2)]},
          _bAJ_=function(eta){return arg(0,eta)},
          _bAK_=caml_call1(Utils_Control[5],_bAJ_),
          _bAL_=caml_call3(Utils_Binary_tree[6],_bAK_,mt_or,r$0);
         if(_bAL_[1])throw [0,Assert_failure,_Wv_];
         var t$5=_bAL_[2];
         return t$5;
        case 5:throw [0,Assert_failure,_Ww_];
        default:var s=t[1];return caml_call1(_zJ_,s)}}
    function pp_stack$0(fmt,param)
     {if(param)
       {var a0=param[1];
        caml_call2(Stdlib_format[123],fmt,_WC_);
        caml_call2(Stdlib_format[123],fmt,_WD_);
        var
         _bAD_=0,
         _bAE_=
          function(sep,x)
           {if(sep)caml_call2(Stdlib_format[123],fmt,_WE_);
            if(x)
             {var x$0=x[1];
              caml_call2(Stdlib_format[13],fmt,cst_Some$67);
              caml_call1(caml_call2(Stdlib_format[123],fmt,_WF_),x$0);
              caml_call2(Stdlib_format[13],fmt,cst$273)}
            else
             caml_call2(Stdlib_format[13],fmt,cst_None$68);
            return 1};
        caml_call3(Stdlib_list[22],_bAE_,_bAD_,a0);
        caml_call2(Stdlib_format[123],fmt,_WG_);
        return caml_call2(Stdlib_format[123],fmt,_WH_)}
      return caml_call2(Stdlib_format[13],fmt,cst_Stack_failed$0)}
    var S=caml_call1(Utils_Control[16],[0]);
    function stack_apply(f)
     {function _bAA_(s)
       {var _bAB_=s[1];
        if(_bAB_)
         {var stack=_bAB_[1],_bAC_=s[2];return [0,caml_call1(f,stack),_bAC_]}
        return caml_call1(Stdlib[2],cst_stack_apply)}
      return caml_call1(S[4],_bAA_)}
    function stack_replace(i,xs)
     {function _bAx_(s)
       {var _bAy_=s[1];
        if(_bAy_)
         {var stack=_bAy_[1],lo=caml_call2(Utils_List[67],i,stack),_bAz_=s[2];
          return [0,[0,caml_call2(Stdlib[37],xs,lo)],_bAz_]}
        return caml_call1(Stdlib[2],cst_stack_replace)}
      return caml_call1(S[4],_bAx_)}
    function stack_remove(i)
     {function _bAr_(s)
       {function err(param)
         {var _bAw_=caml_call4(Stdlib_format[127],_WI_,i,pp_stack$0,s[1]);
          return caml_call1(Stdlib[2],_bAw_)}
        var _bAs_=s[1];
        if(_bAs_)
         {var
           stack=_bAs_[1],
           _bAt_=caml_call3(Utils_List[65],_WJ_,i,stack),
           _bAu_=_bAt_[2];
          if(_bAu_)
           {var s2=_bAu_[2],s1=_bAt_[1],_bAv_=s[2];
            return [0,[0,caml_call2(Stdlib[37],s1,s2)],_bAv_]}
          return err(0)}
        return err(0)}
      return caml_call1(S[4],_bAr_)}
    function emit(instr)
     {function _bAp_(init)
       {var _bAq_=caml_call2(Stdlib[37],init[2],[0,[0,instr],0]);
        return [0,init[1],_bAq_]}
      return caml_call1(S[4],_bAp_)}
    function _WK_(param){var stack=param[1];return caml_call1(S[6],stack)}
    var get_stack=caml_call2(S[28],S[1],_WK_);
    function mi_dig(i)
     {function _bAl_(param)
       {var _bAn_=stack_replace(0,_WL_),_bAo_=stack_remove(i);
        return caml_call2(S[32],_bAo_,_bAn_)}
      var _bAm_=0 === i?caml_call1(S[6],0):1 === i?emit(1):emit([16,i]);
      return caml_call2(S[28],_bAm_,_bAl_)}
    function run_with$0(x)
     {function _bAk_(stack)
       {var s=[0,stack,0],match=caml_call2(S[36],x,s),c=match[2];
        return caml_call1(S[6],[0,[0,[23,c[2]]],c[1]])}
      return caml_call2(S[28],get_stack,_bAk_)}
    function join_stacks(stack1,stack2)
     {if(stack1)
       {var _bAf_=stack1[1];
        if(stack2)
         {var stack2$0=stack2[1],_bAg_=caml_call1(Utils_List[4],stack2$0);
          if(caml_call1(Utils_List[4],_bAf_) === _bAg_)
           {var
             f=
              function(x,match)
               {if(x && match)
                 {var y=match[1],x$0=x[1];if(caml_equal(x$0,y))return [0,x$0]}
                return 0},
             stack=[0,caml_call4(Utils_List[77],0,f,_bAf_,stack2$0)],
             _bAh_=function(s){return [0,stack,s[2]]};
            return caml_call1(S[4],_bAh_)}
          return emit
                  ([5,
                    caml_call5
                     (Stdlib_format[127],
                      _WM_,
                      pp_stack$0,
                      stack1,
                      pp_stack$0,
                      stack2)])}
        var stack$0=_bAf_}
      else
       {if(! stack2)
         {var _bAj_=function(s){return [0,0,s[2]]};
          return caml_call1(S[4],_bAj_)}
        var stack$0=stack2[1]}
      function _bAi_(s){return [0,[0,stack$0],s[2]]}
      return caml_call1(S[4],_bAi_)}
    function apply_tags(xs)
     {function f(i,param)
       {var i$0=i,param$0=param;
        for(;;)
         {if(param$0)
           {if(param$0[1])
             {var param$1=param$0[2],i$1=i$0 + 1 | 0,i$0=i$1,param$0=param$1;
              continue}
            var
             xs=param$0[2],
             _bAb_=f(i$0,xs),
             _bAc_=emit(0),
             _bAd_=mi_dig(i$0),
             _bAe_=caml_call2(S[32],_bAd_,_bAc_);
            return caml_call2(S[32],_bAe_,_bAb_)}
          return caml_call1(S[6],0)}}
      function _bz__(param)
       {var _bAa_=caml_call2(Utils_List[40],Utils_Option[47],xs);
        return stack_replace(caml_call1(Utils_List[4],xs),_bAa_)}
      var _bz$_=f(0,xs);
      return caml_call2(S[28],_bz$_,_bz__)}
    function add_and_apply(xs)
     {var _bz8_=apply_tags(xs),_bz9_=stack_replace(0,xs);
      return caml_call2(S[32],_bz9_,_bz8_)}
    function _WN_(stack)
     {return emit
              ([6,
                [0,caml_call3(Stdlib_format[127],_WP_,pp_stack$0,stack),_WO_]])}
    caml_call2(S[28],get_stack,_WN_);
    function compile_vector(es)
     {function _bzN_(s)
       {var es$0=caml_call1(Utils_List[12],es),s$0=s,es$1=es$0;
        for(;;)
         {if(s$0)
           {var _bzR_=s$0[1];
            if(_bzR_ && es$1)
             {var _bzS_=es$1[1][1];
              if(0 === _bzS_[0])
               {var es$2=es$1[2],x=_bzS_[1],s$1=s$0[2],x$0=_bzR_[1];
                if(caml_string_equal(x$0,x)){var s$0=s$1,es$1=es$2;continue}}}}
          else
           if(! es$1)return caml_call1(S[6],0);
          var
           get_var=
            function(param)
             {var _bz7_=param[1];
              if(0 === _bz7_[0])
               {var x=_bz7_[1];return caml_call1(Utils_Option[15],x)}
              return 0},
           _bzT_=
            function(param)
             {function _bzW_(s)
               {function _bzZ_(es)
                 {if(caml_equal(s,es))return [0,caml_call1(S[6],0)];
                  function _bz2_(i,param){return i}
                  var ixs=caml_call2(Utils_List[21],_bz2_,s);
                  function _bz3_(i)
                   {var _bz5_=caml_call3(Utils_List[65],0,i,s),_bz6_=_bz5_[2];
                    if(_bz6_)
                     {var lo=_bz6_[2],x=_bz6_[1],hi=_bz5_[1];
                      return caml_equal(caml_call2(Stdlib[37],[0,x,hi],lo),es)}
                    throw [0,Assert_failure,_WU_]}
                  var _bz4_=caml_call2(Utils_List[38],_bz3_,ixs);
                  return caml_call2(Utils_Option[17],mi_dig,_bz4_)}
                var
                 _bz0_=caml_call1(Utils_List[12],es$1),
                 _bz1_=caml_call2(Utils_Option[28],get_var,_bz0_);
                return caml_call2(Utils_Option[37],_bz1_,_bzZ_)}
              var
               _bzX_=caml_call1(Utils_List[12],s$0),
               _bzY_=caml_call1(Utils_Option[32],_bzX_);
              return caml_call2(Utils_Option[37],_bzY_,_bzW_)},
           _bzU_=caml_call1(Utils_List[4],es$1),
           _bzV_=
            caml_call1(Utils_List[4],s$0) === _bzU_
             ?caml_call1(Utils_Option[15],0)
             :0,
           r=caml_call2(Utils_Option[37],_bzV_,_bzT_);
          if(r){var r$0=r[1];return r$0}
          return caml_call2(S[20],compile_expr,es$0)}}
      function _bzO_(param)
       {if(param)
         {var s=param[1],_bzQ_=caml_call1(Utils_List[12],s);
          return caml_call1(S[6],_bzQ_)}
        throw [0,Assert_failure,_Xn_]}
      var _bzP_=caml_call2(S[31],get_stack,_bzO_);
      return caml_call2(S[28],_bzP_,_bzN_)}
    function compile_expr(e)
     {var _bw6_=e[1];
      switch(_bw6_[0])
       {case 0:
         var
          x=_bw6_[1],
          _bw7_=
           function(param)
            {if(param)
              {var
                stack=param[1],
                match=caml_call2(Utils_List[72],[0,x],stack);
               if(match){var i=match[1];return mi_dig(i)}
               var _bzM_=caml_call2(Stdlib_format[127],_WV_,x);
               return caml_call1(Stdlib[2],_bzM_)}
             throw [0,Assert_failure,_WW_]};
         return caml_call2(S[31],get_stack,_bw7_);
        case 1:
         var r$0=0,r=e;
         for(;;)
          {var _bw8_=r[1];
           if(1 === _bw8_[0])
            {var
              e$0=_bw8_[3],
              e1=_bw8_[2],
              vs=_bw8_[1],
              r$1=[0,[0,vs,e1],r$0],
              r$0=r$1,
              r=e$0;
             continue}
           var
            bs=caml_call1(Utils_List[12],r$0),
            f$3=
             function(param)
              {var e=param[2],xs=param[1];
               if(0 === xs[0])
                var x=xs[1],xs$0=[0,x,0];
               else
                var xs$1=xs[1],xs$0=xs$1;
               function _bzK_(param){return apply_tags(xs$0)}
               var _bzL_=compile_vector([0,e,0]);
               return caml_call2(S[28],_bzL_,_bzK_)},
            _bw9_=function(param){return compile_vector([0,r,0])},
            _bw__=caml_call2(S[20],f$3,bs);
           return caml_call2(S[28],_bw__,_bw9_)}
        case 2:
         var
          e$1=_bw6_[4],
          t2=_bw6_[3],
          t1=_bw6_[2],
          x$0=_bw6_[1],
          stack=[0,[0,x$0,0]],
          _bw$_=compile_expr(e$1),
          match=caml_call2(S[36],_bw$_,[0,stack,0])[2],
          instrs=match[2],
          code=[0,[23,instrs]],
          _bxa_=stack_replace(0,_WX_),
          _bxb_=arg(0,t2),
          _bxc_=emit([28,arg(0,t1),_bxb_,code]);
         return caml_call2(S[32],_bxc_,_bxa_);
        case 3:
         var l=_bw6_[1],_bxd_=stack_replace(0,_WY_);
         if(typeof l === "number")
          var _bxe_=_Wx_;
         else
          switch(l[0])
           {case 0:var b=l[1],_bxe_=[22,_zf_,caml_call1(_Jw_[3],b)];break;
            case 1:var i=l[1],_bxe_=[22,_zg_,caml_call1(_Jw_[1],i)];break;
            case 2:var i$0=l[1],_bxe_=[22,_zh_,caml_call1(_Jw_[1],i$0)];break;
            case 3:var i$1=l[1],_bxe_=[22,_zi_,caml_call1(_Jw_[1],i$1)];break;
            case 4:var s=l[1],_bxe_=[22,_zj_,caml_call1(_Jw_[4],s)];break;
            case 5:var s$0=l[1],_bxe_=[22,_zp_,caml_call1(_Jw_[4],s$0)];break;
            case 6:var s$1=l[1],_bxe_=[22,_zq_,caml_call1(_Jw_[4],s$1)];break;
            case 7:var s$2=l[1],_bxe_=[22,_zk_,caml_call1(_Jw_[5],s$2)];break;
            case 8:var s$3=l[1],_bxe_=[22,_zl_,caml_call1(_Jw_[5],s$3)];break;
            case 9:var s$4=l[1],_bxe_=[22,_zn_,caml_call1(_Jw_[4],s$4)];break;
            case 10:
             var s$5=l[1],_bxe_=[22,_zm_,caml_call1(_Jw_[4],s$5)];break;
            case 11:
             var s$6=l[1],_bxe_=[22,_zw_,caml_call1(_Jw_[5],s$6)];break;
            case 12:
             var s$7=l[1],_bxe_=[22,_zx_,caml_call1(_Jw_[5],s$7)];break;
            case 13:
             var s$8=l[1],_bxe_=[22,_zy_,caml_call1(_Jw_[5],s$8)];break;
            default:var s$9=l[1],_bxe_=[22,_zr_,caml_call1(_Jw_[4],s$9)]}
         var _bxf_=emit(_bxe_);
         return caml_call2(S[32],_bxf_,_bxd_);
        case 4:
         var
          p=_bw6_[1],
          _bxg_=stack_replace(0,_WZ_),
          _bxh_=function(eta){return arg(0,eta)},
          _bxi_=emit([0,caml_call2(Michel_Expr[5],_bxh_,p)]);
         return caml_call2(S[32],_bxi_,_bxg_);
        case 5:
         var _bxj_=_bw6_[1];
         if(typeof _bxj_ === "number" && 26 === _bxj_)
          {var
            e1$0=_bw6_[2],
            _bxk_=stack_replace(1,_W0_),
            _bxl_=emit(_W1_),
            _bxm_=compile_vector([0,e1$0,0]),
            _bxn_=caml_call2(S[32],_bxm_,_bxl_);
           return caml_call2(S[32],_bxn_,_bxk_)}
         var e1$1=_bw6_[2],switch$0=0,_bxo_=stack_replace(1,_W2_);
         if(typeof _bxj_ === "number")
          if(14 === _bxj_)
           var _bxp_=_Wy_;
          else
           if(2 <= _bxj_)
            {if(26 === _bxj_)throw [0,Assert_failure,_Wz_];switch$0 = 1}
           else
            var _bxp_=_bxj_?_WA_:_WB_;
         else
          switch$0 = 1;
         if(switch$0)
          var
           _bwV_=function(eta){return arg(0,eta)},
           _bxp_=[1,caml_call2(Michel_Expr[11],_bwV_,_bxj_)];
         var
          _bxq_=emit(_bxp_),
          _bxr_=compile_vector([0,e1$1,0]),
          _bxs_=caml_call2(S[32],_bxr_,_bxq_);
         return caml_call2(S[32],_bxs_,_bxo_);
        case 6:
         var
          e1$2=_bw6_[2],
          p$0=_bw6_[1],
          _bxt_=function(s){return [0,0,s[2]]},
          _bxu_=caml_call1(S[4],_bxt_),
          _bxv_=emit([2,p$0]),
          _bxw_=compile_vector([0,e1$2,0]),
          _bxx_=caml_call2(S[32],_bxw_,_bxv_);
         return caml_call2(S[32],_bxx_,_bxu_);
        case 7:
         var
          e2=_bw6_[3],
          e1$3=_bw6_[2],
          p$1=_bw6_[1],
          _bxy_=stack_replace(2,_W3_),
          _bxz_=emit([3,p$1]),
          _bxA_=compile_vector([0,e1$3,[0,e2,0]]),
          _bxB_=caml_call2(S[32],_bxA_,_bxz_);
         return caml_call2(S[32],_bxB_,_bxy_);
        case 8:
         var _bxC_=_bw6_[1];
         if(2 === _bxC_)
          {var
            e3=_bw6_[4],
            e2$0=_bw6_[3],
            e1$4=_bw6_[2],
            _bxD_=stack_replace(3,_W4_),
            _bxE_=emit(_W5_),
            _bxF_=compile_vector([0,e1$4,[0,e2$0,[0,e3,0]]]),
            _bxG_=caml_call2(S[32],_bxF_,_bxE_);
           return caml_call2(S[32],_bxG_,_bxD_)}
         var
          e3$0=_bw6_[4],
          e2$1=_bw6_[3],
          e1$5=_bw6_[2],
          _bxH_=stack_replace(3,_W6_),
          _bxI_=emit([4,_bxC_]),
          _bxJ_=compile_vector([0,e1$5,[0,e2$1,[0,e3$0,0]]]),
          _bxK_=caml_call2(S[32],_bxJ_,_bxI_);
         return caml_call2(S[32],_bxK_,_bxH_);
        case 9:throw [0,Assert_failure,_W7_];
        case 10:
         var es=_bw6_[2],op=_bw6_[1];
         if(typeof op === "number")
          var
           f=
            function(param)
             {if(param)
               {var _bzH_=param[2];
                if(_bzH_)
                 {var xs=_bzH_[2],x1=_bzH_[1],x0=param[1];
                  return [0,[0,x1,[0,x0,xs]]]}}
              return caml_call1(Stdlib[2],cst_swap)},
           _bwW_=stack_apply(f),
           _bwX_=emit(1),
           _bxL_=caml_call2(S[32],_bwX_,_bwW_);
         else
          switch(op[0])
           {case 0:
             var
              n=op[1],
              f$0=
               function(s)
                {var
                  match=caml_call3(Utils_List[65],_WQ_,n - 1 | 0,s),
                  lo=match[2],
                  hi=match[1];
                 if(lo)
                  {var lo$0=lo[2];
                   return [0,caml_call2(Stdlib[37],[0,0,hi],[0,0,lo$0])]}
                 return caml_call1(Stdlib[2],cst_dup)},
              _bwY_=stack_apply(f$0),
              _bwZ_=emit([15,n]),
              _bxL_=caml_call2(S[32],_bwZ_,_bwY_);
             break;
            case 1:
             var
              n$0=op[1],
              f$1=
               function(s)
                {var
                  match=caml_call3(Utils_List[65],_WR_,n$0,s),
                  lo=match[2],
                  hi=match[1];
                 if(lo)
                  {var lo$0=lo[2],x=lo[1];
                   return [0,caml_call2(Stdlib[37],[0,x,hi],lo$0)]}
                 return caml_call1(Stdlib[2],cst_dig)},
              _bw0_=stack_apply(f$1),
              _bw1_=emit([16,n$0]),
              _bxL_=caml_call2(S[32],_bw1_,_bw0_);
             break;
            case 2:
             var
              n$1=op[1],
              f$2=
               function(s)
                {if(n$1 < caml_call1(Utils_List[4],s))
                  {var
                    _bzI_=caml_call3(Utils_List[65],_WS_,n$1 + 1 | 0,s),
                    _bzJ_=_bzI_[1];
                   if(_bzJ_)
                    {var lo=_bzI_[2],hi=_bzJ_[2],x=_bzJ_[1];
                     return [0,caml_call2(Stdlib[37],hi,[0,x,lo])]}
                   return caml_call1(Stdlib[2],cst_dug)}
                 throw [0,Assert_failure,_WT_]},
              _bw2_=stack_apply(f$2),
              _bw3_=emit([17,n$1]),
              _bxL_=caml_call2(S[32],_bw3_,_bw2_);
             break;
            default:
             var
              n$2=op[1],
              _bw4_=stack_replace(n$2,0),
              _bw5_=emit([14,n$2]),
              _bxL_=caml_call2(S[32],_bw5_,_bw4_)}
         var _bxM_=compile_vector(es);
         return caml_call2(S[32],_bxM_,_bxL_);
        case 11:
         var
          xs=_bw6_[1],
          xs$0=caml_call1(Utils_Binary_tree[41],xs),
          n$3=caml_call1(Utils_List[4],xs$0),
          _bxN_=
           function(param)
            {function _bzF_(param){return stack_replace(n$3,_W8_)}
             var _bzG_=emit([25,n$3]);
             return caml_call2(S[28],_bzG_,_bzF_)},
          _bxO_=function(_bzE_){return _bzE_[2]},
          _bxP_=compile_vector(caml_call2(Utils_List[20],_bxO_,xs$0));
         return caml_call2(S[28],_bxP_,_bxN_);
        case 12:throw [0,Assert_failure,_W9_];
        case 13:
         var
          xs$1=_bw6_[2],
          t=_bw6_[1],
          mk=
           function(x)
            {var
              _bzA_=stack_replace(2,_W__),
              _bzB_=emit(_W$_),
              _bzC_=compile_vector([0,x,0]),
              _bzD_=caml_call2(S[32],_bzC_,_bzB_);
             return caml_call2(S[32],_bzD_,_bzA_)},
          _bxQ_=caml_call1(Utils_List[12],xs$1),
          _bxR_=caml_call2(S[20],mk,_bxQ_),
          _bxS_=stack_replace(0,_Xa_),
          _bxT_=emit([0,[3,arg(0,t)]]),
          _bxU_=caml_call2(S[32],_bxT_,_bxS_);
         return caml_call2(S[32],_bxU_,_bxR_);
        case 14:
         var
          xs$2=_bw6_[2],
          t$0=_bw6_[1],
          mk$0=
           function(x)
            {var
              _bzu_=stack_replace(2,_Xb_),
              _bzv_=emit(_Xc_),
              _bzw_=compile_vector([0,x,0]),
              _bzx_=emit([22,_zf_,caml_call1(_Jw_[3],1)]),
              _bzy_=caml_call2(S[32],_bzx_,_bzw_),
              _bzz_=caml_call2(S[32],_bzy_,_bzv_);
             return caml_call2(S[32],_bzz_,_bzu_)},
          _bxV_=caml_call1(Utils_List[12],xs$2),
          _bxW_=caml_call2(S[20],mk$0,_bxV_),
          _bxX_=stack_replace(0,_Xd_),
          _bxY_=emit([0,[4,arg(0,t$0)]]),
          _bxZ_=caml_call2(S[32],_bxY_,_bxX_);
         return caml_call2(S[32],_bxZ_,_bxW_);
        case 15:
         var
          entries=_bw6_[3],
          tv=_bw6_[2],
          tk=_bw6_[1],
          mk_entry=
           function(param)
            {var
              v=param[2],
              k=param[1],
              _bzm_=stack_replace(3,_Xe_),
              _bzn_=emit(_Xf_),
              _bzo_=compile_vector([0,k,0]),
              _bzp_=emit(_Xg_),
              _bzq_=compile_vector([0,v,0]),
              _bzr_=caml_call2(S[32],_bzq_,_bzp_),
              _bzs_=caml_call2(S[32],_bzr_,_bzo_),
              _bzt_=caml_call2(S[32],_bzs_,_bzn_);
             return caml_call2(S[32],_bzt_,_bzm_)},
          _bx0_=caml_call1(Utils_List[12],entries),
          _bx1_=caml_call2(S[20],mk_entry,_bx0_),
          _bx2_=stack_replace(0,_Xh_),
          _bx3_=arg(0,tv),
          _bx4_=emit([0,[5,arg(0,tk),_bx3_]]),
          _bx5_=caml_call2(S[32],_bx4_,_bx2_);
         return caml_call2(S[32],_bx5_,_bx1_);
        case 16:throw [0,Assert_failure,_Xi_];
        case 17:throw [0,Assert_failure,_Xj_];
        case 18:var es$0=_bw6_[1];return compile_vector(es$0);
        case 19:throw [0,Assert_failure,_Xk_];
        case 20:
         var
          e$2=_bw6_[2],
          n$4=_bw6_[1],
          _bx6_=stack_replace(1,caml_call2(Utils_List[84],n$4,0)),
          _bx7_=emit([24,caml_call2(Utils_List[84],n$4,1)]),
          _bx8_=compile_vector([0,e$2,0]),
          _bx9_=caml_call2(S[32],_bx8_,_bx7_);
         return caml_call2(S[32],_bx9_,_bx6_);
        case 21:
         var
          r$2=_bw6_[3],
          l$0=_bw6_[2],
          c=_bw6_[1],
          _bx__=
           function(param)
            {function _bze_(param)
              {function _bzg_(param)
                {var sl=param[2],l=param[1];
                 function _bzi_(param)
                  {var sr=param[2],r=param[1];
                   function _bzk_(param){return emit([18,l,r])}
                   var _bzl_=join_stacks(sl,sr);
                   return caml_call2(S[28],_bzl_,_bzk_)}
                 var _bzj_=run_with$0(compile_vector([0,r$2,0]));
                 return caml_call2(S[28],_bzj_,_bzi_)}
               var _bzh_=run_with$0(compile_vector([0,l$0,0]));
               return caml_call2(S[28],_bzh_,_bzg_)}
             var _bzf_=stack_remove(0);
             return caml_call2(S[28],_bzf_,_bze_)},
          _bx$_=compile_vector([0,c,0]);
         return caml_call2(S[28],_bx$_,_bx__);
        case 22:
         var
          r$3=_bw6_[4],
          l$1=_bw6_[3],
          x$1=_bw6_[2],
          c$0=_bw6_[1],
          _bya_=
           function(param)
            {function _by6_(param)
              {function _by8_(param)
                {var sl=param[2],l=param[1];
                 function _by__(param)
                  {var sr=param[2],r=param[1];
                   function _bzc_(param){return emit([20,l,r])}
                   var _bzd_=join_stacks(sl,sr);
                   return caml_call2(S[28],_bzd_,_bzc_)}
                 var
                  _by$_=compile_vector([0,r$3,0]),
                  _bza_=add_and_apply([0,x$1,0]),
                  _bzb_=run_with$0(caml_call2(S[32],_bza_,_by$_));
                 return caml_call2(S[28],_bzb_,_by__)}
               var _by9_=run_with$0(compile_vector([0,l$1,0]));
               return caml_call2(S[28],_by9_,_by8_)}
             var _by7_=stack_remove(0);
             return caml_call2(S[28],_by7_,_by6_)},
          _byb_=compile_vector([0,c$0,0]);
         return caml_call2(S[28],_byb_,_bya_);
        case 23:
         var
          r$4=_bw6_[5],
          xr=_bw6_[4],
          l$2=_bw6_[3],
          xl=_bw6_[2],
          c$1=_bw6_[1],
          _byc_=
           function(param)
            {function _byU_(param)
              {function _byW_(param)
                {var sl=param[2],l=param[1];
                 function _by0_(param)
                  {var sr=param[2],r=param[1];
                   function _by4_(param){return emit([19,l,r])}
                   var _by5_=join_stacks(sl,sr);
                   return caml_call2(S[28],_by5_,_by4_)}
                 var
                  _by1_=compile_vector([0,r$4,0]),
                  _by2_=add_and_apply([0,xr,0]),
                  _by3_=run_with$0(caml_call2(S[32],_by2_,_by1_));
                 return caml_call2(S[28],_by3_,_by0_)}
               var
                _byX_=compile_vector([0,l$2,0]),
                _byY_=add_and_apply([0,xl,0]),
                _byZ_=run_with$0(caml_call2(S[32],_byY_,_byX_));
               return caml_call2(S[28],_byZ_,_byW_)}
             var _byV_=stack_remove(0);
             return caml_call2(S[28],_byV_,_byU_)},
          _byd_=compile_vector([0,c$1,0]);
         return caml_call2(S[28],_byd_,_byc_);
        case 24:
         var
          r$5=_bw6_[5],
          l$3=_bw6_[4],
          xs$3=_bw6_[3],
          x$2=_bw6_[2],
          c$2=_bw6_[1],
          _bye_=
           function(param)
            {function _byK_(param)
              {function _byM_(param)
                {var sl=param[2],l=param[1];
                 function _byQ_(param)
                  {var sr=param[2],r=param[1];
                   function _byS_(param){return emit([21,l,r])}
                   var _byT_=join_stacks(sl,sr);
                   return caml_call2(S[28],_byT_,_byS_)}
                 var _byR_=run_with$0(compile_vector([0,r$5,0]));
                 return caml_call2(S[28],_byR_,_byQ_)}
               var
                _byN_=compile_vector([0,l$3,0]),
                _byO_=add_and_apply([0,x$2,[0,xs$3,0]]),
                _byP_=run_with$0(caml_call2(S[32],_byO_,_byN_));
               return caml_call2(S[28],_byP_,_byM_)}
             var _byL_=stack_remove(0);
             return caml_call2(S[28],_byL_,_byK_)},
          _byf_=compile_vector([0,c$2,0]);
         return caml_call2(S[28],_byf_,_bye_);
        case 25:
         var
          step=_bw6_[3],
          xs$4=_bw6_[2],
          init=_bw6_[1],
          _byg_=
           function(param)
            {function _byE_(param)
              {function _byG_(param)
                {var instr=param[1];return emit([10,instr])}
               var
                _byH_=compile_vector([0,step,0]),
                _byI_=apply_tags(xs$4),
                _byJ_=run_with$0(caml_call2(S[32],_byI_,_byH_));
               return caml_call2(S[28],_byJ_,_byG_)}
             var _byF_=stack_remove(0);
             return caml_call2(S[28],_byF_,_byE_)},
          _byh_=compile_vector(init);
         return caml_call2(S[28],_byh_,_byg_);
        case 26:
         var
          step$0=_bw6_[3],
          xs$5=_bw6_[2],
          init$0=_bw6_[1],
          _byi_=
           function(param)
            {function _byy_(param)
              {var
                instr=param[1],
                _byC_=stack_replace(1,0),
                _byD_=emit([12,instr]);
               return caml_call2(S[32],_byD_,_byC_)}
             var
              _byz_=compile_vector([0,step$0,0]),
              _byA_=apply_tags(xs$5),
              _byB_=run_with$0(caml_call2(S[32],_byA_,_byz_));
             return caml_call2(S[28],_byB_,_byy_)},
          _byj_=compile_vector(init$0);
         return caml_call2(S[28],_byj_,_byi_);
        case 27:
         var
          step$1=_bw6_[3],
          xs$6=_bw6_[2],
          init$1=_bw6_[1],
          _byk_=
           function(param)
            {function _byu_(param){var instr=param[1];return emit([13,instr])}
             var
              _byv_=compile_vector([0,step$1,0]),
              _byw_=apply_tags(xs$6),
              _byx_=run_with$0(caml_call2(S[32],_byw_,_byv_));
             return caml_call2(S[28],_byx_,_byu_)},
          _byl_=compile_vector(init$1);
         return caml_call2(S[28],_byl_,_byk_);
        case 28:
         var
          e3$1=_bw6_[4],
          e2$2=_bw6_[3],
          e1$6=_bw6_[2],
          match$0=_bw6_[1],
          body=match$0[4],
          parameter_and_storage=match$0[3],
          tstorage=match$0[2],
          tparameter=match$0[1],
          stack$0=[0,[0,parameter_and_storage,0]],
          _bym_=compile_expr(body),
          match$1=caml_call2(S[36],_bym_,[0,stack$0,0])[2],
          instrs$0=match$1[2],
          _byn_=function(eta){return arg(0,eta)},
          tparameter$0=caml_call2(Utils_Control[4],_byn_,tparameter),
          tstorage$0=arg(0,tstorage),
          code$0=[0,[23,instrs$0]],
          _byo_=stack_replace(3,_Xl_),
          _byp_=emit([29,tparameter$0,tstorage$0,code$0]),
          _byq_=compile_vector([0,e1$6,[0,e2$2,[0,e3$1,0]]]),
          _byr_=caml_call2(S[32],_byq_,_byp_);
         return caml_call2(S[32],_byr_,_byo_);
        case 29:throw [0,Assert_failure,_Xm_];
        default:
         var
          e$3=_bw6_[2],
          c$3=_bw6_[1],
          _bys_=compile_expr(e$3),
          _byt_=emit([6,c$3]);
         return caml_call2(S[32],_byt_,_bys_)}}
    function compile_contract(storage,lazy_entry_points,param,_bwR_)
     {var
       match=_bwR_[1],
       body=match[4],
       parameter_and_storage=match[3],
       tstorage=match[2],
       tparameter=match[1],
       s=[0,[0,[0,parameter_and_storage,0]],0],
       _bwS_=compile_expr(body),
       match$0=caml_call2(S[36],_bwS_,s)[2],
       instrs=match$0[2];
      function _bwT_(_bwU_){return arg(_Xo_,_bwU_)}
      var
       tparameter$0=caml_call2(Utils_Control[4],_bwT_,tparameter),
       tstorage$0=arg(_Xp_,tstorage),
       code=[0,[23,instrs]],
       contract=[0,tparameter$0,tstorage$0,code,lazy_entry_points,storage];
      return typecheck_contract(0,contract)}
    var Smartml_Michel_compiler=[0,compile_contract];
    caml_register_global
     (6497,Smartml_Michel_compiler,"Smartml__Michel_compiler");
    function of_mtype_f(param)
     {switch(param[0])
       {case 0:var t=param[1];return [0,t];
        case 1:
         var _bwH_=param[1];
         if(_bwH_){var t1=param[2];return [1,_bwH_,t1]}
         var t$0=param[2];
         return caml_call1(Michel_Type[45],t$0);
        case 2:
         var _bwI_=param[1];
         if(typeof _bwI_ === "number")
          {var t2=param[3],t1$0=param[2];return [2,_bwI_,t1$0,t2]}
         else
          {if(0 === _bwI_[0])
            {var
              snd=param[3],
              fst=param[2],
              annot_snd=_bwI_[2],
              annot_fst=_bwI_[1],
              f=
               function(param)
                {var _bwP_=param[1];
                 if(! _bwP_)
                  {var _bwQ_=param[2];
                   if(3 === _bwQ_[0]){var r=_bwQ_[1];return r}}
                 var t=param[2];
                 return [0,[0,_bwP_,t]]},
              _bwJ_=f([0,annot_snd,snd]),
              _bwK_=f([0,annot_fst,fst]);
             return caml_call2(Michel_Type[41],_bwK_,_bwJ_)}
           var
            right=param[3],
            left=param[2],
            annot_right=_bwI_[2],
            annot_left=_bwI_[1],
            f$0=
             function(param)
              {var _bwN_=param[1];
               if(! _bwN_)
                {var _bwO_=param[2];
                 if(4 === _bwO_[0]){var r=_bwO_[1];return r}}
               var t=param[2];
               return [0,[0,_bwN_,t]]},
            _bwL_=f$0([0,annot_right,right]),
            _bwM_=f$0([0,annot_left,left]);
           return caml_call2(Michel_Type[40],_bwM_,_bwL_)}
        default:var s=param[1];return caml_call1(Michel_Type[14],s)}}
    var
     of_mtype$0=cata_mtype_stripped(of_mtype_f),
     pp_stack$1=function _bwG_(_bwE_,_bwF_){return _bwG_.fun(_bwE_,_bwF_)},
     show_stack$0=function _bwD_(_bwC_){return _bwD_.fun(_bwC_)};
    caml_update_dummy
     (pp_stack$1,
      function(fmt,param)
       {if(param)
         {var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_Xu_);
          caml_call2(Stdlib_format[123],fmt,_Xq_);
          var
           _bwA_=0,
           _bwB_=
            function(sep,x)
             {if(sep)caml_call2(Stdlib_format[123],fmt,_Xr_);
              caml_call1(caml_call2(Stdlib_format[123],fmt,_Xs_),x);
              return 1};
          caml_call3(Stdlib_list[22],_bwB_,_bwA_,a0);
          caml_call2(Stdlib_format[123],fmt,_Xt_);
          return caml_call2(Stdlib_format[123],fmt,_Xv_)}
        return caml_call2(Stdlib_format[13],fmt,cst_Stack_failed$1)});
    caml_update_dummy
     (show_stack$0,
      function(x){return caml_call3(Stdlib_format[127],_Xw_,pp_stack$1,x)});
    function var_vector_expr(xs)
     {var _bwz_=caml_call2(Utils_List[20],Michel_Expr[81],xs);
      return caml_call1(Michel_Expr[106],_bwz_)}
    function lets_some(bs,r)
     {if(bs)
       {var _bww_=bs[1];
        if(0 === _bww_[0])
         {var bs$0=bs[2],c=_bww_[1],_bwx_=lets_some(bs$0,r);
          return caml_call2(Michel_Expr[116],c,_bwx_)}
        var bs$1=bs[2],e=_bww_[2],p=_bww_[1],_bwy_=lets_some(bs$1,r);
        return caml_call3(Michel_Expr[88],p,e,_bwy_)}
      return r}
    function p_vector_some(xs)
     {return [1,caml_call2(Utils_List[20],Utils_Option[13],xs)]}
    function op_vector(st,param,op,xs)
     {var
       n_out=param[2],
       n_in=param[1],
       match=caml_call3(Utils_List[65],_Xx_,n_in,xs),
       lo=match[2],
       hi=match[1],
       _bws_=caml_call2(Utils_List[84],n_out,cst_x),
       _bwt_=caml_call1(Michel_Transformer[1],st),
       hi$0=caml_call2(Utils_List[20],_bwt_,_bws_),
       _bwu_=[0,caml_call2(Stdlib[37],hi$0,lo)],
       _bwv_=[0,caml_call1(op,caml_call2(Utils_List[20],Michel_Expr[81],hi))];
      return [0,
              [0,
               [1,[1,caml_call2(Utils_List[20],Utils_Option[13],hi$0)],_bwv_],
               0],
              _bwu_]}
    function op_var(st,n_in,op,xs)
     {var
       match=caml_call3(Utils_List[65],_Xy_,n_in,xs),
       lo=match[2],
       hi=match[1],
       out=caml_call2(Michel_Transformer[1],st,cst_x$0);
      return [0,
              [0,
               [1,
                [0,[0,out]],
                [0,
                 caml_call1(op,caml_call2(Utils_List[20],Michel_Expr[81],hi))]],
               0],
              [0,[0,out,lo]]]}
    function op0(st,op)
     {function _bwp_(param){if(param)throw [0,Assert_failure,_Xz_];return op}
      var _bwq_=0;
      return function(_bwr_){return op_var(st,_bwq_,_bwp_,_bwr_)}}
    function op1(st,op)
     {function _bwm_(param)
       {if(param && ! param[2]){var x=param[1];return caml_call1(op,x)}
        throw [0,Assert_failure,_XA_]}
      var _bwn_=1;
      return function(_bwo_){return op_var(st,_bwn_,_bwm_,_bwo_)}}
    function lets_some_last(bs)
     {var _bwj_=caml_call1(Utils_List[70],bs),_bwk_=_bwj_[2],_bwl_=_bwj_[1];
      if(0 === _bwk_[0])throw [0,Assert_failure,_XD_];
      var r=_bwk_[2];
      return lets_some(_bwl_,r)}
    function combine_branches(st,param,_bv__)
     {var s2=_bv__[2],bs2=_bv__[1],s1=param[2],bs1=param[1];
      if(s1)
       {var _bv$_=s1[1];
        if(s2)
         {var s2$0=s2[1],_bwa_=caml_call1(Utils_List[4],s2$0);
          if(caml_call1(Utils_List[4],_bv$_) === _bwa_)
           {var
             s=caml_call3(Michel_Transformer[2],st,cst_s,_bv$_),
             _bwb_=lets_some(bs2,var_vector_expr(s2$0)),
             _bwc_=lets_some(bs1,var_vector_expr(_bv$_));
            return [0,p_vector_some(s),_bwc_,_bwb_,[0,s]]}
          var
           e1=lets_some(bs1,caml_call1(Michel_Expr[81],cst$274)),
           e2=lets_some(bs2,caml_call1(Michel_Expr[81],cst$275)),
           _bwd_=
            caml_call9
             (Stdlib_format[127],
              _XE_,
              pp_stack$1,
              s1,
              pp_stack$1,
              s2,
              Michel_Expr[64],
              e1,
              Michel_Expr[64],
              e2);
          return caml_call1(Stdlib[2],_bwd_)}
        var
         s$0=caml_call3(Michel_Transformer[2],st,cst_s$0,_bv$_),
         _bwe_=lets_some_last(bs2),
         _bwf_=lets_some(bs1,var_vector_expr(_bv$_));
        return [0,p_vector_some(s$0),_bwf_,_bwe_,[0,s$0]]}
      if(s2)
       {var
         s2$1=s2[1],
         s$1=caml_call3(Michel_Transformer[2],st,cst_s$1,s2$1),
         _bwg_=lets_some(bs2,var_vector_expr(s2$1)),
         _bwh_=lets_some_last(bs1);
        return [0,p_vector_some(s$1),_bwh_,_bwg_,[0,s$1]]}
      var _bwi_=lets_some_last(bs2);
      return [0,p_dummy,lets_some_last(bs1),_bwi_,0]}
    function dip(n,body,s)
     {var
       match=caml_call2(Base_List[58],s,n),
       lo=match[2],
       hi=match[1],
       match$0=caml_call1(body,lo),
       lo$0=match$0[2],
       bs=match$0[1];
      if(lo$0)
       var lo$1=lo$0[1],_bv9_=[0,caml_call2(Stdlib[37],hi,lo$1)];
      else
       var _bv9_=lo$0;
      return [0,bs,_bv9_]}
    function sp_failwith$0(param)
     {if(param)
       {var e=param[1],_bv8_=caml_call1(Michel_Expr[81],e);
        return [0,[0,[1,p_dummy,caml_call2(Michel_Expr[77],0,_bv8_)],0],0]}
      throw [0,Assert_failure,_XI_]}
    function never$1(param)
     {if(param)
       {var e=param[1],_bv7_=caml_call1(Michel_Expr[81],e);
        return [0,[0,[1,p_dummy,caml_call2(Michel_Expr[77],1,_bv7_)],0],0]}
      throw [0,Assert_failure,_XJ_]}
    function drop(st,n)
     {return function(xs$1)
       {var
         n_out=caml_call1(Utils_List[4],xs$1) - n | 0 | 0,
         _bv5_=caml_call2(Utils_List[84],n_out,cst_x$1);
        function _bv6_(param)
         {return caml_call2(Michel_Transformer[1],st,cst_x$2)}
        var
         xs=caml_call2(Utils_List[20],_bv6_,_bv5_),
         xs$0=caml_call2(Utils_List[20],Michel_Expr[81],xs$1);
        return [0,
                [0,
                 [1,
                  [1,caml_call2(Utils_List[20],Utils_Option[13],xs)],
                  [0,[10,[3,n],xs$0]]],
                 0],
                [0,xs]]}}
    function of_mliteral(t,literal)
     {var t$0=caml_call1(Utils_Control[15][40],t),_bvM_=t$0[1];
      switch(_bvM_[0])
       {case 0:
         var _bvN_=_bvM_[1];
         if(typeof _bvN_ === "number")
          switch(_bvN_)
           {case 0:
             if(typeof literal === "number" && ! literal)
              return caml_call1(Michel_Expr[80],0);
             break;
            case 1:
             if(typeof literal !== "number" && 1 === literal[0])
              return literal[1]?Michel_Expr[103]:Michel_Expr[104];
             break;
            case 2:
             if(typeof literal !== "number" && 0 === literal[0])
              {var i=literal[1];return caml_call1(Michel_Expr[80],[1,i])}
             break;
            case 3:
             if(typeof literal !== "number" && 0 === literal[0])
              {var i$0=literal[1];return caml_call1(Michel_Expr[80],[2,i$0])}
             break;
            case 4:
             if(typeof literal !== "number" && 0 === literal[0])
              {var i$1=literal[1];return caml_call1(Michel_Expr[80],[3,i$1])}
             break;
            case 5:
             if(typeof literal !== "number" && 2 === literal[0])
              {var b=literal[1];return caml_call1(Michel_Expr[80],[4,b])}
             break;
            case 6:
             if(typeof literal !== "number" && 3 === literal[0])
              {var b$0=literal[1];return caml_call1(Michel_Expr[80],[7,b$0])}
             break;
            case 8:
             if(typeof literal !== "number" && 2 === literal[0])
              {var x=literal[1];return caml_call1(Michel_Expr[80],[10,x])}
             break;
            case 9:
             if(typeof literal !== "number" && 2 === literal[0])
              {var x$0=literal[1];return caml_call1(Michel_Expr[80],[9,x$0])}
             break;
            case 11:
             if(typeof literal !== "number" && 2 === literal[0])
              {var b$1=literal[1];return caml_call1(Michel_Expr[80],[5,b$1])}
             break;
            case 12:
             if(typeof literal !== "number" && 2 === literal[0])
              {var b$2=literal[1];return caml_call1(Michel_Expr[80],[6,b$2])}
             break;
            case 13:
             if(typeof literal !== "number" && 2 === literal[0])
              {var x$1=literal[1];return caml_call1(Michel_Expr[80],[14,x$1])}
             break;
            case 16:
             if(typeof literal !== "number" && 3 === literal[0])
              {var b$3=literal[1];return caml_call1(Michel_Expr[80],[11,b$3])}
             break;
            case 17:
             if(typeof literal !== "number" && 3 === literal[0])
              {var b$4=literal[1];return caml_call1(Michel_Expr[80],[12,b$4])}
             break;
            case 18:
             if(typeof literal !== "number" && 3 === literal[0])
              {var b$5=literal[1];return caml_call1(Michel_Expr[80],[13,b$5])}
             break
            }
         break;
        case 1:
         switch(_bvM_[1])
          {case 0:
            var _bvO_=_bvM_[2];
            if(typeof literal === "number")
             {if(0 !== literal)
               {var _bvP_=caml_call1(of_mtype$0,_bvO_);
                return caml_call1(Michel_Expr[99],_bvP_)}}
            else
             if(7 === literal[0])
              {var x$2=literal[1];return caml_call1(Michel_Expr[98],x$2)}
            break;
           case 1:
            if(typeof literal !== "number" && 8 === literal[0])
             {var xs=literal[1],t$1=_bvM_[2],_bvQ_=caml_call1(of_mtype$0,t$1);
              return caml_call2(Michel_Expr[82],_bvQ_,xs)}
            break;
           case 2:
            if(typeof literal !== "number" && 8 === literal[0])
             {var
               xs$0=literal[1],
               t$2=_bvM_[2],
               _bvR_=caml_call1(of_mtype$0,t$2);
              return caml_call2(Michel_Expr[83],_bvR_,xs$0)}
            break
           }
         break;
        case 2:
         var _bvS_=_bvM_[1];
         if(typeof _bvS_ === "number")
          {if(1 === _bvS_)
            {var _bvT_=_bvM_[3],_bvU_=_bvM_[2];
             if(typeof literal !== "number")
              switch(literal[0])
               {case 8:
                 if(literal[1])throw [0,Assert_failure,_XL_];
                 var
                  _bvV_=caml_call1(of_mtype$0,_bvT_),
                  _bvW_=caml_call1(of_mtype$0,_bvU_);
                 return caml_call3(Michel_Expr[84],_bvW_,_bvV_,0);
                case 11:
                 var
                  xs$1=literal[1],
                  _bvX_=caml_call1(of_mtype$0,_bvT_),
                  _bvY_=caml_call1(of_mtype$0,_bvU_);
                 return caml_call3(Michel_Expr[84],_bvY_,_bvX_,xs$1)
                }}}
         else
          if(0 === _bvS_[0])
           {if(typeof literal !== "number" && 4 === literal[0])
             {var
               l2=literal[2],
               l1=literal[1],
               annot_snd=_bvS_[2],
               annot_fst=_bvS_[1];
              return caml_call4(Michel_Expr[112],annot_fst,annot_snd,l1,l2)}}
          else
           {var _bv1_=_bvS_[2],_bv2_=_bvS_[1],_bvZ_=_bvM_[3],_bv0_=_bvM_[2];
            if(typeof literal !== "number")
             switch(literal[0])
              {case 5:
                var x$3=literal[1],_bv3_=caml_call1(of_mtype$0,_bvZ_);
                return caml_call4(Michel_Expr[100],_bv2_,_bv1_,_bv3_,x$3);
               case 6:
                var x$4=literal[1],_bv4_=caml_call1(of_mtype$0,_bv0_);
                return caml_call4(Michel_Expr[101],_bv2_,_bv1_,_bv4_,x$4)
               }}
         break
        }
      throw [0,Assert_failure,_XK_]}
    function lets_some_var(bs,s)
     {if(s)
       {var _bvL_=s[1];
        if(_bvL_ && ! _bvL_[2])
         {var r=_bvL_[1];return lets_some(bs,caml_call1(Michel_Expr[81],r))}
        throw [0,Assert_failure,_XM_]}
      return lets_some_last(bs)}
    function decompile_contract(st,param)
     {var
       code=param[3],
       tstorage=param[2],
       tparameter=param[1],
       tparameter$0=caml_call2(Utils_Control[4],of_mtype$0,tparameter),
       tstorage$0=caml_call1(of_mtype$0,tstorage),
       ps=caml_call2(Michel_Transformer[1],st,cst_ps$0),
       _buw_=[0,ps,0],
       match=
        caml_call1
         (caml_call1
           (cata_tinstr
             ([0,
               function(_bux_)
                {function prim1(st,f)
                  {return op1(st,function(x){return [5,f,x]})}
                 function prim2(st,f)
                  {function _bvH_(param)
                    {if(param)
                      {var _bvK_=param[2];
                       if(_bvK_ && ! _bvK_[2])
                        {var x2=_bvK_[1],x1=param[1];return [7,f,x1,x2]}}
                     throw [0,Assert_failure,_XB_]}
                   var _bvI_=2;
                   return function(_bvJ_){return op_var(st,_bvI_,_bvH_,_bvJ_)}}
                 return function(instr)
                  {if(typeof instr === "number")
                    switch(instr)
                     {case 0:return drop(st,1);
                      case 1:
                       var _buA_=function(xs){return [10,0,xs]};
                       return function(_buY_)
                        {return op_vector(st,_XN_,_buA_,_buY_)};
                      case 2:
                       return caml_call1(Stdlib[2],cst_decompile_unresolved_CONCA);
                      default:
                       return caml_call1(Stdlib[2],cst_decompiler_TODO_LEVEL)}
                   else
                    switch(instr[0])
                     {case 0:
                       var p=instr[1],f=caml_call2(Michel_Expr[5],of_mtype$0,p);
                       return op0(st,[4,f]);
                      case 1:
                       var _buB_=instr[1];
                       if(typeof _buB_ === "number" && 26 === _buB_)
                        {var
                          _buC_=
                           function(param)
                            {if(param && ! param[2]){var v=param[1];return [5,26,v]}
                             throw [0,Assert_failure,_XO_]};
                         return function(_bvD_)
                          {return op_vector(st,_XP_,_buC_,_bvD_)}}
                       return prim1
                               (st,caml_call2(Michel_Expr[11],of_mtype$0,_buB_));
                      case 2:return instr[1]?never$1:sp_failwith$0;
                      case 3:var p$0=instr[1];return prim2(st,p$0);
                      case 4:
                       var _buD_=instr[1];
                       if(2 === _buD_)
                        {var
                          _buE_=
                           function(param)
                            {if(param)
                              {var _bvB_=param[2];
                               if(_bvB_)
                                {var _bvC_=_bvB_[2];
                                 if(_bvC_ && ! _bvC_[2])
                                  {var v=_bvC_[1],k=_bvB_[1],m=param[1];return [8,2,m,k,v]}}}
                             throw [0,Assert_failure,_XQ_]};
                         return function(_bvA_)
                          {return op_vector(st,_XR_,_buE_,_bvA_)}}
                       var
                        _buy_=
                         function(param)
                          {if(param)
                            {var _bvy_=param[2];
                             if(_bvy_)
                              {var _bvz_=_bvy_[2];
                               if(_bvz_ && ! _bvz_[2])
                                {var x3=_bvz_[1],x2=_bvy_[1],x1=param[1];
                                 return [8,_buD_,x1,x2,x3]}}}
                           throw [0,Assert_failure,_XC_]},
                        _buz_=3;
                       return function(_bvx_){return op_var(st,_buz_,_buy_,_bvx_)};
                      case 5:throw [0,Assert_failure,_XS_];
                      case 6:
                       var c=instr[1];
                       return function(s){return [0,[0,[0,c],0],[0,s]]};
                      case 7:
                       var _buF_=instr[1];
                       if(! caml_string_notequal(_buF_[1],cst_CONCAT$3))
                        {var _buI_=_buF_[3];
                         if(_buI_)
                          {var _buJ_=_buI_[2];
                           if(_buJ_)
                            {if(! _buJ_[2])
                              {var _buK_=_buF_[4];
                               if(_buK_ && ! _buK_[2])return prim2(st,11)}}
                           else
                            {var _buL_=_buF_[4];
                             if(_buL_ && ! _buL_[2])return prim1(st,14)}}}
                       var
                        _buG_=caml_call1(show_instr,[0,instr]),
                        _buH_=
                         caml_call2(Stdlib[28],cst_decompiler_TODO_inline_Mic,_buG_);
                       return caml_call1(Stdlib[2],_buH_);
                      case 8:
                       var instr$0=instr[1],_buM_=1;
                       return function(_bvw_){return dip(_buM_,instr$0,_bvw_)};
                      case 9:
                       var instr$1=instr[2],n=instr[1];
                       return function(_bvv_){return dip(n,instr$1,_bvv_)};
                      case 10:
                       var body=instr[1];
                       return function(init)
                        {var
                          match=
                           caml_call3(Michel_Transformer[2],st,cst_s$3,init);
                         if(match)
                          {var
                            s=match[2],
                            match$0=caml_call1(body,s),
                            s_out=match$0[2],
                            bs=match$0[1];
                           if(s_out)
                            {var
                              step=s_out[1],
                              _bvp_=caml_call1(Utils_List[9],init),
                              r=caml_call3(Michel_Transformer[2],st,cst_r$0,_bvp_),
                              _bvq_=caml_call1(Utils_List[4],init);
                             if(caml_call1(Utils_List[4],step) === _bvq_)
                              {var
                                _bvr_=lets_some(bs,var_vector_expr(step)),
                                _bvs_=caml_call2(Utils_List[20],Utils_Option[13],s),
                                _bvt_=caml_call2(Utils_List[20],Michel_Expr[81],init),
                                _bvu_=caml_call3(Michel_Expr[74],_bvt_,_bvs_,_bvr_);
                               return [0,[0,[1,p_vector_some(r),_bvu_],0],[0,r]]}
                             throw [0,Assert_failure,_XF_]}
                           return [0,bs,0]}
                         throw [0,Assert_failure,_XG_]};
                      case 11:
                       return caml_call1(Stdlib[2],cst_decompiler_TODO_LOOP_LEFT);
                      case 12:
                       var body$0=instr[1];
                       return function(input)
                        {if(input)
                          {var
                            s=caml_call3(Michel_Transformer[2],st,cst_s$5,input),
                            match=caml_call1(body$0,s),
                            s_out=match[2],
                            bs=match[1];
                           if(s_out)
                            {var
                              step=s_out[1],
                              r=caml_call3(Michel_Transformer[2],st,cst_r$2,step),
                              _bvl_=lets_some(bs,var_vector_expr(step)),
                              _bvm_=caml_call2(Utils_List[20],Utils_Option[13],s),
                              _bvn_=caml_call2(Utils_List[20],Michel_Expr[81],input),
                              _bvo_=caml_call3(Michel_Expr[118],_bvn_,_bvm_,_bvl_);
                             return [0,[0,[1,p_vector_some(r),_bvo_],0],[0,r]]}
                           return [0,bs,0]}
                         return caml_call1(Stdlib[2],cst_iter_over)};
                      case 13:
                       var body$1=instr[1];
                       return function(input)
                        {if(input)
                          {var
                            s=caml_call3(Michel_Transformer[2],st,cst_s$4,input),
                            match=caml_call1(body$1,s),
                            s_out=match[2],
                            bs=match[1];
                           if(s_out)
                            {var
                              step=s_out[1],
                              r=caml_call3(Michel_Transformer[2],st,cst_r$1,input),
                              _bvh_=lets_some(bs,var_vector_expr(step)),
                              _bvi_=caml_call2(Utils_List[20],Utils_Option[13],s),
                              _bvj_=caml_call2(Utils_List[20],Michel_Expr[81],input),
                              _bvk_=caml_call3(Michel_Expr[117],_bvj_,_bvi_,_bvh_);
                             return [0,[0,[1,p_vector_some(r),_bvk_],0],[0,r]]}
                           return [0,bs,0]}
                         return caml_call1(Stdlib[2],cst_map_over)};
                      case 14:var n$0=instr[1];return drop(st,n$0);
                      case 15:
                       var
                        n$1=instr[1],
                        _buN_=function(xs){return [10,[0,n$1],xs]},
                        _buO_=[0,n$1,n$1 + 1 | 0];
                       return function(_bvg_)
                        {return op_vector(st,_buO_,_buN_,_bvg_)};
                      case 16:
                       var
                        n$2=instr[1],
                        _buP_=function(xs){return [10,[1,n$2],xs]},
                        _buQ_=[0,n$2 + 1 | 0,n$2 + 1 | 0];
                       return function(_bvf_)
                        {return op_vector(st,_buQ_,_buP_,_bvf_)};
                      case 17:
                       var
                        n$3=instr[1],
                        _buR_=function(xs){return [10,[2,n$3],xs]},
                        _buS_=[0,n$3 + 1 | 0,n$3 + 1 | 0];
                       return function(_bve_)
                        {return op_vector(st,_buS_,_buR_,_bve_)};
                      case 18:
                       var b=instr[2],a=instr[1];
                       return function(param)
                        {if(param)
                          {var
                            tail=param[2],
                            cond=param[1],
                            _bvc_=caml_call1(b,tail),
                            match=combine_branches(st,caml_call1(a,tail),_bvc_),
                            stack=match[4],
                            r=match[3],
                            l=match[2],
                            s=match[1],
                            _bvd_=caml_call1(Michel_Expr[81],cond);
                           return [0,
                                   [0,[1,s,caml_call3(Michel_Expr[108],_bvd_,l,r)],0],
                                   stack]}
                         return caml_call1(Stdlib[2],cst_if)};
                      case 19:
                       var b$0=instr[2],a$0=instr[1];
                       return function(param)
                        {if(param)
                          {var
                            tail=param[2],
                            cond=param[1],
                            xl=caml_call2(Michel_Transformer[1],st,cst_l$0),
                            xr=caml_call2(Michel_Transformer[1],st,cst_r),
                            _bva_=caml_call1(b$0,[0,xr,tail]),
                            match=combine_branches(st,caml_call1(a$0,[0,xl,tail]),_bva_),
                            stack=match[4],
                            r=match[3],
                            l=match[2],
                            s=match[1],
                            _bvb_=caml_call1(Michel_Expr[81],cond);
                           return [0,
                                   [0,
                                    [1,
                                     s,
                                     caml_call3(Michel_Expr[110],_bvb_,[0,[0,xl],l],[0,[0,xr],r])],
                                    0],
                                   stack]}
                         return caml_call1(Stdlib[2],cst_if_left)};
                      case 20:
                       var b$1=instr[2],a$1=instr[1];
                       return function(param)
                        {if(param)
                          {var
                            tail=param[2],
                            cond=param[1],
                            some=caml_call2(Michel_Transformer[1],st,cst_s$2),
                            _bu__=caml_call1(b$1,[0,some,tail]),
                            match=combine_branches(st,caml_call1(a$1,tail),_bu__),
                            stack=match[4],
                            r=match[3],
                            l=match[2],
                            s=match[1],
                            _bu$_=caml_call1(Michel_Expr[81],cond);
                           return [0,
                                   [0,
                                    [1,s,caml_call3(Michel_Expr[109],_bu$_,l,[0,[0,some],r])],
                                    0],
                                   stack]}
                         return caml_call1(Stdlib[2],cst_if_none)};
                      case 21:
                       var b$2=instr[2],a$2=instr[1];
                       return function(param)
                        {if(param)
                          {var
                            tail=param[2],
                            cond=param[1],
                            x=caml_call2(Michel_Transformer[1],st,cst_x$3),
                            xs=caml_call2(Michel_Transformer[1],st,cst_xs),
                            _bu8_=caml_call1(b$2,tail),
                            match=
                             combine_branches(st,caml_call1(a$2,[0,x,[0,xs,tail]]),_bu8_),
                            stack=match[4],
                            r=match[3],
                            l=match[2],
                            s=match[1],
                            _bu9_=caml_call1(Michel_Expr[81],cond);
                           return [0,
                                   [0,
                                    [1,
                                     s,
                                     caml_call3(Michel_Expr[111],_bu9_,[0,[0,x],[0,xs],l],r)],
                                    0],
                                   stack]}
                         return caml_call1(Stdlib[2],cst_if_cons)};
                      case 22:var l=instr[2];return op0(st,l[1]);
                      case 23:
                       var xs=instr[1];
                       return function(s)
                        {var _bu6_=[0,0,[0,s]];
                         function _bu7_(param,f)
                          {var s=param[2],bs=param[1];
                           if(s)
                            {var
                              s$0=s[1],
                              match=caml_call1(f,s$0),
                              s$1=match[2],
                              bs$0=match[1];
                             return [0,caml_call2(Stdlib[37],bs,bs$0),s$1]}
                           return [0,bs,s]}
                         return caml_call3(Utils_List[25],_bu7_,_bu6_,xs)};
                      case 24:
                       var xs$0=instr[1],_buT_=function(_bu5_){return 1 - _bu5_};
                       if(caml_call2(Utils_List[32],_buT_,xs$0))
                        return caml_call1(Stdlib[2],cst_decompiler_UNPAIR_with_gap);
                       var
                        n$4=caml_call1(Utils_List[4],xs$0),
                        _buU_=
                         function(param)
                          {if(param && ! param[2]){var x=param[1];return [20,n$4,x]}
                           throw [0,Assert_failure,_XT_]},
                        _buV_=[0,1,n$4];
                       return function(_bu4_)
                        {return op_vector(st,_buV_,_buU_,_bu4_)};
                      case 25:
                       var
                        n$5=instr[1],
                        _buW_=function(x){return caml_call1(Michel_Expr[70],x)[1]};
                       return function(_bu3_){return op_var(st,n$5,_buW_,_bu3_)};
                      case 26:
                       var p$1=instr[1];
                       return op1
                               (st,
                                function(x$2)
                                 {var p=p$1,x=x$2;
                                  for(;;)
                                   {if(p)
                                     {if(p[1])
                                       {var
                                         p$0=p[2],
                                         x$0=caml_call2(Michel_Expr[76],1,x),
                                         p=p$0,
                                         x=x$0;
                                        continue}
                                      var
                                       p$2=p[2],
                                       x$1=caml_call2(Michel_Expr[76],0,x),
                                       p=p$2,
                                       x=x$1;
                                      continue}
                                    return x[1]}});
                      case 27:
                       return caml_call1(Stdlib[2],cst_decompiler_SET_FIELD);
                      case 28:
                       var x=instr[3],b$3=instr[2],a$3=instr[1];
                       return function(s$0)
                        {var
                          x$0=caml_call2(Michel_Transformer[1],st,cst_x$4),
                          match=caml_call1(x,[0,x$0,0]),
                          s=match[2],
                          bs=match[1];
                         if(s)
                          {var _buZ_=s[1];
                           if(_buZ_ && ! _buZ_[2])
                            {var
                              y=_buZ_[1],
                              _bu0_=lets_some(bs,caml_call1(Michel_Expr[81],y)),
                              _bu1_=caml_call1(of_mtype$0,b$3),
                              expr=[2,[0,x$0],caml_call1(of_mtype$0,a$3),_bu1_,_bu0_];
                             return caml_call1(op0(st,expr),s$0)}
                           throw [0,Assert_failure,_XH_]}
                         var
                          body=lets_some_last(bs),
                          _bu2_=caml_call1(of_mtype$0,b$3),
                          expr$0=[2,[0,x$0],caml_call1(of_mtype$0,a$3),_bu2_,body];
                         return caml_call1(op0(st,expr$0),s$0)};
                      default:
                       var
                        code=instr[3],
                        tstorage=instr[2],
                        tparameter=instr[1],
                        _buX_=
                         function(param)
                          {if(param)
                            {var _bvF_=param[2];
                             if(_bvF_)
                              {var _bvG_=_bvF_[2];
                               if(_bvG_ && ! _bvG_[2])
                                {var
                                  storage=_bvG_[1],
                                  balance=_bvF_[1],
                                  baker=param[1],
                                  ps=caml_call2(Michel_Transformer[1],st,cst_ps),
                                  match=caml_call1(code,[0,ps,0]),
                                  s=match[2],
                                  bs=match[1],
                                  tparameter$0=
                                   caml_call2(Utils_Control[4],of_mtype$0,tparameter),
                                  tstorage$0=caml_call1(of_mtype$0,tstorage),
                                  body=lets_some_var(bs,s),
                                  c=[0,tparameter$0,tstorage$0,[0,ps],body];
                                 return [28,c,baker,balance,storage]}}}
                           throw [0,Assert_failure,_XU_]};
                       return function(_bvE_)
                        {return op_vector(st,_XV_,_buX_,_bvE_)}}}},
               of_mliteral]),
            code),
          _buw_),
       s=match[2],
       bs=match[1],
       body=lets_some_var(bs,s);
      return [0,tparameter$0,tstorage$0,[0,ps],body]}
    var Smartml_Michel_decompiler=[0,decompile_contract];
    caml_register_global
     (6499,Smartml_Michel_decompiler,"Smartml__Michel_decompiler");
    function _XX_(x){return [0,x,x]}
    var
     _XY_=caml_call2(Stdlib_list[17],_XX_,_XW_),
     primitives=caml_call2(Stdlib[37],_XZ_,_XY_),
     eta=caml_call1(Data_encoding[58],primitives),
     arg$0=caml_call1(Data_encoding[67],cst_michelson_v1_primitives),
     _X0_=caml_call3(arg$0,0,0,eta),
     expr_encoding=
      caml_call2(Tezos_micheline_Micheline[8],cst_michelson_v1,_X0_);
    function json_of_micheline_canonical(mich)
     {return caml_call2(Data_encoding[74][5],expr_encoding,mich)}
    function mich_of_node(param)
     {switch(param[0])
       {case 0:var i=param[2];return [0,caml_call1(Z[13],i)];
        case 1:var s=param[2];return [1,s];
        case 2:var b=param[2];return [2,caml_call1(Stdlib_bytes[6],b)];
        case 3:
         var annotations=param[4],arguments$0=param[3],name=param[2];
         return [3,
                 name,
                 annotations,
                 caml_call2(Stdlib_list[17],mich_of_node,arguments$0)];
        default:
         var l=param[2];return [4,caml_call2(Stdlib_list[17],mich_of_node,l)]}}
    function mich_of_bytes(bytes)
     {var
       _buu_=caml_call1(Hex[6],[0,3603131,bytes]),
       _buv_=caml_call2(Data_encoding[77][19],expr_encoding,_buu_);
      return mich_of_node(caml_call1(Tezos_micheline_Micheline[10],_buv_))}
    function parse_hex_bytes(bytes)
     {try
       {var
         _bup_=caml_call1(Hex[6],[0,3603131,bytes]),
         mich=caml_call2(Data_encoding[77][19],expr_encoding,_bup_),
         json=json_of_micheline_canonical(mich),
         _buq_=function(_but_){return _but_},
         _bur_=caml_call3(Tezos_micheline_Micheline_prin[4],0,_buq_,mich),
         _bus_=
          [0,
           [0,
            json,
            caml_call3(Fmt[6],_X1_,Tezos_micheline_Micheline_prin[2],_bur_)]];
        return _bus_}
      catch(e)
       {e = caml_wrap_exception(e);
        return [1,[0,[0,Tezos_error_monad_Error_monad[95],e],0]]}}
    function pack_node_expression(e)
     {var
       _bun_=caml_call1(Tezos_micheline_Micheline[9],e),
       _buo_=caml_call3(Data_encoding[77][22],0,expr_encoding,_bun_);
      return caml_call1(Stdlib_bytes[6],_buo_)}
    function encode_michelson_string(s)
     {var
       _bul_=caml_call1(Tezos_micheline_Micheline[9],[1,0,s]),
       _bum_=caml_call3(Data_encoding[77][22],0,expr_encoding,_bul_);
      return caml_call1(Stdlib_bytes[6],_bum_)}
    function micheline_of_ezjsonm(json)
     {var
       enc=
        caml_call2(Tezos_micheline_Micheline[6],cst_custom,Data_encoding[19]),
       mich=caml_call2(Data_encoding[74][6],enc,json);
      return caml_call1(Tezos_micheline_Micheline[10],mich)}
    function micheline_node_to_micheline_ca(node)
     {return caml_call1(Tezos_micheline_Micheline[9],node)}
    function micheline_canonical_to_string(c)
     {function _bui_(_buk_){return _buk_}
      var _buj_=caml_call3(Tezos_micheline_Micheline_prin[4],0,_bui_,c);
      return caml_call3(Fmt[6],_X2_,Tezos_micheline_Micheline_prin[2],_buj_)}
    function micheline_node_to_string(node)
     {return micheline_canonical_to_string
              (micheline_node_to_micheline_ca(node))}
    function node_of_mich(param)
     {switch(param[0])
       {case 0:var i=param[1];return [0,0,caml_call1(Z[5],i)];
        case 1:var s=param[1];return [1,0,s];
        case 2:var b=param[1];return [2,0,caml_call1(Stdlib_bytes[5],b)];
        case 3:
         var arguments$0=param[3],annotations=param[2],name=param[1];
         return [3,
                 0,
                 name,
                 caml_call2(Stdlib_list[17],node_of_mich,arguments$0),
                 annotations];
        default:
         var l=param[1];
         return [4,0,caml_call2(Stdlib_list[17],node_of_mich,l)]}}
    function micheline_size(micheline)
     {try
       {var
         _bug_=pack_node_expression(node_of_mich(micheline)),
         _buh_=
          caml_ml_string_length(caml_call1(Utils_Misc[4][1],_bug_))
          /
          2
          |
          0;
        return _buh_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === Data_encoding_Binary_error[6])
         {var
           s=exn[2],
           _buf_=
            caml_call3
             (Stdlib_format[127],_X3_,Data_encoding_Binary_error[5],s);
          return caml_call1(Stdlib[2],_buf_)}
        throw exn}}
    function micheline_size_opt(micheline)
     {try
       {var _bud_=[0,micheline_size(micheline)];return _bud_}
      catch(_bue_)
       {_bue_ = caml_wrap_exception(_bue_);
        if(_bue_[1] === Stdlib[7])return 0;
        throw _bue_}}
    function parse_node(instr)
     {var trimed=caml_call2(Base_String[87],0,instr);
      if(caml_call2(Base_String[75],trimed,cst$276))
       var instr$0=trimed;
      else
       var
        _buc_=caml_call2(Stdlib[28],trimed,cst$277),
        instr$0=caml_call2(Stdlib[28],cst$278,_buc_);
      var
       match=caml_call1(Tezos_micheline_Micheline_pars[6],instr$0),
       tokens=match[1],
       match$0=caml_call2(Tezos_micheline_Micheline_pars[26],0,tokens),
       node=match$0[1];
      return mich_of_node(node)}
    var
     Smartml_Micheline_encoding=
      [0,
       mich_of_bytes,
       parse_hex_bytes,
       pack_node_expression,
       encode_michelson_string,
       micheline_of_ezjsonm,
       micheline_node_to_micheline_ca,
       micheline_canonical_to_string,
       micheline_node_to_string,
       node_of_mich,
       mich_of_node,
       pack_prefix,
       micheline_size,
       micheline_size_opt,
       parse_node];
    caml_register_global
     (6510,Smartml_Micheline_encoding,"Smartml__Micheline_encoding");
    function mk_instr(instr){return [0,instr]}
    function un_instr(param){var instr=param[1];return instr}
    function seqi(xs){return [23,caml_call2(Utils_List[20],mk_instr,xs)]}
    function iseq(xs){return [0,[23,xs]]}
    function iseqi(xs){return iseq(caml_call2(Utils_List[20],mk_instr,xs))}
    function to_seq(i)
     {if(typeof i !== "number" && 23 === i[0])
       {var is=i[1];return caml_call2(Utils_List[20],un_instr,is)}
      return [0,i,0]}
    function symbol$4(xs,rest){return [0,[0,xs,rest]]}
    var rewrite_none=0;
    function fails(param)
     {var param$0=param;
      for(;;)
       {var instr=param$0[1],switch$0=0;
        if(typeof instr !== "number")
         switch(instr[0])
          {case 2:return 1;
           case 9:var param$1=instr[2];switch$0 = 1;break;
           case 23:
            var xs=instr[1],match=caml_call1(Base_List[103],xs);
            if(match){var param$2=match[1],param$0=param$2;continue}
            return 0;
           case 8:
           case 10:
           case 12:
           case 13:var param$1=instr[1];switch$0 = 1;break;
           case 18:
           case 19:
           case 20:
           case 21:
            var r=instr[2],l=instr[1],_bub_=fails(l);
            if(_bub_){var param$0=r;continue}
            return _bub_
           }
        if(switch$0){var param$0=param$1;continue}
        return 0}}
    function is_pure_push(param)
     {var switch$0=0;
      if(typeof param === "number")
       {if(3 === param)switch$0 = 1}
      else
       switch(param[0])
        {case 0:
          var switch$1=0,_bua_=param[1];
          if(typeof _bua_ === "number")
           switch(_bua_){case 6:case 7:switch$1 = 1;break}
          else
           if(1 === _bua_[0])switch$1 = 1;
          if(! switch$1)switch$0 = 1;
          break;
         case 2:if(param[1])switch$0 = 1;break;
         case 22:
         case 28:switch$0 = 1;break
         }
      return switch$0?1:0}
    function may_fail(param)
     {var param$0=param;
      for(;;)
       {var switch$0=0;
        if(typeof param$0 !== "number")
         switch(param$0[0])
          {case 3:
            var _bt9_=param$0[1];
            if(typeof _bt9_ === "number")
             if(14 === _bt9_)switch$0 = 1;else if(! (5 <= _bt9_))return 1;
            break;
           case 9:var i=param$0[2];switch$0 = 2;break;
           case 23:
            var l=param$0[1],_bt$_=function(x){return may_fail(x[1])};
            return caml_call2(Utils_List[32],_bt$_,l);
           case 2:
           case 5:
           case 7:switch$0 = 1;break;
           case 18:
           case 19:
           case 20:
           case 21:
            var i2=param$0[2],i1=param$0[1],_bt__=may_fail(i1[1]);
            if(_bt__)return _bt__;
            var param$2=i2[1],param$0=param$2;
            continue;
           case 8:
           case 10:
           case 11:
           case 12:
           case 13:var i=param$0[1];switch$0 = 2;break
           }
        switch(switch$0)
         {case 1:return 1;
          case 2:var param$1=i[1],param$0=param$1;continue;
          default:return 0}}}
    function harmless(i)
     {var _btZ_=may_fail(i);
      if(_btZ_)
       var _bt0_=_btZ_;
      else
       var
        f_instr=
         function(e)
          {var switch$0=0;
           if(typeof e !== "number")
            switch(e[0])
             {case 3:
               var _bt4_=e[1];
               if(typeof _bt4_ === "number" && 14 === _bt4_)switch$0 = 1;
               break;
              case 29:return 0;
              case 10:
              case 11:switch$0 = 1;break
              }
           if(switch$0)return 1;
           var _bt1_=0;
           function _bt2_(_bt8_){return _bt8_[1]}
           var _bt3_=caml_call1(Utils_Control[21],_bt2_);
           return fold_instr_f
                   (function(_bt6_,_bt5_)
                     {var _bt7_=_bt6_ || _bt5_;return _bt7_},
                    _bt3_,
                    _bt1_,
                    e)},
        f_literal=function(param){return 0},
        _bt0_=caml_call1(cata_instr([0,f_instr,f_literal]),[0,i]);
      return 1 - _bt0_}
    function pushify_all(param)
     {if(param)
       {var _btU_=param[1],switch$0=0;
        if(typeof _btU_ === "number")
         switch$0 = 1;
        else
         switch(_btU_[0])
          {case 0:
            var _btV_=_btU_[1];
            if(typeof _btV_ !== "number")
             switch(_btV_[0])
              {case 3:
                var rest=param[2],t=_btV_[1],_btW_=caml_call1(_Jw_[12],0);
                return symbol$4([0,[22,caml_call1(_zA_,t),_btW_],0],rest);
               case 6:
                var
                 rest$0=param[2],
                 v=_btV_[2],
                 k=_btV_[1],
                 _btX_=caml_call1(_Jw_[14],0);
                return symbol$4([0,[22,caml_call2(_zG_,k,v),_btX_],0],rest$0)
               }
            break;
           case 28:
            var
             rest$1=param[2],
             body=_btU_[3],
             t2=_btU_[2],
             t1=_btU_[1],
             _btY_=caml_call1(_Jw_[16],body);
            return symbol$4([0,[22,caml_call2(_zE_,t1,t2),_btY_],0],rest$1);
           default:switch$0 = 1}}
      return rewrite_none}
    function unfold_macros(param)
     {if(param)
       {var _btK_=param[1],switch$0=0;
        if(typeof _btK_ === "number")
         {if(1 === _btK_){var rest=param[2];return symbol$4(_X4_,rest)}
          switch$0 = 1}
        else
         switch(_btK_[0])
          {case 0:
            var _btL_=_btK_[1],switch$1=0;
            if(typeof _btL_ === "number")
             {if(8 === _btL_)
               {var rest$0=param[2];
                return symbol$4([0,[22,_ze_,_Jw_[6]],0],rest$0)}}
            else
             switch(_btL_[0])
              {case 2:
                var rest$1=param[2],t=_btL_[1],_btM_=_Jw_[11];
                return symbol$4([0,[22,caml_call1(_zz_,t),_btM_],0],rest$1);
               case 3:
                var rest$2=param[2],t$0=_btL_[1];
                if(! caml_call2(_y7_,t$0,_zs_))
                 {var _btN_=caml_call1(_Jw_[12],0);
                  return symbol$4
                          ([0,[22,caml_call1(_zA_,t$0),_btN_],0],rest$2)}
                switch$1 = 1;
                break;
               case 4:
                var rest$3=param[2],t$1=_btL_[1],_btO_=caml_call1(_Jw_[13],0);
                return symbol$4([0,[22,caml_call1(_zB_,t$1),_btO_],0],rest$3);
               case 5:
                var
                 rest$4=param[2],
                 v=_btL_[2],
                 k=_btL_[1],
                 _btP_=caml_call1(_Jw_[14],0);
                return symbol$4([0,[22,caml_call2(_zF_,k,v),_btP_],0],rest$4)
               }
            break;
           case 14:
            var rest$5=param[2],n=_btK_[1],acc=0,n$0=n;
            for(;;)
             {if(0 === n$0)
               var _btQ_=acc;
              else
               {if(0 <= n$0)
                 {var n$1=n$0 - 1 | 0,acc$0=[0,0,acc],acc=acc$0,n$0=n$1;
                  continue}
                var _btQ_=_X5_}
              return symbol$4(_btQ_,rest$5)}
           case 25:
            if(2 === _btK_[1])
             {var rest$6=param[2];return symbol$4(_X6_,rest$6)}
            break;
           case 27:
            var _btR_=_btK_[1];
            if(_btR_)
             {if(_btR_[1])
               {var _btS_=_btR_[2];
                if(_btS_)
                 {var rest$7=param[2];
                  return symbol$4([0,_X8_,[0,[27,_btS_],_X7_]],rest$7)}
                var rest$8=param[2];
                return symbol$4([0,cAr,_X9_],rest$8)}
              var _btT_=_btR_[2];
              if(_btT_)
               {var rest$9=param[2];
                return symbol$4([0,_Ya_,[0,_X$_,[0,[27,_btT_],_X__]]],rest$9)}
              var rest$10=param[2];
              return symbol$4([0,cDr,_Yb_],rest$10)}
            break;
           default:switch$0 = 1}}
      return rewrite_none}
    function unfold_unpair(param)
     {if(param)
       {var _btD_=param[1],switch$0=0;
        if(typeof _btD_ === "number")
         switch$0 = 1;
        else
         switch(_btD_[0])
          {case 24:
            var _btE_=_btD_[1];
            if(_btE_ && _btE_[1])
             {var _btF_=_btE_[2];
              if(_btF_ && _btF_[1] && ! _btF_[2])
               {var _btG_=param[2];
                if(_btG_)
                 {var _btH_=_btG_[1];
                  if(typeof _btH_ === "number" && 1 === _btH_)
                   {var rest=_btG_[2];return symbol$4(_Yc_,rest)}}
                return symbol$4(_Yd_,_btG_)}}
            break;
           case 26:
            var _btI_=param[2];
            if(_btI_)
             {var _btJ_=_btI_[1];
              if(typeof _btJ_ !== "number" && 26 === _btJ_[0])
               {var rest$0=_btI_[2],op2=_btJ_[1],op1=_btD_[1];
                return symbol$4
                        ([0,[26,caml_call2(Stdlib[37],op1,op2)],0],rest$0)}}
            break;
           default:switch$0 = 1}}
      return rewrite_none}
    function unfold_mifield(param)
     {if(param)
       {var _bty_=param[1],switch$0=0;
        if(typeof _bty_ === "number")
         switch$0 = 1;
        else
         switch(_bty_[0])
          {case 1:
            var _btz_=_bty_[1],switch$1=0;
            if(typeof _btz_ !== "number" && 4 === _btz_[0])
             {var _btA_=_btz_[1];
              if(1 === _btA_){var rest=param[2];return symbol$4(_Ye_,rest)}
              if(2 === _btA_)
               {var rest$0=param[2];return symbol$4(_Yf_,rest$0)}
              switch$1 = 1}
            break;
           case 26:
            var _btB_=_bty_[1];
            if(_btB_)
             {var _btC_=_btB_[2];
              if(_btC_)
               {var rest$1=param[2],f=_btB_[1];
                return symbol$4([0,[26,[0,f,0]],[0,[26,_btC_],0]],rest$1)}}
            break;
           default:switch$0 = 1}}
      return rewrite_none}
    function extract_unpair_drops(param)
     {if(param)
       {var _btv_=param[1];
        if(typeof _btv_ !== "number" && 24 === _btv_[0])
         {var
           rest=param[2],
           fields=_btv_[1],
           length=caml_call1(Utils_List[4],fields),
           size=caml_call1(unpair_size,fields);
          if(size === length)return rewrite_none;
          var acc=0,i=0,param$0=fields;
          for(;;)
           {if(param$0)
             {if(param$0[1])
               {var param$1=param$0[2],i$0=i + 1 | 0,i=i$0,param$0=param$1;
                continue}
              var
               param$2=param$0[2],
               acc$0=[0,[0,[16,i],_Yg_],acc],
               acc=acc$0,
               param$0=param$2;
              continue}
            var
             _btw_=caml_call1(Utils_List[12],acc),
             _btx_=caml_call1(Utils_List[16],_btw_);
            return symbol$4
                    ([0,[24,caml_call2(Utils_List[84],length,1)],_btx_],rest)}}}
      return rewrite_none}
    function unfold_dupn(param)
     {if(param)
       {var _btu_=param[1],switch$0=0;
        if(typeof _btu_ === "number")
         switch$0 = 1;
        else
         switch(_btu_[0])
          {case 15:
            var rest=param[2],n=_btu_[1];
            if(1 < n)
             return symbol$4([0,[16,n - 1 | 0],[0,_Yh_,[0,[17,n],0]]],rest);
            break;
           case 16:
            if(1 === _btu_[1])
             {var rest$0=param[2];return symbol$4(_Yi_,rest$0)}
            break;
           default:switch$0 = 1}}
      return rewrite_none}
    function fold_dupn(param)
     {if(param)
       {var _btp_=param[1],switch$0=0;
        if(typeof _btp_ === "number" || ! (16 === _btp_[0]))
         switch$0 = 1;
        else
         {var _btq_=param[2];
          if(_btq_)
           {var _btr_=_btq_[1],switch$1=0;
            if(typeof _btr_ !== "number" && 15 === _btr_[0])
             if(1 === _btr_[1])
              {var _bts_=_btq_[2];
               if(_bts_)
                {var _btt_=_bts_[1],switch$2=0;
                 if(typeof _btt_ !== "number" && 17 === _btt_[0])
                  {var rest=_bts_[2],n2=_btt_[1],n1=_btp_[1];
                   if(n2 === (n1 + 1 | 0))
                    return symbol$4([0,[15,n1 + 1 | 0],0],rest);
                   switch$1 = 1;
                   switch$2 = 1}
                 if(! switch$2)switch$1 = 1}
               else
                switch$1 = 1}
             else
              switch$1 = 1}}}
      return rewrite_none}
    function fold_getn(param)
     {if(param)
       {var _btf_=param[1],switch$0=0;
        if(typeof _btf_ === "number")
         switch$0 = 1;
        else
         switch(_btf_[0])
          {case 1:
            var _btg_=_btf_[1],switch$1=0;
            if(typeof _btg_ !== "number" && 4 === _btg_[0])
             {var _bth_=param[2];
              if(_bth_)
               {var _bti_=_bth_[1],switch$2=0;
                if(typeof _bti_ !== "number" && 1 === _bti_[0])
                 {var _btj_=_bti_[1],switch$3=0;
                  if(typeof _btj_ !== "number" && 4 === _btj_[0])
                   {var rest=_bth_[2],n=_btj_[1],k=_btg_[1];
                    if(0 === (k % 2 | 0))
                     return symbol$4([0,[1,[4,k + n | 0]],0],rest);
                    switch$1 = 1;
                    switch$2 = 1;
                    switch$3 = 1}
                  if(! switch$3){switch$1 = 1;switch$2 = 1}}
                if(! switch$2)switch$1 = 1}
              else
               switch$1 = 1}
            break;
           case 26:
            var _btk_=_btf_[1];
            if(_btk_ && _btk_[1] && ! _btk_[2])
             {var _btl_=param[2];
              if(_btl_)
               {var _btm_=_btl_[1],switch$4=0;
                if(typeof _btm_ !== "number")
                 switch(_btm_[0])
                  {case 1:
                    var _btn_=_btm_[1];
                    if(typeof _btn_ !== "number" && 4 === _btn_[0])
                     {var rest$0=_btl_[2],n$0=_btn_[1];
                      return symbol$4([0,[1,[4,n$0 + 2 | 0]],0],rest$0)}
                    switch$4 = 1;
                    break;
                   case 26:
                    var _bto_=_btm_[1];
                    if(_bto_)
                     if(_bto_[1])
                      {if(! _bto_[2])
                        {var rest$1=_btl_[2];return symbol$4(_Yj_,rest$1)}
                       switch$4 = 1}
                     else
                      {if(! _bto_[2])
                        {var rest$2=_btl_[2];return symbol$4(_Yk_,rest$2)}
                       switch$4 = 1}
                    else
                     switch$4 = 1;
                    break
                   }}}
            break;
           default:switch$0 = 1}}
      return rewrite_none}
    function fold_self_address(param)
     {if(param)
       {var _bta_=param[1],switch$0=0;
        if(typeof _bta_ === "number" || ! (0 === _bta_[0]))
         switch$0 = 1;
        else
         {var _btb_=_bta_[1],switch$1=0;
          if(typeof _btb_ !== "number" && 0 === _btb_[0])
           if(_btb_[1])
            switch$1 = 1;
           else
            {var _btc_=param[2];
             if(_btc_)
              {var _btd_=_btc_[1],switch$2=0;
               if(typeof _btd_ !== "number" && 1 === _btd_[0])
                {var _bte_=_btd_[1];
                 if(typeof _bte_ === "number")
                  {if(16 === _bte_)
                    {var rest=_btc_[2];return symbol$4(_Yl_,rest)}
                   switch$1 = 1;
                   switch$2 = 1}
                 else
                  {switch$1 = 1;switch$2 = 1}}
               if(! switch$2)switch$1 = 1}
             else
              switch$1 = 1}}}
      return rewrite_none}
    function unfold_self_address(param)
     {if(param)
       {var _bs__=param[1],switch$0=0;
        if(typeof _bs__ === "number" || ! (0 === _bs__[0]))
         switch$0 = 1;
        else
         {var _bs$_=_bs__[1];
          if(typeof _bs$_ === "number" && 5 === _bs$_)
           {var rest=param[2];return symbol$4(_Ym_,rest)}}}
      return rewrite_none}
    function fold_macros_etc(param)
     {if(param)
       {var _bsR_=param[1],switch$0=0;
        if(typeof _bsR_ === "number")
         if(0 === _bsR_)
          {var _bsS_=param[2];
           if(_bsS_)
            {var _bsT_=_bsS_[1],switch$1=0;
             if(typeof _bsT_ === "number")
              {if(0 === _bsT_){var rest=_bsS_[2];return symbol$4(_Yn_,rest)}}
             else
              if(14 === _bsT_[0])
               {var rest$0=_bsS_[2],n=_bsT_[1];switch$0 = 2;switch$1 = 1}}}
         else
          switch$0 = 1;
        else
         switch(_bsR_[0])
          {case 14:
            var _bsU_=param[2];
            if(_bsU_)
             {var _bsV_=_bsU_[1],_bsW_=_bsR_[1],switch$2=0;
              if(typeof _bsV_ === "number")
               {if(0 === _bsV_)
                 {var rest$0=_bsU_[2],n=_bsW_;switch$0 = 2;switch$2 = 1}}
              else
               if(14 === _bsV_[0])
                {var rest$1=_bsU_[2],n$0=_bsV_[1];
                 return symbol$4([0,[14,_bsW_ + n$0 | 0],0],rest$1)}}
            break;
           case 16:
            if(1 === _bsR_[1])
             {var rest$2=param[2];return symbol$4(_Yo_,rest$2)}
            break;
           case 22:
            var _bsX_=_bsR_[1],_bsY_=_bsX_[1];
            switch(_bsY_[0])
             {case 0:
               var _bsZ_=_bsY_[1];
               if(typeof _bsZ_ === "number" && ! _bsZ_)
                {var _bs2_=_bsR_[2][1];
                 if(typeof _bs2_ === "number" && ! _bs2_)
                  {var rest$4=param[2];return symbol$4(_Yq_,rest$4)}}
               break;
              case 1:
               switch(_bsY_[1])
                {case 0:
                  var _bs3_=_bsR_[2][1];
                  if(typeof _bs3_ === "number" && _bs3_)
                   {var rest$5=param[2],t=_bsY_[2];
                    return symbol$4([0,[0,[2,t]],0],rest$5)}
                  break;
                 case 1:
                  var _bs4_=_bsR_[2][1],switch$3=0;
                  if(typeof _bs4_ === "number" || ! (8 === _bs4_[0]))
                   switch$3 = 1;
                  else
                   if(! _bs4_[1])
                    {var rest$6=param[2],t$0=_bsY_[2];
                     return symbol$4([0,[0,[3,t$0]],0],rest$6)}
                  break;
                 case 2:
                  var _bs5_=_bsR_[2][1],switch$4=0;
                  if(typeof _bs5_ === "number" || ! (8 === _bs5_[0]))
                   switch$4 = 1;
                  else
                   if(! _bs5_[1])
                    {var rest$7=param[2],t$1=_bsY_[2];
                     return symbol$4([0,[0,[4,t$1]],0],rest$7)}
                  break
                 }
               break;
              case 2:
               var _bs6_=_bsY_[1];
               if(typeof _bs6_ === "number")
                switch(_bs6_)
                 {case 0:
                   var _bs7_=_bsR_[2][1];
                   if(typeof _bs7_ !== "number" && 10 === _bs7_[0])
                    {var
                      rest$8=param[2],
                      body=_bs7_[1],
                      t2$0=_bsY_[3],
                      t1=_bsY_[2];
                     return symbol$4([0,[28,t1,t2$0,body],0],rest$8)}
                   break;
                  case 1:
                   var _bs8_=_bsR_[2][1],switch$5=0;
                   if(typeof _bs8_ === "number" || ! (11 === _bs8_[0]))
                    switch$5 = 1;
                   else
                    if(! _bs8_[1])
                     {var rest$9=param[2],v=_bsY_[3],k=_bsY_[2];
                      return symbol$4([0,[0,[5,k,v]],0],rest$9)}
                   break;
                  default:
                   var _bs9_=_bsR_[2][1],switch$6=0;
                   if(typeof _bs9_ === "number" || ! (11 === _bs9_[0]))
                    switch$6 = 1;
                   else
                    if(! _bs9_[1])
                     {var rest$10=param[2],v$0=_bsY_[3],k$0=_bsY_[2];
                      return symbol$4([0,[0,[6,k$0,v$0]],0],rest$10)}}
               break
              }
            var _bs0_=param[2];
            if(_bs0_)
             {var _bs1_=_bs0_[1],switch$7=0;
              if(typeof _bs1_ === "number" || ! (22 === _bs1_[0]))
               switch$7 = 1;
              else
               {var rest$3=_bs0_[2],l2=_bs1_[2],t2=_bs1_[1],l1=_bsR_[2];
                if
                 (caml_call2(_y7_,_bsX_,t2)
                  &&
                  caml_call2(equal_literal,l1,l2))
                 return symbol$4([0,[22,_bsX_,l1],_Yp_],rest$3)}}
            break;
           default:switch$0 = 1}
        switch(switch$0)
         {case 1:break;
          case 0:break;
          default:return symbol$4([0,[14,n + 1 | 0],0],rest$0)}}
      return rewrite_none}
    function is_fail(param)
     {if(typeof param !== "number" && 23 === param[0])
       {var _bsN_=param[1];
        if(_bsN_)
         {var switch$0=0,_bsO_=_bsN_[1][1];
          if(typeof _bsO_ === "number" || ! (22 === _bsO_[0]))
           switch$0 = 1;
          else
           {var _bsP_=_bsN_[2];
            if(_bsP_)
             {var _bsQ_=_bsP_[1][1],switch$1=0;
              if(typeof _bsQ_ !== "number" && 2 === _bsQ_[0])
               if(_bsQ_[1])
                switch$1 = 1;
               else
                {if(! _bsP_[2])return 1;switch$1 = 1}}}}}
      return 0}
    function cond_check_last(cond,x,y,rest)
     {var
       _bsI_=to_seq(x[1]),
       match=caml_call1(Utils_List[12],_bsI_),
       _bsJ_=to_seq(y[1]),
       match$0=caml_call1(Utils_List[12],_bsJ_);
      if(match)
       {var _bsK_=match[1],switch$0=0;
        if(typeof _bsK_ === "number")
         switch$0 = 1;
        else
         switch(_bsK_[0])
          {case 2:
            if(! _bsK_[1] && match$0)
             {var _bsL_=match$0[1];
              if(typeof _bsL_ !== "number" && 22 === _bsL_[0])
               {var y$0=match$0[2];
                return symbol$4
                        ([0,
                          caml_call2(cond,x,iseqi(caml_call1(Utils_List[12],y$0))),
                          [0,_bsL_,0]],
                         rest)}}
            break;
           case 22:
            if(match$0)
             {var i2=match$0[1],x$0=match[2],y$1=match$0[2];
              if(caml_call2(equal_instr,[0,_bsK_],[0,i2]))
               {var _bsM_=iseqi(caml_call1(Utils_List[12],y$1));
                return symbol$4
                        ([0,
                          caml_call2(cond,iseqi(caml_call1(Utils_List[12],x$0)),_bsM_),
                          [0,_bsK_,0]],
                         rest)}
              var switch$1=0;
              if(typeof i2 !== "number" && 2 === i2[0])
               {if(! i2[1])
                 return symbol$4
                         ([0,
                           caml_call2(cond,iseqi(caml_call1(Utils_List[12],x$0)),y),
                           [0,_bsK_,0]],
                          rest);
                switch$1 = 1}}
            break;
           default:switch$0 = 1}}
      return rewrite_none}
    function replay_if_like(if_like,i1,i2)
     {if(typeof if_like !== "number")
       switch(if_like[0])
        {case 18:return [18,i1,i2];
         case 19:return [19,i1,i2];
         case 20:return [20,i1,i2];
         case 21:return [21,i1,i2]
         }
      throw [0,Assert_failure,_Yr_]}
    function has_prefix_drop(param)
     {var switch$0=0;
      if(typeof param === "number")
       {if(0 === param)switch$0 = 1}
      else
       if(23 === param[0])
        {var _bsG_=param[1];
         if(_bsG_)
          {var _bsH_=_bsG_[1][1];
           if(typeof _bsH_ === "number" && ! _bsH_)switch$0 = 1}}
      return switch$0?1:0}
    function remove_prefix_drop(param)
     {if(typeof param === "number")
       {if(0 === param)return [23,0]}
      else
       if(23 === param[0])
        {var _bsE_=param[1];
         if(_bsE_)
          {var _bsF_=_bsE_[1][1];
           if(typeof _bsF_ === "number" && ! _bsF_)
            {var i=_bsE_[2];return [23,i]}}}
      throw [0,Assert_failure,_Ys_]}
    function conditionals(x$3)
     {var _bsx_=Utils_Control[1];
      function _bsy_(_bsD_){return map_instr_f(mk_instr,_bsx_,_bsD_)}
      var f=caml_call1(Utils_List[20],_bsy_),_bo3_=Utils_Control[1];
      function _bo4_(_bsC_){return map_instr_f(un_instr,_bo3_,_bsC_)}
      var match=caml_call2(Utils_List[20],_bo4_,x$3),switch$0=0;
      if(match)
       {var _bo5_=match[1],switch$1=0;
        if(typeof _bo5_ === "number")
         switch$1 = 2;
        else
         switch(_bo5_[0])
          {case 1:
            var _bo6_=_bo5_[1];
            if(typeof _bo6_ === "number" && 13 === _bo6_)
             {var _bo7_=match[2];
              if(_bo7_)
               {var _bo8_=_bo7_[1],switch$2=0;
                if(typeof _bo8_ !== "number" && 18 === _bo8_[0])
                 {var
                   rest=_bo7_[2],
                   b=_bo8_[2],
                   a=_bo8_[1],
                   _bsz_=symbol$4([0,[18,b,a],0],rest);
                  switch$0 = 1;
                  switch$1 = 3;
                  switch$2 = 1}
                if(! switch$2)switch$1 = 3}
              else
               switch$1 = 3}
            else
             switch$1 = 3;
            break;
           case 18:
            var _bo9_=_bo5_[1],switch$3=0;
            if(typeof _bo9_ === "number")
             switch$3 = 1;
            else
             switch(_bo9_[0])
              {case 22:
                var _bq2_=_bo9_[1][1];
                if(0 === _bq2_[0])
                 {var _bq3_=_bq2_[1];
                  if(typeof _bq3_ === "number" && 1 === _bq3_)
                   {var _bq4_=_bo9_[2][1],switch$4=0;
                    if(typeof _bq4_ !== "number" && 1 === _bq4_[0])
                     {var switch$5=0;
                      if(_bq4_[1])
                       {var _bq5_=_bo5_[2],switch$6=0;
                        if(typeof _bq5_ !== "number" && 22 === _bq5_[0])
                         {var _bq9_=_bq5_[1][1];
                          if(0 === _bq9_[0])
                           {var _bq__=_bq9_[1];
                            if(typeof _bq__ === "number" && 1 === _bq__)
                             {var _bq$_=_bq5_[2][1],switch$7=0;
                              if(typeof _bq$_ !== "number" && 1 === _bq$_[0])
                               if(_bq$_[1])
                                {switch$6 = 1;switch$7 = 1}
                               else
                                {var rest$16=match[2],_bsz_=symbol$4(0,rest$16);
                                 switch$0 = 1;
                                 switch$1 = 3;
                                 switch$3 = 3;
                                 switch$4 = 1;
                                 switch$5 = 1;
                                 switch$6 = 1;
                                 switch$7 = 1}
                              if(! switch$7)switch$6 = 1}
                            else
                             switch$6 = 1}
                          else
                           switch$6 = 1}}
                      else
                       {var _bra_=_bo5_[2],switch$8=0;
                        if(typeof _bra_ !== "number" && 22 === _bra_[0])
                         {var _brb_=_bra_[1][1];
                          if(0 === _brb_[0])
                           {var _brc_=_brb_[1];
                            if(typeof _brc_ === "number" && 1 === _brc_)
                             {var _brd_=_bra_[2][1],switch$9=0;
                              if(typeof _brd_ !== "number" && 1 === _brd_[0])
                               if(_brd_[1])
                                {var rest$17=match[2],_bsz_=symbol$4(_YH_,rest$17);
                                 switch$0 = 1;
                                 switch$1 = 3;
                                 switch$3 = 3;
                                 switch$4 = 1;
                                 switch$5 = 1;
                                 switch$8 = 1;
                                 switch$9 = 1}
                               else
                                {switch$8 = 1;switch$9 = 1}
                              if(! switch$9)switch$8 = 1}
                            else
                             switch$8 = 1}
                          else
                           switch$8 = 1}}
                      if(! switch$5)
                       {var _bq6_=match[2];
                        if(_bq6_)
                         {var _bq7_=_bq6_[1],switch$10=0;
                          if(typeof _bq7_ !== "number" && 1 === _bq7_[0])
                           {var _bq8_=_bq7_[1];
                            if(typeof _bq8_ === "number" && 13 === _bq8_)
                             {var rest$15=_bq6_[2],y=_bo5_[2];
                              switch$3 = 2;
                              switch$4 = 1;
                              switch$10 = 1}
                            else
                             {switch$3 = 1;switch$4 = 1;switch$10 = 1}}
                          if(! switch$10){switch$3 = 1;switch$4 = 1}}
                        else
                         switch$4 = 1}}
                    if(! switch$4)switch$3 = 1}
                  else
                   switch$3 = 1}
                else
                 switch$3 = 1;
                break;
               case 23:
                var _bre_=_bo9_[1];
                if(_bre_)
                 {var _brf_=_bre_[1][1],switch$11=0;
                  if(typeof _brf_ === "number")
                   {if(0 === _brf_)
                     {var _brg_=_bre_[2];
                      if(_brg_)
                       {var _brh_=_brg_[1][1],switch$12=0;
                        if(typeof _brh_ !== "number" && 16 === _brh_[0])
                         {var _bri_=_brg_[2];
                          if(_bri_)
                           {var _brj_=_bri_[1][1];
                            if(typeof _brj_ === "number" && ! (_brj_ || _bri_[2]))
                             {var _brk_=_bo5_[2],switch$13=0;
                              if(typeof _brk_ !== "number" && 23 === _brk_[0])
                               {var _brl_=_brk_[1];
                                if(_brl_)
                                 {var _brm_=_brl_[1][1],switch$14=0;
                                  if(typeof _brm_ !== "number" && 16 === _brm_[0])
                                   if(1 === _brm_[1])
                                    {var _brn_=_brl_[2];
                                     if(_brn_)
                                      {var _bro_=_brn_[1][1];
                                       if(typeof _bro_ === "number" && ! _bro_)
                                        {var _brp_=_brn_[2];
                                         if(_brp_)
                                          {var _brq_=_brp_[1][1],switch$15=0;
                                           if(typeof _brq_ !== "number" && 16 === _brq_[0])
                                            {var _brr_=_brp_[2];
                                             if(_brr_)
                                              {var _brs_=_brr_[1][1];
                                               if(typeof _brs_ === "number" && ! (_brs_ || _brr_[2]))
                                                {var rest$18=match[2],n$7=_brq_[1],n$8=_brh_[1],switch$16=0;
                                                 if(n$8 === n$7 && 1 < n$8)
                                                  {var
                                                    _brt_=seqi(_YI_),
                                                    _bsz_=
                                                     symbol$4
                                                      ([0,[16,n$8 + 2 | 0],[0,0,[0,[18,seqi(_YJ_),_brt_],0]]],
                                                       rest$18);
                                                   switch$0 = 1;
                                                   switch$1 = 3;
                                                   switch$3 = 3;
                                                   switch$11 = 1;
                                                   switch$12 = 1;
                                                   switch$13 = 1;
                                                   switch$14 = 1;
                                                   switch$15 = 1;
                                                   switch$16 = 1}
                                                 if(! switch$16)
                                                  {switch$11 = 1;
                                                   switch$12 = 1;
                                                   switch$13 = 1;
                                                   switch$14 = 1;
                                                   switch$15 = 1}}
                                               else
                                                {switch$11 = 1;
                                                 switch$12 = 1;
                                                 switch$13 = 1;
                                                 switch$14 = 1;
                                                 switch$15 = 1}}
                                             else
                                              {switch$11 = 1;
                                               switch$12 = 1;
                                               switch$13 = 1;
                                               switch$14 = 1;
                                               switch$15 = 1}}
                                           if(! switch$15)
                                            {switch$11 = 1;switch$12 = 1;switch$13 = 1;switch$14 = 1}}
                                         else
                                          {switch$11 = 1;switch$12 = 1;switch$13 = 1;switch$14 = 1}}
                                       else
                                        {switch$11 = 1;switch$12 = 1;switch$13 = 1;switch$14 = 1}}
                                     else
                                      {switch$11 = 1;switch$12 = 1;switch$13 = 1;switch$14 = 1}}
                                   else
                                    {switch$11 = 1;switch$12 = 1;switch$13 = 1;switch$14 = 1}
                                  if(! switch$14){switch$11 = 1;switch$12 = 1;switch$13 = 1}}
                                else
                                 {switch$11 = 1;switch$12 = 1;switch$13 = 1}}
                              if(! switch$13){switch$3 = 1;switch$11 = 1;switch$12 = 1}}
                            else
                             {switch$3 = 1;switch$11 = 1;switch$12 = 1}}
                          else
                           {switch$3 = 1;switch$11 = 1;switch$12 = 1}}
                        if(! switch$12){switch$3 = 1;switch$11 = 1}}
                      else
                       {switch$3 = 1;switch$11 = 1}}}
                  else
                   if(16 === _brf_[0])
                    {var _bru_=_brf_[1],_brv_=_bre_[2];
                     if(_brv_)
                      {var _brw_=_brv_[1][1],switch$17=0;
                       if(typeof _brw_ === "number" && ! _brw_)
                        {var _brI_=_bo5_[2],switch$18=0;
                         if(typeof _brI_ !== "number" && 23 === _brI_[0])
                          {var _brJ_=_brI_[1];
                           if(_brJ_)
                            {var _brK_=_brJ_[1][1],switch$19=0;
                             if(typeof _brK_ !== "number" && 16 === _brK_[0])
                              {var _brL_=_brJ_[2];
                               if(_brL_)
                                {var _brM_=_brL_[1][1];
                                 if(typeof _brM_ === "number" && ! _brM_)
                                  {var
                                    rest$20=match[2],
                                    ys$0=_brL_[2],
                                    n$9=_brK_[1],
                                    xs$0=_brv_[2],
                                    switch$20=0;
                                   if(_bru_ === n$9 && 1 <= _bru_)
                                    {var
                                      _bsz_=
                                       symbol$4
                                        ([0,[16,_bru_ + 1 | 0],[0,0,[0,[18,[23,xs$0],[23,ys$0]],0]]],
                                         rest$20);
                                     switch$0 = 1;
                                     switch$1 = 3;
                                     switch$3 = 3;
                                     switch$11 = 1;
                                     switch$17 = 1;
                                     switch$18 = 1;
                                     switch$19 = 1;
                                     switch$20 = 1}
                                   if(! switch$20){switch$18 = 1;switch$19 = 1}}
                                 else
                                  {switch$18 = 1;switch$19 = 1}}
                               else
                                {switch$11 = 1;switch$17 = 1;switch$18 = 1;switch$19 = 1}}
                             if(! switch$19)switch$18 = 1}
                           else
                            {switch$11 = 1;switch$17 = 1;switch$18 = 1}}}
                       if(! switch$17)
                        if(2 === _bru_)
                         {var _brx_=_bre_[2],_bry_=_brx_[1][1];
                          if(typeof _bry_ === "number" && ! _bry_)
                           {var _brz_=_bo5_[2],switch$21=0;
                            if(typeof _brz_ === "number" || ! (23 === _brz_[0]))
                             switch$21 = 1;
                            else
                             {var _brA_=_brz_[1];
                              if(_brA_)
                               {var _brB_=_brA_[1][1],switch$22=0;
                                if(typeof _brB_ !== "number" && 16 === _brB_[0])
                                 if(1 === _brB_[1])
                                  {var _brC_=_brA_[2];
                                   if(_brC_)
                                    {var _brD_=_brC_[1][1];
                                     if(typeof _brD_ === "number" && ! _brD_)
                                      {var _brE_=_brC_[2];
                                       if(_brE_)
                                        {var _brF_=_brE_[1][1],switch$23=0;
                                         if(typeof _brF_ !== "number" && 16 === _brF_[0])
                                          if(1 === _brF_[1])
                                           {var _brG_=_brE_[2];
                                            if(_brG_)
                                             {var _brH_=_brG_[1][1];
                                              if(typeof _brH_ === "number" && ! _brH_)
                                               {var
                                                 rest$19=match[2],
                                                 ys=_brG_[2],
                                                 xs=_brx_[2],
                                                 _bsz_=
                                                  symbol$4
                                                   ([0,_YM_,[0,0,[0,[18,[23,xs],[23,[0,_YL_,[0,_YK_,ys]]]],0]]],
                                                    rest$19);
                                                switch$0 = 1;
                                                switch$1 = 3;
                                                switch$3 = 3;
                                                switch$11 = 1;
                                                switch$22 = 1;
                                                switch$23 = 1}
                                              else
                                               {switch$11 = 1;switch$22 = 1;switch$23 = 1}}
                                            else
                                             {switch$11 = 1;switch$22 = 1;switch$23 = 1}}
                                          else
                                           {switch$11 = 1;switch$22 = 1;switch$23 = 1}
                                         if(! switch$23){switch$11 = 1;switch$22 = 1}}
                                       else
                                        {switch$11 = 1;switch$22 = 1}}
                                     else
                                      {switch$11 = 1;switch$22 = 1}}
                                   else
                                    {switch$11 = 1;switch$22 = 1}}
                                 else
                                  {switch$11 = 1;switch$22 = 1}
                                if(! switch$22)switch$11 = 1}
                              else
                               switch$11 = 1}
                            if(switch$21){switch$3 = 1;switch$11 = 1}}
                          else
                           {switch$3 = 1;switch$11 = 1}}
                        else
                         {switch$3 = 1;switch$11 = 1}}
                     else
                      {switch$3 = 1;switch$11 = 1}}
                  if(! switch$11)switch$3 = 1}
                else
                 {var _brN_=_bo5_[2],switch$24=0;
                  if(typeof _brN_ === "number" || ! (23 === _brN_[0]))
                   switch$24 = 1;
                  else
                   if(! _brN_[1])
                    {var rest$21=match[2];switch$1 = 1;switch$3 = 3}
                  if(switch$24)switch$3 = 1}
                break;
               default:switch$3 = 1}
            var switch$25=0;
            switch(switch$3)
             {case 3:switch$25 = 1;break;
              case 1:
               var _bo__=_bo5_[2],switch$26=0;
               if(typeof _bo__ !== "number" && 22 === _bo__[0])
                {var _bqV_=_bo__[1][1];
                 if(0 === _bqV_[0])
                  {var _bqW_=_bqV_[1];
                   if(typeof _bqW_ === "number" && 1 === _bqW_)
                    {var switch$27=0,_bqX_=_bo__[2][1];
                     if(typeof _bqX_ !== "number" && 1 === _bqX_[0])
                      {var _bqY_=match[2];
                       if(_bqY_)
                        {var _bqZ_=_bqY_[1],switch$28=0;
                         if(typeof _bqZ_ !== "number" && 1 === _bqZ_[0])
                          {var _bq0_=_bqZ_[1];
                           if(typeof _bq0_ === "number" && 13 === _bq0_)
                            {var rest$15=_bqY_[2],y=_bo__;
                             switch$25 = 2;
                             switch$26 = 1;
                             switch$27 = 1;
                             switch$28 = 1}
                           else
                            {switch$26 = 1;switch$27 = 1;switch$28 = 1}}
                         if(! switch$28){switch$26 = 1;switch$27 = 1}}
                       else
                        {switch$26 = 1;switch$27 = 1}}
                     if(! switch$27)switch$26 = 1}
                   else
                    switch$26 = 1}
                 else
                  switch$26 = 1}
               break;
              case 0:break;
              default:switch$25 = 2}
            switch(switch$25)
             {case 1:break;
              case 0:var _bpa_=_bo5_[2],_bo$_=_bo9_;break;
              default:
               var
                _bq1_=seqi([0,y,_YF_]),
                _bsz_=symbol$4([0,[18,seqi([0,_bo9_,_YG_]),_bq1_],0],rest$15);
               switch$0 = 1;
               switch$1 = 3}
            break;
           case 19:
            var _brO_=_bo5_[1],switch$29=0;
            if(typeof _brO_ === "number")
             {if(0 === _brO_)
               {var _brP_=_bo5_[2];
                if(typeof _brP_ === "number" && ! _brP_)
                 {var rest$21=match[2];switch$1 = 1;switch$29 = 1}}}
            else
             if(23 === _brO_[0])
              {var _brQ_=_brO_[1];
               if(_brQ_)
                {var _brR_=_brQ_[1][1];
                 if(typeof _brR_ === "number" && ! _brR_)
                  {var _brS_=_brQ_[2];
                   if(_brS_)
                    {var _brT_=_brS_[1][1],switch$30=0;
                     if(typeof _brT_ !== "number" && 22 === _brT_[0])
                      {var _brU_=_brT_[1][1];
                       if(0 === _brU_[0])
                        {var _brV_=_brU_[1];
                         if(typeof _brV_ === "number" && 1 === _brV_)
                          {var _brW_=_brT_[2][1],switch$31=0;
                           if(typeof _brW_ !== "number" && 1 === _brW_[0])
                            if(_brS_[2])
                             {switch$30 = 1;switch$31 = 1}
                            else
                             {var _brX_=_bo5_[2],switch$32=0;
                              if(typeof _brX_ !== "number" && 23 === _brX_[0])
                               {var _brY_=_brX_[1];
                                if(_brY_)
                                 {var _brZ_=_brY_[1][1];
                                  if(typeof _brZ_ === "number" && ! _brZ_)
                                   {var _br0_=_brY_[2];
                                    if(_br0_)
                                     {var _br1_=_br0_[1][1],switch$33=0;
                                      if(typeof _br1_ !== "number" && 22 === _br1_[0])
                                       {var _br2_=_br1_[1][1];
                                        if(0 === _br2_[0])
                                         {var _br3_=_br2_[1];
                                          if(typeof _br3_ === "number" && 1 === _br3_)
                                           {var _br4_=_br1_[2][1],switch$34=0;
                                            if(typeof _br4_ !== "number" && 1 === _br4_[0])
                                             if(_br0_[2])
                                              {switch$30 = 1;
                                               switch$31 = 1;
                                               switch$32 = 1;
                                               switch$33 = 1;
                                               switch$34 = 1}
                                             else
                                              {var _br5_=match[2];
                                               if(_br5_)
                                                {var _br6_=_br5_[1],switch$35=0;
                                                 if(typeof _br6_ !== "number" && 18 === _br6_[0])
                                                  {var
                                                    rest$22=_br5_[2],
                                                    y$0=_br6_[2],
                                                    x=_br6_[1],
                                                    b2=_br4_[1],
                                                    b1=_brW_[1];
                                                   if(b1 === 1 - b2)
                                                    {var
                                                      _br7_=0,
                                                      _br8_=0,
                                                      y$1=b1?y$0:x,
                                                      _br9_=seqi([0,0,[0,y$1,_br8_]]),
                                                      _br__=0,
                                                      x$0=b1?x:y$0,
                                                      _bsz_=
                                                       symbol$4
                                                        ([0,[19,seqi([0,0,[0,x$0,_br__]]),_br9_],_br7_],rest$22);
                                                     switch$0 = 1;
                                                     switch$1 = 3;
                                                     switch$29 = 1;
                                                     switch$30 = 1;
                                                     switch$31 = 1;
                                                     switch$32 = 1;
                                                     switch$33 = 1;
                                                     switch$34 = 1;
                                                     switch$35 = 1}
                                                   else
                                                    {switch$30 = 1;
                                                     switch$31 = 1;
                                                     switch$32 = 1;
                                                     switch$33 = 1;
                                                     switch$34 = 1;
                                                     switch$35 = 1}}
                                                 if(! switch$35)
                                                  {switch$30 = 1;
                                                   switch$31 = 1;
                                                   switch$32 = 1;
                                                   switch$33 = 1;
                                                   switch$34 = 1}}
                                               else
                                                {switch$30 = 1;
                                                 switch$31 = 1;
                                                 switch$32 = 1;
                                                 switch$33 = 1;
                                                 switch$34 = 1}}
                                            if(! switch$34)
                                             {switch$30 = 1;switch$31 = 1;switch$32 = 1;switch$33 = 1}}
                                          else
                                           {switch$30 = 1;switch$31 = 1;switch$32 = 1;switch$33 = 1}}
                                        else
                                         {switch$30 = 1;switch$31 = 1;switch$32 = 1;switch$33 = 1}}
                                      if(! switch$33){switch$30 = 1;switch$31 = 1;switch$32 = 1}}
                                    else
                                     {switch$30 = 1;switch$31 = 1;switch$32 = 1}}
                                  else
                                   {switch$30 = 1;switch$31 = 1;switch$32 = 1}}
                                else
                                 {switch$30 = 1;switch$31 = 1;switch$32 = 1}}
                              if(! switch$32){switch$30 = 1;switch$31 = 1}}
                           if(! switch$31)switch$30 = 1}
                         else
                          switch$30 = 1}
                       else
                        switch$30 = 1}}}}}
            if(! switch$29)var _bpa_=_bo5_[2],_bo$_=_brO_;
            break;
           case 20:
            var _br$_=_bo5_[1],switch$36=0;
            if(typeof _br$_ !== "number")
             switch(_br$_[0])
              {case 22:
                var _bsa_=_br$_[1][1];
                if(0 === _bsa_[0])
                 {var _bsb_=_bsa_[1];
                  if(typeof _bsb_ === "number" && 1 === _bsb_)
                   {var _bsc_=_br$_[2][1],switch$37=0;
                    if(typeof _bsc_ !== "number" && 1 === _bsc_[0])
                     {var _bsd_=_bo5_[2],switch$38=0;
                      if(typeof _bsd_ !== "number" && 23 === _bsd_[0])
                       {var _bse_=_bsd_[1];
                        if(_bse_)
                         {var _bsf_=_bse_[1][1];
                          if(typeof _bsf_ === "number" && ! _bsf_)
                           {var _bsg_=_bse_[2];
                            if(_bsg_)
                             {var _bsh_=_bsg_[1][1],switch$39=0;
                              if(typeof _bsh_ !== "number" && 22 === _bsh_[0])
                               {var _bsi_=_bsh_[1][1];
                                if(0 === _bsi_[0])
                                 {var _bsj_=_bsi_[1];
                                  if(typeof _bsj_ === "number" && 1 === _bsj_)
                                   {var _bsk_=_bsh_[2][1],switch$40=0;
                                    if(typeof _bsk_ !== "number" && 1 === _bsk_[0])
                                     if(_bsg_[2])
                                      {switch$37 = 1;switch$38 = 1;switch$39 = 1;switch$40 = 1}
                                     else
                                      {var _bsl_=match[2];
                                       if(_bsl_)
                                        {var _bsm_=_bsl_[1],switch$41=0;
                                         if(typeof _bsm_ !== "number" && 18 === _bsm_[0])
                                          {var
                                            rest$23=_bsl_[2],
                                            y$2=_bsm_[2],
                                            x$1=_bsm_[1],
                                            b1$0=_bsk_[1],
                                            b2$0=_bsc_[1];
                                           if(b1$0 === 1 - b2$0)
                                            {var
                                              _bsn_=0,
                                              _bso_=0,
                                              x$2=b1$0?x$1:y$2,
                                              _bsp_=seqi([0,0,[0,x$2,_bso_]]),
                                              y$3=b1$0?y$2:x$1,
                                              _bsz_=symbol$4([0,[20,y$3,_bsp_],_bsn_],rest$23);
                                             switch$0 = 1;
                                             switch$1 = 3;
                                             switch$36 = 1;
                                             switch$37 = 1;
                                             switch$38 = 1;
                                             switch$39 = 1;
                                             switch$40 = 1;
                                             switch$41 = 1}
                                           else
                                            {switch$37 = 1;
                                             switch$38 = 1;
                                             switch$39 = 1;
                                             switch$40 = 1;
                                             switch$41 = 1}}
                                         if(! switch$41)
                                          {switch$37 = 1;switch$38 = 1;switch$39 = 1;switch$40 = 1}}
                                       else
                                        {switch$37 = 1;switch$38 = 1;switch$39 = 1;switch$40 = 1}}
                                    if(! switch$40){switch$37 = 1;switch$38 = 1;switch$39 = 1}}
                                  else
                                   {switch$37 = 1;switch$38 = 1;switch$39 = 1}}
                                else
                                 {switch$37 = 1;switch$38 = 1;switch$39 = 1}}
                              if(! switch$39){switch$37 = 1;switch$38 = 1}}
                            else
                             {switch$37 = 1;switch$38 = 1}}
                          else
                           {switch$37 = 1;switch$38 = 1}}
                        else
                         {switch$37 = 1;switch$38 = 1}}
                      if(! switch$38)switch$37 = 1}}}
                break;
               case 23:
                if(! _br$_[1])
                 {var _bsq_=_bo5_[2];
                  if(typeof _bsq_ === "number" && ! _bsq_)
                   {var rest$21=match[2];switch$1 = 1;switch$36 = 1}}
                break
               }
            if(! switch$36)var _bpa_=_bo5_[2],_bo$_=_br$_;
            break;
           case 21:
            var _bsr_=_bo5_[1],switch$42=0;
            if(typeof _bsr_ !== "number" && 23 === _bsr_[0])
             {var _bss_=_bsr_[1];
              if(_bss_)
               {var _bst_=_bss_[1][1];
                if(typeof _bst_ === "number" && ! _bst_)
                 {var _bsu_=_bss_[2];
                  if(_bsu_)
                   {var _bsv_=_bsu_[1][1];
                    if(typeof _bsv_ === "number" && ! _bsv_ && ! _bsu_[2])
                     {var _bsw_=_bo5_[2],switch$43=0;
                      if(typeof _bsw_ !== "number" && 23 === _bsw_[0])
                       if(_bsw_[1])
                        switch$43 = 1;
                       else
                        {var rest$21=match[2];
                         switch$1 = 1;
                         switch$42 = 1;
                         switch$43 = 1}}}}}}
            if(! switch$42)var _bpa_=_bo5_[2],_bo$_=_bsr_;
            break;
           default:switch$1 = 2}
        switch(switch$1)
         {case 3:break;
          case 2:break;
          case 0:
           var _bpb_=match[2],switch$44=0;
           if(_bpb_)
            {var _bpc_=_bpb_[1],switch$45=0;
             if(typeof _bpc_ === "number" && ! _bpc_)
              {var
                rest$14=_bpb_[2],
                _bqU_=seqi([0,_bpa_,_YD_]),
                _bsz_=
                 symbol$4
                  ([0,replay_if_like(_bo5_,seqi([0,_bo$_,_YE_]),_bqU_),0],
                   rest$14);
               switch$0 = 1;
               switch$44 = 1;
               switch$45 = 1}
             if(! switch$45)
              {var
                _bpf_=match[2],
                _bpg_=_bpf_[1],
                switch$46=0,
                _bpd_=_bo5_[1],
                _bpe_=_bo5_[2];
               if(typeof _bpg_ !== "number" && 16 === _bpg_[0])
                {var _bqR_=_bpf_[2];
                 if(_bqR_)
                  {var _bqS_=_bqR_[1];
                   if(typeof _bqS_ === "number" && ! _bqS_)
                    {var
                      rest$13=_bqR_[2],
                      n$6=_bpg_[1],
                      _bqT_=seqi([0,_bpe_,[0,[16,n$6],_YB_]]),
                      _bsz_=
                       symbol$4
                        ([0,
                          replay_if_like
                           (_bo5_,seqi([0,_bpd_,[0,[16,n$6],_YC_]]),_bqT_),
                          0],
                         rest$13);
                     switch$0 = 1;
                     switch$44 = 1;
                     switch$46 = 1}
                   else
                    switch$46 = 1}
                 else
                  switch$46 = 1}}}
           if(! switch$44)
            {var switch$47=0;
             if(typeof _bo5_ === "number")
              switch$47 = 2;
             else
              switch(_bo5_[0])
               {case 19:
                 var _bqr_=_bo5_[1],_bqs_=_bo5_[2],switch$48=0;
                 if(typeof _bqs_ === "number" || ! (23 === _bqs_[0]))
                  switch$48 = 1;
                 else
                  {var _bqx_=_bqs_[1];
                   if(_bqx_)
                    {var _bqy_=_bqx_[1][1],switch$49=0;
                     if(typeof _bqy_ !== "number" && 16 === _bqy_[0])
                      {var _bqz_=_bqx_[2];
                       if(_bqz_)
                        {var _bqA_=_bqz_[1][1];
                         if(typeof _bqA_ === "number" && ! _bqA_)
                          {var rest$9=match[2],i1$4=_bqz_[2],n$3=_bqy_[1],switch$50=0;
                           if(is_fail(_bqr_) && 1 <= n$3)
                            {var
                              _bsz_=
                               symbol$4
                                ([0,
                                  [16,n$3],
                                  [0,0,[0,replay_if_like(_bo5_,_bqr_,[23,i1$4]),0]]],
                                 rest$9);
                             switch$0 = 1;
                             switch$47 = 1;
                             switch$48 = 2;
                             switch$49 = 1;
                             switch$50 = 1}
                           if(! switch$50)switch$49 = 1}
                         else
                          switch$49 = 1}
                       else
                        switch$49 = 1}}}
                 var switch$51=0;
                 switch(switch$48){case 2:switch$51 = 1;break;case 1:break}
                 if(! switch$51)
                  {var switch$52=0;
                   if(typeof _bqr_ !== "number" && 23 === _bqr_[0])
                    {var _bqt_=_bqr_[1];
                     if(_bqt_)
                      {var _bqu_=_bqt_[1][1],switch$53=0;
                       if(typeof _bqu_ !== "number" && 16 === _bqu_[0])
                        {var _bqv_=_bqt_[2];
                         if(_bqv_)
                          {var _bqw_=_bqv_[1][1];
                           if(typeof _bqw_ === "number" && ! _bqw_)
                            {var i2$4=_bo5_[2],i1$3=_bqv_[2],n$1=_bqu_[1];
                             switch$47 = 3;
                             switch$52 = 1;
                             switch$53 = 1}
                           else
                            {switch$52 = 1;switch$53 = 1}}
                         else
                          {switch$47 = 1;switch$52 = 1;switch$53 = 1}}
                       if(! switch$53)switch$52 = 1}
                     else
                      {switch$47 = 1;switch$52 = 1}}}
                 break;
                case 20:
                 var _bqB_=_bo5_[2],switch$54=0;
                 if(typeof _bqB_ === "number" || ! (23 === _bqB_[0]))
                  switch$54 = 1;
                 else
                  {var _bqC_=_bqB_[1];
                   if(_bqC_)
                    {var _bqD_=_bqC_[1][1],_bqE_=_bo5_[1],switch$55=0;
                     if(typeof _bqD_ === "number")
                      {if(0 === _bqD_)
                        {var _bqF_=_bqC_[2];
                         if(_bqF_)
                          {var _bqG_=_bqF_[1][1],switch$56=0;
                           if(typeof _bqG_ !== "number" && 16 === _bqG_[0])
                            {var _bqH_=_bqF_[2];
                             if(_bqH_)
                              {var _bqI_=_bqH_[1][1];
                               if(typeof _bqI_ === "number" && ! _bqI_)
                                {var
                                  rest$10=match[2],
                                  i1$5=_bqH_[2],
                                  n$4=_bqG_[1],
                                  switch$57=0;
                                 if(is_fail(_bqE_) && 1 <= n$4)
                                  {var
                                    _bsz_=
                                     symbol$4
                                      ([0,
                                        [16,n$4 + 1 | 0],
                                        [0,0,[0,replay_if_like(_bo5_,_bqE_,[23,[0,_YA_,i1$5]]),0]]],
                                       rest$10);
                                   switch$0 = 1;
                                   switch$47 = 1;
                                   switch$55 = 1;
                                   switch$56 = 1;
                                   switch$57 = 1}
                                 if(! switch$57){switch$47 = 1;switch$55 = 1;switch$56 = 1}}
                               else
                                {switch$47 = 1;switch$55 = 1;switch$56 = 1}}
                             else
                              {switch$47 = 1;switch$55 = 1;switch$56 = 1}}
                           if(! switch$56)switch$55 = 1}
                         else
                          {switch$47 = 1;switch$55 = 1}}}
                     else
                      if(16 === _bqD_[0])
                       {var _bqJ_=_bqC_[2];
                        if(_bqJ_)
                         {var _bqK_=_bqJ_[1][1];
                          if(typeof _bqK_ === "number" && ! _bqK_)
                           {var
                             i1$6=_bqJ_[2],
                             n$5=_bqD_[1],
                             rest$11=match[2],
                             switch$58=0;
                            if(typeof _bqE_ !== "number" && 23 === _bqE_[0])
                             {var _boY_=_bqE_[1];
                              if(_boY_)
                               {var _boZ_=_boY_[1][1],switch$59=0;
                                if(typeof _boZ_ !== "number" && 3 === _boZ_[0])
                                 {var switch$60=0,_bo0_=_boZ_[1];
                                  if(typeof _bo0_ !== "number" && 1 !== _bo0_[0])
                                   {var _bo1_=_boY_[2];
                                    if(_bo1_)
                                     {var _bo2_=_bo1_[1][1],switch$61=0;
                                      if(typeof _bo2_ !== "number" && 2 === _bo2_[0])
                                       if(_bo2_[1] || _bo1_[2])
                                        {switch$59 = 1;switch$60 = 1;switch$61 = 1}
                                       else
                                        {var _bqL_=1;
                                         switch$58 = 1;
                                         switch$59 = 1;
                                         switch$60 = 1;
                                         switch$61 = 1}
                                      if(! switch$61){switch$59 = 1;switch$60 = 1}}
                                    else
                                     {switch$59 = 1;switch$60 = 1}}
                                  if(! switch$60)switch$59 = 1}}}
                            if(! switch$58)var _bqL_=0;
                            var switch$62=0;
                            if(_bqL_ && 3 <= n$5)
                             {var
                               _bsz_=
                                symbol$4
                                 ([0,
                                   [16,n$5],
                                   [0,0,[0,replay_if_like(_bo5_,_bqE_,[23,i1$6]),0]]],
                                  rest$11);
                              switch$0 = 1;
                              switch$47 = 1;
                              switch$55 = 1;
                              switch$62 = 1}
                            if(! switch$62)
                             {var rest$12=match[2],switch$63=0;
                              if(is_fail(_bqE_) && 1 <= n$5)
                               {var
                                 _bsz_=
                                  symbol$4
                                   ([0,
                                     [16,n$5],
                                     [0,0,[0,replay_if_like(_bo5_,_bqE_,[23,i1$6]),0]]],
                                    rest$12);
                                switch$0 = 1;
                                switch$47 = 1;
                                switch$55 = 1}
                              else
                               switch$63 = 1;
                              if(switch$63)switch$55 = 1}}
                          else
                           switch$55 = 1}
                        else
                         {switch$47 = 1;switch$55 = 1}}}
                   else
                    switch$47 = 1}
                 break;
                case 21:
                 var _bqM_=_bo5_[1],switch$64=0;
                 if(typeof _bqM_ === "number" || ! (23 === _bqM_[0]))
                  switch$64 = 1;
                 else
                  {var _bqN_=_bqM_[1];
                   if(_bqN_)
                    {var _bqO_=_bqN_[1][1],switch$65=0;
                     if(typeof _bqO_ !== "number" && 16 === _bqO_[0])
                      {var _bqP_=_bqN_[2];
                       if(_bqP_)
                        {var _bqQ_=_bqP_[1][1];
                         if(typeof _bqQ_ === "number" && ! _bqQ_)
                          {var i2$4=_bo5_[2],i1$3=_bqP_[2],n$1=_bqO_[1];
                           switch$47 = 3;
                           switch$65 = 1}
                         else
                          switch$65 = 1}
                       else
                        {switch$47 = 1;switch$65 = 1}}}
                   else
                    switch$47 = 1}
                 break;
                default:switch$47 = 2}
             var switch$66=0;
             switch(switch$47)
              {case 1:switch$66 = 1;break;
               case 2:
                var _bph_=_bo5_[1],switch$67=0;
                if(typeof _bph_ !== "number" && 23 === _bph_[0])
                 {var _bqn_=_bph_[1];
                  if(_bqn_)
                   {var _bqo_=_bqn_[1][1],switch$68=0;
                    if(typeof _bqo_ !== "number" && 16 === _bqo_[0])
                     {var _bqp_=_bqn_[2];
                      if(_bqp_)
                       {var _bqq_=_bqp_[1][1];
                        if(typeof _bqq_ === "number" && ! _bqq_)
                         {var
                           rest$7=match[2],
                           i2$3=_bo5_[2],
                           i1$2=_bqp_[2],
                           n$0=_bqo_[1],
                           switch$69=0;
                          if(is_fail(i2$3) && 1 <= n$0)
                           {var
                             _bsz_=
                              symbol$4
                               ([0,
                                 [16,n$0 + 1 | 0],
                                 [0,0,[0,replay_if_like(_bo5_,[23,i1$2],i2$3),0]]],
                                rest$7);
                            switch$0 = 1;
                            switch$66 = 1;
                            switch$67 = 1;
                            switch$68 = 1;
                            switch$69 = 1}
                          if(! switch$69)switch$68 = 1}
                        else
                         switch$68 = 1}
                      else
                       switch$68 = 1}}}
                if(! switch$67)
                 {var _bpi_=_bo5_[2],switch$70=0;
                  if(typeof _bpi_ !== "number" && 23 === _bpi_[0])
                   {var _bqj_=_bpi_[1];
                    if(_bqj_)
                     {var _bqk_=_bqj_[1][1],switch$71=0;
                      if(typeof _bqk_ !== "number" && 16 === _bqk_[0])
                       {var _bql_=_bqj_[2];
                        if(_bql_)
                         {var _bqm_=_bql_[1][1];
                          if(typeof _bqm_ === "number" && ! _bqm_)
                           {var rest$6=match[2],i1$1=_bql_[2],n=_bqk_[1],switch$72=0;
                            if(is_fail(_bph_) && 1 <= n)
                             {var
                               _bsz_=
                                symbol$4
                                 ([0,
                                   [16,n + 1 | 0],
                                   [0,0,[0,replay_if_like(_bo5_,_bph_,[23,i1$1]),0]]],
                                  rest$6);
                              switch$0 = 1;
                              switch$66 = 1;
                              switch$70 = 1;
                              switch$71 = 1;
                              switch$72 = 1}
                            if(! switch$72){switch$70 = 1;switch$71 = 1}}
                          else
                           {switch$70 = 1;switch$71 = 1}}
                        else
                         {switch$70 = 1;switch$71 = 1}}
                      if(! switch$71)switch$70 = 1}
                    else
                     switch$70 = 1}}
                break;
               case 3:
                var rest$8=match[2],switch$73=0;
                if(is_fail(i2$4) && 1 <= n$1)
                 {var switch$74=0;
                  if(typeof _bo5_ !== "number" && 21 === _bo5_[0])
                   {var n$2=n$1 - 1 | 0;switch$74 = 1}
                  if(! switch$74)var n$2=n$1;
                  var
                   _bsz_=
                    symbol$4
                     ([0,
                       [16,n$2],
                       [0,0,[0,replay_if_like(_bo5_,[23,i1$3],i2$4),0]]],
                      rest$8);
                  switch$0 = 1;
                  switch$66 = 1}
                else
                 switch$73 = 1;
                break
               }
             if(! switch$66)
              {var switch$75=0;
               if(typeof _bo5_ === "number")
                switch$75 = 3;
               else
                switch(_bo5_[0])
                 {case 19:
                   var _bpv_=_bo5_[1],switch$76=0;
                   if(typeof _bpv_ !== "number" && 23 === _bpv_[0])
                    {var _bpw_=_bpv_[1];
                     if(_bpw_)
                      {var _bpx_=_bpw_[1][1],switch$77=0;
                       if(typeof _bpx_ === "number")
                        {if(0 === _bpx_)
                          {var _bpy_=_bpw_[2];
                           if(_bpy_)
                            {var _bpz_=_bpy_[1][1];
                             if(typeof _bpz_ === "number" && ! _bpz_)
                              {var _bpA_=_bo5_[2],switch$78=0;
                               if(typeof _bpA_ !== "number" && 23 === _bpA_[0])
                                {var _bpB_=_bpA_[1];
                                 if(_bpB_)
                                  {var _bpC_=_bpB_[1][1];
                                   if(typeof _bpC_ === "number" && ! _bpC_)
                                    {var _bpD_=_bpB_[2];
                                     if(_bpD_)
                                      {var _bpE_=_bpD_[1][1];
                                       if(typeof _bpE_ === "number" && ! _bpE_)
                                        {var i2$0=_bpA_,i1=_bpv_;
                                         switch$75 = 1;
                                         switch$76 = 1;
                                         switch$77 = 1;
                                         switch$78 = 1}
                                       else
                                        {switch$75 = 2;switch$76 = 1;switch$77 = 1;switch$78 = 1}}
                                     else
                                      {switch$75 = 2;switch$76 = 1;switch$77 = 1;switch$78 = 1}}
                                   else
                                    {switch$75 = 2;switch$76 = 1;switch$77 = 1;switch$78 = 1}}
                                 else
                                  {switch$75 = 2;switch$76 = 1;switch$77 = 1;switch$78 = 1}}
                               if(! switch$78){switch$75 = 2;switch$76 = 1;switch$77 = 1}}
                             else
                              {switch$75 = 2;switch$76 = 1;switch$77 = 1}}
                           else
                            {switch$75 = 2;switch$76 = 1;switch$77 = 1}}}
                       else
                        if(16 === _bpx_[0])
                         if(1 === _bpx_[1])
                          {var _bpF_=_bpw_[2];
                           if(_bpF_)
                            {var _bpG_=_bpF_[1][1];
                             if(typeof _bpG_ === "number" && ! _bpG_)
                              {var _bpH_=_bo5_[2],switch$79=0;
                               if(typeof _bpH_ !== "number" && 23 === _bpH_[0])
                                {var _bpI_=_bpH_[1];
                                 if(_bpI_)
                                  {var _bpJ_=_bpI_[1][1],_bpK_=_bpF_[2],switch$80=0;
                                   if(typeof _bpJ_ === "number")
                                    {if(0 === _bpJ_)
                                      {var _bpL_=_bpI_[2];
                                       if(_bpL_)
                                        {var _bpM_=_bpL_[1][1];
                                         if(typeof _bpM_ === "number" && ! _bpM_)
                                          {var
                                            rest$4=match[2],
                                            i2$2=_bpL_[2],
                                            _bsz_=
                                             symbol$4
                                              ([0,
                                                _Yy_,
                                                [0,
                                                 0,
                                                 [0,replay_if_like(_bo5_,[23,_bpK_],[23,[0,_Yx_,i2$2]]),0]]],
                                               rest$4);
                                           switch$0 = 1;
                                           switch$75 = 2;
                                           switch$76 = 1;
                                           switch$77 = 1;
                                           switch$79 = 1;
                                           switch$80 = 1}
                                         else
                                          {switch$75 = 2;
                                           switch$76 = 1;
                                           switch$77 = 1;
                                           switch$79 = 1;
                                           switch$80 = 1}}
                                       else
                                        {switch$75 = 2;
                                         switch$76 = 1;
                                         switch$77 = 1;
                                         switch$79 = 1;
                                         switch$80 = 1}}}
                                   else
                                    if(16 === _bpJ_[0])
                                     if(1 === _bpJ_[1])
                                      {var _bpN_=_bpI_[2];
                                       if(_bpN_)
                                        {var _bpO_=_bpN_[1][1];
                                         if(typeof _bpO_ === "number" && ! _bpO_)
                                          {var i2$1=_bpN_[2],i1$0=_bpK_;
                                           switch$76 = 1;
                                           switch$77 = 1;
                                           switch$79 = 1;
                                           switch$80 = 1}
                                         else
                                          {switch$75 = 2;
                                           switch$76 = 1;
                                           switch$77 = 1;
                                           switch$79 = 1;
                                           switch$80 = 1}}
                                       else
                                        {switch$75 = 2;
                                         switch$76 = 1;
                                         switch$77 = 1;
                                         switch$79 = 1;
                                         switch$80 = 1}}
                                     else
                                      {switch$75 = 2;
                                       switch$76 = 1;
                                       switch$77 = 1;
                                       switch$79 = 1;
                                       switch$80 = 1}
                                   if(! switch$80)
                                    {switch$75 = 2;switch$76 = 1;switch$77 = 1;switch$79 = 1}}
                                 else
                                  {switch$75 = 2;switch$76 = 1;switch$77 = 1;switch$79 = 1}}
                               if(! switch$79){switch$75 = 2;switch$76 = 1;switch$77 = 1}}
                             else
                              {switch$75 = 2;switch$76 = 1;switch$77 = 1}}
                           else
                            {switch$75 = 2;switch$76 = 1;switch$77 = 1}}
                         else
                          {switch$75 = 2;switch$76 = 1;switch$77 = 1}
                       if(! switch$77){switch$75 = 2;switch$76 = 1}}
                     else
                      {switch$75 = 2;switch$76 = 1}}
                   if(! switch$76)switch$75 = 2;
                   break;
                  case 20:
                   var _bpP_=_bo5_[1],switch$81=0;
                   if(typeof _bpP_ === "number")
                    {if(0 === _bpP_)switch$81 = 1}
                   else
                    if(23 === _bpP_[0])
                     {var _bp0_=_bpP_[1];
                      if(_bp0_)
                       {var _bp1_=_bp0_[1][1];
                        if(typeof _bp1_ === "number" && ! _bp1_)
                         {var _bp3_=_bo5_[2],switch$82=0,_bp2_=_bp0_[2];
                          if(typeof _bp3_ === "number" || ! (23 === _bp3_[0]))
                           switch$82 = 1;
                          else
                           {var _bp4_=_bp3_[1];
                            if(_bp4_)
                             {var _bp5_=_bp4_[1][1],switch$83=0;
                              if(typeof _bp5_ !== "number" && 16 === _bp5_[0])
                               if(1 === _bp5_[1])
                                {var _bp6_=_bp4_[2];
                                 if(_bp6_)
                                  {var _bp7_=_bp6_[1][1];
                                   if(typeof _bp7_ === "number" && ! _bp7_)
                                    {var i2$1=_bp6_[2],i1$0=_bp2_;
                                     switch$81 = 2;
                                     switch$82 = 2;
                                     switch$83 = 1}
                                   else
                                    switch$83 = 1}
                                 else
                                  switch$83 = 1}
                               else
                                switch$83 = 1}}
                          var switch$84=0;
                          switch(switch$82){case 2:switch$84 = 1;break;case 1:break}
                          if(! switch$84)switch$81 = 1}}}
                   switch(switch$81)
                    {case 2:break;
                     case 0:
                      var _bpV_=_bo5_[2],switch$85=0;
                      if(typeof _bpV_ === "number" || ! (23 === _bpV_[0]))
                       switch$85 = 1;
                      else
                       {var _bpW_=_bpV_[1];
                        if(_bpW_)
                         {var _bpX_=_bpW_[1][1];
                          if(typeof _bpX_ === "number" && ! _bpX_)
                           {var _bpY_=_bpW_[2];
                            if(_bpY_)
                             {var _bpZ_=_bpY_[1][1];
                              if(typeof _bpZ_ === "number" && ! (_bpZ_ || _bpY_[2]))
                               {var rest$5=match[2];
                                if(is_fail(_bpP_))
                                 {var
                                   _bsz_=
                                    symbol$4([0,_Yz_,[0,0,[0,[20,_bpP_,0],0]]],rest$5);
                                  switch$0 = 1;
                                  switch$75 = 2}
                                else
                                 switch$75 = 2}
                              else
                               switch$75 = 2}
                            else
                             switch$75 = 2}
                          else
                           switch$75 = 2}
                        else
                         switch$75 = 2}
                      if(switch$85)switch$75 = 2;
                      break;
                     default:
                      var _bpQ_=_bo5_[2],switch$86=0;
                      if(typeof _bpQ_ === "number" || ! (23 === _bpQ_[0]))
                       switch$86 = 1;
                      else
                       {var _bpR_=_bpQ_[1];
                        if(_bpR_)
                         {var _bpS_=_bpR_[1][1];
                          if(typeof _bpS_ === "number" && ! _bpS_)
                           {var _bpT_=_bpR_[2];
                            if(_bpT_)
                             {var _bpU_=_bpT_[1][1];
                              if(typeof _bpU_ === "number" && ! _bpU_)
                               {var i2$0=_bpQ_,i1=_bpP_;switch$75 = 1}
                              else
                               switch$75 = 2}
                            else
                             switch$75 = 2}
                          else
                           switch$75 = 2}
                        else
                         switch$75 = 2}
                      if(switch$86)switch$75 = 2}
                   break;
                  case 21:
                   var _bp8_=_bo5_[1],switch$87=0;
                   if(typeof _bp8_ === "number" || ! (23 === _bp8_[0]))
                    switch$87 = 1;
                   else
                    {var _bp9_=_bp8_[1];
                     if(_bp9_)
                      {var _bp__=_bp9_[1][1],switch$88=0;
                       if(typeof _bp__ === "number")
                        {if(0 === _bp__)
                          {var _bp$_=_bp9_[2];
                           if(_bp$_)
                            {var _bqa_=_bp$_[1][1];
                             if(typeof _bqa_ === "number" && ! _bqa_)
                              {var _bqb_=_bo5_[2],switch$89=0;
                               if(typeof _bqb_ === "number")
                                {if(0 === _bqb_)switch$89 = 1}
                               else
                                if(23 === _bqb_[0])
                                 {var _bqc_=_bqb_[1];
                                  if(_bqc_)
                                   {var _bqd_=_bqc_[1][1];
                                    if(typeof _bqd_ === "number" && ! _bqd_)
                                     switch$89 = 1;
                                    else
                                     {switch$75 = 2;switch$88 = 1;switch$89 = 2}}
                                  else
                                   {switch$75 = 2;switch$88 = 1;switch$89 = 2}}
                               switch(switch$89)
                                {case 2:break;
                                 case 0:switch$75 = 2;switch$88 = 1;break;
                                 default:var i2$0=_bqb_,i1=_bp8_;switch$75 = 1;switch$88 = 1}}
                             else
                              {switch$75 = 2;switch$88 = 1}}
                           else
                            {switch$75 = 2;switch$88 = 1}}}
                       else
                        if(16 === _bp__[0])
                         if(2 === _bp__[1])
                          {var _bqe_=_bp9_[2];
                           if(_bqe_)
                            {var _bqf_=_bqe_[1][1];
                             if(typeof _bqf_ === "number" && ! _bqf_)
                              {var _bqg_=_bo5_[2],switch$90=0;
                               if(typeof _bqg_ !== "number" && 23 === _bqg_[0])
                                {var _bqh_=_bqg_[1];
                                 if(_bqh_)
                                  {var _bqi_=_bqh_[1][1];
                                   if(typeof _bqi_ === "number" && ! _bqi_)
                                    {var i2$1=_bqh_[2],i1$0=_bqe_[2];
                                     switch$88 = 1;
                                     switch$90 = 1}
                                   else
                                    {switch$75 = 2;switch$88 = 1;switch$90 = 1}}
                                 else
                                  {switch$75 = 2;switch$88 = 1;switch$90 = 1}}
                               if(! switch$90){switch$75 = 2;switch$88 = 1}}
                             else
                              {switch$75 = 2;switch$88 = 1}}
                           else
                            {switch$75 = 2;switch$88 = 1}}
                         else
                          {switch$75 = 2;switch$88 = 1}
                       if(! switch$88)switch$75 = 2}
                     else
                      switch$75 = 2}
                   if(switch$87)switch$75 = 2;
                   break;
                  default:switch$75 = 3}
               var switch$91=0;
               switch(switch$75)
                {case 2:break;
                 case 3:
                  var _bpj_=_bo5_[1],switch$92=0;
                  if(typeof _bpj_ !== "number" && 23 === _bpj_[0])
                   {var _bpq_=_bpj_[1];
                    if(_bpq_)
                     {var _bpr_=_bpq_[1][1];
                      if(typeof _bpr_ === "number" && ! _bpr_)
                       {var _bps_=_bo5_[2],switch$93=0;
                        if(typeof _bps_ !== "number" && 23 === _bps_[0])
                         {var _bpt_=_bps_[1];
                          if(_bpt_)
                           {var _bpu_=_bpt_[1][1];
                            if(typeof _bpu_ === "number" && ! _bpu_)
                             {var i2$1=_bpt_[2],i1$0=_bpq_[2];
                              switch$91 = 1;
                              switch$92 = 1;
                              switch$93 = 1}
                            else
                             switch$93 = 1}
                          else
                           switch$93 = 1}}}}
                  if(! switch$92)
                   {var i2=_bo5_[2],rest$0=match[2],switch$94=0;
                    if(has_prefix_drop(_bpj_) && is_fail(i2))
                     {var
                       _bsz_=
                        symbol$4
                         ([0,
                           _Yt_,
                           [0,
                            0,
                            [0,replay_if_like(_bo5_,remove_prefix_drop(_bpj_),i2),0]]],
                          rest$0);
                      switch$0 = 1;
                      switch$94 = 1}
                    if(! switch$94)
                     {var rest$1=match[2],switch$95=0;
                      if(has_prefix_drop(i2) && is_fail(_bpj_))
                       {var
                         _bsz_=
                          symbol$4
                           ([0,
                             _Yu_,
                             [0,
                              0,
                              [0,replay_if_like(_bo5_,_bpj_,remove_prefix_drop(i2)),0]]],
                            rest$1);
                        switch$0 = 1}
                      else
                       switch$95 = 1;
                      if(switch$95)
                       {var switch$96=0;
                        if(typeof _bpj_ === "number")
                         if(0 === _bpj_)switch$96 = 2;else switch$96 = 1;
                        else
                         if(23 === _bpj_[0])
                          {var _bpo_=_bpj_[1];
                           if(_bpo_)
                            {var _bpp_=_bpo_[1][1];
                             if(typeof _bpp_ === "number" && ! _bpp_)switch$96 = 2}}
                         else
                          switch$96 = 1;
                        switch(switch$96)
                         {case 0:break;
                          case 1:break;
                          default:
                           var _bpk_=_bo5_[2],switch$97=0;
                           if(typeof _bpk_ === "number")
                            if(0 === _bpk_)switch$97 = 2;else switch$97 = 1;
                           else
                            if(23 === _bpk_[0])
                             {var _bpm_=_bpk_[1];
                              if(_bpm_)
                               {var _bpn_=_bpm_[1][1];
                                if(typeof _bpn_ === "number" && ! _bpn_)switch$97 = 2}}
                            else
                             switch$97 = 1;
                           switch(switch$97)
                            {case 0:break;
                             case 1:break;
                             default:var i2$0=_bpk_,i1=_bpj_;switch$91 = 2}}}}}
                  break;
                 case 0:switch$91 = 1;break;
                 default:switch$91 = 2}
               switch(switch$91)
                {case 0:break;
                 case 1:
                  var
                   rest$3=match[2],
                   _bsz_=
                    symbol$4
                     ([0,
                       _Yw_,
                       [0,0,[0,replay_if_like(_bo5_,[23,i1$0],[23,i2$1]),0]]],
                      rest$3);
                  switch$0 = 1;
                  break;
                 default:
                  var
                   rest$2=match[2],
                   _bpl_=remove_prefix_drop(i2$0),
                   _bsz_=
                    symbol$4
                     ([0,
                       _Yv_,
                       [0,
                        0,
                        [0,replay_if_like(_bo5_,remove_prefix_drop(i1),_bpl_),0]]],
                      rest$2);
                  switch$0 = 1}}}
           break;
          default:var _bsz_=symbol$4(_YN_,rest$21);switch$0 = 1}}
      if(! switch$0)var _bsz_=rewrite_none;
      function _bsA_(param)
       {var y=param[2],x=param[1],_bsB_=caml_call1(f,y);
        return [0,caml_call1(f,x),_bsB_]}
      return caml_call2(Utils_Option[17],_bsA_,_bsz_)}
    var
     _YO_=0,
     _YP_=0,
     remove_comments=
      [0,
       [0,
        function(param)
         {if(param)
           {var _boX_=param[1];
            if(typeof _boX_ !== "number" && 6 === _boX_[0])
             {var rest=param[2];return symbol$4(0,rest)}}
          return rewrite_none},
        _YP_],
       _YO_];
    function is_iter_cons(param)
     {if(typeof param !== "number" && 12 === param[0])
       {var _boQ_=param[1][1],switch$0=0;
        if(typeof _boQ_ === "number")
         switch$0 = 1;
        else
         switch(_boQ_[0])
          {case 3:
            var _boR_=_boQ_[1];
            if(typeof _boR_ === "number" && 9 === _boR_)return 1;
            break;
           case 23:
            var _boS_=_boQ_[1];
            if(_boS_)
             {var switch$1=0,_boT_=_boS_[1][1];
              if(typeof _boT_ !== "number" && 6 === _boT_[0])
               {var _boU_=_boS_[2];
                if(_boU_)
                 {var _boV_=_boU_[1][1],switch$2=0;
                  if(typeof _boV_ !== "number" && 3 === _boV_[0])
                   {var _boW_=_boV_[1];
                    if(typeof _boW_ === "number" && 9 === _boW_)
                     {if(! _boU_[2])return 1;switch$1 = 1;switch$2 = 1}
                    else
                     {switch$1 = 1;switch$2 = 1}}
                  if(! switch$2)switch$1 = 1}
                else
                 switch$1 = 1}}
            break;
           default:switch$0 = 1}}
      return 0}
    function main(x)
     {if(x)
       {var _biI_=x[1],switch$0=0;
        if(typeof _biI_ === "number")
         switch$0 = 3;
        else
         switch(_biI_[0])
          {case 0:
            var switch$1=0,_bmI_=_biI_[1];
            if(typeof _bmI_ !== "number" && 3 === _bmI_[0])
             {var _bmJ_=x[2];
              if(_bmJ_)
               {var _bmK_=_bmJ_[1],switch$2=0;
                if(typeof _bmK_ !== "number")
                 switch(_bmK_[0])
                  {case 16:
                    if(1 === _bmK_[1])
                     {var _bmL_=_bmJ_[2];
                      if(_bmL_)
                       {var _bmM_=_bmL_[1],switch$3=0;
                        if(typeof _bmM_ !== "number" && 0 === _bmM_[0])
                         {var switch$4=0,_bmN_=_bmM_[1];
                          if(typeof _bmN_ !== "number" && 3 === _bmN_[0])
                           {var _bmO_=_bmL_[2];
                            if(_bmO_)
                             {var _bmP_=_bmO_[1],switch$5=0;
                              if(typeof _bmP_ !== "number" && 16 === _bmP_[0])
                               if(1 === _bmP_[1])
                                {var _bmQ_=_bmO_[2];
                                 if(_bmQ_)
                                  {var _bmR_=_bmQ_[2];
                                   if(_bmR_)
                                    {var rest$96=_bmR_[2],i2$0=_bmR_[1],i1=_bmQ_[1];
                                     if(is_iter_cons(i1) && is_iter_cons(i2$0))
                                      return symbol$4(0,rest$96);
                                     switch$0 = 2;
                                     switch$1 = 1;
                                     switch$2 = 1;
                                     switch$3 = 1;
                                     switch$4 = 1;
                                     switch$5 = 1}
                                   else
                                    {switch$0 = 2;
                                     switch$1 = 1;
                                     switch$2 = 1;
                                     switch$3 = 1;
                                     switch$4 = 1;
                                     switch$5 = 1}}
                                 else
                                  {switch$0 = 2;
                                   switch$1 = 1;
                                   switch$2 = 1;
                                   switch$3 = 1;
                                   switch$4 = 1;
                                   switch$5 = 1}}
                               else
                                {switch$0 = 2;
                                 switch$1 = 1;
                                 switch$2 = 1;
                                 switch$3 = 1;
                                 switch$4 = 1;
                                 switch$5 = 1}
                              if(! switch$5)
                               {switch$0 = 2;
                                switch$1 = 1;
                                switch$2 = 1;
                                switch$3 = 1;
                                switch$4 = 1}}
                            else
                             {switch$0 = 2;
                              switch$1 = 1;
                              switch$2 = 1;
                              switch$3 = 1;
                              switch$4 = 1}}
                          if(! switch$4)
                           {switch$0 = 2;switch$1 = 1;switch$2 = 1;switch$3 = 1}}
                        if(! switch$3){switch$0 = 3;switch$1 = 1;switch$2 = 1}}
                      else
                       {switch$1 = 1;switch$2 = 1}}
                    else
                     {switch$0 = 3;switch$1 = 1;switch$2 = 1}
                    break;
                   case 22:
                    var _bmS_=_bmJ_[2];
                    if(_bmS_)
                     {var _bmT_=_bmS_[1],switch$6=0;
                      if(typeof _bmT_ !== "number" && 3 === _bmT_[0])
                       {var _bmU_=_bmT_[1];
                        if(typeof _bmU_ === "number")
                         {if(9 === _bmU_)
                           {var
                             rest$97=_bmS_[2],
                             l1=_bmK_[2],
                             ts=_bmK_[1],
                             _bmV_=caml_call1(_Jw_[12],[0,l1,0]);
                            return symbol$4
                                    ([0,[22,caml_call1(_zA_,ts),_bmV_],0],rest$97)}
                          switch$1 = 1;
                          switch$2 = 1;
                          switch$6 = 1}
                        else
                         {switch$1 = 1;switch$2 = 1;switch$6 = 1}}
                      if(! switch$6){switch$0 = 3;switch$1 = 1;switch$2 = 1}}
                    else
                     {switch$1 = 1;switch$2 = 1}
                    break
                   }
                if(! switch$2){switch$0 = 3;switch$1 = 1}}
              else
               switch$1 = 1}
            if(! switch$1)switch$0 = 3;
            break;
           case 3:
            var switch$7=0,_bmW_=_biI_[1];
            if(typeof _bmW_ !== "number" && 1 !== _bmW_[0])
             {var _bmX_=x[2];
              if(_bmX_)
               {var _bmY_=_bmX_[1],switch$8=0;
                if(typeof _bmY_ !== "number")
                 switch(_bmY_[0])
                  {case 6:
                    var _bmZ_=_bmX_[2];
                    if(_bmZ_)
                     {var _bm0_=_bmZ_[1],switch$9=0;
                      if(typeof _bm0_ !== "number")
                       switch(_bm0_[0])
                        {case 15:
                          if(1 === _bm0_[1])
                           {var _bm1_=_bmZ_[2];
                            if(_bm1_)
                             {var _bm2_=_bm1_[1],switch$10=0;
                              if(typeof _bm2_ !== "number" && 26 === _bm2_[0])
                               {var _bm3_=_bm2_[1];
                                if(_bm3_ && ! (_bm3_[1] || _bm3_[2]))
                                 {var _bm4_=_bm1_[2];
                                  if(_bm4_)
                                   {var _bm5_=_bm4_[1],switch$11=0;
                                    if(typeof _bm5_ !== "number" && 0 === _bm5_[0])
                                     {var _bm6_=_bm5_[1],switch$12=0;
                                      if(typeof _bm6_ !== "number" && 3 === _bm6_[0])
                                       {var _bm7_=_bm6_[1][1];
                                        if(0 === _bm7_[0])
                                         {var _bm8_=_bm7_[1];
                                          if(typeof _bm8_ === "number" && 14 === _bm8_)
                                           {var _bm9_=_bm4_[2];
                                            if(_bm9_)
                                             {var _bm__=_bm9_[1],switch$13=0;
                                              if(typeof _bm__ !== "number" && 16 === _bm__[0])
                                               if(1 === _bm__[1])
                                                {var _bm$_=_bm9_[2];
                                                 if(_bm$_)
                                                  {var _bna_=_bm$_[1],switch$14=0;
                                                   if(typeof _bna_ !== "number" && 3 === _bna_[0])
                                                    {var _bnb_=_bna_[1];
                                                     if(typeof _bnb_ === "number" && 9 === _bnb_)
                                                      {var _bnc_=_bm$_[2];
                                                       if(_bnc_)
                                                        {var switch$15=0,_bnd_=_bnc_[1];
                                                         if(typeof _bnd_ !== "number" && 6 === _bnd_[0])
                                                          {var _bne_=_bnc_[2];
                                                           if(_bne_)
                                                            {var _bnf_=_bne_[1],switch$16=0;
                                                             if(typeof _bnf_ !== "number" && 16 === _bnf_[0])
                                                              if(1 === _bnf_[1])
                                                               {var _bng_=_bne_[2];
                                                                if(_bng_)
                                                                 {var _bnh_=_bng_[1],switch$17=0;
                                                                  if(typeof _bnh_ !== "number" && 26 === _bnh_[0])
                                                                   {var _bni_=_bnh_[1];
                                                                    if(_bni_ && _bni_[1] && ! _bni_[2])
                                                                     {var rest$98=_bng_[2];
                                                                      switch$8 = 1;
                                                                      switch$9 = 1;
                                                                      switch$10 = 1;
                                                                      switch$11 = 1;
                                                                      switch$12 = 1;
                                                                      switch$13 = 1;
                                                                      switch$14 = 1;
                                                                      switch$15 = 1;
                                                                      switch$16 = 1;
                                                                      switch$17 = 1}
                                                                    else
                                                                     {switch$7 = 1;
                                                                      switch$8 = 2;
                                                                      switch$9 = 1;
                                                                      switch$10 = 1;
                                                                      switch$11 = 1;
                                                                      switch$12 = 1;
                                                                      switch$13 = 1;
                                                                      switch$14 = 1;
                                                                      switch$15 = 1;
                                                                      switch$16 = 1;
                                                                      switch$17 = 1}}
                                                                  if(! switch$17)
                                                                   {switch$7 = 1;
                                                                    switch$8 = 2;
                                                                    switch$9 = 1;
                                                                    switch$10 = 1;
                                                                    switch$11 = 1;
                                                                    switch$12 = 1;
                                                                    switch$13 = 1;
                                                                    switch$14 = 1;
                                                                    switch$15 = 1;
                                                                    switch$16 = 1}}
                                                                else
                                                                 {switch$7 = 1;
                                                                  switch$8 = 2;
                                                                  switch$9 = 1;
                                                                  switch$10 = 1;
                                                                  switch$11 = 1;
                                                                  switch$12 = 1;
                                                                  switch$13 = 1;
                                                                  switch$14 = 1;
                                                                  switch$15 = 1;
                                                                  switch$16 = 1}}
                                                              else
                                                               {switch$7 = 1;
                                                                switch$8 = 2;
                                                                switch$9 = 1;
                                                                switch$10 = 1;
                                                                switch$11 = 1;
                                                                switch$12 = 1;
                                                                switch$13 = 1;
                                                                switch$14 = 1;
                                                                switch$15 = 1;
                                                                switch$16 = 1}
                                                             if(! switch$16)
                                                              {switch$7 = 1;
                                                               switch$8 = 2;
                                                               switch$9 = 1;
                                                               switch$10 = 1;
                                                               switch$11 = 1;
                                                               switch$12 = 1;
                                                               switch$13 = 1;
                                                               switch$14 = 1;
                                                               switch$15 = 1}}
                                                           else
                                                            {switch$7 = 1;
                                                             switch$8 = 2;
                                                             switch$9 = 1;
                                                             switch$10 = 1;
                                                             switch$11 = 1;
                                                             switch$12 = 1;
                                                             switch$13 = 1;
                                                             switch$14 = 1;
                                                             switch$15 = 1}}
                                                         if(! switch$15)
                                                          {switch$7 = 1;
                                                           switch$8 = 2;
                                                           switch$9 = 1;
                                                           switch$10 = 1;
                                                           switch$11 = 1;
                                                           switch$12 = 1;
                                                           switch$13 = 1;
                                                           switch$14 = 1}}
                                                       else
                                                        {switch$7 = 1;
                                                         switch$8 = 2;
                                                         switch$9 = 1;
                                                         switch$10 = 1;
                                                         switch$11 = 1;
                                                         switch$12 = 1;
                                                         switch$13 = 1;
                                                         switch$14 = 1}}
                                                     else
                                                      {switch$7 = 1;
                                                       switch$8 = 2;
                                                       switch$9 = 1;
                                                       switch$10 = 1;
                                                       switch$11 = 1;
                                                       switch$12 = 1;
                                                       switch$13 = 1;
                                                       switch$14 = 1}}
                                                   if(! switch$14)
                                                    {switch$7 = 1;
                                                     switch$8 = 2;
                                                     switch$9 = 1;
                                                     switch$10 = 1;
                                                     switch$11 = 1;
                                                     switch$12 = 1;
                                                     switch$13 = 1}}
                                                 else
                                                  {switch$7 = 1;
                                                   switch$8 = 2;
                                                   switch$9 = 1;
                                                   switch$10 = 1;
                                                   switch$11 = 1;
                                                   switch$12 = 1;
                                                   switch$13 = 1}}
                                               else
                                                {switch$7 = 1;
                                                 switch$8 = 2;
                                                 switch$9 = 1;
                                                 switch$10 = 1;
                                                 switch$11 = 1;
                                                 switch$12 = 1;
                                                 switch$13 = 1}
                                              if(! switch$13)
                                               {switch$7 = 1;
                                                switch$8 = 2;
                                                switch$9 = 1;
                                                switch$10 = 1;
                                                switch$11 = 1;
                                                switch$12 = 1}}
                                            else
                                             {switch$7 = 1;
                                              switch$8 = 2;
                                              switch$9 = 1;
                                              switch$10 = 1;
                                              switch$11 = 1;
                                              switch$12 = 1}}
                                          else
                                           {switch$7 = 1;
                                            switch$8 = 2;
                                            switch$9 = 1;
                                            switch$10 = 1;
                                            switch$11 = 1;
                                            switch$12 = 1}}
                                        else
                                         {switch$7 = 1;
                                          switch$8 = 2;
                                          switch$9 = 1;
                                          switch$10 = 1;
                                          switch$11 = 1;
                                          switch$12 = 1}}
                                      if(! switch$12)
                                       {switch$7 = 1;
                                        switch$8 = 2;
                                        switch$9 = 1;
                                        switch$10 = 1;
                                        switch$11 = 1}}
                                    if(! switch$11)
                                     {switch$7 = 1;switch$8 = 2;switch$9 = 1;switch$10 = 1}}
                                  else
                                   {switch$7 = 1;switch$8 = 2;switch$9 = 1;switch$10 = 1}}
                                else
                                 {switch$7 = 1;switch$8 = 2;switch$9 = 1;switch$10 = 1}}
                              if(! switch$10){switch$7 = 1;switch$8 = 2;switch$9 = 1}}
                            else
                             {switch$7 = 1;switch$8 = 2;switch$9 = 1}}
                          else
                           {switch$7 = 1;switch$8 = 2;switch$9 = 1}
                          break;
                         case 16:
                          switch$0 = 3;switch$7 = 1;switch$8 = 2;switch$9 = 1;break;
                         case 24:
                          var _bnj_=_bm0_[1];
                          if(_bnj_ && _bnj_[1])
                           {var _bnk_=_bnj_[2];
                            if(_bnk_ && _bnk_[1])
                             {if(! _bnk_[2])
                               {var rest$99=_bmZ_[2];return symbol$4([0,_bmY_,0],rest$99)}
                              switch$7 = 1;
                              switch$8 = 2;
                              switch$9 = 1}
                            else
                             {switch$7 = 1;switch$8 = 2;switch$9 = 1}}
                          else
                           {switch$7 = 1;switch$8 = 2;switch$9 = 1}
                          break;
                         case 26:
                          var _bnl_=_bm0_[1];
                          if(_bnl_)
                           {if(! _bnl_[1])
                             {var rest$101=_bmZ_[2],l$3=_bnl_[2];
                              return symbol$4
                                      ([0,_ZY_,[0,0,[0,_bmY_,[0,[26,l$3],0]]]],rest$101)}
                            if(! _bnl_[2])
                             {var rest$100=_bmZ_[2];
                              return symbol$4([0,0,[0,_bmY_,0]],rest$100)}
                            switch$7 = 1;
                            switch$8 = 2;
                            switch$9 = 1}
                          else
                           {switch$7 = 1;switch$8 = 2;switch$9 = 1}
                          break
                         }
                      if(! switch$9){switch$7 = 1;switch$8 = 2}}
                    else
                     {switch$7 = 1;switch$8 = 2}
                    break;
                   case 15:
                    if(1 === _bmY_[1])
                     {var _bnm_=_bmX_[2];
                      if(_bnm_)
                       {var _bnn_=_bnm_[1],switch$18=0;
                        if(typeof _bnn_ !== "number" && 26 === _bnn_[0])
                         {var _bno_=_bnn_[1];
                          if(_bno_ && ! (_bno_[1] || _bno_[2]))
                           {var _bnp_=_bnm_[2];
                            if(_bnp_)
                             {var _bnq_=_bnp_[1],switch$19=0;
                              if(typeof _bnq_ !== "number" && 0 === _bnq_[0])
                               {var _bnr_=_bnq_[1],switch$20=0;
                                if(typeof _bnr_ !== "number" && 3 === _bnr_[0])
                                 {var _bns_=_bnr_[1][1];
                                  if(0 === _bns_[0])
                                   {var _bnt_=_bns_[1];
                                    if(typeof _bnt_ === "number" && 14 === _bnt_)
                                     {var _bnu_=_bnp_[2];
                                      if(_bnu_)
                                       {var _bnv_=_bnu_[1],switch$21=0;
                                        if(typeof _bnv_ !== "number" && 16 === _bnv_[0])
                                         if(1 === _bnv_[1])
                                          {var _bnw_=_bnu_[2];
                                           if(_bnw_)
                                            {var _bnx_=_bnw_[1],switch$22=0;
                                             if(typeof _bnx_ !== "number" && 3 === _bnx_[0])
                                              {var _bny_=_bnx_[1];
                                               if(typeof _bny_ === "number" && 9 === _bny_)
                                                {var _bnz_=_bnw_[2];
                                                 if(_bnz_)
                                                  {var _bnA_=_bnz_[1],switch$23=0;
                                                   if(typeof _bnA_ !== "number" && 16 === _bnA_[0])
                                                    if(1 === _bnA_[1])
                                                     {var _bnB_=_bnz_[2];
                                                      if(_bnB_)
                                                       {var _bnC_=_bnB_[1],switch$24=0;
                                                        if(typeof _bnC_ !== "number" && 26 === _bnC_[0])
                                                         {var _bnD_=_bnC_[1];
                                                          if(_bnD_ && _bnD_[1] && ! _bnD_[2])
                                                           {var rest$98=_bnB_[2];
                                                            switch$8 = 1;
                                                            switch$18 = 1;
                                                            switch$19 = 1;
                                                            switch$20 = 1;
                                                            switch$21 = 1;
                                                            switch$22 = 1;
                                                            switch$23 = 1;
                                                            switch$24 = 1}
                                                          else
                                                           {switch$7 = 1;
                                                            switch$8 = 2;
                                                            switch$18 = 1;
                                                            switch$19 = 1;
                                                            switch$20 = 1;
                                                            switch$21 = 1;
                                                            switch$22 = 1;
                                                            switch$23 = 1;
                                                            switch$24 = 1}}
                                                        if(! switch$24)
                                                         {switch$7 = 1;
                                                          switch$8 = 2;
                                                          switch$18 = 1;
                                                          switch$19 = 1;
                                                          switch$20 = 1;
                                                          switch$21 = 1;
                                                          switch$22 = 1;
                                                          switch$23 = 1}}
                                                      else
                                                       {switch$7 = 1;
                                                        switch$8 = 2;
                                                        switch$18 = 1;
                                                        switch$19 = 1;
                                                        switch$20 = 1;
                                                        switch$21 = 1;
                                                        switch$22 = 1;
                                                        switch$23 = 1}}
                                                    else
                                                     {switch$7 = 1;
                                                      switch$8 = 2;
                                                      switch$18 = 1;
                                                      switch$19 = 1;
                                                      switch$20 = 1;
                                                      switch$21 = 1;
                                                      switch$22 = 1;
                                                      switch$23 = 1}
                                                   if(! switch$23)
                                                    {switch$7 = 1;
                                                     switch$8 = 2;
                                                     switch$18 = 1;
                                                     switch$19 = 1;
                                                     switch$20 = 1;
                                                     switch$21 = 1;
                                                     switch$22 = 1}}
                                                 else
                                                  {switch$7 = 1;
                                                   switch$8 = 2;
                                                   switch$18 = 1;
                                                   switch$19 = 1;
                                                   switch$20 = 1;
                                                   switch$21 = 1;
                                                   switch$22 = 1}}
                                               else
                                                {switch$7 = 1;
                                                 switch$8 = 2;
                                                 switch$18 = 1;
                                                 switch$19 = 1;
                                                 switch$20 = 1;
                                                 switch$21 = 1;
                                                 switch$22 = 1}}
                                             if(! switch$22)
                                              {switch$7 = 1;
                                               switch$8 = 2;
                                               switch$18 = 1;
                                               switch$19 = 1;
                                               switch$20 = 1;
                                               switch$21 = 1}}
                                           else
                                            {switch$7 = 1;
                                             switch$8 = 2;
                                             switch$18 = 1;
                                             switch$19 = 1;
                                             switch$20 = 1;
                                             switch$21 = 1}}
                                         else
                                          {switch$7 = 1;
                                           switch$8 = 2;
                                           switch$18 = 1;
                                           switch$19 = 1;
                                           switch$20 = 1;
                                           switch$21 = 1}
                                        if(! switch$21)
                                         {switch$7 = 1;
                                          switch$8 = 2;
                                          switch$18 = 1;
                                          switch$19 = 1;
                                          switch$20 = 1}}
                                      else
                                       {switch$7 = 1;
                                        switch$8 = 2;
                                        switch$18 = 1;
                                        switch$19 = 1;
                                        switch$20 = 1}}
                                    else
                                     {switch$7 = 1;
                                      switch$8 = 2;
                                      switch$18 = 1;
                                      switch$19 = 1;
                                      switch$20 = 1}}
                                  else
                                   {switch$7 = 1;
                                    switch$8 = 2;
                                    switch$18 = 1;
                                    switch$19 = 1;
                                    switch$20 = 1}}
                                if(! switch$20)
                                 {switch$7 = 1;switch$8 = 2;switch$18 = 1;switch$19 = 1}}
                              if(! switch$19){switch$7 = 1;switch$8 = 2;switch$18 = 1}}
                            else
                             {switch$7 = 1;switch$8 = 2;switch$18 = 1}}
                          else
                           {switch$7 = 1;switch$8 = 2;switch$18 = 1}}
                        if(! switch$18){switch$0 = 3;switch$7 = 1;switch$8 = 2}}
                      else
                       {switch$7 = 1;switch$8 = 2}}
                    else
                     {switch$0 = 3;switch$7 = 1;switch$8 = 2}
                    break
                   }
                switch(switch$8)
                 {case 2:break;
                  case 0:switch$0 = 3;switch$7 = 1;break;
                  default:return symbol$4([0,[0,[3,_zs_]],_ZX_],rest$98)}}
              else
               switch$7 = 1}
            if(! switch$7)switch$0 = 3;
            break;
           case 6:
            var _bnE_=x[2];
            if(_bnE_)
             {var _bnF_=_bnE_[1];
              if(typeof _bnF_ !== "number" && 6 === _bnF_[0])
               {var
                 rest$102=_bnE_[2],
                 b$0=_bnF_[1],
                 a$0=_biI_[1],
                 param$2=caml_call2(Stdlib[37],a$0,b$0),
                 acc=0,
                 param=param$2,
                 _bnI_=0;
                for(;;)
                 {if(param)
                   {var _bnG_=param[1],_bnH_=param[2];
                    if(_bnH_)
                     {var rest$103=_bnH_[2],b$1=_bnH_[1];
                      if(caml_equal(_bnG_,b$1))
                       {var param$0=[0,b$1,rest$103],param=param$0;continue}}
                    var
                     param$1=param[2],
                     acc$0=[0,_bnG_,acc],
                     acc=acc$0,
                     param=param$1;
                    continue}
                  return symbol$4
                          ([0,[6,caml_call1(Utils_List[12],acc)],_bnI_],rest$102)}}
              switch$0 = 3}
            break;
           case 15:
            if(1 === _biI_[1])
             {var _bnJ_=x[2];
              if(_bnJ_)
               {var _bnK_=_bnJ_[1],switch$25=0;
                if(typeof _bnK_ === "number")
                 switch$25 = 1;
                else
                 switch(_bnK_[0])
                  {case 16:
                    if(1 === _bnK_[1])
                     {var rest$104=_bnJ_[2];return symbol$4(_ZZ_,rest$104)}
                    switch$0 = 3;
                    break;
                   case 17:
                    var _bnL_=_bnJ_[2];
                    if(_bnL_)
                     {var _bnM_=_bnL_[1];
                      if(typeof _bnM_ === "number" && ! _bnM_)
                       {var rest$105=_bnL_[2],n$12=_bnK_[1];
                        if(0 < n$12)
                         return symbol$4([0,[17,n$12 - 1 | 0],0],rest$105);
                        switch$0 = 1}
                      else
                       switch$0 = 3}
                    break;
                   default:switch$25 = 1}
                if(switch$25)switch$0 = 3}}
            else
             switch$0 = 3;
            break;
           case 17:
            var _bnN_=x[2];
            if(_bnN_)
             {var _bnO_=_bnN_[1],switch$26=0;
              if(typeof _bnO_ === "number" || ! (3 === _bnO_[0]))
               switch$26 = 1;
              else
               {var switch$27=0,_bnP_=_bnO_[1];
                if(typeof _bnP_ !== "number" && 1 !== _bnP_[0])
                 {var _bnQ_=_bnN_[2];
                  if(_bnQ_)
                   {var _bnR_=_bnQ_[1],switch$28=0;
                    if(typeof _bnR_ !== "number" && 3 === _bnR_[0])
                     {var _bnS_=_bnR_[1];
                      if(typeof _bnS_ === "number" && 14 === _bnS_)
                       {var _bnT_=_bnQ_[2];
                        if(_bnT_)
                         {var _bnU_=_bnT_[1],switch$29=0;
                          if(typeof _bnU_ !== "number" && 2 === _bnU_[0])
                           if(_bnU_[1])
                            {switch$0 = 1;switch$27 = 1;switch$28 = 1;switch$29 = 1}
                           else
                            {var rest$106=_bnT_[2],n$13=_biI_[1];
                             if(2 < n$13)return symbol$4([0,0,[0,_bnO_,_Z0_]],rest$106);
                             switch$0 = 1;
                             switch$27 = 1;
                             switch$28 = 1;
                             switch$29 = 1}
                          if(! switch$29){switch$0 = 1;switch$27 = 1;switch$28 = 1}}
                        else
                         {switch$0 = 1;switch$27 = 1;switch$28 = 1}}
                      else
                       {switch$0 = 1;switch$27 = 1;switch$28 = 1}}
                    if(! switch$28){switch$0 = 3;switch$27 = 1}}
                  else
                   {switch$0 = 1;switch$27 = 1}}
                if(! switch$27)switch$0 = 3}
              if(switch$26)switch$0 = 3}
            else
             switch$0 = 1;
            break;
           case 22:
            var _bnV_=_biI_[1],_bnW_=_biI_[2],_bnX_=x[2];
            if(_bnX_)
             {var _bnY_=_bnX_[1],switch$30=0;
              if(typeof _bnY_ === "number")
               switch$30 = 2;
              else
               switch(_bnY_[0])
                {case 6:
                  var _boD_=_bnX_[2];
                  if(_boD_)
                   {var _boE_=_boD_[1],switch$31=0;
                    if(typeof _boE_ !== "number" && 22 === _boE_[0])
                     {var _boF_=_boD_[2];
                      if(_boF_)
                       {var _boG_=_boF_[1],switch$32=0;
                        if(typeof _boG_ !== "number" && 3 === _boG_[0])
                         {var _boH_=_boG_[1];
                          if(typeof _boH_ !== "number" && 1 !== _boH_[0])
                           {var
                             rest$113=_boF_[2],
                             annot_snd=_boH_[2],
                             annot_fst=_boH_[1],
                             l1$0=_boE_[2],
                             t1=_boE_[1],
                             _boI_=caml_call2(_Jw_[10],l1$0,_bnW_);
                            return symbol$4
                                    ([0,
                                      _bnY_,
                                      [0,
                                       [22,caml_call4(_zH_,annot_fst,annot_snd,t1,_bnV_),_boI_],
                                       0]],
                                     rest$113)}
                          switch$31 = 1;
                          switch$32 = 1}
                        if(! switch$32)switch$31 = 1}
                      else
                       switch$31 = 1}
                    if(! switch$31)switch$0 = 3}
                  break;
                 case 22:
                  var _boJ_=_bnX_[2];
                  if(_boJ_)
                   {var _boK_=_boJ_[1],switch$33=0;
                    if(typeof _boK_ !== "number" && 3 === _boK_[0])
                     {var
                       _boL_=_boK_[1],
                       switch$34=0,
                       _boM_=_bnY_[2],
                       _boN_=_bnY_[1];
                      if(typeof _boL_ === "number")
                       switch(_boL_)
                        {case 7:
                         case 8:switch$30 = 3;switch$33 = 1;switch$34 = 1;break;
                         case 9:
                         case 10:switch$30 = 1;switch$33 = 1;switch$34 = 1;break
                         }
                      else
                       if(1 !== _boL_[0])
                        {var
                          rest$114=_boJ_[2],
                          annot_snd$0=_boL_[2],
                          annot_fst$0=_boL_[1],
                          _boO_=caml_call2(_Jw_[10],_boM_,_bnW_);
                         return symbol$4
                                 ([0,
                                   [22,
                                    caml_call4(_zH_,annot_fst$0,annot_snd$0,_boN_,_bnV_),
                                    _boO_],
                                   0],
                                  rest$114)}
                      if(! switch$34)switch$33 = 1}
                    if(! switch$33)switch$30 = 1}
                  break;
                 default:switch$30 = 2}
              var switch$35=0;
              switch(switch$30)
               {case 0:break;
                case 2:switch$35 = 1;break;
                case 1:switch$35 = 1;break;
                default:switch$35 = 2}
              var switch$36=0;
              switch(switch$35)
               {case 0:break;
                case 1:
                 var _bnZ_=_bnW_[1],switch$37=0;
                 if(typeof _bnZ_ !== "number")
                  switch(_bnZ_[0])
                   {case 0:
                     var _bn0_=x[2],_bn1_=_bn0_[1],switch$38=0;
                     if(typeof _bn1_ !== "number" && 22 === _bn1_[0])
                      {var _bn2_=_bn1_[2][1],switch$39=0;
                       if(typeof _bn2_ !== "number" && 0 === _bn2_[0])
                        {var _bn3_=_bn0_[2];
                         if(_bn3_)
                          {var _bn4_=_bn3_[1],switch$40=0;
                           if(typeof _bn4_ !== "number" && 3 === _bn4_[0])
                            {var _bn5_=_bn4_[1];
                             if(typeof _bn5_ === "number")
                              {if(10 === _bn5_)
                                {var
                                  rest$107=_bn3_[2],
                                  b$2=_bn2_[1],
                                  a$1=_bnZ_[1],
                                  _bn6_=caml_call2(Big_int[23],b$2,a$1);
                                 return symbol$4
                                         ([0,[22,_zh_,caml_call1(_Jw_[2],_bn6_)],0],rest$107)}
                               switch$37 = 1;
                               switch$38 = 1;
                               switch$39 = 1;
                               switch$40 = 1}
                             else
                              {switch$37 = 1;switch$38 = 1;switch$39 = 1;switch$40 = 1}}
                           if(! switch$40)
                            {switch$0 = 3;switch$37 = 1;switch$38 = 1;switch$39 = 1}}
                         else
                          {switch$37 = 1;switch$38 = 1;switch$39 = 1}}
                       if(! switch$39){switch$0 = 3;switch$37 = 1;switch$38 = 1}}
                     if(! switch$38){switch$0 = 3;switch$37 = 1}
                     break;
                    case 1:switch$36 = 1;switch$37 = 1;break;
                    case 8:
                     var _bok_=x[2],_bol_=_bok_[1],switch$41=0;
                     if(typeof _bol_ !== "number" && 22 === _bol_[0])
                      {var _bom_=_bol_[2],_bon_=_bnZ_[1],_boo_=_bok_[2];
                       if(_boo_)
                        {var _bop_=_boo_[1],switch$42=0;
                         if(typeof _bop_ !== "number" && 3 === _bop_[0])
                          {var _bov_=_bop_[1];
                           if(typeof _bov_ === "number")
                            {if(9 === _bov_)
                              {var rest$111=_boo_[2];
                               return symbol$4
                                       ([0,[22,_bnV_,caml_call1(_Jw_[12],[0,_bom_,_bon_])],0],
                                        rest$111)}
                             switch$37 = 1;
                             switch$41 = 1;
                             switch$42 = 1}
                           else
                            {switch$37 = 1;switch$41 = 1;switch$42 = 1}}
                         if(! switch$42)
                          {var _boq_=_bom_[1],switch$43=0;
                           if(typeof _boq_ !== "number" && 1 === _boq_[0])
                            if(_boq_[1])
                             {var _bor_=_bok_[2],_bos_=_bor_[1],switch$44=0;
                              if(typeof _bos_ !== "number" && 22 === _bos_[0])
                               {var _bot_=_bor_[2];
                                if(_bot_)
                                 {var _bou_=_bot_[1],switch$45=0;
                                  if(typeof _bou_ !== "number" && 4 === _bou_[0])
                                   {if(1 === _bou_[1])
                                     {var rest$110=_bot_[2],x$4=_bos_[2];
                                      return symbol$4
                                              ([0,[22,_bnV_,caml_call1(_Jw_[13],[0,x$4,_bon_])],0],
                                               rest$110)}
                                    switch$37 = 1;
                                    switch$41 = 1;
                                    switch$43 = 1;
                                    switch$44 = 1;
                                    switch$45 = 1}
                                  if(! switch$45)
                                   {switch$37 = 1;switch$41 = 1;switch$43 = 1;switch$44 = 1}}
                                else
                                 {switch$37 = 1;switch$41 = 1;switch$43 = 1;switch$44 = 1}}
                              if(! switch$44)
                               {switch$0 = 3;switch$37 = 1;switch$41 = 1;switch$43 = 1}}
                            else
                             {switch$0 = 3;switch$37 = 1;switch$41 = 1;switch$43 = 1}
                           if(! switch$43){switch$0 = 3;switch$37 = 1;switch$41 = 1}}}
                       else
                        {switch$37 = 1;switch$41 = 1}}
                     if(! switch$41){switch$0 = 3;switch$37 = 1}
                     break;
                    case 11:
                     var _bow_=x[2],_box_=_bow_[1],switch$46=0;
                     if(typeof _box_ === "number" || ! (22 === _box_[0]))
                      switch$46 = 1;
                     else
                      {var _boy_=_box_[2][1],switch$47=0;
                       if(typeof _boy_ !== "number" && 7 === _boy_[0])
                        {var _boz_=_bow_[2];
                         if(_boz_)
                          {var _boA_=_boz_[1],switch$48=0;
                           if(typeof _boA_ !== "number" && 22 === _boA_[0])
                            {var _boB_=_boz_[2];
                             if(_boB_)
                              {var _boC_=_boB_[1],switch$49=0;
                               if(typeof _boC_ !== "number" && 4 === _boC_[0])
                                {if(1 === _boC_[1])
                                  {var
                                    rest$112=_boB_[2],
                                    key=_boA_[2],
                                    value=_boy_[1],
                                    xs=_bnZ_[1];
                                   return symbol$4
                                           ([0,[22,_bnV_,caml_call1(_Jw_[14],[0,[0,key,value],xs])],0],
                                            rest$112)}
                                 switch$37 = 1;
                                 switch$47 = 1;
                                 switch$48 = 1;
                                 switch$49 = 1}
                               if(! switch$49){switch$37 = 1;switch$47 = 1;switch$48 = 1}}
                             else
                              {switch$37 = 1;switch$47 = 1;switch$48 = 1}}
                           if(! switch$48){switch$0 = 3;switch$37 = 1;switch$47 = 1}}
                         else
                          {switch$37 = 1;switch$47 = 1}}
                       if(! switch$47){switch$0 = 3;switch$37 = 1}}
                     if(switch$46){switch$0 = 3;switch$37 = 1}
                     break
                    }
                 if(! switch$37)switch$0 = 3;
                 break;
                default:switch$36 = 1}
              if(switch$36)
               {var _bn7_=_bnV_[1];
                if(0 === _bn7_[0])
                 {var _bn8_=_bn7_[1];
                  if(typeof _bn8_ === "number" && 1 === _bn8_)
                   {var _bn9_=_biI_[2][1],switch$50=0;
                    if(typeof _bn9_ === "number" || ! (1 === _bn9_[0]))
                     switch$50 = 1;
                    else
                     {var _bn__=x[2],_bn$_=_bn__[1],switch$51=0;
                      if(typeof _bn$_ !== "number" && 22 === _bn$_[0])
                       {var _boa_=_bn$_[1][1];
                        if(0 === _boa_[0])
                         {var _bob_=_boa_[1];
                          if(typeof _bob_ === "number" && 1 === _bob_)
                           {var _boc_=_bn$_[2][1],switch$52=0;
                            if(typeof _boc_ !== "number" && 1 === _boc_[0])
                             {var _bod_=_bn__[2];
                              if(_bod_)
                               {var _boe_=_bod_[1],switch$53=0;
                                if(typeof _boe_ !== "number" && 3 === _boe_[0])
                                 {var _bof_=_boe_[1];
                                  if(typeof _bof_ === "number")
                                   {var _bog_=_boc_[1],_boh_=_bn9_[1];
                                    if(7 === _bof_)
                                     {var rest$108=_bod_[2],_boi_=0,b2=_boh_?_bog_:_boh_;
                                      return symbol$4
                                              ([0,[22,_zf_,caml_call1(_Jw_[3],b2)],_boi_],rest$108)}
                                    if(8 === _bof_)
                                     {var rest$109=_bod_[2],_boj_=0,b1=_bog_ || _boh_;
                                      return symbol$4
                                              ([0,[22,_zf_,caml_call1(_Jw_[3],b1)],_boj_],rest$109)}
                                    switch$51 = 1;
                                    switch$52 = 1;
                                    switch$53 = 1}
                                  else
                                   {switch$51 = 1;switch$52 = 1;switch$53 = 1}}
                                if(! switch$53){switch$0 = 3;switch$51 = 1;switch$52 = 1}}
                              else
                               {switch$51 = 1;switch$52 = 1}}
                            if(! switch$52){switch$0 = 3;switch$51 = 1}}
                          else
                           {switch$0 = 3;switch$51 = 1}}
                        else
                         {switch$0 = 3;switch$51 = 1}}
                      if(! switch$51)switch$0 = 3}}
                  else
                   switch$0 = 3}
                else
                 switch$0 = 3}}
            break;
           case 23:
            var rest$115=x[2],is=_biI_[1];
            return symbol$4(caml_call2(Utils_List[20],un_instr,is),rest$115);
           default:switch$0 = 3}
        var switch$54=0;
        switch(switch$0)
         {case 3:
           var _biJ_=x[2];
           if(_biJ_)
            {var _biK_=_biJ_[1],_biL_=_biJ_[2];
             if(_biL_)
              {var _biM_=_biL_[1],switch$55=0;
               if(typeof _biM_ === "number" || ! (16 === _biM_[0]))
                switch$55 = 1;
               else
                if(1 === _biM_[1])
                 {var rest$95=_biL_[2];
                  if(is_pure_push(_biI_) && is_pure_push(_biK_))
                   return symbol$4([0,_biK_,[0,_biI_,0]],rest$95)}}
             var switch$56=0;
             if(typeof _biK_ === "number")
              if(0 === _biK_)
               {var rest$3=_biJ_[2],switch$57=0;
                if(typeof _biI_ !== "number" && 15 === _biI_[0])
                 {var _biN_=1;switch$57 = 1}
                if(! switch$57)var _biN_=is_pure_push(_biI_);
                if(_biN_ && harmless(_biI_))return symbol$4(0,rest$3);
                if(has_arity(_YQ_,_biI_) && harmless(_biI_))
                 return symbol$4(_YR_,rest$3);
                if(has_arity(_YS_,_biI_) && harmless(_biI_))
                 return symbol$4(_YT_,rest$3);
                if(rest$3)
                 {var _biO_=rest$3[1],switch$58=0;
                  if(typeof _biO_ === "number")
                   if(0 === _biO_)
                    {var rest$4=rest$3[2];
                     if(has_arity(_YU_,_biI_))
                      return symbol$4([0,_YW_,[0,0,[0,_biI_,_YV_]]],rest$4)}
                   else
                    switch$58 = 1;
                  else
                   if(16 === _biO_[0])
                    {var _bmE_=rest$3[2];
                     if(_bmE_)
                      {var _bmF_=_bmE_[1];
                       if(typeof _bmF_ === "number" && ! _bmF_)
                        {var rest$94=_bmE_[2],n$11=_biO_[1];
                         if(has_arity(_ZV_,_biI_))
                          return symbol$4
                                  ([0,[16,n$11 + 2 | 0],[0,0,[0,_biI_,_ZW_]]],rest$94)}}}
                   else
                    switch$58 = 1}
                if(has_arity(_YX_,_biI_) && harmless(_biI_))
                 return symbol$4(_YY_,rest$3)}
              else
               switch$56 = 1;
             else
              if(22 === _biK_[0])
               {var _bmG_=_biJ_[2];
                if(_bmG_)
                 {var _bmH_=_bmG_[1],switch$59=0;
                  if(typeof _bmH_ !== "number" && 2 === _bmH_[0])
                   if(_bmH_[1])
                    switch$59 = 1;
                   else
                    {if(! may_fail(_biI_))return symbol$4(0,_biJ_);
                     switch$59 = 1}}}
              else
               switch$56 = 1}
           if(typeof _biI_ === "number")
            switch$54 = 2;
           else
            switch(_biI_[0])
             {case 1:
               var switch$60=0,_bk1_=_biI_[1];
               if(typeof _bk1_ === "number")
                switch(_bk1_)
                 {case 3:
                   var _bk2_=x[2];
                   if(_bk2_)
                    {var _bk3_=_bk2_[1],switch$61=0;
                     if(typeof _bk3_ !== "number" && 1 === _bk3_[0])
                      {var _bk4_=_bk3_[1];
                       if(typeof _bk4_ === "number")
                        {if(13 === _bk4_)
                          {var rest$50=_bk2_[2];return symbol$4(_ZB_,rest$50)}
                         switch$60 = 1;
                         switch$61 = 1}
                       else
                        {switch$60 = 1;switch$61 = 1}}
                     if(! switch$61){switch$54 = 2;switch$60 = 1}}
                   else
                    switch$60 = 1;
                   break;
                  case 8:
                   var _bk5_=x[2];
                   if(_bk5_)
                    {var _bk6_=_bk5_[1],switch$62=0;
                     if(typeof _bk6_ !== "number" && 1 === _bk6_[0])
                      {var _bk7_=_bk6_[1];
                       if(typeof _bk7_ === "number")
                        {if(13 === _bk7_)
                          {var rest$51=_bk5_[2];return symbol$4(_ZC_,rest$51)}
                         switch$60 = 1;
                         switch$62 = 1}
                       else
                        {switch$60 = 1;switch$62 = 1}}
                     if(! switch$62){switch$54 = 2;switch$60 = 1}}
                   else
                    switch$60 = 1;
                   break
                  }
               else
                if(1 === _bk1_[0])
                 {var _bk8_=x[2];
                  if(_bk8_)
                   {var _bk9_=_bk8_[1];
                    if(typeof _bk9_ !== "number" && 11 === _bk9_[0])
                     {var rest$52=_bk8_[2];return symbol$4(0,rest$52)}
                    switch$54 = 2;
                    switch$60 = 1}
                  else
                   switch$60 = 1}
               if(! switch$60)switch$54 = 2;
               break;
              case 3:
               var switch$63=0,_bk__=_biI_[1];
               if(typeof _bk__ !== "number" && 1 !== _bk__[0])
                {var _bk$_=x[2],_bla_=_bk$_[1],switch$64=0;
                 if(typeof _bla_ !== "number")
                  switch(_bla_[0])
                   {case 24:
                     var _blb_=_bla_[1];
                     if(_blb_ && _blb_[1])
                      {var _blc_=_blb_[2];
                       if(_blc_ && _blc_[1])
                        {if(! _blc_[2])
                          {var rest$53=_bk$_[2];return symbol$4(0,rest$53)}
                         switch$63 = 1;
                         switch$64 = 1}
                       else
                        {switch$63 = 1;switch$64 = 1}}
                     else
                      {switch$63 = 1;switch$64 = 1}
                     break;
                    case 26:
                     var _bld_=_bla_[1];
                     if(_bld_)
                      {if(_bld_[1])
                        {var rest$54=_bk$_[2],l=_bld_[2];
                         return symbol$4([0,0,[0,[26,l],0]],rest$54)}
                       var rest$55=_bk$_[2],l$0=_bld_[2];
                       return symbol$4([0,_ZD_,[0,0,[0,[26,l$0],0]]],rest$55)}
                     switch$63 = 1;
                     switch$64 = 1;
                     break
                    }
                 if(! switch$64){switch$54 = 2;switch$63 = 1}}
               if(! switch$63)switch$54 = 2;
               break;
              case 8:
               var _ble_=_biI_[1],_blf_=_ble_[1];
               if(typeof _blf_ === "number")
                {if(0 === _blf_)
                  {var rest$56=x[2];return symbol$4(_ZE_,rest$56)}}
               else
                if(23 === _blf_[0] && ! _blf_[1])
                 {var rest$59=x[2];return symbol$4(0,rest$59)}
               var _blg_=x[2];
               if(_blg_)
                {var _blh_=_blg_[1];
                 if(typeof _blh_ === "number")
                  {if(0 === _blh_)
                    {var rest$57=_blg_[2];
                     return symbol$4([0,0,[0,_ble_[1],0]],rest$57)}}
                 else
                  if(8 === _blh_[0])
                   {var rest$58=_blg_[2],i2=_blh_[1];
                    return symbol$4([0,[8,iseq([0,_ble_,[0,i2,0]])],0],rest$58)}
                 switch$54 = 2}
               break;
              case 15:
               if(1 === _biI_[1])
                {var _bli_=x[2];
                 if(_bli_)
                  {var _blj_=_bli_[1],switch$65=0;
                   if(typeof _blj_ === "number")
                    if(0 === _blj_)switch$54 = 3;else switch$65 = 1;
                   else
                    switch(_blj_[0])
                     {case 2:
                       if(_blj_[1])
                        {var rest$60=_bli_[2];return symbol$4(_ZF_,rest$60)}
                       var rest$61=_bli_[2];
                       return symbol$4(_ZG_,rest$61);
                      case 8:
                       var match$0=_blj_[1],instr$1=match$0[1],rest$62=_bli_[2];
                       if(has_arity(_ZH_,instr$1))
                        return symbol$4([0,_ZJ_,[0,instr$1,_ZI_]],rest$62);
                       var switch$66=0;
                       if(typeof instr$1 === "number")
                        {if(0 === instr$1)
                          {var rest$63=_bli_[2];return symbol$4(0,rest$63)}}
                       else
                        if(15 === instr$1[0])
                         {if(1 === instr$1[1])
                           {var rest$64=_bli_[2];return symbol$4(_ZK_,rest$64)}
                          switch$54 = 2;
                          switch$66 = 1}
                       if(! switch$66)switch$54 = 2;
                       break;
                      case 16:switch$54 = 2;break;
                      case 26:
                       var _blk_=_blj_[1];
                       if(_blk_)
                        if(_blk_[1])
                         if(_blk_[2])
                          switch$54 = 1;
                         else
                          {var _bll_=_bli_[2];
                           if(_bll_)
                            {var _blm_=_bll_[1],switch$67=0;
                             if(typeof _blm_ !== "number" && 16 === _blm_[0])
                              if(1 === _blm_[1])
                               {var _bln_=_bll_[2];
                                if(_bln_)
                                 {var _blo_=_bln_[1],switch$68=0;
                                  if(typeof _blo_ !== "number" && 26 === _blo_[0])
                                   {var _blp_=_blo_[1];
                                    if(_blp_ && ! _blp_[1])
                                     {if(! _blp_[2])
                                       {var rest$65=_bln_[2];return symbol$4(_ZL_,rest$65)}
                                      switch$67 = 1;
                                      switch$68 = 1}
                                    else
                                     {switch$67 = 1;switch$68 = 1}}
                                  if(! switch$68){switch$54 = 1;switch$67 = 1}}
                                else
                                 switch$67 = 1}
                              else
                               {switch$54 = 1;switch$67 = 1}
                             if(! switch$67)switch$54 = 1}}
                        else
                         if(_blk_[2])
                          switch$54 = 1;
                         else
                          {var _blq_=_bli_[2];
                           if(_blq_)
                            {var _blr_=_blq_[1],switch$69=0;
                             if(typeof _blr_ === "number" || ! (16 === _blr_[0]))
                              switch$69 = 1;
                             else
                              if(1 === _blr_[1])
                               {var _bls_=_blq_[2];
                                if(_bls_)
                                 {var _blt_=_bls_[1],switch$70=0;
                                  if(typeof _blt_ !== "number" && 26 === _blt_[0])
                                   {var _blu_=_blt_[1];
                                    if(_blu_ && _blu_[1])
                                     {if(! _blu_[2])
                                       {var rest$66=_bls_[2];return symbol$4(_ZM_,rest$66)}
                                      switch$70 = 1}
                                    else
                                     switch$70 = 1}
                                  if(! switch$70)switch$54 = 1}}
                              else
                               switch$54 = 1;
                             if(switch$69)switch$54 = 1}}
                       else
                        switch$54 = 1;
                       break;
                      default:switch$65 = 1}
                   if(switch$65)switch$54 = 1}}
               else
                switch$54 = 2;
               break;
              case 16:
               var _blv_=_biI_[1],switch$71=0;
               if(1 === _blv_)
                {var _blw_=x[2];
                 if(_blw_)
                  {var comBin=_blw_[1],rest$67=_blw_[2];
                   if(is_commutative(comBin))
                    return symbol$4([0,comBin,0],rest$67);
                   var switch$72=0;
                   if(typeof comBin === "number")
                    {if(0 === comBin)
                      {var _blx_=_blw_[2];
                       if(_blx_)
                        {var _bly_=_blx_[1];
                         if(typeof _bly_ === "number")
                          {if(! _bly_)
                            {var rest$70=_blx_[2];return symbol$4(_ZO_,rest$70)}
                           switch$72 = 1}
                         else
                          switch$72 = 1}
                       else
                        {switch$54 = 1;switch$71 = 1;switch$72 = 1}}}
                   else
                    if(3 === comBin[0])
                     {var _blH_=comBin[1];
                      if(typeof _blH_ === "number" && 10 === _blH_)
                       {var _blI_=_blw_[2];
                        if(_blI_)
                         {var _blJ_=_blI_[1],switch$73=0;
                          if(typeof _blJ_ !== "number" && 1 === _blJ_[0])
                           {var _blK_=_blJ_[1];
                            if(typeof _blK_ === "number" && ! (13 <= _blK_))
                             switch(_blK_)
                              {case 3:var rest$71=_blI_[2];return symbol$4(_ZP_,rest$71);
                               case 8:var rest$72=_blI_[2];return symbol$4(_ZQ_,rest$72);
                               case 10:var rest$73=_blI_[2];return symbol$4(_ZR_,rest$73);
                               case 12:var rest$74=_blI_[2];return symbol$4(_ZS_,rest$74);
                               default:
                                switch$54 = 1;switch$71 = 1;switch$72 = 1;switch$73 = 1}
                            else
                             {switch$54 = 1;switch$71 = 1;switch$72 = 1;switch$73 = 1}}
                          if(! switch$73){switch$54 = 1;switch$71 = 1;switch$72 = 1}}
                        else
                         {switch$54 = 1;switch$71 = 1;switch$72 = 1}}
                      else
                       {switch$54 = 1;switch$71 = 1;switch$72 = 1}}}
                 else
                  {switch$54 = 1;switch$71 = 1}}
               if(! switch$71)
                {var _blz_=x[2];
                 if(_blz_)
                  {var _blA_=_blz_[1],switch$74=0;
                   if(typeof _blA_ === "number")
                    if(0 === _blA_)
                     {var _blB_=_blz_[2];
                      if(_blB_)
                       {var _blC_=_blB_[1],switch$75=0;
                        if(typeof _blC_ !== "number" && 16 === _blC_[0])
                         {var _blD_=_blB_[2];
                          if(_blD_)
                           {var _blE_=_blD_[1];
                            if(typeof _blE_ === "number" && ! _blE_)
                             {var rest$68=_blD_[2],n2$2=_blC_[1];
                              if(n2$2 < _blv_)
                               return symbol$4
                                       ([0,[16,n2$2],[0,0,[0,[16,_blv_ - 1 | 0],_ZN_]]],rest$68);
                              switch$54 = 1;
                              switch$75 = 1}
                            else
                             {switch$54 = 1;switch$75 = 1}}
                          else
                           {switch$54 = 1;switch$75 = 1}}
                        if(! switch$75)switch$54 = 3}
                      else
                       switch$54 = 1}
                    else
                     switch$74 = 1;
                   else
                    if(6 === _blA_[0])
                     {var _blF_=_blz_[2];
                      if(_blF_)
                       {var _blG_=_blF_[1],switch$76=0;
                        if(typeof _blG_ !== "number" && 17 === _blG_[0])
                         {var rest$69=_blF_[2],n2$3=_blG_[1];
                          if(_blv_ === n2$3)return symbol$4([0,_blA_,0],rest$69);
                          switch$54 = 1;
                          switch$76 = 1}
                        if(! switch$76)switch$54 = 1}
                      else
                       switch$54 = 1}
                    else
                     switch$74 = 1;
                   if(switch$74)switch$54 = 2}
                 else
                  switch$54 = 1}
               break;
              case 17:
               var _blL_=x[2],_blM_=_blL_[1],switch$77=0;
               if(typeof _blM_ === "number" || ! (6 === _blM_[0]))
                switch$77 = 1;
               else
                {var _blN_=_blL_[2];
                 if(_blN_)
                  {var _blO_=_blN_[1],switch$78=0;
                   if(typeof _blO_ !== "number" && 16 === _blO_[0])
                    {var rest$75=_blN_[2],n2$4=_blO_[1],n1$2=_biI_[1];
                     if(n1$2 === n2$4)return symbol$4([0,_blM_,0],rest$75);
                     switch$54 = 4;
                     switch$78 = 1}
                   if(! switch$78)switch$54 = 4}
                 else
                  switch$54 = 1}
               if(switch$77)switch$54 = 2;
               break;
              case 22:
               var
                _blP_=_biI_[1],
                _blQ_=_biI_[2],
                _blR_=x[2],
                _blS_=_blR_[1],
                switch$79=0;
               if(typeof _blS_ === "number")
                switch$79 = 2;
               else
                switch(_blS_[0])
                 {case 1:
                   var _bmo_=_blS_[1];
                   if(typeof _bmo_ === "number")
                    {if(2 === _bmo_)
                      {var rest$85=_blR_[2],_bmp_=caml_call1(_Jw_[9],_blQ_);
                       return symbol$4
                               ([0,[22,caml_call1(_zz_,_blP_),_bmp_],0],rest$85)}}
                   else
                    switch(_bmo_[0])
                     {case 0:
                       var
                        rest$86=_blR_[2],
                        tr=_bmo_[3],
                        annot_right=_bmo_[2],
                        annot_left=_bmo_[1],
                        _bmq_=caml_call1(_Jw_[7],_blQ_);
                       return symbol$4
                               ([0,
                                 [22,caml_call4(_zI_,annot_left,annot_right,_blP_,tr),_bmq_],
                                 0],
                                rest$86);
                      case 1:
                       var
                        rest$87=_blR_[2],
                        tl=_bmo_[3],
                        annot_right$0=_bmo_[2],
                        annot_left$0=_bmo_[1],
                        _bmr_=caml_call1(_Jw_[8],_blQ_);
                       return symbol$4
                               ([0,
                                 [22,
                                  caml_call4(_zI_,annot_left$0,annot_right$0,tl,_blP_),
                                  _bmr_],
                                 0],
                                rest$87)
                      }
                   switch$79 = 1;
                   break;
                  case 15:
                   if(1 === _blS_[1])
                    {var rest$88=_blR_[2];
                     return symbol$4
                             ([0,[22,_blP_,_blQ_],[0,[22,_blP_,_blQ_],0]],rest$88)}
                   break;
                  default:switch$79 = 2}
               var switch$80=0;
               switch(switch$79)
                {case 0:break;
                 case 2:
                  var _blT_=_blQ_[1],switch$81=0;
                  if(typeof _blT_ !== "number")
                   switch(_blT_[0])
                    {case 1:
                      if(_blT_[1])
                       {switch$80 = 1;switch$81 = 1}
                      else
                       {var _bmm_=x[2],_bmn_=_bmm_[1];
                        if(typeof _bmn_ !== "number" && 10 === _bmn_[0])
                         {var rest$84=_bmm_[2];return symbol$4(0,rest$84)}
                        switch$80 = 1;
                        switch$81 = 1}
                      break;
                     case 0:
                     case 4:switch$80 = 1;switch$81 = 1;break
                     }
                  if(! switch$81)switch$54 = 2;
                  break;
                 default:switch$80 = 1}
               if(switch$80)
                {var _blU_=_blP_[1];
                 switch(_blU_[0])
                  {case 0:
                    var _blV_=_blU_[1];
                    if(typeof _blV_ === "number")
                     {var switcher=_blV_ - 1 | 0;
                      if(2 < switcher >>> 0)
                       switch$54 = 2;
                      else
                       switch(switcher)
                        {case 0:
                          var _blW_=_biI_[2][1],switch$82=0;
                          if(typeof _blW_ === "number")
                           switch$82 = 1;
                          else
                           switch(_blW_[0])
                            {case 1:
                              var _blX_=_blW_[1],_blY_=x[2],_blZ_=_blY_[1],switch$83=0;
                              if(typeof _blZ_ !== "number" && 1 === _blZ_[0])
                               {var _bl6_=_blZ_[1];
                                if(typeof _bl6_ === "number")
                                 {if(13 === _bl6_)
                                   {var rest$78=_blY_[2];
                                    return symbol$4
                                            ([0,[22,_zf_,caml_call1(_Jw_[3],1 - _blX_)],0],rest$78)}
                                  switch$83 = 1}
                                else
                                 switch$83 = 1}
                              if(! switch$83)
                               if(_blX_)
                                {var _bl0_=x[2],_bl1_=_bl0_[1];
                                 if(typeof _bl1_ !== "number" && 18 === _bl1_[0])
                                  {var rest$76=_bl0_[2],a=_bl1_[1],_bl2_=fails(a)?0:rest$76;
                                   return symbol$4([0,a[1],0],_bl2_)}
                                 switch$54 = 2}
                               else
                                {var _bl3_=x[2],_bl4_=_bl3_[1];
                                 if(typeof _bl4_ !== "number" && 18 === _bl4_[0])
                                  {var rest$77=_bl3_[2],b=_bl4_[2],_bl5_=fails(b)?0:rest$77;
                                   return symbol$4([0,b[1],0],_bl5_)}
                                 switch$54 = 2}
                              break;
                             case 0:
                             case 4:switch$54 = 2;break;
                             default:switch$82 = 1}
                          break;
                         case 1:switch$54 = 2;break;
                         default:
                          var _bl7_=_biI_[2][1],switch$84=0;
                          if(typeof _bl7_ === "number")
                           switch$84 = 1;
                          else
                           switch(_bl7_[0])
                            {case 0:
                              var _bl8_=x[2],_bl9_=_bl8_[1],switch$85=0;
                              if(typeof _bl9_ !== "number" && 1 === _bl9_[0])
                               {var _bl__=_bl9_[1];
                                if(typeof _bl__ === "number")
                                 {var switcher$0=_bl__ - 3 | 0;
                                  if(9 < switcher$0 >>> 0)
                                   switch$85 = 1;
                                  else
                                   {var _bl$_=_bl7_[1];
                                    switch(switcher$0)
                                     {case 0:
                                       var
                                        rest$79=_bl8_[2],
                                        _bma_=caml_call2(Big_int[24],_bl$_,Big_int[1]);
                                       return symbol$4
                                               ([0,[22,_zf_,caml_call1(_Jw_[3],_bma_)],0],rest$79);
                                      case 7:
                                       var
                                        rest$80=_bl8_[2],
                                        _bmb_=caml_call2(Big_int[27],_bl$_,Big_int[1]);
                                       return symbol$4
                                               ([0,[22,_zf_,caml_call1(_Jw_[3],_bmb_)],0],rest$80);
                                      case 9:
                                       var
                                        rest$81=_bl8_[2],
                                        _bmc_=caml_call2(Big_int[28],_bl$_,Big_int[1]);
                                       return symbol$4
                                               ([0,[22,_zf_,caml_call1(_Jw_[3],_bmc_)],0],rest$81);
                                      default:switch$85 = 1}}}
                                else
                                 switch$85 = 1}
                              if(! switch$85)switch$54 = 2;
                              break;
                             case 1:
                             case 4:switch$54 = 2;break;
                             default:switch$84 = 1}}}
                    else
                     switch$54 = 2;
                    break;
                   case 2:
                    var switch$86=0,_bmd_=_blU_[1];
                    if(typeof _bmd_ === "number" || 1 === _bmd_[0])
                     switch$86 = 1;
                    else
                     {var
                       _bme_=_biI_[2][1],
                       switch$87=0,
                       _bmf_=_blU_[3],
                       _bmg_=_blU_[2];
                      if(typeof _bme_ !== "number")
                       switch(_bme_[0])
                        {case 4:
                          var _bmh_=x[2],_bmi_=_bmh_[1],switch$88=0;
                          if(typeof _bmi_ !== "number" && 26 === _bmi_[0])
                           {var _bmj_=_bmi_[1];
                            if(_bmj_)
                             {var _bmk_=_bme_[2],_bml_=_bme_[1];
                              if(_bmj_[1])
                               {var rest$82=_bmh_[2],l$1=_bmj_[2];
                                return symbol$4([0,[22,_bmf_,_bmk_],[0,[26,l$1],0]],rest$82)}
                              var rest$83=_bmh_[2],l$2=_bmj_[2];
                              return symbol$4([0,[22,_bmg_,_bml_],[0,[26,l$2],0]],rest$83)}
                            switch$87 = 1;
                            switch$88 = 1}
                          if(! switch$88){switch$54 = 2;switch$87 = 1}
                          break;
                         case 0:
                         case 1:switch$54 = 2;switch$87 = 1;break
                         }}
                    if(switch$86)switch$54 = 2;
                    break;
                   default:switch$54 = 2}}
               break;
              case 24:
               var _bms_=_biI_[1];
               if(_bms_ && _bms_[1])
                {var _bmt_=_bms_[2];
                 if(_bmt_)
                  {var switch$89=0;
                   if(_bmt_[1])
                    if(_bmt_[2])
                     switch$89 = 1;
                    else
                     {var _bmw_=x[2];
                      if(_bmw_)
                       {var _bmx_=_bmw_[1],switch$90=0;
                        if(typeof _bmx_ === "number")
                         {if(0 === _bmx_)
                           {var rest$89=_bmw_[2];return symbol$4(_ZT_,rest$89)}}
                        else
                         if(3 === _bmx_[0])
                          {var _bmy_=_bmx_[1];
                           if(typeof _bmy_ !== "number" && 1 !== _bmy_[0])
                            {var rest$90=_bmw_[2];return symbol$4(0,rest$90)}
                           switch$90 = 1}
                        if(! switch$90)switch$54 = 2}}
                   else
                    if(_bmt_[2])
                     switch$89 = 1;
                    else
                     {var _bmz_=x[2];
                      if(_bmz_)
                       {var _bmA_=_bmz_[1];
                        if(typeof _bmA_ === "number")
                         {if(! _bmA_)
                           {var rest$91=_bmz_[2];return symbol$4(_ZU_,rest$91)}
                          switch$54 = 2}
                        else
                         switch$54 = 2}}
                   if(switch$89)
                    {var _bmu_=x[2];
                     if(_bmu_)
                      {var _bmv_=_bmu_[1];
                       if(typeof _bmv_ === "number" && ! _bmv_)
                        {var rest$28=_bmu_[2],fields=_bmt_;switch$54 = 5}
                       else
                        switch$54 = 2}}}
                 else
                  switch$54 = 2}
               else
                switch$54 = 2;
               break;
              case 26:
               var _bmB_=_biI_[1],_bmC_=x[2];
               if(_bmC_)
                {var _bmD_=_bmC_[1];
                 if(typeof _bmD_ !== "number" && 26 === _bmD_[0])
                  {var rest$93=_bmC_[2],op2=_bmD_[1];
                   return symbol$4
                           ([0,[26,caml_call2(Stdlib[37],_bmB_,op2)],0],rest$93)}}
               if(! _bmB_){var rest$92=x[2];return symbol$4(0,rest$92)}
               switch$54 = 2;
               break;
              default:switch$54 = 2}
           break;
          case 2:switch$54 = 2;break;
          case 1:switch$54 = 1;break
          }
        var switch$91=0;
        switch(switch$54)
         {case 2:
           var _biP_=x[2];
           if(_biP_)
            {var _biQ_=_biP_[1],switch$92=0;
             if(typeof _biQ_ !== "number")
              switch(_biQ_[0])
               {case 8:
                 var i=_biQ_[1],rest$45=_biP_[2];
                 if(has_arity(_Zu_,_biI_))
                  return symbol$4([0,[8,i],[0,_biI_,0]],rest$45);
                 var rest$46=_biP_[2],instr$0=i[1];
                 if(is_pure_push(_biI_))
                  return symbol$4([0,instr$0,[0,_biI_,0]],rest$46);
                 switch$91 = 3;
                 switch$92 = 1;
                 break;
                case 16:
                 if(1 === _biQ_[1])
                  {var _bkY_=_biP_[2];
                   if(_bkY_)
                    {var _bkZ_=_bkY_[1];
                     if(typeof _bkZ_ === "number" && ! _bkZ_)
                      {var rest$49=_bkY_[2];
                       if(is_pure_push(_biI_))
                        return symbol$4([0,0,[0,_biI_,0]],rest$49)}
                     var rest$47=_bkY_[2];
                     if(has_arity(_Zv_,_bkZ_) && is_pure_push(_biI_))
                      return symbol$4([0,_bkZ_,[0,_biI_,_Zw_]],rest$47);
                     if(rest$47)
                      {var _bk0_=rest$47[1],switch$93=0;
                       if(typeof _bk0_ !== "number" && 16 === _bk0_[0])
                        if(1 === _bk0_[1])
                         {var rest$48=rest$47[2];
                          if(has_arity(_Zx_,_biI_) && has_arity(_Zy_,_bkZ_))
                           return symbol$4
                                   ([0,_ZA_,[0,_bkZ_,[0,_Zz_,[0,_biI_,0]]]],rest$48);
                          switch$91 = 3;
                          switch$92 = 1;
                          switch$93 = 1}
                        else
                         {switch$91 = 3;switch$92 = 1;switch$93 = 1}
                       if(! switch$93){switch$91 = 3;switch$92 = 1}}
                     else
                      {switch$91 = 3;switch$92 = 1}}
                   else
                    {switch$91 = 4;switch$92 = 1}}
                 else
                  {switch$91 = 3;switch$92 = 1}
                 break
                }
             if(! switch$92)switch$91 = 3}
           else
            switch$91 = 5;
           break;
          case 4:switch$91 = 3;break;
          case 3:switch$91 = 2;break;
          case 1:switch$91 = 1;break;
          case 0:break;
          default:switch$91 = 6}
        var switch$94=0;
        switch(switch$91)
         {case 3:
           var switch$95=0;
           if(typeof _biI_ !== "number")
            switch(_biI_[0])
             {case 6:
               var _bkk_=x[2],_bkl_=_bkk_[2];
               if(_bkl_)
                {var _bkm_=_bkl_[1],switch$96=0;
                 if(typeof _bkm_ !== "number" && 2 === _bkm_[0])
                  if(_bkm_[1])
                   {switch$94 = 2;switch$95 = 1;switch$96 = 1}
                  else
                   {var rest$38=_bkl_[2],push$0=_bkk_[1];
                    if(is_pure_push(push$0))
                     return symbol$4([0,push$0,[0,_Zm_,[0,_biI_,0]]],rest$38);
                    switch$94 = 2;
                    switch$95 = 1;
                    switch$96 = 1}}
               else
                {switch$94 = 2;switch$95 = 1}
               break;
              case 15:
               if(1 === _biI_[1])
                {var _bkn_=x[2],_bko_=_bkn_[1],switch$97=0;
                 if(typeof _bko_ !== "number" && 8 === _bko_[0])
                  {var _bkp_=_bko_[1][1],switch$98=0;
                   if(typeof _bkp_ !== "number" && 16 === _bkp_[0])
                    {if(1 === _bkp_[1])
                      {var rest$39=_bkn_[2];return symbol$4(_Zn_,rest$39)}
                     switch$94 = 1;
                     switch$95 = 1;
                     switch$97 = 1;
                     switch$98 = 1}
                   if(! switch$98){switch$94 = 1;switch$95 = 1;switch$97 = 1}}}
               break;
              case 16:
               var _bkq_=x[2],_bkr_=_bkq_[1],switch$99=0;
               if(typeof _bkr_ === "number" || ! (16 === _bkr_[0]))
                switch$99 = 1;
               else
                {var _bks_=_bkq_[2];
                 if(_bks_)
                  {var _bkt_=_bks_[1];
                   if(typeof _bkt_ === "number" && ! _bkt_)
                    {var rest$40=_bks_[2],n2$0=_bkr_[1],n1$1=_biI_[1];
                     if(1 <= n1$1 && 1 <= n2$0)
                      return n2$0 <= n1$1
                              ?symbol$4
                                ([0,[16,n2$0 - 1 | 0],[0,0,[0,[16,n1$1 - 1 | 0],0]]],
                                 rest$40)
                              :symbol$4([0,[16,n2$0],[0,0,[0,[16,n1$1],0]]],rest$40)}}
                 else
                  {switch$94 = 1;switch$95 = 1}}
               break;
              case 17:
               var _bku_=x[2],_bkv_=_bku_[1],_bkw_=_biI_[1],_bkx_=_bku_[2];
               if(_bkx_)
                {var _bky_=_bkx_[1],switch$100=0;
                 if(typeof _bky_ !== "number" && 16 === _bky_[0])
                  {var rest$42=_bkx_[2],n2$1=_bky_[1];
                   if(_bkw_ === n2$1 && has_arity(_Zp_,_bkv_) && 1 < _bkw_)
                    return symbol$4([0,_Zr_,[0,_bkv_,_Zq_]],rest$42);
                   switch$100 = 1}
                 var switch$101=0;
                 if(typeof _bkv_ === "number" || ! (22 === _bkv_[0]))
                  switch$101 = 1;
                 else
                  {var _bkz_=_bku_[2],_bkA_=_bkz_[1],switch$102=0;
                   if(typeof _bkA_ !== "number" && 16 === _bkA_[0])
                    {var _bkB_=_bkz_[2];
                     if(_bkB_)
                      {var _bkC_=_bkB_[1],switch$103=0;
                       if(typeof _bkC_ !== "number" && 3 === _bkC_[0])
                        {var switch$104=0,_bkD_=_bkC_[1];
                         if(typeof _bkD_ !== "number" && 1 !== _bkD_[0])
                          {var _bkE_=_bkB_[2];
                           if(_bkE_)
                            {var _bkF_=_bkE_[1],switch$105=0;
                             if(typeof _bkF_ !== "number" && 3 === _bkF_[0])
                              {var _bkG_=_bkF_[1];
                               if(typeof _bkG_ === "number" && 14 === _bkG_)
                                {var _bkH_=_bkE_[2];
                                 if(_bkH_)
                                  {var _bkI_=_bkH_[1],switch$106=0;
                                   if(typeof _bkI_ !== "number" && 2 === _bkI_[0])
                                    if(_bkI_[1])
                                     {switch$94 = 1;
                                      switch$95 = 1;
                                      switch$102 = 1;
                                      switch$103 = 1;
                                      switch$104 = 1;
                                      switch$105 = 1;
                                      switch$106 = 1}
                                    else
                                     {var rest$41=_bkH_[2],k$0=_bkA_[1];
                                      if(2 < _bkw_ && 2 < k$0)
                                       return symbol$4
                                               ([0,0,[0,_bkv_,[0,[16,k$0],[0,_bkC_,_Zo_]]]],rest$41);
                                      switch$94 = 1;
                                      switch$95 = 1;
                                      switch$102 = 1;
                                      switch$103 = 1;
                                      switch$104 = 1;
                                      switch$105 = 1;
                                      switch$106 = 1}
                                   if(! switch$106)
                                    {switch$94 = 1;
                                     switch$95 = 1;
                                     switch$102 = 1;
                                     switch$103 = 1;
                                     switch$104 = 1;
                                     switch$105 = 1}}
                                 else
                                  {switch$94 = 1;
                                   switch$95 = 1;
                                   switch$102 = 1;
                                   switch$103 = 1;
                                   switch$104 = 1;
                                   switch$105 = 1}}
                               else
                                {switch$94 = 1;
                                 switch$95 = 1;
                                 switch$102 = 1;
                                 switch$103 = 1;
                                 switch$104 = 1;
                                 switch$105 = 1}}
                             if(! switch$105)
                              {switch$94 = 1;
                               switch$95 = 1;
                               switch$102 = 1;
                               switch$103 = 1;
                               switch$104 = 1}}
                           else
                            {switch$94 = 1;
                             switch$95 = 1;
                             switch$102 = 1;
                             switch$103 = 1;
                             switch$104 = 1}}
                         if(! switch$104)
                          {switch$94 = 1;switch$95 = 1;switch$102 = 1;switch$103 = 1}}
                       if(! switch$103){switch$94 = 1;switch$95 = 1;switch$102 = 1}}
                     else
                      {switch$94 = 1;switch$95 = 1;switch$102 = 1}}
                   if(! switch$102){switch$94 = 1;switch$95 = 1}}}
               else
                {switch$94 = 2;switch$95 = 1}
               break;
              case 22:
               var _bkJ_=x[2],_bkK_=_bkJ_[1],switch$107=0;
               if(typeof _bkK_ === "number" || ! (16 === _bkK_[0]))
                switch$107 = 1;
               else
                if(1 === _bkK_[1])
                 {var _bkL_=_bkJ_[2];
                  if(_bkL_)
                   {var _bkM_=_bkL_[1],switch$108=0;
                    if(typeof _bkM_ !== "number" && 12 === _bkM_[0])
                     {var _bkN_=_bkM_[1][1],switch$109=0;
                      if(typeof _bkN_ !== "number" && 3 === _bkN_[0])
                       {var _bkO_=_bkN_[1];
                        if(typeof _bkO_ === "number" && 9 === _bkO_)
                         {var _bkP_=_bkL_[2];
                          if(_bkP_)
                           {var _bkQ_=_bkP_[1],switch$110=0;
                            if(typeof _bkQ_ !== "number" && 16 === _bkQ_[0])
                             if(1 === _bkQ_[1])
                              {var _bkR_=_bkP_[2];
                               if(_bkR_)
                                {var _bkS_=_bkR_[1];
                                 if(typeof _bkS_ === "number")
                                  {if(! _bkS_)
                                    {var rest$43=_bkR_[2];
                                     return symbol$4
                                             ([0,_Zt_,[0,0,[0,_biI_,[0,_Zs_,[0,_bkM_,0]]]]],rest$43)}
                                   switch$95 = 1;
                                   switch$108 = 1;
                                   switch$109 = 1;
                                   switch$110 = 1}
                                 else
                                  {switch$95 = 1;switch$108 = 1;switch$109 = 1;switch$110 = 1}}
                               else
                                {switch$95 = 1;switch$108 = 1;switch$109 = 1;switch$110 = 1}}
                             else
                              {switch$95 = 1;switch$108 = 1;switch$109 = 1;switch$110 = 1}
                            if(! switch$110)
                             {switch$95 = 1;switch$108 = 1;switch$109 = 1}}
                          else
                           {switch$95 = 1;switch$108 = 1;switch$109 = 1}}
                        else
                         {switch$95 = 1;switch$108 = 1;switch$109 = 1}}
                      if(! switch$109){switch$95 = 1;switch$108 = 1}}}
                  else
                   switch$95 = 1}
               break;
              case 28:
               var _bkT_=x[2],_bkU_=_bkT_[1],switch$111=0;
               if(typeof _bkU_ === "number" || ! (16 === _bkU_[0]))
                switch$111 = 1;
               else
                if(1 === _bkU_[1])
                 {var _bkV_=_bkT_[2];
                  if(_bkV_)
                   {var _bkW_=_bkV_[1],switch$112=0;
                    if(typeof _bkW_ !== "number" && 3 === _bkW_[0])
                     {var _bkX_=_bkW_[1];
                      if(typeof _bkX_ === "number")
                       {if(14 === _bkX_)
                         {var rest$44=_bkV_[2],match=_biI_[3],instr=match[1];
                          return symbol$4([0,instr,0],rest$44)}
                        switch$95 = 1;
                        switch$112 = 1}
                      else
                       {switch$95 = 1;switch$112 = 1}}}
                  else
                   switch$95 = 1}
               break
              }
           if(! switch$95)
            {var _biR_=x[2],_biS_=_biR_[1],switch$113=0;
             if(typeof _biS_ !== "number" && 16 === _biS_[0])
              {var _bki_=_biR_[2];
               if(_bki_)
                {var _bkj_=_bki_[1];
                 if(typeof _bkj_ === "number" && ! _bkj_)
                  {var rest$37=_bki_[2],n$10=_biS_[1];
                   if(is_pure_push(_biI_) && 1 < n$10)
                    return symbol$4
                            ([0,[16,n$10 - 1 | 0],[0,0,[0,_biI_,0]]],rest$37);
                   switch$94 = 4;
                   switch$113 = 1}
                 else
                  {switch$94 = 4;switch$113 = 1}}
               else
                {switch$94 = 4;switch$113 = 1}}
             if(! switch$113)switch$94 = 4}
           break;
          case 4:switch$94 = 4;break;
          case 5:switch$94 = 5;break;
          case 2:switch$94 = 3;break;
          case 1:switch$94 = 1;break;
          case 0:break;
          default:switch$94 = 6}
        var switch$114=0;
        switch(switch$94)
         {case 4:
           var switch$115=0;
           if(typeof _biI_ !== "number")
            switch(_biI_[0])
             {case 15:
               var _bj1_=_biI_[1];
               if(1 === _bj1_)
                {var _bj2_=x[2],_bj3_=_bj2_[1],switch$116=0;
                 if(typeof _bj3_ === "number" || ! (16 === _bj3_[0]))
                  switch$116 = 1;
                 else
                  {var _bj9_=_bj2_[2];
                   if(_bj9_)
                    {var _bj__=_bj9_[1];
                     if(typeof _bj__ === "number" && ! _bj__)
                      {var rest$34=_bj9_[2],n$8=_bj3_[1];
                       if(1 < n$8)
                        return symbol$4([0,[16,n$8 - 1 | 0],_Zk_],rest$34)}}}}
               var _bj4_=x[2],_bj5_=_bj4_[1],switch$117=0;
               if(typeof _bj5_ !== "number" && 16 === _bj5_[0])
                {var _bj6_=_bj5_[1],_bj7_=_bj4_[2];
                 if(_bj7_)
                  {var _bj8_=_bj7_[1];
                   if(typeof _bj8_ === "number" && ! _bj8_)
                    {var rest$33=_bj7_[2];
                     if(1 < _bj6_)
                      return _bj6_ === _bj1_
                              ?symbol$4([0,[16,_bj6_ - 1 | 0],0],rest$33)
                              :_bj1_ < _bj6_
                                ?symbol$4
                                  ([0,[16,_bj6_ - 1 | 0],[0,0,[0,[15,_bj1_],0]]],rest$33)
                                :symbol$4
                                  ([0,[16,_bj6_ - 1 | 0],[0,0,[0,[15,_bj1_ - 1 | 0],0]]],
                                   rest$33)}}
                 var rest$32=_bj4_[2];
                 if(_bj6_ === _bj1_)
                  return symbol$4([0,[16,_bj6_ - 1 | 0],_Zj_],rest$32);
                 switch$117 = 1}
               break;
              case 16:
               var _bj$_=x[2],_bka_=_bj$_[1],switch$118=0;
               if(typeof _bka_ !== "number" && 16 === _bka_[0])
                if(1 === _bka_[1])
                 {var _bkb_=_bj$_[2];
                  if(_bkb_)
                   {var _bkc_=_bkb_[2];
                    if(_bkc_)
                     {var _bkd_=_bkc_[1],switch$119=0;
                      if(typeof _bkd_ !== "number" && 16 === _bkd_[0])
                       if(1 === _bkd_[1])
                        {var rest$35=_bkc_[2],mono=_bkb_[1],n$9=_biI_[1];
                         if(1 <= n$9 && has_arity(_Zl_,mono))
                          return symbol$4([0,mono,[0,[16,n$9],0]],rest$35);
                         switch$118 = 1;
                         switch$119 = 1}
                       else
                        {switch$118 = 1;switch$119 = 1}
                      if(! switch$119)switch$118 = 1}
                    else
                     switch$118 = 1}
                  else
                   {switch$114 = 1;switch$115 = 1;switch$118 = 1}}
                else
                 switch$118 = 1;
               break;
              case 17:
               var _bke_=x[2],_bkf_=_bke_[1],switch$120=0;
               if(typeof _bkf_ === "number" || ! (16 === _bkf_[0]))
                switch$120 = 1;
               else
                {var _bkg_=_bke_[2];
                 if(_bkg_)
                  {var _bkh_=_bkg_[1];
                   if(typeof _bkh_ === "number" && ! _bkh_)
                    {var rest$36=_bkg_[2],n2=_bkf_[1],n1$0=_biI_[1];
                     if(n1$0 !== n2 && 1 <= n1$0 && 1 <= n2)
                      return n2 < n1$0
                              ?symbol$4
                                ([0,[16,n2 + 1 | 0],[0,0,[0,[17,n1$0 - 1 | 0],0]]],rest$36)
                              :symbol$4([0,[16,n2],[0,0,[0,[17,n1$0],0]]],rest$36)}}
                 else
                  {switch$114 = 1;switch$115 = 1}}
               break
              }
           if(! switch$115)
            {var _biT_=x[2],_biU_=_biT_[1],switch$121=0;
             if(typeof _biU_ !== "number" && 16 === _biU_[0])
              {var _bjZ_=_biT_[2];
               if(_bjZ_)
                {var _bj0_=_bjZ_[1];
                 if(typeof _bj0_ === "number" && ! _bj0_)
                  {var rest$31=_bjZ_[2],n$7=_biU_[1];
                   if(has_arity(_Zi_,_biI_) && 1 <= n$7)
                    return symbol$4
                            ([0,[16,n$7 + 1 | 0],[0,0,[0,_biI_,0]]],rest$31);
                   switch$114 = 4;
                   switch$121 = 1}
                 else
                  {switch$114 = 4;switch$121 = 1}}
               else
                {switch$114 = 4;switch$121 = 1}}
             if(! switch$121)switch$114 = 4}
           break;
          case 5:switch$114 = 4;break;
          case 3:switch$114 = 2;break;
          case 2:switch$114 = 3;break;
          case 1:switch$114 = 1;break;
          case 0:break;
          default:switch$114 = 5}
        var switch$122=0;
        switch(switch$114)
         {case 4:
           if(typeof _biI_ === "number" || ! (24 === _biI_[0]))
            switch$122 = 2;
           else
            {var _bjO_=_biI_[1];
             if(! _bjO_){var rest$30=x[2];return symbol$4(0,rest$30)}
             if(_bjO_[1])
              {var _bjP_=_bjO_[2];
               if(! _bjP_){var rest$27=x[2];return symbol$4(0,rest$27)}
               var switch$123=0;
               if(_bjP_[1] && ! _bjP_[2])
                {var _bjU_=x[2];
                 if(_bjU_)
                  {var _bjV_=_bjU_[1],switch$124=0;
                   if(typeof _bjV_ !== "number" && 16 === _bjV_[0])
                    if(1 === _bjV_[1])
                     {var _bjW_=_bjU_[2];
                      if(_bjW_)
                       {var _bjX_=_bjW_[1];
                        if(typeof _bjX_ === "number")
                         {if(! _bjX_)
                           {var rest$26=_bjW_[2];return symbol$4(_Zf_,rest$26)}
                          switch$122 = 2;
                          switch$123 = 1;
                          switch$124 = 1}
                        else
                         {switch$122 = 2;switch$123 = 1;switch$124 = 1}}
                      else
                       {switch$123 = 1;switch$124 = 1}}
                    else
                     {switch$122 = 2;switch$123 = 1;switch$124 = 1}
                   if(! switch$124){switch$122 = 2;switch$123 = 1}}
                 else
                  switch$123 = 1}
               if(! switch$123)
                if(_bjO_[2][2])
                 {var _bjQ_=x[2];
                  if(_bjQ_)
                   {var _bjR_=_bjQ_[1],switch$125=0;
                    if(typeof _bjR_ !== "number" && 16 === _bjR_[0])
                     {var _bjS_=_bjQ_[2];
                      if(_bjS_)
                       {var _bjT_=_bjS_[1];
                        if(typeof _bjT_ === "number")
                         {if(! _bjT_)
                           {var
                             rest$25=_bjS_[2],
                             n$6=_bjR_[1],
                             k=caml_call1(unpair_size,_bjO_);
                            if(k <= n$6)
                             return symbol$4
                                     ([0,[16,(n$6 - k | 0) + 1 | 0],[0,0,[0,[24,_bjO_],0]]],
                                      rest$25);
                            var
                             drop_field=
                              function(n,match)
                               {if(0 === n && match && match[1])
                                 {var fields=match[2];return [0,0,fields]}
                                if(match)
                                 {var fields$0=match[2],select=match[1],_boP_=select?1:0;
                                  return [0,select,drop_field(n - _boP_ | 0,fields$0)]}
                                throw [0,Assert_failure,_Ze_]};
                            return symbol$4([0,[24,drop_field(n$6,_bjO_)],0],rest$25)}
                          switch$122 = 2;
                          switch$125 = 1}
                        else
                         {switch$122 = 2;switch$125 = 1}}
                      else
                       switch$125 = 1}
                    if(! switch$125)switch$122 = 2}}
                else
                 switch$122 = 2}
             else
              {var _bjY_=_bjO_[2];
               if(! _bjY_){var rest$29=x[2];return symbol$4(_Zh_,rest$29)}
               if(_bjY_[2])
                {var rest$28=x[2],fields=_bjY_;switch$122 = 4}
               else
                switch$122 = 2}}
           break;
          case 2:switch$122 = 2;break;
          case 3:switch$122 = 3;break;
          case 1:switch$122 = 1;break;
          case 0:break;
          default:switch$122 = 4}
        var switch$126=0;
        switch(switch$122)
         {case 2:
           var _biV_=x[2];
           if(_biV_)
            {var _biW_=_biV_[1],switch$127=0;
             if(typeof _biW_ === "number")
              {if(0 === _biW_)
                {var _biX_=_biV_[2];
                 if(_biX_)
                  {var _biY_=_biX_[1];
                   if(typeof _biY_ === "number" && ! _biY_)
                    {var rest$19=_biX_[2];
                     if(has_arity(_Y5_,_biI_) && harmless(_biI_))
                      return symbol$4(_Y6_,rest$19);
                     switch$126 = 2;
                     switch$127 = 1}
                   else
                    {switch$126 = 2;switch$127 = 1}}
                 else
                  {switch$126 = 2;switch$127 = 1}}}
             else
              if(16 === _biW_[0])
               {var _bjx_=_biW_[1],_bjy_=_biV_[2];
                if(_bjy_)
                 {var _bjz_=_bjy_[1];
                  if(typeof _bjz_ === "number" && ! _bjz_)
                   {var rest$24=_bjy_[2];
                    if(has_arity(_Zd_,_biI_) && 2 <= _bjx_)
                     return symbol$4
                             ([0,[16,_bjx_ - 1 | 0],[0,0,[0,_biI_,0]]],rest$24)}
                  if(1 === _bjx_)
                   {var _bjA_=_biV_[2],_bjB_=_bjA_[1];
                    if(typeof _bjB_ === "number" && ! _bjB_)
                     {var _bjK_=_bjA_[2];
                      if(_bjK_)
                       {var _bjL_=_bjK_[1],switch$128=0;
                        if(typeof _bjL_ === "number" || ! (16 === _bjL_[0]))
                         switch$128 = 1;
                        else
                         {var _bjM_=_bjK_[2];
                          if(_bjM_)
                           {var _bjN_=_bjM_[1];
                            if(typeof _bjN_ === "number" && ! _bjN_)
                             {var rest$23=_bjM_[2],n$5=_bjL_[1];
                              if(has_arity(_Zb_,_biI_) && 1 <= n$5)
                               return symbol$4([0,[16,n$5],[0,0,[0,_biI_,_Zc_]]],rest$23)}}}}}}
                  var _bjC_=_biV_[2],_bjD_=_bjC_[1];
                  if(typeof _bjD_ === "number" && ! _bjD_)
                   {var rest$22=_bjC_[2];
                    if(has_arity(_Za_,_biI_) && 2 <= _bjx_)
                     return symbol$4
                             ([0,[16,_bjx_ - 1 | 0],[0,0,[0,_biI_,0]]],rest$22)}
                  if(1 === _bjx_)
                   {var _bjE_=_biV_[2],_bjF_=_bjE_[1];
                    if(typeof _bjF_ === "number" && ! _bjF_)
                     {var _bjI_=_bjE_[2];
                      if(_bjI_)
                       {var _bjJ_=_bjI_[1];
                        if(typeof _bjJ_ === "number" && ! _bjJ_)
                         {var rest$21=_bjI_[2];
                          if(has_arity(_Y__,_biI_) && harmless(_biI_))
                           return symbol$4(_Y$_,rest$21)}}}}
                  var _bjG_=_biV_[2],_bjH_=_bjG_[1];
                  if(typeof _bjH_ === "number" && ! _bjH_)
                   {var rest$20=_bjG_[2];
                    if(has_arity(_Y7_,_biI_) && 2 <= _bjx_)
                     return symbol$4
                             ([0,[16,_bjx_ - 1 | 0],[0,0,[0,_biI_,0]]],rest$20);
                    if(has_arity(_Y8_,_biI_) && 1 <= _bjx_)
                     return symbol$4
                             ([0,[16,_bjx_ + 2 | 0],[0,0,[0,_biI_,0]]],rest$20);
                    if(has_arity(_Y9_,_biI_) && 2 <= _bjx_)
                     return symbol$4
                             ([0,[16,_bjx_ + 1 | 0],[0,0,[0,_biI_,0]]],rest$20);
                    switch$126 = 2;
                    switch$127 = 1}
                  else
                   {switch$126 = 2;switch$127 = 1}}
                else
                 {switch$126 = 2;switch$127 = 1}}
             if(! switch$127)switch$126 = 2}
           else
            switch$126 = 1;
           break;
          case 3:switch$126 = 2;break;
          case 1:switch$126 = 1;break;
          case 0:break;
          default:return symbol$4([0,_Zg_,[0,[24,fields],0]],rest$28)}
        var switch$129=0;
        switch(switch$126)
         {case 2:
           var switch$130=0;
           if(typeof _biI_ !== "number")
            switch(_biI_[0])
             {case 1:
               var _bji_=_biI_[1];
               if(typeof _bji_ === "number" && 26 === _bji_)
                {var _bjj_=x[2],_bjk_=_bjj_[1];
                 if(typeof _bjk_ === "number" && ! _bjk_)
                  {var rest$13=_bjj_[2];return symbol$4(0,rest$13)}}
               break;
              case 6:
               var _bjl_=x[2],_bjm_=_bjl_[1],_bjn_=_biI_[1],switch$131=0;
               if(typeof _bjm_ === "number")
                {if(0 === _bjm_)
                  {var rest$14=_bjl_[2];
                   return symbol$4([0,0,[0,[6,_bjn_],0]],rest$14)}}
               else
                if(16 === _bjm_[0])
                 {var _bjo_=_bjm_[1];
                  if(1 === _bjo_)
                   {var rest$15=_bjl_[2];
                    return symbol$4([0,_Y3_,[0,[6,_bjn_],0]],rest$15)}
                  var _bjp_=_bjl_[2];
                  if(_bjp_)
                   {var _bjq_=_bjp_[1];
                    if(typeof _bjq_ === "number")
                     {if(! _bjq_)
                       {var rest$16=_bjp_[2];
                        return symbol$4
                                ([0,[16,_bjo_],[0,0,[0,[6,_bjn_],0]]],rest$16)}
                      switch$131 = 1}
                    else
                     switch$131 = 1}
                  else
                   {switch$130 = 1;switch$131 = 1}}
               break;
              case 17:
               var _bjr_=x[2],_bjs_=_bjr_[1];
               if(typeof _bjs_ === "number" && ! _bjs_)
                {var rest$17=_bjr_[2],n1=_biI_[1];
                 if(1 <= n1)
                  return symbol$4
                          ([0,_Y4_,[0,0,[0,[17,n1 - 1 | 0],0]]],rest$17);
                 switch$129 = 1;
                 switch$130 = 1}
               break;
              case 29:
               var _bjt_=x[2],_bju_=_bjt_[1],switch$132=0;
               if(typeof _bju_ !== "number" && 16 === _bju_[0])
                {var _bjv_=_bjt_[2];
                 if(_bjv_)
                  {var _bjw_=_bjv_[1];
                   if(typeof _bjw_ === "number" && ! _bjw_)
                    {var rest$18=_bjv_[2],n$4=_bju_[1];
                     if(1 < n$4)
                      return symbol$4
                              ([0,[16,n$4 + 1 | 0],[0,0,[0,_biI_,0]]],rest$18);
                     switch$132 = 1}
                   else
                    switch$132 = 1}
                 else
                  {switch$130 = 1;switch$132 = 1}}
               break
              }
           if(! switch$130)
            {var _biZ_=x[2],_bi0_=_biZ_[1],switch$133=0;
             if(typeof _bi0_ !== "number" && 16 === _bi0_[0])
              {var _bjb_=_bi0_[1],_bjc_=_biZ_[2];
               if(_bjc_)
                {var _bjd_=_bjc_[1],switch$134=0;
                 if(typeof _bjd_ === "number" && ! _bjd_)
                  {var rest$12=_bjc_[2];
                   if(1 <= _bjb_ && has_arity(_Y2_,_biI_))
                    return symbol$4([0,[16,_bjb_],[0,0,[0,_biI_,0]]],rest$12);
                   switch$129 = 1;
                   switch$133 = 1;
                   switch$134 = 1}
                 if(! switch$134)
                  if(1 === _bjb_)
                   {var _bje_=_biZ_[2],_bjf_=_bje_[1],switch$135=0;
                    if(typeof _bjf_ !== "number" && 15 === _bjf_[0])
                     if(1 === _bjf_[1])
                      {var _bjg_=_bje_[2];
                       if(_bjg_)
                        {var _bjh_=_bjg_[1],switch$136=0;
                         if(typeof _bjh_ !== "number" && 17 === _bjh_[0])
                          if(2 === _bjh_[1])
                           {var rest$11=_bjg_[2];
                            if(is_pure_push(_biI_))
                             return symbol$4([0,_Y1_,[0,_biI_,_Y0_]],rest$11);
                            switch$129 = 1;
                            switch$133 = 1;
                            switch$135 = 1;
                            switch$136 = 1}
                          else
                           {switch$129 = 1;
                            switch$133 = 1;
                            switch$135 = 1;
                            switch$136 = 1}
                         if(! switch$136)
                          {switch$129 = 1;switch$133 = 1;switch$135 = 1}}
                       else
                        {switch$129 = 1;switch$133 = 1;switch$135 = 1}}
                     else
                      {switch$129 = 1;switch$133 = 1;switch$135 = 1}
                    if(! switch$135){switch$129 = 1;switch$133 = 1}}
                  else
                   {switch$129 = 1;switch$133 = 1}}
               else
                {switch$129 = 1;switch$133 = 1}}
             if(! switch$133)switch$129 = 1}
           break;
          case 1:switch$129 = 1;break
          }
        if(switch$129)
         {var switch$137=0;
          if(typeof _biI_ === "number")
           switch$137 = 1;
          else
           switch(_biI_[0])
            {case 2:if(x[2])return symbol$4([0,_biI_,0],0);break;
             case 12:
              var _bi1_=_biI_[1][1],switch$138=0;
              if(typeof _bi1_ !== "number" && 3 === _bi1_[0])
               {var _bi2_=_bi1_[1];
                if(typeof _bi2_ === "number" && 9 === _bi2_)
                 {var _bi3_=x[2];
                  if(_bi3_)
                   {var _bi4_=_bi3_[1],switch$139=0;
                    if(typeof _bi4_ !== "number" && 16 === _bi4_[0])
                     {var _bi5_=_bi3_[2];
                      if(_bi5_)
                       {var _bi6_=_bi5_[1];
                        if(typeof _bi6_ === "number" && ! _bi6_)
                         {var rest$5=_bi5_[2],n$2=_bi4_[1];
                          if(1 < n$2)
                           return symbol$4
                                   ([0,[16,n$2 + 1 | 0],[0,0,[0,_biI_,0]]],rest$5);
                          switch$138 = 1;
                          switch$139 = 1}
                        else
                         {switch$138 = 1;switch$139 = 1}}
                      else
                       {switch$138 = 1;switch$139 = 1}}
                    if(! switch$139)switch$138 = 1}
                  else
                   switch$138 = 1}
                else
                 switch$138 = 1}
              break;
             case 15:
              if(1 === _biI_[1])
               {var _bi7_=x[2];
                if(_bi7_)
                 {var _bi8_=_bi7_[2];
                  if(_bi8_)
                   {var _bi9_=_bi8_[2];
                    if(_bi9_)
                     {var _bi__=_bi9_[1],switch$140=0;
                      if(typeof _bi__ !== "number" && 16 === _bi__[0])
                       if(1 === _bi__[1])
                        {var _bi$_=_bi9_[2];
                         if(_bi$_)
                          {var _bja_=_bi$_[1];
                           if(typeof _bja_ === "number" && ! _bja_)
                            {var rest$6=_bi$_[2],bin=_bi8_[1],push=_bi7_[1];
                             if(is_pure_push(push) && has_arity(_YZ_,bin))
                              return symbol$4([0,push,[0,bin,0]],rest$6);
                             switch$140 = 1}
                           else
                            switch$140 = 1}
                         else
                          switch$140 = 1}
                       else
                        switch$140 = 1}}}}
              break;
             case 18:
              var rest$7=x[2],y$0=_biI_[2],x$0=_biI_[1];
              return cond_check_last
                      (function(x,y){return [18,x,y]},x$0,y$0,rest$7);
             case 19:
              var rest$8=x[2],y$1=_biI_[2],x$1=_biI_[1];
              return cond_check_last
                      (function(x,y){return [19,x,y]},x$1,y$1,rest$8);
             case 20:
              var rest$9=x[2],y$2=_biI_[2],x$2=_biI_[1];
              return cond_check_last
                      (function(x,y){return [20,x,y]},x$2,y$2,rest$9);
             case 21:
              var rest$10=x[2],y$3=_biI_[2],x$3=_biI_[1];
              return cond_check_last
                      (function(x,y){return [21,x,y]},x$3,y$3,rest$10);
             case 16:
             case 17:
              var n$3=_biI_[1],shift=0,rest=x;
              for(;;)
               {if(rest)
                 {var _biz_=rest[1],switch$141=0;
                  if(typeof _biz_ === "number")
                   if(1 === _biz_)
                    {var rest$0=rest[2];
                     if(1 === n$3)
                      {var shift$0=shift + 1 | 0,shift=shift$0,rest=rest$0;
                       continue}}
                   else
                    switch$141 = 1;
                  else
                   switch(_biz_[0])
                    {case 6:
                      var _biC_=rest[2];
                      if(_biC_)
                       {var switch$142=0,_biD_=_biC_[1];
                        if(typeof _biD_ === "number")
                         {if(1 === _biD_)switch$142 = 1}
                        else
                         switch(_biD_[0]){case 16:case 17:switch$142 = 1;break}}
                      break;
                     case 16:
                      var rest$1=rest[2],n$0=_biz_[1];
                      if(n$3 === n$0)
                       {var shift$1=shift + 1 | 0,shift=shift$1,rest=rest$1;
                        continue}
                      break;
                     case 17:
                      var rest$2=rest[2],n$1=_biz_[1];
                      if(n$3 === n$1)
                       {var shift$2=shift - 1 | 0,shift=shift$2,rest=rest$2;
                        continue}
                      break;
                     default:switch$141 = 1}}
                var
                 n=n$3 + 1 | 0,
                 digs=caml_mod(caml_mod(shift,n) + n | 0,n),
                 dugs=(n$3 + 1 | 0) - digs | 0;
                if(digs <= dugs)
                 var
                  _biA_=function(param){return [16,n$3]},
                  y=caml_call2(Utils_List[13],digs,_biA_);
                else
                 var
                  _biB_=function(param){return [17,n$3]},
                  y=caml_call2(Utils_List[13],dugs,_biB_);
                var
                 _biE_=caml_call1(Utils_List[4],rest),
                 _biF_=caml_call1(Utils_List[4],x) - _biE_ | 0,
                 consumed=caml_call2(Utils_List[66],_biF_,x),
                 _biG_=caml_call2(Utils_List[20],mk_instr,y),
                 _biH_=caml_call2(Utils_List[20],mk_instr,consumed);
                return caml_call3(Utils_List[1],equal_instr,_biH_,_biG_)
                        ?rewrite_none
                        :symbol$4(y,rest)}
             default:switch$137 = 1}}}
      return rewrite_none}
    function run_group(rs)
     {function comp(f,g,x)
       {var match=caml_call1(f,x);
        if(match){var x$0=match[1];return [0,x$0]}
        return caml_call1(g,x)}
      function _bit_(param){return 0}
      var f=caml_call3(Utils_List[25],comp,_bit_,rs);
      function norm_seq(xs$0)
       {var param=caml_call1(Utils_List[12],xs$0),acc=0,param$0=param;
        for(;;)
         {if(param$0)
           {var is=param$0[2],i$0=param$0[1],_biv_=i$0[1],switch$0=0;
            if(typeof _biv_ !== "number" && 23 === _biv_[0])
             {var xs=_biv_[1],match=norm_seq(xs);switch$0 = 1}
            if(! switch$0)
             var match=[0,map_instr_f(norm1,Utils_Control[1],_biv_)];
            var
             instr=match[1],
             acc$0=[0,instr,acc],
             match$0=caml_call1(f,acc$0);
            if(match$0)
             {var
               match$1=match$0[1],
               rest=match$1[2],
               result=match$1[1],
               _biw_=caml_call1(Utils_List[12],result),
               _bix_=caml_call2(Utils_List[20],mk_instr,_biw_),
               param$1=caml_call2(Stdlib[37],_bix_,is),
               acc=rest,
               param$0=param$1;
              continue}
            var acc=acc$0,param$0=is;
            continue}
          var switch$1=0;
          if(acc && ! acc[2]){var i=acc[1],_biy_=i;switch$1 = 1}
          if(! switch$1)
           var _biy_=[23,caml_call2(Utils_List[20],mk_instr,acc)];
          return [0,_biy_]}}
      function norm1(param)
       {var instr=param[1],_biu_=to_seq(instr);
        return norm_seq(caml_call2(Utils_List[20],mk_instr,_biu_))}
      return norm1}
    function run$1(groups)
     {var
       _biq_=caml_call2(Utils_List[20],run_group,groups),
       _bir_=Utils_Control[1];
      function _bis_(f,g,x){return caml_call1(g,caml_call1(f,x))}
      return caml_call3(Utils_List[25],_bis_,_bir_,_biq_)}
    function run_on_tcontract(groups,c)
     {var _bil_=has_error_tcontract(1,c);
      if(0 < caml_call1(Utils_List[4],_bil_))return c;
      var
       init=erase_types_contract$0(c),
       _bim_=init[5],
       _bin_=init[4],
       _bio_=init[3],
       _bip_=caml_call1(run$1(groups),_bio_),
       c$0=[0,init[1],init[2],_bip_,_bin_,_bim_];
      return typecheck_contract(0,c$0)}
    function simplify(config)
     {var
       _bij_=[0,[0,extract_unpair_drops,0],0],
       _bik_=
        config[6]
         ?[0,fold_dupn,[0,fold_getn,[0,fold_self_address,0]]]
         :[0,unfold_unpair,[0,unfold_dupn,[0,unfold_self_address,0]]];
      return [0,
              [0,unfold_macros,[0,main,[0,conditionals,0]]],
              [0,
               [0,fold_macros_etc,0],
               [0,[0,unfold_mifield,0],[0,_bik_,_bij_]]]]}
    var
     pushify=
      [0,[0,unfold_macros,[0,pushify_all,[0,main,[0,conditionals,0]]]],0];
    function c1(param)
     {if(param)
       {var _big_=param[1],switch$0=0;
        if(typeof _big_ === "number")
         {if(0 === _big_){var rest=param[2];return symbol$4(_Z1_,rest)}
          switch$0 = 1}
        else
         if(14 === _big_[0])
          {var _bih_=param[2];
           if(_bih_)
            {var _bii_=_bih_[1];
             if(typeof _bii_ !== "number" && 14 === _bii_[0])
              {var rest$0=_bih_[2],n2=_bii_[1],n1=_big_[1];
               return symbol$4([0,[14,n1 + n2 | 0],0],rest$0)}}}
         else
          switch$0 = 1}
      return rewrite_none}
    function c2(param)
     {if(param)
       {var _bif_=param[1],switch$0=0;
        if(typeof _bif_ === "number" || ! (14 === _bif_[0]))
         switch$0 = 1;
        else
         if(1 === _bif_[1]){var rest=param[2];return symbol$4(_Z2_,rest)}}
      return rewrite_none}
    var
     collapse_drops=[0,[0,c1,0],[0,[0,c2,0],0]],
     Smartml_Michelson_rewriter=
      [0,
       run$1,
       run_on_tcontract,
       collapse_drops,
       simplify,
       pushify,
       remove_comments];
    caml_register_global
     (6511,Smartml_Michelson_rewriter,"Smartml__Michelson_rewriter");
    var Printer=get_by_language(0),debug_tags=0,debug_adapt=0;
    function is_ok(c){return 0 === has_error_tcontract(1,c)?1:0}
    function pipeline(config)
     {var
       _bid_=config[1]?simplify(config):0,
       _bie_=config[4]?remove_comments:0;
      return caml_call2(Stdlib[37],_bie_,_bid_)}
    function simplify$0(config,c){return run_on_tcontract(pipeline(config),c)}
    function simplify_via_michel(config,c)
     {var
       st=[0,[0,0]],
       match=erase_types_contract$0(c),
       storage=match[5],
       lazy_entry_points=match[4],
       c$0=decompile_contract(st,c),
       c$1=caml_call2(Michel_Transformer[5],st,c$0),
       _bic_=caml_call1(Michel_Typing[4],c$1),
       c$2=caml_call1(Utils_Control[15][40],_bic_),
       c$3=compile_contract(storage,lazy_entry_points,config,c$2),
       switch$0=0;
      if(is_ok(c$3) && config[1]){var c$4=simplify$0(config,c$3);switch$0 = 1}
      if(! switch$0)var c$4=c$3;
      return [0,c$1,c$4]}
    function optimize_instr(config){return run$1(pipeline(config))}
    function optimize_literal(config,l)
     {var
       config$0=
        [0,
         config[1],
         config[2],
         config[3],
         1,
         config[5],
         config[6],
         config[7],
         config[8],
         config[9],
         config[10],
         config[11],
         config[12],
         config[13],
         config[14],
         config[15],
         config[16],
         config[17]];
      return caml_call1(on_instrs(optimize_instr(config$0)),l)}
    function pp_target(fmt,param)
     {if(typeof param === "number")
       return 0 === param
               ?caml_call2(Stdlib_format[13],fmt,cst_T_entry_points)
               :caml_call2(Stdlib_format[13],fmt,cst_T_self_address);
      else
       switch(param[0])
        {case 0:
          var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,_Z3_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_Z4_),a0);
          return caml_call2(Stdlib_format[123],fmt,_Z5_);
         case 1:
          var a0$0=param[1];
          caml_call2(Stdlib_format[123],fmt,_Z6_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_Z7_),a0$0);
          return caml_call2(Stdlib_format[123],fmt,_Z8_);
         default:
          var a1=param[2],a0$1=param[1];
          caml_call2(Stdlib_format[123],fmt,_Z9_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,_Z__),a0$1);
          caml_call2(Stdlib_format[123],fmt,_Z$_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,__a_),a1);
          return caml_call2(Stdlib_format[123],fmt,__b_)}}
    function show_target(x)
     {return caml_call3(Stdlib_format[127],__c_,pp_target,x)}
    var
     equal_stack_tag=
      function _bib_(_bh$_,_bia_){return _bib_.fun(_bh$_,_bia_)};
    caml_update_dummy
     (equal_stack_tag,
      function(lhs,match)
       {if(0 === lhs[0])
         {var _bh9_=lhs[1];
          if(0 === match[0]){var rhs0$2=match[1];return _bh9_ === rhs0$2?1:0}}
        else
         {var _bh__=lhs[1];
          if(0 !== match[0])
           {var rhs0$3=match[1];
            if(typeof _bh__ === "number")
             {if(0 === _bh__)
               {if(typeof rhs0$3 === "number" && ! rhs0$3)return 1}
              else
               if(typeof rhs0$3 === "number" && rhs0$3)return 1}
            else
             switch(_bh__[0])
              {case 0:
                if(typeof rhs0$3 !== "number" && 0 === rhs0$3[0])
                 {var rhs0=rhs0$3[1],lhs0=_bh__[1];
                  return caml_string_equal(lhs0,rhs0)}
                break;
               case 1:
                if(typeof rhs0$3 !== "number" && 1 === rhs0$3[0])
                 {var rhs0$0=rhs0$3[1],lhs0$0=_bh__[1];
                  return lhs0$0 === rhs0$0?1:0}
                break;
               default:
                if(typeof rhs0$3 !== "number" && 2 === rhs0$3[0])
                 {var
                   rhs1=rhs0$3[2],
                   rhs0$1=rhs0$3[1],
                   lhs1=_bh__[2],
                   lhs0$1=_bh__[1],
                   _bh8_=caml_string_equal(lhs0$1,rhs0$1);
                  return _bh8_?lhs1 === rhs1?1:0:_bh8_}}
            return 0}}
        return 0});
    var
     pp_stack_tag=function _bh7_(_bh5_,_bh6_){return _bh7_.fun(_bh5_,_bh6_)},
     show_stack_tag=function _bh4_(_bh3_){return _bh4_.fun(_bh3_)};
    caml_update_dummy
     (pp_stack_tag,
      function(fmt,param)
       {if(0 === param[0])
         {var a0=param[1];
          caml_call2(Stdlib_format[123],fmt,__d_);
          caml_call1(caml_call2(Stdlib_format[123],fmt,__e_),a0);
          return caml_call2(Stdlib_format[123],fmt,__f_)}
        var a0$0=param[1];
        caml_call2(Stdlib_format[123],fmt,__g_);
        pp_target(fmt,a0$0);
        return caml_call2(Stdlib_format[123],fmt,__h_)});
    caml_update_dummy
     (show_stack_tag,
      function(x){return caml_call3(Stdlib_format[127],__i_,pp_stack_tag,x)});
    var c=[0,0];
    function st_none(param){c[1]++;return [0,c[1]]}
    var tag_operations=[1,tgt_operations];
    function mk_instr$0(instr){return [0,instr]}
    function display_stack_tag(param)
     {if(0 === param[0])
       {var i=param[1],_bh2_=caml_call1(Stdlib[33],i);
        return caml_call2(Stdlib[28],cst$279,_bh2_)}
      var t=param[1];
      if(typeof t === "number")
       return 0 === t?cst_entry_points$0:cst_self_address$0;
      else
       switch(t[0])
        {case 0:
          var _bh0_=t[1];
          return caml_string_notequal(_bh0_,cst_operations$9)
                  ?caml_string_notequal(_bh0_,cst_parameter$6)
                    ?caml_string_notequal(_bh0_,cst_storage$21)
                      ?caml_call2(Stdlib_printf[4],__j_,_bh0_)
                      :cst_storage$22
                    :cst_params$4
                  :cst_operations$10;
         case 1:var id=t[1];return caml_call2(Stdlib_printf[4],__k_,id);
         default:
          var b=t[2],n=t[1],_bh1_=b?cst_head$1:cst_tail$1;
          return caml_call3(Stdlib_printf[4],__l_,n,_bh1_)}}
    function tags_for_instr(instr,tags)
     {function auto(param)
       {var
         a_out=param[2],
         a_in=param[1],
         _bhX_=caml_call2(Utils_List[67],a_in,tags),
         _bhY_=caml_call2(Utils_List[84],a_out,0),
         _bhZ_=caml_call2(Utils_List[20],st_none,_bhY_);
        return [0,caml_call2(Stdlib[37],_bhZ_,_bhX_)]}
      var _bhO_=instr[1];
      if(typeof _bhO_ !== "number")
       switch(_bhO_[0])
        {case 15:return auto(__m_);
         case 16:
          var n$0=_bhO_[1],match$0=caml_call2(Utils_List[64],n$0,tags);
          if(match$0)
           {var _bhT_=match$0[1],_bhU_=_bhT_[2];
            if(_bhU_)
             {var lo=_bhU_[2],x=_bhU_[1],hi=_bhT_[1];
              return [0,caml_call2(Stdlib[37],[0,x,hi],lo)]}}
          throw [0,Assert_failure,__n_];
         case 17:
          var
           n$1=_bhO_[1],
           match$1=caml_call2(Utils_List[64],n$1 + 1 | 0,tags);
          if(match$1)
           {var _bhV_=match$1[1],_bhW_=_bhV_[1];
            if(_bhW_)
             {var lo$0=_bhV_[2],hi$0=_bhW_[2],x$0=_bhW_[1];
              return [0,caml_call2(Stdlib[37],hi$0,[0,x$0,lo$0])]}}
          throw [0,Assert_failure,__o_]
         }
      var match=arity(instr);
      if(0 === match[0])
       {var _bhP_=match[1],_bhQ_=_bhP_[2],_bhR_=_bhP_[1];
        if(_bhQ_){var n=_bhQ_[1];return auto([0,_bhR_,n])}
        return 0}
      var e=match[1],_bhS_=caml_call2(Stdlib[28],cst_arity,e);
      return caml_call1(Stdlib[2],_bhS_)}
    function find_stack_tag(t)
     {function f(offset,t$0)
       {return caml_call2(equal_stack_tag,t,t$0)?[0,offset]:0}
      var _bhM_=Base_List[69];
      return function(_bhN_){return caml_call2(_bhM_,_bhN_,f)}}
    function move_to_bottom(x,xs)
     {var
       xs$0=caml_call1(Utils_List[12],xs),
       last=caml_call1(Utils_List[4],xs$0) - 1 | 0,
       match=caml_call1(find_stack_tag(x),xs$0);
      if(match)
       {var i=match[1];
        if(i === last)return [0,[0,0,caml_call1(Utils_List[12],xs$0)]];
        var match$0=caml_call2(Utils_List[61],i,xs$0);
        if(match$0)
         {var match$1=match$0[1],xs$1=match$1[2],x$0=match$1[1];
          if(caml_call2(equal_stack_tag,x,x$0))
           {var _bhL_=caml_call2(Stdlib[37],xs$1,[0,x,0]);
            return [0,
                    [0,
                     [0,[16,i],[0,[17,last],0]],
                     caml_call1(Utils_List[12],_bhL_)]]}}
        throw [0,Assert_failure,__p_]}
      return 0}
    function mark_top(param)
     {if(param)
       {var _bhK_=param[1];
        if(_bhK_){var xs=_bhK_[2];return [0,[0,__t_,xs]]}
        return caml_call1(Stdlib[2],cst_mark_top_empty_stack)}
      return 0}
    function find_target(target)
     {function f(offset,param)
       {if(0 === param[0])return 0;
        var t=param[1];
        return caml_equal(target,t)?[0,offset]:0}
      var _bhI_=Base_List[69];
      return function(_bhJ_){return caml_call2(_bhI_,_bhJ_,f)}}
    function has_target(target,tags)
     {var _bhH_=caml_call1(find_target(target),tags);
      return caml_call1(Utils_Option[47],_bhH_)}
    function mk_seq(block)
     {if(block && ! block[2]){var i=block[1];return i}return [0,[23,block]]}
    function run$2(config,lazy_ids,tags,x)
     {return caml_call2(x,[0,config,lazy_ids],tags)}
    function return$5(x,c,s){return [0,[0,x],s,0]}
    function bind$4(x,f,c,s)
     {var _bhF_=caml_call2(x,c,s),_bhG_=_bhF_[1];
      if(_bhG_)
       {var
         i=_bhF_[3],
         s$0=_bhF_[2],
         x$0=_bhG_[1],
         match=caml_call2(caml_call1(f,x$0),c,s$0),
         i$0=match[3],
         s$1=match[2],
         r=match[1];
        return [0,r,s$1,caml_call2(Stdlib[37],i,i$0)]}
      var i$1=_bhF_[3],si=_bhF_[2];
      return [0,0,si,i$1]}
    function set_tags(tags,c,s){return [0,__v_,tags,0]}
    function get_tags(c,s){return [0,[0,s],s,0]}
    function map$6(f,x)
     {function _bhz_(x)
       {var _bhC_=caml_call1(f,x);
        return function(_bhD_,_bhE_){return return$5(_bhC_,_bhD_,_bhE_)}}
      return function(_bhA_,_bhB_){return bind$4(x,_bhz_,_bhA_,_bhB_)}}
    function apply$3(f,x)
     {function _bhq_(f)
       {function _bht_(x)
         {var _bhw_=caml_call1(f,x);
          return function(_bhx_,_bhy_){return return$5(_bhw_,_bhx_,_bhy_)}}
        return function(_bhu_,_bhv_){return bind$4(x,_bht_,_bhu_,_bhv_)}}
      return function(_bhr_,_bhs_){return bind$4(f,_bhq_,_bhr_,_bhs_)}}
    function mk_cond(protect_top,cond,param,_bhn_)
     {var
       y_block=_bhn_[3],
       y_state=_bhn_[2],
       y_result=_bhn_[1],
       x_block=param[3],
       x_state=param[2],
       x_result=param[1],
       switch$0=0;
      if(x_result && y_result){var result=__w_;switch$0 = 1}
      if(! switch$0)var result=0;
      if(caml_equal(protect_top,__x_))
       var y_tags=mark_top(y_state),y_tags$0=y_tags,x_tags=mark_top(x_state);
      else
       var y_tags$0=y_state,x_tags=x_state;
      function has_ops(_bhp_){return has_target(tgt_operations,_bhp_)}
      var switch$1=0;
      if(x_tags)
       {var _bhl_=x_tags[1];
        if(y_tags$0)
         {var
           ys$4=y_tags$0[1],
           match$6=has_ops(_bhl_),
           match$7=has_ops(ys$4),
           switch$2=0;
          if(match$6)
           if(match$7)
            switch$2 = 1;
           else
            var
             ys$5=[0,tag_operations,ys$4],
             instrs_ys$0=[0,[0,[3,_zs_]],0],
             xs$2=_bhl_,
             instrs_xs$0=0;
          else
           if(match$7)
            var
             ys$5=ys$4,
             instrs_ys$0=0,
             xs$2=[0,tag_operations,_bhl_],
             instrs_xs$0=[0,[0,[3,_zs_]],0];
           else
            switch$2 = 1;
          if(switch$2)var ys$5=ys$4,instrs_ys$0=0,xs$2=_bhl_,instrs_xs$0=0;
          var
           ys$6=caml_call1(Utils_List[12],ys$5),
           xs$3=caml_call1(Utils_List[12],xs$2),
           r=0,
           instrs_xs=instrs_xs$0,
           instrs_ys=instrs_ys$0,
           xs$0=xs$3,
           ys=ys$6;
          for(;;)
           {var
             last_x=caml_call1(Utils_List[4],xs$0) - 1 | 0,
             last_y=caml_call1(Utils_List[4],ys) - 1 | 0,
             drop=function(i){return [0,[16,i],__s_]};
            if(xs$0)
             {var _bhf_=xs$0[2],_bhg_=xs$0[1];
              if(ys)
               {var y=ys[1],ys$0=ys[2];
                if(caml_call2(equal_stack_tag,_bhg_,y))
                 {var r$0=[0,_bhg_,r],r=r$0,xs$0=_bhf_,ys=ys$0;continue}
                var
                 ys$1=ys[2],
                 match$2=move_to_bottom(y,xs$0),
                 match$3=move_to_bottom(_bhg_,ys);
                if(match$2)
                 {var
                   match$4=match$2[1],
                   xs$1=match$4[2],
                   ix=match$4[1],
                   rx=caml_call2(Stdlib[37],instrs_xs,ix),
                   instrs_xs=rx,
                   xs$0=xs$1;
                  continue}
                if(match$3)
                 {var
                   match$5=match$3[1],
                   ys$2=match$5[2],
                   iy=match$5[1],
                   ry=caml_call2(Stdlib[37],instrs_ys,iy),
                   instrs_ys=ry,
                   ys=ys$2;
                  continue}
                var
                 _bhh_=drop(last_y),
                 ry$0=caml_call2(Stdlib[37],instrs_ys,_bhh_),
                 _bhi_=drop(last_x),
                 rx$0=caml_call2(Stdlib[37],instrs_xs,_bhi_),
                 instrs_xs=rx$0,
                 instrs_ys=ry$0,
                 xs$0=_bhf_,
                 ys=ys$1;
                continue}
              var
               _bhj_=drop(last_x),
               rx$1=caml_call2(Stdlib[37],instrs_xs,_bhj_),
               instrs_xs=rx$1,
               xs$0=_bhf_;
              continue}
            if(ys)
             {var
               ys$3=ys[2],
               _bhk_=drop(last_y),
               ry$1=caml_call2(Stdlib[37],instrs_ys,_bhk_),
               instrs_ys=ry$1,
               ys=ys$3;
              continue}
            var
             tags=[0,r],
             _bhm_=caml_call2(Utils_List[20],mk_instr$0,instrs_ys),
             match$8=
              [0,tags,caml_call2(Utils_List[20],mk_instr$0,instrs_xs),_bhm_];
            break}}
        else
         {var xs$4=_bhl_;switch$1 = 1}}
      else
       if(y_tags$0){var xs$4=y_tags$0[1];switch$1 = 1}else var match$8=__u_;
      if(switch$1)var match$8=[0,[0,xs$4],0,0];
      var
       y_post=match$8[3],
       x_post=match$8[2],
       tags$0=match$8[1],
       x$1=[0,[23,caml_call2(Stdlib[37],x_block,x_post)]],
       y$0=[0,[23,caml_call2(Stdlib[37],y_block,y_post)]];
      if(tags$0)
       {var tags$1=tags$0[1];
        if(caml_equal(protect_top,__y_))
         {var match=caml_call1(find_stack_tag(x),tags$1);
          if(match)
           {var _bhe_=match[1];
            if(0 === _bhe_)
             var match$9=[0,0,[0,tags$1]];
            else
             {var match$0=caml_call2(Utils_List[61],_bhe_,tags$1),switch$3=0;
              if(match$0)
               {var match$1=match$0[1],xs=match$1[2],x$0=match$1[1];
                if(caml_call2(equal_stack_tag,x,x$0))
                 {var
                   match$9=
                    [0,[0,[16,_bhe_],0],[0,caml_call2(Stdlib[37],[0,x,0],xs)]];
                  switch$3 = 1}}
              if(! switch$3)throw [0,Assert_failure,__q_]}
            var
             tags$2=match$9[2],
             xs$5=match$9[1],
             _bho_=[0,caml_call2(cond,x$1,y$0),xs$5];
            return [0,
                    result,
                    tags$2,
                    caml_call2(Utils_List[20],mk_instr$0,_bho_)]}
          throw [0,Assert_failure,__r_]}}
      return [0,result,tags$0,[0,[0,caml_call2(cond,x$1,y$0)],0]]}
    function get_config$1(c,s){return [0,[0,c[1]],s,0]}
    function get_lazy_id(name,c,s)
     {var match=caml_call3(Utils_List[82],0,name,c[2]);
      if(match){var id=match[1];return [0,[0,id],s,0]}
      var _bhd_=caml_call2(Stdlib[28],cst_get_lazy_id,name);
      return caml_call1(Stdlib[2],_bhd_)}
    function instr$0(instr,c,s)
     {var i=[0,instr];
      if(s){var tags=s[1];return [0,__z_,tags_for_instr(i,tags),[0,i,0]]}
      return [0,__A_,s,0]}
    function composite(protect_top,i,c,s)
     {function err(msg){return [0,0,s,[0,[0,[5,msg]],0]]}
      var switch$0=0;
      if(typeof i === "number" || ! (23 === i[0]))
       switch$0 = 1;
      else
       {var _bg__=i[1];
        if(_bg__)
         {var
           xs=_bg__[2],
           x$7=_bg__[1],
           f$0=
            function(param)
             {var _bha_=[23,xs];
              return function(_bhb_,_bhc_)
               {return composite(protect_top,_bha_,_bhb_,_bhc_)}};
          return bind$4(x$7,f$0,c,s)}}
      if(switch$0)
       {var switch$1=0;
        if(s)
         {var _bg5_=s[1],switch$2=0;
          if(_bg5_)
           {var _bg6_=_bg5_[2],switch$3=0;
            if(typeof i !== "number")
             switch(i[0])
              {case 10:
                var
                 body=i[1],
                 match=caml_call2(body,c,[0,_bg6_]),
                 block=match[3],
                 result=match[1];
                return [0,result,[0,_bg6_],[0,[0,[10,mk_seq(block)]],0]];
               case 12:
                var
                 body$0=i[1],
                 match$0=caml_call2(body$0,c,[0,[0,st_none(0),_bg6_]]),
                 block$0=match$0[3],
                 result$0=match$0[1];
                return [0,result$0,[0,_bg6_],[0,[0,[12,mk_seq(block$0)]],0]];
               case 13:
                var
                 body$1=i[1],
                 match$1=caml_call2(body$1,c,[0,[0,st_none(0),_bg6_]]),
                 block$1=match$1[3],
                 result$1=match$1[1],
                 _bg7_=[0,[0,[13,mk_seq(block$1)]],0];
                return [0,result$1,[0,[0,st_none(0),_bg6_]],_bg7_];
               case 18:
                var
                 y=i[2],
                 x=i[1],
                 x$0=caml_call2(x,c,[0,_bg6_]),
                 y$0=caml_call2(y,c,[0,_bg6_]);
                return mk_cond
                        (protect_top,function(l,r){return [18,l,r]},x$0,y$0);
               case 19:
                var
                 y$1=i[2],
                 x$1=i[1],
                 x$2=caml_call2(x$1,c,[0,[0,st_none(0),_bg6_]]),
                 y$2=caml_call2(y$1,c,[0,[0,st_none(0),_bg6_]]);
                return mk_cond
                        (protect_top,function(l,r){return [19,l,r]},x$2,y$2);
               case 20:
                var
                 y$3=i[2],
                 x$3=i[1],
                 x$4=caml_call2(x$3,c,[0,_bg6_]),
                 y$4=caml_call2(y$3,c,[0,[0,st_none(0),_bg6_]]);
                return mk_cond
                        (protect_top,function(l,r){return [20,l,r]},x$4,y$4);
               case 21:
                var
                 y$5=i[2],
                 x$5=i[1],
                 _bg8_=[0,st_none(0),_bg6_],
                 x$6=caml_call2(x$5,c,[0,[0,st_none(0),_bg8_]]),
                 y$6=caml_call2(y$5,c,[0,_bg6_]);
                return mk_cond
                        (protect_top,function(l,r){return [21,l,r]},x$6,y$6);
               case 28:switch$3 = 1;break
               }
            if(! switch$3)switch$2 = 1}
          if(! switch$2)
           {if(typeof i !== "number" && 28 === i[0])
             {var
               body$2=i[3],
               t_out=i[2],
               t_in=i[1],
               match$2=caml_call2(body$2,c,[0,[0,st_none(0),0]]),
               block$2=match$2[3],
               result$2=match$2[1],
               _bg9_=[0,[0,[28,t_in,t_out,mk_seq(block$2)]],0];
              return [0,result$2,[0,[0,st_none(0),_bg5_]],_bg9_]}
            switch$1 = 1}}
        else
         switch$1 = 1;
        if(switch$1 && typeof i !== "number")
         switch(i[0])
          {case 12:return err(cst_ITER$4);
           case 13:return err(cst_MAP$4);
           case 18:return err(cst_IF$4);
           case 19:return err(cst_IF_LEFT$4);
           case 20:return err(cst_IF_NONE$4);
           case 21:return err(cst_IF_CONS$4);
           case 28:return err(cst_LAMBDA$3)
           }}
      if(s)
       {var
         tags=s[1],
         dummy=
          function(ppf,param){return caml_call2(Stdlib_format[123],ppf,__B_)},
         pp=caml_call2(pp_instr_f,dummy,dummy),
         f=
          function(param)
           {var _bg$_=caml_call3(Stdlib_format[127],__C_,pp,i);
            return caml_call1(Stdlib[2],_bg$_)},
         instr=map_instr_f(f,Utils_Control[1],i);
        return [0,__D_,tags_for_instr([0,instr],tags),[0,[0,instr],0]]}
      return [0,__E_,s,0]}
    var
     include$5=caml_call1(Utils_Control[8],[0,map$6,return$5,apply$3,bind$4]),
     return$6=include$5[2],
     apply$4=include$5[3],
     map$7=include$5[4],
     symbol$5=include$5[5],
     let$3=include$5[6],
     and$1=include$5[7],
     Applicative_syntax$0=include$5[8],
     symbol$6=include$5[9],
     void$1=include$5[10],
     when$0=include$5[11],
     when_some$0=include$5[12],
     map2$0=include$5[13],
     map_option$0=include$5[14],
     map_list$1=include$5[15],
     iter_list$1=include$5[16],
     map2_list$0=include$5[17],
     iter2_list$1=include$5[18],
     sequence_list$0=include$5[19],
     sequence_option$0=include$5[20],
     sequence_fst$0=include$5[21],
     sequence_snd$0=include$5[22],
     sequence_pair$0=include$5[23],
     unless$0=include$5[31],
     T=
      caml_call1
       (Utils_Binary_tree[55],
        [0,
         return$6,
         apply$4,
         map$7,
         symbol$5,
         let$3,
         and$1,
         Applicative_syntax$0,
         symbol$6,
         void$1,
         when$0,
         when_some$0,
         unless$0,
         map2$0,
         map_option$0,
         map_list$1,
         iter_list$1,
         map2_list$0,
         iter2_list$1,
         sequence_list$0,
         sequence_option$0,
         sequence_fst$0,
         sequence_snd$0,
         sequence_pair$0]),
     A=caml_call1(Utils_Control[8],[0,map$6,return$5,apply$3,bind$4]),
     mi_seq$0=caml_call1(A[16],Utils_Control[1]);
    function display_ok_tags(s)
     {var
       tags=caml_call2(Utils_List[20],display_stack_tag,s),
       _bg4_=caml_call2(Utils_String[7],cst$280,tags);
      return caml_call2(Stdlib_printf[4],__F_,_bg4_)}
    function display_tags(param)
     {if(param){var s=param[1];return display_ok_tags(s)}
      return caml_call1(Stdlib_printf[4],__G_)}
    var instrs=caml_call1(A[16],instr$0);
    function comment$0(msg)
     {var _bg1_=[6,[0,msg,0]];
      return function(_bg2_,_bg3_){return instr$0(_bg1_,_bg2_,_bg3_)}}
    function error$0(msg)
     {return function(_bg0_,s){return [0,0,s,[0,[0,[5,msg]],0]]}}
    function commentf(fmt){return caml_call2(Stdlib_printf[9],comment$0,fmt)}
    function errorf(fmt){return caml_call2(Stdlib_printf[9],error$0,fmt)}
    function comment_if(c,fmt)
     {function comment(msg){return c?comment$0(msg):caml_call1(A[2],0)}
      return caml_call2(Stdlib_printf[9],comment,fmt)}
    function get_ok_stack(lbl)
     {function _bgZ_(tags)
       {if(tags){var tags$0=tags[1];return caml_call1(A[2],tags$0)}
        return error$0(caml_call2(Stdlib[28],cst_get_ok_stack,lbl))}
      return caml_call2(A[24],get_tags,_bgZ_)}
    function mi_car(_bgX_,_bgY_){return instr$0(__H_,_bgX_,_bgY_)}
    function mi_cdr(_bgV_,_bgW_){return instr$0(__I_,_bgV_,_bgW_)}
    function mi_copy(n)
     {if(0 === n)
       return function(_bgT_,_bgU_){return instr$0(__J_,_bgT_,_bgU_)};
      function _bgN_(tags)
       {if(tags)
         {var
           tags$0=tags[1],
           _bgO_=
            function(param)
             {var _bgQ_=[0,[0,st_none(0),tags$0]];
              return function(_bgR_,_bgS_){return set_tags(_bgQ_,_bgR_,_bgS_)}},
           _bgP_=caml_call1(instrs,[0,[16,n],[0,__K_,[0,[17,n + 1 | 0],0]]]);
          return caml_call2(A[24],_bgP_,_bgO_)}
        throw [0,Assert_failure,__L_]}
      return caml_call2(A[24],get_tags,_bgN_)}
    var __M_=[22,_ze_,_Jw_[6]];
    function push_unit(_bgL_,_bgM_){return instr$0(__M_,_bgL_,_bgM_)}
    function mi_failwith$0(verify,default$0,line_no,context,opt,s)
     {if(opt)var sth=opt[1],args=sth;else var args=push_unit;
      function _bgt_(param)
       {var exceptions=param[8],line_no$0=head_line_no(line_no);
        switch(exceptions)
         {case 0:
           var
            _bgu_=
             function(param)
              {var
                _bgJ_=[0,__O_,[0,[22,_zj_,caml_call1(_Jw_[4],s)],__N_]],
                _bgK_=
                 [0,__P_,[0,[22,_zh_,caml_call1(_Jw_[2],line_no$0)],_bgJ_]];
               return caml_call1
                       (instrs,[0,[22,_zj_,caml_call1(_Jw_[4],context)],_bgK_])},
            i=caml_call2(A[24],args,_bgu_);
           break;
          case 1:
           var
            _bgx_=[0,[22,_zj_,caml_call1(_Jw_[4],s)],__R_],
            i=
             caml_call1
              (instrs,[0,[22,_zh_,caml_call1(_Jw_[2],line_no$0)],_bgx_]);
           break;
          case 2:
           var switch$0=0;
           if(default$0 && ! caml_equal(verify,__S_))
            var
             _bgy_=[22,_zh_,caml_call1(_Jw_[2],line_no$0)],
             i=function(_bgH_,_bgI_){return instr$0(_bgy_,_bgH_,_bgI_)};
           else
            switch$0 = 1;
           if(switch$0)var i=args;
           break;
          case 3:
           if(default$0)
            var
             _bgz_=[22,_zh_,caml_call1(_Jw_[2],line_no$0)],
             i=function(_bgF_,_bgG_){return instr$0(_bgz_,_bgF_,_bgG_)};
           else
            var i=args;
           break;
          case 4:
           var
            _bgA_=[22,_zh_,caml_call1(_Jw_[2],line_no$0)],
            i=function(_bgD_,_bgE_){return instr$0(_bgA_,_bgD_,_bgE_)};
           break;
          case 5:var i=default$0?push_unit:args;break;
          default:var i=push_unit}
        var
         _bgv_=0,
         _bgw_=
          [0,
           i,
           [0,function(_bgB_,_bgC_){return instr$0(__Q_,_bgB_,_bgC_)},_bgv_]];
        return caml_call1(mi_seq$0,[0,comment$0(s),_bgw_])}
      return caml_call2(A[24],get_config$1,_bgt_)}
    function tag_top(tags)
     {function _bgj_(ts)
       {var _bgl_=caml_call1(Utils_List[4],ts);
        if(caml_call1(Utils_List[4],tags) <= _bgl_)
         {var
           _bgm_=function(param){return comment_if(debug_tags,__T_)},
           _bgn_=caml_call1(Utils_List[4],tags),
           _bgo_=caml_call2(Utils_List[67],_bgn_,ts),
           _bgp_=[0,caml_call2(Stdlib[37],tags,_bgo_)],
           _bgq_=function(_bgr_,_bgs_){return set_tags(_bgp_,_bgr_,_bgs_)};
          return caml_call2(A[24],_bgq_,_bgm_)}
        return error$0(cst_tag_top_stack_too_short)}
      var _bgk_=get_ok_stack(cst_tag_top);
      return caml_call2(A[24],_bgk_,_bgj_)}
    function fetch_target(dup,target)
     {function _bgb_(tags)
       {var match=caml_call1(find_target(target),tags);
        if(match)
         {var offset=match[1];
          if(dup)return mi_copy(offset);
          var _bgd_=[16,offset];
          return function(_bgh_,_bgi_){return instr$0(_bgd_,_bgh_,_bgi_)}}
        var
         _bge_=caml_call2(Utils_List[20],show_stack_tag,tags),
         _bgf_=caml_call2(Utils_String[7],cst$281,_bge_),
         _bgg_=show_target(target);
        return caml_call2(errorf(__U_),_bgg_,_bgf_)}
      var _bgc_=get_ok_stack(cst_fetch_target);
      return caml_call2(A[24],_bgc_,_bgb_)}
    function __V_(offset,desired)
     {function _bfO_(current)
       {function _bfP_(param)
         {if(current)
           {var
             current$0=current[1],
             current$1=caml_call2(Utils_List[68],offset,current$0);
            if(current$1)
             {if(desired)
               {var
                 match=caml_call1(Utils_List[70],desired),
                 t=match[2],
                 ts=match[1],
                 f=
                  function(i,c)
                   {return caml_call2(equal_stack_tag,c,t)?[0,i]:0},
                 n=caml_call1(Utils_List[4],current$1) - 1 | 0,
                 i=caml_call2(Base_List[69],current$1,f),
                 _bfR_=
                  function(param)
                   {function _bf2_(param){return __V_(offset + 1 | 0,ts)}
                    if(i)
                     {var i$0=i[1],switch$0=0;
                      if(i$0 === n)
                       var _bf3_=caml_call1(A[2],0);
                      else
                       if(i$0 < n)
                        var
                         _bf4_=
                          function(param)
                           {var _bf__=[17,n];
                            return function(_bf$_,_bga_)
                             {return instr$0(_bf__,_bf$_,_bga_)}},
                         _bf5_=[16,i$0],
                         _bf6_=
                          function(_bf8_,_bf9_){return instr$0(_bf5_,_bf8_,_bf9_)},
                         _bf7_=caml_call2(A[11],0 !== i$0?1:0,_bf6_),
                         _bf3_=caml_call2(A[24],_bf7_,_bf4_);
                       else
                        switch$0 = 1;
                      if(! switch$0)return caml_call2(A[24],_bf3_,_bf2_)}
                    throw [0,Assert_failure,__W_]},
                 _bfS_=caml_call3(Utils_Option[12],cst_NA,Stdlib[33],i),
                 _bfT_=display_stack_tag(t),
                 _bfU_=caml_call3(comment_if(debug_adapt,__X_),_bfT_,_bfS_,n);
                return caml_call2(A[24],_bfU_,_bfR_)}
              var
               _bfV_=
                function(param)
                 {function _bfX_(param){return __V_(offset,desired)}
                  var _bfY_=0;
                  function _bfZ_(_bf0_,_bf1_)
                   {return instr$0(_bfY_,_bf0_,_bf1_)}
                  return caml_call2(A[24],_bfZ_,_bfX_)},
               _bfW_=comment_if(debug_adapt,__Y_);
              return caml_call2(A[24],_bfW_,_bfV_)}
            if(desired)throw [0,Assert_failure,__Z_];
            return caml_call1(A[2],0)}
          return caml_call1(A[2],0)}
        var _bfQ_=caml_call1(comment_if(debug_adapt,__0_),offset);
        return caml_call2(A[24],_bfQ_,_bfP_)}
      return caml_call2(A[24],get_tags,_bfO_)}
    function adapt_stack(desired)
     {function _bfs_(current)
       {function _bft_(param)
         {function _bfw_(param)
           {if(current)
             {if(desired)
               {var
                 desired$0=desired[1],
                 current$0=current[1],
                 f=
                  function(t)
                   {var
                     _bfM_=caml_call1(equal_stack_tag,t),
                     _bfN_=caml_call2(Utils_List[38],_bfM_,current$0);
                    return caml_call1(Utils_Option[47],_bfN_)},
                 xs=caml_call2(Utils_List[40],f,desired$0),
                 _bfz_=
                  function(param)
                   {function _bfC_(param)
                     {function _bfE_(match)
                       {function _bfF_(param)
                         {var
                           xs$2=[0,xs],
                           switch$0=0,
                           _bfK_=error$0(cst_available_result);
                          if(xs$2 && match)
                           {var ys$1=match[1],xs$0=xs,ys=ys$1;
                            for(;;)
                             {var switch$1=0;
                              if(xs$0)
                               if(ys)
                                {var
                                  ys$0=ys[2],
                                  y=ys[1],
                                  xs$1=xs$0[2],
                                  x=xs$0[1],
                                  _bfI_=caml_call2(equal_stack_tag,x,y);
                                 if(_bfI_){var xs$0=xs$1,ys=ys$0;continue}
                                 var _bfJ_=_bfI_}
                               else
                                switch$1 = 1;
                              else
                               if(ys)switch$1 = 1;else var _bfJ_=1;
                              if(switch$1)var _bfJ_=0;
                              var _bfL_=_bfJ_;
                              switch$0 = 1;
                              break}}
                          if(! switch$0)var _bfL_=1;
                          return caml_call2(A[31],_bfL_,_bfK_)}
                        var
                         _bfG_=display_tags(match),
                         _bfH_=caml_call1(comment_if(debug_adapt,__1_),_bfG_);
                        return caml_call2(A[24],_bfH_,_bfF_)}
                      return caml_call2(A[24],get_tags,_bfE_)}
                    var _bfD_=__V_(0,xs);
                    return caml_call2(A[24],_bfD_,_bfC_)},
                 _bfA_=display_ok_tags(xs),
                 _bfB_=caml_call1(comment_if(debug_adapt,__2_),_bfA_);
                return caml_call2(A[24],_bfB_,_bfz_)}
              return comment_if(debug_adapt,__3_)}
            return comment_if(debug_adapt,__4_)}
          var
           _bfx_=display_tags(desired),
           _bfy_=caml_call1(comment_if(debug_adapt,__5_),_bfx_);
          return caml_call2(A[24],_bfy_,_bfw_)}
        var
         _bfu_=display_tags(current),
         _bfv_=caml_call1(comment_if(debug_adapt,__6_),_bfu_);
        return caml_call2(A[24],_bfv_,_bft_)}
      return caml_call2(A[24],get_tags,_bfs_)}
    function if_stack_ok(x)
     {function _bfr_(tags)
       {if(tags){var tags$0=tags[1];return caml_call1(x,tags$0)}
        return caml_call1(A[2],0)}
      return caml_call2(A[24],get_tags,_bfr_)}
    function drop_target(target)
     {return if_stack_ok
              (function(tags)
                {var match=caml_call1(find_target(target),tags);
                 if(match)
                  {var offset=match[1];
                   return caml_call1(instrs,[0,[16,offset],__7_])}
                 var _bfq_=show_target(target);
                 return caml_call1(comment_if(debug_adapt,__8_),_bfq_)})}
    function unzip_target(copy,target)
     {function _be7_(tags)
       {if(tags)
         {var
           tags$0=tags[1],
           _be__=
            function(stack_original)
             {var match=caml_call1(find_target(target),tags$0);
              if(match)
               {var offset=match[1];
                if(copy)
                 {var
                   _bfa_=
                    function(param)
                     {function _bfl_(param)
                       {function _bfo_(param){return adapt_stack(stack_original)}
                        var _bfp_=tag_top([0,[1,target],0]);
                        return caml_call2(A[24],_bfp_,_bfo_)}
                      var
                       _bfm_=drop_target(target),
                       _bfn_=[0,1,caml_call2(A[24],_bfm_,_bfl_)];
                      return caml_call1(A[2],_bfn_)},
                   _bfb_=mi_copy(offset);
                  return caml_call2(A[24],_bfb_,_bfa_)}
                var
                 _bfc_=
                  function(param)
                   {function _bfi_(param){return adapt_stack(stack_original)}
                    var
                     _bfj_=tag_top([0,[1,target],0]),
                     _bfk_=[0,1,caml_call2(A[24],_bfj_,_bfi_)];
                    return caml_call1(A[2],_bfk_)},
                 _bfd_=[16,offset],
                 _bfe_=
                  function(_bfg_,_bfh_){return instr$0(_bfd_,_bfg_,_bfh_)};
                return caml_call2(A[24],_bfe_,_bfc_)}
              var _bff_=[0,0,tag_top([0,[1,target],0])];
              return caml_call1(A[2],_bff_)};
          return caml_call2(A[24],get_tags,_be__)}
        function _be8_(param)
         {var _be$_=[0,0,caml_call1(A[2],0)];return caml_call1(A[2],_be$_)}
        var _be9_=caml_call1(errorf(__9_),msg);
        return caml_call2(A[24],_be9_,_be8_)}
      return caml_call2(A[24],get_tags,_be7_)}
    function ____(param){return tag_top([0,[1,tgt_operations],0])}
    var __$_=[0,[3,_zs_]];
    function _$a_(_be5_,_be6_){return instr$0(__$_,_be5_,_be6_)}
    var ops_init=caml_call2(A[24],_$a_,____);
    function mi_if$0(protect_top,l,r)
     {var _be2_=[18,l,r];
      return function(_be3_,_be4_)
       {return composite(protect_top,_be2_,_be3_,_be4_)}}
    function mi_if_none$0(protect_top,l,r)
     {var _beZ_=[20,l,r];
      return function(_be0_,_be1_)
       {return composite(protect_top,_beZ_,_be0_,_be1_)}}
    function mi_if_left$0(protect_top,l,r)
     {var _beW_=[19,l,r];
      return function(_beX_,_beY_)
       {return composite(protect_top,_beW_,_beX_,_beY_)}}
    function mi_map$0(body)
     {var _beS_=[13,body],_beT_=0;
      return function(_beU_,_beV_){return composite(_beT_,_beS_,_beU_,_beV_)}}
    function mi_iter$0(body)
     {var _beO_=[12,body],_beP_=0;
      return function(_beQ_,_beR_){return composite(_beP_,_beO_,_beQ_,_beR_)}}
    function mi_loop$0(body)
     {var _beK_=[10,body],_beL_=0;
      return function(_beM_,_beN_){return composite(_beL_,_beK_,_beM_,_beN_)}}
    function tree_of_layout(row)
     {function _beF_(param)
       {var
         target=param[2],
         source=param[1],
         match=caml_call3(Utils_List[82],0,source,row);
        if(match){var t=match[1];return [0,source,target,t]}
        function _beG_(_beJ_){return _beJ_[1]}
        var
         _beH_=caml_call2(Utils_List[20],_beG_,row),
         _beI_=caml_call2(Utils_String[7],cst$282,_beH_);
        return caml_call4(Stdlib_printf[9],Stdlib[2],_$b_,source,_beI_)}
      return caml_call1(Utils_Binary_tree[11],_beF_)}
    function get_layout(row,layout)
     {var match=get(layout);
      if(match){var layout$0=match[1];return layout$0}
      function _beB_(_beE_){return _beE_[1]}
      var
       _beC_=caml_call2(Utils_List[20],_beB_,row),
       _beD_=caml_call2(Utils_String[7],cst$283,_beC_);
      return caml_call3(Stdlib_printf[9],Stdlib[2],_$c_,_beD_)}
    function compile_tuple(f,param)
     {if(param)
       {var _bez_=param[1],_beA_=param[2];
        if(_beA_)
         {if(_beA_[2])
           {var xs=param[2];return caml_call2(f,_bez_,compile_tuple(f,xs))}
          var y=_beA_[1];
          return caml_call2(f,_bez_,y)}}
      return caml_call1(Stdlib[2],cst_compile_tuple)}
    function mtype_of_type(with_annots,t)
     {function mtype_of_type$0(_bey_){return mtype_of_type(with_annots,_bey_)}
      function mtype_of_layout(build,row,layout)
       {if(row)
         {var
           layout$0=get_layout(row,layout),
           tr=caml_call1(tree_of_layout(row),layout$0),
           l=
            function(param)
             {var t=param[3],target=param[2];
              return [0,[0,target],mtype_of_type$0(t)]},
           n=
            function(param,_bex_)
             {var t2=_bex_[2],annot2=_bex_[1],t1=param[2],annot1=param[1];
              return caml_equal(with_annots,_$d_)
                      ?[0,0,caml_call4(build,annot1,annot2,t1,t2)]
                      :[0,0,caml_call4(build,0,0,t1,t2)]};
          return caml_call3(Utils_Binary_tree[6],l,n,tr)[2]}
        return _ze_}
      var match=getRepr(t);
      if(typeof match === "number")
       return caml_call1(_zJ_,cst_Secret_keys_are_forbidden_);
      else
       switch(match[0])
        {case 1:var t$0=match[1];return caml_call1(_zb_,t$0);
         case 2:
          var t1=match[2],t$1=match[1];
          return caml_call2(_zc_,t$1,mtype_of_type$0(t1));
         case 3:
          var _beo_=match[1];
          if(typeof _beo_ === "number")
           {var t2=match[3],t1$0=match[2],_bep_=mtype_of_type$0(t2);
            return caml_call3(_zd_,_beo_,mtype_of_type$0(t1$0),_bep_)}
          throw [0,Assert_failure,_$e_];
         case 4:
          var isNat=match[1],match$0=intType(isNat);
          return 3900609 === match$0?_zg_:785140586 <= match$0?_zh_:_zh_;
         case 5:var t$2=match[1];return mtype_of_type$0(t$2);
         case 6:
          var
           row=match[2],
           layout=match[1],
           mt_pair=
            function(annot_fst,annot_snd)
             {return caml_call2(_zH_,annot_fst,annot_snd)};
          return mtype_of_layout(mt_pair,row,layout);
         case 7:
          var
           row$0=match[2],
           layout$0=match[1],
           mt_or=
            function(annot_left,annot_right)
             {return caml_call2(_zI_,annot_left,annot_right)};
          return mtype_of_layout(mt_or,row$0,layout$0);
         case 9:
          var ts=match[1],_beq_=caml_call2(Utils_List[20],mtype_of_type$0,ts);
          return compile_tuple
                  (function(eta){return caml_call3(_zH_,0,0,eta)},_beq_);
         case 10:
          var
           memo=match[1],
           _ber_=get(memo),
           _bes_=function(memo){return caml_call1(_zt_,memo)},
           _bet_=caml_call1(_zJ_,cst_sapling_state_with_no_expl);
          return caml_call3(Utils_Option[3],_bet_,_bes_,_ber_);
         case 11:
          var
           memo$0=match[1],
           _beu_=get(memo$0),
           _bev_=function(memo){return caml_call1(_zu_,memo)},
           _bew_=caml_call1(_zJ_,cst_sapling_transaction_with_n);
          return caml_call3(Utils_Option[3],_bew_,_bev_,_beu_);
         default:return caml_call1(_zJ_,cst_Unknown_Type)}}
    function compile_literal(for_error,l)
     {function _bei_(e){return [0,[0,771172693,e],[0,[0,848053268,e[3]],0]]}
      var for_error$0=caml_call3(Utils_Option[12],0,_bei_,for_error);
      if(typeof l === "number")
       return _Jw_[6];
      else
       switch(l[0])
        {case 0:var b=l[1];return caml_call1(_Jw_[3],b);
         case 1:var i=l[1];return caml_call1(_Jw_[1],i);
         case 2:var s=l[1];return caml_call1(_Jw_[4],s);
         case 3:var s$0=l[1];return caml_call1(_Jw_[5],s$0);
         case 4:var s$1=l[1];return caml_call1(_Jw_[5],s$1);
         case 5:
          var
           i$0=l[1],
           i$1=caml_call1(Utils_Bigint[43],i$0),
           _bej_=caml_call1(Ptime[1][7],i$1),
           match=caml_call1(Ptime[6],_bej_);
          if(match)
           {var t=match[1],_bek_=caml_call4(Ptime[28],0,0,_$f_,t);
            return caml_call1(_Jw_[4],_bek_)}
          var _bel_=caml_call2(Stdlib_printf[4],_$g_,i$1);
          return caml_call1(Stdlib[2],_bel_);
         case 6:var i$2=l[1];return caml_call1(_Jw_[1],i$2);
         case 7:
          var
           entry_point=l[2],
           address=l[1],
           _bem_=caml_call1(Stdlib_printf[4],_$h_),
           _ben_=caml_call3(Utils_Option[12],cst$284,_bem_,entry_point),
           s$2=caml_call3(Stdlib_printf[4],_$i_,address,_ben_);
          return caml_call1(_Jw_[4],s$2);
         case 8:var s$3=l[1];return caml_call1(_Jw_[4],s$3);
         case 9:throw [0,SmartExcept,caml_call2(Stdlib[37],_$j_,for_error$0)];
         case 10:var s$4=l[1];return caml_call1(_Jw_[4],s$4);
         case 11:var h=l[1];return caml_call1(_Jw_[4],h);
         case 12:var s$5=l[1];return caml_call1(_Jw_[4],s$5);
         case 13:return _Jw_[15];
         case 14:return caml_call1(_Jw_[4],cst_FAKE_SAPLING_TRANSACTION$0);
         case 15:var s$6=l[1];return caml_call1(_Jw_[5],s$6);
         case 16:var s$7=l[1];return caml_call1(_Jw_[5],s$7);
         default:var s$8=l[1];return caml_call1(_Jw_[5],s$8)}}
    function op_of_attr(name,t)
     {function get(acc,param)
       {if(0 === param[0])
         {var match=param[1],target=match[2];
          return caml_string_equal(target,name)
                  ?[0,caml_call1(Utils_List[12],acc)]
                  :0}
        var snd=param[2],fst=param[1];
        function _beg_(param){return get([0,1,acc],snd)}
        var _beh_=get([0,0,acc],fst);
        return caml_call2(Utils_Misc[5],_beh_,_beg_)}
      var match=getRepr(t);
      if(typeof match !== "number" && 6 === match[0])
       {var row=match[2],layout=match[1];return get(0,get_layout(row,layout))}
      throw [0,Assert_failure,_$k_]}
    function compile_binop(line_no,context,x,y,t)
     {var t$0=mtype_of_type(0,t);
      function strict(i)
       {function _bea_(param)
         {function _beb_(param){return i}
          function _bec_(_bee_,_bef_){return instr$0(_$l_,_bee_,_bef_)}
          var _bed_=caml_call2(Utils_Option[45],_bec_,x);
          return caml_call2(A[24],_bed_,_beb_)}
        return caml_call2(A[24],y,_bea_)}
      return function(param)
       {if(typeof param === "number")
         switch(param)
          {case 0:return strict(caml_call1(instrs,_$m_));
           case 1:return strict(caml_call1(instrs,_$n_));
           case 2:
            if(caml_call2(_y7_,t$0,_zf_))
             {var
               _bdz_=
                function(param)
                 {var
                   _bd6_=caml_call1(_Jw_[3],0),
                   _bd7_=[22,mtype_of_type(0,bool$0),_bd6_];
                  return mi_if$0
                          (_$o_,
                           y,
                           function(_bd8_,_bd9_){return instr$0(_bd7_,_bd8_,_bd9_)})},
               _bdA_=caml_call1(A[2],0),
               _bdB_=caml_call2(Utils_Option[45],_bdA_,x);
              return caml_call2(A[24],_bdB_,_bdz_)}
            return strict
                    (function(_bd4_,_bd5_){return instr$0(_$p_,_bd4_,_bd5_)});
           case 3:
            if(caml_call2(_y7_,t$0,_zf_))
             {var
               _bdC_=
                function(param)
                 {var _bd1_=[22,_zf_,caml_call1(_Jw_[3],1)];
                  return mi_if$0
                          (_$q_,
                           function(_bd2_,_bd3_){return instr$0(_bd1_,_bd2_,_bd3_)},
                           y)},
               _bdD_=caml_call1(A[2],0),
               _bdE_=caml_call2(Utils_Option[45],_bdD_,x);
              return caml_call2(A[24],_bdE_,_bdC_)}
            return strict
                    (function(_bdZ_,_bd0_){return instr$0(_$r_,_bdZ_,_bd0_)});
           case 4:
            return caml_call2(_y7_,t$0,_zj_)
                    ?strict
                      (function(_bdT_,_bdU_){return instr$0(_$s_,_bdT_,_bdU_)})
                    :caml_call2(_y7_,t$0,_zk_)
                      ?strict
                        (function(_bdV_,_bdW_){return instr$0(_$t_,_bdV_,_bdW_)})
                      :strict
                        (function(_bdX_,_bdY_){return instr$0(_$u_,_bdX_,_bdY_)});
           case 5:
            return strict
                    (function(_bdR_,_bdS_){return instr$0(_$v_,_bdR_,_bdS_)});
           case 6:
            var
             _bdF_=
              function(param)
               {return mi_if_none$0
                        (0,
                         mi_failwith$0(0,1,line_no,context,0,cst_DivisionByZero),
                         mi_car)},
             _bdG_=function(_bdP_,_bdQ_){return instr$0(_$w_,_bdP_,_bdQ_)};
            return strict(caml_call2(A[24],_bdG_,_bdF_));
           case 7:
            return strict
                    (function(_bdN_,_bdO_){return instr$0(_$x_,_bdN_,_bdO_)});
           case 8:
            var
             _bdH_=
              function(param)
               {return mi_if_none$0
                        (0,
                         mi_failwith$0(0,1,line_no,context,0,cst_DivisionByZero$0),
                         mi_cdr)},
             _bdI_=function(_bdL_,_bdM_){return instr$0(_$y_,_bdL_,_bdM_)};
            return strict(caml_call2(A[24],_bdI_,_bdH_));
           case 9:return strict(caml_call1(instrs,_$z_));
           case 10:return strict(caml_call1(instrs,_$A_));
           case 11:return strict(caml_call1(instrs,_$B_));
           case 12:return strict(caml_call1(instrs,_$C_));
           default:
            return strict
                    (function(_bd__,_bd$_){return instr$0(_$D_,_bd__,_bd$_)})}
        return strict(function(_bdJ_,_bdK_){return instr$0(_$E_,_bdJ_,_bdK_)})}}
    function mi_rev_list(t)
     {function _bdv_(param)
       {return mi_iter$0
                (function(_bdx_,_bdy_){return instr$0(_$F_,_bdx_,_bdy_)})}
      var _bdw_=caml_call1(instrs,[0,[0,[3,mtype_of_type(0,t)]],_$G_]);
      return caml_call2(A[24],_bdw_,_bdv_)}
    function _$H_(tags)
     {return has_target(tgt_operations,tags)?caml_call1(A[2],0):ops_init}
    var
     _$I_=get_ok_stack(cst_ensure_ops_if_out),
     ensure_ops=caml_call2(A[24],_$I_,_$H_);
    function ensure_ops_if(c){return c?ensure_ops:caml_call1(A[2],0)}
    function occurs_lroot_alg(root)
     {var
       _bdq_=0,
       a=
        monoid_talg
         (function(_bdt_,_bds_){var _bdu_=_bdt_ || _bds_;return _bdu_},_bdq_);
      function f_texpr(ln,t,e)
       {if(5 === e[0])
         {var _bdr_=e[1];
          if(typeof _bdr_ !== "number")
           switch(_bdr_[0])
            {case 3:
              var n=_bdr_[1];
              if(typeof root === "number")
               return 0 === root
                       ?caml_string_equal(n,cst_operations$11)
                       :caml_string_equal(n,cst_storage$23);
              else
               {if(0 === root[0])
                 {var n$0=root[1];return caml_string_equal(n,n$0)}
                return 0}
             case 7:
              var n$1=_bdr_[1];
              if(typeof root !== "number" && 1 === root[0])
               {var n$2=root[1];return caml_string_equal(n$1,n$2)}
              return 0
             }}
        return caml_call3(a[1],ln,t,e)}
      return [0,f_texpr,a[2],a[3]]}
    function occurs_lroot_expr(root)
     {return cata_texpr(occurs_lroot_alg(root))}
    function occurs_lroot_command(root)
     {return cata_tcommand(occurs_lroot_alg(root))}
    function self_referential_lexpr(param)
     {var lsteps=param[2],lroot=param[1];
      function f(param)
       {if(0 === param[0])
         {var e=param[1];return caml_call1(occurs_lroot_expr(lroot),e)}
        return 0}
      return caml_call2(Utils_List[32],f,lsteps)}
    function last_step_is_item(param)
     {var lsteps=param[2],lroot=param[1];
      if(0 < caml_call1(Utils_List[4],lsteps))
       {var
         _bdn_=caml_call1(Utils_List[70],lsteps),
         _bdo_=_bdn_[2],
         _bdp_=_bdn_[1];
        if(0 === _bdo_[0])
         {var tvalue=_bdo_[2],key=_bdo_[1];
          return [0,[0,[0,lroot,_bdp_],key,tvalue]]}
        return 0}
      return 0}
    var acc$0=0;
    function lexpr_of_expr(e$1)
     {var acc=acc$0,e=e$1;
      for(;;)
       {var _bde_=e[1];
        switch(_bde_[0])
         {case 5:
           var _bdf_=_bde_[1];
           if(typeof _bdf_ !== "number")
            switch(_bdf_[0])
             {case 3:
               var _bdg_=_bdf_[1];
               return caml_string_notequal(_bdg_,cst_operations$12)
                       ?caml_string_notequal(_bdg_,cst_storage$24)
                         ?[0,[0,[0,_bdg_],acc]]
                         :[0,[0,1,acc]]
                       :[0,[0,0,acc]];
              case 7:var name=_bdf_[1];return [0,[0,[1,name],acc]]
              }
           break;
          case 6:
           var _bdh_=_bde_[1];
           if(typeof _bdh_ !== "number" && 7 === _bdh_[0])
            {var _bdi_=_bdh_[1],_bdj_=_bde_[2][1];
             if(5 === _bdj_[0])
              {var _bdk_=_bdj_[1];
               if(typeof _bdk_ !== "number" && 4 === _bdk_[0])
                {var loc=_bdk_[1];
                 return [0,
                         [0,[0,caml_call3(Stdlib_printf[4],_$J_,loc,_bdi_)],acc]]}}
             var e$0=_bde_[2],acc$1=[0,[1,_bdi_,e$0[2]],acc],acc=acc$1,e=e$0;
             continue}
           break;
          case 10:
           if(! _bde_[3] && ! _bde_[4])
            {var key=_bde_[2],items=_bde_[1],_bdl_=items[2][1],switch$0=0;
             if(typeof _bdl_ === "number" || ! (3 === _bdl_[0]))
              switch$0 = 1;
             else
              {var _bdm_=_bdl_[1];
               if(typeof _bdm_ === "number" && _bdm_)
                {var
                  tvalue=_bdl_[3],
                  acc$2=[0,[0,key,tvalue],acc],
                  acc=acc$2,
                  e=items;
                 continue}}
             throw [0,Assert_failure,_$K_]}
           break
          }
        return 0}}
    function modifies_iter(i,c)
     {var i$0=i,c$0=c;
      for(;;)
       {var
         touches$0=
          function(c,i)
           {function touches(lhs)
             {var match=lexpr_of_expr(lhs);
              if(match)
               {var _bdd_=match[1][1],switch$0=0;
                if(typeof _bdd_ !== "number" && 0 !== _bdd_[0])
                 {var name=_bdd_[1];
                  if(caml_string_equal(name,i))return 1;
                  switch$0 = 1}
                return 0}
              throw [0,
                     SmartExcept,
                     [0,_$L_,[0,[0,771172693,lhs],[0,[0,848053268,c[3]],0]]]]}
            return touches},
         touches=touches$0(c$0,i$0),
         _bc8_=c$0[1];
        switch(_bc8_[0])
         {case 3:
           var c2=_bc8_[3],c1=_bc8_[2],_bc9_=modifies_iter(i$0,c1);
           if(_bc9_)return _bc9_;
           var c$0=c2;
           continue;
          case 6:
           var body=_bc8_[3],lhs=_bc8_[1],_bc__=touches(lhs);
           if(_bc__)return _bc__;
           var c$0=body;
           continue;
          case 12:
           var c2$0=_bc8_[3],c1$0=_bc8_[2],_bc$_=modifies_iter(i$0,c1$0);
           if(_bc$_)return _bc$_;
           var c$0=c2$0;
           continue;
          case 13:
           var
            body$0=_bc8_[3],
            container=_bc8_[2],
            name=_bc8_[1],
            _bda_=modifies_iter(i$0,body$0);
           if(_bda_)
            var _bdb_=_bda_;
           else
            {var match=lexpr_of_expr(container);
             if(match)
              {var _bdc_=match[1][1],switch$0=0;
               if(typeof _bdc_ === "number" || 0 === _bdc_[0])
                switch$0 = 1;
               else
                {var cname=_bdc_[1];
                 if(caml_string_equal(i$0,cname))
                  {var i$0=name,c$0=body$0;continue}}}
             var _bdb_=0}
           return _bdb_;
          case 14:var c$1=_bc8_[2],c$0=c$1;continue;
          case 9:
          case 10:
          case 11:var lhs$0=_bc8_[1];return touches(lhs$0);
          default:return 0}}}
    function mi_unpair(k){return [24,caml_call2(Utils_List[84],k,1)]}
    function mi_unzip(steps,comb)
     {if(comb)
       {var match=comb[1],duppable=match[2],n=match[1];
        if(1 <= n)
         {if(duppable)return caml_call1(instrs,[0,_$M_,[0,[1,[4,n]],0]]);
          var k=(n + 1 | 0) / 2 | 0;
          return caml_call1
                  (instrs,[0,mi_unpair(k + 1 | 0),[0,[16,n / 2 | 0],0]])}}
      if(steps)
       {if(steps[1])
         {var
           rest=steps[2],
           _bc2_=function(param){return mi_unzip(rest,comb)},
           _bc3_=caml_call1(instrs,[0,mi_unpair(2),_$N_]);
          return caml_call2(A[24],_bc3_,_bc2_)}
        var
         rest$0=steps[2],
         _bc4_=[0,mi_unzip(rest$0,comb),0],
         _bc5_=mi_unpair(2);
        return caml_call1
                (mi_seq$0,
                 [0,
                  function(_bc6_,_bc7_){return instr$0(_bc5_,_bc6_,_bc7_)},
                  _bc4_])}
      return caml_call1(A[2],0)}
    function mi_zip(steps,comb)
     {function _bcS_(param)
       {var pairn=param[13];
        if(comb)
         {var match=comb[1],duppable=match[2],n=match[1];
          if(1 <= n && pairn)
           {if(duppable)
             {var _bcT_=[3,[1,n]];
              return function(_bc0_,_bc1_){return instr$0(_bcT_,_bc0_,_bc1_)}}
            var k=(n + 1 | 0) / 2 | 0;
            return caml_call1(instrs,[0,[17,n / 2 | 0],[0,[25,k + 1 | 0],0]])}}
        if(steps)
         {if(steps[1])
           {var
             rest=steps[2],
             _bcU_=function(param){return caml_call1(instrs,_$O_)},
             _bcV_=mi_zip(rest,comb);
            return caml_call2(A[24],_bcV_,_bcU_)}
          var
           rest$0=steps[2],
           _bcW_=0,
           _bcX_=
            [0,function(_bcY_,_bcZ_){return instr$0(_$P_,_bcY_,_bcZ_)},_bcW_];
          return caml_call1(mi_seq$0,[0,mi_zip(rest$0,comb),_bcX_])}
        return caml_call1(A[2],0)}
      return caml_call2(A[24],get_config$1,_bcS_)}
    function compile_record(layout,entries)
     {var _bcQ_=caml_call1(tree_of_layout(entries),layout);
      function _bcR_(param)
       {var target=param[2],source=param[1];
        return [0,target,caml_call3(Utils_List[83],_$Q_,source,entries)]}
      return caml_call2(Utils_Binary_tree[11],_bcR_,_bcQ_)}
    function explode_record(name,bs)
     {function _bch_(param)
       {var field=param[2],var$0=param[1];return [0,field,var$0]}
      var bs$0=caml_call2(Utils_List[20],_bch_,bs);
      function get_target(t){return caml_call3(Utils_List[82],0,t,bs$0)}
      function is_target(param)
       {var target=param[2],_bcP_=get_target(target);
        return caml_call1(Utils_Option[47],_bcP_)}
      function build_target(t)
       {if(name)
         var name$0=name[1],t$0=caml_call3(Stdlib_printf[4],_$R_,name$0,t);
        else
         var t$0=t;
        return [1,[0,t$0]]}
      function explode(l)
       {function _bci_(config)
         {if(0 === l[0])
           {var
             match=l[1],
             target=match[2],
             match$0=caml_call3(Utils_List[82],0,target,bs$0);
            if(match$0)
             {var
               var$0=match$0[1],
               _bcj_=function(param){return caml_call1(A[2],[0,var$0,0])},
               _bck_=tag_top([0,build_target(var$0),0]);
              return caml_call2(A[24],_bck_,_bcj_)}
            var
             _bcl_=function(param){return caml_call1(A[2],0)},
             _bcm_=0,
             _bcn_=function(_bcN_,_bcO_){return instr$0(_bcm_,_bcN_,_bcO_)};
            return caml_call2(A[24],_bcn_,_bcl_)}
          var _bco_=config[6]?1:0;
          if
           (_bco_
            &&
            caml_call1(Utils_Binary_tree[45],l)
            &&
            caml_call2(Utils_Binary_tree[53],is_target,l))
           {var
             l$0=caml_call1(Utils_Binary_tree[41],l),
             _bcp_=
              function(param)
               {function f(param)
                 {var target=param[2],_bcM_=get_target(target);
                  return caml_call2(Utils_Option[50],_$S_,_bcM_)}
                var targets=caml_call2(Utils_List[20],f,l$0);
                function _bcK_(param){return caml_call1(A[2],targets)}
                var
                 _bcL_=
                  tag_top(caml_call2(Utils_List[20],build_target,targets));
                return caml_call2(A[24],_bcL_,_bcK_)},
             _bcq_=function(param){return 1},
             _bcr_=[24,caml_call2(Utils_List[20],_bcq_,l$0)],
             _bcs_=function(_bcI_,_bcJ_){return instr$0(_bcr_,_bcI_,_bcJ_)};
            return caml_call2(A[24],_bcs_,_bcp_)}
          var r=l[2],l$1=l[1];
          function _bct_(param)
           {function _bcy_(l)
             {function _bcA_(param)
               {function _bcF_(r)
                 {var _bcH_=caml_call2(Stdlib[37],r,l);
                  return caml_call1(A[2],_bcH_)}
                var _bcG_=explode(r);
                return caml_call2(A[24],_bcG_,_bcF_)}
              var _bcB_=[16,caml_call1(Utils_List[4],l)];
              function _bcC_(_bcD_,_bcE_){return instr$0(_bcB_,_bcD_,_bcE_)}
              return caml_call2(A[24],_bcC_,_bcA_)}
            var _bcz_=explode(l$1);
            return caml_call2(A[24],_bcz_,_bcy_)}
          var _bcu_=mi_unpair(2);
          function _bcv_(_bcw_,_bcx_){return instr$0(_bcu_,_bcw_,_bcx_)}
          return caml_call2(A[24],_bcv_,_bct_)}
        return caml_call2(A[24],get_config$1,_bci_)}
      return explode}
    function explode_pattern(name,t,param)
     {switch(param[0])
       {case 0:
         var
          v=param[1],
          _bbP_=
           function(param)
            {var _bce_=drop_target([0,v]);return caml_call1(A[2],_bce_)},
          _bbQ_=tag_top([0,[1,[0,v]],0]);
         return caml_call2(A[24],_bbQ_,_bbP_);
        case 1:
         var
          ns=param[1],
          _bbR_=
           function(config)
            {var n=caml_call1(Utils_List[4],ns);
             if(config[6])
              {var
                _bbV_=
                 function(param)
                  {function _bb__(param)
                    {var _bcb_=caml_call1(Utils_List[12],ns);
                     function _bcc_(n){return drop_target([0,n])}
                     var _bcd_=caml_call2(A[16],_bcc_,_bcb_);
                     return caml_call1(A[2],_bcd_)}
                   function _bb$_(n){return [1,[0,n]]}
                   var _bca_=tag_top(caml_call2(Utils_List[20],_bb$_,ns));
                   return caml_call2(A[24],_bca_,_bb__)},
                _bbW_=mi_unpair(n),
                _bbX_=function(_bb8_,_bb9_){return instr$0(_bbW_,_bb8_,_bb9_)};
               return caml_call2(A[24],_bbX_,_bbV_)}
             function _bbY_(param)
              {function _bb2_(param)
                {function _bb6_(n){return drop_target([0,n])}
                 var _bb7_=caml_call2(A[16],_bb6_,ns);
                 return caml_call1(A[2],_bb7_)}
               function _bb3_(n){return [1,[0,n]]}
               var
                _bb4_=caml_call2(Utils_List[20],_bb3_,ns),
                _bb5_=tag_top(caml_call1(Utils_List[12],_bb4_));
               return caml_call2(A[24],_bb5_,_bb2_)}
             var _bbZ_=caml_call2(Utils_List[84],n - 1 | 0,0);
             function _bb0_(param)
              {return caml_call1(instrs,[0,mi_unpair(2),_$T_])}
             var _bb1_=caml_call2(A[16],_bb0_,_bbZ_);
             return caml_call2(A[24],_bb1_,_bbY_)};
         return caml_call2(A[24],get_config$1,_bbR_);
        default:
         var bs=param[2],match=getRepr(t);
         if(typeof match !== "number" && 6 === match[0])
          {var
            row=match[2],
            layout=match[1],
            _bbS_=
             function(targets)
              {function _bcf_(t){return drop_target([0,t])}
               var _bcg_=caml_call2(A[16],_bcf_,targets);
               return caml_call1(A[2],_bcg_)},
            _bbT_=get_layout(row,layout),
            _bbU_=caml_call1(explode_record(name,bs),_bbT_);
           return caml_call2(A[24],_bbU_,_bbS_)}
         throw [0,Assert_failure,_$U_]}}
    function compile_variant(row,layout,name)
     {var _bbK_=caml_call1(tree_of_layout(row),layout);
      function _bbL_(param)
       {var target=param[2];return caml_string_equal(target,name)}
      var
       _bbM_=caml_call2(Utils_Binary_tree[61],_bbL_,_bbK_),
       _bbN_=caml_call2(Utils_Option[48],_$1_,_bbM_)[2];
      function _bbO_(param){var x=param[3];return x}
      return caml_call2(Utils_Binary_tree[59],_bbO_,_bbN_)}
    function _aac_(ppf){return caml_call2(Stdlib_format[123],ppf,_aad_)}
    var pps=caml_call2(Utils_List[85],cst$285,_aac_);
    function _aae_(ppf){return caml_call2(Stdlib_format[123],ppf,_aaf_)}
    var ppS=caml_call2(Utils_List[85],cst$286,_aae_);
    function print_modify_product(lhs,p)
     {var s=caml_call3(Printer[14],0,0,lhs);
      switch(p[0])
       {case 0:
         var x=p[1],f=caml_call1(Stdlib_format[127],_aaj_);
         return caml_call3(f,x,s,x);
        case 1:
         var ns=p[1],f$0=caml_call1(Stdlib_format[127],_aak_);
         return caml_call5(f$0,pps,ns,s,ppS,ns);
        default:
         var
          name=p[1],
          f$1=caml_call1(Stdlib_format[127],_aal_),
          s$0=caml_call3(Printer[14],0,0,lhs);
         return caml_call3(f$1,s$0,name,name)}}
    function instr_repaired(i)
     {function _bbC_(param)
       {function _bbG_(param)
         {var erase_var_annots=param[12];
          function _bbH_(_bbI_,_bbJ_){return instr$0(_aam_,_bbI_,_bbJ_)}
          return caml_call2(A[11],erase_var_annots,_bbH_)}
        return caml_call2(A[24],get_config$1,_bbG_)}
      function _bbD_(_bbE_,_bbF_){return instr$0(i,_bbE_,_bbF_)}
      return caml_call2(A[24],_bbD_,_bbC_)}
    var
     compile_prim1=
      function _bbB_(_bby_,_bbz_,_bbA_){return _bbB_.fun(_bby_,_bbz_,_bbA_)},
     compile_expr$0=function _bbx_(_bbw_){return _bbx_.fun(_bbw_)},
     compile_container_access_list=
      function _bbv_(_bbr_,_bbs_,_bbt_,_bbu_)
       {return _bbv_.fun(_bbr_,_bbs_,_bbt_,_bbu_)},
     compile_match=
      function _bbq_(_bbm_,_bbn_,_bbo_,_bbp_)
       {return _bbq_.fun(_bbm_,_bbn_,_bbo_,_bbp_)},
     compile_match_cons=
      function _bbl_(_bbh_,_bbi_,_bbj_,_bbk_)
       {return _bbl_.fun(_bbh_,_bbi_,_bbj_,_bbk_)},
     of_Some=function _bbg_(_bbe_,_bbf_){return _bbg_.fun(_bbe_,_bbf_)},
     get_target_or_cst=
      function _bbd_(_bbb_,_bbc_){return _bbd_.fun(_bbb_,_bbc_)},
     compile_range=
      function _bba_(_ba5_,_ba6_,_ba7_,_ba8_,_ba9_,_ba__,_ba$_)
       {return _bba_.fun(_ba5_,_ba6_,_ba7_,_ba8_,_ba9_,_ba__,_ba$_)},
     unzip_lstep=
      function _ba4_(_ba1_,_ba2_,_ba3_){return _ba4_.fun(_ba1_,_ba2_,_ba3_)},
     unzip_path=
      function _ba0_(_baX_,_baY_,_baZ_){return _ba0_.fun(_baX_,_baY_,_baZ_)},
     unzip_lexpr=
      function _baW_(_baS_,_baT_,_baU_,_baV_)
       {return _baW_.fun(_baS_,_baT_,_baU_,_baV_)},
     strict_unzip_lexpr=
      function _baR_(_baN_,_baO_,_baP_,_baQ_)
       {return _baR_.fun(_baN_,_baO_,_baP_,_baQ_)},
     compile_delete=
      function _baM_(_baJ_,_baK_,_baL_){return _baM_.fun(_baJ_,_baK_,_baL_)},
     compile_assign=
      function _baI_(_baD_,_baE_,_baF_,_baG_,_baH_)
       {return _baI_.fun(_baD_,_baE_,_baF_,_baG_,_baH_)},
     compile_update=
      function _baC_(_bax_,_bay_,_baz_,_baA_,_baB_)
       {return _baC_.fun(_bax_,_bay_,_baz_,_baA_,_baB_)},
     compile_command=function _baw_(_bav_){return _baw_.fun(_bav_)},
     compile_entry_point=function _bau_(_bat_){return _bau_.fun(_bat_)},
     pre_finalize_contract=function _bas_(_bar_){return _bas_.fun(_bar_)},
     lazify_body=function _baq_(_bap_){return _baq_.fun(_bap_)},
     lazify_call=function _bao_(_ban_){return _bao_.fun(_ban_)},
     compile_entry_points=
      function _bam_(_bak_,_bal_){return _bam_.fun(_bak_,_bal_)},
     compile_lazy_entry_points=
      function _baj_(_bah_,_bai_){return _baj_.fun(_bah_,_bai_)},
     compile_value_f=
      function _bag_(_bae_,_baf_){return _bag_.fun(_bae_,_baf_)},
     compile_value_internal=function _bad_(_bac_){return _bad_.fun(_bac_)},
     compile_contract$0=
      function _bab_(_a$5_,_a$6_,_a$7_,_a$8_,_a$9_,_a$__,_a$$_,_baa_)
       {return _bab_.fun(_a$5_,_a$6_,_a$7_,_a$8_,_a$9_,_a$__,_a$$_,_baa_)};
    function _aas_(tags)
     {if(tags)
       {var _a$4_=tags[1];
        if(_a$4_ && ! _a$4_[2])return caml_call1(A[2],0);
        return error$0(cst_assert_singleton_stack)}
      return caml_call1(A[2],0)}
    var assert_singleton_stack=caml_call2(A[24],get_tags,_aas_);
    caml_update_dummy
     (compile_prim1,
      function(outer,arg,expr)
       {var dup=0 !== caml_call1(is_hot,outer[2])?1:0;
        function on_arg(i)
         {function _a$0_(param)
           {return function(_a$2_,_a$3_){return instr$0(i,_a$2_,_a$3_)}}
          var _a$1_=caml_call1(compile_expr$0,arg);
          return caml_call2(A[24],_a$1_,_a$0_)}
        if(typeof expr === "number")
         switch(expr)
          {case 0:
            var _a_j_=arg[1];
            if(13 === _a_j_[0])
             {var _a_k_=_a_j_[1];
              if(_a_k_)
               {var _a_l_=_a_k_[2],_a_m_=_a_k_[1];
                if(! _a_l_)return caml_call1(compile_expr$0,_a_m_);
                if(! _a_l_[2])
                 {var
                   b=_a_l_[1],
                   _a_n_=
                    function(param)
                     {function _a$y_(param)
                       {return function(_a$A_,_a$B_)
                         {return instr$0(_aau_,_a$A_,_a$B_)}}
                      var _a$z_=caml_call1(compile_expr$0,_a_m_);
                      return caml_call2(A[24],_a$z_,_a$y_)},
                   _a_o_=caml_call1(compile_expr$0,b);
                  return caml_call2(A[24],_a_o_,_a_n_)}}}
            return on_arg(_aat_);
           case 1:
            var _a_p_=arg[1];
            if(0 === _a_p_[0])
             {var _a_q_=_a_p_[1],switch$0=0;
              if(typeof _a_q_ === "number" || ! (0 === _a_q_[0]))
               switch$0 = 1;
              else
               if(! _a_q_[1])
                {var
                  _a_r_=
                   function(tags)
                    {return has_target(1,tags)
                             ?fetch_target(dup,1)
                             :function(_a$w_,_a$x_){return instr$0(_aaw_,_a$w_,_a$x_)}},
                  _a_s_=get_ok_stack(cst_self_address$1);
                 return caml_call2(A[24],_a_s_,_a_r_)}}
            return on_arg(_aav_);
           case 2:return on_arg(_aax_);
           case 3:
            var match$0=getRepr(arg[2]);
            if
             (typeof match$0
              !==
              "number"
              &&
              2
              ===
              match$0[0]
              &&
              1
              ===
              match$0[1])
             {var t=match$0[2],_a_u_=[0,mi_rev_list(t),0];
              return caml_call1
                      (mi_seq$0,[0,caml_call1(compile_expr$0,arg),_a_u_])}
            var _a_t_=caml_call5(Printer[2],0,0,0,0,arg[2]);
            return caml_call1(errorf(_aay_),_a_t_);
           case 4:return on_arg(_aaz_);
           case 5:return on_arg(_aaA_);
           case 6:
            var
             _a_v_=caml_call3(Printer[14],0,0,outer),
             _a_w_=caml_call1(Utils_String[13],_a_v_);
            return caml_call1(errorf(_aaB_),_a_w_);
           case 7:return on_arg(_aaC_);
           case 8:
            var
             _a_x_=
              function(param)
               {function _a$s_(param)
                 {return function(_a$u_,_a$v_)
                   {return instr$0(_aaD_,_a$u_,_a$v_)}}
                var _a$t_=caml_call1(compile_expr$0,arg);
                return caml_call2(A[24],_a$t_,_a$s_)},
             _a_y_=[22,_zh_,caml_call1(_Jw_[2],0)],
             _a_z_=function(_a$q_,_a$r_){return instr$0(_a_y_,_a$q_,_a$r_)};
            return caml_call2(A[24],_a_z_,_a_x_);
           case 9:return on_arg(_aaE_);
           case 10:
            var _a_A_=arg[1],switch$1=0;
            if(6 === _a_A_[0])
             {var switch$2=0,_a_E_=_a_A_[1];
              if(typeof _a_E_ !== "number" && 4 === _a_E_[0])
               {var inner2=_a_A_[2],sub=inner2,proj$0=mi_cdr;
                switch$1 = 1;
                switch$2 = 1}}
            if(! switch$1)var proj=caml_call1(A[2],0),sub=arg,proj$0=proj;
            var
             _a_B_=
              function(param)
               {function _a$l_(param)
                 {var _a$n_=0;
                  return mi_iter$0
                          (caml_call1
                            (mi_seq$0,
                             [0,
                              proj$0,
                              [0,
                               function(_a$o_,_a$p_){return instr$0(_aaF_,_a$o_,_a$p_)},
                               _a$n_]]))}
                var _a$m_=caml_call1(compile_expr$0,sub);
                return caml_call2(A[24],_a$m_,_a$l_)},
             _a_C_=[22,_zh_,caml_call1(_Jw_[2],0)],
             _a_D_=function(_a$j_,_a$k_){return instr$0(_a_C_,_a$j_,_a$k_)};
            return caml_call2(A[24],_a_D_,_a_B_);
           case 11:return on_arg(_aaG_);
           case 12:
            var
             _a_F_=
              function(param)
               {function _a$d_(param)
                 {return function(_a$h_,_a$i_)
                   {return instr$0(_aaH_,_a$h_,_a$i_)}}
                function _a$e_(_a$f_,_a$g_){return instr$0(_aaI_,_a$f_,_a$g_)}
                return caml_call2(A[24],_a$e_,_a$d_)},
             _a_G_=caml_call1(compile_expr$0,arg);
            return caml_call2(A[24],_a_G_,_a_F_);
           case 13:return on_arg(_aaJ_);
           case 14:return on_arg(_aaK_);
           case 15:return on_arg(_aaL_);
           default:return caml_call1(compile_expr$0,arg)}
        else
         switch(expr[0])
          {case 0:
            var _a_H_=expr[1];
            return 0 === _a_H_
                    ?on_arg(_aaM_)
                    :1 === _a_H_
                      ?on_arg(_aaN_)
                      :caml_call1(Stdlib[2],cst_compiler_TODO_EProject);
           case 1:
            var rev=expr[1],match$1=getRepr(arg[2]);
            if
             (typeof match$1
              !==
              "number"
              &&
              2
              ===
              match$1[0]
              &&
              2
              ===
              match$1[1])
             {var telement=match$1[2];
              return caml_call4
                      (compile_container_access_list,
                       arg,
                       caml_call1(A[2],0),
                       telement,
                       rev)}
            var _a_I_=caml_call5(Printer[2],0,0,0,0,arg[2]);
            return caml_call1(errorf(_aaO_),_a_I_);
           case 2:
            var rev$0=expr[1],match$2=getRepr(arg[2]);
            if(typeof match$2 !== "number" && 3 === match$2[0])
             {var _a_K_=match$2[1];
              if(typeof _a_K_ === "number" && _a_K_)
               {var
                 tvalue=match$2[3],
                 tkey=match$2[2],
                 _a_L_=key_value(tkey,tvalue);
                return caml_call4
                        (compile_container_access_list,
                         arg,
                         caml_call1(A[2],0),
                         _a_L_,
                         rev$0)}}
            var _a_J_=caml_call5(Printer[2],0,0,0,0,arg[2]);
            return caml_call1(errorf(_aaP_),_a_J_);
           case 3:
            var rev$1=expr[1],match$3=getRepr(arg[2]);
            if(typeof match$3 !== "number" && 3 === match$3[0])
             {var _a_N_=match$3[1];
              if(typeof _a_N_ === "number" && _a_N_)
               {var tkey$0=match$3[2];
                return caml_call4
                        (compile_container_access_list,arg,mi_car,tkey$0,rev$1)}}
            var _a_M_=caml_call5(Printer[2],0,0,0,0,arg[2]);
            return caml_call1(errorf(_aaQ_),_a_M_);
           case 4:
            var rev$2=expr[1],match$4=getRepr(arg[2]);
            if(typeof match$4 !== "number" && 3 === match$4[0])
             {var _a_P_=match$4[1];
              if(typeof _a_P_ === "number" && _a_P_)
               {var tvalue$0=match$4[3];
                return caml_call4
                        (compile_container_access_list,arg,mi_cdr,tvalue$0,rev$2)}}
            var _a_O_=caml_call5(Printer[2],0,0,0,0,arg[2]);
            return caml_call1(errorf(_aaR_),_a_O_);
           case 5:var t$0=expr[1];return on_arg([1,[3,mtype_of_type(0,t$0)]]);
           case 6:return caml_call1(compile_expr$0,arg);
           case 7:
            var name=expr[1],switch$3=0;
            if(caml_string_notequal(name,cst_head$2))
             if(caml_string_notequal(name,cst_tail$2))
              switch$3 = 1;
             else
              {var _a_Y_=arg[1];
               if(5 === _a_Y_[0])
                {var _a_Z_=_a_Y_[1],switch$4=0;
                 if(typeof _a_Z_ !== "number")
                  switch(_a_Z_[0])
                   {case 4:switch$3 = 1;switch$4 = 1;break;
                    case 8:
                     var name$2=_a_Z_[1];return fetch_target(dup,[2,name$2,0])
                    }}}
            else
             {var _a_0_=arg[1];
              if(5 === _a_0_[0])
               {var _a_1_=_a_0_[1],switch$5=0;
                if(typeof _a_1_ !== "number")
                 switch(_a_1_[0])
                  {case 4:switch$3 = 1;switch$5 = 1;break;
                   case 8:
                    var name$3=_a_1_[1];return fetch_target(dup,[2,name$3,1])
                   }}}
            if(switch$3)
             {var _a_Q_=arg[1];
              if(5 === _a_Q_[0])
               {var _a_W_=_a_Q_[1];
                if(typeof _a_W_ !== "number" && 4 === _a_W_[0])
                 {var
                   name$1=_a_W_[1],
                   _a_X_=caml_call2(Stdlib[28],cst$287,name);
                  return fetch_target
                          (dup,[0,caml_call2(Stdlib[28],name$1,_a_X_)])}}}
            var match=getRepr(arg[2]),switch$6=0;
            if(typeof match !== "number" && 6 === match[0])
             {var layout$0=match[1],_a_a_=get(layout$0);switch$6 = 1}
            if(! switch$6)var _a_a_=0;
            if(_a_a_)
             {var
               layout=_a_a_[1],
               renaming=caml_call2(Stdlib_hashtbl[1],0,5),
               aux=
                function(param)
                 {var param$0=param;
                  for(;;)
                   {if(0 === param$0[0])
                     {var match=param$0[1],target=match[2],source=match[1];
                      return caml_call3(Stdlib_hashtbl[5],renaming,source,target)}
                    var l2=param$0[2],l1=param$0[1];
                    aux(l1);
                    var param$0=l2;
                    continue}};
              aux(layout);
              var renaming$0=renaming}
            else
             var renaming$0=caml_call2(Stdlib_hashtbl[1],0,5);
            var match$5=caml_call2(Stdlib_hashtbl[7],renaming$0,name);
            if(match$5)var x=match$5[1],name$0=x;else var name$0=name;
            var match$6=op_of_attr(name$0,arg[2]);
            if(match$6)
             {var _a_R_=match$6[1];
              if(_a_R_)
               {var
                 _a_S_=0,
                 _a_T_=[26,_a_R_],
                 _a_U_=
                  [0,
                   function(_a$U_,_a$V_){return instr$0(_a_T_,_a$U_,_a$V_)},
                   _a_S_];
                return caml_call1
                        (mi_seq$0,[0,caml_call1(compile_expr$0,arg),_a_U_])}
              return caml_call1(mi_seq$0,[0,caml_call1(compile_expr$0,arg),0])}
            var _a_V_=caml_call1(show$4,arg[2]);
            return caml_call2(errorf(_aaS_),name$0,_a_V_);
           case 8:
            var
             name$4=expr[1],
             x$0=caml_call1(compile_expr$0,arg),
             t$1=getRepr(outer[2]);
            if(typeof t$1 !== "number")
             switch(t$1[0])
              {case 2:
                if(! t$1[1])
                 {var t$3=t$1[2];
                  if(caml_string_notequal(name$4,cst_None$69))
                   {if(caml_string_notequal(name$4,cst_Some$68))
                     throw [0,Assert_failure,_$Y_];
                    var _a_b_=0;
                    return caml_call1
                            (mi_seq$0,
                             [0,
                              x$0,
                              [0,
                               function(_a$S_,_a$T_){return instr$0(_$Z_,_a$S_,_a$T_)},
                               _a_b_]])}
                  var
                   _a_c_=_Jw_[11],
                   _a_d_=[22,caml_call1(_zz_,mtype_of_type(0,t$3)),_a_c_];
                  return function(_a$Q_,_a$R_)
                   {return instr$0(_a_d_,_a$Q_,_a$R_)}}
                break;
               case 7:
                var _a_3_=t$1[2],_a_2_=t$1[1];
                if(_a_3_)
                 {var _a_4_=_a_3_[1];
                  if(! caml_string_notequal(_a_4_[1],cst_Left$12))
                   {var _a_6_=_a_3_[2];
                    if(_a_6_)
                     {var _a_7_=_a_6_[1],_a_8_=_a_4_[2];
                      if
                       (!
                        caml_string_notequal(_a_7_[1],cst_Right$12)
                        &&
                        !
                        _a_6_[2])
                       {var tr=_a_7_[2];
                        if(caml_string_notequal(name$4,cst_Left$11))
                         {if(caml_string_notequal(name$4,cst_Right$11))
                           {var _a_e_=caml_call2(Stdlib_printf[4],_$0_,name$4);
                            return caml_call1(Stdlib[2],_a_e_)}
                          var _a_f_=0,_a_g_=[1,[1,0,0,mtype_of_type(0,_a_8_)]];
                          return caml_call1
                                  (mi_seq$0,
                                   [0,
                                    x$0,
                                    [0,
                                     function(_a$O_,_a$P_){return instr$0(_a_g_,_a$O_,_a$P_)},
                                     _a_f_]])}
                        var _a_h_=0,_a_i_=[1,[0,0,0,mtype_of_type(0,tr)]];
                        return caml_call1
                                (mi_seq$0,
                                 [0,
                                  x$0,
                                  [0,
                                   function(_a$M_,_a$N_){return instr$0(_a_i_,_a$M_,_a$N_)},
                                   _a_h_]])}}}}
                var
                 row=t$1[2],
                 _a_5_=get(_a_2_),
                 layout$1=caml_call2(Utils_Option[50],_aaU_,_a_5_),
                 ctxt=compile_variant(row,layout$1,name$4),
                 l=
                  function(acc,t)
                   {function _a$H_(eta){return caml_call3(_zI_,0,0,eta)}
                    function _a$I_(eta){return mtype_of_type(0,eta)}
                    var
                     t$0=caml_call3(Utils_Binary_tree[6],_a$I_,_a$H_,t),
                     _a$J_=[1,[0,0,0,t$0]];
                    return [0,
                            function(_a$K_,_a$L_){return instr$0(_a$J_,_a$K_,_a$L_)},
                            acc]},
                 r=
                  function(t,acc)
                   {function _a$C_(eta){return caml_call3(_zI_,0,0,eta)}
                    function _a$D_(eta){return mtype_of_type(0,eta)}
                    var
                     t$0=caml_call3(Utils_Binary_tree[6],_a$D_,_a$C_,t),
                     _a$E_=[1,[1,0,0,t$0]];
                    return [0,
                            function(_a$F_,_a$G_){return instr$0(_a$E_,_a$F_,_a$G_)},
                            acc]},
                 instrs=caml_call4(Utils_Binary_tree[62],[0,x$0,0],l,r,ctxt);
                return caml_call1(mi_seq$0,caml_call1(Utils_List[12],instrs))
               }
            var t$2=caml_call2(show_f,pp$4,t$1);
            return caml_call2(errorf(_aaT_),name$4,t$2);
           default:
            var
             constructor=expr[1],
             _a_9_=0,
             _a___=[22,_zf_,caml_call1(_Jw_[3],0)],
             _a_$_=
              caml_call1
               (mi_seq$0,
                [0,
                 function(_a$Y_,_a$Z_){return instr$0(_a___,_a$Y_,_a$Z_)},
                 _a_9_]),
             _a$a_=0,
             _a$b_=0,
             _a$c_=[22,_zf_,caml_call1(_Jw_[3],1)];
            return caml_call4
                    (compile_match,
                     0,
                     arg,
                     [0,
                      [0,
                       constructor,
                       cst_dummy,
                       caml_call1
                        (mi_seq$0,
                         [0,
                          function(_a$W_,_a$X_){return instr$0(_a$c_,_a$W_,_a$X_)},
                          _a$b_])],
                      _a$a_],
                     _a_$_)}});
    caml_update_dummy
     (compile_expr$0,
      function(outer)
       {var _a4B_=outer[1];
        switch(_a4B_[0])
         {case 0:var p=_a4B_[1];return instr_repaired([0,p]);
          case 1:
           var
            x=_a4B_[2],
            p$0=_a4B_[1],
            _a4C_=function(param){return instr_repaired([1,p$0])},
            _a4D_=caml_call1(compile_expr$0,x);
           return caml_call2(A[24],_a4D_,_a4C_);
          case 2:throw [0,Assert_failure,_aaV_];
          case 3:
           var
            x2=_a4B_[3],
            x1=_a4B_[2],
            p$1=_a4B_[1],
            _a4E_=
             function(param)
              {function _a9W_(param)
                {var _a9Y_=[3,p$1];
                 return function(_a9Z_,_a90_)
                  {return instr$0(_a9Y_,_a9Z_,_a90_)}}
               var _a9X_=caml_call1(compile_expr$0,x1);
               return caml_call2(A[24],_a9X_,_a9W_)},
            _a4F_=caml_call1(compile_expr$0,x2);
           return caml_call2(A[24],_a4F_,_a4E_);
          case 4:
           var
            x3=_a4B_[4],
            x2$0=_a4B_[3],
            x1$0=_a4B_[2],
            p$2=_a4B_[1],
            _a4G_=
             function(param)
              {function _a9P_(param)
                {function _a9R_(param)
                  {var _a9T_=[4,p$2];
                   return function(_a9U_,_a9V_)
                    {return instr$0(_a9T_,_a9U_,_a9V_)}}
                 var _a9S_=caml_call1(compile_expr$0,x1$0);
                 return caml_call2(A[24],_a9S_,_a9R_)}
               var _a9Q_=caml_call1(compile_expr$0,x2$0);
               return caml_call2(A[24],_a9Q_,_a9P_)},
            _a4H_=caml_call1(compile_expr$0,x3);
           return caml_call2(A[24],_a4H_,_a4G_);
          case 5:
           var prim=_a4B_[1],dup=0 !== caml_call1(is_hot,outer[2])?1:0;
           if(typeof prim === "number")
            return instr_repaired(3);
           else
            switch(prim[0])
             {case 1:throw [0,Assert_failure,_aan_];
              case 3:var name=prim[1];return fetch_target(dup,[0,name]);
              case 4:throw [0,Assert_failure,_aao_];
              case 5:var name$0=prim[1];return fetch_target(dup,[0,name$0]);
              case 6:
               var arg_name=prim[1];return fetch_target(dup,[0,arg_name]);
              case 7:var name$1=prim[1];return fetch_target(dup,[0,name$1]);
              case 8:
               var
                name$3=prim[1],
                _a4t_=
                 function(param)
                  {function _a9L_(param)
                    {return function(_a9N_,_a9O_)
                      {return instr$0(_aap_,_a9N_,_a9O_)}}
                   var _a9M_=fetch_target(dup,[2,name$3,1]);
                   return caml_call2(A[24],_a9M_,_a9L_)},
                _a4u_=fetch_target(dup,[2,name$3,0]);
               return caml_call2(A[24],_a4u_,_a4t_);
              case 9:
               var
                _a4v_=caml_call3(Printer[14],0,0,outer),
                _a4w_=caml_call1(Utils_String[13],_a4v_);
               return caml_call1(errorf(_aaq_),_a4w_);
              case 0:
              case 2:
               var
                l=prim[1],
                _a4r_=compile_literal([0,outer],l),
                _a4s_=[22,mtype_of_type(0,type_of_literal(l)),_a4r_];
               return function(_a9J_,_a9K_)
                {return instr$0(_a4s_,_a9J_,_a9K_)};
              default:
               var
                _a4x_=caml_call5(Printer[2],0,0,0,0,outer[2]),
                _a4y_=caml_call1(Utils_String[13],_a4x_),
                _a4z_=caml_call3(Printer[14],0,0,outer),
                _a4A_=caml_call1(Utils_String[13],_a4z_);
               return caml_call2(errorf(_aar_),_a4A_,_a4y_)}
          case 6:
           var x$0=_a4B_[2],prim$0=_a4B_[1];
           return caml_call3(compile_prim1,outer,x$0,prim$0);
          case 7:
           var _a4I_=_a4B_[1];
           if(typeof _a4I_ === "number")
            switch(_a4I_)
             {case 0:
               var
                k=_a4B_[3],
                m=_a4B_[2],
                _a4J_=0,
                _a4K_=
                 [0,
                  function(_a8$_,_a9a_){return instr$0(_aaW_,_a8$_,_a9a_)},
                  _a4J_],
                _a4L_=[0,caml_call1(compile_expr$0,k),_a4K_];
               return caml_call1
                       (mi_seq$0,[0,caml_call1(compile_expr$0,m),_a4L_]);
              case 1:
               var member=_a4B_[3],items=_a4B_[2],match=getRepr(items[2]);
               if(typeof match !== "number")
                switch(match[0])
                 {case 2:
                   if(2 === match[1])
                    {var
                      _a4M_=0,
                      _a4N_=
                       [0,
                        function(_a89_,_a8__){return instr$0(_aaX_,_a89_,_a8__)},
                        _a4M_],
                      _a4O_=[0,caml_call1(compile_expr$0,member),_a4N_];
                     return caml_call1
                             (mi_seq$0,[0,caml_call1(compile_expr$0,items),_a4O_])}
                   break;
                  case 3:
                   var _a4P_=match[1];
                   if(typeof _a4P_ === "number" && _a4P_)
                    {var
                      _a4Q_=0,
                      _a4R_=
                       [0,
                        function(_a87_,_a88_){return instr$0(_aaY_,_a87_,_a88_)},
                        _a4Q_],
                      _a4S_=[0,caml_call1(compile_expr$0,member),_a4R_];
                     return caml_call1
                             (mi_seq$0,[0,caml_call1(compile_expr$0,items),_a4S_])}
                   break
                  }
               return error$0(cst_EContains$0);
              case 2:
               var
                parameter=_a4B_[3],
                lambda=_a4B_[2],
                _a4T_=0,
                _a4U_=
                 [0,
                  function(_a85_,_a86_){return instr$0(_aaZ_,_a85_,_a86_)},
                  _a4T_],
                _a4V_=[0,caml_call1(compile_expr$0,parameter),_a4U_];
               return caml_call1
                       (mi_seq$0,[0,caml_call1(compile_expr$0,lambda),_a4V_]);
              case 3:
               var
                parameter$0=_a4B_[3],
                lambda$0=_a4B_[2],
                _a4W_=0,
                _a4X_=
                 [0,
                  function(_a83_,_a84_){return instr$0(_aa0_,_a83_,_a84_)},
                  _a4W_],
                _a4Y_=[0,caml_call1(compile_expr$0,parameter$0),_a4X_];
               return caml_call1
                       (mi_seq$0,[0,caml_call1(compile_expr$0,lambda$0),_a4Y_]);
              case 4:
               var
                l$0=_a4B_[3],
                x$1=_a4B_[2],
                x$2=caml_call1(compile_expr$0,x$1),
                l$1=caml_call1(compile_expr$0,l$0),
                _a4Z_=0;
               return caml_call1
                       (mi_seq$0,
                        [0,
                         l$1,
                         [0,
                          x$2,
                          [0,
                           function(_a81_,_a82_){return instr$0(_aa1_,_a81_,_a82_)},
                           _a4Z_]]]);
              case 5:
               var
                s=_a4B_[3],
                t=_a4B_[2],
                _a40_=0,
                _a41_=
                 [0,
                  function(_a8Z_,_a80_){return instr$0(_aa2_,_a8Z_,_a80_)},
                  _a40_],
                _a42_=[0,caml_call1(compile_expr$0,s),_a41_];
               return caml_call1
                       (mi_seq$0,[0,caml_call1(compile_expr$0,t),_a42_]);
              case 6:
               var
                amount=_a4B_[3],
                content=_a4B_[2],
                _a43_=0,
                _a44_=
                 [0,
                  function(_a8X_,_a8Y_){return instr$0(_aa3_,_a8X_,_a8Y_)},
                  _a43_],
                _a45_=[0,caml_call1(compile_expr$0,content),_a44_];
               return caml_call1
                       (mi_seq$0,[0,caml_call1(compile_expr$0,amount),_a45_]);
              default:
               var
                decomposition=_a4B_[3],
                ticket=_a4B_[2],
                _a46_=0,
                _a47_=
                 [0,
                  function(_a9b_,_a9c_){return instr$0(_aa4_,_a9b_,_a9c_)},
                  _a46_],
                _a48_=[0,caml_call1(compile_expr$0,ticket),_a47_];
               return caml_call1
                       (mi_seq$0,
                        [0,caml_call1(compile_expr$0,decomposition),_a48_])}
           else
            {if(0 === _a4I_[0])
              {var
                y=_a4B_[3],
                x$3=_a4B_[2],
                op=_a4I_[1],
                _a49_=y[2],
                _a4__=caml_call1(compile_expr$0,y),
                _a4$_=[0,caml_call1(compile_expr$0,x$3)],
                _a5a_=caml_call3(Printer[14],0,0,outer);
               return caml_call1
                       (compile_binop(outer[3],_a5a_,_a4$_,_a4__,_a49_),op)}
             var
              y$0=_a4B_[3],
              x$4=_a4B_[2],
              op$0=_a4I_[1],
              _a5b_=
               function(param)
                {function _a9d_(param)
                  {function _a9h_(param)
                    {function _a9j_(param)
                      {function _a9n_(param)
                        {function _a9r_(param)
                          {function _a9v_(param)
                            {var _a9z_=0;
                             function x(_a9H_,_a9I_){return instr$0(_a9z_,_a9H_,_a9I_)}
                             var
                              _a9A_=0,
                              _a9B_=0,
                              _a9C_=
                               [0,
                                function(_a9F_,_a9G_){return instr$0(_a9B_,_a9F_,_a9G_)},
                                _a9A_],
                              y=
                               caml_call1
                                (mi_seq$0,
                                 [0,
                                  function(_a9D_,_a9E_){return instr$0(_aa5_,_a9D_,_a9E_)},
                                  _a9C_]);
                             return op$0?mi_if$0(_aa6_,y,x):mi_if$0(_aa7_,x,y)}
                           function _a9w_(_a9x_,_a9y_)
                            {return instr$0(_aa8_,_a9x_,_a9y_)}
                           return caml_call2(A[24],_a9w_,_a9v_)}
                         function _a9s_(_a9t_,_a9u_)
                          {return instr$0(_aa9_,_a9t_,_a9u_)}
                         return caml_call2(A[24],_a9s_,_a9r_)}
                       function _a9o_(_a9p_,_a9q_)
                        {return instr$0(_aa__,_a9p_,_a9q_)}
                       return caml_call2(A[24],_a9o_,_a9n_)}
                     function _a9k_(_a9l_,_a9m_)
                      {return instr$0(_aa$_,_a9l_,_a9m_)}
                     return caml_call2(A[24],_a9k_,_a9j_)}
                   var _a9i_=caml_call1(compile_expr$0,y$0);
                   return caml_call2(A[24],_a9i_,_a9h_)}
                 function _a9e_(_a9f_,_a9g_)
                  {return instr$0(_aba_,_a9f_,_a9g_)}
                 return caml_call2(A[24],_a9e_,_a9d_)},
              _a5c_=caml_call1(compile_expr$0,x$4);
             return caml_call2(A[24],_a5c_,_a5b_)}
          case 8:
           switch(_a4B_[1])
            {case 0:
              var _a5d_=_a4B_[2],_a5e_=_a4B_[4][1];
              if(5 === _a5e_[0])
               {var _a5h_=_a5e_[1],switch$0=0;
                if(typeof _a5h_ === "number" || ! (0 === _a5h_[0]))
                 switch$0 = 1;
                else
                 {var _a5i_=_a5h_[1],switch$1=0;
                  if(typeof _a5i_ !== "number" && 1 === _a5i_[0])
                   {var
                     i=_a5i_[1],
                     quantity$0=_a4B_[3],
                     _a5j_=caml_call1(Utils_Bigint[5],1);
                    if(caml_call2(Utils_Bigint[1],i,_a5j_))
                     {var
                       _a5k_=0,
                       _a5l_=
                        [0,
                         function(_a8V_,_a8W_){return instr$0(_abd_,_a8V_,_a8W_)},
                         _a5k_],
                       _a5m_=[0,caml_call1(compile_expr$0,quantity$0),_a5l_];
                      return caml_call1
                              (mi_seq$0,[0,caml_call1(compile_expr$0,_a5d_),_a5m_])}
                    switch$1 = 1}}}
              var
               total=_a4B_[4],
               quantity=_a4B_[3],
               _a5f_=
                function(param)
                 {function _a8G_(param)
                   {function _a8I_(param)
                     {function _a8K_(param)
                       {function _a8O_(param)
                         {function _a8S_(param){return mi_car}
                          var
                           _a8T_=caml_call3(Printer[14],0,0,outer),
                           _a8U_=caml_call2(of_Some,outer[3],_a8T_);
                          return caml_call2(A[24],_a8U_,_a8S_)}
                        function _a8P_(_a8Q_,_a8R_)
                         {return instr$0(_abb_,_a8Q_,_a8R_)}
                        return caml_call2(A[24],_a8P_,_a8O_)}
                      function _a8L_(_a8M_,_a8N_)
                       {return instr$0(_abc_,_a8M_,_a8N_)}
                      return caml_call2(A[24],_a8L_,_a8K_)}
                    var _a8J_=caml_call1(compile_expr$0,quantity);
                    return caml_call2(A[24],_a8J_,_a8I_)}
                  var _a8H_=caml_call1(compile_expr$0,_a5d_);
                  return caml_call2(A[24],_a8H_,_a8G_)},
               _a5g_=caml_call1(compile_expr$0,total);
              return caml_call2(A[24],_a5g_,_a5f_);
             case 1:
              var
               step=_a4B_[4],
               b=_a4B_[3],
               a=_a4B_[2],
               body=
                if_stack_ok
                 (function(tags)
                   {var
                     match=
                      caml_call1(find_target(range_result_target),tags);
                    if(match)
                     {var offset=match[1];
                      return caml_call1
                              (instrs,
                               [0,
                                _abg_,
                                [0,
                                 [16,offset + 1 | 0],
                                 [0,_abf_,[0,_abe_,[0,[17,offset],0]]]]])}
                    var _a8F_=show_target(range_result_target);
                    return caml_call1(errorf(_abh_),_a8F_)}),
               _a5n_=
                function(param)
                 {function _a8u_(param)
                   {function _a8z_(param)
                     {function _a8B_(param)
                       {function _a8D_(param){return tag_top([0,st_none(0),0])}
                        var _a8E_=mi_rev_list(a[2]);
                        return caml_call2(A[24],_a8E_,_a8D_)}
                      var
                       line_no=outer[3],
                       _a8C_=
                        caml_call7(compile_range,line_no,a,b,step,name$2,body,0);
                      return caml_call2(A[24],_a8C_,_a8B_)}
                    var _a8A_=tag_top([0,[1,range_result_target],0]);
                    return caml_call2(A[24],_a8A_,_a8z_)}
                  var _a8v_=[0,[3,mtype_of_type(0,a[2])]];
                  function _a8w_(_a8x_,_a8y_)
                   {return instr$0(_a8v_,_a8x_,_a8y_)}
                  return caml_call2(A[24],_a8w_,_a8u_)},
               _a5o_=comment$0(caml_call3(Printer[14],0,0,outer));
              return caml_call2(A[24],_a5o_,_a5n_);
             case 2:
              var
               v=_a4B_[4],
               k$0=_a4B_[3],
               m$0=_a4B_[2],
               _a5p_=
                function(param)
                 {function _a8o_(param)
                   {function _a8q_(param)
                     {return function(_a8s_,_a8t_)
                       {return instr$0(_abi_,_a8s_,_a8t_)}}
                    var _a8r_=caml_call1(compile_expr$0,k$0);
                    return caml_call2(A[24],_a8r_,_a8q_)}
                  var _a8p_=caml_call1(compile_expr$0,v);
                  return caml_call2(A[24],_a8p_,_a8o_)},
               _a5q_=caml_call1(compile_expr$0,m$0);
              return caml_call2(A[24],_a5q_,_a5p_);
             case 3:
              var
               v$0=_a4B_[4],
               k$1=_a4B_[3],
               m$1=_a4B_[2],
               _a5r_=
                function(param)
                 {function _a8k_(param)
                   {function _a8m_(param){return caml_call1(instrs,_abj_)}
                    var _a8n_=caml_call1(compile_expr$0,k$1);
                    return caml_call2(A[24],_a8n_,_a8m_)}
                  var _a8l_=caml_call1(compile_expr$0,v$0);
                  return caml_call2(A[24],_a8l_,_a8k_)},
               _a5s_=caml_call1(compile_expr$0,m$1);
              return caml_call2(A[24],_a5s_,_a5r_);
             case 4:
              var
               y$1=_a4B_[4],
               x$5=_a4B_[3],
               c=_a4B_[2],
               _a5t_=caml_call1(compile_expr$0,y$1),
               _a5u_=[0,mi_if$0(_abk_,caml_call1(compile_expr$0,x$5),_a5t_),0];
              return caml_call1
                      (mi_seq$0,[0,caml_call1(compile_expr$0,c),_a5u_]);
             default:
              return caml_call1(Stdlib[2],cst_cannot_compile_test_ticket)}
          case 9:
           var missing_message=_a4B_[3],inner=_a4B_[2],constructor=_a4B_[1];
           if(missing_message)
            var
             missing_message$0=missing_message[1],
             args=caml_call1(compile_expr$0,missing_message$0),
             default$0=0;
           else
            var
             l$2=head_line_no(outer[3]),
             _a5x_=[22,_zh_,caml_call1(_Jw_[2],l$2)],
             l$3=function(_a8i_,_a8j_){return instr$0(_a5x_,_a8i_,_a8j_)},
             args=l$3,
             default$0=1;
           var
            _a5v_=caml_call3(Printer[14],0,0,outer),
            _a5w_=
             mi_failwith$0
              (0,default$0,outer[3],_a5v_,[0,args],cst_OpenVariant);
           return caml_call4
                   (compile_match,
                    _abl_,
                    inner,
                    [0,[0,constructor,cst_dummy$0,tag_top([0,st_none(0),0])],0],
                    _a5w_);
          case 10:
           var
            missing_message$1=_a4B_[4],
            default_value=_a4B_[3],
            key=_a4B_[2],
            items$0=_a4B_[1],
            line_no=outer[3],
            l$4=head_line_no(outer[3]);
           if(default_value)
            var v$1=default_value[1],missed=caml_call1(compile_expr$0,v$1);
           else
            {if(missing_message$1)
              var
               missing_message$2=missing_message$1[1],
               args$0=caml_call1(compile_expr$0,missing_message$2),
               default$1=0;
             else
              var
               _a5B_=[22,_zh_,caml_call1(_Jw_[2],l$4)],
               l$5=function(_a8g_,_a8h_){return instr$0(_a5B_,_a8g_,_a8h_)},
               args$0=l$5,
               default$1=1;
             var
              missed=
               mi_failwith$0
                (0,
                 default$1,
                 line_no,
                 caml_call3(Printer[14],0,0,outer),
                 [0,args$0],
                 cst_GetItem)}
           var
            comment=caml_call1(commentf(_abm_),l$4),
            on_option=mi_if_none$0(_abn_,missed,comment),
            _a5y_=[0,on_option,0],
            _a5z_=
             [0,
              function(_a8e_,_a8f_){return instr$0(_abo_,_a8e_,_a8f_)},
              _a5y_],
            _a5A_=[0,caml_call1(compile_expr$0,key),_a5z_];
           return caml_call1
                   (mi_seq$0,[0,caml_call1(compile_expr$0,items$0),_a5A_]);
          case 11:
           var
            es=_a4B_[1],
            f=
             function(x,y)
              {var _a8b_=0;
               return caml_call1
                       (mi_seq$0,
                        [0,
                         y,
                         [0,
                          x,
                          [0,
                           function(_a8c_,_a8d_){return instr$0(_abp_,_a8c_,_a8d_)},
                           _a8b_]]])};
           return compile_tuple
                   (f,caml_call2(Utils_List[20],compile_expr$0,es));
          case 12:
           var
            entries=_a4B_[1],
            _a5C_=
             function(config)
              {var has_pairn=config[6]?config[13]:0,match=getRepr(outer[2]);
               if(typeof match !== "number" && 6 === match[0])
                {var
                  layout=match[1],
                  _a7X_=get(layout),
                  layout$0=caml_call2(Utils_Option[50],_abr_,_a7X_),
                  _a7Y_=caml_call1(Utils_Control[5],compile_expr$0),
                  entries$0=caml_call2(Utils_List[20],_a7Y_,entries),
                  entries$1=compile_record(layout$0,entries$0),
                  n=caml_call1(Utils_Binary_tree[7],entries$1);
                 if
                  (has_pairn
                   &&
                   2
                   <
                   n
                   &&
                   caml_call1(Utils_Binary_tree[45],entries$1))
                  {var
                    _a7Z_=
                     function(param)
                      {var _a7__=[25,n];
                       return function(_a7$_,_a8a_)
                        {return instr$0(_a7__,_a7$_,_a8a_)}},
                    _a70_=caml_call1(Utils_Binary_tree[41],entries$1),
                    _a71_=caml_call1(Utils_List[12],_a70_),
                    _a72_=function(_a79_){return _a79_[2]},
                    _a73_=caml_call2(A[16],_a72_,_a71_);
                   return caml_call2(A[24],_a73_,_a7Z_)}
                 var
                  p=
                   function(x1,x2)
                    {var _a76_=0;
                     return caml_call1
                             (mi_seq$0,
                              [0,
                               x2,
                               [0,
                                x1,
                                [0,
                                 function(_a77_,_a78_){return instr$0(_abs_,_a77_,_a78_)},
                                 _a76_]]])},
                  _a74_=function(_a75_){return _a75_[2]};
                 return caml_call3(Utils_Binary_tree[6],_a74_,p,entries$1)}
               throw [0,Assert_failure,_abq_]};
           return caml_call2(A[24],get_config$1,_a5C_);
          case 13:
           var
            elems=_a4B_[1],
            match$0=mtype_of_type(0,outer[2]),
            _a5D_=match$0[1];
           if(1 === _a5D_[0] && 1 === _a5D_[1])
            {var
              t$0=_a5D_[2],
              _a5E_=
               function(param)
                {function _a7S_(value)
                  {var
                    _a7T_=0,
                    _a7U_=
                     [0,
                      function(_a7V_,_a7W_){return instr$0(_abt_,_a7V_,_a7W_)},
                      _a7T_];
                   return caml_call1
                           (mi_seq$0,[0,caml_call1(compile_expr$0,value),_a7U_])}
                 return caml_call1
                         (mi_seq$0,caml_call2(Utils_List[22],_a7S_,elems))},
              _a5F_=caml_call1(_Jw_[12],0),
              _a5G_=[22,caml_call1(_zA_,t$0),_a5F_],
              _a5H_=function(_a7Q_,_a7R_){return instr$0(_a5G_,_a7Q_,_a7R_)};
             return caml_call2(A[24],_a5H_,_a5E_)}
           return caml_call1(Stdlib[2],cst_elems);
          case 14:
           var
            entries$0=_a4B_[2],
            _a5I_=
             function(param)
              {function _a7F_(param)
                {var value=param[2],key=param[1];
                 function _a7G_(param)
                  {function _a7I_(param)
                    {function _a7M_(param)
                      {return function(_a7O_,_a7P_)
                        {return instr$0(_abu_,_a7O_,_a7P_)}}
                     var _a7N_=caml_call1(compile_expr$0,key);
                     return caml_call2(A[24],_a7N_,_a7M_)}
                   function _a7J_(_a7K_,_a7L_)
                    {return instr$0(_abv_,_a7K_,_a7L_)}
                   return caml_call2(A[24],_a7J_,_a7I_)}
                 var _a7H_=caml_call1(compile_expr$0,value);
                 return caml_call2(A[24],_a7H_,_a7G_)}
               return caml_call1
                       (mi_seq$0,caml_call2(Utils_List[20],_a7F_,entries$0))},
            mt=mtype_of_type(0,outer[2]),
            _a5J_=mt[1],
            switch$2=0;
           if(2 === _a5J_[0])
            {var _a5M_=_a5J_[1];
             if(typeof _a5M_ === "number" && 2 <= _a5M_)
              {var
                v$2=_a5J_[3],
                k$2=_a5J_[2],
                _a5N_=[0,[6,k$2,v$2]],
                _a5L_=function(_a7D_,_a7E_){return instr$0(_a5N_,_a7D_,_a7E_)};
               switch$2 = 1}}
           if(! switch$2)
            var
             _a5K_=[22,mt,caml_call1(_Jw_[14],0)],
             _a5L_=function(_a7B_,_a7C_){return instr$0(_a5K_,_a7B_,_a7C_)};
           return caml_call2(A[24],_a5L_,_a5I_);
          case 15:
           var
            entries$1=_a4B_[1],
            _a5O_=
             function(param)
              {function _a7r_(key)
                {function _a7s_(param)
                  {function _a7x_(param)
                    {return function(_a7z_,_a7A_)
                      {return instr$0(_abw_,_a7z_,_a7A_)}}
                   var _a7y_=caml_call1(compile_expr$0,key);
                   return caml_call2(A[24],_a7y_,_a7x_)}
                 var _a7t_=[22,_zf_,caml_call1(_Jw_[3],1)];
                 function _a7u_(_a7v_,_a7w_)
                  {return instr$0(_a7t_,_a7v_,_a7w_)}
                 return caml_call2(A[24],_a7u_,_a7s_)}
               return caml_call1
                       (mi_seq$0,caml_call2(Utils_List[20],_a7r_,entries$1))},
            _a5P_=caml_call1(_Jw_[13],0),
            _a5Q_=[22,mtype_of_type(0,outer[2]),_a5P_],
            _a5R_=function(_a7p_,_a7q_){return instr$0(_a5Q_,_a7p_,_a7q_)};
           return caml_call2(A[24],_a5R_,_a5O_);
          case 16:
           var
            transaction=_a4B_[2],
            state=_a4B_[1],
            _a5S_=
             function(param)
              {function _a7l_(param)
                {return function(_a7n_,_a7o_)
                  {return instr$0(_abx_,_a7n_,_a7o_)}}
               var _a7m_=caml_call1(compile_expr$0,transaction);
               return caml_call2(A[24],_a7m_,_a7l_)},
            _a5T_=caml_call1(compile_expr$0,state);
           return caml_call2(A[24],_a5T_,_a5S_);
          case 17:
           var
            exprs=_a4B_[2],
            michelson=_a4B_[1],
            _a5U_=
             function(param)
              {var
                typesOut=michelson[4],
                typesIn=michelson[3],
                parsed=michelson[2],
                name=michelson[1],
                x=caml_call1(_Jv_[3],parsed),
                switch$0=0,
                _a7c_=x[1];
               if(typeof _a7c_ === "number")
                {if(2 === _a7c_)switch$0 = 1}
               else
                if(5 === _a7c_[0])switch$0 = 1;
               if(switch$0)
                {var
                  _a7e_=function(eta){return mtype_of_type(0,eta)},
                  typesIn$0=caml_call2(Utils_List[20],_a7e_,typesIn),
                  _a7f_=function(eta){return mtype_of_type(0,eta)},
                  typesOut$0=caml_call2(Utils_List[20],_a7f_,typesOut),
                  _a7g_=[7,[0,name,parsed,typesIn$0,typesOut$0]];
                 return function(_a7j_,_a7k_)
                  {return instr$0(_a7g_,_a7j_,_a7k_)}}
               var _a7d_=x[1];
               return function(_a7h_,_a7i_){return instr$0(_a7d_,_a7h_,_a7i_)}},
            _a5V_=caml_call2(Utils_List[22],compile_expr$0,exprs),
            _a5W_=caml_call2(A[16],Utils_Control[1],_a5V_);
           return caml_call2(A[24],_a5W_,_a5U_);
          case 18:
           var l$6=_a4B_[2],f$0=_a4B_[1],_a5X_=f$0[1];
           if(19 === _a5X_[0])
            {var
              match$1=_a5X_[1],
              body$0=match$1[3],
              id=match$1[1],
              _a50_=
               function(param)
                {function _a64_(tags)
                  {var switch$0=0;
                   if(tags)
                    {var _a65_=tags[1];
                     if(_a65_)
                      {var
                        ts=_a65_[2],
                        tag=[1,[1,id]],
                        _a66_=
                         function(param)
                          {function _a7a_(param){return drop_target([1,id])}
                           var _a7b_=caml_call1(compile_command,body$0);
                           return caml_call2(A[24],_a7b_,_a7a_)},
                        _a67_=[0,[0,tag,ts]],
                        _a68_=
                         function(_a6__,_a6$_){return set_tags(_a67_,_a6__,_a6$_)},
                        _a69_=caml_call2(A[24],_a68_,_a66_);
                       switch$0 = 1}}
                   if(! switch$0)var _a69_=errorf(_abA_);
                   return mi_map$0(_a69_)}
                 return caml_call2(A[24],get_tags,_a64_)},
              _a51_=caml_call1(compile_expr$0,l$6);
             return caml_call2(A[24],_a51_,_a50_)}
           var
            _a5Y_=
             function(param)
              {function _a6L_(param)
                {function _a6N_(tags)
                  {if(tags)
                    {var _a6O_=tags[1];
                     if(_a6O_)
                      {var
                        ts=_a6O_[2],
                        _a6P_=
                         function(param)
                          {function _a62_(param){return caml_call1(instrs,_aby_)}
                           var _a63_=mi_copy(1);
                           return caml_call2(A[24],_a63_,_a62_)},
                        _a6Q_=[0,[0,st_none(0),ts]],
                        _a6R_=
                         function(_a60_,_a61_){return set_tags(_a6Q_,_a60_,_a61_)},
                        go_fun=caml_call2(A[24],_a6R_,_a6P_),
                        _a6S_=0,
                        _a6T_=0,
                        _a6U_=
                         [0,
                          function(_a6Y_,_a6Z_){return instr$0(_a6T_,_a6Y_,_a6Z_)},
                          _a6S_],
                        _a6V_=
                         [0,
                          function(_a6W_,_a6X_){return instr$0(_abz_,_a6W_,_a6X_)},
                          _a6U_];
                       return caml_call1(mi_seq$0,[0,mi_map$0(go_fun),_a6V_])}}
                   return error$0(cst_map_compilation_error)}
                 return caml_call2(A[24],get_tags,_a6N_)}
               var _a6M_=caml_call1(compile_expr$0,l$6);
               return caml_call2(A[24],_a6M_,_a6L_)},
            _a5Z_=caml_call1(compile_expr$0,f$0);
           return caml_call2(A[24],_a5Z_,_a5Y_);
          case 19:
           var
            match$2=_a4B_[1],
            tResult=match$2[6],
            tParams=match$2[5],
            body$1=match$2[3],
            id$0=match$2[1],
            tParams$0=mtype_of_type(0,tParams[1]),
            tResult$0=mtype_of_type(0,tResult[1]),
            _a52_=
             function(param)
              {function _a6J_(param){return drop_target([1,id$0])}
               var _a6K_=caml_call1(compile_command,body$1);
               return caml_call2(A[24],_a6K_,_a6J_)},
            _a53_=tag_top([0,[1,[1,id$0]],0]),
            body$2=caml_call2(A[24],_a53_,_a52_),
            _a54_=[28,tParams$0,tResult$0,body$2],
            _a55_=0;
           return function(_a6H_,_a6I_)
            {return composite(_a55_,_a54_,_a6H_,_a6I_)};
          case 20:
           var id$1=_a4B_[1];
           return fetch_target(0 !== caml_call1(is_hot,outer[2])?1:0,[1,id$1]);
          case 21:
           var
            storage=_a4B_[4],
            balance=_a4B_[3],
            baker=_a4B_[2],
            match$3=_a4B_[1],
            derived=match$3[13],
            global_variables=match$3[10],
            flags=match$3[9],
            entry_points=match$3[6],
            match$4=derived[1],
            tstorage=match$4[5],
            tparameter_non_lazy=match$4[3],
            tparameter_lazy=match$4[2],
            _a56_=
             function(config)
              {var
                match=
                 caml_call8
                   (compile_contract$0,
                    config,
                    0,
                    entry_points,
                    tstorage,
                    tparameter_lazy,
                    tparameter_non_lazy,
                    flags,
                    global_variables)
                  [2],
                code=match[3],
                tstorage$0=match[2],
                tparameter=match[1];
               function _a6u_(param)
                {function _a6w_(param)
                  {function _a6y_(param)
                    {function _a6A_(param)
                      {return function(_a6F_,_a6G_)
                        {return instr$0(_abB_,_a6F_,_a6G_)}}
                     var
                      _a6B_=
                       [29,
                        tparameter,
                        tstorage$0,
                        caml_call1(erase_types_instr,code)];
                     function _a6C_(_a6D_,_a6E_)
                      {return instr$0(_a6B_,_a6D_,_a6E_)}
                     return caml_call2(A[24],_a6C_,_a6A_)}
                   var _a6z_=caml_call1(compile_expr$0,baker);
                   return caml_call2(A[24],_a6z_,_a6y_)}
                 var _a6x_=caml_call1(compile_expr$0,balance);
                 return caml_call2(A[24],_a6x_,_a6w_)}
               var _a6v_=caml_call1(compile_expr$0,storage);
               return caml_call2(A[24],_a6v_,_a6u_)};
           return caml_call2(A[24],get_config$1,_a56_);
          case 22:
           var
            address=_a4B_[3],
            arg_type=_a4B_[2],
            entry_point=_a4B_[1],
            _a57_=
             function(param)
              {var _a6r_=[1,[2,entry_point,mtype_of_type(0,arg_type)]];
               return function(_a6s_,_a6t_){return instr$0(_a6r_,_a6s_,_a6t_)}},
            _a58_=caml_call1(compile_expr$0,address);
           return caml_call2(A[24],_a58_,_a57_);
          case 23:
           var
            buffer=_a4B_[3],
            length=_a4B_[2],
            offset=_a4B_[1],
            _a59_=
             function(param)
              {function _a6l_(param)
                {function _a6n_(param)
                  {return function(_a6p_,_a6q_)
                    {return instr$0(_abC_,_a6p_,_a6q_)}}
                 var _a6o_=caml_call1(compile_expr$0,offset);
                 return caml_call2(A[24],_a6o_,_a6n_)}
               var _a6m_=caml_call1(compile_expr$0,length);
               return caml_call2(A[24],_a6m_,_a6l_)},
            _a5__=caml_call1(compile_expr$0,buffer);
           return caml_call2(A[24],_a5__,_a59_);
          case 24:
           var
            _a5$_=caml_call3(Printer[14],0,0,outer),
            _a6a_=caml_call1(Utils_String[13],_a5$_);
           return caml_call1(errorf(_abD_),_a6a_);
          case 25:
           var
            destination=_a4B_[3],
            amount$0=_a4B_[2],
            arg=_a4B_[1],
            _a6b_=
             function(param)
              {function _a6f_(param)
                {function _a6h_(param)
                  {return function(_a6j_,_a6k_)
                    {return instr$0(_abE_,_a6j_,_a6k_)}}
                 var _a6i_=caml_call1(compile_expr$0,arg);
                 return caml_call2(A[24],_a6i_,_a6h_)}
               var _a6g_=caml_call1(compile_expr$0,amount$0);
               return caml_call2(A[24],_a6g_,_a6f_)},
            _a6c_=caml_call1(compile_expr$0,destination);
           return caml_call2(A[24],_a6c_,_a6b_);
          case 26:return error$0(cst_ematch);
          default:
           var
            name$4=_a4B_[1],
            _a6d_=
             function(param)
              {function _a91_(id)
                {function _a95_(param)
                  {return function(_a9__,_a9$_)
                    {return instr$0(_abF_,_a9__,_a9$_)}}
                 var _a96_=[22,_zg_,id];
                 function _a97_(_a98_,_a99_)
                  {return instr$0(_a96_,_a98_,_a99_)}
                 return caml_call2(A[24],_a97_,_a95_)}
               function _a92_(_a93_,_a94_)
                {return get_lazy_id(name$4,_a93_,_a94_)}
               return caml_call2(A[24],_a92_,_a91_)},
            _a6e_=fetch_target(1,0);
           return caml_call2(A[24],_a6e_,_a6d_)}});
    caml_update_dummy
     (compile_container_access_list,
      function(container,projection,t,rev)
       {function _a4f_(param)
         {function _a4k_(param)
           {function _a4m_(param)
             {return rev?caml_call1(A[2],0):mi_rev_list(t)}
            var
             _a4n_=0,
             _a4o_=
              mi_iter$0
               (caml_call1
                 (mi_seq$0,
                  [0,
                   projection,
                   [0,
                    function(_a4p_,_a4q_){return instr$0(_abG_,_a4p_,_a4q_)},
                    _a4n_]]));
            return caml_call2(A[24],_a4o_,_a4m_)}
          var _a4l_=caml_call1(compile_expr$0,container);
          return caml_call2(A[24],_a4l_,_a4k_)}
        var _a4g_=[0,[3,mtype_of_type(0,t)]];
        function _a4h_(_a4i_,_a4j_){return instr$0(_a4g_,_a4i_,_a4j_)}
        return caml_call2(A[24],_a4h_,_a4f_)});
    caml_update_dummy
     (compile_match,
      function(no_drop,scrutinee,cases,body_else)
       {function body_tagged(arg_name,body)
         {var tag=[0,arg_name];
          function _a4c_(param)
           {function _a4e_(param)
             {return caml_equal(no_drop,_abH_)
                      ?caml_call1(A[2],0)
                      :drop_target(tag)}
            return caml_call2(A[24],body,_a4e_)}
          var _a4d_=tag_top([0,[1,tag],0]);
          return caml_call2(A[24],_a4d_,_a4c_)}
        var
         _a3W_=[0,body_else,0],
         _a3X_=0,
         drop_else=
          caml_call1
           (mi_seq$0,
            [0,function(_a4a_,_a4b_){return instr$0(_a3X_,_a4a_,_a4b_)},_a3W_]),
         switch$0=0;
        if(cases)
         {var _a3Y_=cases[1],_a3Z_=_a3Y_[1],switch$1=0;
          if(caml_string_notequal(_a3Z_,cst_Left$13))
           {var switch$2=0;
            if(caml_string_notequal(_a3Z_,cst_None$70))
             if(caml_string_notequal(_a3Z_,cst_Right$13))
              if(caml_string_notequal(_a3Z_,cst_Some$69))
               {switch$1 = 1;switch$2 = 1}
              else
               {var _a31_=cases[2],_a32_=_a3Y_[3],_a33_=_a3Y_[2];
                if(_a31_)
                 {var _a34_=_a31_[1];
                  if(caml_string_notequal(_a34_[1],cst_None$71) || _a31_[2])
                   {switch$1 = 1;switch$2 = 1}
                  else
                   var body2=_a34_[3],body1=_a32_,arg_name=_a33_}
                else
                 {var
                   _a35_=
                    mi_if_none$0(_abK_,body_else,body_tagged(_a33_,_a32_));
                  switch$2 = 1}}
             else
              if(cases[2])
               {switch$1 = 1;switch$2 = 1}
              else
               {var
                 body=_a3Y_[3],
                 arg_name$0=_a3Y_[2],
                 _a35_=
                  mi_if_left$0(_abL_,drop_else,body_tagged(arg_name$0,body));
                switch$2 = 1}
            else
             {var _a36_=cases[2],_a37_=_a3Y_[3];
              if(_a36_)
               {var _a38_=_a36_[1];
                if(caml_string_notequal(_a38_[1],cst_Some$70) || _a36_[2])
                 {switch$1 = 1;switch$2 = 1}
                else
                 var body2=_a37_,body1=_a38_[3],arg_name=_a38_[2]}
              else
               {var _a35_=mi_if_none$0(_abM_,_a37_,drop_else);switch$2 = 1}}
            if(! switch$2)
             {var
               tree$1=
                mi_if_none$0(_abJ_,body2,body_tagged(arg_name,body1));
              switch$0 = 2;
              switch$1 = 1}}
          else
           if(cases[2])
            switch$1 = 1;
           else
            var
             body$0=_a3Y_[3],
             arg_name$1=_a3Y_[2],
             _a35_=
              mi_if_left$0(_abN_,body_tagged(arg_name$1,body$0),drop_else);
          if(! switch$1){var tree$0=_a35_;switch$0 = 1}}
        var switch$3=0;
        switch(switch$0)
         {case 0:
           var
            leaf=
             function(param)
              {var source=param[1];
               function _a3$_(param)
                {var constructor=param[1];
                 return caml_string_equal(constructor,source)}
               var match=caml_call2(Utils_List[38],_a3$_,cases);
               if(match)
                {var match$0=match[1],body=match$0[3],arg_name=match$0[2];
                 return body_tagged(arg_name,body)}
               return drop_else},
            _a30_=
             function(_a39_,_a3__){return mi_if_left$0(_abI_,_a39_,_a3__)},
            compile_match=caml_call2(Utils_Binary_tree[6],leaf,_a30_),
            match=getRepr(scrutinee[2]),
            switch$4=0;
           if(typeof match !== "number" && 7 === match[0])
            {var layout$1=match[1],layout=get(layout$1);switch$4 = 1}
           if(! switch$4)var layout=0;
           if(layout)
            var layout$0=layout[1],tree=caml_call1(compile_match,layout$0);
           else
            var tree=error$0(cst_Not_a_variant_type);
           var tree$0=tree;
           break;
          case 1:break;
          default:switch$3 = 1}
        if(! switch$3)var tree$1=tree$0;
        return caml_call1
                (mi_seq$0,
                 [0,caml_call1(compile_expr$0,scrutinee),[0,tree$1,0]])});
    caml_update_dummy
     (compile_match_cons,
      function(expr,id,ok_match,r)
       {function _a3M_(param)
         {function _a3P_(param)
           {function _a3T_(param)
             {function _a3U_(param){return drop_target([2,id,0])}
              var _a3V_=drop_target([2,id,1]);
              return caml_call2(A[24],_a3V_,_a3U_)}
            return caml_call2(A[24],ok_match,_a3T_)}
          var
           _a3Q_=tag_top([0,[1,[2,id,1]],[0,[1,[2,id,0]],0]]),
           l=caml_call2(A[24],_a3Q_,_a3P_),
           _a3O_=[21,l,r];
          return function(_a3R_,_a3S_)
           {return composite(protect_top,_a3O_,_a3R_,_a3S_)}}
        var _a3N_=caml_call1(compile_expr$0,expr);
        return caml_call2(A[24],_a3N_,_a3M_)});
    caml_update_dummy
     (of_Some,
      function(line_no,context)
       {var comment=comment$0(context);
        return mi_if_none$0
                (0,mi_failwith$0(0,1,line_no,context,0,cst_OfSome),comment)});
    caml_update_dummy
     (get_target_or_cst,
      function(e,tag)
       {var
         put_tag=tag_top([0,[1,tag],0]),
         _a3s_=e[1],
         match=mtype_of_type(0,e[2]);
        if(5 === _a3s_[0])
         {var _a3v_=_a3s_[1],switch$0=0;
          if(typeof _a3v_ === "number" || ! (0 === _a3v_[0]))
           switch$0 = 1;
          else
           {var _a3w_=_a3v_[1],switch$1=0;
            if(typeof _a3w_ !== "number" && 1 === _a3w_[0])
             {var _a3x_=match[1];
              if(0 === _a3x_[0])
               {var _a3y_=_a3x_[1];
                if(typeof _a3y_ === "number")
                 {var _a3z_=_a3w_[1];
                  if(2 === _a3y_)
                   {var
                     _a3A_=[0,put_tag,0],
                     _a3B_=[22,_zg_,caml_call1(_Jw_[1],_a3z_)],
                     _a3C_=
                      caml_call1
                       (mi_seq$0,
                        [0,
                         function(_a3K_,_a3L_){return instr$0(_a3B_,_a3K_,_a3L_)},
                         _a3A_]);
                    return caml_call1(A[2],_a3C_)}
                  if(3 === _a3y_)
                   {var
                     _a3D_=[0,put_tag,0],
                     _a3E_=[22,_zh_,caml_call1(_Jw_[1],_a3z_)],
                     _a3F_=
                      caml_call1
                       (mi_seq$0,
                        [0,
                         function(_a3I_,_a3J_){return instr$0(_a3E_,_a3I_,_a3J_)},
                         _a3D_]);
                    return caml_call1(A[2],_a3F_)}
                  switch$1 = 1}
                else
                 switch$1 = 1}
              else
               switch$1 = 1}}}
        function _a3t_(param)
         {function _a3G_(param)
           {var _a3H_=fetch_target(1,tag);return caml_call1(A[2],_a3H_)}
          return caml_call2(A[24],put_tag,_a3G_)}
        var _a3u_=caml_call1(compile_expr$0,e);
        return caml_call2(A[24],_a3u_,_a3t_)});
    caml_update_dummy
     (compile_range,
      function(line_no,a,b,step,name,body,has_operations)
       {var i=[0,name];
        function _a2q_(param)
         {function _a2s_(get_b)
           {function _a2u_(get_step)
             {function cond(cmp)
               {var
                 _a3o_=[0,cmp,0],
                 _a3p_=
                  [0,
                   get_b,
                   [0,
                    function(_a3q_,_a3r_){return instr$0(_abO_,_a3q_,_a3r_)},
                    _a3o_]];
                return caml_call1(mi_seq$0,[0,fetch_target(1,i),_a3p_])}
              function loop(cmp)
               {function _a3c_(param)
                 {function _a3e_(param)
                   {function _a3f_(param)
                     {function _a3h_(param)
                       {function _a3i_(param)
                         {function _a3m_(param){return cond(cmp)}
                          var _a3n_=tag_top([0,[1,i],0]);
                          return caml_call2(A[24],_a3n_,_a3m_)}
                        function _a3j_(_a3k_,_a3l_)
                         {return instr$0(_abP_,_a3k_,_a3l_)}
                        return caml_call2(A[24],_a3j_,_a3i_)}
                      return caml_call2(A[24],get_step,_a3h_)}
                    var _a3g_=comment$0(cst_loop_step);
                    return caml_call2(A[24],_a3g_,_a3f_)}
                  return mi_loop$0(caml_call2(A[24],body,_a3e_))}
                var _a3d_=cond(cmp);
                return caml_call2(A[24],_a3d_,_a3c_)}
              function _a2w_(param)
               {function _a2y_(param)
                 {function _a2A_(param)
                   {function _a28_(param)
                     {function _a2__(param)
                       {function _a3a_(param){return caml_call1(A[2],0)}
                        var
                         _a3b_=
                          drop_target([0,caml_call2(Stdlib[28],name,cst_step)]);
                        return caml_call2(A[24],_a3b_,_a3a_)}
                      var
                       _a2$_=
                        drop_target([0,caml_call2(Stdlib[28],name,cst_b)]);
                      return caml_call2(A[24],_a2$_,_a2__)}
                    var _a29_=drop_target(i);
                    return caml_call2(A[24],_a29_,_a28_)}
                  var
                   err=mi_failwith$0(0,1,line_no,cst_range,0,cst_ZeroRangeStep),
                   match=mtype_of_type(0,step[2]),
                   _a2B_=match[1];
                  if(0 === _a2B_[0])
                   {var _a2C_=_a2B_[1];
                    if(typeof _a2C_ === "number")
                     {var switch$0=0;
                      if(2 === _a2C_)
                       {var
                         _a2D_=
                          function(param)
                           {function _a2G_(param)
                             {function _a2L_(param)
                               {function _a2P_(param)
                                 {return mi_if$0
                                          (0,
                                           err,
                                           loop
                                            (function(_a2T_,_a2U_){return instr$0(_abQ_,_a2T_,_a2U_)}))}
                                function _a2Q_(_a2R_,_a2S_)
                                 {return instr$0(_abR_,_a2R_,_a2S_)}
                                return caml_call2(A[24],_a2Q_,_a2P_)}
                              function _a2M_(_a2N_,_a2O_)
                               {return instr$0(_abS_,_a2N_,_a2O_)}
                              return caml_call2(A[24],_a2M_,_a2L_)}
                            var _a2H_=[22,_zg_,caml_call1(_Jw_[2],0)];
                            function _a2I_(_a2J_,_a2K_)
                             {return instr$0(_a2H_,_a2J_,_a2K_)}
                            return caml_call2(A[24],_a2I_,_a2G_)},
                         _a2E_=caml_call2(A[24],get_step,_a2D_);
                        switch$0 = 1}
                      else
                       if(3 === _a2C_)
                        {var
                          _a2F_=
                           function(param)
                            {function _a2V_(param)
                              {var
                                _a2Z_=0,
                                _a20_=
                                 [0,
                                  mi_if$0
                                   (0,
                                    loop
                                     (function(_a26_,_a27_){return instr$0(_abT_,_a26_,_a27_)}),
                                    err),
                                  _a2Z_],
                                _a21_=
                                 caml_call1
                                  (mi_seq$0,
                                   [0,
                                    get_step,
                                    [0,
                                     function(_a24_,_a25_){return instr$0(_abU_,_a24_,_a25_)},
                                     _a20_]]);
                               return mi_if$0
                                       (0,
                                        loop
                                         (function(_a22_,_a23_){return instr$0(_abV_,_a22_,_a23_)}),
                                        _a21_)}
                             function _a2W_(_a2X_,_a2Y_)
                              {return instr$0(_abW_,_a2X_,_a2Y_)}
                             return caml_call2(A[24],_a2W_,_a2V_)},
                          _a2E_=caml_call2(A[24],get_step,_a2F_);
                         switch$0 = 1}
                      if(switch$0)return caml_call2(A[24],_a2E_,_a2A_)}}
                  throw [0,Assert_failure,_abX_]}
                var _a2z_=tag_top([0,[1,i],0]);
                return caml_call2(A[24],_a2z_,_a2y_)}
              var _a2x_=caml_call1(compile_expr$0,a);
              return caml_call2(A[24],_a2x_,_a2w_)}
            var
             _a2v_=
              caml_call2
               (get_target_or_cst,
                step,
                [0,caml_call2(Stdlib[28],name,cst_step$0)]);
            return caml_call2(A[24],_a2v_,_a2u_)}
          var
           _a2t_=
            caml_call2
             (get_target_or_cst,b,[0,caml_call2(Stdlib[28],name,cst_b$0)]);
          return caml_call2(A[24],_a2t_,_a2s_)}
        var _a2r_=ensure_ops_if(has_operations);
        return caml_call2(A[24],_a2r_,_a2q_)});
    caml_update_dummy
     (unzip_lstep,
      function(line_no,context,param$1)
       {if(0 === param$1[0])
         {var
           tvalue=param$1[2],
           key=param$1[1],
           _a1q_=
            function(zip_container)
             {function _a2i_(zip_option)
               {function _a2o_(param){return zip_container}
                var _a2p_=caml_call2(A[24],zip_option,_a2o_);
                return caml_call1(A[2],_a2p_)}
              function args(_a2m_,_a2n_){return instr$0(_abY_,_a2m_,_a2n_)}
              function _a2e_(param)
               {function _a2j_(_a2k_,_a2l_){return instr$0(_aab_,_a2k_,_a2l_)}
                return caml_call1(A[2],_a2j_)}
              var
               _a2f_=caml_call1(A[2],0),
               _a2g_=
                mi_if_none$0
                 (0,
                  mi_failwith$0(0,1,line_no,context,[0,args],cst_unzip_option),
                  _a2f_),
               _a2h_=caml_call2(A[24],_a2g_,_a2e_);
              return caml_call2(A[24],_a2h_,_a2i_)},
           key$0=caml_call1(compile_expr$0,key),
           _a1i_=
            function(param)
             {function _a19_(param)
               {return function(_a2c_,_a2d_){return instr$0(_$2_,_a2c_,_a2d_)}}
              function _a1__(_a2a_,_a2b_){return instr$0(_$3_,_a2a_,_a2b_)}
              var _a1$_=caml_call2(A[24],_a1__,_a19_);
              return caml_call1(A[2],_a1$_)};
          if(1 === caml_call1(is_hot,tvalue))
           var
            _a1j_=
             function(param)
              {function _a1x_(param)
                {function _a1y_(param)
                  {function _a1A_(param)
                    {function _a1E_(param)
                      {function _a1I_(param){return caml_call1(A[2],0)}
                       function _a1J_(_a1K_,_a1L_)
                        {return instr$0(_$4_,_a1K_,_a1L_)}
                       return caml_call2(A[24],_a1J_,_a1I_)}
                     function _a1F_(_a1G_,_a1H_)
                      {return instr$0(_$5_,_a1G_,_a1H_)}
                     return caml_call2(A[24],_a1F_,_a1E_)}
                   function _a1B_(_a1C_,_a1D_)
                    {return instr$0(_$6_,_a1C_,_a1D_)}
                   return caml_call2(A[24],_a1B_,_a1A_)}
                 var _a1z_=tag_top([0,st_none(0),0]);
                 return caml_call2(A[24],_a1z_,_a1y_)}
               return caml_call2(A[24],key$0,_a1x_)},
            _a1k_=function(_a1v_,_a1w_){return instr$0(_$7_,_a1v_,_a1w_)},
            _a1l_=caml_call2(A[24],_a1k_,_a1j_);
          else
           var
            _a1n_=
             function(param)
              {function _a1O_(param)
                {function _a1P_(param)
                  {function _a1T_(param)
                    {function _a1X_(param)
                      {function _a11_(param)
                        {function _a15_(param){return caml_call1(A[2],0)}
                         function _a16_(_a17_,_a18_)
                          {return instr$0(_$8_,_a17_,_a18_)}
                         return caml_call2(A[24],_a16_,_a15_)}
                       function _a12_(_a13_,_a14_)
                        {return instr$0(_$9_,_a13_,_a14_)}
                       return caml_call2(A[24],_a12_,_a11_)}
                     function _a1Y_(_a1Z_,_a10_)
                      {return instr$0(_$__,_a1Z_,_a10_)}
                     return caml_call2(A[24],_a1Y_,_a1X_)}
                   function _a1U_(_a1V_,_a1W_)
                    {return instr$0(_$$_,_a1V_,_a1W_)}
                   return caml_call2(A[24],_a1U_,_a1T_)}
                 function _a1Q_(_a1R_,_a1S_)
                  {return instr$0(_aaa_,_a1R_,_a1S_)}
                 return caml_call2(A[24],_a1Q_,_a1P_)}
               return caml_call2(A[24],key$0,_a1O_)},
            _a1o_=[0,[2,mtype_of_type(0,tvalue)]],
            _a1p_=function(_a1M_,_a1N_){return instr$0(_a1o_,_a1M_,_a1N_)},
            _a1l_=caml_call2(A[24],_a1p_,_a1n_);
          var _a1m_=caml_call2(A[24],_a1l_,_a1i_);
          return caml_call2(A[24],_a1m_,_a1q_)}
        var t$0=param$1[2],name=param$1[1];
        function _a1r_(zip_attr){return caml_call1(A[2],zip_attr)}
        function _a1e_(param)
         {var _a1u_=caml_call1(A[2],0);return caml_call1(A[2],_a1u_)}
        var
         _a1f_=error$0(cst_unzip_attr),
         err=caml_call2(A[24],_a1f_,_a1e_),
         match=op_of_attr(name,t$0);
        if(match)
         {var op=match[1],acc=0,param=op;
          for(;;)
           {if(param)
             {if(param[1])
               {var
                 param$0=param[2],
                 acc$0=acc + 2 | 0,
                 acc=acc$0,
                 param=param$0;
                continue}
              var match$0=param[2]?0:[0,acc + 1 | 0]}
            else
             var match$0=[0,acc];
            if(match$0)
             var
              n=match$0[1],
              t=mtype_of_type(0,t$0),
              comb=[0,[0,n,is_duppable(t)]];
            else
             var comb=0;
            var
             _a1g_=
              function(param)
               {var _a1t_=mi_zip(op,comb);return caml_call1(A[2],_a1t_)},
             _a1h_=mi_unzip(op,comb),
             _a1s_=caml_call2(A[24],_a1h_,_a1g_);
            break}}
        else
         var _a1s_=err;
        return caml_call2(A[24],_a1s_,_a1r_)});
    caml_update_dummy
     (unzip_path,
      function(line_no,context,param)
       {if(param)
         {var
           rest=param[2],
           s=param[1],
           _a09_=
            function(zip_lstep)
             {function _a1a_(zip_rest)
               {function _a1c_(param){return zip_lstep}
                var _a1d_=caml_call2(A[24],zip_rest,_a1c_);
                return caml_call1(A[2],_a1d_)}
              var _a1b_=caml_call3(unzip_path,line_no,context,rest);
              return caml_call2(A[24],_a1b_,_a1a_)},
           _a0__=caml_call3(unzip_lstep,line_no,context,s);
          return caml_call2(A[24],_a0__,_a09_)}
        var _a0$_=caml_call1(A[2],0);
        return caml_call1(A[2],_a0$_)});
    caml_update_dummy
     (unzip_lexpr,
      function(line_no,context,copy,param)
       {var _a02_=param[1];
        if(typeof _a02_ === "number")
         if(0 === _a02_)
          var lsteps=param[2],match=[0,tgt_operations,lsteps];
         else
          var lsteps$0=param[2],match=[0,tgt_storage,lsteps$0];
        else
         if(0 === _a02_[0])
          var lsteps$1=param[2],name=_a02_[1],match=[0,[0,name],lsteps$1];
         else
          var lsteps$2=param[2],name$0=_a02_[1],match=[0,[0,name$0],lsteps$2];
        var lsteps$3=match[2],target=match[1];
        function _a03_(param)
         {var zip_target=param[2],found=param[1];
          if(! lsteps$3 && ! found)return caml_call1(A[2],[0,0,zip_target]);
          if(found)
           {var
             _a05_=
              function(zip_path)
               {function _a07_(param){return zip_target}
                var _a08_=[0,1,caml_call2(A[24],zip_path,_a07_)];
                return caml_call1(A[2],_a08_)},
             _a06_=caml_call3(unzip_path,line_no,context,lsteps$3);
            return caml_call2(A[24],_a06_,_a05_)}
          throw [0,
                 SmartExcept,
                 [0,
                  _ab0_,
                  [0,
                   [0,936573133,context],
                   [0,14832,[0,_abZ_,[0,[0,848053268,line_no],0]]]]]]}
        var _a04_=unzip_target(copy,target);
        return caml_call2(A[24],_a04_,_a03_)});
    caml_update_dummy
     (strict_unzip_lexpr,
      function(line_no,context,copy,lexpr)
       {function _a00_(param)
         {var zip_target=param[2],found=param[1];
          if(1 - found)
           throw [0,
                  SmartExcept,
                  [0,
                   _ab2_,
                   [0,
                    [0,936573133,context],
                    [0,14832,[0,_ab1_,[0,[0,848053268,line_no],0]]]]]];
          return caml_call1(A[2],zip_target)}
        var _a01_=caml_call4(unzip_lexpr,line_no,context,copy,lexpr);
        return caml_call2(A[24],_a01_,_a00_)});
    caml_update_dummy
     (compile_delete,
      function(line_no,context,lexpr)
       {var match=last_step_is_item(lexpr);
        if(match)
         {var
           match$0=match[1],
           tvalue=match$0[3],
           key=match$0[2],
           lexpr$0=match$0[1],
           copy=self_referential_lexpr(lexpr),
           _a0M_=
            function(zip_lexpr)
             {function _a0O_(param)
               {function _a0U_(param)
                 {function _a0W_(param){return zip_lexpr}
                  function _a0X_(_a0Y_,_a0Z_)
                   {return instr$0(_ab3_,_a0Y_,_a0Z_)}
                  return caml_call2(A[24],_a0X_,_a0W_)}
                var _a0V_=caml_call1(compile_expr$0,key);
                return caml_call2(A[24],_a0V_,_a0U_)}
              var
               _a0P_=_Jw_[11],
               _a0Q_=[22,caml_call1(_zz_,mtype_of_type(0,tvalue)),_a0P_];
              function _a0R_(_a0S_,_a0T_){return instr$0(_a0Q_,_a0S_,_a0T_)}
              return caml_call2(A[24],_a0R_,_a0O_)},
           _a0N_=caml_call4(strict_unzip_lexpr,line_no,context,copy,lexpr$0);
          return caml_call2(A[24],_a0N_,_a0M_)}
        throw [0,Assert_failure,_ab4_]});
    caml_update_dummy
     (compile_assign,
      function(line_no,context,copy,lexpr,rhs)
       {var match=last_step_is_item(lexpr);
        if(match)
         {var
           match$0=match[1],
           key=match$0[2],
           lexpr$0=match$0[1],
           _a0p_=
            function(zip_lexpr)
             {function _a0B_(param)
               {function _a0C_(param)
                 {function _a0G_(param)
                   {function _a0I_(param){return zip_lexpr}
                    function _a0J_(_a0K_,_a0L_)
                     {return instr$0(_ab5_,_a0K_,_a0L_)}
                    return caml_call2(A[24],_a0J_,_a0I_)}
                  var _a0H_=caml_call1(compile_expr$0,key);
                  return caml_call2(A[24],_a0H_,_a0G_)}
                function _a0D_(_a0E_,_a0F_){return instr$0(_ab6_,_a0E_,_a0F_)}
                return caml_call2(A[24],_a0D_,_a0C_)}
              return caml_call2(A[24],rhs,_a0B_)},
           _a0q_=caml_call4(strict_unzip_lexpr,line_no,context,copy,lexpr$0);
          return caml_call2(A[24],_a0q_,_a0p_)}
        function _a0r_(param)
         {var zip_lexpr=param[2],found=param[1];
          function _a0t_(param)
           {function _a0z_(param)
             {function _a0A_(param){return caml_call1(A[2],0)}
              return caml_call2(A[24],zip_lexpr,_a0A_)}
            return caml_call2(A[24],rhs,_a0z_)}
          var _a0u_=0;
          function _a0v_(_a0x_,_a0y_){return instr$0(_a0u_,_a0x_,_a0y_)}
          var _a0w_=caml_call2(A[11],found,_a0v_);
          return caml_call2(A[24],_a0w_,_a0t_)}
        var _a0s_=caml_call4(unzip_lexpr,line_no,context,copy,lexpr);
        return caml_call2(A[24],_a0s_,_a0r_)});
    caml_update_dummy
     (compile_update,
      function(line_no,context,copy,lexpr,rhs)
       {function _a0m_(zip_lexpr)
         {function _a0o_(param){return zip_lexpr}
          return caml_call2(A[24],rhs,_a0o_)}
        var _a0n_=caml_call4(strict_unzip_lexpr,line_no,context,copy,lexpr);
        return caml_call2(A[24],_a0n_,_a0m_)});
    caml_update_dummy
     (compile_command,
      function(x)
       {var _aV3_=x[1];
        switch(_aV3_[0])
         {case 0:
           var
            inner=_aV3_[1],
            _aV4_=0,
            _aV5_=
             [0,
              function(_a0k_,_a0l_){return instr$0(_ab7_,_a0k_,_a0l_)},
              _aV4_];
           return caml_call1
                   (mi_seq$0,[0,caml_call1(compile_expr$0,inner),_aV5_]);
          case 1:
           var
            message=_aV3_[1],
            _aV6_=[0,caml_call1(compile_expr$0,message)],
            _aV7_=caml_call3(Printer[18],0,0,x);
           return mi_failwith$0(0,0,x[3],_aV7_,_aV6_,cst_failwith$0);
          case 2:
           var message$0=_aV3_[2],e=_aV3_[1];
           if(message$0)
            var
             message$1=message$0[1],
             message$2=caml_call1(compile_expr$0,message$1),
             default$0=0;
           else
            var
             _aV$_=caml_call1(Printer[23],e),
             _aWa_=[22,_zj_,caml_call1(_Jw_[4],_aV$_)],
             _aWb_=1,
             message$2=
              function(_a0i_,_a0j_){return instr$0(_aWa_,_a0i_,_a0j_)},
             default$0=_aWb_;
           var
            _aV8_=caml_call3(Printer[14],0,0,e),
            error=
             mi_failwith$0
              (_ab8_,default$0,x[3],_aV8_,[0,message$2],cst_verify$0),
            _aV9_=
             function(param)
              {function _a0e_(param)
                {function _a0g_(param){return push_unit}
                 var _a0h_=mi_if$0(0,caml_call1(A[2],0),error);
                 return caml_call2(A[24],_a0h_,_a0g_)}
               var _a0f_=caml_call1(compile_expr$0,e);
               return caml_call2(A[24],_a0f_,_a0e_)},
            _aV__=comment$0(caml_call3(Printer[18],0,0,x));
           return caml_call2(A[24],_aV__,_aV9_);
          case 3:
           var
            e$0=_aV3_[3],
            t=_aV3_[2],
            c=_aV3_[1],
            _aWc_=
             function(param)
              {function _a0b_(param)
                {var _a0d_=caml_call1(compile_command,e$0);
                 return mi_if$0(_ab9_,caml_call1(compile_command,t),_a0d_)}
               var _a0c_=caml_call1(compile_expr$0,c);
               return caml_call2(A[24],_a0c_,_a0b_)},
            _aWd_=caml_call3(Printer[14],0,0,c),
            _aWe_=caml_call1(commentf(_ab__),_aWd_);
           return caml_call2(A[24],_aWe_,_aWc_);
          case 4:
           var
            cases=_aV3_[2],
            scrutinee=_aV3_[1],
            _aWf_=
             function(param)
              {var body=param[3],name=param[2],constructor=param[1];
               return [0,constructor,name,caml_call1(compile_command,body)]},
            cases$0=caml_call2(Utils_List[20],_aWf_,cases),
            _aWg_=
             function(param)
              {return caml_call4(compile_match,0,scrutinee,cases$0,push_unit)},
            _aWh_=caml_call3(Printer[14],0,0,scrutinee),
            _aWi_=caml_call1(commentf(_ab$_),_aWh_);
           return caml_call2(A[24],_aWi_,_aWg_);
          case 5:
           var
            c$0=_aV3_[3],
            p=_aV3_[2],
            scrutinee$0=_aV3_[1],
            _aWj_=
             function(param)
              {function _aZ7_(param)
                {function _aZ9_(drop_vars)
                  {function _aZ$_(param){return drop_vars}
                   var _a0a_=caml_call1(compile_command,c$0);
                   return caml_call2(A[24],_a0a_,_aZ$_)}
                 var _aZ__=explode_pattern(0,scrutinee$0[2],p);
                 return caml_call2(A[24],_aZ__,_aZ9_)}
               var _aZ8_=caml_call1(compile_expr$0,scrutinee$0);
               return caml_call2(A[24],_aZ8_,_aZ7_)},
            s=caml_call3(Printer[14],0,0,scrutinee$0);
           switch(p[0])
            {case 0:throw [0,Assert_failure,_aag_];
             case 1:
              var
               ns=p[1],
               f=caml_call1(Stdlib_format[127],_aah_),
               _aWk_=caml_call5(f,pps,ns,s,ppS,ns);
              break;
             default:
              var
               bs=p[2],
               _aV1_=function(param){var var$0=param[1];return var$0},
               vs=caml_call2(Utils_List[20],_aV1_,bs),
               _aV2_=function(param){var field=param[2];return field},
               fs=caml_call2(Utils_List[20],_aV2_,bs),
               f$0=caml_call1(Stdlib_format[127],_aai_),
               _aWk_=caml_call5(f$0,pps,vs,s,ppS,fs)}
           var _aWl_=comment$0(_aWk_);
           return caml_call2(A[24],_aWl_,_aWj_);
          case 6:
           var _aWm_=_aV3_[1],_aWn_=_aV3_[2];
           if(2 === _aWn_[0])
            {var
              body=_aV3_[3],
              p$1=_aWn_[2],
              name=_aWn_[1],
              _aWq_=
               function(param)
                {var match=lexpr_of_expr(_aWm_);
                 if(match)
                  {var lexpr=match[1],match$0=getRepr(_aWm_[2]);
                   if(typeof match$0 !== "number" && 6 === match$0[0])
                    {var
                      row=match$0[2],
                      _aZJ_=
                       function(param){var var$0=param[1];return [0,var$0,var$0]},
                      bs=caml_call2(Utils_List[20],_aZJ_,row),
                      _aZK_=
                       function(param)
                        {var
                          line_no=x[3],
                          context=caml_call3(Printer[18],0,0,x),
                          copy=caml_call1(occurs_lroot_command(lexpr[1]),body);
                         function _aZM_(zip_lexpr)
                          {function _aZS_(close_record)
                            {function _aZY_(param)
                              {function _aZ0_(param)
                                {function _aZ5_(param)
                                  {function _aZ6_(param){return push_unit}
                                   return caml_call2(A[24],zip_lexpr,_aZ6_)}
                                 return caml_call2(A[24],close_record,_aZ5_)}
                               var _aZ1_=0;
                               function _aZ2_(_aZ3_,_aZ4_)
                                {return instr$0(_aZ1_,_aZ3_,_aZ4_)}
                               return caml_call2(A[24],_aZ2_,_aZ0_)}
                             var _aZZ_=caml_call1(compile_command,body);
                             return caml_call2(A[24],_aZZ_,_aZY_)}
                           var match=getRepr(_aWm_[2]);
                           if(typeof match !== "number" && 6 === match[0])
                            {var
                              row=match[2],
                              layout=match[1],
                              _aZO_=
                               function(param)
                                {function l(param)
                                  {var
                                    field=param[1],
                                    var_name=caml_call3(Stdlib_printf[4],_$W_,name,field);
                                   return fetch_target(0,[0,var_name])}
                                 function p(x1,x2)
                                  {var _aZV_=0;
                                   return caml_call1
                                           (mi_seq$0,
                                            [0,
                                             x2,
                                             [0,
                                              x1,
                                              [0,
                                               function(_aZW_,_aZX_){return instr$0(_$X_,_aZW_,_aZX_)},
                                               _aZV_]]])}
                                 function _aZT_(param)
                                  {var field=param[2];return [0,field,field]}
                                 var
                                  entries=caml_call2(Utils_List[20],_aZT_,bs),
                                  _aZU_=get(layout),
                                  layout$0=caml_call2(Utils_Option[50],[0,msg$0],_aZU_),
                                  r=compile_record(layout$0,entries),
                                  close=caml_call3(Utils_Binary_tree[6],l,p,r);
                                 return caml_call1(A[2],close)},
                              _aZP_=get_layout(row,layout),
                              _aZQ_=caml_call1(explode_record([0,name],bs),_aZP_),
                              _aZR_=caml_call2(A[24],_aZQ_,_aZO_);
                             return caml_call2(A[24],_aZR_,_aZS_)}
                           throw [0,Assert_failure,_$V_]}
                         var
                          _aZN_=
                           caml_call4(strict_unzip_lexpr,line_no,context,copy,lexpr);
                         return caml_call2(A[24],_aZN_,_aZM_)},
                      _aZL_=ensure_ops_if(0 !== has_operations(body)?1:0);
                     return caml_call2(A[24],_aZL_,_aZK_)}
                   throw [0,Assert_failure,_aca_]}
                 return error$0(cst_invalid_lexpr_CModifyProdu$0)},
              _aWr_=comment$0(print_modify_product(_aWm_,[2,name,p$1]));
             return caml_call2(A[24],_aWr_,_aWq_)}
           var
            c$1=_aV3_[3],
            p$0=_aV3_[2],
            _aWo_=
             function(param)
              {var match=lexpr_of_expr(_aWm_);
               if(match)
                {var
                  lexpr=match[1],
                  _aZz_=
                   function(param)
                    {var
                      line_no=x[3],
                      context=caml_call3(Printer[18],0,0,x),
                      copy=caml_call1(occurs_lroot_command(lexpr[1]),c$1);
                     function _aZB_(zip_lexpr)
                      {function _aZD_(drop_vars)
                        {function _aZF_(param)
                          {function _aZH_(param)
                            {function _aZI_(param){return push_unit}
                             return caml_call2(A[24],zip_lexpr,_aZI_)}
                           return caml_call2(A[24],drop_vars,_aZH_)}
                         var _aZG_=caml_call1(compile_command,c$1);
                         return caml_call2(A[24],_aZG_,_aZF_)}
                       var _aZE_=explode_pattern(0,_aWm_[2],p$0);
                       return caml_call2(A[24],_aZE_,_aZD_)}
                     var
                      _aZC_=
                       caml_call4(strict_unzip_lexpr,line_no,context,copy,lexpr);
                     return caml_call2(A[24],_aZC_,_aZB_)},
                  _aZA_=ensure_ops_if(0 !== has_operations(c$1)?1:0);
                 return caml_call2(A[24],_aZA_,_aZz_)}
               return error$0(cst_invalid_lexpr_CModifyProdu)},
            _aWp_=comment$0(print_modify_product(_aWm_,p$0));
           return caml_call2(A[24],_aWp_,_aWo_);
          case 7:
           var
            ko_match=_aV3_[4],
            ok_match=_aV3_[3],
            id=_aV3_[2],
            expr=_aV3_[1],
            _aWs_=
             function(param)
              {var _aZy_=caml_call1(compile_command,ko_match);
               return caml_call4
                       (compile_match_cons,
                        expr,
                        id,
                        caml_call1(compile_command,ok_match),
                        _aZy_)},
            _aWt_=caml_call3(Printer[14],0,0,expr),
            _aWu_=caml_call2(commentf(_acb_),_aWt_,id);
           return caml_call2(A[24],_aWu_,_aWs_);
          case 8:
           var
            e$1=_aV3_[2],
            _aWv_=
             function(param)
              {function _aZr_(param)
                {function _aZt_(param){return push_unit}
                 var _aZu_=0;
                 function _aZv_(_aZw_,_aZx_)
                  {return instr$0(_aZu_,_aZw_,_aZx_)}
                 return caml_call2(A[24],_aZv_,_aZt_)}
               var _aZs_=caml_call1(compile_expr$0,e$1);
               return caml_call2(A[24],_aZs_,_aZr_)},
            _aWw_=comment$0(caml_call3(Printer[18],0,0,x));
           return caml_call2(A[24],_aWw_,_aWv_);
          case 9:
           var
            e$2=_aV3_[2],
            lhs=_aV3_[1],
            _aWx_=
             function(param)
              {function _aZi_(param){return push_unit}
               var match=lexpr_of_expr(lhs);
               if(match)
                var
                 lexpr_lhs=match[1],
                 _aZj_=
                  function(param)
                   {var
                     line_no=x[3],
                     context=caml_call3(Printer[18],0,0,x),
                     _aZn_=e$2[1];
                    if(7 === _aZn_[0])
                     {var _aZp_=_aZn_[1],switch$0=0;
                      if(typeof _aZp_ === "number" || 1 === _aZp_[0])
                       switch$0 = 1;
                      else
                       {var e2=_aZn_[3],e1=_aZn_[2],op=_aZp_[1];
                        if(caml_call2(_yy_[1],lhs,e1))
                         {var
                           _aZq_=caml_call1(occurs_lroot_expr(lexpr_lhs[1]),e2),
                           copy$0=_aZq_ || self_referential_lexpr(lexpr_lhs),
                           e2$0=caml_call1(compile_expr$0,e2),
                           e=caml_call1(compile_binop(line_no,context,0,e2$0,e2[2]),op);
                          return caml_call5
                                  (compile_update,line_no,context,copy$0,lexpr_lhs,e)}}}
                    var
                     _aZo_=caml_call1(occurs_lroot_expr(lexpr_lhs[1]),e$2),
                     copy=_aZo_ || self_referential_lexpr(lexpr_lhs);
                    return caml_call5
                            (compile_assign,
                             line_no,
                             context,
                             copy,
                             lexpr_lhs,
                             caml_call1(compile_expr$0,e$2))},
                 _aZk_=ensure_ops_if(0 === lexpr_lhs[1]?1:0),
                 _aZl_=caml_call2(A[24],_aZk_,_aZj_);
               else
                var
                 _aZm_=caml_call3(Printer[14],0,0,lhs),
                 _aZl_=caml_call1(errorf(_acc_),_aZm_);
               return caml_call2(A[24],_aZl_,_aZi_)},
            _aWy_=comment$0(caml_call3(Printer[18],0,0,x));
           return caml_call2(A[24],_aWy_,_aWx_);
          case 10:
           var
            key=_aV3_[2],
            map=_aV3_[1],
            _aWz_=lexpr_of_expr(map),
            _aWA_=map[2];
           if(_aWz_)
            {var _aWB_=_aWA_[1],switch$0=0;
             if(typeof _aWB_ === "number" || ! (3 === _aWB_[0]))
              switch$0 = 1;
             else
              {var _aWC_=_aWB_[1],_aWD_=_aWz_[1];
               if(typeof _aWC_ === "number" && _aWC_)
                {var
                  tvalue=_aWB_[3],
                  s$0=[0,key,tvalue],
                  lsteps=_aWD_[2],
                  lroot=_aWD_[1],
                  lexpr=[0,lroot,caml_call2(Stdlib[37],lsteps,[0,s$0,0])],
                  context=caml_call3(Printer[18],0,0,x),
                  _aWE_=
                   function(param)
                    {function _aZg_(param){return push_unit}
                     var _aZh_=caml_call3(compile_delete,x[3],context,lexpr);
                     return caml_call2(A[24],_aZh_,_aZg_)},
                  _aWF_=comment$0(caml_call3(Printer[18],0,0,x));
                 return caml_call2(A[24],_aWF_,_aWE_)}}}
           return errorf(_acd_);
          case 11:
           var
            add=_aV3_[3],
            key$0=_aV3_[2],
            lhs$0=_aV3_[1],
            _aWG_=
             function(param)
              {var match=lexpr_of_expr(lhs$0);
               if(match)
                {var
                  lhs=match[1],
                  _aY1_=caml_call1(occurs_lroot_expr(lhs[1]),key$0),
                  copy=_aY1_ || self_referential_lexpr(lhs),
                  _aY2_=
                   function(zip_lexpr)
                    {function _aY6_(param)
                      {function _aY$_(param)
                        {function _aZb_(param)
                          {function _aZf_(param){return push_unit}
                           return caml_call2(A[24],zip_lexpr,_aZf_)}
                         function _aZc_(_aZd_,_aZe_)
                          {return instr$0(_ace_,_aZd_,_aZe_)}
                         return caml_call2(A[24],_aZc_,_aZb_)}
                       var _aZa_=caml_call1(compile_expr$0,key$0);
                       return caml_call2(A[24],_aZa_,_aY$_)}
                     var _aY7_=[22,_zf_,caml_call1(_Jw_[3],add)];
                     function _aY8_(_aY9_,_aY__)
                      {return instr$0(_aY7_,_aY9_,_aY__)}
                     return caml_call2(A[24],_aY8_,_aY6_)},
                  _aY3_=caml_call3(Printer[18],0,0,x),
                  _aY4_=caml_call4(strict_unzip_lexpr,x[3],_aY3_,copy,lhs);
                 return caml_call2(A[24],_aY4_,_aY2_)}
               var _aY5_=caml_call3(Printer[14],0,0,lhs$0);
               return caml_call1(errorf(_acf_),_aY5_)},
            _aWH_=comment$0(caml_call3(Printer[18],0,0,x));
           return caml_call2(A[24],_aWH_,_aWG_);
          case 12:
           var _aWI_=_aV3_[1],_aWJ_=_aV3_[2],_aWK_=_aWJ_[1];
           if(8 === _aWK_[0])
            {var c$2=_aV3_[3],expr$0=_aWK_[2],name$0=_aWK_[1];
             if(0 === _aWI_)
              {var
                _aWT_=
                 function(param)
                  {function _aYV_(param)
                    {function _aYX_(param)
                      {function _aYZ_(param){return drop_target([0,name$0])}
                       var _aY0_=caml_call1(compile_command,c$2);
                       return caml_call2(A[24],_aY0_,_aYZ_)}
                     var _aYY_=tag_top([0,[1,[0,name$0]],0]);
                     return caml_call2(A[24],_aYY_,_aYX_)}
                   var _aYW_=caml_call1(compile_expr$0,expr$0);
                   return caml_call2(A[24],_aYW_,_aYV_)},
                _aWU_=comment$0(caml_call3(Printer[18],0,0,_aWJ_));
               return caml_call2(A[24],_aWU_,_aWT_)}
             throw [0,Assert_failure,_acg_]}
           var _aWL_=_aV3_[3],_aWM_=_aWL_[1];
           if(8 === _aWM_[0])
            {var
              e$3=_aWM_[2],
              _aWR_=
               function(param)
                {function _aYH_(param)
                  {function _aYM_(param)
                    {function _aYO_(param)
                      {function _aYQ_(param){return push_unit}
                       var _aYR_=0;
                       function _aYS_(_aYT_,_aYU_)
                        {return instr$0(_aYR_,_aYT_,_aYU_)}
                       return caml_call2(A[24],_aYS_,_aYQ_)}
                     var _aYP_=caml_call1(compile_expr$0,e$3);
                     return caml_call2(A[24],_aYP_,_aYO_)}
                   var _aYN_=comment$0(caml_call3(Printer[18],0,0,_aWL_));
                   return caml_call2(A[24],_aYN_,_aYM_)}
                 var _aYI_=0;
                 function _aYJ_(_aYK_,_aYL_)
                  {return instr$0(_aYI_,_aYK_,_aYL_)}
                 return caml_call2(A[24],_aYJ_,_aYH_)},
              _aWS_=caml_call1(compile_command,_aWJ_);
             return caml_call2(A[24],_aWS_,_aWR_)}
           if(_aWI_)
            {var
              c2=_aV3_[3],
              c1=_aV3_[2],
              _aWN_=
               function(param)
                {if(_aWI_)
                  {var
                    x=_aWI_[1],
                    _aYy_=
                     function(param)
                      {function _aYF_(param){return drop_target([0,x])}
                       var _aYG_=caml_call1(compile_command,c2);
                       return caml_call2(A[24],_aYG_,_aYF_)},
                    _aYz_=tag_top([0,[1,[0,x]],0]);
                   return caml_call2(A[24],_aYz_,_aYy_)}
                 function _aYA_(param){return caml_call1(compile_command,c2)}
                 var _aYB_=0;
                 function _aYC_(_aYD_,_aYE_)
                  {return instr$0(_aYB_,_aYD_,_aYE_)}
                 return caml_call2(A[24],_aYC_,_aYA_)},
              _aWO_=caml_call1(compile_command,c1);
             return caml_call2(A[24],_aWO_,_aWN_)}
           var
            c2$0=_aV3_[3],
            c1$0=_aV3_[2],
            _aWP_=
             function(param)
              {function _aYt_(param){return caml_call1(compile_command,c2$0)}
               var _aYu_=0;
               function _aYv_(_aYw_,_aYx_){return instr$0(_aYu_,_aYw_,_aYx_)}
               return caml_call2(A[24],_aYv_,_aYt_)},
            _aWQ_=caml_call1(compile_command,c1$0);
           return caml_call2(A[24],_aWQ_,_aWP_);
          case 13:
           var _aWV_=_aV3_[1],_aWW_=_aV3_[2],_aWX_=_aWW_[1];
           if(8 === _aWX_[0] && 1 === _aWX_[1])
            {var
              body$1=_aV3_[3],
              step=_aWX_[4],
              b=_aWX_[3],
              a=_aWX_[2],
              _aW9_=mtype_of_type(0,a[2]);
             if(caml_call2(Utils_List[35],_aW9_,[0,_zg_,[0,_zh_,0]]))
              {var
                _aW__=
                 function(param)
                  {var
                    line_no=x[3],
                    has_operations$0=0 !== has_operations(body$1)?1:0,
                    _aYm_=0;
                   function _aYn_(_aYr_,_aYs_)
                    {return instr$0(_aYm_,_aYr_,_aYs_)}
                   var
                    _aYo_=caml_call1(compile_command,body$1),
                    body=caml_call2(A[28],_aYo_,_aYn_);
                   function _aYp_(param){return push_unit}
                   var
                    _aYq_=
                     caml_call7
                      (compile_range,line_no,a,b,step,_aWV_,body,has_operations$0);
                   return caml_call2(A[24],_aYq_,_aYp_)},
                _aW$_=caml_call5(Printer[2],0,0,0,0,step[2]),
                _aXa_=caml_call3(Printer[14],0,0,_aWW_),
                _aXb_=caml_call3(commentf(_ack_),_aWV_,_aXa_,_aW$_);
               return caml_call2(A[24],_aXb_,_aW__)}}
           var
            body$0=_aV3_[3],
            container=_aV3_[2],
            _aWY_=container[1],
            switch$1=0;
           if(6 === _aWY_[0])
            {var _aW2_=_aWY_[1],switch$2=0;
             if(typeof _aW2_ === "number")
              switch$2 = 1;
             else
              switch(_aW2_[0])
               {case 1:
                 if(_aW2_[1])
                  switch$2 = 2;
                 else
                  var
                   set=_aWY_[2],
                   _aW3_=caml_call1(A[2],0),
                   _aW4_=[0,caml_call1(A[2],0),set,_aW3_];
                 break;
                case 2:
                 if(_aW2_[1])
                  switch$2 = 2;
                 else
                  {var map$1=_aWY_[2],match=getRepr(map$1[2]),switch$3=0;
                   if(typeof match !== "number" && 3 === match[0])
                    {var _aW8_=match[1];
                     if(typeof _aW8_ === "number" && _aW8_)
                      {var _aW7_=[0,caml_call1(A[2],0),map$1,mi_cdr];switch$3 = 1}}
                   if(! switch$3)
                    var
                     _aW5_=caml_call1(A[2],0),
                     _aW6_=caml_call5(Printer[2],0,0,0,0,map$1[2]),
                     _aW7_=[0,caml_call1(errorf(_acj_),_aW6_),map$1,_aW5_];
                   var _aW4_=_aW7_}
                 break;
                case 3:
                 if(_aW2_[1])
                  switch$2 = 2;
                 else
                  var
                   map$2=_aWY_[2],
                   _aW4_=[0,mi_car,map$2,caml_call1(A[2],0)];
                 break;
                case 4:
                 if(_aW2_[1])
                  switch$2 = 2;
                 else
                  var
                   map$3=_aWY_[2],
                   _aW4_=[0,mi_cdr,map$3,caml_call1(A[2],0)];
                 break;
                default:switch$2 = 1}
             switch(switch$2)
              {case 2:break;
               case 1:break;
               default:
                var onMap$0=_aW4_[3],map$0=_aW4_[2],projection$0=_aW4_[1];
                switch$1 = 1}}
           if(! switch$1)
            var
             onMap=caml_call1(A[2],0),
             projection=caml_call1(A[2],0),
             onMap$0=onMap,
             map$0=container,
             projection$0=projection;
           var
            lcontainer=lexpr_of_expr(map$0),
            iterName=[0,_aWV_],
            writes=modifies_iter(_aWV_,body$0),
            _aWZ_=
             function(param)
              {function _aXY_(param)
                {function _aX0_(param)
                  {function _aX2_(param)
                    {var switch$0=0;
                     function _aYe_(param){return push_unit}
                     if(lcontainer)
                      {var lhs=lcontainer[1];
                       if(writes)
                        var
                         t=[0,caml_call2(Stdlib[28],_aWV_,cst_iteratee)],
                         _aYf_=
                          function(param)
                           {function _aYj_(param){return drop_target(t)}
                            var
                             _aYk_=fetch_target(1,t),
                             _aYl_=caml_call5(compile_assign,x[3],cst_for,1,lhs,_aYk_);
                            return caml_call2(A[24],_aYl_,_aYj_)},
                         _aYg_=tag_top([0,[1,t],0]),
                         _aYh_=caml_call2(A[24],_aYg_,_aYf_);
                       else
                        switch$0 = 1}
                     else
                      if(writes)
                       var
                        _aYi_=caml_call3(Printer[14],0,0,map$0),
                        _aYh_=caml_call1(errorf(_ach_),_aYi_);
                      else
                       switch$0 = 1;
                     if(switch$0)var _aYh_=caml_call1(A[2],0);
                     return caml_call2(A[24],_aYh_,_aYe_)}
                   function _aX3_(param)
                    {function _aX6_(param)
                      {function _aX8_(param)
                        {function _aX__(param)
                          {function _aYd_(param)
                            {return writes?caml_call1(A[2],0):drop_target(iterName)}
                           var onMap=writes?onMap$0:caml_call1(A[2],0);
                           return caml_call2(A[24],onMap,_aYd_)}
                         var _aX$_=0;
                         function _aYa_(_aYb_,_aYc_)
                          {return instr$0(_aX$_,_aYb_,_aYc_)}
                         return caml_call2(A[24],_aYa_,_aX__)}
                       var _aX9_=caml_call1(compile_command,body$0);
                       return caml_call2(A[24],_aX9_,_aX8_)}
                     var _aX7_=tag_top([0,[1,iterName],0]);
                     return caml_call2(A[24],_aX7_,_aX6_)}
                   var
                    _aX4_=caml_call2(A[24],projection$0,_aX3_),
                    mi_map=writes?mi_map$0:mi_iter$0,
                    _aX5_=mi_map(_aX4_);
                   return caml_call2(A[24],_aX5_,_aX2_)}
                 var _aX1_=caml_call1(compile_expr$0,map$0);
                 return caml_call2(A[24],_aX1_,_aX0_)}
               var _aXZ_=ensure_ops_if(0 !== has_operations(body$0)?1:0);
               return caml_call2(A[24],_aXZ_,_aXY_)},
            _aW0_=caml_call3(Printer[14],0,0,container),
            _aW1_=caml_call2(commentf(_aci_),_aWV_,_aW0_);
           return caml_call2(A[24],_aW1_,_aWZ_);
          case 14:
           var
            c$3=_aV3_[2],
            e$4=_aV3_[1],
            _aXc_=
             function(param)
              {function _aXI_(param)
                {function _aXK_(param)
                  {function _aXM_(param){return push_unit}
                   function _aXN_(param)
                    {function _aXQ_(param)
                      {function _aXV_(param)
                        {return caml_call1(compile_expr$0,e$4)}
                       var
                        _aXW_=caml_call3(Printer[14],0,0,e$4),
                        _aXX_=caml_call1(commentf(_acl_),_aXW_);
                       return caml_call2(A[24],_aXX_,_aXV_)}
                     var _aXR_=0;
                     function _aXS_(_aXT_,_aXU_)
                      {return instr$0(_aXR_,_aXT_,_aXU_)}
                     return caml_call2(A[24],_aXS_,_aXQ_)}
                   var
                    _aXO_=caml_call1(compile_command,c$3),
                    _aXP_=mi_loop$0(caml_call2(A[24],_aXO_,_aXN_));
                   return caml_call2(A[24],_aXP_,_aXM_)}
                 var _aXL_=caml_call1(compile_expr$0,e$4);
                 return caml_call2(A[24],_aXL_,_aXK_)}
               var _aXJ_=ensure_ops_if(0 !== has_operations(c$3)?1:0);
               return caml_call2(A[24],_aXJ_,_aXI_)},
            _aXd_=caml_call3(Printer[14],0,0,e$4),
            _aXe_=caml_call1(commentf(_acm_),_aXd_);
           return caml_call2(A[24],_aXe_,_aXc_);
          case 15:
           var _aXf_=_aV3_[1],_aXg_=_aXf_[1];
           if(5 === _aXg_[0])
            {var _aXk_=_aXg_[1],switch$4=0;
             if(typeof _aXk_ === "number" || ! (0 === _aXk_[0]))
              switch$4 = 1;
             else
              if(typeof _aXk_[1] === "number")return push_unit}
           var
            _aXh_=
             function(param)
              {function _aXG_(param){return tag_top([0,st_none(0),0])}
               var _aXH_=caml_call1(compile_expr$0,_aXf_);
               return caml_call2(A[24],_aXH_,_aXG_)},
            _aXi_=caml_call3(Printer[14],0,0,_aXf_),
            _aXj_=caml_call1(commentf(_acn_),_aXi_);
           return caml_call2(A[24],_aXj_,_aXh_);
          case 16:var s$1=_aV3_[1];return comment$0(s$1);
          case 18:var c$4=_aV3_[1];return caml_call1(compile_command,c$4);
          case 20:
           var
            e$5=_aV3_[2],
            n=_aV3_[1],
            _aXl_=
             function(param)
              {var zip=param[2],found=param[1];
               if(found)
                {var
                  _aXn_=
                   function(param)
                    {function _aXp_(param)
                      {function _aXt_(id)
                        {function _aXx_(param)
                          {function _aXC_(param){return zip}
                           function _aXD_(_aXE_,_aXF_)
                            {return instr$0(_aco_,_aXE_,_aXF_)}
                           return caml_call2(A[24],_aXD_,_aXC_)}
                         var _aXy_=[22,_zg_,id];
                         function _aXz_(_aXA_,_aXB_)
                          {return instr$0(_aXy_,_aXA_,_aXB_)}
                         return caml_call2(A[24],_aXz_,_aXx_)}
                       function _aXu_(_aXv_,_aXw_)
                        {return get_lazy_id(n,_aXv_,_aXw_)}
                       return caml_call2(A[24],_aXu_,_aXt_)}
                     function _aXq_(_aXr_,_aXs_)
                      {return instr$0(_acp_,_aXr_,_aXs_)}
                     return caml_call2(A[24],_aXq_,_aXp_)},
                  _aXo_=caml_call1(compile_expr$0,e$5);
                 return caml_call2(A[24],_aXo_,_aXn_)}
               throw [0,Assert_failure,_acq_]},
            _aXm_=unzip_target(0,0);
           return caml_call2(A[24],_aXm_,_aXl_);
          default:return push_unit}});
    caml_update_dummy
     (compile_entry_point,
      function(ep)
       {function _aVP_(param)
         {function _aVS_(param)
           {function _aVU_(param)
             {function _aVW_(param){return drop_target(tgt_parameter)}
              var
               _aVX_=
                if_stack_ok
                 (function(param)
                   {var _aVY_=0;
                    return function(_aVZ_,_aV0_)
                     {return instr$0(_aVY_,_aVZ_,_aV0_)}});
              return caml_call2(A[24],_aVX_,_aVW_)}
            var _aVV_=caml_call1(compile_command,ep[7]);
            return caml_call2(A[24],_aVV_,_aVU_)}
          var _aVT_=tag_top([0,[1,tgt_parameter],[0,[1,tgt_storage],0]]);
          return caml_call2(A[24],_aVT_,_aVS_)}
        var _aVQ_=ep[1],_aVR_=caml_call1(commentf(_acr_),_aVQ_);
        return caml_call2(A[24],_aVR_,_aVP_)});
    caml_update_dummy
     (pre_finalize_contract,
      function(has_operations)
       {function _aVF_(tags)
         {if(tags)
           switch(has_operations)
            {case 0:
              var _aVG_=0;
              return caml_call1
                      (mi_seq$0,
                       [0,
                        ops_init,
                        [0,
                         function(_aVL_,_aVM_){return instr$0(_acs_,_aVL_,_aVM_)},
                         _aVG_]]);
             case 1:
              return function(_aVJ_,_aVK_){return instr$0(_act_,_aVJ_,_aVK_)};
             default:
              var
               _aVH_=0,
               _aVI_=
                [0,
                 function(_aVN_,_aVO_){return instr$0(_acu_,_aVN_,_aVO_)},
                 _aVH_];
              return caml_call1(mi_seq$0,[0,mi_rev_list(operation),_aVI_])}
          return caml_call1(A[2],0)}
        return caml_call2(A[24],get_tags,_aVF_)});
    caml_update_dummy
     (lazify_body,
      function(param)
       {var match=param[2],ep=match[2],path=match[1],id=param[1];
        function proj(param)
         {if(param)
           {if(param[1])
             {var rest=param[2],_aVD_=proj(rest);
              return mi_if_left$0
                      (0,mi_failwith$0(0,1,0,cst$289,0,cst$288),_aVD_)}
            var rest$0=param[2],_aVE_=mi_failwith$0(0,1,0,cst$291,0,cst$290);
            return mi_if_left$0(0,proj(rest$0),_aVE_)}
          return caml_call1(A[2],0)}
        function _aVi_(param)
         {var
           instrs=param[1],
           body=[0,[23,instrs]],
           _aVA_=caml_call1(_Jw_[16],body),
           _aVB_=caml_call1(_Jw_[2],id),
           _aVC_=caml_call2(Utils_Option[45],0,ep[5]),
           entry=[0,ep[1],_aVC_,_aVB_,_aVA_];
          return caml_call1(A[2],[0,ep,id,[0,entry,0]])}
        function _aVj_(param)
         {function _aVp_(param)
           {function _aVr_(param)
             {function _aVt_(param)
               {function _aVv_(param)
                 {return function(_aVy_,_aVz_)
                   {return instr$0(_acv_,_aVy_,_aVz_)}}
                function _aVw_(param)
                 {if(param)
                   {var tags=param[1];
                    if(! has_target(tgt_operations,tags))return ops_init}
                  return caml_call1(A[2],0)}
                var _aVx_=caml_call2(A[27],get_tags,_aVw_);
                return caml_call2(A[24],_aVx_,_aVv_)}
              var _aVu_=caml_call1(compile_entry_point,ep);
              return caml_call2(A[24],_aVu_,_aVt_)}
            var _aVs_=proj(path);
            return caml_call2(A[24],_aVs_,_aVr_)}
          var _aVq_=tag_top([0,[1,tgt_parameter],[0,[1,tgt_storage],0]]);
          return caml_call2(A[24],_aVq_,_aVp_)}
        var _aVk_=mi_unpair(2);
        function _aVl_(_aVn_,_aVo_){return instr$0(_aVk_,_aVn_,_aVo_)}
        var body=caml_call2(A[24],_aVl_,_aVj_),tags=[0,[0,st_none(0),0]];
        function _aVm_(c,s$0)
         {var match=caml_call2(body,c,tags),i=match[3],s=match[2];
          return [0,[0,[0,i,s]],s$0,0]}
        return caml_call2(A[24],_aVm_,_aVi_)});
    var t=st_none(0);
    caml_update_dummy
     (lazify_call,
      function(id)
       {function _aVg_(param)
         {return tag_top
                  ([0,t,[0,[1,tgt_operations],[0,[1,tgt_storage],_acw_]]])}
        var
         _aVh_=
          caml_call1(instrs,[0,0,[0,[22,_zg_,caml_call1(_Jw_[2],id)],0]]);
        return caml_call2(A[24],_aVh_,_aVg_)});
    caml_update_dummy
     (compile_entry_points,
      function(eps,t)
       {var _aU$_=t[1];
        if(typeof _aU$_ !== "number" && 7 === _aU$_[0])
         {var
           layout=_aU$_[1],
           _aVa_=get(layout),
           layout$0=caml_call2(Utils_Option[50],0,_aVa_),
           _aVb_=
            function(param)
             {var source=param[1];
              function _aVf_(param)
               {var channel=param[1];return caml_string_equal(channel,source)}
              return caml_call2(Utils_List[37],_aVf_,eps)},
           layout$1=caml_call2(Utils_Binary_tree[11],_aVb_,layout$0),
           _aVc_=
            function(l1,l2)
             {var _aVe_=mi_if_left$0(0,l1,l2);return caml_call1(A[10],_aVe_)},
           _aVd_=function(ep){return caml_call1(compile_entry_point,ep)};
          return caml_call3(Utils_Binary_tree[6],_aVd_,_aVc_,layout$1)}
        throw [0,Assert_failure,_acx_]});
    caml_update_dummy
     (compile_lazy_entry_points,
      function(eps,t)
       {var _aUD_=t[1];
        if(typeof _aUD_ !== "number" && 7 === _aUD_[0])
         {var
           layout=_aUD_[1],
           _aUE_=get(layout),
           layout$0=caml_call2(Utils_Option[50],0,_aUE_),
           _aUF_=
            function(param)
             {var source=param[1];
              function _aU__(param)
               {var channel=param[1];return caml_string_equal(channel,source)}
              return caml_call2(Utils_List[37],_aU__,eps)},
           layout$1=caml_call2(Utils_Binary_tree[11],_aUF_,layout$0),
           _aUG_=0,
           _aUH_=
            function(l1,l2,path)
             {var _aU9_=caml_call1(l2,caml_call2(Stdlib[37],path,_acz_));
              return [1,
                      caml_call1(l1,caml_call2(Stdlib[37],path,_acA_)),
                      _aU9_]},
           _aUI_=function(ep,path){return [0,[0,path,ep]]},
           layout$2=
            caml_call4(Utils_Binary_tree[6],_aUI_,_aUH_,layout$1,_aUG_),
           _aUJ_=0,
           _aUK_=function(i,x){return [0,i + 1 | 0,[0,i,x]]},
           layout$3=caml_call3(Utils_Binary_tree[43],_aUK_,_aUJ_,layout$2)[2],
           _aUL_=
            function(layout)
             {function _aUN_(param)
               {function _aUV_(param)
                 {function _aU1_(param)
                   {function _aU3_(param)
                     {function _aU5_(param)
                       {function _aU7_(param)
                         {return tag_top
                                  ([0,[1,tgt_operations],[0,[1,tgt_storage],_acB_]])}
                        var _aU8_=caml_call1(instrs,[0,_acC_,[0,mi_unpair(2),0]]);
                        return caml_call2(A[24],_aU8_,_aU7_)}
                      var _aU6_=caml_call1(instrs,_acD_);
                      return caml_call2(A[24],_aU6_,_aU5_)}
                    var _aU4_=caml_call2(of_Some,0,cst_missing_entry_point);
                    return caml_call2(A[24],_aU4_,_aU3_)}
                  var _aU2_=caml_call1(instrs,_acE_);
                  return caml_call2(A[24],_aU2_,_aU1_)}
                function _aUW_(_aUZ_,_aU0_)
                 {return mi_if_left$0(_acF_,_aUZ_,_aU0_)}
                function _aUX_(param)
                 {var id=param[2];return caml_call1(lazify_call,id)}
                var _aUY_=caml_call3(Utils_Binary_tree[6],_aUX_,_aUW_,layout);
                return caml_call2(A[24],_aUY_,_aUV_)}
              function _aUO_(_aUT_,_aUU_){return instr$0(_acG_,_aUT_,_aUU_)}
              var code=caml_call2(A[24],_aUO_,_aUN_);
              function _aUP_(l1,l2){return caml_call2(Stdlib[37],l1,l2)}
              function _aUQ_(param){var l=param[3];return l}
              var l=caml_call3(Utils_Binary_tree[6],_aUQ_,_aUP_,layout);
              function f(param)
               {var ep=param[4],i=param[3],no_code=param[2];
                return no_code?0:[0,[0,i,ep]]}
              var ep_map=caml_call2(Utils_List[23],f,l);
              function _aUR_(param){var i=param[3],c=param[1];return [0,c,i]}
              var
               lazy_ids=caml_call2(Utils_List[20],_aUR_,l),
               _aUS_=[0,code,caml_call1(_Jw_[14],ep_map),lazy_ids];
              return caml_call1(A[2],_aUS_)},
           _aUM_=caml_call2(T[1],lazify_body,layout$3);
          return caml_call2(A[24],_aUM_,_aUL_)}
        throw [0,Assert_failure,_acy_]});
    caml_update_dummy
     (compile_value_f,
      function(config,param)
       {switch(param[0])
         {case 2:
           var match=param[1],entry_point=match[2],address=match[1];
           return compile_literal(0,[7,address,entry_point]);
          case 3:
           var
            entries=param[2],
            layout=param[1],
            _aUx_=compile_record(layout,entries),
            _aUy_=_Jw_[10],
            _aUz_=function(_aUC_){return _aUC_[2]};
           return caml_call3(Utils_Binary_tree[6],_aUz_,_aUy_,_aUx_);
          case 4:
           var x=param[4],name=param[3],row=param[2],layout$0=param[1];
           if(caml_string_notequal(name,cst_Left$14))
            {if(caml_string_notequal(name,cst_None$72))
              {if(caml_string_notequal(name,cst_Right$14))
                {if(caml_string_notequal(name,cst_Some$71))
                  {var
                    ctxt=compile_variant(row,layout$0,name),
                    l$0=function(x,param){return caml_call1(_Jw_[7],x)},
                    r=function(param,x){return caml_call1(_Jw_[8],x)};
                   return caml_call4(Utils_Binary_tree[62],x,l$0,r,ctxt)}
                 return caml_call1(_Jw_[9],x)}
               return caml_call1(_Jw_[8],x)}
             return _Jw_[11]}
           return caml_call1(_Jw_[7],x);
          case 5:var xs=param[2];return caml_call1(_Jw_[12],xs);
          case 6:var xs$0=param[2];return caml_call1(_Jw_[13],xs$0);
          case 7:var xs$1=param[4];return caml_call1(_Jw_[14],xs$1);
          case 8:var xs$2=param[1];return compile_tuple(_Jw_[10],xs$2);
          case 9:
           var args=param[2],match$0=param[1],body=match$0[3],id=match$0[1];
           if(args)
            return caml_call1(Stdlib[2],cst_compile_value_closure_with);
           var
            tags=[0,[0,[1,[1,id]],0]],
            _aUA_=[0,drop_target([1,id]),0],
            body$0=
             caml_call1(mi_seq$0,[0,caml_call1(compile_command,body),_aUA_]),
            match$1=run$2(config,0,tags,body$0),
            instrs=match$1[3],
            _aUB_=mk_seq(instrs);
           return caml_call1(_Jw_[16],_aUB_);
          case 10:return caml_call1(Stdlib[2],cst_compile_value_operation);
          case 11:return caml_call1(_Jw_[4],cst_some_ticket);
          default:var l=param[1];return compile_literal(0,l)}});
    caml_update_dummy
     (compile_value_internal,
      function(config)
       {var _aUv_=caml_call1(compile_value_f,config);
        return function(_aUw_){return cata_value(_aUv_,_aUw_)}});
    caml_update_dummy
     (compile_contract$0,
      function
       (config,
        storage,
        entry_points,
        tstorage,
        tparameter_lazy,
        tparameter_non_lazy,
        flags,
        global_variables)
       {var config$0=caml_call3(Utils_List[25],apply_flag,config,flags);
        function _aTC_(_aUu_){return mtype_of_type(_acH_,_aUu_)}
        var match=caml_call2(Utils_Option[17],_aTC_,tparameter_lazy);
        function _aTD_(_aUt_){return mtype_of_type(_acI_,_aUt_)}
        var match$0=caml_call2(Utils_Option[17],_aTD_,tparameter_non_lazy);
        if(match)
         {var _aTE_=match[1];
          if(match$0)
           var nl=match$0[1],_aTF_=caml_call4(_zI_,0,0,_aTE_,nl);
          else
           var _aTF_=_aTE_;
          var tparameter=_aTF_}
        else
         if(match$0)
          var nl$0=match$0[1],tparameter=nl$0;
         else
          var tparameter=_ze_;
        var switch$0=0;
        if(entry_points && ! entry_points[2])
         {var match$2=entry_points[1],channel=match$2[1];
          if(config$0[15]){var tparameter_annot=[0,channel];switch$0 = 1}}
        if(! switch$0)var tparameter_annot=0;
        var
         tstorage$0=mtype_of_type(_acJ_,tstorage),
         tags=[0,[0,st_none(0),0]];
        function _aTG_(param)
         {var expr=param[2],name=param[1];
          function _aUl_(param)
           {function _aUn_(param)
             {function _aUp_(param)
               {return function(_aUr_,_aUs_)
                 {return instr$0(_acK_,_aUr_,_aUs_)}}
              var _aUq_=tag_top([0,[1,[0,name]],0]);
              return caml_call2(A[24],_aUq_,_aUp_)}
            var _aUo_=caml_call1(compile_expr$0,expr);
            return caml_call2(A[24],_aUo_,_aUn_)}
          var _aUm_=caml_call1(commentf(_acL_),name);
          return caml_call2(A[24],_aUm_,_aUl_)}
        var
         push_globals=caml_call2(A[16],_aTG_,global_variables),
         _aTH_=caml_call1(Utils_List[12],global_variables);
        function _aTI_(param){var name=param[1];return drop_target([0,name])}
        var drop_globals=caml_call2(A[16],_aTI_,_aTH_);
        function f(ep){return has_operations(ep[7])}
        var
         _aTJ_=caml_call2(Utils_List[20],f,entry_points),
         has_ops=caml_call3(Utils_List[25],or,0,_aTJ_);
        function _aTK_(r)
         {function _aUk_(param){return caml_call1(A[2],r)}
          return caml_call2(A[24],assert_singleton_stack,_aUk_)}
        if(tparameter_lazy)
         var
          t_lazy=tparameter_lazy[1],
          _aTL_=
           function(param)
            {function _aTS_(param)
              {function _aTX_(param)
                {function _aTZ_(param)
                  {var lazy_ids=param[3],ep_map=param[2],code_lazy=param[1];
                   function _aT1_(param)
                    {function _aT5_(param)
                      {function _aT7_(param)
                        {function _aT9_(param){return caml_call1(A[2],[0,ep_map])}
                         return caml_call2(A[24],drop_globals,_aT9_)}
                       var _aT8_=caml_call1(instrs,_acM_);
                       return caml_call2(A[24],_aT8_,_aT7_)}
                     var _aT6_=mi_rev_list(operation);
                     return caml_call2(A[24],_aT6_,_aT5_)}
                   if(tparameter_non_lazy)
                    var
                     t_non_lazy=tparameter_non_lazy[1],
                     _aT2_=function(param){return ensure_ops},
                     x=caml_call2(compile_entry_points,entry_points,t_non_lazy),
                     _aT3_=
                      function(c,s){return caml_call2(x,[0,c[1],lazy_ids],s)},
                     code_non_lazy=caml_call2(A[24],_aT3_,_aT2_),
                     _aT4_=mi_if_left$0(_acN_,code_lazy,code_non_lazy);
                   else
                    var _aT4_=code_lazy;
                   return caml_call2(A[24],_aT4_,_aT1_)}
                 var
                  _aT0_=
                   caml_call2(compile_lazy_entry_points,entry_points,t_lazy);
                 return caml_call2(A[24],_aT0_,_aTZ_)}
               var _aTY_=tag_top([0,st_none(0),[0,[1,tgt_storage],_acO_]]);
               return caml_call2(A[24],_aTY_,_aTX_)}
             var _aTT_=mi_unpair(3);
             function _aTU_(_aTV_,_aTW_){return instr$0(_aTT_,_aTV_,_aTW_)}
             return caml_call2(A[24],_aTU_,_aTS_)},
          _aTM_=caml_call2(A[24],push_globals,_aTL_);
        else
         if(tparameter_non_lazy)
          var
           t_non_lazy=tparameter_non_lazy[1],
           _aTQ_=
            function(param)
             {function _aT__(param)
               {function _aUd_(param)
                 {function _aUf_(param)
                   {function _aUh_(param){return caml_call1(A[2],0)}
                    return caml_call2(A[24],drop_globals,_aUh_)}
                  var _aUg_=caml_call1(pre_finalize_contract,has_ops);
                  return caml_call2(A[24],_aUg_,_aUf_)}
                var
                 _aUe_=
                  caml_call2(compile_entry_points,entry_points,t_non_lazy);
                return caml_call2(A[24],_aUe_,_aUd_)}
              var _aT$_=mi_unpair(2);
              function _aUa_(_aUb_,_aUc_){return instr$0(_aT$_,_aUb_,_aUc_)}
              return caml_call2(A[24],_aUa_,_aT__)},
           _aTM_=caml_call2(A[24],push_globals,_aTQ_);
         else
          var
           _aTR_=
            function(param)
             {function _aUi_(param){return caml_call1(A[2],0)}
              var _aUj_=caml_call1(pre_finalize_contract,0);
              return caml_call2(A[24],_aUj_,_aUi_)},
           _aTM_=caml_call2(A[24],mi_cdr,_aTR_);
        var code=caml_call2(A[24],_aTM_,_aTK_);
        if(tparameter_lazy)
         var
          t=tparameter_lazy[1],
          t$0=mtype_of_type(_acP_,t),
          _aTN_=caml_call4(_zH_,0,0,caml_call1(_zA_,_zs_),tstorage$0),
          tl=caml_call2(_zE_,caml_call4(_zH_,0,0,t$0,tstorage$0),_aTN_),
          tlazy_storage=[0,caml_call2(_zG_,_zg_,tl)];
        else
         var tlazy_storage=0;
        if(tlazy_storage)
         var
          t$1=tlazy_storage[1],
          tstorage_with_entry_points=
           caml_call4(_zH_,0,0,tstorage$0,caml_call1(remove_annots,t$1));
        else
         var tstorage_with_entry_points=tstorage$0;
        var
         match$1=run$2(config$0,0,tags,code),
         instrs$0=match$1[3],
         lazy_entry_points=match$1[1],
         lazy_entry_points$0=caml_call1(Utils_Option[42],lazy_entry_points);
        if(config$0[11])
         var
          _aTO_=caml_call3(_zH_,0,0,tstorage$0),
          tstorage$1=
           caml_call3(Utils_Option[12],tstorage$0,_aTO_,tlazy_storage),
          t$2=
           caml_call1
            (remove_annots,caml_call4(_zH_,0,0,tparameter,tstorage$1)),
          code$0=mk_seq([0,[0,[1,[5,t$2]]],instrs$0]);
        else
         var code$0=mk_seq(instrs$0);
        if(storage)
         {var
           storage$0=storage[1],
           storage$1=caml_call2(compile_value_internal,config$0,storage$0);
          if(lazy_entry_points$0)
           var
            entry_points$0=lazy_entry_points$0[1],
            _aTP_=[0,caml_call2(_Jw_[10],storage$1,entry_points$0)];
          else
           var _aTP_=[0,storage$1];
          var storage$2=_aTP_}
        else
         var storage$2=0;
        var
         c=
          [0,
           [0,tparameter,tparameter_annot],
           tstorage_with_entry_points,
           code$0,
           lazy_entry_points$0,
           storage$2],
         c$0=typecheck_contract(1,c);
        return [0,config$0,c$0]});
    function f_tliteral$1(t,tliteral)
     {var t$0=caml_call1(Utils_Control[15][40],t),_aTt_=t$0[1],switch$0=0;
      if(0 === _aTt_[0])
       {var _aTu_=_aTt_[1];
        if(typeof _aTu_ === "number")
         {var switch$1=0;
          switch(_aTu_)
           {case 8:
             var switch$2=0;
             if(typeof tliteral !== "number" && 2 === tliteral[0])
              {var s=tliteral[1],match=caml_call4(Ptime[27],0,0,0,s);
               if(0 === match[0])
                {var match$0=match[1],tz=match$0[2],t$1=match$0[1];
                 if(! caml_equal(tz,_acR_))throw [0,Assert_failure,_acT_];
                 var
                  t$2=caml_call1(Ptime[7],t$1),
                  match$1=caml_call1(Ptime[1][8],t$2);
                 if(! match$1)throw [0,Assert_failure,_acS_];
                 var t$3=match$1[1],_aTv_=[0,caml_call1(Utils_Bigint[41],t$3)]}
               else
                var _aTv_=[0,caml_call1(Utils_Bigint[39],s)];
               var _aTw_=_aTv_;
               switch$2 = 1}
             if(! switch$2)switch$1 = 1;
             break;
            case 9:
             var switch$3=0;
             if(typeof tliteral !== "number" && 2 === tliteral[0])
              {var
                s$0=tliteral[1],
                _aTx_=caml_call1(Utils_Bs58[8],s$0),
                _aTw_=[3,caml_call1(Utils_Misc[4][2],_aTx_)];
               switch$3 = 1}
             if(! switch$3)switch$1 = 1;
             break;
            case 10:
             var switch$4=0;
             if(typeof tliteral === "number" || ! (2 === tliteral[0]))
              switch$4 = 1;
             else
              var
               s$1=tliteral[1],
               _aTy_=caml_call1(Utils_Bs58[9],s$1),
               _aTw_=[3,caml_call1(Utils_Misc[4][2],_aTy_)];
             if(switch$4)switch$1 = 1;
             break;
            case 11:
             var switch$5=0;
             if(typeof tliteral === "number" || ! (2 === tliteral[0]))
              switch$5 = 1;
             else
              var
               s$2=tliteral[1],
               _aTz_=caml_call1(Utils_Bs58[6],s$2),
               _aTw_=[3,caml_call1(Utils_Misc[4][2],_aTz_)];
             if(switch$5)switch$1 = 1;
             break;
            case 12:
             var switch$6=0;
             if(typeof tliteral === "number" || ! (2 === tliteral[0]))
              switch$6 = 1;
             else
              var
               s$3=tliteral[1],
               _aTA_=caml_call1(Utils_Bs58[7],s$3),
               _aTw_=[3,caml_call1(Utils_Misc[4][2],_aTA_)];
             if(switch$6)switch$1 = 1;
             break;
            case 13:
             var switch$7=0;
             if(typeof tliteral === "number" || ! (2 === tliteral[0]))
              switch$7 = 1;
             else
              var
               s$4=tliteral[1],
               _aTB_=caml_call1(Utils_Bs58[10],s$4),
               _aTw_=[3,caml_call1(Utils_Misc[4][2],_aTB_)];
             if(switch$7)switch$1 = 1;
             break;
            default:switch$1 = 1}
          if(! switch$1){var literal=_aTw_;switch$0 = 1}}}
      if(! switch$0)var literal=tliteral;
      return [0,literal]}
    function f_tinstr$2(param,instr){return [0,instr]}
    var
     match$2=tcata([0,f_tinstr$2,f_tliteral$1]),
     canonicalize_literal=match$2[2];
    function pack_value(config,v)
     {var
       t=mtype_of_type(0,type_of_value(v)),
       tparameter=[0,_ze_,0],
       v$0=caml_call2(compile_value_internal,config,v),
       v$1=optimize_literal(config,v$0),
       v$2=typecheck_literal(1,tparameter,t,v$1),
       v$3=caml_call1(canonicalize_literal,v$2),
       mich=caml_call1(_Ju_[1],v$3),
       _aTs_=pack_node_expression(node_of_mich(mich));
      return caml_call2(Stdlib[28],pack_prefix,_aTs_)}
    function unpack_value(config,t,b)
     {var
       bytes=caml_call2(Base_String[96],b,pack_prefix),
       mich=mich_of_bytes(caml_call1(Utils_Misc[4][1],bytes));
      function pp_mich(t,i)
       {var _aTr_=caml_call1(_Jv_[3],i);
        return display_instr(mtype_of_type(0,t),_aTr_)}
      var value=caml_call2(of_micheline(config,pp_mich),t,mich);
      return value}
    function compile_value(config,v)
     {return optimize_literal
              (config,caml_call2(compile_value_internal,config,v))}
    function compile_instance(config,param)
     {var
       storage=param[2][2],
       match=param[1][1],
       derived=match[13],
       global_variables=match[10],
       flags=match[9],
       entry_points=match[6],
       match$0=derived[1],
       tstorage=match$0[5],
       tparameter_non_lazy=match$0[3],
       tparameter_lazy=match$0[2],
       match$1=
        caml_call8
         (compile_contract$0,
          config,
          storage,
          entry_points,
          tstorage,
          tparameter_lazy,
          tparameter_non_lazy,
          flags,
          global_variables),
       c$2=match$1[2],
       config$0=match$1[1];
      if(is_ok(c$2))
       {var
         init=erase_types_contract$0(c$2),
         _aTn_=function(_aTq_){return optimize_literal(config$0,_aTq_)},
         f=caml_call1(Utils_Option[17],_aTn_),
         _aTo_=caml_call1(f,init[5]),
         _aTp_=caml_call1(f,init[4]),
         c=[0,init[1],init[2],init[3],_aTp_,_aTo_],
         c$0=typecheck_contract(1,c);
        if(is_ok(c$0))
         {var c$1=simplify$0(config$0,c$0);
          if(is_ok(c$1) && config$0[2])
           return simplify_via_michel(config$0,c$1)[2];
          return c$1}
        return c$0}
      return c$2}
    function compile_views(config,param)
     {var
       state=param[2],
       match=param[1][1],
       derived=match[13],
       views=match[12],
       flags=match[9],
       config$0=caml_call3(Utils_List[25],apply_flag,config,flags),
       tstorage=derived[1][5],
       has_lazy_entry_points=0 !== state[4]?1:0;
      function _aS2_(ov)
       {var
         tparameter_derived=ov[6],
         doc=ov[5],
         body=ov[4],
         pure=ov[3],
         name=ov[1],
         tags=[0,[0,st_none(0),0]],
         tresult=mtype_of_type(0,body[2]),
         match=tparameter_derived[1];
        if(match)
         var
          _aS3_=
           function(param)
            {function _aTa_(param)
              {function _aTd_(param)
                {function _aTf_(param)
                  {function _aTh_(param){return drop_target(tgt_storage)}
                   var _aTi_=drop_target(tgt_parameter);
                   return caml_call2(A[24],_aTi_,_aTh_)}
                 var _aTg_=caml_call1(compile_command,body);
                 return caml_call2(A[24],_aTg_,_aTf_)}
               var
                _aTe_=
                 has_lazy_entry_points?drop_target(0):caml_call1(A[2],0);
               return caml_call2(A[24],_aTe_,_aTd_)}
             var
              _aTb_=has_lazy_entry_points?_acQ_:0,
              _aTc_=
               tag_top
                (caml_call2
                  (Stdlib[37],
                   [0,[1,tgt_parameter],[0,[1,tgt_storage],0]],
                   _aTb_));
             return caml_call2(A[24],_aTc_,_aTa_)},
          _aS4_=has_lazy_entry_points?3:2,
          _aS5_=mi_unpair(_aS4_),
          _aS6_=function(_aS__,_aS$_){return instr$0(_aS5_,_aS__,_aS$_)},
          body$0=caml_call2(A[24],_aS6_,_aS3_);
        else
         var
          _aS7_=
           function(param)
            {function _aTj_(param)
              {function _aTl_(param){return drop_target(tgt_storage)}
               var _aTm_=caml_call1(compile_command,body);
               return caml_call2(A[24],_aTm_,_aTl_)}
             var _aTk_=tag_top([0,[1,tgt_storage],0]);
             return caml_call2(A[24],_aTk_,_aTj_)},
          mi_car$0=has_lazy_entry_points?mi_car:caml_call1(A[2],0),
          body$0=caml_call2(A[24],mi_car$0,_aS7_);
        var
         match$0=run$2(config$0,0,tags,body$0),
         instrs=match$0[3],
         code=mk_seq(instrs),
         _aS8_=tparameter_derived[1];
        function _aS9_(eta){return mtype_of_type(0,eta)}
        var
         tparameter=caml_call2(Utils_Option[17],_aS9_,_aS8_),
         tstorage$0=mtype_of_type(0,tstorage);
        if(tparameter)
         var
          tparameter$0=tparameter[1],
          stack=initial_stack(tparameter$0,tstorage$0);
        else
         var stack=[0,[0,[0,tstorage$0[1],tstorage$0[2],_acU_],0]];
        typecheck_instr(1,[0,_ze_,0],stack,code);
        var code$0=caml_call1(optimize_instr(config$0),code);
        typecheck_instr(1 - config$0[5],[0,_ze_,0],stack,code$0);
        return [0,name,[0,tparameter,tresult,code$0,pure,doc]]}
      return caml_call2(Utils_List[20],_aS2_,views)}
    var
     Smartml_Compiler=
      [0,
       mtype_of_type,
       compile_value,
       pack_value,
       unpack_value,
       compile_instance,
       compile_views,
       simplify_via_michel];
    caml_register_global(6514,Smartml_Compiler,"Smartml__Compiler");
    function context
     (contract_id,
      sender,
      source,
      opt,
      time,
      amount,
      level,
      voting_powers,
      line_no,
      debug,
      param)
     {if(opt)var sth=opt[1],chain_id=sth;else var chain_id=cst$292;
      var source$0=source || sender;
      return [0,
              [0,
               sender,
               source$0,
               chain_id,
               time,
               amount,
               level,
               voting_powers,
               line_no,
               debug,
               contract_id]]}
    function context_sender(c){return c[1][1]}
    function context_time(c){return c[1][4]}
    function context_contract_id(c){return c[1][10]}
    function context_line_no(c){return c[1][8]}
    function context_debug(c){return c[1][9]}
    var ExecFailure=[248,cst_Smartml_Interpreter_ExecFa,caml_fresh_oo_id(0)];
    function extend_path(param,steps)
     {var steps$0=param[2],root=param[1];
      return [0,root,caml_call2(Stdlib[37],steps$0,steps)]}
    function get_in_contract(message,param)
     {if(0 === param[0])
       {var l=param[1];
        throw [0,
               SmartExcept,
               [0,
                _acV_,
                [0,[0,936573133,message],[0,14832,[0,[0,4100400,l],0]]]]]}
      var x=param[1];
      return x}
    function _acW_(x){return [1,x]}
    var
     lens_heap_ref=
      bi
       (function(param)
         {if(1 === param[0]){var x=param[1];return x}
          return caml_call1(Stdlib[2],cst_not_a_heap_reference)},
        _acW_);
    function lens_of_step(config,line_no)
     {var Printer=get$0(config),line_no$0=string_of_line_no(line_no);
      return function(param)
       {switch(param[0])
         {case 0:
           var
            attr=param[1],
            _aSY_=caml_call2(Stdlib_printf[4],_acX_,line_no$0);
           return [0,lens_record_at(attr),_aSY_];
          case 1:
           var
            key=param[1],
            _aSZ_=caml_call4(Printer[4],0,0,0,key),
            _aS0_=caml_call3(Stdlib_printf[4],_acY_,line_no$0,_aSZ_);
           return [0,lens_map_at(key),_aS0_];
          default:
           var
            i=param[1],
            _aS1_=caml_call3(Stdlib_printf[4],_acZ_,line_no$0,i);
           return [0,lens_list_nth(i),_aS1_]}}}
    function lens_of_path(config,line_no,env,param$0)
     {var steps$0=param$0[2],root=param$0[1],acc$0=acc,param=steps$0;
      for(;;)
       {if(param)
         {var _aSV_=param[1];
          if(param[2])
           {var
             steps=param[2],
             match=caml_call1(lens_of_step(config,line_no),_aSV_),
             err=match[2],
             l=match[1],
             acc$1=symbol$0(acc$0,symbol$0(l,some$0(err))),
             acc$0=acc$1,
             param=steps;
            continue}
          var
           match$0=caml_call1(lens_of_step(config,line_no),_aSV_),
           err$0=match$0[2],
           l$0=match$0[1],
           match$1=[0,symbol$0(acc$0,l$0),err$0]}
        else
         var match$1=[0,option$0(cst_lens_of_steps$0),cst_lens_of_steps];
        var err$1=match$1[2],l$1=match$1[1];
        if(root)
         var
          name=root[1],
          _aSS_=symbol$0(lens_heap_ref,unref),
          _aST_=
           symbol$0
            (assoc_exn
              (caml_string_equal,
               name,
               caml_call2(Stdlib[28],cst_local_not_found,name)),
             _aSS_),
          _aSW_=symbol$0(ref(env[3]),_aST_);
        else
         var
          f=
           function(s)
            {function _aSX_(storage){return [0,s[1],storage,s[3],s[4],s[5]]}
             return [0,s[2],_aSX_]},
          _aSU_=symbol$0([0,f],some$0(cst_no_storage)),
          _aSW_=symbol$0(ref(get_in_contract(cst_variable,env[1])[3]),_aSU_);
        return [0,symbol$0(_aSW_,l$1),err$1]}}
    function addStep(opt,upperSteps,env,c,elements)
     {if(opt)var sth=opt[1],sub_steps=sth;else var sub_steps=[0,0];
      var _aSN_=env[5];
      if(_aSN_)
       {var
         _aSO_=upperSteps[1],
         in_contract=get_in_contract(cst_not_in_contract,env[1]),
         storage=caml_call2(Utils_Option[50],_ac0_,in_contract[3][1][2]),
         balance=in_contract[3][1][1],
         _aSJ_=0,
         _aSK_=
          function(param)
           {var _aSR_=param[2];
            if(1 === _aSR_[0])
             {var x=_aSR_[1],n=param[1];return [0,[0,n,x[1]]]}
            return 0},
         _aSL_=caml_call2(Base_List[119],env[3][1],_aSK_),
         _aSM_=
          function(param)
           {var _aSQ_=param[2];
            if(0 === _aSQ_[0])
             {var match=_aSQ_[1],v=match[1],n=param[1];
              return [0,[0,n,[0,v,0]]]}
            return 0};
        upperSteps[1]
        =
        [0,
         [0,
          c,
          caml_call2(Base_List[119],env[3][1],_aSM_),
          _aSL_,
          storage,
          balance,
          _aSJ_,
          sub_steps,
          elements],
         _aSO_];
        var _aSP_=0}
      else
       var _aSP_=_aSN_;
      return _aSP_}
    function add_variable(name,value,vars)
     {var match=caml_call3(Utils_List[82],0,name,vars);
      if(match)
       {var
         _aSH_=caml_call2(Stdlib[28],name,cst_already_defined),
         _aSI_=caml_call2(Stdlib[28],cst_Variable,_aSH_);
        return caml_call1(Stdlib[2],_aSI_)}
      return [0,[0,name,value],vars]}
    function assert_unit(config,c)
     {var _aSE_=get$0(config);
      return function(param)
       {var _aSF_=param[1];
        if(0 === _aSF_[0] && typeof _aSF_[1] === "number")return 0;
        var _aSG_=[0,14832,[0,[0,848053268,c[3]],0]];
        throw [0,
               SmartExcept,
               [0,
                _ac1_,
                [0,14832,[0,[0,936573133,caml_call3(_aSE_[18],0,0,c)],_aSG_]]]]}}
    function _ac2_(config,scenario_state,id)
     {var Printer=get$0(config),address=caml_call3(Printer[28],0,id,0);
      caml_call3(Stdlib_hashtbl[11],scenario_state[3],id,address);
      caml_call3(Stdlib_hashtbl[11],scenario_state[4],address,id);
      return address}
    function get_contract_address(config,scenario_state,id)
     {var match=caml_call2(Stdlib_hashtbl[7],scenario_state[3],id);
      if(match){var addr=match[1];return addr}
      return _ac2_(config,scenario_state,id)}
    function update_contract_address(config,scenario_state,id)
     {_ac2_(config,scenario_state,id);return 0}
    function interpret_expr(config,upper_steps,env,scenario_state)
     {var Printer=get$0(config);
      function interp(e)
       {var e$0=e;
        for(;;)
         {var primitives=env[2],_aNU_=e$0[1];
          switch(_aNU_[0])
           {case 0:
             var p=_aNU_[1];
             return interpret_mprim0(config,env,e$0,scenario_state,p);
            case 1:
             var x=_aNU_[2],p$0=_aNU_[1];
             return interpret_mprim1
                     (config,upper_steps,env,e$0,scenario_state,p$0,x);
            case 2:throw [0,Assert_failure,_ac3_];
            case 3:
             var x2=_aNU_[3],x1=_aNU_[2],p$1=_aNU_[1];
             return interpret_mprim2
                     (config,upper_steps,env,e$0,scenario_state,p$1,x1,x2);
            case 4:
             var x3=_aNU_[4],x2$0=_aNU_[3],x1$0=_aNU_[2],p$2=_aNU_[1];
             return interpret_mprim3
                     (config,upper_steps,env,e$0,scenario_state,p$2,x1$0,x2$0,x3);
            case 5:
             var prim=_aNU_[1];
             if(typeof prim === "number")
              return nat$1(get_in_contract(cst_Level,env[1])[2][6]);
             else
              switch(prim[0])
               {case 0:var x$0=prim[1];return literal$1(x$0);
                case 1:
                 var
                  match=prim[1],
                  type=match[3],
                  entry_point=match[2],
                  address=match[1];
                 return contract$1(entry_point,address,type);
                case 2:var x$1=prim[1];return bounded$1(x$1);
                case 3:
                 var _aNV_=prim[1];
                 if(caml_string_notequal(_aNV_,cst_operations$13))
                  {if(caml_string_notequal(_aNV_,cst_parameter$7))
                    {if(caml_string_notequal(_aNV_,cst_storage$25))
                      {var match$0=caml_call3(Utils_List[82],0,_aNV_,env[3][1]);
                       if(match$0)
                        {var _aNW_=match$0[1];
                         if(1 === _aNW_[0])
                          {var match$1=_aNW_[1],x$2=match$1[1];return x$2}}
                       var _aNX_=caml_call2(Stdlib[28],cst_Not_a_local,_aNV_);
                       return caml_call1(Stdlib[2],_aNX_)}
                     var in_contract=get_in_contract(cst_storage$26,env[1]);
                     return caml_call2
                             (Utils_Option[50],_ac4_,in_contract[3][1][2])}
                   return get_in_contract(cst_parameter$8,env[1])[1]}
                 return list$1
                         (caml_call2(Utils_List[20],operation$0,env[4][1]),operation);
                case 4:
                 var
                  name=prim[1],
                  match$2=caml_call3(Utils_List[82],0,name,env[3][1]);
                 if(match$2)
                  {var _aNY_=match$2[1];
                   if(1 === _aNY_[0])
                    {var match$3=_aNY_[1],x$3=match$3[1];return x$3}
                   var
                    _aNZ_=
                     caml_call2(Stdlib[28],cst_Strange_meta_local,name);
                   return caml_call1(Stdlib[2],_aNZ_)}
                 var _aN0_=caml_call2(Stdlib[28],cst_Not_a_meta_local,name);
                 return caml_call1(Stdlib[2],_aN0_);
                case 5:
                 var
                  id=prim[1],
                  match$4=caml_call3(Utils_List[82],0,id,env[8]);
                 if(match$4){var e$1=match$4[1],e$0=e$1;continue}
                 return caml_call3(Stdlib_printf[9],Stdlib[2],_ac5_,id);
                case 6:
                 var
                  n=prim[1],
                  match$5=caml_call3(Utils_List[82],0,n,env[3][1]);
                 if(match$5)
                  {var _aN1_=match$5[1];
                   if(2 === _aN1_[0]){var x$4=_aN1_[1];return x$4}}
                 var _aN2_=caml_call2(Stdlib_printf[4],_ac6_,n);
                 return caml_call1(Stdlib[2],_aN2_);
                case 7:
                 var
                  name$0=prim[1],
                  match$6=caml_call3(Utils_List[82],0,name$0,env[3][1]);
                 if(match$6)
                  {var _aN3_=match$6[1];
                   if(0 === _aN3_[0])
                    {var match$7=_aN3_[1],v=match$7[1];return v}}
                 var
                  _aN4_=env[3][1],
                  _aN5_=function(param){var x=param[1];return x},
                  _aN6_=caml_call2(Utils_List[20],_aN5_,_aN4_),
                  _aN7_=caml_call2(Utils_String[7],cst$293,_aN6_),
                  _aN8_=caml_call3(Stdlib_printf[4],_ac7_,name$0,_aN7_);
                 return caml_call1(Stdlib[2],_aN8_);
                case 8:
                 var
                  name$1=prim[1],
                  match$8=caml_call3(Utils_List[82],0,name$1,env[3][1]);
                 if(match$8)
                  {var _aN9_=match$8[1];
                   if(3 === _aN9_[0]){var v$0=_aN9_[1];return v$0}}
                 var
                  _aN__=env[3][1],
                  _aN$_=function(param){var x=param[1];return x},
                  _aOa_=caml_call2(Utils_List[20],_aN$_,_aN__),
                  _aOb_=caml_call2(Utils_String[7],cst$294,_aOa_),
                  _aOc_=caml_call3(Stdlib_printf[4],_ac8_,name$1,_aOb_);
                 return caml_call1(Stdlib[2],_aOc_);
                case 9:
                 var
                  seed=prim[1],
                  account=caml_call1(primitives[2][8],seed),
                  seed$0=string$4(seed),
                  pkh=key_hash$1(account[1]),
                  address$0=address$1(0,account[1]),
                  pk=key$1(account[2]),
                  sk=secret_key$1(account[3]);
                 return record_comb
                         ([0,
                           [0,cst_seed$1,seed$0],
                           [0,
                            [0,cst_address$6,address$0],
                            [0,
                             [0,cst_public_key$0,pk],
                             [0,
                              [0,cst_public_key_hash$0,pkh],
                              [0,[0,cst_secret_key$3,sk],0]]]]]);
                case 10:
                 var entry_point$0=prim[2],id$0=prim[1];
                 return address$1
                         (entry_point$0,
                          get_contract_address(config,scenario_state,id$0));
                case 11:
                 var
                  id$1=prim[1],
                  match$9=caml_call2(Stdlib_hashtbl[7],scenario_state[1],id$1);
                 if(match$9){var t=match$9[1];return mutez$0(t[2][1])}
                 var _aOd_=[0,14832,[0,[0,848053268,e$0[3]],0]];
                 throw [0,
                        SmartExcept,
                        [0,
                         _ac9_,
                         [0,[0,936573133,caml_call1(Printer[27],id$1)],_aOd_]]];
                case 12:
                 var
                  id$2=prim[1],
                  match$10=
                   caml_call2(Stdlib_hashtbl[7],scenario_state[1],id$2);
                 if(match$10)
                  {var _aOe_=match$10[1][2][3];
                   if(_aOe_)
                    {var baker=_aOe_[1];
                     return some$2
                             (caml_call1(baker_value_of_protocol(config[6]),baker))}
                   return none$1(baker_type_of_protocol(config[6]))}
                 var _aOf_=[0,14832,[0,[0,848053268,e$0[3]],0]];
                 throw [0,
                        SmartExcept,
                        [0,
                         _ac__,
                         [0,[0,936573133,caml_call1(Printer[27],id$2)],_aOf_]]];
                case 13:
                 var
                  id$3=prim[1],
                  match$11=
                   caml_call2(Stdlib_hashtbl[7],scenario_state[1],id$3);
                 if(match$11)
                  {var t$0=match$11[1],_aOg_=t$0[2][2];
                   if(_aOg_){var storage=_aOg_[1];return storage}
                   var _aOh_=[0,14832,[0,[0,848053268,e$0[3]],0]];
                   throw [0,
                          SmartExcept,
                          [0,
                           _ac$_,
                           [0,[0,936573133,caml_call1(Printer[27],id$3)],_aOh_]]]}
                 var _aOi_=[0,14832,[0,[0,848053268,e$0[3]],0]];
                 throw [0,
                        SmartExcept,
                        [0,
                         _ada_,
                         [0,[0,936573133,caml_call1(Printer[27],id$3)],_aOi_]]];
                case 14:
                 var
                  entry_point$1=prim[2],
                  id$4=prim[1],
                  match$12=
                   caml_call2(Stdlib_hashtbl[7],scenario_state[1],id$4);
                 if(match$12)
                  {var t$1=match$12[1];
                   if(entry_point$1)
                    {var
                      entry_point$2=entry_point$1[1],
                      match$13=getRepr(t$1[1][1][13][1][1]),
                      switch$0=0;
                     if(typeof match$13 !== "number" && 7 === match$13[0])
                      {var
                        row=match$13[2],
                        _aOj_=caml_call3(Utils_List[82],0,entry_point$2,row),
                        t_ep=caml_call2(Utils_Option[48],_adc_,_aOj_),
                        t_ep$0=t_ep;
                       switch$0 = 1}
                     if(! switch$0)throw [0,Assert_failure,_adb_]}
                   else
                    var t_ep$0=t$1[1][1][13][1][1];
                   return contract$1
                           (entry_point$1,
                            get_contract_address(config,scenario_state,id$4),
                            t_ep$0)}
                 var _aOk_=[0,14832,[0,[0,848053268,e$0[3]],0]];
                 throw [0,
                        SmartExcept,
                        [0,
                         _add_,
                         [0,[0,936573133,caml_call1(Printer[27],id$4)],_aOk_]]];
                default:
                 var
                  id$5=prim[1],
                  match$14=
                   caml_call2(Stdlib_hashtbl[7],scenario_state[2],id$5);
                 if(match$14){var x$5=match$14[1];return x$5}
                 var _aOl_=[0,14832,[0,[0,848053268,e$0[3]],0]];
                 throw [0,
                        SmartExcept,
                        [0,
                         _ade_,
                         [0,[0,936573133,caml_call1(Stdlib[33],id$5)],_aOl_]]]}
            case 6:
             var x$6=_aNU_[2],prim$0=_aNU_[1],pp=function(param){return 0};
             if(typeof prim$0 === "number")
              switch(prim$0)
               {case 0:
                 var _aOm_=interp(x$6)[1];
                 if(5 === _aOm_[0])
                  var
                   sl=_aOm_[2],
                   _aOp_=
                    function(sb)
                     {var _aSy_=sb[1];
                      if(0 === _aSy_[0])
                       {var _aSz_=_aSy_[1];
                        if(typeof _aSz_ !== "number")
                         switch(_aSz_[0]){case 2:case 3:var s=_aSz_[1];return s}}
                      var _aSA_=caml_call3(Printer[14],0,0,e$0);
                      return caml_call3(Stdlib_format[134],Stdlib[2],_adj_,_aSA_)},
                   vals=caml_call2(Base_List[72],sl,_aOp_);
                 else
                  var
                   _aOn_=caml_call3(Printer[14],0,0,e$0),
                   vals=caml_call3(Stdlib_format[134],Stdlib[2],_adf_,_aOn_);
                 var match$15=getRepr(e$0[2]);
                 if(typeof match$15 !== "number" && 1 === match$15[0])
                  {var _aOo_=match$15[1];
                   if(typeof _aOo_ === "number")
                    {if(5 === _aOo_)
                      return string$4(caml_call2(Utils_String[7],cst$295,vals));
                     if(6 === _aOo_)
                      return bytes$3(caml_call2(Utils_String[7],cst$296,vals))}}
                 throw [0,
                        SmartExcept,
                        [0,
                         _adi_,
                         [0,
                          [0,937565914,string$0],
                          [0,
                           _adh_,
                           [0,
                            [0,937565914,bytes$0],
                            [0,
                             _adg_,
                             [0,[0,771172693,e$0],[0,14832,[0,[0,848053268,e$0[3]],0]]]]]]]]];
                case 1:
                 var _aOq_=interp(x$6)[1];
                 if(2 === _aOq_[0])
                  {var
                    match$16=_aOq_[1],
                    entry_point$3=match$16[2],
                    address$2=match$16[1];
                   return literal$1([7,address$2,entry_point$3])}
                 var
                  _aOr_=caml_call3(Printer[14],0,0,x$6),
                  _aOs_=
                   caml_call2(Stdlib[28],cst_Interpreter_sp_to_address_,_aOr_);
                 return caml_call1(Stdlib[2],_aOs_);
                case 2:
                 var _aOt_=interp(x$6)[1];
                 if(0 === _aOt_[0])
                  {var _aOu_=_aOt_[1];
                   if(typeof _aOu_ !== "number" && 10 === _aOu_[0])
                    {var key_hash=_aOu_[1];return contract$1(0,key_hash,unit$0)}}
                 var
                  _aOv_=caml_call3(Printer[14],0,0,e$0),
                  _aOw_=
                   caml_call2(Stdlib[28],cst_Interpreter_sp_implicit_ac,_aOv_);
                 return caml_call1(Stdlib[2],_aOw_);
                case 3:
                 var l=interp(x$6),_aOx_=l[1],match$17=getRepr(x$6[2]);
                 if
                  (5
                   ===
                   _aOx_[0]
                   &&
                   typeof match$17
                   !==
                   "number"
                   &&
                   2
                   ===
                   match$17[0]
                   &&
                   1
                   ===
                   match$17[1])
                  {var t$2=match$17[2],l$0=_aOx_[2];
                   return list$1(caml_call1(Utils_List[12],l$0),t$2)}
                 throw [0,Assert_failure,_adk_];
                case 4:
                 var _aOy_=interp(x$6)[1];
                 if(0 === _aOy_[0])
                  {var _aOz_=_aOy_[1];
                   if(typeof _aOz_ !== "number")
                    switch(_aOz_[0])
                     {case 1:
                       var i=_aOz_[1];return int$4(caml_call1(Big_int[3],i));
                      case 15:
                       var hex=_aOz_[1];
                       try
                        {var
                          _aOC_=caml_call1(Utils_Misc[4][1],hex),
                          _aOD_=caml_call1(primitives[1][1],_aOC_),
                          _aOB_=_aOD_}
                       catch(e)
                        {e = caml_wrap_exception(e);
                         var
                          _aOA_=caml_call1(Base_Exn[9],e),
                          _aOB_=caml_call3(Stdlib_printf[9],Stdlib[2],_adn_,_aOA_)}
                       return bls12_381_g1$1(caml_call1(Utils_Misc[4][2],_aOB_));
                      case 16:
                       var hex$0=_aOz_[1];
                       try
                        {var
                          _aOG_=caml_call1(Utils_Misc[4][1],hex$0),
                          _aOH_=caml_call1(primitives[1][4],_aOG_),
                          _aOF_=_aOH_}
                       catch(e)
                        {e = caml_wrap_exception(e);
                         var
                          _aOE_=caml_call1(Base_Exn[9],e),
                          _aOF_=caml_call3(Stdlib_printf[9],Stdlib[2],_ado_,_aOE_)}
                       return bls12_381_g2$1(caml_call1(Utils_Misc[4][2],_aOF_));
                      case 17:
                       var hex$1=_aOz_[1];
                       try
                        {var
                          _aOK_=caml_call1(Utils_Misc[4][1],hex$1),
                          _aOL_=caml_call1(primitives[1][7],_aOK_),
                          _aOJ_=_aOL_}
                       catch(e)
                        {e = caml_wrap_exception(e);
                         var
                          _aOI_=caml_call1(Base_Exn[9],e),
                          _aOJ_=caml_call3(Stdlib_printf[9],Stdlib[2],_adp_,_aOI_)}
                       return bls12_381_fr$1(caml_call1(Utils_Misc[4][2],_aOJ_))
                      }}
                 throw [0,
                        SmartExcept,
                        [0,
                         _adm_,
                         [0,
                          [0,771172693,x$6],
                          [0,_adl_,[0,[0,-991563951,interp(x$6)],0]]]]];
                case 5:
                 var r=interp(x$6);
                 try
                  {var _aOO_=bytes$3(pack_value(scenario_state[6],r));
                   return _aOO_}
                 catch(exn)
                  {exn = caml_wrap_exception(exn);
                   if(exn[1] === Data_encoding[77][6])
                    {var
                      write_error=exn[2],
                      _aOM_=[0,[0,848053268,e$0[3]],0],
                      _aON_=
                       [0,
                        _adr_,
                        [0,
                         14832,
                         [0,
                          [0,771172693,e$0],
                          [0,
                           14832,
                           [0,
                            [0,-991563951,r],
                            [0,
                             [0,
                              936573133,
                              caml_call3
                               (Stdlib_format[127],_adq_,Data_encoding[77][4],write_error)],
                             _aOM_]]]]]];
                     throw [0,ExecFailure,string$4(cst_Pack_error),_aON_]}
                   throw exn}
                case 6:var e$0=x$6;continue;
                case 7:
                 var baker$0=un_baker(interp(x$6));
                 if(baker$0)
                  {var
                    key_hash$0=baker$0[1],
                    _aOP_=get_in_contract(cst_Voting_power,env[1])[2][7],
                    _aOQ_=
                     function(param)
                      {var k=param[1];return caml_string_equal(k,key_hash$0)},
                    registered=caml_call2(Utils_List[32],_aOQ_,_aOP_);
                   if(1 - registered)
                    {var _aOR_=caml_call2(Stdlib_printf[4],_ads_,key_hash$0);
                     caml_call1(Stdlib[2],_aOR_)}}
                 return operation$0([1,baker$0]);
                case 8:
                 var
                  x$7=unInt$0(pp,interp(x$6)),
                  result=caml_call2(Big_int[23],x$7,Big_int[1]);
                 return int$4(caml_call1(Utils_Bigint[5],result));
                case 9:
                 var
                  result$0=
                   function(length)
                    {return nat$1(caml_call1(Utils_Bigint[5],length))},
                  _aOS_=interp(x$6)[1];
                 switch(_aOS_[0])
                  {case 0:
                    var _aOT_=_aOS_[1];
                    if(typeof _aOT_ !== "number")
                     switch(_aOT_[0])
                      {case 2:
                       case 3:
                        var s=_aOT_[1];return result$0(caml_ml_string_length(s))
                       }
                    break;
                   case 7:
                    var l$2=_aOS_[4];
                    return result$0(caml_call1(Utils_List[4],l$2));
                   case 5:
                   case 6:
                    var l$1=_aOS_[2];
                    return result$0(caml_call1(Utils_List[4],l$1))
                   }
                 throw [0,
                        SmartExcept,
                        [0,_adt_,[0,[0,771172693,x$6],[0,[0,848053268,x$6[3]],0]]]];
                case 10:
                 var _aOU_=interp(x$6)[1];
                 switch(_aOU_[0])
                  {case 7:
                    var
                     l$4=_aOU_[4],
                     _aOZ_=zero_of_type(e$0[2]),
                     _aO0_=
                      function(x,param)
                       {var y=param[2];return plus_inner(primitives,x,y)};
                    return caml_call3(Utils_List[25],_aO0_,_aOZ_,l$4);
                   case 5:
                   case 6:
                    var
                     l$3=_aOU_[2],
                     _aOX_=zero_of_type(e$0[2]),
                     _aOY_=function(x,y){return plus_inner(primitives,x,y)};
                    return caml_call3(Utils_List[25],_aOY_,_aOX_,l$3);
                   default:
                    var
                     _aOV_=caml_call3(Printer[14],0,0,e$0),
                     _aOW_=caml_call2(Stdlib[28],cst_bad_sum,_aOV_);
                    return caml_call1(Stdlib[2],_aOW_)}
                case 11:
                 var _aO1_=interp(x$6)[1];
                 if(0 === _aO1_[0])
                  {var _aO2_=_aO1_[1];
                   if(typeof _aO2_ !== "number")
                    switch(_aO2_[0])
                     {case 1:var i$0=_aO2_[1];return int$4(i$0);
                      case 17:
                       var hex$2=_aO2_[1];
                       try
                        {var
                          _aO5_=caml_call1(Utils_Misc[4][1],hex$2),
                          _aO6_=caml_call1(primitives[1][11],_aO5_),
                          _aO4_=_aO6_}
                       catch(e)
                        {e = caml_wrap_exception(e);
                         var
                          _aO3_=caml_call1(Base_Exn[9],e),
                          _aO4_=caml_call3(Stdlib_printf[9],Stdlib[2],_adv_,_aO3_)}
                       return int$4(caml_call1(Big_int[34],_aO4_))
                      }}
                 throw [0,SmartExcept,[0,_adu_,[0,[0,771172693,e$0],0]]];
                case 12:
                 var t$3=interp(x$6),_aO7_=interp(x$6)[1];
                 if(11 === _aO7_[0])
                  {var
                    amount=_aO7_[3],
                    content=_aO7_[2],
                    address$3=_aO7_[1],
                    address$4=literal$1([7,address$3,0]),
                    amount$0=nat$1(amount);
                   return tuple$1
                           ([0,
                             tuple$1([0,address$4,[0,content,[0,amount$0,0]]]),
                             [0,t$3,0]])}
                 throw [0,Assert_failure,_adw_];
                case 13:
                 var _aO8_=interp(x$6)[1];
                 if(8 === _aO8_[0])
                  {var _aO9_=_aO8_[1];
                   if(_aO9_)
                    {var _aO__=_aO9_[1][1];
                     if(11 === _aO__[0])
                      {var _aO$_=_aO9_[2];
                       if(_aO$_)
                        {var _aPa_=_aO$_[1][1];
                         if(11 === _aPa_[0] && ! _aO$_[2])
                          {var
                            amount2=_aPa_[3],
                            content2=_aPa_[2],
                            ticketer2=_aPa_[1],
                            amount1=_aO__[3],
                            content1=_aO__[2],
                            ticketer1=_aO__[1];
                           if
                            (caml_string_equal(ticketer1,ticketer2)
                             &&
                             caml_call2(equal$7,content1,content2))
                            return some$2
                                    (ticket$0
                                      (ticketer1,
                                       content1,
                                       caml_call2(Utils_Bigint[10],amount1,amount2)));
                           throw [0,Assert_failure,_ady_]}}}}}
                 throw [0,Assert_failure,_adx_];
                case 14:
                 var _aPb_=interp(x$6)[1];
                 if(5 === _aPb_[0])
                  var
                   sl$0=_aPb_[2],
                   _aPg_=
                    function(sb)
                     {var _aSr_=sb[1];
                      if(8 === _aSr_[0])
                       {var _aSt_=_aSr_[1];
                        if(_aSt_)
                         {var _aSu_=_aSt_[2];
                          if(_aSu_ && ! _aSu_[2])
                           {var
                             i2=_aSu_[1],
                             i1=_aSt_[1],
                             _aSv_=unBls12_381(i2),
                             _aSw_=caml_call1(Utils_Misc[4][1],_aSv_),
                             _aSx_=unBls12_381(i1);
                            return [0,caml_call1(Utils_Misc[4][1],_aSx_),_aSw_]}}}
                      var _aSs_=caml_call3(Printer[14],0,0,e$0);
                      return caml_call3(Stdlib_format[134],Stdlib[2],_adB_,_aSs_)},
                   vals$0=caml_call2(Base_List[72],sl$0,_aPg_);
                 else
                  var
                   _aPc_=caml_call3(Printer[14],0,0,e$0),
                   vals$0=caml_call3(Stdlib_format[134],Stdlib[2],_adz_,_aPc_);
                 try
                  {var _aPf_=caml_call1(primitives[1][12],vals$0),_aPe_=_aPf_}
                 catch(e)
                  {e = caml_wrap_exception(e);
                   var
                    _aPd_=caml_call1(Base_Exn[9],e),
                    _aPe_=caml_call3(Stdlib_printf[9],Stdlib[2],_adA_,_aPd_)}
                 return bool$2(_aPe_);
                case 15:
                 var _aPh_=interp(x$6)[1],switch$1=0;
                 if(0 === _aPh_[0])
                  {var _aPi_=_aPh_[1],switch$2=0;
                   if(typeof _aPi_ !== "number" && 10 === _aPi_[0])
                    {var key_hash$3=_aPi_[1],key_hash$2=key_hash$3;
                     switch$1 = 1;
                     switch$2 = 1}}
                 if(! switch$1)
                  var
                   _aPj_=caml_call3(Printer[14],0,0,e$0),
                   _aPk_=
                    caml_call2(Stdlib[28],cst_Interpreter_sp_voting_powe,_aPj_),
                   key_hash$2=caml_call1(Stdlib[2],_aPk_);
                 var
                  _aPl_=get_in_contract(cst_Voting_power$0,env[1])[2][7],
                  _aPm_=
                   function(param)
                    {var k=param[1],_aSq_=key_hash$1(key_hash$2);
                     return caml_call2(equal$7,key_hash$1(k),_aSq_)},
                  res=caml_call2(Utils_List[38],_aPm_,_aPl_);
                 if(res)
                  var match$18=res[1],v$1=match$18[2],v$2=v$1;
                 else
                  var v$2=Big_int[1];
                 return nat$1(v$2);
                default:
                 var _aPn_=interp(x$6)[1];
                 if(1 === _aPn_[0]){var l$5=_aPn_[1];return literal$1(l$5)}
                 throw [0,Assert_failure,_adC_]}
             else
              switch(prim$0[0])
               {case 0:
                 var i$1=prim$0[1],vs=untuple(pp,interp(x$6));
                 return i$1 < caml_call1(Utils_List[4],vs)
                         ?caml_call2(Utils_List[10],vs,i$1)
                         :caml_call1(Stdlib[2],cst_interpreter_short_tuple);
                case 1:
                 var
                  rev=prim$0[1],
                  l$6=interp(x$6),
                  _aPo_=l$6[1],
                  match$19=getRepr(x$6[2]);
                 if
                  (6
                   ===
                   _aPo_[0]
                   &&
                   typeof match$19
                   !==
                   "number"
                   &&
                   2
                   ===
                   match$19[0]
                   &&
                   2
                   ===
                   match$19[1])
                  {var
                    telement=match$19[2],
                    l$7=_aPo_[2],
                    _aPp_=rev?caml_call1(Utils_List[12],l$7):l$7;
                   return list$1(_aPp_,telement)}
                 throw [0,Assert_failure,_adD_];
                case 2:
                 var
                  rev$0=prim$0[1],
                  l$8=interp(x$6),
                  _aPq_=l$8[1],
                  match$20=getRepr(x$6[2]);
                 if
                  (7
                   ===
                   _aPq_[0]
                   &&
                   typeof match$20
                   !==
                   "number"
                   &&
                   3
                   ===
                   match$20[0])
                  {var _aPr_=match$20[1],_aPs_=_aPq_[4];
                   if(typeof _aPr_ === "number" && _aPr_)
                    {var
                      tvalue=match$20[3],
                      tkey=match$20[2],
                      _aPt_=key_value(tkey,tvalue),
                      _aPu_=
                       function(param)
                        {var v=param[2],k=param[1];
                         return record_comb
                                 ([0,[0,cst_key$6,k],[0,[0,cst_value$0,v],0]])},
                      _aPv_=rev$0?Utils_List[22]:Utils_List[20];
                     return list$1(caml_call2(_aPv_,_aPu_,_aPs_),_aPt_)}}
                 throw [0,Assert_failure,_adE_];
                case 3:
                 var
                  rev$1=prim$0[1],
                  l$9=interp(x$6),
                  _aPw_=l$9[1],
                  match$21=getRepr(x$6[2]);
                 if
                  (7
                   ===
                   _aPw_[0]
                   &&
                   typeof match$21
                   !==
                   "number"
                   &&
                   3
                   ===
                   match$21[0])
                  {var _aPx_=match$21[1],_aPy_=_aPw_[4];
                   if(typeof _aPx_ === "number" && _aPx_)
                    {var
                      tkey$0=match$21[2],
                      _aPz_=function(_aSD_){return _aSD_[1]},
                      _aPA_=rev$1?Utils_List[22]:Utils_List[20];
                     return list$1(caml_call2(_aPA_,_aPz_,_aPy_),tkey$0)}}
                 throw [0,Assert_failure,_adF_];
                case 4:
                 var
                  rev$2=prim$0[1],
                  l$10=interp(x$6),
                  _aPB_=l$10[1],
                  match$22=getRepr(x$6[2]);
                 if
                  (7
                   ===
                   _aPB_[0]
                   &&
                   typeof match$22
                   !==
                   "number"
                   &&
                   3
                   ===
                   match$22[0])
                  {var _aPC_=match$22[1],_aPD_=_aPB_[4];
                   if(typeof _aPC_ === "number" && _aPC_)
                    {var
                      tvalue$0=match$22[3],
                      _aPE_=function(_aSC_){return _aSC_[2]},
                      _aPF_=rev$2?Utils_List[22]:Utils_List[20];
                     return list$1(caml_call2(_aPF_,_aPE_,_aPD_),tvalue$0)}}
                 throw [0,Assert_failure,_adG_];
                case 5:
                 var t$4=prim$0[1],r$0=interp(x$6),_aPG_=r$0[1];
                 if(0 === _aPG_[0])
                  {var _aPH_=_aPG_[1];
                   if(typeof _aPH_ !== "number" && 3 === _aPH_[0])
                    {var b=_aPH_[1];
                     try
                      {var _aPO_=some$2(unpack_value(config,t$4,b));return _aPO_}
                     catch(exn)
                      {exn = caml_wrap_exception(exn);
                       if(exn[1] === Data_encoding[77][1])
                        {var
                          read_error=exn[2],
                          _aPK_=
                           [0,
                            14832,
                            [0,
                             [0,771172693,e$0],
                             [0,14832,[0,[0,-991563951,r$0],[0,[0,848053268,e$0[3]],0]]]]],
                          _aPL_=Data_encoding[77][2],
                          _aPM_=caml_call1(Utils_Misc[4][1],b),
                          _aPN_=
                           [0,
                            [0,
                             936573133,
                             caml_call4(Stdlib_format[127],_adH_,_aPM_,_aPL_,read_error)],
                            _aPK_];
                         throw [0,ExecFailure,string$4(cst_Unpack_error),_aPN_]}
                       throw exn}}}
                 var
                  _aPI_=caml_call3(Printer[14],0,0,e$0),
                  _aPJ_=
                   caml_call2(Stdlib[28],cst_Interpreter_sp_unpack_expe,_aPI_);
                 return caml_call1(Stdlib[2],_aPJ_);
                case 6:var e$0=x$6;continue;
                case 7:
                 var name$2=prim$0[1],_aPP_=interp(x$6)[1];
                 if(3 === _aPP_[0])
                  {var
                    l$11=_aPP_[2],
                    match$23=caml_call3(Utils_List[82],0,name$2,l$11);
                   if(match$23){var v$3=match$23[1];return v$3}
                   var
                    _aPS_=function(_aSB_){return _aSB_[1]},
                    _aPT_=caml_call2(Utils_List[20],_aPS_,l$11),
                    _aPU_=caml_call2(Utils_String[7],cst$297,_aPT_),
                    _aPV_=caml_call3(Printer[14],0,0,e$0),
                    _aPW_=caml_call4(Stdlib_printf[4],_adI_,name$2,_aPV_,_aPU_);
                   return caml_call1(Stdlib[2],_aPW_)}
                 var
                  _aPQ_=caml_call3(Printer[14],0,0,e$0),
                  _aPR_=caml_call2(Stdlib[28],cst_Not_a_record,_aPQ_);
                 return caml_call1(Stdlib[2],_aPR_);
                case 8:
                 var name$3=prim$0[1],_aPX_=e$0[2],_aPY_=interp(x$6);
                 return variant_with_type(_adJ_,x$6[3],name$3,_aPY_,_aPX_);
                default:
                 var name$4=prim$0[1],x$8=interp(x$6),_aPZ_=x$8[1];
                 if(4 === _aPZ_[0])
                  {var cons=_aPZ_[3];
                   return bool$2(caml_string_equal(cons,name$4))}
                 var
                  _aP0_=caml_call4(Printer[4],0,0,0,x$8),
                  _aP1_=caml_call3(Printer[14],0,0,e$0),
                  _aP2_=caml_call3(Stdlib_printf[4],_adK_,_aP1_,_aP0_);
                 return caml_call1(Stdlib[2],_aP2_)}
            case 7:
             var y=_aNU_[3],x$9=_aNU_[2],prim2=_aNU_[1];
             if(typeof prim2 === "number")
              switch(prim2)
               {case 0:
                 var
                  tm=caml_call1(unF,x$9[2]),
                  m=interp(x$9),
                  k=interp(y),
                  _aP3_=m[1];
                 if(typeof tm !== "number" && 3 === tm[0])
                  {var _aP4_=tm[1];
                   if(typeof _aP4_ === "number" && _aP4_ && 7 === _aP3_[0])
                    {var
                      m$0=_aP3_[4],
                      tvalue$1=tm[3],
                      match$24=caml_call3(Utils_List[82],[0,equal$7],k,m$0);
                     if(match$24){var v$4=match$24[1];return some$2(v$4)}
                     return none$1(tvalue$1)}}
                 throw [0,Assert_failure,_adL_];
                case 1:
                 var member=interp(y),_aP5_=interp(x$9)[1];
                 switch(_aP5_[0])
                  {case 6:
                    var
                     l$12=_aP5_[2],
                     _aP8_=function(x){return caml_call2(equal$7,x,member)};
                    return bool$2(caml_call2(Utils_List[32],_aP8_,l$12));
                   case 7:
                    var
                     l$13=_aP5_[4],
                     _aP9_=
                      function(param)
                       {var x=param[1];return caml_call2(equal$7,x,member)};
                    return bool$2(caml_call2(Utils_List[32],_aP9_,l$13));
                   default:
                    var
                     _aP6_=caml_call3(Printer[14],0,0,e$0),
                     _aP7_=caml_call2(Stdlib[28],cst_Cannot_compute,_aP6_);
                    return caml_call1(Stdlib[2],_aP7_)}
                case 2:
                 var _aP__=interp(y);
                 return call_lambda$0
                         (config,upper_steps,env,scenario_state,interp(x$9),_aP__);
                case 3:
                 var _aP$_=interp(y);return closure_apply(interp(x$9),_aP$_);
                case 4:var _aQa_=interp(y);return cons$0(interp(x$9),_aQa_);
                case 5:
                 var _aQb_=interp(x$9)[1],_aQc_=interp(y)[1];
                 if(0 === _aQb_[0])
                  {var _aQd_=_aQb_[1],switch$3=0;
                   if(typeof _aQd_ === "number" || ! (5 === _aQd_[0]))
                    switch$3 = 1;
                   else
                    if(0 === _aQc_[0])
                     {var _aQg_=_aQc_[1];
                      if(typeof _aQg_ !== "number" && 1 === _aQg_[0])
                       {var s$0=_aQg_[1],t$5=_aQd_[1];
                        return timestamp$1(caml_call2(Big_int[5],t$5,s$0))}}}
                 var
                  _aQe_=caml_call3(Printer[14],0,0,e$0),
                  _aQf_=caml_call2(Stdlib[28],cst_Cannot_add_timestamp,_aQe_);
                 return caml_call1(Stdlib[2],_aQf_);
                case 6:
                 var
                  content$0=interp(x$9),
                  _aQh_=get_in_contract(cst_ETicket$0,env[1])[2][10];
                 if(_aQh_)
                  {var
                    i$2=_aQh_[1],
                    ticketer=get_contract_address(config,scenario_state,i$2),
                    _aQi_=interp(y)[1];
                   if(0 === _aQi_[0])
                    {var _aQj_=_aQi_[1];
                     if(typeof _aQj_ !== "number" && 1 === _aQj_[0])
                      {var i$3=_aQj_[1];return ticket$0(ticketer,content$0,i$3)}}
                   throw [0,Assert_failure,_adM_]}
                 throw [0,Assert_failure,_adN_];
                default:
                 var
                  ticket=interp(x$9),
                  _aQk_=interp(x$9)[1],
                  _aQl_=interp(y)[1];
                 if(11 === _aQk_[0] && 8 === _aQl_[0])
                  {var _aQm_=_aQl_[1];
                   if(_aQm_)
                    {var _aQn_=_aQm_[1][1];
                     if(0 === _aQn_[0])
                      {var _aQo_=_aQn_[1],switch$4=0;
                       if(typeof _aQo_ === "number" || ! (1 === _aQo_[0]))
                        switch$4 = 1;
                       else
                        {var _aQp_=_aQm_[2];
                         if(_aQp_)
                          {var _aQq_=_aQp_[1][1];
                           if(0 === _aQq_[0])
                            {var _aQr_=_aQq_[1],switch$5=0;
                             if(typeof _aQr_ !== "number" && 1 === _aQr_[0])
                              {if(! _aQp_[2])
                                {var
                                  a2=_aQr_[1],
                                  a1=_aQo_[1],
                                  amount$1=_aQk_[3],
                                  content$1=_aQk_[2],
                                  ticketer$0=_aQk_[1],
                                  _aQs_=caml_call2(Utils_Bigint[10],a1,a2);
                                 if(caml_call2(Utils_Bigint[1],_aQs_,amount$1))
                                  {var
                                    t1=ticket$0(ticketer$0,content$1,a1),
                                    t2=ticket$0(ticketer$0,content$1,a2);
                                   return some$2(tuple$1([0,t1,[0,t2,0]]))}
                                 var _aQt_=type_of_value(ticket);
                                 return none$1(pair(type_of_value(ticket),_aQt_))}
                               switch$5 = 1}}}}}}}
                 throw [0,Assert_failure,_adO_]}
             else
              {if(0 === prim2[0])
                {var _aQu_=prim2[1];
                 if(typeof _aQu_ === "number")
                  switch(_aQu_)
                   {case 0:
                     var x$10=interp(x$9),y$0=interp(y);
                     return bool$2(1 - caml_call2(equal$7,x$10,y$0));
                    case 1:
                     var x$11=interp(x$9),y$1=interp(y);
                     return bool$2(caml_call2(equal$7,x$11,y$1));
                    case 2:
                     var
                      pp$0=function(param){return 0},
                      _aQv_=unBool$0(pp$0,interp(x$9)),
                      _aQw_=_aQv_?unBool$0(pp$0,interp(y)):_aQv_;
                     return bool$2(_aQw_);
                    case 3:
                     var
                      pp$1=function(param){return 0},
                      _aQx_=unBool$0(pp$1,interp(x$9)),
                      _aQy_=_aQx_ || unBool$0(pp$1,interp(y));
                     return bool$2(_aQy_);
                    case 4:
                     var _aQz_=interp(y);
                     return plus(primitives,interp(x$9),_aQz_);
                    case 5:var _aQA_=interp(y);return minus(interp(x$9),_aQA_);
                    case 6:var _aQB_=interp(y);return div$0(interp(x$9),_aQB_);
                    case 7:var _aQC_=interp(y);return ediv$0(interp(x$9),_aQC_);
                    case 8:
                     var _aQD_=interp(y);return e_mod$0(interp(x$9),_aQD_);
                    case 9:
                     var x$12=interp(x$9),y$2=interp(y);
                     return bool$2(lt$0(x$12,y$2));
                    case 10:
                     var x$13=interp(x$9),y$3=interp(y);
                     return bool$2(le$0(x$13,y$3));
                    case 11:
                     var x$14=interp(x$9),y$4=interp(y);
                     return bool$2(lt$0(y$4,x$14));
                    case 12:
                     var x$15=interp(x$9),y$5=interp(y);
                     return bool$2(le$0(y$5,x$15));
                    default:var _aQE_=interp(y);return xor$0(interp(x$9),_aQE_)}
                 var _aQF_=interp(y);
                 return mul$0(primitives,interp(x$9),_aQF_)}
               if(prim2[1])
                {var pp$2=function(param){return 0},match$25=getRepr(x$9[2]);
                 if(typeof match$25 !== "number" && 4 === match$25[0])
                  {var
                    isNat=match$25[1],
                    _aQG_=unInt$0(pp$2,interp(y)),
                    _aQH_=unInt$0(pp$2,interp(x$9));
                   return intOrNat$1(isNat,caml_call2(Big_int[30],_aQH_,_aQG_))}
                 throw [0,Assert_failure,_adP_]}
               var pp$3=function(param){return 0},match$26=getRepr(x$9[2]);
               if(typeof match$26 !== "number" && 4 === match$26[0])
                {var
                  isNat$0=match$26[1],
                  _aQI_=unInt$0(pp$3,interp(y)),
                  _aQJ_=unInt$0(pp$3,interp(x$9));
                 return intOrNat$1
                         (isNat$0,caml_call2(Big_int[29],_aQJ_,_aQI_))}
               throw [0,Assert_failure,_adQ_]}
            case 8:
             var z=_aNU_[4],y$6=_aNU_[3],x$16=_aNU_[2],prim3=_aNU_[1];
             switch(prim3)
              {case 0:
                var
                 pp$4=function(param){return 0},
                 _aQK_=unInt$0(pp$4,interp(z)),
                 _aQL_=unInt$0(pp$4,interp(y$6)),
                 _aQM_=unMutez(pp$4,interp(x$16)),
                 _aQN_=caml_call2(Big_int[10],_aQM_,_aQL_);
                return mutez$0(caml_call2(Big_int[15],_aQN_,_aQK_));
               case 1:
                var
                 item=x$16[2],
                 _aQO_=interp(x$16)[1],
                 _aQP_=interp(y$6)[1],
                 _aQQ_=interp(z)[1];
                if(0 === _aQO_[0])
                 {var _aQR_=_aQO_[1],switch$6=0;
                  if(typeof _aQR_ === "number" || ! (1 === _aQR_[0]))
                   switch$6 = 1;
                  else
                   if(0 === _aQP_[0])
                    {var _aQU_=_aQP_[1],switch$7=0;
                     if(typeof _aQU_ !== "number" && 1 === _aQU_[0])
                      if(0 === _aQQ_[0])
                       {var _aQV_=_aQQ_[1];
                        if(typeof _aQV_ !== "number" && 1 === _aQV_[0])
                         {var
                           step=_aQV_[1],
                           b$0=_aQU_[1],
                           a=_aQR_[1],
                           a$0=caml_call1(Big_int[38],a),
                           b$1=caml_call1(Big_int[38],b$0),
                           step$0=caml_call1(Big_int[38],step);
                          if(0 === step$0)
                           {var _aQW_=caml_call1(Stdlib_printf[4],_adR_);
                            return caml_call1(Stdlib[2],_aQW_)}
                          if(0 <= caml_mul(step$0,b$1 - a$0 | 0))
                           {var match$27=getRepr(item);
                            if(typeof match$27 !== "number" && 4 === match$27[0])
                             {var
                               isNat$1=match$27[1],
                               aux=
                                function(a,acc)
                                 {var a$0=a,acc$0=acc;
                                  for(;;)
                                   {if(0 < caml_mul(b$1 - a$0 | 0,step$0))
                                     {var
                                       acc$1=
                                        [0,
                                         intOrNat$1(isNat$1,caml_call1(Utils_Bigint[5],a$0)),
                                         acc$0],
                                       a$1=a$0 + step$0 | 0,
                                       a$0=a$1,
                                       acc$0=acc$1;
                                      continue}
                                    return caml_call1(Utils_List[12],acc$0)}};
                              return list$1(aux(a$0,0),item)}
                            throw [0,Assert_failure,_adS_]}
                          return list$1(0,item)}
                        switch$7 = 1}
                      else
                       switch$7 = 1}}
                var
                 _aQS_=caml_call3(Printer[14],0,0,e$0),
                 _aQT_=caml_call2(Stdlib[28],cst_bad_range,_aQS_);
                return caml_call1(Stdlib[2],_aQT_);
               case 2:
                var
                 value=interp(z),
                 key=interp(y$6),
                 map=interp(x$16),
                 _aQX_=caml_call1(unF,caml_call1(normalize$0,x$16[2])),
                 _aQY_=map[1];
                if(typeof _aQX_ !== "number" && 3 === _aQX_[0])
                 {var _aQZ_=_aQX_[1];
                  if(typeof _aQZ_ === "number" && _aQZ_ && 7 === _aQY_[0])
                   {var
                     xs=_aQY_[4],
                     tvalue$2=_aQX_[3],
                     tkey$1=_aQX_[2],
                     value$0=unOption(value),
                     m$1=set$2(assoc(equal$7,key),value$0,xs);
                    return map$5(2 === _aQZ_?1:0,tkey$1,tvalue$2,m$1)}}
                throw [0,Assert_failure,_adT_];
               case 3:
                var
                 value$1=interp(z),
                 key$0=interp(y$6),
                 map$0=interp(x$16),
                 _aQ0_=caml_call1(unF,caml_call1(normalize$0,x$16[2])),
                 _aQ1_=map$0[1];
                if(typeof _aQ0_ !== "number" && 3 === _aQ0_[0])
                 {var _aQ2_=_aQ0_[1];
                  if(typeof _aQ2_ === "number" && _aQ2_ && 7 === _aQ1_[0])
                   {var
                     xs$0=_aQ1_[4],
                     tvalue$3=_aQ0_[3],
                     tkey$2=_aQ0_[2],
                     value$2=unOption(value$1),
                     match$28=get_and_set(assoc(equal$7,key$0),value$2,xs$0),
                     m$2=match$28[2],
                     old=match$28[1],
                     map$1=map$5(2 === _aQ2_?1:0,tkey$2,tvalue$3,m$2);
                    return tuple$1
                            ([0,
                              caml_call1(option$1(type_of_value(value$1)),old),
                              [0,map$1,0]])}}
                throw [0,Assert_failure,_adU_];
               case 4:
                var condition=interp(x$16),pp$5=function(param){return 0};
                if(unBool$0(pp$5,condition)){var e$0=y$6;continue}
                var e$0=z;
                continue;
               default:
                var
                 amount$2=interp(z),
                 content$2=interp(y$6),
                 ticketer$1=interp(x$16),
                 _aQ3_=amount$2[1];
                if(0 === _aQ3_[0])
                 {var _aQ4_=_aQ3_[1];
                  if(typeof _aQ4_ !== "number" && 1 === _aQ4_[0])
                   {var i$4=_aQ4_[1];
                    return ticket$0
                            (unAddress
                              (function(param)
                                {return [0,
                                         _adX_,
                                         [0,
                                          [0,771172693,x$16],
                                          [0,_adW_,[0,[0,771172693,e$0],[0,[0,848053268,e$0[3]],0]]]]]},
                               ticketer$1),
                             content$2,
                             i$4)}}
                throw [0,Assert_failure,_adV_]}
            case 9:
             var
              x0=_aNU_[2],
              missing_message=_aNU_[3],
              name$5=_aNU_[1],
              x$17=interp(x0),
              _aQ5_=x$17[1];
             if(4 === _aQ5_[0])
              {var v$5=_aQ5_[4],cons$1=_aQ5_[3];
               if(caml_string_notequal(cons$1,name$5))
                {var
                  default_message=
                   caml_call3(Stdlib_printf[4],_adZ_,name$5,cons$1),
                  _aQ9_=interpret_expr(config,upper_steps,env,scenario_state),
                  missing_message$0=
                   caml_call2(Base_Option[29],missing_message,_aQ9_);
                 if(missing_message$0)
                  var
                   except=missing_message$0[1],
                   message=[0,14832,[0,_ad0_,[0,[0,-991563951,except],0]]],
                   missing_message$1=except;
                 else
                  var
                   missing_message$2=string$4(default_message),
                   message=0,
                   missing_message$1=missing_message$2;
                 throw [0,
                        ExecFailure,
                        missing_message$1,
                        [0,
                         [0,936573133,default_message],
                         [0,
                          14832,
                          [0,
                           [0,771172693,e$0],
                           [0,[0,4100400,message],[0,[0,848053268,e$0[3]],0]]]]]]}
               return v$5}
             var
              _aQ6_=caml_call3(Printer[14],0,0,x0),
              _aQ7_=caml_call4(Printer[4],0,0,0,x$17),
              _aQ8_=caml_call3(Stdlib_printf[4],_adY_,_aQ7_,_aQ6_);
             return caml_call1(Stdlib[2],_aQ8_);
            case 10:
             var
              missing_message$3=_aNU_[4],
              default_value=_aNU_[3],
              key$2=_aNU_[2],
              items=_aNU_[1];
             if(default_value)
              var
               def=default_value[1],
               def$0=[0,[246,function(_aSp_){return interp(def)}]];
             else
              var def$0=0;
             if(missing_message$3)
              var
               x$18=missing_message$3[1],
               missing_message$4=
                [0,[246,function(_aSo_){return interp(x$18)}]];
             else
              var missing_message$4=0;
             var _aQ__=interp(key$2),_aQ$_=interp(items);
             return getItem
                     (function(param)
                       {var
                         _aSm_=caml_call3(Printer[14],0,0,key$2),
                         _aSn_=caml_call3(Printer[14],0,0,items);
                        return caml_call3(Stdlib_printf[4],_ad1_,_aSn_,_aSm_)},
                      _aQ$_,
                      _aQ__,
                      def$0,
                      missing_message$4);
            case 11:
             var es=_aNU_[1];
             return tuple$1(caml_call2(Utils_List[20],interp,es));
            case 12:
             var _aRa_=_aNU_[1];
             if(_aRa_)
              {var match$29=getRepr(e$0[2]);
               if(typeof match$29 !== "number" && 6 === match$29[0])
                {var
                  layout=match$29[1],
                  _aRb_=get(layout),
                  layout$0=caml_call2(Utils_Option[50],_ad3_,_aRb_),
                  _aRc_=
                   function(param)
                    {var e=param[2],s=param[1];return [0,s,interp(e)]};
                 return record$1
                         (layout$0,caml_call2(Utils_List[20],_aRc_,_aRa_))}
               throw [0,
                      SmartExcept,
                      [0,_ad2_,[0,[0,771172693,e$0],[0,[0,848053268,e$0[3]],0]]]]}
             return unit$3;
            case 13:
             var
              items$0=_aNU_[1],
              match$30=caml_call1(unF,caml_call1(normalize$0,e$0[2]));
             if
              (typeof match$30
               !==
               "number"
               &&
               2
               ===
               match$30[0]
               &&
               1
               ===
               match$30[1])
              {var t$6=match$30[2];
               return list$1(caml_call2(Utils_List[20],interp,items$0),t$6)}
             throw [0,Assert_failure,_ad4_];
            case 14:
             var entries=_aNU_[2],match$31=getRepr(e$0[2]);
             if(typeof match$31 !== "number" && 3 === match$31[0])
              {var _aRf_=match$31[1];
               if(typeof _aRf_ === "number" && _aRf_)
                {var
                  tvalue$4=match$31[3],
                  tkey$3=match$31[2],
                  _aRg_=0,
                  _aRh_=
                   function(entries,param)
                    {var
                      value=param[2],
                      key=param[1],
                      key$0=interp(key),
                      _aSl_=caml_call3(Base_List[122][7],entries,equal$7,key$0);
                     return [0,[0,key$0,interp(value)],_aSl_]};
                 return map$5
                         (2 === _aRf_?1:0,
                          tkey$3,
                          tvalue$4,
                          caml_call3(Utils_List[25],_aRh_,_aRg_,entries))}}
             var
              _aRd_=caml_call3(Printer[14],0,0,e$0),
              _aRe_=caml_call5(Printer[2],0,0,0,0,e$0[2]);
             return caml_call4(Stdlib_format[134],Stdlib[2],_ad5_,_aRe_,_aRd_);
            case 15:
             var l$14=_aNU_[1],match$32=getRepr(e$0[2]);
             if
              (typeof match$32
               !==
               "number"
               &&
               2
               ===
               match$32[0]
               &&
               2
               ===
               match$32[1])
              {var telement$0=match$32[2];
               return set$5(telement$0,caml_call2(Utils_List[20],interp,l$14))}
             throw [0,Assert_failure,_ad6_];
            case 16:
             var
              transaction=_aNU_[2],
              state=_aNU_[1],
              pp$6=function(param){return 0},
              state$0=interp(state),
              transaction$0=interp(transaction),
              match$33=unSaplingTransaction(pp$6,transaction$0),
              amount$3=match$33[3],
              target=match$33[2],
              source=match$33[1];
             if(source)
              var output=target?Utils_Bigint[6]:amount$3;
             else
              {if(! target)throw [0,Assert_failure,_ad7_];
               var output=caml_call1(Utils_Bigint[8],amount$3)}
             var
              match$34=unSaplingState(pp$6,state$0),
              state$1=match$34[2],
              memo=match$34[1];
             if(source)
              {var
                source$0=source[1],
                match$35=caml_call3(Utils_List[82],0,source$0,state$1),
                switch$8=0;
               if(match$35)
                {var x$19=match$35[1];
                 if(caml_call2(Utils_Bigint[31],x$19,amount$3))
                  {var
                    _aRi_=caml_call2(Utils_List[48],source$0,state$1),
                    _aRj_=
                     [0,
                      [0,
                       [0,source$0,caml_call2(Utils_Bigint[13],x$19,amount$3)],
                       _aRi_]];
                   switch$8 = 1}}
               if(! switch$8)var _aRj_=0;
               var state$2=_aRj_}
             else
              var state$2=[0,state$1];
             if(state$2)
              {var _aRk_=state$2[1];
               if(target)
                {var
                  target$0=target[1],
                  match$36=caml_call3(Utils_List[82],0,target$0,_aRk_);
                 if(match$36)
                  var
                   x$20=match$36[1],
                   _aRl_=caml_call2(Utils_List[48],target$0,_aRk_),
                   _aRm_=
                    [0,
                     [0,
                      [0,target$0,caml_call2(Utils_Bigint[10],x$20,amount$3)],
                      _aRl_]];
                 else
                  var _aRm_=[0,[0,[0,target$0,amount$3],_aRk_]];
                 var _aRn_=_aRm_}
               else
                var _aRn_=[0,_aRk_];
               var state$3=_aRn_}
             else
              var state$3=0;
             if(state$3)
              {var
                state$4=state$3[1],
                _aRo_=[0,literal$1(sapling_test_state(memo,state$4)),0];
               return some$2(tuple$1([0,int$4(output),_aRo_]))}
             var _aRp_=sapling_state([0,memo]);
             return none$1(pair(int$1(0),_aRp_));
            case 17:
             var
              _aRq_=caml_call3(Printer[14],0,0,e$0),
              _aRr_=
               caml_call2(Stdlib[28],cst_Interpreter_Instruction_no,_aRq_);
             return caml_call1(Stdlib[2],_aRr_);
            case 18:
             var
              l$15=_aNU_[2],
              f=_aNU_[1],
              f$0=interp(f),
              _aRs_=interp(l$15)[1],
              match$37=getRepr(type_of_value(f$0));
             switch(_aRs_[0])
              {case 5:
                if(typeof match$37 !== "number" && 3 === match$37[0])
                 {var _aRv_=match$37[1];
                  if(typeof _aRv_ === "number" && ! _aRv_)
                   {var
                     t$7=match$37[3],
                     l$16=_aRs_[2],
                     _aRw_=
                      function(_aSk_)
                       {return call_lambda$0
                                (config,upper_steps,env,scenario_state,f$0,_aSk_)},
                     _aRx_=caml_call2(Utils_List[20],_aRw_,l$16);
                    return function(l){return list$1(l,t$7)}(_aRx_)}}
                break;
               case 7:
                if(typeof match$37 !== "number" && 3 === match$37[0])
                 {var _aRy_=match$37[1];
                  if(typeof _aRy_ === "number" && ! _aRy_)
                   {var _aRz_=match$37[2][1],switch$9=0;
                    if(typeof _aRz_ === "number" || ! (6 === _aRz_[0]))
                     switch$9 = 1;
                    else
                     {var _aRA_=_aRz_[2];
                      if(_aRA_)
                       {var _aRB_=_aRA_[1],_aRC_=_aRz_[1],_aRD_=_aRs_[4];
                        if(! caml_string_notequal(_aRB_[1],cst_key$7))
                         {var _aRE_=_aRA_[2];
                          if(_aRE_)
                           {var _aRF_=_aRB_[2];
                            if
                             (!
                              caml_string_notequal(_aRE_[1][1],cst_value$1)
                              &&
                              !
                              _aRE_[2])
                             {var
                               t$8=match$37[3],
                               _aRG_=get(_aRC_),
                               layout$1=caml_call2(Utils_Option[50],_ad9_,_aRG_),
                               _aRH_=
                                function(param)
                                 {var v=param[2],k=param[1];
                                  return [0,
                                          k,
                                          call_lambda$0
                                           (config,
                                            upper_steps,
                                            env,
                                            scenario_state,
                                            f$0,
                                            record$1
                                             (layout$1,[0,[0,cst_key$8,k],[0,[0,cst_value$2,v],0]]))]},
                               _aRI_=caml_call2(Utils_List[20],_aRH_,_aRD_);
                              return function(l){return map$5(0,_aRF_,t$8,l)}(_aRI_)}}}}}}}
                break
               }
             var
              _aRt_=type_of_value(f$0),
              _aRu_=caml_call5(Printer[2],0,0,0,0,_aRt_);
             return caml_call3(Stdlib_printf[9],Stdlib[2],_ad8_,_aRu_);
            case 19:var l$17=_aNU_[1];return closure_init(l$17);
            case 20:
             var id$6=_aNU_[1];return caml_call2(Utils_List[43],id$6,env[7]);
            case 21:
             var
              storage$0=_aNU_[4],
              balance=_aNU_[3],
              baker$1=_aNU_[2],
              contract_template=_aNU_[1],
              baker$2=un_baker(interp(baker$1)),
              match$38=interp(balance),
              _aRJ_=match$38[1];
             if(0 === _aRJ_[0])
              {var _aRK_=_aRJ_[1];
               if(typeof _aRK_ !== "number" && 6 === _aRK_[0])
                {var
                  x$21=_aRK_[1],
                  storage$1=interp(storage$0),
                  match$39=
                   interpret_contract
                    (config,
                     primitives,
                     scenario_state,
                     [0,
                      [0,
                       contract_template[1],
                       contract_template[2],
                       0,
                       contract_template[4],
                       contract_template[5],
                       contract_template[6],
                       contract_template[7],
                       contract_template[8],
                       contract_template[9],
                       contract_template[10],
                       contract_template[11],
                       contract_template[12],
                       contract_template[13]]]),
                  state$5=match$39[2],
                  template=match$39[1],
                  state$6=[0,x$21,[0,storage$1],baker$2,state$5[4],state$5[5]],
                  dynamic_id=scenario_state[5][1];
                 scenario_state[5][1]++;
                 var
                  id$7=[1,[0,dynamic_id]],
                  address$5=get_contract_address(config,scenario_state,id$7),
                  _aRL_=[0,[0,cst_address$7,literal$1([7,address$5,0])],0];
                 return record_comb
                         ([0,
                           [0,
                            cst_operation$3,
                            operation$0([2,id$7,[0,template,state$6]])],
                           _aRL_])}}
             throw [0,Assert_failure,_ad__];
            case 22:
             var
              address$6=_aNU_[3],
              arg_type=_aNU_[2],
              entry_point$4=_aNU_[1],
              match$40=interp(address$6),
              _aRM_=match$40[1];
             if(0 === _aRM_[0])
              {var _aRN_=_aRM_[1],switch$10=0;
               if(typeof _aRN_ === "number" || ! (7 === _aRN_[0]))
                switch$10 = 1;
               else
                {var switch$11=0;
                 if(_aRN_[2])
                  if(entry_point$4)
                   switch$11 = 1;
                  else
                   var
                    _aRO_=match$40[1][1],
                    addr=_aRO_[1],
                    entry_point$5=_aRO_[2];
                 else
                  var addr=_aRN_[1],entry_point$5=entry_point$4;
                 if(! switch$11)
                  {var
                    match$41=
                     caml_call2(Stdlib_hashtbl[7],scenario_state[4],addr);
                   if(match$41)
                    {var
                      id$8=match$41[1],
                      match$42=
                       caml_call2(Stdlib_hashtbl[7],scenario_state[1],id$8);
                     if(match$42)
                      if(entry_point$5)
                       {var
                         contract=match$42[1],
                         entry_point$6=entry_point$5[1],
                         match$43=getRepr(contract[1][1][13][1][1]);
                        if(typeof match$43 !== "number" && 7 === match$43[0])
                         {var _aRP_=match$43[2];
                          if(_aRP_ && ! _aRP_[2])
                           {var _aRQ_=[0,_aea_,[0,14832,[0,[0,848053268,e$0[3]],0]]];
                            throw [0,
                                   SmartExcept,
                                   [0,
                                    _aec_,
                                    [0,
                                     [0,936573133,entry_point$6],
                                     [0,
                                      _aeb_,
                                      [0,[0,936573133,caml_call1(Printer[27],id$8)],_aRQ_]]]]]}}}
                      else
                       {var
                         contract$0=match$42[1],
                         match$44=getRepr(contract$0[1][1][13][1][1]),
                         switch$12=0;
                        if(typeof match$44 !== "number" && 7 === match$44[0])
                         {var _aRR_=match$44[2];
                          if(_aRR_ && ! _aRR_[2])
                           {var match$45=_aRR_[1],t$9=match$45[2];
                            if(1 - caml_call2(equal$5,arg_type,t$9))
                             {var
                               _aRS_=
                                [0,
                                 _aef_,
                                 [0,
                                  14832,
                                  [0,
                                   [0,771172693,e$0],
                                   [0,
                                    14832,
                                    [0,
                                     [0,937565914,t$9],
                                     [0,
                                      14832,
                                      [0,
                                       _aee_,
                                       [0,
                                        14832,
                                        [0,
                                         [0,937565914,arg_type],
                                         [0,14832,[0,_aed_,[0,14832,[0,[0,848053268,e$0[3]],0]]]]]]]]]]]]];
                              throw [0,
                                     SmartExcept,
                                     [0,
                                      _aeg_,
                                      [0,[0,936573133,caml_call1(Printer[27],id$8)],_aRS_]]]}
                            switch$12 = 1}}}}
                   return some$2(contract$1(entry_point$5,addr,arg_type))}}}
             throw [0,SmartExcept,[0,_ad$_,[0,[0,-991563951,match$40],0]]];
            case 23:
             var
              buffer=_aNU_[3],
              length=_aNU_[2],
              offset=_aNU_[1],
              _aRT_=interp(offset)[1],
              _aRU_=interp(length)[1],
              _aRV_=interp(buffer)[1];
             if(0 === _aRT_[0])
              {var _aRW_=_aRT_[1],switch$13=0;
               if(typeof _aRW_ === "number" || ! (1 === _aRW_[0]))
                switch$13 = 1;
               else
                if(0 === _aRU_[0])
                 {var _aRY_=_aRU_[1],switch$14=0;
                  if(typeof _aRY_ !== "number" && 1 === _aRY_[0])
                   if(0 === _aRV_[0])
                    {var _aRZ_=_aRV_[1],_aR0_=_aRY_[1],_aR1_=_aRW_[1];
                     if(typeof _aRZ_ !== "number")
                      switch(_aRZ_[0])
                       {case 2:
                         var s$1=_aRZ_[1];
                         try
                          {var
                            _aR2_=caml_call1(Big_int[38],_aR0_),
                            _aR3_=caml_call1(Big_int[38],_aR1_),
                            _aR4_=
                             some$2
                              (string$4(caml_call3(Utils_String[4],s$1,_aR3_,_aR2_)));
                           return _aR4_}
                         catch(_aSj_){return none$1(string$0)}
                        case 3:
                         var s$2=_aRZ_[1];
                         try
                          {var
                            _aR5_=caml_call1(Big_int[38],_aR0_),
                            _aR6_=caml_call1(Big_int[38],_aR1_),
                            _aR7_=
                             some$2(bytes$3(caml_call3(Utils_String[4],s$2,_aR6_,_aR5_)));
                           return _aR7_}
                         catch(_aSi_){return none$1(bytes$0)}
                        }
                     switch$14 = 1}
                   else
                    switch$14 = 1}}
             var _aRX_=caml_call3(Printer[14],0,0,e$0);
             return caml_call3(Stdlib_format[134],Stdlib[2],_aeh_,_aRX_);
            case 24:
             var
              message_format=_aNU_[3],
              message$0=_aNU_[2],
              secret_key=_aNU_[1],
              _aR8_=interp(secret_key)[1],
              secret_key$0=
               function(param)
                 {if(0 === param[0])
                   {var _aSh_=param[1];
                    if(typeof _aSh_ !== "number" && 9 === _aSh_[0])
                     {var k=_aSh_[1];return k}}
                  throw [0,
                         SmartExcept,
                         [0,
                          _aei_,
                          [0,
                           [0,771172693,e$0],
                           [0,[0,771172693,secret_key],[0,[0,848053268,e$0[3]],0]]]]]}
                (_aR8_),
              _aR9_=interp(message$0)[1],
              message$1=
               function(param)
                 {if(0 === param[0])
                   {var _aSd_=param[1];
                    if(typeof _aSd_ !== "number" && 3 === _aSd_[0])
                     {var k=_aSd_[1];
                      if(4099528 <= message_format)return k;
                      var
                       _aSf_=caml_call2(Base_String[98],k,cst_0x$2),
                       _aSg_=caml_call2(Base_Option[40],_aSf_,k);
                      return caml_call1(Utils_Misc[4][2],_aSg_)}}
                  var _aSe_=caml_call3(Printer[14],0,0,e$0);
                  return caml_call3(Stdlib_format[134],Stdlib[2],_aej_,_aSe_)}
                (_aR9_);
             return signature$1
                     (caml_call2(primitives[2][6],secret_key$0,message$1));
            case 25:
             var
              destination=_aNU_[3],
              amount$4=_aNU_[2],
              params=_aNU_[1],
              params$0=interp(params),
              _aR__=interp(destination)[1];
             if(2 === _aR__[0])
              {var d=_aR__[1],match$46=interp(amount$4),_aR$_=match$46[1];
               if(0 === _aR$_[0])
                {var _aSa_=_aR$_[1];
                 if(typeof _aSa_ !== "number" && 6 === _aSa_[0])
                  {var x$22=_aSa_[1];return operation$0([0,params$0,d,x$22])}}
               throw [0,Assert_failure,_ael_]}
             throw [0,Assert_failure,_aek_];
            case 26:return caml_call1(Stdlib[2],cst_TODO_ematch);
            default:
             var
              ep_name=_aNU_[1],
              in_contract$0=get_in_contract(cst_sp_has_entry_point,env[1]),
              leps=in_contract$0[3][1][4],
              match$47=caml_call3(Utils_List[82],0,ep_name,leps);
             if(match$47)
              {var _aSb_=match$47[1],switch$15=0;
               if(typeof _aSb_ === "number" && 919067353 <= _aSb_)
                {var _aSc_=0;switch$15 = 1}
               if(! switch$15)var _aSc_=1;
               return bool$2(_aSc_)}
             throw [0,Assert_failure,_aem_]}}}
      return interp}
    function interpret_mprim0(config,env,e0,scenario_state,param)
     {if(typeof param === "number")
       switch(param)
        {case 0:
          var _aNH_=get_in_contract(cst_Sender,env[1])[2][1];
          if(_aNH_){var address=_aNH_[1];return literal$1([7,address,0])}
          throw [0,SmartExcept,[0,_aen_,[0,[0,771172693,e0],0]]];
         case 1:
          var _aNI_=get_in_contract(cst_Source,env[1])[2][2];
          if(_aNI_){var address$0=_aNI_[1];return literal$1([7,address$0,0])}
          throw [0,SmartExcept,[0,_aeo_,[0,[0,771172693,e0],0]]];
         case 2:return mutez$0(get_in_contract(cst_Amount,env[1])[2][5]);
         case 3:
          return mutez$0(get_in_contract(cst_balance$3,env[1])[3][1][1]);
         case 4:return timestamp$1(get_in_contract(cst_Now,env[1])[2][4]);
         case 5:
          var
           env$0=get_in_contract(cst_Self_address,env[1]),
           _aNJ_=env$0[2][10];
          if(_aNJ_)
           {var i=_aNJ_[1];
            return literal$1
                    ([7,get_contract_address(config,scenario_state,i),0])}
          throw [0,SmartExcept,[0,_aep_,[0,[0,771172693,e0],0]]];
         case 6:return chain_id$2(get_in_contract(cst_Chainid,env[1])[2][3]);
         case 7:
          var
           _aNK_=get_in_contract(cst_total_voting_power,env[1])[2][7],
           _aNL_=Big_int[1],
           _aNM_=
            function(acc,param)
             {var v=param[2];return caml_call2(Big_int[5],acc,v)};
          return nat$1(caml_call3(Utils_List[25],_aNM_,_aNL_,_aNK_));
         default:return literal$1(unit)}
      else
       switch(param[0])
        {case 0:
          var _aNN_=param[1];
          if(_aNN_)
           {var
             entry_point=_aNN_[1],
             in_contract=get_in_contract(cst_self_Entry_point,env[1]),
             _aNO_=in_contract[2][10];
            if(_aNO_)
             {var
               i$0=_aNO_[1],
               _aNP_=caml_call2(Stdlib_hashtbl[7],scenario_state[1],i$0),
               match=caml_call2(Utils_Option[48],[0,msg$1],_aNP_),
               template=match[1],
               tparameter=template[1][13][1][1],
               _aNQ_=tparameter[1],
               switch$0=0;
              if(typeof _aNQ_ !== "number" && 7 === _aNQ_[0])
               {var row$0=_aNQ_[2],row=row$0;switch$0 = 1}
              if(! switch$0)
               var row=caml_call1(Stdlib[2],cst_self_entry_point_tparamete);
              var
               _aNR_=caml_call3(Utils_List[82],0,entry_point,row),
               t=caml_call2(Utils_Option[48],[0,msg$1],_aNR_);
              return contract$1
                      ([0,entry_point],
                       get_contract_address(config,scenario_state,i$0),
                       t)}
            throw [0,SmartExcept,[0,_aeq_,[0,[0,771172693,e0],0]]]}
          var env$1=get_in_contract(cst_Self,env[1]),_aNS_=env$1[2][10];
          if(_aNS_)
           {var i$1=_aNS_[1],_aNT_=env$1[4];
            return contract$1
                    (0,get_contract_address(config,scenario_state,i$1),_aNT_)}
          throw [0,SmartExcept,[0,_aer_,[0,[0,771172693,e0],0]]];
         case 1:
          var memo=param[1];return literal$1(sapling_test_state(memo,0));
         case 2:var t$0=param[1];return none$1(caml_call1(of_mtype,t$0));
         case 3:var t$1=param[1];return list$1(0,caml_call1(of_mtype,t$1));
         case 4:
          var telement=param[1],telement$0=caml_call1(of_mtype,telement);
          return set$5(telement$0,0);
         case 5:
          var
           tvalue=param[2],
           tkey=param[1],
           tkey$0=caml_call1(of_mtype,tkey),
           tvalue$0=caml_call1(of_mtype,tvalue);
          return map$5(0,tkey$0,tvalue$0,0);
         default:
          var
           tvalue$1=param[2],
           tkey$1=param[1],
           tkey$2=caml_call1(of_mtype,tkey$1),
           tvalue$2=caml_call1(of_mtype,tvalue$1);
          return map$5(1,tkey$2,tvalue$2,0)}}
    function interpret_mprim1(config,upper_steps,env,e0,scenario_state,p,x)
     {var
       Printer=get$0(config),
       primitives=env[2],
       interp=interpret_expr(config,upper_steps,env,scenario_state);
      function pp(param){return 0}
      function hash_algo(h)
       {var _aNF_=caml_call1(interp,x)[1];
        if(0 === _aNF_[0])
         {var _aNG_=_aNF_[1];
          if(typeof _aNG_ !== "number" && 3 === _aNG_[0])
           {var b=_aNG_[1];return bytes$3(caml_call1(h,b))}}
        throw [0,Assert_failure,_aes_]}
      if(typeof p === "number")
       switch(p)
        {case 4:
          var _aNB_=unInt$0(pp,caml_call1(interp,x));
          return nat$1(caml_call1(Big_int[4],_aNB_));
         case 7:
          var x$0=unInt$0(pp,caml_call1(interp,x));
          return 0 <= caml_call2(Big_int[23],x$0,Big_int[1])
                  ?some$2(nat$1(x$0))
                  :none$1(nat$0(0));
         case 13:return bool$2(1 - unBool$0(pp,caml_call1(interp,x)));
         case 19:
          var _aNC_=caml_call1(interp,x)[1],switch$0=0;
          if(0 === _aNC_[0])
           {var _aND_=_aNC_[1],switch$1=0;
            if(typeof _aND_ !== "number" && 8 === _aND_[0])
             {var k=_aND_[1],public_key=k;switch$0 = 1;switch$1 = 1}}
          if(! switch$0)
           var
            _aNE_=caml_call3(Printer[14],0,0,e0),
            public_key=caml_call3(Stdlib_format[134],Stdlib[2],_aeu_,_aNE_);
          return key_hash$1(caml_call1(primitives[2][9],public_key));
         case 20:return hash_algo(primitives[2][1]);
         case 21:return hash_algo(primitives[2][2]);
         case 22:return hash_algo(primitives[2][3]);
         case 23:return hash_algo(primitives[2][4]);
         case 24:return hash_algo(primitives[2][5])
         }
      throw [0,Assert_failure,_aet_]}
    function interpret_mprim2
     (config,upper_steps,env,e0,scenario_state,p,x1,x2)
     {var interp=interpret_expr(config,upper_steps,env,scenario_state);
      if(typeof p === "number")
       {if(3 === p)
         {var _aNz_=caml_call1(interp,x2);
          return shift_right(caml_call1(interp,x1),_aNz_)}
        if(4 === p)
         {var _aNA_=caml_call1(interp,x2);
          return shift_left(caml_call1(interp,x1),_aNA_)}}
      throw [0,Assert_failure,_aev_]}
    function interpret_mprim3
     (config,upper_steps,env,e0,scenario_state,p,x1,sig_expr,msg_expr)
     {var
       Printer=get$0(config),
       primitives=env[2],
       interp=interpret_expr(config,upper_steps,env,scenario_state);
      if(4 <= p)
       {Utils_Misc[1][1][1] = 0;
        var _aNq_=caml_call1(interp,x1)[1],switch$0=0;
        if(0 === _aNq_[0])
         {var _aNr_=_aNq_[1],switch$1=0;
          if(typeof _aNr_ !== "number" && 8 === _aNr_[0])
           {var k=_aNr_[1],public_key=k;switch$0 = 1;switch$1 = 1}}
        if(! switch$0)
         var
          _aNs_=caml_call3(Printer[14],0,0,e0),
          public_key=caml_call3(Stdlib_format[134],Stdlib[2],_aew_,_aNs_);
        var _aNt_=caml_call1(interp,sig_expr)[1],switch$2=0;
        if(0 === _aNt_[0])
         {var _aNu_=_aNt_[1],switch$3=0;
          if(typeof _aNu_ !== "number" && 12 === _aNu_[0])
           {var s=_aNu_[1],signature=s;switch$2 = 1;switch$3 = 1}}
        if(! switch$2)
         var
          _aNv_=caml_call3(Printer[14],0,0,e0),
          signature=caml_call3(Stdlib_format[134],Stdlib[2],_aex_,_aNv_);
        var _aNw_=caml_call1(interp,msg_expr)[1],switch$4=0;
        if(0 === _aNw_[0])
         {var _aNx_=_aNw_[1],switch$5=0;
          if(typeof _aNx_ !== "number" && 3 === _aNx_[0])
           {var b=_aNx_[1],msg=b;switch$4 = 1;switch$5 = 1}}
        if(! switch$4)
         var
          _aNy_=caml_call3(Printer[14],0,0,e0),
          msg=caml_call3(Stdlib_format[134],Stdlib[2],_aey_,_aNy_);
        return bool$2(caml_call3(primitives[2][7],public_key,signature,msg))}
      throw [0,Assert_failure,_aez_]}
    function interpret_command
     (config,upper_steps,env,scenario_state,initialCommand)
     {var line_no=initialCommand[3],Printer=get$0(config);
      function interpret_command$0(_aNm_,_aNn_,_aNo_,_aNp_)
       {return interpret_command(config,_aNm_,_aNn_,_aNo_,_aNp_)}
      function interpret_expr$0(_aNj_,_aNk_,_aNl_)
       {return interpret_expr(config,_aNj_,_aNk_,_aNl_)}
      function path_of_expr(upper_steps,env,scenario_state)
       {var acc=0;
        return function(e$1)
         {var acc$0=acc,e=e$1;
          for(;;)
           {var _aNd_=e[1];
            switch(_aNd_[0])
             {case 5:
               var _aNe_=_aNd_[1],switch$0=0;
               if(typeof _aNe_ !== "number")
                switch(_aNe_[0])
                 {case 3:
                   var _aNf_=_aNe_[1];
                   if(! caml_string_notequal(_aNf_,cst_storage$27))
                    return [0,[0,0,acc$0]];
                   var name=_aNf_;
                   switch$0 = 1;
                   break;
                  case 4:var name=_aNe_[1];switch$0 = 1;break;
                  case 7:
                   var
                    name$0=_aNe_[1],
                    match=caml_call2(Utils_List[43],name$0,env[3][1]);
                   if(0 === match[0])
                    {var _aNg_=match[1][2];
                     if(_aNg_){var p=_aNg_[1];return [0,extend_path(p,acc$0)]}
                     return 0}
                   return caml_call1(Stdlib[2],cst_not_an_iter)
                  }
               if(switch$0)return [0,[0,[0,name],acc$0]];
               break;
              case 6:
               var _aNh_=_aNd_[1];
               if(typeof _aNh_ !== "number" && 7 === _aNh_[0])
                {var
                  e$0=_aNd_[2],
                  name$1=_aNh_[1],
                  acc$1=[0,[0,name$1],acc$0],
                  acc$0=acc$1,
                  e=e$0;
                 continue}
               break;
              case 10:
               if(! _aNd_[3] && ! _aNd_[4])
                {var
                  key=_aNd_[2],
                  cont=_aNd_[1],
                  key$0=
                   caml_call1
                    (interpret_expr(config,upper_steps,env,scenario_state),key),
                  match$0=getRepr(cont[2]);
                 if(typeof match$0 !== "number" && 3 === match$0[0])
                  {var _aNi_=match$0[1];
                   if(typeof _aNi_ === "number" && _aNi_)
                    {var acc$2=[0,[1,key$0],acc$0],acc$0=acc$2,e=cont;continue}}
                 throw [0,
                        SmartExcept,
                        [0,
                         _aeC_,
                         [0,
                          14832,
                          [0,
                           _aeB_,
                           [0,
                            [0,771172693,e],
                            [0,[0,771172693,cont],[0,_aeA_,[0,[0,848053268,e[3]],0]]]]]]]]}
               break
              }
            return 0}}}
      function pp(param){return 0}
      var _aL1_=initialCommand[1];
      switch(_aL1_[0])
       {case 0:
         var message=_aL1_[1];
         caml_call1(interpret_expr$0(upper_steps,env,scenario_state),message);
         return caml_call1(Stdlib[2],cst_Evaluation_of_sp_never_It_);
        case 1:
         var
          message$0=_aL1_[1],
          value=
           caml_call1
            (interpret_expr$0(upper_steps,env,scenario_state),message$0),
          _aL3_=message$0[1],
          switch$0=0,
          _aL2_=[0,14832,[0,[0,848053268,line_no],0]];
         if(5 === _aL3_[0])
          {var switch$1=0,_aL7_=_aL3_[1];
           if(typeof _aL7_ !== "number" && 0 === _aL7_[0])
            {var _aL4_=0;switch$0 = 1;switch$1 = 1}}
         if(! switch$0)
          var _aL4_=[0,14832,[0,_aeE_,[0,[0,771172693,message$0],_aeD_]]];
         var
          _aL5_=caml_call2(Stdlib[37],_aL4_,_aL2_),
          _aL6_=
           [0,_aeF_,[0,[0,936573133,caml_call4(Printer[4],0,0,0,value)],0]];
         throw [0,ExecFailure,value,caml_call2(Stdlib[37],_aL6_,_aL5_)];
        case 2:
         var
          message$1=_aL1_[2],
          x=_aL1_[1],
          v=caml_call1(interpret_expr$0(upper_steps,env,scenario_state),x);
         addStep(0,upper_steps,env,initialCommand,0);
         var _aL8_=v[1];
         if(0 === _aL8_[0])
          {var _aL9_=_aL8_[1];
           if(typeof _aL9_ !== "number" && 0 === _aL9_[0])
            {if(_aL9_[1])return unit$3;
             var
              _aMb_=interpret_expr$0(upper_steps,env,scenario_state),
              except=caml_call2(Base_Option[29],message$1,_aMb_);
             if(except)
              var
               except$0=except[1],
               message$2=[0,14832,[0,_aeH_,[0,[0,-991563951,except$0],0]]],
               except$1=except$0;
             else
              var
               except$2=string$4(caml_call1(Printer[23],x)),
               message$2=0,
               except$1=except$2;
             throw [0,
                    ExecFailure,
                    except$1,
                    [0,
                     _aeI_,
                     [0,
                      [0,771172693,x],
                      [0,[0,4100400,message$2],[0,[0,848053268,line_no],0]]]]]}}
         var
          _aL__=string_of_line_no(line_no),
          _aL$_=caml_call4(Printer[4],0,0,0,v),
          _aMa_=caml_call3(Stdlib_printf[4],_aeG_,_aL$_,_aL__);
         return caml_call1(Stdlib[2],_aMa_);
        case 3:
         var
          e=_aL1_[3],
          t=_aL1_[2],
          c=_aL1_[1],
          sub_steps=[0,0],
          condition=
           caml_call1(interpret_expr$0(upper_steps,env,scenario_state),c),
          r=
           unBool$0(pp,condition)
            ?interpret_command$0(sub_steps,env,scenario_state,t)
            :interpret_command$0(sub_steps,env,scenario_state,e);
         addStep
          ([0,sub_steps],
           upper_steps,
           env,
           initialCommand,
           [0,[0,cst_condition$0,condition],0]);
         return r;
        case 4:
         var
          cases=_aL1_[2],
          scrutinee=_aL1_[1],
          sub_steps$0=[0,0],
          scrutinee$0=
           caml_call1
            (interpret_expr$0(upper_steps,env,scenario_state),scrutinee),
          _aMc_=scrutinee$0[1];
         if(4 === _aMc_[0])
          {var
            arg=_aMc_[4],
            cons=_aMc_[3],
            _aMd_=
             function(param)
              {var constructor=param[1];
               return caml_string_equal(constructor,cons)},
            match=caml_call2(Utils_List[38],_aMd_,cases);
           if(match)
            var
             match$0=match[1],
             body=match$0[3],
             arg_name=match$0[2],
             _aMe_=env[9],
             _aMf_=env[8],
             _aMg_=env[7],
             _aMh_=env[6],
             _aMi_=env[5],
             _aMj_=env[4],
             _aMk_=[0,add_variable(arg_name,[2,arg],env[3][1])],
             res=
              interpret_command$0
               (sub_steps$0,
                [0,env[1],env[2],_aMk_,_aMj_,_aMi_,_aMh_,_aMg_,_aMf_,_aMe_],
                scenario_state,
                body);
           else
            var res=unit$3;
           addStep
            ([0,sub_steps$0],
             upper_steps,
             env,
             initialCommand,
             [0,[0,cst_match,scrutinee$0],0]);
           return res}
         throw [0,Assert_failure,_aeJ_];
        case 5:
         var
          c$0=_aL1_[3],
          p=_aL1_[2],
          s=_aL1_[1],
          sub_steps$1=[0,0],
          variables=env[3][1];
         switch(p[0])
          {case 0:
            var
             x$0=p[1],
             v$0=
              caml_call1(interpret_expr$0(upper_steps,env,scenario_state),s),
             vs=[0,[0,x$0,[2,v$0]],0];
            break;
           case 1:
            var
             ns=p[1],
             vs$0=
              untuple
               (pp,
                caml_call1(interpret_expr$0(upper_steps,env,scenario_state),s)),
             _aMm_=function(n,v){return [0,n,[2,v]]},
             vs=caml_call4(Utils_List[77],_aeK_,_aMm_,ns,vs$0);
            break;
           default:
            var
             bs=p[2],
             r$0=
              un_record
               (caml_call1(interpret_expr$0(upper_steps,env,scenario_state),s)),
             f=
              function(param)
               {var field=param[2],var$0=param[1];
                return [0,
                        var$0,
                        [2,caml_call3(Utils_List[83],_aeL_,field,r$0)]]},
             vs=caml_call2(Utils_List[20],f,bs)}
         var
          _aMl_=caml_call1(Utils_Control[22],add_variable),
          variables$0=caml_call3(Utils_List[26],_aMl_,vs,variables),
          env$0=
           [0,
            env[1],
            env[2],
            [0,variables$0],
            env[4],
            env[5],
            env[6],
            env[7],
            env[8],
            env[9]];
         return interpret_command$0(sub_steps$1,env$0,scenario_state,c$0);
        case 6:
         var
          c$1=_aL1_[3],
          p$0=_aL1_[2],
          lhs=_aL1_[1],
          match$1=caml_call1(path_of_expr(upper_steps,env,scenario_state),lhs);
         if(match$1)
          {var
            lhs_path=match$1[1],
            match$2=lens_of_path(config,line_no,env,lhs_path),
            lhs_lens=match$2[1],
            sub_steps$2=[0,0],
            variables$1=env[3][1],
            v$1=
             caml_call1(interpret_expr$0(upper_steps,env,scenario_state),lhs);
           switch(p$0[0])
            {case 0:var x$1=p$0[1],vs$1=[0,[0,x$1,[1,[0,v$1]]],0];break;
             case 1:
              var
               ns$0=p$0[1],
               vs$2=untuple(pp,v$1),
               _aMq_=function(n,v){return [0,n,[1,[0,v]]]},
               vs$1=caml_call4(Utils_List[77],_aeM_,_aMq_,ns$0,vs$2);
              break;
             default:var name$0=p$0[1],vs$1=[0,[0,name$0,[1,[0,v$1]]],0]}
           var
            _aMn_=caml_call1(Utils_Control[22],add_variable),
            variables$2=caml_call3(Utils_List[26],_aMn_,vs$1,variables$1),
            env$1=
             [0,
              env[1],
              env[2],
              [0,variables$2],
              env[4],
              env[5],
              env[6],
              env[7],
              env[8],
              env[9]],
            inner=interpret_command$0(sub_steps$2,env$1,scenario_state,c$1);
           if(2 === p$0[0])
            {var name=p$0[1];
             caml_call1(assert_unit(config,initialCommand),inner);
             var
              match$3=caml_call3(Utils_List[82],0,name,env$1[3][1]),
              switch$2=0;
             if(match$3)
              {var _aMo_=match$3[1];
               if(1 === _aMo_[0])
                {var match$4=_aMo_[1],x$2=match$4[1],value$0=x$2;switch$2 = 1}}
             if(! switch$2)
              var
               _aMp_=caml_call2(Stdlib[28],cst_Not_a_local$0,name),
               value$0=caml_call1(Stdlib[2],_aMp_);
             set$2(lhs_lens,[0,value$0],0);
             return unit$3}
           var rhs=[0,inner];
           set$2(lhs_lens,rhs,0);
           return unit$3}
         var
          _aMr_=caml_call3(Printer[14],0,0,lhs),
          _aMs_=string_of_line_no(initialCommand[3]),
          _aMt_=caml_call3(Stdlib_printf[4],_aeN_,_aMs_,_aMr_);
         return caml_call1(Stdlib[2],_aMt_);
        case 7:
         var
          ko_match=_aL1_[4],
          ok_match=_aL1_[3],
          id=_aL1_[2],
          expr=_aL1_[1],
          match$5=
           unList
            (pp,
             caml_call1(interpret_expr$0(upper_steps,env,scenario_state),expr));
         if(match$5)
          {var
            tail=match$5[2],
            head=match$5[1],
            sub_steps$3=[0,0],
            _aMu_=env[9],
            _aMv_=env[8],
            _aMw_=env[7],
            _aMx_=env[6],
            _aMy_=env[5],
            _aMz_=env[4],
            _aMA_=env[3][1],
            _aMB_=
             [0,
              add_variable
               (id,
                [3,
                 record_comb
                  ([0,
                    [0,cst_head$3,head],
                    [0,[0,cst_tail$3,list$1(tail,type_of_value(head))],0]])],
                _aMA_)],
            env$2=[0,env[1],env[2],_aMB_,_aMz_,_aMy_,_aMx_,_aMw_,_aMv_,_aMu_];
           return interpret_command$0
                   (sub_steps$3,env$2,scenario_state,ok_match)}
         var sub_steps$4=[0,0];
         return interpret_command$0(sub_steps$4,env,scenario_state,ko_match);
        case 8:
         var e$0=_aL1_[2],name$1=_aL1_[1];
         env[9][1] = [0,name$1,env[9][1]];
         var
          _aMC_=env[3][1],
          _aMD_=
           add_variable
            (name$1,
             [1,
              [0,
               caml_call1
                (interpret_expr$0(upper_steps,env,scenario_state),e$0)]],
             _aMC_);
         env[3][1] = _aMD_;
         addStep(0,upper_steps,env,initialCommand,0);
         return unit$3;
        case 9:
         var _aME_=_aL1_[1],_aMF_=_aME_[1];
         if(5 === _aMF_[0])
          {var _aMJ_=_aMF_[1],switch$3=0;
           if(typeof _aMJ_ === "number" || ! (3 === _aMJ_[0]))
            switch$3 = 1;
           else
            if(! caml_string_notequal(_aMJ_[1],cst_operations$14))
             {var
               rhs$2=_aL1_[2],
               rhs$3=
                caml_call1
                 (interpret_expr$0(upper_steps,env,scenario_state),rhs$2),
               rhs$4=[0,rhs$3];
              if(rhs$4)
               {var
                 _aMK_=unList(pp,rhs$3),
                 _aML_=function(_aNc_){return unoperation(pp,_aNc_)},
                 _aMM_=caml_call2(Utils_List[20],_aML_,_aMK_);
                env[4][1] = _aMM_;
                return unit$3}
              throw [0,Assert_failure,_aeP_]}}
         var
          rhs$0=_aL1_[2],
          match$6=
           caml_call1(path_of_expr(upper_steps,env,scenario_state),_aME_);
         if(match$6)
          {var
            lhs$0=match$6[1],
            match$7=lens_of_path(config,line_no,env,lhs$0),
            lhs$1=match$7[1],
            rhs$1=
             [0,
              caml_call1
               (interpret_expr$0(upper_steps,env,scenario_state),rhs$0)];
           set$2(lhs$1,rhs$1,0)}
         else
          {var
            _aMG_=caml_call3(Printer[14],0,0,_aME_),
            _aMH_=string_of_line_no(initialCommand[3]),
            _aMI_=caml_call3(Stdlib_printf[4],_aeO_,_aMH_,_aMG_);
           caml_call1(Stdlib[2],_aMI_)}
         addStep(0,upper_steps,env,initialCommand,0);
         return unit$3;
        case 10:
         var
          key=_aL1_[2],
          map=_aL1_[1],
          match$8=caml_call1(path_of_expr(upper_steps,env,scenario_state),map);
         if(match$8)
          {var
            path=match$8[1],
            key$0=
             caml_call1(interpret_expr$0(upper_steps,env,scenario_state),key),
            match$9=
             lens_of_path
              (config,line_no,env,extend_path(path,[0,[1,key$0],0])),
            l=match$9[1];
           set$2(l,0,0)}
         else
          {var
            _aMN_=caml_call3(Printer[14],0,0,map),
            _aMO_=string_of_line_no(line_no),
            _aMP_=caml_call3(Stdlib_printf[4],_aeQ_,_aMO_,_aMN_);
           caml_call1(Stdlib[2],_aMP_)}
         addStep(0,upper_steps,env,initialCommand,0);
         return unit$3;
        case 11:
         var
          add=_aL1_[3],
          elem=_aL1_[2],
          set=_aL1_[1],
          match$10=
           caml_call1(path_of_expr(upper_steps,env,scenario_state),set);
         if(match$10)
          {var
            path$0=match$10[1],
            elem$0=
             caml_call1(interpret_expr$0(upper_steps,env,scenario_state),elem),
            match$11=lens_of_path(config,line_no,env,path$0),
            err=match$11[2],
            l$0=match$11[1],
            _aMQ_=lens_set_at(elem$0);
           set$2(symbol$0(l$0,symbol$0(some$0(err),_aMQ_)),add,0)}
         else
          {var
            _aMR_=caml_call3(Printer[14],0,0,set),
            _aMS_=string_of_line_no(line_no),
            _aMT_=caml_call3(Stdlib_printf[4],_aeR_,_aMS_,_aMR_);
           caml_call1(Stdlib[2],_aMT_)}
         addStep(0,upper_steps,env,initialCommand,0);
         return unit$3;
        case 12:
         var c2=_aL1_[3],c1=_aL1_[2],x$3=_aL1_[1],outer_locals=env[9][1];
         env[9][1] = 0;
         var y=interpret_command$0(upper_steps,env,scenario_state,c1);
         if(x$3)
          {var x$4=x$3[1],_aMU_=add_variable(x$4,[1,[0,y]],env[3][1]);
           env[3][1] = _aMU_}
         var
          r$1=interpret_command$0(upper_steps,env,scenario_state,c2),
          _aMV_=env[3][1],
          _aMW_=
           function(param)
            {var n=param[1],_aM$_=1 - caml_call2(Utils_List[35],n,env[9][1]);
             if(_aM$_)
              {var
                _aNa_=
                 function(_aNb_){return caml_string_notequal(n,_aNb_)};
               return caml_call3(Utils_Option[12],1,_aNa_,x$3)}
             return _aM$_},
          _aMX_=caml_call2(Utils_List[40],_aMW_,_aMV_);
         env[3][1] = _aMX_;
         env[9][1] = outer_locals;
         return r$1;
        case 13:
         var
          body$0=_aL1_[3],
          iteratee=_aL1_[2],
          name$2=_aL1_[1],
          sub_steps$5=[0,0],
          iteratee_v=
           caml_call1
            (interpret_expr$0(upper_steps,env,scenario_state),iteratee),
          iteratee_l=
           caml_call1(path_of_expr(upper_steps,env,scenario_state),iteratee),
          _aMY_=iteratee_v[1];
         if(5 === _aMY_[0])
          {var
            elems=_aMY_[2],
            step=
             function(i,v)
              {function _aM2_(p){return extend_path(p,[0,[2,i],0])}
               var
                path=caml_call2(Base_Option[29],iteratee_l,_aM2_),
                _aM3_=env[9],
                _aM4_=env[8],
                _aM5_=env[7],
                _aM6_=env[6],
                _aM7_=env[5],
                _aM8_=env[4],
                _aM9_=[0,add_variable(name$2,[0,[0,v,path]],env[3][1])],
                _aM__=
                 interpret_command$0
                  (sub_steps$5,
                   [0,env[1],env[2],_aM9_,_aM8_,_aM7_,_aM6_,_aM5_,_aM4_,_aM3_],
                   scenario_state,
                   body$0);
               return caml_call1(assert_unit(config,initialCommand),_aM__)};
           caml_call2(Utils_List[19],step,elems);
           addStep([0,sub_steps$5],upper_steps,env,initialCommand,0);
           return unit$3}
         throw [0,Assert_failure,_aeS_];
        case 14:
         var cmd=_aL1_[2],e$1=_aL1_[1],sub_steps$6=[0,0];
         for(;;)
          {if
            (unBool$0
              (pp,
               caml_call1
                (interpret_expr$0(upper_steps,env,scenario_state),e$1)))
            {var
              _aMZ_=
               interpret_command$0(sub_steps$6,env,scenario_state,cmd);
             caml_call1(assert_unit(config,initialCommand),_aMZ_);
             continue}
           addStep([0,sub_steps$6],upper_steps,env,initialCommand,0);
           return unit$3}
        case 15:
         var e$2=_aL1_[1];
         return caml_call1
                 (interpret_expr$0(upper_steps,env,scenario_state),e$2);
        case 16:return unit$3;
        case 17:return unit$3;
        case 18:
         var c$2=_aL1_[1];
         return interpret_command$0(upper_steps,env,scenario_state,c$2);
        case 19:
         var
          e$3=_aL1_[1],
          e$4=caml_call1(interpret_expr$0(upper_steps,env,scenario_state),e$3),
          _aM0_=caml_call4(Printer[4],0,0,0,e$4);
         caml_call1(Stdlib[46],_aM0_);
         return unit$3;
        default:
         var
          l$1=_aL1_[2],
          ep_name=_aL1_[1],
          l$2=caml_call1(interpret_expr$0(upper_steps,env,scenario_state),l$1),
          match$12=
           unclosure(function(param){throw [0,Assert_failure,_aeT_]},l$2),
          args=match$12[2],
          l$3=match$12[1],
          in_contract=get_in_contract(cst_set_entry_point,env[1]),
          leps=in_contract[3][1][4],
          leps$0=caml_call2(Utils_List[48],ep_name,leps),
          leps$1=[0,[0,ep_name,[0,-964680357,[0,l$3,args]]],leps$0],
          _aM1_=in_contract[3][1];
         in_contract[3][1] = [0,_aM1_[1],_aM1_[2],_aM1_[3],leps$1,_aM1_[5]];
         return unit$3}}
    function call_closure
     (config,upper_steps,env,scenario_state,param,parameter)
     {var args=param[2],l=param[1];
      function _aL0_(acc,v){return tuple$1([0,v,[0,acc,0]])}
      var
       parameter$0=caml_call3(Utils_List[25],_aL0_,parameter,args),
       steps=[0,0],
       env$0=
        [0,
         env[1],
         env[2],
         env[3],
         [0,0],
         env[5],
         env[6],
         [0,[0,l[1],parameter$0],env[7]],
         env[8],
         env[9]],
       r=interpret_command(config,steps,env$0,scenario_state,l[3]);
      addStep
       ([0,steps],
        upper_steps,
        env$0,
        l[3],
        [0,[0,cst_lambda_input,parameter$0],[0,[0,cst_lambda_output,r],0]]);
      return r}
    function call_lambda$0
     (config,upper_steps,env,scenario_state,lambda,parameter)
     {var
       match=unclosure(function(param){throw [0,Assert_failure,_aeU_]},lambda),
       args=match[2],
       l=match[1];
      return call_closure
              (config,upper_steps,env,scenario_state,[0,l,args],parameter)}
    function interpret_message
     (config,primitives,scenario_state,context,param,_aLy_)
     {var
       params=_aLy_[2],
       channel=_aLy_[1],
       state=param[2],
       template=param[1],
       match=template[1],
       derived=match[13],
       global_variables=match[10],
       entry_points=match[6];
      function interpret_command$0(_aLW_,_aLX_,_aLY_,_aLZ_)
       {return interpret_command(config,_aLW_,_aLX_,_aLY_,_aLZ_)}
      var tparameter=derived[1][1];
      function _aLz_(param)
       {var x=param[1];return caml_string_equal(channel,x)}
      var l=caml_call2(Utils_List[40],_aLz_,entry_points);
      if(l)
       var filtered_entry_points=l;
      else
       {var switch$0=0;
        if
         (!
          caml_string_notequal(channel,cst_default)
          &&
          entry_points
          &&
          !
          entry_points[2])
         {var ep$1=entry_points[1],_aLU_=[0,ep$1,0];switch$0 = 1}
        if(! switch$0)var _aLU_=0;
        var filtered_entry_points=_aLU_}
      if(filtered_entry_points)
       {var _aLA_=filtered_entry_points[1];
        if(filtered_entry_points[2])
         return caml_call1(Stdlib[2],cst_Too_many_channels);
        var
         body=_aLA_[7],
         lazify=_aLA_[4],
         lazify$0=caml_call2(Utils_Option[45],config[7],lazify);
        if(state[2])
         {var
           _aLB_=state[5],
           _aLC_=state[4],
           _aLD_=state[3],
           _aLE_=state[2],
           contract_state=
            [0,
             caml_call2(Big_int[5],context[1][5],state[1]),
             _aLE_,
             _aLD_,
             _aLC_,
             _aLB_],
           in_contract=[0,params,context[1],[0,contract_state],tparameter],
           env=
            [0,
             [1,in_contract],
             primitives,
             [0,0],
             [0,0],
             context[1][9],
             [0,0],
             0,
             global_variables,
             [0,0]];
          if(lazify$0)
           {var match$0=caml_call3(Utils_List[82],0,channel,state[4]);
            if(! match$0)throw [0,Assert_failure,_aeY_];
            var ep=match$0[1],ep$0=ep}
          else
           var ep$0=418396260;
          try
           {if(typeof ep$0 === "number")
             if(919067353 <= ep$0)
              var
               _aLH_=env[6][1],
               _aLI_=
                [0,0,0,[0,[0,string$4(cst_Missing_entry_point),err$2]],_aLH_];
             else
              {interpret_command$0(env[6],env,scenario_state,body);
               var
                _aLJ_=env[6][1],
                _aLK_=caml_call1(Utils_List[12],env[4][1]),
                _aLI_=[0,[0,[0,template,in_contract[3][1]]],_aLK_,0,_aLJ_]}
            else
             {var
               match$1=ep$0[2],
               args=match$1[2],
               l$1=match$1[1],
               _aLL_=state[2];
              if(_aLL_)
               var storage=_aLL_[1],storage$0=storage;
              else
               var storage$0=caml_call1(Stdlib[2],cst_no_storage$0);
              var
               params$0=variant_with_type(0,0,channel,params,tparameter),
               _aLM_=tuple$1([0,params$0,[0,storage$0,0]]),
               r=
                call_closure
                 (config,env[6],env,scenario_state,[0,l$1,args],_aLM_),
               _aLN_=r[1],
               switch$1=0;
              if(8 === _aLN_[0])
               {var _aLO_=_aLN_[1];
                if(_aLO_)
                 {var _aLP_=_aLO_[2];
                  if(_aLP_ && ! _aLP_[2])
                   {var
                     storage$1=_aLP_[1],
                     ops=_aLO_[1],
                     pp=function(param){throw [0,Assert_failure,_aeX_]},
                     _aLQ_=unList(pp,ops),
                     _aLR_=function(_aLV_){return unoperation(pp,_aLV_)},
                     ops$0=caml_call2(Utils_List[20],_aLR_,_aLQ_),
                     _aLS_=in_contract[3][1],
                     state$0=
                      [0,_aLS_[1],[0,storage$1],_aLS_[3],_aLS_[4],_aLS_[5]],
                     _aLT_=env[6][1],
                     _aLI_=
                      [0,
                       [0,[0,template,state$0]],
                       caml_call1(Utils_List[12],ops$0),
                       0,
                       _aLT_];
                    switch$1 = 1}}}
              if(! switch$1)throw [0,Assert_failure,_aeW_]}
            return _aLI_}
          catch(exn)
           {exn = caml_wrap_exception(exn);
            if(exn[1] === Stdlib[7])
             {var f=exn[2],_aLF_=env[6][1];
              return [0,
                      0,
                      0,
                      [0,[0,string$4(f),[0,_aeV_,[0,[0,936573133,f],0]]]],
                      _aLF_]}
            if(exn[1] === ExecFailure)
             {var message=exn[3],value=exn[2];
              return [0,0,0,[0,[0,value,message]],env[6][1]]}
            if(exn[1] === SmartExcept)
             {var l$0=exn[2],_aLG_=env[6][1];
              return [0,0,0,[0,[0,string$4(cst_Error),l$0]],_aLG_]}
            throw exn}}
        throw [0,
               SmartExcept,
               [0,_ae0_,[0,14832,[0,_aeZ_,[0,[0,848053268,context[1][8]],0]]]]]}
      return [0,
              0,
              0,
              [0,[0,caml_call3(Stdlib_printf[9],string$4,_ae1_,channel),0]],
              0]}
    function interpret_expr_external(config,primitives,no_env,scenario_state)
     {var env=[0,[0,no_env],primitives,[0,0],[0,0],0,[0,0],0,0,[0,0]];
      return interpret_expr(config,[0,0],env,scenario_state)}
    function interpret_contract(config,primitives,scenario_state,c)
     {var
       match=c[1],
       metadata=match[11],
       baker=match[4],
       storage=match[3],
       balance=match[2];
      function conv(name)
       {return interpret_expr_external
                (config,
                 primitives,
                 [0,[0,936573133,caml_call2(Stdlib[28],cst_Compute,name)],0],
                 scenario_state)}
      var
       _aLp_=conv(cst_balance$4),
       match$0=caml_call2(Utils_Option[17],_aLp_,balance);
      if(match$0)
       {var _aLq_=match$0[1][1],switch$0=0;
        if(0 === _aLq_[0])
         {var _aLr_=_aLq_[1],switch$1=0;
          if(typeof _aLr_ !== "number" && 6 === _aLr_[0])
           {var x=_aLr_[1],balance$0=x;switch$0 = 1;switch$1 = 1}}
        if(! switch$0)throw [0,Assert_failure,_ae2_]}
      else
       var balance$0=Big_int[1];
      var
       _aLs_=conv(cst_storage$28),
       storage$0=caml_call2(Utils_Option[17],_aLs_,storage);
      function _aLt_(x){return un_baker(caml_call1(conv(cst_baker$3),x))}
      var
       baker$0=caml_call2(Utils_Option[14],baker,_aLt_),
       _aLu_=conv(cst_storage$29),
       _aLv_=caml_call1(Utils_Misc[15],_aLu_),
       _aLw_=caml_call1(Utils_Control[5],_aLv_),
       metadata$0=caml_call2(Utils_List[20],_aLw_,metadata);
      function f(ep)
       {var
         lazify=caml_call2(Utils_Option[45],config[7],ep[4]),
         lazy_no_code=caml_call2(Utils_Option[45],0,ep[5]);
        if(lazify)
         {var _aLx_=lazy_no_code?919067353:418396260;
          return [0,[0,ep[1],_aLx_]]}
        return 0}
      var lazy_entry_points=caml_call2(Utils_List[78],f,c[1][6]);
      return [0,
              c,
              [0,balance$0,storage$0,baker$0,lazy_entry_points,metadata$0]]}
    var
     Smartml_Interpreter=
      [0,
       context_sender,
       context_time,
       context_contract_id,
       context_line_no,
       context_debug,
       context,
       interpret_message,
       interpret_expr_external,
       interpret_contract,
       update_contract_address,
       get_contract_address];
    caml_register_global(6515,Smartml_Interpreter,"Smartml__Interpreter");
    function reduce_talg(config,primitives,scenario_state)
     {function _aLm_(t){return t}
      function _aLn_(line_no,ct,c){return caml_call3(_yy_[10],line_no,c,ct)}
      return [0,
              function(line_no,et,e$0)
               {var e0=caml_call3(_yy_[9],line_no,e$0,et);
                if(6 === e$0[0])
                 {var _aLo_=e$0[1];
                  if(typeof _aLo_ === "number" && 6 === _aLo_)
                   {var
                     x=e$0[2],
                     v=
                      caml_call1
                       (interpret_expr_external
                         (config,
                          primitives,
                          [0,
                           _ae3_,
                           [0,[0,771172693,x],[0,14832,[0,[0,848053268,line_no],0]]]],
                          scenario_state),
                        x),
                     e=of_value(v);
                    return caml_call1(check_expr$0(config,0),e)}}
                return e0},
              _aLn_,
              _aLm_]}
    function reduce_expr(config,primitives,scenario_state)
     {return cata_texpr(reduce_talg(config,primitives,scenario_state))}
    function reduce_command(config,primitives,scenario_state)
     {return cata_tcommand(reduce_talg(config,primitives,scenario_state))}
    function reduce_contract(config,primitives,scenario_state,param)
     {var c=param[1];
      function reduce_entry_point(init)
       {var
         _aLj_=init[8],
         _aLk_=init[7],
         _aLl_=
          caml_call1(reduce_command(config,primitives,scenario_state),_aLk_);
        return [0,init[1],init[2],init[3],init[4],init[5],init[6],_aLl_,_aLj_]}
      var
       _aK9_=c[13],
       _aK__=c[12],
       _aK$_=c[11],
       _aLa_=c[10],
       _aLb_=reduce_expr(config,primitives,scenario_state),
       _aLc_=caml_call1(Utils_Control[5],_aLb_),
       _aLd_=caml_call2(Utils_List[20],_aLc_,_aLa_),
       _aLe_=c[9],
       _aLf_=c[8],
       _aLg_=c[7],
       _aLh_=c[6],
       _aLi_=caml_call1(caml_call1(Utils_List[20],reduce_entry_point),_aLh_),
       c$0=
        [0,
         c[1],
         c[2],
         c[3],
         c[4],
         c[5],
         _aLi_,
         _aLg_,
         _aLf_,
         _aLe_,
         _aLd_,
         _aK$_,
         _aK__,
         _aK9_];
      return [0,c$0]}
    function reduce_instance(config,primitives,scenario_state,param)
     {var state=param[2],match=param[1],tcontract=match[1];
      return [0,
              reduce_contract(config,primitives,scenario_state,[0,tcontract]),
              state]}
    var
     Smartml_Reducer=
      [0,reduce_expr,reduce_command,reduce_contract,reduce_instance];
    caml_register_global(6516,Smartml_Reducer,"Smartml__Reducer");
    function replace_alg(subst)
     {function _aK6_(t){return t}
      function _aK7_(line_no,c){return [0,c,line_no]}
      return [0,
              function(line_no,e)
               {if(5 === e[0])
                 {var _aK8_=e[1];
                  if(typeof _aK8_ !== "number")
                   switch(_aK8_[0])
                    {case 13:
                      var
                       i=_aK8_[1],
                       subst$0=caml_call2(Stdlib_hashtbl[7],subst[1],i);
                      if(subst$0){var x=subst$0[1];return x}
                      return [0,e,line_no];
                     case 15:
                      var
                       i$0=_aK8_[1],
                       subst$1=caml_call2(Stdlib_hashtbl[7],subst[2],i$0);
                      if(subst$1){var x$0=subst$1[1];return x$0}
                      return [0,e,line_no]
                     }}
                return [0,e,line_no]},
              _aK7_,
              _aK6_]}
    function replace_expr(subst){return cata_expr(replace_alg(subst))}
    function replace_command(subst){return cata_command(replace_alg(subst))}
    function replace_contract(subst,param)
     {var
       c=param[1],
       _aKQ_=c[13],
       _aKR_=c[12],
       _aKS_=c[11],
       _aKT_=c[10],
       _aKU_=replace_expr(subst),
       _aKV_=caml_call1(Utils_Control[5],_aKU_),
       _aKW_=caml_call2(Utils_List[20],_aKV_,_aKT_),
       _aKX_=c[9],
       _aKY_=c[8],
       _aKZ_=c[7],
       _aK0_=c[6];
      function _aK1_(init)
       {var
         _aK3_=init[8],
         _aK4_=init[7],
         _aK5_=caml_call1(replace_command(subst),_aK4_);
        return [0,init[1],init[2],init[3],init[4],init[5],init[6],_aK5_,_aK3_]}
      var
       _aK2_=caml_call1(caml_call1(Utils_List[20],_aK1_),_aK0_),
       c$0=
        [0,
         c[1],
         c[2],
         c[3],
         c[4],
         c[5],
         _aK2_,
         _aKZ_,
         _aKY_,
         _aKX_,
         _aKW_,
         _aKS_,
         _aKR_,
         _aKQ_];
      return [0,c$0]}
    var Smartml_Replacer=[0,replace_expr,replace_command,replace_contract];
    caml_register_global(6517,Smartml_Replacer,"Smartml__Replacer");
    function init_env(param){return [0,caml_call2(Stdlib_hashtbl[1],0,5),0]}
    function import_inner_layout(l)
     {if(1 === l[0])
       {var _aKJ_=l[1];
        if(_aKJ_)
         {var _aKK_=_aKJ_[1];
          if(0 === _aKK_[0] && ! _aKJ_[2])
           {var
             leaf$0=_aKK_[1],
             _aKD_=caml_call2(Base_String[87],0,leaf$0),
             match$0=caml_call2(Base_String[80],_aKD_,32),
             switch$0=0;
            if(match$0)
             {var _aKE_=match$0[2],_aKF_=match$0[1];
              if(_aKE_)
               if(caml_string_notequal(_aKE_[1],cst_as$0))
                switch$0 = 1;
               else
                {var _aKG_=_aKE_[2];
                 if(_aKG_)
                  if(_aKG_[2])
                   switch$0 = 1;
                  else
                   var target=_aKG_[1],_aKO_=target;
                 else
                  var _aKO_=cst$298}
              else
               var _aKO_=_aKF_}
            else
             switch$0 = 1;
            if(switch$0)
             var _aKO_=caml_call3(Stdlib_printf[9],Stdlib[2],_ae5_,leaf$0);
            var
             _aKz_=caml_call2(Base_String[87],0,leaf$0),
             match=caml_call2(Base_String[80],_aKz_,32),
             switch$1=0;
            if(match)
             {var _aKA_=match[2],_aKB_=match[1];
              if(_aKA_)
               if(caml_string_notequal(_aKA_[1],cst_as))
                switch$1 = 1;
               else
                {var _aKC_=_aKA_[2];
                 if(_aKC_ && _aKC_[2])switch$1 = 1;else var _aKP_=_aKB_}
              else
               var _aKP_=_aKB_}
            else
             switch$1 = 1;
            if(switch$1)
             var _aKP_=caml_call3(Stdlib_printf[9],Stdlib[2],_ae4_,leaf$0);
            return leaf(_aKP_,_aKO_)}
          var _aKL_=_aKJ_[2];
          if(_aKL_ && ! _aKL_[2])
           {var
             n2=_aKL_[1],
             _aKM_=import_inner_layout(n2),
             _aKN_=import_inner_layout(_aKK_);
            return caml_call2(Utils_Binary_tree[39],_aKN_,_aKM_)}}}
      var
       _aKH_=caml_call1(Base[84][15],l),
       _aKI_=caml_call2(Stdlib[28],cst_Layout_format_error,_aKH_);
      return caml_call1(Stdlib[2],_aKI_)}
    function import_layout(l,layout)
     {if(l)
       {if(0 === layout[0])
         {if(! caml_string_notequal(layout[1],cst_None$73))return unknown(0)}
        else
         {var _aKv_=layout[1];
          if(_aKv_)
           {var _aKw_=_aKv_[1];
            if(0 === _aKw_[0] && ! caml_string_notequal(_aKw_[1],cst_Some$72))
             {var _aKx_=_aKv_[2];
              if(_aKx_)
               {var _aKy_=_aKx_[1],switch$0=0;
                if
                 (0
                  ===
                  _aKy_[0]
                  &&
                  !
                  caml_string_notequal(_aKy_[1],cst_Right$15))
                 {if(! _aKx_[2])return value(comb_layout_of_row(-57574468,l))}
                else
                 switch$0 = 1;
                if(switch$0 && ! _aKx_[2])
                 return value(import_inner_layout(_aKy_))}}}}
        var
         _aKt_=caml_call1(Base[84][15],layout),
         _aKu_=caml_call2(Stdlib[28],cst_Layout_format_error$0,_aKt_);
        return caml_call1(Stdlib[2],_aKu_)}
      return unknown(0)}
    function assocList(n,param)
     {var param$0=param;
      for(;;)
       {if(param$0)
         {var _aKo_=param$0[1];
          if(0 === _aKo_[0])
           {var _aKp_=param$0[2];
            if(_aKp_)
             {var _aKq_=_aKp_[1],_aKr_=_aKo_[1];
              if(0 !== _aKq_[0])
               {var l=_aKq_[1];if(caml_string_equal(_aKr_,n))return l}}}
          var param$1=param$0[2],param$0=param$1;
          continue}
        var _aKs_=caml_call2(Stdlib[28],cst_Cannot_find,n);
        return caml_call1(Stdlib[2],_aKs_)}}
    function id$1(x){return x}
    function f_expr(line_no,e,default_line_no)
     {var
       line_no$0=0 === line_no?default_line_no:line_no,
       e$0=
        map_expr_f
         (function(e){return caml_call1(e,line_no$0)},
          id$1,
          id$1,
          elim_untyped,
          e);
      return [0,e$0,line_no$0]}
    function f_command(line_no,c)
     {var
       c$0=
        map_command_f(function(e){return caml_call1(e,line_no)},id$1,id$1,c);
      return [0,c$0,line_no]}
    var default_line_no_f=[0,f_expr,f_command,id$1];
    function int_option_of_string(l)
     {return caml_string_notequal(l,cst_None$74)?[0,caml_int_of_string(l)]:0}
    function import_line_no(x)
     {if(0 === x[0])
       {var _aKg_=x[1];
        return caml_string_notequal(_aKg_,cst_None$75)
                ?[0,[0,cst$299,caml_int_of_string(_aKg_)],0]
                :0}
      var _aKh_=x[1];
      if(_aKh_)
       {var _aKi_=_aKh_[1];
        if(0 === _aKi_[0])
         {var _aKj_=_aKh_[2];
          if(_aKj_)
           {var _aKk_=_aKj_[1],_aKl_=_aKi_[1];
            if(0 === _aKk_[0] && ! _aKj_[2])
             {var l=_aKk_[1];return [0,[0,_aKl_,caml_int_of_string(l)],0]}}}}
      var
       _aKm_=caml_call1(Base[84][15],x),
       _aKn_=caml_call2(Stdlib[28],cst_import_line_no,_aKm_);
      return caml_call1(Stdlib[2],_aKn_)}
    function string_of_line_no$0(l)
     {function _aKe_(param){var i=param[2];return caml_call1(Stdlib[33],i)}
      var _aKf_=caml_call2(Utils_List[20],_aKe_,l);
      return caml_call2(Utils_String[7],cst$300,_aKf_)}
    function import_bool(x)
     {if(caml_string_notequal(x,cst_False$4))
       {if(caml_string_notequal(x,cst_True$4))
         {var _aKd_=caml_call2(Stdlib[28],cst_import_bool,x);
          return caml_call1(Stdlib[2],_aKd_)}
        return 1}
      return 0}
    function import_opt_bool(x)
     {if(caml_string_notequal(x,cst_False$5))
       {if(caml_string_notequal(x,cst_None$76))
         {if(caml_string_notequal(x,cst_True$5))
           {var _aKc_=caml_call2(Stdlib[28],cst_import_opt_bool,x);
            return caml_call1(Stdlib[2],_aKc_)}
          return _ae6_}
        return 0}
      return _ae7_}
    function unAtom(param)
     {if(0 === param[0]){var n=param[1];return n}
      return caml_call1(Stdlib[2],cst_unAtom)}
    function import_flags(xs)
     {if(xs)
       {var _aJ9_=xs[1];
        if(0 === _aJ9_[0])
         {var
           _aJ__=caml_call1(Base[84][15],[1,xs]),
           _aJ$_=caml_call2(Stdlib[28],cst_import_flags,_aJ__);
          return caml_call1(Stdlib[2],_aJ$_)}
        var
         xs$0=xs[2],
         x=_aJ9_[1],
         x$0=caml_call2(Utils_List[20],unAtom,x),
         match=parse_flag(x$0);
        if(match){var x$1=match[1];return [0,x$1,import_flags(xs$0)]}
        var
         _aKa_=caml_call2(Utils_String[7],cst$301,x$0),
         _aKb_=caml_call2(Stdlib[28],cst_invalid_flag_usage,_aKa_);
        return caml_call1(Stdlib[2],_aKb_)}
      return 0}
    function import_binding(x)
     {if(1 === x[0])
       {var _aJ2_=x[1];
        if(_aJ2_)
         {var _aJ3_=_aJ2_[1];
          if(0 === _aJ3_[0] && ! caml_string_notequal(_aJ3_[1],cst_binding))
           {var _aJ4_=_aJ2_[2];
            if(_aJ4_)
             {var _aJ5_=_aJ4_[1];
              if(0 === _aJ5_[0])
               {var _aJ6_=_aJ4_[2];
                if(_aJ6_)
                 {var _aJ7_=_aJ6_[1],_aJ8_=_aJ5_[1];
                  if(0 === _aJ7_[0] && ! _aJ6_[2])
                   {var field=_aJ7_[1];return [0,_aJ8_,field]}}}}}}}
      var
       _aJ0_=caml_call1(Base[84][15],x),
       _aJ1_=caml_call2(Stdlib[28],cst_import_binding,_aJ0_);
      return caml_call1(Stdlib[2],_aJ1_)}
    function import_literal(env)
     {return function(l)
       {if(l)
         {var _aI2_=l[1];
          if(0 === _aI2_[0])
           {var _aI3_=_aI2_[1],switch$0=caml_string_compare(_aI3_,cst_key$9);
            if(0 <= switch$0)
             if(0 < switch$0)
              {var switch$1=caml_string_compare(_aI3_,cst_secret_key$4);
               if(0 <= switch$1)
                if(0 < switch$1)
                 if(caml_string_notequal(_aI3_,cst_signature$3))
                  if(caml_string_notequal(_aI3_,cst_string$4))
                   if(caml_string_notequal(_aI3_,cst_timestamp$3))
                    {if(! caml_string_notequal(_aI3_,cst_unit$2) && ! l[2])
                      return unit}
                   else
                    {var _aI4_=l[2];
                     if(_aI4_)
                      {var _aI5_=_aI4_[1];
                       if(0 === _aI5_[0] && ! _aI4_[2])
                        {var n=_aI5_[1];return [5,caml_call1(Big_int[34],n)]}}}
                  else
                   {var _aI6_=l[2];
                    if(_aI6_)
                     {var _aI7_=_aI6_[1];
                      if(0 === _aI7_[0] && ! _aI6_[2])
                       {var n$0=_aI7_[1];return [2,n$0]}}}
                 else
                  {var _aI8_=l[2];
                   if(_aI8_)
                    {var _aI9_=_aI8_[1];
                     if(0 === _aI9_[0] && ! _aI8_[2])
                      {var n$1=_aI9_[1];return [12,n$1]}}}
                else
                 {var _aI__=l[2];
                  if(_aI__)
                   {var _aI$_=_aI__[1];
                    if(0 === _aI$_[0] && ! _aI__[2])
                     {var n$2=_aI$_[1];return [9,n$2]}}}
               else
                if(caml_string_notequal(_aI3_,cst_key_hash$2))
                 if(caml_string_notequal(_aI3_,cst_literal$0))
                  if(caml_string_notequal(_aI3_,cst_mutez$1))
                   if(caml_string_notequal(_aI3_,cst_nat$1))
                    {if
                      (!
                       caml_string_notequal(_aI3_,cst_sapling_test_transaction$0))
                      {var _aJa_=l[2];
                       if(_aJa_)
                        {var _aJb_=_aJa_[1];
                         if(0 === _aJb_[0])
                          {var _aJc_=_aJa_[2];
                           if(_aJc_)
                            {var _aJd_=_aJc_[1],_aJe_=_aJb_[1];
                             if(0 === _aJd_[0])
                              {var _aJf_=_aJc_[2];
                               if(_aJf_)
                                {var _aJg_=_aJf_[1],_aJh_=_aJd_[1];
                                 if(0 === _aJg_[0])
                                  {var _aJi_=_aJf_[2];
                                   if(_aJi_)
                                    {var _aJj_=_aJi_[1],_aJk_=_aJg_[1];
                                     if(0 === _aJj_[0])
                                      {var _aJl_=_aJi_[2];
                                       if(_aJl_ && ! _aJl_[2])
                                        {var
                                          amount=_aJj_[1],
                                          source=caml_string_equal(_aJh_,cst$302)?0:[0,_aJh_],
                                          target=caml_string_equal(_aJk_,cst$303)?0:[0,_aJk_],
                                          _aJm_=caml_call1(Big_int[34],amount);
                                         return sapling_test_transaction
                                                 (caml_int_of_string(_aJe_),source,target,_aJm_)}}}}}}}}}}}
                   else
                    {var _aJn_=l[2];
                     if(_aJn_)
                      {var _aJo_=_aJn_[1];
                       if(0 === _aJo_[0] && ! _aJn_[2])
                        {var n$3=_aJo_[1];return nat(caml_call1(Big_int[34],n$3))}}}
                  else
                   {var _aJp_=l[2];
                    if(_aJp_)
                     {var _aJq_=_aJp_[1];
                      if(0 === _aJq_[0])
                       {if(! _aJp_[2])
                         {var n$4=_aJq_[1];return [6,caml_call1(Big_int[34],n$4)]}}
                      else
                       if(! _aJp_[2])
                        {var
                          l$0=_aJq_[1],
                          _aJr_=unInt(caml_call1(import_literal(env),l$0));
                         return [6,caml_call4(Base_Option[41],0,0,0,_aJr_)]}}}
                 else
                  {var _aJs_=l[2];
                   if(_aJs_)
                    {var _aJt_=_aJs_[1];
                     if(0 !== _aJt_[0])
                      {var _aJu_=_aJs_[2];
                       if(_aJu_ && ! _aJu_[2])
                        {var x=_aJt_[1];return caml_call1(import_literal(env),x)}}}}
                else
                 {var _aJv_=l[2];
                  if(_aJv_)
                   {var _aJw_=_aJv_[1];
                    if(0 === _aJw_[0] && ! _aJv_[2])
                     {var n$5=_aJw_[1];return [10,n$5]}}}}
             else
              {var _aJx_=l[2];
               if(_aJx_)
                {var _aJy_=_aJx_[1];
                 if(0 === _aJy_[0] && ! _aJx_[2])
                  {var n$6=_aJy_[1];return [8,n$6]}}}
            else
             {var switch$2=caml_string_compare(_aI3_,cst_bool$1);
              if(0 <= switch$2)
               if(0 < switch$2)
                if(caml_string_notequal(_aI3_,cst_bytes$5))
                 if(caml_string_notequal(_aI3_,cst_chain_id_cst))
                  if(caml_string_notequal(_aI3_,cst_int$4))
                   {if(! caml_string_notequal(_aI3_,cst_intOrNat$0))
                     {var _aJz_=l[2];
                      if(_aJz_)
                       {var _aJA_=_aJz_[1];
                        if(0 === _aJA_[0] && ! _aJz_[2])
                         {var n$7=_aJA_[1],_aJB_=caml_call1(Big_int[34],n$7);
                          return [1,_aJB_,unknown(0)]}}}}
                  else
                   {var _aJC_=l[2];
                    if(_aJC_)
                     {var _aJD_=_aJC_[1];
                      if(0 === _aJD_[0] && ! _aJC_[2])
                       {var n$8=_aJD_[1];return int$0(caml_call1(Big_int[34],n$8))}}}
                 else
                  {var _aJE_=l[2];
                   if(_aJE_)
                    {var _aJF_=_aJE_[1];
                     if(0 === _aJF_[0] && ! _aJE_[2])
                      {var
                        n$9=_aJF_[1],
                        _aJG_=caml_call2(Base_String[98],n$9,cst_0x$3),
                        n$10=caml_call2(Base_Option[40],_aJG_,n$9);
                       return [4,caml_call1(Utils_Misc[4][2],n$10)]}}}
                else
                 {var _aJH_=l[2];
                  if(_aJH_)
                   {var _aJI_=_aJH_[1];
                    if(0 === _aJI_[0] && ! _aJH_[2])
                     {var
                       n$11=_aJI_[1],
                       _aJJ_=caml_call2(Base_String[98],n$11,cst_0x$4),
                       n$12=caml_call2(Base_Option[40],_aJJ_,n$11);
                      return [3,caml_call1(Utils_Misc[4][2],n$12)]}}}
               else
                {var _aJK_=l[2];
                 if(_aJK_)
                  {var _aJL_=_aJK_[1];
                   if(0 === _aJL_[0])
                    {var _aJM_=_aJL_[1];
                     if(caml_string_notequal(_aJM_,cst_False$6))
                      {if(! caml_string_notequal(_aJM_,cst_True$6) && ! _aJK_[2])
                        return [0,1]}
                     else
                      if(! _aJK_[2])return [0,0]}}}
              else
               if(caml_string_notequal(_aI3_,cst_address$8))
                if(caml_string_notequal(_aI3_,cst_baker_hash$2))
                 if(caml_string_notequal(_aI3_,cst_bls12_381_fr$3))
                  if(caml_string_notequal(_aI3_,cst_bls12_381_g1$3))
                   {if(! caml_string_notequal(_aI3_,cst_bls12_381_g2$3))
                     {var _aJN_=l[2];
                      if(_aJN_)
                       {var _aJO_=_aJN_[1];
                        if(0 === _aJO_[0] && ! _aJN_[2])
                         {var
                           n$13=_aJO_[1],
                           _aJP_=caml_call2(Base_String[98],n$13,cst_0x$5),
                           n$14=caml_call2(Base_Option[40],_aJP_,n$13);
                          return [16,caml_call1(Utils_Misc[4][2],n$14)]}}}}
                  else
                   {var _aJQ_=l[2];
                    if(_aJQ_)
                     {var _aJR_=_aJQ_[1];
                      if(0 === _aJR_[0] && ! _aJQ_[2])
                       {var
                         n$15=_aJR_[1],
                         _aJS_=caml_call2(Base_String[98],n$15,cst_0x$6),
                         n$16=caml_call2(Base_Option[40],_aJS_,n$15);
                        return [15,caml_call1(Utils_Misc[4][2],n$16)]}}}
                 else
                  {var _aJT_=l[2];
                   if(_aJT_)
                    {var _aJU_=_aJT_[1];
                     if(0 === _aJU_[0] && ! _aJT_[2])
                      {var
                        n$17=_aJU_[1],
                        _aJV_=caml_call2(Base_String[98],n$17,cst_0x$7),
                        n$18=caml_call2(Base_Option[40],_aJV_,n$17);
                       return [17,caml_call1(Utils_Misc[4][2],n$18)]}}}
                else
                 {var _aJW_=l[2];
                  if(_aJW_)
                   {var _aJX_=_aJW_[1];
                    if(0 === _aJX_[0] && ! _aJW_[2])
                     {var n$19=_aJX_[1];return [11,n$19]}}}
               else
                {var _aJY_=l[2];
                 if(_aJY_)
                  {var _aJZ_=_aJY_[1];
                   if(0 === _aJZ_[0] && ! _aJY_[2])
                    {var n$20=_aJZ_[1];return [7,n$20,0]}}}}}}
        return caml_call4
                (Stdlib_format[134],Stdlib[2],_ae8_,Base[84][12],[1,l])}}
    function import_type(env)
     {function import_type(t)
       {if(0 === t[0])
         {var _aIh_=t[1];
          if(caml_string_notequal(_aIh_,cst_unit$3))
           {var switch$0=caml_string_compare(_aIh_,cst_intOrNat$1);
            if(0 <= switch$0)
             {if(! (0 < switch$0))return intOrNat$0(0);
              if(! caml_string_notequal(_aIh_,cst_key$10))return key$0;
              if(! caml_string_notequal(_aIh_,cst_key_hash$3))
               return key_hash$0;
              if(! caml_string_notequal(_aIh_,cst_mutez$2))return token;
              if(! caml_string_notequal(_aIh_,cst_nat$2))return nat$0(0);
              if(! caml_string_notequal(_aIh_,cst_never$2))return never;
              if(! caml_string_notequal(_aIh_,cst_operation$4))
               return operation;
              if(! caml_string_notequal(_aIh_,cst_signature$4))
               return signature$0;
              if(! caml_string_notequal(_aIh_,cst_string$5))return string$0;
              if(! caml_string_notequal(_aIh_,cst_timestamp$4))
               return timestamp$0}
            else
             {if(! caml_string_notequal(_aIh_,cst_address$9))return address$0;
              if(! caml_string_notequal(_aIh_,cst_baker_hash$3))
               return baker_hash$0;
              if(! caml_string_notequal(_aIh_,cst_bls12_381_fr$4))
               return bls12_381_fr$0;
              if(! caml_string_notequal(_aIh_,cst_bls12_381_g1$4))
               return bls12_381_g1$0;
              if(! caml_string_notequal(_aIh_,cst_bls12_381_g2$4))
               return bls12_381_g2$0;
              if(! caml_string_notequal(_aIh_,cst_bool$2))return bool$0;
              if(! caml_string_notequal(_aIh_,cst_bytes$6))return bytes$0;
              if(! caml_string_notequal(_aIh_,cst_chain_id$2))
               return chain_id$0;
              if(! caml_string_notequal(_aIh_,cst_int$5))return int$1(0)}
            var _aIg_=caml_call2(Stdlib[28],cst_Type_format_error_atom,_aIh_);
            return caml_call1(Stdlib[2],_aIg_)}
          return unit$0}
        var _aIi_=t[1];
        if(_aIi_)
         {var _aIj_=_aIi_[1];
          if(0 === _aIj_[0])
           {var _aIk_=_aIj_[1],switch$1=caml_string_compare(_aIk_,cst_record);
            if(0 <= switch$1)
             if(0 < switch$1)
              if(caml_string_notequal(_aIk_,cst_sapling_state$0))
               if(caml_string_notequal(_aIk_,cst_sapling_transaction$1))
                if(caml_string_notequal(_aIk_,cst_set$0))
                 if(caml_string_notequal(_aIk_,cst_ticket$2))
                  {if(! caml_string_notequal(_aIk_,cst_tuple))
                    {var l$1=_aIi_[2];
                     return tuple(caml_call2(Utils_List[20],import_type,l$1))}
                   if(caml_string_notequal(_aIk_,cst_unknown))
                    {if(! caml_string_notequal(_aIk_,cst_variant))
                      {var _aIr_=_aIi_[2];
                       if(_aIr_)
                        {var _aIs_=_aIr_[1];
                         if(0 !== _aIs_[0])
                          {var _aIt_=_aIr_[2];
                           if(_aIt_ && ! _aIt_[2])
                            {var
                              layout=_aIt_[1],
                              l=_aIs_[1],
                              l$0=caml_call2(Utils_List[20],importField,l),
                              _aIu_=function(_aIZ_){return _aIZ_[1]};
                             return variant
                                     (import_layout(caml_call2(Utils_List[20],_aIu_,l$0),layout),
                                      l$0)}}}}}
                   else
                    {var _aIv_=_aIi_[2];
                     if(_aIv_)
                      {var _aIw_=_aIv_[1];
                       if(0 === _aIw_[0] && ! _aIv_[2])
                        {var id=_aIw_[1],i=caml_call2(Stdlib[28],cst_sp$2,id);
                         if(caml_string_equal(i,cst$305))
                          return caml_call1(Stdlib[2],cst_empty_unknown);
                         var match=caml_call2(Stdlib_hashtbl[7],env[1],i);
                         if(match){var t$0=match[1];return t$0}
                         var r=unknown_raw([0,[0,i]]);
                         caml_call3(Stdlib_hashtbl[5],env[1],i,r);
                         return r}}}}
                 else
                  {var _aIx_=_aIi_[2];
                   if(_aIx_ && ! _aIx_[2])
                    {var t$1=_aIx_[1];return ticket(import_type(t$1))}}
                else
                 {var _aIy_=_aIi_[2];
                  if(_aIy_ && ! _aIy_[2])
                   {var t$2=_aIy_[1];return set$0(import_type(t$2))}}
               else
                {var _aIz_=_aIi_[2];
                 if(_aIz_)
                  {var _aIA_=_aIz_[1];
                   if(0 === _aIA_[0] && ! _aIz_[2])
                    {var memo_size=_aIA_[1];
                     return sapling_transaction(int_option_of_string(memo_size))}}}
              else
               {var _aIB_=_aIi_[2];
                if(_aIB_)
                 {var _aIC_=_aIB_[1];
                  if(0 === _aIC_[0] && ! _aIB_[2])
                   {var memo_size$0=_aIC_[1];
                    return sapling_state(int_option_of_string(memo_size$0))}}}
             else
              {var _aID_=_aIi_[2];
               if(_aID_)
                {var _aIE_=_aID_[1];
                 if(0 !== _aIE_[0])
                  {var _aIF_=_aID_[2];
                   if(_aIF_ && ! _aIF_[2])
                    {var
                      layout$0=_aIF_[1],
                      l$2=_aIE_[1],
                      l$3=caml_call2(Utils_List[20],importField,l$2),
                      _aIG_=function(_aI0_){return _aI0_[1]};
                     return record_or_unit
                             (import_layout
                               (caml_call2(Utils_List[20],_aIG_,l$3),layout$0),
                              l$3)}}}}
            else
             if(caml_string_notequal(_aIk_,cst_bigmap))
              if(caml_string_notequal(_aIk_,cst_bounded))
               if(caml_string_notequal(_aIk_,cst_contract$7))
                if(caml_string_notequal(_aIk_,cst_lambda$1))
                 if(caml_string_notequal(_aIk_,cst_list$2))
                  if(caml_string_notequal(_aIk_,cst_map$1))
                   {if(! caml_string_notequal(_aIk_,cst_option$1))
                     {var _aIH_=_aIi_[2];
                      if(_aIH_ && ! _aIH_[2])
                       {var t$3=_aIH_[1];return option(import_type(t$3))}}}
                  else
                   {var _aII_=_aIi_[2];
                    if(_aII_)
                     {var _aIJ_=_aII_[2];
                      if(_aIJ_ && ! _aIJ_[2])
                       {var v=_aIJ_[1],k=_aII_[1],_aIK_=import_type(v);
                        return map$0(0,import_type(k),_aIK_)}}}
                 else
                  {var _aIL_=_aIi_[2];
                   if(_aIL_ && ! _aIL_[2])
                    {var t$4=_aIL_[1];return list(import_type(t$4))}}
                else
                 {var _aIM_=_aIi_[2];
                  if(_aIM_)
                   {var _aIN_=_aIM_[2];
                    if(_aIN_ && ! _aIN_[2])
                     {var t2=_aIN_[1],t1=_aIM_[1],_aIO_=import_type(t2);
                      return lambda(import_type(t1),_aIO_)}}}
               else
                {var _aIP_=_aIi_[2];
                 if(_aIP_ && ! _aIP_[2])
                  {var t$5=_aIP_[1];return contract(import_type(t$5))}}
              else
               {var _aIQ_=_aIi_[2];
                if(_aIQ_)
                 {var _aIR_=_aIQ_[2];
                  if(_aIR_)
                   {var _aIS_=_aIR_[1],_aIT_=_aIQ_[1];
                    if(0 === _aIS_[0])
                     {var
                       cases=_aIR_[2],
                       final$0=_aIS_[1],
                       import_case=
                        function(param)
                         {if(0 === param[0])
                           {var
                             a=param[1],
                             _aI1_=caml_call2(Stdlib[28],cst_AAAAAAAAAAAA,a);
                            return caml_call1(Stdlib[2],_aI1_)}
                          var l=param[1];
                          return caml_call1(import_literal(env),l)},
                       _aIU_=caml_call2(Utils_List[20],import_case,cases),
                       _aIV_=import_bool(final$0);
                      return bounded(import_type(_aIT_),_aIV_,_aIU_)}}}}
             else
              {var _aIW_=_aIi_[2];
               if(_aIW_)
                {var _aIX_=_aIW_[2];
                 if(_aIX_ && ! _aIX_[2])
                  {var v$0=_aIX_[1],k$0=_aIW_[1],_aIY_=import_type(v$0);
                   return map$0(1,import_type(k$0),_aIY_)}}}}}
        var
         _aIl_=caml_call1(Utils_List[4],_aIi_),
         _aIm_=caml_call1(Stdlib[33],_aIl_),
         _aIn_=caml_call2(Stdlib[28],cst$304,_aIm_),
         _aIo_=caml_call1(Base[84][15],t),
         _aIp_=caml_call2(Stdlib[28],_aIo_,_aIn_),
         _aIq_=caml_call2(Stdlib[28],cst_Type_format_error_list,_aIp_);
        return caml_call1(Stdlib[2],_aIq_)}
      function importField(l)
       {if(1 === l[0])
         {var _aId_=l[1];
          if(_aId_)
           {var _aIe_=_aId_[1];
            if(0 === _aIe_[0])
             {var _aIf_=_aId_[2];
              if(_aIf_ && ! _aIf_[2])
               {var v=_aIf_[1],name=_aIe_[1];return [0,name,import_type(v)]}}}}
        var
         _aIb_=caml_call1(Base[84][15],l),
         _aIc_=caml_call2(Stdlib[28],cst_Type_field_format_error,_aIb_);
        return caml_call1(Stdlib[2],_aIc_)}
      return import_type}
    function import_contract_id(l)
     {if(1 === l[0])
       {var _aH4_=l[1];
        if(_aH4_)
         {var _aH5_=_aH4_[1];
          if(0 === _aH5_[0])
           {var _aH6_=_aH5_[1];
            if(caml_string_notequal(_aH6_,cst_dynamic_id$0))
             {if(! caml_string_notequal(_aH6_,cst_static_id$0))
               {var _aH7_=_aH4_[2];
                if(_aH7_)
                 {var _aH8_=_aH7_[1];
                  if(0 === _aH8_[0])
                   {var _aH9_=_aH7_[2];
                    if(_aH9_ && ! _aH9_[2])
                     {var id=_aH8_[1];return [0,[0,caml_int_of_string(id)]]}}}}}
            else
             {var _aH__=_aH4_[2];
              if(_aH__)
               {var _aH$_=_aH__[1];
                if(0 === _aH$_[0])
                 {var _aIa_=_aH__[2];
                  if(_aIa_ && ! _aIa_[2])
                   {var id$0=_aH$_[1];return [1,[0,caml_int_of_string(id$0)]]}}}}}}}
      return caml_call4(Stdlib_format[134],Stdlib[2],_ae9_,Base[84][12],l)}
    function import_expr(env)
     {function import_type$1(t){return caml_call1(import_type(env),t)}
      function import_type$0(t){return caml_call1(import_type(env),t)}
      function import_expr_inline_michelson(input)
       {var input$0=input;
        for(;;)
         {if(1 === input$0[0])
           {var _aHV_=input$0[1];
            if(_aHV_)
             {var _aHW_=_aHV_[1];
              if(0 === _aHW_[0])
               {var _aHX_=_aHW_[1];
                if(caml_string_notequal(_aHX_,cst_call_michelson))
                 {if(! caml_string_notequal(_aHX_,cst_op))
                   {var _aHY_=_aHV_[2];
                    if(_aHY_)
                     {var _aHZ_=_aHY_[1];
                      if(0 === _aHZ_[0])
                       {var
                         args=_aHY_[2],
                         name=_aHZ_[1],
                         parsed=parse_node(name),
                         acc=0,
                         param=args;
                        for(;;)
                         {if(param)
                           {var _aH0_=param[1];
                            if
                             (0 === _aH0_[0] && ! caml_string_notequal(_aH0_[1],cst_out))
                             {var
                               out=param[2],
                               typesOut=caml_call2(Utils_List[20],import_type$0,out),
                               typesIn=caml_call1(Utils_List[12],acc);
                              return [0,name,parsed,typesIn,typesOut]}
                            var
                             args$0=param[2],
                             acc$0=[0,import_type$0(_aH0_),acc],
                             acc=acc$0,
                             param=args$0;
                            continue}
                          throw [0,Assert_failure,_ae$_]}}}}}
                else
                 {var _aH1_=_aHV_[2];
                  if(_aH1_)
                   {var _aH2_=_aH1_[2];
                    if(_aH2_)
                     {var _aH3_=_aH1_[1];
                      if(0 === _aH2_[1][0] && ! _aH2_[2])
                       {var input$0=_aH3_;continue}}}}}}}
          var
           _aHT_=caml_call1(Base[84][15],input$0),
           _aHU_=caml_call2(Stdlib_printf[4],_ae__,_aHT_);
          return caml_call1(Stdlib[2],_aHU_)}}
      function import_lambda(id,name,line_no,body,clean_stack)
       {var
         line_no$0=import_line_no(line_no),
         _aHS_=seq$0(line_no$0,caml_call1(import_commands(env),body));
        return lambda$0
                (line_no$0,caml_int_of_string(id),name,_aHS_,clean_stack)}
      function import_expr(input)
       {if(1 === input[0])
         {var _aBw_=input[1];
          if(_aBw_)
           {var _aBx_=_aBw_[1];
            if(0 === _aBx_[0])
             {var
               args=_aBw_[2],
               f=_aBx_[1],
               switch$0=caml_string_compare(f,cst_map$2);
              if(0 <= switch$0)
               {if(0 < switch$0)
                 {var switch$1=caml_string_compare(f,cst_sender$0);
                  if(0 <= switch$1)
                   {if(0 < switch$1)
                     {var switch$2=caml_string_compare(f,cst_toInt);
                      if(0 <= switch$2)
                       {if(0 < switch$2)
                         {var switch$3=caml_string_compare(f,cst_unbounded);
                          if(0 <= switch$3)
                           {if(0 < switch$3)
                             {if(caml_string_notequal(f,cst_unpack$0))
                               {if(caml_string_notequal(f,cst_update_map))
                                 {if(caml_string_notequal(f,cst_values))
                                   {if(caml_string_notequal(f,cst_variant$0))
                                     {if(caml_string_notequal(f,cst_variant_arg))
                                       {if(caml_string_notequal(f,cst_voting_power$0))
                                         {if(! caml_string_notequal(f,cst_xor) && args)
                                           {var _aBC_=args[2];
                                            if(_aBC_)
                                             {var _aBD_=_aBC_[2];
                                              if(_aBD_ && ! _aBD_[2])
                                               {var
                                                 line_no=_aBD_[1],
                                                 e2=_aBC_[1],
                                                 e1=args[1],
                                                 _aBE_=import_expr(e2),
                                                 _aBF_=import_expr(e1);
                                                return xor(import_line_no(line_no),_aBF_,_aBE_)}}}}
                                        else
                                         if(args)
                                          {var _aBG_=args[2];
                                           if(_aBG_ && ! _aBG_[2])
                                            {var line_no$0=_aBG_[1],e=args[1],_aBH_=import_expr(e);
                                             return voting_power(import_line_no(line_no$0),_aBH_)}}}
                                      else
                                       if(args)
                                        {var _aBI_=args[1];
                                         if(0 === _aBI_[0])
                                          {var _aBJ_=args[2];
                                           if(_aBJ_ && ! _aBJ_[2])
                                            {var line_no$1=_aBJ_[1],arg_name=_aBI_[1];
                                             return variant_arg(import_line_no(line_no$1),arg_name)}}}}
                                    else
                                     if(args)
                                      {var _aBK_=args[1];
                                       if(0 === _aBK_[0])
                                        {var _aBL_=args[2];
                                         if(_aBL_)
                                          {var _aBM_=_aBL_[2];
                                           if(_aBM_ && ! _aBM_[2])
                                            {var
                                              line_no$2=_aBM_[1],
                                              x=_aBL_[1],
                                              name=_aBK_[1],
                                              _aBN_=import_expr(x);
                                             return variant$0(import_line_no(line_no$2),name,_aBN_)}}}}}
                                  else
                                   if(args)
                                    {var _aBO_=args[2];
                                     if(_aBO_ && ! _aBO_[2])
                                      {var line_no$3=_aBO_[1],e$0=args[1],_aBP_=import_expr(e$0);
                                       return listValues(import_line_no(line_no$3),_aBP_,0)}}}
                                else
                                 if(args)
                                  {var _aBQ_=args[2];
                                   if(_aBQ_)
                                    {var _aBR_=_aBQ_[2];
                                     if(_aBR_)
                                      {var _aBS_=_aBR_[2];
                                       if(_aBS_ && ! _aBS_[2])
                                        {var
                                          line_no$4=_aBS_[1],
                                          v=_aBR_[1],
                                          key=_aBQ_[1],
                                          map=args[1],
                                          _aBT_=import_expr(v),
                                          _aBU_=import_expr(key),
                                          _aBV_=import_expr(map);
                                         return updateMap
                                                 (import_line_no(line_no$4),_aBV_,_aBU_,_aBT_)}}}}}
                              else
                               if(args)
                                {var _aBW_=args[2];
                                 if(_aBW_)
                                  {var _aBX_=_aBW_[2];
                                   if(_aBX_ && ! _aBX_[2])
                                    {var
                                      line_no$5=_aBX_[1],
                                      t=_aBW_[1],
                                      e$1=args[1],
                                      _aBY_=import_type$1(t),
                                      _aBZ_=import_expr(e$1);
                                     return unpack(import_line_no(line_no$5),_aBZ_,_aBY_)}}}}
                            else
                             if(args)
                              {var _aB0_=args[2];
                               if(_aB0_ && ! _aB0_[2])
                                {var
                                  line_no$6=_aB0_[1],
                                  x$0=args[1],
                                  line_no$7=import_line_no(line_no$6);
                                 return unbounded(line_no$7,import_expr(x$0))}}}
                          else
                           if(caml_string_notequal(f,cst_to_address$0))
                            {if(caml_string_notequal(f,cst_to_constant$0))
                              {if(caml_string_notequal(f,cst_total_voting_power$0))
                                {if(caml_string_notequal(f,cst_transfer))
                                  {if(caml_string_notequal(f,cst_truediv))
                                    {if(! caml_string_notequal(f,cst_tuple$0))
                                      {if(args)
                                        {var
                                          es=args[2],
                                          line_no$10=args[1],
                                          _aB3_=caml_call2(Utils_List[20],import_expr,es);
                                         return tuple$0(import_line_no(line_no$10),_aB3_)}
                                       var
                                        _aB4_=caml_call1(Base[84][15],input),
                                        _aB5_=caml_call2(Stdlib_printf[4],_afb_,_aB4_);
                                       return caml_call1(Stdlib[2],_aB5_)}
                                     if(! caml_string_notequal(f,cst_type_annotation) && args)
                                      {var _aB1_=args[2];
                                       if(_aB1_)
                                        {var _aB2_=_aB1_[2];
                                         if(_aB2_ && ! _aB2_[2])
                                          {var
                                            line_no$8=_aB2_[1],
                                            t$0=_aB1_[1],
                                            e$2=args[1],
                                            e$3=import_expr(e$2),
                                            t$1=import_type$1(t$0),
                                            line_no$9=import_line_no(line_no$8);
                                           return type_annotation(line_no$9,e$3,t$1)}}}}
                                   else
                                    if(args)
                                     {var _aB6_=args[2];
                                      if(_aB6_)
                                       {var _aB7_=_aB6_[2];
                                        if(_aB7_ && ! _aB7_[2])
                                         {var
                                           line_no$11=_aB7_[1],
                                           e2$0=_aB6_[1],
                                           e1$0=args[1],
                                           _aB8_=import_expr(e2$0),
                                           _aB9_=import_expr(e1$0);
                                          return div(import_line_no(line_no$11),_aB9_,_aB8_)}}}}
                                 else
                                  if(args)
                                   {var _aB__=args[2];
                                    if(_aB__)
                                     {var _aB$_=_aB__[2];
                                      if(_aB$_)
                                       {var _aCa_=_aB$_[2];
                                        if(_aCa_ && ! _aCa_[2])
                                         {var
                                           line_no$12=_aCa_[1],
                                           e3=_aB$_[1],
                                           e2$1=_aB__[1],
                                           e1$1=args[1],
                                           _aCb_=import_expr(e3),
                                           _aCc_=import_expr(e2$1),
                                           _aCd_=import_expr(e1$1);
                                          return transfer
                                                  (import_line_no(line_no$12),_aCd_,_aCc_,_aCb_)}}}}}
                               else
                                if(! args)return total_voting_power}
                             else
                              if(args)
                               {var _aCe_=args[2];
                                if(_aCe_ && ! _aCe_[2])
                                 {var line_no$13=_aCe_[1],e$4=args[1],_aCf_=import_expr(e$4);
                                  return to_constant(import_line_no(line_no$13),_aCf_)}}}
                           else
                            if(args)
                             {var _aCg_=args[2];
                              if(_aCg_ && ! _aCg_[2])
                               {var line_no$14=_aCg_[1],e$5=args[1],_aCh_=import_expr(e$5);
                                return to_address(import_line_no(line_no$14),_aCh_)}}}
                        else
                         if(args)
                          {var _aCi_=args[2];
                           if(_aCi_ && ! _aCi_[2])
                            {var
                              line_no$15=_aCi_[1],
                              e1$2=args[1],
                              _aCj_=import_expr(e1$2);
                             return to_int(import_line_no(line_no$15),_aCj_)}}}
                      else
                       {var switch$4=caml_string_compare(f,cst_slice);
                        if(0 <= switch$4)
                         {if(0 < switch$4)
                           {if(caml_string_notequal(f,cst_source$1))
                             {if(caml_string_notequal(f,cst_split_ticket))
                               {if(caml_string_notequal(f,cst_split_tokens))
                                 {if(caml_string_notequal(f,cst_sub))
                                   {if(caml_string_notequal(f,cst_sum$0))
                                     {if(caml_string_notequal(f,cst_test_ticket))
                                       {if(! caml_string_notequal(f,cst_ticket$3) && args)
                                         {var _aCk_=args[2];
                                          if(_aCk_)
                                           {var _aCl_=_aCk_[2];
                                            if(_aCl_ && ! _aCl_[2])
                                             {var
                                               line_no$16=_aCl_[1],
                                               amount$0=_aCk_[1],
                                               content=args[1],
                                               _aCm_=import_expr(amount$0),
                                               _aCn_=import_expr(content);
                                              return build_ticket(import_line_no(line_no$16),_aCn_,_aCm_)}}}}
                                      else
                                       if(args)
                                        {var _aCo_=args[2];
                                         if(_aCo_)
                                          {var _aCp_=_aCo_[2];
                                           if(_aCp_)
                                            {var _aCq_=_aCp_[2];
                                             if(_aCq_ && ! _aCq_[2])
                                              {var
                                                line_no$17=_aCq_[1],
                                                amount$1=_aCp_[1],
                                                content$0=_aCo_[1],
                                                ticketer=args[1],
                                                _aCr_=import_expr(amount$1),
                                                _aCs_=import_expr(content$0),
                                                _aCt_=import_expr(ticketer);
                                               return test_ticket
                                                       (import_line_no(line_no$17),_aCt_,_aCs_,_aCr_)}}}}}
                                    else
                                     if(args)
                                      {var _aCu_=args[2];
                                       if(_aCu_ && ! _aCu_[2])
                                        {var line_no$18=_aCu_[1],a=args[1],_aCv_=import_expr(a);
                                         return sum(import_line_no(line_no$18),_aCv_)}}}
                                  else
                                   if(args)
                                    {var _aCw_=args[2];
                                     if(_aCw_)
                                      {var _aCx_=_aCw_[2];
                                       if(_aCx_ && ! _aCx_[2])
                                        {var
                                          line_no$19=_aCx_[1],
                                          e2$2=_aCw_[1],
                                          e1$3=args[1],
                                          _aCy_=import_expr(e2$2),
                                          _aCz_=import_expr(e1$3);
                                         return sub(import_line_no(line_no$19),_aCz_,_aCy_)}}}}
                                else
                                 if(args)
                                  {var _aCA_=args[2];
                                   if(_aCA_)
                                    {var _aCB_=_aCA_[2];
                                     if(_aCB_)
                                      {var _aCC_=_aCB_[2];
                                       if(_aCC_ && ! _aCC_[2])
                                        {var
                                          line_no$20=_aCC_[1],
                                          total=_aCB_[1],
                                          quantity=_aCA_[1],
                                          mutez=args[1],
                                          _aCD_=import_expr(total),
                                          _aCE_=import_expr(quantity),
                                          _aCF_=import_expr(mutez);
                                         return split_tokens
                                                 (import_line_no(line_no$20),_aCF_,_aCE_,_aCD_)}}}}}
                              else
                               if(args)
                                {var _aCG_=args[2];
                                 if(_aCG_)
                                  {var _aCH_=_aCG_[2];
                                   if(_aCH_ && ! _aCH_[2])
                                    {var
                                      line_no$21=_aCH_[1],
                                      decomposition=_aCG_[1],
                                      ticket=args[1],
                                      _aCI_=import_expr(decomposition),
                                      _aCJ_=import_expr(ticket);
                                     return split_ticket(import_line_no(line_no$21),_aCJ_,_aCI_)}}}}
                            else
                             if(! args)return source}
                          else
                           if(args)
                            {var _aCK_=args[2];
                             if(_aCK_)
                              {var _aCL_=_aCK_[2];
                               if(_aCL_)
                                {var _aCM_=_aCL_[2];
                                 if(_aCM_ && ! _aCM_[2])
                                  {var
                                    line_no$22=_aCM_[1],
                                    buf=_aCL_[1],
                                    len=_aCK_[1],
                                    ofs=args[1],
                                    offset=import_expr(ofs),
                                    length=import_expr(len),
                                    buffer=import_expr(buf);
                                   return slice
                                           (import_line_no(line_no$22),offset,length,buffer)}}}}}
                        else
                         if(caml_string_notequal(f,cst_set$1))
                          {if(caml_string_notequal(f,cst_set_delegate))
                            {if(caml_string_notequal(f,cst_sha256))
                              {if(caml_string_notequal(f,cst_sha3))
                                {if(caml_string_notequal(f,cst_sha512))
                                  {if(caml_string_notequal(f,cst_sign$0))
                                    {if(! caml_string_notequal(f,cst_size) && args)
                                      {var _aCN_=args[2];
                                       if(_aCN_ && ! _aCN_[2])
                                        {var line_no$23=_aCN_[1],s=args[1],_aCO_=import_expr(s);
                                         return size(import_line_no(line_no$23),_aCO_)}}}
                                   else
                                    if(args)
                                     {var _aCP_=args[2];
                                      if(_aCP_ && ! _aCP_[2])
                                       {var
                                         line_no$24=_aCP_[1],
                                         e1$4=args[1],
                                         _aCQ_=import_expr(e1$4);
                                        return signE(import_line_no(line_no$24),_aCQ_)}}}
                                 else
                                  if(args)
                                   {var _aCR_=args[2];
                                    if(_aCR_ && ! _aCR_[2])
                                     {var line_no$25=_aCR_[1],e$6=args[1],_aCS_=import_expr(e$6);
                                      return sha512(import_line_no(line_no$25),_aCS_)}}}
                               else
                                if(args)
                                 {var _aCT_=args[2];
                                  if(_aCT_ && ! _aCT_[2])
                                   {var line_no$26=_aCT_[1],e$7=args[1],_aCU_=import_expr(e$7);
                                    return sha3(import_line_no(line_no$26),_aCU_)}}}
                             else
                              if(args)
                               {var _aCV_=args[2];
                                if(_aCV_ && ! _aCV_[2])
                                 {var line_no$27=_aCV_[1],e$8=args[1],_aCW_=import_expr(e$8);
                                  return sha256(import_line_no(line_no$27),_aCW_)}}}
                           else
                            if(args)
                             {var _aCX_=args[2];
                              if(_aCX_ && ! _aCX_[2])
                               {var line_no$28=_aCX_[1],x$1=args[1],_aCY_=import_expr(x$1);
                                return set_delegate(import_line_no(line_no$28),_aCY_)}}}
                         else
                          if(args)
                           {var
                             entries=args[2],
                             line_no$29=args[1],
                             _aCZ_=caml_call2(Utils_List[20],import_expr,entries);
                            return build_set(import_line_no(line_no$29),_aCZ_)}}}
                    else
                     if(! args)return sender}
                  else
                   {var switch$5=caml_string_compare(f,cst_pairing_check$0);
                    if(0 <= switch$5)
                     {if(0 < switch$5)
                       {var switch$6=caml_string_compare(f,cst_rev_keys);
                        if(0 <= switch$6)
                         {if(0 < switch$6)
                           {if(caml_string_notequal(f,cst_rev_values))
                             {if(caml_string_notequal(f,cst_sapling_empty_state))
                               {if(caml_string_notequal(f,cst_sapling_verify_update))
                                 {if(caml_string_notequal(f,cst_scenario_var))
                                   {if(caml_string_notequal(f,cst_second))
                                     if(caml_string_notequal(f,cst_self$2))
                                      {if(! caml_string_notequal(f,cst_self_address$2) && ! args)
                                        return self_address}
                                     else
                                      {if(! args)return self;
                                       var _aC0_=args[1];
                                       if(0 === _aC0_[0])
                                        {var _aC1_=args[2];
                                         if(_aC1_ && ! _aC1_[2])
                                          {var line_no$30=_aC1_[1],name$0=_aC0_[1];
                                           if(caml_string_equal(name$0,cst$306))
                                            {var _aC2_=env[2];
                                             if(_aC2_)
                                              var name$1=_aC2_[1],name$2=name$1;
                                             else
                                              var
                                               name$2=
                                                caml_call1(Stdlib[2],cst_import_params_type_yet_unk);
                                             var name$3=name$2}
                                           else
                                            var name$3=name$0;
                                           return self_entry_point(import_line_no(line_no$30),name$3)}}}
                                    else
                                     if(args)
                                      {var _aC3_=args[2];
                                       if(_aC3_ && ! _aC3_[2])
                                        {var line_no$31=_aC3_[1],e$9=args[1],_aC4_=import_expr(e$9);
                                         return caml_call1(second(import_line_no(line_no$31)),_aC4_)}}}
                                  else
                                   if(args)
                                    {var _aC5_=args[1];
                                     if(0 === _aC5_[0])
                                      {var _aC6_=args[2];
                                       if(_aC6_ && ! _aC6_[2])
                                        {var
                                          line_no$32=_aC6_[1],
                                          id=_aC5_[1],
                                          _aC7_=caml_int_of_string(id);
                                         return scenario_var(import_line_no(line_no$32),_aC7_)}}}}
                                else
                                 if(args)
                                  {var _aC8_=args[2];
                                   if(_aC8_)
                                    {var _aC9_=_aC8_[2];
                                     if(_aC9_ && ! _aC9_[2])
                                      {var
                                        line_no$33=_aC9_[1],
                                        transaction=_aC8_[1],
                                        state=args[1],
                                        _aC__=import_expr(transaction),
                                        _aC$_=import_expr(state);
                                       return sapling_verify_update
                                               (import_line_no(line_no$33),_aC$_,_aC__)}}}}
                              else
                               if(args)
                                {var _aDa_=args[1];
                                 if(0 === _aDa_[0])
                                  {var _aDb_=args[2];
                                   if(_aDb_ && ! _aDb_[2])
                                    {var memo=_aDa_[1];
                                     return sapling_empty_state$0(caml_int_of_string(memo))}}}}
                            else
                             if(args)
                              {var _aDc_=args[2];
                               if(_aDc_ && ! _aDc_[2])
                                {var
                                  line_no$34=_aDc_[1],
                                  e$10=args[1],
                                  _aDd_=import_expr(e$10);
                                 return listValues(import_line_no(line_no$34),_aDd_,1)}}}
                          else
                           if(args)
                            {var _aDe_=args[2];
                             if(_aDe_ && ! _aDe_[2])
                              {var
                                line_no$35=_aDe_[1],
                                e$11=args[1],
                                _aDf_=import_expr(e$11);
                               return listKeys(import_line_no(line_no$35),_aDf_,1)}}}
                        else
                         if(caml_string_notequal(f,cst_params$5))
                          {if(caml_string_notequal(f,cst_range$0))
                            {if(caml_string_notequal(f,cst_read_ticket))
                              {if(caml_string_notequal(f,cst_record$0))
                                {if(caml_string_notequal(f,cst_rev))
                                  {if(caml_string_notequal(f,cst_rev_elements))
                                    {if(! caml_string_notequal(f,cst_rev_items) && args)
                                      {var _aDg_=args[2];
                                       if(_aDg_ && ! _aDg_[2])
                                        {var
                                          line_no$36=_aDg_[1],
                                          e$12=args[1],
                                          _aDh_=import_expr(e$12);
                                         return listItems(import_line_no(line_no$36),_aDh_,1)}}}
                                   else
                                    if(args)
                                     {var _aDi_=args[2];
                                      if(_aDi_ && ! _aDi_[2])
                                       {var
                                         line_no$37=_aDi_[1],
                                         e$13=args[1],
                                         _aDj_=import_expr(e$13);
                                        return listElements(import_line_no(line_no$37),_aDj_,1)}}}
                                 else
                                  if(args)
                                   {var _aDk_=args[2];
                                    if(_aDk_ && ! _aDk_[2])
                                     {var
                                       line_no$38=_aDk_[1],
                                       e$14=args[1],
                                       _aDl_=import_expr(e$14);
                                      return listRev(import_line_no(line_no$38),_aDl_)}}}
                               else
                                if(args)
                                 {var
                                   l=args[2],
                                   line_no$39=args[1],
                                   import_exprField=
                                    function(l)
                                     {if(1 === l[0])
                                       {var _aHK_=l[1];
                                        if(_aHK_)
                                         {var _aHL_=_aHK_[1];
                                          if(0 === _aHL_[0])
                                           {var _aHM_=_aHK_[2];
                                            if(_aHM_ && ! _aHM_[2])
                                             {var e=_aHM_[1],name=_aHL_[1];
                                              return [0,name,import_expr(e)]}}}}
                                      var
                                       _aHI_=caml_call1(Base[84][15],l),
                                       _aHJ_=
                                        caml_call2(Stdlib[28],cst_Expression_field_format_er,_aHI_);
                                      return caml_call1(Stdlib[2],_aHJ_)},
                                   _aDm_=caml_call2(Utils_List[20],import_exprField,l);
                                  return record$0(import_line_no(line_no$39),_aDm_)}}
                             else
                              if(args)
                               {var _aDn_=args[2];
                                if(_aDn_ && ! _aDn_[2])
                                 {var
                                   line_no$40=_aDn_[1],
                                   ticket$0=args[1],
                                   _aDo_=import_expr(ticket$0);
                                  return read_ticket(import_line_no(line_no$40),_aDo_)}}}
                           else
                            if(args)
                             {var _aDp_=args[2];
                              if(_aDp_)
                               {var _aDq_=_aDp_[2];
                                if(_aDq_)
                                 {var _aDr_=_aDq_[2];
                                  if(_aDr_ && ! _aDr_[2])
                                   {var
                                     line_no$41=_aDr_[1],
                                     e3$0=_aDq_[1],
                                     e2$3=_aDp_[1],
                                     e1$5=args[1],
                                     _aDs_=import_expr(e3$0),
                                     _aDt_=import_expr(e2$3),
                                     _aDu_=import_expr(e1$5);
                                    return range(import_line_no(line_no$41),_aDu_,_aDt_,_aDs_)}}}}}
                         else
                          if(args && ! args[2])
                           {var
                             line_no$42=args[1],
                             line_no$43=import_line_no(line_no$42);
                            return params(line_no$43)}}
                      else
                       if(args)
                        {var _aDv_=args[2];
                         if(_aDv_ && ! _aDv_[2])
                          {var
                            line_no$44=_aDv_[1],
                            pairs=args[1],
                            _aDw_=import_expr(pairs);
                           return pairing_check(import_line_no(line_no$44),_aDw_)}}}
                    else
                     {var switch$7=caml_string_compare(f,cst_neg);
                      if(0 <= switch$7)
                       {if(0 < switch$7)
                         {if(caml_string_notequal(f,cst_neq))
                           {if(caml_string_notequal(f,cst_not$1))
                             {if(caml_string_notequal(f,cst_now))
                               {if(caml_string_notequal(f,cst_openVariant))
                                 {if(caml_string_notequal(f,cst_operations$15))
                                   {if(caml_string_notequal(f,cst_or$0))
                                     {if(! caml_string_notequal(f,cst_pack$0) && args)
                                       {var _aDx_=args[2];
                                        if(_aDx_ && ! _aDx_[2])
                                         {var
                                           line_no$45=_aDx_[1],
                                           e$15=args[1],
                                           e$16=import_expr(e$15),
                                           _aDy_=import_line_no(line_no$45);
                                          return caml_call1(pack(e$16),_aDy_)}}}
                                    else
                                     if(args)
                                      {var _aDz_=args[2];
                                       if(_aDz_)
                                        {var _aDA_=_aDz_[2];
                                         if(_aDA_ && ! _aDA_[2])
                                          {var
                                            line_no$46=_aDA_[1],
                                            e2$4=_aDz_[1],
                                            e1$6=args[1],
                                            _aDB_=import_expr(e2$4),
                                            _aDC_=import_expr(e1$6);
                                           return b_or(import_line_no(line_no$46),_aDC_,_aDB_)}}}}
                                  else
                                   if(args && ! args[2])
                                    {var line_no$47=args[1];
                                     return operations(import_line_no(line_no$47))}}
                                else
                                 if(args)
                                  {var _aDD_=args[2];
                                   if(_aDD_)
                                    {var _aDE_=_aDD_[1],_aDF_=args[1];
                                     if(0 === _aDE_[0])
                                      {var _aDG_=_aDD_[2];
                                       if(_aDG_)
                                        {var _aDH_=_aDG_[2];
                                         if(_aDH_ && ! _aDH_[2])
                                          {var
                                            line_no$48=_aDH_[1],
                                            missing_message=_aDG_[1],
                                            name$4=_aDE_[1],
                                            switch$15=0;
                                           if
                                            (0
                                             ===
                                             missing_message[0]
                                             &&
                                             !
                                             caml_string_notequal(missing_message[1],cst_None$77))
                                            {var missing_message$0=0;switch$15 = 1}
                                           if(! switch$15)
                                            var missing_message$0=[0,import_expr(missing_message)];
                                           var _aDI_=import_expr(_aDF_);
                                           return openVariant
                                                   (import_line_no(line_no$48),name$4,_aDI_,missing_message$0)}}}}}}
                              else
                               if(! args)return now}
                            else
                             if(args)
                              {var _aDJ_=args[2];
                               if(_aDJ_ && ! _aDJ_[2])
                                {var
                                  line_no$49=_aDJ_[1],
                                  e1$7=args[1],
                                  _aDK_=import_expr(e1$7);
                                 return notE(import_line_no(line_no$49),_aDK_)}}}
                          else
                           if(args)
                            {var _aDL_=args[2];
                             if(_aDL_)
                              {var _aDM_=_aDL_[2];
                               if(_aDM_ && ! _aDM_[2])
                                {var
                                  line_no$50=_aDM_[1],
                                  e2$5=_aDL_[1],
                                  e1$8=args[1],
                                  _aDN_=import_expr(e2$5),
                                  _aDO_=import_expr(e1$8);
                                 return neq(import_line_no(line_no$50),_aDO_,_aDN_)}}}}
                        else
                         if(args)
                          {var _aDP_=args[2];
                           if(_aDP_ && ! _aDP_[2])
                            {var
                              line_no$51=_aDP_[1],
                              e1$9=args[1],
                              _aDQ_=import_expr(e1$9);
                             return negE(import_line_no(line_no$51),_aDQ_)}}}
                      else
                       if(caml_string_notequal(f,cst_map_function))
                        {if(caml_string_notequal(f,cst_match_cons$0))
                          {if(caml_string_notequal(f,cst_max$1))
                            {if(caml_string_notequal(f,cst_min$1))
                              {if(caml_string_notequal(f,cst_mod))
                                {if(caml_string_notequal(f,cst_mul$0))
                                  {if(! caml_string_notequal(f,cst_mul_overloaded) && args)
                                    {var _aDR_=args[2];
                                     if(_aDR_)
                                      {var _aDS_=_aDR_[2];
                                       if(_aDS_ && ! _aDS_[2])
                                        {var
                                          line_no$52=_aDS_[1],
                                          e2$6=_aDR_[1],
                                          e1$10=args[1],
                                          _aDT_=import_expr(e2$6),
                                          _aDU_=import_expr(e1$10);
                                         return mul_overloaded
                                                 (import_line_no(line_no$52),_aDU_,_aDT_)}}}}
                                 else
                                  if(args)
                                   {var _aDV_=args[2];
                                    if(_aDV_)
                                     {var _aDW_=_aDV_[2];
                                      if(_aDW_ && ! _aDW_[2])
                                       {var
                                         line_no$53=_aDW_[1],
                                         e2$7=_aDV_[1],
                                         e1$11=args[1],
                                         _aDX_=import_expr(e2$7),
                                         _aDY_=import_expr(e1$11);
                                        return mul(import_line_no(line_no$53),_aDY_,_aDX_)}}}}
                               else
                                if(args)
                                 {var _aDZ_=args[2];
                                  if(_aDZ_)
                                   {var _aD0_=_aDZ_[2];
                                    if(_aD0_ && ! _aD0_[2])
                                     {var
                                       line_no$54=_aD0_[1],
                                       e2$8=_aDZ_[1],
                                       e1$12=args[1],
                                       _aD1_=import_expr(e2$8),
                                       _aD2_=import_expr(e1$12);
                                      return e_mod(import_line_no(line_no$54),_aD2_,_aD1_)}}}}
                             else
                              if(args)
                               {var _aD3_=args[2];
                                if(_aD3_)
                                 {var _aD4_=_aD3_[2];
                                  if(_aD4_ && ! _aD4_[2])
                                   {var
                                     line_no$55=_aD4_[1],
                                     e2$9=_aD3_[1],
                                     e1$13=args[1],
                                     _aD5_=import_expr(e2$9),
                                     _aD6_=import_expr(e1$13);
                                    return e_min(import_line_no(line_no$55),_aD6_,_aD5_)}}}}
                           else
                            if(args)
                             {var _aD7_=args[2];
                              if(_aD7_)
                               {var _aD8_=_aD7_[2];
                                if(_aD8_ && ! _aD8_[2])
                                 {var
                                   line_no$56=_aD8_[1],
                                   e2$10=_aD7_[1],
                                   e1$14=args[1],
                                   _aD9_=import_expr(e2$10),
                                   _aD__=import_expr(e1$14);
                                  return e_max(import_line_no(line_no$56),_aD__,_aD9_)}}}}
                         else
                          if(args)
                           {var _aD$_=args[2];
                            if(_aD$_ && ! _aD$_[2])
                             {var
                               line_no$57=_aD$_[1],
                               line_no$58=import_line_no(line_no$57),
                               _aEa_=string_of_line_no$0(line_no$58),
                               name$5=caml_call2(Stdlib_printf[4],_afc_,_aEa_);
                              return match_cons(line_no$58,name$5)}}}
                       else
                        if(args)
                         {var _aEb_=args[2];
                          if(_aEb_)
                           {var _aEc_=_aEb_[2];
                            if(_aEc_ && ! _aEc_[2])
                             {var
                               line_no$59=_aEc_[1],
                               f$0=_aEb_[1],
                               l$0=args[1],
                               _aEd_=allow_lambda_full_stack(import_expr(f$0)),
                               _aEe_=import_expr(l$0);
                              return map_function(import_line_no(line_no$59),_aEe_,_aEd_)}}}}}}
                else
                 if(args)
                  {var
                    entries$0=args[2],
                    line_no$60=args[1],
                    _aEf_=caml_call2(Utils_List[20],import_map_entry,entries$0);
                   return build_map(import_line_no(line_no$60),0,_aEf_)}}
              else
               {var switch$8=caml_string_compare(f,cst_first);
                if(0 <= switch$8)
                 {if(0 < switch$8)
                   {var switch$9=caml_string_compare(f,cst_isVariant);
                    if(0 <= switch$9)
                     {if(0 < switch$9)
                       {var switch$10=caml_string_compare(f,cst_le);
                        if(0 <= switch$10)
                         {if(0 < switch$10)
                           {if(caml_string_notequal(f,cst_level$1))
                             {if(caml_string_notequal(f,cst_list$3))
                               {if(caml_string_notequal(f,cst_literal$1))
                                 {if(caml_string_notequal(f,cst_lsl))
                                   {if(caml_string_notequal(f,cst_lsr))
                                     {if(caml_string_notequal(f,cst_lt))
                                       {if(! caml_string_notequal(f,cst_make_signature) && args)
                                         {var _aEg_=args[2];
                                          if(_aEg_)
                                           {var _aEh_=_aEg_[2];
                                            if(_aEh_)
                                             {var _aEi_=_aEh_[1],_aEj_=_aEg_[1],_aEk_=args[1];
                                              if(0 === _aEi_[0])
                                               {var _aEl_=_aEh_[2];
                                                if(_aEl_ && ! _aEl_[2])
                                                 {var
                                                   line_no$61=_aEl_[1],
                                                   fmt=_aEi_[1],
                                                   line_no$62=import_line_no(line_no$61),
                                                   secret_key=import_expr(_aEk_),
                                                   message=import_expr(_aEj_),
                                                   other=caml_call1(Utils_String[30],fmt);
                                                  if(caml_string_notequal(other,cst_hex))
                                                   if(caml_string_notequal(other,cst_raw))
                                                    var
                                                     _aEm_=string_of_line_no$0(line_no$62),
                                                     message_format=
                                                      caml_call4(Stdlib_format[134],Stdlib[2],_afd_,other,_aEm_);
                                                   else
                                                    var message_format=4099528;
                                                  else
                                                   var message_format=3603131;
                                                  return make_signature
                                                          (line_no$62,secret_key,message,message_format)}}}}}}
                                      else
                                       if(args)
                                        {var _aEn_=args[2];
                                         if(_aEn_)
                                          {var _aEo_=_aEn_[2];
                                           if(_aEo_ && ! _aEo_[2])
                                            {var
                                              line_no$63=_aEo_[1],
                                              e2$11=_aEn_[1],
                                              e1$15=args[1],
                                              _aEp_=import_expr(e2$11),
                                              _aEq_=import_expr(e1$15);
                                             return lt(import_line_no(line_no$63),_aEq_,_aEp_)}}}}
                                    else
                                     if(args)
                                      {var _aEr_=args[2];
                                       if(_aEr_)
                                        {var _aEs_=_aEr_[2];
                                         if(_aEs_ && ! _aEs_[2])
                                          {var
                                            line_no$64=_aEs_[1],
                                            shift=_aEr_[1],
                                            expression=args[1],
                                            _aEt_=import_expr(shift),
                                            _aEu_=import_expr(expression);
                                           return lsr(import_line_no(line_no$64),_aEu_,_aEt_)}}}}
                                  else
                                   if(args)
                                    {var _aEv_=args[2];
                                     if(_aEv_)
                                      {var _aEw_=_aEv_[2];
                                       if(_aEw_ && ! _aEw_[2])
                                        {var
                                          line_no$65=_aEw_[1],
                                          shift$0=_aEv_[1],
                                          expression$0=args[1],
                                          _aEx_=import_expr(shift$0),
                                          _aEy_=import_expr(expression$0);
                                         return lsl(import_line_no(line_no$65),_aEy_,_aEx_)}}}}
                                else
                                 if(args)
                                  {var _aEz_=args[1];
                                   if(0 !== _aEz_[0])
                                    {var _aEA_=args[2];
                                     if(_aEA_ && ! _aEA_[2])
                                      {var
                                        line_no$66=_aEA_[1],
                                        l$1=_aEz_[1],
                                        _aEB_=caml_call1(import_literal(env),l$1);
                                       return cst$244(import_line_no(line_no$66),_aEB_)}}}}
                              else
                               if(args)
                                {var
                                  l$2=args[2],
                                  line_no$67=args[1],
                                  _aEC_=caml_call2(Utils_List[20],import_expr,l$2);
                                 return build_list(import_line_no(line_no$67),_aEC_)}}
                            else
                             if(! args)return level}
                          else
                           if(args)
                            {var _aED_=args[2];
                             if(_aED_)
                              {var _aEE_=_aED_[2];
                               if(_aEE_ && ! _aEE_[2])
                                {var
                                  line_no$68=_aEE_[1],
                                  e2$12=_aED_[1],
                                  e1$16=args[1],
                                  _aEF_=import_expr(e2$12),
                                  _aEG_=import_expr(e1$16);
                                 return le(import_line_no(line_no$68),_aEG_,_aEF_)}}}}
                        else
                         if(caml_string_notequal(f,cst_items$0))
                          {if(caml_string_notequal(f,cst_iter$0))
                            {if(caml_string_notequal(f,cst_join_tickets))
                              {if(caml_string_notequal(f,cst_keccak))
                                {if(caml_string_notequal(f,cst_keys))
                                  {if(caml_string_notequal(f,cst_lambda$2))
                                    {if(! caml_string_notequal(f,cst_lambdaParams) && args)
                                      {var _aEH_=args[1];
                                       if(0 === _aEH_[0])
                                        {var _aEI_=args[2];
                                         if(_aEI_)
                                          {var _aEJ_=_aEI_[1],_aEK_=_aEH_[1];
                                           if(0 === _aEJ_[0])
                                            {var _aEL_=_aEI_[2];
                                             if(_aEL_)
                                              {var _aEM_=_aEL_[2];
                                               if(_aEM_ && ! _aEM_[2])
                                                {var
                                                  line_no$69=_aEL_[1],
                                                  name$6=_aEJ_[1],
                                                  line_no$70=import_line_no(line_no$69);
                                                 return lambdaParams
                                                         (line_no$70,caml_int_of_string(_aEK_),name$6)}}}}}}}
                                   else
                                    if(args)
                                     {var _aEN_=args[1];
                                      if(0 === _aEN_[0])
                                       {var _aEO_=args[2];
                                        if(_aEO_)
                                         {var _aEP_=_aEO_[1],_aEQ_=_aEN_[1];
                                          if(0 === _aEP_[0])
                                           {var _aER_=_aEO_[2];
                                            if(_aER_)
                                             {var _aES_=_aER_[2];
                                              if(_aES_)
                                               {var _aET_=_aES_[1],_aEU_=_aER_[1],_aEV_=_aEP_[1];
                                                if(0 !== _aET_[0] && ! _aES_[2])
                                                 {var commands=_aET_[1];
                                                  return import_lambda(_aEQ_,_aEV_,_aEU_,commands,1)}}}}}}}}
                                 else
                                  if(args)
                                   {var _aEW_=args[2];
                                    if(_aEW_ && ! _aEW_[2])
                                     {var
                                       line_no$71=_aEW_[1],
                                       e$17=args[1],
                                       _aEX_=import_expr(e$17);
                                      return listKeys(import_line_no(line_no$71),_aEX_,0)}}}
                               else
                                if(args)
                                 {var _aEY_=args[2];
                                  if(_aEY_ && ! _aEY_[2])
                                   {var
                                     line_no$72=_aEY_[1],
                                     e$18=args[1],
                                     _aEZ_=import_expr(e$18);
                                    return keccak(import_line_no(line_no$72),_aEZ_)}}}
                             else
                              if(args)
                               {var _aE0_=args[2];
                                if(_aE0_ && ! _aE0_[2])
                                 {var
                                   line_no$73=_aE0_[1],
                                   tickets=args[1],
                                   _aE1_=import_expr(tickets);
                                  return join_tickets(import_line_no(line_no$73),_aE1_)}}}
                           else
                            if(args)
                             {var _aE2_=args[1];
                              if(0 === _aE2_[0])
                               {var _aE3_=args[2];
                                if(_aE3_ && ! _aE3_[2])
                                 {var line_no$74=_aE3_[1],name$7=_aE2_[1];
                                  return iterator(import_line_no(line_no$74),name$7)}}}}
                         else
                          if(args)
                           {var _aE4_=args[2];
                            if(_aE4_ && ! _aE4_[2])
                             {var
                               line_no$75=_aE4_[1],
                               e$19=args[1],
                               _aE5_=import_expr(e$19);
                              return listItems(import_line_no(line_no$75),_aE5_,0)}}}
                      else
                       if(args)
                        {var _aE6_=args[2];
                         if(_aE6_)
                          {var _aE7_=_aE6_[1],_aE8_=args[1];
                           if(0 === _aE7_[0])
                            {var _aE9_=_aE6_[2];
                             if(_aE9_ && ! _aE9_[2])
                              {var
                                line_no$76=_aE9_[1],
                                name$8=_aE7_[1],
                                _aE__=import_expr(_aE8_);
                               return isVariant(import_line_no(line_no$76),name$8,_aE__)}}}}}
                    else
                     {var switch$11=caml_string_compare(f,cst_getOpt);
                      if(0 <= switch$11)
                       {if(0 < switch$11)
                         {if(caml_string_notequal(f,cst_get_and_update))
                           {if(caml_string_notequal(f,cst_global))
                             {if(caml_string_notequal(f,cst_gt))
                               {if(caml_string_notequal(f,cst_has_entry_point))
                                 {if(caml_string_notequal(f,cst_hash_key))
                                   {if(caml_string_notequal(f,cst_implicit_account$0))
                                     {if(! caml_string_notequal(f,cst_isNat$0) && args)
                                       {var _aE$_=args[2];
                                        if(_aE$_ && ! _aE$_[2])
                                         {var
                                           line_no$77=_aE$_[1],
                                           e1$17=args[1],
                                           _aFa_=import_expr(e1$17);
                                          return is_nat(import_line_no(line_no$77),_aFa_)}}}
                                    else
                                     if(args)
                                      {var _aFb_=args[2];
                                       if(_aFb_ && ! _aFb_[2])
                                        {var
                                          line_no$78=_aFb_[1],
                                          e$20=args[1],
                                          _aFc_=import_expr(e$20);
                                         return implicit_account(import_line_no(line_no$78),_aFc_)}}}
                                  else
                                   if(args)
                                    {var _aFd_=args[2];
                                     if(_aFd_ && ! _aFd_[2])
                                      {var
                                        line_no$79=_aFd_[1],
                                        e$21=args[1],
                                        _aFe_=import_expr(e$21);
                                       return hash_key(import_line_no(line_no$79),_aFe_)}}}
                                else
                                 if(args)
                                  {var _aFf_=args[1];
                                   if(0 === _aFf_[0])
                                    {var _aFg_=args[2];
                                     if(_aFg_ && ! _aFg_[2])
                                      {var
                                        line_no$80=_aFg_[1],
                                        ep_name=_aFf_[1],
                                        line_no$81=import_line_no(line_no$80);
                                       return has_entry_point(line_no$81,ep_name)}}}}
                              else
                               if(args)
                                {var _aFh_=args[2];
                                 if(_aFh_)
                                  {var _aFi_=_aFh_[2];
                                   if(_aFi_ && ! _aFi_[2])
                                    {var
                                      line_no$82=_aFi_[1],
                                      e2$13=_aFh_[1],
                                      e1$18=args[1],
                                      _aFj_=import_expr(e2$13),
                                      _aFk_=import_expr(e1$18);
                                     return gt(import_line_no(line_no$82),_aFk_,_aFj_)}}}}
                            else
                             if(args)
                              {var _aFl_=args[1];
                               if(0 === _aFl_[0])
                                {var _aFm_=args[2];
                                 if(_aFm_ && ! _aFm_[2])
                                  {var line_no$83=_aFm_[1],name$9=_aFl_[1];
                                   return global(import_line_no(line_no$83),name$9)}}}}
                          else
                           if(args)
                            {var _aFn_=args[2];
                             if(_aFn_)
                              {var _aFo_=_aFn_[2];
                               if(_aFo_)
                                {var _aFp_=_aFo_[2];
                                 if(_aFp_ && ! _aFp_[2])
                                  {var
                                    line_no$84=_aFp_[1],
                                    v$0=_aFo_[1],
                                    key$0=_aFn_[1],
                                    map$0=args[1],
                                    _aFq_=import_expr(v$0),
                                    _aFr_=import_expr(key$0),
                                    _aFs_=import_expr(map$0);
                                   return get_and_update
                                           (import_line_no(line_no$84),_aFs_,_aFr_,_aFq_)}}}}}
                        else
                         if(args)
                          {var _aFt_=args[2];
                           if(_aFt_)
                            {var _aFu_=_aFt_[2];
                             if(_aFu_ && ! _aFu_[2])
                              {var
                                k=_aFu_[1],
                                line_no$85=_aFt_[1],
                                m=args[1],
                                _aFv_=import_expr(k),
                                _aFw_=import_expr(m);
                               return getOpt(import_line_no(line_no$85),_aFw_,_aFv_)}}}}
                      else
                       if(caml_string_notequal(f,cst_floordiv))
                        {if(caml_string_notequal(f,cst_ge))
                          {if(caml_string_notequal(f,cst_getItem))
                            {if(caml_string_notequal(f,cst_getItemDefault))
                              {if(caml_string_notequal(f,cst_getItemMessage))
                                {if(caml_string_notequal(f,cst_getLocal))
                                  {if(! caml_string_notequal(f,cst_getMetaLocal) && args)
                                    {var _aFx_=args[1];
                                     if(0 === _aFx_[0])
                                      {var _aFy_=args[2];
                                       if(_aFy_ && ! _aFy_[2])
                                        {var line_no$86=_aFy_[1],name$10=_aFx_[1];
                                         return meta_local(import_line_no(line_no$86),name$10)}}}}
                                 else
                                  if(args)
                                   {var _aFz_=args[1];
                                    if(0 === _aFz_[0])
                                     {var _aFA_=args[2];
                                      if(_aFA_ && ! _aFA_[2])
                                       {var line_no$87=_aFA_[1],name$11=_aFz_[1];
                                        return local(import_line_no(line_no$87),name$11)}}}}
                               else
                                if(args)
                                 {var _aFB_=args[2];
                                  if(_aFB_)
                                   {var _aFC_=_aFB_[2];
                                    if(_aFC_)
                                     {var _aFD_=_aFC_[2];
                                      if(_aFD_ && ! _aFD_[2])
                                       {var
                                         line_no$88=_aFD_[1],
                                         message$0=_aFC_[1],
                                         pos=_aFB_[1],
                                         a$0=args[1],
                                         _aFE_=[0,import_expr(message$0)],
                                         _aFF_=import_expr(pos),
                                         _aFG_=import_expr(a$0);
                                        return item(import_line_no(line_no$88),_aFG_,_aFF_,0,_aFE_)}}}}}
                             else
                              if(args)
                               {var _aFH_=args[2];
                                if(_aFH_)
                                 {var _aFI_=_aFH_[2];
                                  if(_aFI_)
                                   {var _aFJ_=_aFI_[2];
                                    if(_aFJ_ && ! _aFJ_[2])
                                     {var
                                       line_no$89=_aFJ_[1],
                                       def=_aFI_[1],
                                       pos$0=_aFH_[1],
                                       a$1=args[1],
                                       _aFK_=[0,import_expr(def)],
                                       _aFL_=import_expr(pos$0),
                                       _aFM_=import_expr(a$1);
                                      return item(import_line_no(line_no$89),_aFM_,_aFL_,_aFK_,0)}}}}}
                           else
                            if(args)
                             {var _aFN_=args[2];
                              if(_aFN_)
                               {var _aFO_=_aFN_[2];
                                if(_aFO_ && ! _aFO_[2])
                                 {var
                                   line_no$90=_aFO_[1],
                                   pos$1=_aFN_[1],
                                   a$2=args[1],
                                   _aFP_=import_expr(pos$1),
                                   _aFQ_=import_expr(a$2);
                                  return item(import_line_no(line_no$90),_aFQ_,_aFP_,0,0)}}}}
                         else
                          if(args)
                           {var _aFR_=args[2];
                            if(_aFR_)
                             {var _aFS_=_aFR_[2];
                              if(_aFS_ && ! _aFS_[2])
                               {var
                                 line_no$91=_aFS_[1],
                                 e2$14=_aFR_[1],
                                 e1$19=args[1],
                                 _aFT_=import_expr(e2$14),
                                 _aFU_=import_expr(e1$19);
                                return ge(import_line_no(line_no$91),_aFU_,_aFT_)}}}}
                       else
                        if(args)
                         {var _aFV_=args[2];
                          if(_aFV_)
                           {var _aFW_=_aFV_[2];
                            if(_aFW_ && ! _aFW_[2])
                             {var
                               line_no$92=_aFW_[1],
                               e2$15=_aFV_[1],
                               e1$20=args[1],
                               _aFX_=import_expr(e2$15),
                               _aFY_=import_expr(e1$20);
                              return div(import_line_no(line_no$92),_aFY_,_aFX_)}}}}}
                  else
                   if(args)
                    {var _aFZ_=args[2];
                     if(_aFZ_ && ! _aFZ_[2])
                      {var
                        line_no$93=_aFZ_[1],
                        e$22=args[1],
                        _aF0_=import_expr(e$22);
                       return caml_call1(first(import_line_no(line_no$93)),_aF0_)}}}
                else
                 {var switch$12=caml_string_compare(f,cst_concat$0);
                  if(0 <= switch$12)
                   {if(0 < switch$12)
                     {var switch$13=caml_string_compare(f,cst_contract_typed);
                      if(0 <= switch$13)
                       {if(0 < switch$13)
                         {if(caml_string_notequal(f,cst_create_contract))
                           {if(caml_string_notequal(f,cst_data))
                             {if(caml_string_notequal(f,cst_ediv$1))
                               {if(caml_string_notequal(f,cst_eif))
                                 {if(caml_string_notequal(f,cst_elements$1))
                                   {if(caml_string_notequal(f,cst_ematch$0))
                                     {if(! caml_string_notequal(f,cst_eq) && args)
                                       {var _aF1_=args[2];
                                        if(_aF1_)
                                         {var _aF2_=_aF1_[2];
                                          if(_aF2_ && ! _aF2_[2])
                                           {var
                                             line_no$94=_aF2_[1],
                                             e2$16=_aF1_[1],
                                             e1$21=args[1],
                                             _aF3_=import_expr(e2$16),
                                             _aF4_=import_expr(e1$21);
                                            return eq(import_line_no(line_no$94),_aF4_,_aF3_)}}}}
                                    else
                                     if(args)
                                      {var _aF5_=args[2];
                                       if(_aF5_)
                                        {var
                                          l$3=_aF5_[2],
                                          scrutinee=_aF5_[1],
                                          line_no$95=args[1],
                                          import_clause=
                                           function(l)
                                            {if(1 === l[0])
                                              {var _aHP_=l[1];
                                               if(_aHP_)
                                                {var _aHQ_=_aHP_[1];
                                                 if(0 === _aHQ_[0])
                                                  {var _aHR_=_aHP_[2];
                                                   if(_aHR_ && ! _aHR_[2])
                                                    {var v=_aHR_[1],name=_aHQ_[1],e=import_expr(v);
                                                     return [0,name,e]}}}}
                                             var
                                              _aHN_=caml_call1(Base[84][15],l),
                                              _aHO_=caml_call2(Stdlib[28],cst_Clause_format_error,_aHN_);
                                             return caml_call1(Stdlib[2],_aHO_)},
                                          scrutinee$0=import_expr(scrutinee),
                                          _aF6_=caml_call2(Utils_List[20],import_clause,l$3);
                                         return ematch(import_line_no(line_no$95),scrutinee$0,_aF6_)}}}
                                  else
                                   if(args)
                                    {var _aF7_=args[2];
                                     if(_aF7_ && ! _aF7_[2])
                                      {var
                                        line_no$96=_aF7_[1],
                                        e$23=args[1],
                                        _aF8_=import_expr(e$23);
                                       return listElements(import_line_no(line_no$96),_aF8_,0)}}}
                                else
                                 if(args)
                                  {var _aF9_=args[2];
                                   if(_aF9_)
                                    {var _aF__=_aF9_[2];
                                     if(_aF__)
                                      {var _aF$_=_aF__[2];
                                       if(_aF$_ && ! _aF$_[2])
                                        {var
                                          line_no$97=_aF$_[1],
                                          b=_aF__[1],
                                          a$3=_aF9_[1],
                                          cond=args[1],
                                          cond$0=import_expr(cond),
                                          a$4=import_expr(a$3),
                                          b$0=import_expr(b);
                                         return eif(import_line_no(line_no$97),cond$0,a$4,b$0)}}}}}
                              else
                               if(args)
                                {var _aGa_=args[2];
                                 if(_aGa_)
                                  {var _aGb_=_aGa_[2];
                                   if(_aGb_ && ! _aGb_[2])
                                    {var
                                      line_no$98=_aGb_[1],
                                      e2$17=_aGa_[1],
                                      e1$22=args[1],
                                      _aGc_=import_expr(e2$17),
                                      _aGd_=import_expr(e1$22);
                                     return ediv(import_line_no(line_no$98),_aGd_,_aGc_)}}}}
                            else
                             if(! args)return local(0,cst_storage$30)}
                          else
                           if(args)
                            {var _aGe_=args[1];
                             if(0 !== _aGe_[0])
                              {var _aGf_=_aGe_[1];
                               if(_aGf_)
                                {var _aGg_=_aGf_[1];
                                 if
                                  (0
                                   ===
                                   _aGg_[0]
                                   &&
                                   !
                                   caml_string_notequal(_aGg_[1],cst_contract$8))
                                  {var _aGh_=_aGf_[2];
                                   if(_aGh_ && ! _aGh_[2])
                                    {var _aGi_=args[2];
                                     if(_aGi_)
                                      {var _aGj_=_aGi_[1],_aGk_=_aGh_[1];
                                       if(0 !== _aGj_[0])
                                        {var _aGl_=_aGj_[1];
                                         if(_aGl_)
                                          {var _aGm_=_aGl_[1];
                                           if
                                            (0
                                             ===
                                             _aGm_[0]
                                             &&
                                             !
                                             caml_string_notequal(_aGm_[1],cst_storage$31))
                                            {var _aGn_=_aGl_[2];
                                             if(_aGn_ && ! _aGn_[2])
                                              {var _aGo_=_aGi_[2];
                                               if(_aGo_)
                                                {var _aGp_=_aGo_[1],_aGq_=_aGn_[1];
                                                 if(0 !== _aGp_[0])
                                                  {var _aGr_=_aGp_[1];
                                                   if(_aGr_)
                                                    {var _aGs_=_aGr_[1];
                                                     if
                                                      (0
                                                       ===
                                                       _aGs_[0]
                                                       &&
                                                       !
                                                       caml_string_notequal(_aGs_[1],cst_baker$4))
                                                      {var _aGt_=_aGr_[2];
                                                       if(_aGt_ && ! _aGt_[2])
                                                        {var _aGu_=_aGo_[2];
                                                         if(_aGu_)
                                                          {var _aGv_=_aGu_[1],_aGw_=_aGt_[1];
                                                           if(0 !== _aGv_[0])
                                                            {var _aGx_=_aGv_[1];
                                                             if(_aGx_)
                                                              {var _aGy_=_aGx_[1];
                                                               if
                                                                (0
                                                                 ===
                                                                 _aGy_[0]
                                                                 &&
                                                                 !
                                                                 caml_string_notequal(_aGy_[1],cst_amount$3))
                                                                {var _aGz_=_aGx_[2];
                                                                 if(_aGz_ && ! _aGz_[2])
                                                                  {var _aGA_=_aGu_[2];
                                                                   if(_aGA_ && ! _aGA_[2])
                                                                    {var
                                                                      line_no$99=_aGA_[1],
                                                                      amount$2=_aGz_[1],
                                                                      c=import_contract([0,env[1],0],_aGk_),
                                                                      storage=import_expr(_aGq_),
                                                                      balance$0=import_expr(amount$2),
                                                                      switch$16=0;
                                                                     if
                                                                      (0
                                                                       ===
                                                                       _aGw_[0]
                                                                       &&
                                                                       !
                                                                       caml_string_notequal(_aGw_[1],cst_None$78))
                                                                      {var baker=none$0(0);switch$16 = 1}
                                                                     if(! switch$16)var baker=import_expr(_aGw_);
                                                                     return create_contract
                                                                             (import_line_no(line_no$99),baker,balance$0,storage,c)}}}}}}}}}}}}}}}}}}}}}}
                        else
                         if(args)
                          {var _aGB_=args[2];
                           if(_aGB_)
                            {var _aGC_=_aGB_[1],_aGD_=args[1];
                             if(0 === _aGC_[0])
                              {var _aGE_=_aGB_[2];
                               if(_aGE_ && ! _aGE_[2])
                                {var
                                  line_no$100=_aGE_[1],
                                  entry_point=_aGC_[1],
                                  line_no$101=import_line_no(line_no$100),
                                  entry_point$0=
                                   caml_string_notequal(entry_point,cst$307)?[0,entry_point]:0;
                                 return contract_typed
                                         (line_no$101,entry_point$0,import_contract_id(_aGD_))}}}}}
                      else
                       if(caml_string_notequal(f,cst_cons))
                        {if(caml_string_notequal(f,cst_contains))
                          {if(caml_string_notequal(f,cst_contract$9))
                            {if(caml_string_notequal(f,cst_contract_address))
                              {if(caml_string_notequal(f,cst_contract_baker))
                                {if(caml_string_notequal(f,cst_contract_balance))
                                  {if(! caml_string_notequal(f,cst_contract_data) && args)
                                    {var _aGF_=args[2];
                                     if(_aGF_ && ! _aGF_[2])
                                      {var
                                        line_no$102=_aGF_[1],
                                        id$0=args[1],
                                        line_no$103=import_line_no(line_no$102);
                                       return contract_data(line_no$103,import_contract_id(id$0))}}}
                                 else
                                  if(args)
                                   {var _aGG_=args[2];
                                    if(_aGG_ && ! _aGG_[2])
                                     {var
                                       line_no$104=_aGG_[1],
                                       id$1=args[1],
                                       line_no$105=import_line_no(line_no$104);
                                      return contract_balance
                                              (line_no$105,import_contract_id(id$1))}}}
                               else
                                if(args)
                                 {var _aGH_=args[2];
                                  if(_aGH_ && ! _aGH_[2])
                                   {var
                                     line_no$106=_aGH_[1],
                                     id$2=args[1],
                                     line_no$107=import_line_no(line_no$106);
                                    return contract_baker(line_no$107,import_contract_id(id$2))}}}
                             else
                              if(args)
                               {var _aGI_=args[2];
                                if(_aGI_)
                                 {var _aGJ_=_aGI_[1],_aGK_=args[1];
                                  if(0 === _aGJ_[0])
                                   {var _aGL_=_aGI_[2];
                                    if(_aGL_ && ! _aGL_[2])
                                     {var
                                       line_no$108=_aGL_[1],
                                       entry_point$1=_aGJ_[1],
                                       line_no$109=import_line_no(line_no$108),
                                       entry_point$2=
                                        caml_string_notequal(entry_point$1,cst$308)
                                         ?[0,entry_point$1]
                                         :0;
                                      return contract_address
                                              (line_no$109,entry_point$2,import_contract_id(_aGK_))}}}}}
                           else
                            if(args)
                             {var _aGM_=args[1];
                              if(0 === _aGM_[0])
                               {var _aGN_=args[2];
                                if(_aGN_)
                                 {var _aGO_=_aGN_[2];
                                  if(_aGO_)
                                   {var _aGP_=_aGO_[2];
                                    if(_aGP_ && ! _aGP_[2])
                                     {var
                                       line_no$110=_aGP_[1],
                                       addr=_aGO_[1],
                                       t$2=_aGN_[1],
                                       entry_point$3=_aGM_[1],
                                       entry_point$4=
                                        caml_string_notequal(entry_point$3,cst$309)
                                         ?[0,entry_point$3]
                                         :0,
                                       address=import_expr(addr),
                                       _aGQ_=import_type$1(t$2);
                                      return contract$0
                                              (import_line_no(line_no$110),entry_point$4,_aGQ_,address)}}}}}}
                         else
                          if(args)
                           {var _aGR_=args[2];
                            if(_aGR_)
                             {var _aGS_=_aGR_[2];
                              if(_aGS_ && ! _aGS_[2])
                               {var
                                 line_no$111=_aGS_[1],
                                 x$2=_aGR_[1],
                                 items=args[1],
                                 _aGT_=import_expr(x$2),
                                 _aGU_=import_expr(items);
                                return contains(import_line_no(line_no$111),_aGU_,_aGT_)}}}}
                       else
                        if(args)
                         {var _aGV_=args[2];
                          if(_aGV_)
                           {var _aGW_=_aGV_[2];
                            if(_aGW_ && ! _aGW_[2])
                             {var
                               line_no$112=_aGW_[1],
                               e2$18=_aGV_[1],
                               e1$23=args[1],
                               _aGX_=import_expr(e2$18),
                               _aGY_=import_expr(e1$23);
                              return cons(import_line_no(line_no$112),_aGY_,_aGX_)}}}}
                    else
                     if(args)
                      {var _aGZ_=args[2];
                       if(_aGZ_ && ! _aGZ_[2])
                        {var
                          line_no$113=_aGZ_[1],
                          l$4=args[1],
                          _aG0_=import_expr(l$4);
                         return concat_list(import_line_no(line_no$113),_aG0_)}}}
                  else
                   {var switch$14=caml_string_compare(f,cst_balance$5);
                    if(0 <= switch$14)
                     {if(0 < switch$14)
                       {if(caml_string_notequal(f,cst_big_map$0))
                         {if(caml_string_notequal(f,cst_blake2b))
                           {if(caml_string_notequal(f,cst_bounded$0))
                             {if(caml_string_notequal(f,cst_call_lambda))
                               {if(caml_string_notequal(f,cst_call_michelson$0))
                                 {if(caml_string_notequal(f,cst_chain_id$3))
                                   {if(! caml_string_notequal(f,cst_check_signature) && args)
                                     {var _aG1_=args[2];
                                      if(_aG1_)
                                       {var _aG2_=_aG1_[2];
                                        if(_aG2_)
                                         {var _aG3_=_aG2_[2];
                                          if(_aG3_ && ! _aG3_[2])
                                           {var
                                             line_no$114=_aG3_[1],
                                             msg=_aG2_[1],
                                             s$0=_aG1_[1],
                                             pk=args[1],
                                             _aG4_=import_expr(msg),
                                             _aG5_=import_expr(s$0),
                                             _aG6_=import_expr(pk);
                                            return check_signature
                                                    (import_line_no(line_no$114),_aG6_,_aG5_,_aG4_)}}}}}
                                  else
                                   if(! args)return chain_id$1}
                                else
                                 if(args)
                                  {var _aG7_=args[2];
                                   if(_aG7_)
                                    {var
                                      args$0=_aG7_[2],
                                      line_no$115=_aG7_[1],
                                      instr=args[1],
                                      _aG8_=caml_call2(Utils_List[20],import_expr,args$0),
                                      _aG9_=import_expr_inline_michelson(instr);
                                     return inline_michelson
                                             (import_line_no(line_no$115),_aG9_,_aG8_)}}}
                              else
                               if(args)
                                {var _aG__=args[2];
                                 if(_aG__)
                                  {var _aG$_=_aG__[2];
                                   if(_aG$_ && ! _aG$_[2])
                                    {var
                                      line_no$116=_aG$_[1],
                                      parameter=_aG__[1],
                                      lambda=args[1],
                                      _aHa_=import_expr(parameter),
                                      _aHb_=import_expr(lambda);
                                     return call_lambda(import_line_no(line_no$116),_aHb_,_aHa_)}}}}
                            else
                             if(args)
                              {var _aHc_=args[2];
                               if(_aHc_ && ! _aHc_[2])
                                {var
                                  line_no$117=_aHc_[1],
                                  x$3=args[1],
                                  line_no$118=import_line_no(line_no$117),
                                  match=import_expr(x$3),
                                  _aHd_=match[1];
                                 if(5 === _aHd_[0])
                                  {var _aHe_=_aHd_[1];
                                   if(typeof _aHe_ !== "number" && 0 === _aHe_[0])
                                    {var l$5=_aHe_[1];return bounded$0(line_no$118,l$5)}}
                                 throw [0,
                                        SmartExcept,
                                        [0,_afe_,[0,[0,848053268,line_no$118],0]]]}}}
                          else
                           if(args)
                            {var _aHf_=args[2];
                             if(_aHf_ && ! _aHf_[2])
                              {var
                                line_no$119=_aHf_[1],
                                e$24=args[1],
                                _aHg_=import_expr(e$24);
                               return blake2b(import_line_no(line_no$119),_aHg_)}}}
                        else
                         if(args)
                          {var
                            entries$1=args[2],
                            line_no$120=args[1],
                            _aHh_=caml_call2(Utils_List[20],import_map_entry,entries$1);
                           return build_map(import_line_no(line_no$120),1,_aHh_)}}
                      else
                       if(! args)return balance}
                    else
                     if(caml_string_notequal(f,cst_abs$0))
                      {if(caml_string_notequal(f,cst_account_of_seed))
                        {if(caml_string_notequal(f,cst_add$1))
                          {if(caml_string_notequal(f,cst_add_seconds$0))
                            {if(caml_string_notequal(f,cst_amount$4))
                              {if(caml_string_notequal(f,cst_and))
                                {if(caml_string_notequal(f,cst_apply_lambda))
                                  {if(! caml_string_notequal(f,cst_attr) && args)
                                    {var _aHi_=args[2];
                                     if(_aHi_)
                                      {var _aHj_=_aHi_[1],_aHk_=args[1];
                                       if(0 === _aHj_[0])
                                        {var _aHl_=_aHi_[2];
                                         if(_aHl_ && ! _aHl_[2])
                                          {var
                                            line_no$121=_aHl_[1],
                                            name$12=_aHj_[1],
                                            _aHm_=import_expr(_aHk_);
                                           return attr(import_line_no(line_no$121),_aHm_,name$12)}}}}}
                                 else
                                  if(args)
                                   {var _aHn_=args[2];
                                    if(_aHn_)
                                     {var _aHo_=_aHn_[2];
                                      if(_aHo_ && ! _aHo_[2])
                                       {var
                                         line_no$122=_aHo_[1],
                                         parameter$0=_aHn_[1],
                                         lambda$0=args[1],
                                         _aHp_=import_expr(parameter$0),
                                         _aHq_=import_expr(lambda$0);
                                        return apply_lambda(import_line_no(line_no$122),_aHq_,_aHp_)}}}}
                               else
                                if(args)
                                 {var _aHr_=args[2];
                                  if(_aHr_)
                                   {var _aHs_=_aHr_[2];
                                    if(_aHs_ && ! _aHs_[2])
                                     {var
                                       line_no$123=_aHs_[1],
                                       e2$19=_aHr_[1],
                                       e1$24=args[1],
                                       _aHt_=import_expr(e2$19),
                                       _aHu_=import_expr(e1$24);
                                      return b_and(import_line_no(line_no$123),_aHu_,_aHt_)}}}}
                             else
                              if(! args)return amount}
                           else
                            if(args)
                             {var _aHv_=args[2];
                              if(_aHv_)
                               {var _aHw_=_aHv_[2];
                                if(_aHw_ && ! _aHw_[2])
                                 {var
                                   line_no$124=_aHw_[1],
                                   s$1=_aHv_[1],
                                   t$3=args[1],
                                   _aHx_=import_expr(s$1),
                                   _aHy_=import_expr(t$3);
                                  return add_seconds(import_line_no(line_no$124),_aHy_,_aHx_)}}}}
                         else
                          if(args)
                           {var _aHz_=args[2];
                            if(_aHz_)
                             {var _aHA_=_aHz_[2];
                              if(_aHA_ && ! _aHA_[2])
                               {var
                                 line_no$125=_aHA_[1],
                                 e2$20=_aHz_[1],
                                 e1$25=args[1],
                                 _aHB_=import_expr(e2$20),
                                 _aHC_=import_expr(e1$25);
                                return add(import_line_no(line_no$125),_aHC_,_aHB_)}}}}
                       else
                        if(args)
                         {var _aHD_=args[1];
                          if(0 === _aHD_[0])
                           {var _aHE_=args[2];
                            if(_aHE_ && ! _aHE_[2])
                             {var line_no$126=_aHE_[1],seed=_aHD_[1];
                              return account_of_seed(seed,import_line_no(line_no$126))}}}}
                     else
                      if(args)
                       {var _aHF_=args[2];
                        if(_aHF_ && ! _aHF_[2])
                         {var
                           line_no$127=_aHF_[1],
                           e1$26=args[1],
                           _aHG_=import_expr(e1$26);
                          return absE(import_line_no(line_no$127),_aHG_)}}}}}
              try
               {var
                 _aBB_=
                  cst$244(0,caml_call1(import_literal(env),[0,[0,f],args]));
                return _aBB_}
              catch(_aHH_)
               {var
                 _aBy_=caml_call2(Base[84][13],0,input),
                 _aBz_=caml_call1(Utils_List[4],args),
                 _aBA_=caml_call3(Stdlib_printf[4],_afa_,_aBz_,_aBy_);
                return caml_call1(Stdlib[2],_aBA_)}}}}
        var
         _aBu_=caml_call2(Base[84][13],0,input),
         _aBv_=caml_call2(Stdlib[28],cst_Expression_format_error_b,_aBu_);
        return caml_call1(Stdlib[2],_aBv_)}
      function import_map_entry(e)
       {if(1 === e[0])
         {var _aBr_=e[1];
          if(_aBr_)
           {var _aBs_=_aBr_[2];
            if(_aBs_ && ! _aBs_[2])
             {var v=_aBs_[1],k=_aBr_[1],_aBt_=import_expr(v);
              return [0,import_expr(k),_aBt_]}}}
        var
         _aBp_=caml_call1(Base[84][15],e),
         _aBq_=caml_call2(Stdlib_printf[4],_aff_,_aBp_);
        return caml_call1(Stdlib[2],_aBq_)}
      return import_expr}
    function import_match_cons(env,expr,ok_match,ko_match,line_no)
     {var
       expr$0=caml_call1(import_expr(env),expr),
       line_no$0=import_line_no(line_no),
       _aBm_=seq$0(line_no$0,caml_call1(import_commands(env),ko_match)),
       _aBn_=seq$0(line_no$0,caml_call1(import_commands(env),ok_match)),
       _aBo_=string_of_line_no$0(line_no$0);
      return mk_match_cons
              (line_no$0,
               expr$0,
               caml_call2(Stdlib_printf[4],_afm_,_aBo_),
               _aBn_,
               _aBm_)}
    function import_commands(env)
     {var import_expr$1=import_expr(env);
      function import_type$0(t){return import_type(t)}
      function import_expr$0(e){return caml_call1(import_expr(env),e)}
      function import_commands$0(cs)
       {return caml_call1(import_commands(env),cs)}
      function import_command(input)
       {if(1 === input[0])
         {var _azV_=input[1];
          if(_azV_)
           {var _azW_=_azV_[1];
            if(0 === _azW_[0])
             {var
               args=_azV_[2],
               f=_azW_[1],
               switch$0=caml_string_compare(f,cst_result);
              if(0 <= switch$0)
               {if(0 < switch$0)
                 {if(caml_string_notequal(f,cst_set$2))
                   {if(caml_string_notequal(f,cst_set_entry_point$0))
                     {if(caml_string_notequal(f,cst_set_result_type))
                       {if(caml_string_notequal(f,cst_set_type$0))
                         {if(caml_string_notequal(f,cst_trace$0))
                           {if(caml_string_notequal(f,cst_updateSet))
                             {if(caml_string_notequal(f,cst_verify$1))
                               {if(! caml_string_notequal(f,cst_whileBlock) && args)
                                 {var _azZ_=args[2];
                                  if(_azZ_)
                                   {var _az0_=_azZ_[1],_az1_=args[1];
                                    if(0 !== _az0_[0])
                                     {var _az2_=_azZ_[2];
                                      if(_az2_ && ! _az2_[2])
                                       {var
                                         line_no=_az2_[1],
                                         l=_az0_[1],
                                         line_no$0=import_line_no(line_no),
                                         _az3_=seq$0(line_no$0,import_commands$0(l));
                                        return whileLoop(line_no$0,import_expr$0(_az1_),_az3_)}}}}}
                              else
                               if(args)
                                {var _az4_=args[2];
                                 if(_az4_)
                                  {var _az5_=_az4_[2],_az6_=_az4_[1],_az7_=args[1];
                                   if(! _az5_)
                                    {var _az__=import_expr$0(_az7_);
                                     return verify(import_line_no(_az6_),_az__,0)}
                                   if(! _az5_[2])
                                    {var
                                      line_no$1=_az5_[1],
                                      _az8_=[0,import_expr$0(_az6_)],
                                      _az9_=import_expr$0(_az7_);
                                     return verify(import_line_no(line_no$1),_az9_,_az8_)}}}}
                            else
                             if(args)
                              {var _az$_=args[2];
                               if(_az$_)
                                {var _aAa_=_az$_[2];
                                 if(_aAa_)
                                  {var _aAb_=_aAa_[1],_aAc_=_az$_[1],_aAd_=args[1];
                                   if(0 === _aAb_[0])
                                    {var _aAe_=_aAa_[2];
                                     if(_aAe_ && ! _aAe_[2])
                                      {var
                                        line_no$2=_aAe_[1],
                                        b=_aAb_[1],
                                        _aAf_=import_bool(b),
                                        _aAg_=import_expr$0(_aAc_),
                                        _aAh_=import_expr$0(_aAd_);
                                       return updateSet
                                               (import_line_no(line_no$2),_aAh_,_aAg_,_aAf_)}}}}}}
                          else
                           if(args)
                            {var _aAi_=args[2];
                             if(_aAi_ && ! _aAi_[2])
                              {var line_no$3=_aAi_[1],e=args[1],_aAj_=import_expr$0(e);
                               return trace(import_line_no(line_no$3),_aAj_)}}}
                        else
                         if(args)
                          {var _aAk_=args[2];
                           if(_aAk_)
                            {var _aAl_=_aAk_[2];
                             if(_aAl_ && ! _aAl_[2])
                              {var
                                line_no$4=_aAl_[1],
                                t=_aAk_[1],
                                e$0=args[1],
                                _aAm_=caml_call1(import_type$0(env),t),
                                _aAn_=import_expr$0(e$0);
                               return set_type(import_line_no(line_no$4),_aAn_,_aAm_)}}}}
                      else
                       if(args)
                        {var _aAo_=args[1];
                         if(0 !== _aAo_[0])
                          {var _aAp_=args[2];
                           if(_aAp_)
                            {var _aAq_=_aAp_[2];
                             if(_aAq_ && ! _aAq_[2])
                              {var
                                line_no$5=_aAq_[1],
                                t$0=_aAp_[1],
                                cs=_aAo_[1],
                                line_no$6=import_line_no(line_no$5),
                                _aAr_=caml_call1(import_type$0(env),t$0);
                               return set_result_type
                                       (line_no$6,seq$0(line_no$6,import_commands$0(cs)),_aAr_)}}}}}
                    else
                     if(args)
                      {var _aAs_=args[1];
                       if(0 === _aAs_[0])
                        {var _aAt_=args[2];
                         if(_aAt_)
                          {var _aAu_=_aAt_[2];
                           if(_aAu_ && ! _aAu_[2])
                            {var
                              line_no$7=_aAu_[1],
                              new_ep=_aAt_[1],
                              ep_name=_aAs_[1],
                              line_no$8=import_line_no(line_no$7);
                             return set_entry_point
                                     (line_no$8,ep_name,import_expr$0(new_ep))}}}}}
                  else
                   if(args)
                    {var _aAv_=args[2];
                     if(_aAv_)
                      {var _aAw_=_aAv_[2];
                       if(_aAw_ && ! _aAw_[2])
                        {var
                          line_no$9=_aAw_[1],
                          e$1=_aAv_[1],
                          v=args[1],
                          _aAx_=import_expr$0(e$1),
                          _aAy_=import_expr$0(v);
                         return set$4(import_line_no(line_no$9),_aAy_,_aAx_)}}}}
                else
                 if(args)
                  {var _aAz_=args[2];
                   if(_aAz_ && ! _aAz_[2])
                    {var line_no$10=_aAz_[1],x=args[1],_aAA_=import_expr$0(x);
                     return result(import_line_no(line_no$10),_aAA_)}}}
              else
               {if(! caml_string_notequal(f,cst_bind))
                 throw [0,
                        SmartExcept,
                        [0,
                         _afl_,
                         [0,
                          14832,
                          [0,
                           _afk_,
                           [0,
                            14832,
                            [0,
                             _afj_,
                             [0,
                              14832,
                              [0,
                               _afi_,
                               [0,
                                14832,
                                [0,
                                 _afh_,
                                 [0,14832,[0,[0,936573133,caml_call1(Base[84][15],input)],0]]]]]]]]]]]];
                if(caml_string_notequal(f,cst_defineLocal))
                 {if(caml_string_notequal(f,cst_delItem))
                   {if(caml_string_notequal(f,cst_failwith$1))
                     {if(caml_string_notequal(f,cst_forGroup))
                       {if(caml_string_notequal(f,cst_match$0))
                         {if(caml_string_notequal(f,cst_match_cases))
                           {if(! caml_string_notequal(f,cst_never$3) && args)
                             {var _aAB_=args[2];
                              if(_aAB_ && ! _aAB_[2])
                               {var
                                 line_no$11=_aAB_[1],
                                 x$0=args[1],
                                 _aAC_=import_expr$0(x$0);
                                return never$0(import_line_no(line_no$11),_aAC_)}}}
                          else
                           if(args)
                            {var _aAD_=args[2];
                             if(_aAD_)
                              {var _aAE_=_aAD_[2];
                               if(_aAE_)
                                {var _aAF_=_aAE_[1],_aAG_=args[1];
                                 if(0 !== _aAF_[0])
                                  {var _aAH_=_aAE_[2];
                                   if(_aAH_ && ! _aAH_[2])
                                    {var
                                      line_no$12=_aAH_[1],
                                      cases=_aAF_[1],
                                      line_no$13=import_line_no(line_no$12),
                                      parse_case=
                                       function(input)
                                        {if(1 === input[0])
                                          {var _aBa_=input[1];
                                           if(_aBa_)
                                            {var _aBb_=_aBa_[1];
                                             if
                                              (0
                                               ===
                                               _aBb_[0]
                                               &&
                                               !
                                               caml_string_notequal(_aBb_[1],cst_match$1))
                                              {var _aBc_=_aBa_[2];
                                               if(_aBc_)
                                                {var _aBd_=_aBc_[2];
                                                 if(_aBd_)
                                                  {var _aBe_=_aBd_[1];
                                                   if(0 === _aBe_[0])
                                                    {var _aBf_=_aBd_[2];
                                                     if(_aBf_)
                                                      {var _aBg_=_aBf_[1],_aBh_=_aBe_[1];
                                                       if(0 === _aBg_[0])
                                                        {var _aBi_=_aBf_[2];
                                                         if(_aBi_)
                                                          {var _aBj_=_aBi_[1],_aBk_=_aBg_[1];
                                                           if(0 !== _aBj_[0])
                                                            {var _aBl_=_aBi_[2];
                                                             if(_aBl_ && ! _aBl_[2])
                                                              {var
                                                                line_no=_aBl_[1],
                                                                body=_aBj_[1],
                                                                line_no$0=import_line_no(line_no);
                                                               return [0,
                                                                       _aBh_,
                                                                       _aBk_,
                                                                       seq$0(line_no$0,import_commands$0(body))]}}}}}}}}}}}
                                         var
                                          _aA__=caml_call1(Base[84][15],input),
                                          _aA$_=caml_call2(Stdlib[28],cst_Bad_case_parsing,_aA__);
                                         return caml_call1(Stdlib[2],_aA$_)},
                                      cases$0=caml_call2(Utils_List[20],parse_case,cases);
                                     return mk_match(line_no$13,import_expr$0(_aAG_),cases$0)}}}}}}
                        else
                         if(args)
                          {var _aAI_=args[2];
                           if(_aAI_)
                            {var _aAJ_=_aAI_[1],_aAK_=args[1];
                             if(0 === _aAJ_[0])
                              {var _aAL_=_aAI_[2];
                               if(_aAL_)
                                {var _aAM_=_aAL_[1],_aAN_=_aAJ_[1];
                                 if(0 === _aAM_[0])
                                  {var _aAO_=_aAL_[2];
                                   if(_aAO_)
                                    {var _aAP_=_aAO_[1],_aAQ_=_aAM_[1];
                                     if(0 !== _aAP_[0])
                                      {var _aAR_=_aAO_[2];
                                       if(_aAR_ && ! _aAR_[2])
                                        {var
                                          line_no$14=_aAR_[1],
                                          body=_aAP_[1],
                                          line_no$15=import_line_no(line_no$14),
                                          _aAS_=
                                           [0,
                                            [0,_aAN_,_aAQ_,seq$0(line_no$15,import_commands$0(body))],
                                            0];
                                         return mk_match(line_no$15,import_expr$0(_aAK_),_aAS_)}}}}}}}}}
                      else
                       if(args)
                        {var _aAT_=args[1];
                         if(0 === _aAT_[0])
                          {var _aAU_=args[2];
                           if(_aAU_)
                            {var _aAV_=_aAU_[2];
                             if(_aAV_)
                              {var _aAW_=_aAV_[1],_aAX_=_aAU_[1],_aAY_=_aAT_[1];
                               if(0 !== _aAW_[0])
                                {var _aAZ_=_aAV_[2];
                                 if(_aAZ_ && ! _aAZ_[2])
                                  {var
                                    line_no$16=_aAZ_[1],
                                    l$0=_aAW_[1],
                                    e$2=import_expr$0(_aAX_),
                                    line_no$17=import_line_no(line_no$16);
                                   return forGroup
                                           (line_no$17,
                                            _aAY_,
                                            e$2,
                                            seq$0(line_no$17,import_commands$0(l$0)))}}}}}}}
                    else
                     if(args)
                      {var _aA0_=args[2];
                       if(_aA0_ && ! _aA0_[2])
                        {var
                          line_no$18=_aA0_[1],
                          x$1=args[1],
                          _aA1_=import_expr$0(x$1);
                         return sp_failwith(import_line_no(line_no$18),_aA1_)}}}
                  else
                   if(args)
                    {var _aA2_=args[2];
                     if(_aA2_)
                      {var _aA3_=_aA2_[2];
                       if(_aA3_ && ! _aA3_[2])
                        {var
                          line_no$19=_aA3_[1],
                          k=_aA2_[1],
                          e$3=args[1],
                          _aA4_=import_expr$0(k),
                          _aA5_=import_expr$0(e$3);
                         return delItem(import_line_no(line_no$19),_aA5_,_aA4_)}}}}
                else
                 if(args)
                  {var _aA6_=args[1];
                   if(0 === _aA6_[0])
                    {var _aA7_=args[2];
                     if(_aA7_)
                      {var _aA8_=_aA7_[2];
                       if(_aA8_ && ! _aA8_[2])
                        {var
                          line_no$20=_aA8_[1],
                          expr=_aA7_[1],
                          name=_aA6_[1],
                          _aA9_=import_expr$0(expr);
                         return defineLocal(import_line_no(line_no$20),name,_aA9_)}}}}}
              var
               _azX_=caml_call1(Base[84][15],input),
               _azY_=caml_call2(Stdlib[28],cst_Command_format_error_a,_azX_);
              return caml_call1(Stdlib[2],_azY_)}
            return seq$0(0,import_commands$0(_azV_))}}
        var
         _azT_=caml_call1(Base[84][15],input),
         _azU_=caml_call2(Stdlib[28],cst_Command_format_error_b,_azT_);
        return caml_call1(Stdlib[2],_azU_)}
      function import_commands$1(r,param)
       {var r$0=r,param$0=param;
        for(;;)
         {if(param$0)
           {var _aya_=param$0[1];
            if(1 === _aya_[0])
             {var _ayb_=_aya_[1];
              if(_ayb_)
               {var _ayc_=_ayb_[1];
                if(0 === _ayc_[0])
                 {var
                   _ayd_=_ayc_[1],
                   switch$0=caml_string_compare(_ayd_,cst_match_tuple);
                  if(0 <= switch$0)
                   if(0 < switch$0)
                    if(caml_string_notequal(_ayd_,cst_modify))
                     if(caml_string_notequal(_ayd_,cst_modify_record))
                      if(caml_string_notequal(_ayd_,cst_modify_tuple))
                       {if(! caml_string_notequal(_ayd_,cst_seq))
                         {var _aye_=_ayb_[2];
                          if(_aye_)
                           {var _ayf_=_aye_[1];
                            if(0 === _ayf_[0])
                             {var _ayg_=_aye_[2];
                              if(_ayg_)
                               {var _ayh_=_ayg_[1],_ayi_=_ayf_[1];
                                if(0 !== _ayh_[0])
                                 {var _ayj_=_ayg_[2];
                                  if(_ayj_ && ! _ayj_[2])
                                   {var _ayk_=param$0[2];
                                    if(_ayk_)
                                     {var _ayl_=_ayk_[1],_aym_=_ayj_[1],_ayn_=_ayh_[1];
                                      if(0 !== _ayl_[0])
                                       {var _ayo_=_ayl_[1];
                                        if(_ayo_)
                                         {var _ayp_=_ayo_[1];
                                          if
                                           (0
                                            ===
                                            _ayp_[0]
                                            &&
                                            !
                                            caml_string_notequal(_ayp_[1],cst_bind$0))
                                           {var _ayq_=_ayo_[2];
                                            if(_ayq_)
                                             {var _ayr_=_ayq_[1];
                                              if(0 === _ayr_[0])
                                               {var _ays_=_ayq_[2];
                                                if(_ays_)
                                                 {var _ayt_=_ays_[1],_ayu_=_ayr_[1];
                                                  if(0 !== _ayt_[0])
                                                   {var _ayv_=_ays_[2];
                                                    if(_ayv_ && ! _ayv_[2])
                                                     {var
                                                       rest=_ayk_[2],
                                                       bind_line_no=_ayv_[1],
                                                       bind_block=_ayt_[1];
                                                      if(caml_string_equal(_ayi_,_ayu_))
                                                       {var
                                                         _ayw_=import_commands$1(0,bind_block),
                                                         _ayx_=seq$0(import_line_no(bind_line_no),_ayw_),
                                                         _ayy_=import_commands$1(0,_ayn_),
                                                         _ayz_=seq$0(import_line_no(_aym_),_ayy_),
                                                         c=bind$3(import_line_no(_aym_),[0,_ayi_],_ayz_,_ayx_),
                                                         r$2=[0,c,r$0],
                                                         r$0=r$2,
                                                         param$0=rest;
                                                        continue}}}}}}}}}}}}}}}}}
                      else
                       {var _ayA_=_ayb_[2];
                        if(_ayA_)
                         {var _ayB_=_ayA_[2];
                          if(_ayB_)
                           {var _ayC_=_ayB_[2];
                            if(_ayC_)
                             {var _ayD_=_ayC_[1],_ayE_=_ayB_[1],_ayF_=_ayA_[1];
                              if(0 !== _ayD_[0])
                               {var
                                 rest$0=param$0[2],
                                 ns=_ayC_[2],
                                 body=_ayD_[1],
                                 line_no=import_line_no(_ayF_),
                                 body$0=seq$0(line_no,import_commands$1(0,body)),
                                 p=[1,caml_call2(Utils_List[20],unAtom,ns)],
                                 c$0=
                                  mk_modify_product
                                   (line_no,caml_call1(import_expr$1,_ayE_),p,body$0),
                                 r$3=[0,c$0,r$0],
                                 r$0=r$3,
                                 param$0=rest$0;
                                continue}}}}}
                     else
                      {var _ayG_=_ayb_[2];
                       if(_ayG_)
                        {var _ayH_=_ayG_[2];
                         if(_ayH_)
                          {var _ayI_=_ayH_[2];
                           if(_ayI_)
                            {var _ayJ_=_ayI_[1],_ayK_=_ayH_[1],_ayL_=_ayG_[1];
                             if(0 === _ayJ_[0])
                              {var _ayM_=_ayI_[2];
                               if(_ayM_)
                                {var _ayN_=_ayM_[1],_ayO_=_ayJ_[1];
                                 if(0 !== _ayN_[0])
                                  {var
                                    rest$1=param$0[2],
                                    body$1=_ayN_[1],
                                    line_no$0=import_line_no(_ayL_),
                                    body$2=seq$0(line_no$0,import_commands$1(0,body$1)),
                                    bs=[2,_ayO_,0],
                                    c$1=
                                     mk_modify_product
                                      (line_no$0,caml_call1(import_expr$1,_ayK_),bs,body$2),
                                    r$4=[0,c$1,r$0],
                                    r$0=r$4,
                                    param$0=rest$1;
                                   continue}}}}}}}
                    else
                     {var _ayP_=_ayb_[2];
                      if(_ayP_)
                       {var _ayQ_=_ayP_[2];
                        if(_ayQ_)
                         {var _ayR_=_ayQ_[2];
                          if(_ayR_)
                           {var _ayS_=_ayR_[1],_ayT_=_ayQ_[1],_ayU_=_ayP_[1];
                            if(0 !== _ayS_[0])
                             {var _ayV_=_ayR_[2];
                              if(_ayV_)
                               {var _ayW_=_ayV_[1],_ayX_=_ayS_[1];
                                if(0 === _ayW_[0] && ! _ayV_[2])
                                 {var
                                   rest$2=param$0[2],
                                   v=_ayW_[1],
                                   line_no$1=import_line_no(_ayU_),
                                   body$3=seq$0(line_no$1,import_commands$1(0,_ayX_)),
                                   p$0=[0,v],
                                   c$2=
                                    mk_modify_product
                                     (line_no$1,caml_call1(import_expr$1,_ayT_),p$0,body$3),
                                   r$5=[0,c$2,r$0],
                                   r$0=r$5,
                                   param$0=rest$2;
                                  continue}}}}}}}
                   else
                    {var _ayY_=_ayb_[2];
                     if(_ayY_)
                      {var _ayZ_=_ayY_[2];
                       if(_ayZ_)
                        {var
                          rest$3=param$0[2],
                          ns$0=_ayZ_[2],
                          x$0=_ayZ_[1],
                          seq_line_no=_ayY_[1],
                          line_no$2=import_line_no(seq_line_no),
                          rest$4=seq$0(line_no$2,import_commands$1(0,rest$3)),
                          p$1=[1,caml_call2(Utils_List[20],unAtom,ns$0)],
                          _ay0_=
                           [0,
                            mk_match_product
                             (line_no$2,caml_call1(import_expr$1,x$0),p$1,rest$4),
                            0];
                         return caml_call2(Utils_List[15],r$0,_ay0_)}}}
                  else
                   if(caml_string_notequal(_ayd_,cst_bind$1))
                    if(caml_string_notequal(_ayd_,cst_ifBlock))
                     if(caml_string_notequal(_ayd_,cst_ifSomeBlock))
                      if(caml_string_notequal(_ayd_,cst_match_cons$1))
                       {if(! caml_string_notequal(_ayd_,cst_match_record))
                         {var _ay1_=_ayb_[2];
                          if(_ay1_)
                           {var _ay2_=_ay1_[2];
                            if(_ay2_)
                             {var
                               rest$5=param$0[2],
                               bs$0=_ay2_[2],
                               x$1=_ay2_[1],
                               seq_line_no$0=_ay1_[1],
                               line_no$3=import_line_no(seq_line_no$0),
                               rest$6=seq$0(line_no$3,import_commands$1(0,rest$5)),
                               p$2=
                                [2,cst$310,caml_call2(Utils_List[20],import_binding,bs$0)],
                               _ay3_=
                                [0,
                                 mk_match_product
                                  (line_no$3,caml_call1(import_expr$1,x$1),p$2,rest$6),
                                 0];
                              return caml_call2(Utils_List[15],r$0,_ay3_)}}}}
                      else
                       {var _ay4_=_ayb_[2];
                        if(_ay4_)
                         {var _ay5_=_ay4_[2];
                          if(_ay5_)
                           {var _ay6_=_ay5_[1],_ay7_=_ay4_[1];
                            if(0 !== _ay6_[0])
                             {var _ay8_=_ay5_[2];
                              if(_ay8_ && ! _ay8_[2])
                               {var _ay9_=param$0[2],_ay__=_ay8_[1],_ay$_=_ay6_[1];
                                if(_ay9_)
                                 {var _aza_=_ay9_[1];
                                  if(0 !== _aza_[0])
                                   {var _azb_=_aza_[1];
                                    if(_azb_)
                                     {var _azc_=_azb_[1];
                                      if
                                       (0
                                        ===
                                        _azc_[0]
                                        &&
                                        !
                                        caml_string_notequal(_azc_[1],cst_elseBlock))
                                       {var _azd_=_azb_[2];
                                        if(_azd_)
                                         {var _aze_=_azd_[1];
                                          if(0 !== _aze_[0] && ! _azd_[2])
                                           {var
                                             rest$7=_ay9_[2],
                                             ko_match=_aze_[1],
                                             m$0=import_match_cons(env,_ay7_,_ay$_,ko_match,_ay__),
                                             r$7=[0,m$0,r$0],
                                             r$0=r$7,
                                             param$0=rest$7;
                                            continue}}}}}}
                                var
                                 m=import_match_cons(env,_ay7_,_ay$_,0,_ay__),
                                 r$6=[0,m,r$0],
                                 r$0=r$6,
                                 param$0=_ay9_;
                                continue}}}}}
                     else
                      {var _azf_=_ayb_[2];
                       if(_azf_)
                        {var _azg_=_azf_[2];
                         if(_azg_)
                          {var _azh_=_azf_[1];
                           if(0 === _azg_[1][0])
                            {var _azi_=_azg_[2];
                             if(_azi_)
                              {var _azj_=_azi_[1];
                               if(0 !== _azj_[0])
                                {var _azk_=_azi_[2];
                                 if(_azk_ && ! _azk_[2])
                                  {var _azl_=param$0[2],_azm_=_azk_[1],_azn_=_azj_[1];
                                   if(_azl_)
                                    {var _azo_=_azl_[1];
                                     if(0 !== _azo_[0])
                                      {var _azr_=_azo_[1];
                                       if(_azr_)
                                        {var _azs_=_azr_[1];
                                         if
                                          (0
                                           ===
                                           _azs_[0]
                                           &&
                                           !
                                           caml_string_notequal(_azs_[1],cst_elseBlock$0))
                                          {var _azt_=_azr_[2];
                                           if(_azt_)
                                            {var _azu_=_azt_[1];
                                             if(0 !== _azu_[0] && ! _azt_[2])
                                              {var
                                                rest$8=_azl_[2],
                                                eBlock=_azu_[1],
                                                line_no$5=import_line_no(_azm_),
                                                _azv_=seq$0(line_no$5,import_commands$1(0,eBlock)),
                                                _azw_=seq$0(line_no$5,import_commands$1(0,_azn_)),
                                                c$4=
                                                 ifteSome
                                                  (line_no$5,caml_call1(import_expr$1,_azh_),_azw_,_azv_),
                                                r$9=[0,c$4,r$0],
                                                r$0=r$9,
                                                param$0=rest$8;
                                               continue}}}}}}
                                   var
                                    line_no$4=import_line_no(_azm_),
                                    _azp_=seq$0(line_no$4,0),
                                    _azq_=seq$0(line_no$4,import_commands$1(0,_azn_)),
                                    c$3=
                                     ifteSome
                                      (line_no$4,caml_call1(import_expr$1,_azh_),_azq_,_azp_),
                                    r$8=[0,c$3,r$0],
                                    r$0=r$8,
                                    param$0=_azl_;
                                   continue}}}}}}}
                    else
                     {var _azx_=_ayb_[2];
                      if(_azx_)
                       {var _azy_=_azx_[2];
                        if(_azy_)
                         {var _azz_=_azy_[1],_azA_=_azx_[1];
                          if(0 !== _azz_[0])
                           {var _azB_=_azy_[2];
                            if(_azB_ && ! _azB_[2])
                             {var _azC_=param$0[2],_azD_=_azB_[1],_azE_=_azz_[1];
                              if(_azC_)
                               {var _azF_=_azC_[1];
                                if(0 !== _azF_[0])
                                 {var _azI_=_azF_[1];
                                  if(_azI_)
                                   {var _azJ_=_azI_[1];
                                    if
                                     (0
                                      ===
                                      _azJ_[0]
                                      &&
                                      !
                                      caml_string_notequal(_azJ_[1],cst_elseBlock$1))
                                     {var _azK_=_azI_[2];
                                      if(_azK_)
                                       {var _azL_=_azK_[1];
                                        if(0 !== _azL_[0] && ! _azK_[2])
                                         {var
                                           rest$9=_azC_[2],
                                           eBlock$0=_azL_[1],
                                           line_no$7=import_line_no(_azD_),
                                           _azM_=seq$0(line_no$7,import_commands$1(0,eBlock$0)),
                                           _azN_=seq$0(line_no$7,import_commands$1(0,_azE_)),
                                           c$6=
                                            ifte(line_no$7,caml_call1(import_expr$1,_azA_),_azN_,_azM_),
                                           r$11=[0,c$6,r$0],
                                           r$0=r$11,
                                           param$0=rest$9;
                                          continue}}}}}}
                              var
                               line_no$6=import_line_no(_azD_),
                               _azG_=seq$0(line_no$6,0),
                               _azH_=seq$0(line_no$6,import_commands$1(0,_azE_)),
                               c$5=
                                ifte(line_no$6,caml_call1(import_expr$1,_azA_),_azH_,_azG_),
                               r$10=[0,c$5,r$0],
                               r$0=r$10,
                               param$0=_azC_;
                              continue}}}}}
                   else
                    {var _azO_=_ayb_[2];
                     if(_azO_)
                      {var _azP_=_azO_[1];
                       if(0 === _azP_[0])
                        {var _azQ_=_azO_[2];
                         if(_azQ_ && ! _azQ_[2])
                          {var
                            c2=param$0[2],
                            c1=_azQ_[1],
                            name=_azP_[1],
                            _azR_=seq$0(0,import_commands$1(0,c2)),
                            _azS_=[0,bind$3(0,[0,name],import_command(c1),_azR_),0];
                           return caml_call2(Utils_List[15],r$0,_azS_)}}}}}}}
            var
             l=param$0[2],
             x=import_command(_aya_),
             r$1=[0,x,r$0],
             r$0=r$1,
             param$0=l;
            continue}
          return caml_call1(Utils_List[12],r$0)}}
      var _ax__=0;
      return function(_ax$_){return import_commands$1(_ax__,_ax$_)}}
    function import_contract(env,param)
     {if(0 === param[0])return caml_call1(Stdlib[2],cst_Parse_error_contract);
      var
       l=param[1],
       match=import_contract_id([1,assocList(cst_template_id$0,l)]);
      if(0 === match[0])
       {var
         cid=match[1],
         template_id=[0,cid],
         storage=assocList(cst_storage$32,l),
         storage$0=storage?[0,caml_call1(import_expr(env),[1,storage])]:0,
         match$0=assocList(cst_storage_type,l);
        if(match$0)
         {var _aw2_=match$0[1],switch$0=0;
          if(1 === _aw2_[0] && ! _aw2_[1])
           {if(! match$0[2]){var _aw3_=0;switch$0 = 2}}
          else
           switch$0 = 1;
          var switch$1=0;
          switch(switch$0)
           {case 1:
             if(! match$0[2])
              {var _aw3_=[0,caml_call1(import_type(env),_aw2_)];switch$1 = 1}
             break;
            case 2:switch$1 = 1;break
            }
          if(switch$1)
           {var
             entry_points_layout=assocList(cst_entry_points_layout$0,l),
             messages=assocList(cst_messages,l),
             flags=assocList(cst_flags$0,l),
             global_variables=assocList(cst_globals,l),
             metadata=assocList(cst_initial_metadata,l),
             views=assocList(cst_views$0,l),
             _aw4_=
              function(x)
               {if(1 === x[0])
                 {var _axP_=x[1];
                  if(_axP_)
                   {var _axQ_=_axP_[1];
                    if(0 === _axQ_[0])
                     {var _axR_=_axP_[2];
                      if(_axR_)
                       {var _axS_=_axR_[1],_axT_=_axQ_[1];
                        if(0 === _axS_[0])
                         {var _axU_=_axR_[2];
                          if(_axU_)
                           {var _axV_=_axU_[1],_axW_=_axS_[1];
                            if(0 === _axV_[0])
                             {var _axX_=_axU_[2];
                              if(_axX_)
                               {var _axY_=_axX_[1],_axZ_=_axV_[1];
                                if(0 === _axY_[0])
                                 {var _ax0_=_axX_[2];
                                  if(_ax0_)
                                   {var _ax1_=_ax0_[1],_ax2_=_axY_[1];
                                    if(0 === _ax1_[0])
                                     {var _ax3_=_ax0_[2];
                                      if(_ax3_)
                                       {var _ax4_=_ax3_[2];
                                        if(_ax4_)
                                         {var _ax5_=_ax4_[1],_ax6_=_ax3_[1],_ax7_=_ax1_[1];
                                          if(0 !== _ax5_[0] && ! _ax4_[2])
                                           {var
                                             command=_ax5_[1],
                                             originate=import_bool(_axW_),
                                             lazify=import_opt_bool(_axZ_),
                                             lazy_no_code=import_opt_bool(_ax2_),
                                             has_param=import_bool(_ax7_),
                                             line_no=import_line_no(_ax6_),
                                             e=seq$0(0,caml_call1(import_commands(env),command)),
                                             body=caml_call1(cata_command(default_line_no_f),e),
                                             _ax8_=0,
                                             _ax9_=has_param?120414939:919067353;
                                            return [0,
                                                    _axT_,
                                                    _ax9_,
                                                    originate,
                                                    lazify,
                                                    lazy_no_code,
                                                    line_no,
                                                    body,
                                                    _ax8_]}}}}}}}}}}}}}}
                var
                 _axN_=caml_call1(Base[84][15],x),
                 _axO_=caml_call2(Stdlib[28],cst_Message_format_error,_axN_);
                return caml_call1(Stdlib[2],_axO_)},
             entry_points=caml_call2(Utils_List[20],_aw4_,messages),
             _aw5_=
              function(x)
               {if(1 === x[0])
                 {var _axK_=x[1];
                  if(_axK_)
                   {var _axL_=_axK_[1];
                    if(0 === _axL_[0])
                     {var _axM_=_axK_[2];
                      if(_axM_ && ! _axM_[2])
                       {var variable=_axM_[1],name=_axL_[1];
                        return [0,name,variable]}}}}
                var
                 _axI_=caml_call1(Base[84][15],x),
                 _axJ_=
                  caml_call2(Stdlib[28],cst_Global_variable_format_err,_axI_);
                return caml_call1(Stdlib[2],_axJ_)},
             global_variables$0=
              caml_call2(Utils_List[20],_aw5_,global_variables),
             _aw6_=
              function(x)
               {if(1 === x[0])
                 {var _axF_=x[1];
                  if(_axF_)
                   {var _axG_=_axF_[1];
                    if(0 === _axG_[0])
                     {var _axH_=_axF_[2];
                      if(_axH_ && ! _axH_[2])
                       {var variable=_axH_[1],name=_axG_[1];
                        return [0,name,variable]}}}}
                var
                 _axD_=caml_call1(Base[84][15],x),
                 _axE_=caml_call2(Stdlib[28],cst_Metadata_format_error,_axD_);
                return caml_call1(Stdlib[2],_axE_)},
             metadata$0=caml_call2(Utils_List[20],_aw6_,metadata),
             _aw7_=
              function(x)
               {if(1 === x[0])
                 {var _axl_=x[1];
                  if(_axl_)
                   {var _axm_=_axl_[1];
                    if(0 === _axm_[0])
                     {var _axn_=_axl_[2];
                      if(_axn_)
                       {var _axo_=_axn_[1],_axp_=_axm_[1];
                        if(0 === _axo_[0])
                         {var _axq_=_axn_[2];
                          if(_axq_)
                           {var _axr_=_axq_[2];
                            if(_axr_)
                             {var _axs_=_axr_[1],_axt_=_axq_[1],_axu_=_axo_[1];
                              if(0 === _axs_[0])
                               {var _axv_=_axr_[2];
                                if(_axv_)
                                 {var _axw_=_axv_[1],_axx_=_axs_[1];
                                  if(0 === _axw_[0])
                                   {var _axy_=_axv_[2];
                                    if(_axy_)
                                     {var _axz_=_axy_[1],_axA_=_axw_[1];
                                      if(0 !== _axz_[0] && ! _axy_[2])
                                       {var
                                         commands=_axz_[1],
                                         _axB_=import_bool(_axx_),
                                         _axC_=import_line_no(_axt_);
                                        return [0,
                                                _axp_,
                                                import_bool(_axu_),
                                                _axC_,
                                                _axB_,
                                                commands,
                                                _axA_]}}}}}}}}}}}}
                var
                 _axj_=caml_call1(Base[84][15],x),
                 _axk_=caml_call2(Stdlib[28],cst_View_format_error,_axj_);
                return caml_call1(Stdlib[2],_axk_)},
             views$0=caml_call2(Utils_List[20],_aw7_,views),
             l$0=[1,assocList(cst_balance$6,l)],
             switch$2=0;
            if(1 === l$0[0] && ! l$0[1]){var balance=0;switch$2 = 1}
            if(! switch$2)var balance=[0,caml_call1(import_expr(env),l$0)];
            var
             build_global_variable=
              function(param)
               {var
                 variable=param[2],
                 name=param[1],
                 expression=caml_call1(import_expr(env),variable);
                return [0,name,expression]},
             global_variables$1=
              caml_call2
               (Utils_List[20],build_global_variable,global_variables$0),
             build_metadata=
              function(param)
               {var
                 variable=param[2],
                 name=param[1],
                 import_expr$0=import_expr(env);
                function import_meta_expr(input)
                 {if(1 === input[0])
                   {var _aw__=input[1];
                    if(_aw__)
                     {var _aw$_=_aw__[1];
                      if(0 === _aw$_[0])
                       {var args=_aw__[2],f=_aw$_[1];
                        if(caml_string_notequal(f,cst_meta_expr))
                         {if(caml_string_notequal(f,cst_meta_list))
                           {if(caml_string_notequal(f,cst_meta_map))
                             {if
                               (! caml_string_notequal(f,cst_meta_offchain_view) && args)
                               {var _axc_=args[1];
                                if(0 === _axc_[0])
                                 {var _axd_=args[2];
                                  if(_axd_ && ! _axd_[2]){var name=_axc_[1];return [3,name]}}}}
                            else
                             if(args)
                              {var
                                l=args[2],
                                import_elem=
                                 function(param)
                                  {if(1 === param[0])
                                    {var _axe_=param[1];
                                     if(_axe_)
                                      {var _axf_=_axe_[1];
                                       if
                                        (0
                                         ===
                                         _axf_[0]
                                         &&
                                         !
                                         caml_string_notequal(_axf_[1],cst_elem))
                                        {var _axg_=_axe_[2];
                                         if(_axg_)
                                          {var _axh_=_axg_[2];
                                           if(_axh_ && ! _axh_[2])
                                            {var v=_axh_[1],k=_axg_[1],_axi_=import_meta_expr(v);
                                             return [0,caml_call1(import_expr$0,k),_axi_]}}}}}
                                   throw [0,Assert_failure,_afg_]};
                               return [1,caml_call2(Utils_List[20],import_elem,l)]}}
                          else
                           if(args)
                            {var l$0=args[2];
                             return [0,caml_call2(Utils_List[20],import_meta_expr,l$0)]}}
                        else
                         if(args && ! args[2])
                          {var e=args[1];return [2,caml_call1(import_expr$0,e)]}
                        var
                         _axa_=caml_call2(Base[84][13],0,input),
                         _axb_=
                          caml_call2
                           (Stdlib[28],cst_Meta_expression_format_err$0,_axa_);
                        return caml_call1(Stdlib[2],_axb_)}}}
                  var
                   _aw8_=caml_call2(Base[84][13],0,input),
                   _aw9_=
                    caml_call2(Stdlib[28],cst_Meta_expression_format_err,_aw8_);
                  return caml_call1(Stdlib[2],_aw9_)}
                var expression=import_meta_expr(variable);
                return [0,name,expression]},
             metadata$1=caml_call2(Utils_List[20],build_metadata,metadata$0),
             build_view=
              function(param)
               {var
                 doc=param[6],
                 commands=param[5],
                 pure=param[4],
                 line_no=param[3],
                 has_param=param[2],
                 name=param[1],
                 body=seq$0(line_no,caml_call1(import_commands(env),commands));
                return [0,name,has_param,pure,body,doc,0]},
             views$1=caml_call2(Utils_List[20],build_view,views$0),
             entry_points_layout$0=
              entry_points_layout
               ?[0,import_inner_layout([1,entry_points_layout])]
               :0,
             flags$0=import_flags(flags);
            return [0,
                    [0,
                     template_id,
                     balance,
                     storage$0,
                     0,
                     _aw3_,
                     entry_points,
                     entry_points_layout$0,
                     0,
                     flags$0,
                     global_variables$1,
                     metadata$1,
                     views$1,
                     0]]}}
        throw [0,Assert_failure,_afn_]}
      throw [0,Assert_failure,_afo_]}
    var
     Smartml_Import=
      [0,
       init_env,
       import_type,
       import_contract_id,
       import_literal,
       import_expr,
       import_contract,
       import_line_no];
    caml_register_global(6519,Smartml_Import,"Smartml__Import");
    function apply_first_flags(config,rest)
     {var config$0=config,rest$0=rest;
      for(;;)
       {if(rest$0)
         {var _aw1_=rest$0[1];
          if(11 === _aw1_[0])
           {var
             rest$1=rest$0[2],
             flag=_aw1_[1],
             config$1=apply_flag(config$0,flag),
             config$0=config$1,
             rest$0=rest$1;
            continue}}
        return [0,config$0,rest$0]}}
    function _afs_(config,s)
     {var
       match=check_scenario(config,s),
       warnings=match[2],
       s$0=match[1],
       scenario=caml_call1(close_scenario(config),s$0),
       scenario_state$0=scenario_state(config);
      return [0,scenario,scenario_state$0,warnings]}
    function load_from_string(primitives,config,j)
     {var
       Printer=get$0(config),
       j_actions=caml_call2(Yojson[10][100][7],cst_scenario,j),
       _awh_=caml_call2(Yojson[10][100][7],cst_shortname,j),
       shortname=caml_call1(Yojson[10][100][21],_awh_),
       env=init_env(0),
       _awi_=caml_call2(Yojson[10][100][7],cst_kind$0,j),
       kind=[0,caml_call1(Yojson[10][100][21],_awi_)],
       actions=[0,0];
      try
       {var
         _awk_=caml_call1(Yojson[10][100][20],j_actions),
         _awl_=
          function(action$0)
           {var _awU_=actions[1],M=caml_call1(Utils_Misc[2],action$0);
            function default$0(f,s,v)
             {var match=caml_call1(M[2],s);
              return 870828711 === match?v:caml_call1(f,s)}
            function import_expr_string(s)
             {var
               _awZ_=caml_call1(M[3],s),
               _aw0_=caml_call1(Parsexp[3][10],_awZ_);
              return caml_call1(import_expr(env),_aw0_)}
            function import_contract_id_string(s)
             {var _awY_=caml_call1(M[3],s);
              return import_contract_id(caml_call1(Parsexp[3][10],_awY_))}
            function parse_line_no(s)
             {var _awX_=caml_call1(M[3],s);
              return import_line_no(caml_call1(Parsexp[3][10],_awX_))}
            var
             action=caml_call1(M[3],cst_action),
             switch$0=caml_string_compare(action,cst_message$2),
             switch$1=0;
            if(0 <= switch$0)
             if(0 < switch$0)
              if(caml_string_notequal(action,cst_newContract))
               if(caml_string_notequal(action,cst_show$1))
                if(caml_string_notequal(action,cst_simulation))
                 if(caml_string_notequal(action,cst_verify$2))
                  switch$1 = 1;
                 else
                  var
                   _awo_=parse_line_no(cst_line_no$14),
                   _awV_=[6,import_expr_string(cst_condition$1),_awo_];
                else
                 var
                  _awp_=parse_line_no(cst_line_no$15),
                  _awV_=[2,import_contract_id_string(cst_id$9),_awp_];
               else
                var
                 _awq_=parse_line_no(cst_line_no$16),
                 _awr_=caml_call1(M[7],cst_compile$0),
                 _aws_=caml_call1(M[7],cst_stripStrings$0),
                 _awt_=caml_call1(M[7],cst_html$3),
                 _awV_=
                  [7,
                   import_expr_string(cst_expression$1),
                   _awt_,
                   _aws_,
                   _awr_,
                   _awq_];
              else
               var
                _awu_=caml_call1(M[3],cst_export$0),
                contract=import_contract(env,caml_call1(Parsexp[3][10],_awu_)),
                id=import_contract_id_string(cst_id$10),
                line_no=parse_line_no(cst_line_no$17),
                _awv_=caml_call1(M[7],cst_show$2),
                _aww_=caml_call1(M[7],cst_accept_unknown_types$0),
                _awV_=[0,id,contract[1],line_no,_aww_,_awv_];
             else
              var
               of_seed=
                function(id)
                 {var seed=caml_call1(M[3],id);
                  if(caml_string_notequal(seed,cst_none$0))
                   {if(caml_call2(Base_String[75],seed,cst_seed$2))
                     {var
                       _awW_=
                        caml_call3
                         (Stdlib_string[4],
                          seed,
                          5,
                          caml_ml_string_length(seed) - 5 | 0);
                      return [0,[0,caml_call1(primitives[2][8],_awW_)]]}
                    return [0,[1,import_expr_string(id)]]}
                  return 0},
               chain_id=
                function(s)
                 {return caml_string_equal(caml_call1(M[3],s),cst$312)
                          ?0
                          :[0,import_expr_string(cst_chain_id$4)]},
               params=import_expr_string(cst_params$6),
               line_no$0=parse_line_no(cst_line_no$18),
               message=caml_call1(M[3],cst_message$3),
               id$0=import_contract_id_string(cst_id$11),
               _awx_=default$0(M[7],cst_export$1,1),
               _awy_=default$0(M[7],cst_show$3,1),
               _awz_=
                default$0
                 (import_expr_string,cst_voting_powers$0,build_map(0,0,0)),
               _awA_=0,
               _awB_=
                default$0
                 (function(s){return [0,import_expr_string(s)]},
                  cst_level$2,
                  _awA_),
               _awC_=
                default$0
                 (import_expr_string,cst_amount$5,cst$244(0,[6,Big_int[1]])),
               _awD_=0,
               _awE_=
                default$0
                 (function(s){return [0,import_expr_string(s)]},
                  cst_time$0,
                  _awD_),
               _awF_=default$0(chain_id,cst_chain_id$5,0),
               _awG_=default$0(of_seed,cst_sender$1,0),
               _awH_=default$0(of_seed,cst_source$2,0),
               _awI_=default$0(M[3],cst_messageClass$0,cst$313),
               _awJ_=default$0(M[3],cst_title$0,cst$314),
               _awK_=0,
               _awL_=
                default$0
                 (function(s){return [0,import_expr_string(s)]},
                  cst_exception$0,
                  _awK_),
               _awV_=
                [3,
                 id$0,
                 default$0(import_expr_string,cst_valid$0,cst$244(0,[0,1])),
                 _awL_,
                 params,
                 line_no$0,
                 _awJ_,
                 _awI_,
                 _awH_,
                 _awG_,
                 _awF_,
                 _awE_,
                 _awC_,
                 _awB_,
                 _awz_,
                 message,
                 _awy_,
                 _awx_];
            else
             if(caml_string_notequal(action,cst_compute))
              if(caml_string_notequal(action,cst_dynamic_contract))
               if(caml_string_notequal(action,cst_error$0))
                if(caml_string_notequal(action,cst_flag$0))
                 if(caml_string_notequal(action,cst_html$4))
                  switch$1 = 1;
                 else
                  var
                   _awM_=parse_line_no(cst_line_no$19),
                   _awN_=caml_call1(M[3],cst_inner$0),
                   _awV_=[5,caml_call1(M[3],cst_tag$0),_awN_,_awM_];
                else
                 {var
                   flags=caml_call1(M[5],cst_flag$1),
                   match=parse_flag(flags);
                  if(! match)
                   {var
                     _awO_=[0,[0,848053268,parse_line_no(cst_line_no$21)],0],
                     _awP_=
                      function(s){return caml_call2(Stdlib_printf[4],_afp_,s)},
                     _awQ_=caml_call2(Stdlib_list[17],_awP_,flags);
                    throw [0,
                           SmartExcept,
                           [0,
                            _afq_,
                            [0,
                             [0,936573133,caml_call2(Stdlib_string[7],cst$315,_awQ_)],
                             _awO_]]]}
                  var
                   flag=match[1],
                   _awV_=[11,flag,parse_line_no(cst_line_no$20)]}
               else
                var _awV_=[4,caml_call1(M[3],cst_message$4)];
              else
               {var
                 _awR_=parse_line_no(cst_line_no$22),
                 _awS_=import_contract_id_string(cst_model_id$0),
                 match$0=import_contract_id_string(cst_dynamic_id$1);
                if(0 === match$0[0])throw [0,Assert_failure,_afr_];
                var dyn=match$0[1],_awV_=[10,dyn,_awS_,_awR_]}
             else
              var
               expression=import_expr_string(cst_expression$2),
               _awT_=parse_line_no(cst_line_no$23),
               _awV_=[1,caml_call1(M[6],cst_id$12),expression,_awT_];
            if(switch$1)
             var
              _awm_=caml_call2(Stdlib[28],action,cst$311),
              _awn_=caml_call2(Stdlib[28],cst_Unknown_action,_awm_),
              _awV_=caml_call1(Stdlib[2],_awn_);
            actions[1] = [0,_awV_,_awU_];
            return 0};
        caml_call2(Stdlib_list[15],_awl_,_awk_)}
      catch(exn$0)
       {exn$0 = caml_wrap_exception(exn$0);
        if(exn$0[1] === SmartExcept)
         {var exn=exn$0[2];actions[1] = [0,[8,exn],actions[1]]}
        else
         {var _awj_=actions[1];
          actions[1]
          =
          [0,[8,[0,[0,936573133,caml_call2(Printer[25],0,exn$0)],0]],_awj_]}}
      var
       actions$0=caml_call1(Stdlib_list[9],actions[1]),
       match=apply_first_flags(config,actions$0),
       actions$1=match[2],
       config$0=match[1],
       s=[0,shortname,actions$1,0,kind];
      return _afs_(config$0,s)}
    function check_close_scenario(config,s){return _afs_(config,s)}
    var scenarios=caml_call2(Stdlib_hashtbl[1],0,5);
    function register(opt,group,name,kind,actions)
     {if(opt)var sth=opt[1],flags=sth;else var flags=0;
      var scenario=[0,name,actions,flags,[0,kind]];
      function scenario$0(config)
       {return check_close_scenario(config,scenario)}
      var match=caml_call2(Stdlib_hashtbl[7],scenarios,group);
      if(match)var l=match[1],l$0=l;else var l$0=0;
      var l$1=caml_call2(Stdlib[37],l$0,[0,scenario$0,0]);
      return caml_call3(Stdlib_hashtbl[5],scenarios,group,l$1)}
    function get$3(group)
     {var _awg_=caml_call2(Stdlib_hashtbl[7],scenarios,group);
      return caml_call2(Utils_Option[2],_awg_,0)}
    var
     Smartml_Scenario=
      [0,load_from_string,check_close_scenario,register,get$3];
    caml_register_global(6522,Smartml_Scenario,"Smartml__Scenario");
    function make$0(message){return [0,message]}
    function pp_quick(ppf,e){return caml_call2(Stdlib_format[120],ppf,e[1])}
    var Error=[0,make$0,pp_quick];
    function return$7(o){return [0,[0,o],0]}
    function fail(e){return [0,[1,e],0]}
    function bind$5(x,f)
     {var _awe_=x[1];
      if(0 === _awe_[0])
       {var
         o=_awe_[1],
         rr=caml_call1(f,o),
         _awf_=caml_call2(Stdlib[37],x[2],rr[2]);
        return [0,rr[1],_awf_]}
      return [0,_awe_,x[2]]}
    function attach(a,init)
     {var _awd_=caml_call2(Stdlib[37],init[2],a);return [0,init[1],_awd_]}
    var Decorated_result=[0,return$7,fail,bind$5,attach];
    function make$1(opt,_awc_,_awb_,_awa_,param)
     {if(opt)var sth=opt[1],actions=sth;else var actions=0;
      if(_awc_)var sth$0=_awc_[1],status=sth$0;else var status=870530776;
      if(_awb_)
       var sth$1=_awb_[1],expecting_success=sth$1;
      else
       var expecting_success=1;
      if(_awa_)var sth$2=_awa_[1],attachements=sth$2;else var attachements=0;
      return [0,actions,status,expecting_success,attachements]}
    var
     History_event=[0,make$1],
     Smartml_Tezos_scenario=
      [0,
       Error,
       Decorated_result,
       History_event,
       function(Client,primitives)
        {function return$0(x){return caml_call1(Client[1][1],[0,x])}
         function bind(x,f)
          {function _av$_(param)
            {if(0 === param[0]){var x=param[1];return caml_call1(f,x)}
             var x$0=param[1];
             return caml_call1(Client[1][1],[1,x$0])}
           return caml_call2(Client[1][2],x,_av$_)}
         var IO=caml_call1(Base_Monad[1],[0,bind,return$0,-349054340]);
         function return$1(x)
          {var _av__=caml_call1(Decorated_result[1],x);
           return caml_call1(Client[1][1],_av__)}
         function bind$0(x,f)
          {function _av5_(e)
            {var _av6_=e[1];
             if(0 === _av6_[0])
              {var
                a=e[2],
                o=_av6_[1],
                _av7_=
                 function(res)
                  {var _av9_=caml_call2(Decorated_result[4],a,res);
                   return caml_call1(Client[1][1],_av9_)},
                _av8_=caml_call1(f,o);
               return caml_call2(Client[1][2],_av8_,_av7_)}
             return caml_call1(Client[1][1],e)}
           return caml_call2(Client[1][2],x,_av5_)}
         var
          Decorated_IO=
           caml_call1(Base_Monad[1],[0,bind$0,return$1,-349054340]);
         function of_smartml(opt,client,smartml)
          {if(opt)
            var sth=opt[1],log_advancement=sth;
           else
            var log_advancement=function(param){return 0};
           var _av4_=caml_call1(Stdlib_queue[2],0);
           return [0,
                   client,
                   smartml,
                   caml_call2(Stdlib_hashtbl[1],0,5),
                   _av4_,
                   log_advancement]}
         function fresh(client,config)
          {return of_smartml(0,client,scenario_state(config))}
         function add_history(state,ev)
          {return caml_call2(Stdlib_queue[3],ev,state[4])}
         function log_advancement(state,fmt)
          {return caml_call2(Stdlib_format[134],state[5],fmt)}
         function deal_with_result
          (opt,not_valid,result_content,_avU_,state,making_result)
          {if(opt)
            var sth=opt[1],add_attachments=sth;
           else
            var add_attachments=0;
           if(_avU_)var sth$0=_avU_[1],actions=sth$0;else var actions=0;
           function _avV_(result)
            {function ev(a,status)
              {var _av3_=caml_call2(Stdlib[37],result[2],a);
               return [0,
                       actions,
                       status,
                       0 === not_valid?1:0,
                       caml_call2(Stdlib[37],add_attachments,_av3_)]}
             var _avX_=result[1];
             if(0 === _avX_[0])
              {var _avY_=_avX_[1];
               if(not_valid)
                {var
                  _avZ_=function(conv){return caml_call1(conv,_avY_)},
                  a=caml_call3(Base_Option[37],result_content,0,_avZ_);
                 add_history(state,ev(a,-464807894));
                 var _av0_=[1,caml_call1(Error[1],cst_Unexpected_success)];
                 return caml_call1(Client[1][1],_av0_)}
               var
                _av1_=function(conv){return caml_call1(conv,_avY_)},
                a$0=caml_call3(Base_Option[37],result_content,0,_av1_);
               add_history(state,ev(a$0,94326179));
               return caml_call1(IO[5],_avY_)}
             var _av2_=_avX_[1];
             if(not_valid)
              {var v=not_valid[1];
               add_history(state,ev([0,[0,106380200,_av2_],0],94326179));
               return caml_call1(IO[5],v)}
             add_history(state,ev([0,[0,106380200,_av2_],0],-464807894));
             return caml_call1(Client[1][1],[1,_av2_])}
           var _avW_=caml_call1(making_result,0);
           return caml_call2(Client[1][2],_avW_,_avV_)}
         function compute(state,expr$2,config,action,continuation)
          {var
            Printer$0=get$0(config),
            scenario_state=state[2],
            Printer=get$0(config),
            _ava_=0,
            _avb_=scenario_state[2];
           function _avc_(id,v,l)
            {var key=caml_call2(Stdlib_format[126],_aft_,id);
             return [0,[0,key,type_of_value(v)],l]}
           var
            _avd_=caml_call3(Stdlib_hashtbl[14],_avc_,_avb_,_ava_),
            _ave_=caml_call2(Utils_List[52],caml_compare,_avd_),
            _avf_=0,
            _avg_=scenario_state[1];
           function _avh_(key,param,l)
            {var
              match=param[1][1],
              derived=match[13],
              tstorage=derived[1][5],
              key$0=caml_call1(Printer[27],key);
             return [0,
                     [0,caml_call2(Stdlib_format[126],_afu_,key$0),tstorage],
                     l]}
           var
            _avi_=caml_call3(Stdlib_hashtbl[14],_avh_,_avg_,_avf_),
            _avj_=caml_call2(Utils_List[52],caml_compare,_avi_),
            fields=caml_call2(Stdlib[37],_avj_,_ave_);
           function _avk_(_avT_){return _avT_[1]}
           var
            layout=
             value
              (comb_layout_of_row
                (-57574468,caml_call2(Utils_List[20],_avk_,fields))),
            tparameter_ep=record_or_unit(layout,fields),
            params$0=params(0),
            contracts=caml_call2(Stdlib_hashtbl[1],0,10),
            _avl_=scenario_state[1];
           function _avm_(key,param)
            {var
              _avR_=caml_call1(Printer[27],key),
              _avS_=caml_call2(Stdlib_format[126],_afv_,_avR_),
              getData=attr(params$0[2],params$0,_avS_);
             return caml_call3(Stdlib_hashtbl[5],contracts,key,getData)}
           caml_call2(Stdlib_hashtbl[12],_avm_,_avl_);
           var
            scenario_variables=caml_call2(Stdlib_hashtbl[1],0,10),
            _avn_=scenario_state[2];
           function _avo_(id,param)
            {var
              key=caml_call2(Stdlib_format[126],_afw_,id),
              getData=attr(params$0[2],params$0,key);
             return caml_call3
                     (Stdlib_hashtbl[5],scenario_variables,id,getData)}
           caml_call2(Stdlib_hashtbl[12],_avo_,_avn_);
           var
            subst=[0,contracts,scenario_variables],
            expr=
             caml_call1(reduce_expr(config,primitives,scenario_state),expr$2),
            expr$0=caml_call1(erase_types_expr,expr),
            expr$1=caml_call1(replace_expr(subst),expr$0),
            line_no=expr$1[2],
            _avp_=some$1(line_no,expr$1),
            _avq_=storage(line_no),
            entryPoint=
             [0,
              cst_compute$0,
              [0,-306175688,tparameter_ep],
              1,
              0,
              0,
              0,
              set$4(expr$1[2],_avq_,_avp_),
              0],
            contract=
             [0,
              0,
              0,
              [0,none$0(line_no)],
              0,
              0,
              [0,entryPoint,0],
              0,
              0,
              _afx_,
              0,
              0,
              0,
              0],
            c=[0,contract],
            c$0=replace_contract(subst,c),
            c$1=caml_call1(check_contract$0(config),c$0),
            c$2=reduce_contract(config,primitives,scenario_state,c$1),
            compute_contract=close_contract(config,c$2),
            compute_contract$0=
             interpret_contract(config,primitives,state[2],compute_contract),
            michelson_contract=
             display_tcontract(compile_instance(config,compute_contract$0)),
            match=caml_call1(unF,compute_contract$0[1][1][13][1][1]),
            switch$0=0;
           if(typeof match !== "number" && 7 === match[0])
            {var _avs_=match[2];
             if(_avs_)
              {var _avt_=_avs_[1];
               if(! caml_string_notequal(_avt_[1],cst_compute$1))
                {var _avu_=_avt_[2][1],switch$1=0;
                 if(typeof _avu_ !== "number" && 6 === _avu_[0])
                  if(_avs_[2])
                   switch$1 = 1;
                  else
                   {var layout$0=_avu_[1],storage_layout=get(layout$0);
                    switch$0 = 1;
                    switch$1 = 1}}}}
           if(! switch$0)var storage_layout=0;
           function code(s)
            {return [0,748543309,caml_call2(Base_String[80],s,10)]}
           var
            _avr_=
             [0,
              [0,
               cst_layout$1,
               code
                (caml_call3(Base_Option[37],storage_layout,cst_NONE$2,show$0))],
              0],
            add_attachments=
             [0,
              [0,
               79,
               [0,
                [0,
                 cst_debug,
                 [0,
                  79,
                  [0,
                   [0,
                    cst_expression$3,
                    code(caml_call3(Printer$0[14],0,0,expr$2))],
                   _avr_]]],
                0]],
              0];
           return deal_with_result
                   ([0,add_attachments],
                    0,
                    0,
                    [0,[0,action,0]],
                    state,
                    function(param)
                     {function bug(s)
                       {var
                         _avO_=caml_call2(Stdlib[28],cst_BUG,s),
                         _avP_=caml_call1(Error[1],_avO_),
                         _avQ_=caml_call1(Decorated_result[2],_avP_);
                        return caml_call1(Client[1][1],_avQ_)}
                      function _avv_(storages)
                       {function _avE_(storages_laid_out)
                         {caml_call1(Stdlib[46],cst_run_script);
                          function _avM_(compute_result)
                           {var
                             pos1=caml_call2(Utils_String[14],compute_result,40),
                             pos2=caml_call2(Utils_String[16],compute_result,41),
                             computed=
                              caml_call3
                               (Utils_String[4],
                                compute_result,
                                pos1 + 6 | 0,
                                (pos2 - pos1 | 0) - 6 | 0);
                            if(40 === caml_string_get(computed,0))
                             var
                              pos1$0=caml_call2(Utils_String[14],computed,40),
                              pos2$0=caml_call2(Utils_String[16],computed,41),
                              computed$0=
                               caml_call3
                                (Utils_String[4],
                                 computed,
                                 pos1$0 + 1 | 0,
                                 (pos2$0 - pos1$0 | 0) - 1 | 0);
                            else
                             var computed$0=computed;
                            var
                             eta=caml_call3(Base_String[93],10,32,computed$0),
                             arg=Base_String[87],
                             computed$1=caml_call2(arg,0,eta);
                            caml_call3(Stdlib_printf[9],Stdlib[46],_afy_,computed$1);
                            return caml_call2(continuation,bug,computed$1)}
                          var
                           _avN_=
                            caml_call4
                             (Client[5],
                              state[1],
                              michelson_contract,
                              storages_laid_out,
                              cst_None$79);
                          return caml_call2(Decorated_IO[1],_avN_,_avM_)}
                        if(storage_layout)
                         var
                          layout=storage_layout[1],
                          make_pairs=
                           function(param)
                            {if(0 === param[0])
                              {var match$1=param[1],field=match$1[2];
                               if
                                (caml_string_equal
                                  (caml_call2(Base_String[100],field,1),cst_v$0))
                                {var
                                  _avG_=
                                   caml_int_of_string
                                    (caml_call3
                                      (Utils_String[4],
                                       field,
                                       1,
                                       caml_ml_string_length(field) - 1 | 0)),
                                  match=caml_call2(Stdlib_hashtbl[7],state[3],_avG_);
                                 if(match)
                                  {var s=match[1];return caml_call1(Decorated_IO[5],s)}
                                 return caml_call3(Stdlib_format[134],bug,_afz_,field)}
                               var
                                match$0=
                                 caml_call3
                                  (Base_List[122][4],storages,Utils_String[33],field);
                               if(match$0)
                                {var s$0=match$0[1];return caml_call1(Decorated_IO[5],s$0)}
                               return caml_call3(Stdlib_format[134],bug,_afA_,field)}
                             var r=param[2],l=param[1];
                             function _avH_(left)
                              {function _avJ_(right)
                                {function paren(ppf,s)
                                  {var match=caml_call2(Utils_String[22],s,32);
                                   return match
                                           ?caml_call3(Stdlib_format[123],ppf,_afB_,s)
                                           :caml_call3(Stdlib_format[123],ppf,_afC_,s)}
                                 var
                                  _avL_=
                                   caml_call5(Stdlib_format[127],_afD_,paren,left,paren,right);
                                 return caml_call1(Decorated_IO[5],_avL_)}
                               var _avK_=make_pairs(r);
                               return caml_call2(Decorated_IO[1],_avK_,_avJ_)}
                             var _avI_=make_pairs(l);
                             return caml_call2(Decorated_IO[1],_avI_,_avH_)},
                          _avF_=make_pairs(layout);
                        else
                         var _avF_=bug(cst_storage_layout_not_set);
                        return caml_call2(Decorated_IO[1],_avF_,_avE_)}
                      function get_storage(id,kt1,prev_m)
                       {function _avy_(prev)
                         {function _avz_(res)
                           {var
                             eta=caml_call3(Base_String[93],10,32,res),
                             arg=Base_String[87],
                             _avB_=caml_call2(arg,0,eta),
                             _avC_=caml_call1(Printer$0[27],id),
                             _avD_=
                              [0,
                               [0,caml_call2(Stdlib_format[126],_afE_,_avC_),_avB_],
                               prev];
                            return caml_call1(Decorated_IO[5],_avD_)}
                          var _avA_=caml_call2(Client[4],state[1],kt1);
                          return caml_call2(Decorated_IO[1],_avA_,_avz_)}
                        return caml_call2(Decorated_IO[1],prev_m,_avy_)}
                      var
                       _avw_=caml_call1(Decorated_IO[5],0),
                       _avx_=
                        caml_call3(Stdlib_hashtbl[14],get_storage,state[2][3],_avw_);
                      return caml_call2(Decorated_IO[1],_avx_,_avv_)})}
         function handle_action(config,state,action)
          {var Printer=get$0(config);
           function add_simple_history(status,action)
            {add_history
              (state,
               caml_call5(History_event[1],[0,[0,action,0]],[0,status],0,0,0));
             return caml_call1(IO[5],0)}
           switch(action[0])
            {case 0:
              var
               accept_unknown_types=action[4],
               line_no=action[3],
               contract$1=action[2],
               id=action[1],
               _auO_=head_line_no(line_no),
               _auP_=caml_call1(Printer[27],id);
              caml_call2(log_advancement(state,_afF_),_auP_,_auO_);
              var
               scenario_state$0=scenario_state(config),
               contract$2=
                reduce_contract
                 (config,primitives,scenario_state$0,[0,contract$1]),
               match$0=caml_call2(Stdlib_hashtbl[7],state[2][1],id);
              if(match$0)
               var contract=match$0[1],contract$0=contract;
              else
               var
                contract$0=
                 interpret_contract(config,primitives,state[2],contract$2);
              caml_call3(Stdlib_hashtbl[11],state[2][1],id,contract$0);
              var
               compiled_contract=compile_instance(config,contract$0),
               _auQ_=contract$0[2][2];
              if(_auQ_)
               {var
                 storage=_auQ_[1],
                 storage$0=compile_value(config,storage),
                 _auR_=compiled_contract[4];
                if(_auR_)
                 var
                  entry_points=_auR_[1],
                  _auS_=caml_call1(erase_types_literal,entry_points),
                  storage$1=caml_call2(_Jw_[10],storage$0,_auS_);
                else
                 var storage$1=storage$0;
                var storage$2=string_of_literal(storage$1)}
              else
               var storage$2=cst_missing_storage;
              var _auT_=has_error_tcontract(0,compiled_contract);
              if(0 === caml_call1(Utils_List[4],_auT_))
               {var
                 _auU_=
                  function(address)
                   {var smartml=state[2];
                    caml_call3(Stdlib_hashtbl[5],smartml[3],id,address);
                    return caml_call1(IO[5],0)},
                 _auV_=
                  function(param)
                   {if(0 === id[0])
                     {var
                       match=id[1],
                       static_id=match[1],
                       _au$_=display_tcontract(compiled_contract);
                      return caml_call4
                              (Client[2],state[1],static_id,_au$_,storage$2)}
                    throw [0,Assert_failure,_afG_]},
                 _auW_=[0,[0,action,0]],
                 _auX_=
                  deal_with_result
                   (0,
                    0,
                    [0,
                     function(s)
                      {return [0,
                               [0,936573133,caml_call2(Stdlib_format[127],_afH_,s)],
                               0]}],
                    _auW_,
                    state,
                    _auV_);
                return caml_call2(IO[1],_auX_,_auU_)}
              if(accept_unknown_types)return caml_call1(IO[5],0);
              throw [0,Assert_failure,_afI_];
             case 1:
              var
               line_no$0=action[3],
               expression=action[2],
               id$0=action[1],
               _auY_=head_line_no(line_no$0);
              caml_call2(log_advancement(state,_afJ_),id$0,_auY_);
              var
               value=
                caml_call1
                 (interpret_expr_external
                   (config,
                    primitives,
                    [0,
                     _afK_,
                     [0,
                      [0,771172693,expression],
                      [0,[0,848053268,expression[3]],0]]],
                    state[2]),
                  expression);
              caml_call2(Stdlib_printf[9],Stdlib[46],_afL_);
              return compute
                      (state,
                       expression,
                       config,
                       action,
                       function(param,v)
                        {var _au__=caml_call5(Printer[2],0,0,0,0,expression[2]);
                         caml_call3(Stdlib_printf[9],Stdlib[46],_afM_,_au__);
                         caml_call3(Stdlib_hashtbl[5],state[3],id$0,v);
                         caml_call3(Stdlib_hashtbl[5],state[2][2],id$0,value);
                         return caml_call1(Decorated_IO[5],0)});
             case 3:
              var
               message=action[15],
               amount=action[12],
               sender=action[9],
               source=action[8],
               line_no$1=action[5],
               params=action[4],
               valid=action[2],
               id$1=action[1],
               _auZ_=head_line_no(line_no$1),
               _au0_=caml_call1(Printer[27],id$1);
              caml_call3(log_advancement(state,_afN_),_au0_,message,_auZ_);
              var
               _auM_=
                function(kt1)
                 {function _au8_(c)
                   {return caml_call1(Utils_Option[15],[0,kt1,c])}
                  var _au9_=caml_call2(Stdlib_hashtbl[7],state[2][1],id$1);
                  return caml_call2(Utils_Option[40],_au9_,_au8_)},
               _auN_=caml_call2(Stdlib_hashtbl[7],state[2][3],id$1),
               match=caml_call2(Utils_Option[40],_auN_,_auM_);
              if(match)
               {var
                 match$1=match[1],
                 smartml_contract=match$1[2],
                 kt1=match$1[1],
                 scenario_state$1=state[2],
                 pp=
                  function(param)
                   {return [0,
                            _afO_,
                            [0,[0,771172693,amount],[0,[0,848053268,amount[3]],0]]]},
                 amount$0=
                  unMutez
                   (pp,
                    caml_call1
                     (interpret_expr_external
                       (config,primitives,pp(0),scenario_state$1),
                      amount)),
                 pp$0=
                  function(param)
                   {return [0,
                            _afP_,
                            [0,[0,771172693,valid],[0,[0,848053268,valid[3]],0]]]},
                 valid$0=
                  unBool$0
                   (pp$0,
                    caml_call1
                     (interpret_expr_external
                       (config,primitives,pp$0(0),scenario_state$1),
                      valid)),
                 parse_address=
                  function(param)
                   {if(0 === param[0]){var x=param[1];return [0,x]}
                    var address=param[1];
                    function pp(param)
                     {return [0,
                              _afQ_,
                              [0,[0,771172693,address],[0,[0,848053268,address[3]],0]]]}
                    return [1,
                            unAddress
                             (pp,
                              caml_call1
                               (interpret_expr_external
                                 (config,primitives,pp(0),scenario_state$1),
                                address))]},
                 _au1_=smartml_contract[1][1][6],
                 _au2_=function(x){return caml_string_equal(x[1],message)},
                 match$2=caml_call2(Stdlib_list[36],_au2_,_au1_);
                if(match$2)
                 {var
                   x=match$2[1],
                   params_type=x[8][1],
                   pp$1=function(param){throw [0,Assert_failure,_afR_]},
                   c=[0,line_no$1,[11,params_type,params[2],pp$1]];
                  run(config,[0,c,0]);
                  var
                   tvalue=
                    caml_call1
                     (interpret_expr_external
                       (config,
                        primitives,
                        [0,
                         _afS_,
                         [0,[0,771172693,params],[0,[0,848053268,params[3]],0]]],
                        scenario_state$1),
                      params),
                   mich=compile_value(config,tvalue),
                   params$0=string_of_literal(mich),
                   match$3=caml_call1(Utils_List[4],smartml_contract[1][1][6]),
                   entry_point=1 === match$3?0:[0,message],
                   not_valid=valid$0?0:_afT_;
                  return deal_with_result
                          (0,
                           not_valid,
                           0,
                           [0,[0,action,0]],
                           state,
                           function(param)
                            {var
                              _au4_=state[1],
                              _au5_=caml_call2(Utils_Option[17],parse_address,source),
                              _au6_=caml_call2(Utils_Option[17],parse_address,sender),
                              _au7_=[0,caml_call1(Big_int[38],amount$0)];
                             return caml_call7
                                     (Client[3],
                                      [0,params$0],
                                      entry_point,
                                      _au7_,
                                      _au6_,
                                      _au5_,
                                      _au4_,
                                      kt1)})}
                throw [0,Assert_failure,_afU_]}
              throw [0,Assert_failure,_afV_];
             case 6:
              var
               line_no$2=action[2],
               condition=action[1],
               _au3_=head_line_no(line_no$2);
              caml_call1(log_advancement(state,_afW_),_au3_);
              return compute
                      (state,
                       condition,
                       config,
                       action,
                       function(bug,computed)
                        {return caml_string_notequal(computed,cst_True$7)
                                 ?caml_call1(bug,cst_Verify_Error)
                                 :caml_call1(Decorated_IO[5],0)});
             case 9:return caml_call1(IO[5],0);
             case 4:
             case 8:
             case 10:return add_simple_history(-464807894,action);
             default:return add_simple_history(870530776,action)}}
         function run$0(param,state)
          {var scenario_state=param[2],match=param[1],actions=match[2];
           function _auI_(prevm,action)
            {function _auK_(param)
              {try
                {var _auL_=handle_action(scenario_state[6],state,action);
                 return _auL_}
               catch(e)
                {e = caml_wrap_exception(e);
                 caml_call1(Stdlib[46],cst_EXCEPTION);
                 throw e}}
             return caml_call2(IO[1],prevm,_auK_)}
           var _auJ_=caml_call1(IO[5],0);
           return caml_call3(Base_List[9],actions,_auJ_,_auI_)}
         return [0,[0,of_smartml,fresh],run$0]}];
    caml_register_global
     (6525,Smartml_Tezos_scenario,"Smartml__Tezos_scenario");
    function export_layout(layout)
     {var match=get(layout);
      if(match)
       {var
         layout$0=match[1],
         leaf=
          function(param)
           {var target=param[2],source=param[1];
            return caml_string_equal(source,target)
                    ?caml_call2(Stdlib_printf[4],_afX_,source)
                    :caml_call3(Stdlib_printf[4],_afY_,source,target)},
         node=function(l1,l2){return caml_call3(Stdlib_printf[4],_afZ_,l1,l2)},
         _auH_=caml_call3(Utils_Binary_tree[6],leaf,node,layout$0);
        return caml_call2(Stdlib_printf[4],_af0_,_auH_)}
      return cst_None$80}
    function export_type(t)
     {var t$0=t;
      for(;;)
       {var match=getRepr(t$0);
        if(typeof match === "number")
         return cst_secret_key$5;
        else
         switch(match[0])
          {case 0:var x=match[1];return caml_call2(Stdlib_printf[4],_af1_,x);
           case 1:
            var
             t$1=match[1],
             match$0=caml_call1(Michelson_base_Type[13],t$1),
             memo=match$0[2],
             t$2=match$0[1];
            if(0 === memo)return t$2;
            throw [0,Assert_failure,_af2_];
           case 2:
            switch(match[1])
             {case 0:
               var t$3=match[2],_aug_=export_type(t$3);
               return caml_call2(Stdlib_printf[4],_af3_,_aug_);
              case 1:
               var t$4=match[2],_auh_=export_type(t$4);
               return caml_call2(Stdlib_printf[4],_af4_,_auh_);
              case 2:
               var telement=match[2],_aui_=export_type(telement);
               return caml_call2(Stdlib_printf[4],_af5_,_aui_);
              case 3:
               var t$5=match[2],_auj_=export_type(t$5);
               return caml_call2(Stdlib_printf[4],_af6_,_auj_);
              default:
               var t$6=match[2],_auk_=export_type(t$6);
               return caml_call2(Stdlib_printf[4],_af7_,_auk_)}
           case 3:
            var _aul_=match[1];
            if(typeof _aul_ === "number")
             {if(_aul_)
               {var
                 tvalue=match[3],
                 tkey=match[2],
                 _aum_=export_type(tvalue),
                 _aun_=export_type(tkey);
                return caml_call3(Stdlib_printf[4],_af8_,_aun_,_aum_)}
              var
               t2=match[3],
               t1=match[2],
               _auo_=export_type(t2),
               _aup_=export_type(t1);
              return caml_call3(Stdlib_printf[4],_af9_,_aup_,_auo_)}
            throw [0,Assert_failure,_af__];
           case 4:
            var isNat=match[1],match$1=get(isNat);
            return match$1?match$1[1]?cst_nat$3:cst_int$6:cst_intOrNat$2;
           case 5:
            var cases=match[2],t$7=match[1],match$2=get(cases);
            if(match$2)
             var
              match$3=match$2[1],
              cases$0=match$3[2],
              final$0=match$3[1],
              cases$1=cases$0,
              final$1=final$0;
            else
             var cases$1=0,final$1=0;
            var
             _auq_=function(param){return cst_bounded_not_handled},
             _aur_=caml_call2(Utils_List[20],_auq_,cases$1),
             _aus_=caml_call2(Utils_String[7],cst$316,_aur_),
             _aut_=final$1?cst_True$8:cst_False$7,
             _auu_=export_type(t$7);
            return caml_call4(Stdlib_printf[4],_af$_,_auu_,_aut_,_aus_);
           case 6:
            var
             row=match[2],
             layout=match[1],
             _auv_=export_layout(layout),
             _auw_=
              function(param)
               {var t=param[2],s=param[1],_auG_=export_type(t);
                return caml_call3(Stdlib_printf[4],_aga_,s,_auG_)},
             _aux_=caml_call2(Utils_List[20],_auw_,row),
             _auy_=caml_call2(Utils_String[7],cst$317,_aux_);
            return caml_call3(Stdlib_printf[4],_agb_,_auy_,_auv_);
           case 7:
            var
             row$0=match[2],
             layout$0=match[1],
             _auz_=export_layout(layout$0),
             _auA_=
              function(param)
               {var t=param[2],s=param[1],_auF_=export_type(t);
                return caml_call3(Stdlib_printf[4],_agc_,s,_auF_)},
             _auB_=caml_call2(Utils_List[20],_auA_,row$0),
             _auC_=caml_call2(Utils_String[7],cst$318,_auB_);
            return caml_call3(Stdlib_printf[4],_agd_,_auC_,_auz_);
           case 8:
            var _auD_=match[1][1];
            switch(_auD_[0])
             {case 0:return cst_unknown$0;
              case 1:
               var row$1=_auD_[1],t$8=record_default_layout(1,row$1),t$0=t$8;
               continue;
              case 2:return caml_call1(Stdlib[2],cst_export_type_TODO_UTuple);
              case 3:
               var row$2=_auD_[1],t$9=variant_default_layout(1,row$2),t$0=t$9;
               continue;
              default:var t$10=_auD_[1],t$0=t$10;continue}
           case 9:
            var
             ts=match[1],
             ts$0=caml_call2(Utils_List[20],export_type,ts),
             _auE_=caml_call2(Utils_String[7],cst$319,ts$0);
            return caml_call2(Stdlib_printf[4],_age_,_auE_);
           case 10:
            var memo$0=match[1],match$4=get(memo$0);
            if(match$4)
             var i=match$4[1],memo$1=caml_call1(Stdlib[33],i);
            else
             var memo$1=cst_unknown$1;
            return caml_call2(Stdlib_printf[4],_agf_,memo$1);
           default:
            var memo$2=match[1],match$5=get(memo$2);
            if(match$5)
             var i$0=match$5[1],memo$3=caml_call1(Stdlib[33],i$0);
            else
             var memo$3=cst_unknown$2;
            return caml_call2(Stdlib_printf[4],_agg_,memo$3)}}}
    var Smartml_Export=[0,export_type];
    caml_register_global(6526,Smartml_Export,"Smartml__Export");
    function json_of_address(address,entry_point)
     {if(entry_point)
       var
        ep=entry_point[1],
        address$0=caml_call3(Stdlib_printf[4],_agh_,address,ep);
      else
       var address$0=address;
      return [2,address$0]}
    function json_of_value(config,v)
     {var Printer$0=get$0(config);
      function json_of_value$0(_auf_){return json_of_value(config,_auf_)}
      function err(param)
       {var
         _aud_=caml_call4(Printer$0[4],0,0,0,v),
         _aue_=caml_call2(Stdlib_printf[4],_agk_,_aud_);
        return caml_call1(Stdlib[2],_aue_)}
      var _at6_=v[1],switch$0=0;
      switch(_at6_[0])
       {case 2:return err(0);
        case 3:
         var
          entries=_at6_[2],
          _at7_=caml_call1(Utils_Control[5],json_of_value$0);
         return [4,caml_call2(Utils_List[20],_at7_,entries)];
        case 4:
         var v$0=_at6_[4],name=_at6_[3];
         return [4,[0,[0,name,json_of_value$0(v$0)],0]];
        case 7:
         var
          entries$0=_at6_[4],
          f=
           function(param)
            {var v=param[2],k=param[1],_aub_=k[1];
             if(0 === _aub_[0])
              {var _auc_=_aub_[1];
               if(typeof _auc_ !== "number" && 2 === _auc_[0])
                {var x=_auc_[1];return [0,x,json_of_value$0(v)]}}
             return err(0)};
         return [4,caml_call2(Utils_List[20],f,entries$0)];
        case 8:var xs=_at6_[1];break;
        case 9:
         if(! _at6_[2])
          {var
            lambda=_at6_[1],
            v$1=closure_init(lambda),
            l$0=compile_value(config,v$1),
            _at8_=[0,[0,cst_code$5,to_json(caml_call1(_Ju_[1],l$0))],0],
            _at9_=mtype_of_type(_agl_,lambda[6][1]),
            _at__=
             [0,[0,cst_returnType,to_json(caml_call2(_Ju_[2],0,_at9_))],_at8_],
            _at$_=mtype_of_type(_agm_,lambda[5][1]);
           return [4,
                   [0,
                    [0,cst_parameter$9,to_json(caml_call2(_Ju_[2],0,_at$_))],
                    _at__]]}
         switch$0 = 1;
         break;
        case 11:
         var
          amount$0=_at6_[3],
          content=_at6_[2],
          ticketer=_at6_[1],
          _aua_=
           [0,
            [0,cst_value$3,json_of_value$0(content)],
            [0,[0,cst_amount$6,[0,amount$0]],0]];
         return [4,[0,[0,cst_address$10,json_of_address(ticketer,0)],_aua_]];
        case 10:switch$0 = 1;break;
        case 0:
        case 1:
         var l=_at6_[1],Printer=get$0(config);
         if(typeof l === "number")
          return _agj_;
         else
          switch(l[0])
           {case 0:var b=l[1];return [1,b];
            case 1:var i=l[1];return [0,i];
            case 2:var x=l[1];return [2,x];
            case 4:
             var s=l[1],_at5_=caml_call1(Utils_Misc[4][1],s);
             return [2,caml_call2(Stdlib[28],cst_0x$9,_at5_)];
            case 5:var s$0=l[1];return [2,caml_call1(Utils_Bigint[38],s$0)];
            case 6:var amount=l[1];return [2,caml_call2(Printer[7],0,amount)];
            case 7:
             var entry_point=l[2],address=l[1];
             return json_of_address(address,entry_point);
            case 9:
            case 13:
            case 14:
             var
              _at2_=caml_call3(Printer[5],0,0,l),
              _at3_=caml_call2(Stdlib_printf[4],_agi_,_at2_);
             return caml_call1(Stdlib[2],_at3_);
            case 8:
            case 10:
            case 11:
            case 12:var s$1=l[1];return [2,s$1];
            default:
             var x$0=l[1],_at4_=caml_call1(Utils_Misc[4][1],x$0);
             return [2,caml_call2(Stdlib[28],cst_0x$8,_at4_)]}
        default:var xs=_at6_[2]}
      return switch$0?err(0):[3,caml_call2(Utils_List[20],json_of_value$0,xs)]}
    function for_contract(config,vc)
     {var views=compile_views(config,vc);
      function json_of_meta_expr(param)
       {switch(param[0])
         {case 0:
           var l=param[1];
           return [3,caml_call2(Utils_List[20],json_of_meta_expr,l)];
          case 1:
           var
            l$0=param[1],
            field=
             function(param)
              {var v=param[2],k=param[1],_at0_=k[1];
               if(0 === _at0_[0])
                {var _at1_=_at0_[1];
                 if(typeof _at1_ !== "number" && 2 === _at1_[0])
                  {var x=_at1_[1];return [0,x,json_of_meta_expr(v)]}}
               throw [0,Assert_failure,_agn_]};
           return [4,caml_call2(Utils_List[20],field,l$0)];
          case 2:var x=param[1];return json_of_value(config,x);
          default:
           var
            name=param[1],
            msg=caml_call2(Stdlib[28],cst_view_not_found,name),
            _atP_=caml_call3(Utils_List[82],0,name,views),
            match=caml_call2(Utils_Option[48],[0,msg],_atP_),
            doc=match[5],
            pure=match[4],
            body=match[3],
            tresult=match[2],
            tparameter=match[1],
            _atT_=[0,[0,cst_code$6,to_json([4,caml_call1(_Ju_[3],body)])],0],
            _atU_=strip_annot_variable(tresult),
            _atQ_=0,
            _atR_=0,
            _atS_=0,
            _atV_=
             [0,
              [0,cst_returnType$0,to_json(caml_call2(_Ju_[2],0,_atU_))],
              _atT_];
           if(tparameter)
            var
             tparameter$0=tparameter[1],
             _atW_=
              [0,
               [0,
                cst_parameter$10,
                to_json(caml_call2(_Ju_[2],0,tparameter$0))],
               0];
           else
            var _atW_=0;
           var
            _atX_=
             [0,
              [0,
               cst_implementations,
               [3,
                [0,
                 [4,
                  [0,
                   [0,
                    cst_michelsonStorageView,
                    [4,caml_call2(Stdlib[37],_atW_,_atV_)]],
                   _atS_]],
                 _atR_]]],
              _atQ_],
            _atY_=
             caml_string_notequal(doc,cst$320)
              ?[0,[0,cst_description,[2,doc]],0]
              :0,
            _atZ_=caml_call2(Stdlib[37],_atY_,_atX_);
           return [4,
                   caml_call2
                    (Stdlib[37],
                     [0,[0,cst_name$4,[2,name]],[0,[0,cst_pure$0,[1,pure]],0]],
                     _atZ_)]}}
      var _atN_=vc[2][5],_atO_=caml_call1(Utils_Control[5],json_of_meta_expr);
      return caml_call2(Utils_List[20],_atO_,_atN_)}
    var Smartml_Metadata=[0,for_contract];
    caml_register_global(6527,Smartml_Metadata,"Smartml__Metadata");
    function pp_render(ppf,param)
     {if(0 === param[0])
       {var x=param[1];return caml_call2(Stdlib_format[13],ppf,x)}
      var xs=param[2],args=param[1];
      caml_call3(Stdlib_format[123],ppf,_ago_,args);
      function _atL_(_atM_){return pp_render(ppf,_atM_)}
      caml_call2(Utils_List[18],_atL_,xs);
      return caml_call2(Stdlib_format[13],ppf,cst_div)}
    function render(x)
     {return caml_call3(Stdlib_format[127],_agp_,pp_render,x)}
    function div$1(opt,xs)
     {if(opt)var sth=opt[1],args=sth;else var args=cst$321;return [1,args,xs]}
    var tab_functions=caml_call2(Stdlib_hashtbl[1],0,100);
    function call_tab(id,global_id)
     {var match=caml_call2(Stdlib_hashtbl[7],tab_functions,[0,id,global_id]);
      if(match)
       {var f=match[1],_atK_=caml_obj_tag(f);
        return 250 === _atK_
                ?f[1]
                :246 === _atK_?caml_call1(CamlinternalLazy[2],f):f}
      return _agq_}
    function tab(active,lazy_tab,name,inner,global_id,id)
     {if(lazy_tab)
       {var lazy_tab$0=lazy_tab[1];
        caml_call3
         (Stdlib_hashtbl[11],tab_functions,[0,id,global_id],lazy_tab$0)}
      else
       caml_call2(Stdlib_hashtbl[10],tab_functions,[0,id,global_id]);
      var
       call_f=
        0 <= global_id
         ?caml_call3(Stdlib_printf[4],_agr_,id,global_id)
         :caml_call2(Stdlib_printf[4],_agu_,id),
       _atH_=0 === active?cst$322:cst_active,
       tablink=caml_call4(Stdlib_printf[4],_ags_,_atH_,call_f,name),
       _atI_=[0,inner,0],
       _atJ_=0 === active?cst_none$1:cst_block,
       content=div$1([0,caml_call2(Stdlib_printf[4],_agt_,_atJ_)],_atI_);
      return [0,name,tablink,content,lazy_tab]}
    function tabs(opt,title,tabs)
     {if(opt)var sth=opt[1],global_id=sth;else var global_id=-1;
      function _atA_(i,x){return caml_call2(x,global_id,i)}
      var tabs$0=caml_call2(Utils_List[21],_atA_,tabs);
      function _atB_(x){return render(x[3])}
      var
       _atC_=caml_call2(Utils_List[20],_atB_,tabs$0),
       _atD_=caml_call2(Utils_String[7],cst$323,_atC_);
      function _atE_(x){return x[2]}
      var
       _atF_=caml_call2(Utils_List[20],_atE_,tabs$0),
       _atG_=caml_call2(Utils_String[7],cst$324,_atF_);
      return [0,caml_call4(Stdlib_printf[4],_agv_,title,_atG_,_atD_)]}
    function copy_div(id,opt,name,inner)
     {if(opt)
       var sth=opt[1],className=sth;
      else
       var className=cst_white_space_pre;
      var
       r=
        caml_call6(Stdlib_format[127],_agw_,name,id,className,pp_render,inner);
      return [0,caml_call3(Base_String[69],r,cst$325,cst_br$5)]}
    function contract_sizes_html
     (codeSize,simplifiedCodeSize,storageSize,nb_bigmaps)
     {function pp(name,size)
       {var
         percentage=
          caml_call2(Stdlib_printf[4],_agx_,(size * 100 | 0) / 16384 | 0);
        return caml_call4(Stdlib_printf[4],_agy_,name,percentage,size)}
      var bigmapSize=nb_bigmaps * 32 | 0;
      if(simplifiedCodeSize)
       {var _aty_=simplifiedCodeSize[1];
        if(storageSize)
         var
          s2=storageSize[1],
          simplifiedCombined$1=
           pp(cst_Simplified_Combined,(_aty_ + s2 | 0) + bigmapSize | 0),
          simplifiedCombined$2=simplifiedCombined$1,
          simplifiedCode$0=pp(cst_Simplified_Code,_aty_),
          sep$0=cst_tr_td_hr_td_td_td_td_td_tr;
        else
         var
          simplifiedCombined$2=simplifiedCombined,
          simplifiedCode$0=pp(cst_Simplified_Code$0,_aty_),
          sep$0=cst_tr_td_hr_td_td_td_tr}
      else
       var
        simplifiedCombined$2=simplifiedCombined$0,
        simplifiedCode$0=simplifiedCode,
        sep$0=sep;
      if(codeSize)
       var size=codeSize[1],code=pp(cst_Code,size);
      else
       var code=cst$328;
      if(storageSize)
       var size$0=storageSize[1],storage=pp(cst_Storage$0,size$0);
      else
       var storage=cst$327;
      var switch$0=0;
      if(codeSize && storageSize)
       {var
         s2$0=storageSize[1],
         s1=codeSize[1],
         combined=pp(cst_Combined,(s1 + s2$0 | 0) + bigmapSize | 0);
        switch$0 = 1}
      if(! switch$0)var combined=cst$326;
      if(0 < nb_bigmaps)
       var
        _atz_=pp(caml_call2(Stdlib_printf[4],_agz_,nb_bigmaps),bigmapSize),
        html=
         caml_call9
          (Stdlib_printf[4],
           _agA_,
           storage,
           _atz_,
           sep$0,
           code,
           combined,
           sep$0,
           simplifiedCode$0,
           simplifiedCombined$2);
      else
       var
        html=
         caml_call4(Stdlib_printf[4],_agB_,storage,code,simplifiedCode$0);
      return [0,html]}
    function michelson_html(title,lazy_tabs,id,simplified_contract,contract)
     {function _ar1_(storage)
       {var
         _atq_=caml_call1(erase_types_literal,storage),
         _atr_=caml_call1(_Ju_[1],_atq_),
         _ats_=0,
         _att_=0,
         _atu_=0;
        function _atv_(_atw_,_atx_)
         {return pp_as_json(_atu_,_att_,_ats_,_atw_,_atx_)}
        return caml_call3(Stdlib_format[127],_agC_,_atv_,_atr_)}
      var
       storageJson=caml_call2(Base_Option[29],contract[5],_ar1_),
       codeMicheline=to_micheline_tcontract(contract),
       codeSize=micheline_size_opt(codeMicheline);
      function _ar2_(storage)
       {var _atp_=caml_call1(erase_types_literal,storage);
        return caml_call1(_Ju_[1],_atp_)}
      var storageMicheline=caml_call2(Base_Option[29],contract[5],_ar2_);
      if(storageMicheline)
       var m=storageMicheline[1],storageSize=micheline_size_opt(m);
      else
       var storageSize=0;
      var _ar3_=0,_ar4_=0,_ar5_=0;
      function _ar6_(_atn_,_ato_)
       {return pp_as_json(_ar5_,_ar4_,_ar3_,_atn_,_ato_)}
      var
       codeJson=caml_call3(Stdlib_format[127],_agD_,_ar6_,codeMicheline),
       initialStorageHtml=
        copy_div
         (id,
          _agE_,
          cst_storageCode,
          [0,
           caml_call3
            (Base_Option[37],
             contract[5],
             cst_missing_storage$0,
             string_of_tliteral)]),
       codeHtml=
        [246,
         function(_atm_)
          {return div$1
                   (0,
                    [0,
                     _agF_,
                     [0,
                      div$1
                       (0,
                        [0,
                         copy_div
                          (id,0,cst_contractCode,[0,render_tcontract(contract)]),
                         0]),
                      0]])}],
       _ar7_=caml_call2(Utils_Option[2],storageJson,cst_missing_storage$1),
       initialStorageHtmlJson=
        copy_div
         (id,
          0,
          cst_storageCodeJson,
          [0,caml_call2(Stdlib_format[127],_agG_,_ar7_)]);
      try
       {var _as1_=caml_call2(Stdlib_format[127],_agV_,codeJson),_ar__=_as1_}
      catch(e)
       {e = caml_wrap_exception(e);
        var
         _ar8_=caml_call1(Stdlib_printexc[6],0),
         _ar9_=caml_call1(Stdlib_printexc[1],e),
         _ar__=caml_call3(Stdlib_format[127],_agH_,_ar9_,_ar8_)}
      var
       codeHtmlJson=copy_div(id,0,cst_contractCodeJson,[0,_ar__]),
       switch$0=0;
      if(simplified_contract)
       {var simplified=simplified_contract[1];
        if(! caml_call2(equal_tinstr,contract[3],simplified[3]))
         {var simplified$0=[0,simplified];switch$0 = 1}}
      if(! switch$0)var simplified$0=0;
      if(simplified$0)
       var
        m$0=simplified$0[1],
        simplifiedCodeSize=micheline_size_opt(to_micheline_tcontract(m$0));
      else
       var simplifiedCodeSize=0;
      if(simplified$0)
       var
        simplified$1=simplified$0[1],
        simplifiedCodeHtml=
         [0,
          [246,
           function(_atl_)
            {return div$1
                     (0,
                      [0,
                       _agI_,
                       [0,
                        div$1
                         (0,
                          [0,
                           copy_div
                            (id,
                             0,
                             cst_simplifiedContractCode,
                             [0,render_tcontract(simplified$1)]),
                           0]),
                        0]])}]];
      else
       var simplifiedCodeHtml=0;
      if(simplified$0)
       {var simplified$2=simplified$0[1];
        try
         {var
           _asV_=to_micheline_tcontract(simplified$2),
           _asW_=0,
           _asX_=0,
           _asY_=0,
           _asZ_=
            function(_atj_,_atk_)
             {return pp_as_json(_asY_,_asX_,_asW_,_atj_,_atk_)},
           simplified$3=caml_call3(Stdlib_format[127],_agT_,_asZ_,_asV_),
           _as0_=
            [0,
             copy_div
              (id,
               0,
               cst_simplifiedContractCodeJson,
               [0,caml_call2(Stdlib_printf[4],_agU_,simplified$3)])],
           _asb_=_as0_}
        catch(e)
         {e = caml_wrap_exception(e);
          var
           _ar$_=caml_call1(Stdlib_printexc[6],0),
           _asa_=caml_call1(Stdlib_printexc[1],e),
           _asb_=[0,[0,caml_call3(Stdlib_format[127],_agJ_,_asa_,_ar$_)]]}
        var simplifiedCodeHtmlJson=_asb_}
      else
       var simplifiedCodeHtmlJson=0;
      var _asc_=contract[5];
      if(_asc_)
       var storage=_asc_[1],nb_bigmaps=caml_call1(count_bigmaps,storage);
      else
       var nb_bigmaps=0;
      var
       sizes=
        [246,
         function(_ati_)
          {return contract_sizes_html
                   (codeSize,simplifiedCodeSize,storageSize,nb_bigmaps)}];
      if(simplifiedCodeHtmlJson)
       var
        simplifiedCodeHtmlJson$0=simplifiedCodeHtmlJson[1],
        _asd_=0,
        _ase_=div$1(0,[0,_agK_,[0,div$1(0,[0,simplifiedCodeHtmlJson$0,0]),0]]),
        _asf_=0,
        _asg_=0,
        _ash_=
         [0,
          function(_atg_,_ath_)
           {return tab(_asg_,_asf_,cst_Simplified_Code_JSON,_ase_,_atg_,_ath_)},
          _asd_];
      else
       var _ash_=0;
      var
       _asi_=0,
       _asj_=div$1(0,[0,_agL_,[0,div$1(0,[0,codeHtmlJson,0]),0]]),
       _ask_=0,
       _asl_=0,
       _asm_=
        [0,
         function(_ate_,_atf_)
          {return tab(_asl_,_ask_,cst_Code_JSON,_asj_,_ate_,_atf_)},
         _asi_],
       _asn_=div$1(0,[0,_agM_,[0,div$1(0,[0,initialStorageHtmlJson,0]),0]]),
       _aso_=0,
       _asp_=0,
       _asq_=
        [0,
         function(_atc_,_atd_)
          {return tab(_asp_,_aso_,cst_Storage_JSON,_asn_,_atc_,_atd_)},
         _asm_],
       _asr_=caml_call2(Stdlib[37],_asq_,_ash_);
      if(simplifiedCodeHtml)
       {var simplifiedCodeHtml$0=simplifiedCodeHtml[1],_ass_=0;
        if(lazy_tabs)
         var
          _ast_=[0,simplifiedCodeHtml$0],
          _asu_=0,
          _asv_=
           function(_as__,_as$_)
            {return tab(_asu_,_ast_,cst_Simplified_Code$1,_agN_,_as__,_as$_)};
        else
         var
          _asR_=caml_obj_tag(simplifiedCodeHtml$0),
          _asS_=
           250 === _asR_
            ?simplifiedCodeHtml$0[1]
            :246 === _asR_
              ?caml_call1(CamlinternalLazy[2],simplifiedCodeHtml$0)
              :simplifiedCodeHtml$0,
          _asT_=0,
          _asU_=0,
          _asv_=
           function(_ata_,_atb_)
            {return tab(_asU_,_asT_,cst_Simplified_Code$2,_asS_,_ata_,_atb_)};
        var _asw_=[0,_asv_,_ass_]}
      else
       var _asw_=0;
      var _asx_=caml_call2(Stdlib[37],_asw_,_asr_),_asy_=0;
      if(lazy_tabs)
       var
        _asz_=[0,codeHtml],
        _asA_=0,
        _asB_=
         function(_as6_,_as7_)
          {return tab(_asA_,_asz_,cst_Code$0,_agO_,_as6_,_as7_)};
      else
       var
        _asN_=caml_obj_tag(codeHtml),
        _asO_=
         250 === _asN_
          ?codeHtml[1]
          :246 === _asN_?caml_call1(CamlinternalLazy[2],codeHtml):codeHtml,
        _asP_=0,
        _asQ_=0,
        _asB_=
         function(_as8_,_as9_)
          {return tab(_asQ_,_asP_,cst_Code$1,_asO_,_as8_,_as9_)};
      var
       _asC_=[0,_asB_,_asy_],
       _asD_=div$1(0,[0,_agP_,[0,div$1(0,[0,initialStorageHtml,0]),0]]),
       _asE_=0,
       _asF_=0,
       _asG_=
        [0,
         function(_as4_,_as5_)
          {return tab(_asF_,_asE_,cst_Storage$1,_asD_,_as4_,_as5_)},
         _asC_],
       _asI_=caml_obj_tag(sizes),
       _asH_=0,
       _asJ_=
        250 === _asI_
         ?sizes[1]
         :246 === _asI_?caml_call1(CamlinternalLazy[2],sizes):sizes,
       _asK_=
        div$1(0,[0,_agQ_,[0,copy_div(id,0,cst_contractSizes,_asJ_),_asH_]]),
       _asL_=0,
       _asM_=
        [0,
         function(_as2_,_as3_)
          {return tab(_agR_,_asL_,cst_Sizes,_asK_,_as2_,_as3_)},
         _asG_],
       tabs$0=tabs(_agS_,title,caml_call2(Stdlib[37],_asM_,_asx_));
      return tabs$0}
    function showLine(line_no)
     {if(line_no)
       {var match=line_no[1],line_no$0=match[2];
        return [0,caml_call3(Stdlib_printf[4],_agX_,line_no$0,line_no$0)]}
      return _agY_}
    function full_html
     (config,
      contract,
      compiled_contract,
      def,
      onlyDefault,
      id,
      line_no,
      accept_missings,
      contract_id)
     {var
       tabs$0=michelson_html(cst_Generated_Michelson,0,id,0,compiled_contract),
       _aru_=render(tabs$0),
       michelson=
        caml_call11(Stdlib_printf[4],_agW_,id,id,id,id,id,id,id,id,id,_aru_),
       has_error=has_error_tcontract(accept_missings,compiled_contract),
       metadata=for_contract(config,contract);
      if(metadata)
       var
        metatab=
         function(i,param)
          {var
            metadata=param[2],
            name=param[1],
            _arV_=caml_call3(Utils_Misc[19],0,0,0),
            json=caml_call3(Stdlib_format[127],_agZ_,_arV_,metadata),
            _arW_=[0,caml_call2(Stdlib_format[127],_ag0_,json)],
            pp=copy_div(id,0,caml_call2(Stdlib[28],cst_meta,name),_arW_),
            _arX_=0,
            _arY_=0 === i?_ag1_:0;
           return function(_arZ_,_ar0_)
            {return tab(_arY_,_arX_,name,pp,_arZ_,_ar0_)}},
        tabs$1=
         [1,
          cst_metadata$1,
          [0,
           tabs(0,cst_Metadata,caml_call2(Utils_List[21],metatab,metadata)),
           0]],
        _arv_=0,
        _arw_=0,
        _arx_=0,
        metadata$0=
         [0,
          function(_arT_,_arU_)
           {return tab(_arx_,_arw_,cst_Metadata$0,tabs$1,_arT_,_arU_)},
          _arv_];
      else
       var metadata$0=0;
      function tab$0(title,content)
       {var _arP_=0,_arQ_=caml_string_equal(def,title)?_ag2_:0;
        return function(_arR_,_arS_)
         {return tab(_arQ_,_arP_,title,content,_arR_,_arS_)}}
      function language_tab(language)
       {var
         Printer=get_by_language(language),
         title=show_language(language),
         _arI_=render(showLine(line_no)),
         _arJ_=caml_call3(Printer[19],contract_id,[0,Printer[1][2]],contract),
         _arH_=0,
         _arK_=caml_call2(Stdlib[28],_arJ_,_arI_),
         _arL_=has_error?cst_span_class_partialType_War:cst$330,
         _arM_=caml_call2(Stdlib[28],_arL_,_arK_),
         _arN_=contract[1][1][8];
        if(_arN_)
         var msg=_arN_[1],_arO_=caml_call2(Stdlib_printf[4],_ag3_,msg);
        else
         var _arO_=cst$329;
        return [0,tab$0(title,[0,caml_call2(Stdlib[28],_arO_,_arM_)]),_arH_]}
      var
       _ary_=caml_call2(Utils_List[20],language_tab,config[17]),
       languages=caml_call1(Utils_List[16],_ary_),
       SmartPy_Printer=get_by_language(0),
       _arz_=[0,tab$0(cst_times,_ag4_),0],
       _arA_=caml_call2(Stdlib[37],metadata$0,_arz_),
       _arB_=[0,tab$0(cst_Deploy_Michelson_Contract,[0,michelson]),0],
       _arC_=
        caml_call5
         (SmartPy_Printer[2],
          0,
          _ag5_,
          0,
          [0,SmartPy_Printer[1][4]],
          contract[1][1][13][1][1]),
       _arD_=
        caml_call5
         (SmartPy_Printer[2],
          0,
          _ag6_,
          0,
          [0,SmartPy_Printer[1][4]],
          contract[1][1][13][1][5]),
       _arE_=
        [0,
         tab$0(cst_Types,[0,caml_call3(Stdlib_printf[4],_ag7_,_arD_,_arC_)]),
         _arB_],
       _arF_=caml_call2(Stdlib[37],_arE_,_arA_),
       myTabs=caml_call2(Stdlib[37],languages,_arF_);
      if(onlyDefault)
       {var
         _arG_=
          function(i,tab)
           {var tab$0=caml_call2(tab,-1,i);
            return caml_string_equal(tab$0[1],def)
                    ?div$1(_ag8_,[0,tab$0[3],0])
                    :_ag9_};
        return div$1(_ag__,caml_call2(Utils_List[21],_arG_,myTabs))}
      return tabs(0,myName,myTabs)}
    var
     nextInputGuiId=nextId(cst_inputGui),
     nextOutputGuiId=nextId(cst_outputGui),
     nextLazyOutputGuiId=nextId(cst_lazyOutputGui),
     _ag$_=
      [0,
       [0,cst_level$3,string$0],
       [0,[0,cst_voting_powers$1,map$0(0,key_hash$0,int$1(0))],0]],
     t1=
      record_default_layout
       (1,
        [0,
         [0,cst_sender$2,string$0],
         [0,
          [0,cst_source$3,string$0],
          [0,
           [0,cst_timestamp$5,string$0],
           [0,
            [0,
             cst_amount$7,
             variant_default_layout
              (1,[0,[0,cst_Tez$1,string$0],[0,[0,cst_Mutez$1,string$0],0]])],
            _ag$_]]]]),
     t2=
      record_default_layout
       (1,[0,[0,cst_debug$0,bool$0],[0,[0,cst_full_output,bool$0],0]]),
     contextSimulationType=
      record_default_layout
       (1,[0,[0,cst_context,t1],[0,[0,cst_simulation$0,t2],0]]);
    function delayedInputGui(t)
     {var
       output=caml_call1(nextLazyOutputGuiId,0),
       _ars_=caml_call1(nextInputGuiId,0),
       id=caml_call2(Stdlib[28],_ars_,cst$332),
       _art_=export_type(t);
      return [0,
              caml_call6
               (Stdlib_printf[4],
                _ahg_,
                id,
                output,
                _art_,
                cst_Add_Another_Step,
                output)]}
    var simulatedContracts=caml_call2(Stdlib_hashtbl[1],0,100);
    function simulation(c,id$0,line_no)
     {caml_call3(Stdlib_hashtbl[11],simulatedContracts,id$0,c);
      var
       c$0=c[1][1],
       _arr_=c$0[13][1][1],
       _arq_=c$0[13][1][5],
       output=caml_call1(nextOutputGuiId,0),
       _ark_=caml_call1(nextInputGuiId,0),
       id=caml_call2(Stdlib[28],_ark_,cst$331),
       nextId$0=nextId(id),
       input=inputGuiR(0,nextId$0,_arr_),
       tstorage=option(_arq_),
       input_storage=inputGuiR(0,nextId$0,tstorage),
       contextInput=inputGuiR(0,nextId$0,contextSimulationType),
       _arl_=head_line_no(line_no),
       _arm_=export_type(tstorage),
       _arn_=export_type(_arr_),
       _aro_=
        [0,
         [0,
          caml_call9
           (Stdlib_printf[4],
            _aha_,
            _arn_,
            _arm_,
            id,
            id$0,
            output,
            _arl_,
            buttonText,
            output)],
         0],
       _arp_=
        [0,
         _ahd_,
         [0,
          [0,contextInput[1]],
          [0,_ahc_,[0,[0,input_storage[1]],[0,_ahb_,[0,[0,input[1]],_aro_]]]]]];
      return div$1(_ahf_,[0,[0,caml_call1(Stdlib_printf[4],_ahe_)],_arp_])}
    var
     Smartml_Html=
      [0,
       pp_render,
       render,
       contract_sizes_html,
       michelson_html,
       full_html,
       call_tab,
       tab,
       tabs,
       showLine,
       nextInputGuiId,
       nextOutputGuiId,
       contextSimulationType,
       delayedInputGui,
       simulatedContracts,
       simulation,
       div$1,
       copy_div];
    caml_register_global(6528,Smartml_Html,"Smartml__Html");
    var
     pp$8=function _arj_(_ari_){return _arj_.fun(_ari_)},
     show$8=function _arh_(_arg_){return _arh_.fun(_arg_)};
    caml_update_dummy(pp$8,function(fmt){return caml_call1(pp_instance,fmt)});
    caml_update_dummy
     (show$8,function(x){return caml_call3(Stdlib_format[127],_ahh_,pp$8,x)});
    function execMessageInner
     (config,
      primitives,
      scenario_state,
      title,
      execMessageClass,
      context,
      initContract,
      channel,
      params)
     {var
       match=
        interpret_message
         (config,
          primitives,
          scenario_state,
          context,
          initContract,
          [0,channel,params]),
       steps=match[4],
       error=match[3],
       operations=match[2],
       contract=match[1],
       Printer=get$0(config),
       state=initContract[2],
       match$0=initContract[1],
       initContract$0=match$0[1];
      if(contract)
       var
        contract$0=contract[1],
        contract$1=[0,contract$0],
        balance=contract$0[2][1];
      else
       var contract$1=0,balance=state[1];
      function pp_step(step)
       {var _aq2_=step[7][1];
        if(_aq2_)
         var
          _aq3_=caml_call2(Utils_List[22],pp_step,_aq2_),
          _aq4_=caml_call2(Utils_String[7],cst$333,_aq3_),
          steps=caml_call2(Stdlib_printf[4],_ahi_,_aq4_);
        else
         var steps=cst$337;
        var _aq5_=step[3];
        if(_aq5_)
         var
          _aq6_=record_comb(_aq5_),
          _aq7_=caml_call4(Printer[4],0,0,[0,Printer[1][2]],_aq6_),
          locals=caml_call2(Stdlib_printf[4],_ahj_,_aq7_);
        else
         var locals=cst$336;
        var _aq8_=step[8];
        if(_aq8_)
         var
          _aq9_=record_comb(_aq8_),
          _aq__=caml_call4(Printer[4],0,0,[0,Printer[1][2]],_aq9_),
          elements=caml_call2(Stdlib_printf[4],_ahk_,_aq__);
        else
         var elements=cst$335;
        var _aq$_=step[2];
        if(_aq$_)
         var
          _ara_=
           function(param)
            {var match=param[2],v=match[1],n=param[1];return [0,n,v]},
          _arb_=record_comb(caml_call2(Utils_List[20],_ara_,_aq$_)),
          _arc_=caml_call4(Printer[4],0,0,[0,Printer[1][2]],_arb_),
          iters=caml_call2(Stdlib_printf[4],_ahl_,_arc_);
        else
         var iters=cst$334;
        var
         _ard_=caml_call4(Printer[4],0,0,[0,Printer[1][2]],step[4]),
         _are_=caml_call3(Printer[18],0,0,step[1]),
         _arf_=showLine(step[1][3]);
        return caml_call9
                (Stdlib_format[127],
                 _ahm_,
                 pp_render,
                 _arf_,
                 _are_,
                 steps,
                 locals,
                 iters,
                 elements,
                 _ard_)}
      function html(ok,output)
       {var line_no=context_line_no(context);
        if(line_no)var x=line_no[1],hd_line_no=x;else var hd_line_no=_ahv_;
        var _ap$_=hd_line_no[2],_aqa_=hd_line_no[2];
        if(context_debug(context))
         var
          _aqb_=caml_call2(Utils_List[22],pp_step,steps),
          _aqc_=caml_call2(Utils_String[7],cst$338,_aqb_),
          _aqd_=caml_call2(Stdlib_printf[4],_ahn_,_aqc_);
        else
         var _aqd_=cst$341;
        var
         _aqe_=caml_call2(Printer[7],1,balance),
         row=[0,[0,channel,type_of_value(params)],0],
         _aqf_=
          variant_with_type
           (0,line_no,channel,params,variant_default_layout(1,row)),
         _aqg_=caml_call4(Printer[4],0,0,[0,Printer[1][2]],_aqf_),
         _aqh_=context_contract_id(context);
        function _aqi_(s){return caml_call3(Printer[28],1,s,0)}
        var
         _aqj_=caml_call3(Utils_Option[12],cst$339,_aqi_,_aqh_),
         _aqk_=context_time(context),
         _aql_=caml_call1(Big_int[33],_aqk_),
         match=context_sender(context);
        if(match)
         var
          x$0=match[1],
          _aqm_=literal$1([7,x$0,0]),
          _aqn_=caml_call4(Printer[4],0,0,[0,Printer[1][2]],_aqm_);
        else
         var _aqn_=cst$340;
        var
         transaction=
          caml_call14
           (Stdlib_printf[4],
            _aho_,
            ok,
            execMessageClass,
            title,
            ok,
            _aqn_,
            _aql_,
            _aqj_,
            _aqg_,
            _aqe_,
            output,
            _aqd_,
            _aqa_,
            _ap$_),
         _aqo_=initContract$0[6];
        function _aqp_(x){return caml_string_equal(x[1],channel)}
        var match$0=caml_call2(Utils_List[38],_aqp_,_aqo_);
        if(match$0)
         {var match$1=match$0[1],line_no$0=match$1[6],originate=match$1[3];
          if(originate)
           {var _aqq_=initContract$0[6],switch$0=0;
            if(_aqq_ && ! _aqq_[2]){var _aqt_=params;switch$0 = 1}
            if(! switch$0)
             var
              _aqr_=initContract$0[13][1][1],
              _aqs_=context_line_no(context),
              _aqt_=
               variant_with_type
                (0,
                 caml_call2(Stdlib[37],line_no$0,_aqs_),
                 channel,
                 params,
                 _aqr_);
            var params$0=_aqt_}
          else
           var params$0=params;
          var
           params$1=compile_value(config,params$0),
           mich=
            render
             (copy_div
               (cst_transaction_params,
                _ahp_,
                cst_paramsCode,
                [0,string_of_literal(params$1)])),
           _aqu_=caml_call1(_Ju_[1],params$1),
           _aqv_=0,
           _aqw_=0,
           _aqx_=0,
           _aqy_=
            function(_aq0_,_aq1_)
             {return pp_as_json(_aqx_,_aqw_,_aqv_,_aq0_,_aq1_)},
           json=
            render
             (copy_div
               (cst_transaction_params_json,
                0,
                cst_paramsCodeJson,
                [0,caml_call3(Stdlib_format[127],_ahq_,_aqy_,_aqu_)])),
           _aqz_=0,
           _aqA_=[0,json],
           _aqB_=0,
           _aqC_=0,
           _aqD_=
            [0,
             function(_aqY_,_aqZ_)
              {return tab(_aqC_,_aqB_,cst_Parameter_JSON,_aqA_,_aqY_,_aqZ_)},
             _aqz_],
           _aqE_=[0,mich],
           _aqF_=0,
           myTabs=
            [0,
             function(_aqW_,_aqX_)
              {return tab
                       (_ahr_,_aqF_,cst_Parameter_Michelson,_aqE_,_aqW_,_aqX_)},
             _aqD_],
           result=render(tabs(0,cst_Generated_Michelson$0,myTabs)),
           result$0=originate?result:caml_call2(Stdlib_printf[4],_ahu_,result),
           michelson=result$0}
        else
         var michelson=cst_Missing_entry_point$0;
        var
         _aqG_=0,
         _aqH_=0,
         _aqI_=0,
         _aqJ_=
          [0,
           function(_aqU_,_aqV_)
            {return tab(_aqI_,_aqH_,cst_X,_ahs_,_aqU_,_aqV_)},
           _aqG_],
         _aqK_=[0,michelson],
         _aqL_=0,
         _aqM_=0,
         _aqN_=
          [0,
           function(_aqS_,_aqT_)
            {return tab(_aqM_,_aqL_,cst_Michelson,_aqK_,_aqS_,_aqT_)},
           _aqJ_],
         _aqO_=[0,transaction],
         _aqP_=0,
         myTabs$0=
          [0,
           function(_aqQ_,_aqR_)
            {return tab(_aht_,_aqP_,cst_Summary,_aqO_,_aqQ_,_aqR_)},
           _aqN_];
        return render(tabs(0,cst_Transaction,myTabs$0))}
      if(contract$1)
       {var match$1=contract$1[1][2],storage=match$1[2];
        if(storage)
         var storage$0=storage[1],storage$1=storage$0;
        else
         var storage$1=caml_call1(Stdlib[2],cst_Cannot_simulate_contract_w);
        var
         _ap8_=caml_call1(Printer[22],[0,Printer[1][2]]),
         operations$0=caml_call2(Utils_List[20],_ap8_,operations),
         _ap9_=caml_call2(Printer[3],Printer[1][2],storage$1),
         _ap__=caml_call2(Utils_String[7],cst$342,operations$0),
         output=caml_call3(Stdlib_printf[4],_ahw_,_ap__,_ap9_);
        return [0,
                1,
                contract$1,
                operations,
                error,
                html(cst_OK,output),
                storage$1,
                steps]}
      if(error)
       var
        error$0=error[1],
        errorMessage=caml_call2(Printer[24],[0,Printer[1][3]],error$0);
      else
       var errorMessage=cst$343;
      var output$0=caml_call2(Stdlib_printf[4],_ahx_,errorMessage);
      return [0,
              0,
              contract$1,
              operations,
              error,
              html(cst_KO,output$0),
              unit$3,
              steps]}
    var Smartml_Contract=[0,pp$8,show$8,execMessageInner];
    caml_register_global(6529,Smartml_Contract,"Smartml__Contract");
    var line_no$0=0;
    function equal_step(lhs,match)
     {if(0 === lhs[0])
       {var _ap6_=lhs[1];
        if(0 === match[0]){var rhs0=match[1];return _ap6_ === rhs0?1:0}}
      else
       {var _ap7_=lhs[1];
        if(0 !== match[0])
         {var rhs0$0=match[1];return caml_string_equal(_ap7_,rhs0$0)}}
      return 0}
    function path_of_lexpr(config,e)
     {var e$0=e;
      for(;;)
       {var Printer=get$0(config),_ap1_=e$0[1];
        switch(_ap1_[0])
         {case 5:
           var _ap4_=_ap1_[1];
           if(typeof _ap4_ !== "number")
            switch(_ap4_[0]){case 3:case 7:var x=_ap4_[1];return [0,x,0]}
           break;
          case 6:
           var _ap5_=_ap1_[1];
           if(typeof _ap5_ !== "number")
            switch(_ap5_[0])
             {case 0:
               var
                e$1=_ap1_[2],
                i=_ap5_[1],
                match=path_of_lexpr(config,e$1),
                steps=match[2],
                root=match[1];
               return [0,root,caml_call2(Stdlib[37],steps,[0,[0,i],0])];
              case 7:
               var
                e$2=_ap1_[2],
                a=_ap5_[1],
                match$0=path_of_lexpr(config,e$2),
                steps$0=match$0[2],
                root$0=match$0[1];
               return [0,root$0,caml_call2(Stdlib[37],steps$0,[0,[1,a],0])]
              }
           break;
          case 10:var e$3=_ap1_[1],e$0=e$3;continue
          }
        var
         _ap2_=caml_call3(Printer[13],0,0,e$0),
         _ap3_=caml_call2(Stdlib[28],cst_path_of_lexpr,_ap2_);
        return caml_call1(Stdlib[2],_ap3_)}}
    var
     W=caml_call1(Utils_Control[18],[0]),
     open$0=
      _yx_
       ([0,
         W[1],
         W[2],
         W[3],
         W[4],
         W[5],
         W[6],
         W[7],
         W[8],
         W[9],
         W[10],
         W[11],
         W[12],
         W[13],
         W[14],
         W[15],
         W[16],
         W[17],
         W[18],
         W[19],
         W[20],
         W[21],
         W[22],
         W[23],
         W[24],
         W[25],
         W[26],
         W[27],
         W[28],
         W[29],
         W[30],
         W[31]]),
     cataM_expr=open$0[4],
     sequence_expr_f=open$0[3];
    function extend(step,param)
     {var steps=param[2],root=param[1];
      return [0,root,caml_call2(Stdlib[37],steps,[0,step,0])]}
    var
     _ahy_=W[32],
     _ahz_=caml_call1(W[2],0),
     close=caml_call2(Utils_Option[12],_ahz_,_ahy_);
    function fm_expr(line_no,e)
     {switch(e[0])
       {case 5:
         var _apR_=e[1];
         if(typeof _apR_ !== "number")
          switch(_apR_[0])
           {case 3:case 7:var x=_apR_[1];return caml_call1(W[2],[0,[0,x,0]])}
         break;
        case 6:
         var _apS_=e[1];
         if(typeof _apS_ !== "number")
          switch(_apS_[0])
           {case 0:
             var
              e$0=e[2],
              i=_apS_[1],
              _apT_=[0,i],
              _apU_=function(_ap0_){return extend(_apT_,_ap0_)},
              _apV_=caml_call2(Utils_Option[17],_apU_,e$0);
             return caml_call1(W[2],_apV_);
            case 7:
             var
              e$1=e[2],
              a=_apS_[1],
              _apW_=[1,a],
              _apX_=function(_apZ_){return extend(_apW_,_apZ_)},
              _apY_=caml_call2(Utils_Option[17],_apX_,e$1);
             return caml_call1(W[2],_apY_)
            }
         break
        }
      function _apP_(param){return caml_call1(W[2],0)}
      var
       _apQ_=
        caml_call1
         (sequence_expr_f,
          map_expr_f(close,close,Utils_Control[1],elim_untyped,e));
      return caml_call2(W[24],_apQ_,_apP_)}
    function fm_command(line_no){throw [0,Assert_failure,_ahA_]}
    function fm_type(line_no){throw [0,Assert_failure,_ahB_]}
    var alg=[0,fm_expr,fm_command,fm_type];
    function does_not_access(param,e)
     {var steps=param[2],root=param[1];
      function is_ok(param)
       {var
         steps$0=param[2],
         root$0=param[1],
         _apN_=caml_string_notequal(root$0,root),
         _apO_=
          _apN_
          ||
          1
          -
          caml_call3(Utils_List[73],equal_step,steps,steps$0);
        return _apO_}
      var
       _apK_=caml_call2(cataM_expr,alg,e),
       _apL_=caml_call2(W[27],_apK_,close),
       _apM_=caml_call1(W[33],_apL_)[1];
      return caml_call2(Utils_List[31],is_ok,_apM_)}
    function embellish(config)
     {function attr(a,e){return [0,[6,[7,a],e],line_no$0]}
      function proj(i,e){return [0,[6,[0,i],e],line_no$0]}
      function set_proj(i,lhs,rhs){return [0,[9,proj(i,lhs),rhs],line_no$0]}
      function set_attr(a,lhs,rhs){return [0,[9,attr(a,lhs),rhs],line_no$0]}
      function f_expr(line_no,e){return [0,e,line_no]}
      function f_command(line_no,c$1)
       {var switch$0=0;
        switch(c$1[0])
         {case 3:
           var _ape_=c$1[3][1];
           if(1 === _ape_[0])
            {var
              msg=_ape_[1],
              x=c$1[2],
              e=c$1[1],
              _apJ_=[12,0,[0,[2,e,[0,msg]],line_no$0],x];
             switch$0 = 1}
           break;
          case 9:
           var rhs=c$1[2],lhs=c$1[1];
           if(equal_expr_modulo_line_nos(lhs,rhs))
            {var _apJ_=[15,cst$244(0,unit)];switch$0 = 1}
           else
            {var _apf_=rhs[1];
             switch(_apf_[0])
              {case 7:
                var _apg_=_apf_[1],switch$1=0;
                if(typeof _apg_ !== "number" && 1 !== _apg_[0])
                 {var _aph_=_apg_[1],switch$2=0;
                  if(typeof _aph_ === "number" && 4 !== _aph_)
                   {switch$1 = 1;switch$2 = 1}
                  if(! switch$2)
                   {var _api_=_apf_[2],_apj_=_api_[1];
                    if(5 === _apj_[0])
                     {var switch$3=0,_apk_=_apj_[1];
                      if(typeof _apk_ !== "number" && 0 === _apk_[0])
                       {var
                         y=_apf_[3],
                         _apJ_=[9,lhs,[0,[7,_apg_,y,_api_],line_no$0]];
                        switch$0 = 1;
                        switch$1 = 1;
                        switch$3 = 1}
                      if(! switch$3)switch$1 = 1}
                    else
                     switch$1 = 1}}
                break;
               case 11:
                var _apl_=_apf_[1];
                if(_apl_)
                 {var _apm_=_apl_[2];
                  if(_apm_ && ! _apm_[2])
                   {var y$0=_apm_[1],x$0=_apl_[1];
                    if(does_not_access(path_of_lexpr(config,proj(0,lhs)),y$0))
                     {var
                       _apn_=set_proj(1,lhs,y$0),
                       _apJ_=[12,0,set_proj(0,lhs,x$0),_apn_];
                      switch$0 = 1}
                    else
                     if(does_not_access(path_of_lexpr(config,proj(1,lhs)),x$0))
                      {var
                        _apo_=set_proj(0,lhs,x$0),
                        _apJ_=[12,0,set_proj(1,lhs,y$0),_apo_];
                       switch$0 = 1}}}
                break;
               case 12:
                var _app_=_apf_[1];
                if(_app_)
                 {var _apq_=_app_[2];
                  if(_apq_ && ! _apq_[2])
                   {var
                     _apr_=_apq_[1],
                     x1=_apr_[2],
                     a1=_apr_[1],
                     match=_app_[1],
                     x0=match[2],
                     a0=match[1];
                    if(does_not_access(path_of_lexpr(config,attr(a0,lhs)),x1))
                     {var
                       _aps_=set_attr(a1,lhs,x1),
                       _apJ_=[12,0,set_attr(a0,lhs,x0),_aps_];
                      switch$0 = 1}}}
                break
               }}
           break;
          case 12:
           var _apt_=c$1[1],switch$4=0;
           if(_apt_)
            {var _apu_=c$1[2][1],_apv_=_apt_[1];
             switch(_apu_[0])
              {case 4:
                var
                 c=c$1[3],
                 clauses=_apu_[2],
                 s=_apu_[1],
                 f=
                  function(param)
                   {var rhs=param[3],arg=param[2],cons=param[1];
                    return [0,cons,arg,[0,[12,[0,_apv_],rhs,c],line_no$0]]},
                 _apJ_=[4,s,caml_call2(Utils_List[20],f,clauses)];
                switch$0 = 1;
                switch$4 = 1;
                break;
               case 15:
                var _apA_=c$1[3][1];
                if(9 === _apA_[0])
                 {var _apB_=_apA_[2][1];
                  if(5 === _apB_[0])
                   {var _apC_=_apB_[1],switch$5=0;
                    if(typeof _apC_ !== "number" && 3 === _apC_[0])
                     {var x$3=_apC_[1],lhs$1=_apA_[1],e$1=_apu_[1];
                      if(caml_string_equal(_apv_,x$3))
                       {var _apJ_=[9,lhs$1,e$1];
                        switch$0 = 1;
                        switch$4 = 1;
                        switch$5 = 1}
                      else
                       {switch$4 = 1;switch$5 = 1}}
                    if(! switch$5)switch$4 = 1}
                  else
                   switch$4 = 1}
                else
                 switch$4 = 1;
                break;
               case 1:
               case 8:
               case 12:break;
               default:switch$4 = 1}}
           else
            {var _apD_=c$1[2][1],switch$6=0;
             if(15 === _apD_[0])
              {var _apH_=_apD_[1][1];
               if(5 === _apH_[0])
                {var _apI_=_apH_[1],switch$7=0;
                 if(typeof _apI_ !== "number" && 0 === _apI_[0])
                  if(typeof _apI_[1] === "number")
                   {var match$0=c$1[3],c$0=match$0[1],_apJ_=c$0;
                    switch$0 = 1;
                    switch$4 = 1;
                    switch$6 = 1;
                    switch$7 = 1}
                  else
                   switch$7 = 1}}
             if(! switch$6)
              {var _apE_=c$1[3][1];
               if(15 === _apE_[0])
                {var _apF_=_apE_[1][1];
                 if(5 === _apF_[0])
                  {var _apG_=_apF_[1],switch$8=0;
                   if(typeof _apG_ === "number" || ! (0 === _apG_[0]))
                    switch$8 = 1;
                   else
                    if(typeof _apG_[1] === "number")
                     {var _apJ_=_apD_;switch$0 = 1;switch$4 = 1}}}}}
           if(! switch$4)
            {var _apw_=c$1[2][1];
             switch(_apw_[0])
              {case 1:var _apJ_=_apw_;switch$0 = 1;break;
               case 8:
                var _apx_=c$1[3][1];
                if(9 === _apx_[0])
                 {var _apy_=_apx_[2][1];
                  if(5 === _apy_[0])
                   {var _apz_=_apy_[1],switch$9=0;
                    if(typeof _apz_ === "number" || ! (3 === _apz_[0]))
                     switch$9 = 1;
                    else
                     {var x$1=_apz_[1],lhs$0=_apx_[1],e$0=_apw_[2],x$2=_apw_[1];
                      if(caml_string_equal(x$2,x$1))
                       {var _apJ_=[9,lhs$0,e$0];switch$0 = 1}}}}
                break;
               case 12:
                var
                 e3=c$1[3],
                 e2=_apw_[3],
                 e1=_apw_[2],
                 x1$0=_apw_[1],
                 _apJ_=[12,x1$0,e1,[0,[12,_apt_,e2,e3],line_no$0]];
                switch$0 = 1;
                break
               }}
           break
          }
        if(! switch$0)var _apJ_=c$1;
        return [0,_apJ_,line_no]}
      var f=cata_command([0,f_expr,f_command,Utils_Control[1]]),n=100;
      return function(x$1)
       {var n$0=n,x=x$1;
        for(;;)
         {if(0 === n$0)caml_call1(Stdlib[2],cst_fixpoint_failed_to_converg);
          var x$0=caml_call1(f,x);
          if(equal_command_modulo_line_nos(x,x$0))return x;
          var n$1=n$0 - 1 | 0,n$0=n$1,x=x$0;
          continue}}}
    var Smartml_Rewriter=[0,embellish];
    caml_register_global(6530,Smartml_Rewriter,"Smartml__Rewriter");
    var unit$4=cst$244(0,unit),line_no$1=0;
    function err_expr(msg)
     {var
       err=cst$244(line_no$1,[2,caml_call2(Stdlib_format[126],_ahC_,msg)]),
       fail=sp_failwith(line_no$1,err),
       l=lambda$0(line_no$1,-1,cst_error$1,fail,0);
      return call_lambda(line_no$1,l,unit$4)}
    function sp_fst(x)
     {var _apb_=x[1];
      if(11 === _apb_[0])
       {var _apc_=_apb_[1];
        if(_apc_)
         {var _apd_=_apc_[2];
          if(_apd_ && ! _apd_[2]){var x$0=_apc_[1];return x$0}}}
      return caml_call1(first(line_no$1),x)}
    function sp_snd(x)
     {var _ao__=x[1];
      if(11 === _ao__[0])
       {var _ao$_=_ao__[1];
        if(_ao$_)
         {var _apa_=_ao$_[2];
          if(_apa_ && ! _apa_[2]){var x$0=_apa_[1];return x$0}}}
      return caml_call1(second(line_no$1),x)}
    var
     Missing_label=
      [248,cst_Smartml_Decompiler_Missing,caml_fresh_oo_id(0)];
    function smartML_of_type(with_records,t)
     {var _aoL_=0;
      function smartML_of_type$0(_ao9_){return smartML_of_type(_aoL_,_ao9_)}
      switch(t[0])
       {case 0:
         var _aoM_=t[1];
         if(typeof _aoM_ === "number")
          switch(_aoM_)
           {case 2:return nat$0(0);
            case 3:return int$1(0);
            default:return mk0(_aoM_)}
         else
          {if(0 === _aoM_[0])
            {var memo=_aoM_[1];return sapling_state([0,memo])}
           var memo$0=_aoM_[1];
           return sapling_transaction([0,memo$0])}
        case 1:
         var _aoN_=t[1];
         if(_aoN_){var t1=t[2];return mk1(_aoN_,smartML_of_type$0(t1))}
         var t$0=t[2];
         return option(smartML_of_type$0(t$0));
        case 2:
         var _aoO_=t[1];
         if(typeof _aoO_ === "number")
          switch(_aoO_)
           {case 0:
             var t2=t[3],t1$0=t[2],_aoP_=smartML_of_type$0(t2);
             return mk2(_aoO_,smartML_of_type$0(t1$0),_aoP_);
            case 1:
             var t2$0=t[3],t1$1=t[2],_aoQ_=smartML_of_type$0(t2$0);
             return map$0(0,smartML_of_type$0(t1$1),_aoQ_);
            default:
             var t2$1=t[3],t1$2=t[2],_aoR_=smartML_of_type$0(t2$1);
             return map$0(1,smartML_of_type$0(t1$2),_aoR_)}
         else
          {if(0 === _aoO_[0])
            {var t2$2=t[3],t1$3=t[2],_aoS_=smartML_of_type$0(t2$2);
             return pair(smartML_of_type$0(t1$3),_aoS_)}
           var t2$3=t[3],t1$4=t[2],_aoT_=smartML_of_type$0(t2$3);
           return tor(smartML_of_type$0(t1$4),_aoT_)}
        case 3:
         var
          r=t[1],
          _aoU_=function(param){var t=param[2];return smartML_of_type$0(t)},
          as_tuple=caml_call2(Utils_Binary_tree[6],_aoU_,pair),
          f=
           function(param)
            {var _ao8_=param[1];
             if(_ao8_)
              {var t=param[2],lbl=_ao8_[1];
               return [0,lbl,smartML_of_type$0(t)]}
             throw Missing_label};
         if(with_records)
          try
           {var
             r$0=caml_call2(Utils_Binary_tree[11],f,r),
             f$0=function(param){var lbl=param[1];return [0,lbl,lbl]},
             layout=caml_call2(Utils_Binary_tree[11],f$0,r$0),
             _aoV_=caml_call1(Utils_Binary_tree[41],r$0),
             _aoW_=record(value(layout),_aoV_);
            return _aoW_}
          catch(_ao7_)
           {_ao7_ = caml_wrap_exception(_ao7_);
            if(_ao7_ === Missing_label)return caml_call1(as_tuple,r);
            throw _ao7_}
         return caml_call1(as_tuple,r);
        case 4:
         var _aoX_=t[1];
         if(1 === _aoX_[0])
          {var _aoZ_=_aoX_[1];
           if(0 === _aoZ_[0])
            {var _ao0_=_aoZ_[1][1];
             if(_ao0_)
              {var _ao1_=_ao0_[1];
               if(caml_string_notequal(_ao1_,cst_None$81))
                {if(! caml_string_notequal(_ao1_,cst_True$9))
                  {var _ao2_=_aoX_[2];
                   if(0 === _ao2_[0])
                    {var _ao3_=_ao2_[1][1];
                     if(_ao3_ && ! caml_string_notequal(_ao3_[1],cst_False$8))
                      return bool$0}}}
               else
                {var _ao4_=_aoX_[2];
                 if(0 === _ao4_[0])
                  {var _ao5_=_ao4_[1],_ao6_=_ao5_[1];
                   if(_ao6_ && ! caml_string_notequal(_ao6_[1],cst_Some$73))
                    {var t$1=_ao5_[2];return option(smartML_of_type$0(t$1))}}}}}}
         var
          _aoY_=
           function(param){var t=param[2];return smartML_of_type$0(t)};
         return caml_call3(Utils_Binary_tree[6],_aoY_,tor,_aoX_);
        case 5:
         var ts=t[1];
         return tuple(caml_call2(Utils_List[20],smartML_of_type$0,ts));
        default:return unit$0}}
    function smartML_of_prim0(param)
     {if(typeof param === "number")
       switch(param)
        {case 0:return sender;
         case 1:return source;
         case 2:return amount;
         case 3:return balance;
         case 4:return now;
         case 5:return to_address(line_no$1,self);
         case 6:return chain_id$1;
         case 7:return total_voting_power;
         default:return unit$4}
      else
       switch(param[0])
        {case 0:return self;
         case 1:var memo=param[1];return sapling_empty_state$0(memo);
         case 2:return none$0(line_no$1);
         case 3:return build_list(line_no$1,0);
         case 4:return build_set(line_no$1,0);
         case 5:return build_map(line_no$1,0,0);
         default:return build_map(line_no$1,1,0)}}
    function zero(param)
     {if(0 === param[0])
       {var _aoK_=param[1];
        if(typeof _aoK_ === "number" && ! (5 <= _aoK_))
         switch(_aoK_)
          {case 2:return small_nat(0);
           case 3:return small_int(0);
           case 4:return [6,caml_call1(Utils_Bigint[5],0)]
           }}
      throw [0,Assert_failure,_ahD_]}
    function res(_aoJ_){return result(line_no$1,_aoJ_)}
    function bind_as(force_bind,x,c,f)
     {var _aoI_=c[1];
      switch(_aoI_[0])
       {case 12:
         var b=_aoI_[3],a=_aoI_[2],y=_aoI_[1];
         return bind$3(line_no$1,y,a,bind_as(force_bind,x,b,f));
        case 15:
         var e=_aoI_[1];
         if(caml_notequal(force_bind,_ahG_))return caml_call1(f,e);
         break
        }
      return bind$3(line_no$1,[0,x],c,caml_call1(f,local(line_no$1,x)))}
    function bind_fresh(force_bind,st)
     {var _aoF_=caml_call2(Michel_Transformer[1],st,cst_x$5);
      return function(_aoG_,_aoH_)
       {return bind_as(force_bind,_aoF_,_aoG_,_aoH_)}}
    function seq$1(_aoE_){return seq$0(line_no$1,_aoE_)}
    function set$6(lhs,rhs)
     {var _aoz_=lhs[1],_aoA_=rhs[1];
      if(5 === _aoz_[0])
       {var _aoB_=_aoz_[1],switch$0=0;
        if(typeof _aoB_ === "number" || ! (3 === _aoB_[0]))
         switch$0 = 1;
        else
         {var _aoC_=_aoB_[1];
          switch(_aoA_[0])
           {case 5:
             var _aoD_=_aoA_[1],switch$1=0;
             if(typeof _aoD_ !== "number" && 3 === _aoD_[0])
              {var r=_aoD_[1];
               if(caml_string_equal(_aoC_,r))return res(unit$4);
               switch$1 = 1}
             break;
            case 13:
             if(! caml_string_notequal(_aoC_,cst_operations$16) && ! _aoA_[1])
              return res(unit$4);
             break
            }}}
      return set$4(line_no$1,lhs,rhs)}
    function with_cmd(ds,force_bind,e)
     {var _aoy_=to_cmd(ds,e);
      return caml_call1(bind_fresh(force_bind,ds[1]),_aoy_)}
    function with_cmd2(ds,e1,e2,k)
     {var c2=to_cmd(ds,e2),c1=to_cmd(ds,e1),_aow_=ds[1];
      function _aov_(x1)
       {function _aox_(x2){return res(caml_call2(k,x1,x2))}
        return caml_call2(bind_fresh(0,_aow_),c2,_aox_)}
      return caml_call2(bind_fresh(0,_aow_),c1,_aov_)}
    function with_cmd3(ds,e1,e2,e3,k)
     {var c3=to_cmd(ds,e3),c2=to_cmd(ds,e2),c1=to_cmd(ds,e1),_aos_=ds[1];
      function _aor_(x1)
       {function _aot_(x2)
         {function _aou_(x3){return res(caml_call3(k,x1,x2,x3))}
          return caml_call2(bind_fresh(0,_aos_),c3,_aou_)}
        return caml_call2(bind_fresh(0,_aos_),c2,_aot_)}
      return caml_call2(bind_fresh(0,_aos_),c1,_aor_)}
    function decompile_if(ds,f,s,l,r)
     {var match=caml_call2(f,ds,l),match$0=caml_call2(f,ds,r),_aon_=match[1];
      if(15 === _aon_[0])
       {var _aop_=match$0[1];
        if(15 === _aop_[0])
         {var
           r$0=_aop_[1],
           l$0=_aon_[1],
           _aoq_=function(s){return res(eif(line_no$1,s,l$0,r$0))};
          return caml_call1(with_cmd(ds,0,s),_aoq_)}}
      function _aoo_(s){return ifte(line_no$1,s,match,match$0)}
      return caml_call1(with_cmd(ds,0,s),_aoo_)}
    function to_cmd(ds,e)
     {var e$0=e;
      for(;;)
       {var
         on=function(e,x){return [0,defineLocal(line_no$1,x,e),0]},
         _ame_=e$0[1];
        switch(_ame_[0])
         {case 0:
           var x=_ame_[1],match=caml_call3(Utils_List[82],0,x,ds[2]);
           if(match){var x$0=match[1];return res(x$0)}
           return res(local(line_no$1,x));
          case 1:
           var _amf_=_ame_[1];
           if(0 === _amf_[0])
            {var
              e2=_ame_[3],
              e1=_ame_[2],
              x$1=_amf_[1],
              _amg_=
               function(e)
                {var _aoj_=[0,to_cmd(ds,e2),0];
                 function _aok_(_aom_){return on(e,_aom_)}
                 var _aol_=caml_call3(Utils_Option[12],0,_aok_,x$1);
                 return seq$1(caml_call2(Stdlib[37],_aol_,_aoj_))},
              _amh_=to_cmd(ds,e1);
             return caml_call2(bind_fresh(0,ds[1]),_amh_,_amg_)}
           var _ami_=_amf_[1];
           if(_ami_)
            {var _amj_=_ami_[2],_amk_=_ami_[1];
             if(_amj_)
              {if(! _amj_[2])
                {var _amm_=_ame_[2],_amn_=_amj_[1],_amo_=_amm_[1];
                 if(25 === _amo_[0])
                  {var _amr_=_amo_[1];
                   if(_amr_)
                    {var _ams_=_amr_[2];
                     if(_ams_)
                      {var _amt_=_ams_[2];
                       if(_amt_ && ! _amt_[2])
                        {var _amu_=_amo_[2];
                         if(_amu_)
                          {var _amv_=_amu_[2];
                           if(_amv_ && ! _amv_[2])
                            {var
                              rest=_ame_[3],
                              step=_amo_[3],
                              vx2=_amv_[1],
                              vx1=_amu_[1],
                              x0_2=_amt_[1],
                              x0_1=_ams_[1],
                              c0=_amr_[1],
                              _amw_=caml_call2(Michel_Transformer[1],ds[1],cst_y),
                              y1=caml_call2(Utils_Option[45],_amw_,_amk_),
                              _amx_=caml_call2(Michel_Transformer[1],ds[1],cst_y$0),
                              y2=caml_call2(Utils_Option[45],_amx_,_amn_),
                              vc=caml_call2(Michel_Transformer[1],ds[1],cst_c$2),
                              vc$0=local(line_no$1,vc),
                              _amy_=[0,[0,y2],x0_2[2]],
                              _amz_=
                               [0,[0,caml_call2(Utils_Option[45],cst$344,vx2),_amy_],0],
                              _amA_=[0,[0,y1],x0_1[2]],
                              _amB_=
                               [0,[0,caml_call2(Utils_Option[45],cst$345,vx1),_amA_],_amz_],
                              step$0=caml_call2(Michel_Expr[96],_amB_,step),
                              _amC_=[0,to_cmd(ds,rest),0],
                              _amD_=[0,[0,local(line_no$1,y2)],0],
                              _amE_=
                               assign_to
                                (ds,[0,[0,vc$0],[0,[0,local(line_no$1,y1)],_amD_]],step$0),
                              _amF_=
                               [0,whileLoop(line_no$1,local(line_no$1,vc),_amE_),_amC_],
                              _amG_=
                               function(_aog_){return defineLocal(line_no$1,y2,_aog_)},
                              _amH_=[0,caml_call1(with_cmd(ds,0,x0_2),_amG_),_amF_],
                              _amI_=
                               function(_aof_){return defineLocal(line_no$1,y1,_aof_)},
                              _amJ_=[0,caml_call1(with_cmd(ds,0,x0_1),_amI_),_amH_],
                              _amK_=
                               function(_aoe_){return defineLocal(line_no$1,vc,_aoe_)};
                             return seq$1([0,caml_call1(with_cmd(ds,0,c0),_amK_),_amJ_])}}}}}}
                 var
                  e2$0=_ame_[3],
                  _amp_=
                   function(xy)
                    {var _an6_=[0,to_cmd(ds,e2$0),0],_an7_=sp_snd(xy);
                     function _an8_(_aod_){return on(_an7_,_aod_)}
                     var
                      _an9_=caml_call3(Utils_Option[12],0,_an8_,_amn_),
                      _an__=caml_call2(Stdlib[37],_an9_,_an6_),
                      _an$_=sp_fst(xy);
                     function _aoa_(_aoc_){return on(_an$_,_aoc_)}
                     var _aob_=caml_call3(Utils_Option[12],0,_aoa_,_amk_);
                     return seq$1(caml_call2(Stdlib[37],_aob_,_an__))},
                  _amq_=to_cmd(ds,_amm_);
                 return caml_call2(bind_fresh(0,ds[1]),_amq_,_amp_)}}
             else
              {var _amL_=_ame_[2][1];
               if(25 === _amL_[0])
                {var _amM_=_amL_[1];
                 if(_amM_)
                  {var _amN_=_amM_[2];
                   if(_amN_ && ! _amN_[2])
                    {var _amO_=_amL_[2];
                     if(_amO_ && ! _amO_[2])
                      {var
                        rest$0=_ame_[3],
                        step$1=_amL_[3],
                        vx1$0=_amO_[1],
                        x0_1$0=_amN_[1],
                        c0$0=_amM_[1],
                        _amP_=caml_call2(Michel_Transformer[1],ds[1],cst_y$1),
                        y1$0=caml_call2(Utils_Option[45],_amP_,_amk_),
                        vc$1=caml_call2(Michel_Transformer[1],ds[1],cst_c$3),
                        vc$2=local(line_no$1,vc$1),
                        _amQ_=[0,[0,y1$0],x0_1$0[2]],
                        _amR_=
                         [0,[0,caml_call2(Utils_Option[45],cst$346,vx1$0),_amQ_],0],
                        step$2=caml_call2(Michel_Expr[96],_amR_,step$1),
                        _amS_=[0,to_cmd(ds,rest$0),0],
                        _amT_=
                         assign_to
                          (ds,[0,[0,vc$2],[0,[0,local(line_no$1,y1$0)],0]],step$2),
                        _amU_=
                         [0,whileLoop(line_no$1,local(line_no$1,vc$1),_amT_),_amS_],
                        _amV_=
                         function(_aoi_){return defineLocal(line_no$1,y1$0,_aoi_)},
                        _amW_=[0,caml_call1(with_cmd(ds,0,x0_1$0),_amV_),_amU_],
                        _amX_=
                         function(_aoh_){return defineLocal(line_no$1,vc$1,_aoh_)};
                       return seq$1
                               ([0,caml_call1(with_cmd(ds,0,c0$0),_amX_),_amW_])}}}}}}
           break;
          case 3:
           var x$2=_ame_[1];
           if(typeof x$2 === "number")
            var _amY_=unit;
           else
            switch(x$2[0])
             {case 0:var b=x$2[1],_amY_=[0,b];break;
              case 1:var s=x$2[1],_amY_=nat(s);break;
              case 2:var s$0=x$2[1],_amY_=int$0(s$0);break;
              case 3:var x$3=x$2[1],_amY_=[6,x$3];break;
              case 4:var s$1=x$2[1],_amY_=[2,s$1];break;
              case 5:var s$2=x$2[1],_amY_=[10,s$2];break;
              case 6:var s$3=x$2[1],_amY_=[11,s$3];break;
              case 7:var s$4=x$2[1],_amY_=[3,s$4];break;
              case 8:var s$5=x$2[1],_amY_=[4,s$5];break;
              case 9:var x$4=x$2[1],_amY_=[7,x$4,0];break;
              case 10:
               var x$5=x$2[1],x$6=caml_call1(Big_int[34],x$5),_amY_=[5,x$6];
               break;
              case 11:var s$6=x$2[1],_amY_=[15,s$6];break;
              case 12:var s$7=x$2[1],_amY_=[16,s$7];break;
              case 13:var s$8=x$2[1],_amY_=[17,s$8];break;
              default:var s$9=x$2[1],_amY_=[12,s$9]}
           return res(cst$244(line_no$1,_amY_));
          case 4:var p=_ame_[1];return res(smartML_of_prim0(p));
          case 5:
           var _amZ_=_ame_[1];
           if(typeof _amZ_ === "number" && ! (13 <= _amZ_))
            switch(_amZ_)
             {case 3:
               var _am1_=_ame_[2][1];
               if(7 === _am1_[0])
                {var _am2_=_am1_[1];
                 if(typeof _am2_ === "number" && 10 === _am2_)
                  {var e2$1=_am1_[3],e1$0=_am1_[2];
                   return with_cmd2
                           (ds,
                            e1$0,
                            e2$1,
                            function(_an4_,_an5_){return eq(line_no$1,_an4_,_an5_)})}}
               break;
              case 9:
               var _am3_=_ame_[2][1];
               if(7 === _am3_[0])
                {var _am4_=_am3_[1];
                 if(typeof _am4_ === "number" && 10 === _am4_)
                  {var e2$2=_am3_[3],e1$1=_am3_[2];
                   return with_cmd2
                           (ds,
                            e1$1,
                            e2$2,
                            function(_an2_,_an3_){return le(line_no$1,_an2_,_an3_)})}}
               break;
              case 10:
               var _am5_=_ame_[2][1];
               if(7 === _am5_[0])
                {var _am6_=_am5_[1];
                 if(typeof _am6_ === "number" && 10 === _am6_)
                  {var e2$3=_am5_[3],e1$2=_am5_[2];
                   return with_cmd2
                           (ds,
                            e1$2,
                            e2$3,
                            function(_an0_,_an1_){return lt(line_no$1,_an0_,_an1_)})}}
               break;
              case 11:
               var _am7_=_ame_[2][1];
               if(7 === _am7_[0])
                {var _am8_=_am7_[1];
                 if(typeof _am8_ === "number" && 10 === _am8_)
                  {var e2$4=_am7_[3],e1$3=_am7_[2];
                   return with_cmd2
                           (ds,
                            e1$3,
                            e2$4,
                            function(_anY_,_anZ_){return ge(line_no$1,_anY_,_anZ_)})}}
               break;
              case 12:
               var _am9_=_ame_[2][1];
               if(7 === _am9_[0])
                {var _am__=_am9_[1];
                 if(typeof _am__ === "number" && 10 === _am__)
                  {var e2$5=_am9_[3],e1$4=_am9_[2];
                   return with_cmd2
                           (ds,
                            e1$4,
                            e2$5,
                            function(_anW_,_anX_){return gt(line_no$1,_anW_,_anX_)})}}
               break
              }
           var
            e$1=_ame_[2],
            _am0_=
             function(x)
              {var tys=e$1[2];
               if(tys)
                {var t=tys[1],switch$0=0;
                 if(typeof _amZ_ === "number")
                  switch(_amZ_)
                   {case 0:var _anV_=sp_fst(x);break;
                    case 1:var _anV_=sp_snd(x);break;
                    case 2:var _anV_=some$1(line_no$1,x);break;
                    case 3:
                     var _anV_=eq(line_no$1,x,cst$244(line_no$1,zero(t)));break;
                    case 4:var _anV_=absE(line_no$1,x);break;
                    case 5:var _anV_=negE(line_no$1,x);break;
                    case 6:var _anV_=to_int(line_no$1,x);break;
                    case 7:var _anV_=is_nat(line_no$1,x);break;
                    case 8:
                     var _anV_=neq(line_no$1,x,cst$244(line_no$1,zero(t)));break;
                    case 9:
                     var _anV_=le(line_no$1,x,cst$244(line_no$1,zero(t)));break;
                    case 10:
                     var _anV_=lt(line_no$1,x,cst$244(line_no$1,zero(t)));break;
                    case 11:
                     var _anV_=ge(line_no$1,x,cst$244(line_no$1,zero(t)));break;
                    case 12:
                     var _anV_=gt(line_no$1,x,cst$244(line_no$1,zero(t)));break;
                    case 13:var _anV_=notE(line_no$1,x);break;
                    case 16:var _anV_=to_address(line_no$1,x);break;
                    case 25:var _anV_=set_delegate(line_no$1,x);break;
                    default:switch$0 = 1}
                 else
                  if(2 === _amZ_[0])
                   var
                    t$0=_amZ_[2],
                    a=_amZ_[1],
                    _anV_=contract$0(line_no$1,a,smartML_of_type(0,t$0),x);
                  else
                   switch$0 = 1;
                 if(switch$0)
                  var
                   _anU_=caml_call2(Michel_Expr[10],Michel_Type[3],_amZ_),
                   _anV_=err_expr(caml_call2(Stdlib[28],cst_prim1,_anU_));
                 return res(_anV_)}
               throw [0,Assert_failure,_ahE_]};
           return caml_call1(with_cmd(ds,0,e$1),_am0_);
          case 6:
           if(! _ame_[1])
            {var
              e$2=_ame_[2],
              _am$_=function(_anT_){return sp_failwith(line_no$1,_anT_)};
             return caml_call1(with_cmd(ds,0,e$2),_am$_)}
           break;
          case 7:
           var e2$6=_ame_[3],e1$5=_ame_[2],p$0=_ame_[1];
           return with_cmd2
                   (ds,
                    e1$5,
                    e2$6,
                    function(x1,x2)
                     {if(typeof p$0 === "number")
                       switch(p$0)
                        {case 0:return add(line_no$1,x1,x2);
                         case 1:return mul(line_no$1,x1,x2);
                         case 2:return sub(line_no$1,x1,x2);
                         case 3:return lsr(line_no$1,x1,x2);
                         case 4:return lsl(line_no$1,x1,x2);
                         case 5:return xor(line_no$1,x1,x2);
                         case 6:return ediv(line_no$1,x1,x2);
                         case 7:return b_and(line_no$1,x1,x2);
                         case 8:return b_or(line_no$1,x1,x2);
                         case 9:return cons(line_no$1,x1,x2);
                         case 10:return add(line_no$1,x1,negE(line_no$1,x2));
                         case 12:return some$1(line_no$1,item(line_no$1,x2,x1,0,0));
                         case 14:return call_lambda(line_no$1,x2,x1);
                         case 15:return apply_lambda(line_no$1,x2,x1);
                         case 16:return sapling_verify_update(line_no$1,x1,x2)
                         }
                      else
                       if(0 === p$0[0])return tuple$0(line_no$1,[0,x1,[0,x2,0]]);
                      var _anS_=caml_call1(Michel_Expr[19],p$0);
                      return err_expr(caml_call2(Stdlib[28],cst_TODO_prim2,_anS_))});
          case 8:
           var e3=_ame_[4],e2$7=_ame_[3],e1$6=_ame_[2],p$1=_ame_[1];
           return with_cmd3
                   (ds,
                    e1$6,
                    e2$7,
                    e3,
                    function(x1,x2,x3)
                     {var tz=e3[2];
                      if(tz)
                       {var t=tz[1];
                        switch(p$1)
                         {case 0:return slice(line_no$1,x1,x2,x3);
                          case 1:
                           if(2 === t[0])
                            {var _anR_=t[1];
                             if(typeof _anR_ === "number" && _anR_)
                              return updateMap(line_no$1,x3,x1,x2)}
                           var
                            _anP_=caml_call1(Michel_Type[4],t),
                            _anQ_=caml_call2(Stdlib[28],cst_prim3_Update,_anP_);
                           return caml_call1(Stdlib[2],_anQ_);
                          case 2:return get_and_update(line_no$1,x3,x1,x2);
                          case 3:return transfer(line_no$1,x1,x2,x3);
                          default:return check_signature(line_no$1,x1,x2,x3)}}
                      throw [0,Assert_failure,_ahF_]});
          case 9:
           var
            e$3=_ame_[2],
            fld=_ame_[1],
            _ana_=function(x){return res(attr(line_no$1,x,fld))};
           return caml_call1(with_cmd(ds,0,e$3),_ana_);
          case 11:
           var _anb_=_ame_[1];
           if(1 === _anb_[0])
            {var _ane_=_anb_[1];
             if(0 === _ane_[0])
              {var _anf_=_ane_[1];
               if(! _anf_[1])
                {var _ang_=_anb_[2],_anh_=_anf_[2];
                 if(0 === _ang_[0])
                  {var _ani_=_ang_[1];
                   if(! _ani_[1])
                    {var e2$8=_ani_[2];
                     return with_cmd2
                             (ds,
                              _anh_,
                              e2$8,
                              function(e1,e2){return tuple$0(line_no$1,[0,e1,[0,e2,0]])})}}}}}
           var
            f=
             function(param)
              {var _anO_=param[1];
               if(_anO_){var t=param[2],lbl=_anO_[1];return [0,lbl,t]}
               throw Missing_label};
           try
            {var
              _anc_=caml_call1(Utils_Binary_tree[41],_anb_),
              r=caml_call2(Utils_List[20],f,_anc_),
              mk_record=
               function(acc,param)
                {if(param)
                  {var
                    r=param[2],
                    match=param[1],
                    e=match[2],
                    lbl=match[1],
                    _anN_=function(x){return mk_record([0,[0,lbl,x],acc],r)};
                   return caml_call1(with_cmd(ds,0,e),_anN_)}
                 return res(record$0(line_no$1,acc))},
              _and_=mk_record(0,r);
             return _and_}
           catch(_anM_)
            {_anM_ = caml_wrap_exception(_anM_);
             if(_anM_ === Missing_label)throw [0,Assert_failure,_ahI_];
             throw _anM_}
          case 12:
           var
            x$7=_ame_[3],
            ctxt=_ame_[2],
            _anj_=
             function(x)
              {function of_ctxt(param)
                {if(typeof param === "number")
                  return x;
                 else
                  {if(0 === param[0])
                    {var c=param[1];return left$1(line_no$1,of_ctxt(c))}
                   var c$0=param[2];
                   return right$1(line_no$1,of_ctxt(c$0))}}
               return res(of_ctxt(ctxt))};
           return caml_call1(with_cmd(ds,0,x$7),_anj_);
          case 16:
           var _ank_=_ame_[1];
           if(0 === _ank_[0])
            {var
              e2$9=_ame_[3],
              e1$7=_ame_[2],
              x$8=_ank_[1],
              _anl_=
               function(e)
                {var _anI_=[0,to_cmd(ds,e2$9),0];
                 function _anJ_(_anL_){return on(e,_anL_)}
                 var _anK_=caml_call3(Utils_Option[12],0,_anJ_,x$8);
                 return seq$1(caml_call2(Stdlib[37],_anK_,_anI_))},
              _anm_=to_cmd(ds,e1$7);
             return caml_call2(bind_fresh(0,ds[1]),_anm_,_anl_)}
           var _ann_=_ank_[1];
           if(0 === _ann_[0])
            {var _ano_=_ank_[2],_anp_=_ann_[1];
             if(0 === _ano_[0])
              {var
                e2$10=_ame_[3],
                e1$8=_ame_[2],
                y=_ano_[1],
                _anq_=
                 function(xy)
                  {var _any_=[0,to_cmd(ds,e2$10),0],_anz_=sp_snd(xy);
                   function _anA_(_anH_){return on(_anz_,_anH_)}
                   var
                    _anB_=caml_call3(Utils_Option[12],0,_anA_,y),
                    _anC_=caml_call2(Stdlib[37],_anB_,_any_),
                    _anD_=sp_fst(xy);
                   function _anE_(_anG_){return on(_anD_,_anG_)}
                   var _anF_=caml_call3(Utils_Option[12],0,_anE_,_anp_);
                   return seq$1(caml_call2(Stdlib[37],_anF_,_anC_))},
                _anr_=to_cmd(ds,e1$8);
               return caml_call2(bind_fresh(0,ds[1]),_anr_,_anq_)}}
           break;
          case 17:
           var clauses=_ame_[2],scrutinee=_ame_[1];
           return caml_call1
                   (decompile_match_variant(ds,to_cmd,scrutinee),clauses);
          case 18:
           var _ans_=_ame_[1];
           if(! _ans_)return res(unit$4);
           var _ant_=_ans_[2],_anu_=_ans_[1];
           if(! _ant_){var e$0=_anu_;continue}
           var _anv_=_ant_[2],_anw_=_ant_[1];
           if(! _anv_)
            return with_cmd2
                    (ds,
                     _anu_,
                     _anw_,
                     function(x,y){return tuple$0(line_no$1,[0,x,[0,y,0]])});
           if(! _anv_[2])
            {var z=_anv_[1];
             return with_cmd3
                     (ds,
                      _anu_,
                      _anw_,
                      z,
                      function(x,y,z)
                       {return tuple$0(line_no$1,[0,x,[0,y,[0,z,0]]])})}
           break;
          case 19:
           var
            x$9=_ame_[2],
            i=_ame_[1],
            _anx_=function(x){return res(proj(line_no$1,i,x))};
           return caml_call1(with_cmd(ds,0,x$9),_anx_);
          case 21:
           var r$0=_ame_[3],l=_ame_[2],c=_ame_[1];
           return decompile_if(ds,to_cmd,c,l,r$0);
          case 30:var e$4=_ame_[2],e$0=e$4;continue
          }
        var _aml_=caml_call1(Michel_Expr[59],e$0);
        return sp_failwith
                (line_no$1,
                 err_expr
                  (caml_call3(Stdlib_format[127],_ahH_,Michel_Expr[64],_aml_)))}}
    function assign_to(ds,xs,rhs)
     {var _alx_=rhs[1];
      switch(_alx_[0])
       {case 1:
         var _al0_=_alx_[1];
         if(0 === _al0_[0])
          {var u=_alx_[3],t=_alx_[2],y$3=_al0_[1];
           if(y$3)
            var
             y$4=y$3[1],
             _al1_=function(_amd_){return defineLocal(line_no$1,y$4,_amd_)},
             c=caml_call1(with_cmd(ds,0,t),_al1_);
           else
            var c=to_cmd(ds,t);
           return seq$1([0,c,[0,assign_to(ds,xs,u),0]])}
         break;
        case 6:if(! _alx_[1])return to_cmd(ds,rhs);break;
        case 17:
         var clauses=_alx_[2],scrutinee=_alx_[1];
         return caml_call1
                 (decompile_match_variant
                   (ds,caml_call2(Utils_Control[3],assign_to,xs),scrutinee),
                  clauses);
        case 21:
         var r=_alx_[3],l=_alx_[2],c$0=_alx_[1];
         return decompile_if
                 (ds,caml_call2(Utils_Control[3],assign_to,xs),c$0,l,r)
        }
      if(xs)
       {var _aly_=xs[1],_alz_=xs[2];
        if(_alz_ && ! _alz_[2] && 7 === _alx_[0])
         {var _alY_=_alx_[1];
          if(typeof _alY_ !== "number" && 1 !== _alY_[0])
           {var
             y$1=_alx_[3],
             x$2=_alx_[2],
             y$2=_alz_[1],
             _alZ_=[0,assign_to(ds,[0,y$2,0],y$1),0];
            return seq$1([0,assign_to(ds,[0,_aly_,0],x$2),_alZ_])}}
        if(_aly_)
         {var _alA_=xs[2],_alB_=_aly_[1];
          if(! _alA_)
           {if(18 === _alx_[0])
             {var _alW_=_alx_[1];
              if(_alW_ && ! _alW_[2])
               {var
                 x$1=_alW_[1],
                 _alX_=function(x){return seq$1([0,set$6(_alB_,x),0])};
                return caml_call1(with_cmd(ds,0,x$1),_alX_)}}
            var _alV_=function(_amc_){return set$6(_alB_,_amc_)};
            return caml_call1(with_cmd(ds,0,rhs),_alV_)}
          var _alC_=_alA_[1];
          if(_alC_)
           {var _alD_=_alA_[2],_alE_=_alC_[1];
            if(! _alD_)
             {if(18 === _alx_[0])
               {var _alS_=_alx_[1];
                if(_alS_)
                 {var _alT_=_alS_[2];
                  if(_alT_ && ! _alT_[2])
                   {var
                     y$0=_alT_[1],
                     x$0=_alS_[1],
                     _alU_=
                      function(x)
                       {var _al$_=0;
                        function _ama_(y){return set$6(_alE_,y)}
                        var _amb_=[0,caml_call1(with_cmd(ds,0,y$0),_ama_),_al$_];
                        return seq$1([0,set$6(_alB_,x),_amb_])};
                    return caml_call1(with_cmd(ds,0,x$0),_alU_)}}}
              var
               _alR_=
                function(rhs)
                 {var _al__=[0,set$6(_alE_,sp_snd(rhs)),0];
                  return seq$1([0,set$6(_alB_,sp_fst(rhs)),_al__])};
              return caml_call1(with_cmd(ds,0,rhs),_alR_)}
            var _alF_=_alD_[1];
            if(_alF_ && ! _alD_[2])
             {var _alL_=_alF_[1];
              if(18 === _alx_[0])
               {var _alN_=_alx_[1];
                if(_alN_)
                 {var _alO_=_alN_[2];
                  if(_alO_)
                   {var _alP_=_alO_[2];
                    if(_alP_ && ! _alP_[2])
                     {var
                       z=_alP_[1],
                       y=_alO_[1],
                       x=_alN_[1],
                       _alQ_=
                        function(x)
                         {var _al4_=0;
                          function _al5_(y)
                           {var _al7_=0;
                            function _al8_(z){return set$6(_alL_,z)}
                            var _al9_=[0,caml_call1(with_cmd(ds,0,z),_al8_),_al7_];
                            return seq$1([0,set$6(_alE_,y),_al9_])}
                          var _al6_=[0,caml_call1(with_cmd(ds,0,y),_al5_),_al4_];
                          return seq$1([0,set$6(_alB_,x),_al6_])};
                      return caml_call1(with_cmd(ds,0,x),_alQ_)}}}}
              var
               _alM_=
                function(rhs)
                 {var
                   _al2_=[0,set$6(_alL_,proj(line_no$1,2,rhs)),0],
                   _al3_=[0,set$6(_alE_,proj(line_no$1,1,rhs)),_al2_];
                  return seq$1([0,set$6(_alB_,proj(line_no$1,0,rhs)),_al3_])};
              return caml_call1(with_cmd(ds,0,rhs),_alM_)}}}}
      var
       _alG_=caml_call1(Michel_Expr[59],rhs),
       _alH_=Michel_Expr[64],
       _alI_=caml_call1(Utils_Option[10],pp$5),
       _alJ_=caml_call1(Utils_List[2],_alI_),
       _alK_=caml_call5(Stdlib_format[127],_ahJ_,_alJ_,xs,_alH_,_alG_);
      return caml_call1(Stdlib[2],_alK_)}
    function decompile_match_variant(ds,f,s)
     {return function(b)
       {if(1 === b[0])
         {var _alj_=b[1];
          if(0 === _alj_[0])
           {var
             _alk_=b[2],
             _all_=_alj_[1],
             _alo_=_all_[1],
             _alm_=_all_[3],
             _aln_=_all_[2];
            if(0 === _alk_[0])
             {var
               match=_alk_[1],
               r=match[3],
               vr=match[2],
               cr$0=match[1],
               _alp_=caml_call2(Michel_Transformer[1],ds[1],cst_l$1),
               vl=caml_call2(Utils_Option[45],_alp_,_aln_),
               _alq_=caml_call2(Michel_Transformer[1],ds[1],cst_r$3),
               vr$0=caml_call2(Utils_Option[45],_alq_,vr),
               _alr_=ds[2],
               _als_=[0,[0,vr$0,match_cons(line_no$1,vr$0)],_alr_],
               env=[0,[0,vl,match_cons(line_no$1,vl)],_als_],
               ds$0=[0,ds[1],env],
               switch$0=0;
              if
               (_alo_
                &&
                !
                caml_string_notequal(_alo_[1],cst_None$82)
                &&
                cr$0
                &&
                !
                caml_string_notequal(cr$0[1],cst_Some$74))
               {var cr$1=_ahL_[2],cl$0=_ahL_[1];switch$0 = 1}
              if(! switch$0)var cr$1=cr,cl$0=cl;
              var
               _alt_=
                function(s)
                 {var _alw_=[0,[0,cr$1,vr$0,caml_call2(f,ds$0,r)],0];
                  return mk_match
                          (line_no$1,s,[0,[0,cl$0,vl,caml_call2(f,ds$0,_alm_)],_alw_])};
              return caml_call1(with_cmd(ds$0,0,s),_alt_)}}}
        var b$0=caml_call1(Utils_Binary_tree[41],b);
        function g(param)
         {var
           rhs=param[3],
           var$0=param[2],
           cons=param[1],
           _alu_=caml_call2(Michel_Transformer[1],ds[1],cst_x$6),
           var$1=caml_call2(Utils_Option[45],_alu_,var$0),
           _alv_=ds[2],
           env=[0,[0,var$1,match_cons(line_no$1,var$1)],_alv_];
          if(cons)
           {var cons$0=cons[1];
            return [0,cons$0,var$1,caml_call2(f,[0,ds[1],env],rhs)]}
          throw [0,Assert_failure,_ahK_]}
        function _ali_(s)
         {return mk_match(line_no$1,s,caml_call2(Utils_List[20],g,b$0))}
        return caml_call1(with_cmd(ds,0,s),_ali_)}}
    function row_to_variant(t)
     {if(0 === t[0]){var match=t[1],t$0=match[2];return t$0}
      return caml_call1(Michel_Type[38],t)}
    function smartML_of_michel(config,param)
     {var
       match$0=param[1],
       body$0=match$0[4],
       tstorage=match$0[2],
       tparameter$0=match$0[1],
       st=[0,[0,0]],
       _ak6_=body$0[1];
      if(1 === _ak6_[0])
       {var _ak7_=_ak6_[1];
        if(0 === _ak7_[0])
         {var _ak8_=_ak7_[1];
          if(_ak8_ && ! caml_string_notequal(_ak8_[1],cst_parameter$11))
           {var _ak9_=_ak6_[3][1];
            if(1 === _ak9_[0])
             {var _ak__=_ak9_[1];
              if(0 === _ak__[0])
               {var _ak$_=_ak__[1];
                if(_ak$_ && ! caml_string_notequal(_ak$_[1],cst_storage$33))
                 {var
                   body=_ak9_[3],
                   tparameter=tparameter$0[1],
                   _ala_=body[1],
                   switch$0=0;
                  if(17 === _ala_[0])
                   {var _alb_=_ala_[1][1];
                    if
                     (0
                      ===
                      _alb_[0]
                      &&
                      !
                      caml_string_notequal(_alb_[1],cst_parameter$12)
                      &&
                      4
                      ===
                      tparameter[0])
                     {var
                       row=tparameter[1],
                       clauses=_ala_[2],
                       match=caml_call2(Utils_Binary_tree[48],clauses,row);
                      if(! match)throw [0,Assert_failure,_ahO_];
                      var
                       xs=match[1],
                       _alc_=caml_call1(Utils_Binary_tree[41],xs),
                       _ald_=caml_call1(Utils_Control[5],row_to_variant),
                       clauses_with_params=caml_call2(Utils_List[20],_ald_,_alc_);
                      switch$0 = 1}}
                  if(! switch$0)
                   var
                    clauses_with_params=
                     [0,[0,[0,0,_ahN_,body],tparameter],0];
                  var
                   tstorage_explicit=[0,smartML_of_type(1,tstorage)],
                   storage$0=storage(line_no$1),
                   mk_entry_point=
                    function(i,param)
                     {var
                       tparameter_ep=param[2],
                       match=param[1],
                       rhs=match[3],
                       var$0=match[2],
                       cons=match[1],
                       tparameter_ep$0=smartML_of_type(0,tparameter_ep),
                       params$0=params(line_no$1),
                       _ale_=[0,[0,cst_storage$34,storage$0],0];
                      function _alf_(v){return [0,[0,v,params$0],0]}
                      var
                       _alg_=caml_call3(Utils_Option[12],0,_alf_,var$0),
                       env=caml_call2(Stdlib[37],_alg_,_ale_),
                       lhs=[0,[0,operations(line_no$1)],[0,[0,storage$0],0]],
                       body=assign_to([0,st,env],lhs,rhs),
                       body$0=
                        seq$1
                         ([0,setType(line_no$1,params$0,tparameter_ep$0),[0,body,0]]),
                       body$1=caml_call1(embellish(config),body$0);
                      get$0(config);
                      var
                       _alh_=caml_call2(Stdlib_printf[4],_ahP_,i),
                       channel=caml_call2(Utils_Option[45],_alh_,cons);
                      return [0,channel,120414939,1,0,0,0,body$1,0]},
                   entry_points=
                    caml_call2
                     (Utils_List[21],mk_entry_point,clauses_with_params),
                   contract=
                    [0,0,0,0,0,tstorage_explicit,entry_points,0,0,0,0,0,0,0],
                   match$1=caml_call1(check_contract$0(config),[0,contract]),
                   tcontract=match$1[1],
                   state=[0,caml_call1(Utils_Bigint[5],0),0,0,0,0];
                  return [0,[0,tcontract],state]}}}}}}
      throw [0,Assert_failure,_ahM_]}
    var Smartml_Decompiler=[0,smartML_of_michel];
    caml_register_global(6531,Smartml_Decompiler,"Smartml__Decompiler");
    function noop(param){return 0}
    function appendIn(param,s)
     {var buffer=param[4],html=param[3];
      return caml_call3(Stdlib_printf[5],buffer,_ahQ_,s)}
    function appendOut(param,s)
     {var out=param[6];
      if(out){var h=out[1];return caml_call3(Stdlib_printf[1],h,_ahR_,s)}
      return 0}
    function appendError(ctxt,severity,msg_out,msg_full)
     {ctxt[7][1] = [0,[0,severity,msg_full],ctxt[7][1]];
      return appendOut(ctxt,msg_out)}
    function closeOut(ctxt)
     {return ctxt[3]
              ?function(param)
                {var _ak5_=ctxt[5];
                 if(_ak5_)
                  {var
                    od=_ak5_[1],
                    html=caml_call1(Stdlib_buffer[2],ctxt[4]),
                    html$0=wrap_html_document(ctxt[8],html),
                    match=
                     write_html
                      (caml_call3(Stdlib_printf[4],_ahS_,od,name$3),html$0),
                    l=match[2],
                    name=match[1];
                   return appendOut
                           (ctxt,caml_call3(Stdlib_printf[4],_ahT_,name,l))}
                 return setOutput(caml_call1(Stdlib_buffer[2],ctxt[4]))}
              :noop}
    function with_file(id,ctxt,step,name,w,x)
     {var Printer=get$0(ctxt[1]),_ak3_=ctxt[5];
      if(_ak3_)
       {var
         od=_ak3_[1],
         _ak4_=caml_call1(Printer[27],id),
         name$0=caml_call5(Stdlib_printf[4],_ahU_,od,step,_ak4_,name),
         match=caml_call2(w,name$0,x),
         l=match[2],
         name$1=match[1];
        return appendOut(ctxt,caml_call3(Stdlib_printf[4],_ahV_,name$1,l))}
      return 0}
    function update_contract(config,scenario_state,id,contract)
     {caml_call3(Stdlib_hashtbl[11],scenario_state[1],id,contract);
      return update_contract_address(config,scenario_state,id)}
    function make_toc(in_browser,actions)
     {function prep(param)
       {var action=param[2],step=param[1];
        if(5 === action[0])
         {var
           inner=action[2],
           tag=action[1],
           toc=function(i){return [0,[0,i,step,inner]]};
          return caml_string_notequal(tag,cst_h1)
                  ?caml_string_notequal(tag,cst_h2)
                    ?caml_string_notequal(tag,cst_h3)
                      ?caml_string_notequal(tag,cst_h4)?0:toc(4)
                      :toc(3)
                    :toc(2)
                  :toc(1)}
        return 0}
      var table_of_contents=caml_call2(Utils_List[78],prep,actions);
      function goto$0(d$0,d,l)
       {var x=[0,d$0];
        for(;;)
         {if(x[1] !== d)
           {if(x[1] < d){if(in_browser)l[1] = [0,cst_ul,l[1]];x[1]++;continue}
            if(in_browser)l[1] = [0,cst_ul$0,l[1]];
            x[1] += -1;
            continue}
          return 0}}
      function _akZ_(param,_ak1_)
       {var
         s=_ak1_[3],
         id=_ak1_[2],
         d=_ak1_[1],
         l=param[2],
         d$0=param[1],
         l$0=[0,l];
        goto$0(d$0,d,l$0);
        if(in_browser)
         var link=caml_call3(Stdlib_printf[4],_ahX_,id,s);
        else
         var
          _ak2_=caml_call3(Utils_String[4],cst$347,0,d),
          link=caml_call3(Stdlib_printf[4],_ahY_,_ak2_,s);
        return [0,d,[0,link,l$0[1]]]}
      var
       match=caml_call3(Utils_List[25],_akZ_,_ahW_,table_of_contents),
       table_of_contents$0=match[2],
       d=match[1],
       table_of_contents$1=[0,table_of_contents$0];
      goto$0(d,1,table_of_contents$1);
      var _ak0_=caml_call1(Utils_List[12],table_of_contents$1[1]);
      return caml_call2(Utils_String[7],cst$348,_ak0_)}
    function parse_address(config,primitives,scenario_state,param)
     {if(0 === param[0]){var x=param[1];return x[1]}
      var address=param[1];
      function pp(param)
       {return [0,
                _ahZ_,
                [0,[0,771172693,address],[0,[0,848053268,address[3]],0]]]}
      return unAddress
              (pp,
               caml_call1
                (interpret_expr_external
                  (config,primitives,pp(0),scenario_state),
                 address))}
    function handle_new_contract
     (ctxt,
      scenario_state,
      output_in,
      step,
      id,
      line_no,
      instance,
      accept_unknown_types,
      show)
     {var primitives=ctxt[2],config=ctxt[1],Printer=get$0(config);
      function appendOut$0(_akY_){return appendOut(ctxt,_akY_)}
      function appendError$0(_akV_,_akW_,_akX_)
       {return appendError(ctxt,_akV_,_akW_,_akX_)}
      function with_file$0(name)
       {return function(_akT_,_akU_)
         {return with_file(id,ctxt,step,name,_akT_,_akU_)}}
      var contract=reduce_instance(config,primitives,scenario_state,instance);
      update_contract(config,scenario_state,id,contract);
      appendOut$0(cst_Creating_contract);
      var
       _akc_=scenario_state[6],
       compiled_contract=
        compile_instance
         ([0,
           _akc_[1],
           0,
           _akc_[3],
           _akc_[4],
           _akc_[5],
           _akc_[6],
           _akc_[7],
           _akc_[8],
           _akc_[9],
           _akc_[10],
           _akc_[11],
           _akc_[12],
           _akc_[13],
           _akc_[14],
           _akc_[15],
           _akc_[16],
           _akc_[17]],
          contract);
      if(scenario_state[6][2])
       {var
         match=simplify_via_michel(config,compiled_contract),
         michelson=match[2],
         michel=match[1];
        if(scenario_state[6][14])
         caml_call2
          (with_file$0(cst_pre_michelson),write_contract_michel,michel);
        var compiled_contract$0=michelson}
      else
       var compiled_contract$0=compiled_contract;
      var
       _akd_=
        caml_call3
         (Base_Option[37],
          compiled_contract$0[5],
          cst_missing_storage$2,
          string_of_tliteral);
      appendOut$0(caml_call2(Stdlib[28],cst$349,_akd_));
      var _ake_=ctxt[3],show$0=_ake_?show:_ake_;
      if(show$0)
       {var _akf_=config[17];
        if(_akf_)var x=_akf_[1],def=show_language(x);else var def=cst_Types$0;
        var
         _akg_=caml_call1(Printer[27],id),
         _akh_=caml_call3(Stdlib_printf[4],_ah0_,_akg_,step),
         x$0=
          render
           (full_html
             (scenario_state[6],
              contract,
              compiled_contract$0,
              def,
              0,
              _akh_,
              line_no,
              accept_unknown_types,
              [0,id]));
        output_in[1] = [0,x$0,output_in[1]]}
      var
       contract_micheline=to_micheline_tcontract(compiled_contract$0),
       _aki_=compiled_contract$0[5];
      function _akj_(x)
       {var _akS_=caml_call1(erase_types_literal,x);
        return [0,x,caml_call1(_Ju_[1],_akS_)]}
      var
       storage_with_micheline=caml_call2(Utils_Option[17],_akj_,_aki_),
       _akk_=caml_call1(Utils_Option[47],ctxt[5]);
      if(_akk_)
       {if(storage_with_micheline)
         {var
           match$0=storage_with_micheline[1],
           storage_micheline=match$0[2],
           storage=match$0[1],
           _akl_=caml_call1(erase_types_literal,storage);
          caml_call2(with_file$0(name$4),write_mliteral,_akl_);
          caml_call2(with_file$0(name$4),write_micheline,storage_micheline)}
        var
         _akm_=[0,[0,cst_contract$10,[0,contract_micheline]],0],
         _akn_=function(_akR_){return _akR_[2]},
         sizes=
          [0,
           [0,
            cst_storage$35,
            caml_call2(Utils_Option[17],_akn_,storage_with_micheline)],
           _akm_],
         get_size=
          function(param)
           {var x=param[2],name=param[1];
            try
             {var
               _akN_=0,
               _akO_=
                function(x)
                 {var _akQ_=micheline_size(x);
                  return caml_call2(Stdlib_printf[4],_ah1_,_akQ_)},
               _akP_=
                [0,
                 name,
                 [0,caml_call3(Utils_Option[3],cst_missing,_akO_,x),_akN_]];
              return _akP_}
            catch(exn)
             {exn = caml_wrap_exception(exn);
              if(exn[1] === Stdlib[7]){var s=exn[2];return [0,name,[0,s,0]]}
              throw exn}},
         _ako_=caml_call2(Utils_List[20],get_size,sizes);
        caml_call2(with_file$0(name$5),write_csv,_ako_);
        var _akp_=contract[2][2];
        if(_akp_)
         {var storage$0=_akp_[1];
          caml_call2(with_file$0(name$6),write_tvalue,storage$0)}
        caml_call2(with_file$0(name$7),write_contract_types,contract);
        var
         write_metadata_file=
          function(param)
           {var metadata=param[2],name=param[1];
            return caml_call2
                    (with_file$0(caml_call2(Stdlib[28],cst_metadata$2,name)),
                     write_metadata,
                     metadata)},
         _akq_=for_contract(scenario_state[6],contract);
        caml_call2(Utils_List[18],write_metadata_file,_akq_);
        var
         match$1=
          has_error_tcontract(accept_unknown_types,compiled_contract$0);
        if(match$1)
         appendError$0(-685964740,cst_Error_in_generated_contrac,_ah2_);
        var _akr_=contract[1][1][8],switch$0=0;
        if(_akr_)
         {var msg=_akr_[1];
          if(! accept_unknown_types)
           {var
             _akz_=-685964740,
             _akA_=
              function(_akL_,_akM_){return appendError$0(_akz_,_akL_,_akM_)};
            caml_call4(Stdlib_printf[9],_akA_,_ah4_,msg,_ah3_);
            switch$0 = 1}}
        caml_call2
         (with_file$0(name$8),write_contract_michelson,compiled_contract$0);
        caml_call2(with_file$0(name$8),write_micheline,contract_micheline);
        var
         _aks_=config[17],
         _akt_=
          function(language)
           {function _akD_(eta)
             {var _akJ_=0;
              return function(_akK_)
               {return write_pretty(language,_akJ_,eta,_akK_)}}
            caml_call2(with_file$0(name$8),_akD_,contract);
            var _akE_=ctxt[3];
            if(_akE_)
             {var
               _akF_=ctxt[8],
               _akG_=
                function(_akH_,_akI_)
                 {return write_pretty_html(language,_akF_,_akH_,_akI_)};
              return caml_call2(with_file$0(name$8),_akG_,contract)}
            return _akE_};
        caml_call2(Utils_List[18],_akt_,_aks_);
        var _aku_=scenario_state[6][3];
        if(_aku_)
         {var
           st=[0,[0,0]],
           c=decompile_contract(st,compiled_contract$0),
           contract_michel=caml_call2(Michel_Transformer[4],st,c);
          caml_call2
           (with_file$0(cst_pre_smartml),
            write_contract_michel,
            contract_michel);
          var match$2=caml_call1(Michel_Typing[4],contract_michel);
          if(0 === match$2[0])
           {var
             c$0=match$2[1],
             decompiled=smartML_of_michel(scenario_state[6],c$0),
             _akv_=[0,suffix],
             _akw_=0,
             _akx_=
              function(_akB_,_akC_)
               {return write_pretty(_akw_,_akv_,_akB_,_akC_)};
            return caml_call2(with_file$0(cst_decompiled),_akx_,decompiled)}
          var msg$0=match$2[1];
          throw [0,SmartExcept,[0,[0,936573133,msg$0],0]]}
        var _aky_=_aku_}
      else
       var _aky_=_akk_;
      return _aky_}
    function handle_set_delegate(config,scenario_state,id,line_no,baker)
     {var
       Printer=get$0(config),
       match=caml_call2(Stdlib_hashtbl[7],scenario_state[1],id);
      if(match)
       {var contract=match[1],state=contract[2],template=contract[1];
        return update_contract
                (config,
                 scenario_state,
                 id,
                 [0,template,[0,state[1],state[2],baker,state[4],state[5]]])}
      var _akb_=caml_call1(Printer[27],id);
      throw [0,
             SmartExcept,
             [0,
              [0,936573133,caml_call2(Stdlib_printf[4],_ah5_,_akb_)],
              [0,[0,848053268,line_no],0]]]}
    function handle_message
     (queue,
      reverted,
      ctxt,
      output_in,
      scenario_state,
      step,
      id,
      params,
      params_expr,
      line_no,
      title,
      messageClass,
      sender,
      source,
      chain_id,
      time,
      amount,
      level,
      voting_powers_expr,
      message,
      show,
      export$0)
     {var primitives=ctxt[2];
      function appendOut$0(_aka_){return appendOut(ctxt,_aka_)}
      function with_file$0(_aj8_)
       {return function(_aj9_,_aj__,_aj$_)
         {return with_file(_aj8_,ctxt,step,_aj9_,_aj__,_aj$_)}}
      var
       Printer=get$0(ctxt[1]),
       match=caml_call2(Stdlib_hashtbl[7],scenario_state[1],id);
      if(match)
       {var
         contract=match[1],
         pp=
          function(param)
           {return [0,
                    _ah6_,
                    [0,
                     [0,771172693,voting_powers_expr],
                     [0,[0,848053268,voting_powers_expr[3]],0]]]},
         _ajS_=pp(0),
         _ajT_=
          unMap
           (pp,
            caml_call1
             (interpret_expr_external(ctxt[1],primitives,_ajS_,scenario_state),
              voting_powers_expr)),
         _ajU_=
          function(param)
           {var v=param[2],k=param[1],_aj7_=unInt$0(pp,v);
            return [0,unKey_hash(pp,k),_aj7_]},
         voting_powers=caml_call2(Utils_List[20],_ajU_,_ajT_),
         _ajV_=
          context
           ([0,id],
            sender,
            source,
            chain_id,
            time,
            amount,
            level,
            voting_powers,
            line_no,
            0,
            0),
         _ajW_=
          caml_string_notequal(messageClass,cst$350)
           ?caml_call2(Stdlib[28],cst$351,messageClass)
           :messageClass,
         result=
          execMessageInner
           (scenario_state[6],
            primitives,
            scenario_state,
            title,
            _ajW_,
            _ajV_,
            contract,
            message,
            params);
        if(export$0)
         {caml_call3(with_file$0(id),name$9,write_tvalue,params);
          var params$0=compile_value(scenario_state[6],params);
          caml_call3(with_file$0(id),name$9,write_mliteral,params$0);
          var params$1=caml_call1(_Ju_[1],params$0);
          caml_call3(with_file$0(id),name$9,write_micheline,params$1)}
        if(params_expr)
         {var
           params_expr$0=params_expr[1],
           _ajX_=caml_call3(Printer[14],0,0,params_expr$0);
          appendOut$0(caml_call3(Stdlib_printf[4],_ah7_,message,_ajX_))}
        else
         {var _aj2_=caml_call4(Printer[4],0,0,0,params);
          appendOut$0(caml_call3(Stdlib_printf[4],_ah$_,message,_aj2_))}
        if(show)output_in[1] = [0,result[5],output_in[1]];
        var _ajY_=result[4];
        if(_ajY_){var error=_ajY_[1];reverted[1] = [0,error];return 0}
        var contract$0=caml_call4(Base_Option[41],0,0,_ah8_,result[2]);
        update_contract(ctxt[1],scenario_state,id,contract$0);
        var
         _ajZ_=contract$0[2][2],
         _aj0_=
          function(x)
           {return string_of_literal(compile_value(scenario_state[6],x))},
         storage=
          caml_call3(Utils_Option[12],cst_missing_storage$3,_aj0_,_ajZ_);
        appendOut$0(caml_call2(Stdlib_printf[4],_ah9_,storage));
        var
         sender$0=[0,get_contract_address(ctxt[1],scenario_state,id)],
         update_balance=
          function(param)
           {if(0 === param[0])
             {var
               amount=param[3],
               _aj5_=caml_call2(Stdlib_hashtbl[6],scenario_state[1],id)[2][1],
               balance=caml_call2(Big_int[8],_aj5_,amount);
              if(caml_call2(Big_int[23],balance,Big_int[1]) < 0)
               throw [0,SmartExcept,[0,_ah__,[0,[0,848053268,line_no],0]]];
              var _aj6_=contract$0[2];
              return update_contract
                      (ctxt[1],
                       scenario_state,
                       id,
                       [0,
                        contract$0[1],
                        [0,balance,_aj6_[2],_aj6_[3],_aj6_[4],_aj6_[5]]])}
            return 0};
        caml_call2(Utils_List[18],update_balance,result[3]);
        var
         f=
          function(op)
           {var _aj4_=caml_call2(Printer[22],0,op);
            appendOut$0(caml_call2(Stdlib[28],cst$352,_aj4_));
            return [0,
                    id,
                    line_no,
                    title,
                    messageClass,
                    source,
                    sender$0,
                    chain_id,
                    time,
                    level,
                    voting_powers_expr,
                    scenario_state,
                    op]},
         todo=caml_call2(Utils_List[20],f,result[3]),
         depth_first=2 <= scenario_state[6][6]?1:0,
         _aj1_=
          depth_first
           ?caml_call2(Stdlib[37],todo,queue[1])
           :caml_call2(Stdlib[37],queue[1],todo);
        queue[1] = _aj1_;
        return 0}
      var _aj3_=caml_call1(Printer[27],id);
      throw [0,
             SmartExcept,
             [0,
              [0,936573133,caml_call2(Stdlib_printf[4],_aia_,_aj3_)],
              [0,[0,848053268,line_no],0]]]}
    function _aiH_(ctxt,global_state)
     {var primitives=ctxt[2],config=ctxt[1];
      function appendIn$0(_ajR_){return appendIn(ctxt,_ajR_)}
      function appendOut$0(_ajQ_){return appendOut(ctxt,_ajQ_)}
      function appendError$0(_ajN_,_ajO_,_ajP_)
       {return appendError(ctxt,_ajN_,_ajO_,_ajP_)}
      caml_call1(Stdlib_hashtbl[2],simulatedContracts);
      var Printer=get$0(config),options=ctxt[5]?Printer[1][1]:Printer[1][2];
      try
       {var
         global_state$0=[0,global_state],
         _aje_=ctxt[9],
         _ajf_=
          function(param)
           {var
             action=param[2],
             step=param[1],
             reverted=[0,0],
             queue=[0,0],
             state=copy_scenario_state(global_state$0[1]),
             output_in=[0,0],
             primitives$0=ctxt[2],
             config$0=ctxt[1],
             Printer$0=get$0(config$0);
            function appendIn$1(_ajM_){return appendIn(ctxt,_ajM_)}
            function appendOut$1(_ajL_){return appendOut(ctxt,_ajL_)}
            function appendError$1(_ajI_,_ajJ_,_ajK_)
             {return appendError(ctxt,_ajI_,_ajJ_,_ajK_)}
            switch(action[0])
             {case 0:
               var
                show=action[5],
                accept_unknown_types=action[4],
                line_no=action[3],
                contract=action[2],
                id=action[1],
                instance=
                 interpret_contract(ctxt[1],primitives$0,state,[0,contract]);
               handle_new_contract
                (ctxt,
                 state,
                 output_in,
                 step,
                 id,
                 line_no,
                 instance,
                 accept_unknown_types,
                 show);
               break;
              case 1:
               var
                line_no$0=action[3],
                expression=action[2],
                id$0=action[1],
                value=
                 caml_call1
                  (interpret_expr_external
                    (config$0,
                     primitives$0,
                     [0,
                      _aib_,
                      [0,[0,771172693,expression],[0,[0,848053268,line_no$0],0]]],
                     state),
                   expression);
               caml_call3(Stdlib_hashtbl[11],state[2],id$0,value);
               break;
              case 2:
               var
                line_no$1=action[2],
                id$1=action[1],
                match=caml_call2(Stdlib_hashtbl[7],state[1],id$1);
               if(! match)throw [0,Assert_failure,_aic_];
               var contract$0=match[1];
               appendIn$1(render(simulation(contract$0,step,line_no$1)));
               break;
              case 3:
               var
                export$0=action[17],
                show$0=action[16],
                message=action[15],
                voting_powers=action[14],
                level=action[13],
                amount=action[12],
                time=action[11],
                chain_id=action[10],
                sender=action[9],
                source=action[8],
                messageClass=action[7],
                title=action[6],
                line_no$2=action[5],
                params=action[4],
                id$2=action[1];
               if(time)
                var
                 time$0=time[1],
                 pp=
                  function(param)
                   {return [0,
                            _aid_,
                            [0,[0,771172693,time$0],[0,[0,848053268,time$0[3]],0]]]},
                 time$1=
                  unTimestamp
                   (pp,
                    caml_call1
                     (interpret_expr_external(config$0,primitives$0,pp(0),state),
                      time$0));
               else
                var time$1=state[7];
               state[7] = time$1;
               if(level)
                var
                 level$0=level[1],
                 pp$0=
                  function(param)
                   {return [0,
                            _aie_,
                            [0,[0,771172693,level$0],[0,[0,848053268,level$0[3]],0]]]},
                 level$1=
                  unInt$0
                   (pp$0,
                    caml_call1
                     (interpret_expr_external
                       (config$0,primitives$0,pp$0(0),state),
                      level$0));
               else
                var level$1=state[8];
               state[8] = level$1;
               var
                _ajg_=
                 function(_ajH_)
                  {return parse_address(config$0,primitives$0,state,_ajH_)},
                sender$0=caml_call2(Utils_Option[17],_ajg_,sender),
                _ajh_=
                 function(_ajG_)
                  {return parse_address(config$0,primitives$0,state,_ajG_)},
                source$0=caml_call2(Utils_Option[17],_ajh_,source),
                pp$1=
                 function(param)
                  {return [0,
                           _aif_,
                           [0,[0,771172693,amount],[0,[0,848053268,amount[3]],0]]]},
                amount$0=
                 unMutez
                  (pp$1,
                   caml_call1
                    (interpret_expr_external
                      (config$0,primitives$0,pp$1(0),state),
                     amount)),
                params_value=
                 caml_call1
                  (interpret_expr_external
                    (ctxt[1],
                     primitives$0,
                     [0,
                      _aig_,
                      [0,[0,771172693,params],[0,[0,848053268,params[3]],0]]],
                     state),
                   params),
                parse_chain_id=
                 function(chain_id)
                  {function pp(param)
                    {return [0,
                             _aih_,
                             [0,[0,771172693,chain_id],[0,[0,848053268,chain_id[3]],0]]]}
                   var _ajF_=pp(0);
                   return unChain_id
                           (pp,
                            caml_call1
                             (interpret_expr_external(ctxt[1],primitives$0,_ajF_,state),
                              chain_id))};
               handle_message
                (queue,
                 reverted,
                 ctxt,
                 output_in,
                 state,
                 step,
                 id$2,
                 params_value,
                 [0,params],
                 line_no$2,
                 title,
                 messageClass,
                 sender$0,
                 source$0,
                 caml_call2(Utils_Option[17],parse_chain_id,chain_id),
                 time$1,
                 amount$0,
                 level$1,
                 voting_powers,
                 message,
                 show$0,
                 export$0);
               break;
              case 4:
               var message$0=action[1];
               appendError$1
                (106380200,
                 caml_call2(Stdlib_printf[4],_aij_,message$0),
                 [0,_aii_,[0,[0,936573133,message$0],0]]);
               break;
              case 5:
               var inner=action[2],tag=action[1];
               if(caml_string_equal(inner,cst_TABLEOFCONTENTS))
                {appendOut$1(cst_Table_Of_Contents);
                 var
                  table_of_contents=make_toc(0,ctxt[9]),
                  table_of_contents_html=make_toc(1,ctxt[9]);
                 appendOut$1(table_of_contents);
                 appendIn$1
                  (caml_call4
                    (Stdlib_printf[4],_aik_,tag,table_of_contents_html,tag))}
               else
                {var switch$0=0;
                 if
                  (caml_string_notequal(tag,cst_h1$0)
                   &&
                   caml_string_notequal(tag,cst_h2$0)
                   &&
                   caml_string_notequal(tag,cst_h3$0)
                   &&
                   caml_string_notequal(tag,cst_h4$0))
                  switch$0 = 1;
                 if(! switch$0)
                  appendIn$1(caml_call2(Stdlib_printf[4],_ain_,step));
                 appendOut$1(cst_Comment);
                 appendOut$1(caml_call3(Stdlib_printf[4],_ail_,tag,inner));
                 appendIn$1(caml_call4(Stdlib_printf[4],_aim_,tag,inner,tag))}
               break;
              case 6:
               var
                line_no$3=action[2],
                condition=action[1],
                _aji_=caml_call3(Printer$0[14],0,0,condition);
               appendOut$1(caml_call2(Stdlib_printf[4],_aio_,_aji_));
               var
                value$0=
                 caml_call1
                  (interpret_expr_external
                    (config$0,
                     primitives$0,
                     [0,
                      _aip_,
                      [0,[0,771172693,condition],[0,[0,848053268,condition[3]],0]]],
                     state),
                   condition),
                result=bool_of_value(value$0);
               if(result)
                appendOut$1(cst_OK$0);
               else
                {var _ajj_=caml_call3(Printer$0[14],0,0,condition);
                 appendIn$1(caml_call2(Stdlib_printf[4],_aiq_,_ajj_));
                 appendError$1
                  (106380200,
                   cst_KO$0,
                   [0,
                    _ais_,
                    [0,
                     14832,
                     [0,
                      [0,771172693,condition],
                      [0,14832,[0,_air_,[0,[0,848053268,line_no$3],0]]]]]])}
               break;
              case 7:
               var
                compile=action[4],
                stripStrings=action[3],
                html=action[2],
                expression$0=action[1],
                _ajk_=caml_call3(Printer$0[14],0,0,expression$0);
               appendOut$1(caml_call2(Stdlib_printf[4],_ait_,_ajk_));
               var
                value$1=
                 caml_call1
                  (interpret_expr_external
                    (config$0,
                     primitives$0,
                     [0,
                      _aiu_,
                      [0,
                       [0,771172693,expression$0],
                       [0,[0,848053268,expression$0[3]],0]]],
                     state),
                   expression$0);
               if(compile)
                {var
                  expression$1=compile_value(state[6],value$1),
                  expression_micheline=caml_call1(_Ju_[1],expression$1),
                  with_file=
                   function(name,w,x)
                    {var _ajE_=ctxt[5];
                     if(_ajE_)
                      {var
                        od=_ajE_[1],
                        name$0=caml_call4(Stdlib_printf[4],_aiv_,od,step,name),
                        match=caml_call2(w,name$0,x),
                        l=match[2],
                        name$1=match[1];
                       return appendOut$1
                               (caml_call3(Stdlib_printf[4],_aiw_,name$1,l))}
                     return 0};
                 with_file(name$10,write_tvalue,value$1);
                 with_file(name$10,write_mliteral,expression$1);
                 with_file(name$10,write_micheline,expression_micheline)}
               var
                result$0=
                 caml_call4(Printer$0[4],0,0,[0,Printer$0[1][1]],value$1),
                options$0=
                 html
                  ?stripStrings?Printer$0[1][3]:Printer$0[1][2]
                  :Printer$0[1][1],
                _ajl_=caml_call4(Printer$0[4],0,0,[0,options$0],value$1);
               appendIn$1(caml_call2(Stdlib_printf[4],_aix_,_ajl_));
               appendOut$1(caml_call2(Stdlib_printf[4],_aiy_,result$0));
               break;
              case 8:
               var exn=action[1];
               appendError$1(106380200,caml_call2(Printer$0[26],0,exn),exn);
               break;
              case 9:
               var
                baker=action[3],
                line_no$4=action[2],
                id$3=action[1],
                baker$0=
                 un_baker
                  (caml_call1
                    (interpret_expr_external
                      (config$0,
                       primitives$0,
                       [0,
                        _aiz_,
                        [0,[0,771172693,baker],[0,[0,848053268,baker[3]],0]]],
                       state),
                     baker));
               handle_set_delegate(config$0,state,id$3,line_no$4,baker$0);
               break;
              case 10:
               var
                line_no$5=action[3],
                model_id=action[2],
                id$4=action[1],
                lookup=
                 function(id)
                  {var match=caml_call2(Stdlib_hashtbl[7],state[1],id);
                   if(match)
                    {var c=match[1],_ajD_=c[1][1][1];
                     if(_ajD_){var cid=_ajD_[1];return cid[1]}
                     throw [0,
                            SmartExcept,
                            [0,_aiA_,[0,[0,848053268,line_no$5],0]]]}
                   throw [0,
                          SmartExcept,
                          [0,
                           _aiC_,
                           [0,
                            [0,936573133,caml_call1(show_contract_id,id)],
                            [0,_aiB_,[0,[0,848053268,line_no$5],0]]]]]},
                dynamic=lookup([1,id$4]),
                model=lookup(model_id);
               if(dynamic !== model)
                {var
                  _ajm_=
                   [0,
                    _aiD_,
                    [0,
                     [0,936573133,caml_call1(Stdlib[33],dynamic)],
                     [0,[0,848053268,line_no$5],0]]];
                 throw [0,
                        SmartExcept,
                        [0,
                         _aiE_,
                         [0,[0,936573133,caml_call1(Stdlib[33],model)],_ajm_]]]}
               break;
              default:
               var line_no$6=action[2],flag=action[1];
               check_initial_flag(line_no$6,flag);
               state[6] = apply_flag(state[6],flag)}
            for(;;)
             {var _ajz_=queue[1];
              if(_ajz_)
               {var
                 rest=_ajz_[2],
                 match$3=_ajz_[1],
                 op=match$3[12],
                 scenario_state=match$3[11],
                 voting_powers$0=match$3[10],
                 level$2=match$3[9],
                 time$2=match$3[8],
                 chain_id$0=match$3[7],
                 sender$1=match$3[6],
                 source$1=match$3[5],
                 messageClass$0=match$3[4],
                 title$1=match$3[3],
                 line_no$8=match$3[2],
                 id$7=match$3[1];
                queue[1] = rest;
                switch(op[0])
                 {case 0:
                   var
                    amount$1=op[3],
                    match$0=op[2],
                    entry_point=match$0[2],
                    address=match$0[1],
                    params$0=op[1],
                    match$1=
                     caml_call2(Stdlib_hashtbl[7],scenario_state[4],address);
                   if(match$1)
                    {var
                      id$5=match$1[1],
                      Printer$1=get$0(ctxt[1]),
                      message$1=
                       caml_call2(Base_Option[40],entry_point,cst_default$0),
                      show_arg=caml_call4(Printer$1[4],0,0,0,params$0),
                      the_max=20;
                     if(20 < caml_ml_string_length(show_arg))
                      var
                       _ajn_=caml_call2(Base_String[100],show_arg,the_max),
                       arg_shown=caml_call2(Stdlib[28],_ajn_,cst$353);
                     else
                      var arg_shown=show_arg;
                     var
                      _ajo_=
                       caml_string_equal(title$1,cst$354)
                        ?cst$355
                        :caml_call2(Stdlib_printf[4],_aiG_,title$1),
                      _ajp_=caml_call3(Printer$1[28],0,id$5,[0,message$1]),
                      title$0=
                       caml_call4(Stdlib_printf[4],_aiF_,_ajp_,arg_shown,_ajo_);
                     handle_message
                      (queue,
                       reverted,
                       ctxt,
                       output_in,
                       state,
                       step,
                       id$5,
                       params$0,
                       0,
                       line_no$8,
                       title$0,
                       messageClass$0,
                       sender$1,
                       source$1,
                       chain_id$0,
                       time$2,
                       amount$1,
                       level$2,
                       voting_powers$0,
                       message$1,
                       1,
                       0)}
                   break;
                  case 1:
                   var baker$1=op[1];
                   handle_set_delegate(ctxt[1],state,id$7,line_no$8,baker$1);
                   break;
                  default:
                   var instance$0=op[2],id$6=op[1];
                   handle_new_contract
                    (ctxt,state,output_in,step,id$6,line_no$8,instance$0,0,1)}
                var _ajA_=1}
              else
               var _ajA_=0;
              if(_ajA_)continue;
              var
               multiple=1 < caml_call1(Utils_List[4],output_in[1])?1:0,
               _ajB_=caml_call1(Utils_List[12],output_in[1]),
               output_in$0=caml_call2(Utils_String[7],cst$356,_ajB_),
               pp$3=
                function(msg)
                 {return appendIn$0
                          (caml_call3(Stdlib_printf[4],_ai2_,msg,output_in$0))},
               _ajC_=reverted[1];
              if(3 === action[0])
               {var
                 message$2=action[15],
                 line_no$7=action[5],
                 exception=action[3],
                 valid=action[2],
                 _ajq_=
                  function(exception)
                   {return caml_call1
                            (interpret_expr_external
                              (config,
                               primitives,
                               [0,
                                _aiI_,
                                [0,[0,771172693,exception],[0,[0,848053268,line_no$7],0]]],
                               global_state),
                             exception)},
                 match$2=caml_call2(Utils_Option[17],_ajq_,exception),
                 pp$2=
                  function(param)
                   {return [0,
                            _aiJ_,
                            [0,[0,771172693,valid],[0,[0,848053268,line_no$7],0]]]},
                 valid$0=
                  unBool$0
                   (pp$2,
                    caml_call1
                     (interpret_expr_external
                       (config,primitives,pp$2(0),global_state),
                      valid));
                if(_ajC_)
                 {var _ajr_=_ajC_[1];
                  if(valid$0)
                   {var
                     _ajs_=
                      [0,
                       _aiK_,
                       [0,
                        14832,
                        [0,
                         [0,936573133,caml_call2(Printer[24],[0,options],_ajr_)],
                         [0,
                          14832,
                          [0,
                           [0,936573133,message$2],
                           [0,14832,[0,[0,848053268,line_no$7],0]]]]]]],
                     _ajt_=caml_call2(Printer[24],0,_ajr_);
                    appendError$0
                     (106380200,caml_call2(Stdlib_printf[4],_aiL_,_ajt_),_ajs_);
                    var match$4=_aiM_}
                  else
                   if(match$2)
                    {var
                      exception$0=match$2[1],
                      except=_ajr_[1],
                      _aju_=caml_call4(Printer[4],0,0,0,exception$0);
                     if
                      (caml_string_equal
                        (caml_call4(Printer[4],0,0,0,except),_aju_))
                      {var _ajv_=caml_call2(Printer[24],0,_ajr_);
                       appendOut$0(caml_call2(Stdlib_printf[4],_aiN_,_ajv_));
                       var match$4=_aiO_}
                     else
                      {var
                        _ajw_=
                         [0,
                          _aiR_,
                          [0,
                           14832,
                           [0,
                            [0,936573133,caml_call2(Printer[24],[0,options],_ajr_)],
                            [0,
                             14832,
                             [0,
                              _aiQ_,
                              [0,
                               [0,-991563951,except],
                               [0,
                                14832,
                                [0,
                                 _aiP_,
                                 [0,
                                  [0,-991563951,exception$0],
                                  [0,14832,[0,[0,848053268,line_no$7],0]]]]]]]]]]],
                        _ajx_=caml_call2(Printer[24],0,_ajr_);
                       appendError$0
                        (106380200,caml_call2(Stdlib_printf[4],_aiS_,_ajx_),_ajw_);
                       var match$4=_aiT_}}
                   else
                    {var _ajy_=caml_call2(Printer[24],0,_ajr_);
                     appendOut$0(caml_call2(Stdlib_printf[4],_aiU_,_ajy_));
                     var match$4=_aiV_}}
                else
                 if(valid$0)
                  if(match$2)
                   {var exception$1=match$2[1];
                    appendError$0
                     (106380200,
                      caml_call1(Stdlib_printf[4],_aiX_),
                      [0,
                       _aiW_,
                       [0,
                        14832,
                        [0,
                         [0,-991563951,exception$1],
                         [0,14832,[0,[0,848053268,line_no$7],0]]]]]);
                    var match$4=_aiY_}
                  else
                   var match$4=17692;
                 else
                  {appendError$0
                    (106380200,
                     caml_call1(Stdlib_printf[4],_ai0_),
                     [0,
                      _aiZ_,
                      [0,
                       14832,
                       [0,
                        [0,936573133,message$2],
                        [0,14832,[0,[0,848053268,line_no$7],0]]]]]);
                   var match$4=_ai1_}}
              else
               var match$4=17692;
              if(typeof match$4 === "number")
               {global_state$0[1] = state;
                return multiple
                        ?pp$3(cst_Multiple_operations)
                        :appendIn$0(output_in$0)}
              if(106380200 <= match$4[1]){var msg=match$4[2];return pp$3(msg)}
              var msg$0=match$4[2];
              global_state$0[1] = state;
              return pp$3(msg$0)}};
        caml_call2(Utils_List[18],_ajf_,_aje_)}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(exn[1] === SmartExcept)
         {var l=exn[2],s=caml_call2(Printer[25],0,exn);
          appendError$0(106380200,caml_call2(Stdlib[28],cst_Exception,s),l)}
        else
         {var s$0=caml_call2(Printer[25],0,exn);
          appendError$0
           (106380200,
            caml_call2(Stdlib[28],cst_Exception$0,s$0),
            [0,[0,936573133,s$0],0])}}
      caml_call1(closeOut(ctxt),0);
      return caml_call1(Utils_List[12],ctxt[7][1])}
    function run$3(primitives,html,install,s,output_dir)
     {var
       actions=caml_call2(Utils_List[21],Utils_Control[2],s[1][2]),
       config=caml_call3(Utils_List[25],apply_flag,s[2][6],s[1][3]),
       _ai__=s[2],
       _ai$_=s[3];
      function _aja_(x){return [0,-685964740,x]}
      var _ajb_=[0,caml_call2(Utils_List[20],_aja_,_ai$_)];
      if(output_dir)
       var
        od=output_dir[1],
        _ajc_=caml_call2(Stdlib_filename[4],od,cst_log_txt),
        _ajd_=[0,caml_call1(Stdlib[60],_ajc_)];
      else
       var _ajd_=0;
      return _aiH_
              ([0,
                config,
                primitives,
                html,
                caml_call1(Stdlib_buffer[1],111024),
                output_dir,
                _ajd_,
                _ajb_,
                install,
                actions],
               _ai__)}
    function run_scenario_browser(primitives,scenario,config)
     {var Printer=get$0(config);
      try
       {var
         _ai9_=
          load_from_string
           (primitives,config,caml_call4(Yojson[10][36],0,0,0,scenario)),
         scenario$0=_ai9_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        var
         _ai5_=caml_call2(Printer[25],1,exn),
         scenario$0=caml_call1(Stdlib[2],_ai5_)}
      var errors=run$3(primitives,1,cst_static,scenario$0,0);
      if(errors)
       {var
         _ai6_=0,
         _ai7_=function(param){var l=param[2];return [0,[0,4100400,l],_ai3_]},
         _ai8_=caml_call2(Utils_List[20],_ai7_,errors);
        throw [0,
               SmartExcept,
               [0,
                _ai4_,
                [0,
                 14832,
                 [0,[0,4100400,caml_call1(Utils_List[16],_ai8_)],_ai6_]]]]}
      return 0}
    var Smartml_Smartml_scenario=[0,run_scenario_browser,run$3];
    caml_register_global
     (6533,Smartml_Smartml_scenario,"Smartml__Smartml_scenario");
    var Smartml_Scenario_expression=[0];
    caml_register_global
     (6534,Smartml_Scenario_expression,"Smartml__Scenario_expression");
    return}
  (function(){return this}()));


//# 1 "../../.js/gen_js_api/gen_js_api.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_js_get=runtime.caml_js_get,
     caml_js_set=runtime.caml_js_set,
     caml_js_to_string=runtime.caml_js_to_string,
     caml_register_global=runtime.caml_register_global,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    var
     global_data=runtime.caml_get_global_data(),
     cst=caml_string_of_jsbytes(""),
     shared=
      [0,
       caml_string_of_jsbytes("to_js"),
       caml_string_of_jsbytes("*dummy method*")],
     cst_Ojs_exn_Error=caml_string_of_jsbytes("Ojs_exn.Error"),
     cst_jsError=caml_string_of_jsbytes("jsError"),
     CamlinternalOO=global_data.CamlinternalOO,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_callback=global_data.Stdlib__callback,
     Stdlib_printexc=global_data.Stdlib__printexc,
     _a_=[0,caml_string_of_jsbytes("to_js")];
    function type_of(x){return caml_js_to_string(typeof x)}
    var null$0=null,undefined$0=undefined,global=joo_global_object;
    function array_make(n){return new (global.Array)(n)}
    var array_get=caml_js_get,array_set=caml_js_set;
    function array_of_js_from(f,objs,start)
     {var n=objs.length;
      function _p_(i){return caml_call1(f,objs[start + i | 0])}
      return caml_call2(Stdlib_array[2],n - start | 0,_p_)}
    function array_of_js(f,objs){return array_of_js_from(f,objs,0)}
    function array_to_js(f,arr)
     {var n=arr.length - 1,a=array_make(n),_n_=n - 1 | 0,_m_=0;
      if(! (_n_ < 0))
       {var i=_m_;
        for(;;)
         {a[i] = caml_call1(f,runtime.caml_check_bound(arr,i)[1 + i]);
          var _o_=i + 1 | 0;
          if(_n_ !== i){var i=_o_;continue}
          break}}
      return a}
    function list_of_js_from(f,objs,start)
     {var _l_=array_of_js_from(f,objs,start);
      return caml_call1(Stdlib_array[11],_l_)}
    function list_of_js(f,objs){return list_of_js_from(f,objs,0)}
    function list_to_js(f,l)
     {return array_to_js(f,caml_call1(Stdlib_array[12],l))}
    function option_of_js(f,x)
     {if(x != null$0 && x !== undefined$0)return [0,caml_call1(f,x)];return 0}
    function option_to_js(f,param)
     {if(param){var x=param[1];return caml_call1(f,x)}return null$0}
    function _b_(_d_)
     {var
       _e_=caml_call2(CamlinternalOO[3],_d_,cst),
       _f_=caml_call2(CamlinternalOO[8],_d_,shared)[1];
      function _g_(self_1){return self_1[1 + _e_]}
      caml_call3(CamlinternalOO[10],_d_,_f_,_g_);
      return function(_j_,_i_,_h_)
       {var _k_=caml_call2(CamlinternalOO[24],_i_,_d_);
        _k_[1 + _e_] = _h_;
        return _k_}}
    var obj=caml_call2(CamlinternalOO[19],_a_,_b_);
    function has_property(o,x){return 1 - (o[x] === undefined$0?1:0)}
    function empty_obj(param){return new (global.Object)()}
    function apply_arr(o,arr){return o.apply(null$0,arr)}
    function call_arr(o,s,arr){return o[s].apply(o,arr)}
    function is_null(x){return x == null$0?1:0}
    function obj_type(x)
     {return caml_js_to_string(Object.prototype.toString.call(x))}
    var
     Ojs=
      [0,
       array_of_js,
       array_to_js,
       list_of_js,
       list_to_js,
       array_of_js_from,
       list_of_js_from,
       option_of_js,
       option_to_js,
       empty_obj,
       has_property,
       call_arr,
       apply_arr,
       array_make,
       array_get,
       array_set,
       global,
       null$0,
       type_of,
       obj,
       is_null,
       obj_type];
    caml_register_global(21,Ojs,"Ojs");
    function name(x){return caml_js_to_string(x.name)}
    function message(x){return caml_js_to_string(x.message)}
    function stack(x){return option_of_js(caml_js_to_string,x.stack)}
    function to_string(x){return caml_js_to_string(x.toString())}
    var Error=[248,cst_Ojs_exn_Error,runtime.caml_fresh_oo_id(0)];
    caml_call2(Stdlib_callback[2],cst_jsError,[0,Error,{}]);
    function _c_(param)
     {if(param[1] === Error){var x=param[2];return [0,to_string(x)]}return 0}
    caml_call1(Stdlib_printexc[9],_c_);
    var Ojs_exn=[0,name,message,stack,to_string,Error];
    caml_register_global(24,Ojs_exn,"Ojs_exn");
    return}
  (function(){return this}()));


//# 1 "../lib_js/.smartml_js.objs/smartml_js.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_js_from_string=runtime.caml_js_from_string,
     caml_js_to_string=runtime.caml_js_to_string,
     caml_register_global=runtime.caml_register_global,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Ok=caml_string_of_jsbytes("Ok"),
     cst_ERROR=caml_string_of_jsbytes("#### ERROR ####"),
     public_key=
      caml_string_of_jsbytes
       ("edpku5ZuqYibUQrAhove2B1bZDYCQyDRTGGa1ZwtZYiJ6nvJh4GXcE"),
     secret_key=
      caml_string_of_jsbytes
       ("edsk3ZAU1vr8z3Laj6kGqjsgL9a1kQA9Zs7QeEk2vBsVR5RGbb6UQX"),
     message_hex=caml_string_of_jsbytes("050a00000003424146"),
     signature=
      caml_string_of_jsbytes
       ("edsigtbqJKYNhTVAYaY1sjFKTxS7awXwFrXv2fPBV1BzcYv4PvKzzjBYZNJmZeBpd1ec7J2VVAdqPCnMXoS7qu3KrdZZC5faCUZ"),
     wrong_signature=
      caml_string_of_jsbytes
       ("edsigtjoEiJAEdbeWqmhwc1RJE1AgdnBStaECLykBDvzWQ6bbVsMMEdz21iJqBrgXwYmmWKLCFp7tMuY7sfAubY75ThLxNwSVuG"),
     cst_aaaaaaaaaaaaaaaaaaaaaaaaaa=
      caml_string_of_jsbytes("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
     cst_keypair_of_seed=caml_string_of_jsbytes("keypair_of_seed"),
     cst_sign=caml_string_of_jsbytes("sign"),
     cst_check_signature=caml_string_of_jsbytes("check_signature"),
     Ojs=global_data.Ojs,
     Utils_String=global_data.Utils__String,
     Smartml_Primitives=global_data.Smartml__Primitives,
     Utils_List=global_data.Utils__List,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Utils_Misc=global_data.Utils__Misc,
     Stdlib=global_data.Stdlib,
     Hex=global_data.Hex,
     Digestif=global_data.Digestif,
     Stdlib_printf=global_data.Stdlib__printf,
     Ojs_exn=global_data.Ojs_exn,
     Stdlib_format=global_data.Stdlib__format,
     Base_Exn=global_data.Base__Exn,
     Js_of_ocaml_Firebug=global_data.Js_of_ocaml__Firebug,
     Smartml_js=[0];
    caml_register_global(143,Smartml_js,"Smartml_js");
    var
     instance=Ojs[16].smartpyContext.Bls12,
     _p_=
      [0,
       [11,
        caml_string_of_jsbytes("self-test-"),
        [4,0,0,0,[11,caml_string_of_jsbytes("-OK: "),[2,0,0]]]],
       caml_string_of_jsbytes("self-test-%d-OK: %s")],
     _q_=
      [0,
       [11,
        caml_string_of_jsbytes("self-test-"),
        [4,0,0,0,[11,caml_string_of_jsbytes("-ERROR: "),[2,0,0]]]],
       caml_string_of_jsbytes("self-test-%d-ERROR: %s")],
     _g_=
      [0,
       [11,
        caml_string_of_jsbytes("B58-involution: "),
        [3,
         0,
         [11,
          caml_string_of_jsbytes(" -> "),
          [3,
           0,
           [11,
            caml_string_of_jsbytes(" -> "),
            [3,0,[11,caml_string_of_jsbytes(" -> "),[2,0,0]]]]]]]],
       caml_string_of_jsbytes("B58-involution: %S -> %S -> %S -> %s")],
     _f_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("-------------------- SELF TEST ------------------"),
        0],
       caml_string_of_jsbytes
        ("-------------------- SELF TEST ------------------")],
     _h_=
      [0,
       [11,caml_string_of_jsbytes("Ed25519.verify GOOD signature: "),[2,0,0]],
       caml_string_of_jsbytes("Ed25519.verify GOOD signature: %s")],
     _i_=
      [0,
       [11,caml_string_of_jsbytes("Ed25519.verify WRONG signature: "),[2,0,0]],
       caml_string_of_jsbytes("Ed25519.verify WRONG signature: %s")],
     _j_=
      [0,
       [11,
        caml_string_of_jsbytes("Re-sign with Ed25519 (full sk: "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes("): new-sig: "),
          [2,0,[11,caml_string_of_jsbytes(" -> "),[2,0,0]]]]]],
       caml_string_of_jsbytes
        ("Re-sign with Ed25519 (full sk: %s): new-sig: %s -> %s")],
     _k_=
      [0,
       [11,caml_string_of_jsbytes("account_of_seed"),0],
       caml_string_of_jsbytes("account_of_seed")],
     _l_=
      [0,
       [11,
        caml_string_of_jsbytes("pk: "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" ; sk: "),
          [2,0,[11,caml_string_of_jsbytes(" ; keyType: "),[2,0,0]]]]]],
       caml_string_of_jsbytes("pk: %s ; sk: %s ; keyType: %s")],
     _m_=
      [0,
       [11,
        caml_string_of_jsbytes("Contract.Primitive_implementations.self_test"),
        0],
       caml_string_of_jsbytes("Contract.Primitive_implementations.self_test")],
     _n_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Contract.Primitive_implementations.self_test: error: "),
        [2,0,0]],
       caml_string_of_jsbytes
        ("Contract.Primitive_implementations.self_test: error: %s")],
     _o_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("Contract.Primitive_implementations.self_test done"),
        0],
       caml_string_of_jsbytes
        ("Contract.Primitive_implementations.self_test done")],
     _c_=
      [0,
       [11,caml_string_of_jsbytes("Crypto-primitives."),[2,0,0]],
       caml_string_of_jsbytes("Crypto-primitives.%s")],
     _d_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]],
       caml_string_of_jsbytes("%s: %s")],
     _e_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]],
       caml_string_of_jsbytes("%s: %s")];
    function addG1(x3,x4)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.addG1
                (caml_js_from_string(x3),caml_js_from_string(x4)))}
    function negateG1(x5)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.negateG1(caml_js_from_string(x5)))}
    function multiplyG1ByFr(x6,x7)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.multiplyG1ByFr
                (caml_js_from_string(x6),caml_js_from_string(x7)))}
    function addG2(x8,x9)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.addG2
                (caml_js_from_string(x8),caml_js_from_string(x9)))}
    function negateG2(x10)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.negateG2(caml_js_from_string(x10)))}
    function multiplyG2ByFr(x11,x12)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.multiplyG2ByFr
                (caml_js_from_string(x11),caml_js_from_string(x12)))}
    function addFr(x13,x14)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.addFr
                (caml_js_from_string(x13),caml_js_from_string(x14)))}
    function negateFr(x15)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.negateFr(caml_js_from_string(x15)))}
    function multiplyFrByFr(x16,x17)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.multiplyFrByFr
                (caml_js_from_string(x16),caml_js_from_string(x17)))}
    function multiplyFrByInt(x18,x19)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.multiplyFrByInt
                (caml_js_from_string(x18),caml_js_from_string(x19)))}
    function convertFrToInt(x20)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Bls12.convertFrToInt
                (caml_js_from_string(x20)))}
    function pairingCheck(x21)
     {function _ap_(x22)
       {var x24=x22[2],x23=x22[1],x25=caml_call1(Ojs[13],2);
        caml_call3(Ojs[15],x25,0,caml_js_from_string(x23));
        caml_call3(Ojs[15],x25,1,caml_js_from_string(x24));
        return x25}
      var _aq_=caml_call2(Ojs[4],_ap_,x21);
      return Ojs[16].smartpyContext.Bls12.pairingCheck(_aq_) | 0}
    var
     Smartml_js_Browser_bls12=
      [0,
       instance,
       addG1,
       negateG1,
       multiplyG1ByFr,
       addG2,
       negateG2,
       multiplyG2ByFr,
       addFr,
       negateFr,
       multiplyFrByFr,
       multiplyFrByInt,
       convertFrToInt,
       pairingCheck];
    caml_register_global
     (145,Smartml_js_Browser_bls12,"Smartml_js__Browser_bls12");
    function keccak256(x1)
     {return caml_js_to_string
              (Ojs[16].smartpyContext.Keccak256(caml_js_from_string(x1)))}
    var Smartml_js_Browser_keccak=[0,keccak256];
    caml_register_global
     (146,Smartml_js_Browser_keccak,"Smartml_js__Browser_keccak");
    var instance$0=Ojs[16].sodium;
    function to_hex(x5){return caml_js_to_string(Ojs[16].sodium.to_hex(x5))}
    function of_hex(x6)
     {return Ojs[16].sodium.from_hex(caml_js_from_string(x6))}
    function pp(x7){Ojs[16].console.log(x7);return 0}
    function append(x8,x9){return Ojs[16].eztz.utility.mergebuf(x8,x9)}
    var
     edsig=Ojs[16].eztz.prefix.edsig,
     spsig1=Ojs[16].eztz.prefix.spsig1,
     p2sig=Ojs[16].eztz.prefix.p2sig,
     generic_sig=Ojs[16].eztz.prefix.sig,
     edpk=Ojs[16].eztz.prefix.edpk,
     sppk=Ojs[16].eztz.prefix.sppk,
     p2pk=Ojs[16].eztz.prefix.p2pk,
     tz1=Ojs[16].eztz.prefix.tz1,
     tz2=Ojs[16].eztz.prefix.tz2,
     tz3=Ojs[16].eztz.prefix.tz3,
     kt=Ojs[16].eztz.prefix.KT,
     edsk32=Ojs[16].eztz.prefix.edsk2,
     edsk64=Ojs[16].eztz.prefix.edsk;
    function to_b58_check(x12,x13)
     {return caml_js_to_string(Ojs[16].eztz.utility.b58cencode(x12,x13))}
    function of_b58_check(x14,x15)
     {return Ojs[16].eztz.utility.b58cdecode(caml_js_from_string(x14),x15)}
    function crypto_hash_sha256(x16)
     {return Ojs[16].sodium.crypto_hash_sha256(x16)}
    function crypto_hash_sha512(x17)
     {return Ojs[16].sodium.crypto_hash_sha512(x17)}
    function crypto_hash_blake_2b(x18,x19)
     {return Ojs[16].sodium.crypto_generichash(x18,x19)}
    function verify_signature(x20,x21,x22)
     {return Ojs[16].sodium.crypto_sign_verify_detached(x20,x21,x22) | 0}
    function sign(x23,x24)
     {return Ojs[16].sodium.crypto_sign_detached(x23,x24)}
    function keypair_of_seed(x27)
     {var
       x26=
        Ojs[16].sodium.crypto_sign_seed_keypair(caml_js_from_string(x27));
      return [0,x26.publicKey,x26.privateKey,caml_js_to_string(x26.keyType)]}
    var
     _a_=[0,verify_signature,sign,keypair_of_seed],
     _b_=
      [0,
       to_hex,
       of_hex,
       pp,
       append,
       [0,
        edsig,
        spsig1,
        p2sig,
        generic_sig,
        edpk,
        sppk,
        p2pk,
        tz1,
        tz2,
        tz3,
        kt,
        edsk32,
        edsk64],
       to_b58_check,
       of_b58_check],
     Smartml_js_Browser_sodium=
      [0,
       instance$0,
       _b_,
       crypto_hash_sha256,
       crypto_hash_sha512,
       crypto_hash_blake_2b,
       _a_];
    caml_register_global
     (147,Smartml_js_Browser_sodium,"Smartml_js__Browser_sodium");
    function dbgf(fmt)
     {function _ao_(s)
       {Js_of_ocaml_Firebug[1].log(runtime.caml_jsstring_of_string(s));
        return 0}
      return caml_call2(Stdlib_format[134],_ao_,fmt)}
    var Blake2b_Hash_32=caml_call1(Digestif[15],[0,32]);
    function negateG1$0(b){return negateG1(b)}
    function addG1$0(b1,b2){return addG1(b1,b2)}
    function multiplyG1ByFr$0(b1,b2){return multiplyG1ByFr(b1,b2)}
    function negateG2$0(b){return negateG2(b)}
    function addG2$0(b1,b2){return addG2(b1,b2)}
    function multiplyG2ByFr$0(b1,b2){return multiplyG2ByFr(b1,b2)}
    function negateFr$0(b){return negateFr(b)}
    function addFr$0(b1,b2){return addFr(b1,b2)}
    function multiplyFrByFr$0(b1,b2){return multiplyFrByFr(b1,b2)}
    function multiplyFrByInt$0(b,i){return multiplyFrByInt(b,i)}
    function convertFrToInt$0(b){return convertFrToInt(b)}
    function pairingCheck$0(l){return pairingCheck(l)}
    function ojs_error_protect(msg,f)
     {var m=caml_call2(Stdlib_printf[4],_c_,msg);
      try
       {var _an_=caml_call1(f,0);return _an_}
      catch(other)
       {other = caml_wrap_exception(other);
        if(other[1] === Ojs_exn[5])
         {var e=other[2],_al_=caml_call1(Ojs_exn[4],e);
          return caml_call4(Stdlib_format[134],Stdlib[2],_d_,m,_al_)}
        var _am_=caml_call1(Base_Exn[9],other);
        return caml_call4(Stdlib_printf[9],Stdlib[2],_e_,m,_am_)}}
    function sha512(s)
     {var _ak_=caml_call3(Digestif[6][12],0,0,s);
      return caml_call1(Digestif[6][39],_ak_)}
    function sha256(s)
     {var _aj_=caml_call3(Digestif[4][12],0,0,s);
      return caml_call1(Digestif[4][39],_aj_)}
    function blake2b(s)
     {var _ai_=caml_call3(Blake2b_Hash_32[12],0,0,s);
      return caml_call1(Blake2b_Hash_32[39],_ai_)}
    function sha3(s)
     {var _ah_=caml_call3(Digestif[8][12],0,0,s);
      return caml_call1(Digestif[8][39],_ah_)}
    function keccak(s)
     {var _ag_=[0,3603131,keccak256(s)];return caml_call1(Hex[4],_ag_)}
    function check_signature(public_key,signature,msg)
     {return ojs_error_protect
              (cst_check_signature,
               function(param)
                {var
                  hex_msg=caml_call1(Utils_Misc[4][1],msg),
                  _ad_=caml_call2(_b_[7],public_key,_b_[5][5]),
                  _ae_=crypto_hash_blake_2b(32,caml_call1(_b_[2],hex_msg)),
                  _af_=caml_call2(_b_[7],signature,_b_[5][1]);
                 return caml_call3(_a_[1],_af_,_ae_,_ad_)})}
    function sign$0(secret_key,message)
     {return ojs_error_protect
              (cst_sign,
               function(param)
                {var
                  _ab_=caml_call1(Utils_Misc[4][1],message),
                  message$0=crypto_hash_blake_2b(32,caml_call1(_b_[2],_ab_)),
                  secret_key$0=caml_call2(_b_[7],secret_key,_b_[5][13]),
                  _ac_=caml_call2(_a_[2],message$0,secret_key$0);
                 return caml_call2(_b_[6],_ac_,_b_[5][1])})}
    function account_of_seed(seed)
     {var
       _Z_=caml_call2(Utils_String[1],32,66),
       ___=sha256(seed),
       _$_=caml_call1(Utils_Misc[4][1],___),
       hashed=caml_call2(Stdlib[28],_$_,_Z_),
       real_seed=caml_call3(Utils_String[4],hashed,0,32),
       kp=
        ojs_error_protect
         (cst_keypair_of_seed,
          function(param){return caml_call1(_a_[3],real_seed)}),
       public_key=caml_call2(_b_[6],kp[1],_b_[5][5]),
       _aa_=crypto_hash_blake_2b(20,kp[1]),
       public_key_hash=caml_call2(_b_[6],_aa_,_b_[5][8]),
       full_secret_key=caml_call2(_b_[6],kp[2],_b_[5][13]);
      return [0,public_key_hash,public_key,full_secret_key]}
    function hash_key(s)
     {var
       _Y_=crypto_hash_blake_2b(20,caml_call2(_b_[7],s,_b_[5][5])),
       pkh=caml_call2(_b_[6],_Y_,_b_[5][8]);
      return pkh}
    function test(primitives)
     {dbgf(_f_);
      function should_true(b){return b?cst_Ok:cst_ERROR}
      function should_false(b){return should_true(1 - b)}
      function b58_involution(prefix,v)
       {var
         _U_=caml_call2(_b_[7],v,prefix),
         i=caml_call2(_b_[6],_U_,prefix),
         _V_=should_true(caml_call2(Utils_String[33],v,i)),
         _W_=caml_call2(_b_[7],v,prefix),
         _X_=caml_call1(_b_[1],_W_);
        return caml_call4(dbgf(_g_),v,_X_,i,_V_)}
      b58_involution(_b_[5][5],public_key);
      b58_involution(_b_[5][12],secret_key);
      b58_involution(_b_[5][1],wrong_signature);
      var
       message=crypto_hash_blake_2b(32,caml_call1(_b_[2],message_hex)),
       _r_=_b_[7],
       _s_=_b_[5][5],
       public_key$0=function(_T_){return caml_call2(_r_,_T_,_s_)}(public_key),
       _t_=_b_[7],
       _u_=_b_[5][1],
       _v_=function(_S_){return caml_call2(_t_,_S_,_u_)}(signature),
       _w_=should_true(caml_call3(_a_[1],_v_,message,public_key$0));
      caml_call1(dbgf(_h_),_w_);
      var
       _x_=_b_[7],
       _y_=_b_[5][1],
       _z_=function(_R_){return caml_call2(_x_,_R_,_y_)}(wrong_signature),
       _A_=should_false(caml_call3(_a_[1],_z_,message,public_key$0));
      caml_call1(dbgf(_i_),_A_);
      var
       _B_=_b_[7],
       _C_=_b_[5][12],
       _D_=function(_Q_){return caml_call2(_B_,_Q_,_C_)}(secret_key),
       full_secret_key=caml_call2(_b_[4],_D_,public_key$0),
       _E_=caml_call2(_a_[2],message,full_secret_key),
       _F_=_b_[6],
       _G_=_b_[5][1],
       new_signature=function(_P_){return caml_call2(_F_,_P_,_G_)}(_E_),
       _H_=should_true(caml_call2(Utils_String[33],new_signature,signature)),
       _I_=caml_call2(_b_[6],full_secret_key,_b_[5][13]);
      caml_call3(dbgf(_j_),_I_,new_signature,_H_);
      dbgf(_k_);
      var
       kp=caml_call1(_a_[3],cst_aaaaaaaaaaaaaaaaaaaaaaaaaa),
       _J_=kp[3],
       _K_=caml_call2(_b_[6],kp[2],_b_[5][13]),
       _L_=caml_call2(_b_[6],kp[1],_b_[5][5]);
      caml_call3(dbgf(_l_),_L_,_K_,_J_);
      dbgf(_m_);
      try
       {var
         _N_=caml_call1(Smartml_Primitives[3],primitives),
         _O_=
          function(i,param)
           {if(0 === param[0])
             {var s=param[1];return caml_call2(dbgf(_p_),i,s)}
            var s$0=param[1];
            return caml_call2(dbgf(_q_),i,s$0)};
        caml_call2(Utils_List[19],_O_,_N_)}
      catch(e)
       {e = caml_wrap_exception(e);
        var _M_=caml_call1(Stdlib_printexc[1],e);
        caml_call1(dbgf(_n_),_M_)}
      dbgf(_o_);
      return 0}
    var
     Smartml_js_Primitives=
      [0,
       [0,
        negateG1$0,
        addG1$0,
        multiplyG1ByFr$0,
        negateG2$0,
        addG2$0,
        multiplyG2ByFr$0,
        negateFr$0,
        addFr$0,
        multiplyFrByInt$0,
        multiplyFrByFr$0,
        convertFrToInt$0,
        pairingCheck$0],
       [0,
        blake2b,
        sha256,
        sha512,
        keccak,
        sha3,
        sign$0,
        check_signature,
        account_of_seed,
        hash_key],
       test];
    caml_register_global(161,Smartml_js_Primitives,"Smartml_js__Primitives");
    return}
  (function(){return this}()));


//# 1 "../../.js/cmdliner/cmdliner.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_bytes_unsafe_set=runtime.caml_bytes_unsafe_set,
     caml_check_bound=runtime.caml_check_bound,
     caml_compare=runtime.caml_compare,
     caml_equal=runtime.caml_equal,
     caml_int_compare=runtime.caml_int_compare,
     caml_int_of_string=runtime.caml_int_of_string,
     caml_ml_string_length=runtime.caml_ml_string_length,
     caml_register_global=runtime.caml_register_global,
     caml_string_compare=runtime.caml_string_compare,
     caml_string_equal=runtime.caml_string_equal,
     caml_string_get=runtime.caml_string_get,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_sys_argv=runtime.caml_sys_argv,
     caml_sys_file_exists=runtime.caml_sys_file_exists,
     caml_sys_getenv=runtime.caml_sys_getenv,
     caml_sys_is_directory=runtime.caml_sys_is_directory,
     caml_sys_system_command=runtime.caml_sys_system_command,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    function caml_call9(f,a0,a1,a2,a3,a4,a5,a6,a7,a8)
     {return f.length == 9
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8])}
    function caml_call10(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
     {return f.length == 10
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9])}
    function caml_call13(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)
     {return f.length == 13
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)
              :runtime.caml_call_gen
                (f,[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12])}
    var
     global_data=runtime.caml_get_global_data(),
     cst$5=caml_string_of_jsbytes(""),
     cst_0=caml_string_of_jsbytes("0"),
     cst_1=caml_string_of_jsbytes("1"),
     cst_false=caml_string_of_jsbytes("false"),
     cst_n=caml_string_of_jsbytes("n"),
     cst_no=caml_string_of_jsbytes("no"),
     cst_true=caml_string_of_jsbytes("true"),
     cst_y=caml_string_of_jsbytes("y"),
     cst_yes=caml_string_of_jsbytes("yes"),
     cst_quadruple=caml_string_of_jsbytes("quadruple"),
     cst_triple=caml_string_of_jsbytes("triple"),
     cst_pair=caml_string_of_jsbytes("pair"),
     cst_array=caml_string_of_jsbytes("array"),
     cst_list=caml_string_of_jsbytes("list"),
     cst$3=caml_string_of_jsbytes(""),
     cst$4=caml_string_of_jsbytes(""),
     cst_file=caml_string_of_jsbytes("file"),
     cst_directory=caml_string_of_jsbytes("directory"),
     cst_file_or_directory=caml_string_of_jsbytes("file or directory"),
     cst_enum_value=caml_string_of_jsbytes("enum value"),
     cst_expected=caml_string_of_jsbytes("expected "),
     cst_expected_a_character=caml_string_of_jsbytes("expected a character"),
     cst$2=caml_string_of_jsbytes(""),
     cst$1=caml_string_of_jsbytes("."),
     cst$0=caml_string_of_jsbytes(", "),
     cst=caml_string_of_jsbytes(""),
     err_empty_list=caml_string_of_jsbytes("empty list"),
     err_incomplete_enum=
      caml_string_of_jsbytes("Incomplete enumeration for the type"),
     kind=caml_string_of_jsbytes("value"),
     cst_expected_an_integer=caml_string_of_jsbytes("expected an integer"),
     cst_expected_a_32_bit_integer=
      caml_string_of_jsbytes("expected a 32-bit integer"),
     cst_expected_a_64_bit_integer=
      caml_string_of_jsbytes("expected a 64-bit integer"),
     cst_expected_a_processor_nativ=
      caml_string_of_jsbytes("expected a processor-native integer"),
     cst_expected_a_floating_point_=
      caml_string_of_jsbytes("expected a floating point number"),
     cst_TERM=caml_string_of_jsbytes("TERM"),
     cst_dumb=caml_string_of_jsbytes("dumb"),
     cmds=
      [0,caml_string_of_jsbytes("less"),[0,caml_string_of_jsbytes("more"),0]],
     cst_PAGER=caml_string_of_jsbytes("PAGER"),
     cst_MANPAGER=caml_string_of_jsbytes("MANPAGER"),
     cst_groff=caml_string_of_jsbytes("groff"),
     cst_Tascii_P_c=caml_string_of_jsbytes(" -Tascii -P-c"),
     cst_Win32=caml_string_of_jsbytes("Win32"),
     _ao_=[0,caml_string_of_jsbytes("where"),caml_string_of_jsbytes(" NUL")],
     cst_dev_null=caml_string_of_jsbytes("/dev/null"),
     cst_type=caml_string_of_jsbytes("type"),
     cst_out=caml_string_of_jsbytes("out"),
     partial=[17,3,[11,caml_string_of_jsbytes(".ad l"),[15,[17,2,0]]]],
     partial$0=
      [11,
       caml_string_of_jsbytes(' "'),
       [2,
        0,
        [11,
         caml_string_of_jsbytes('" "'),
         [2,
          0,
          [11,
           caml_string_of_jsbytes('" "'),
           [2,
            0,
            [12,
             34,
             [17,
              3,
              [11,
               caml_string_of_jsbytes
                ('.\\" Disable hyphenation and ragged-right'),
               [17,3,[11,caml_string_of_jsbytes(".nh"),partial]]]]]]]]]]],
     cst_fR=caml_string_of_jsbytes("\\fR"),
     cst_fI=caml_string_of_jsbytes("\\fI"),
     cst_fB=caml_string_of_jsbytes("\\fB"),
     cst$7=caml_string_of_jsbytes(""),
     cst_undefined=caml_string_of_jsbytes("undefined"),
     cst$6=caml_string_of_jsbytes(""),
     first=caml_string_of_jsbytes(""),
     s_name=caml_string_of_jsbytes("NAME"),
     s_synopsis=caml_string_of_jsbytes("SYNOPSIS"),
     s_description=caml_string_of_jsbytes("DESCRIPTION"),
     s_commands=caml_string_of_jsbytes("COMMANDS"),
     s_arguments=caml_string_of_jsbytes("ARGUMENTS"),
     s_options=caml_string_of_jsbytes("OPTIONS"),
     s_common_options=caml_string_of_jsbytes("COMMON OPTIONS"),
     s_exit_status=caml_string_of_jsbytes("EXIT STATUS"),
     s_exit_status_intro=
      [0,
       80,
       caml_string_of_jsbytes("$(tname) exits with the following status:")],
     s_environment=caml_string_of_jsbytes("ENVIRONMENT"),
     s_environment_intro=
      [0,
       80,
       caml_string_of_jsbytes
        ("These environment variables affect the execution of $(tname):")],
     s_files=caml_string_of_jsbytes("FILES"),
     s_examples=caml_string_of_jsbytes("EXAMPLES"),
     s_bugs=caml_string_of_jsbytes("BUGS"),
     s_authors=caml_string_of_jsbytes("AUTHORS"),
     s_see_also=caml_string_of_jsbytes("SEE ALSO"),
     s_created=caml_string_of_jsbytes(""),
     cst_COMMANDS=caml_string_of_jsbytes("COMMANDS"),
     cst$12=caml_string_of_jsbytes(""),
     cst_undocumented=caml_string_of_jsbytes("undocumented"),
     cst$8=caml_string_of_jsbytes("-"),
     cst$9=caml_string_of_jsbytes("--"),
     cst$11=caml_string_of_jsbytes(""),
     cst$10=caml_string_of_jsbytes(""),
     cst_See_option_opt=caml_string_of_jsbytes("See option $(opt)."),
     cst$32=caml_string_of_jsbytes(" "),
     cst$34=caml_string_of_jsbytes(""),
     cst$33=caml_string_of_jsbytes(""),
     cst$30=caml_string_of_jsbytes(""),
     cst$31=caml_string_of_jsbytes(""),
     cst$29=caml_string_of_jsbytes(", "),
     cst$27=caml_string_of_jsbytes(""),
     cst$28=caml_string_of_jsbytes(""),
     cst_or=caml_string_of_jsbytes(" or"),
     cst_absent=caml_string_of_jsbytes("absent "),
     cst$19=caml_string_of_jsbytes(""),
     cst$20=caml_string_of_jsbytes(""),
     cst_required=caml_string_of_jsbytes("required"),
     cst$21=caml_string_of_jsbytes(""),
     cst$22=caml_string_of_jsbytes(""),
     cst$25=caml_string_of_jsbytes(""),
     cst$26=caml_string_of_jsbytes(""),
     cst$23=caml_string_of_jsbytes(""),
     cst$24=caml_string_of_jsbytes(""),
     cst$17=caml_string_of_jsbytes(""),
     cst_VAL=caml_string_of_jsbytes("VAL"),
     cst$18=caml_string_of_jsbytes(", "),
     cst$16=caml_string_of_jsbytes(" "),
     cst$13=caml_string_of_jsbytes(""),
     cst_ARG=caml_string_of_jsbytes("ARG"),
     cst$14=caml_string_of_jsbytes(" "),
     cst$15=caml_string_of_jsbytes("..."),
     cst_mname=caml_string_of_jsbytes("mname"),
     cst_tname=caml_string_of_jsbytes("tname"),
     cst_docv=caml_string_of_jsbytes("docv"),
     cst_env$0=caml_string_of_jsbytes("env"),
     cst_opt=caml_string_of_jsbytes("opt"),
     cst_status=caml_string_of_jsbytes("status"),
     cst_status_max=caml_string_of_jsbytes("status_max"),
     cst_env=caml_string_of_jsbytes("env"),
     partial$1=
      [15,
       [17,
        0,
        [17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],[15,[17,0,[17,4,0]]]]]]],
     partial$2=[1,[0,0,caml_string_of_jsbytes("")]],
     cst$39=caml_string_of_jsbytes(""),
     cst$37=caml_string_of_jsbytes(""),
     cst_ARG$0=caml_string_of_jsbytes("ARG"),
     cst$38=caml_string_of_jsbytes(", "),
     cst$36=caml_string_of_jsbytes(""),
     cst_a_required_argument_is_mis=
      caml_string_of_jsbytes("a required argument is missing"),
     cst$35=caml_string_of_jsbytes(", "),
     cst$41=caml_string_of_jsbytes("--"),
     cst_option=caml_string_of_jsbytes("option"),
     cst_option$0=caml_string_of_jsbytes("option"),
     cst$42=caml_string_of_jsbytes("-"),
     cst$43=caml_string_of_jsbytes("\n"),
     cst$40=caml_string_of_jsbytes("-"),
     cst_option_name=caml_string_of_jsbytes("option name"),
     cst_this_help=caml_string_of_jsbytes("this help"),
     absent=[0,caml_string_of_jsbytes("")],
     err_not_opt=caml_string_of_jsbytes("Option argument without name"),
     err_not_pos=caml_string_of_jsbytes("Positional argument with a name"),
     default_docv=caml_string_of_jsbytes("VALUE"),
     man_fmts=
      [0,
       [0,caml_string_of_jsbytes("auto"),726666127],
       [0,
        [0,caml_string_of_jsbytes("pager"),-797271261],
        [0,
         [0,caml_string_of_jsbytes("groff"),757208580],
         [0,[0,caml_string_of_jsbytes("plain"),-675583510],0]]]],
     docv=caml_string_of_jsbytes("FMT"),
     cst_output=caml_string_of_jsbytes("output"),
     cst_dummy=caml_string_of_jsbytes("dummy"),
     cst_command$0=caml_string_of_jsbytes("command"),
     cst$44=caml_string_of_jsbytes(""),
     cst_command$1=caml_string_of_jsbytes("command"),
     cst_command=caml_string_of_jsbytes("command"),
     cst_Term_error_help_requested_=
      caml_string_of_jsbytes
       ("Term error, help requested for unknown command "),
     err_argv=
      caml_string_of_jsbytes("argv array must have at least one element"),
     Stdlib_list=global_data.Stdlib__list,
     Assert_failure=global_data.Assert_failure,
     Stdlib_string=global_data.Stdlib__string,
     Stdlib=global_data.Stdlib,
     Stdlib_char=global_data.Stdlib__char,
     Stdlib_map=global_data.Stdlib__map,
     Stdlib_array=global_data.Stdlib__array,
     Stdlib_format=global_data.Stdlib__format,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib_sys=global_data.Stdlib__sys,
     Stdlib_filename=global_data.Stdlib__filename,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_bytes=global_data.Stdlib__bytes,
     Stdlib_set=global_data.Stdlib__set,
     CamlinternalLazy=global_data.CamlinternalLazy,
     Stdlib_printexc=global_data.Stdlib__printexc,
     Cmap=caml_call1(Stdlib_map[1],[0,Stdlib_char[7]]),
     optidx=[0,1,Cmap[1]],
     _a_=[0,caml_string_of_jsbytes("cmdliner_trie.ml"),69,21],
     _b_=[0,caml_string_of_jsbytes("cmdliner_trie.ml"),74,16],
     _M_=
      [0,
       caml_string_of_jsbytes("true"),
       [0,
        caml_string_of_jsbytes("yes"),
        [0,caml_string_of_jsbytes("false"),[0,caml_string_of_jsbytes("no"),0]]]],
     _O_=[0,17724,0],
     _N_=[0,17724,1],
     _L_=
      [0,
       [15,[0,[15,[0,[15,[0,[15,0]]]]]]],
       caml_string_of_jsbytes("%a%c%a%c%a%c%a")],
     _K_=[0,[15,[0,[15,[0,[15,0]]]]],caml_string_of_jsbytes("%a%c%a%c%a")],
     _J_=[0,[15,[0,[15,0]]],caml_string_of_jsbytes("%a%c%a")],
     _F_=[0,[6,0,0,0,0],caml_string_of_jsbytes("%nd")],
     _C_=[0,[7,0,0,0,0],caml_string_of_jsbytes("%Ld")],
     _z_=[0,[5,0,0,0,0],caml_string_of_jsbytes("%ld")],
     _v_=
      [0,caml_string_of_jsbytes("true"),[0,caml_string_of_jsbytes("false"),0]],
     _u_=
      [0,
       [11,
        caml_string_of_jsbytes("missing a `"),
        [0,[11,caml_string_of_jsbytes("' separator"),0]]],
       caml_string_of_jsbytes("missing a `%c' separator")],
     _t_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid "),
        [2,0,[12,32,[2,0,[11,caml_string_of_jsbytes(", "),[2,0,0]]]]]],
       caml_string_of_jsbytes("invalid %s %s, %s")],
     _s_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid element in "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" (`"),
          [2,0,[11,caml_string_of_jsbytes("'): "),[2,0,0]]]]]],
       caml_string_of_jsbytes("invalid element in %s (`%s'): %s")],
     _r_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" is a directory"),0]],
       caml_string_of_jsbytes("%s is a directory")],
     _q_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" is not a directory"),0]],
       caml_string_of_jsbytes("%s is not a directory")],
     _p_=
      [0,
       [11,caml_string_of_jsbytes("no "),[2,0,[12,32,[2,0,0]]]],
       caml_string_of_jsbytes("no %s %s")],
     _n_=
      [0,
       [11,
        caml_string_of_jsbytes(", did you mean "),
        [2,0,[11,caml_string_of_jsbytes(" ?"),0]]],
       caml_string_of_jsbytes(", did you mean %s ?")],
     _o_=
      [0,
       [11,caml_string_of_jsbytes("unknown "),[2,0,[12,32,[2,0,[2,0,0]]]]],
       caml_string_of_jsbytes("unknown %s %s%s")],
     _m_=
      [0,
       [2,
        0,
        [12,
         32,
         [2,0,[11,caml_string_of_jsbytes(" ambiguous and could be "),[2,0,0]]]]],
       caml_string_of_jsbytes("%s %s ambiguous and could be %s")],
     _l_=
      [0,
       [2,
        0,
        [12,
         32,
         [2,
          0,
          [11,
           caml_string_of_jsbytes(" defined twice (doc strings are '"),
           [2,
            0,
            [11,
             caml_string_of_jsbytes("' and '"),
             [2,0,[11,caml_string_of_jsbytes("')"),0]]]]]]]],
       caml_string_of_jsbytes
        ("%s %s defined twice (doc strings are '%s' and '%s')")],
     _j_=
      [0,
       [11,
        caml_string_of_jsbytes("one of "),
        [2,0,[11,caml_string_of_jsbytes(" or "),[2,0,0]]]],
       caml_string_of_jsbytes("one of %s or %s")],
     _k_=
      [0,
       [11,
        caml_string_of_jsbytes("either "),
        [2,0,[11,caml_string_of_jsbytes(" or "),[2,0,0]]]],
       caml_string_of_jsbytes("either %s or %s")],
     _i_=[0,[12,96,[2,0,[12,39,0]]],caml_string_of_jsbytes("`%s'")],
     _ap_=
      [0,
       caml_string_of_jsbytes("groff"),
       [0,caml_string_of_jsbytes("nroff"),0]],
     _aq_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" < "),
         [2,0,[11,caml_string_of_jsbytes(" | "),[2,0,0]]]]],
       caml_string_of_jsbytes("%s < %s | %s")],
     _ar_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" < "),[2,0,0]]],
       caml_string_of_jsbytes("%s < %s")],
     _an_=
      [0,
       [2,
        0,
        [12,
         32,
         [2,
          0,
          [11,
           caml_string_of_jsbytes(" 1>"),
           [2,0,[11,caml_string_of_jsbytes(" 2>"),[2,0,0]]]]]]],
       caml_string_of_jsbytes("%s %s 1>%s 2>%s")],
     _am_=
      [0,
       [11,
        caml_string_of_jsbytes('.\\" Pipe this output to groff -Tutf8 | less'),
        [17,
         3,
         [11,
          caml_string_of_jsbytes('.\\"'),
          [17,
           3,
           [11,
            caml_string_of_jsbytes(".mso an.tmac"),
            [17,
             3,
             [11,
              caml_string_of_jsbytes('.TH "'),
              [2,0,[11,caml_string_of_jsbytes('" '),[4,0,0,0,partial$0]]]]]]]]]],
       caml_string_of_jsbytes
        ('.\\" Pipe this output to groff -Tutf8 | less@\n.\\"@\n.mso an.tmac@\n.TH "%s" %d "%s" "%s" "%s"@\n.\\" Disable hyphenation and ragged-right@\n.nh@\n.ad l%a@?')],
     _ah_=
      [0,
       [17,3,[11,caml_string_of_jsbytes(".sp -1"),0]],
       caml_string_of_jsbytes("@\n.sp -1")],
     _aj_=
      [0,
       [17,
        3,
        [11,
         caml_string_of_jsbytes(".P"),
         [17,
          3,
          [11,
           caml_string_of_jsbytes(".nf"),
           [17,3,[15,[17,3,[11,caml_string_of_jsbytes(".fi"),0]]]]]]]],
       caml_string_of_jsbytes("@\n.P@\n.nf@\n%a@\n.fi")],
     _ak_=
      [0,
       [17,3,[11,caml_string_of_jsbytes(".SH "),[15,0]]],
       caml_string_of_jsbytes("@\n.SH %a")],
     _al_=
      [0,
       [17,3,[11,caml_string_of_jsbytes(".P"),[17,3,[15,0]]]],
       caml_string_of_jsbytes("@\n.P@\n%a")],
     _ai_=
      [0,
       [17,3,[11,caml_string_of_jsbytes(".TP 4"),[17,3,[15,[17,3,[15,0]]]]]],
       caml_string_of_jsbytes("@\n.TP 4@\n%a@\n%a")],
     _ag_=
      [0,
       [11,caml_string_of_jsbytes("\\N'"),[4,0,0,0,[12,39,0]]],
       caml_string_of_jsbytes("\\N'%d'")],
     _af_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [15,[17,0,0]]],
       caml_string_of_jsbytes("@[<v>%a@]")],
     _ac_=
      [0,
       [15,
        [18,
         [1,[0,0,caml_string_of_jsbytes("")]],
         [15,[17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]]],
       caml_string_of_jsbytes("%a@[%a@]@,")],
     _ad_=
      [0,
       [18,[1,[0,0,caml_string_of_jsbytes("")]],[15,[17,0,0]]],
       caml_string_of_jsbytes("@[%a@]")],
     _ae_=
      [0,
       [15,
        [18,
         [1,[0,0,caml_string_of_jsbytes("")]],
         [15,[17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]]],
       caml_string_of_jsbytes("%a@[%a@]@,")],
     _Z_=
      [0,
       [18,
        [1,[0,0,caml_string_of_jsbytes("")]],
        [15,[18,[1,[0,0,caml_string_of_jsbytes("")]],[15,[17,0,0]]]]],
       caml_string_of_jsbytes("@[%a@[%a@]")],
     ___=
      [0,
       [17,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]],
       caml_string_of_jsbytes("@]@,")],
     _$_=
      [0,
       [15,[18,[1,[0,0,caml_string_of_jsbytes("")]],[15,[17,0,[17,0,0]]]]],
       caml_string_of_jsbytes("%a@[%a@]@]")],
     _ab_=
      [0,
       [17,
        3,
        [15,[18,[1,[0,0,caml_string_of_jsbytes("")]],[15,[17,0,[17,0,0]]]]]],
       caml_string_of_jsbytes("@\n%a@[%a@]@]")],
     _aa_=
      [0,
       [17,[0,caml_string_of_jsbytes("@,"),0,0],0],
       caml_string_of_jsbytes("@,")],
     _Y_=[0,caml_string_of_jsbytes("cmdliner_manpage.ml"),271,19],
     _X_=
      [0,
       [11,
        caml_string_of_jsbytes("Unknown cmdliner markup $("),
        [0,[11,caml_string_of_jsbytes(",...) in "),[3,0,0]]]],
       caml_string_of_jsbytes("Unknown cmdliner markup $(%c,...) in %S")],
     _W_=
      [0,
       [11,
        caml_string_of_jsbytes("Illegal escape char "),
        [1,[11,caml_string_of_jsbytes(" in "),[3,0,0]]]],
       caml_string_of_jsbytes("Illegal escape char %C in %S")],
     _V_=
      [0,
       [11,
        caml_string_of_jsbytes("Undefined variable $("),
        [2,0,[11,caml_string_of_jsbytes(") in "),[3,0,0]]]],
       caml_string_of_jsbytes("Undefined variable $(%s) in %S")],
     _U_=
      [0,
       [11,caml_string_of_jsbytes("Unclosed $(...) in "),[3,0,0]],
       caml_string_of_jsbytes("Unclosed $(...) in %S")],
     _T_=
      [0,
       [11,caml_string_of_jsbytes("Malformed $(...) in "),[3,0,0]],
       caml_string_of_jsbytes("Malformed $(...) in %S")],
     _S_=
      [0,
       [11,
        caml_string_of_jsbytes("unescaped "),
        [1,[11,caml_string_of_jsbytes(" in "),[3,0,0]]]],
       caml_string_of_jsbytes("unescaped %C in %S")],
     _Q_=[0,[17,4,0],caml_string_of_jsbytes("@.")],
     _R_=
      [0,
       [11,caml_string_of_jsbytes("cmdliner error: "),0],
       caml_string_of_jsbytes("cmdliner error: ")],
     _P_=[0,caml_string_of_jsbytes("cmdliner_manpage.ml"),129,14],
     _at_=[0,caml_string_of_jsbytes("")],
     _as_=[0,caml_string_of_jsbytes("cmdliner_info.ml"),12,28],
     _a8_=
      [0,
       [18,[1,[0,0,caml_string_of_jsbytes("")]],[2,0,[17,0,0]]],
       caml_string_of_jsbytes("@[%s@]")],
     _a5_=[0,45],
     _a6_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" Manual"),0]],
       caml_string_of_jsbytes("%s Manual")],
     _a7_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")],
     _a2_=[0,45],
     _a4_=
      [0,
       [11,caml_string_of_jsbytes(" - "),[2,0,0]],
       caml_string_of_jsbytes(" - %s")],
     _a3_=[0,[2,0,[2,0,0]],caml_string_of_jsbytes("%s%s")],
     _a1_=
      [0,[2,0,[12,40,[4,0,0,0,[12,41,0]]]],caml_string_of_jsbytes("%s(%d)")],
     _aY_=[0,[2,0,[12,45,[2,0,0]]],caml_string_of_jsbytes("%s-%s")],
     _aZ_=
      [0,
       [11,
        caml_string_of_jsbytes("xref "),
        [2,0,[11,caml_string_of_jsbytes(": no such term name"),[17,4,0]]]],
       caml_string_of_jsbytes("xref %s: no such term name@.")],
     _a0_=[0,caml_string_of_jsbytes("doc-err"),0],
     _aX_=
      [0,
       [11,caml_string_of_jsbytes("$(b,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(b,%s)")],
     _aV_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _aW_=[0,[4,0,0,0,[12,45,[4,0,0,0,0]]],caml_string_of_jsbytes("%d-%d")],
     _aP_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(" $(b,"),
         [2,0,[11,caml_string_of_jsbytes(") env"),0]]]],
       caml_string_of_jsbytes("%s $(b,%s) env")],
     _aU_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _aQ_=
      [0,
       [11,caml_string_of_jsbytes("absent="),[2,0,[2,0,0]]],
       caml_string_of_jsbytes("absent=%s%s")],
     _aT_=
      [0,
       [11,caml_string_of_jsbytes("default="),[2,0,0]],
       caml_string_of_jsbytes("default=%s")],
     _aR_=
      [0,
       [11,
        caml_string_of_jsbytes(" ("),
        [2,0,[11,caml_string_of_jsbytes(") ("),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes(" (%s) (%s)")],
     _aS_=
      [0,
       [11,caml_string_of_jsbytes(" ("),[2,0,[12,41,0]]],
       caml_string_of_jsbytes(" (%s)")],
     _aN_=
      [0,
       [11,
        caml_string_of_jsbytes("$(b,"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(")[=$(i,"),
          [2,0,[11,caml_string_of_jsbytes(")]"),0]]]]],
       caml_string_of_jsbytes("$(b,%s)[=$(i,%s)]")],
     _aO_=
      [0,
       [11,
        caml_string_of_jsbytes("$(b,"),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(") [$(i,"),
          [2,0,[11,caml_string_of_jsbytes(")]"),0]]]]],
       caml_string_of_jsbytes("$(b,%s) [$(i,%s)]")],
     _aM_=
      [0,
       [11,caml_string_of_jsbytes("$(b,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(b,%s)")],
     _aK_=
      [0,
       [11,
        caml_string_of_jsbytes("$(b,"),
        [2,0,[11,caml_string_of_jsbytes(")=$(i,"),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("$(b,%s)=$(i,%s)")],
     _aL_=
      [0,
       [11,
        caml_string_of_jsbytes("$(b,"),
        [2,0,[11,caml_string_of_jsbytes(") $(i,"),[2,0,[12,41,0]]]]],
       caml_string_of_jsbytes("$(b,%s) $(i,%s)")],
     _aJ_=
      [0,
       [11,caml_string_of_jsbytes("$(i,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(i,%s)")],
     _aI_=
      [0,
       [11,caml_string_of_jsbytes("$(b,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(b,%s)")],
     _aH_=
      [0,
       [11,
        caml_string_of_jsbytes("$(b,"),
        [2,0,[11,caml_string_of_jsbytes(") [$(i,OPTION)]... "),[2,0,0]]]],
       caml_string_of_jsbytes("$(b,%s) [$(i,OPTION)]... %s")],
     _aG_=
      [0,
       [11,
        caml_string_of_jsbytes("$(b,"),
        [2,0,[11,caml_string_of_jsbytes(") $(i,COMMAND) ..."),0]]],
       caml_string_of_jsbytes("$(b,%s) $(i,COMMAND) ...")],
     _aD_=
      [0,
       [11,caml_string_of_jsbytes("$(i,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(i,%s)")],
     _aE_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _aF_=[0,[12,91,[2,0,[12,93,0]]],caml_string_of_jsbytes("[%s]")],
     _aC_=[0,[2,0,[0,[2,0,0]]],caml_string_of_jsbytes("%s%c%s")],
     _az_=
      [0,
       [11,caml_string_of_jsbytes("$(b,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(b,%s)")],
     _aA_=
      [0,
       [11,caml_string_of_jsbytes("$(b,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(b,%s)")],
     _ax_=
      [0,
       [11,caml_string_of_jsbytes("$(b,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(b,%s)")],
     _ay_=
      [0,
       [11,caml_string_of_jsbytes("$(i,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(i,%s)")],
     _av_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _aw_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _au_=
      [0,
       [11,caml_string_of_jsbytes("$(b,"),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("$(b,%s)")],
     _bq_=[0,[2,0,[12,10,[2,0,0]]],caml_string_of_jsbytes("%s\n%s")],
     _br_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(": "),
         [18,
          [1,[0,0,caml_string_of_jsbytes("")]],
          [11,
           caml_string_of_jsbytes("internal error, uncaught exception:"),
           [17,3,[15,[17,0,[17,4,0]]]]]]]],
       caml_string_of_jsbytes
        ("%s: @[internal error, uncaught exception:@\n%a@]@.")],
     _bp_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<v>"),0],
          caml_string_of_jsbytes("<v>")]],
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": "),
          [18,
           [1,[0,0,caml_string_of_jsbytes("")]],
           [15,
            [17,
             0,
             [17,
              [0,caml_string_of_jsbytes("@,"),0,0],
              [18,
               [1,[0,0,caml_string_of_jsbytes("")]],
               [11,caml_string_of_jsbytes("Usage: "),[18,partial$2,partial$1]]]]]]]]]],
       caml_string_of_jsbytes("@[<v>%s: @[%a@]@,@[Usage: @[%a@]@]@,%a@]@.")],
     _bo_=
      [0,
       [2,
        0,
        [11,
         caml_string_of_jsbytes(": "),
         [18,[1,[0,0,caml_string_of_jsbytes("")]],[15,[17,0,[17,4,0]]]]]],
       caml_string_of_jsbytes("%s: @[%a@]@.")],
     _bm_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Try `"),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(" --help' or `"),
           [2,
            0,
            [11,
             caml_string_of_jsbytes(" --help' for more information."),
             [17,0,0]]]]]]],
       caml_string_of_jsbytes
        ("@[<2>Try `%s --help' or `%s --help' for more information.@]")],
     _bn_=
      [0,
       [18,
        [1,
         [0,
          [11,caml_string_of_jsbytes("<2>"),0],
          caml_string_of_jsbytes("<2>")]],
        [11,
         caml_string_of_jsbytes("Try `"),
         [2,
          0,
          [11,
           caml_string_of_jsbytes(" --help' for more information."),
           [17,0,0]]]]],
       caml_string_of_jsbytes("@[<2>Try `%s --help' for more information.@]")],
     _bk_=
      [0,
       [18,[1,[0,0,caml_string_of_jsbytes("")]],[15,[17,0,[17,4,0]]]],
       caml_string_of_jsbytes("@[%a@]@.")],
     _bl_=[0,caml_string_of_jsbytes("cmdliner_msg.ml"),74,10],
     _bj_=
      [0,
       [11,
        caml_string_of_jsbytes("required option "),
        [2,0,[11,caml_string_of_jsbytes(" is missing"),0]]],
       caml_string_of_jsbytes("required option %s is missing")],
     _bh_=
      [0,
       [11,
        caml_string_of_jsbytes("option "),
        [2,0,[11,caml_string_of_jsbytes(" cannot be repeated"),0]]],
       caml_string_of_jsbytes("option %s cannot be repeated")],
     _bi_=
      [0,
       [11,
        caml_string_of_jsbytes("options "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" and "),
          [2,
           0,
           [11,
            caml_string_of_jsbytes(" cannot be present at the same time"),
            0]]]]],
       caml_string_of_jsbytes
        ("options %s and %s cannot be present at the same time")],
     _bg_=
      [0,
       [11,
        caml_string_of_jsbytes("option "),
        [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]],
       caml_string_of_jsbytes("option %s: %s")],
     _bf_=
      [0,
       [11,
        caml_string_of_jsbytes("option "),
        [2,0,[11,caml_string_of_jsbytes(" needs an argument"),0]]],
       caml_string_of_jsbytes("option %s needs an argument")],
     _be_=
      [0,
       [11,
        caml_string_of_jsbytes("option "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" is a flag, it cannot take the argument "),
          [2,0,0]]]],
       caml_string_of_jsbytes
        ("option %s is a flag, it cannot take the argument %s")],
     _bc_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(" argument: "),[2,0,0]]],
       caml_string_of_jsbytes("%s argument: %s")],
     _bd_=
      [0,
       [2,0,[11,caml_string_of_jsbytes("... arguments: "),[2,0,0]]],
       caml_string_of_jsbytes("%s... arguments: %s")],
     _ba_=
      [0,
       [11,
        caml_string_of_jsbytes("required arguments "),
        [2,0,[11,caml_string_of_jsbytes(" are missing"),0]]],
       caml_string_of_jsbytes("required arguments %s are missing")],
     _bb_=[0,caml_string_of_jsbytes("cmdliner_msg.ml"),31,8],
     _a$_=
      [0,
       [11,
        caml_string_of_jsbytes("required argument "),
        [2,0,[11,caml_string_of_jsbytes(" is missing"),0]]],
       caml_string_of_jsbytes("required argument %s is missing")],
     _a__=
      [0,
       [11,
        caml_string_of_jsbytes
         ("too many arguments, don't know what to do with "),
        [2,0,0]],
       caml_string_of_jsbytes
        ("too many arguments, don't know what to do with %s")],
     _a9_=
      [0,
       [11,
        caml_string_of_jsbytes("environment variable "),
        [2,0,[11,caml_string_of_jsbytes(": "),[2,0,0]]]],
       caml_string_of_jsbytes("environment variable %s: %s")],
     _bx_=[0,[12,45,[2,0,0]],caml_string_of_jsbytes("-%s")],
     _bv_=[1,0],
     _bw_=[0,0],
     _bu_=[0,caml_string_of_jsbytes("cmdliner_cline.ml"),29,59],
     _bt_=[0,caml_string_of_jsbytes("cmdliner_cline.ml"),28,59],
     _bs_=[0,caml_string_of_jsbytes("cmdliner_cline.ml"),27,56],
     _bL_=[0,caml_string_of_jsbytes("help"),0],
     _bM_=[0,[0,726666127]],
     _bJ_=[0,caml_string_of_jsbytes("version"),0],
     _bK_=[0,caml_string_of_jsbytes("Show version information.")],
     _bE_=
      [0,
       [11,
        caml_string_of_jsbytes("Show "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes
           (" in format $(docv). The value $(docv) must be "),
          [2,
           0,
           [11,
            caml_string_of_jsbytes
             (". With `auto',\n        the format is `pager` or `plain' whenever the $(b,TERM) env var is\n        `dumb' or undefined."),
            0]]]]],
       caml_string_of_jsbytes
        ("Show %s in format $(docv). The value $(docv) must be %s. With `auto',\n        the format is `pager` or `plain' whenever the $(b,TERM) env var is\n        `dumb' or undefined.")],
     _bD_=[0,caml_string_of_jsbytes("cmdliner_arg.ml"),225,9],
     _bC_=[0,1],
     _bB_=[0,1],
     _bz_=
      [0,
       [11,
        caml_string_of_jsbytes("invalid value '"),
        [2,0,[11,caml_string_of_jsbytes("', expected "),[2,0,0]]]],
       caml_string_of_jsbytes("invalid value '%s', expected %s")],
     _bF_=[0,caml_string_of_jsbytes("man-format"),0],
     _b3_=[0,caml_string_of_jsbytes("dummy")],
     _b2_=[0,106380200,-796721133],
     _bZ_=[0,106380200,936571788],
     _b0_=[0,106380200,3458171],
     _b1_=[0,106380200,-796721133],
     _bV_=[0,1],
     _bW_=[0,106380200,936571788],
     _bX_=[0,106380200,3458171],
     _bY_=[0,106380200,-796721133],
     _bU_=[0,[1,114449436]],
     _bP_=[0,caml_string_of_jsbytes("on unexpected internal errors (bugs).")],
     _bR_=[0,caml_string_of_jsbytes("on command line parsing errors.")],
     _bS_=[0,caml_string_of_jsbytes("on success.")];
    function is_empty(t){return caml_equal(t,optidx)}
    function add(t,k,d)
     {function loop(t,k,len,i,d,pre_d)
       {var match=i === len?1:0;
        if(match)
         {var t$0=[0,[1,d],t[2]],_hd_=t[1];
          if(typeof _hd_ !== "number" && 1 === _hd_[0])
           {var old=_hd_[1];return [0,-238509616,[0,old,t$0]]}
          return [0,3901504,t$0]}
        var _he_=t[1],switch$0=0;
        if(typeof _he_ === "number")
         if(1 === _he_)var v=pre_d;else switch$0 = 1;
        else
         if(1 === _he_[0])var v=_he_;else switch$0 = 1;
        if(switch$0)var v=0;
        try
         {var
           _hj_=t[2],
           _hk_=caml_string_get(k,i),
           _hl_=caml_call2(Cmap[27],_hk_,_hj_),
           t$1=_hl_}
        catch(_hm_)
         {_hm_ = caml_wrap_exception(_hm_);
          if(_hm_ !== Stdlib[8])throw _hm_;
          var t$1=optidx}
        var match$0=loop(t$1,k,len,i + 1 | 0,d,pre_d);
        if(3901504 <= match$0[1])
         {var n=match$0[2],_hf_=t[2],_hg_=caml_string_get(k,i);
          return [0,3901504,[0,v,caml_call3(Cmap[4],_hg_,n,_hf_)]]}
        var
         match$1=match$0[2],
         n$0=match$1[2],
         o=match$1[1],
         _hh_=t[2],
         _hi_=caml_string_get(k,i);
        return [0,-238509616,[0,o,[0,v,caml_call3(Cmap[4],_hi_,n$0,_hh_)]]]}
      return loop(t,k,caml_ml_string_length(k),0,d,[0,d])}
    function find_node(t,k)
     {var len=caml_ml_string_length(k),t$0=t,i=0;
      for(;;)
       {if(i === len)return t$0;
        var
         i$0=i + 1 | 0,
         _hb_=t$0[2],
         _hc_=caml_string_get(k,i),
         t$1=caml_call2(Cmap[27],_hc_,_hb_),
         t$0=t$1,
         i=i$0;
        continue}}
    function find(t,k)
     {try
       {var _g__=find_node(t,k)[1];
        if(typeof _g__ === "number")
         var _g$_=_g__?-358247754:-328798100;
        else
         var v=_g__[1],_g$_=[0,17724,v];
        return _g$_}
      catch(_ha_)
       {_ha_ = caml_wrap_exception(_ha_);
        if(_ha_ === Stdlib[8])return -358247754;
        throw _ha_}}
    function ambiguities(t,p)
     {try
       {var t$0=find_node(t,p),_g1_=t$0[1],switch$0=0;
        if(typeof _g1_ === "number" && ! _g1_)
         {var
           to_list=
            function(m)
             {var _g8_=0;
              function _g9_(k,t,acc){return [0,[0,k,t],acc]}
              return caml_call3(Cmap[13],_g9_,m,_g8_)},
           aux=
            function(acc,p$1,param)
             {var acc$0=acc,p$2=p$1,param$0=param;
              for(;;)
               {if(param$0)
                 {var _g5_=param$0[1];
                  if(_g5_)
                   {var
                     rest=param$0[2],
                     succs=_g5_[2],
                     match=_g5_[1],
                     t=match[2],
                     c=match[1],
                     _g4_=caml_call2(Stdlib_string[1],1,c),
                     p=caml_call2(Stdlib[28],p$2,_g4_),
                     switch$0=0,
                     _g6_=t[1];
                    if(typeof _g6_ === "number")
                     {if(1 === _g6_)throw [0,Assert_failure,_a_]}
                    else
                     if(1 === _g6_[0]){var acc$1=[0,p,acc$0];switch$0 = 1}
                    if(! switch$0)var acc$1=acc$0;
                    var
                     param$1=[0,to_list(t[2]),[0,succs,rest]],
                     acc$0=acc$1,
                     p$2=p,
                     param$0=param$1;
                    continue}
                  var _g7_=param$0[2];
                  if(_g7_)
                   {var
                     p$0=
                      caml_call3
                       (Stdlib_string[4],p$2,0,caml_ml_string_length(p$2) - 1 | 0),
                     p$2=p$0,
                     param$0=_g7_;
                    continue}
                  return acc$0}
                throw [0,Assert_failure,_b_]}},
           _g2_=aux(0,p,[0,to_list(t$0[2]),0]);
          switch$0 = 1}
        if(! switch$0)var _g2_=0;
        return _g2_}
      catch(_g3_)
       {_g3_ = caml_wrap_exception(_g3_);
        if(_g3_ === Stdlib[8])return 0;
        throw _g3_}}
    function of_list(l)
     {function add$0(t,param)
       {var v=param[2],s=param[1],match=add(t,s,v);
        if(3901504 <= match[1]){var t$0=match[2];return t$0}
        var match$0=match[2],t$1=match$0[2];
        return t$1}
      return caml_call3(Stdlib_list[22],add$0,optidx,l)}
    var Cmdliner_trie=[0,optidx,is_empty,add,find,ambiguities,of_list];
    caml_register_global(295,Cmdliner_trie,"Cmdliner_trie");
    function value(s,candidates)
     {function add(param,name)
       {var
         acc=param[2],
         min=param[1],
         m=caml_ml_string_length(s),
         n=caml_ml_string_length(name),
         d=caml_call3(Stdlib_array[3],m + 1 | 0,n + 1 | 0,0),
         _gL_=0;
        if(! (m < 0))
         {var i$0=_gL_;
          for(;;)
           {caml_check_bound(caml_check_bound(d,i$0)[1 + i$0],0)[1] = i$0;
            var _g0_=i$0 + 1 | 0;
            if(m !== i$0){var i$0=_g0_;continue}
            break}}
        var _gM_=0;
        if(! (n < 0))
         {var j$0=_gM_;
          for(;;)
           {caml_check_bound(caml_check_bound(d,0)[1],j$0)[1 + j$0] = j$0;
            var _gZ_=j$0 + 1 | 0;
            if(n !== j$0){var j$0=_gZ_;continue}
            break}}
        var _gN_=1;
        if(! (n < 1))
         {var j=_gN_;
          for(;;)
           {var _gO_=1;
            if(! (m < 1))
             {var i=_gO_;
              for(;;)
               {var _gQ_=caml_string_get(name,j - 1 | 0);
                if(caml_string_get(s,i - 1 | 0) === _gQ_)
                 {var
                   _gR_=j - 1 | 0,
                   _gS_=i - 1 | 0,
                   _gT_=
                    caml_check_bound(caml_check_bound(d,_gS_)[1 + _gS_],_gR_)
                     [1 + _gR_];
                  caml_check_bound(caml_check_bound(d,i)[1 + i],j)[1 + j]
                  =
                  _gT_}
                else
                 {var
                   _gV_=j - 1 | 0,
                   _gW_=i - 1 | 0,
                   c=
                    caml_check_bound(caml_check_bound(d,_gW_)[1 + _gW_],_gV_)
                     [1 + _gV_]
                    +
                    1
                    |
                    0,
                   _gX_=j - 1 | 0,
                   b=
                    caml_check_bound(caml_check_bound(d,i)[1 + i],_gX_)
                     [1 + _gX_]
                    +
                    1
                    |
                    0,
                   _gY_=i - 1 | 0,
                   a=
                    caml_check_bound(caml_check_bound(d,_gY_)[1 + _gY_],j)
                     [1 + j]
                    +
                    1
                    |
                    0,
                   _gJ_=caml_call2(Stdlib[16],b,c),
                   _gK_=caml_call2(Stdlib[16],a,_gJ_);
                  caml_check_bound(caml_check_bound(d,i)[1 + i],j)[1 + j]
                  =
                  _gK_}
                var _gU_=i + 1 | 0;
                if(m !== i){var i=_gU_;continue}
                break}}
            var _gP_=j + 1 | 0;
            if(n !== j){var j=_gP_;continue}
            break}}
        var d$0=caml_check_bound(caml_check_bound(d,m)[1 + m],n)[1 + n];
        return d$0 === min
                ?[0,min,[0,name,acc]]
                :d$0 < min?[0,d$0,[0,name,0]]:[0,min,acc]}
      var
       match=caml_call3(Stdlib_list[22],add,[0,Stdlib[19],0],candidates),
       suggs=match[2],
       dist=match[1];
      return 3 <= dist?0:suggs}
    var Cmdliner_suggest=[0,value];
    caml_register_global(297,Cmdliner_suggest,"Cmdliner_suggest");
    var
     _c_=Stdlib_printf[4],
     _d_=Stdlib_format[123],
     _f_=Stdlib_format[13],
     _g_=Stdlib_format[21],
     _h_=Stdlib_format[120],
     _e_=Stdlib_format[25];
    function pp_lines(ppf,s)
     {function sub(s,start,stop,max)
       {if(start === stop)return cst;
        if(0 === start && max < stop)return s;
        return caml_call3(Stdlib_string[4],s,start,stop - start | 0)}
      var max=caml_ml_string_length(s) - 1 | 0,start$1=0;
      a:
      for(;;)
       {var start=start$1;
        for(;;)
         {if(! (max < start) && 10 !== caml_string_get(s,start))
           {var start$0=start + 1 | 0,start=start$0;continue}
          if(max < start)
           {var _gH_=sub(s,start$1,start,max);
            return caml_call2(Stdlib_format[13],ppf,_gH_)}
          var _gI_=sub(s,start$1,start,max);
          caml_call2(Stdlib_format[13],ppf,_gI_);
          caml_call2(Stdlib_format[32],ppf,0);
          var start$2=start + 1 | 0,start$1=start$2;
          continue a}}}
    function pp_tokens(spaces,ppf,s)
     {function is_space(param)
       {var _gG_=param - 9 | 0,switch$0=0;
        if(4 < _gG_ >>> 0)
         {if(23 === _gG_)switch$0 = 1}
        else
         if(1 < (_gG_ - 2 | 0) >>> 0)switch$0 = 1;
        return switch$0?1:0}
      var i_max=caml_ml_string_length(s) - 1 | 0;
      function flush(start,stop)
       {return caml_call2
                (_f_,
                 ppf,
                 caml_call3
                  (Stdlib_string[4],s,start,(stop - start | 0) + 1 | 0))}
      var start=0,i$1=0;
      a:
      for(;;)
       {if(i_max < i$1)return flush(start,i_max);
        if(is_space(caml_string_get(s,i$1)))
         {var i=i$1;
          for(;;)
           {if(! (i_max < i) && is_space(caml_string_get(s,i)))
             {var i$0=i + 1 | 0,i=i$0;continue}
            flush(start,i$1 - 1 | 0);
            if(spaces)caml_call2(_e_,ppf,0);else caml_call2(_g_,ppf,32);
            if(i_max < i)return 0;
            var start=i,i$1=i;
            continue a}}
        var i$2=i$1 + 1 | 0,i$1=i$2;
        continue}}
    function doc_quote(s){return caml_call2(_c_,_i_,s)}
    function doc_alts(opt,alts)
     {if(opt)var sth=opt[1],quoted=sth;else var quoted=1;
      var quote=quoted?doc_quote:function(s){return s};
      if(alts)
       {var _gA_=alts[2],_gB_=alts[1];
        if(_gA_)
         {if(_gA_[2])
           {var
             rev_alts=caml_call1(Stdlib_list[9],alts),
             _gC_=quote(caml_call1(Stdlib_list[5],rev_alts)),
             _gD_=caml_call1(Stdlib_list[6],rev_alts),
             _gE_=caml_call2(Stdlib_list[19],quote,_gD_);
            return caml_call3
                    (_c_,_j_,caml_call2(Stdlib_string[7],cst$0,_gE_),_gC_)}
          var b=_gA_[1],_gF_=quote(b);
          return caml_call3(_c_,_k_,quote(_gB_),_gF_)}
        return quote(_gB_)}
      return caml_call1(Stdlib[1],err_empty_list)}
    function err_multi_def(kind,name,doc,v$0,v)
     {var _gz_=caml_call1(doc,v);
      return caml_call5(_c_,_l_,kind,name,caml_call1(doc,v$0),_gz_)}
    function err_ambiguous(kind,s,ambs)
     {var _gy_=doc_alts(0,ambs);
      return caml_call4(_c_,_m_,kind,doc_quote(s),_gy_)}
    function err_unknown(opt,kind,v)
     {if(opt)var sth=opt[1],hints=sth;else var hints=0;
      if(hints)
       var s=doc_alts(0,hints),hints$0=caml_call2(_c_,_n_,s);
      else
       var hints$0=cst$1;
      return caml_call4(_c_,_o_,kind,doc_quote(v),hints$0)}
    function err_no(kind,s){return caml_call3(_c_,_p_,doc_quote(s),kind)}
    function err_element(kind,s,exp){return caml_call4(_c_,_s_,kind,s,exp)}
    function err_invalid_val(s,exp)
     {return caml_call4(_c_,_t_,kind,doc_quote(s),exp)}
    function err_sep_miss(sep,s)
     {return err_invalid_val(s,caml_call2(_c_,_u_,sep))}
    function some(opt,param)
     {var print=param[2],parse=param[1];
      if(opt)var sth=opt[1],none=sth;else var none=cst$2;
      function parse$0(s)
       {var e=caml_call1(parse,s);
        if(106380200 <= e[1])return e;
        var v=e[2];
        return [0,17724,[0,v]]}
      function print$0(ppf,v)
       {if(v){var v$0=v[1];return caml_call2(print,ppf,v$0)}
        return caml_call2(Stdlib_format[13],ppf,none)}
      return [0,parse$0,print$0]}
    function parse(s)
     {try
       {var _gw_=[0,17724,caml_call1(Stdlib[32],s)];return _gw_}
      catch(_gx_)
       {_gx_ = caml_wrap_exception(_gx_);
        if(_gx_[1] === Stdlib[6])
         return [0,106380200,err_invalid_val(s,doc_alts(0,_v_))];
        throw _gx_}}
    var bool=[0,parse,Stdlib_format[23]];
    function parse$0(s)
     {var match=1 === caml_ml_string_length(s)?1:0;
      return match
              ?[0,17724,caml_string_get(s,0)]
              :[0,106380200,err_invalid_val(s,cst_expected_a_character)]}
    var char$0=[0,parse$0,_g_];
    function parse_with(t_of_str,exp,s)
     {try
       {var _gu_=[0,17724,caml_call1(t_of_str,s)];return _gu_}
      catch(_gv_)
       {_gv_ = caml_wrap_exception(_gv_);
        if(_gv_[1] === Stdlib[7])return [0,106380200,err_invalid_val(s,exp)];
        throw _gv_}}
    var
     _w_=Stdlib_format[17],
     _x_=caml_int_of_string,
     int$0=
      [0,
       function(_gt_){return parse_with(_x_,cst_expected_an_integer,_gt_)},
       _w_];
    function _y_(ppf){return caml_call2(_d_,ppf,_z_)}
    var
     _A_=caml_int_of_string,
     int32=
      [0,
       function(_gs_)
        {return parse_with(_A_,cst_expected_a_32_bit_integer,_gs_)},
       _y_];
    function _B_(ppf){return caml_call2(_d_,ppf,_C_)}
    var
     _D_=runtime.caml_int64_of_string,
     int64=
      [0,
       function(_gr_)
        {return parse_with(_D_,cst_expected_a_64_bit_integer,_gr_)},
       _B_];
    function _E_(ppf){return caml_call2(_d_,ppf,_F_)}
    var
     _G_=caml_int_of_string,
     nativeint=
      [0,
       function(_gq_)
        {return parse_with(_G_,cst_expected_a_processor_nativ,_gq_)},
       _E_],
     _H_=Stdlib_format[19],
     _I_=runtime.caml_float_of_string,
     float$0=
      [0,
       function(_gp_)
        {return parse_with(_I_,cst_expected_a_floating_point_,_gp_)},
       _H_],
     string=[0,function(s){return [0,17724,s]},_f_];
    function enum$0(sl)
     {if(0 === sl)return caml_call1(Stdlib[1],err_empty_list);
      var t=of_list(sl);
      function parse(s)
       {var r=find(t,s);
        if(typeof r === "number")
         {if(-328798100 <= r)
           {var
             _gl_=ambiguities(t,s),
             ambs=caml_call2(Stdlib_list[51],caml_string_compare,_gl_);
            return [0,106380200,err_ambiguous(cst_enum_value,s,ambs)]}
          var
           _gm_=function(param){var s=param[1];return s},
           _gn_=caml_call2(Stdlib_list[19],_gm_,sl),
           alts=caml_call1(Stdlib_list[9],_gn_),
           _go_=doc_alts(0,alts);
          return [0,
                  106380200,
                  err_invalid_val(s,caml_call2(Stdlib[28],cst_expected,_go_))]}
        return r}
      function print(ppf,v)
       {function _gi_(param){var v=param[2],s=param[1];return [0,v,s]}
        var sl_inv=caml_call2(Stdlib_list[19],_gi_,sl);
        try
         {var _gj_=caml_call2(_f_,ppf,caml_call2(Stdlib_list[41],v,sl_inv));
          return _gj_}
        catch(_gk_)
         {_gk_ = caml_wrap_exception(_gk_);
          if(_gk_ === Stdlib[8])
           return caml_call1(Stdlib[1],err_incomplete_enum);
          throw _gk_}}
      return [0,parse,print]}
    function parse$1(s)
     {var match=caml_sys_file_exists(s);
      return match?[0,17724,s]:[0,106380200,err_no(cst_file_or_directory,s)]}
    var file=[0,parse$1,_f_];
    function parse$2(s)
     {var match=caml_sys_file_exists(s);
      return match
              ?caml_sys_is_directory(s)
                ?[0,17724,s]
                :[0,106380200,caml_call2(_c_,_q_,doc_quote(s))]
              :[0,106380200,err_no(cst_directory,s)]}
    var dir=[0,parse$2,_f_];
    function parse$3(s)
     {var match=caml_sys_file_exists(s);
      return match
              ?caml_sys_is_directory(s)
                ?[0,106380200,caml_call2(_c_,_r_,doc_quote(s))]
                :[0,17724,s]
              :[0,106380200,err_no(cst_file,s)]}
    var non_dir_file=[0,parse$3,_f_];
    function split_and_parse(sep,parse,s)
     {function parse$0(sub)
       {var match=caml_call1(parse,sub);
        if(106380200 <= match[1])
         {var e=match[2];return caml_call1(Stdlib[2],e)}
        var v=match[2];
        return v}
      function split(accum,j)
       {var accum$0=accum,j$0=j;
        for(;;)
         {try
           {var _gf_=caml_call3(Stdlib_string[20],s,j$0,sep),i=_gf_}
          catch(_gh_)
           {_gh_ = caml_wrap_exception(_gh_);
            if(_gh_ !== Stdlib[8])throw _gh_;
            var i=-1,_gg_=_gh_}
          if(-1 === i)
           {var p=caml_call3(Stdlib_string[4],s,0,j$0 + 1 | 0);
            return caml_string_notequal(p,cst$3)
                    ?[0,parse$0(p),accum$0]
                    :accum$0}
          var
           p$0=caml_call3(Stdlib_string[4],s,i + 1 | 0,j$0 - i | 0),
           accum$1=
            caml_string_notequal(p$0,cst$4)?[0,parse$0(p$0),accum$0]:accum$0,
           j$1=i - 1 | 0,
           accum$0=accum$1,
           j$0=j$1;
          continue}}
      return split(0,caml_ml_string_length(s) - 1 | 0)}
    function list(opt,param)
     {var pp_e=param[2],parse=param[1];
      if(opt)var sth=opt[1],sep=sth;else var sep=44;
      function parse$0(s)
       {try
         {var _ge_=[0,17724,split_and_parse(sep,parse,s)];return _ge_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Stdlib[7])
           {var e=exn[2];return [0,106380200,err_element(cst_list,s,e)]}
          throw exn}}
      function print(ppf,param)
       {var param$0=param;
        for(;;)
         {if(param$0)
           {var l=param$0[2],v=param$0[1];
            caml_call2(pp_e,ppf,v);
            var _gd_=0 !== l?1:0;
            if(_gd_){caml_call2(_g_,ppf,sep);var param$0=l;continue}
            return _gd_}
          return 0}}
      return [0,parse$0,print]}
    function array(opt,param)
     {var pp_e=param[2],parse=param[1];
      if(opt)var sth=opt[1],sep=sth;else var sep=44;
      function parse$0(s)
       {try
         {var
           _gb_=split_and_parse(sep,parse,s),
           _gc_=[0,17724,caml_call1(Stdlib_array[12],_gb_)];
          return _gc_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Stdlib[7])
           {var e=exn[2];return [0,106380200,err_element(cst_array,s,e)]}
          throw exn}}
      function print(ppf,v)
       {var max=v.length - 1 - 1 | 0,_f$_=0;
        if(! (max < 0))
         {var i=_f$_;
          for(;;)
           {caml_call2(pp_e,ppf,caml_check_bound(v,i)[1 + i]);
            if(i !== max)caml_call2(_g_,ppf,sep);
            var _ga_=i + 1 | 0;
            if(max !== i){var i=_ga_;continue}
            break}}
        return 0}
      return [0,parse$0,print]}
    function split_left(sep,s)
     {try
       {var
         i=caml_call2(Stdlib_string[14],s,sep),
         len=caml_ml_string_length(s),
         _f8_=caml_call3(Stdlib_string[4],s,i + 1 | 0,(len - i | 0) - 1 | 0),
         _f9_=[0,[0,caml_call3(Stdlib_string[4],s,0,i),_f8_]];
        return _f9_}
      catch(_f__)
       {_f__ = caml_wrap_exception(_f__);
        if(_f__ === Stdlib[8])return 0;
        throw _f__}}
    function t2(opt,param,_f7_)
     {var pr1=_f7_[2],pa1=_f7_[1],pr0=param[2],pa0=param[1];
      if(opt)var sth=opt[1],sep=sth;else var sep=44;
      function parser(s)
       {var match=split_left(sep,s);
        if(match)
         {var
           match$0=match[1],
           v1=match$0[2],
           v0=match$0[1],
           match$1=caml_call1(pa0,v0),
           match$2=caml_call1(pa1,v1);
          if(106380200 <= match$1[1])
           var e=match$1[2];
          else
           {if(typeof match$2 !== "number" && 17724 === match$2[1])
             {var v1$0=match$2[2],v0$0=match$1[2];
              return [0,17724,[0,v0$0,v1$0]]}
            var e=match$2[2]}
          return [0,106380200,err_element(cst_pair,s,e)]}
        return [0,106380200,err_sep_miss(sep,s)]}
      function printer(ppf,param)
       {var v1=param[2],v0=param[1];
        return caml_call7(_d_,ppf,_J_,pr0,v0,sep,pr1,v1)}
      return [0,parser,printer]}
    function t3(opt,param,_f6_,_f5_)
     {var
       pr2=_f5_[2],
       pa2=_f5_[1],
       pr1=_f6_[2],
       pa1=_f6_[1],
       pr0=param[2],
       pa0=param[1];
      if(opt)var sth=opt[1],sep=sth;else var sep=44;
      function parse(s)
       {var match=split_left(sep,s);
        if(match)
         {var
           match$0=match[1],
           s$0=match$0[2],
           v0=match$0[1],
           match$1=split_left(sep,s$0);
          if(match$1)
           {var
             match$2=match$1[1],
             v2=match$2[2],
             v1=match$2[1],
             match$3=caml_call1(pa0,v0),
             match$4=caml_call1(pa1,v1),
             match$5=caml_call1(pa2,v2);
            if(106380200 <= match$3[1])
             var e=match$3[2];
            else
             {var switch$0=0;
              if(typeof match$4 === "number" || ! (17724 === match$4[1]))
               switch$0 = 1;
              else
               if(typeof match$5 !== "number" && 17724 === match$5[1])
                {var v2$0=match$5[2],v1$0=match$4[2],v0$0=match$3[2];
                 return [0,17724,[0,v0$0,v1$0,v2$0]]}
              var switch$1=0;
              if
               (switch$0
                &&
                typeof match$4
                !==
                "number"
                &&
                106380200
                ===
                match$4[1])
               {var e=match$4[2];switch$1 = 1}
              if(! switch$1)var e=match$5[2]}
            return [0,106380200,err_element(cst_triple,s$0,e)]}
          return [0,106380200,err_sep_miss(sep,s$0)]}
        return [0,106380200,err_sep_miss(sep,s)]}
      function print(ppf,param)
       {var v2=param[3],v1=param[2],v0=param[1];
        return caml_call10(_d_,ppf,_K_,pr0,v0,sep,pr1,v1,sep,pr2,v2)}
      return [0,parse,print]}
    function t4(opt,param,_f4_,_f3_,_f2_)
     {var
       pr3=_f2_[2],
       pa3=_f2_[1],
       pr2=_f3_[2],
       pa2=_f3_[1],
       pr1=_f4_[2],
       pa1=_f4_[1],
       pr0=param[2],
       pa0=param[1];
      if(opt)var sth=opt[1],sep=sth;else var sep=44;
      function parse(s)
       {var match=split_left(sep,s);
        if(match)
         {var
           match$0=match[1],
           s$0=match$0[2],
           v0=match$0[1],
           match$1=split_left(sep,s$0);
          if(match$1)
           {var
             match$2=match$1[1],
             s$1=match$2[2],
             v1=match$2[1],
             match$3=split_left(sep,s$1);
            if(match$3)
             {var
               match$4=match$3[1],
               v3=match$4[2],
               v2=match$4[1],
               match$5=caml_call1(pa0,v0),
               match$6=caml_call1(pa1,v1),
               match$7=caml_call1(pa2,v2),
               match$8=caml_call1(pa3,v3);
              if(106380200 <= match$5[1])
               var e=match$5[2];
              else
               {var switch$0=0;
                if(typeof match$6 === "number" || ! (17724 === match$6[1]))
                 switch$0 = 2;
                else
                 if(typeof match$7 !== "number" && 17724 === match$7[1])
                  if(typeof match$8 === "number")
                   switch$0 = 1;
                  else
                   {if(17724 === match$8[1])
                     {var
                       v4=match$8[2],
                       v3$0=match$7[2],
                       v2$0=match$6[2],
                       v1$0=match$5[2];
                      return [0,17724,[0,v1$0,v2$0,v3$0,v4]]}
                    switch$0 = 1}
                var switch$1=0;
                switch(switch$0)
                 {case 2:
                   if
                    (typeof match$6
                     ===
                     "number"
                     ||
                     !
                     (106380200 === match$6[1]))
                    switch$1 = 1;
                   else
                    var e=match$6[2];
                   break;
                  case 0:switch$1 = 1;break;
                  default:switch$1 = 2}
                var switch$2=0;
                switch(switch$1)
                 {case 1:
                   if
                    (typeof match$7
                     ===
                     "number"
                     ||
                     !
                     (106380200 === match$7[1]))
                    switch$2 = 1;
                   else
                    var e=match$7[2];
                   break;
                  case 2:switch$2 = 1;break
                  }
                if(switch$2)var e=match$8[2]}
              return [0,106380200,err_element(cst_quadruple,s$1,e)]}
            return [0,106380200,err_sep_miss(sep,s$1)]}
          return [0,106380200,err_sep_miss(sep,s$0)]}
        return [0,106380200,err_sep_miss(sep,s)]}
      function print(ppf,param)
       {var v3=param[4],v2=param[3],v1=param[2],v0=param[1];
        return caml_call13
                (_d_,ppf,_L_,pr0,v0,sep,pr1,v1,sep,pr2,v2,sep,pr3,v3)}
      return [0,parse,print]}
    function env_bool_parse(s)
     {var s$0=caml_call1(Stdlib_string[30],s);
      if(caml_string_notequal(s$0,cst$5) && caml_string_notequal(s$0,cst_0))
       {var switch$0=0;
        if(caml_string_notequal(s$0,cst_1))
         {if
           (caml_string_notequal(s$0,cst_false)
            &&
            caml_string_notequal(s$0,cst_n)
            &&
            caml_string_notequal(s$0,cst_no))
           if
            (caml_string_notequal(s$0,cst_true)
             &&
             caml_string_notequal(s$0,cst_y))
            {if(caml_string_notequal(s$0,cst_yes))
              return [0,106380200,err_invalid_val(s$0,doc_alts(0,_M_))];
             switch$0 = 1}
           else
            switch$0 = 1}
        else
         switch$0 = 1;
        if(switch$0)return _N_}
      return _O_}
    var
     Cmdliner_base=
      [0,
       _h_,
       pp_lines,
       pp_tokens,
       doc_quote,
       doc_alts,
       err_ambiguous,
       err_unknown,
       err_multi_def,
       some,
       bool,
       char$0,
       int$0,
       nativeint,
       int32,
       int64,
       float$0,
       string,
       enum$0,
       file,
       dir,
       non_dir_file,
       list,
       array,
       t2,
       t2,
       t3,
       t4,
       env_bool_parse];
    caml_register_global(300,Cmdliner_base,"Cmdliner_base");
    var
     order=
      [0,
       s_name,
       s_synopsis,
       s_description,
       s_created,
       s_commands,
       s_arguments,
       s_options,
       s_common_options,
       s_exit_status,
       s_environment,
       s_files,
       s_examples,
       s_bugs,
       s_authors,
       s_see_also],
     order_synopsis=1,
     order_created=3;
    function section_to_order(on_unknown,s)
     {var max=order.length - 1 - 1 | 0,i=0;
      for(;;)
       {var match=max < i?1:0;
        if(match)return on_unknown;
        if(caml_string_equal(caml_check_bound(order,i)[1 + i],s))return i;
        var i$0=i + 1 | 0,i=i$0;
        continue}}
    function smap_of_blocks(bs)
     {function loop(s,s_o,rbs,smap,param)
       {var s$0=s,s_o$0=s_o,rbs$0=rbs,smap$0=smap,param$0=param;
        for(;;)
         {if(param$0)
           {var _f0_=param$0[1];
            if(typeof _f0_ !== "number")
             {var _f1_=_f0_[1];
              if(83 === _f1_)
               {var
                 bs=param$0[2],
                 new_sec=_f0_[2],
                 s_o$1=section_to_order(s_o$0,new_sec),
                 smap$1=[0,[0,s$0,[0,s_o$0,rbs$0]],smap$0],
                 s$0=new_sec,
                 s_o$0=s_o$1,
                 rbs$0=0,
                 smap$0=smap$1,
                 param$0=bs;
                continue}
              if(! (-595680601 <= _f1_))
               {var
                 bs$0=param$0[2],
                 blist=_f0_[2],
                 match=loop(s$0,s_o$0,rbs$0,smap$0,blist),
                 smap$2=match[4],
                 rbs$2=match[3],
                 s_o$2=match[2],
                 s$1=match[1],
                 s$0=s$1,
                 s_o$0=s_o$2,
                 rbs$0=rbs$2,
                 smap$0=smap$2,
                 param$0=bs$0;
                continue}}
            var
             param$1=param$0[2],
             rbs$1=[0,_f0_,rbs$0],
             rbs$0=rbs$1,
             param$0=param$1;
            continue}
          return [0,s$0,s_o$0,rbs$0,smap$0]}}
      var switch$0=0;
      if(bs)
       {var _fW_=bs[1];
        if(typeof _fW_ !== "number")
         {var _fX_=_fW_[1];
          if(-595680602 === _fX_)
           {var _fY_=_fW_[2];
            if(_fY_)
             {var _fZ_=_fY_[1];
              if(typeof _fZ_ !== "number" && 83 === _fZ_[1])
               {var
                 bs$1=bs[2],
                 blist=_fY_[2],
                 s$0=_fZ_[2],
                 bs$0=[0,[0,-595680602,blist],bs$1],
                 first$0=s$0;
                switch$0 = 1}}}
          else
           if(83 === _fX_)
            {var bs$2=bs[2],s$1=_fW_[2],bs$0=bs$2,first$0=s$1;switch$0 = 1}}}
      if(! switch$0)var bs$0=bs,first$0=first;
      var
       first_o=section_to_order(order_synopsis,first$0),
       match=loop(first$0,first_o,0,0,bs$0),
       smap=match[4],
       rc=match[3],
       s_o=match[2],
       s=match[1];
      return [0,[0,s,[0,s_o,rc]],smap]}
    function smap_to_blocks(smap)
     {if(smap)
       {var
         smap$2=smap[2],
         _fV_=smap[1],
         match$0=_fV_[2],
         rbs=match$0[2],
         s$1=_fV_[1],
         acc=0,
         smap$0=smap$2,
         s=s$1,
         param=rbs;
        for(;;)
         {if(param)
           {var
             param$0=param[2],
             b=param[1],
             acc$0=[0,b,acc],
             acc=acc$0,
             param=param$0;
            continue}
          var acc$1=caml_string_equal(s,cst$6)?acc:[0,[0,83,s],acc];
          if(smap$0)
           {var
             smap$1=smap$0[2],
             _fU_=smap$0[1],
             match=_fU_[2],
             param$1=match[2],
             s$0=_fU_[1],
             acc=acc$1,
             smap$0=smap$1,
             s=s$0,
             param=param$1;
            continue}
          return acc$1}}
      return 0}
    function smap_has_section(smap,sec)
     {function _fT_(param){var s=param[1];return caml_equal(sec,s)}
      return caml_call2(Stdlib_list[30],_fT_,smap)}
    function smap_append_block(right,sec,b)
     {var
       o=section_to_order(order_created,sec),
       max_lt_o=-1,
       left=0,
       param=right;
      for(;;)
       {if(param)
         {var
           s=param[1],
           match=s[2],
           o$0=match[1],
           s$0=s[1],
           right$0=param[2],
           rbs=match[2];
          if(! caml_string_equal(s$0,sec))
           {var
             right$1=param[2],
             max_lt_o$0=o$0 < o?caml_call2(Stdlib[17],o$0,max_lt_o):max_lt_o,
             left$0=[0,s,left],
             max_lt_o=max_lt_o$0,
             left=left$0,
             param=right$1;
            continue}
          var
           try_insert=
            [0,
             caml_call2
              (Stdlib_list[12],[0,[0,sec,[0,o$0,[0,b,rbs]]],left],right$0)]}
        else
         var
          try_insert=
           -1 === max_lt_o
            ?[0,caml_call1(Stdlib_list[9],[0,[0,sec,[0,o,[0,b,0]]],left])]
            :[1,max_lt_o];
        if(0 === try_insert[0]){var smap=try_insert[1];return smap}
        var insert_before=try_insert[1],left$1=0,right$2=right;
        for(;;)
         {if(right$2)
           {var s$1=right$2[1],match$0=s$1[2],o$1=match$0[1];
            if(o$1 === insert_before)
             return caml_call2
                     (Stdlib_list[12],[0,[0,sec,[0,o,[0,b,0]]],left$1],right$2);
            var
             right$3=right$2[2],
             left$2=[0,s$1,left$1],
             left$1=left$2,
             right$2=right$3;
            continue}
          throw [0,Assert_failure,_P_]}}}
    var strf=Stdlib_printf[4],pf=Stdlib_format[123],pp_char=Stdlib_format[21];
    function pp_indent(ppf,c)
     {var _fR_=1;
      if(! (c < 1))
       {var i=_fR_;
        for(;;)
         {caml_call2(pp_char,ppf,32);
          var _fS_=i + 1 | 0;
          if(c !== i){var i=_fS_;continue}
          break}}
      return 0}
    function err(e,fmt)
     {var _fQ_=caml_call2(Stdlib[98],fmt,_Q_);
      return caml_call2(pf,e,caml_call2(Stdlib[98],_R_,_fQ_))}
    function err_unescaped(errs,c,s){return caml_call2(err(errs,_S_),c,s)}
    function err_malformed(errs,s){return caml_call1(err(errs,_T_),s)}
    function err_unclosed(errs,s){return caml_call1(err(errs,_U_),s)}
    function err_markup(errs,dir,s){return caml_call2(err(errs,_X_),dir,s)}
    function markup_need_esc(param)
     {if(36 !== param && 92 !== param)return 0;return 1}
    function markup_text_need_esc(param)
     {var _fP_=param - 36 | 0,switch$0=0;
      if(5 < _fP_ >>> 0)
       {if(56 === _fP_)switch$0 = 1}
      else
       if(3 < (_fP_ - 1 | 0) >>> 0)switch$0 = 1;
      return switch$0?1:0}
    function esc(s)
     {var max_i=caml_ml_string_length(s) - 1 | 0,i=0,l=0;
      for(;;)
       {if(max_i < i)
         {if(l === caml_ml_string_length(s))return s;
          var b=runtime.caml_create_bytes(l),i$2=0,k=0;
          for(;;)
           {if(max_i < i$2)return caml_call1(Stdlib_bytes[42],b);
            var c=runtime.caml_string_unsafe_get(s,i$2);
            if(markup_text_need_esc(c))
             {caml_bytes_unsafe_set(b,k,92);
              caml_bytes_unsafe_set(b,k + 1 | 0,c);
              var k$0=k + 2 | 0,i$3=i$2 + 1 | 0,i$2=i$3,k=k$0;
              continue}
            caml_bytes_unsafe_set(b,k,c);
            var k$1=k + 1 | 0,i$4=i$2 + 1 | 0,i$2=i$4,k=k$1;
            continue}}
        if(markup_text_need_esc(caml_string_get(s,i)))
         {var l$0=l + 2 | 0,i$0=i + 1 | 0,i=i$0,l=l$0;continue}
        var l$1=l + 1 | 0,i$1=i + 1 | 0,i=i$1,l=l$1;
        continue}}
    function subst_vars(errs,subst,b,s)
     {var max_i=caml_ml_string_length(s) - 1 | 0;
      function flush(start,stop)
       {var match=max_i < start?1:0;
        return match
                ?0
                :caml_call4
                  (Stdlib_buffer[16],b,s,start,(stop - start | 0) + 1 | 0)}
      function skip_escape(k,start,i)
       {return max_i < i
                ?err_unescaped(errs,92,s)
                :caml_call2(k,start,i + 1 | 0)}
      function skip_markup(k,start,i)
       {var i$0=i;
        for(;;)
         {if(max_i < i$0){err_unclosed(errs,s);return caml_call2(k,start,i$0)}
          var c=caml_string_get(s,i$0);
          if(41 === c)return caml_call2(k,start,i$0 + 1 | 0);
          if(92 === c)
           {var _fM_=i$0 + 1 | 0;
            return skip_escape
                    (function(_fN_,_fO_){return skip_markup(k,_fN_,_fO_)},
                     start,
                     _fM_)}
          var i$1=i$0 + 1 | 0,i$0=i$1;
          continue}}
      function loop(start,i$2)
       {var start$0=start,i$3=i$2;
        a:
        for(;;)
         {if(max_i < i$3)return flush(start$0,max_i);
          var i$4=i$3 + 1 | 0,c=caml_string_get(s,i$3);
          if(36 === c)
           {if(max_i < i$4)return err_unescaped(errs,36,s);
            var match$0=caml_string_get(s,i$4);
            if(40 === match$0)
             {var min=i$4 + 2 | 0;
              if(max_i < min){err_unclosed(errs,s);var i$3=i$4;continue}
              var match$1=caml_string_get(s,min);
              if(44 === match$1)return skip_markup(loop,start$0,min + 1 | 0);
              var start$1=i$4 + 1 | 0;
              flush(start$0,i$3 - 1 | 0);
              var i=start$1;
              for(;;)
               {if(max_i < i)
                 {err_unclosed(errs,s);var start$0=start$1,i$3=i;continue a}
                if(41 === caml_string_get(s,i))
                 {var
                   id=caml_call3(Stdlib_string[4],s,start$1,i - start$1 | 0),
                   i$0=i + 1 | 0,
                   match=caml_call1(subst,id);
                  if(match)
                   {var v=match[1];caml_call2(Stdlib_buffer[14],b,v)}
                  else
                   {caml_call2(err(errs,_V_),id,s);
                    caml_call2(Stdlib_buffer[14],b,cst_undefined)}
                  var start$0=i$0,i$3=i$0;
                  continue a}
                var i$1=i + 1 | 0,i=i$1;
                continue}}
            err_unescaped(errs,36,s);
            var i$3=i$4;
            continue}
          if(92 === c)return skip_escape(loop,start$0,i$4);
          var i$3=i$4;
          continue}}
      caml_call1(Stdlib_buffer[8],b);
      loop(0,0);
      return caml_call1(Stdlib_buffer[2],b)}
    function add_markup_esc
     (errs,k,b,s,start,next,target_need_escape,target_escape)
     {var max_i=caml_ml_string_length(s) - 1 | 0;
      if(max_i < next)return err_unescaped(errs,92,s);
      var
       c=caml_string_get(s,next),
       param=caml_string_get(s,next),
       _fK_=param - 36 | 0,
       switch$0=0;
      if(5 < _fK_ >>> 0)
       {if(56 === _fK_)switch$0 = 1}
      else
       if(2 < (_fK_ - 1 | 0) >>> 0)switch$0 = 1;
      var _fL_=switch$0?1:0;
      if(_fL_)
       {if(caml_call1(target_need_escape,c))
         caml_call2(target_escape,b,c);
        else
         caml_call2(Stdlib_buffer[10],b,c);
        return caml_call2(k,next + 1 | 0,next + 1 | 0)}
      caml_call2(err(errs,_W_),c,s);
      return caml_call2(k,next + 1 | 0,next + 1 | 0)}
    function add_markup_text
     (errs,k,b,s,start,target_need_escape,target_escape)
     {var max_i=caml_ml_string_length(s) - 1 | 0;
      function flush(start,stop)
       {var match=max_i < start?1:0;
        return match
                ?0
                :caml_call4
                  (Stdlib_buffer[16],b,s,start,(stop - start | 0) + 1 | 0)}
      function loop(start,i)
       {var start$0=start,i$0=i;
        for(;;)
         {if(max_i < i$0){err_unclosed(errs,s);return flush(start$0,max_i)}
          var i$1=i$0 + 1 | 0,c=caml_string_get(s,i$0);
          if(41 === c)
           {flush(start$0,i$0 - 1 | 0);return caml_call2(k,i$1,i$1)}
          if(92 === c)
           {flush(start$0,i$0 - 1 | 0);
            return add_markup_esc
                    (errs,loop,b,s,start$0,i$1,target_need_escape,target_escape)}
          if(markup_text_need_esc(c))
           {err_unescaped(errs,c,s);
            flush(start$0,i$0 - 1 | 0);
            var start$0=i$1,i$0=i$1;
            continue}
          if(caml_call1(target_need_escape,c))
           {flush(start$0,i$0 - 1 | 0);
            caml_call2(target_escape,b,c);
            var start$0=i$1,i$0=i$1;
            continue}
          var i$0=i$1;
          continue}}
      return loop(start,start)}
    function doc_to_plain(errs,subst,b,s)
     {var
       s$0=subst_vars(errs,subst,b,s),
       max_i=caml_ml_string_length(s$0) - 1 | 0;
      function flush(start,stop)
       {var match=max_i < start?1:0;
        return match
                ?0
                :caml_call4
                  (Stdlib_buffer[16],b,s$0,start,(stop - start | 0) + 1 | 0)}
      function need_escape(param){return 0}
      function escape(param,_fJ_){throw [0,Assert_failure,_Y_]}
      function loop(start,i)
       {var start$0=start,i$0=i;
        for(;;)
         {if(max_i < i$0)return flush(start$0,max_i);
          var i$1=i$0 + 1 | 0,c=caml_string_get(s$0,i$0);
          if(36 === c)
           {if(max_i < i$1)return err_unescaped(errs,36,s$0);
            var match=caml_string_get(s$0,i$1);
            if(40 === match)
             {var min=i$1 + 2 | 0;
              if(max_i < min){err_unclosed(errs,s$0);var i$0=i$1;continue}
              var match$0=caml_string_get(s$0,min);
              if(44 === match$0)
               {var param=caml_string_get(s$0,min - 1 | 0),switch$0=0;
                if(98 !== param && 105 !== param){var _fI_=0;switch$0 = 1}
                if(! switch$0)var _fI_=1;
                if(_fI_)
                 {var start_data=min + 1 | 0;
                  flush(start$0,i$0 - 1 | 0);
                  return add_markup_text
                          (errs,loop,b,s$0,start_data,need_escape,escape)}
                err_markup(errs,param,s$0);
                var i$0=i$1;
                continue}
              err_malformed(errs,s$0);
              var i$0=i$1;
              continue}
            err_unescaped(errs,36,s$0);
            var i$0=i$1;
            continue}
          if(92 === c)
           {flush(start$0,i$0 - 1 | 0);
            return add_markup_esc
                    (errs,loop,b,s$0,start$0,i$1,need_escape,escape)}
          if(markup_need_esc(c))
           {err_unescaped(errs,c,s$0);
            flush(start$0,i$0 - 1 | 0);
            var start$0=i$1,i$0=i$1;
            continue}
          var i$0=i$1;
          continue}}
      caml_call1(Stdlib_buffer[8],b);
      loop(0,0);
      return caml_call1(Stdlib_buffer[2],b)}
    var p_indent=7;
    function pp_plain_page(errs,subst,ppf,param)
     {var text=param[2];
      return caml_call4
              (pf,
               ppf,
               _af_,
               function(ppf,ts)
                {var b=caml_call1(Stdlib_buffer[1],1024);
                 function markup(t){return doc_to_plain(errs,subst,b,t)}
                 function pp_tokens$0(ppf,t){return pp_tokens(1,ppf,t)}
                 function loop(param)
                  {var param$0=param;
                   for(;;)
                    {if(param$0)
                      {var ts=param$0[2],t=param$0[1];
                       if(typeof t !== "number")
                        {var _fG_=t[1];
                         if(73 === _fG_)
                          {var
                            match=t[2],
                            s=match[2],
                            label=match[1],
                            label$0=markup(label),
                            s$0=markup(s);
                           caml_call6
                            (pf,ppf,_Z_,pp_indent,p_indent,pp_tokens$0,label$0);
                           if(caml_string_equal(s$0,cst$7))
                            caml_call2(pf,ppf,___);
                           else
                            {var ll=caml_ml_string_length(label$0),match$0=ll < 4?1:0;
                             if(match$0)
                              caml_call6(pf,ppf,_$_,pp_indent,4 - ll | 0,pp_tokens$0,s$0);
                             else
                              caml_call6(pf,ppf,_ab_,pp_indent,11,pp_tokens$0,s$0);
                             var switch$0=0;
                             if(ts)
                              {var _fH_=ts[1];
                               if(typeof _fH_ !== "number" && 73 === _fH_[1])
                                {caml_call2(pf,ppf,_aa_);switch$0 = 1}}}}
                         else
                          if(83 <= _fG_)
                           if(4003843 <= _fG_)
                            {var s$1=t[2];
                             caml_call6
                              (pf,ppf,_ac_,pp_indent,p_indent,pp_lines,markup(s$1))}
                           else
                            {var s$2=t[2];
                             caml_call4(pf,ppf,_ad_,pp_tokens$0,markup(s$2))}
                          else
                           if(80 <= _fG_)
                            {var s$3=t[2];
                             caml_call6
                              (pf,ppf,_ae_,pp_indent,p_indent,pp_tokens$0,markup(s$3))}
                           else
                            {var bs=t[2];loop(bs)}}
                       if(ts && -1038541997 === ts[1])
                        {var param$1=ts[2],param$0=param$1;continue}
                       caml_call2(Stdlib_format[27],ppf,0);
                       var param$0=ts;
                       continue}
                     return 0}}
                 return loop(ts)},
               text)}
    function pp_groff_page(errs,subst,ppf,param)
     {var
       t=param[2],
       match=param[1],
       a3=match[5],
       a2=match[4],
       a1=match[3],
       s=match[2],
       n=match[1];
      return caml_call9
              (pf,
               ppf,
               _am_,
               n,
               s,
               a1,
               a2,
               a3,
               function(ppf,text)
                {var b=caml_call1(Stdlib_buffer[1],1024);
                 function markup(t)
                  {var
                    s=subst_vars(errs,subst,b,t),
                    max_i=caml_ml_string_length(s) - 1 | 0;
                   function flush(start,stop)
                    {var match=max_i < start?1:0;
                     return match
                             ?0
                             :caml_call4
                               (Stdlib_buffer[16],b,s,start,(stop - start | 0) + 1 | 0)}
                   function need_escape(param)
                    {var _fF_=param - 39 | 0,switch$0=0;
                     if(7 < _fF_ >>> 0)
                      {if(53 === _fF_)switch$0 = 1}
                     else
                      if(4 < (_fF_ - 1 | 0) >>> 0)switch$0 = 1;
                     return switch$0?1:0}
                   function escape(b,c)
                    {return caml_call3(Stdlib_printf[5],b,_ag_,c)}
                   function loop(start,i)
                    {var start$0=start,i$0=i;
                     for(;;)
                      {if(max_i < i$0)return flush(start$0,max_i);
                       var i$1=i$0 + 1 | 0,c=caml_string_get(s,i$0);
                       if(36 === c)
                        {if(max_i < i$1)return err_unescaped(errs,36,s);
                         var match=caml_string_get(s,i$1);
                         if(40 === match)
                          {var min=i$1 + 2 | 0;
                           if(max_i < min){err_unclosed(errs,s);var i$0=i$1;continue}
                           var match$0=caml_string_get(s,min);
                           if(44 === match$0)
                            {var start_data=min + 1 | 0;
                             flush(start$0,i$0 - 1 | 0);
                             var markup=caml_string_get(s,min - 1 | 0);
                             if(98 === markup)
                              caml_call2(Stdlib_buffer[14],b,cst_fB);
                             else
                              if(105 === markup)
                               caml_call2(Stdlib_buffer[14],b,cst_fI);
                              else
                               err_markup(errs,markup,s);
                             return add_markup_text
                                     (errs,end_text,b,s,start_data,need_escape,escape)}
                           err_malformed(errs,s);
                           var i$0=i$1;
                           continue}
                         err_unescaped(errs,36,s);
                         flush(start$0,i$0 - 1 | 0);
                         var start$0=i$1,i$0=i$1;
                         continue}
                       if(92 === c)
                        {flush(start$0,i$0 - 1 | 0);
                         return add_markup_esc
                                 (errs,loop,b,s,start$0,i$1,need_escape,escape)}
                       if(markup_need_esc(c))
                        {err_unescaped(errs,c,s);
                         flush(start$0,i$0 - 1 | 0);
                         var start$0=i$1,i$0=i$1;
                         continue}
                       if(need_escape(c))
                        {flush(start$0,i$0 - 1 | 0);
                         escape(b,c);
                         var start$0=i$1,i$0=i$1;
                         continue}
                       var i$0=i$1;
                       continue}}
                   function end_text(start,i)
                    {caml_call2(Stdlib_buffer[14],b,cst_fR);
                     return loop(start,i)}
                   caml_call1(Stdlib_buffer[8],b);
                   loop(0,0);
                   return caml_call1(Stdlib_buffer[2],b)}
                 function pp_tokens$0(ppf,t){return pp_tokens(0,ppf,t)}
                 function pp_block(param)
                  {if(typeof param === "number")
                    return caml_call2(pf,ppf,_ah_);
                   var _fD_=param[1];
                   if(73 === _fD_)
                    {var match=param[2],s=match[2],l=match[1],_fE_=markup(s);
                     return caml_call6
                             (pf,ppf,_ai_,pp_tokens$0,markup(l),pp_tokens$0,_fE_)}
                   if(83 <= _fD_)
                    {if(4003843 <= _fD_)
                      {var s$0=param[2];
                       return caml_call4(pf,ppf,_aj_,pp_lines,markup(s$0))}
                     var s$1=param[2];
                     return caml_call4(pf,ppf,_ak_,pp_tokens$0,markup(s$1))}
                   if(80 <= _fD_)
                    {var s$2=param[2];
                     return caml_call4(pf,ppf,_al_,pp_tokens$0,markup(s$2))}
                   var bs=param[2];
                   return caml_call2(Stdlib_list[15],pp_block,bs)}
                 return caml_call2(Stdlib_list[15],pp_block,text)},
               t)}
    function pp_to_temp_file(pp_v,v)
     {try
       {var
         _fx_=caml_check_bound(caml_sys_argv(0),0)[1],
         exec=caml_call1(Stdlib_filename[13],_fx_),
         match=caml_call5(Stdlib_filename[17],0,0,0,exec,cst_out),
         oc=match[2],
         file=match[1],
         ppf=caml_call1(Stdlib_format[104],oc);
        caml_call2(pp_v,ppf,v);
        caml_call2(Stdlib_format[36],ppf,0);
        caml_call1(Stdlib[76],oc);
        var
         _fy_=
          function(param)
           {try
             {var _fB_=runtime.caml_sys_remove(file);return _fB_}
            catch(_fC_)
             {_fC_ = caml_wrap_exception(_fC_);
              if(_fC_[1] === Stdlib[11])return 0;
              throw _fC_}};
        caml_call1(Stdlib[100],_fy_);
        var _fz_=[0,file];
        return _fz_}
      catch(_fA_)
       {_fA_ = caml_wrap_exception(_fA_);
        if(_fA_[1] === Stdlib[11])return 0;
        throw _fA_}}
    function find_cmd(cmds)
     {if(caml_string_notequal(Stdlib_sys[4],cst_Win32))
       var null$0=cst_dev_null,test=cst_type;
      else
       var null$0=_ao_[2],test=_ao_[1];
      function cmd(c)
       {return 0
                ===
                caml_sys_system_command
                 (caml_call5(strf,_an_,test,c,null$0,null$0))
                ?1
                :0}
      try
       {var _fv_=[0,caml_call2(Stdlib_list[35],cmd,cmds)];return _fv_}
      catch(_fw_)
       {_fw_ = caml_wrap_exception(_fw_);
        if(_fw_ === Stdlib[8])return 0;
        throw _fw_}}
    function print(opt,_fe_,fmt,ppf,page)
     {var opt$0=opt,_ff_=_fe_,fmt$0=fmt;
      for(;;)
       {if(opt$0)var sth=opt$0[1],errs=sth;else var errs=Stdlib_format[106];
        if(_ff_)
         var sth$0=_ff_[1],subst=sth$0;
        else
         var subst=function(x){return 0};
        if(726666127 <= fmt$0)
         {if(757208580 <= fmt$0)return pp_groff_page(errs,subst,ppf,page);
          try
           {var _fh_=[0,caml_sys_getenv(cst_TERM)],_fg_=_fh_}
          catch(_fu_)
           {_fu_ = caml_wrap_exception(_fu_);
            if(_fu_ !== Stdlib[8])throw _fu_;
            var _fg_=0,_fk_=_fu_}
          if(_fg_ && caml_string_notequal(_fg_[1],cst_dumb))
           {var opt$1=[0,errs],opt$0=opt$1,_ff_=[0,subst],fmt$0=-797271261;
            continue}
          var opt$2=[0,errs],opt$0=opt$2,_ff_=[0,subst],fmt$0=-675583510;
          continue}
        if(-675583510 <= fmt$0)return pp_plain_page(errs,subst,ppf,page);
        var
         _fi_=[0,subst],
         _fj_=[0,errs],
         print$0=
          function(_fr_,_fs_,_ft_){return print(_fj_,_fi_,_fr_,_fs_,_ft_)};
        try
         {var _fd_=[0,caml_sys_getenv(cst_PAGER),cmds],cmds$0=_fd_}
        catch(_fq_)
         {_fq_ = caml_wrap_exception(_fq_);
          if(_fq_ !== Stdlib[8])throw _fq_;
          var cmds$0=cmds}
        try
         {var _fc_=[0,caml_sys_getenv(cst_MANPAGER),cmds$0],cmds$1=_fc_}
        catch(_fp_)
         {_fp_ = caml_wrap_exception(_fp_);
          if(_fp_ !== Stdlib[8])throw _fp_;
          var cmds$1=cmds$0}
        var pager=find_cmd(cmds$1);
        if(pager)
         {var pager$0=pager[1],match=find_cmd(_ap_);
          if(match)
           {var
             c=match[1],
             _e9_=757208580,
             match$0=
              pp_to_temp_file
               (function(_fl_,_fm_){return print$0(_e9_,_fl_,_fm_)},page);
            if(match$0)
             var
              f=match$0[1],
              xroff=
               caml_string_equal(c,cst_groff)
                ?caml_call2(Stdlib[28],c,cst_Tascii_P_c)
                :c,
              _e__=[0,caml_call4(strf,_aq_,xroff,f,pager$0)];
            else
             var _e__=0;
            var cmd=_e__}
          else
           {var
             _fa_=-675583510,
             match$1=
              pp_to_temp_file
               (function(_fn_,_fo_){return print$0(_fa_,_fn_,_fo_)},page);
            if(match$1)
             var f$0=match$1[1],_fb_=[0,caml_call3(strf,_ar_,pager$0,f$0)];
            else
             var _fb_=0;
            var cmd=_fb_}
          if(cmd)
           {var cmd$0=cmd[1],_e$_=0 !== caml_sys_system_command(cmd$0)?1:0;
            return _e$_?print$0(-675583510,ppf,page):_e$_}
          return print$0(-675583510,ppf,page)}
        return print$0(-675583510,ppf,page)}}
    var
     Cmdliner_manpage=
      [0,
       esc,
       s_name,
       s_synopsis,
       s_description,
       s_commands,
       s_arguments,
       s_options,
       s_common_options,
       s_exit_status,
       s_environment,
       s_files,
       s_bugs,
       s_examples,
       s_authors,
       s_see_also,
       smap_of_blocks,
       smap_to_blocks,
       smap_has_section,
       smap_append_block,
       s_exit_status_intro,
       s_environment_intro,
       print,
       subst_vars,
       doc_to_plain];
    caml_register_global(305,Cmdliner_manpage,"Cmdliner_manpage");
    var c=[0,0];
    function new_id(param)
     {var id=c[1];c[1]++;if(c[1] < id)throw [0,Assert_failure,_as_];return id}
    function env_info(opt,_e8_,env_var)
     {if(opt)var sth=opt[1],env_docs=sth;else var env_docs=s_environment;
      if(_e8_)
       var sth$0=_e8_[1],env_doc=sth$0;
      else
       var env_doc=cst_See_option_opt;
      return [0,new_id(0),env_var,env_doc,env_docs]}
    function env_var(e){return e[2]}
    function env_doc(e){return e[3]}
    function env_docs(e){return e[4]}
    function compare(a0,a1){return caml_int_compare(a0[1],a1[1])}
    var Env=[0,compare],Envs=caml_call1(Stdlib_set[1],Env);
    function pos(pos_rev,pos_start,pos_len)
     {return [0,pos_rev,pos_start,pos_len]}
    function pos_rev(p){return p[1]}
    function pos_start(p){return p[2]}
    function pos_len(p){return p[3]}
    var dumb_pos=[0,0,-1,0];
    function info(docs,opt,_e7_,env,names)
     {if(opt)var sth=opt[1],docv=sth;else var docv=cst$11;
      if(_e7_)var sth$0=_e7_[1],doc=sth$0;else var doc=cst$10;
      function dash(n)
       {return 1 === caml_ml_string_length(n)
                ?caml_call2(Stdlib[28],cst$8,n)
                :caml_call2(Stdlib[28],cst$9,n)}
      var opt_names=caml_call2(Stdlib_list[17],dash,names);
      if(docs)
       var s=docs[1],docs$0=s;
      else
       var docs$0=names?s_options:s_arguments;
      return [0,new_id(0),_at_,env,doc,docv,docs$0,dumb_pos,0,opt_names,0]}
    function arg_id(a){return a[1]}
    function arg_absent(a){return a[2]}
    function arg_env(a){return a[3]}
    function arg_doc(a){return a[4]}
    function arg_docv(a){return a[5]}
    function arg_docs(a){return a[6]}
    function arg_pos(a){return a[7]}
    function arg_opt_kind(a){return a[8]}
    function arg_opt_names(a){return a[9]}
    function arg_opt_name_sample(a)
     {var param=a[9];
      for(;;)
       {if(param)
         {var ns=param[2],n=param[1];
          if(2 < caml_ml_string_length(n))return n;
          var param=ns;
          continue}
        return caml_call1(Stdlib_list[5],a[9])}}
    function arg_make_req(a)
     {return [0,a[1],0,a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10]]}
    function arg_make_all_opts(a)
     {return [0,a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],1]}
    function arg_make_opt(absent,opt_kind,a)
     {return [0,a[1],absent,a[3],a[4],a[5],a[6],a[7],opt_kind,a[9],a[10]]}
    function arg_make_opt_all(absent,opt_kind,a)
     {return [0,a[1],absent,a[3],a[4],a[5],a[6],a[7],opt_kind,a[9],1]}
    function arg_make_pos(pos,a)
     {return [0,a[1],a[2],a[3],a[4],a[5],a[6],pos,a[8],a[9],a[10]]}
    function arg_make_pos_abs(absent,pos,a)
     {return [0,a[1],absent,a[3],a[4],a[5],a[6],pos,a[8],a[9],a[10]]}
    function arg_is_opt(a){return 0 !== a[9]?1:0}
    function arg_is_pos(a){return 0 === a[9]?1:0}
    function arg_is_req(a){return 0 === a[2]?1:0}
    function arg_pos_cli_order(a0,a1)
     {var c=caml_int_compare(a0[7][1],a1[7][1]);
      return 0 === c
              ?a0[7][1]
                ?caml_int_compare(a1[7][2],a0[7][2])
                :caml_int_compare(a0[7][2],a1[7][2])
              :c}
    function rev_arg_pos_cli_order(a0,a1){return arg_pos_cli_order(a1,a0)}
    function compare$0(a0,a1){return caml_int_compare(a0[1],a1[1])}
    var Arg=[0,compare$0],Args=caml_call1(Stdlib_set[1],Arg);
    function exit_info(opt,_e6_,max,min)
     {if(opt)var sth=opt[1],exit_docs=sth;else var exit_docs=s_exit_status;
      if(_e6_)
       var sth$0=_e6_[1],exit_doc=sth$0;
      else
       var exit_doc=cst_undocumented;
      if(max)var max$0=max[1],max$1=max$0;else var max$1=min;
      return [0,[0,min,max$1],exit_doc,exit_docs]}
    function exit_statuses(e){return e[1]}
    function exit_doc(e){return e[2]}
    function exit_docs(e){return e[3]}
    function exit_order(e0,e1){return caml_compare(e0[1],e1[1])}
    function term
     (opt,_e5_,_e4_,_e3_,_e2_,_e1_,_e0_,_eZ_,term_version,term_name)
     {if(opt)var sth=opt[1],term_args=sth;else var term_args=Args[1];
      if(_e5_)
       var sth$0=_e5_[1],term_man_xrefs=sth$0;
      else
       var term_man_xrefs=0;
      if(_e4_)var sth$1=_e4_[1],term_man=sth$1;else var term_man=0;
      if(_e3_)var sth$2=_e3_[1],term_envs=sth$2;else var term_envs=0;
      if(_e2_)var sth$3=_e2_[1],term_exits=sth$3;else var term_exits=0;
      if(_e1_)
       var sth$4=_e1_[1],term_sdocs=sth$4;
      else
       var term_sdocs=s_options;
      if(_e0_)
       var sth$5=_e0_[1],term_docs=sth$5;
      else
       var term_docs=cst_COMMANDS;
      if(_eZ_)var sth$6=_eZ_[1],term_doc=sth$6;else var term_doc=cst$12;
      var
       term_info=
        [0,
         term_name,
         term_version,
         term_doc,
         term_docs,
         term_sdocs,
         term_exits,
         term_envs,
         term_man,
         term_man_xrefs];
      return [0,term_info,term_args]}
    function term_name(t){return t[1][1]}
    function term_version(t){return t[1][2]}
    function term_doc(t){return t[1][3]}
    function term_docs(t){return t[1][4]}
    function term_stdopts_docs(t){return t[1][5]}
    function term_exits(t){return t[1][6]}
    function term_envs(t){return t[1][7]}
    function term_man(t){return t[1][8]}
    function term_man_xrefs(t){return t[1][9]}
    function term_args(t){return t[2]}
    function term_add_args(init,args)
     {var _eY_=caml_call2(Args[7],args,init[2]);return [0,init[1],_eY_]}
    function eval$0(term,main,choices,env){return [0,term,main,choices,env]}
    function eval_term(e){return e[1]}
    function eval_main(e){return e[2]}
    function eval_choices(e){return e[3]}
    function eval_env_var(e,v){return caml_call1(e[4],v)}
    function eval_kind(ei)
     {return 0 === ei[3]
              ?-317491118
              :ei[1][1][1] === ei[2][1][1]?-91404312:491021489}
    function eval_with_term(ei,term){return [0,term,ei[2],ei[3],ei[4]]}
    function eval_has_choice(e,cmd)
     {function is_cmd(t){return caml_string_equal(t[1][1],cmd)}
      return caml_call2(Stdlib_list[30],is_cmd,e[3])}
    var
     Cmdliner_info=
      [0,
       env_info,
       env_var,
       env_doc,
       env_docs,
       Env,
       Envs,
       pos,
       pos_rev,
       pos_start,
       pos_len,
       info,
       arg_id,
       arg_absent,
       arg_env,
       arg_doc,
       arg_docv,
       arg_docs,
       arg_opt_names,
       arg_opt_name_sample,
       arg_opt_kind,
       arg_pos,
       arg_make_req,
       arg_make_all_opts,
       arg_make_opt,
       arg_make_opt_all,
       arg_make_pos,
       arg_make_pos_abs,
       arg_is_opt,
       arg_is_pos,
       arg_is_req,
       arg_pos_cli_order,
       rev_arg_pos_cli_order,
       Arg,
       Args,
       exit_info,
       exit_statuses,
       exit_doc,
       exit_docs,
       exit_order,
       term,
       term_name,
       term_version,
       term_doc,
       term_docs,
       term_stdopts_docs,
       term_exits,
       term_envs,
       term_man,
       term_man_xrefs,
       term_args,
       term_add_args,
       eval$0,
       eval_term,
       eval_main,
       eval_choices,
       eval_env_var,
       eval_kind,
       eval_with_term,
       eval_has_choice];
    caml_register_global(307,Cmdliner_info,"Cmdliner_info");
    function rev_compare(n0,n1){return caml_compare(n1,n0)}
    var strf$0=Stdlib_printf[4];
    function term_name$0(t){return esc(term_name(t))}
    function sorted_items_to_blocks(b,items)
     {if(b)
       var b$0=b[1],boilerplate=b$0;
      else
       var boilerplate=function(param){return 0};
      function mk_block(sec,acc)
       {var match=caml_call1(boilerplate,sec);
        if(match){var b=match[1];return [0,sec,[0,-595680602,[0,b,acc]]]}
        return [0,sec,[0,-595680602,acc]]}
      if(items)
       {var
         its$1=items[2],
         match$0=items[1],
         it$1=match$0[2],
         sec$1=match$0[1],
         acc$2=[0,it$1,0],
         secs=0,
         sec=sec$1,
         acc=acc$2,
         param=its$1;
        for(;;)
         {if(param)
           {var match=param[1],sec$0=match[1],its=param[2],it=match[2];
            if(caml_equal(sec$0,sec))
             {var acc$0=[0,it,acc],acc=acc$0,param=its;continue}
            var
             its$0=param[2],
             it$0=match[2],
             acc$1=[0,it$0,0],
             secs$0=[0,mk_block(sec,acc),secs],
             secs=secs$0,
             sec=sec$0,
             acc=acc$1,
             param=its$0;
            continue}
          return [0,mk_block(sec,acc),secs]}}
      return 0}
    function env_info_subst(subst,e,id)
     {return caml_string_notequal(id,cst_env)
              ?caml_call1(subst,id)
              :[0,caml_call2(strf$0,_au_,esc(e[2]))]}
    function arg_info_subst(subst,a,id)
     {if(caml_string_notequal(id,cst_docv))
       {if(caml_string_notequal(id,cst_env$0))
         {if(! caml_string_notequal(id,cst_opt) && arg_is_opt(a))
           return [0,caml_call2(strf$0,_ax_,esc(arg_opt_name_sample(a)))];
          return caml_call1(subst,id)}
        var match=a[3];
        if(match){var e=match[1];return env_info_subst(subst,e,id)}
        return caml_call1(subst,id)}
      return [0,caml_call2(strf$0,_ay_,esc(a[5]))]}
    function term_info_subst(ei,param)
     {return caml_string_notequal(param,cst_mname)
              ?caml_string_notequal(param,cst_tname)
                ?0
                :[0,caml_call2(strf$0,_az_,term_name$0(ei[1]))]
              :[0,caml_call2(strf$0,_aA_,term_name$0(ei[2]))]}
    function _aB_(opt,ei)
     {if(opt)var sth=opt[1],sep=sth;else var sep=32;
      var match=eval_kind(ei);
      if(491021489 <= match)
       {var _eX_=term_name(ei[1]);
        return caml_call4(strf$0,_aC_,term_name(ei[2]),sep,_eX_)}
      return term_name$0(ei[2])}
    function plain_invocation(ei){return _aB_(0,ei)}
    function invocation(sep,ei){return esc(_aB_(sep,ei))}
    function synopsis(ei)
     {var match=eval_kind(ei);
      if(-91404312 === match)return caml_call2(strf$0,_aG_,invocation(0,ei));
      function rev_cli_order(param,_eW_)
       {var a1=_eW_[1],a0=param[1];return rev_arg_pos_cli_order(a0,a1)}
      function add_pos(a,acc$1)
       {var match$0=arg_is_opt(a);
        if(match$0)return acc$1;
        var
         v=a[5],
         v$0=caml_string_notequal(v,cst$13)?v:cst_ARG,
         v$1=caml_call2(strf$0,_aD_,esc(v$0)),
         _eT_=arg_is_req(a)?caml_call1(strf$0,_aE_):caml_call1(strf$0,_aF_),
         v$2=caml_call1(_eT_,v$1),
         match=a[7][3];
        if(match)
         {var _eU_=match[1];
          if(1 === _eU_)
           var _eV_=v$2;
          else
           {var n=_eU_,acc=0;
            for(;;)
             {if(0 < n)
               {var acc$0=[0,v$2,acc],n$0=n - 1 | 0,n=n$0,acc=acc$0;continue}
              var _eV_=caml_call2(Stdlib_string[7],cst$14,acc);
              break}}}
        else
         var _eV_=caml_call2(Stdlib[28],v$2,cst$15);
        return [0,[0,a,_eV_],acc$1]}
      var
       args=ei[1][2],
       pargs=caml_call3(Args[16],add_pos,args,0),
       pargs$0=caml_call2(Stdlib_list[51],rev_cli_order,pargs);
      function _eQ_(_eS_){return _eS_[2]}
      var
       _eR_=caml_call2(Stdlib_list[19],_eQ_,pargs$0),
       pargs$1=caml_call2(Stdlib_string[7],cst$16,_eR_);
      return caml_call3(strf$0,_aH_,invocation(0,ei),pargs$1)}
    function exit_boilerplate(sec)
     {var match=caml_string_equal(sec,s_exit_status);
      return match?[0,s_exit_status_intro]:0}
    function env_boilerplate(sec)
     {var match=caml_string_equal(sec,s_environment);
      return match?[0,s_environment_intro]:0}
    function pp_man(errs,fmt,ppf,ei)
     {var man=term_man(ei[1]),sm$4=smap_of_blocks(man);
      if(smap_has_section(sm$4,s_name))
       var sm$5=sm$4;
      else
       var
        tname=invocation(_a2_,ei),
        tdoc=term_doc(ei[1]),
        tagline=
         caml_string_equal(tdoc,cst$30)?cst$31:caml_call2(strf$0,_a4_,tdoc),
        tagline$0=[0,80,caml_call3(strf$0,_a3_,tname,tagline)],
        sm$5=smap_append_block(sm$4,s_name,tagline$0);
      if(smap_has_section(sm$5,s_synopsis))
       var sm$6=sm$5;
      else
       var
        synopsis$0=[0,80,synopsis(ei)],
        sm$6=smap_append_block(sm$5,s_synopsis,synopsis$0);
      var buf=caml_call1(Stdlib_buffer[1],200);
      function subst(_eP_){return term_info_subst(ei,_eP_)}
      function ins(sm,param)
       {var b=param[2],s=param[1];return smap_append_block(sm,s,b)}
      var
       has_senv=smap_has_section(sm$6,s_environment),
       has_sexit=smap_has_section(sm$6,s_exit_status),
       match=eval_kind(ei);
      if(-91404312 === match)
       var
        add_cmd=
         function(acc,t)
          {var
            cmd=caml_call2(strf$0,_aI_,term_name$0(t)),
            _eO_=[0,73,[0,cmd,term_doc(t)]];
           return [0,[0,term_docs(t),_eO_],acc]},
        by_sec_by_rev_name=
         function(param,_eN_)
          {var
            c1=_eN_[2][2][1],
            s1=_eN_[1],
            match=param[2][2],
            c0=match[1],
            s0=param[1],
            c=caml_compare(s0,s1);
           return 0 === c?caml_compare(c1,c0):c},
        cmds=caml_call3(Stdlib_list[22],add_cmd,0,ei[3]),
        cmds$0=caml_call2(Stdlib_list[51],by_sec_by_rev_name,cmds),
        _el_=sorted_items_to_blocks(0,cmds$0);
      else
       var _el_=0;
      var sm=caml_call3(Stdlib_list[22],ins,sm$6,_el_);
      function by_sec_by_arg(a0,a1)
       {var c=caml_string_compare(a0[6],a1[6]);
        if(0 === c)
         {var match=arg_is_opt(a0),match$0=arg_is_opt(a1);
          if(match)
           {if(match$0)
             {var
               key=
                function(names)
                 {var
                   _eM_=caml_call2(Stdlib_list[51],rev_compare,names),
                   k=caml_call1(Stdlib_list[5],_eM_),
                   k$0=caml_call1(Stdlib_string[30],k);
                  return 45 === caml_string_get(k$0,1)
                          ?caml_call3
                            (Stdlib_string[4],k$0,1,caml_ml_string_length(k$0) - 1 | 0)
                          :k$0},
               _eK_=key(a1[9]);
              return caml_string_compare(key(a0[9]),_eK_)}
            return -1}
          if(match$0)return 1;
          var _eL_=caml_call1(Stdlib_string[30],a1[5]);
          return caml_string_compare(caml_call1(Stdlib_string[30],a0[5]),_eL_)}
        return c}
      function keep_arg(a,acc)
       {if(arg_is_pos(a))
         {var switch$0=0;
          if(caml_string_equal(a[5],cst$27) || caml_string_equal(a[4],cst$28))
           switch$0 = 1;
          if(switch$0)return acc}
        return [0,a,acc]}
      var
       args=ei[1][2],
       args$0=caml_call3(Args[16],keep_arg,args,0),
       args$1=caml_call2(Stdlib_list[51],by_sec_by_arg,args$0);
      function _ee_(a)
       {function or_env(value,a)
         {var match=a[3];
          if(match)
           {var e=match[1],value$0=value?cst_or:cst_absent;
            return caml_call3(strf$0,_aP_,value$0,esc(e[2]))}
          return cst$19}
        var match$0=a[2];
        if(match$0)
         var
          v$0=match$0[1],
          _eA_=runtime.caml_obj_tag(v$0),
          _eB_=
           250 === _eA_
            ?v$0[1]
            :246 === _eA_?caml_call1(CamlinternalLazy[2],v$0):v$0,
          _eC_=
           caml_string_notequal(_eB_,cst$20)
            ?caml_call3(strf$0,_aQ_,_eB_,or_env(1,a))
            :caml_call2(strf$0,_aU_,or_env(0,a)),
          absent=_eC_;
        else
         var absent=cst_required;
        var match$1=a[8];
        if(typeof match$1 === "number")
         var optvopt=cst$21;
        else
         var v$1=match$1[1],optvopt=caml_call2(strf$0,_aT_,v$1);
        var switch$0=0;
        if
         (caml_string_notequal(optvopt,cst$22)
          ||
          caml_string_notequal(absent,cst$25))
         switch$0 = 1;
        else
         var argvdoc=cst$26;
        if(switch$0)
         {var switch$1=0;
          if(caml_string_notequal(absent,cst$23))
           if(caml_string_notequal(optvopt,cst$24))
            var argvdoc=caml_call3(strf$0,_aR_,optvopt,absent);
           else
            {var s$0=absent;switch$1 = 1}
          else
           {var s$0=optvopt;switch$1 = 1}
          if(switch$1)var argvdoc=caml_call2(strf$0,_aS_,s$0)}
        function subst$0(_eJ_){return arg_info_subst(subst,a,_eJ_)}
        var doc=a[4],doc$0=subst_vars(errs,subst$0,buf,doc);
        if(arg_is_pos(a))
         var _eD_=caml_call2(strf$0,_aJ_,esc(a[5]));
        else
         var
          v=a[5],
          var$0=caml_string_notequal(v,cst$17)?v:cst_VAL,
          names=caml_call2(Stdlib_list[51],caml_string_compare,a[9]),
          match=a[8],
          _ey_=
           typeof match === "number"
            ?match
              ?function(n)
                {if(2 < caml_ml_string_length(n))
                  {var _eF_=esc(var$0);
                   return caml_call3(strf$0,_aK_,esc(n),_eF_)}
                 var _eG_=esc(var$0);
                 return caml_call3(strf$0,_aL_,esc(n),_eG_)}
              :function(n){return caml_call2(strf$0,_aM_,esc(n))}
            :function(n)
              {if(2 < caml_ml_string_length(n))
                {var _eH_=esc(var$0);
                 return caml_call3(strf$0,_aN_,esc(n),_eH_)}
               var _eI_=esc(var$0);
               return caml_call3(strf$0,_aO_,esc(n),_eI_)},
          _ez_=caml_call2(Stdlib_list[19],_ey_,names),
          s=caml_call2(Stdlib_string[7],cst$18,_ez_),
          _eD_=s;
        var _eE_=[0,73,[0,caml_call2(Stdlib[28],_eD_,argvdoc),doc$0]];
        return [0,a[6],_eE_]}
      var
       args$2=caml_call2(Stdlib_list[19],_ee_,args$1),
       _ef_=sorted_items_to_blocks(0,args$2),
       sm$0=caml_call3(Stdlib_list[22],ins,sm,_ef_);
      function by_sec(param,_ex_)
       {var s1=_ex_[1],s0=param[1];return caml_compare(s0,s1)}
      function add_exit_item(acc,e)
       {function subst$0(id)
         {return caml_string_notequal(id,cst_status)
                  ?caml_string_notequal(id,cst_status_max)
                    ?subst(id)
                    :[0,caml_call2(strf$0,_av_,e[1][2])]
                  :[0,caml_call2(strf$0,_aw_,e[1][1])]}
        var
         match=e[1],
         max=match[2],
         min=match[1],
         doc=e[2],
         label=
          min === max
           ?caml_call2(strf$0,_aV_,min)
           :caml_call3(strf$0,_aW_,min,max),
         item=[0,73,[0,label,subst_vars(errs,subst$0,buf,doc)]];
        return [0,[0,e[3],item],acc]}
      var
       exits=term_exits(ei[1]),
       exits$0=caml_call2(Stdlib_list[51],exit_order,exits),
       exits$1=caml_call3(Stdlib_list[22],add_exit_item,0,exits$0),
       exits$2=caml_call2(Stdlib_list[52],by_sec,exits$1),
       boilerplate=has_sexit?0:[0,exit_boilerplate],
       _eg_=sorted_items_to_blocks(boilerplate,exits$2),
       sm$1=caml_call3(Stdlib_list[22],ins,sm$0,_eg_);
      function add_env_item(subst,acc,e)
       {var envs=acc[2],seen=acc[1];
        if(caml_call2(Envs[3],e,seen))return acc;
        var
         seen$0=caml_call2(Envs[4],e,seen),
         var$0=caml_call2(strf$0,_aX_,esc(e[2])),
         doc=e[3],
         doc$0=subst_vars(errs,subst,buf,doc),
         envs$0=[0,[0,e[4],[0,73,[0,var$0,doc$0]]],envs];
        return [0,seen$0,envs$0]}
      function add_arg_env(a,acc)
       {var match=a[3];
        if(match)
         {var e=match[1];
          return add_env_item
                  (function(_ew_){return arg_info_subst(subst,a,_ew_)},acc,e)}
        return acc}
      function add_env(acc,e)
       {return add_env_item
                (function(_ev_){return env_info_subst(subst,e,_ev_)},acc,e)}
      function by_sec_by_rev_name$0(param,_eu_)
       {var
         v1=_eu_[2][2][1],
         s1=_eu_[1],
         match=param[2][2],
         v0=match[1],
         s0=param[1],
         c=caml_compare(s0,s1);
        return 0 === c?caml_compare(v1,v0):c}
      var
       args$3=ei[1][2],
       tenvs=term_envs(ei[1]),
       init=[0,Envs[1],0],
       acc=caml_call3(Args[16],add_arg_env,args$3,init),
       match$0=caml_call3(Stdlib_list[22],add_env,acc,tenvs),
       envs=match$0[2],
       envs$0=caml_call2(Stdlib_list[51],by_sec_by_rev_name$0,envs),
       boilerplate$0=has_senv?0:[0,env_boilerplate],
       _eh_=sorted_items_to_blocks(boilerplate$0,envs$0),
       sm$2=caml_call3(Stdlib_list[22],ins,sm$1,_eh_),
       main=term_name(ei[2]);
      function xref_str(param)
       {var sec=param[2],name=param[1];
        return caml_call3(strf$0,_a1_,esc(name),sec)}
      var xrefs=term_man_xrefs(ei[1]),_ei_=0;
      function _ej_(acc,x)
       {if(typeof x === "number")
         var _et_=[0,main,1];
        else
         {var _es_=x[1];
          if(892012143 === _es_)
           var match=x[2],sec=match[2],name=match[1],_et_=[0,name,sec];
          else
           if(937068408 <= _es_)
            var tool=x[2],_et_=[0,tool,1];
           else
            var
             c=x[2],
             _et_=
              eval_has_choice(ei,c)
               ?[0,caml_call3(strf$0,_aY_,main,c),1]
               :(caml_call3(Stdlib_format[123],errs,_aZ_,c),_a0_)}
        return [0,_et_,acc]}
      var
       xrefs$0=caml_call3(Stdlib_list[22],_ej_,_ei_,xrefs),
       _ek_=caml_call2(Stdlib_list[51],rev_compare,xrefs$0),
       xrefs$1=caml_call2(Stdlib_list[19],xref_str,_ek_),
       _em_=
        0 === xrefs$1
         ?0
         :[0,
           [0,s_see_also,[0,80,caml_call2(Stdlib_string[7],cst$29,xrefs$1)]],
           0],
       sm$3=caml_call3(Stdlib_list[22],ins,sm$2,_em_),
       _en_=smap_to_blocks(sm$3),
       main$0=ei[2],
       _eo_=term_name(main$0),
       exec=caml_call1(Stdlib_string[31],_eo_),
       _ep_=invocation(_a5_,ei),
       name=caml_call1(Stdlib_string[29],_ep_),
       center_header=esc(caml_call2(strf$0,_a6_,exec)),
       match$1=term_version(main$0);
      if(match$1)
       var v=match$1[1],version=caml_call2(Stdlib[28],cst$32,v);
      else
       var version=cst$34;
      var
       left_footer=esc(caml_call3(strf$0,_a7_,exec,version)),
       _eq_=[0,[0,name,1,cst$33,left_footer,center_header],_en_];
      return print
              ([0,errs],
               [0,function(_er_){return term_info_subst(ei,_er_)}],
               fmt,
               ppf,
               _eq_)}
    function pp_plain_synopsis(errs,ppf,ei)
     {var buf=caml_call1(Stdlib_buffer[1],100);
      function subst(_ed_){return term_info_subst(ei,_ed_)}
      var syn=doc_to_plain(errs,subst,buf,synopsis(ei));
      return caml_call3(Stdlib_format[123],ppf,_a8_,syn)}
    var Cmdliner_docgen=[0,plain_invocation,pp_man,pp_plain_synopsis];
    caml_register_global(309,Cmdliner_docgen,"Cmdliner_docgen");
    var strf$1=Stdlib_printf[4],pp=Stdlib_format[123];
    function err_env_parse(env,err)
     {var var$0=env[2];return caml_call3(strf$1,_a9_,doc_quote(var$0),err)}
    function err_pos_excess(excess)
     {var _ec_=caml_call2(Stdlib_list[17],doc_quote,excess);
      return caml_call2(strf$1,_a__,caml_call2(Stdlib_string[7],cst$35,_ec_))}
    function err_pos_miss(a)
     {var v=a[5];
      return caml_string_notequal(v,cst$36)
              ?caml_call2(strf$1,_a$_,v)
              :cst_a_required_argument_is_mis}
    function err_pos_misses(args)
     {if(args)
       {if(args[2])
         {var
           add_arg=
            function(acc,a)
             {var argv=a[5];
              return caml_string_notequal(argv,cst$37)
                      ?[0,argv,acc]
                      :[0,cst_ARG$0,acc]},
           rev_args=caml_call2(Stdlib_list[51],rev_arg_pos_cli_order,args),
           args$0=caml_call3(Stdlib_list[22],add_arg,0,rev_args),
           args$1=caml_call2(Stdlib_string[7],cst$38,args$0);
          return caml_call2(strf$1,_ba_,args$1)}
        var a=args[1];
        return err_pos_miss(a)}
      throw [0,Assert_failure,_bb_]}
    function err_pos_parse(a,err)
     {var argv=a[5];
      if(caml_string_notequal(argv,cst$39))
       {var match=a[7][3];
        if(match && 1 === match[1])return caml_call3(strf$1,_bc_,argv,err);
        return caml_call3(strf$1,_bd_,argv,err)}
      return err}
    function err_flag_value(flag,v)
     {var _eb_=doc_quote(v);
      return caml_call3(strf$1,_be_,doc_quote(flag),_eb_)}
    function err_opt_value_missing(f)
     {return caml_call2(strf$1,_bf_,doc_quote(f))}
    function err_opt_parse(f,err)
     {return caml_call3(strf$1,_bg_,doc_quote(f),err)}
    function err_opt_repeated(f$0,f)
     {if(caml_string_equal(f$0,f))
       return caml_call2(strf$1,_bh_,doc_quote(f$0));
      var _ea_=doc_quote(f);
      return caml_call3(strf$1,_bi_,doc_quote(f$0),_ea_)}
    function err_arg_missing(a)
     {return arg_is_pos(a)
              ?err_pos_miss(a)
              :caml_call2(strf$1,_bj_,arg_opt_name_sample(a))}
    function exec_name(ei){return term_name(ei[2])}
    function pp_version(ppf,ei)
     {var match=term_version(ei[2]);
      if(match){var v=match[1];return caml_call4(pp,ppf,_bk_,_h_,v)}
      throw [0,Assert_failure,_bl_]}
    function pp_try_help(ppf,ei)
     {var match=eval_kind(ei);
      if(491021489 <= match)
       {var exec_cmd=plain_invocation(ei);
        return caml_call4(pp,ppf,_bm_,exec_cmd,exec_name(ei))}
      return caml_call3(pp,ppf,_bn_,exec_name(ei))}
    function pp_err(ppf,ei,err)
     {return caml_call5(pp,ppf,_bo_,exec_name(ei),pp_lines,err)}
    function pp_err_usage(ppf,ei,err_lines,err)
     {var pp_err=err_lines?pp_lines:_h_;
      function _d9_(_d__,_d$_){return pp_plain_synopsis(ppf,_d__,_d$_)}
      return caml_call9
              (pp,ppf,_bp_,exec_name(ei),pp_err,err,_d9_,ei,pp_try_help,ei)}
    function pp_backtrace(ppf,ei,e,bt)
     {var
       bt$0=caml_call1(Stdlib_printexc[13],bt),
       len=caml_ml_string_length(bt$0),
       bt$1=0 < len?caml_call3(Stdlib_string[4],bt$0,0,len - 1 | 0):bt$0,
       _d8_=caml_call3(strf$1,_bq_,caml_call1(Stdlib_printexc[1],e),bt$1);
      return caml_call5(pp,ppf,_br_,exec_name(ei),pp_lines,_d8_)}
    var
     Cmdliner_msg=
      [0,
       err_env_parse,
       err_pos_excess,
       err_pos_misses,
       err_pos_parse,
       err_flag_value,
       err_opt_value_missing,
       err_opt_parse,
       err_opt_repeated,
       err_arg_missing,
       pp_version,
       pp_try_help,
       pp_err,
       pp_err_usage,
       pp_backtrace];
    caml_register_global(311,Cmdliner_msg,"Cmdliner_msg");
    var Amap=caml_call1(Stdlib_map[1],Arg);
    function get_arg(cl,a)
     {try
       {var _d6_=caml_call2(Amap[27],a,cl);return _d6_}
      catch(_d7_)
       {_d7_ = caml_wrap_exception(_d7_);
        if(_d7_ === Stdlib[8])throw [0,Assert_failure,_bs_];
        throw _d7_}}
    function opt_arg(cl,a)
     {var match=get_arg(cl,a);
      if(0 === match[0]){var l=match[1];return l}
      throw [0,Assert_failure,_bt_]}
    function pos_arg(cl,a)
     {var match=get_arg(cl,a);
      if(0 === match[0])throw [0,Assert_failure,_bu_];
      var l=match[1];
      return l}
    function actual_args(cl,a)
     {var match=get_arg(cl,a);
      if(0 === match[0])
       {var
         l=match[1],
         extract_args=
          function(param)
           {var value=param[3],name=param[2];
            if(value)var v=value[1],_d5_=[0,v,0];else var _d5_=0;
            return [0,name,_d5_]},
         _d4_=caml_call2(Stdlib_list[17],extract_args,l);
        return caml_call1(Stdlib_list[13],_d4_)}
      var args=match[1];
      return args}
    function is_opt(s)
     {var
       _d2_=1 < caml_ml_string_length(s)?1:0,
       _d3_=_d2_?45 === caml_string_get(s,0)?1:0:_d2_;
      return _d3_}
    function parse_opt_arg(s)
     {var l=caml_ml_string_length(s);
      if(45 === caml_string_get(s,1))
       try
        {var
          i=caml_call2(Stdlib_string[14],s,61),
          _dY_=
           [0,caml_call3(Stdlib_string[4],s,i + 1 | 0,(l - i | 0) - 1 | 0)],
          _dZ_=[0,caml_call3(Stdlib_string[4],s,0,i),_dY_];
         return _dZ_}
       catch(_d1_)
        {_d1_ = caml_wrap_exception(_d1_);
         if(_d1_ === Stdlib[8])return [0,s,0];
         throw _d1_}
      if(2 === l)return [0,s,0];
      var _d0_=[0,caml_call3(Stdlib_string[4],s,2,l - 2 | 0)];
      return [0,caml_call3(Stdlib_string[4],s,0,2),_d0_]}
    function take_range(start,stop,param)
     {var i=0,acc=0,param$0=param;
      for(;;)
       {if(param$0)
         {var vs=param$0[2],v=param$0[1];
          if(i < start){var i$0=i + 1 | 0,i=i$0,param$0=vs;continue}
          if(i <= stop)
           {var acc$0=[0,v,acc],i$1=i + 1 | 0,i=i$1,acc=acc$0,param$0=vs;
            continue}
          return caml_call1(Stdlib_list[9],acc)}
        return caml_call1(Stdlib_list[9],acc)}}
    function create(opt,al$0,args$3)
     {if(opt)var sth=opt[1],peek_opts=sth;else var peek_opts=0;
      var
       param$0=caml_call1(Args[22],al$0),
       optidx$0=optidx,
       posidx=0,
       cl=Amap[1],
       param=param$0;
      for(;;)
       {if(param)
         {var l=param[2],a=param[1],match=arg_is_pos(a);
          if(match)
           {var
             cl$0=caml_call3(Amap[4],a,_bv_,cl),
             posidx$0=[0,a,posidx],
             posidx=posidx$0,
             cl=cl$0,
             param=l;
            continue}
          var
           add$1=
            function(a)
             {function add$0(t,name)
               {var match=add(t,name,a);
                if(3901504 <= match[1]){var t$0=match[2];return t$0}
                var
                 match$0=match[2],
                 a$0=match$0[1],
                 _dX_=err_multi_def(cst_option_name,name,arg_doc,a,a$0);
                return caml_call1(Stdlib[1],_dX_)}
              return add$0},
           add$0=add$1(a),
           names=a[9],
           optidx$1=caml_call3(Stdlib_list[22],add$0,optidx$0,names),
           cl$1=caml_call3(Amap[4],a,_bw_,cl),
           optidx$0=optidx$1,
           cl=cl$1,
           param=l;
          continue}
        var errs=0,k=0,cl$2=cl,pargs=0,param$1=args$3;
        for(;;)
         {if(param$1)
           {var _dQ_=param$1[1];
            if(caml_string_notequal(_dQ_,cst$41))
             {var args=param$1[2];
              if(is_opt(_dQ_))
               {var
                 match$4=parse_opt_arg(_dQ_),
                 value$0=match$4[2],
                 name=match$4[1],
                 match$5=find(optidx$0,name);
                if(typeof match$5 === "number")
                 {if(-328798100 <= match$5)
                   {var
                     ambs=ambiguities(optidx$0,name),
                     ambs$0=caml_call2(Stdlib_list[51],caml_string_compare,ambs),
                     err=err_ambiguous(cst_option,name,ambs$0),
                     k$0=k + 1 | 0,
                     errs$0=[0,err,errs],
                     errs=errs$0,
                     k=k$0,
                     param$1=args;
                    continue}
                  if(peek_opts){var k$1=k + 1 | 0,k=k$1,param$1=args;continue}
                  if(2 < caml_ml_string_length(_dQ_))
                   {if(45 === caml_string_get(_dQ_,1))
                     var
                      short_opt=
                       caml_call3
                        (Stdlib_string[4],
                         _dQ_,
                         1,
                         caml_ml_string_length(_dQ_) - 1 | 0),
                      long_opt=_dQ_,
                      short_opt$0=short_opt;
                    else
                     var
                      long_opt=caml_call2(Stdlib_printf[4],_bx_,_dQ_),
                      short_opt$0=_dQ_;
                    var
                     match$0=parse_opt_arg(short_opt$0),
                     short_opt$1=match$0[1],
                     match$1=parse_opt_arg(long_opt),
                     long_opt$0=match$1[1],
                     all=ambiguities(optidx$0,cst$40),
                     match$2=caml_call2(Stdlib_list[33],short_opt$1,all),
                     match$3=value(long_opt$0,all),
                     hints=
                      match$2
                       ?match$3
                         ?caml_call2(Stdlib_list[33],short_opt$1,match$3)
                           ?match$3
                           :[0,short_opt$1,match$3]
                         :[0,short_opt$1,0]
                       :match$3 || 0}
                  else
                   var hints=0;
                  var
                   err$0=err_unknown([0,hints],cst_option$0,name),
                   k$2=k + 1 | 0,
                   errs$1=[0,err$0,errs],
                   errs=errs$1,
                   k=k$2,
                   param$1=args;
                  continue}
                var a$0=match$5[2],match$6=a$0[8];
                if(value$0)
                 {var switch$0=0,_dR_=value$0[1];
                  if(typeof match$6 === "number" && ! match$6)
                   {var
                     _dO_=2 === caml_ml_string_length(name)?1:0,
                     _dP_=_dO_?45 === caml_string_get(name,0)?1:0:_dO_;
                    if(_dP_)
                     var
                      args$0=[0,caml_call2(Stdlib[28],cst$42,_dR_),args],
                      value$1=0;
                    else
                     switch$0 = 1}
                  else
                   switch$0 = 1;
                  if(switch$0)var args$0=args,value$1=value$0}
                else
                 {var switch$1=0;
                  if(typeof match$6 === "number" && ! match$6)
                   var args$0=args,value$1=value$0;
                  else
                   switch$1 = 1;
                  if(switch$1)
                   if(args)
                    {var rest=args[2],v=args[1];
                     if(is_opt(v))
                      var args$0=args,value$1=0;
                     else
                      var args$0=rest,value$1=[0,v]}
                   else
                    var args$0=args,value$1=0}
                var
                 arg=[0,[0,[0,k,name,value$1],opt_arg(cl$2,a$0)]],
                 cl$3=caml_call3(Amap[4],a$0,arg,cl$2),
                 k$3=k + 1 | 0,
                 k=k$3,
                 cl$2=cl$3,
                 param$1=args$0;
                continue}
              var
               pargs$0=[0,_dQ_,pargs],
               k$4=k + 1 | 0,
               k=k$4,
               pargs=pargs$0,
               param$1=args;
              continue}
            var
             args$1=param$1[2],
             _dS_=caml_call2(Stdlib_list[12],pargs,args$1),
             match$7=[0,caml_call1(Stdlib_list[9],errs),cl$2,_dS_]}
          else
           var
            _dT_=caml_call1(Stdlib_list[9],pargs),
            match$7=[0,caml_call1(Stdlib_list[9],errs),cl$2,_dT_];
          var pargs$1=match$7[3],errs$2=match$7[1];
          if(0 === errs$2)
           var _dW_=[0,[0,cl$2,pargs$1]];
          else
           var
            err$1=caml_call2(Stdlib_string[7],cst$43,errs$2),
            _dW_=[1,[0,err$1,cl$2,pargs$1]];
          if(0 === _dW_[0])
           {var match$9=_dW_[1],cl$6=match$9[1];
            if(peek_opts)return [0,cl$6];
            var pargs$2=match$9[2];
            if(0 === pargs$2)
             {var misses=caml_call2(Stdlib_list[38],arg_is_req,posidx);
              return 0 === misses?[0,cl$6]:[1,[0,err_pos_misses(misses),cl$6]]}
            var
             last=caml_call1(Stdlib_list[1],pargs$2) - 1 | 0,
             pos=function(rev,k){return rev?last - k | 0:k},
             misses$0=0,
             cl$4=cl$6,
             max_spec=-1,
             param$2=posidx;
            for(;;)
             {if(param$2)
               {var
                 al=param$2[2],
                 a$1=param$2[1],
                 apos=a$1[7],
                 rev=apos[1],
                 start=pos(rev,apos[2]),
                 match$8=apos[3];
                if(match$8)
                 var n=match$8[1],stop=pos(rev,(apos[2] + n | 0) - 1 | 0);
                else
                 var stop=pos(rev,last);
                if(rev)
                 var stop$0=start,start$0=stop;
                else
                 var stop$0=stop,start$0=start;
                var
                 args$2=take_range(start$0,stop$0,pargs$2),
                 max_spec$0=caml_call2(Stdlib[17],stop$0,max_spec),
                 cl$5=caml_call3(Amap[4],a$1,[1,args$2],cl$4),
                 _dU_=arg_is_req(a$1),
                 _dV_=_dU_?0 === args$2?1:0:_dU_,
                 misses$1=_dV_?[0,a$1,misses$0]:misses$0,
                 misses$0=misses$1,
                 cl$4=cl$5,
                 max_spec=max_spec$0,
                 param$2=al;
                continue}
              if(0 === misses$0)
               {if(last <= max_spec)return [0,cl$4];
                var excess=take_range(max_spec + 1 | 0,last,pargs$2);
                return [1,[0,err_pos_excess(excess),cl$4]]}
              return [1,[0,err_pos_misses(misses$0),cl$4]]}}
          var match$10=_dW_[1],cl$7=match$10[2],errs$3=match$10[1];
          return [1,[0,errs$3,cl$7]]}}}
    var Cmdliner_cline=[0,create,opt_arg,pos_arg,actual_args];
    caml_register_global(312,Cmdliner_cline,"Cmdliner_cline");
    function pure(v)
     {function _dM_(param,_dN_){return [0,v]}return [0,Args[1],_dM_]}
    function symbol(param,_dK_)
     {var v=_dK_[2],args_v=_dK_[1],f=param[2],args_f=param[1];
      function _dL_(ei,cl)
       {var e=caml_call2(f,ei,cl);
        if(0 === e[0])
         {var f$0=e[1],e$0=caml_call2(v,ei,cl);
          if(0 === e$0[0]){var v$0=e$0[1];return [0,caml_call1(f$0,v$0)]}
          return e$0}
        return e}
      return [0,caml_call2(Args[7],args_f,args_v),_dL_]}
    var include=[0,pure,symbol];
    caml_register_global(313,include,"Cmdliner_term");
    function rev_compare$0(n0,n1){return caml_compare(n1,n0)}
    var _by_=Stdlib_printf[4];
    function doc_alts_enum(quoted,enum$0)
     {function _dI_(_dJ_){return _dJ_[1]}
      return doc_alts(quoted,caml_call2(Stdlib_list[17],_dI_,enum$0))}
    function str_of_pp(pp,v)
     {caml_call2(pp,Stdlib_format[109],v);
      return caml_call1(Stdlib_format[110],0)}
    function conv(docv,param)
     {var print=param[2],parse=param[1];
      function parse$0(s)
       {var match=caml_call1(parse,s);
        if(0 === match[0]){var v=match[1];return [0,17724,v]}
        var match$0=match[1],e=match$0[2];
        return [0,106380200,e]}
      return [0,parse$0,print]}
    function pconv(docv,conv){return conv}
    function conv_parser(param,s)
     {var parse=param[1],match=caml_call1(parse,s);
      if(106380200 <= match[1]){var e=match[2];return [1,[0,3854881,e]]}
      var v=match[2];
      return [0,v]}
    function conv_printer(param){var print=param[2];return print}
    function conv_docv(param){return default_docv}
    function parser_of_kind_of_string(kind,k_of_string,s)
     {var match=caml_call1(k_of_string,s);
      if(match){var v=match[1];return [0,v]}
      return [1,[0,3854881,caml_call3(_by_,_bz_,s,kind)]]}
    function symbol$0(f,x){return caml_call1(f,x)}
    function err$0(e){return [1,[0,-796721133,e]]}
    function parse_to_list(parser,s)
     {var e=caml_call1(parser,s);
      if(106380200 <= e[1])return e;
      var v=e[2];
      return [0,17724,[0,v,0]]}
    function try_env(ei,a,parse,absent)
     {var match=a[3];
      if(match)
       {var env=match[1],var$0=env[2],match$0=eval_env_var(ei,var$0);
        if(match$0)
         {var v=match$0[1],match$1=caml_call1(parse,v);
          if(106380200 <= match$1[1])
           {var e=match$1[2];return err$0(err_env_parse(env,e))}
          var v$0=match$1[2];
          return [0,v$0]}
        return [0,absent]}
      return [0,absent]}
    var _bA_=Args[5];
    function list_to_args(f,l)
     {function add(acc,v)
       {var _dH_=caml_call1(f,v);return caml_call2(Args[4],_dH_,acc)}
      return caml_call3(Stdlib_list[22],add,Args[1],l)}
    function flag(a)
     {if(arg_is_pos(a))return caml_call1(Stdlib[1],err_not_opt);
      function convert(ei,cl)
       {var match=opt_arg(cl,a);
        if(match)
         {var _dE_=match[1],_dF_=_dE_[3],_dG_=_dE_[2];
          if(_dF_)
           {if(! match[2]){var v=_dF_[1];return err$0(err_flag_value(_dG_,v))}}
          else
           if(! match[2])return _bB_;
          var match$0=match[2][1],g=match$0[2];
          return err$0(err_opt_repeated(_dG_,g))}
        return try_env(ei,a,env_bool_parse,0)}
      return [0,caml_call1(_bA_,a),convert]}
    function flag_all(a)
     {if(arg_is_pos(a))return caml_call1(Stdlib[1],err_not_opt);
      var a$0=arg_make_all_opts(a);
      function convert(ei,cl)
       {var l=opt_arg(cl,a$0);
        if(l)
         try
          {var
            truth=
             function(param)
              {var v=param[3],f=param[2];
               if(v)
                {var v$0=v[1],_dD_=err_flag_value(f,v$0);
                 return caml_call1(Stdlib[2],_dD_)}
               return 1},
            _dA_=[0,caml_call2(Stdlib_list[19],truth,l)];
           return _dA_}
         catch(exn)
          {exn = caml_wrap_exception(exn);
           if(exn[1] === Stdlib[7]){var e=exn[2];return err$0(e)}
           throw exn}
        var _dB_=0;
        return try_env
                (ei,
                 a$0,
                 function(_dC_){return parse_to_list(env_bool_parse,_dC_)},
                 _dB_)}
      return [0,caml_call1(_bA_,a$0),convert]}
    function vflag(v,l)
     {function convert(param,cl)
       {function aux(fv,param)
         {var fv$0=fv,param$0=param;
          for(;;)
           {if(param$0)
             {var
               rest=param$0[2],
               match=param$0[1],
               a=match[2],
               v$0=match[1],
               match$0=opt_arg(cl,a);
              if(match$0)
               {var _du_=match$0[1],_dv_=_du_[3],_dw_=_du_[2];
                if(_dv_)
                 {if(! match$0[2])
                   {var v$1=_dv_[1],_dy_=err_flag_value(_dw_,v$1);
                    return caml_call1(Stdlib[2],_dy_)}}
                else
                 if(! match$0[2])
                  {if(fv$0)
                    {var
                      match$2=fv$0[1],
                      g$0=match$2[1],
                      _dz_=err_opt_repeated(g$0,_dw_);
                     return caml_call1(Stdlib[2],_dz_)}
                   var fv$1=[0,[0,_dw_,v$0]],fv$0=fv$1,param$0=rest;
                   continue}
                var
                 match$1=match$0[2][1],
                 g=match$1[2],
                 _dx_=err_opt_repeated(g,_dw_);
                return caml_call1(Stdlib[2],_dx_)}
              var param$0=rest;
              continue}
            if(fv$0){var match$3=fv$0[1],v$2=match$3[2];return v$2}
            return v}}
        try
         {var _dt_=[0,aux(0,l)];return _dt_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Stdlib[7]){var e=exn[2];return err$0(e)}
          throw exn}}
      function flag(param)
       {var a=param[2];
        return arg_is_pos(a)?caml_call1(Stdlib[1],err_not_opt):a}
      return [0,list_to_args(flag,l),convert]}
    function vflag_all(v,l)
     {function convert(param,cl)
       {function aux(acc,param)
         {var acc$0=acc,param$0=param;
          for(;;)
           {if(param$0)
             {var
               rest=param$0[2],
               match=param$0[1],
               a=match[2],
               fv=match[1],
               l=opt_arg(cl,a);
              if(l)
               {var
                 fval$0=
                  function(fv)
                   {function fval(param)
                     {var v=param[3],f=param[2],k=param[1];
                      if(v)
                       {var v$0=v[1],_ds_=err_flag_value(f,v$0);
                        return caml_call1(Stdlib[2],_ds_)}
                      return [0,k,fv]}
                    return fval},
                 fval=fval$0(fv),
                 _do_=caml_call2(Stdlib_list[19],fval,l),
                 acc$1=caml_call2(Stdlib_list[12],_do_,acc$0),
                 acc$0=acc$1,
                 param$0=rest;
                continue}
              var param$0=rest;
              continue}
            if(0 === acc$0)return v;
            var
             _dp_=caml_call2(Stdlib_list[51],rev_compare$0,acc$0),
             _dq_=function(_dr_){return _dr_[2]};
            return caml_call2(Stdlib_list[19],_dq_,_dp_)}}
        try
         {var _dn_=[0,aux(0,l)];return _dn_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] === Stdlib[7]){var e=exn[2];return err$0(e)}
          throw exn}}
      function flag(param)
       {var a=param[2];
        return arg_is_pos(a)
                ?caml_call1(Stdlib[1],err_not_opt)
                :arg_make_all_opts(a)}
      return [0,list_to_args(flag,l),convert]}
    function parse_opt_value(parse,f,v)
     {var match=caml_call1(parse,v);
      if(106380200 <= match[1])
       {var e=match[2],_dm_=err_opt_parse(f,e);
        return caml_call1(Stdlib[2],_dm_)}
      var v$0=match[2];
      return v$0}
    function opt(vopt,param,v,a)
     {var print=param[2],parse=param[1];
      if(arg_is_pos(a))return caml_call1(Stdlib[1],err_not_opt);
      var absent=[0,[246,function(_dl_){return str_of_pp(print,v)}]];
      if(vopt)var dv=vopt[1],kind=[0,str_of_pp(print,dv)];else var kind=1;
      var a$0=arg_make_opt(absent,kind,a);
      function convert(ei,cl)
       {var match=opt_arg(cl,a$0);
        if(match)
         {var _dh_=match[1],_di_=_dh_[3],_dj_=_dh_[2];
          if(_di_)
           {if(! match[2])
             {var v$0=_di_[1];
              try
               {var _dk_=[0,parse_opt_value(parse,_dj_,v$0)];return _dk_}
              catch(exn)
               {exn = caml_wrap_exception(exn);
                if(exn[1] === Stdlib[7]){var e=exn[2];return err$0(e)}
                throw exn}}}
          else
           if(! match[2])
            {if(vopt){var optv=vopt[1];return [0,optv]}
             return err$0(err_opt_value_missing(_dj_))}
          var match$0=match[2][1],g=match$0[2];
          return err$0(err_opt_repeated(g,_dj_))}
        return try_env(ei,a$0,parse,v)}
      return [0,caml_call1(_bA_,a$0),convert]}
    function opt_all(vopt,param,v,a)
     {var print=param[2],parse=param[1];
      if(arg_is_pos(a))return caml_call1(Stdlib[1],err_not_opt);
      if(vopt)var dv=vopt[1],kind=[0,str_of_pp(print,dv)];else var kind=1;
      var a$0=arg_make_opt_all(absent,kind,a);
      function convert(ei,cl)
       {var l=opt_arg(cl,a$0);
        if(l)
         {var
           parse$0=
            function(param)
             {var v=param[3],f=param[2],k=param[1];
              if(v){var v$0=v[1];return [0,k,parse_opt_value(parse,f,v$0)]}
              if(vopt){var dv=vopt[1];return [0,k,dv]}
              var _dg_=err_opt_value_missing(f);
              return caml_call1(Stdlib[2],_dg_)};
          try
           {var
             _da_=caml_call2(Stdlib_list[19],parse$0,l),
             _db_=caml_call2(Stdlib_list[51],rev_compare$0,_da_),
             _dc_=function(_df_){return _df_[2]},
             _dd_=[0,caml_call2(Stdlib_list[19],_dc_,_db_)];
            return _dd_}
          catch(exn)
           {exn = caml_wrap_exception(exn);
            if(exn[1] === Stdlib[7]){var e=exn[2];return err$0(e)}
            throw exn}}
        return try_env
                (ei,a$0,function(_de_){return parse_to_list(parse,_de_)},v)}
      return [0,caml_call1(_bA_,a$0),convert]}
    function parse_pos_value(parse,a,v)
     {var match=caml_call1(parse,v);
      if(106380200 <= match[1])
       {var e=match[2],_c$_=err_pos_parse(a,e);
        return caml_call1(Stdlib[2],_c$_)}
      var v$0=match[2];
      return v$0}
    function pos$0(opt,k,param,v,a)
     {var print=param[2],parse=param[1];
      if(opt)var sth=opt[1],rev=sth;else var rev=0;
      if(arg_is_opt(a))return caml_call1(Stdlib[1],err_not_pos);
      var
       absent=[0,[246,function(_c__){return str_of_pp(print,v)}]],
       pos=[0,rev,k,_bC_],
       a$0=arg_make_pos_abs(absent,pos,a);
      function convert(ei,cl)
       {var match=pos_arg(cl,a$0);
        if(match)
         {if(match[2])throw [0,Assert_failure,_bD_];
          var v$0=match[1];
          try
           {var _c9_=[0,parse_pos_value(parse,a$0,v$0)];return _c9_}
          catch(exn)
           {exn = caml_wrap_exception(exn);
            if(exn[1] === Stdlib[7]){var e=exn[2];return err$0(e)}
            throw exn}}
        return try_env(ei,a$0,parse,v)}
      return [0,caml_call1(_bA_,a$0),convert]}
    function pos_list(pos,param,v,a)
     {var parse=param[1];
      if(arg_is_opt(a))return caml_call1(Stdlib[1],err_not_pos);
      var a$0=arg_make_pos(pos,a);
      function convert(ei,cl)
       {var l=pos_arg(cl,a$0);
        if(l)
         try
          {var
            _c4_=function(_c8_){return parse_pos_value(parse,a$0,_c8_)},
            _c5_=caml_call2(Stdlib_list[19],_c4_,l),
            _c6_=[0,caml_call1(Stdlib_list[9],_c5_)];
           return _c6_}
         catch(exn)
          {exn = caml_wrap_exception(exn);
           if(exn[1] === Stdlib[7]){var e=exn[2];return err$0(e)}
           throw exn}
        return try_env
                (ei,a$0,function(_c7_){return parse_to_list(parse,_c7_)},v)}
      return [0,caml_call1(_bA_,a$0),convert]}
    var all=[0,0,0,0];
    function pos_all(c,v,a){return pos_list(all,c,v,a)}
    function pos_left(opt,k)
     {if(opt)var sth=opt[1],rev=sth;else var rev=0;
      var start=rev?k + 1 | 0:0,len=rev?0:[0,k],_c0_=[0,rev,start,len];
      return function(_c1_,_c2_,_c3_){return pos_list(_c0_,_c1_,_c2_,_c3_)}}
    function pos_right(opt,k)
     {if(opt)var sth=opt[1],rev=sth;else var rev=0;
      var start=rev?0:k + 1 | 0,len=rev?[0,k]:0,_cW_=[0,rev,start,len];
      return function(_cX_,_cY_,_cZ_){return pos_list(_cW_,_cX_,_cY_,_cZ_)}}
    function absent_error(args)
     {function make_req(a,acc)
       {var req_a=arg_make_req(a);return caml_call2(Args[4],req_a,acc)}
      return caml_call3(Args[16],make_req,args,Args[1])}
    function value$0(a){return a}
    function err_arg_missing$0(args)
     {return err$0(err_arg_missing(caml_call1(Args[27],args)))}
    function required(param)
     {var convert=param[2],args=param[1],args$0=absent_error(args);
      function convert$0(ei,cl)
       {var e=caml_call2(convert,ei,cl);
        if(0 === e[0])
         {var _cV_=e[1];
          if(_cV_){var v=_cV_[1];return [0,v]}
          return err_arg_missing$0(args$0)}
        return e}
      return [0,args$0,convert$0]}
    function non_empty(param)
     {var convert=param[2],al=param[1],args=absent_error(al);
      function convert$0(ei,cl)
       {var e=caml_call2(convert,ei,cl);
        if(0 === e[0])
         {var _cU_=e[1];return _cU_?[0,_cU_]:err_arg_missing$0(args)}
        return e}
      return [0,args,convert$0]}
    function last(param)
     {var convert=param[2],args=param[1];
      function convert$0(ei,cl)
       {var e=caml_call2(convert,ei,cl);
        if(0 === e[0])
         {var _cS_=e[1];
          if(_cS_)
           {var _cT_=caml_call1(Stdlib_list[9],_cS_);
            return [0,caml_call1(Stdlib_list[5],_cT_)]}
          return err_arg_missing$0(args)}
        return e}
      return [0,args,convert$0]}
    var
     man_fmts_enum=enum$0(man_fmts),
     man_fmts_alts=doc_alts_enum(0,man_fmts);
    function man_fmts_doc(kind)
     {return caml_call3(_by_,_bE_,kind,man_fmts_alts)}
    var
     doc=man_fmts_doc(cst_output),
     _bG_=info(0,[0,docv],[0,doc],0,_bF_),
     _bH_=-797271261,
     _bI_=0,
     man_format=
      symbol$0
       (value$0,
        symbol$0
         (function(_cR_){return opt(_bI_,man_fmts_enum,_bH_,_cR_)},_bG_));
    function stdopt_version(docs)
     {return symbol$0(value$0,symbol$0(flag,info([0,docs],0,_bK_,0,_bJ_)))}
    function stdopt_help(docs)
     {var
       doc=man_fmts_doc(cst_this_help),
       _cN_=info([0,docs],[0,docv],[0,doc],0,_bL_),
       _cO_=0,
       _cP_=some(0,man_fmts_enum);
      return symbol$0
              (value$0,
               symbol$0(function(_cQ_){return opt(_bM_,_cP_,_cO_,_cQ_)},_cN_))}
    var
     Cmdliner_arg=
      [0,
       conv,
       pconv,
       conv_parser,
       conv_printer,
       conv_docv,
       parser_of_kind_of_string,
       some,
       env_info,
       info,
       symbol$0,
       flag,
       flag_all,
       vflag,
       vflag_all,
       opt,
       opt_all,
       pos$0,
       pos_all,
       pos_left,
       pos_right,
       value$0,
       required,
       non_empty,
       last,
       man_format,
       stdopt_version,
       stdopt_help,
       bool,
       char$0,
       int$0,
       nativeint,
       int32,
       int64,
       float$0,
       string,
       enum$0,
       file,
       dir,
       non_dir_file,
       list,
       array,
       t2,
       t2,
       t3,
       t4,
       doc_quote,
       doc_alts,
       doc_alts_enum];
    caml_register_global(314,Cmdliner_arg,"Cmdliner_arg");
    function ret(param)
     {var v=param[2],al=param[1];
      return [0,
              al,
              function(ei,cl)
               {var e=caml_call2(v,ei,cl);
                if(0 === e[0])
                 {var _cL_=e[1],_cM_=_cL_[1];
                  if(106380200 === _cM_)return [1,_cL_];
                  if(803495649 <= _cM_)return [1,_cL_];
                  var v$0=_cL_[2];
                  return [0,v$0]}
                return e}]}
    function term_result(opt,param)
     {var v=param[2],al=param[1];
      if(opt)var sth=opt[1],usage=sth;else var usage=0;
      return [0,
              al,
              function(ei,cl)
               {var e=caml_call2(v,ei,cl);
                if(0 === e[0])
                 {var _cK_=e[1];
                  if(0 === _cK_[0])return _cK_;
                  var match=_cK_[1],e$0=match[2];
                  return [1,[0,106380200,[0,usage,e$0]]]}
                return e}]}
    function cli_parse_result(param)
     {var v=param[2],al=param[1];
      return [0,
              al,
              function(ei,cl)
               {var e=caml_call2(v,ei,cl);
                if(0 === e[0])
                 {var _cJ_=e[1];
                  if(0 === _cJ_[0])return _cJ_;
                  var match=_cJ_[1],e$0=match[2];
                  return [1,[0,-796721133,e$0]]}
                return e}]}
    function _bN_(ei,param){return [0,term_name(ei[2])]}
    var main_name=[0,Args[1],_bN_];
    function choice_name(t){return term_name(t)}
    function _bO_(ei,param)
     {return [0,caml_call2(Stdlib_list[19],choice_name,ei[3])]}
    var choice_names=[0,Args[1],_bO_];
    function with_used_args(param)
     {var v=param[2],al=param[1];
      return [0,
              al,
              function(ei,cl)
               {var e=caml_call2(v,ei,cl);
                if(0 === e[0])
                 {var
                   x=e[1],
                   actual_args$0=
                    function(arg_info,acc)
                     {var args=actual_args(cl,arg_info);
                      return caml_call2(Stdlib_list[12],args,acc)},
                   _cI_=caml_call3(Args[16],actual_args$0,al,0),
                   used=caml_call1(Stdlib_list[9],_cI_);
                  return [0,[0,x,used]]}
                return e}]}
    var
     _bQ_=[0,exit_info(0,_bP_,0,125),0],
     default_error_exits=[0,exit_info(0,_bR_,0,124),_bQ_],
     default_exits=[0,exit_info(0,_bS_,0,0),default_error_exits],
     exit_status_success=0,
     exit_status_cli_error=124,
     exit_status_internal_error=125,
     _bT_=[0,Args[1]];
    function info$0(_cz_,_cA_,_cB_,_cC_,_cD_,_cE_,_cF_,_cG_,_cH_)
     {return term(_bT_,_cz_,_cA_,_cB_,_cC_,_cD_,_cE_,_cF_,_cG_,_cH_)}
    function name(ti){return term_name(ti)}
    function err_help(s)
     {return caml_call2(Stdlib[28],cst_Term_error_help_requested_,s)}
    function add_stdopts(ei)
     {var docs=term_stdopts_docs(ei[1]),match=term_version(ei[2]);
      if(match)
       var vers=stdopt_version(docs),args=vers[1],vers$0=[0,vers],vargs=args;
      else
       var vers$0=0,vargs=Args[1];
      var
       help=stdopt_help(docs),
       args$0=caml_call2(Args[7],vargs,help[1]),
       term=term_add_args(ei[1],args$0);
      return [0,help,vers$0,eval_with_term(ei,term)]}
    function run(catch$0,ei,cl,f)
     {try
       {var _cy_=caml_call2(f,ei,cl);return _cy_}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        if(catch$0)
         {var bt=caml_call1(Stdlib_printexc[11],0);
          return [1,[0,3458171,[0,exn,bt]]]}
        throw exn}}
    function try_eval_stdopts(catch$0,ei,cl,help,version)
     {var err=run(catch$0,ei,cl,help[2]);
      if(0 === err[0])
       {var _cx_=err[1];
        if(_cx_){var fmt=_cx_[1];return [0,[1,[0,-689884355,fmt]]]}
        if(version)
         {var version$0=version[1],err$0=run(catch$0,ei,cl,version$0[2]);
          return 0 === err$0[0]?err$0[1]?_bU_:0:[0,err$0]}
        return 0}
      return [0,err]}
    function term_eval(catch$0,ei,f,args)
     {var
       match=add_stdopts(ei),
       ei$0=match[3],
       version=match[2],
       help=match[1],
       term_args=ei$0[1][2],
       match$0=create(0,term_args,args);
      if(0 === match$0[0])
       {var
         cl=match$0[1],
         match$1=try_eval_stdopts(catch$0,ei$0,cl,help,version);
        if(match$1)var e=match$1[1],e$0=e;else var e$0=run(catch$0,ei$0,cl,f);
        var res=e$0}
      else
       {var
         match$2=match$0[1],
         cl$0=match$2[2],
         e$1=match$2[1],
         match$3=try_eval_stdopts(catch$0,ei$0,cl$0,help,version);
        if(match$3)
         var e$2=match$3[1],e$3=e$2;
        else
         var e$3=[1,[0,106380200,[0,1,e$1]]];
        var res=e$3}
      return [0,ei$0,res]}
    function do_help(help_ppf,err_ppf,ei,fmt,cmd)
     {if(cmd)
       {var cmd$0=cmd[1];
        try
         {var
           is_cmd=function(t){return caml_string_equal(term_name(t),cmd$0)},
           cmd$1=caml_call2(Stdlib_list[35],is_cmd,ei[3]),
           _cv_=eval_with_term(ei,cmd$1),
           _cu_=_cv_}
        catch(_cw_)
         {_cw_ = caml_wrap_exception(_cw_);
          if(_cw_ !== Stdlib[8])throw _cw_;
          var _ct_=err_help(cmd$0),_cu_=caml_call1(Stdlib[1],_ct_)}
        var ei$0=_cu_}
      else
       var ei$0=eval_with_term(ei,ei[2]);
      var match=add_stdopts(ei$0),ei$1=match[3];
      return pp_man(err_ppf,fmt,help_ppf,ei$1)}
    function do_result(help_ppf,err_ppf,ei,param)
     {if(0 === param[0]){var v=param[1];return [0,17724,v]}
      var res=param[1];
      if(typeof res === "number"){pp_version(help_ppf,ei);return -901574920}
      var _cs_=res[1];
      if(-689884355 === _cs_)
       {var fmt=res[2];pp_man(err_ppf,fmt,help_ppf,ei);return 803495649}
      if(106380200 <= _cs_)
       {if(803495649 <= _cs_)
         {var match=res[2],cmd=match[2],fmt$0=match[1];
          do_help(help_ppf,err_ppf,ei,fmt$0,cmd);
          return 803495649}
        var match$0=res[2],err=match$0[2],usage=match$0[1];
        if(usage)pp_err_usage(err_ppf,ei,1,err);else pp_err(err_ppf,ei,err);
        return _bZ_}
      if(3458171 <= _cs_)
       {var match$1=res[2],bt=match$1[2],e=match$1[1];
        pp_backtrace(err_ppf,ei,e,bt);
        return _b0_}
      var err$0=res[2];
      pp_err_usage(err_ppf,ei,0,err$0);
      return _b1_}
    function env_default(v)
     {try
       {var _cq_=[0,caml_sys_getenv(v)];return _cq_}
      catch(_cr_)
       {_cr_ = caml_wrap_exception(_cr_);
        if(_cr_ === Stdlib[8])return 0;
        throw _cr_}}
    function remove_exec(argv)
     {try
       {var
         _cn_=caml_call1(Stdlib_array[11],argv),
         _co_=caml_call1(Stdlib_list[6],_cn_);
        return _co_}
      catch(_cp_)
       {_cp_ = caml_wrap_exception(_cp_);
        if(_cp_[1] === Stdlib[7])return caml_call1(Stdlib[1],err_argv);
        throw _cp_}}
    function eval$1(opt,_cm_,_cl_,_ck_,_cj_,param)
     {var ti=param[2],match=param[1],f=match[2],al=match[1];
      if(opt)var sth=opt[1],help_ppf=sth;else var help_ppf=Stdlib_format[105];
      if(_cm_)
       var sth$0=_cm_[1],err_ppf=sth$0;
      else
       var err_ppf=Stdlib_format[106];
      if(_cl_)var sth$1=_cl_[1],catch$0=sth$1;else var catch$0=1;
      if(_ck_)var sth$2=_ck_[1],env=sth$2;else var env=env_default;
      if(_cj_)var sth$3=_cj_[1],argv=sth$3;else var argv=caml_sys_argv(0);
      var
       term=term_add_args(ti,al),
       ei=[0,term,term,0,env],
       args=remove_exec(argv),
       match$0=term_eval(catch$0,ei,f,args),
       res=match$0[2],
       ei$0=match$0[1];
      return do_result(help_ppf,err_ppf,ei$0,res)}
    function eval_choice(opt,_ce_,_cd_,_cc_,_cb_,main,choices)
     {if(opt)var sth=opt[1],help_ppf=sth;else var help_ppf=Stdlib_format[105];
      if(_ce_)
       var sth$0=_ce_[1],err_ppf=sth$0;
      else
       var err_ppf=Stdlib_format[106];
      if(_cd_)var sth$1=_cd_[1],catch$0=sth$1;else var catch$0=1;
      if(_cc_)var sth$2=_cc_[1],env=sth$2;else var env=env_default;
      if(_cb_)var sth$3=_cb_[1],argv=sth$3;else var argv=caml_sys_argv(0);
      function to_term_f(param)
       {var ti=param[2],match=param[1],f=match[2],al=match[1];
        return [0,term_add_args(ti,al),f]}
      var
       choices$0=caml_call2(Stdlib_list[19],to_term_f,choices),
       main$0=to_term_f(main);
      function _cf_(_ci_){return _ci_[1]}
      var
       choices$1=caml_call2(Stdlib_list[19],_cf_,choices$0),
       main$1=main$0[1],
       args$0=remove_exec(argv);
      if(args$0)
       {var args=args$0[2],maybe=args$0[1],switch$0=0;
        if
         (1 < caml_ml_string_length(maybe) && 45 === caml_string_get(maybe,0))
         var match$0=[0,[0,main$0,args$0]];
        else
         switch$0 = 1;
        if(switch$0)
         {var
           add$0=
            function(acc,c)
             {var choice=c[1],name=term_name(choice),match=add(acc,name,c);
              if(3901504 <= match[1]){var t=match[2];return t}
              var
               match$0=match[2],
               c$0=match$0[1],
               a=c$0[1],
               a$0=c[1],
               _ch_=err_multi_def(cst_command,name,term_doc,a$0,a);
              return caml_call1(Stdlib[1],_ch_)},
           index=caml_call3(Stdlib_list[22],add$0,optidx,choices$0),
           match=find(index,maybe);
          if(typeof match === "number")
           if(-328798100 <= match)
            var
             ambs=ambiguities(index,maybe),
             ambs$0=caml_call2(Stdlib_list[51],caml_string_compare,ambs),
             match$0=[1,err_ambiguous(cst_command$0,maybe,ambs$0)];
           else
            var
             all=ambiguities(index,cst$44),
             hints=value(maybe,all),
             match$0=[1,err_unknown([0,hints],cst_command$1,maybe)];
          else
           var choice=match[2],match$0=[0,[0,choice,args]]}}
      else
       var match$0=[0,[0,main$0,0]];
      if(0 === match$0[0])
       {var
         _cg_=match$0[1],
         args$1=_cg_[2],
         match$1=_cg_[1],
         f=match$1[2],
         chosen=match$1[1],
         ei=[0,chosen,main$1,choices$1,env],
         match$2=term_eval(catch$0,ei,f,args$1),
         res=match$2[2],
         ei$0=match$2[1];
        return do_result(help_ppf,err_ppf,ei$0,res)}
      var err=match$0[1],ei$1=[0,main$1,main$1,choices$1,env];
      pp_err_usage(err_ppf,ei$1,0,err);
      return _b2_}
    function eval_peek_opts(opt,_ca_,_b$_,param)
     {var f=param[2],args=param[1];
      if(opt)var sth=opt[1],version_opt=sth;else var version_opt=0;
      if(_ca_)var sth$0=_ca_[1],env=sth$0;else var env=env_default;
      if(_b$_)var sth$1=_b$_[1],argv=sth$1;else var argv=caml_sys_argv(0);
      var
       version$0=version_opt?_b3_:0,
       term$0=term([0,args],0,0,0,0,0,0,0,version$0,cst_dummy),
       ei$0=[0,term$0,term$0,0,env],
       args$0=remove_exec(argv),
       match=add_stdopts(ei$0),
       ei=match[3],
       version=match[2],
       help=match[1],
       term_args=ei[1][2],
       match$0=create(_bV_,term_args,args$0);
      if(0 === match$0[0])
       {var cl=match$0[1],ret=run(1,ei,cl,f);
        if(0 === ret[0])var v=ret[1],v$0=[0,v];else var v$0=0;
        var match$1=try_eval_stdopts(1,ei,cl,help,version);
        if(match$1)var e=match$1[1],_b5_=[0,v$0,e];else var _b5_=[0,v$0,ret];
        var match$2=_b5_}
      else
       {var
         match$3=match$0[1],
         cl$0=match$3[2],
         e$0=match$3[1],
         match$4=try_eval_stdopts(1,ei,cl$0,help,version);
        if(match$4)
         var e$1=match$4[1],_b__=[0,0,e$1];
        else
         var _b__=[0,0,[1,[0,106380200,[0,1,e$0]]]];
        var match$2=_b__}
      var ret$0=match$2[2],v$1=match$2[1];
      if(0 === ret$0[0])
       var v$2=ret$0[1],ret$1=[0,17724,v$2];
      else
       {var _b6_=ret$0[1];
        if(typeof _b6_ === "number")
         var _b7_=-901574920;
        else
         var
          _b8_=_b6_[1],
          _b9_=
           -689884355 === _b8_
            ?803495649
            :106380200 <= _b8_
              ?803495649 <= _b8_?803495649:_bW_
              :3458171 <= _b8_?_bX_:_bY_,
          _b7_=_b9_;
        var ret$1=_b7_}
      return [0,v$1,ret$1]}
    function exit_status_of_result(opt,param)
     {if(opt)var sth=opt[1],term_err=sth;else var term_err=1;
      if(typeof param !== "number" && 106380200 <= param[1])
       {var _b4_=param[2];
        return 3458171 === _b4_
                ?exit_status_internal_error
                :936571788 <= _b4_?term_err:exit_status_cli_error}
      return exit_status_success}
    function exit_status_of_status_result(term_err,r)
     {if(typeof r !== "number" && 17724 === r[1]){var n=r[2];return n}
      return exit_status_of_result(term_err,r)}
    var stdlib_exit=Stdlib[99];
    function exit(term_err,r)
     {return caml_call1(stdlib_exit,exit_status_of_result(term_err,r))}
    function exit_status(term_err,r)
     {return caml_call1(stdlib_exit,exit_status_of_status_result(term_err,r))}
    var
     Cmdliner=
      [0,
       [0,
        esc,
        s_name,
        s_synopsis,
        s_description,
        s_commands,
        s_arguments,
        s_options,
        s_common_options,
        s_exit_status,
        s_environment,
        s_environment_intro,
        s_files,
        s_bugs,
        s_examples,
        s_authors,
        s_see_also,
        print],
       [0,
        pure,
        pure,
        man_format,
        symbol,
        symbol,
        ret,
        term_result,
        cli_parse_result,
        main_name,
        choice_names,
        with_used_args,
        exit_info,
        default_exits,
        default_error_exits,
        env_info,
        info$0,
        name,
        eval$1,
        eval_choice,
        eval_peek_opts,
        exit_status_success,
        exit_status_cli_error,
        exit_status_internal_error,
        exit_status_of_result,
        exit_status_of_status_result,
        exit,
        exit_status],
       [0,
        conv,
        pconv,
        conv_parser,
        conv_printer,
        conv_docv,
        parser_of_kind_of_string,
        some,
        env_info,
        info,
        symbol$0,
        flag,
        flag_all,
        vflag,
        vflag_all,
        opt,
        opt_all,
        pos$0,
        pos_all,
        pos_left,
        pos_right,
        value$0,
        required,
        non_empty,
        last,
        man_format,
        bool,
        char$0,
        int$0,
        nativeint,
        int32,
        int64,
        float$0,
        string,
        enum$0,
        file,
        dir,
        non_dir_file,
        list,
        array,
        t2,
        t2,
        t3,
        t4,
        doc_quote,
        doc_alts,
        doc_alts_enum]];
    caml_register_global(315,Cmdliner,"Cmdliner");
    return}
  (function(){return this}()));


//# 1 "../lib_unix/.smartml_unix.objs/smartml_unix.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_register_global=runtime.caml_register_global,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_sys_system_command=runtime.caml_sys_system_command,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_items=caml_string_of_jsbytes("items"),
     cst_OK$1=caml_string_of_jsbytes("OK"),
     cst_ERROR$0=caml_string_of_jsbytes("ERROR"),
     cst_result=caml_string_of_jsbytes("result"),
     cst_name=caml_string_of_jsbytes("name"),
     cst$7=caml_string_of_jsbytes(""),
     cst_s$0=caml_string_of_jsbytes("s"),
     cst_OK$0=caml_string_of_jsbytes("OK"),
     cst_ERROR=caml_string_of_jsbytes("ERROR"),
     cst$5=caml_string_of_jsbytes("____"),
     cst_New_contract$0=caml_string_of_jsbytes("New_contract"),
     cst_Compute=caml_string_of_jsbytes("Compute"),
     cst_Simulation=caml_string_of_jsbytes("Simulation"),
     cst_Message=caml_string_of_jsbytes("Message"),
     cst_Html=caml_string_of_jsbytes("Html"),
     cst_Verify=caml_string_of_jsbytes("Verify"),
     cst_Show=caml_string_of_jsbytes("Show"),
     cst_Set_delegate=caml_string_of_jsbytes("Set_delegate"),
     cst_DynamicContract=caml_string_of_jsbytes("DynamicContract"),
     cst_Add_flag=caml_string_of_jsbytes("Add_flag"),
     cst_no_action=caml_string_of_jsbytes("no_action"),
     cst$6=caml_string_of_jsbytes("__"),
     cst_KO=caml_string_of_jsbytes("KO"),
     cst_OK=caml_string_of_jsbytes("OK"),
     cst_result_tsv=caml_string_of_jsbytes("/result.tsv"),
     cst_results_txt=caml_string_of_jsbytes("results.txt"),
     cst_results_full_txt=caml_string_of_jsbytes("results-full.txt"),
     cst_results_json=caml_string_of_jsbytes("results.json"),
     cst_tezos_scenario_result_v0=
      caml_string_of_jsbytes("tezos-scenario-result.v0"),
     cst$8=caml_string_of_jsbytes(""),
     cst$4=caml_string_of_jsbytes(""),
     cst_s=caml_string_of_jsbytes("s"),
     cst$2=caml_string_of_jsbytes(""),
     cst$3=caml_string_of_jsbytes("."),
     cst_for$0=caml_string_of_jsbytes("for"),
     cst_balance=caml_string_of_jsbytes("balance"),
     cst_get=caml_string_of_jsbytes("get"),
     cst_to=caml_string_of_jsbytes("to"),
     cst_from=caml_string_of_jsbytes("from"),
     cst$1=caml_string_of_jsbytes(""),
     cst_transfer=caml_string_of_jsbytes("transfer"),
     cst_wait=caml_string_of_jsbytes("-wait"),
     cst_to$0=caml_string_of_jsbytes("to"),
     cst_from$0=caml_string_of_jsbytes("from"),
     cst_amount=caml_string_of_jsbytes("amount"),
     cst_Transfer=caml_string_of_jsbytes("Transfer"),
     cst_arg=caml_string_of_jsbytes("--arg"),
     cst_entrypoint=caml_string_of_jsbytes("--entrypoint"),
     cst_input=caml_string_of_jsbytes("input"),
     cst_and=caml_string_of_jsbytes("and"),
     cst_storage$0=caml_string_of_jsbytes("storage"),
     cst_on=caml_string_of_jsbytes("on"),
     cst_script=caml_string_of_jsbytes("script"),
     cst_run=caml_string_of_jsbytes("run"),
     cst_for$1=caml_string_of_jsbytes("for"),
     cst_storage=caml_string_of_jsbytes("storage"),
     cst_contract$1=caml_string_of_jsbytes("contract"),
     cst_get$0=caml_string_of_jsbytes("get"),
     cst_New_contract=caml_string_of_jsbytes("New contract"),
     cst_New=caml_string_of_jsbytes("New"),
     cst_contract=caml_string_of_jsbytes("contract"),
     cst_Cannot_find_contract_addre=
      caml_string_of_jsbytes("Cannot find contract address"),
     cst_Cannot_find_contract=caml_string_of_jsbytes("Cannot find contract"),
     balance=caml_string_of_jsbytes("10"),
     burn_cap=caml_string_of_jsbytes("20"),
     cst_burn_cap=caml_string_of_jsbytes("--burn-cap"),
     cst_init=caml_string_of_jsbytes("--init"),
     cst_running=caml_string_of_jsbytes("running"),
     cst_bootstrap1=caml_string_of_jsbytes("bootstrap1"),
     cst_from$1=caml_string_of_jsbytes("from"),
     cst_transferring=caml_string_of_jsbytes("transferring"),
     cst_contract$0=caml_string_of_jsbytes("contract"),
     cst_originate=caml_string_of_jsbytes("originate"),
     cst_wait$0=caml_string_of_jsbytes("--wait"),
     cst_code=caml_string_of_jsbytes("code"),
     cst_origination=caml_string_of_jsbytes("origination"),
     cst_Acc=caml_string_of_jsbytes("Acc-"),
     cst_none=caml_string_of_jsbytes("none"),
     cst_unencrypted$1=caml_string_of_jsbytes("unencrypted:"),
     name=caml_string_of_jsbytes("the-funding-authority"),
     cst_for=caml_string_of_jsbytes("for"),
     cst_bake=caml_string_of_jsbytes("bake"),
     cst_unencrypted=caml_string_of_jsbytes("unencrypted:"),
     cst_unencrypted$0=caml_string_of_jsbytes("unencrypted:"),
     cst_key=caml_string_of_jsbytes("key"),
     cst_secret=caml_string_of_jsbytes("secret"),
     cst_import=caml_string_of_jsbytes("import"),
     cst_addr=caml_string_of_jsbytes("--addr"),
     cst_client_dir=caml_string_of_jsbytes("client-dir"),
     cst_base_dir=caml_string_of_jsbytes("--base-dir"),
     cst_port=caml_string_of_jsbytes("--port"),
     cst_base_dir$0=caml_string_of_jsbytes("--base-dir"),
     cst_mockup=caml_string_of_jsbytes("mockup"),
     cst_mode=caml_string_of_jsbytes("--mode"),
     partial=[11,caml_string_of_jsbytes("/err.txt ; }"),0],
     cst_cmd_txt=caml_string_of_jsbytes("cmd.txt"),
     cst_ret=caml_string_of_jsbytes("ret"),
     cst_err_txt=caml_string_of_jsbytes("err.txt"),
     cst_stderr=caml_string_of_jsbytes("stderr"),
     cst_out_txt$0=caml_string_of_jsbytes("out.txt"),
     cst_stdout=caml_string_of_jsbytes("stdout"),
     cst_cmd_txt$0=caml_string_of_jsbytes("cmd.txt"),
     cst_command=caml_string_of_jsbytes("command"),
     cst_id=caml_string_of_jsbytes("id"),
     cst_out_txt=caml_string_of_jsbytes("out.txt"),
     cst_tezos_client=caml_string_of_jsbytes("tezos-client"),
     cst_funder=caml_string_of_jsbytes("funder"),
     cst_shortname=caml_string_of_jsbytes("shortname"),
     cst$0=caml_string_of_jsbytes("-"),
     default_originator=caml_string_of_jsbytes("smartml-originator"),
     cst=caml_string_of_jsbytes("..."),
     cst_now_failed$0=caml_string_of_jsbytes("now failed"),
     cst_now_failed=caml_string_of_jsbytes("now failed"),
     shared=
      [0,
       caml_string_of_jsbytes("success"),
       caml_string_of_jsbytes("results_full_dot_txt"),
       caml_string_of_jsbytes("results_dot_txt"),
       caml_string_of_jsbytes("results_dot_json")],
     cst_smartpy_debug=caml_string_of_jsbytes("smartpy_debug"),
     cst_true=caml_string_of_jsbytes("true"),
     CamlinternalOO=global_data.CamlinternalOO,
     Stdlib_queue=global_data.Stdlib__queue,
     Base_List=global_data.Base__List,
     Ezjsonm=global_data.Ezjsonm,
     Fmt=global_data.Fmt,
     Base_Option=global_data.Base__Option,
     Base_String=global_data.Base__String,
     Base=global_data.Base,
     Base_Printf=global_data.Base__Printf,
     Unix=global_data.Unix,
     Smartml_Tezos_scenario=global_data.Smartml__Tezos_scenario,
     Stdlib_filename=global_data.Stdlib__filename,
     Base_Result=global_data.Base__Result,
     Stdlib_seq=global_data.Stdlib__seq,
     Base_Float=global_data.Base__Float,
     Stdlib_list=global_data.Stdlib__list,
     Stdlib_digest=global_data.Stdlib__digest,
     Base_Int=global_data.Base__Int,
     Yojson=global_data.Yojson,
     Smartml_Scenario=global_data.Smartml__Scenario,
     Base_Monad=global_data.Base__Monad,
     Caml=global_data.Caml,
     Stdlib_buffer=global_data.Stdlib__buffer,
     Stdlib_format=global_data.Stdlib__format,
     Ptime=global_data.Ptime,
     Stdlib_sys=global_data.Stdlib__sys,
     Smartml_Printer=global_data.Smartml__Printer,
     Smartml_unix=[0];
    caml_register_global(230,Smartml_unix,"Smartml_unix");
    var
     Span=Ptime[1],
     v=Ptime[2],
     epoch=Ptime[3],
     min=Ptime[4],
     max=Ptime[5],
     of_span=Ptime[6],
     to_span=Ptime[7],
     unsafe_of_d_ps=Ptime[8],
     of_float_s=Ptime[9],
     to_float_s=Ptime[10],
     truncate=Ptime[11],
     frac_s=Ptime[12],
     equal=Ptime[13],
     compare=Ptime[14],
     is_earlier=Ptime[15],
     is_later=Ptime[16],
     add_span=Ptime[17],
     sub_span=Ptime[18],
     diff=Ptime[19],
     of_date_time=Ptime[20],
     to_date_time=Ptime[21],
     of_date=Ptime[22],
     to_date=Ptime[23],
     weekday=Ptime[24],
     pp_rfc3339_error=Ptime[25],
     rfc3339_error_to_msg=Ptime[26],
     of_rfc3339=Ptime[27],
     to_rfc3339=Ptime[28],
     pp_rfc3339=Ptime[29],
     pp_human=Ptime[30],
     pp=Ptime[31],
     dump=Ptime[32],
     _a6_=[0,0],
     _a5_=[0,1],
     _a1_=
      [0,
       [11,
        caml_string_of_jsbytes("* Ran "),
        [4,
         0,
         0,
         0,
         [11,
          caml_string_of_jsbytes(" test"),
          [2,0,[12,46,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]]]],
       caml_string_of_jsbytes("* Ran %d test%s.@,")],
     _a2_=
      [0,
       [11,
        caml_string_of_jsbytes("* Total time: "),
        [8,
         [0,0,0],
         0,
         0,
         [11,
          caml_string_of_jsbytes("\xc2\xa0s."),
          [17,[0,caml_string_of_jsbytes("@,"),0,0],0]]]],
       caml_string_of_jsbytes("* Total time: %f\xc2\xa0s.@,")],
     _a3_=
      [0,
       [11,
        caml_string_of_jsbytes("  * Start: "),
        [2,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("  * Start: %s@,")],
     _a4_=
      [0,
       [11,
        caml_string_of_jsbytes("  * End:   "),
        [2,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("  * End:   %s@,")],
     _aP_=
      [0,
       [11,caml_string_of_jsbytes("  "),[2,0,[12,44,[2,0,0]]]],
       caml_string_of_jsbytes("  %s,%s")],
     _aQ_=[0,caml_string_of_jsbytes("\n")],
     _aR_=
      [0,
       [2,0,[12,32,[2,0,[12,10,[2,0,[12,10,[10,0]]]]]]],
       caml_string_of_jsbytes("%s %s\n%s\n%!")],
     _aL_=[0,[4,0,[0,2,4],0,0],caml_string_of_jsbytes("%04d")],
     _aM_=[0,[2,0,[12,44,[2,0,0]]],caml_string_of_jsbytes("%s,%s")],
     _aJ_=[0,caml_string_of_jsbytes("ScenarioError"),0],
     _aK_=[0,caml_string_of_jsbytes("Exception"),0],
     _aN_=[0,caml_string_of_jsbytes("")],
     _aS_=
      [0,
       [0,caml_string_of_jsbytes("no_history"),caml_string_of_jsbytes("")],
       0],
     _aO_=
      [0,
       [11,caml_string_of_jsbytes("mkdir -p "),[2,0,0]],
       caml_string_of_jsbytes("mkdir -p %s")],
     _aH_=
      [0,
       [11,caml_string_of_jsbytes("Running "),[2,0,0]],
       caml_string_of_jsbytes("Running %s")],
     _aI_=
      [0,
       [11,
        caml_string_of_jsbytes("Running scenario "),
        [2,0,[11,caml_string_of_jsbytes(" ..."),0]]],
       caml_string_of_jsbytes("Running scenario %s ...")],
     _aT_=
      [0,
       [11,caml_string_of_jsbytes("Client initialized."),0],
       caml_string_of_jsbytes("Client initialized.")],
     _aU_=
      [0,
       [11,
        caml_string_of_jsbytes("ERROR: "),
        [15,[12,10,[2,0,[12,10,[10,0]]]]]],
       caml_string_of_jsbytes("ERROR: %a\n%s\n%!")],
     _aV_=
      [0,
       [11,caml_string_of_jsbytes("Exception: "),[2,0,0]],
       caml_string_of_jsbytes("Exception: %s")],
     _aW_=[0,0],
     _aX_=[0,0],
     _aY_=
      [0,
       [11,caml_string_of_jsbytes("ERROR: "),[15,[12,10,[10,0]]]],
       caml_string_of_jsbytes("ERROR: %a\n%!")],
     _aZ_=
      [0,
       [11,
        caml_string_of_jsbytes("Client initialization error: "),
        [15,[12,46,0]]],
       caml_string_of_jsbytes("Client initialization error: %a.")],
     _a8_=[0,[2,0,[12,10,[10,0]]],caml_string_of_jsbytes("%s\n%!")],
     _aG_=
      [0,
       [11,
        caml_string_of_jsbytes("rm -fr "),
        [2,0,[11,caml_string_of_jsbytes("; mkdir -p "),[2,0,0]]]],
       caml_string_of_jsbytes("rm -fr %s; mkdir -p %s")],
     _a0_=
      [0,
       [11,caml_string_of_jsbytes("Writing results."),0],
       caml_string_of_jsbytes("Writing results.")],
     _a7_=
      [0,
       [2,0,[11,caml_string_of_jsbytes(", "),[2,0,0]]],
       caml_string_of_jsbytes("%s, %s")],
     _aF_=
      [0,
       [11,
        caml_string_of_jsbytes("Error: "),
        [2,0,[17,[0,caml_string_of_jsbytes("@,"),0,0],0]]],
       caml_string_of_jsbytes("Error: %s@,")],
     _aB_=
      [0,
       [11,caml_string_of_jsbytes("All OK!"),0],
       caml_string_of_jsbytes("All OK!")],
     _aC_=
      [0,
       [11,caml_string_of_jsbytes("FAILED \xe2\x98\xb9"),0],
       caml_string_of_jsbytes("FAILED \xe2\x98\xb9")],
     _aD_=
      [0,
       [11,
        caml_string_of_jsbytes("#====== Test Results for "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(": "),
          [15,[11,caml_string_of_jsbytes(" ======#"),0]]]]],
       caml_string_of_jsbytes("#====== Test Results for %s: %a ======#")],
     _aE_=
      [0,
       [11,
        caml_string_of_jsbytes("\xe2\x8f\xb0 Total Time: "),
        [8,[0,0,0],[0,1,0],[0,2],[11,caml_string_of_jsbytes("\xc2\xa0s."),0]]],
       caml_string_of_jsbytes("\xe2\x8f\xb0 Total Time: %0.2f\xc2\xa0s.")],
     _az_=
      [0,
       [11,
        caml_string_of_jsbytes("Scenario interpretation state: ("),
        [15,
         [11,
          caml_string_of_jsbytes(" history item"),
          [2,0,[11,caml_string_of_jsbytes("):"),0]]]]],
       caml_string_of_jsbytes
        ("Scenario interpretation state: (%a history item%s):")],
     _aq_=
      [0,
       [11,
        caml_string_of_jsbytes("Error:"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [11,
          caml_string_of_jsbytes("\xe2\x80\x9c"),
          [15,[11,caml_string_of_jsbytes("\xe2\x80\x9d"),0]]]]],
       caml_string_of_jsbytes("Error:@ \xe2\x80\x9c%a\xe2\x80\x9d")],
     _an_=
      [0,
       [11,caml_string_of_jsbytes("|| "),[2,0,0]],
       caml_string_of_jsbytes("|| %s")],
     _am_=
      [0,
       [11,caml_string_of_jsbytes("|| "),[2,0,0]],
       caml_string_of_jsbytes("|| %s")],
     _ah_=
      [0,
       [11,
        caml_string_of_jsbytes("|- "),
        [2,0,[12,58,[17,[0,caml_string_of_jsbytes("@ "),1,0],[15,0]]]]],
       caml_string_of_jsbytes("|- %s:@ %a")],
     _ai_=[0,3],
     _ag_=
      [0,
       [11,caml_string_of_jsbytes("\\_"),[2,0,0]],
       caml_string_of_jsbytes("\\_%s")],
     _aj_=[0,2],
     _ak_=[0,[2,0,0],caml_string_of_jsbytes("%s")],
     _al_=[0,[12,96,[2,0,[12,96,0]]],caml_string_of_jsbytes("`%s`")],
     _ao_=[0,[12,96,[2,0,[12,96,0]]],caml_string_of_jsbytes("`%s`")],
     _ap_=
      [0,
       [11,caml_string_of_jsbytes("<EMPTY>"),0],
       caml_string_of_jsbytes("<EMPTY>")],
     _ar_=[0,4],
     _as_=[0,[4,0,0,0,0],caml_string_of_jsbytes("%d")],
     _at_=[0,[2,0,[12,58,0]],caml_string_of_jsbytes("%s:")],
     _au_=[0,[15,[12,32,[15,0]]],caml_string_of_jsbytes("%a %a")],
     _av_=
      [0,
       [11,caml_string_of_jsbytes(", details:"),0],
       caml_string_of_jsbytes(", details:")],
     _aw_=[0,2],
     _ax_=
      [0,
       [11,caml_string_of_jsbytes(" <none>."),0],
       caml_string_of_jsbytes(" <none>.")],
     _ae_=
      [0,
       [11,caml_string_of_jsbytes("* "),[15,0]],
       caml_string_of_jsbytes("* %a")],
     _ad_=
      [0,
       [11,caml_string_of_jsbytes("Multiple actions:"),0],
       caml_string_of_jsbytes("Multiple actions:")],
     _af_=[0,2],
     _T_=
      [0,
       [11,caml_string_of_jsbytes("Message "),[2,0,[12,35,[2,0,0]]]],
       caml_string_of_jsbytes("Message %s#%s")],
     _V_=
      [0,
       [17,
        [0,caml_string_of_jsbytes("@ "),1,0],
        [11,
         caml_string_of_jsbytes("\xe2\x80\x9c"),
         [2,0,[11,caml_string_of_jsbytes("\xe2\x80\x9d"),0]]]],
       caml_string_of_jsbytes("@ \xe2\x80\x9c%s\xe2\x80\x9d")],
     _U_=
      [0,
       [11,caml_string_of_jsbytes("(valid: "),[2,0,[12,41,0]]],
       caml_string_of_jsbytes("(valid: %s)")],
     _Q_=
      [0,
       [11,caml_string_of_jsbytes("New contract "),[2,0,[15,0]]],
       caml_string_of_jsbytes("New contract %s%a")],
     _R_=
      [0,
       [11,caml_string_of_jsbytes("Compute "),[4,0,0,0,0]],
       caml_string_of_jsbytes("Compute %d")],
     _S_=
      [0,
       [11,caml_string_of_jsbytes("Simulation "),[2,0,0]],
       caml_string_of_jsbytes("Simulation %s")],
     _W_=[0,2],
     _X_=
      [0,
       [11,caml_string_of_jsbytes("Error: "),[2,0,0]],
       caml_string_of_jsbytes("Error: %s")],
     _Y_=
      [0,
       [11,caml_string_of_jsbytes("<html/>"),0],
       caml_string_of_jsbytes("<html/>")],
     _Z_=
      [0,
       [11,caml_string_of_jsbytes("Verify"),0],
       caml_string_of_jsbytes("Verify")],
     ___=
      [0,[11,caml_string_of_jsbytes("Show"),0],caml_string_of_jsbytes("Show")],
     _$_=
      [0,
       [11,caml_string_of_jsbytes("Exception ("),[15,[12,41,0]]],
       caml_string_of_jsbytes("Exception (%a)")],
     _aa_=
      [0,
       [11,caml_string_of_jsbytes("Set delegate "),[2,0,[15,0]]],
       caml_string_of_jsbytes("Set delegate %s%a")],
     _ab_=
      [0,
       [11,
        caml_string_of_jsbytes("DynamicContract Dyn_"),
        [4,0,0,0,[11,caml_string_of_jsbytes(" [...]"),0]]],
       caml_string_of_jsbytes("DynamicContract Dyn_%d [...]")],
     _ac_=
      [0,
       [11,caml_string_of_jsbytes("Add_flag"),0],
       caml_string_of_jsbytes("Add_flag")],
     _O_=
      [0,
       [11,caml_string_of_jsbytes(" (l."),[4,0,0,0,[12,41,0]]],
       caml_string_of_jsbytes(" (l.%d)")],
     _P_=
      [0,
       [11,caml_string_of_jsbytes(" (l.-1)"),0],
       caml_string_of_jsbytes(" (l.-1)")],
     _M_=
      [0,
       [11,caml_string_of_jsbytes("\xe2\x94\x81"),0],
       caml_string_of_jsbytes("\xe2\x94\x81")],
     _N_=
      [0,
       [11,caml_string_of_jsbytes("\xe2\x9c\x96"),0],
       caml_string_of_jsbytes("\xe2\x9c\x96")],
     _L_=
      [0,
       [11,caml_string_of_jsbytes("\xe2\x9c\x94"),0],
       caml_string_of_jsbytes("\xe2\x9c\x94")],
     _ay_=[0,2],
     _aA_=[0,2],
     _x_=
      [0,
       [11,
        caml_string_of_jsbytes("Made "),
        [2,
         0,
         [11,
          caml_string_of_jsbytes(" with "),
          [4,0,0,0,[11,caml_string_of_jsbytes(" (cur: "),[4,0,0,0,[12,41,0]]]]]]],
       caml_string_of_jsbytes("Made %s with %d (cur: %d)")],
     _y_=
      [0,
       [11,caml_string_of_jsbytes("Failed to get the balance for "),[2,0,0]],
       caml_string_of_jsbytes("Failed to get the balance for %s")],
     _C_=
      [0,
       [11,
        caml_string_of_jsbytes("source|sender = address: not implemented"),
        0],
       caml_string_of_jsbytes("source|sender = address: not implemented")],
     _z_=
      [0,
       caml_string_of_jsbytes("--burn-cap"),
       [0,caml_string_of_jsbytes("1"),0]],
     _B_=[0,[12,46,[4,0,[0,2,6],0,0]],caml_string_of_jsbytes(".%06d")],
     _A_=[0,[4,0,0,0,[2,0,0]],caml_string_of_jsbytes("%d%s")],
     _D_=
      [0,
       [11,
        caml_string_of_jsbytes
         ("source and sender but different: Not Implemented"),
        0],
       caml_string_of_jsbytes
        ("source and sender but different: Not Implemented")],
     _K_=
      [0,
       caml_string_of_jsbytes("-G"),
       [0,caml_string_of_jsbytes("1000000000"),0]],
     _J_=
      [0,
       [11,caml_string_of_jsbytes("Contract: "),[3,0,0]],
       caml_string_of_jsbytes("Contract: %S")],
     _G_=
      [0,
       [2,0,[12,32,[2,0,[12,32,[8,[0,0,0],0,0,0]]]]],
       caml_string_of_jsbytes("%s %s %f")],
     _H_=
      [0,
       [12,99,[4,0,[0,2,3],0,[12,45,[2,0,0]]]],
       caml_string_of_jsbytes("c%03d-%s")],
     _I_=
      [0,
       [11,
        caml_string_of_jsbytes("contract-"),
        [2,0,[11,caml_string_of_jsbytes(".tz"),0]]],
       caml_string_of_jsbytes("contract-%s.tz")],
     _F_=
      [0,
       [11,
        caml_string_of_jsbytes("Supposed to originate:"),
        [17,
         [0,caml_string_of_jsbytes("@ "),1,0],
         [12,
          96,
          [2,
           0,
           [11,
            caml_string_of_jsbytes("...`"),
            [17,
             [0,caml_string_of_jsbytes("@ "),1,0],
             [11,
              caml_string_of_jsbytes("with `"),
              [2,0,[11,caml_string_of_jsbytes("...`"),0]]]]]]]]],
       caml_string_of_jsbytes("Supposed to originate:@ `%s...`@ with `%s...`")],
     _E_=[0,1410065408],
     _w_=
      [0,
       [11,caml_string_of_jsbytes("We need to import "),[2,0,0]],
       caml_string_of_jsbytes("We need to import %s")],
     _u_=
      [0,
       caml_string_of_jsbytes("--force"),
       [0,caml_string_of_jsbytes("--minimal-timestamp"),0]],
     _v_=
      [0,
       [11,caml_string_of_jsbytes("not baking here"),0],
       caml_string_of_jsbytes("not baking here")],
     _t_=[0,caml_string_of_jsbytes("--force"),0],
     _p_=[0,caml_string_of_jsbytes("--tls"),0],
     _q_=[0,caml_string_of_jsbytes(" ")],
     _r_=
      [0,
       [11,
        caml_string_of_jsbytes("mkdir -p "),
        [2,
         0,
         [12,
          32,
          [2,
           0,
           [11,
            caml_string_of_jsbytes(" && {  "),
            [2,
             0,
             [11,
              caml_string_of_jsbytes(" > "),
              [2,0,[11,caml_string_of_jsbytes("/out.txt 2> "),[2,0,partial]]]]]]]]]],
       caml_string_of_jsbytes
        ("mkdir -p %s %s && {  %s > %s/out.txt 2> %s/err.txt ; }")],
     _s_=
      [0,
       [11,
        caml_string_of_jsbytes("Command "),
        [15,[11,caml_string_of_jsbytes(" failed"),0]]],
       caml_string_of_jsbytes("Command %a failed")],
     _o_=
      [0,
       [11,caml_string_of_jsbytes("command_"),[4,0,[0,2,4],0,0]],
       caml_string_of_jsbytes("command_%04d")],
     _n_=
      [0,
       [11,caml_string_of_jsbytes("{command:"),[4,0,0,0,[12,125,0]]],
       caml_string_of_jsbytes("{command:%d}")],
     _m_=[0,969639573,1],
     _l_=
      [0,
       [12,
        123,
        [2,0,[12,32,[4,0,0,0,[11,caml_string_of_jsbytes(" actions}"),0]]]]],
       caml_string_of_jsbytes("{%s %d actions}")],
     _j_=[0,0],
     _h_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _i_=[0,[3,0,0],caml_string_of_jsbytes("%S")],
     _g_=[0,0],
     _f_=
      [0,
       [11,
        caml_string_of_jsbytes("read_file: "),
        [15,
         [11,
          caml_string_of_jsbytes(" ("),
          [4,0,0,0,[11,caml_string_of_jsbytes(" bytes)"),0]]]]],
       caml_string_of_jsbytes("read_file: %a (%d bytes)")],
     _e_=
      [0,
       [11,caml_string_of_jsbytes("read_file: "),[3,0,0]],
       caml_string_of_jsbytes("read_file: %S")],
     _c_=[0,3],
     _d_=
      [0,
       [11,
        caml_string_of_jsbytes("[DBG:"),
        [15,[11,caml_string_of_jsbytes("]: "),[2,0,[12,10,[10,0]]]]]],
       caml_string_of_jsbytes("[DBG:%a]: %s\n%!")],
     _b_=
      [0,
       [11,caml_string_of_jsbytes("Date: "),[2,0,0]],
       caml_string_of_jsbytes("Date: %s")],
     _a_=
      [0,
       caml_string_of_jsbytes("results_dot_json"),
       caml_string_of_jsbytes("results_full_dot_txt"),
       caml_string_of_jsbytes("results_dot_txt"),
       caml_string_of_jsbytes("success")];
    function opt_exn(msg,o)
     {var _eB_=[0,caml_call2(Fmt[6],_b_,msg)];
      return caml_call4(Base_Option[41],0,0,_eB_,o)}
    function float_to_string(f)
     {var eta=opt_exn(cst_now_failed,caml_call1(Ptime[9],f)),arg=Ptime[28];
      return caml_call4(arg,0,0,0,eta)}
    function now(param)
     {var _eA_=caml_call1(Unix[99],0);
      return opt_exn(cst_now_failed$0,caml_call1(Ptime[9],_eA_))}
    var
     Date=
      [0,
       Span,
       v,
       epoch,
       min,
       max,
       of_span,
       to_span,
       unsafe_of_d_ps,
       of_float_s,
       to_float_s,
       truncate,
       frac_s,
       equal,
       compare,
       is_earlier,
       is_later,
       add_span,
       sub_span,
       diff,
       of_date_time,
       to_date_time,
       of_date,
       to_date,
       weekday,
       pp_rfc3339_error,
       rfc3339_error_to_msg,
       of_rfc3339,
       to_rfc3339,
       pp_rfc3339,
       pp_human,
       pp,
       dump,
       opt_exn,
       float_to_string,
       now],
     debug=[0,0],
     match=caml_call1(Stdlib_sys[2],cst_smartpy_debug),
     switch$0=0;
    if(match && ! caml_string_notequal(match[1],cst_true))
     {debug[1] = 1;switch$0 = 1}
    function dbg(fmt)
     {if(debug[1])
       var
        _eu_=
         function(s)
          {var _ey_=caml_call1(Date[35],0),_ez_=caml_call3(Date[30],_c_,0,0);
           return caml_call4(Fmt[5],_d_,_ez_,_ey_,s)},
        _ev_=caml_call1(Fmt[8],_eu_);
      else
       var
        _ew_=Stdlib_format[106],
        _ex_=function(param){return 0},
        _ev_=caml_call2(Stdlib_format[132],_ex_,_ew_);
      return caml_call1(_ev_,fmt)}
    var Printer=caml_call1(Smartml_Printer[1],0);
    function pp_to_file(path,f)
     {var o=caml_call1(Caml[59],path),ppf=caml_call1(Stdlib_format[104],o);
      caml_call2(Stdlib_format[40],ppf,80);
      caml_call1(f,ppf);
      caml_call2(Stdlib_format[36],ppf,0);
      caml_call1(Caml[62],o);
      caml_call1(Caml[75],o);
      return 0}
    function read_file(path)
     {var i=caml_call1(Caml[78],path),b=caml_call1(Stdlib_buffer[1],1020);
      caml_call1(dbg(_e_),path);
      function loop(param)
       {for(;;)
         {try
           {var c=caml_call1(Caml[81],i)}
          catch(e$0)
           {e$0 = caml_wrap_exception(e$0);
            var _es_=caml_call1(Stdlib_buffer[7],b),_et_=Fmt[59];
            return caml_call3(dbg(_f_),_et_,e$0,_es_);
            var e=e$0}
          caml_call2(Stdlib_buffer[10],b,c);
          continue}}
      loop(0);
      caml_call1(Caml[92],i);
      return caml_call1(Stdlib_buffer[2],b)}
    var
     System=[0,pp_to_file,read_file],
     stdout=Fmt[1],
     stderr=Fmt[2],
     pf=Fmt[3],
     pr=Fmt[4],
     epr=Fmt[5],
     str=Fmt[6],
     kpf=Fmt[7],
     kstr=Fmt[8],
     str_like=Fmt[9],
     with_buffer=Fmt[10],
     failwith=Fmt[11],
     failwith_notrace=Fmt[12],
     invalid_arg=Fmt[13],
     error=Fmt[14],
     error_msg=Fmt[15],
     flush=Fmt[16],
     nop=Fmt[17],
     any=Fmt[18],
     using=Fmt[19],
     const$0=Fmt[20],
     fmt=Fmt[21],
     cut=Fmt[22],
     sp=Fmt[23],
     sps=Fmt[24],
     comma=Fmt[25],
     semi=Fmt[26],
     append=Fmt[27],
     symbol=Fmt[28],
     concat=Fmt[29],
     iter=Fmt[30],
     iter_bindings=Fmt[31],
     box=Fmt[32],
     hbox=Fmt[33],
     vbox=Fmt[34],
     hvbox=Fmt[35],
     hovbox=Fmt[36],
     parens=Fmt[37],
     brackets=Fmt[38],
     braces=Fmt[39],
     quote=Fmt[40],
     id=Fmt[41],
     field=Fmt[42],
     record=Fmt[43],
     bool=Fmt[44],
     int$0=Fmt[45],
     nativeint=Fmt[46],
     int32=Fmt[47],
     int64=Fmt[48],
     uint=Fmt[49],
     unativeint=Fmt[50],
     uint32=Fmt[51],
     uint64=Fmt[52],
     float$0=Fmt[53],
     float_dfrac=Fmt[54],
     float_dsig=Fmt[55],
     char$0=Fmt[56],
     string=Fmt[57],
     buffer=Fmt[58],
     exn=Fmt[59],
     exn_backtrace=Fmt[60],
     pair=Fmt[61],
     option=Fmt[62],
     result=Fmt[63],
     list=Fmt[64],
     array=Fmt[65],
     seq=Fmt[66],
     hashtbl=Fmt[67],
     queue=Fmt[68],
     stack=Fmt[69],
     Dump=Fmt[70],
     si_size=Fmt[71],
     byte_size=Fmt[72],
     bi_byte_size=Fmt[73],
     uint64_ns_span=Fmt[74],
     on_bytes=Fmt[75],
     on_string=Fmt[76],
     ascii=Fmt[77],
     octets=Fmt[78],
     addresses=Fmt[79],
     hex=Fmt[80],
     words=Fmt[81],
     paragraphs=Fmt[82],
     text=Fmt[83],
     lines=Fmt[84],
     truncated=Fmt[85],
     text_loc=Fmt[86],
     one_of=Fmt[87],
     did_you_mean=Fmt[88],
     if_utf_8=Fmt[89],
     utf_8=Fmt[90],
     set_utf_8=Fmt[91],
     styled=Fmt[92],
     style_renderer=Fmt[93],
     set_style_renderer=Fmt[94],
     of_to_string=Fmt[95],
     to_to_string=Fmt[96],
     strf=Fmt[97],
     kstrf=Fmt[98],
     strf_like=Fmt[99],
     always=Fmt[100],
     unit=Fmt[101],
     prefix=Fmt[102],
     suffix=Fmt[103],
     styled_unit=Fmt[104];
    function vertical_box(indent,ppf,f)
     {var _er_=0;
      return caml_call4
              (vbox,
               indent,
               function(ppf,param){return caml_call1(f,ppf)},
               ppf,
               _er_)}
    function wrapping_box(indent,ppf,f)
     {var _eq_=0;
      return caml_call4
              (box,
               indent,
               function(ppf,param){return caml_call1(f,ppf)},
               ppf,
               _eq_)}
    function wf(ppf,fmt)
     {function _eo_(s)
       {var _ep_=0;
        return caml_call4
                (box,
                 0,
                 function(ppf,param){return caml_call2(text,ppf,s)},
                 ppf,
                 _ep_)}
      return caml_call2(Fmt[8],_eo_,fmt)}
    function markdown_verbatim_list(ppf,l)
     {return vertical_box
              (_g_,
               ppf,
               function(ppf)
                {caml_call2(cut,ppf,0);
                 caml_call2(string,ppf,caml_call2(Base_String[44],45,96));
                 function _en_(l)
                  {caml_call2(cut,ppf,0);return caml_call2(string,ppf,l)}
                 caml_call2(Base_List[8],l,_en_);
                 caml_call2(cut,ppf,0);
                 return caml_call2
                         (string,ppf,caml_call2(Base_String[44],45,96))})}
    function long_string(opt,ppf,s)
     {if(opt)var sth=opt[1],max=sth;else var max=30;
      try
       {var
         _el_=caml_call2(Base[166],max,2),
         s$0=caml_call3(Base_String[1],s,0,_el_)}
      catch(_em_){return caml_call3(pf,ppf,_h_,s)}
      return caml_call3(pf,ppf,_i_,caml_call2(Base[202],s$0,cst))}
    function json(ppf,json)
     {var _ek_=caml_call2(Ezjsonm[14],_j_,json);
      return markdown_verbatim_list(ppf,caml_call2(Base_String[80],_ek_,10))}
    var
     More_fmt=
      [0,
       stdout,
       stderr,
       pf,
       pr,
       epr,
       str,
       kpf,
       kstr,
       str_like,
       with_buffer,
       failwith,
       failwith_notrace,
       invalid_arg,
       error,
       error_msg,
       flush,
       nop,
       any,
       using,
       const$0,
       fmt,
       cut,
       sp,
       sps,
       comma,
       semi,
       append,
       symbol,
       concat,
       iter,
       iter_bindings,
       box,
       hbox,
       vbox,
       hvbox,
       hovbox,
       parens,
       brackets,
       braces,
       quote,
       id,
       field,
       record,
       bool,
       int$0,
       nativeint,
       int32,
       int64,
       uint,
       unativeint,
       uint32,
       uint64,
       float$0,
       float_dfrac,
       float_dsig,
       char$0,
       string,
       buffer,
       exn,
       exn_backtrace,
       pair,
       option,
       result,
       list,
       array,
       seq,
       hashtbl,
       queue,
       stack,
       Dump,
       si_size,
       byte_size,
       bi_byte_size,
       uint64_ns_span,
       on_bytes,
       on_string,
       ascii,
       octets,
       addresses,
       hex,
       words,
       paragraphs,
       text,
       lines,
       truncated,
       text_loc,
       one_of,
       did_you_mean,
       if_utf_8,
       utf_8,
       set_utf_8,
       styled,
       style_renderer,
       set_style_renderer,
       of_to_string,
       to_to_string,
       strf,
       kstrf,
       strf_like,
       always,
       unit,
       prefix,
       suffix,
       styled_unit,
       vertical_box,
       wrapping_box,
       wf,
       markdown_verbatim_list,
       long_string,
       json],
     _k_=[0,0,0,0];
    function Make(Primitives)
     {function make(name,sc){return [0,name,sc]}
      function pp_quick(ppf,t)
       {var _ej_=caml_call1(Base_List[6],t[2][1][2]);
        return caml_call4(Fmt[3],ppf,_l_,t[1],_ej_)}
      function of_json_file(filename,config)
       {var
         _ed_=caml_call4(Yojson[10][38],0,0,0,filename),
         scenarios=caml_call1(Yojson[10][100][20],_ed_);
        function _ee_(scenario)
         {var
           shortname=caml_call2(Yojson[10][100][7],cst_shortname,scenario),
           scenario$0=
            caml_call3(Smartml_Scenario[1],Primitives,config,scenario),
           _ef_=caml_call1(Yojson[10][100][21],shortname),
           _eg_=caml_call2(Base[202],cst$0,_ef_),
           _eh_=caml_call1(Stdlib_filename[13],filename),
           _ei_=caml_call1(Stdlib_filename[12],_eh_);
          return [0,caml_call2(Base[202],_ei_,_eg_),scenario$0]}
        return caml_call2(Base_List[72],scenarios,_ee_)}
      var Smartml_scenario=[0,make,pp_quick,of_json_file];
      function return$0(x){return x}
      function bind(x,f){return caml_call1(f,x)}
      var Io=[0,return$0,bind];
      function node(address,opt,port)
       {if(opt)var sth=opt[1],tls=sth;else var tls=0;
        return [0,address,port,tls]}
      var
       default$0=node(0,0,20000),
       Connection=[0,node,default$0],
       include=Smartml_Tezos_scenario[2],
       return$1=include[1],
       bind$0=include[3],
       R=caml_call1(Base_Monad[1],[0,bind$0,return$1,-349054340]);
      function fail(m)
       {var _ec_=caml_call1(Smartml_Tezos_scenario[1][1],m);
        return caml_call1(Smartml_Tezos_scenario[2][2],_ec_)}
      var attach=Smartml_Tezos_scenario[2][4],symbol=Stdlib_filename[4];
      function state(opt,_ea_,_d$_,connection,_d__,root_dir)
       {if(opt)
         var sth=opt[1],client_command=sth;
        else
         var client_command=cst_tezos_client;
        if(_ea_)var sth$0=_ea_[1],funder=sth$0;else var funder=cst_funder;
        if(_d$_)
         var sth$1=_d$_[1],confirmation=sth$1;
        else
         var confirmation=_m_;
        if(_d__)
         var sth$2=_d__[1],translate_paths=sth$2;
        else
         var translate_paths=function(_eb_){return _eb_};
        return [0,
                client_command,
                connection,
                funder,
                root_dir,
                confirmation,
                0,
                0,
                0,
                0,
                translate_paths]}
      function make$0(id){return [0,id]}
      function pp(ppf,i){return caml_call3(Fmt[3],ppf,_n_,i[1])}
      function output_path(state,param)
       {var id=param[1],_d9_=caml_call2(Fmt[6],_o_,id);
        return caml_call2(symbol,state[4],_d9_)}
      function get_stdout(state,i)
       {var _d8_=caml_call2(symbol,output_path(state,i),cst_out_txt);
        return caml_call1(System[2],_d8_)}
      var Command_result=[0,make$0,pp,output_path,get_stdout];
      function command(opt,state,args)
       {if(opt)var sth=opt[1],succeed=sth;else var succeed=1;
        var id=caml_call1(Command_result[1],state[6]);
        state[6] = caml_call2(Base[165],state[6],1);
        var
         outpath=caml_call2(Command_result[3],state,id),
         base_dir=caml_call2(symbol,state[4],cst_client_dir),
         _dQ_=state[2];
        if(0 === _dQ_[0])
         var
          tls=_dQ_[3],
          port=_dQ_[2],
          address=_dQ_[1],
          _dR_=[0,cst_base_dir,[0,caml_call1(state[10],base_dir),0]],
          _dS_=function(a){return [0,cst_addr,[0,a,0]]},
          _dT_=caml_call3(Base_Option[37],address,0,_dS_),
          _dU_=caml_call2(Base[164],_dT_,_dR_),
          _dV_=[0,cst_port,[0,caml_call1(Base_Int[10],port),0]],
          _dW_=caml_call2(Base[164],_dV_,_dU_),
          _dX_=tls?_p_:0,
          connect_args=caml_call2(Base[164],_dX_,_dW_);
        else
         var
          path=_dQ_[1],
          connect_args=
           [0,cst_mode,[0,cst_mockup,[0,cst_base_dir$0,[0,path,0]]]];
        function _dY_(f)
         {return runtime.caml_sys_file_exists(f)?caml_call1(state[10],f):f}
        var
         _dZ_=caml_call2(Base_List[72],args,_dY_),
         exec=caml_call2(Base[164],connect_args,_dZ_),
         _d0_=caml_call2(Base_List[72],exec,Stdlib_filename[21]),
         command_string=caml_call2(Base_String[48],_q_,[0,state[1],_d0_]),
         outq=caml_call1(Stdlib_filename[21],outpath),
         _d1_=caml_call1(Stdlib_filename[21],base_dir),
         decorated=caml_call6(Fmt[6],_r_,_d1_,outq,command_string,outq,outq),
         ret=caml_sys_system_command(decorated);
        function _d2_(ppf){return caml_call2(Fmt[57],ppf,decorated)}
        var _d3_=caml_call2(symbol,outpath,cst_cmd_txt);
        caml_call2(System[1],_d3_,_d2_);
        var switch$0=0;
        if(succeed && caml_call2(Base[186],ret,0))
         {var _d4_=caml_call4(Fmt[8],fail,_s_,Command_result[2],id);
          switch$0 = 1}
        if(! switch$0)var _d4_=caml_call1(R[5],id);
        var
         _d5_=
          [0,
           [0,cst_stderr,[0,892015045,caml_call2(symbol,outpath,cst_err_txt)]],
           [0,[0,cst_ret,[0,3654863,ret]],0]],
         _d6_=
          [0,
           [0,
            cst_stdout,
            [0,892015045,caml_call2(symbol,outpath,cst_out_txt$0)]],
           _d5_],
         _d7_=
          [0,
           [0,
            cst_command,
            [0,892015045,caml_call2(symbol,outpath,cst_cmd_txt$0)]],
           _d6_];
        return caml_call2
                (attach,
                 [0,[0,79,[0,[0,cst_id,[0,3654863,id[1]]],_d7_]],0],
                 _d4_)}
      function make_account(sk,state,name)
       {if(sk)
         var s=sk[1],preclean=s;
        else
         var account=caml_call1(Primitives[2][8],name),preclean=account[3];
        var
         match=caml_call2(Base_String[75],preclean,cst_unencrypted),
         secret_key=
          match?preclean:caml_call2(Base[202],cst_unencrypted$0,preclean);
        function _dO_(param){return caml_call1(R[5],name)}
        var
         _dP_=
          command
           (0,
            state,
            [0,
             cst_import,
             [0,cst_secret,[0,cst_key,[0,name,[0,secret_key,_t_]]]]]);
        return caml_call2(R[1],_dP_,_dO_)}
      function potential_bake(state)
       {var _dL_=state[5];
        if(typeof _dL_ === "number" && 736759097 <= _dL_)
         {var
           _dM_=function(param){return caml_call1(R[5],0)},
           _dN_=command(0,state,[0,cst_bake,[0,cst_for,[0,state[3],_u_]]]);
          return caml_call2(R[1],_dN_,_dM_)}
        dbg(_v_);
        return caml_call1(R[5],0)}
      function init(state)
       {function _dA_(param)
         {function _dF_(_dK_){return _dK_}
          var
           _dG_=caml_call2(Base_List[116],3,_dF_),
           _dH_=Base_List[9],
           _dI_=caml_call1(R[5],0);
          return caml_call3
                  (_dH_,
                   _dG_,
                   _dI_,
                   function(pm,param)
                    {function _dJ_(param){return potential_bake(state)}
                     return caml_call2(R[1],pm,_dJ_)})}
        if(caml_call2(Base_String[75],state[3],cst_unencrypted$1))
         {var _dB_=state[3];
          caml_call1(dbg(_w_),_dB_);
          var
           _dC_=function(param){state[3] = name;return caml_call1(R[5],0)},
           _dD_=make_account([0,state[3]],state,name),
           _dE_=caml_call2(R[1],_dD_,_dC_)}
        else
         var _dE_=caml_call1(R[5],0);
        return caml_call2(R[1],_dE_,_dA_)}
      function wait_arg(state)
       {var _dz_=state[5];
        if(typeof _dz_ === "number")return cst_none;
        var n=_dz_[2];
        return caml_call1(Base_Int[10],n)}
      function account_name(acc)
       {var _dy_=caml_call2(Base_String[100],acc[1],10);
        return caml_call2(Base[202],cst_Acc,_dy_)}
      function ensure_account(state,acc,balance)
       {var name=account_name(acc);
        if(caml_call2(Stdlib_list[33],name,state[9]))
         return caml_call1(R[5],name);
        state[9] = [0,name,state[9]];
        function _dj_(name)
         {function _dl_(balance_cmd)
           {function _dn_(current_balance)
             {if(caml_call2(Base[185],balance,current_balance))
               {var _dv_=account_name(acc);return caml_call1(R[5],_dv_)}
              function _dw_(param)
               {caml_call3(dbg(_x_),name,balance,current_balance);
                return caml_call1(R[5],name)}
              var
               _dx_=
                transfer
                 (0,
                  0,
                  [0,caml_call2(Base[166],balance,current_balance)],
                  0,
                  0,
                  state,
                  name);
              return caml_call2(R[1],_dx_,_dw_)}
            function _do_(param)
             {var o=param[1];
              function _ds_(param)
               {var
                 _dt_=caml_call1(Base_Float[7],o),
                 _du_=caml_call2(Base_Float[92],_dt_,1000000.);
                return caml_call1(Base_Float[58],_du_)}
              return caml_call1(Base_Option[48],_ds_)}
            var
             _dp_=caml_call2(Command_result[4],state,balance_cmd),
             _dq_=caml_call2(Base_String[78],_dp_,32),
             match=caml_call2(Base_Option[24],_dq_,_do_);
            if(match)
             var o=match[1],_dr_=caml_call1(R[5],o);
            else
             var _dr_=caml_call3(Fmt[8],fail,_y_,acc[1]);
            return caml_call2(R[1],_dr_,_dn_)}
          var
           _dm_=
            command
             (0,state,[0,cst_get,[0,cst_balance,[0,cst_for$0,[0,name,0]]]]);
          return caml_call2(R[1],_dm_,_dl_)}
        var _dk_=make_account([0,acc[3]],state,name);
        return caml_call2(R[1],_dk_,_dj_)}
      function transfer(arg,entry_point,opt,sender,source,state,dst)
       {if(opt)var sth=opt[1],amount=sth;else var amount=0;
        function _c3_(e){return [0,cst_entrypoint,[0,e,0]]}
        var _c4_=caml_call3(Base_Option[37],entry_point,0,_c3_);
        function _c5_(a){return [0,cst_arg,[0,a,0]]}
        var
         _c6_=caml_call3(Base_Option[37],arg,0,_c5_),
         extras=caml_call2(Base[164],_c6_,_c4_);
        function _c7_(src)
         {function _dd_(param){return potential_bake(state)}
          var
           tez=caml_call2(Base[168],amount,1000000),
           decimals=caml_call2(Base[174],amount,1000000),
           _de_=[0,cst_from,[0,src,[0,cst_to,[0,dst,_z_]]]],
           _df_=
            caml_call2(Base[187],decimals,0)
             ?cst$1
             :caml_call2(Fmt[6],_B_,decimals),
           _dg_=[0,cst_transfer,[0,caml_call3(Fmt[6],_A_,tez,_df_),_de_]],
           _dh_=[0,cst_wait,[0,wait_arg(state),_dg_]],
           _di_=
            caml_call2
             (attach,
              [0,
               [0,
                79,
                [0,
                 [0,
                  cst_Transfer,
                  [0,
                   79,
                   [0,
                    [0,cst_amount,[0,3654863,amount]],
                    [0,
                     [0,cst_from$0,[0,748543309,[0,src,0]]],
                     [0,[0,cst_to$0,[0,748543309,[0,dst,0]]],0]]]]],
                 0]],
               0],
              command(0,state,caml_call2(Base[164],_dh_,extras)));
          return caml_call2(R[1],_di_,_dd_)}
        function _c8_(param)
         {if(param)
           {var aoa=param[1];
            if(0 === aoa[0])
             {var acc=aoa[1],_dc_=caml_call2(Base[167],20,amount);
              return ensure_account
                      (state,acc,caml_call2(Base[165],10000000,_dc_))}
            return caml_call2(Fmt[8],fail,_C_)}
          return caml_call1(R[5],state[3])}
        if(sender)
         {var _c9_=sender[1];
          if(source)
           var
            o=source[1],
            _c__=
             runtime.caml_equal(_c9_,o)
              ?caml_call1(R[5],[0,_c9_])
              :caml_call2(Fmt[8],fail,_D_),
            _c$_=_c__;
          else
           var _c$_=caml_call1(R[5],[0,_c9_]);
          var _da_=_c$_}
        else
         if(source)
          var o$0=source[1],_da_=caml_call1(R[5],[0,o$0]);
         else
          var _da_=caml_call1(R[5],0);
        var _db_=caml_call2(R[1],_da_,_c8_);
        return caml_call2(R[1],_db_,_c7_)}
      function fund_originator(state,originator)
       {return state[8]
                ?caml_call1(R[5],0)
                :(state[8] = 1,transfer(0,0,_E_,0,0,state,originator))}
      function originator(state)
       {var _cZ_=state[7];
        if(_cZ_)
         var s=_cZ_[1],originator=caml_call1(R[5],s);
        else
         {state[7] = [0,default_originator];
          var originator=make_account(0,state,default_originator)}
        function _c0_(originator)
         {function _c1_(param){return caml_call1(R[5],originator)}
          var _c2_=fund_originator(state,originator);
          return caml_call2(R[1],_c2_,_c1_)}
        return caml_call2(R[1],originator,_c0_)}
      function originate(state,id,contract,storage)
       {var
         _cH_=caml_call2(Base_String[100],storage,20),
         _cI_=caml_call2(Base_String[100],contract,20);
        caml_call2(dbg(_F_),_cI_,_cH_);
        function _cJ_(param)
         {var
           _cL_=caml_call1(Unix[99],0),
           _cM_=caml_call5(Fmt[8],Stdlib_digest[3],_G_,contract,storage,_cL_),
           _cN_=caml_call1(Stdlib_digest[10],_cM_),
           name=caml_call3(Fmt[6],_H_,id,_cN_),
           _cO_=caml_call2(Fmt[6],_I_,name),
           contract_path=caml_call2(symbol,state[4],_cO_);
          function _cP_(ppf){return caml_call2(Fmt[57],ppf,contract)}
          caml_call2(System[1],contract_path,_cP_);
          function _cQ_(origination)
           {var
             eta=caml_call2(Command_result[4],state,origination),
             arg=Base_String[87],
             out=caml_call2(arg,0,eta),
             lines=caml_call1(Base_String[82],out);
            function _cS_(s)
             {return caml_call2(Base_String[75],s,cst_New_contract)}
            var match=caml_call2(Base_List[15],lines,_cS_);
            if(match)
             {var
               line=match[1],
               _cT_=
                function(addr)
                 {function _cX_(param){return caml_call1(R[5],addr)}
                  var _cY_=potential_bake(state);
                  return caml_call2(R[1],_cY_,_cX_)},
               match$0=caml_call2(Base_String[80],line,32),
               switch$0=0;
              if(match$0 && ! caml_string_notequal(match$0[1],cst_New))
               {var _cV_=match$0[2];
                if(_cV_ && ! caml_string_notequal(_cV_[1],cst_contract))
                 {var _cW_=_cV_[2];
                  if(_cW_)
                   {var addr=_cW_[1];
                    caml_call1(dbg(_J_),addr);
                    var _cU_=caml_call1(R[5],addr);
                    switch$0 = 1}}}
              if(! switch$0)var _cU_=fail(cst_Cannot_find_contract_addre);
              return caml_call2(R[1],_cU_,_cT_)}
            return fail(cst_Cannot_find_contract)}
          var
           _cR_=
            caml_call2
             (attach,
              [0,
               [0,
                79,
                [0,
                 [0,cst_origination,[0,936573133,name]],
                 [0,[0,cst_code,[0,892015045,contract_path]],0]]],
               0],
              command
               (0,
                state,
                [0,
                 cst_wait$0,
                 [0,
                  wait_arg(state),
                  [0,
                   cst_originate,
                   [0,
                    cst_contract$0,
                    [0,
                     name,
                     [0,
                      cst_transferring,
                      [0,
                       balance,
                       [0,
                        cst_from$1,
                        [0,
                         cst_bootstrap1,
                         [0,
                          cst_running,
                          [0,
                           contract_path,
                           [0,cst_init,[0,storage,[0,cst_burn_cap,[0,burn_cap,0]]]]]]]]]]]]]]]));
          return caml_call2(R[1],_cR_,_cQ_)}
        var _cK_=originator(state);
        return caml_call2(R[1],_cK_,_cJ_)}
      function get_contract_storage(state,address)
       {function _cE_(cmd_id)
         {var _cG_=caml_call2(Command_result[4],state,cmd_id);
          return caml_call1(R[5],_cG_)}
        var
         _cF_=
          command
           (0,
            state,
            [0,
             cst_get$0,
             [0,cst_contract$1,[0,cst_storage,[0,cst_for$1,[0,address,0]]]]]);
        return caml_call2(R[1],_cF_,_cE_)}
      function run_script(state,contract,parameter,storage)
       {function _cB_(cmd_id)
         {var _cD_=caml_call2(Command_result[4],state,cmd_id);
          return caml_call1(R[5],_cD_)}
        var
         _cC_=
          command
           (0,
            state,
            [0,
             cst_run,
             [0,
              cst_script,
              [0,
               contract,
               [0,
                cst_on,
                [0,
                 cst_storage$0,
                 [0,storage,[0,cst_and,[0,cst_input,[0,parameter,_K_]]]]]]]]]);
        return caml_call2(R[1],_cC_,_cB_)}
      var
       This_client=
        [0,
         Io,
         Connection,
         R,
         fail,
         attach,
         symbol,
         state,
         Command_result,
         command,
         default_originator,
         make_account,
         potential_bake,
         init,
         wait_arg,
         account_name,
         ensure_account,
         transfer,
         fund_originator,
         originator,
         originate,
         get_contract_storage,
         run_script],
       Scenario_interpreter=
        caml_call1
         (caml_call1
           (Smartml_Tezos_scenario[4],
            [0,
             This_client[1],
             This_client[20],
             This_client[17],
             This_client[21],
             This_client[22]]),
          Primitives);
      function pp_state(opt,ppf,s)
       {if(opt)var sth=opt[1],full=sth;else var full=0;
        var seq=caml_call1(Stdlib_queue[18],s[4]);
        if(full)
         var filtered_history=seq;
        else
         var
          _b9_=
           function(item)
            {function _cA_(param)
              {switch(param[0]){case 5:case 7:return 0;default:return 1}}
             return caml_call2(Base_List[13],item[1],_cA_)},
          filtered_history=caml_call2(Stdlib_seq[4],_b9_,seq);
        function _b8_(ppf)
         {var
           q_lgth=caml_call1(Stdlib_queue[14],s[4]),
           _b__=caml_call2(Base[187],q_lgth,1)?cst$4:cst_s;
          caml_call5(More_fmt[107],ppf,_az_,More_fmt[45],q_lgth,_b__);
          function _b$_(item)
           {caml_call2(More_fmt[22],ppf,0);
            function status(ppf,param)
             {return 94326179 === param
                      ?caml_call2(More_fmt[3],ppf,_L_)
                      :870530776 <= param
                        ?caml_call2(More_fmt[3],ppf,_M_)
                        :caml_call2(More_fmt[3],ppf,_N_)}
            function action(ppf)
             {function pp_line(ppf,param)
               {if(param)
                 {var match=param[1],x=match[2];
                  return caml_call3(More_fmt[3],ppf,_O_,x)}
                return caml_call2(More_fmt[3],ppf,_P_)}
              return function(param)
               {switch(param[0])
                 {case 0:
                   var
                    line_no=param[3],
                    id=param[1],
                    _ct_=caml_call1(Printer[27],id);
                   return caml_call5(More_fmt[3],ppf,_Q_,_ct_,pp_line,line_no);
                  case 1:
                   var line_no$0=param[3],id$0=param[1];
                   caml_call3(More_fmt[3],ppf,_R_,id$0);
                   return pp_line(ppf,line_no$0);
                  case 2:
                   var
                    line_no$1=param[2],
                    id$1=param[1],
                    _cu_=caml_call1(Printer[27],id$1);
                   caml_call3(More_fmt[3],ppf,_S_,_cu_);
                   return pp_line(ppf,line_no$1);
                  case 3:
                   var
                    message=param[15],
                    title=param[6],
                    line_no$2=param[5],
                    valid=param[2],
                    id$2=param[1],
                    _cv_=
                     function(ppf)
                      {var _cy_=caml_call1(Printer[27],id$2);
                       caml_call4(More_fmt[3],ppf,_T_,_cy_,message);
                       pp_line(ppf,line_no$2);
                       if(! caml_call1(Base_String[4],title))
                        caml_call3(More_fmt[3],ppf,_V_,title);
                       var _cz_=caml_call3(Printer[14],0,0,valid);
                       return caml_call3(More_fmt[3],ppf,_U_,_cz_)};
                   return caml_call3(More_fmt[106],_W_,ppf,_cv_);
                  case 4:
                   var message$0=param[1];
                   return caml_call3(More_fmt[3],ppf,_X_,message$0);
                  case 5:return caml_call2(More_fmt[3],ppf,_Y_);
                  case 6:
                   var line_no$3=param[2];
                   caml_call2(More_fmt[3],ppf,_Z_);
                   return pp_line(ppf,line_no$3);
                  case 7:
                   var line_no$4=param[5];
                   caml_call2(More_fmt[3],ppf,___);
                   return pp_line(ppf,line_no$4);
                  case 8:
                   var l=param[1],_cw_=caml_call2(Printer[26],0,l);
                   return caml_call4(More_fmt[3],ppf,_$_,More_fmt[83],_cw_);
                  case 9:
                   var
                    line_no$5=param[2],
                    id$3=param[1],
                    _cx_=caml_call1(Printer[27],id$3);
                   return caml_call5
                           (More_fmt[3],ppf,_aa_,_cx_,pp_line,line_no$5);
                  case 10:
                   var match=param[1],dynamic_id=match[1];
                   return caml_call3(More_fmt[3],ppf,_ab_,dynamic_id);
                  default:
                   var line_no$6=param[2];
                   caml_call2(More_fmt[3],ppf,_ac_);
                   return pp_line(ppf,line_no$6)}}}
            function actions(ppf,multi)
             {if(multi)
               {if(multi[2])
                 {var
                   _cr_=
                    function(ppf)
                     {caml_call2(More_fmt[3],ppf,_ad_);
                      caml_call2(More_fmt[22],ppf,0);
                      function _cs_(a)
                       {return caml_call4(More_fmt[3],ppf,_ae_,action,a)}
                      return caml_call2(Base_List[8],multi,_cs_)};
                  return caml_call3(More_fmt[105],_af_,ppf,_cr_)}
                var one=multi[1];
                return caml_call1(action(ppf),one)}
              return 0}
            function pp_attachment(ppf,att)
             {function pp_obj(header,ppf,obj)
               {function _co_(ppf)
                 {caml_call3(More_fmt[3],ppf,_ag_,header);
                  function _cp_(param)
                   {var v=param[2],k=param[1];
                    caml_call2(More_fmt[22],ppf,0);
                    function _cq_(ppf)
                     {return caml_call5(More_fmt[3],ppf,_ah_,k,pp_attachment,v)}
                    return caml_call3(More_fmt[106],_ai_,ppf,_cq_)}
                  return caml_call2(Base_List[8],obj,_cp_)}
                return caml_call3(More_fmt[105],_aj_,ppf,_co_)}
              var _cf_=att[1];
              if(106380200 <= _cf_)
               {if(892015045 <= _cf_)
                 {if(936573133 <= _cf_)
                   {var t=att[2];return caml_call3(More_fmt[107],ppf,_ak_,t)}
                  var s=att[2];
                  return caml_call3(More_fmt[3],ppf,_al_,s)}
                if(748543309 <= _cf_)
                 {var _cg_=att[2];
                  if(_cg_)
                   {var _ch_=_cg_[1];
                    if(_cg_[2])
                     {var
                       lines=_cg_[2],
                       _ci_=
                        function(ppf)
                         {caml_call3(More_fmt[3],ppf,_am_,_ch_);
                          function _cn_(l)
                           {caml_call2(More_fmt[22],ppf,0);
                            return caml_call3(More_fmt[3],ppf,_an_,l)}
                          return caml_call2(Base_List[8],lines,_cn_)};
                      return caml_call3(More_fmt[105],0,ppf,_ci_)}
                    return caml_call3(More_fmt[3],ppf,_ao_,_ch_)}
                  return caml_call2(More_fmt[3],ppf,_ap_)}
                var
                 err=att[2],
                 _cj_=
                  function(ppf)
                   {return caml_call4
                            (More_fmt[3],ppf,_aq_,Smartml_Tezos_scenario[1][2],err)};
                return caml_call3(More_fmt[106],_ar_,ppf,_cj_)}
              if(3654863 <= _cf_)
               {var i=att[2];return caml_call3(More_fmt[3],ppf,_as_,i)}
              var _ck_=att[2];
              if(_ck_)
               {var _cl_=_ck_[1],_cm_=_cl_[2];
                if(typeof _cm_ !== "number" && 79 === _cm_[1] && ! _ck_[2])
                 {var obj=_cm_[2],onek=_cl_[1];
                  return pp_obj(caml_call2(More_fmt[6],_at_,onek),ppf,obj)}}
              return pp_obj(cst$2,ppf,_ck_)}
            function _ca_(ppf)
             {function _cb_(ppf)
               {caml_call6
                 (More_fmt[107],ppf,_au_,status,item[2],actions,item[1]);
                var _ce_=item[2],switch$0=0;
                if(94326179 !== _ce_ && 870530776 !== _ce_)switch$0 = 1;
                if(! switch$0 && ! full)
                 return caml_call2(More_fmt[57],ppf,cst$3);
                return caml_call2(More_fmt[3],ppf,_av_)}
              caml_call3(More_fmt[106],_aw_,ppf,_cb_);
              var _cc_=item[2],switch$0=0;
              if(94326179 !== _cc_ && 870530776 !== _cc_)switch$0 = 1;
              if(! switch$0 && ! full)return 0;
              if(0 === item[4])return caml_call2(More_fmt[3],ppf,_ax_);
              function _cd_(att)
               {caml_call2(More_fmt[22],ppf,0);return pp_attachment(ppf,att)}
              return caml_call2(Base_List[8],item[4],_cd_)}
            return caml_call3(More_fmt[105],_ay_,ppf,_ca_)}
          return caml_call2(Stdlib_seq[8],_b$_,filtered_history)}
        return caml_call3(More_fmt[105],_aA_,ppf,_b8_)}
      function pp_all_results(full,ppf,results)
       {function _b3_(param)
         {var dur=param[4],res=param[3],state_opt=param[2],scen=param[1];
          function _b4_(ppf)
           {function _b5_(ppf,param)
             {return 0 === param[0]
                      ?caml_call2(More_fmt[3],ppf,_aB_)
                      :caml_call2(More_fmt[3],ppf,_aC_)}
            caml_call5(More_fmt[107],ppf,_aD_,scen[1],_b5_,res);
            caml_call2(More_fmt[22],ppf,0);
            caml_call3(More_fmt[3],ppf,_aE_,dur);
            caml_call2(More_fmt[22],ppf,0);
            function _b6_(param)
             {var message=param[1];
              return caml_call3(More_fmt[3],ppf,_aF_,message)}
            caml_call2(Base_Result[27],res,_b6_);
            function _b7_(state){return pp_state(full,ppf,state)}
            caml_call2(Base_Option[8],state_opt,_b7_);
            return caml_call2(More_fmt[22],ppf,0)}
          return caml_call3(More_fmt[105],0,ppf,_b4_)}
        return caml_call2(Base_List[8],results,_b3_)}
      function run(opt,scenarios,client,param)
       {if(opt)
         var sth=opt[1],advancement=sth;
        else
         var advancement=caml_call1(Fmt[5],_a8_);
        caml_call4(Fmt[8],caml_sys_system_command,_aG_,client[4],client[4]);
        var global_start=caml_call1(Unix[99],0);
        function _a9_(scen)
         {var sc=scen[2],name=scen[1];
          caml_call1(dbg(_aH_),name);
          caml_call3(Fmt[8],advancement,_aI_,name);
          var start_time=caml_call1(Unix[99],0);
          function stop(param)
           {var _b2_=caml_call1(Unix[99],0);
            return caml_call2(Base[197],_b2_,start_time)}
          var
           client_dir=caml_call2(This_client[6],client[4],name),
           client$0=
            [0,
             client[1],
             client[2],
             client[3],
             client_dir,
             client[5],
             client[6],
             client[7],
             client[8],
             client[9],
             client[10]];
          function write_result_file(client,r)
           {function pp(item)
             {if(item[1])
               var
                _bW_=
                 function(param)
                  {switch(param[0])
                    {case 0:
                      var line_no=param[3];return [0,cst_New_contract$0,line_no];
                     case 1:
                      var line_no$0=param[3];return [0,cst_Compute,line_no$0];
                     case 2:
                      var line_no$1=param[2];return [0,cst_Simulation,line_no$1];
                     case 3:
                      var line_no$2=param[5];return [0,cst_Message,line_no$2];
                     case 4:return _aJ_;
                     case 5:var line_no$3=param[3];return [0,cst_Html,line_no$3];
                     case 6:
                      var line_no$4=param[2];return [0,cst_Verify,line_no$4];
                     case 7:var line_no$5=param[5];return [0,cst_Show,line_no$5];
                     case 8:return _aK_;
                     case 9:
                      var line_no$6=param[2];
                      return [0,cst_Set_delegate,line_no$6];
                     case 10:
                      var line_no$7=param[3];
                      return [0,cst_DynamicContract,line_no$7];
                     default:
                      var line_no$8=param[2];return [0,cst_Add_flag,line_no$8]}},
                _bX_=caml_call2(Base_List[72],item[1],_bW_),
                _bY_=Base_List[72],
                _bZ_=
                 caml_call2
                  (_bY_,
                   _bX_,
                   function(param)
                    {var line_no=param[2],name=param[1];
                     if(line_no)
                      var
                       match=line_no[1],
                       s=match[2],
                       _b1_=caml_call2(Base_Printf[2],_aL_,s);
                     else
                      var _b1_=cst$5;
                     return caml_call3(Base_Printf[2],_aM_,_b1_,name)}),
                action=caml_call2(Base_String[48],_aN_,_bZ_);
              else
               var action=cst_no_action;
              var
               _b0_=item[2],
               result=94326179 === _b0_?cst_OK:870530776 <= _b0_?cst$6:cst_KO;
              return [0,action,result]}
            function _bM_(x)
             {var _bT_=x[4],_bU_=0;
              function _bV_(prev,item){return [0,item,prev]}
              return caml_call3(Stdlib_queue[16],_bV_,_bU_,_bT_)}
            var
             history=caml_call3(Base_Option[37],client,0,_bM_),
             result_summary=history?caml_call2(Base_List[38],history,pp):_aS_;
            caml_call3(Fmt[8],caml_sys_system_command,_aO_,client_dir);
            function _bN_(ppf)
             {function _bP_(param)
               {var result=param[2],action=param[1];
                return caml_call3(Base_Printf[2],_aP_,result,action)}
              var
               _bQ_=caml_call2(Base_List[72],result_summary,_bP_),
               _bR_=caml_call2(Base_String[48],_aQ_,_bQ_),
               _bS_=0 === r[0]?cst_OK$0:cst_ERROR;
              return caml_call5(Fmt[3],ppf,_aR_,scen[1],_bS_,_bR_)}
            var _bO_=caml_call2(Base[202],client_dir,cst_result_tsv);
            return caml_call2(System[1],_bO_,_bN_)}
          var _bJ_=caml_call1(This_client[13],client$0)[1];
          if(0 === _bJ_[0])
           {caml_call2(Fmt[8],advancement,_aT_);
            var
             state=
              caml_call3
               (Scenario_interpreter[1][1],[0,advancement],client$0,sc[2]);
            try
             {var val=caml_call2(Scenario_interpreter[2],sc,state)}
            catch(e$0)
             {e$0 = caml_wrap_exception(e$0);
              var _bK_=caml_call2(Printer[25],0,e$0);
              caml_call4(Fmt[5],_aU_,Fmt[59],e$0,_bK_);
              var
               _bL_=caml_call2(Printer[25],0,e$0),
               message=caml_call2(Fmt[6],_aV_,_bL_),
               e=[1,[0,message]];
              write_result_file([0,state],e);
              return [0,scen,[0,state],e,stop(0)]}
            if(0 === val[0])
             {write_result_file([0,state],_aW_);
              return [0,scen,[0,state],_aX_,stop(0)]}
            var err=val[1];
            caml_call3(Fmt[5],_aY_,Smartml_Tezos_scenario[1][2],err);
            write_result_file([0,state],[1,err]);
            return [0,scen,[0,state],[1,err],stop(0)]}
          var err$0=_bJ_[1];
          caml_call4
           (Fmt[8],advancement,_aZ_,Smartml_Tezos_scenario[1][2],err$0);
          write_result_file(0,[1,err$0]);
          return [0,scen,0,[1,err$0],stop(0)]}
        var results=caml_call2(Base_List[72],scenarios,_a9_);
        caml_call2(Fmt[8],advancement,_a0_);
        var
         global_end=caml_call1(Unix[99],0),
         global_time=caml_call2(Base[197],global_end,global_start);
        function pp_header(ppf,param)
         {function _bD_(ppf)
           {var _bE_=caml_call2(Base_String[44],80,35);
            caml_call2(More_fmt[57],ppf,_bE_);
            caml_call2(More_fmt[22],ppf,0);
            var
             nb=caml_call1(Base_List[6],results),
             _bF_=caml_call2(Base[187],nb,1)?cst$7:cst_s$0;
            caml_call4(More_fmt[3],ppf,_a1_,nb,_bF_);
            caml_call3(More_fmt[3],ppf,_a2_,global_time);
            var _bG_=caml_call1(Date[34],global_start);
            caml_call3(More_fmt[3],ppf,_a3_,_bG_);
            var _bH_=caml_call1(Date[34],global_end);
            caml_call3(More_fmt[3],ppf,_a4_,_bH_);
            var _bI_=caml_call2(Base_String[44],80,35);
            return caml_call2(More_fmt[57],ppf,_bI_)}
          caml_call3(More_fmt[105],0,ppf,_bD_);
          return caml_call2(More_fmt[22],ppf,0)}
        var
         results_dot_txt=
          caml_call2(Stdlib_filename[4],client[4],cst_results_txt);
        function _a__(ppf)
         {pp_header(ppf,0);return pp_all_results(0,ppf,results)}
        caml_call2(System[1],results_dot_txt,_a__);
        var
         results_full_dot_txt=
          caml_call2(Stdlib_filename[4],client[4],cst_results_full_txt);
        function _a$_(ppf)
         {pp_header(ppf,0);return pp_all_results(_a5_,ppf,results)}
        caml_call2(System[1],results_full_dot_txt,_a$_);
        var
         results_dot_json=
          caml_call2(Stdlib_filename[4],client[4],cst_results_json);
        function one_result(param)
         {var res=param[3],state=param[2],scen=param[1],_bw_=0;
          function _bx_(x){return caml_call1(Stdlib_queue[14],x[4])}
          var
           _by_=caml_call3(Base_Option[37],state,0,_bx_),
           _bz_=[0,[0,cst_items,caml_call1(Ezjsonm[20],_by_)],_bw_],
           _bA_=0 === res[0]?cst_OK$1:cst_ERROR$0,
           _bB_=[0,[0,cst_result,caml_call1(Ezjsonm[18],_bA_)],_bz_],
           _bC_=[0,[0,cst_name,caml_call1(Ezjsonm[18],scen[1])],_bB_];
          return caml_call1(Ezjsonm[26],_bC_)}
        var
         _ba_=
          [0,
           [0,
            cst_tezos_scenario_result_v0,
            caml_call2(Ezjsonm[24],one_result,results)],
           0],
         results_save=caml_call1(Ezjsonm[26],_ba_);
        function _bb_(ppf)
         {var _bv_=caml_call2(Ezjsonm[14],_a6_,results_save);
          return caml_call2(Fmt[57],ppf,_bv_)}
        caml_call2(System[1],results_dot_json,_bb_);
        caml_call2(dbg(_a7_),results_dot_txt,results_full_dot_txt);
        if(! _k_[1])
         {var
           _bc_=caml_call1(CamlinternalOO[16],_a_),
           _bd_=caml_call2(CamlinternalOO[3],_bc_,cst$8),
           _be_=caml_call2(CamlinternalOO[8],_bc_,shared),
           _bf_=_be_[1],
           _bg_=_be_[2],
           _bh_=_be_[3],
           _bi_=_be_[4],
           _bj_=function(self_1){var env=self_1[1 + _bd_];return env[1]},
           _bk_=function(self_1){var env=self_1[1 + _bd_];return env[2]},
           _bl_=function(self_1){var env=self_1[1 + _bd_];return env[3]},
           _bm_=
            [0,
             _bf_,
             function(self_1)
              {var env=self_1[1 + _bd_];
               function _bq_(param)
                {var _br_=param[2];
                 if(0 === param[3][0])
                  {if(_br_)
                    {var
                      match=_br_[1],
                      history=match[4],
                      _bs_=1,
                      _bt_=
                       function(prev,h)
                        {if(prev)
                          {if(94326179 <= h[2])return 1;var _bu_=0}
                         else
                          var _bu_=prev;
                         return _bu_};
                     return caml_call3(Stdlib_queue[16],_bt_,_bs_,history)}
                   return 1}
                 return 0}
               return caml_call2(Base_List[13],env[4],_bq_)},
             _bh_,
             _bl_,
             _bg_,
             _bk_,
             _bi_,
             _bj_];
          caml_call2(CamlinternalOO[11],_bc_,_bm_);
          var
           _bn_=
            function(_bo_)
             {var _bp_=caml_call2(CamlinternalOO[24],0,_bc_);
              _bp_[1 + _bd_] = _bo_;
              return _bp_};
          caml_call1(CamlinternalOO[17],_bc_);
          _k_[1] = _bn_}
        return caml_call1
                (_k_[1],
                 [0,
                  results_dot_json,
                  results_full_dot_txt,
                  results_dot_txt,
                  results])}
      return [0,
              Smartml_scenario,
              This_client,
              Scenario_interpreter,
              pp_state,
              pp_all_results,
              run]}
    var
     Smartml_unix_Run_tezos_scenari=
      [0,Date,debug,dbg,Printer,System,More_fmt,Make];
    caml_register_global
     (258,Smartml_unix_Run_tezos_scenari,"Smartml_unix__Run_tezos_scenario");
    return}
  (function(){return this}()));


//# 1 "../lib_ml/.smartml_ml.objs/smartml_ml.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_register_global=runtime.caml_register_global,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_Primitive_check_signature_=
      caml_string_of_jsbytes
       ("Primitive.check_signature not supported in native."),
     cst_Primitive_hash_key_not_sup=
      caml_string_of_jsbytes("Primitive.hash_key not supported in native."),
     cst_Primitive_sign_not_support=
      caml_string_of_jsbytes("Primitive.sign not supported in native."),
     cst_edskFake=caml_string_of_jsbytes("edskFake"),
     fake_pk_prefix=caml_string_of_jsbytes("edpkFake"),
     fake_pkh_prefix=caml_string_of_jsbytes("tz0Fake"),
     prefix=caml_string_of_jsbytes("keccak"),
     Digestif=global_data.Digestif,
     Stdlib=global_data.Stdlib,
     Stdlib_digest=global_data.Stdlib__digest,
     Assert_failure=global_data.Assert_failure,
     Smartml_ml=[0];
    caml_register_global(19,Smartml_ml,"Smartml_ml");
    var
     Blake2b_Hash_32=caml_call1(Digestif[15],[0,32]),
     _l_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),34,23],
     _k_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),31,25],
     _j_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),29,29],
     _i_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),27,31],
     _h_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),25,22],
     _g_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),23,20],
     _f_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),20,31],
     _e_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),18,22],
     _d_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),16,20],
     _c_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),13,31],
     _b_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),11,22],
     _a_=[0,caml_string_of_jsbytes("smartML/lib_ml/primitives.ml"),9,20];
    function negateG1(b){throw [0,Assert_failure,_a_]}
    function addG1(b1,b2){throw [0,Assert_failure,_b_]}
    function multiplyG1ByFr(b1,b2){throw [0,Assert_failure,_c_]}
    function negateG2(b){throw [0,Assert_failure,_d_]}
    function addG2(b1,b2){throw [0,Assert_failure,_e_]}
    function multiplyG2ByFr(b1,b2){throw [0,Assert_failure,_f_]}
    function negateFr(b){throw [0,Assert_failure,_g_]}
    function addFr(b1,b2){throw [0,Assert_failure,_h_]}
    function multiplyFrByFr(b1,b2){throw [0,Assert_failure,_i_]}
    function multiplyFrByInt(b,param){throw [0,Assert_failure,_j_]}
    function convertFrToInt(param){throw [0,Assert_failure,_k_]}
    function pairingCheck(param){throw [0,Assert_failure,_l_]}
    function account_of_seed(seed)
     {var
       _s_=caml_call2(Stdlib[28],cst_edskFake,seed),
       _t_=caml_call2(Stdlib[28],fake_pk_prefix,seed);
      return [0,caml_call2(Stdlib[28],fake_pkh_prefix,seed),_t_,_s_]}
    function sign(param,message)
     {return caml_call1(Stdlib[2],cst_Primitive_sign_not_support)}
    function hash_key(s)
     {return caml_call1(Stdlib[2],cst_Primitive_hash_key_not_sup)}
    function check_signature(param,_r_,bytes)
     {return caml_call1(Stdlib[2],cst_Primitive_check_signature_)}
    function blake2b(s)
     {var _q_=caml_call3(Blake2b_Hash_32[12],0,0,s);
      return caml_call1(Blake2b_Hash_32[39],_q_)}
    function sha256(s)
     {var _p_=caml_call3(Digestif[4][12],0,0,s);
      return caml_call1(Digestif[4][39],_p_)}
    function sha512(s)
     {var _o_=caml_call3(Digestif[6][12],0,0,s);
      return caml_call1(Digestif[6][39],_o_)}
    function keccak(s)
     {var _n_=caml_call1(Stdlib_digest[3],s);
      return caml_call2(Stdlib[28],prefix,_n_)}
    function sha3(s)
     {var _m_=caml_call3(Digestif[8][12],0,0,s);
      return caml_call1(Digestif[8][39],_m_)}
    var
     Smartml_ml_Primitives=
      [0,
       [0,
        negateG1,
        addG1,
        multiplyG1ByFr,
        negateG2,
        addG2,
        multiplyG2ByFr,
        negateFr,
        addFr,
        multiplyFrByInt,
        multiplyFrByFr,
        convertFrToInt,
        pairingCheck],
       [0,
        blake2b,
        sha256,
        sha512,
        keccak,
        sha3,
        sign,
        check_signature,
        account_of_seed,
        hash_key]];
    caml_register_global(24,Smartml_ml_Primitives,"Smartml_ml__Primitives");
    return}
  (function(){return this}()));


//# 1 ".smartpyc_lib.objs/smartpyc_lib.cma.js"
(function(joo_global_object)
   {"use strict";
    var
     runtime=joo_global_object.jsoo_runtime,
     caml_check_bound=runtime.caml_check_bound,
     caml_equal=runtime.caml_equal,
     caml_get_public_method=runtime.caml_get_public_method,
     caml_int_of_string=runtime.caml_int_of_string,
     caml_register_global=runtime.caml_register_global,
     caml_string_notequal=runtime.caml_string_notequal,
     caml_string_of_jsbytes=runtime.caml_string_of_jsbytes,
     caml_sys_argv=runtime.caml_sys_argv,
     caml_wrap_exception=runtime.caml_wrap_exception;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    function caml_call2(f,a0,a1)
     {return f.length == 2?f(a0,a1):runtime.caml_call_gen(f,[a0,a1])}
    function caml_call3(f,a0,a1,a2)
     {return f.length == 3?f(a0,a1,a2):runtime.caml_call_gen(f,[a0,a1,a2])}
    function caml_call4(f,a0,a1,a2,a3)
     {return f.length == 4
              ?f(a0,a1,a2,a3)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3])}
    function caml_call5(f,a0,a1,a2,a3,a4)
     {return f.length == 5
              ?f(a0,a1,a2,a3,a4)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4])}
    function caml_call6(f,a0,a1,a2,a3,a4,a5)
     {return f.length == 6
              ?f(a0,a1,a2,a3,a4,a5)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5])}
    function caml_call7(f,a0,a1,a2,a3,a4,a5,a6)
     {return f.length == 7
              ?f(a0,a1,a2,a3,a4,a5,a6)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6])}
    function caml_call10(f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
     {return f.length == 10
              ?f(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)
              :runtime.caml_call_gen(f,[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9])}
    var
     global_data=runtime.caml_get_global_data(),
     cst_storedValue$14=caml_string_of_jsbytes("storedValue"),
     cst_value=caml_string_of_jsbytes("value"),
     cst_divisor=caml_string_of_jsbytes("divisor"),
     cst_value$0=caml_string_of_jsbytes("value"),
     cst_storedValue=caml_string_of_jsbytes("storedValue"),
     cst_replace=caml_string_of_jsbytes("replace"),
     cst_2=caml_string_of_jsbytes("2"),
     cst_storedValue$0=caml_string_of_jsbytes("storedValue"),
     cst_storedValue$1=caml_string_of_jsbytes("storedValue"),
     cst_double=caml_string_of_jsbytes("double"),
     cst_divisor$0=caml_string_of_jsbytes("divisor"),
     cst_storedValue$2=caml_string_of_jsbytes("storedValue"),
     cst_storedValue$3=caml_string_of_jsbytes("storedValue"),
     cst_42=caml_string_of_jsbytes("42"),
     cst_6=caml_string_of_jsbytes("6"),
     cst_divisor$1=caml_string_of_jsbytes("divisor"),
     cst_params_divisor_too_small=
      caml_string_of_jsbytes("params.divisor too small"),
     cst_5=caml_string_of_jsbytes("5"),
     cst_divisor$2=caml_string_of_jsbytes("divisor"),
     cst_divide=caml_string_of_jsbytes("divide"),
     cst_x=caml_string_of_jsbytes("x"),
     cst_storedValue$4=caml_string_of_jsbytes("storedValue"),
     cst_storedValue$5=caml_string_of_jsbytes("storedValue"),
     cst_l=caml_string_of_jsbytes("l"),
     cst_x$0=caml_string_of_jsbytes("x"),
     cst_storedValue$6=caml_string_of_jsbytes("storedValue"),
     cst_2$0=caml_string_of_jsbytes("2"),
     cst_storedValue$7=caml_string_of_jsbytes("storedValue"),
     cst_15=caml_string_of_jsbytes("15"),
     cst_storedValue$8=caml_string_of_jsbytes("storedValue"),
     cst_abc=caml_string_of_jsbytes("abc"),
     cst_42$0=caml_string_of_jsbytes("42"),
     cst_foo=caml_string_of_jsbytes("foo"),
     cst_2$1=caml_string_of_jsbytes("2"),
     cst_14=caml_string_of_jsbytes("14"),
     cst_foo$0=caml_string_of_jsbytes("foo"),
     cst_1=caml_string_of_jsbytes("1"),
     cst_42$1=caml_string_of_jsbytes("42"),
     cst_foo$1=caml_string_of_jsbytes("foo"),
     cst_2$2=caml_string_of_jsbytes("2"),
     cst_n=caml_string_of_jsbytes("n"),
     cst_n$0=caml_string_of_jsbytes("n"),
     cst_C=caml_string_of_jsbytes("C"),
     cst_x$1=caml_string_of_jsbytes("x"),
     cst_storedValue$9=caml_string_of_jsbytes("storedValue"),
     cst_x$2=caml_string_of_jsbytes("x"),
     cst_B=caml_string_of_jsbytes("B"),
     cst_x$3=caml_string_of_jsbytes("x"),
     cst_1$0=caml_string_of_jsbytes("1"),
     cst_x$4=caml_string_of_jsbytes("x"),
     cst_A=caml_string_of_jsbytes("A"),
     cst_bar=caml_string_of_jsbytes("bar"),
     cst_42$2=caml_string_of_jsbytes("42"),
     cst_6$0=caml_string_of_jsbytes("6"),
     cst_divisor$3=caml_string_of_jsbytes("divisor"),
     cst_params_divisor_too_small$0=
      caml_string_of_jsbytes("params.divisor too small"),
     cst_5$0=caml_string_of_jsbytes("5"),
     cst_divisor$4=caml_string_of_jsbytes("divisor"),
     cst_divisor$5=caml_string_of_jsbytes("divisor"),
     cst_misc=caml_string_of_jsbytes("misc"),
     cst_42$3=caml_string_of_jsbytes("42"),
     cst_storedValue$10=caml_string_of_jsbytes("storedValue"),
     cst_storedValue$11=caml_string_of_jsbytes("storedValue"),
     cst_another=caml_string_of_jsbytes("another"),
     cst_storedValue$12=caml_string_of_jsbytes("storedValue"),
     cst_storedValue$13=caml_string_of_jsbytes("storedValue"),
     cst_another_with_parameter=
      caml_string_of_jsbytes("another_with_parameter"),
     cst_1$1=caml_string_of_jsbytes("1"),
     cst_123456=caml_string_of_jsbytes("123456"),
     cst_test=caml_string_of_jsbytes("test"),
     cst_two_contracts=caml_string_of_jsbytes("two_contracts"),
     cst_StoreValue=caml_string_of_jsbytes("StoreValue"),
     cst_15$0=caml_string_of_jsbytes("15"),
     cst_9=caml_string_of_jsbytes("9"),
     cst_storedValue$15=caml_string_of_jsbytes("storedValue"),
     cst_divide$0=caml_string_of_jsbytes("divide"),
     cst$0=caml_string_of_jsbytes(""),
     cst$1=caml_string_of_jsbytes(""),
     cst_7=caml_string_of_jsbytes("7"),
     cst_divisor$6=caml_string_of_jsbytes("divisor"),
     cst_50=caml_string_of_jsbytes("50"),
     cst_storedValue$16=caml_string_of_jsbytes("storedValue"),
     cst_divide$1=caml_string_of_jsbytes("divide"),
     cst$2=caml_string_of_jsbytes(""),
     cst$3=caml_string_of_jsbytes(""),
     cst_2$3=caml_string_of_jsbytes("2"),
     cst_divisor$7=caml_string_of_jsbytes("divisor"),
     cst_double$0=caml_string_of_jsbytes("double"),
     cst$4=caml_string_of_jsbytes(""),
     cst$5=caml_string_of_jsbytes(""),
     cst_replace$0=caml_string_of_jsbytes("replace"),
     cst$6=caml_string_of_jsbytes(""),
     cst$7=caml_string_of_jsbytes(""),
     cst_25=caml_string_of_jsbytes("25"),
     cst_value$1=caml_string_of_jsbytes("value"),
     cst_12=caml_string_of_jsbytes("12"),
     cst_storedValue$17=caml_string_of_jsbytes("storedValue"),
     cst_replace$1=caml_string_of_jsbytes("replace"),
     cst$8=caml_string_of_jsbytes(""),
     cst$9=caml_string_of_jsbytes(""),
     cst_value$2=caml_string_of_jsbytes("value"),
     cst_replace$2=caml_string_of_jsbytes("replace"),
     cst$10=caml_string_of_jsbytes(""),
     cst$11=caml_string_of_jsbytes(""),
     cst_13=caml_string_of_jsbytes("13"),
     cst_value$3=caml_string_of_jsbytes("value"),
     cst_replace$3=caml_string_of_jsbytes("replace"),
     cst$12=caml_string_of_jsbytes(""),
     cst$13=caml_string_of_jsbytes(""),
     cst_12$0=caml_string_of_jsbytes("12"),
     cst_value$4=caml_string_of_jsbytes("value"),
     cst_8=caml_string_of_jsbytes("8"),
     cst_storedValue$18=caml_string_of_jsbytes("storedValue"),
     cst_replace$4=caml_string_of_jsbytes("replace"),
     cst$14=caml_string_of_jsbytes(""),
     cst$15=caml_string_of_jsbytes(""),
     cst_2$4=caml_string_of_jsbytes("2"),
     cst_11=caml_string_of_jsbytes("11"),
     cst_6$1=caml_string_of_jsbytes("-6"),
     cst_12$1=caml_string_of_jsbytes("12"),
     cst_11$0=caml_string_of_jsbytes("11"),
     cst_value$5=caml_string_of_jsbytes("value"),
     cst_42$4=caml_string_of_jsbytes("42"),
     cst_storedValue$19=caml_string_of_jsbytes("storedValue"),
     cst_42$5=caml_string_of_jsbytes("42"),
     cst_test$0=caml_string_of_jsbytes("test"),
     cst_my_test=caml_string_of_jsbytes("my_test"),
     cst_StoreValue$0=caml_string_of_jsbytes("StoreValue"),
     cst_output=caml_string_of_jsbytes("--output"),
     cst$18=caml_string_of_jsbytes("--"),
     cst_accept_empty=caml_string_of_jsbytes("--accept_empty"),
     cst_help=caml_string_of_jsbytes("--help"),
     cst_html=caml_string_of_jsbytes("--html"),
     cst_install=caml_string_of_jsbytes("--install"),
     cst_kind=caml_string_of_jsbytes("--kind"),
     cst_misc$0=caml_string_of_jsbytes("--misc"),
     cst_mockup=caml_string_of_jsbytes("--mockup"),
     cst_purge=caml_string_of_jsbytes("--purge"),
     cst_sandbox=caml_string_of_jsbytes("--sandbox"),
     cst_h=caml_string_of_jsbytes("-h"),
     cst_m=caml_string_of_jsbytes("-m"),
     cst_o=caml_string_of_jsbytes("-o"),
     cst_p=caml_string_of_jsbytes("-p"),
     cst_s=caml_string_of_jsbytes("-s"),
     cst$17=caml_string_of_jsbytes("--"),
     cst_Unknown_misc_command=caml_string_of_jsbytes("Unknown misc command"),
     out_dir=caml_string_of_jsbytes("syntax_test"),
     cst_Bad_parameters_for_unary_c=
      caml_string_of_jsbytes("Bad parameters for unary command"),
     cst_run_smartml=caml_string_of_jsbytes("run_smartml"),
     cst_base58_decode=caml_string_of_jsbytes("base58.decode"),
     cst_base58_encode=caml_string_of_jsbytes("base58.encode"),
     cst_base58_kt1_address=caml_string_of_jsbytes("base58.kt1_address"),
     cst_base58_list_kt1_addresses=
      caml_string_of_jsbytes("base58.list_kt1_addresses"),
     cst_warning=caml_string_of_jsbytes("[warning] "),
     cst_error=caml_string_of_jsbytes("[error] "),
     cst_scenario_json=caml_string_of_jsbytes("scenario.json"),
     cst_json=caml_string_of_jsbytes(".json"),
     cst_ml=caml_string_of_jsbytes(".ml"),
     cst_py=caml_string_of_jsbytes(".py"),
     cst_ts=caml_string_of_jsbytes(".ts"),
     cst_script_init_ts=caml_string_of_jsbytes("script_init.ts"),
     cst_script_pure_py=caml_string_of_jsbytes("script_pure.py"),
     cst_script_init_py=caml_string_of_jsbytes("script_init.py"),
     cst_script_init_ml=caml_string_of_jsbytes("script_init.ml"),
     cst_ml_todo=caml_string_of_jsbytes("ml todo"),
     cst_scenario_json$0=caml_string_of_jsbytes("scenario.json"),
     client_command=caml_string_of_jsbytes("_build/tezos-bin/tezos-client"),
     cst_sandbox$0=caml_string_of_jsbytes("/sandbox"),
     cst_SUCCEEDED=caml_string_of_jsbytes("SUCCEEDED"),
     cst_FAILED$0=caml_string_of_jsbytes("FAILED"),
     cst_mockup$0=caml_string_of_jsbytes("/mockup"),
     cst_SUCCEEDED$0=caml_string_of_jsbytes("SUCCEEDED"),
     cst_FAILED=caml_string_of_jsbytes("FAILED"),
     cst_outDir=caml_string_of_jsbytes("--outDir"),
     cst_file=caml_string_of_jsbytes("--file"),
     cst_scenario=caml_string_of_jsbytes("scenario"),
     cst_PATH$1=caml_string_of_jsbytes("PATH"),
     cst$21=caml_string_of_jsbytes(""),
     cst_PYTHONPATH$1=caml_string_of_jsbytes("PYTHONPATH"),
     cst$22=caml_string_of_jsbytes(":"),
     cst_PYTHONPATH$2=caml_string_of_jsbytes("PYTHONPATH"),
     cst_PATH$2=caml_string_of_jsbytes("PATH"),
     cst_smart_ts_cli_js=caml_string_of_jsbytes("smart-ts-cli.js"),
     cst_node=caml_string_of_jsbytes("node"),
     cst_write_tests=caml_string_of_jsbytes("write_tests"),
     cst_PATH=caml_string_of_jsbytes("PATH"),
     cst$19=caml_string_of_jsbytes(""),
     cst_PYTHONPATH=caml_string_of_jsbytes("PYTHONPATH"),
     cst$20=caml_string_of_jsbytes(":"),
     cst_PYTHONPATH$0=caml_string_of_jsbytes("PYTHONPATH"),
     cst_PATH$0=caml_string_of_jsbytes("PATH"),
     cst_smartpyc_py=caml_string_of_jsbytes("smartpyc.py"),
     cst_python3=caml_string_of_jsbytes("python3"),
     cst_rf=caml_string_of_jsbytes("-rf"),
     cst_rm=caml_string_of_jsbytes("rm"),
     cst_p$0=caml_string_of_jsbytes("-p"),
     cst_mkdir=caml_string_of_jsbytes("mkdir"),
     cst_Usage_smartpyc_options_sou=
      caml_string_of_jsbytes
       ("\nUsage: smartpyc <options> <source file>\n\nThe <source file> is a python file containing a class that inherits\nfrom sp.Contract.\n\nOPTIONS\n\n -o | --output\n    Specify a different output file (default: contract.smlse).\n\n -s | --sandbox <port>\n    Run scenarios running on a sandbox on localhost at <port>.\n\n -h | --help\n    Print help.\n\nEXAMPLE\n\nsmartpyc --kind test calculator.py --output calculator.smlse\n"),
     cst$16=caml_string_of_jsbytes(""),
     script_extensions=
      [0,
       caml_string_of_jsbytes(".py"),
       [0,
        caml_string_of_jsbytes(".json"),
        [0,caml_string_of_jsbytes(".ts"),[0,caml_string_of_jsbytes(".ml"),0]]]],
     Smartml_Expr=global_data.Smartml__Expr,
     Smartml_Basics=global_data.Smartml__Basics,
     Smartml_Type=global_data.Smartml__Type,
     Smartml_Command=global_data.Smartml__Command,
     Big_int=global_data.Big_int,
     Smartml_Unknown=global_data.Smartml__Unknown,
     Smartml_Literal=global_data.Smartml__Literal,
     Smartml_Scenario=global_data.Smartml__Scenario,
     Stdlib_printf=global_data.Stdlib__printf,
     Stdlib=global_data.Stdlib,
     Stdlib_filename=global_data.Stdlib__filename,
     Utils_List=global_data.Utils__List,
     Utils_String=global_data.Utils__String,
     Smartml_Config=global_data.Smartml__Config,
     Stdlib_array=global_data.Stdlib__array,
     Utils_Option=global_data.Utils__Option,
     Utils_Bs58=global_data.Utils__Bs58,
     Smartml_Smartml_scenario=global_data.Smartml__Smartml_scenario,
     Fmt=global_data.Fmt,
     Utils_Io=global_data.Utils__Io,
     Assert_failure=global_data.Assert_failure,
     Smartml_Printer=global_data.Smartml__Printer,
     Yojson=global_data.Yojson,
     Stdlib_sys=global_data.Stdlib__sys,
     Smartml_unix_Run_tezos_scenari=
      global_data.Smartml_unix__Run_tezos_scenario,
     Smartpyc_lib=[0];
    caml_register_global(483,Smartpyc_lib,"Smartpyc_lib");
    var
     _a_=[0,[0,cst_value,caml_call1(Smartml_Type[55],0)],0],
     gen_t_replace_params=caml_call2(Smartml_Type[70],0,_a_),
     _b_=[0,[0,cst_divisor,caml_call1(Smartml_Type[55],0)],0],
     gen_t_divide_params=caml_call2(Smartml_Type[70],0,_b_),
     _c_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),17],0]),
     _d_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),17],0],
        _c_,
        cst_value$0),
     _e_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),17],0]),
     _f_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),17],0],
        _e_,
        cst_storedValue),
     replace=
      [0,
       cst_replace,
       [0,-306175688,gen_t_replace_params],
       1,
       [0,0],
       [0,0],
       [0,[0,caml_string_of_jsbytes(""),16],0],
       caml_call3
        (Smartml_Command[11],[0,[0,caml_string_of_jsbytes(""),17],0],_f_,_d_),
       0],
     _g_=
      [0,
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),21],0],0),
       0],
     _h_=caml_call1(Big_int[34],cst_2),
     _i_=caml_call1(Smartml_Unknown[5],0),
     _j_=caml_call2(Smartml_Literal[17],_i_,_h_),
     _k_=
      caml_call2(Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),20],0],_j_),
     _l_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),20],0]),
     _m_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),20],0],
        _l_,
        cst_storedValue$0),
     _n_=
      caml_call3
       (Smartml_Expr[32],[0,[0,caml_string_of_jsbytes(""),20],0],_m_,_k_),
     _o_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),20],0]),
     _p_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),20],0],
        _o_,
        cst_storedValue$1),
     _q_=
      [0,
       caml_call3
        (Smartml_Command[11],[0,[0,caml_string_of_jsbytes(""),20],0],_p_,_n_),
       _g_],
     double$0=
      [0,
       cst_double,
       120414939,
       1,
       [0,0],
       [0,0],
       [0,[0,caml_string_of_jsbytes(""),19],0],
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),20],0],_q_),
       0],
     _r_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),26],0]),
     _s_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),26],0],
        _r_,
        cst_divisor$0),
     _t_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),26],0]),
     _u_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),26],0],
        _t_,
        cst_storedValue$2),
     _v_=
      caml_call3
       (Smartml_Expr[36],[0,[0,caml_string_of_jsbytes(""),26],0],_u_,_s_),
     _w_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),26],0]),
     _x_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),26],0],
        _w_,
        cst_storedValue$3),
     _y_=
      [0,
       caml_call3
        (Smartml_Command[11],[0,[0,caml_string_of_jsbytes(""),26],0],_x_,_v_),
       0],
     _z_=caml_call1(Big_int[34],cst_42),
     _A_=caml_call1(Smartml_Unknown[5],0),
     _B_=caml_call2(Smartml_Literal[17],_A_,_z_),
     _C_=
      [0,
       caml_call2
        (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),25],0],_B_)],
     _D_=caml_call1(Big_int[34],cst_6),
     _E_=caml_call1(Smartml_Unknown[5],0),
     _F_=caml_call2(Smartml_Literal[17],_E_,_D_),
     _G_=
      caml_call2(Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),25],0],_F_),
     _H_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),25],0]),
     _I_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),25],0],
        _H_,
        cst_divisor$1),
     _J_=
      caml_call3
       (Smartml_Expr[42],[0,[0,caml_string_of_jsbytes(""),25],0],_I_,_G_),
     _K_=
      [0,
       caml_call3
        (Smartml_Command[6],[0,[0,caml_string_of_jsbytes(""),25],0],_J_,_C_),
       _y_],
     _L_=
      [0,
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),25],0],_K_),
       0],
     _M_=caml_call1(Smartml_Literal[20],cst_params_divisor_too_small),
     _N_=
      [0,
       caml_call2
        (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),24],0],_M_)],
     _O_=caml_call1(Big_int[34],cst_5),
     _P_=caml_call1(Smartml_Unknown[5],0),
     _Q_=caml_call2(Smartml_Literal[17],_P_,_O_),
     _R_=
      caml_call2(Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),24],0],_Q_),
     _S_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),24],0]),
     _T_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),24],0],
        _S_,
        cst_divisor$2),
     _U_=
      caml_call3
       (Smartml_Expr[42],[0,[0,caml_string_of_jsbytes(""),24],0],_T_,_R_),
     _V_=
      [0,
       caml_call3
        (Smartml_Command[6],[0,[0,caml_string_of_jsbytes(""),24],0],_U_,_N_),
       _L_],
     divide=
      [0,
       cst_divide,
       [0,-306175688,gen_t_divide_params],
       1,
       [0,0],
       [0,0],
       [0,[0,caml_string_of_jsbytes(""),23],0],
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),24],0],_V_),
       0],
     _W_=
      caml_call2
       (Smartml_Expr[62],[0,[0,caml_string_of_jsbytes(""),45],0],cst_x),
     _X_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),45],0]),
     _Y_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),45],0],
        _X_,
        cst_storedValue$4),
     _Z_=
      caml_call3
       (Smartml_Expr[31],[0,[0,caml_string_of_jsbytes(""),45],0],_Y_,_W_),
     ___=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),45],0]),
     _$_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),45],0],
        ___,
        cst_storedValue$5),
     _aa_=
      caml_call3
       (Smartml_Command[11],[0,[0,caml_string_of_jsbytes(""),45],0],_$_,_Z_),
     _ab_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),46],0]),
     _ac_=
      caml_call3
       (Smartml_Expr[55],[0,[0,caml_string_of_jsbytes(""),46],0],_ab_,cst_l),
     _ad_=
      [0,
       caml_call4
        (Smartml_Command[7],
         [0,[0,caml_string_of_jsbytes(""),44],0],
         cst_x$0,
         _ac_,
         _aa_),
       0],
     _ae_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),42],0]),
     _af_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),42],0],
        _ae_,
        cst_storedValue$6),
     _ag_=caml_call1(Big_int[34],cst_2$0),
     _ah_=caml_call1(Smartml_Unknown[5],0),
     _ai_=caml_call2(Smartml_Literal[17],_ah_,_ag_),
     _aj_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),42],0],_ai_),
     _ak_=
      caml_call3
       (Smartml_Expr[32],[0,[0,caml_string_of_jsbytes(""),42],0],_aj_,_af_),
     _al_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),42],0]),
     _am_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),42],0],
        _al_,
        cst_storedValue$7),
     _an_=
      caml_call3
       (Smartml_Command[11],[0,[0,caml_string_of_jsbytes(""),42],0],_am_,_ak_),
     _ao_=caml_call1(Big_int[34],cst_15),
     _ap_=caml_call1(Smartml_Unknown[5],0),
     _aq_=caml_call2(Smartml_Literal[17],_ap_,_ao_),
     _ar_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),41],0],_aq_),
     _as_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),41],0]),
     _at_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),41],0],
        _as_,
        cst_storedValue$8),
     _au_=
      caml_call3
       (Smartml_Expr[40],[0,[0,caml_string_of_jsbytes(""),41],0],_at_,_ar_),
     _av_=
      [0,
       caml_call3
        (Smartml_Command[8],[0,[0,caml_string_of_jsbytes(""),41],0],_au_,_an_),
       _ad_],
     _aw_=
      [0,
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),41],0],_av_),
       0],
     _ax_=
      caml_call2
       (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),39],0],0),
     _ay_=caml_call1(Smartml_Literal[20],cst_abc),
     _az_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),40],0],_ay_),
     _aA_=
      caml_call2
       (Smartml_Command[4],[0,[0,caml_string_of_jsbytes(""),40],0],_az_),
     _aB_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),40],0]),
     _aC_=
      caml_call2
       (Smartml_Command[4],[0,[0,caml_string_of_jsbytes(""),40],0],_aB_),
     _aD_=caml_call1(Big_int[34],cst_42$0),
     _aE_=caml_call1(Smartml_Unknown[5],0),
     _aF_=caml_call2(Smartml_Literal[17],_aE_,_aD_),
     _aG_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),40],0],_aF_),
     _aH_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),40],0]),
     _aI_=
      caml_call3
       (Smartml_Expr[55],[0,[0,caml_string_of_jsbytes(""),40],0],_aH_,cst_foo),
     _aJ_=caml_call1(Big_int[34],cst_2$1),
     _aK_=caml_call1(Smartml_Unknown[5],0),
     _aL_=caml_call2(Smartml_Literal[17],_aK_,_aJ_),
     _aM_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),40],0],_aL_),
     _aN_=
      caml_call3
       (Smartml_Expr[31],[0,[0,caml_string_of_jsbytes(""),40],0],_aM_,_aI_),
     _aO_=
      caml_call3
       (Smartml_Expr[40],[0,[0,caml_string_of_jsbytes(""),40],0],_aN_,_aG_),
     _aP_=
      caml_call4
       (Smartml_Command[1],
        [0,[0,caml_string_of_jsbytes(""),40],0],
        _aO_,
        _aC_,
        _aA_),
     _aQ_=caml_call1(Big_int[34],cst_14),
     _aR_=caml_call1(Smartml_Unknown[5],0),
     _aS_=caml_call2(Smartml_Literal[17],_aR_,_aQ_),
     _aT_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),39],0],_aS_),
     _aU_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),39],0]),
     _aV_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),39],0],
        _aU_,
        cst_foo$0),
     _aW_=caml_call1(Big_int[34],cst_1),
     _aX_=caml_call1(Smartml_Unknown[5],0),
     _aY_=caml_call2(Smartml_Literal[17],_aX_,_aW_),
     _aZ_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),39],0],_aY_),
     _a0_=
      caml_call3
       (Smartml_Expr[31],[0,[0,caml_string_of_jsbytes(""),39],0],_aZ_,_aV_),
     _a1_=
      caml_call3
       (Smartml_Expr[40],[0,[0,caml_string_of_jsbytes(""),39],0],_a0_,_aT_),
     _a2_=
      [0,
       caml_call4
        (Smartml_Command[1],
         [0,[0,caml_string_of_jsbytes(""),39],0],
         _a1_,
         _aP_,
         _ax_),
       _aw_],
     _a3_=
      [0,
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),39],0],_a2_),
       0],
     _a4_=
      caml_call2
       (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),38],0],0),
     _a5_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),38],0]),
     _a6_=
      caml_call2
       (Smartml_Command[4],[0,[0,caml_string_of_jsbytes(""),38],0],_a5_),
     _a7_=caml_call1(Big_int[34],cst_42$1),
     _a8_=caml_call1(Smartml_Unknown[5],0),
     _a9_=caml_call2(Smartml_Literal[17],_a8_,_a7_),
     _a__=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),38],0],_a9_),
     _a$_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),38],0]),
     _ba_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),38],0],
        _a$_,
        cst_foo$1),
     _bb_=caml_call1(Big_int[34],cst_2$2),
     _bc_=caml_call1(Smartml_Unknown[5],0),
     _bd_=caml_call2(Smartml_Literal[17],_bc_,_bb_),
     _be_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),38],0],_bd_),
     _bf_=
      caml_call3
       (Smartml_Expr[31],[0,[0,caml_string_of_jsbytes(""),38],0],_be_,_ba_),
     _bg_=
      caml_call3
       (Smartml_Expr[40],[0,[0,caml_string_of_jsbytes(""),38],0],_bf_,_a__),
     _bh_=
      [0,
       caml_call4
        (Smartml_Command[1],
         [0,[0,caml_string_of_jsbytes(""),38],0],
         _bg_,
         _a6_,
         _a4_),
       _a3_],
     _bi_=
      [0,
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),38],0],_bh_),
       0],
     _bj_=
      caml_call2
       (Smartml_Expr[62],[0,[0,caml_string_of_jsbytes(""),36],0],cst_n),
     _bk_=
      [0,
       [0,
        cst_C,
        cst_n$0,
        caml_call2
         (Smartml_Command[5],[0,[0,caml_string_of_jsbytes(""),36],0],_bj_)],
       0],
     _bl_=
      caml_call2
       (Smartml_Expr[62],[0,[0,caml_string_of_jsbytes(""),35],0],cst_x$1),
     _bm_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),35],0]),
     _bn_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),35],0],
        _bm_,
        cst_storedValue$9),
     _bo_=
      [0,
       [0,
        cst_B,
        cst_x$2,
        caml_call3
         (Smartml_Command[11],
          [0,[0,caml_string_of_jsbytes(""),35],0],
          _bn_,
          _bl_)],
       _bk_],
     _bp_=
      caml_call2
       (Smartml_Expr[62],[0,[0,caml_string_of_jsbytes(""),34],0],cst_x$3),
     _bq_=caml_call1(Big_int[34],cst_1$0),
     _br_=caml_call1(Smartml_Unknown[5],0),
     _bs_=caml_call2(Smartml_Literal[17],_br_,_bq_),
     _bt_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),34],0],_bs_),
     _bu_=
      caml_call3
       (Smartml_Expr[31],[0,[0,caml_string_of_jsbytes(""),34],0],_bt_,_bp_),
     _bv_=
      [0,
       [0,
        cst_A,
        cst_x$4,
        caml_call2
         (Smartml_Command[4],[0,[0,caml_string_of_jsbytes(""),34],0],_bu_)],
       _bo_],
     _bw_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),33],0]),
     _bx_=
      caml_call3
       (Smartml_Expr[55],[0,[0,caml_string_of_jsbytes(""),33],0],_bw_,cst_bar),
     _by_=
      [0,
       caml_call3
        (Smartml_Command[3],[0,[0,caml_string_of_jsbytes(""),32],0],_bx_,_bv_),
       _bi_],
     _bz_=
      [0,
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),32],0],_by_),
       0],
     _bA_=caml_call1(Big_int[34],cst_42$2),
     _bB_=caml_call1(Smartml_Unknown[5],0),
     _bC_=caml_call2(Smartml_Literal[17],_bB_,_bA_),
     _bD_=
      [0,
       caml_call2
        (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),31],0],_bC_)],
     _bE_=caml_call1(Big_int[34],cst_6$0),
     _bF_=caml_call1(Smartml_Unknown[5],0),
     _bG_=caml_call2(Smartml_Literal[17],_bF_,_bE_),
     _bH_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),31],0],_bG_),
     _bI_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),31],0]),
     _bJ_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),31],0],
        _bI_,
        cst_divisor$3),
     _bK_=
      caml_call3
       (Smartml_Expr[42],[0,[0,caml_string_of_jsbytes(""),31],0],_bJ_,_bH_),
     _bL_=
      [0,
       caml_call3
        (Smartml_Command[6],[0,[0,caml_string_of_jsbytes(""),31],0],_bK_,_bD_),
       _bz_],
     _bM_=
      [0,
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),31],0],_bL_),
       0],
     _bN_=caml_call1(Smartml_Literal[20],cst_params_divisor_too_small$0),
     _bO_=
      [0,
       caml_call2
        (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),30],0],_bN_)],
     _bP_=caml_call1(Big_int[34],cst_5$0),
     _bQ_=caml_call1(Smartml_Unknown[5],0),
     _bR_=caml_call2(Smartml_Literal[17],_bQ_,_bP_),
     _bS_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),30],0],_bR_),
     _bT_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),30],0]),
     _bU_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),30],0],
        _bT_,
        cst_divisor$4),
     _bV_=
      caml_call3
       (Smartml_Expr[42],[0,[0,caml_string_of_jsbytes(""),30],0],_bU_,_bS_),
     _bW_=
      [0,
       caml_call3
        (Smartml_Command[6],[0,[0,caml_string_of_jsbytes(""),30],0],_bV_,_bO_),
       _bM_],
     _bX_=
      [0,
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),30],0],_bW_),
       0],
     _bY_=caml_call1(Smartml_Type[54],0),
     _bZ_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),29],0]),
     _b0_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),29],0],
        _bZ_,
        cst_divisor$5),
     _b1_=
      [0,
       caml_call3
        (Smartml_Command[22],
         [0,[0,caml_string_of_jsbytes(""),29],0],
         _b0_,
         _bY_),
       _bX_],
     misc=
      [0,
       cst_misc,
       919067353,
       1,
       [0,0],
       [0,0],
       [0,[0,caml_string_of_jsbytes(""),28],0],
       caml_call2
        (Smartml_Command[14],[0,[0,caml_string_of_jsbytes(""),29],0],_b1_),
       0],
     _b2_=caml_call1(Big_int[34],cst_42$3),
     _b3_=caml_call1(Smartml_Unknown[5],0),
     _b4_=caml_call2(Smartml_Literal[17],_b3_,_b2_),
     _b5_=
      caml_call2
       (Smartml_Expr[67],[0,[0,caml_string_of_jsbytes(""),52],0],_b4_),
     _b6_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),52],0]),
     _b7_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),52],0],
        _b6_,
        cst_storedValue$10),
     _b8_=
      caml_call3
       (Smartml_Expr[32],[0,[0,caml_string_of_jsbytes(""),52],0],_b7_,_b5_),
     _b9_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),52],0]),
     _b__=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),52],0],
        _b9_,
        cst_storedValue$11),
     _b$_=
      caml_call3
       (Smartml_Command[11],[0,[0,caml_string_of_jsbytes(""),52],0],_b__,_b8_),
     another=caml_call7(Smartml_Basics[235],cst_another,0,[0,0],0,0,0,_b$_),
     _ca_=caml_call1(Smartml_Expr[61],[0,[0,caml_string_of_jsbytes(""),59],0]),
     _cb_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),59],0]),
     _cc_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),59],0],
        _cb_,
        cst_storedValue$12),
     _cd_=
      caml_call3
       (Smartml_Expr[32],[0,[0,caml_string_of_jsbytes(""),59],0],_cc_,_ca_),
     _ce_=caml_call1(Smartml_Expr[53],[0,[0,caml_string_of_jsbytes(""),59],0]),
     _cf_=
      caml_call3
       (Smartml_Expr[55],
        [0,[0,caml_string_of_jsbytes(""),59],0],
        _ce_,
        cst_storedValue$13),
     _cg_=
      caml_call3
       (Smartml_Command[11],[0,[0,caml_string_of_jsbytes(""),59],0],_cf_,_cd_),
     _ch_=[0,caml_call1(Smartml_Type[55],0)],
     another_with_parameter=
      caml_call7
       (Smartml_Basics[235],cst_another_with_parameter,_ch_,[0,0],0,0,0,_cg_),
     _ci_=[0,[0,caml_string_of_jsbytes(""),62],0],
     _cj_=[0,[0,caml_string_of_jsbytes(""),75],0],
     _cn_=[0,[0,caml_string_of_jsbytes(""),75],0],
     _cp_=[0,[0,1]],
     _cr_=[0,[0,caml_string_of_jsbytes(""),74],0],
     _cv_=[0,[0,caml_string_of_jsbytes(""),74],0],
     _cx_=[0,[0,0]],
     _cC_=[0,[0,caml_string_of_jsbytes(""),78],0],
     _cD_=[0,[0,caml_string_of_jsbytes(""),100],0],
     _cH_=[0,[0,caml_string_of_jsbytes(""),100],0],
     _cJ_=[0,[0,0]],
     _cK_=[0,[0,caml_string_of_jsbytes(""),100],0],
     _cM_=[0,[0,caml_string_of_jsbytes(""),100],0],
     _cO_=[0,[0,caml_string_of_jsbytes(""),100],0],
     _cQ_=[0,[0,caml_string_of_jsbytes(""),99],0],
     _cT_=[0,[0,caml_string_of_jsbytes(""),99],0],
     _cV_=[0,[0,caml_string_of_jsbytes(""),99],0],
     _cZ_=[0,[0,caml_string_of_jsbytes(""),99],0],
     _c1_=[0,[0,caml_string_of_jsbytes(""),99],0],
     _c4_=[0,[0,caml_string_of_jsbytes(""),99],0],
     _c5_=[0,[0,0]],
     _c7_=[0,[0,caml_string_of_jsbytes(""),98],0],
     _c$_=[0,[0,caml_string_of_jsbytes(""),98],0],
     _db_=[0,[0,0]],
     _dc_=[0,[0,caml_string_of_jsbytes(""),98],0],
     _de_=[0,[0,caml_string_of_jsbytes(""),98],0],
     _dg_=[0,[0,caml_string_of_jsbytes(""),98],0],
     _di_=[0,[0,caml_string_of_jsbytes(""),97],0],
     _dl_=[0,[0,caml_string_of_jsbytes(""),97],0],
     _dn_=[0,[0,caml_string_of_jsbytes(""),97],0],
     _dr_=[0,[0,caml_string_of_jsbytes(""),97],0],
     _dt_=[0,[0,caml_string_of_jsbytes(""),97],0],
     _dw_=[0,[0,caml_string_of_jsbytes(""),97],0],
     _dx_=[0,[0,0]],
     _dz_=[0,[0,caml_string_of_jsbytes(""),96],0],
     _dC_=[0,[0,caml_string_of_jsbytes(""),96],0],
     _dE_=[0,[0,caml_string_of_jsbytes(""),96],0],
     _dF_=[0,[0,caml_string_of_jsbytes(""),96],0],
     _dI_=[0,[0,caml_string_of_jsbytes(""),96],0],
     _dJ_=[0,[0,0]],
     _dL_=[0,[0,caml_string_of_jsbytes(""),95],0],
     _dO_=[0,[0,caml_string_of_jsbytes(""),95],0],
     _dQ_=[0,[0,caml_string_of_jsbytes(""),95],0],
     _dU_=[0,[0,caml_string_of_jsbytes(""),95],0],
     _dW_=[0,[0,caml_string_of_jsbytes(""),95],0],
     _dZ_=[0,[0,caml_string_of_jsbytes(""),95],0],
     _d0_=[0,[0,0]],
     _d2_=[0,[0,caml_string_of_jsbytes(""),94],0],
     _d6_=[0,[0,caml_string_of_jsbytes(""),94],0],
     _d8_=[0,[0,0]],
     _d9_=[0,[0,caml_string_of_jsbytes(""),94],0],
     _d$_=[0,[0,caml_string_of_jsbytes(""),94],0],
     _eb_=[0,[0,caml_string_of_jsbytes(""),94],0],
     _ed_=[0,[0,caml_string_of_jsbytes(""),94],0],
     _ee_=
      [5,
       caml_string_of_jsbytes("p"),
       caml_string_of_jsbytes("Some computation"),
       [0,[0,caml_string_of_jsbytes(""),93],0]],
     _eg_=[0,[0,caml_string_of_jsbytes(""),92],0],
     _ej_=[0,[0,caml_string_of_jsbytes(""),92],0],
     _el_=[0,[0,caml_string_of_jsbytes(""),92],0],
     _em_=[0,[0,caml_string_of_jsbytes(""),92],0],
     _ep_=[0,[0,caml_string_of_jsbytes(""),92],0],
     _eq_=[0,[0,0]],
     _es_=[0,[0,caml_string_of_jsbytes(""),91],0],
     _ev_=[0,[0,caml_string_of_jsbytes(""),91],0],
     _ex_=[0,[0,caml_string_of_jsbytes(""),91],0],
     _eB_=[0,[0,caml_string_of_jsbytes(""),91],0],
     _eD_=[0,[0,caml_string_of_jsbytes(""),91],0],
     _eG_=[0,[0,caml_string_of_jsbytes(""),91],0],
     _eH_=[0,[0,0]],
     _eJ_=[0,[0,caml_string_of_jsbytes(""),90],0],
     _eM_=[0,[0,caml_string_of_jsbytes(""),90],0],
     _eO_=[0,[0,caml_string_of_jsbytes(""),90],0],
     _eS_=[0,[0,caml_string_of_jsbytes(""),90],0],
     _eU_=[0,[0,caml_string_of_jsbytes(""),90],0],
     _eX_=[0,[0,caml_string_of_jsbytes(""),90],0],
     _eY_=[0,[0,0]],
     _e0_=[0,[0,caml_string_of_jsbytes(""),89],0],
     _e4_=[0,[0,caml_string_of_jsbytes(""),89],0],
     _e6_=[0,[0,0]],
     _e7_=[0,[0,caml_string_of_jsbytes(""),89],0],
     _e9_=[0,[0,caml_string_of_jsbytes(""),89],0],
     _e$_=[0,[0,caml_string_of_jsbytes(""),89],0],
     _fb_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fe_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fg_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fk_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fp_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fr_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fw_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fB_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fD_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fI_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fK_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fM_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fO_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fQ_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fT_=[0,[0,caml_string_of_jsbytes(""),88],0],
     _fU_=[0,[0,0]],
     _fW_=[0,[0,caml_string_of_jsbytes(""),87],0],
     _f0_=[0,[0,caml_string_of_jsbytes(""),87],0],
     _f2_=[0,[0,0]],
     _f3_=[0,[0,caml_string_of_jsbytes(""),87],0],
     _f5_=[0,[0,caml_string_of_jsbytes(""),87],0],
     _f7_=[0,[0,caml_string_of_jsbytes(""),87],0],
     _f8_=
      [5,
       caml_string_of_jsbytes("h2"),
       caml_string_of_jsbytes("Foo"),
       [0,[0,caml_string_of_jsbytes(""),86],0]],
     _f9_=
      [5,
       caml_string_of_jsbytes("h1"),
       caml_string_of_jsbytes("Store Value"),
       [0,[0,caml_string_of_jsbytes(""),85],0]],
     _f$_=[0,[0,caml_string_of_jsbytes(""),84],0],
     _gd_=[0,[0,caml_string_of_jsbytes(""),84],0],
     _gf_=[0,[0,0]],
     _gi_=
      [0,
       [11,
        caml_string_of_jsbytes("Don't know what to do with "),
        [2,0,[11,caml_string_of_jsbytes(". "),[3,0,0]]]],
       caml_string_of_jsbytes("Don't know what to do with %s. %S")],
     _gF_=[0,caml_string_of_jsbytes("source file required")],
     _gD_=
      [0,
       [11,
        caml_string_of_jsbytes("==== "),
        [2,0,[11,caml_string_of_jsbytes(" ===="),0]]],
       caml_string_of_jsbytes("==== %s ====")],
     _gE_=
      [0,
       [11,caml_string_of_jsbytes("No scenarios in group "),[3,0,0]],
       caml_string_of_jsbytes("No scenarios in group %S")],
     _gC_=[0,[2,0,[12,32,[2,0,0]]],caml_string_of_jsbytes("%s %s")],
     _gy_=
      [0,
       [11,caml_string_of_jsbytes("* `"),[2,0,[12,96,0]]],
       caml_string_of_jsbytes("* `%s`")],
     _gs_=
      [0,
       [11,caml_string_of_jsbytes("* `"),[2,0,[12,96,0]]],
       caml_string_of_jsbytes("* `%s`")],
     _gB_=[0,caml_string_of_jsbytes("smartML/smartpyc/smartpyc.ml"),220,17],
     _gp_=[0,736759097],
     _gq_=
      [0,
       caml_string_of_jsbytes
        ("unencrypted:edsk3RFgDiCt7tWB2oe96w1eRw72iYiiqZPLu9nnEY23MYRp2d8Kkx")],
     _gr_=
      [0,
       [11,
        caml_string_of_jsbytes("Targets "),
        [2,0,[11,caml_string_of_jsbytes(", results:"),0]]],
       caml_string_of_jsbytes("Targets %s, results:")],
     _gt_=[0,2],
     _gu_=[0,[12,10,[15,[12,10,[10,0]]]],caml_string_of_jsbytes("\n%a\n%!")],
     _gv_=[0,726666127],
     _gw_=[0,caml_string_of_jsbytes("bootstrap1")],
     _gx_=
      [0,
       [11,
        caml_string_of_jsbytes("Targets "),
        [2,0,[11,caml_string_of_jsbytes(", results:"),0]]],
       caml_string_of_jsbytes("Targets %s, results:")],
     _gz_=[0,2],
     _gA_=[0,[12,10,[15,[12,10,[10,0]]]],caml_string_of_jsbytes("\n%a\n%!")],
     _gn_=[0,936573133,caml_string_of_jsbytes("in")],
     _go_=
      [0,
       [11,
        caml_string_of_jsbytes("Target "),
        [3,0,[11,caml_string_of_jsbytes(" not found"),0]]],
       caml_string_of_jsbytes("Target %S not found")],
     _gm_=
      [0,
       [11,
        caml_string_of_jsbytes("unexpected exit status from python: "),
        [4,0,0,0,0]],
       caml_string_of_jsbytes("unexpected exit status from python: %d")],
     _gl_=
      [0,
       [11,
        caml_string_of_jsbytes("unexpected exit status from python: "),
        [4,0,0,0,0]],
       caml_string_of_jsbytes("unexpected exit status from python: %d")],
     _gk_=
      [0,
       [11,caml_string_of_jsbytes("rm failed: "),[4,0,0,0,0]],
       caml_string_of_jsbytes("rm failed: %d")],
     _gj_=
      [0,
       [11,caml_string_of_jsbytes("mkdir failed: "),[4,0,0,0,0]],
       caml_string_of_jsbytes("mkdir failed: %d")],
     _gh_=[0,caml_string_of_jsbytes("")];
    function init(value)
     {var
       storage=
        caml_call2(Smartml_Expr[72],_ci_,[0,[0,cst_storedValue$14,value],0]);
      return caml_call10
              (Smartml_Basics[234],
               0,
               [0,storage],
               0,
               0,
               0,
               0,
               0,
               0,
               0,
               [0,
                replace,
                [0,
                 double$0,
                 [0,divide,[0,misc,[0,another,[0,another_with_parameter,0]]]]]])}
    var
     MyContract=
      [0,
       gen_t_replace_params,
       gen_t_divide_params,
       replace,
       double$0,
       divide,
       misc,
       another,
       another_with_parameter,
       init],
     _ck_=caml_call1(Big_int[34],cst_1$1),
     _cl_=caml_call1(Smartml_Unknown[5],0),
     _cm_=caml_call2(Smartml_Literal[17],_cl_,_ck_),
     _co_=caml_call2(Smartml_Expr[67],_cn_,_cm_),
     _cq_=[0,[0,_cp_,caml_call1(MyContract[9],_co_),_cj_,0,1],0],
     _cs_=caml_call1(Big_int[34],cst_123456),
     _ct_=caml_call1(Smartml_Unknown[5],0),
     _cu_=caml_call2(Smartml_Literal[17],_ct_,_cs_),
     _cw_=caml_call2(Smartml_Expr[67],_cv_,_cu_),
     _cy_=[0,[0,_cx_,caml_call1(MyContract[9],_cw_),_cr_,0,1],_cq_];
    caml_call5
     (Smartml_Scenario[3],0,cst_StoreValue,cst_two_contracts,cst_test,_cy_);
    var
     _cz_=caml_call1(Big_int[34],cst_15$0),
     _cA_=caml_call1(Smartml_Unknown[5],0),
     _cB_=caml_call2(Smartml_Literal[17],_cA_,_cz_),
     cst=caml_call2(Smartml_Expr[67],_cC_,_cB_),
     _cE_=caml_call1(Big_int[34],cst_9),
     _cF_=caml_call1(Smartml_Unknown[5],0),
     _cG_=caml_call2(Smartml_Literal[17],_cF_,_cE_),
     _cI_=caml_call2(Smartml_Expr[67],_cH_,_cG_),
     _cL_=caml_call2(Smartml_Expr[114],_cK_,_cJ_),
     _cN_=caml_call3(Smartml_Expr[55],_cM_,_cL_,cst_storedValue$15),
     _cP_=[0,[6,caml_call3(Smartml_Expr[44],_cO_,_cN_,_cI_),_cD_],0],
     _cR_=caml_call3(Smartml_Expr[74],_cQ_,0,0),
     _cS_=caml_call1(Smartml_Literal[24],Big_int[1]),
     _cU_=caml_call2(Smartml_Expr[67],_cT_,_cS_),
     _cW_=caml_call1(Big_int[34],cst_7),
     _cX_=caml_call1(Smartml_Unknown[5],0),
     _cY_=caml_call2(Smartml_Literal[17],_cX_,_cW_),
     _c0_=[0,[0,cst_divisor$6,caml_call2(Smartml_Expr[67],_cZ_,_cY_)],0],
     _c2_=caml_call2(Smartml_Expr[72],_c1_,_c0_),
     _c3_=caml_call1(Smartml_Literal[14],1),
     _c6_=
      [0,
       [3,
        _c5_,
        caml_call2(Smartml_Expr[67],_c4_,_c3_),
        0,
        _c2_,
        _cV_,
        cst$1,
        cst$0,
        0,
        0,
        0,
        0,
        _cU_,
        0,
        _cR_,
        cst_divide$0,
        1,
        1],
       _cP_],
     _c8_=caml_call1(Big_int[34],cst_50),
     _c9_=caml_call1(Smartml_Unknown[5],0),
     _c__=caml_call2(Smartml_Literal[17],_c9_,_c8_),
     _da_=caml_call2(Smartml_Expr[67],_c$_,_c__),
     _dd_=caml_call2(Smartml_Expr[114],_dc_,_db_),
     _df_=caml_call3(Smartml_Expr[55],_de_,_dd_,cst_storedValue$16),
     _dh_=[0,[6,caml_call3(Smartml_Expr[43],_dg_,_df_,_da_),_c7_],_c6_],
     _dj_=caml_call3(Smartml_Expr[74],_di_,0,0),
     _dk_=caml_call1(Smartml_Literal[24],Big_int[1]),
     _dm_=caml_call2(Smartml_Expr[67],_dl_,_dk_),
     _do_=caml_call1(Big_int[34],cst_2$3),
     _dp_=caml_call1(Smartml_Unknown[5],0),
     _dq_=caml_call2(Smartml_Literal[17],_dp_,_do_),
     _ds_=[0,[0,cst_divisor$7,caml_call2(Smartml_Expr[67],_dr_,_dq_)],0],
     _du_=caml_call2(Smartml_Expr[72],_dt_,_ds_),
     _dv_=caml_call1(Smartml_Literal[14],0),
     _dy_=
      [0,
       [3,
        _dx_,
        caml_call2(Smartml_Expr[67],_dw_,_dv_),
        0,
        _du_,
        _dn_,
        cst$3,
        cst$2,
        0,
        0,
        0,
        0,
        _dm_,
        0,
        _dj_,
        cst_divide$1,
        1,
        1],
       _dh_],
     _dA_=caml_call3(Smartml_Expr[74],_dz_,0,0),
     _dB_=caml_call1(Smartml_Literal[24],Big_int[1]),
     _dD_=caml_call2(Smartml_Expr[67],_dC_,_dB_),
     _dG_=caml_call2(Smartml_Expr[67],_dF_,Smartml_Literal[13]),
     _dH_=caml_call1(Smartml_Literal[14],1),
     _dK_=
      [0,
       [3,
        _dJ_,
        caml_call2(Smartml_Expr[67],_dI_,_dH_),
        0,
        _dG_,
        _dE_,
        cst$5,
        cst$4,
        0,
        0,
        0,
        0,
        _dD_,
        0,
        _dA_,
        cst_double$0,
        1,
        1],
       _dy_],
     _dM_=caml_call3(Smartml_Expr[74],_dL_,0,0),
     _dN_=caml_call1(Smartml_Literal[24],Big_int[1]),
     _dP_=caml_call2(Smartml_Expr[67],_dO_,_dN_),
     _dR_=caml_call1(Big_int[34],cst_25),
     _dS_=caml_call1(Smartml_Unknown[5],0),
     _dT_=caml_call2(Smartml_Literal[17],_dS_,_dR_),
     _dV_=[0,[0,cst_value$1,caml_call2(Smartml_Expr[67],_dU_,_dT_)],0],
     _dX_=caml_call2(Smartml_Expr[72],_dW_,_dV_),
     _dY_=caml_call1(Smartml_Literal[14],1),
     _d1_=
      [0,
       [3,
        _d0_,
        caml_call2(Smartml_Expr[67],_dZ_,_dY_),
        0,
        _dX_,
        _dQ_,
        cst$7,
        cst$6,
        0,
        0,
        0,
        0,
        _dP_,
        0,
        _dM_,
        cst_replace$0,
        1,
        1],
       _dK_],
     _d3_=caml_call1(Big_int[34],cst_12),
     _d4_=caml_call1(Smartml_Unknown[5],0),
     _d5_=caml_call2(Smartml_Literal[17],_d4_,_d3_),
     _d7_=caml_call2(Smartml_Expr[67],_d6_,_d5_),
     _d__=caml_call2(Smartml_Expr[114],_d9_,_d8_),
     _ea_=caml_call3(Smartml_Expr[55],_d$_,_d__,cst_storedValue$17),
     _ec_=caml_call2(Smartml_Expr[16],_eb_,_ea_),
     _ef_=
      [0,
       _ee_,
       [0,[7,caml_call3(Smartml_Expr[32],_ed_,_ec_,_d7_),1,0,1,_d2_],_d1_]],
     _eh_=caml_call3(Smartml_Expr[74],_eg_,0,0),
     _ei_=caml_call1(Smartml_Literal[24],Big_int[1]),
     _ek_=caml_call2(Smartml_Expr[67],_ej_,_ei_),
     _en_=caml_call2(Smartml_Expr[72],_em_,[0,[0,cst_value$2,cst],0]),
     _eo_=caml_call1(Smartml_Literal[14],1),
     _er_=
      [0,
       [3,
        _eq_,
        caml_call2(Smartml_Expr[67],_ep_,_eo_),
        0,
        _en_,
        _el_,
        cst$9,
        cst$8,
        0,
        0,
        0,
        0,
        _ek_,
        0,
        _eh_,
        cst_replace$1,
        1,
        1],
       _ef_],
     _et_=caml_call3(Smartml_Expr[74],_es_,0,0),
     _eu_=caml_call1(Smartml_Literal[24],Big_int[1]),
     _ew_=caml_call2(Smartml_Expr[67],_ev_,_eu_),
     _ey_=caml_call1(Big_int[34],cst_13),
     _ez_=caml_call1(Smartml_Unknown[5],0),
     _eA_=caml_call2(Smartml_Literal[17],_ez_,_ey_),
     _eC_=[0,[0,cst_value$3,caml_call2(Smartml_Expr[67],_eB_,_eA_)],0],
     _eE_=caml_call2(Smartml_Expr[72],_eD_,_eC_),
     _eF_=caml_call1(Smartml_Literal[14],1),
     _eI_=
      [0,
       [3,
        _eH_,
        caml_call2(Smartml_Expr[67],_eG_,_eF_),
        0,
        _eE_,
        _ex_,
        cst$11,
        cst$10,
        0,
        0,
        0,
        0,
        _ew_,
        0,
        _et_,
        cst_replace$2,
        1,
        1],
       _er_],
     _eK_=caml_call3(Smartml_Expr[74],_eJ_,0,0),
     _eL_=caml_call1(Smartml_Literal[24],Big_int[1]),
     _eN_=caml_call2(Smartml_Expr[67],_eM_,_eL_),
     _eP_=caml_call1(Big_int[34],cst_12$0),
     _eQ_=caml_call1(Smartml_Unknown[5],0),
     _eR_=caml_call2(Smartml_Literal[17],_eQ_,_eP_),
     _eT_=[0,[0,cst_value$4,caml_call2(Smartml_Expr[67],_eS_,_eR_)],0],
     _eV_=caml_call2(Smartml_Expr[72],_eU_,_eT_),
     _eW_=caml_call1(Smartml_Literal[14],1),
     _eZ_=
      [0,
       [3,
        _eY_,
        caml_call2(Smartml_Expr[67],_eX_,_eW_),
        0,
        _eV_,
        _eO_,
        cst$13,
        cst$12,
        0,
        0,
        0,
        0,
        _eN_,
        0,
        _eK_,
        cst_replace$3,
        1,
        1],
       _eI_],
     _e1_=caml_call1(Big_int[34],cst_8),
     _e2_=caml_call1(Smartml_Unknown[5],0),
     _e3_=caml_call2(Smartml_Literal[17],_e2_,_e1_),
     _e5_=caml_call2(Smartml_Expr[67],_e4_,_e3_),
     _e8_=caml_call2(Smartml_Expr[114],_e7_,_e6_),
     _e__=caml_call3(Smartml_Expr[55],_e9_,_e8_,cst_storedValue$18),
     _fa_=[0,[6,caml_call3(Smartml_Expr[43],_e$_,_e__,_e5_),_e0_],_eZ_],
     _fc_=caml_call3(Smartml_Expr[74],_fb_,0,0),
     _fd_=caml_call1(Smartml_Literal[24],Big_int[1]),
     _ff_=caml_call2(Smartml_Expr[67],_fe_,_fd_),
     _fh_=caml_call1(Big_int[34],cst_2$4),
     _fi_=caml_call1(Smartml_Unknown[5],0),
     _fj_=caml_call2(Smartml_Literal[17],_fi_,_fh_),
     _fl_=caml_call2(Smartml_Expr[67],_fk_,_fj_),
     _fm_=caml_call1(Big_int[34],cst_11),
     _fn_=caml_call1(Smartml_Unknown[5],0),
     _fo_=caml_call2(Smartml_Literal[17],_fn_,_fm_),
     _fq_=caml_call2(Smartml_Expr[67],_fp_,_fo_),
     _fs_=caml_call3(Smartml_Expr[34],_fr_,_fq_,_fl_),
     _ft_=caml_call1(Big_int[34],cst_6$1),
     _fu_=caml_call1(Smartml_Unknown[5],0),
     _fv_=caml_call2(Smartml_Literal[17],_fu_,_ft_),
     _fx_=caml_call2(Smartml_Expr[67],_fw_,_fv_),
     _fy_=caml_call1(Big_int[34],cst_12$1),
     _fz_=caml_call1(Smartml_Unknown[5],0),
     _fA_=caml_call2(Smartml_Literal[17],_fz_,_fy_),
     _fC_=caml_call2(Smartml_Expr[67],_fB_,_fA_),
     _fE_=caml_call3(Smartml_Expr[36],_fD_,_fC_,_fx_),
     _fF_=caml_call1(Big_int[34],cst_11$0),
     _fG_=caml_call1(Smartml_Unknown[5],0),
     _fH_=caml_call2(Smartml_Literal[17],_fG_,_fF_),
     _fJ_=caml_call2(Smartml_Expr[67],_fI_,_fH_),
     _fL_=caml_call3(Smartml_Expr[31],_fK_,_fJ_,_fE_),
     _fN_=caml_call3(Smartml_Expr[37],_fM_,_fL_,_fs_),
     _fP_=[0,[0,cst_value$5,caml_call2(Smartml_Expr[12],_fO_,_fN_)],0],
     _fR_=caml_call2(Smartml_Expr[72],_fQ_,_fP_),
     _fS_=caml_call1(Smartml_Literal[14],1),
     _fV_=
      [0,
       [3,
        _fU_,
        caml_call2(Smartml_Expr[67],_fT_,_fS_),
        0,
        _fR_,
        _fg_,
        cst$15,
        cst$14,
        0,
        0,
        0,
        0,
        _ff_,
        0,
        _fc_,
        cst_replace$4,
        1,
        1],
       _fa_],
     _fX_=caml_call1(Big_int[34],cst_42$4),
     _fY_=caml_call1(Smartml_Unknown[5],0),
     _fZ_=caml_call2(Smartml_Literal[17],_fY_,_fX_),
     _f1_=caml_call2(Smartml_Expr[67],_f0_,_fZ_),
     _f4_=caml_call2(Smartml_Expr[114],_f3_,_f2_),
     _f6_=caml_call3(Smartml_Expr[55],_f5_,_f4_,cst_storedValue$19),
     _f__=
      [0,
       _f9_,
       [0,_f8_,[0,[6,caml_call3(Smartml_Expr[43],_f7_,_f6_,_f1_),_fW_],_fV_]]],
     _ga_=caml_call1(Big_int[34],cst_42$5),
     _gb_=caml_call1(Smartml_Unknown[5],0),
     _gc_=caml_call2(Smartml_Literal[17],_gb_,_ga_),
     _ge_=caml_call2(Smartml_Expr[67],_gd_,_gc_),
     _gg_=[0,[0,_gf_,caml_call1(MyContract[9],_ge_),_f$_,0,1],_f__];
    caml_call5
     (Smartml_Scenario[3],0,cst_StoreValue$0,cst_my_test,cst_test$0,_gg_);
    var Smartpyc_lib_Syntax_test=[0,MyContract];
    caml_register_global
     (492,Smartpyc_lib_Syntax_test,"Smartpyc_lib__Syntax_test");
    function Main(_gI_,primitives)
     {var
       Tezos=caml_call1(Smartml_unix_Run_tezos_scenari[7],primitives),
       config0=[0,0,_gh_,0,0,Smartml_Config[20],0,0,0,0,cst$16,0,0];
      function usage(param)
       {return caml_call1(Stdlib[46],cst_Usage_smartpyc_options_sou)}
      function parse(c,param)
       {var c$0=c,param$0=param;
        for(;;)
         {if(param$0)
           {var
             p=param$0[1],
             rest=param$0[2],
             _hL_=caml_call1(Stdlib_filename[10],p);
            if
             (caml_call2(Utils_List[35],_hL_,script_extensions)
              &&
              0
              ===
              c$0[1])
             {var
               c$1=
                [0,
                 [0,p],
                 c$0[2],
                 c$0[3],
                 c$0[4],
                 c$0[5],
                 c$0[6],
                 c$0[7],
                 c$0[8],
                 c$0[9],
                 c$0[10],
                 c$0[11],
                 c$0[12]],
               c$0=c$1,
               param$0=rest;
              continue}
            var switch$0=runtime.caml_string_compare(p,cst_output),switch$1=0;
            if(0 <= switch$0)
             {var switch$2=0;
              if(0 < switch$0)
               {var switch$3=0;
                if(caml_string_notequal(p,cst_purge))
                 {var switch$4=0;
                  if(caml_string_notequal(p,cst_sandbox))
                   if(caml_string_notequal(p,cst_h))
                    if(caml_string_notequal(p,cst_m))
                     if(caml_string_notequal(p,cst_o))
                      if(caml_string_notequal(p,cst_p))
                       {if(caml_string_notequal(p,cst_s))
                         {switch$2 = 1;switch$3 = 1;switch$4 = 1}}
                      else
                       switch$4 = 1;
                     else
                      {switch$3 = 1;switch$4 = 1}
                    else
                     {switch$1 = 1;switch$2 = 1;switch$3 = 1;switch$4 = 1}
                   else
                    {switch$1 = 2;switch$2 = 1;switch$3 = 1;switch$4 = 1}
                  if(! switch$4)
                   {var _h2_=param$0[2];
                    if(_h2_)
                     {var
                       rest$1=_h2_[2],
                       p$0=_h2_[1],
                       _h3_=c$0[12],
                       _h4_=c$0[11],
                       _h5_=c$0[10],
                       _h6_=c$0[9],
                       _h7_=c$0[8],
                       _h8_=c$0[7],
                       _h9_=[0,caml_int_of_string(p$0)],
                       c$4=
                        [0,
                         c$0[1],
                         c$0[2],
                         c$0[3],
                         c$0[4],
                         c$0[5],
                         _h9_,
                         _h8_,
                         _h7_,
                         _h6_,
                         _h5_,
                         _h4_,
                         _h3_],
                       c$0=c$4,
                       param$0=rest$1;
                      continue}
                    switch$2 = 1;
                    switch$3 = 1}}
                if(! switch$3)
                 {var
                   param$1=param$0[2],
                   c$5=
                    [0,
                     c$0[1],
                     c$0[2],
                     c$0[3],
                     c$0[4],
                     c$0[5],
                     c$0[6],
                     c$0[7],
                     1,
                     c$0[9],
                     c$0[10],
                     c$0[11],
                     c$0[12]],
                   c$0=c$5,
                   param$0=param$1;
                  continue}}
              if(! switch$2)
               {var _h__=param$0[2];
                if(_h__)
                 {var
                   param$2=_h__[2],
                   o=_h__[1],
                   c$6=
                    [0,
                     c$0[1],
                     c$0[2],
                     c$0[3],
                     [0,o],
                     c$0[5],
                     c$0[6],
                     c$0[7],
                     c$0[8],
                     c$0[9],
                     c$0[10],
                     c$0[11],
                     c$0[12]],
                   c$0=c$6,
                   param$0=param$2;
                  continue}}}
            else
             {if(! caml_string_notequal(p,cst$18))
               {var rest$3=param$0[2];
                return [0,
                        c$0[1],
                        c$0[2],
                        c$0[3],
                        c$0[4],
                        c$0[5],
                        c$0[6],
                        c$0[7],
                        c$0[8],
                        c$0[9],
                        c$0[10],
                        c$0[11],
                        rest$3]}
              if(! caml_string_notequal(p,cst_accept_empty))
               {var
                 param$7=param$0[2],
                 c$11=
                  [0,
                   c$0[1],
                   c$0[2],
                   1,
                   c$0[4],
                   c$0[5],
                   c$0[6],
                   c$0[7],
                   c$0[8],
                   c$0[9],
                   c$0[10],
                   c$0[11],
                   c$0[12]],
                 c$0=c$11,
                 param$0=param$7;
                continue}
              if(caml_string_notequal(p,cst_help))
               {if(! caml_string_notequal(p,cst_html))
                 {var
                   param$6=param$0[2],
                   c$10=
                    [0,
                     c$0[1],
                     c$0[2],
                     c$0[3],
                     c$0[4],
                     c$0[5],
                     c$0[6],
                     c$0[7],
                     c$0[8],
                     1,
                     c$0[10],
                     c$0[11],
                     c$0[12]],
                   c$0=c$10,
                   param$0=param$6;
                  continue}
                if(caml_string_notequal(p,cst_install))
                 if(caml_string_notequal(p,cst_kind))
                  {if(! caml_string_notequal(p,cst_misc$0))
                    {var rest$2=param$0[2];
                     return [0,
                             c$0[1],
                             c$0[2],
                             c$0[3],
                             c$0[4],
                             c$0[5],
                             c$0[6],
                             c$0[7],
                             c$0[8],
                             c$0[9],
                             c$0[10],
                             [0,rest$2],
                             c$0[12]]}
                   if(! caml_string_notequal(p,cst_mockup))switch$1 = 1}
                 else
                  {var _ia_=param$0[2];
                   if(_ia_)
                    {var
                      param$4=_ia_[2],
                      kind=_ia_[1],
                      c$8=
                       [0,
                        c$0[1],
                        [0,kind],
                        c$0[3],
                        c$0[4],
                        c$0[5],
                        c$0[6],
                        c$0[7],
                        c$0[8],
                        c$0[9],
                        c$0[10],
                        c$0[11],
                        c$0[12]],
                      c$0=c$8,
                      param$0=param$4;
                     continue}}
                else
                 {var _ib_=param$0[2];
                  if(_ib_)
                   {var
                     param$5=_ib_[2],
                     f=_ib_[1],
                     c$9=
                      [0,
                       c$0[1],
                       c$0[2],
                       c$0[3],
                       c$0[4],
                       c$0[5],
                       c$0[6],
                       c$0[7],
                       c$0[8],
                       c$0[9],
                       f,
                       c$0[11],
                       c$0[12]],
                     c$0=c$9,
                     param$0=param$5;
                    continue}}}
              else
               switch$1 = 2}
            switch(switch$1)
             {case 1:
               var _h$_=param$0[2];
               if(_h$_)
                {var
                  param$3=_h$_[2],
                  m=_h$_[1],
                  c$7=
                   [0,
                    c$0[1],
                    c$0[2],
                    c$0[3],
                    c$0[4],
                    c$0[5],
                    c$0[6],
                    [0,m],
                    c$0[8],
                    c$0[9],
                    c$0[10],
                    c$0[11],
                    c$0[12]],
                  c$0=c$7,
                  param$0=param$3;
                 continue}
               break;
              case 2:usage(0);return caml_call1(Stdlib[99],0)
              }
            var
             xs=param$0[2],
             err$0=
              function(c,p)
               {function err(param)
                 {var _ic_=caml_call3(Stdlib_printf[4],_gi_,p,c[2][1]);
                  return caml_call1(Stdlib[2],_ic_)}
                return err},
             err=err$0(c$0,p);
            if
             (runtime.caml_string_equal
               (caml_call3(Utils_String[4],p,0,2),cst$17))
             {var
               x=
                caml_call3
                 (Utils_String[4],
                  p,
                  2,
                  runtime.caml_ml_string_length(p) - 2 | 0),
               match=caml_call1(Smartml_Config[29],[0,x,0]);
              if(match)
               {var
                 flag=match[1],
                 _hM_=c$0[12],
                 _hN_=c$0[11],
                 _hO_=c$0[10],
                 _hP_=c$0[9],
                 _hQ_=c$0[8],
                 _hR_=c$0[7],
                 _hS_=c$0[6],
                 _hT_=caml_call2(Smartml_Config[30],c$0[5],flag),
                 c$2=
                  [0,
                   c$0[1],
                   c$0[2],
                   c$0[3],
                   c$0[4],
                   _hT_,
                   _hS_,
                   _hR_,
                   _hQ_,
                   _hP_,
                   _hO_,
                   _hN_,
                   _hM_],
                 c$0=c$2,
                 param$0=xs;
                continue}
              if(xs)
               {var
                 rest$0=xs[2],
                 arg=xs[1],
                 match$0=caml_call1(Smartml_Config[29],[0,x,[0,arg,0]]);
                if(match$0)
                 {var
                   flag$0=match$0[1],
                   _hU_=c$0[12],
                   _hV_=c$0[11],
                   _hW_=c$0[10],
                   _hX_=c$0[9],
                   _hY_=c$0[8],
                   _hZ_=c$0[7],
                   _h0_=c$0[6],
                   _h1_=caml_call2(Smartml_Config[30],c$0[5],flag$0),
                   c$3=
                    [0,
                     c$0[1],
                     c$0[2],
                     c$0[3],
                     c$0[4],
                     _h1_,
                     _h0_,
                     _hZ_,
                     _hY_,
                     _hX_,
                     _hW_,
                     _hV_,
                     _hU_],
                   c$0=c$3,
                   param$0=rest$0;
                  continue}
                return err(0)}
              return err(0)}
            return err(0)}
          return c$0}}
      function mkdir_p(x)
       {var
         r=caml_call3(_gI_[1],0,cst_mkdir,[0,cst_p$0,[0,x,0]]),
         _hJ_=0 !== r?1:0;
        if(_hJ_)
         {var _hK_=caml_call2(Stdlib_printf[4],_gj_,r);
          return caml_call1(Stdlib[2],_hK_)}
        return _hJ_}
      function rm_rf(x)
       {var
         r=caml_call3(_gI_[1],0,cst_rm,[0,cst_rf,[0,x,0]]),
         _hH_=0 !== r?1:0;
        if(_hH_)
         {var _hI_=caml_call2(Stdlib_printf[4],_gk_,r);
          return caml_call1(Stdlib[2],_hI_)}
        return _hH_}
      function run_smartpyc_py(args)
       {var
         _hD_=caml_call1(Stdlib_sys[2],cst_PATH),
         path=caml_call2(Utils_Option[45],cst$19,_hD_),
         _hE_=caml_check_bound(caml_sys_argv(0),0)[1],
         dir=caml_call1(Stdlib_filename[14],_hE_),
         match=caml_call1(Stdlib_sys[2],cst_PYTHONPATH);
        if(match)
         var
          pythonpath=match[1],
          pythonpath$0=
           caml_call2(Utils_String[7],cst$20,[0,dir,[0,pythonpath,0]]);
        else
         var pythonpath$0=dir;
        var
         env=[0,[0,cst_PATH$0,path],[0,[0,cst_PYTHONPATH$0,pythonpath$0],0]],
         _hF_=[0,caml_call2(Stdlib_filename[4],dir,cst_smartpyc_py),args],
         r=caml_call3(_gI_[1],[0,env],cst_python3,_hF_);
        if(0 === r)return 0;
        if(1 === r)return caml_call1(Stdlib[99],1);
        var _hG_=caml_call2(Stdlib_printf[4],_gl_,r);
        return caml_call1(Stdlib[2],_hG_)}
      function write_targets(out_scenario_sc,in_py,in_pure_py,script_args)
       {return run_smartpyc_py
                (caml_call2
                  (Stdlib[37],
                   [0,
                    cst_write_tests,
                    [0,out_scenario_sc,[0,in_py,[0,in_pure_py,0]]]],
                   script_args))}
      function run_smarttscli(args)
       {var
         _hz_=caml_call1(Stdlib_sys[2],cst_PATH$1),
         path=caml_call2(Utils_Option[45],cst$21,_hz_),
         _hA_=caml_check_bound(caml_sys_argv(0),0)[1],
         dir=caml_call1(Stdlib_filename[14],_hA_),
         match=caml_call1(Stdlib_sys[2],cst_PYTHONPATH$1);
        if(match)
         var
          pythonpath=match[1],
          pythonpath$0=
           caml_call2(Utils_String[7],cst$22,[0,dir,[0,pythonpath,0]]);
        else
         var pythonpath$0=dir;
        var
         env=[0,[0,cst_PATH$2,path],[0,[0,cst_PYTHONPATH$2,pythonpath$0],0]],
         _hB_=[0,caml_call2(Stdlib_filename[4],dir,cst_smart_ts_cli_js),args],
         r=caml_call3(_gI_[1],[0,env],cst_node,_hB_);
        if(0 === r)return 0;
        if(1 === r)return caml_call1(Stdlib[99],1);
        var _hC_=caml_call2(Stdlib_printf[4],_gm_,r);
        return caml_call1(Stdlib[2],_hC_)}
      function write_targets_ts(out_scenario_sc,in_ts,out_dir,script_args)
       {return run_smarttscli
                (caml_call2
                  (Stdlib[37],
                   [0,
                    cst_scenario,
                    [0,
                     out_scenario_sc,
                     [0,cst_file,[0,in_ts,[0,cst_outDir,[0,out_dir,0]]]]]],
                   script_args))}
      function run_scenarios
       (kind,accept_empty,config,html,install,fn_scenario,out_dir)
       {var
         _hw_=caml_call4(Yojson[10][38],0,0,0,fn_scenario),
         scenarios=caml_call1(Yojson[10][100][20],_hw_);
        function read_scenario(scenario)
         {var
           scenario$0=
            caml_call3(Smartml_Scenario[1],primitives,config,scenario);
          if(runtime.caml_notequal(kind,scenario$0[1][4]))return 0;
          var
           out_dir$0=
            caml_call2(Stdlib_filename[4],out_dir,scenario$0[1][1]);
          return [0,[0,primitives,scenario$0,out_dir$0]]}
        var scenarios$0=caml_call2(Utils_List[78],read_scenario,scenarios);
        if(! scenarios$0 && ! accept_empty)
         {var
           _hy_=
            [0,
             [0,936573133,caml_call2(Stdlib_printf[4],_go_,kind[1])],
             [0,_gn_,[0,[0,936573133,fn_scenario],0]]];
          throw [0,Smartml_Basics[204],_hy_]}
        function run_scenario(param)
         {var out_dir=param[3],scenario=param[2],primitives=param[1];
          mkdir_p(out_dir);
          return caml_call5
                  (Smartml_Smartml_scenario[2],
                   primitives,
                   html,
                   install,
                   scenario,
                   [0,out_dir])}
        var _hx_=caml_call2(Utils_List[20],run_scenario,scenarios$0);
        return caml_call1(Utils_List[16],_hx_)}
      function run_targets
       (kind,
        accept_empty,
        config,
        sandbox,
        mockup,
        html,
        install,
        out_dir,
        script,
        script_args)
       {mkdir_p(out_dir);
        var
         fn_scenario=
          caml_call2(Stdlib_filename[4],out_dir,cst_scenario_json);
        try
         {var match$0=caml_call1(Stdlib_filename[10],script);
          if(caml_string_notequal(match$0,cst_json))
           if(caml_string_notequal(match$0,cst_ml))
            if(caml_string_notequal(match$0,cst_py))
             {if(caml_string_notequal(match$0,cst_ts))
               throw [0,Assert_failure,_gB_];
              var
               _hj_=caml_call1(Utils_Io[1],script),
               _hk_=caml_call2(Stdlib_filename[4],out_dir,cst_script_init_ts);
              caml_call2(Utils_Io[2],_hk_,_hj_);
              write_targets_ts(fn_scenario,script,out_dir,script_args)}
            else
             {var
               fn_pure_py=
                caml_call2(Stdlib_filename[4],out_dir,cst_script_pure_py),
               _hm_=caml_call1(Utils_Io[1],script),
               _hn_=caml_call2(Stdlib_filename[4],out_dir,cst_script_init_py);
              caml_call2(Utils_Io[2],_hn_,_hm_);
              write_targets(fn_scenario,script,fn_pure_py,script_args)}
           else
            {var
              _ho_=caml_call1(Utils_Io[1],script),
              _hp_=caml_call2(Stdlib_filename[4],out_dir,cst_script_init_ml);
             caml_call2(Utils_Io[2],_hp_,_ho_);
             caml_call1(Stdlib[2],cst_ml_todo)}
          else
           {var
             _hq_=caml_call1(Utils_Io[1],script),
             _hr_=caml_call2(Stdlib_filename[4],out_dir,cst_scenario_json$0);
            caml_call2(Utils_Io[2],_hr_,_hq_)}
          var
           _hl_=
            run_scenarios
             (kind,accept_empty,config,html,install,fn_scenario,out_dir),
           errors=_hl_}
        catch(exn)
         {exn = caml_wrap_exception(exn);
          if(exn[1] !== Smartml_Basics[204])throw exn;
          var l=exn[2],errors=[0,[0,106380200,l],0]}
        function is_error(param){return 106380200 === param[1]?1:0}
        var
         Printer=caml_call1(Smartml_Printer[2],config),
         match=caml_call2(Utils_List[42],is_error,errors),
         _gX_=match[1];
        if(_gX_)
         {var
           f=
            function(param)
             {var
               x=param[2],
               _hs_=caml_call2(Printer[26],0,x),
               _ht_=caml_call2(Stdlib[28],cst_error,_hs_);
              return caml_call1(Stdlib[46],_ht_)};
          caml_call2(Utils_List[18],f,_gX_);
          caml_call1(Stdlib[99],1)}
        else
         {var _hi_=match[2];
          if(_hi_)
           {var
             f$0=
              function(param)
               {var
                 x=param[2],
                 _hu_=caml_call2(Printer[26],0,x),
                 _hv_=caml_call2(Stdlib[28],cst_warning,_hu_);
                return caml_call1(Stdlib[46],_hv_)};
            caml_call2(Utils_List[18],f$0,_hi_)}}
        if(sandbox)
         {var
           p=sandbox[1],
           connection=[0,0,p,0],
           _gY_=caml_call2(Stdlib[28],out_dir,cst_sandbox$0),
           client=
            caml_call6
             (Tezos[2][7],[0,client_command],_gq_,_gp_,connection,0,_gY_),
           scenarios=caml_call2(Tezos[1][3],fn_scenario,config),
           _gZ_=function(x){return caml_equal(kind,x[2][1][4])},
           scenarios$0=caml_call2(Utils_List[40],_gZ_,scenarios),
           r=caml_call4(Tezos[6],0,scenarios$0,client,0),
           _g0_=[0,caml_call1(caml_get_public_method(r,745844915,1),r),0],
           _g1_=[0,caml_call1(caml_get_public_method(r,-729474425,2),r),_g0_],
           _g2_=[0,caml_call1(caml_get_public_method(r,767624945,3),r),_g1_],
           _g3_=
            caml_call1(caml_get_public_method(r,944645571,4),r)
             ?cst_SUCCEEDED
             :cst_FAILED$0,
           _g4_=[0,caml_call2(Fmt[6],_gr_,_g3_),_g2_],
           _g5_=function(ppf){return caml_call2(Fmt[3],ppf,_gs_)},
           _g6_=caml_call2(Fmt[64],[0,Fmt[22]],_g5_),
           _g7_=caml_call3(Fmt[61],[0,Fmt[22]],Fmt[57],_g6_),
           _g8_=caml_call2(Fmt[34],_gt_,_g7_);
          caml_call3(Fmt[4],_gu_,_g8_,_g4_)}
        if(mockup)
         {var
           m=mockup[1],
           connection$0=[1,m],
           _g9_=caml_call2(Stdlib[28],out_dir,cst_mockup$0),
           client$0=
            caml_call6
             (Tezos[2][7],[0,client_command],_gw_,_gv_,connection$0,0,_g9_),
           scenarios$1=caml_call2(Tezos[1][3],fn_scenario,config),
           _g__=function(x){return caml_equal(kind,x[2][1][4])},
           scenarios$2=caml_call2(Utils_List[40],_g__,scenarios$1),
           r$0=caml_call4(Tezos[6],0,scenarios$2,client$0,0),
           _g$_=[0,caml_call1(caml_get_public_method(r$0,745844915,5),r$0),0],
           _ha_=
            [0,caml_call1(caml_get_public_method(r$0,-729474425,6),r$0),_g$_],
           _hb_=
            [0,caml_call1(caml_get_public_method(r$0,767624945,7),r$0),_ha_],
           _hc_=
            caml_call1(caml_get_public_method(r$0,944645571,8),r$0)
             ?cst_SUCCEEDED$0
             :cst_FAILED,
           _hd_=[0,caml_call2(Fmt[6],_gx_,_hc_),_hb_],
           _he_=function(ppf){return caml_call2(Fmt[3],ppf,_gy_)},
           _hf_=caml_call2(Fmt[64],[0,Fmt[22]],_he_),
           _hg_=caml_call3(Fmt[61],[0,Fmt[22]],Fmt[57],_hf_),
           _hh_=caml_call2(Fmt[34],_gz_,_hg_);
          return caml_call3(Fmt[4],_gA_,_hh_,_hd_)}
        return 0}
      function build_kt1_address(prefix)
       {var match=caml_call1(Utils_Bs58[3],prefix),hex=match[2],kt1=match[1];
        return caml_call4(Stdlib_printf[9],Stdlib[46],_gC_,kt1,hex)}
      function misc_commands(env)
       {function unary(name,f)
         {return [0,
                  name,
                  function(param)
                   {if(param && ! param[2])
                     {var x=param[1];return caml_call1(f,x)}
                    return caml_call1(Stdlib[2],cst_Bad_parameters_for_unary_c)}]}
        var
         _gP_=0,
         _gQ_=
          [0,
           unary
            (cst_run_smartml,
             function(name)
              {var
                scenarios=caml_call1(Smartml_Scenario[4],name),
                scenarios$0=
                 scenarios
                 ||
                 caml_call3(Stdlib_printf[9],Stdlib[2],_gE_,name);
               mkdir_p(out_dir);
               function eval_scenario(scenario)
                {var scenario$0=caml_call1(scenario,env[5]);
                 caml_call3(Stdlib_printf[9],Stdlib[46],_gD_,scenario$0[1][1]);
                 caml_call5
                  (Smartml_Smartml_scenario[2],
                   primitives,
                   1,
                   env[10],
                   scenario$0,
                   [0,out_dir]);
                 return 0}
               return caml_call2(Utils_List[18],eval_scenario,scenarios$0)}),
           _gP_],
         _gR_=
          [0,
           unary
            (cst_base58_decode,
             function(x)
              {var _gW_=caml_call1(Utils_Bs58[19],x);
               return caml_call1(Stdlib[46],_gW_)}),
           _gQ_],
         _gS_=
          [0,
           unary
            (cst_base58_encode,
             function(hex)
              {var _gV_=caml_call1(Utils_Bs58[18],hex);
               return caml_call1(Stdlib[46],_gV_)}),
           _gR_],
         _gT_=[0,unary(cst_base58_kt1_address,build_kt1_address),_gS_];
        return [0,
                unary
                 (cst_base58_list_kt1_addresses,
                  function(n)
                   {var _gU_=caml_int_of_string(n);
                    return caml_call1(Utils_Bs58[17],_gU_)}),
                _gT_]}
      function run_misc(env,param)
       {if(param)
         {var
           l=param[2],
           f=param[1],
           _gM_=misc_commands(env),
           match=caml_call3(Utils_List[82],0,f,_gM_);
          if(match){var command=match[1];return caml_call1(command,l)}
          return caml_call1(Stdlib[2],cst_Unknown_misc_command)}
        var _gN_=misc_commands(env);
        function _gO_(param)
         {var name=param[1];return caml_call1(Stdlib[46],name)}
        return caml_call2(Utils_List[18],_gO_,_gN_)}
      function run(param)
       {var
         _gK_=caml_sys_argv(0),
         _gL_=caml_call1(Stdlib_array[11],_gK_),
         env=parse(config0,caml_call1(Utils_List[9],_gL_)),
         script_args=env[12],
         misc=env[11],
         install=env[10],
         html=env[9],
         purge=env[8],
         mockup=env[7],
         sandbox=env[6],
         config=env[5],
         output=env[4],
         accept_empty=env[3],
         kind=env[2],
         script=env[1];
        if(misc){var command=misc[1];return run_misc(env,command)}
        var
         script$0=caml_call2(Utils_Option[49],_gF_,script),
         basefilename=caml_call1(Stdlib_filename[12],script$0),
         output_dir=caml_call2(Utils_Option[45],basefilename,output);
        if(purge)rm_rf(output_dir);
        return run_targets
                (kind,
                 accept_empty,
                 config,
                 sandbox,
                 mockup,
                 html,
                 install,
                 output_dir,
                 script$0,
                 script_args)}
      try
       {run(0)}
      catch(exn)
       {exn = caml_wrap_exception(exn);
        var
         Printer=caml_call1(Smartml_Printer[1],0),
         _gJ_=caml_call2(Printer[25],0,exn);
        caml_call1(Stdlib[46],_gJ_);
        caml_call1(Stdlib[99],1)}
      var main=caml_call1(Stdlib[99],0);
      return [0,
              Tezos,
              config0,
              usage,
              script_extensions,
              parse,
              mkdir_p,
              rm_rf,
              run_smartpyc_py,
              write_targets,
              run_smarttscli,
              write_targets_ts,
              run_scenarios,
              run_targets,
              build_kt1_address,
              misc_commands,
              run_misc,
              run,
              main]}
    var
     Smartpyc_lib_Smartpyc=
      [0,function(_gH_,_gG_){return [0,Main(_gH_,_gG_)[18]]}];
    caml_register_global(510,Smartpyc_lib_Smartpyc,"Smartpyc_lib__Smartpyc");
    return}
  (function(){return this}()));


//# 1 ".smartpyc_js.eobjs/byte/smartpyc_js.cmo.js"
(function(joo_global_object)
   {"use strict";
    var runtime=joo_global_object.jsoo_runtime;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    var
     global_data=runtime.caml_get_global_data(),
     Smartml_js_Primitives=global_data.Smartml_js__Primitives,
     Utils_Cmd_js=global_data.Utils__Cmd_js,
     Smartpyc_lib_Smartpyc=global_data.Smartpyc_lib__Smartpyc,
     _a_=[0,Smartml_js_Primitives[1],Smartml_js_Primitives[2]],
     include=caml_call1(caml_call1(Smartpyc_lib_Smartpyc[1],Utils_Cmd_js),_a_),
     main=include[1],
     Smartpyc_js=[0,main];
    runtime.caml_register_global(3,Smartpyc_js,"Smartpyc_js");
    return}
  (function(){return this}()));

//# 1 "../../.js/stdlib/std_exit.cmo.js"
(function(joo_global_object)
   {"use strict";
    var runtime=joo_global_object.jsoo_runtime;
    function caml_call1(f,a0)
     {return f.length == 1?f(a0):runtime.caml_call_gen(f,[a0])}
    var global_data=runtime.caml_get_global_data(),Stdlib=global_data.Stdlib;
    caml_call1(Stdlib[103],0);
    var Std_exit=[0];
    runtime.caml_register_global(1,Std_exit,"Std_exit");
    return}
  (function(){return this}()));


//# sourceMappingURL=data:application/json;base64,[encoded data, 4382164 characters]
}) ()

